Author: jfthomps
Date: Wed Nov 12 19:54:36 2014
New Revision: 1639017

URL: http://svn.apache.org/r1639017
Log:
VCL-655 - Manage groups - create a default or none user group

utils.php: modified sendHeaders: added section that sets a cookie for modes 
submitAddGroup or submitEditGroup named VCLOWNERGROUPID or VCLEDITGROUPID 
depending on whether a user group or a resource group was added

groups.php:
-modified editOrAddGroup: for user groups, set default "editable by" group to 
either what is saved in user's cookie from previous selection or to default 
owning user group "Default for Editable by"; for resource groups, set default 
"owning group" to what is saved in user's cookie from previous selection; added 
'Default for Editable by' to list of "system" groups that cannot be renamed; 
added displaying error to user if specified owning group not available to user
-modified processGroupInput: added editgroupids and ownergroupids to returned 
data; added checking that submitted edit group or owning group in allowed list 
for user
-modified confirmDeleteGroup: added 'Default for Editable by' to list of 
"system" groups that cannot be deleted

Modified:
    vcl/trunk/web/.ht-inc/groups.php
    vcl/trunk/web/.ht-inc/utils.php

Modified: vcl/trunk/web/.ht-inc/groups.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/groups.php?rev=1639017&r1=1639016&r2=1639017&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/groups.php (original)
+++ vcl/trunk/web/.ht-inc/groups.php Wed Nov 12 19:54:36 2014
@@ -483,6 +483,7 @@ function editOrAddGroup($state) {
                $affilusergroups = $allcustomgroups;
        else
                $affilusergroups = getUserGroups(1, $user['affiliationid']);
+       $defaultusergroupid = getUserGroupID('Default for Editable by', 1);
 
        if($type == 'resource') {
                $dispUserGrpIDs = array();
@@ -551,20 +552,21 @@ function editOrAddGroup($state) {
                                $data["name"] = '';
                                $data["affiliationid"] = $user['affiliationid'];
                                $data["owner"] = $user['unityid'];
-                               $data["editgroupid"] = '';
-                               if(count($affilusergroups)) {
-                                       $tmp = array_keys($affilusergroups);
-                                       if(preg_match('/^\s*None/', 
$affilusergroups[$tmp[0]]['name'])) {
-                                               if(array_key_exists(1, $tmp))
-                                                       $data['editgroupid'] = 
$tmp[1];
-                                               else
-                                                       $data['editgroupid'] = 
0;
+                               if(array_key_exists('VCLEDITGROUPID', $_COOKIE) 
&&
+                                  
(array_key_exists($_COOKIE['VCLEDITGROUPID'], $affilusergroups) ||
+                                  $_COOKIE['VCLEDITGROUPID'] == 
$defaultusergroupid))
+                                       $data["editgroupid"] = 
$_COOKIE['VCLEDITGROUPID'];
+                               else
+                                       $data["editgroupid"] = 
$defaultusergroupid;
+                               if(! array_key_exists($data['editgroupid'], 
$affilusergroups)) {
+                                       if($user['showallgroups']) {
+                                               $affil = getAffiliationName(1);
+                                               
$affilusergroups[$data['editgroupid']]['name'] = "Default for Editable 
by@$affil";
                                        }
                                        else
-                                               $data['editgroupid'] = $tmp[0];
+                                               
$affilusergroups[$data['editgroupid']]['name'] = 'Default for Editable by';
                                }
-                               else
-                                       $data['editgroupid'] = 0;
+
                                $data["initialmax"] = 240;
                                $data["totalmax"] = 360;
                                $data["maxextend"] = 30;
@@ -599,14 +601,20 @@ function editOrAddGroup($state) {
                        }
                }
                else {
+                       unset($affilusergroups[$defaultusergroupid]);
                        if($state) {
                                $grouptype = 'computer';
                                $data['name'] = '';
-                               $ownerid = "";
-                               foreach(array_keys($user["groups"]) as $grpid) {
-                                       if(array_key_exists($grpid, 
$dispUserGrpIDs)) {
-                                               $ownerid = $grpid;
-                                               break;
+                               if(array_key_exists('VCLOWNERGROUPID', 
$_COOKIE) &&
+                                  
array_key_exists($_COOKIE['VCLOWNERGROUPID'], $user['groups']))
+                                       $ownerid = $_COOKIE['VCLOWNERGROUPID'];
+                               else {
+                                       $ownerid = "";
+                                       foreach(array_keys($user["groups"]) as 
$grpid) {
+                                               if(array_key_exists($grpid, 
$dispUserGrpIDs)) {
+                                                       $ownerid = $grpid;
+                                                       break;
+                                               }
                                        }
                                }
                        }
@@ -667,7 +675,8 @@ function editOrAddGroup($state) {
                   $usergroups[$groupid]['groupaffiliationid'] == 1) {
                        $tmp = explode('@', $usergroups[$groupid]['name']);
                        if($tmp[0] == 'Specify End Time' ||
-                               $tmp[0] == 'Allow No User Check')
+                               $tmp[0] == 'Allow No User Check' ||
+                               $tmp[0] == 'Default for Editable by')
                                $editname = 0;
                }
                if($data['type'] == 'resource' ||
@@ -793,7 +802,10 @@ function editOrAddGroup($state) {
                        print "  <TR>\n";
                        print "    <TH align=right>Owning User Group:</TH>\n";
                        print "    <TD>\n";
-                       if($ownerid != '' && ! array_key_exists($ownerid, 
$dispUserGrpIDs)) {
+                       if($submitErr & EDITGROUPERR)
+                               $ownerid = $resourcegroups[$groupid]['ownerid'];
+                       if($state == 0 && $ownerid != '' &&
+                          ! 
array_key_exists($usergroups[$groupid]['editgroupid'], $dispUserGrpIDs)) {
                                $dispUserGrpIDs[$ownerid] = 
$usergroups[$ownerid]['name'];
                                uasort($dispUserGrpIDs, "sortKeepIndex");
                        }
@@ -802,7 +814,10 @@ function editOrAddGroup($state) {
                        else
                                printSelectInput("ownergroup", 
$dispUserGrpIDsAllAffils, $ownerid);
                        print "    </TD>\n";
-                       print "    <TD></TD>\n";
+                       print "    <TD>\n";
+                       if($submitErr & EDITGROUPERR)
+                               printSubmitErr(EDITGROUPERR);
+                       print "    </TD>\n";
                        print "  </TR>\n";
                }
                print "</TABLE>\n";
@@ -817,6 +832,13 @@ function editOrAddGroup($state) {
                                        $cdata['editgroupid'] = 0;
                                        $cdata['groupwasnone'] = 1;
                                }
+                               $cdata['editgroupids'] = implode(',', 
array_keys($affilusergroups));
+                       }
+                       else {
+                               if(! empty($dispUserGrpIDs))
+                                       $cdata['ownergroupids'] = implode(',', 
array_keys($dispUserGrpIDs));
+                               else
+                                       $cdata['ownergroupids'] = implode(',', 
array_keys($dispUserGrpIDsAllAffils));
                        }
                        $cont = addContinuationsEntry('submitAddGroup', $cdata);
                        print "      <INPUT type=hidden name=continuation 
value=\"$cont\">\n";
@@ -827,8 +849,13 @@ function editOrAddGroup($state) {
                                       'groupid' => $data['groupid'],
                                       'isowner' => $data['isowner'],
                                       'editname' => $editname);
-                       if($data['type'] == 'resource')
+                       if($data['type'] == 'resource') {
                                $cdata['resourcetypeid'] = $resourcetypeid;
+                               if(! empty($dispUserGrpIDs))
+                                       $cdata['ownergroupids'] = implode(',', 
array_keys($dispUserGrpIDs));
+                               else
+                                       $cdata['ownergroupids'] = implode(',', 
array_keys($dispUserGrpIDsAllAffils));
+                       }
                        else {
                                if($data['courseroll'] == 1 || $data['custom'] 
== 0 || $editname == 0) {
                                        $cdata['name'] = $data['name'];
@@ -838,6 +865,7 @@ function editOrAddGroup($state) {
                                $cdata['groupwasnone'] = $groupwasnone;
                                $cdata['custom'] = $data['custom'];
                                $cdata['courseroll'] = $data['courseroll'];
+                               $cdata['editgroupids'] = implode(',', 
array_keys($affilusergroups));
                        }
                        $cont = addContinuationsEntry('confirmEditGroup', 
$cdata);
                        print "      <INPUT type=hidden name=continuation 
value=\"$cont\">\n";
@@ -948,6 +976,10 @@ function processGroupInput($checks=1) {
        $return["totalmax"] = getContinuationVar('totalmax', 
processInputVar("totalmax", ARG_NUMERIC));
        $return["maxextend"] = getContinuationVar('maxextend', 
processInputVar("maxextend", ARG_NUMERIC));
        $return["overlap"] = getContinuationVar('overlap', 
processInputVar("overlap", ARG_NUMERIC, 0));
+       $return['editgroupids'] = getContinuationVar('editgroupids');
+       $editgroupids = explode(',', $return['editgroupids']);
+       $return['ownergroupids'] = getContinuationVar('ownergroupids');
+       $ownergroupids = explode(',', $return['ownergroupids']);
        $groupwasnone = getContinuationVar('groupwasnone');
        $editname = getContinuationVar('editname', 1);
 
@@ -991,7 +1023,10 @@ function processGroupInput($checks=1) {
                $submitErr |= GRPOWNER;
           $submitErrMsg[GRPOWNER] = "Submitted ID is not valid";
        }
-       if($return["type"] == "user" && $return['editgroupid'] == 0 && ! 
$groupwasnone) {
+       if(($return["type"] == "user" &&
+               (($return['editgroupid'] == 0 && ! $groupwasnone) ||
+          (! in_array($return['editgroupid'], $editgroupids)))) ||
+          ($return['type'] == 'resource' && ! in_array($return['ownergroup'], 
$ownergroupids))) {
                $submitErr |= EDITGROUPERR;
                $submitErrMsg[EDITGROUPERR] = "Invalid group was selected";
        }
@@ -1553,7 +1588,8 @@ function confirmDeleteGroup() {
                $checkname = $tmp[0];
                if($usergroups[$groupid]['groupaffiliationid'] == 1 &&
                   ($checkname == 'Specify End Time' ||
-                  $checkname == 'Allow No User Check')) {
+                  $checkname == 'Allow No User Check' ||
+                  $checkname == 'Default for Editable by')) {
                        print "<h2>Delete User Group</h2>\n";
                        print "{$usergroups[$groupid]['name']} is a system 
group that cannot be deleted";
                        return;

Modified: vcl/trunk/web/.ht-inc/utils.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/utils.php?rev=1639017&r1=1639016&r2=1639017&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/utils.php (original)
+++ vcl/trunk/web/.ht-inc/utils.php Wed Nov 12 19:54:36 2014
@@ -12429,6 +12429,28 @@ function sendHeaders() {
        }
        else
                header("Cache-Control: no-cache, must-revalidate");
+       if($mode == 'submitAddGroup' || $mode == 'submitEditGroup') {
+               $data = getContinuationVar();
+               if($data['type'] == 'resource') {
+                       if(! array_key_exists('ownergroup', $data))
+                               $data['ownergroup'] = 
processInputVar('ownergroup', ARG_NUMERIC, 0);
+                       $ownergroupids = explode(',', $data['ownergroupids']);
+                  if(in_array($data['ownergroup'], $ownergroupids) &&
+                     array_key_exists($data['ownergroup'], $user['groups'])) {
+                               $expire = time() + 31536000; //expire in 1 year
+                               setcookie("VCLOWNERGROUPID", 
$data['ownergroup'], $expire, "/", COOKIEDOMAIN);
+                       }
+               }
+               elseif($data['type'] == 'user') {
+                       if(! array_key_exists('editgroupid', $data))
+                               $data['editgroupid'] = 
processInputVar('editgroupid', ARG_NUMERIC, 0);
+                       $editgroupids = explode(',', $data['editgroupids']);
+                       if(in_array($data['editgroupid'], $editgroupids)) {
+                               $expire = time() + 31536000; //expire in 1 year
+                               setcookie("VCLEDITGROUPID", 
$data['editgroupid'], $expire, "/", COOKIEDOMAIN);
+                       }
+               }
+       }
        header("Expires: Sat, 1 Jan 2000 00:00:00 GMT");
 }
 


Reply via email to