diff options
author | plegall <plg@piwigo.org> | 2008-09-11 21:40:00 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2008-09-11 21:40:00 +0000 |
commit | d39db9aaaf43eaedd634a7a5b7d06bcb69d41152 (patch) | |
tree | 645010e01f3d84ecbc131c883ca941c50386489b /admin | |
parent | fdffe42bdc703a9f2391c77ae0256c33a3eac935 (diff) |
feature 169 added: ability to manually sort images inside a category. A
dedicated screen let the administrator sort the images (pur HTML, no
JavaScript yet). The "rank" sort order is available only for a category
without flat mode. New database column image_category.rank.
git-svn-id: http://piwigo.org/svn/trunk@2517 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'admin')
-rw-r--r-- | admin/cat_modify.php | 10 | ||||
-rw-r--r-- | admin/element_set_ranks.php | 174 | ||||
-rw-r--r-- | admin/template/yoga/admin/cat_modify.tpl | 1 | ||||
-rw-r--r-- | admin/template/yoga/admin/element_set_ranks.tpl | 41 |
4 files changed, 224 insertions, 2 deletions
diff --git a/admin/cat_modify.php b/admin/cat_modify.php index 5f1971653..5d788b8c2 100644 --- a/admin/cat_modify.php +++ b/admin/cat_modify.php @@ -274,8 +274,13 @@ if ('private' == $category['status']) // manage category elements link if ($category['has_images']) { - $template->assign( 'U_MANAGE_ELEMENTS', - $base_url.'element_set&cat='.$category['id'] + $template->assign( + 'U_MANAGE_ELEMENTS', + $base_url.'element_set&cat='.$category['id'] + ); + $template->assign( + 'U_MANAGE_RANKS', + $base_url.'element_set_ranks&cat_id='.$category['id'] ); } @@ -313,6 +318,7 @@ $sort_fields = array( 'hit' => l10n('most_visited_cat'), 'file' => l10n('File name'), 'id' => 'Id', + 'rank' => l10n('Rank'), ); $sort_directions = array( diff --git a/admin/element_set_ranks.php b/admin/element_set_ranks.php new file mode 100644 index 000000000..9f4a086ee --- /dev/null +++ b/admin/element_set_ranks.php @@ -0,0 +1,174 @@ +<?php +// +-----------------------------------------------------------------------+ +// | Piwigo - a PHP based picture gallery | +// +-----------------------------------------------------------------------+ +// | Copyright(C) 2008 Piwigo Team http://piwigo.org | +// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | +// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | +// +-----------------------------------------------------------------------+ +// | This program is free software; you can redistribute it and/or modify | +// | it under the terms of the GNU General Public License as published by | +// | the Free Software Foundation | +// | | +// | This program is distributed in the hope that it will be useful, but | +// | WITHOUT ANY WARRANTY; without even the implied warranty of | +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | +// | General Public License for more details. | +// | | +// | You should have received a copy of the GNU General Public License | +// | along with this program; if not, write to the Free Software | +// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | +// | USA. | +// +-----------------------------------------------------------------------+ + +/** + * Change rank of images inside a category + * + */ + +if (!defined('PHPWG_ROOT_PATH')) +{ + die('Hacking attempt!'); +} + +include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); + +// +-----------------------------------------------------------------------+ +// | Check Access and exit when user status is not ok | +// +-----------------------------------------------------------------------+ +check_status(ACCESS_ADMINISTRATOR); + +if (!isset($_GET['cat_id']) or !is_numeric($_GET['cat_id'])) +{ + trigger_error('missing cat_id param', E_USER_ERROR); +} + +$page['category_id'] = $_GET['cat_id']; + +// +-----------------------------------------------------------------------+ +// | functions | +// +-----------------------------------------------------------------------+ + +/** + * save the rank depending on given images order + * + * The list of ordered images id is supposed to be in the same parent + * category + * + * @param array categories + * @return void + */ +function save_images_order($category_id, $images) +{ + $current_rank = 0; + $datas = array(); + foreach ($images as $id) + { + array_push( + $datas, + array( + 'category_id' => $category_id, + 'image_id' => $id, + 'rank' => ++$current_rank, + ) + ); + } + $fields = array( + 'primary' => array('image_id', 'category_id'), + 'update' => array('rank') + ); + mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas); +} + +// +-----------------------------------------------------------------------+ +// | global mode form submission | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['submit'])) +{ + asort($_POST['rank_of_image'], SORT_NUMERIC); + + save_images_order( + $page['category_id'], + array_keys($_POST['rank_of_image']) + ); + + array_push( + $page['infos'], + l10n('Images manual order was saved') + ); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames( + array('element_set_ranks' => 'admin/element_set_ranks.tpl') + ); + +$base_url = get_root_url().'admin.php'; + +// $form_action = $base_url.'?page=element_set_global'; + +$query = ' +SELECT uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$page['category_id'].' +;'; +$category = mysql_fetch_array(pwg_query($query)); + +// Navigation path +$navigation = get_cat_display_name_cache( + $category['uppercats'], + get_root_url().'admin.php?page=cat_modify&cat_id=' + ); + +$template->assign( + array( + 'CATEGORIES_NAV' => $navigation, + 'F_ACTION' => $base_url.get_query_string_diff(array()), + ) + ); + +// +-----------------------------------------------------------------------+ +// | thumbnails | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT + id, + path, + tn_ext, + rank + FROM '.IMAGES_TABLE.' + JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE category_id = '.$page['category_id'].' + ORDER BY rank +;'; +$result = pwg_query($query); + +// template thumbnail initialization +$current_rank = 1; + +while ($row = mysql_fetch_assoc($result)) +{ + $src = get_thumbnail_url($row); + + $template->append( + 'thumbnails', + array( + 'ID' => $row['id'], + 'TN_SRC' => $src, + 'RANK' => $current_rank * 10, + ) + ); + + $current_rank++; +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'element_set_ranks'); +?> diff --git a/admin/template/yoga/admin/cat_modify.tpl b/admin/template/yoga/admin/cat_modify.tpl index aeac221e6..a45f251a5 100644 --- a/admin/template/yoga/admin/cat_modify.tpl +++ b/admin/template/yoga/admin/cat_modify.tpl @@ -9,6 +9,7 @@ <li><a href="{$U_JUMPTO}" title="{'jump to category'|@translate}"><img src="{$themeconf.icon_dir}/category_jump-to.png" class="button" alt="{'jump to category'|@translate}" /></a></li> {if isset($U_MANAGE_ELEMENTS) } <li><a href="{$U_MANAGE_ELEMENTS}" title="{'manage category elements'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_elements.png" class="button" alt="{'elements'|@translate}" /></a></li> + <li><a href="{$U_MANAGE_RANKS}" title="{'manage element ranks'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/ranks.png" class="button" alt="{'ranks'|@translate}" /></a></li> {/if} <li><a href="{$U_CHILDREN}" title="{'manage sub-categories'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_children.png" class="button" alt="{'sub-categories'|@translate}" /></a></li> {if isset($U_MANAGE_PERMISSIONS) } diff --git a/admin/template/yoga/admin/element_set_ranks.tpl b/admin/template/yoga/admin/element_set_ranks.tpl new file mode 100644 index 000000000..31e614480 --- /dev/null +++ b/admin/template/yoga/admin/element_set_ranks.tpl @@ -0,0 +1,41 @@ +<h2>{'Manage image ranks'|@translate}</h2> + +<h3>{$CATEGORIES_NAV}</h3> + +{if !empty($thumbnails)} + <form action="{$F_ACTION}" method="post"> + + <fieldset> + + <legend>{'Edit ranks'|@translate}</legend> + + {if !empty($thumbnails)} + <ul class="thumbnails"> + {foreach from=$thumbnails item=thumbnail} + <li><span class="wrap1"> + <label> + <span class="wrap2"> + {if $thumbnail.LEVEL > 0} + <em class="levelIndicatorB">{$thumbnail.LEVEL}</em> + <em class="levelIndicatorF" title="{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.LEVEL))}">{$thumbnail.LEVEL}</em> + {/if} + <span> + <img src="{$thumbnail.TN_SRC}" class="thumbnail" /> + </span></span> + <input style="height:12px; width:50px;" type="text" name="rank_of_image[{$thumbnail.ID}]" value="{$thumbnail.RANK}" /> + </label> + </span> + </li> + {/foreach} + </ul> + {/if} + + <p><input class="submit" type="submit" value="{'Submit'|@translate}" name="submit" {$TAG_INPUT_ENABLED}/></p> + + </fieldset> + + </form> + +{else} + <div class="infos"><p>{'No element in this category'|@translate}</p></div> +{/if} |