diff --git a/config/siteMap.inc b/config/siteMap.inc index e88aacd..e33470d 100644 --- a/config/siteMap.inc +++ b/config/siteMap.inc @@ -93,6 +93,7 @@ $default->siteMap->addPage("checkOutDocument", "/presentation/lookAndFeel/knowle $default->siteMap->addPage("checkInDocument", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/checkInDocumentBL.php", "Manage Documents", User, "Check In Document", false); $default->siteMap->addPage("editDocumentPermissions", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentPermissions.php", "Manage Documents", User, _("Document Permissions")); +$default->siteMap->addPage("documentWorkflow", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentWorkflow.php", "Manage Documents", User, _("Document Workflow")); $default->siteMap->addSectionColour("Manage Documents", "td", "BDDFE0"); $default->siteMap->addSectionColour("Manage Documents", "th", "57AFAE"); diff --git a/plugins/ktcore/KTDocumentActions.php b/plugins/ktcore/KTDocumentActions.php index 7238177..4b560fb 100644 --- a/plugins/ktcore/KTDocumentActions.php +++ b/plugins/ktcore/KTDocumentActions.php @@ -186,4 +186,12 @@ class KTDocumentPermissionsAction extends KTBuiltInDocumentAction { var $sName = 'ktcore.actions.document.permissions'; } $oKTActionRegistry->registerAction('documentaction', 'KTDocumentPermissionsAction', 'ktcore.actions.document.permissions'); + +class KTDocumentWorkflowAction extends KTBuiltInDocumentAction { + var $sBuiltInAction = 'documentWorkflow'; + var $sDisplayName = 'Workflow'; + var $sName = 'ktcore.actions.document.workflow'; +} +$oKTActionRegistry->registerAction('documentaction', 'KTDocumentWorkflowAction', 'ktcore.actions.document.workflow'); + ?> diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentWorkflow.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentWorkflow.php new file mode 100644 index 0000000..6a2d046 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/documentWorkflow.php @@ -0,0 +1,135 @@ +log->debug("displayFolderPathLink: slinkPage=$sLinkPage"); + // display a separate link to each folder in the path + for ($i=0; $i 0) ? $sPathLinks . " > " . $sLink : $sLink; + } + return $sPathLinks; +} + + +class DocumentWorkflowDispatcher extends KTStandardDispatcher { + function do_main() { + $oTemplating = new KTTemplating; + $oTemplate = $oTemplating->loadTemplate("ktcore/document/document_workflow"); + $oDocument =& $this->oValidator->validateDocument($_REQUEST['fDocumentID']); + $oPO = KTPermissionObject::get($oDocument->getPermissionObjectID()); + $aPermissions = KTPermission::getList(); + $aMapPermissionGroup = array(); + foreach ($aPermissions as $oPermission) { + $oPA = KTPermissionAssignment::getByPermissionAndObject($oPermission, $oPO); + if (PEAR::isError($oPA)) { + continue; + } + $oDescriptor = KTPermissionDescriptor::get($oPA->getPermissionDescriptorID()); + $iPermissionID = $oPermission->getID(); + $aIDs = $oDescriptor->getGroups(); + $aMapPermissionGroup[$iPermissionID] = array(); + foreach ($aIDs as $iID) { + $aMapPermissionGroup[$iPermissionID][$iID] = true; + } + } + $aMapPermissionUser = array(); + $aUsers = User::getList(); + foreach ($aPermissions as $oPermission) { + $iPermissionID = $oPermission->getID(); + foreach ($aUsers as $oUser) { + if (KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oDocument)) { + $aMapPermissionUser[$iPermissionID][$oUser->getID()] = true; + } + } + } + + $oInherited = KTPermissionUtil::findRootObjectForPermissionObject($oPO); + if ($oInherited === $oDocument) { + $bEdit = true; + } else { + $iInheritedFolderID = $oInherited->getID(); + $sInherited = displayFolderPathLink(Folder::getFolderPathAsArray($iInheritedFolderID), + Folder::getFolderPathNamesAsArray($iInheritedFolderID), + "$default->rootUrl/control.php?action=editFolderPermissions"); + $bEdit = false; + } + + $aTemplateData = array( + "permissions" => $aPermissions, + "groups" => Group::getList(), + "iDocumentID" => $_REQUEST['fDocumentID'], + "aMapPermissionGroup" => $aMapPermissionGroup, + "users" => $aUsers, + "aMapPermissionUser" => $aMapPermissionUser, + "edit" => $bEdit, + "inherited" => $sInherited, + ); + return $oTemplate->render($aTemplateData); + } + + function handleOutput($data) { + global $main; + $main->bFormDisabled = true; + $main->setCentralPayload($data); + $main->render(); + } + + function do_update() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + $oPO = KTPermissionObject::get($oDocument->getPermissionObjectID()); + $aFoo = $_REQUEST['foo']; + $aPermissions = KTPermission::getList(); + foreach ($aPermissions as $oPermission) { + $iPermID = $oPermission->getID(); + $aAllowed = KTUtil::arrayGet($aFoo, $iPermID, array()); + KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed); + } + KTPermissionUtil::updatePermissionLookupForPO($oPO); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + function do_copyPermissions() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + KTPermissionUtil::copyPermissionObject($oDocument); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + function do_inheritPermissions() { + $oDocument = Document::get($_REQUEST['fDocumentID']); + KTPermissionUtil::inheritPermissionObject($oDocument); + return $this->errorRedirectToMain('Permissions updated', + array('fDocumentID' => $oDocument->getID())); + } + + +} + +$oDispatcher = new DocumentPermissionsDispatcher; +$oDispatcher->dispatch(); + +?>