Populate meta box with current selections

This commit is contained in:
Paul Kirby 2018-10-11 22:59:01 -05:00
parent 90de7cb6f6
commit 798ac5f30e
2 changed files with 34 additions and 5 deletions

View file

@ -40,7 +40,7 @@ class LBRY_Network
add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
// Save the post meta on 'save_post' hook
add_action('save_post', array($this, 'save_post_meta'));
add_action('save_post', array($this, 'save_post_meta'), 10, 2);
}
/**
@ -54,18 +54,41 @@ class LBRY_Network
array($this, 'meta_box_html'), // Callback function
'post', // Screen Options (or post type)
'side', // Context
'high' // Priority
'high' // Priority
);
}
/**
* Handles saving the post meta that is relative to publishing to the LBRY Network
*/
public function save_post_meta()
public function save_post_meta($post_id, $post)
{
// Verify the nonce before proceeding.
if (!isset($_POST['_lbrynonce']) || !wp_verify_nonce($_POST['_lbrynonce'], 'lbry_publish_channels')) {
return $post_id;
}
// Check if the current user has permission to edit the post.
$post_type = get_post_type_object($post->post_type);
if (!current_user_can($post_type->cap->edit_post, $post_id)) {
return $post_id;
}
$meta_key = 'lbry_channels';
$new_channels = (isset($_POST[$meta_key]) ? $_POST[$meta_key] : null);
$cur_channels = get_post_meta($post_id, $meta_key);
// COMBAK: Make this a bit more efficent if they have lots of channels
// Start with clean meta, then add new channels if there are any
delete_post_meta($post_id, $meta_key);
if ($new_channels) {
foreach ($new_channels as $channel) {
add_post_meta($post_id, $meta_key, $channel);
}
}
}
public function meta_box_html()
public function meta_box_html($post)
{
require_once(LBRY_ABSPATH . 'templates/meta_box.php');
}

View file

@ -6,14 +6,20 @@ $unnatributed = (object) array(
);
$channels = LBRY()->daemon->channel_list();
array_unshift($channels, $unnatributed);
$cur_channels = get_post_meta($post->ID, 'lbry_channels');
?>
<?php wp_nonce_field('lbry_publish_channels', '_lbrynonce'); ?>
<h4>Choose which channels you would like to publish this post to:</h4>
<ul class="categorychecklist">
<?php if ($channels): ?>
<?php foreach ($channels as $channel): ?>
<li>
<label class="selectit">
<input type="checkbox" name="channels[]" value="<?= $channel->permanent_url ?>">
<input type="checkbox" name="lbry_channels[]" value="<?= $channel->permanent_url ?>"
<?php if (in_array($channel->permanent_url, $cur_channels)): ?>
checked="true"
<?php endif; ?>
>
<?= $channel->name ?>
</label>
<br />