From 6e8e08f3b76efe0d32f5169187bfff03e70bfed5 Mon Sep 17 00:00:00 2001 From: rvelices Date: Sat, 30 Jul 2011 04:53:18 +0000 Subject: feature 2387: addd a filter by tag in the batch manager (merge from trunk) git-svn-id: http://piwigo.org/svn/branches/2.2@11854 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/batch_manager.php | 23 +++++++++++++++--- admin/batch_manager_global.php | 9 ++++++++ admin/batch_manager_unit.php | 4 ++-- admin/include/functions.php | 13 ++++------- admin/picture_modify.php | 8 +++---- .../default/template/batch_manager_global.tpl | 27 +++++++++++++++++++++- 6 files changed, 66 insertions(+), 18 deletions(-) diff --git a/admin/batch_manager.php b/admin/batch_manager.php index c1d3687d4..34bbefeea 100644 --- a/admin/batch_manager.php +++ b/admin/batch_manager.php @@ -68,6 +68,11 @@ if (isset($_POST['submitFilter'])) } } + if (isset($_POST['filter_tags_use'])) + { + $_SESSION['bulk_manager_filter']['tags'] = get_tag_ids($_POST['filter_tags'], false); + } + if (isset($_POST['filter_level_use'])) { if (in_array($_POST['filter_level'], $conf['available_permission_levels'])) @@ -290,6 +295,20 @@ SELECT id ); } +if (!empty($_SESSION['bulk_manager_filter']['tags'])) +{ + $query = ' +SELECT image_id + FROM '.IMAGE_TAG_TABLE. + 'WHERE tag_id IN('.implode(',',$_SESSION['bulk_manager_filter']['tags']).') + GROUP BY image_id + HAVING COUNT(tag_id)='.count($_SESSION['bulk_manager_filter']['tags']); + array_push( + $filter_sets, + get_image_ids_for_tags($_SESSION['bulk_manager_filter']['tags']) + ); +} + $current_set = array_shift($filter_sets); foreach ($filter_sets as $set) { @@ -365,9 +384,7 @@ if (in_array($page['tab'], $tab_codes)) // +-----------------------------------------------------------------------+ $query = ' -SELECT - id AS tag_id, - name AS tag_name +SELECT id, name FROM '.TAGS_TABLE.' ;'; $template->assign('tags', get_taglist($query)); diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php index 73d11be2d..1fb4b9ccd 100644 --- a/admin/batch_manager_global.php +++ b/admin/batch_manager_global.php @@ -486,6 +486,15 @@ $template->assign( ) ); +if (!empty($_SESSION['bulk_manager_filter']['tags'])) +{ + $query = ' +SELECT id, name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $_SESSION['bulk_manager_filter']['tags']).')'; + $template->assign('filter_tags', get_taglist($query)); +} + // Virtualy associate a picture to a category $query = ' SELECT id,name,uppercats,global_rank diff --git a/admin/batch_manager_unit.php b/admin/batch_manager_unit.php index a009a6843..4c0d7227d 100644 --- a/admin/batch_manager_unit.php +++ b/admin/batch_manager_unit.php @@ -251,8 +251,8 @@ SELECT id,path,tn_ext,name,date_creation,comment,author,level,file $query = ' SELECT - tag_id, - name AS tag_name + id, + name FROM '.IMAGE_TAG_TABLE.' AS it JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id WHERE image_id = '.$row['id'].' diff --git a/admin/include/functions.php b/admin/include/functions.php index b7972ddc5..0eb13f1be 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -2115,8 +2115,8 @@ function get_taglist($query) array_push( $taglist, array( - 'name' => $row['tag_name'], - 'id' => '~~'.$row['tag_id'].'~~', + 'name' => $row['name'], + 'id' => '~~'.$row['id'].'~~', ) ); } @@ -2127,7 +2127,7 @@ function get_taglist($query) return $taglist; } -function get_tag_ids($raw_tags) +function get_tag_ids($raw_tags, $allow_create=true) { // In $raw_tags we receive something like array('~~6~~', '~~59~~', 'New // tag', 'Another new tag') The ~~34~~ means that it is an existing @@ -2143,13 +2143,10 @@ function get_tag_ids($raw_tags) { array_push($tag_ids, $matches[1]); } - else + elseif ($allow_create) { // we have to create a new tag - array_push( - $tag_ids, - tag_id_from_tag_name($raw_tag) - ); + $tag_ids[] = tag_id_from_tag_name($raw_tag); } } diff --git a/admin/picture_modify.php b/admin/picture_modify.php index 779197f0c..7dd6fcbc5 100644 --- a/admin/picture_modify.php +++ b/admin/picture_modify.php @@ -227,8 +227,8 @@ if (isset($_POST['dismiss']) // tags $query = ' SELECT - tag_id, - name AS tag_name + id, + name FROM '.IMAGE_TAG_TABLE.' AS it JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id WHERE image_id = '.$_GET['image_id'].' @@ -237,8 +237,8 @@ $tag_selection = get_taglist($query); $query = ' SELECT - id AS tag_id, - name AS tag_name + id, + name FROM '.TAGS_TABLE.' ;'; $tags = get_taglist($query); diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index 58c941cbf..4ecfee7b5 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -9,8 +9,9 @@ {footer_script require='jquery.tokeninput'} jQuery(document).ready(function() {ldelim} + var tag_src = [{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}]; jQuery("#tags").tokenInput( - [{foreach from=$tags item=tag name=tags}{ldelim}"name":"{$tag.name|@escape:'javascript'}","id":"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}], + tag_src, {ldelim} hintText: '{'Type in a search term'|@translate}', noResultsText: '{'No results'|@translate}', @@ -21,6 +22,19 @@ jQuery(document).ready(function() {ldelim} allowCreation: true } ); + + jQuery("#tagsFilter").tokenInput( + tag_src, + {ldelim} + hintText: '{'Type in a search term'|@translate}', + noResultsText: '{'No results'|@translate}', + searchingText: '{'Searching...'|@translate}', + animateDropdown: false, + preventDuplicates: true, + allowCreation: false + } + ); + }); {/footer_script} @@ -346,6 +360,16 @@ jQuery(window).load(function() { +
  • + [x] + + {'Tags'|@translate} + +
  • [x] @@ -362,6 +386,7 @@ jQuery(window).load(function() { + -- cgit v1.2.3