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 | +?> | ... | ... |