New interface like the Batch Mananger :
rename, delete, duplicate and toggle-default

TODO soon  merge & finalisation of the interface

git-svn-id: http://piwigo.org/svn/trunk@19286 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
flop25 2012-12-04 22:23:54 +00:00
parent 94f17094cb
commit c988181366
2 changed files with 192 additions and 71 deletions

View file

@ -37,50 +37,6 @@ if (!empty($_POST) or isset($_GET['delete']) or isset($_GET['toggle_is_default']
{
check_pwg_token();
}
// +-----------------------------------------------------------------------+
// | delete a group |
// +-----------------------------------------------------------------------+
if (isset($_GET['delete']) and is_numeric($_GET['delete']))
{
// destruction of the access linked to the group
$query = '
DELETE
FROM '.GROUP_ACCESS_TABLE.'
WHERE group_id = '.$_GET['delete'].'
;';
pwg_query($query);
// destruction of the users links for this group
$query = '
DELETE
FROM '.USER_GROUP_TABLE.'
WHERE group_id = '.$_GET['delete'].'
;';
pwg_query($query);
$query = '
SELECT name
FROM '.GROUPS_TABLE.'
WHERE id = '.$_GET['delete'].'
;';
list($groupname) = pwg_db_fetch_row(pwg_query($query));
// destruction of the group
$query = '
DELETE
FROM '.GROUPS_TABLE.'
WHERE id = '.$_GET['delete'].'
;';
pwg_query($query);
array_push(
$page['infos'],
sprintf(l10n('group "%s" deleted'), $groupname)
);
}
// +-----------------------------------------------------------------------+
// | add a group |
// +-----------------------------------------------------------------------+
@ -124,32 +80,195 @@ INSERT INTO '.GROUPS_TABLE.'
}
// +-----------------------------------------------------------------------+
// | toggle is default group property |
// | action send |
// +-----------------------------------------------------------------------+
if (isset($_GET['toggle_is_default']) and is_numeric($_GET['toggle_is_default']))
if (isset($_POST['submit']) and isset($_POST['selectAction']) and isset($_POST['group_selection']))
{
$query = '
SELECT name, is_default
FROM '.GROUPS_TABLE.'
WHERE id = '.$_GET['toggle_is_default'].'
;';
list($groupname, $is_default) = pwg_db_fetch_row(pwg_query($query));
// if the user tries to apply an action, it means that there is at least 1
// photo in the selection
$groups = $_POST['group_selection'];
if (count($groups) == 0)
{
array_push($page['errors'], l10n('Select at least one group'));
}
$action = $_POST['selectAction'];
// +
// |rename a group
// +
if ($action=="rename")
{
foreach($groups as $group)
{
if ( !empty($_POST['rename_'.$group.'']) )
{
$query = '
UPDATE '.GROUPS_TABLE.'
SET name = \''.$_POST['rename_'.$group.''].'\'
WHERE id = '.$group.'
;';
pwg_query($query);
}
}
}
// +
// |delete a group
// +
if ($action=="delete" and $_POST['confirm_deletion'])
{
foreach($groups as $group)
{
// destruction of the access linked to the group
$query = '
DELETE
FROM '.GROUP_ACCESS_TABLE.'
WHERE group_id = '.$group.'
;';
pwg_query($query);
// destruction of the users links for this group
$query = '
DELETE
FROM '.USER_GROUP_TABLE.'
WHERE group_id = '.$group.'
;';
pwg_query($query);
$query = '
SELECT name
FROM '.GROUPS_TABLE.'
WHERE id = '.$group.'
;';
list($groupname) = pwg_db_fetch_row(pwg_query($query));
// destruction of the group
$query = '
DELETE
FROM '.GROUPS_TABLE.'
WHERE id = '.$group.'
;';
pwg_query($query);
array_push(
$page['infos'],
sprintf(l10n('group "%s" deleted'), $groupname)
);
}
}
// +
// |duplicate a group
// +
if ($action=="duplicate" )
{
foreach($groups as $group)
{
if ( empty($_POST['duplicate_'.$group.'']) )
{
break;
}
// is the group not already existing ?
$query = '
SELECT COUNT(*)
FROM '.GROUPS_TABLE.'
WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\'
;';
list($count) = pwg_db_fetch_row(pwg_query($query));
if ($count != 0)
{
array_push($page['errors'], l10n('This name is already used by another group.'));
break;
}
// creating the group
$query = '
INSERT INTO '.GROUPS_TABLE.'
(name)
VALUES
(\''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\')
;';
pwg_query($query);
$query = '
SELECT id
FROM '.GROUPS_TABLE.'
WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\'
;';
list($groupid) = pwg_db_fetch_row(pwg_query($query));
$query = '
SELECT *
FROM '.GROUP_ACCESS_TABLE.'
WHERE group_id = '.$group.'
;';
$grp_access = array();
$res=pwg_query($query);
while ($row = pwg_db_fetch_assoc($res))
{
$grp_access[] = array(
'cat_id' => $row['cat_id'],
'group_id' => $groupid
);
}
mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $grp_access);
$query = '
SELECT *
FROM '.USER_GROUP_TABLE.'
WHERE group_id = '.$group.'
;';
$usr_grp = array();
$res=pwg_query($query);
while ($row = pwg_db_fetch_assoc($res))
{
$usr_grp[] = array(
'user_id' => $row['user_id'],
'group_id' => $groupid
);
}
mass_inserts(USER_GROUP_TABLE, array('user_id','group_id'), $usr_grp);
// update of the group
$query = '
UPDATE '.GROUPS_TABLE.'
SET is_default = \''.boolean_to_string(!get_boolean($is_default)).'\'
WHERE id = '.$_GET['toggle_is_default'].'
;';
pwg_query($query);
array_push(
$page['infos'],
sprintf(l10n('group "%s" added'), $_POST['duplicate_'.$group.''])
);
}
}
array_push(
$page['infos'],
sprintf(l10n('group "%s" updated'), $groupname)
);
// +
// | toggle_default
// +
if ($action=="toggle_default")
{
foreach($groups as $group)
{
$query = '
SELECT name, is_default
FROM '.GROUPS_TABLE.'
WHERE id = '.$group.'
;';
list($groupname, $is_default) = pwg_db_fetch_row(pwg_query($query));
// update of the group
$query = '
UPDATE '.GROUPS_TABLE.'
SET is_default = \''.boolean_to_string(!get_boolean($is_default)).'\'
WHERE id = '.$group.'
;';
pwg_query($query);
array_push(
$page['infos'],
sprintf(l10n('group "%s" updated'), $groupname)
);
}
}
}
// +-----------------------------------------------------------------------+
// | template init |
// +-----------------------------------------------------------------------+
@ -194,7 +313,9 @@ SELECT COUNT(*)
'groups',
array(
'NAME' => $row['name'],
'ID' => $row['id'],
'IS_DEFAULT' => (get_boolean($row['is_default']) ? ' ['.l10n('default').']' : ''),
'NB_MEMBERS' => $counter,
'MEMBERS' => l10n_dec('%d member', '%d members', $counter),
'U_MEMBERS' => $members_url.$row['id'],
'U_DELETE' => $del_url.$row['id'].'&pwg_token='.get_pwg_token(),
@ -210,4 +331,4 @@ SELECT COUNT(*)
$template->assign_var_from_handle('ADMIN_CONTENT', 'group_list');
?>
?>

View file

@ -3,10 +3,10 @@
$(document).ready(function() {
$(".grp_action").hide();
$("input[name=group_selection]").click(function() {
$("input.group_selection").click(function() {
var nbSelected = 0;
nbSelected = $("input[name=group_selection]").filter(':checked').length;
nbSelected = $("input.group_selection").filter(':checked').length;
if (nbSelected == 0) {
$("#permitAction").hide();
@ -76,7 +76,7 @@ $(document).ready(function() {
{if not empty($groups)}
{foreach from=$groups item=group name=group_loop}
<tr class="{if $smarty.foreach.group_loop.index is odd}row1{else}row2{/if}">
<td><input name="group_selection" type="checkbox" value="{$group.ID}"></td>
<td><input class="group_selection" name="group_selection[]" type="checkbox" value="{$group.ID}"></td>
<td>{$group.NAME}<i><small>{$group.IS_DEFAULT}</small></i></td>
<td><a href="{$group.U_MEMBERS}">{$group.MEMBERS}</a></td>
<td style="text-align:center;">
@ -96,8 +96,8 @@ $(document).ready(function() {
<fieldset id="action">
<legend>{'Action'|@translate}</legend>
<div id="forbidAction"{if count($selection) != 0} style="display:none"{/if}>{'No group selected, no action possible.'|@translate}</div>
<div id="permitAction"{if count($selection) == 0} style="display:none"{/if}>
<div id="forbidAction">{'No group selected, no action possible.'|@translate}</div>
<div id="permitAction" style="display:none">
<select name="selectAction">
<option value="-1">{'Choose an action'|@translate}</option>