diff options
author | mistic100 <mistic@piwigo.org> | 2014-05-26 22:03:57 +0000 |
---|---|---|
committer | mistic100 <mistic@piwigo.org> | 2014-05-26 22:03:57 +0000 |
commit | a5b2cf82007ac1b2461ba86b79c48e43c2640053 (patch) | |
tree | 9cc97025f60101372081320a1fe9f56a8b69451e /admin/themes/default/template | |
parent | b97c45b941170247107445ce4a8fffbae8267c1e (diff) |
feature 3077 : factorize code for categories cache (TODO for other collections) + fix incorrect categories list for dissociation
git-svn-id: http://piwigo.org/svn/trunk@28542 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'admin/themes/default/template')
-rw-r--r-- | admin/themes/default/template/batch_manager_global.tpl | 59 | ||||
-rw-r--r-- | admin/themes/default/template/cat_modify.tpl | 59 | ||||
-rw-r--r-- | admin/themes/default/template/photos_add_direct.tpl | 47 | ||||
-rw-r--r-- | admin/themes/default/template/picture_modify.tpl | 39 |
4 files changed, 55 insertions, 149 deletions
diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index 4a45cab41..a5a48e8de 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -119,46 +119,31 @@ jQuery(document).ready(function() {ldelim} }); {* <!-- CATEGORIES --> *} - var categoriesCache = new LocalStorageCache({ - key: 'categoriesAdminList', + var categoriesCache = new CategoriesCache({ serverKey: '{$CACHE_KEYS.categories}', serverId: '{$CACHE_KEYS._hash}', - - loader: function(callback) { - jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) { - callback(data.result.categories); - }); - } + rootUrl: '{$ROOT_URL}' }); - jQuery('[data-selectize=categories]').selectize({ - valueField: 'id', - labelField: 'fullname', - sortField: 'global_rank', - searchField: ['fullname'], - plugins: ['remove_button'] - }); - - categoriesCache.get(function(categories) { - jQuery('[data-selectize=categories]').each(function() { - this.selectize.load(function(callback) { - callback(categories); - }); - - if (jQuery(this).data('value')) { - this.selectize.setValue(jQuery(this).data('value')[0]); + categoriesCache.selectize(jQuery('[data-selectize=categories]'), { + filter: function(categories, options) { + if (this.name == 'dissociate') { + var filtered = jQuery.grep(categories, function(cat) { + return !cat.dir; + }); + + if (filtered.length > 0) { + jQuery('.albumDissociate').show(); + options.default = filtered[0].id; + } + + return filtered; } - - // prevent empty value - if (this.selectize.getValue() == '') { - this.selectize.setValue(categories[0].id); + else { + options.default = categories[0].id; + return categories; } - this.selectize.on('dropdown_close', function() { - if (this.getValue() == '') { - this.setValue(categories[0].id); - } - }); - }); + } }); jQuery('[data-add-album]').pwgAddAlbum({ cache: categoriesCache }); @@ -837,9 +822,7 @@ UL.thumbnails SPAN.wrap2 {ldelim} <option value="delete" class="icon-trash">{'Delete selected photos'|@translate}</option> <option value="associate">{'Associate to album'|@translate}</option> <option value="move">{'Move to album'|@translate}</option> - {if !empty($dissociate_options)} - <option value="dissociate">{'Dissociate from album'|@translate}</option> - {/if} + <option value="dissociate" class="albumDissociate" style="display:none">{'Dissociate from album'|@translate}</option> <option value="add_tags">{'Add tags'|@translate}</option> {if !empty($associated_tags)} <option value="del_tags">{'remove tags'|@translate}</option> @@ -884,7 +867,7 @@ UL.thumbnails SPAN.wrap2 {ldelim} <!-- dissociate --> - <div id="action_dissociate" class="bulkAction"> + <div id="action_dissociate" class="bulkAction albumDissociate" style="display:none"> <select data-selectize="categories" name="dissociate" style="width:400px"></select> </div> diff --git a/admin/themes/default/template/cat_modify.tpl b/admin/themes/default/template/cat_modify.tpl index 4bb06c03b..b1b9a5e06 100644 --- a/admin/themes/default/template/cat_modify.tpl +++ b/admin/themes/default/template/cat_modify.tpl @@ -5,57 +5,28 @@ {footer_script} {* <!-- CATEGORIES --> *} -var categoriesCache = new LocalStorageCache({ - key: 'categoriesAdminList', +var categoriesCache = new CategoriesCache({ serverKey: '{$CACHE_KEYS.categories}', serverId: '{$CACHE_KEYS._hash}', - - loader: function(callback) { - jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) { - callback(data.result.categories); - }); - } -}); - -jQuery('[data-selectize=categories]').selectize({ - valueField: 'id', - labelField: 'fullname', - sortField: 'global_rank', - searchField: ['fullname'], - plugins: ['remove_button'] + rootUrl: '{$ROOT_URL}' }); -categoriesCache.get(function(categories) { - categories.push({ - id: 0, - fullname: '------------', - global_rank: 0 - }); - - // remove itself and children - categories = jQuery.grep(categories, function(cat) { - return !(/\b{$CAT_ID}\b/.test(cat.uppercats)); - }); - - jQuery('[data-selectize=categories]').each(function() { - this.selectize.load(function(callback) { - callback(categories); +categoriesCache.selectize(jQuery('[data-selectize=categories]'), { + default: 0, + filter: function(categories, options) { + // remove itself and children + var filtered = jQuery.grep(categories, function(cat) { + return !(/\b{$CAT_ID}\b/.test(cat.uppercats)); }); - - if (jQuery(this).data('value')) { - this.selectize.setValue(jQuery(this).data('value')[0]); - } - // prevent empty value - if (this.selectize.getValue() == '') { - this.selectize.setValue(0); - } - this.selectize.on('dropdown_close', function() { - if (this.getValue() == '') { - this.setValue(0); - } + filtered.push({ + id: 0, + fullname: '------------', + global_rank: 0 }); - }); + + return filtered; + } }); {/footer_script} diff --git a/admin/themes/default/template/photos_add_direct.tpl b/admin/themes/default/template/photos_add_direct.tpl index fdf80c481..df87e4d87 100644 --- a/admin/themes/default/template/photos_add_direct.tpl +++ b/admin/themes/default/template/photos_add_direct.tpl @@ -16,50 +16,21 @@ {footer_script} {* <!-- CATEGORIES --> *} -var categoriesCache = new LocalStorageCache({ - key: 'categoriesAdminList', +var categoriesCache = new CategoriesCache({ serverKey: '{$CACHE_KEYS.categories}', serverId: '{$CACHE_KEYS._hash}', - - loader: function(callback) { - jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) { - callback(data.result.categories); - }); - } + rootUrl: '{$ROOT_URL}' }); -jQuery('[data-selectize=categories]').selectize({ - valueField: 'id', - labelField: 'fullname', - sortField: 'global_rank', - searchField: ['fullname'], - plugins: ['remove_button'] -}); - -categoriesCache.get(function(categories) { - if (categories.length > 0) { - jQuery("#albumSelection").show(); - } - - jQuery('[data-selectize=categories]').each(function() { - this.selectize.load(function(callback) { - callback(categories); - }); - - if (jQuery(this).data('value')) { - this.selectize.setValue(jQuery(this).data('value')[0]); +categoriesCache.selectize(jQuery('[data-selectize=categories]'), { + filter: function(categories, options) { + if (categories.length > 0) { + jQuery("#albumSelection").show(); + options.default = categories[0].id; } - // prevent empty value - if (this.selectize.getValue() == '') { - this.selectize.setValue(categories[0].id); - } - this.selectize.on('dropdown_close', function() { - if (this.getValue() == '') { - this.setValue(categories[0].id); - } - }); - }); + return categories; + } }); jQuery('[data-add-album]').pwgAddAlbum({ cache: categoriesCache }); diff --git a/admin/themes/default/template/picture_modify.tpl b/admin/themes/default/template/picture_modify.tpl index 3688d92ff..454a06428 100644 --- a/admin/themes/default/template/picture_modify.tpl +++ b/admin/themes/default/template/picture_modify.tpl @@ -10,37 +10,18 @@ {footer_script} (function(){ {* <!-- CATEGORIES --> *} -var categoriesCache = new LocalStorageCache({ - key: 'categoriesAdminList', +var categoriesCache = new CategoriesCache({ serverKey: '{$CACHE_KEYS.categories}', serverId: '{$CACHE_KEYS._hash}', - - loader: function(callback) { - jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) { - callback(data.result.categories); - }); - } -}); - -jQuery('[data-selectize=categories]').selectize({ - valueField: 'id', - labelField: 'fullname', - sortField: 'global_rank', - searchField: ['fullname'], - plugins: ['remove_button'] + rootUrl: '{$ROOT_URL}' }); -categoriesCache.get(function(categories) { - jQuery('[data-selectize=categories]').each(function() { - this.selectize.load(function(callback) { - callback(categories); - }); - - jQuery.each(jQuery(this).data('value'), jQuery.proxy(function(i, id) { - this.selectize.addItem(id); - }, this)); - }); -}); +categoriesCache.selectize(jQuery('[data-selectize=categories]'), { {if $STORAGE_ALBUM} + filter: function(categories, options) { + options.default = (this.name == 'associate[]') ? {$STORAGE_ALBUM} : undefined; + return categories; + } +{/if} }); {* <!-- TAGS --> *} var tagsCache = new LocalStorageCache({ @@ -157,14 +138,14 @@ jQuery(function(){ {* <!-- onLoad needed to wait localization loads --> *} <p> <strong>{'Linked albums'|@translate}</strong> <br> - <select data-selectize="categories" data-value="{$associate_options_selected|@json_encode|escape:html}" + <select data-selectize="categories" data-value="{$associated_albums|@json_encode|escape:html}" name="associate[]" multiple style="width:600px;" ></select> </p> <p> <strong>{'Representation of albums'|@translate}</strong> <br> - <select data-selectize="categories" data-value="{$represent_options_selected|@json_encode|escape:html}" + <select data-selectize="categories" data-value="{$represented_albums|@json_encode|escape:html}" name="represent[]" multiple style="width:600px;" ></select> </p> |