aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2012-02-09 10:16:56 +0000
committerplegall <plg@piwigo.org>2012-02-09 10:16:56 +0000
commite1b5e45c12a25ac8ed674acf200f11c8a5003d9d (patch)
tree0c953d6cecd51923f891587cee7688aad8d3d0ad
parent62c69bb477ced2427a75e77c50e1bcad1f02e15a (diff)
feature 2309 added: ability to "move photos" into an album from the Batch
Manager, ie "dissociate from all albums" + "associate" in a single action. git-svn-id: http://piwigo.org/svn/trunk@13064 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/batch_manager_global.php49
-rw-r--r--admin/themes/default/template/batch_manager_global.tpl19
-rw-r--r--language/en_UK/admin.lang.php1
-rw-r--r--language/fr_FR/admin.lang.php1
4 files changed, 66 insertions, 4 deletions
diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php
index a527330e7..a568cff96 100644
--- a/admin/batch_manager_global.php
+++ b/admin/batch_manager_global.php
@@ -44,6 +44,7 @@ trigger_action('loc_begin_element_set_global');
check_input_parameter('del_tags', $_POST, true, PATTERN_ID);
check_input_parameter('associate', $_POST, false, PATTERN_ID);
+check_input_parameter('move', $_POST, false, PATTERN_ID);
check_input_parameter('dissociate', $_POST, false, PATTERN_ID);
// +-----------------------------------------------------------------------+
@@ -176,6 +177,49 @@ DELETE
}
}
+ if ('move' == $action)
+ {
+ // let's first break links with all albums but their "storage album"
+ $query = '
+DELETE '.IMAGE_CATEGORY_TABLE.'.*
+ FROM '.IMAGE_CATEGORY_TABLE.'
+ JOIN '.IMAGES_TABLE.' ON image_id=id
+ WHERE id IN ('.implode(',', $collection).')
+ AND (storage_category_id IS NULL OR storage_category_id != category_id)
+;';
+ pwg_query($query);
+
+ associate_images_to_categories(
+ $collection,
+ array($_POST['move'])
+ );
+
+ $_SESSION['page_infos'] = array(
+ l10n('Information data registered in database')
+ );
+
+ // let's refresh the page because we the current set might be modified
+ if ('with no album' == $page['prefilter'])
+ {
+ redirect($redirect_url);
+ }
+
+ if ('with no virtual album' == $page['prefilter'])
+ {
+ $category_info = get_cat_info($_POST['move']);
+ if (empty($category_info['dir']))
+ {
+ redirect($redirect_url);
+ }
+ }
+
+ if (isset($_SESSION['bulk_manager_filter']['category'])
+ and $_POST['move'] != $_SESSION['bulk_manager_filter']['category'])
+ {
+ redirect($redirect_url);
+ }
+ }
+
if ('dissociate' == $action)
{
// physical links must not be broken, so we must first retrieve image_id
@@ -203,13 +247,11 @@ DELETE
';
pwg_query($query);
- update_category($_POST['dissociate']);
-
$_SESSION['page_infos'] = array(
l10n('Information data registered in database')
);
- // let's refresh the page because we the current set might be modified
+ // let's refresh the page because the current set might be modified
redirect($redirect_url);
}
}
@@ -528,6 +570,7 @@ SELECT id,name,uppercats,global_rank
FROM '.CATEGORIES_TABLE.'
;';
display_select_cat_wrapper($query, array(), 'associate_options', true);
+display_select_cat_wrapper($query, array(), 'move_options', true);
display_select_cat_wrapper($query, array(), 'category_parent_options');
// in the filter box, which category to select by default
diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl
index 856633421..76a99de5b 100644
--- a/admin/themes/default/template/batch_manager_global.tpl
+++ b/admin/themes/default/template/batch_manager_global.tpl
@@ -194,6 +194,13 @@ $(document).ready(function() {
$("[id^=action_]").hide();
$("#action_"+$(this).attr("value")).show();
+ /* make sure the #albumSelect is on the right select box so that the */
+ /* "add new album" popup fills the right select box */
+ if ("associate" == $(this).attr("value") || "move" == $(this).attr("value")) {
+ jQuery("#albumSelect").removeAttr("id");
+ jQuery("#action_"+$(this).attr("value")+" select").attr("id", "albumSelect");
+ }
+
if ($(this).val() != -1) {
$("#applyActionBlock").show();
}
@@ -612,6 +619,7 @@ jQuery(window).load(function() {
<option value="delete">{'Delete selected photos'|@translate}</option>
{/if}
<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}
@@ -645,12 +653,21 @@ jQuery(window).load(function() {
<!-- associate -->
<div id="action_associate" class="bulkAction">
- <select id="albumSelect" style="width:400px" name="associate" size="1">
+ <select style="width:400px" name="associate" size="1">
{html_options options=$associate_options }
</select>
<br>{'... or '|@translate}</span><a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
</div>
+ <!-- move -->
+ <div id="action_move" class="bulkAction">
+ <select style="width:400px" name="move" size="1">
+ {html_options options=$move_options }
+ </select>
+<br>{'... or '|@translate}</span><a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
+ </div>
+
+
<!-- dissociate -->
<div id="action_dissociate" class="bulkAction">
<select style="width:400px" name="dissociate" size="1">
diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php
index 6fdc16a11..f95cb8246 100644
--- a/language/en_UK/admin.lang.php
+++ b/language/en_UK/admin.lang.php
@@ -846,4 +846,5 @@ $lang['administrators'] = 'administrators';
$lang['This album contains %d photos, added on %s.'] = 'This album contains %d photos, added on %s.';
$lang['This album contains %d photos, added between %s and %s.'] = 'This album contains %d photos, added between %s and %s.';
$lang['This album contains no photo.'] = 'This album contains no photo.';
+$lang['Move to album'] = 'Move to album';
?> \ No newline at end of file
diff --git a/language/fr_FR/admin.lang.php b/language/fr_FR/admin.lang.php
index de5f3a0cd..863072065 100644
--- a/language/fr_FR/admin.lang.php
+++ b/language/fr_FR/admin.lang.php
@@ -846,4 +846,5 @@ $lang['This album contains %d photos, added on %s.'] = 'Cet album contient %d ph
$lang['This album contains %d photos, added between %s and %s.'] = 'Cet album contient %d photos, ajoutées entre le %s et le %s.';
$lang['This album contains no photo.'] = 'Cet album ne contient pas de photo.';
$lang['%s has been successfully updated.'] = '%s a été mis à jour avec succès.';
+$lang['Move to album'] = 'Déplacer vers l\'album';
?> \ No newline at end of file