comic image order sorting working in edit post

This commit is contained in:
John Bintz 2009-08-03 06:51:30 -04:00
parent de57ff0444
commit 2ce436ef45
2 changed files with 52 additions and 27 deletions

View File

@ -175,6 +175,7 @@ class ComicPressAddonCore extends ComicPressAddon {
if (isset($_REQUEST['post'])) {
$comic_post = new ComicPressComicPost(get_post($_REQUEST['post']), &$this->comicpress);
$ordering = $comic_post->normalize_comic_image_ordering();
echo '<input type="hidden" name="cp[_nonce]" value="' . wp_create_nonce('comicpress') . '" />';
if (is_array($ordering)) {
foreach ($ordering as $type => $attachment_ids) {
echo '<h3>' . $this->comic_image_types[$type] . '</h3>';
@ -428,6 +429,15 @@ class ComicPressAddonCore extends ComicPressAddon {
}
}
function handle_update_comic_ordering() {
if (is_numeric($_POST['post_ID'])) {
if ($post = get_post($_POST['post_ID'])) {
$comic_post = new ComicPressComicPost(&$post);
$comic_post->change_comic_image_ordering($_POST['cp']['ordering']);
}
}
}
/**
* Handle an update.
*/
@ -435,8 +445,22 @@ class ComicPressAddonCore extends ComicPressAddon {
if (isset($_POST['attachments'])) {
//coming from media editor
$this->handle_update_attachments();
} else if (isset($_POST['cp']['ordering'])) {
} else if (is_array($_POST['cp']['ordering'])) {
// comic ordering
$meta_key_to_ignore = false;
foreach ($_POST['meta'] as $meta_key => $params) {
foreach ($params as $type => $value) {
if ($type == "key" && $value == "comic_ordering") {
$meta_key_to_ignore = $meta_key; break;
}
}
}
if ($meta_key_to_ignore !== false) {
unset($_POST['meta'][$meta_key_to_ignore]);
}
$this->handle_update_comic_ordering();
} else {
//coming from us

View File

@ -169,38 +169,39 @@ class ComicPressComicPost {
}
function change_comic_image_ordering($requested_new_order) {
$orderings = array();
if (($order_string = get_post_meta($this->post->ID, 'comic_ordering', true)) !== false) {
$orderings = $this->breakdown_comic_ordering_string($order_string);
$new_order = array();
foreach ($orderings as $type => $current_order) {
$new_order[$type] = array();
$sort_by_position = array();
foreach ($requested_new_order[$type] as $id => $position) {
if (!isset($sort_by_position[$position])) {
$sort_by_position[$position] = array();
}
$sort_by_position[$position][] = $id;
}
ksort($sort_by_position);
$requested_order = array();
foreach ($sort_by_position as $position => $ids) {
sort($ids);
$requested_order = array_merge($requested_order, $ids);
}
$requested_order = array_merge($requested_order, array_diff($current_order, $requested_order));
foreach ($requested_order as $requested_comic) {
if (in_array($requested_comic, $current_order)) {
$new_order[$type][] = $requested_comic;
}
}
$new_order = array();
foreach ($orderings as $type => $current_order) {
$new_order[$type] = array();
$sort_by_position = array();
foreach ($requested_new_order[$type] as $id => $position) {
if (!isset($sort_by_position[$position])) {
$sort_by_position[$position] = array();
}
$sort_by_position[$position][] = $id;
}
ksort($sort_by_position);
$requested_order = array();
foreach ($sort_by_position as $position => $ids) {
sort($ids);
$requested_order = array_merge($requested_order, $ids);
}
update_post_meta($this->post->ID, 'comic_ordering', $this->build_comic_ordering_string($new_order));
$requested_order = array_merge($requested_order, array_diff($current_order, $requested_order));
foreach ($requested_order as $requested_comic) {
if (in_array($requested_comic, $current_order)) {
$new_order[$type][] = $requested_comic;
}
}
}
update_post_meta($this->post->ID, 'comic_ordering', $this->build_comic_ordering_string($new_order));
}
}