Commit 6f8c1bb36a15376f8d7be25f64d60f7bc97135d8
1 parent
e4b049e7
Admin screen to manage nested groups.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3542 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
138 additions
and
0 deletions
presentation/lookAndFeel/knowledgeTree/administration/groupmanagement/editGroupGroups.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +require_once("../../../../../config/dmsDefaults.php"); | ||
| 4 | + | ||
| 5 | +require_once(KT_DIR . "/presentation/Html.inc"); | ||
| 6 | + | ||
| 7 | +require_once(KT_LIB_DIR . "/templating/templating.inc.php"); | ||
| 8 | +require_once(KT_LIB_DIR . "/groups/Group.inc"); | ||
| 9 | +require_once(KT_LIB_DIR . "/groups/GroupUtil.php"); | ||
| 10 | + | ||
| 11 | +require_once(KT_LIB_DIR . "/dispatcher.inc.php"); | ||
| 12 | +$sectionName = "Administration"; | ||
| 13 | +require_once(KT_DIR . "/presentation/webpageTemplate.inc"); | ||
| 14 | + | ||
| 15 | +class EditGroupsGroups extends KTAdminDispatcher { | ||
| 16 | + function do_main() { | ||
| 17 | + $oGroup =& Group::get($_REQUEST['fGroupID']); | ||
| 18 | + global $main; | ||
| 19 | + $main->setOnLoadJavaScript("optGroup.init(document.forms[0]);"); | ||
| 20 | + $main->setHasRequiredFields(false); | ||
| 21 | + $main->setAdditionalJavaScript($this->_initialiseOptionTransferJavaScript()); | ||
| 22 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fGroupID=$fGroupID&fAssign=1"); | ||
| 23 | + | ||
| 24 | + $sToRender = ""; | ||
| 25 | + $sToRender .= sprintf('<form method="POST" action="%s">', $_SERVER['PHP_SELF']); | ||
| 26 | + $sToRender .= '<input type="hidden" name="action" value="update">'; | ||
| 27 | + $sToRender .= sprintf('<input type="hidden" name="fGroupID" value="%s">', $oGroup->getID()); | ||
| 28 | + $sToRender .= '<table width="600">'; | ||
| 29 | + $sToRender .= sprintf('<tr><td valign="left" colspan="2"><b>Group Name: %s</b></td><td valign="right">Back</td></tr>', $oGroup->getName()); | ||
| 30 | + $sToRender .= sprintf('<tr><td><b>Assigned Groups To:</b></td><td> </td><td><b>Available Groups</b></td></tr>'); | ||
| 31 | + | ||
| 32 | + $sToRender .= sprintf('<tr><td>'); | ||
| 33 | + $aMemberGroups = $oGroup->getMemberGroups(); | ||
| 34 | + $sToRender .= sprintf('<select name="groupSelect" size="10" multiple>'); | ||
| 35 | + $aMemberIDs = array(); | ||
| 36 | + foreach ($aMemberGroups as $oMemberGroup) { | ||
| 37 | + $aMemberIDs[] = $oMemberGroup->getID(); | ||
| 38 | + $sJavascript = 'onDblClick="optGroup.transferRight()"'; | ||
| 39 | + $sToRender .= sprintf('<option value="%s" %s>%s</option>', $oMemberGroup->getID(), $sJavascript, $oMemberGroup->getName()); | ||
| 40 | + } | ||
| 41 | + $sToRender .= sprintf('</select>'); | ||
| 42 | + $sToRender .= sprintf('</td>'); | ||
| 43 | + $sToRender .= sprintf('<td>'); | ||
| 44 | + $sToRender .= '<input TYPE="button" NAME="right" style="width:60px" VALUE="- >>" ONCLICK="optGroup.transferRight()"><BR><input TYPE="button" NAME="left" style="width:60px" VALUE="<< +" ONCLICK="optGroup.transferLeft()">'; | ||
| 45 | + $sToRender .= sprintf('</td>'); | ||
| 46 | + | ||
| 47 | + $aGroupArray = GroupUtil::buildGroupArray(); | ||
| 48 | + $aAllowedGroupIDs = GroupUtil::filterCyclicalGroups($oGroup->getID(), $aGroupArray); | ||
| 49 | + $aAllowedGroupIDs = array_diff($aAllowedGroupIDs, $aMemberIDs); | ||
| 50 | + | ||
| 51 | + $sToRender .= sprintf('<td>'); | ||
| 52 | + $sToRender .= sprintf('<select name="groupAvail" size="10" multiple>'); | ||
| 53 | + foreach ($aAllowedGroupIDs as $iAllowedGroupID) { | ||
| 54 | + $oAllowedGroup =& Group::get($iAllowedGroupID); | ||
| 55 | + $sJavascript = 'onDblClick="optGroup.transferLeft()"'; | ||
| 56 | + $sToRender .= sprintf('<option value="%s" %s>%s</option>', $oAllowedGroup->getID(), $sJavascript, $oAllowedGroup->getName()); | ||
| 57 | + } | ||
| 58 | + $sToRender .= sprintf('</select>'); | ||
| 59 | + $sToRender .= sprintf('</td></tr>'); | ||
| 60 | + | ||
| 61 | + $sToRender .= '<tr>'; | ||
| 62 | + $sToRender .= '<td>Filter <BR><input type="text" name="filterUG" onkeyup="optGroup.sortSelectMatch(groupSelect, this.value)\" onchange=\"optGroup.sortSelectMatch(groupSelect, this.value)\"></td>'; | ||
| 63 | + $sToRender .= '<td></td>'; | ||
| 64 | + $sToRender .= '<td>Filter <BR><input type="text" name="filterOG" onkeyup="optGroup.sortSelectMatch(groupAvail, this.value)" onchange="optGroup.sortSelectMatch(groupAvail, this.value)"></td>'; | ||
| 65 | + $sToRender .= '</tr>'; | ||
| 66 | + | ||
| 67 | + $sToRender .= '<tr>'; | ||
| 68 | + $sToRender .= '<td colspan="3" align="right">'; | ||
| 69 | + $sToRender .= sprintf('<input type="image" src="%s" border="0" />', KTHtml::getAssignButton()); | ||
| 70 | + $sToRender .= "<a href=\"" . $_SERVER["PHP_SELF"] . "?fGroupID=" . $iGroupID . "\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"/></a>\n"; $sToRender .= "</td></tr>"; | ||
| 71 | + $sToRender .= '</td>'; | ||
| 72 | + $sToRender .= '</tr>'; | ||
| 73 | + | ||
| 74 | + $sToRender .= sprintf('</table>'); | ||
| 75 | + $sToRender .= '<input type="hidden" name="groupNewLeft" /><br>'; | ||
| 76 | + $sToRender .= '<input type="hidden" name="groupNewRight" /><br>'; | ||
| 77 | + $sToRender .= '<input type="hidden" name="groupRemovedLeft" /><br>'; | ||
| 78 | + $sToRender .= '<input type="hidden" name="groupRemovedRight" /><br>'; | ||
| 79 | + $sToRender .= '<input type="hidden" name="groupAddedLeft" /><br>'; | ||
| 80 | + $sToRender .= '<input type="hidden" name="groupAddedRight" /><br>'; | ||
| 81 | + $sToRender .= '</form>'; | ||
| 82 | + | ||
| 83 | + return $sToRender; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + function handleOutput($data) { | ||
| 87 | + global $main; | ||
| 88 | + $main->bFormDisabled = true; | ||
| 89 | + $main->setCentralPayload($data); | ||
| 90 | + $main->render(); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + function _initialiseOptionTransferJavascript() { | ||
| 94 | + return "<script LANGUAGE=\"JavaScript\">\n" . | ||
| 95 | + "var optGroup = new OptionTransfer(\"groupSelect\",\"groupAvail\");\n" . | ||
| 96 | + "optGroup.setAutoSort(true);\n" . | ||
| 97 | + "optGroup.setDelimiter(\",\");\n" . | ||
| 98 | + "optGroup.saveNewLeftOptions(\"groupNewLeft\");\n" . | ||
| 99 | + "optGroup.saveNewRightOptions(\"groupNewRight\");\n" . | ||
| 100 | + "optGroup.saveRemovedLeftOptions(\"groupRemovedLeft\");\n" . | ||
| 101 | + "optGroup.saveRemovedRightOptions(\"groupRemovedRight\");\n" . | ||
| 102 | + "optGroup.saveAddedLeftOptions(\"groupAddedLeft\");\n" . | ||
| 103 | + "optGroup.saveAddedRightOptions(\"groupAddedRight\");\n" . | ||
| 104 | + "</SCRIPT>"; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + function do_update() { | ||
| 108 | + $oGroup =& Group::get($_REQUEST['fGroupID']); | ||
| 109 | + $aToAddIDs = explode(",", KTUtil::arrayGet($_REQUEST, 'groupAddedLeft')); | ||
| 110 | + $aToRemoveIDs = explode(",", KTUtil::arrayGet($_REQUEST, 'groupAddedRight')); | ||
| 111 | + | ||
| 112 | + foreach ($aToAddIDs as $iMemberGroupID ) { | ||
| 113 | + if ($iMemberGroupID > 0) { | ||
| 114 | + $oMemberGroup = Group::get($iMemberGroupID); | ||
| 115 | + $res = $oGroup->addMemberGroup($oMemberGroup); | ||
| 116 | + if (PEAR::isError($res)) { | ||
| 117 | + $_SESSION["KTErrorMessage"][] = "Failed to add " . $oMemberGroup->getName() . " to " . $oGroup->getName(); | ||
| 118 | + } | ||
| 119 | + } | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + foreach ($aToRemoveIDs as $iMemberGroupID ) { | ||
| 123 | + if ($iMemberGroupID > 0) { | ||
| 124 | + $oMemberGroup = Group::get($iMemberGroupID); | ||
| 125 | + $res = $oGroup->removeMemberGroup($oMemberGroup); | ||
| 126 | + if (PEAR::isError($res)) { | ||
| 127 | + $_SESSION["KTErrorMessage"][] = "Failed to remove " . $oMemberGroup->getName() . " to " . $oGroup->getName(); | ||
| 128 | + } | ||
| 129 | + } | ||
| 130 | + } | ||
| 131 | + exit($this->redirectToMain('fGroupID=' . $oGroup->getID())); | ||
| 132 | + } | ||
| 133 | +} | ||
| 134 | + | ||
| 135 | +$oDispatcher = new EditGroupsGroups(); | ||
| 136 | +$oDispatcher->dispatch(); | ||
| 137 | + | ||
| 138 | +?> |