Commit 2f59a956ad2d64e1cb5620adbf25f7c587409788
1 parent
e10579f9
adding group folder access stuff
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1287 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
4 changed files
with
324 additions
and
0 deletions
presentation/lookAndFeel/knowledgeTree/foldermanagement/addGroupFolderLinkBL.php
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * $Id$ | ||
| 4 | + * | ||
| 5 | + * Business logic for adding folder access | ||
| 6 | + * addFolderAccessUI.inc for presentation information | ||
| 7 | + * | ||
| 8 | + * Licensed under the GNU GPL. For full terms see the file COPYING. | ||
| 9 | + * | ||
| 10 | + * Expected form variables: | ||
| 11 | + * o $fFolderID - primary key of folder user is currently editing | ||
| 12 | + * | ||
| 13 | + * @version $Revision$ | ||
| 14 | + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa | ||
| 15 | + * @package presentation.lookAndFeel.knowledgeTree.foldermanagement | ||
| 16 | + */ | ||
| 17 | +require_once("../../../../config/dmsDefaults.php"); | ||
| 18 | +include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | ||
| 19 | +include_once("$default->fileSystemRoot/lib/security/permission.inc"); | ||
| 20 | +include_once("$default->fileSystemRoot/lib/users/User.inc"); | ||
| 21 | +include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc"); | ||
| 22 | +include_once("$default->fileSystemRoot/presentation/Html.inc"); | ||
| 23 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); | ||
| 24 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); | ||
| 25 | +include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); | ||
| 26 | +include_once("groupFolderLinkUI.inc"); | ||
| 27 | + | ||
| 28 | +if (checkSession()) { | ||
| 29 | + if (isset($fFolderID)) { | ||
| 30 | + $oPatternCustom = & new PatternCustom(); | ||
| 31 | + $oPatternCustom->setHtml(""); | ||
| 32 | + // if a folder has been selected | ||
| 33 | + if (Permission::userHasFolderWritePermission($fFolderID)) { | ||
| 34 | + // can only add access if the user has folder write permission | ||
| 35 | + if (isset($fForStore)) { | ||
| 36 | + // attempt to create the new folder access entry | ||
| 37 | + $oGroupFolderLink = & new GroupFolderLink($fFolderID, $fGroupID, $fCanRead, $fCanWrite); | ||
| 38 | + // check if exists for the fFolderID, fGroupID combination | ||
| 39 | + if (!$oGroupFolderLink->exists()) { | ||
| 40 | + if ($oGroupFolderLink->create()) { | ||
| 41 | + // on successful creation, redirect to the folder edit page | ||
| 42 | + redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID"); | ||
| 43 | + } else { | ||
| 44 | + //otherwise display an error message | ||
| 45 | + $sErrorMessage = "The folder access entry could not be created in the database"; | ||
| 46 | + $oPatternCustom->setHtml(getPage($fFolderID)); | ||
| 47 | + } | ||
| 48 | + } else { | ||
| 49 | + $sErrorMessage = "A folder access entry for the selected folder and group already exists."; | ||
| 50 | + $oPatternCustom->setHtml(renderErrorPage($sErrorMessage, $fFolderID)); | ||
| 51 | + } | ||
| 52 | + } else { | ||
| 53 | + // display the browse page | ||
| 54 | + $oPatternCustom->setHtml(getAddPage($fFolderID)); | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + } else { | ||
| 58 | + //display an error message | ||
| 59 | + $sErrorMessage = "No folder currently selected"; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | ||
| 63 | + $main->setCentralPayload($oPatternCustom); | ||
| 64 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fForStore=1"); | ||
| 65 | + $main->setHasRequiredFields(true); | ||
| 66 | + $main->render(); | ||
| 67 | +} | ||
| 68 | +?> |
presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteGroupFolderLinkBL.php
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * $Id$ | ||
| 4 | + * | ||
| 5 | + * Business logic for deleting a folder access entry | ||
| 6 | + * addFolderAccessUI.inc for presentation information | ||
| 7 | + * | ||
| 8 | + * Licensed under the GNU GPL. For full terms see the file COPYING. | ||
| 9 | + * | ||
| 10 | + * Expected form variables: | ||
| 11 | + * o $fFolderID - primary key of folder user is currently editing | ||
| 12 | + * o $fGroupFolderLinkID - primary key of group folder link user to delete | ||
| 13 | + * | ||
| 14 | + * @version $Revision$ | ||
| 15 | + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa | ||
| 16 | + * @package presentation.lookAndFeel.knowledgeTree.foldermanagement | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +require_once("../../../../config/dmsDefaults.php"); | ||
| 20 | +include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | ||
| 21 | +include_once("$default->fileSystemRoot/lib/security/permission.inc"); | ||
| 22 | +include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc"); | ||
| 23 | +include_once("$default->fileSystemRoot/lib/groups/Group.inc"); | ||
| 24 | +include_once("$default->fileSystemRoot/lib/roles/Role.inc"); | ||
| 25 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); | ||
| 26 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); | ||
| 27 | +include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); | ||
| 28 | +include_once("$default->fileSystemRoot/presentation/Html.inc"); | ||
| 29 | +include_once("groupFolderLinkUI.inc"); | ||
| 30 | + | ||
| 31 | +if (checkSession()) { | ||
| 32 | + if (isset($fFolderID) && isset($fGroupFolderLinkID)) { | ||
| 33 | + // if a folder has been selected | ||
| 34 | + $oPatternCustom = & new PatternCustom(); | ||
| 35 | + $oPatternCustom->setHtml(""); | ||
| 36 | + if (Permission::userHasFolderWritePermission($fFolderID)) { | ||
| 37 | + // can only delete group folder links if the user has folder write permission | ||
| 38 | + if (isset($fForDelete)) { | ||
| 39 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 40 | + if ($oGroupFolderLink->delete()) { | ||
| 41 | + // on successful deletion, redirect to the folder edit page | ||
| 42 | + redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID"); | ||
| 43 | + } else { | ||
| 44 | + // otherwise display an error message | ||
| 45 | + $sErrorMessage = "The folder access entry could not be deleted from the database"; | ||
| 46 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 47 | + $oPatternCustom->setHtml(getPage($oGroupFolderLink)); | ||
| 48 | + } | ||
| 49 | + } else { | ||
| 50 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 51 | + $oPatternCustom->setHtml(getDeletePage($oGroupFolderLink)); | ||
| 52 | + } | ||
| 53 | + } else { | ||
| 54 | + // display an error message | ||
| 55 | + $sErrorMessage = "You don't have permission to delete this folder access entry."; | ||
| 56 | + } | ||
| 57 | + } else { | ||
| 58 | + $sErrorMessage = "No folder currently selected"; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | ||
| 62 | + $main->setCentralPayload($oPatternCustom); | ||
| 63 | + if (isset($sErrorMessage)) { | ||
| 64 | + $main->setErrorMessage($sErrorMessage); | ||
| 65 | + } | ||
| 66 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fGroupFolderLinkID=$fGroupFolderLinkID&fForDelete=1"); | ||
| 67 | + $main->setHasRequiredFields(true); | ||
| 68 | + $main->render(); | ||
| 69 | +} | ||
| 70 | +?> |
presentation/lookAndFeel/knowledgeTree/foldermanagement/editGroupFolderLinkBL.php
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * $Id$ | ||
| 4 | + * | ||
| 5 | + * Business logic for editing a folder access entry | ||
| 6 | + * groupFolderLinkUI.inc for presentation information | ||
| 7 | + * | ||
| 8 | + * Licensed under the GNU GPL. For full terms see the file COPYING. | ||
| 9 | + * | ||
| 10 | + * Expected form variables: | ||
| 11 | + * o $fFolderID - primary key of folder user is currently editing | ||
| 12 | + * o $fGroupFolderLinkID - primary key of group folder link user to delete | ||
| 13 | + * | ||
| 14 | + * @version $Revision$ | ||
| 15 | + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa | ||
| 16 | + * @package presentation.lookAndFeel.knowledgeTree.foldermanagement | ||
| 17 | + */ | ||
| 18 | + | ||
| 19 | +require_once("../../../../config/dmsDefaults.php"); | ||
| 20 | +include_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); | ||
| 21 | +include_once("$default->fileSystemRoot/lib/security/permission.inc"); | ||
| 22 | +include_once("$default->fileSystemRoot/lib/groups/GroupFolderLink.inc"); | ||
| 23 | +include_once("$default->fileSystemRoot/lib/groups/Group.inc"); | ||
| 24 | +include_once("$default->fileSystemRoot/lib/roles/Role.inc"); | ||
| 25 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); | ||
| 26 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); | ||
| 27 | +include_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableListFromQuery.inc"); | ||
| 28 | +include_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); | ||
| 29 | +include_once("$default->fileSystemRoot/presentation/Html.inc"); | ||
| 30 | +include_once("groupFolderLinkUI.inc"); | ||
| 31 | + | ||
| 32 | +if (checkSession()) { | ||
| 33 | + if (isset($fFolderID) && isset($fGroupFolderLinkID)) { | ||
| 34 | + // if a folder has been selected | ||
| 35 | + $oPatternCustom = & new PatternCustom(); | ||
| 36 | + $oPatternCustom->setHtml(""); | ||
| 37 | + if (Permission::userHasFolderWritePermission($fFolderID)) { | ||
| 38 | + // can only edit group folder links if the user has folder write permission | ||
| 39 | + if (isset($fForStore)) { | ||
| 40 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 41 | + $oGroupFolderLink->setCanRead($fCanRead); | ||
| 42 | + $oGroupFolderLink->setCanWrite($fCanWrite); | ||
| 43 | + if ($oGroupFolderLink->update()) { | ||
| 44 | + // on successful deletion, redirect to the folder edit page | ||
| 45 | + redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID"); | ||
| 46 | + } else { | ||
| 47 | + // otherwise display an error message | ||
| 48 | + $sErrorMessage = "The folder access entry could not be deleted from the database"; | ||
| 49 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 50 | + $oPatternCustom->setHtml(getEditPage($oGroupFolderLink)); | ||
| 51 | + } | ||
| 52 | + } else { | ||
| 53 | + $oGroupFolderLink = & GroupFolderLink::get($fGroupFolderLinkID); | ||
| 54 | + $oPatternCustom->setHtml(getEditPage($oGroupFolderLink)); | ||
| 55 | + } | ||
| 56 | + } else { | ||
| 57 | + // display an error message | ||
| 58 | + $sErrorMessage = "You don't have permission to delete this folder access entry."; | ||
| 59 | + } | ||
| 60 | + } else { | ||
| 61 | + $sErrorMessage = "No folder currently selected"; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + include_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); | ||
| 65 | + $main->setCentralPayload($oPatternCustom); | ||
| 66 | + if (isset($sErrorMessage)) { | ||
| 67 | + $main->setErrorMessage($sErrorMessage); | ||
| 68 | + } | ||
| 69 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fFolderID=$fFolderID&fGroupFolderLinkID=$fGroupFolderLinkID&fForStore=1"); | ||
| 70 | + $main->setHasRequiredFields(true); | ||
| 71 | + $main->render(); | ||
| 72 | +} | ||
| 73 | +?> |
presentation/lookAndFeel/knowledgeTree/foldermanagement/groupFolderLinkUI.inc
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * Presentation information for adding folder access | ||
| 4 | + * Used by addFolderAccessBL.php | ||
| 5 | + * | ||
| 6 | + * @version $Revision$ | ||
| 7 | + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa | ||
| 8 | + * @package presentation.lookAndFeel.knowledgeTree.foldermanagement | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | +function getDeletePage($oGroupFolderLink) { | ||
| 12 | + global $default; | ||
| 13 | + $sToRender .= "<table>\n"; | ||
| 14 | + $sToRender .= "<tr>\n"; | ||
| 15 | + $sToRender .= "<td>Group</td><td>" . Group::getGroupName($oGroupFolderLink->getGroupID()) . "</td>\n"; | ||
| 16 | + $sToRender .= "</tr>\n"; | ||
| 17 | + $sToRender .= "<tr>\n"; | ||
| 18 | + $sToRender .= "<td>Access</td><td>" . getAccessCheckBoxes(true, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . "</td>\n"; | ||
| 19 | + $sToRender .= "</tr>\n"; | ||
| 20 | + $sToRender .= "<tr>\n"; | ||
| 21 | + $sToRender .= "<td><table><tr><td><input type=\"image\" src=\"$default->graphicsUrl/widgets/delete.gif\" /></td><td><a href=\"$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oGroupFolderLink->getFolderID() . "\"><img src=\"$default->graphicsUrl/widgets/cancel.gif\" border=\"0\" /></a></td></tr></table></td>\n"; | ||
| 22 | + $sToRender .= "</tr>\n"; | ||
| 23 | + $sToRender .= "<table>\n"; | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + $sToRender .= "\n\n<script language=\"javascript\">\n<!--\n"; | ||
| 27 | + $sToRender .= "function validateForm(theForm) {\n"; | ||
| 28 | + $sToRender .= "\t return confirm('Are you sure you wish to delete this folder access entry?');}\n"; | ||
| 29 | + $sToRender .= "//-->\n</script>\n\n"; | ||
| 30 | + | ||
| 31 | + return $sToRender; | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +function getEditPage($oGroupFolderLink) { | ||
| 35 | + global $default; | ||
| 36 | + $sToRender .= "<table>\n"; | ||
| 37 | + $sToRender .= "<tr>\n"; | ||
| 38 | + $sToRender .= "<td>Group</td><td>" . getGroupDropDown($oGroupFolderLink->getGroupID()) . "</td>\n"; | ||
| 39 | + $sToRender .= "</tr>\n"; | ||
| 40 | + $sToRender .= "<tr>\n"; | ||
| 41 | + $sToRender .= "<td>Access</td><td>" . getAccessCheckBoxes(false, $oGroupFolderLink->getCanRead(), $oGroupFolderLink->getCanWrite()) . "</td>\n"; | ||
| 42 | + $sToRender .= "</tr>\n"; | ||
| 43 | + $sToRender .= "<tr>\n"; | ||
| 44 | + $sToRender .= "<td><table><tr><td><input type=\"image\" src=\"$default->graphicsUrl/widgets/update.gif\" /></td><td><a href=\"$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oGroupFolderLink->getFolderID() . "\"><img src=\"$default->graphicsUrl/widgets/cancel.gif\" border=\"0\" /></a></td></tr></table></td>\n"; | ||
| 45 | + $sToRender .= "</tr>\n"; | ||
| 46 | + $sToRender .= "<table>\n"; | ||
| 47 | + | ||
| 48 | + $sToRender .= "\n\n<script language=\"javascript\">\n<!--\n"; | ||
| 49 | + $sToRender .= "function validateForm(theForm) {\n"; | ||
| 50 | + $sToRender .= "\tif (!theForm.fCanRead.checked && !theForm.fCanWrite.checked) {\n"; | ||
| 51 | + $sToRender .= "\t\talert('You must select either read or write access'); return false;\n\t}\n"; | ||
| 52 | + $sToRender .= "return true;\n}\n"; | ||
| 53 | + $sToRender .= "//-->\n</script>\n\n"; | ||
| 54 | + | ||
| 55 | + return $sToRender; | ||
| 56 | +} | ||
| 57 | + | ||
| 58 | +function getAddPage($iFolderID) { | ||
| 59 | + global $default; | ||
| 60 | + $sToRender .= "<table>\n"; | ||
| 61 | + $sToRender .= "<tr>\n"; | ||
| 62 | + $sToRender .= "<td>Group</td><td>" . getGroupDropDown() . "</td>\n"; | ||
| 63 | + $sToRender .= "</tr>\n"; | ||
| 64 | + $sToRender .= "<tr>\n"; | ||
| 65 | + $sToRender .= "<td>Access</td><td>" . getAccessCheckBoxes(false) . "</td>\n"; | ||
| 66 | + $sToRender .= "</tr>\n"; | ||
| 67 | + $sToRender .= "<tr>\n"; | ||
| 68 | + $sToRender .= "<td><table><tr><td><input type=\"image\" src=\"$default->graphicsUrl/widgets/add.gif\" /></td><td><a href=\"$default->rootUrl/control.php?action=editFolder&fFolderID=$iFolderID\"><img src=\"$default->graphicsUrl/widgets/cancel.gif\" border=\"0\" /></a></td></tr></table></td>\n"; | ||
| 69 | + $sToRender .= "</tr>\n"; | ||
| 70 | + $sToRender .= "<table>\n"; | ||
| 71 | + | ||
| 72 | + $sToRender .= "\n\n<script language=\"javascript\">\n<!--\n"; | ||
| 73 | + $sToRender .= "function validateForm(theForm) {\n"; | ||
| 74 | + $sToRender .= "\tif (!theForm.fCanRead.checked && !theForm.fCanWrite.checked) {\n"; | ||
| 75 | + $sToRender .= "\t\talert('You must select either read or write access'); return false;\n\t}\n"; | ||
| 76 | + $sToRender .= "return true;\n}\n"; | ||
| 77 | + $sToRender .= "//-->\n</script>\n\n"; | ||
| 78 | + | ||
| 79 | + return $sToRender; | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +function getAccessCheckBoxes($bReadOnly, $fCanRead = false, $fCanWrite = false) { | ||
| 83 | + return "<input name=\"fCanRead\" type=\"checkbox\" " . ($bReadOnly ? "disabled " : "") . ($fCanRead ? "checked" : "") . "/>Read\n" . | ||
| 84 | + "<input name=\"fCanWrite\" type=\"checkbox\" " . ($bReadOnly ? "disabled " : "") . ($fCanWrite ? "checked" : "") . "/>Write\n"; | ||
| 85 | +} | ||
| 86 | + | ||
| 87 | +function getFolderPath($iFolderID) { | ||
| 88 | + global $default; | ||
| 89 | + return displayFolderPathLink(Folder::getFolderPathAsArray($iFolderID), Folder::getFolderPathNamesAsArray($iFolderID), "$default->rootUrl/control.php?action=browse"); | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | +function getGroupDropDown($iGroupID = -1) { | ||
| 93 | + global $default; | ||
| 94 | + if (Permission::userIsSystemAdministrator()) { | ||
| 95 | + $oPatternListBox = & new PatternListBox("$default->owl_groups_table", "name", "id", "fGroupID"); | ||
| 96 | + } else { | ||
| 97 | + $oPatternListBox = & new PatternListBox("$default->owl_groups_table", "name", "id", "fGroupID", "GUL.unit_id=" . User::getUnitID($_SESSION["userID"])); | ||
| 98 | + $oPatternListBox->setFromClause("INNER JOIN $default->owl_groups_units_table AS GUL ON ST.id = GUL.group_id"); | ||
| 99 | + } | ||
| 100 | + $oPatternListBox->setEmptyErrorMessage("There are no groups"); | ||
| 101 | + $oPatternListBox->setIncludeDefaultValue(false); | ||
| 102 | + if ($iGroupID != -1) { | ||
| 103 | + $oPatternListBox->setWhereClause("ST.id = $iGroupID"); | ||
| 104 | + } | ||
| 105 | + return $oPatternListBox->render(); | ||
| 106 | +} | ||
| 107 | + | ||
| 108 | +function renderErrorPage($sErrorMessage, $fFolderID) { | ||
| 109 | + global $default; | ||
| 110 | + return "<p class=\"errorText\">$sErrorMessage</p>\n" . | ||
| 111 | + "<a href=\"$default->rootUrl/control.php?action=editFolder&fFolderID=$fFolderID\"><img src=\"$default->graphicsUrl/widgets/back.gif\" border=\"0\"/></a>\n"; | ||
| 112 | +} | ||
| 113 | +?> |