Author: jfthomps Date: Thu Oct 28 14:54:17 2010 New Revision: 1028338 URL: http://svn.apache.org/viewvc?rev=1028338&view=rev Log: VCL-401 add manageMapping resource attribute to control resource mapping
utils.php: added getResourcePrivs managementnodes.php: -modified these functions to look at manageMapping attribute instead of manageGroup for mapping privileges: -selectMgmtnodeOption, viewMgmtnodeMapping, submitMgmtnodeMapping images.php: -modified these functions to look at manageMapping attribute instead of manageGroup for mapping privileges: -selectImageOption, viewImageMapping, imageMappingGrid, submitImageMapping, jsonImageMapCompGroups, jsonImageMapImgGroups, AJaddCompGrpToImgGrp, AJremCompGrpFromImgGrp, AJaddImgGrpToCompGrp, and AJremImgGrpFromCompGrp -converted all references to json-comment-filtered to just json and to use sendJSON function privileges.php: -modified viewNodes: -instead of hardcoding resource types, call getResourcePrivs to get them -call getResourcePrivRowHTML instead of printResourcePrivRow and then print the returned HTML and JS -for add resource dialog, loop through resource privs to print checkboxes instead of printing them all directly -modified selectNode: -instead of hardcoding resource types, call getResourcePrivs to get them -due to combining printResourcePrivRow and getResourcePrivRowHTML, needed to add a few str_replace's to prepare html for sending in ajax response -combined printResourcePrivRow and getResourcePrivRowHTML -modified getResourcePrivRowHTML: -added newlines -added manageMapping to checkboxes that don't get printed if don't have proper rights -added check to not print available checkbox for schedule and management node groups -added check to not print manageMapping for schedule groups -removed preg_replace for single quote; moved replacing them to selectNode -modified AJsubmitAddResoucePriv to get resource types from getResourcePrivs instead of hard coding them js/images.js: converted all references to json-comment-filtered to just json Modified: incubator/vcl/trunk/web/.ht-inc/images.php incubator/vcl/trunk/web/.ht-inc/managementnodes.php incubator/vcl/trunk/web/.ht-inc/privileges.php incubator/vcl/trunk/web/.ht-inc/utils.php incubator/vcl/trunk/web/js/images.js Modified: incubator/vcl/trunk/web/.ht-inc/images.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/images.php?rev=1028338&r1=1028337&r2=1028338&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/images.php (original) +++ incubator/vcl/trunk/web/.ht-inc/images.php Thu Oct 28 14:54:17 2010 @@ -60,9 +60,11 @@ function selectImageOption() { $tmp = getUserResources(array("imageAdmin"), array("manageGroup"), 1); $imgGroupCnt = count($tmp['image']); - # get a count of computer groups user can manage - $tmp = getUserResources(array("computerAdmin"), array("manageGroup"), 1); - $compGroupCnt = count($tmp['computer']); + # get a count of image groups and computer groups user can map + $tmp = getUserResources(array("imageAdmin"), array("manageMapping"), 1); + $imgMapCnt = count($tmp['image']); + $tmp = getUserResources(array("computerAdmin"), array("manageMapping"), 1); + $compMapCnt = count($tmp['computer']); print "<H2>Manage Images</H2>\n"; print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n"; @@ -78,12 +80,12 @@ function selectImageOption() { $cont = addContinuationsEntry('viewImageGrouping'); print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; print "Image Grouping<br>\n"; + } - if($compGroupCnt) { - $cont = addContinuationsEntry('viewImageMapping'); - print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; - print "Image Mapping<br>\n"; - } + if($imgMapCnt && $compMapCnt) { + $cont = addContinuationsEntry('viewImageMapping'); + print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; + print "Image Mapping<br>\n"; } if($imgCnt) { @@ -448,12 +450,12 @@ function imageGroupingGrid() { function viewImageMapping() { global $mode; $tmp = getUserResources(array("imageAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $imagegroups = $tmp["image"]; uasort($imagegroups, "sortKeepIndex"); $imagecompmapping = getResourceMapping("image", "computer"); $resources = getUserResources(array("computerAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $compgroups = $resources["computer"]; uasort($compgroups, "sortKeepIndex"); if(! count($imagegroups) || ! count($compgroups)) { @@ -535,10 +537,7 @@ function viewImageMapping() { print "button to map it to that group.<br><br>\n"; print "Computer Group:<select name=compgroups id=compgroups>\n"; # build list of groups - $tmp = getUserResources(array('computerAdmin'), array('manageGroup'), 1); - $groups = $tmp['computer']; - uasort($groups, 'sortKeepIndex'); - foreach($groups as $id => $group) { + foreach($compgroups as $id => $group) { print "<option value=$id>$group</option>\n"; } print "</select>\n"; @@ -612,12 +611,12 @@ function viewImageMapping() { function imageMappingGrid() { global $mode; $tmp = getUserResources(array("imageAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $imagegroups = $tmp["image"]; uasort($imagegroups, "sortKeepIndex"); $imagecompmapping = getResourceMapping("image", "computer"); $resources2 = getUserResources(array("computerAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $compgroups = $resources2["computer"]; uasort($compgroups, "sortKeepIndex"); @@ -2312,10 +2311,10 @@ function submitImageMapping() { # build an array of memberships currently in the db $tmp = getUserResources(array("imageAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $imagegroups = $tmp["image"]; $tmp = getUserResources(array("computerAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $compgroups = $tmp["computer"]; $imageinlist = implode(',', array_keys($imagegroups)); $compinlist = implode(',', array_keys($compgroups)); @@ -2904,8 +2903,7 @@ function jsonImageGroupingImages() { $groups = getUserResources(array("imageAdmin"), array("manageGroup"), 1); if(! array_key_exists($groupid, $groups['image'])) { $arr = array('inimages' => array(), 'outimages' => array(), 'all' => array()); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } @@ -2929,7 +2927,7 @@ function jsonImageGroupingImages() { } } $arr = array('inimages' => $in, 'outimages' => $out, 'all' => $all); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -2946,8 +2944,7 @@ function jsonImageGroupingGroups() { $resources = getUserResources(array("imageAdmin"), array("manageGroup")); if(! array_key_exists($imageid, $resources['image'])) { $arr = array('ingroups' => array(), 'outgroups' => array(), 'all' => array()); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $groups = getUserResources(array('imageAdmin'), array('manageGroup'), 1); @@ -2967,7 +2964,7 @@ function jsonImageGroupingGroups() { } } $arr = array('ingroups' => $in, 'outgroups' => $out, 'all' => $all); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -2982,14 +2979,13 @@ function jsonImageGroupingGroups() { //////////////////////////////////////////////////////////////////////////////// function jsonImageMapCompGroups() { $imagegrpid = processInputVar('imagegrpid', ARG_NUMERIC); - $resources = getUserResources(array("imageAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("imageAdmin"), array("manageMapping"), 1); if(! array_key_exists($imagegrpid, $resources['image'])) { $arr = array('ingroups' => array(), 'outgroups' => array(), 'all' => array()); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $compgroups = getUserResources(array('computerAdmin'), array('manageGroup'), 1); + $compgroups = getUserResources(array('computerAdmin'), array('manageMapping'), 1); $mapping = getResourceMapping('image', 'computer'); $in = array(); $out = array(); @@ -3006,7 +3002,7 @@ function jsonImageMapCompGroups() { } } $arr = array('ingroups' => $in, 'outgroups' => $out, 'all' => $all); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3021,14 +3017,13 @@ function jsonImageMapCompGroups() { //////////////////////////////////////////////////////////////////////////////// function jsonImageMapImgGroups() { $compgrpid = processInputVar('compgrpid', ARG_NUMERIC); - $resources = getUserResources(array("computerAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("computerAdmin"), array("manageMapping"), 1); if(! array_key_exists($compgrpid, $resources['computer'])) { $arr = array('ingroups' => array(), 'outgroups' => array(), 'all' => array()); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $imagegroups = getUserResources(array('imageAdmin'), array('manageGroup'), 1); + $imagegroups = getUserResources(array('imageAdmin'), array('manageMapping'), 1); $mapping = getResourceMapping('computer', 'image'); $in = array(); $out = array(); @@ -3045,7 +3040,7 @@ function jsonImageMapImgGroups() { } } $arr = array('ingroups' => $in, 'outgroups' => $out, 'all' => $all); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3062,8 +3057,7 @@ function AJaddImageToGroup() { $groups = getUserResources(array("imageAdmin"), array("manageGroup"), 1); if(! array_key_exists($groupid, $groups['image'])) { $arr = array('images' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } @@ -3076,8 +3070,7 @@ function AJaddImageToGroup() { continue; if(! array_key_exists($id, $resources['image'])) { $arr = array('images' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $imageids[] = $id; @@ -3094,8 +3087,7 @@ function AJaddImageToGroup() { doQuery($query, 287); $_SESSION['userresources'] = array(); $arr = array('images' => $imageids, 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3112,8 +3104,7 @@ function AJremImageFromGroup() { $groups = getUserResources(array("imageAdmin"), array("manageGroup"), 1); if(! array_key_exists($groupid, $groups['image'])) { $arr = array('images' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } @@ -3126,8 +3117,7 @@ function AJremImageFromGroup() { continue; if(! array_key_exists($id, $resources['image'])) { $arr = array('images' => array(), 'addrem' => 0, 'id' => $id, 'extra' => $resources['image']); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $imageids[] = $id; @@ -3142,8 +3132,7 @@ function AJremImageFromGroup() { } $_SESSION['userresources'] = array(); $arr = array('images' => $imageids, 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3160,8 +3149,7 @@ function AJaddGroupToImage() { $resources = getUserResources(array("imageAdmin"), array("manageGroup")); if(! array_key_exists($imageid, $resources['image'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } @@ -3174,8 +3162,7 @@ function AJaddGroupToImage() { continue; if(! array_key_exists($id, $groups['image'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $groupids[] = $id; @@ -3192,8 +3179,7 @@ function AJaddGroupToImage() { doQuery($query, 101); $_SESSION['userresources'] = array(); $arr = array('groups' => $groupids, 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3210,8 +3196,7 @@ function AJremGroupFromImage() { $resources = getUserResources(array("imageAdmin"), array("manageGroup")); if(! array_key_exists($imageid, $resources['image'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } @@ -3224,8 +3209,7 @@ function AJremGroupFromImage() { continue; if(! array_key_exists($id, $groups['image'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $groupids[] = $id; @@ -3240,8 +3224,7 @@ function AJremGroupFromImage() { } $_SESSION['userresources'] = array(); $arr = array('groups' => $groupids, 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3255,15 +3238,14 @@ function AJremGroupFromImage() { //////////////////////////////////////////////////////////////////////////////// function AJaddCompGrpToImgGrp() { $imagegrpid = processInputVar('id', ARG_NUMERIC); - $resources = getUserResources(array("imageAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("imageAdmin"), array("manageMapping"), 1); if(! array_key_exists($imagegrpid, $resources['image'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $compgroups = getUserResources(array("computerAdmin"), array("manageGroup"), 1); + $compgroups = getUserResources(array("computerAdmin"), array("manageMapping"), 1); $tmp = processInputVar('listids', ARG_STRING); $tmp = explode(',', $tmp); $compgroupids = array(); @@ -3272,8 +3254,7 @@ function AJaddCompGrpToImgGrp() { continue; if(! array_key_exists($id, $compgroups['computer'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $compgroupids[] = $id; @@ -3289,8 +3270,7 @@ function AJaddCompGrpToImgGrp() { doQuery($query, 101); $_SESSION['userresources'] = array(); $arr = array('groups' => $compgroupids, 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3304,15 +3284,14 @@ function AJaddCompGrpToImgGrp() { //////////////////////////////////////////////////////////////////////////////// function AJremCompGrpFromImgGrp() { $imagegrpid = processInputVar('id', ARG_NUMERIC); - $resources = getUserResources(array("imageAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("imageAdmin"), array("manageMapping"), 1); if(! array_key_exists($imagegrpid, $resources['image'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $compgroups = getUserResources(array("computerAdmin"), array("manageGroup"), 1); + $compgroups = getUserResources(array("computerAdmin"), array("manageMapping"), 1); $tmp = processInputVar('listids', ARG_STRING); $tmp = explode(',', $tmp); $compgroupids = array(); @@ -3321,8 +3300,7 @@ function AJremCompGrpFromImgGrp() { continue; if(! array_key_exists($id, $compgroups['computer'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $compgroupids[] = $id; @@ -3338,8 +3316,7 @@ function AJremCompGrpFromImgGrp() { } $_SESSION['userresources'] = array(); $arr = array('groups' => $compgroupids, 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3353,15 +3330,14 @@ function AJremCompGrpFromImgGrp() { //////////////////////////////////////////////////////////////////////////////// function AJaddImgGrpToCompGrp() { $compgrpid = processInputVar('id', ARG_NUMERIC); - $resources = getUserResources(array("computerAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("computerAdmin"), array("manageMapping"), 1); if(! array_key_exists($compgrpid, $resources['computer'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $imagegroups = getUserResources(array("imageAdmin"), array("manageGroup"), 1); + $imagegroups = getUserResources(array("imageAdmin"), array("manageMapping"), 1); $tmp = processInputVar('listids', ARG_STRING); $tmp = explode(',', $tmp); $imagegroupids = array(); @@ -3370,8 +3346,7 @@ function AJaddImgGrpToCompGrp() { continue; if(! array_key_exists($id, $imagegroups['image'])) { $arr = array('groups' => array(), 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $imagegroupids[] = $id; @@ -3387,8 +3362,7 @@ function AJaddImgGrpToCompGrp() { doQuery($query, 101); $_SESSION['userresources'] = array(); $arr = array('groups' => $imagegroupids, 'addrem' => 1); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3402,15 +3376,14 @@ function AJaddImgGrpToCompGrp() { //////////////////////////////////////////////////////////////////////////////// function AJremImgGrpFromCompGrp() { $compgrpid = processInputVar('id', ARG_NUMERIC); - $resources = getUserResources(array("computerAdmin"), array("manageGroup"), 1); + $resources = getUserResources(array("computerAdmin"), array("manageMapping"), 1); if(! array_key_exists($compgrpid, $resources['computer'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } - $imagegroups = getUserResources(array("imageAdmin"), array("manageGroup"), 1); + $imagegroups = getUserResources(array("imageAdmin"), array("manageMapping"), 1); $tmp = processInputVar('listids', ARG_STRING); $tmp = explode(',', $tmp); $imagegroupids = array(); @@ -3419,8 +3392,7 @@ function AJremImgGrpFromCompGrp() { continue; if(! array_key_exists($id, $imagegroups['image'])) { $arr = array('groups' => array(), 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); return; } $imagegroupids[] = $id; @@ -3436,8 +3408,7 @@ function AJremImgGrpFromCompGrp() { } $_SESSION['userresources'] = array(); $arr = array('groups' => $imagegroupids, 'addrem' => 0); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3480,8 +3451,7 @@ function AJupdateRevisionComments() { . "WHERE id = $revisionid"; doQuery($query, 101); $arr = array('comments' => $comments, 'id' => $revisionid); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } //////////////////////////////////////////////////////////////////////////////// @@ -3498,8 +3468,7 @@ function AJdeleteRevisions() { $ids = explode(',', $checkedids); foreach($ids as $id) { if(! is_numeric($id) || ! in_array($id, $revids)) { - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode(array()) . '}*/'; + sendJSON(array()); return; } } @@ -3510,8 +3479,7 @@ function AJdeleteRevisions() { doQuery($query, 101); $html = getRevisionHTML($imageid); $arr = array('html' => $html); - header('Content-Type: text/json-comment-filtered; charset=utf-8'); - print '/*{"items":' . json_encode($arr) . '}*/'; + sendJSON($arr); } ?> Modified: incubator/vcl/trunk/web/.ht-inc/managementnodes.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/managementnodes.php?rev=1028338&r1=1028337&r2=1028338&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/managementnodes.php (original) +++ incubator/vcl/trunk/web/.ht-inc/managementnodes.php Thu Oct 28 14:54:17 2010 @@ -75,9 +75,11 @@ function selectMgmtnodeOption() { $tmp = getUserResources(array("mgmtNodeAdmin"), array("manageGroup"), 1); $mnGroupCnt = count($tmp['managementnode']); - # get a count of computer groups user can manage - $tmp = getUserResources(array("computerAdmin"), array("manageGroup"), 1); - $compGroupCnt = count($tmp['computer']); + # get a count of mgmt node and computer groups user can manage + $tmp = getUserResources(array("mgmtNodeAdmin"), array("manageMapping"), 1); + $mnMapCnt = count($tmp['managementnode']); + $tmp = getUserResources(array("computerAdmin"), array("manageMapping"), 1); + $compMapCnt = count($tmp['computer']); print "<H2>Manage Management Nodes</H2>\n"; print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n"; @@ -90,13 +92,13 @@ function selectMgmtnodeOption() { $cont = addContinuationsEntry('viewMgmtnodeGrouping'); print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; print "Management Node Grouping<br>\n"; - if($compGroupCnt) { - $cont = addContinuationsEntry('viewMgmtnodeMapping'); - print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; - print "Management Node Mapping<br>\n"; - } } - if($mnAdminCnt || $mnGroupCnt) + if($mnMapCnt && $compMapCnt) { + $cont = addContinuationsEntry('viewMgmtnodeMapping'); + print "<INPUT type=radio name=continuation value=\"$cont\">Edit "; + print "Management Node Mapping<br>\n"; + } + if($mnAdminCnt || $mnGroupCnt || ($mnMapCnt && $compMapCnt)) print "<INPUT type=submit value=Submit>\n"; else { print "You do not have access to manage any management nodes.<br>\n"; @@ -992,12 +994,12 @@ function viewMgmtnodeMapping($mngroups=0 global $mode; if(! is_array($mngroups)) { $tmp = getUserResources(array("mgmtNodeAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $mngroups = $tmp["managementnode"]; } $mapping = getResourceMapping("managementnode", "computer"); $resources2 = getUserResources(array("computerAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $compgroups = $resources2["computer"]; uasort($compgroups, "sortKeepIndex"); @@ -1073,10 +1075,10 @@ function submitMgmtnodeMapping() { # build an array of memberships currently in the db $tmp = getUserResources(array("mgmtNodeAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $mngroups = $tmp["managementnode"]; $tmp = getUserResources(array("computerAdmin"), - array("manageGroup"), 1); + array("manageMapping"), 1); $compgroups = $tmp["computer"]; $mninlist = implode(',', array_keys($mngroups)); $compinlist = implode(',', array_keys($compgroups)); Modified: incubator/vcl/trunk/web/.ht-inc/privileges.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/privileges.php?rev=1028338&r1=1028337&r2=1028338&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/privileges.php (original) +++ incubator/vcl/trunk/web/.ht-inc/privileges.php Thu Oct 28 14:54:17 2010 @@ -240,7 +240,7 @@ function viewNodes() { print "</div>\n"; # resources - $resourcetypes = array("available", "administer", "manageGroup"); + $resourcetypes = getResourcePrivs(); print "<A name=\"resources\"></a>\n"; print "<div id=resourcesDiv>\n"; print "<H3>Resources</H3>\n"; @@ -253,6 +253,8 @@ function viewNodes() { print " <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n"; print " <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n"; foreach($resourcetypes as $type) { + if($type == 'block' || $type == 'cascade') + continue; $img = getImageText("$type"); print " <TH>$img</TH>\n"; } @@ -263,9 +265,14 @@ function viewNodes() { $resourcegroups = getResourceGroups(); $resgroupmembers = getResourceGroupMembers(); foreach($resources as $resource) { - printResourcePrivRow($resource, $i, $privs["resources"], $resourcetypes, - $resourcegroups, $resgroupmembers, - $cascadePrivs["resources"], ! $hasResourceGrant); + $data = getResourcePrivRowHTML($resource, $i, $privs["resources"], + $resourcetypes, $resourcegroups, + $resgroupmembers, $cascadePrivs["resources"], + ! $hasResourceGrant); + print $data['html']; + print "<script language=\"Javascript\">\n"; + print "dojo.addOnLoad(function () {setTimeout(\"{$data['javascript']}\", 500)});\n"; + print "</script>\n"; $i++; } print "</TABLE>\n"; @@ -445,8 +452,9 @@ function viewNodes() { print " <TD></TD>\n"; print " <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n"; print " <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n"; - $resourcetypes = array("available", "administer", "manageGroup"); foreach($resourcetypes as $type) { + if($type == 'block' || $type == 'cascade') + continue; $img = getImageText("$type"); print " <TH>$img</TH>\n"; } @@ -474,12 +482,14 @@ function viewNodes() { print "name=cascaderesgrp></TD>\n"; # normal rights - print " <TD align=center id=resgrpcell0:1><INPUT type=checkbox "; - print "dojoType=dijit.form.CheckBox name=available id=resgrpck0:1></TD>\n"; - print " <TD align=center id=resgrpcell0:2><INPUT type=checkbox "; - print "dojoType=dijit.form.CheckBox name=administer id=resgrpck0:2></TD>\n"; - print " <TD align=center id=resgrpcell0:3><INPUT type=checkbox "; - print "dojoType=dijit.form.CheckBox name=manageGroup id=resgrpck0:3></TD>\n"; + $i = 1; + foreach($resourcetypes as $type) { + if($type == 'block' || $type == 'cascade') + continue; + print " <TD align=center id=resgrpcell0:$i><INPUT type=checkbox "; + print "dojoType=dijit.form.CheckBox name=$type id=resgrpck0:$i></TD>\n"; + $i++; + } print " </TR>\n"; print "</TABLE>\n"; print "<div id=addResourceGroupPrivStatus></div>\n"; @@ -796,7 +806,7 @@ function selectNode() { # resources $text = ""; - $resourcetypes = array("available", "administer", "manageGroup"); + $resourcetypes = getResourcePrivs(); $text .= "<H3>Resources</H3>"; $text .= "<FORM id=resourceForm action=\"" . BASEURL . SCRIPT . "#resources\" method=post>"; if(count($privs["resources"]) || count($cascadePrivs["resources"])) { @@ -807,6 +817,8 @@ function selectNode() { $text .= " <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>"; $text .= " <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>"; foreach($resourcetypes as $type) { + if($type == 'block' || $type == 'cascade') + continue; $img = getImageText("$type"); $text .= " <TH>$img</TH>"; } @@ -820,7 +832,10 @@ function selectNode() { $tmpArr = getResourcePrivRowHTML($resource, $i, $privs["resources"], $resourcetypes, $resourcegroups, $resgroupmembers, $cascadePrivs["resources"], ! $hasResourceGrant); - $text .= $tmpArr['html']; + $html = str_replace("\n", '', $tmpArr['html']); + $html = str_replace("'", "\'", $html); + $html = preg_replace("/>\s*</", "><", $html); + $text .= $html; $js .= $tmpArr['javascript']; $i++; } @@ -1657,122 +1672,6 @@ function jsonGetUserGroupMembers() { //////////////////////////////////////////////////////////////////////////////// /// -/// \fn printResourcePrivRow($privname, $rownum, $privs, $types, -/// $resourcegroups, $resgroupmembers, $cascadeprivs, -/// $disabled) -/// -/// \param $privname - privilege name -/// \param $rownum - number of the privilege row on this page -/// \param $privs - an array of user's privileges -/// \param $types - an array of privilege types -/// \param $resourcegroups - array from getResourceGroups() -/// \param $resgroupmembers - array from getResourceGroupMembers() -/// \param $cascadeprivs - an array of user's cascaded privileges -/// \param $disabled - 0 or 1; whether or not the checkboxes should be disabled -/// -/// \brief prints a table row for this $privname -/// -//////////////////////////////////////////////////////////////////////////////// -function printResourcePrivRow($privname, $rownum, $privs, $types, - $resourcegroups, $resgroupmembers, $cascadeprivs, - $disabled) { - global $user; - print " <TR>\n"; - list($type, $name, $id) = explode('/', $privname); - print " <TH>\n"; - print " <span id=\"resgrp$id\" onmouseover=getGroupMembers(\"$id\","; - print "\"resgrp$id\",\"rgmcont\"); onmouseout=getGroupMembersCancel"; - print "(\"resgrp$id\");>$name</span>\n"; - print " </TH>\n"; - print " <TH>$type</TH>\n"; - - if($disabled) - $disabled = 'disabled=disabled'; - else - $disabled = ''; - - # block rights - if(array_key_exists($privname, $privs) && - in_array("block", $privs[$privname])) { - $checked = "checked"; - $blocked = 1; - } - else { - $checked = ""; - $blocked = 0; - } - $count = count($types) + 1; - $name = "privrow[" . $privname . ":block]"; - print " <TD align=center bgcolor=gray><INPUT type=checkbox "; - print "dojoType=dijit.form.CheckBox id=ck$rownum:block name=\"$name\" "; - print "$checked $disabled onClick=\""; - print "changeCascadedRights(this.checked, $rownum, $count, 1, 3)\"></TD>\n"; - - #cascade rights - if(array_key_exists($privname, $privs) && - in_array("cascade", $privs[$privname])) - $checked = "checked"; - else - $checked = ""; - $name = "privrow[" . $privname . ":cascade]"; - print " <TD align=center bgcolor=\"#008000\" id=cell$rownum:0>"; - print "<INPUT type=checkbox dojoType=dijit.form.CheckBox id=ck$rownum:0 "; - print "onClick=\"privChange(this.checked, $rownum, 0, 3);\" "; - print "name=\"$name\" $checked $disabled></TD>\n"; - - # normal rights - $j = 1; - foreach($types as $type) { - $bgcolor = ""; - $checked = ""; - $value = ""; - $cascaded = 0; - if(array_key_exists($privname, $cascadeprivs) && - in_array($type, $cascadeprivs[$privname])) { - $bgcolor = "bgcolor=\"#008000\""; - $checked = "checked"; - $value = "value=cascade"; - $cascaded = 1; - } - if(array_key_exists($privname, $privs) && - in_array($type, $privs[$privname])) { - if($cascaded) { - $value = "value=cascadesingle"; - } - else { - $checked = "checked"; - $value = "value=single"; - } - } - // if $type is administer or manageGroup, and it is not checked, and the - # user is not in the resource owner group, don't print the checkbox - if(($type == "administer" || $type == "manageGroup") && - $checked != "checked" && - ! array_key_exists($resourcegroups[$id]["ownerid"], $user["groups"])) { - print "<TD><img src=images/blank.gif></TD>\n"; - } - else { - $name = "privrow[" . $privname . ":" . $type . "]"; - print " <TD align=center id=cell$rownum:$j $bgcolor><INPUT "; - print "type=checkbox dojoType=dijit.form.CheckBox name=\"$name\" "; - print "id=ck$rownum:$j $checked $value $disabled "; - print "onClick=\"nodeCheck(this.checked, $rownum, $j, 3);\">"; - #print "onBlur=\"nodeCheck(this.checked, $rownum, $j, 3);\">"; - print "</TD>\n"; - } - $j++; - } - print " </TR>\n"; - $count = count($types) + 1; - if($blocked) { - print "<script language=\"Javascript\">\n"; - print "dojo.addOnLoad(function () {setTimeout(\"changeCascadedRights(true, $rownum, $count, 0, 0)\", 500)});\n"; - print "</script>\n"; - } -} - -//////////////////////////////////////////////////////////////////////////////// -/// /// \fn getResourcePrivRowHTML($privname, $rownum, $privs, $types, /// $resourcegroups, $resgroupmembers, /// $cascadeprivs, $disabled) @@ -1797,15 +1696,14 @@ function getResourcePrivRowHTML($privnam global $user; $text = ""; $js = ""; - $text .= " <TR>"; - list($type, $name, $id) = explode('/', $privname); - $text .= " <TH>"; + $text .= " <TR>\n"; + list($grptype, $name, $id) = explode('/', $privname); + $text .= " <TH>\n"; $text .= " <span id=\"resgrp$id\" onmouseover=getGroupMembers(\"$id\","; $text .= "\"resgrp$id\",\"rgmcont\"); onmouseout=getGroupMembersCancel"; - $text .= "(\"resgrp$id\");>$name</span>"; - $text .= " </TH>"; - //$text .= " <TH>$name</TH>"; - $text .= " <TH>$type</TH>"; + $text .= "(\"resgrp$id\");>$name</span>\n"; + $text .= " </TH>\n"; + $text .= " <TH>$grptype</TH>\n"; if($disabled) $disabled = 'disabled=disabled'; @@ -1827,7 +1725,7 @@ function getResourcePrivRowHTML($privnam $text .= " <TD align=center bgcolor=gray><INPUT type=checkbox "; $text .= "dojoType=dijit.form.CheckBox id=ck$rownum:block name=\"$name\" "; $text .= "$checked $disabled onClick=\"changeCascadedRights"; - $text .= "(this.checked, $rownum, $count, 1, 3)\"></TD>"; + $text .= "(this.checked, $rownum, $count, 1, 3)\"></TD>\n"; #cascade rights if(array_key_exists($privname, $privs) && @@ -1839,11 +1737,13 @@ function getResourcePrivRowHTML($privnam $text .= " <TD align=center bgcolor=\"#008000\" id=cell$rownum:0>"; $text .= "<INPUT type=checkbox dojoType=dijit.form.CheckBox id=ck$rownum:0 "; $text .= "onClick=\"privChange(this.checked, $rownum, 0, 3);\" "; - $text .= "name=\"$name\" $checked $disabled></TD>"; + $text .= "name=\"$name\" $checked $disabled></TD>\n"; # normal rights $j = 1; foreach($types as $type) { + if($type == 'block' || $type == 'cascade') + continue; $bgcolor = ""; $checked = ""; $value = ""; @@ -1865,12 +1765,17 @@ function getResourcePrivRowHTML($privnam $value = "value=single"; } } - // if $type is administer or manageGroup, and it is not checked, and the - # user is not in the resource owner group, don't print the checkbox - if(($type == "administer" || $type == "manageGroup") && + // if $type is administer, manageGroup, or manageMapping, and it is not + # checked, and the user is not in the resource owner group, don't print + # the checkbox + if(($type == "administer" || $type == "manageGroup" || $type == "manageMapping") && $checked != "checked" && ! array_key_exists($resourcegroups[$id]["ownerid"], $user["groups"])) { - $text .= "<TD><img src=images/blank.gif></TD>"; + $text .= "<TD><img src=images/blank.gif></TD>\n"; + } + elseif(($grptype == 'schedule' && ($type == 'available' || $type == 'manageMapping')) || + ($grptype == 'managementnode' && $type == 'available')) { + $text .= "<TD><img src=images/blank.gif></TD>\n"; } else { $name = "privrow[" . $privname . ":" . $type . "]"; @@ -1878,17 +1783,15 @@ function getResourcePrivRowHTML($privnam $text .= "type=checkbox dojoType=dijit.form.CheckBox name=\"$name\" "; $text .= "id=ck$rownum:$j $checked $value $disabled "; $text .= "onClick=\"nodeCheck(this.checked, $rownum, $j, 3)\">"; - #$text .= "onBlur=\"nodeCheck(this.checked, $rownum, $j, 3)\">"; - $text .= "</TD>"; + $text .= "</TD>\n"; } $j++; } - $text .= " </TR>"; + $text .= " </TR>\n"; $count = count($types) + 1; if($blocked) { $js .= "changeCascadedRights(true, $rownum, $count, 0, 0);"; } - $text = preg_replace("/'/", ''', $text); return array('html' => $text, 'javascript' => $js); } @@ -2542,7 +2445,7 @@ function AJsubmitAddResourcePriv() { } $perms = explode(':', processInputVar('perms', ARG_STRING)); - $privtypes = array("block", "cascade", "available", "administer", "manageGroup"); + $privtypes = getResourcePrivs(); $newgroupprivs = array(); foreach($privtypes as $type) { if(in_array($type, $perms)) Modified: incubator/vcl/trunk/web/.ht-inc/utils.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/utils.php?rev=1028338&r1=1028337&r2=1028338&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/utils.php (original) +++ incubator/vcl/trunk/web/.ht-inc/utils.php Thu Oct 28 14:54:17 2010 @@ -7417,6 +7417,25 @@ function getResourceTypeID($name) { //////////////////////////////////////////////////////////////////////////////// /// +/// \fn getResourcePrivs() +/// +/// \return an array of resource privileges +/// +/// \brief gets the availabe resource privileges as defined in the resourcepriv +/// table +/// +//////////////////////////////////////////////////////////////////////////////// +function getResourcePrivs() { + $query = "show columns from resourcepriv where field = 'type'"; + $qh = doQuery($query, 101); + $row = mysql_fetch_assoc($qh); + preg_match("/^enum\(([a-zA-Z0-9,']+)\)$/", $row['Type'], $matches); + $tmp = str_replace("'", '', $matches[1]); + return explode(',', $tmp); +} + +//////////////////////////////////////////////////////////////////////////////// +/// /// \fn getNodeInfo($nodeid) /// /// \param $nodeid - an id from the privnode table Modified: incubator/vcl/trunk/web/js/images.js URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/js/images.js?rev=1028338&r1=1028337&r2=1028338&view=diff ============================================================================== --- incubator/vcl/trunk/web/js/images.js (original) +++ incubator/vcl/trunk/web/js/images.js Thu Oct 28 14:54:17 2010 @@ -37,7 +37,7 @@ function addRemItem(cont, objid1, objid2 dojo.xhrPost({ url: 'index.php', load: cb, - handleAs: "json-comment-filtered", + handleAs: "json", error: errorHandler, content: {continuation: cont, listids: listids, @@ -289,7 +289,7 @@ function getImagesButton() { dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: imagesCallback, error: errorHandler, content: {continuation: obj.value, @@ -332,7 +332,7 @@ function getGroupsButton() { dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: groupsCallback, error: errorHandler, content: {continuation: obj.value, @@ -375,7 +375,7 @@ function getMapCompGroupsButton() { dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: mapCompGroupsCB, error: errorHandler, content: {continuation: obj.value, @@ -418,7 +418,7 @@ function getMapImgGroupsButton() { dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: mapImgGroupsCB, error: errorHandler, content: {continuation: obj.value, @@ -460,7 +460,7 @@ function updateRevisionComments(id, cont var comments = dijit.byId(id).value; dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: updateRevisionCommentsCB, error: errorHandler, content: {continuation: cont, @@ -495,7 +495,7 @@ function deleteRevisions(cont, idlist) { checkedids = checkedids.join(','); dojo.xhrPost({ url: 'index.php', - handleAs: "json-comment-filtered", + handleAs: "json", load: deleteRevisionsCB, error: errorHandler, content: {continuation: cont,