Skip to content

Commit

Permalink
bug:2425
Browse files Browse the repository at this point in the history
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
  • Loading branch information
flop25 committed Dec 4, 2012
1 parent 94f1709 commit c988181
Show file tree
Hide file tree
Showing 2 changed files with 192 additions and 71 deletions.
253 changes: 187 additions & 66 deletions admin/group_list.php
Expand Up @@ -37,50 +37,6 @@
{
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 |
// +-----------------------------------------------------------------------+
Expand Down Expand Up @@ -124,32 +80,195 @@
}

// +-----------------------------------------------------------------------+
// | 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 |
// +-----------------------------------------------------------------------+
Expand Down Expand Up @@ -194,7 +313,9 @@
'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(),
Expand All @@ -210,4 +331,4 @@

$template->assign_var_from_handle('ADMIN_CONTENT', 'group_list');

?>
?>
10 changes: 5 additions & 5 deletions admin/themes/default/template/group_list.tpl
Expand Up @@ -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();
Expand Down Expand Up @@ -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;">
Expand All @@ -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>
Expand Down

0 comments on commit c988181

Please sign in to comment.