Skip to content

Commit

Permalink
improved messaging in bulk user tools + added bulk group add/remove
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan Tyler committed Apr 4, 2012
1 parent 1de1c7d commit feff53e
Show file tree
Hide file tree
Showing 10 changed files with 307 additions and 16 deletions.
5 changes: 4 additions & 1 deletion web/concrete/elements/users/search_results.php
Expand Up @@ -34,6 +34,9 @@
<option value="properties"><?=t('Edit Properties')?></option>
<option value="activate"><?=t('Activate')?></option>
<option value="deactivate"><?=t('Deactivate')?></option>
<option value="group_add"><?=t('Add to Group')?></option>
<option value="group_remove"><?=t('Remove from Group')?></option>
<option value="password_reset"><?=t('Reset Password')?></option>
<option value="delete"><?=t('Delete')?></option>
<? if ($mode == 'choose_multiple') { ?>
<option value="choose"><?=t('Choose')?></option>
Expand Down Expand Up @@ -130,6 +133,6 @@

<script type="text/javascript">
$(function() {
ccm_setupUserSearch();
ccm_setupUserSearch('<?=$searchInstance?>');
});
</script>
2 changes: 1 addition & 1 deletion web/concrete/js/ccm.app.js

Large diffs are not rendered by default.

36 changes: 31 additions & 5 deletions web/concrete/js/ccm_app/ui.js
Expand Up @@ -427,7 +427,7 @@ ccm_triggerSelectUser = function(uID, uName, uEmail) {
alert(uEmail);
}

ccm_setupUserSearch = function() {
ccm_setupUserSearch = function(searchInstance) {
$(".chosen-select").chosen();

$("#ccm-user-list-cb-all").click(function() {
Expand Down Expand Up @@ -481,7 +481,7 @@ ccm_setupUserSearch = function() {
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_activate?' + uIDstring,
href: CCM_TOOLS_PATH + '/users/bulk_activate?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_activate
});
break;
Expand All @@ -494,7 +494,7 @@ ccm_setupUserSearch = function() {
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_deactivate?' + uIDstring,
href: CCM_TOOLS_PATH + '/users/bulk_deactivate?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_deactivate
});
break;
Expand All @@ -507,10 +507,36 @@ ccm_setupUserSearch = function() {
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_password_reset?' + uIDstring,
href: CCM_TOOLS_PATH + '/users/bulk_password_reset?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_password_reset
});
break;
case "group_add":
uIDstring = '';
$("td.ccm-user-list-cb input[type=checkbox]:checked").each(function() {
uIDstring=uIDstring+'&uID[]='+$(this).val();
});
jQuery.fn.dialog.open({
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_group_add?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_group_add
});
break;
case "group_remove":
uIDstring = '';
$("td.ccm-user-list-cb input[type=checkbox]:checked").each(function() {
uIDstring=uIDstring+'&uID[]='+$(this).val();
});
jQuery.fn.dialog.open({
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_group_remove?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_group_remove
});
break;
case "delete":
uIDstring = '';
$("td.ccm-user-list-cb input[type=checkbox]:checked").each(function() {
Expand All @@ -520,7 +546,7 @@ ccm_setupUserSearch = function() {
width: 630,
height: 450,
modal: false,
href: CCM_TOOLS_PATH + '/users/bulk_delete?' + uIDstring,
href: CCM_TOOLS_PATH + '/users/bulk_delete?searchInstance='+ searchInstance + '&' + uIDstring,
title: ccmi18n.user_delete
});
break;
Expand Down
6 changes: 5 additions & 1 deletion web/concrete/models/userinfo.php
Expand Up @@ -321,6 +321,10 @@ public function sendPrivateMessage($recipient, $subject, $text, $inReplyTo = fal
}
}

/**
* gets the user object of the current UserInfo object ($this)
* @return User
*/
public function getUserObject() {
// returns a full user object - groups and everything - for this userinfo object
$nu = User::getByUserID($this->uID);
Expand All @@ -329,7 +333,7 @@ public function getUserObject() {

/**
* Sets the attribute of a user info object to the specified value, and saves it in the database
*/
*/
public function setAttribute($ak, $value) {
Loader::model('attribute/categories/user');
if (!is_object($ak)) {
Expand Down
5 changes: 4 additions & 1 deletion web/concrete/tools/i18n_js.php
Expand Up @@ -65,14 +65,17 @@
properties: "<?=t('Properties')?>",
savePropertiesMsg: "<?=t('Page Properties saved.')?>",
saveSpeedSettingsMsg: "<?=t("Speed Settings saved.")?>",
saveUserSettingsMsg: "<?=t("User Settings saved.")?>",
ok: "<?=t('Ok')?>",
newsflowLoading: "<?=t("Checking for updates.")?>",
authoredBy: "<?=t('by')?>",
x: "<?=t('x')?>",
user_activate: "<?=t('Activate Users')?>",
user_deactivate: "<?=t('Deactivate Users')?>",
user_password_reset: "<?=t('Reset Passwords')?>",
user_delete: "<?=t('Delete')?>"
user_delete: "<?=t('Delete')?>",
user_group_remove: "<?=t('Remove From Group')?>",
user_group_add: "<?=t('Add to Group')?>"
}

var ccmi18n_sitemap = {
Expand Down
23 changes: 20 additions & 3 deletions web/concrete/tools/users/bulk_activate.php
@@ -1,4 +1,9 @@
<?php defined('C5_EXECUTE') or die("Access Denied.");
$searchInstance = $_REQUEST['searchInstance'];
if(!strlen($searchInstance)) {
$searchInstance = 'user';
}

$form = Loader::helper('form');
$ih = Loader::helper('concrete/interface');
$tp = new TaskPermission();
Expand Down Expand Up @@ -36,9 +41,16 @@
echo $form->hidden('uID[]' , $ui->getUserID());
}
?>
<div class="clearfix">
<div class="input">
<label><?php echo t('Select Group')?></label>

</div>
</div>

<?php echo t('Are you sure you would like to activate the following users?');?><br/><br/>
<?php Loader::element('users/confirm_list',array('users'=>$users)); ?>
</form>
</form>
</div>
<div class="dialog-buttons">
<?=$ih->button_js(t('Cancel'), 'jQuery.fn.dialog.closeTop()', 'left', 'btn')?>
Expand All @@ -52,8 +64,13 @@
<script type="text/javascript">
ccm_userBulkActivate = function() {
$("#ccm-user-bulk-activate").ajaxSubmit(function(resp) {
jQuery.fn.dialog.closeTop();
jQuery.fn.dialog.hideLoader();
ccm_deactivateSearchResults('<?=$searchInstance?>');
ccmAlert.hud(ccmi18n.saveUserSettingsMsg, 2000, 'success', ccmi18n.user_activate);
$("#ccm-<?=$searchInstance?>-advanced-search").ajaxSubmit(function(r) {
ccm_parseAdvancedSearchResponse(r, '<?=$searchInstance?>');
});
});
jQuery.fn.dialog.closeTop();
ccm_setupUserSearch();
};
</script>
16 changes: 14 additions & 2 deletions web/concrete/tools/users/bulk_deactivate.php
@@ -1,4 +1,10 @@
<?php defined('C5_EXECUTE') or die("Access Denied.");

$searchInstance = $_REQUEST['searchInstance'];
if(!strlen($searchInstance)) {
$searchInstance = 'user';
}

$form = Loader::helper('form');
$ih = Loader::helper('concrete/interface');
$tp = new TaskPermission();
Expand Down Expand Up @@ -52,8 +58,14 @@
<script type="text/javascript">
ccm_userBulkDeactivate = function() {
$("#ccm-user-bulk-deactivate").ajaxSubmit(function(resp) {
jQuery.fn.dialog.closeTop();
jQuery.fn.dialog.hideLoader();
ccm_deactivateSearchResults('<?=$searchInstance?>');
ccmAlert.hud(ccmi18n.saveUserSettingsMsg, 2000, 'success', ccmi18n.user_deactivate);
$("#ccm-<?=$searchInstance?>-advanced-search").ajaxSubmit(function(r) {
ccm_parseAdvancedSearchResponse(r, '<?=$searchInstance?>');
});
});
jQuery.fn.dialog.closeTop();
ccm_setupUserSearch();

};
</script>
16 changes: 14 additions & 2 deletions web/concrete/tools/users/bulk_delete.php
@@ -1,4 +1,10 @@
<?php defined('C5_EXECUTE') or die("Access Denied.");

$searchInstance = $_REQUEST['searchInstance'];
if(!strlen($searchInstance)) {
$searchInstance = 'user';
}

$form = Loader::helper('form');
$ih = Loader::helper('concrete/interface');
$tp = new TaskPermission();
Expand Down Expand Up @@ -68,8 +74,14 @@
<script type="text/javascript">
ccm_userBulkActivate = function() {
$("#ccm-user-bulk-delete").ajaxSubmit(function(resp) {
jQuery.fn.dialog.closeTop();
jQuery.fn.dialog.hideLoader();
ccm_deactivateSearchResults('<?=$searchInstance?>');
ccmAlert.hud(ccmi18n.saveUserSettingsMsg, 2000, 'success', ccmi18n.user_delete);
$("#ccm-<?=$searchInstance?>-advanced-search").ajaxSubmit(function(r) {
ccm_parseAdvancedSearchResponse(r, '<?=$searchInstance?>');
});
});
jQuery.fn.dialog.closeTop();
ccm_setupUserSearch();

};
</script>
107 changes: 107 additions & 0 deletions web/concrete/tools/users/bulk_group_add.php
@@ -0,0 +1,107 @@
<?php defined('C5_EXECUTE') or die("Access Denied.");
$searchInstance = $_REQUEST['searchInstance'];
if(!strlen($searchInstance)) {
$searchInstance = 'user';
}

$form = Loader::helper('form');
$ih = Loader::helper('concrete/interface');
$tp = new TaskPermission();
if (!$tp->canAccessUserSearch()) {
die(t("Access Denied."));
}

$users = array();
if (is_array($_REQUEST['uID'])) {
foreach($_REQUEST['uID'] as $uID) {
$ui = UserInfo::getByID($uID);
$users[] = $ui;
}
}

Loader::model('search/group');
$gl = new GroupSearch();
$gl->setItemsPerPage(-1);
$g1 = $gl->getPage();


if ($_POST['task'] == 'group_add') {
// build the group array
$groupIDs = $_REQUEST['groupIDs'];
$groups = array();
if(is_array($groupIDs) && count($groupIDs)) {
foreach($groupIDs as $gID) {
$groups[] = Group::getByID($gID);
}
}

foreach($users as $ui) {
if($ui instanceof UserInfo) {
$u = $ui->getUserObject();
foreach($groups as $g) {
if(!$u->inGroup($g)) { // avoid messing up group enter times
$u->enterGroup($g);
}
}
}
}
echo Loader::helper('json')->encode(array('error'=>false));
exit;
}

if (!isset($_REQUEST['reload'])) { ?>
<div id="ccm-user-bulk-group-add-wrapper">
<? } ?>

<div id="ccm-user-activate" class="ccm-ui">
<form method="post" id="ccm-user-bulk-group-add" action="<?php echo REL_DIR_FILES_TOOLS_REQUIRED ?>/users/bulk_group_add">
<fieldset class="form-stacked">
<?php
echo $form->hidden('task','group_add');
foreach($users as $ui) {
echo $form->hidden('uID[]' , $ui->getUserID());
}
?>
<div class="clearfix">
<?=$form->label('groupIDs', t('Add the users below to Group(s)'))?>
<div class="input">
<select multiple name="groupIDs[]" class="chosen-select" data-placeholder="<?php echo t('Select Group(s)');?>" >
<? foreach($g1 as $g) { ?>
<option value="<?=$g['gID']?>" <? if (is_array($_REQUEST['groupIDs']) && in_array($g['gID'], $_REQUEST['groupIDs'])) { ?> selected="selected" <? } ?>><?=$g['gName']?></option>
<? } ?>
</select>
</div>
</div>
</fieldset>

<?php Loader::element('users/confirm_list',array('users'=>$users)); ?>
</form>



</div>
<div class="dialog-buttons">
<?=$ih->button_js(t('Cancel'), 'jQuery.fn.dialog.closeTop()', 'left', 'btn')?>
<?=$ih->button_js(t('Save'), 'ccm_userBulkGroupAdd()', 'right', 'btn primary')?>
</div>
<?
if (!isset($_REQUEST['reload'])) { ?>
</div>
<? } ?>

<script type="text/javascript">
ccm_userBulkGroupAdd = function() {
$("#ccm-user-bulk-group-add").ajaxSubmit(function(resp) {
jQuery.fn.dialog.closeTop();
jQuery.fn.dialog.hideLoader();
ccm_deactivateSearchResults('<?=$searchInstance?>');
ccmAlert.hud(ccmi18n.saveUserSettingsMsg, 2000, 'success', ccmi18n.user_group_add);
$("#ccm-<?=$searchInstance?>-advanced-search").ajaxSubmit(function(r) {
ccm_parseAdvancedSearchResponse(r, '<?=$searchInstance?>');
});
});
};
$(function() {
$(".chosen-select").chosen();
});
</script>

0 comments on commit feff53e

Please sign in to comment.