From 3a076f460d89628e75a7e9e693be0c3962ac2c39 Mon Sep 17 00:00:00 2001 From: plegall Date: Fri, 19 Mar 2010 12:50:19 +0000 Subject: feature 724: FCBKcomplete propagated to element_set_global and element_set_unit to manage tags. Note: multiple instances of FCBKcomplete on the same page does not work as good as a single instance. git-svn-id: http://piwigo.org/svn/trunk@5188 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/element_set_global.php | 17 +------- admin/element_set_unit.php | 36 ++++++----------- admin/include/functions.php | 46 ++++++++++++++++++++++ admin/picture_modify.php | 43 +++----------------- .../themes/default/template/element_set_global.tpl | 26 +++++++++++- admin/themes/default/template/element_set_unit.tpl | 29 +++++++++++++- 6 files changed, 118 insertions(+), 79 deletions(-) diff --git a/admin/element_set_global.php b/admin/element_set_global.php index 1a74e1c42..113b5b1f8 100644 --- a/admin/element_set_global.php +++ b/admin/element_set_global.php @@ -148,7 +148,8 @@ if (isset($_POST['submit'])) if (isset($_POST['add_tags']) and count($collection) > 0) { - add_tags($_POST['add_tags'], $collection); + $tag_ids = get_fckb_tag_ids($_POST['add_tags']); + add_tags($tag_ids, $collection); } if (isset($_POST['del_tags']) and count($collection) > 0) @@ -367,20 +368,6 @@ SELECT display_select_cat_wrapper($query, array(), 'dissociate_options', true); } -$all_tags = get_all_tags(); - -if (count($all_tags) > 0) -{// add tags - $template->assign( - array( - 'ADD_TAG_SELECTION' => get_html_tag_selection( - $all_tags, - 'add_tags' - ), - ) - ); -} - if (count($page['cat_elements_id']) > 0) { // remove tags diff --git a/admin/element_set_unit.php b/admin/element_set_unit.php index 9abcb3889..d80d65fa8 100644 --- a/admin/element_set_unit.php +++ b/admin/element_set_unit.php @@ -105,7 +105,8 @@ SELECT id, date_creation // tags management if (isset($_POST[ 'tags-'.$row['id'] ])) { - set_tags($_POST[ 'tags-'.$row['id'] ], $row['id']); + $tag_ids = get_fckb_tag_ids($_POST[ 'tags-'.$row['id'] ]); + set_tags($tag_ids, $row['id']); } } @@ -207,13 +208,6 @@ SELECT id,path,tn_ext,name,date_creation,comment,author,file $src = get_thumbnail_url($row); - $query = ' -SELECT tag_id - FROM '.IMAGE_TAG_TABLE.' - WHERE image_id = '.$row['id'].' -;'; - $selected_tags = array_from_query($query, 'tag_id'); - // creation date if (!empty($row['date_creation'])) { @@ -224,21 +218,15 @@ SELECT tag_id list($year,$month,$day) = array('',0,0); } - if (count($all_tags) > 0) - { - $tag_selection = get_html_tag_selection( - $all_tags, - 'tags-'.$row['id'], - $selected_tags - ); - } - else - { - $tag_selection = - '

'. - l10n('No tag defined. Use Administration>Pictures>Tags'). - '

'; - } + $query = ' +SELECT + tag_id, + name AS tag_name + FROM '.IMAGE_TAG_TABLE.' AS it + JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id + WHERE image_id = '.$row['id'].' +;'; + $tag_selection = get_fckb_taglist($query); $template->append( 'elements', @@ -258,7 +246,7 @@ SELECT tag_id 'DATE_CREATION_MONTH' => (int)$month, 'DATE_CREATION_DAY' => (int)$day, - 'TAG_SELECTION' => $tag_selection, + 'TAGS' => $tag_selection, ) ); } diff --git a/admin/include/functions.php b/admin/include/functions.php index eb6a4181b..c7b8bf5f1 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -1981,4 +1981,50 @@ function get_active_menu($menu_page) } return 0; } + +function get_fckb_taglist($query) +{ + $result = pwg_query($query); + $taglist = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + array_push( + $taglist, + array( + 'caption' => $row['tag_name'], + 'value' => '~~'.$row['tag_id'].'~~', + ) + ); + } + + return $taglist; +} + +function get_fckb_tag_ids($raw_tags) +{ + // In $raw_tags we receive something like array('~~6~~', '~~59~~', 'New + // tag', 'Another new tag') The ~~34~~ means that it is an existing + // tag. I've added the surrounding ~~ to permit creation of tags like "10" + // or "1234" (numeric characters only) + + $tag_ids = array(); + + foreach ($raw_tags as $raw_tag) + { + if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches)) + { + array_push($tag_ids, $matches[1]); + } + else + { + // we have to create a new tag + array_push( + $tag_ids, + tag_id_from_tag_name($raw_tag) + ); + } + } + + return $tag_ids; +} ?> \ No newline at end of file diff --git a/admin/picture_modify.php b/admin/picture_modify.php index 42306fc23..e33447f70 100644 --- a/admin/picture_modify.php +++ b/admin/picture_modify.php @@ -106,34 +106,13 @@ if (isset($_POST['submit']) and count($page['errors']) == 0 and !is_adviser()) array($data) ); - // In $_POST[tags] we receive something like array('~~6~~', '~~59~~', 'New - // tag', 'Another new tag') The ~~34~~ means that it is an existing - // tag. I've added the surrounding ~~ to permit creation of tags like "10" - // or "1234" (numeric characters only) + // time to deal with tags $tag_ids = array(); if (isset($_POST['tags'])) { - foreach ($_POST['tags'] as $raw_tag) - { - if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches)) - { - array_push($tag_ids, $matches[1]); - } - else - { - // we have to create a new tag - array_push( - $tag_ids, - tag_id_from_tag_name($raw_tag) - ); - } - } + $tag_ids = get_fckb_tag_ids($_POST['tags']); } - - set_tags( - $tag_ids, - $_GET['image_id'] - ); + set_tags($tag_ids, $_GET['image_id']); array_push($page['infos'], l10n('Picture informations updated')); } @@ -194,27 +173,15 @@ if (isset($_POST['dismiss']) } // tags -$tags = array(); - $query = ' SELECT tag_id, - name + name AS tag_name FROM '.IMAGE_TAG_TABLE.' AS it JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id WHERE image_id = '.$_GET['image_id'].' ;'; -$result = pwg_query($query); -while ($row = pwg_db_fetch_assoc($result)) -{ - array_push( - $tags, - array( - 'value' => '~~'.$row['tag_id'].'~~', - 'caption' => $row['name'], - ) - ); -} +$tags = get_fckb_taglist($query); // retrieving direct information about picture $query = ' diff --git a/admin/themes/default/template/element_set_global.tpl b/admin/themes/default/template/element_set_global.tpl index fffea3f09..6291013ad 100644 --- a/admin/themes/default/template/element_set_global.tpl +++ b/admin/themes/default/template/element_set_global.tpl @@ -7,6 +7,24 @@ {/literal} +{known_script id="jquery.fcbkcomplete" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.fcbkcomplete.js"} +{literal} + +{/literal} +

{'Batch management'|@translate}

{$CATEGORIES_NAV}

@@ -108,7 +126,13 @@ {'add tags'|@translate} - {if !empty($ADD_TAG_SELECTION)}{$ADD_TAG_SELECTION}{else}

{'No tag defined. Use Administration>Pictures>Tags'|@translate}

{/if} + + + {if !empty($DEL_TAG_SELECTION)} diff --git a/admin/themes/default/template/element_set_unit.tpl b/admin/themes/default/template/element_set_unit.tpl index 4e188590b..d31b5a95c 100644 --- a/admin/themes/default/template/element_set_unit.tpl +++ b/admin/themes/default/template/element_set_unit.tpl @@ -2,6 +2,25 @@ {include file='include/autosize.inc.tpl'} {include file='include/datepicker.inc.tpl'} +{known_script id="jquery.fcbkcomplete" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.fcbkcomplete.js"} +{literal} + +{/literal} + +

{'Batch management'|@translate}

{$CATEGORIES_NAV}

@@ -75,7 +94,15 @@ {'Tags'|@translate} - {$element.TAG_SELECTION} + + + + + -- cgit v1.2.3