Commit 692e416856de81c6b28466366d3fc2386e7164f0

Authored by Neil Blakey-Milner
1 parent 2fd73695

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
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>&nbsp;</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="- &gt;&gt;" ONCLICK="optGroup.transferRight()"><BR><input TYPE="button" NAME="left" style="width:60px" VALUE="&lt;&lt; +" 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 +?>