diff options
author | mistic100 <mistic@piwigo.org> | 2014-09-23 09:28:26 +0000 |
---|---|---|
committer | mistic100 <mistic@piwigo.org> | 2014-09-23 09:28:26 +0000 |
commit | 9d0357e889d603e769e9755fb07fb34334396b6e (patch) | |
tree | d3b135de203585b3c3acd8262365b22b98309cf0 | |
parent | 3ef5464b262738487b78a1f3a6a09e3616c391cd (diff) |
filter "dissociate" action + display bug of Selectize widget
git-svn-id: http://piwigo.org/svn/trunk@29760 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | admin/batch_manager_global.php | 19 | ||||
-rw-r--r-- | admin/themes/default/template/batch_manager_global.tpl | 11 |
2 files changed, 26 insertions, 4 deletions
diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php index d8e9e94f0..4179ed284 100644 --- a/admin/batch_manager_global.php +++ b/admin/batch_manager_global.php @@ -529,6 +529,25 @@ SELECT category_id $template->assign('filter_category_selected', $selected_category); +// Dissociate from a category : categories listed for dissociation can only +// represent virtual links. We can't create orphans. Links to physical +// categories can't be broken. +if (count($page['cat_elements_id']) > 0) +{ + $query = ' +SELECT + DISTINCT(category_id) AS id + FROM '.IMAGE_CATEGORY_TABLE.' AS ic + JOIN '.IMAGES_TABLE.' AS i ON i.id = ic.image_id + WHERE ic.image_id IN ('.implode(',', $page['cat_elements_id']).') + AND ( + ic.category_id != i.storage_category_id + OR i.storage_category_id IS NULL + ) +;'; + + $template->assign('associated_categories', query2array($query, 'id', 'id')); +} if (count($page['cat_elements_id']) > 0) { diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index fae8a286e..46262c0ff 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -43,16 +43,17 @@ jQuery(document).ready(function() { serverId: '{$CACHE_KEYS._hash}', rootUrl: '{$ROOT_URL}' }); + + var associated_categories = {$associated_categories|@json_encode}; categoriesCache.selectize(jQuery('[data-selectize=categories]'), { filter: function(categories, options) { if (this.name == 'dissociate') { var filtered = jQuery.grep(categories, function(cat) { - return !cat.dir; + return !!associated_categories[cat.id]; }); if (filtered.length > 0) { - jQuery('.albumDissociate').show(); options.default = filtered[0].id; } @@ -552,7 +553,9 @@ 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> - <option value="dissociate" class="albumDissociate" style="display:none">{'Dissociate from album'|@translate}</option> + {if !empty($associated_categories)} + <option value="dissociate">{'Dissociate from album'|@translate}</option> + {/if} <option value="add_tags">{'Add tags'|@translate}</option> {if !empty($associated_tags)} <option value="del_tags">{'remove tags'|@translate}</option> @@ -597,7 +600,7 @@ UL.thumbnails SPAN.wrap2 {ldelim} <!-- dissociate --> - <div id="action_dissociate" class="bulkAction albumDissociate" style="display:none"> + <div id="action_dissociate" class="bulkAction"> <select data-selectize="categories" placeholder="{'Type in a search term'|translate}" name="dissociate" style="width:600px"></select> </div> |