aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/batch_manager_global.php8
-rw-r--r--admin/themes/default/template/batch_manager_global.tpl114
2 files changed, 72 insertions, 50 deletions
diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php
index c8bc38dad..57cb2acdf 100644
--- a/admin/batch_manager_global.php
+++ b/admin/batch_manager_global.php
@@ -554,13 +554,7 @@ SELECT
if (count($page['cat_elements_id']) > 0)
{
// remove tags
- $tags = get_common_tags($page['cat_elements_id'], -1);
-
- $template->assign(
- array(
- 'DEL_TAG_SELECTION' => get_html_tag_selection($tags, 'del_tags'),
- )
- );
+ $template->assign('associated_tags', get_common_tags($page['cat_elements_id'], -1));
}
// creation date
diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl
index 631a00f0d..3e22edb02 100644
--- a/admin/themes/default/template/batch_manager_global.tpl
+++ b/admin/themes/default/template/batch_manager_global.tpl
@@ -4,9 +4,18 @@
{include file='include/add_album.inc.tpl'}
{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'}
+
{combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'}
{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"}
+{combine_script id='LocalStorageCache' load='footer' path='admin/themes/default/js/LocalStorageCache.js'}
+
+{combine_script id='jquery.selectize' load='footer' path='themes/default/js/plugins/selectize.min.js'}
+{combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.default.css"}
+
+{combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'}
+{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
+
{footer_script}{literal}
/* Shift-click: select all photos between the click and the shift+click */
jQuery(document).ready(function() {
@@ -51,49 +60,66 @@ jQuery(document).ready(function() {
}
$('ul.thumbnails').enableShiftClick();
});
-{/literal}{/footer_script}
-
-{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'}
-{combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'}
-{combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'}
-{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
+{/literal}
-{footer_script require='jquery.tokeninput'}
jQuery(document).ready(function() {ldelim}
jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true });
jQuery("a.preview-box").colorbox();
- 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(
- tag_src,
- {ldelim}
- hintText: '{'Type in a search term'|@translate}',
- noResultsText: '{'No results'|@translate}',
- searchingText: '{'Searching...'|@translate}',
- newText: ' ({'new'|@translate})',
- animateDropdown: false,
- preventDuplicates: true,
- allowFreeTagging: 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,
- allowFreeTagging: false
+ {* <!-- TAGS --> *}
+ var tagsCache = new LocalStorageCache('tagsAdminList', 5*60, function(callback) {
+ jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
+ var tags = data.result.tags;
+
+ for (var i=0, l=tags.length; i<l; i++) {
+ tags[i].id = '~~' + tags[i].id + '~~';
+ }
+
+ callback(tags);
+ });
+ });
+
+ jQuery('[data-selectize=tags]').selectize({
+ valueField: 'id',
+ labelField: 'name',
+ searchField: ['name'],
+ plugins: ['remove_button']
+ });
+
+ jQuery('[data-selectize=tags-create]').selectize({
+ valueField: 'id',
+ labelField: 'name',
+ searchField: ['name'],
+ plugins: ['remove_button'],
+ create: function(input, callback) {
+ tagsCache.clear();
+
+ callback({
+ id: input,
+ name: input
+ });
}
- );
+ });
+
+ tagsCache.get(function(tags) {
+ jQuery('[data-selectize^=tags]').each(function() {
+ this.selectize.load(function(callback) {
+ // one select is populated with <option>
+ if (jQuery.isEmptyObject(this.options)) {
+ callback(tags);
+ }
+ });
+ if (jQuery(this).data('value')) {
+ jQuery.each(jQuery(this).data('value'), jQuery.proxy(function(i, tag) {
+ this.selectize.addItem(tag.id);
+ }, this));
+ }
+ });
+ });
});
-{/footer_script}
-{footer_script}
var nb_thumbs_page = {$nb_thumbs_page};
var nb_thumbs_set = {$nb_thumbs_set};
var are_you_sure = "{'Are you sure?'|@translate|@escape:'javascript'}";
@@ -606,11 +632,8 @@ $(document).ready(function() {
<a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
<input type="checkbox" name="filter_tags_use" class="useFilterCheckbox" {if isset($filter.tags)}checked="checked"{/if}>
{'Tags'|@translate}
- <select id="tagsFilter" name="filter_tags">
- {if isset($filter_tags)}{foreach from=$filter_tags item=tag}
- <option value="{$tag.id}">{$tag.name}</option>
- {/foreach}{/if}
- </select>
+ <select data-selectize="tags" data-value="{if isset($filter_tags)}{$filter_tags|@json_encode|escape:html}{else}[]{/if}"
+ name="filter_tags[]" multiple style="width:400px;" ></select>
<label><span><input type="radio" name="tag_mode" value="AND" {if !isset($filter.tag_mode) or $filter.tag_mode eq 'AND'}checked="checked"{/if}> {'All tags'|@translate}</span></label>
<label><span><input type="radio" name="tag_mode" value="OR" {if isset($filter.tag_mode) and $filter.tag_mode eq 'OR'}checked="checked"{/if}> {'Any tag'|@translate}</span></label>
</li>
@@ -670,7 +693,7 @@ $(document).ready(function() {
{'Search'|@translate}
<input name="q" size=40 value="{$filter.search.q|stripslashes|htmlspecialchars}">
{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'}
- <a href="admin/popuphelp.php?page=quick_search"onclick="popuphelp(this.href);return false;" title="{'Help'|@translate}"><span class="icon-help-circled"></span></a>
+ <a href="admin/popuphelp.php?page=quick_search" onclick="popuphelp(this.href);return false;" title="{'Help'|@translate}"><span class="icon-help-circled"></span></a>
</li>
</ul>
@@ -782,7 +805,7 @@ UL.thumbnails SPAN.wrap2 {ldelim}
<option value="dissociate">{'Dissociate from album'|@translate}</option>
{/if}
<option value="add_tags">{'Add tags'|@translate}</option>
- {if !empty($DEL_TAG_SELECTION)}
+ {if !empty($associated_tags)}
<option value="del_tags">{'remove tags'|@translate}</option>
{/if}
<option value="author">{'Set author'|@translate}</option>
@@ -836,13 +859,18 @@ UL.thumbnails SPAN.wrap2 {ldelim}
<!-- add_tags -->
<div id="action_add_tags" class="bulkAction">
-<select id="tags" name="add_tags">
-</select>
+ <select data-selectize="tags-create" name="add_tags[]" multiple style="width:400px;"></select>
</div>
<!-- del_tags -->
<div id="action_del_tags" class="bulkAction">
-{if !empty($DEL_TAG_SELECTION)}{$DEL_TAG_SELECTION}{/if}
+{if !empty($associated_tags)}
+ <select data-selectize="tags" name="del_tags[]" multiple style="width:400px;">
+ {foreach from=$associated_tags item=tag}
+ <option value="{$tag.id}">{$tag.name}</option>
+ {/foreach}
+ </select>
+{/if}
</div>
<!-- author -->