From 83cbd76b2e11b7d832e212ce1ffc77da7a3dd2a6 Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 2 Jan 2012 21:00:16 -0500 Subject: sorting albums added back --- actions/edit.php | 87 ------------------------------- actions/photos/album/sort.php | 18 +++++++ actions/sortalbum.php | 18 ------- languages/en.php | 2 +- lib/tidypics.php | 50 ++++++++++++++++++ start.php | 14 ++++- views/default/forms/photos/album/sort.php | 2 +- views/default/object/album/full.php | 4 +- 8 files changed, 83 insertions(+), 112 deletions(-) delete mode 100644 actions/edit.php create mode 100644 actions/photos/album/sort.php delete mode 100644 actions/sortalbum.php diff --git a/actions/edit.php b/actions/edit.php deleted file mode 100644 index df65448c8..000000000 --- a/actions/edit.php +++ /dev/null @@ -1,87 +0,0 @@ -canEdit()) { - forward(); -} - -// Get owning user/group -$owner = get_entity($entity->getOwner()); - -// change access only if access is different from current -if ($subtype == 'album' && $entity->access_id != $access) { - $entity->access_id = $access; - - //get images from album and update access on image entities - $images = elgg_get_entities(array( - "type" => "object", - "subtype" => "image", - "container_guid" => $guid, - "limit" => ELGG_ENTITIES_NO_VALUE, - )); - foreach ($images as $im) { - $im->access_id = $access; - $im->save(); - } -} - - -// Set its title and description appropriately -$entity->title = $title; -$entity->description = $body; - -// Before we can set metadata, we need to save the entity -if (!$entity->save()) { - register_error(elgg_echo("album:error")); - $entity->delete(); - forward($_SERVER['HTTP_REFERER']); //failed, so forward to previous page -} - -// Now let's add tags -$tagarray = string_to_tag_array($tags); -$entity->clearMetadata('tags'); -if (is_array($tagarray)) { - $entity->tags = $tagarray; -} - -//if cover meta is sent from image save as metadata -if ($subtype == 'image' && $cover == elgg_echo('album:cover')) { - $album = get_entity($container_guid); - $album->setCoverImageGuid($entity->guid); -} - -// Success message -if ($subtype == 'album') { - system_message(elgg_echo("album:edited")); - // plugins can register to be told when a Tidypics album has been updated - trigger_elgg_event('update', 'tp_album', $entity); -} else { - system_message(elgg_echo('images:edited')); - // plugins can register to be told when a Tidypics image has been updated - trigger_elgg_event('update', 'tp_image', $entity); -} - -forward($entity->getURL()); diff --git a/actions/photos/album/sort.php b/actions/photos/album/sort.php new file mode 100644 index 000000000..613747784 --- /dev/null +++ b/actions/photos/album/sort.php @@ -0,0 +1,18 @@ +setImageList($guids); + +system_message(elgg_echo('tidypics:album:sorted', array($album->title))); +forward($album->getURL()); \ No newline at end of file diff --git a/actions/sortalbum.php b/actions/sortalbum.php deleted file mode 100644 index 1aa0e052f..000000000 --- a/actions/sortalbum.php +++ /dev/null @@ -1,18 +0,0 @@ -setImageList($guids); - -system_message(sprintf(elgg_echo('tidypics:album:sorted'), $album->title)); -forward($album->getURL()); \ No newline at end of file diff --git a/languages/en.php b/languages/en.php index 2276e4b12..6f3de51ef 100644 --- a/languages/en.php +++ b/languages/en.php @@ -96,7 +96,7 @@ $english = array( 'album:addpix' => "Add photos to album", 'album:edit' => "Edit album", 'album:delete' => "Delete album", - 'album:sort' => "Sort album", + 'album:sort' => "Sort", 'image:edit' => "Edit image", 'image:delete' => "Delete image", 'image:download' => "Download image", diff --git a/lib/tidypics.php b/lib/tidypics.php index 4e56ae829..7426a048e 100644 --- a/lib/tidypics.php +++ b/lib/tidypics.php @@ -141,6 +141,56 @@ function tidypics_is_upgrade_available() { } } +/** + * This lists the photos in an album as sorted by metadata + * + * @param array $options + * @return string + */ +function tidypics_list_photos(array $options = array()) { + global $autofeed; + $autofeed = true; + + $defaults = array( + 'offset' => (int) max(get_input('offset', 0), 0), + 'limit' => (int) max(get_input('limit', 10), 0), + 'full_view' => true, + 'list_type_toggle' => false, + 'pagination' => true, + ); + + $options = array_merge($defaults, $options); + + $options['count'] = true; + $count = elgg_get_entities($options); + + $album = get_entity($options['container_guid']); + if ($album) { + $guids = $album->getImageList(); + $guids = array_slice($guids, $options['offset'], $options['limit']); + $options['guids'] = $guids; + unset($options['container_guid']); + } + $options['count'] = false; + $entities = elgg_get_entities($options); + + $keys = array(); + foreach ($entities as $entity) { + $keys[] = $entity->guid; + } + $entities = array_combine($keys, $entities); + + $sorted_entities = array(); + foreach ($guids as $guid) { + if (isset($entities[$guid])) { + $sorted_entities[] = $entities[$guid]; + } + } + + return elgg_view_entity_list($sorted_entities, $options); +} + + /********************************************************************* * the functions below replace broken core functions or add functions * that could/should exist in the core diff --git a/start.php b/start.php index 1df04876a..cebd033b0 100644 --- a/start.php +++ b/start.php @@ -88,13 +88,13 @@ function tidypics_init() { // Register actions $base_dir = elgg_get_plugins_path() . 'tidypics/actions/photos'; elgg_register_action("photos/album/save", "$base_dir/album/save.php"); + elgg_register_action("photos/album/sort", "$base_dir/album/sort.php"); elgg_register_action("photos/delete", "$base_dir/delete.php"); elgg_register_action("photos/image/upload", "$base_dir/image/upload.php"); elgg_register_action("photos/image/save", "$base_dir/image/save.php"); elgg_register_action("photos/batch/edit", "$base_dir/batch/edit.php"); //register_action("tidypics/ajax_upload", true, "$base_dir/ajax_upload.php"); //register_action("tidypics/ajax_upload_complete", true, "$base_dir/ajax_upload_complete.php"); - //register_action("tidypics/sortalbum", false, "$base_dir/sortalbum.php"); elgg_register_action("photos/image/tag", "$base_dir/image/tag.php"); //register_action("tidypics/deletetag", false, "$base_dir/deletetag.php"); @@ -317,9 +317,19 @@ function tidypics_entity_menu_setup($hook, $type, $return, $params) { 'name' => 'slideshow', 'text' => elgg_echo('album:slideshow'), 'href' => $slideshow_link, - 'priority' => 90, + 'priority' => 80, ); $return[] = ElggMenuItem::factory($options); + + if ($entity->canEdit()) { + $options = array( + 'name' => 'sort', + 'text' => elgg_echo('album:sort'), + 'href' => "photos/sort/" . $entity->getGUID(), + 'priority' => 90, + ); + $return[] = ElggMenuItem::factory($options); + } } return $return; diff --git a/views/default/forms/photos/album/sort.php b/views/default/forms/photos/album/sort.php index 524112e0c..49bd016aa 100644 --- a/views/default/forms/photos/album/sort.php +++ b/views/default/forms/photos/album/sort.php @@ -21,7 +21,7 @@ echo '