diff --git a/config/siteMap.inc b/config/siteMap.inc index bc38a7f..2614dbe 100644 --- a/config/siteMap.inc +++ b/config/siteMap.inc @@ -60,6 +60,7 @@ $default->siteMap->addPage("addFolder", "/presentation/lookAndFeel/knowledgeTree $default->siteMap->addPage("addFolderDocType", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderDocTypeBL.php", "Manage Documents", User, ""); $default->siteMap->addPage("deleteFolderDocType", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteFolderDocTypeBL.php", "Manage Documents", User, ""); $default->siteMap->addPage("editFolder", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/editBL.php", "Manage Documents", User, _("Modify Folder Properties")); +$default->siteMap->addPage("copyFolderPermissions", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/copyInheritedPermissionsBL.php", "Manage Documents", User, _("Copy Inherited Folder Permissions"), false); $default->siteMap->addPage("modifyFolderData", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/modifyFolderDataBL.php", "Manage Documents", User, "Modify Folder Data", false); $default->siteMap->addPage("deleteFolder", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/deleteFolderBL.php", "Manage Documents", User, _("Delete Current Folder")); diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/copyInheritedPermissionsBL.php b/presentation/lookAndFeel/knowledgeTree/foldermanagement/copyInheritedPermissionsBL.php new file mode 100644 index 0000000..564295f --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/copyInheritedPermissionsBL.php @@ -0,0 +1,132 @@ +fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableListFromQuery.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListFromQuery.inc"); +require_once("editUI.inc"); +require_once("$default->fileSystemRoot/lib/security/Permission.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); +require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); +require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/foldermanagement/folderUI.inc"); +require_once("$default->fileSystemRoot/presentation/Html.inc"); +require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + +$oPatternCustom = & new PatternCustom(); + +if (!isset($fFolderID)) { + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("No folder currently selected")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +$oFolder = Folder::get($fFolderID); +if (!$oFolder) { + // folder doesn't exist + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("The folder you're trying to modify does not exist in the DMS")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +if (!isset($fInheritedFolderID)) { + //else display an error message + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("No inherited folder given")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +$oInheritedFolder = Folder::get($fInheritedFolderID); +if (!$oInheritedFolder) { + //else display an error message + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("The inherited folder given does not exist in the DMS")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +//if the user can edit the folder +if (!Permission::userHasFolderWritePermission($oFolder)) { + //user does not have write permission for this folder, + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("You do not have permission to edit this folder")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +$sQuery = DBUtil::compactQuery(" +SELECT + GFL.group_id AS group_id, + GFL.can_read AS can_read, + GFL.can_write AS can_write +FROM + $default->groups_folders_table AS GFL +WHERE GFL.folder_id = ?"); +$aParams = array($fInheritedFolderID); +$aPermissions = DBUtil::getResultArray(array($sQuery, $aParams)); + +if (PEAR::isError($aPermissions)) { + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("Error retrieving folder permissions")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); +} + +foreach ($aPermissions as $aRow) { + $aRow['folder_id'] = $fFolderID; + $res = DBUtil::autoInsert($default->groups_folders_table, $aRow); + if (PEAR::isError($res)) { + $oPatternCustom->setHtml("\n"); + $main->setErrorMessage(_("Error saving folder permissions")); + $main->setCentralPayload($oPatternCustom); + $main->render(); + exit(0); + } +} + +controllerRedirect("editFolder", "fFolderID=$fFolderID&fShowSection=folderPermissions"); + +?> diff --git a/presentation/lookAndFeel/knowledgeTree/foldermanagement/editUI.inc b/presentation/lookAndFeel/knowledgeTree/foldermanagement/editUI.inc index ebf7f13..8a152d0 100644 --- a/presentation/lookAndFeel/knowledgeTree/foldermanagement/editUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/foldermanagement/editUI.inc @@ -180,7 +180,9 @@ function getFolderGroupAccess($iFolderID, $sDivName) { $sToRender .= 'Inherited from: '; $sToRender .= displayFolderPathLink(Folder::getFolderPathAsArray($iInheritedFolderID), Folder::getFolderPathNamesAsArray($iInheritedFolderID), "$default->rootUrl/control.php?action=editFolder"); - $sToRender .= ""; + $sToRender .= ""; + $sToRender .= " (" . generateLink("/control.php", "action=copyFolderPermissions&fFolderID=$iFolderID&fInheritedFolderID=$iInheritedFolderID", _("Copy")) . ")"; + $sToRender .= ""; } else { $sToRender .= "rootUrl/control.php?action=addGroupFolderLink&fFolderID=$iFolderID\">"; }