diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationBL.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationBL.php new file mode 100644 index 0000000..51ff7ab --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationBL.php @@ -0,0 +1,102 @@ +owl_fs_root/lib/visualpatterns/PatternListBox.inc"); + require_once("$default->owl_fs_root/lib/foldermanagement/FolderCollaboration.inc"); + require_once("$default->owl_fs_root/lib/foldermanagement/FolderUserRole.inc"); + require_once("$default->owl_fs_root/lib/foldermanagement/Folder.inc"); + require_once("$default->owl_fs_root/lib/documentmanagement/Document.inc"); + require_once("$default->owl_fs_root/lib/groups/Group.inc"); + require_once("$default->owl_fs_root/presentation/Html.inc"); + require_once("$default->owl_fs_root/lib/security/permission.inc"); + require_once("$default->owl_fs_root/lib/visualpatterns/PatternCustom.inc"); + require_once("collaborationUI.inc"); + + //if the required form variabled are set + if (isset($fFolderCollaborationID) && isset($fDocumentID)) { + //if the user has write permission for the document + if (Permission::userHasDocumentWritePermission($fDocumentID)) { + if (isset($fForStore)) { + //if we are storing, get the folder collaboration entry from the database + $oFolderCollaboration = & FolderCollaboration::get($fFolderCollaborationID); + if (isset($fUserID) & ($fUserID != -1)) { + //if a user has been selected, then set up the folders_users_roles_link database entry + $oFolderUserRole = & FolderUserRole::getFromFolderCollaboration($fFolderCollaborationID); + if (!($oFolderUserRole === false)) { + //if we have an entry, just update it + $oFolderUserRole->setUserID($fUserID); + $oFolderUserRole->update(); + } else { + //otherwise, create a new one + $oFolderUserRole = & new FolderUserRole($fUserID, $fDocumentID, $fFolderCollaborationID, 0); + $oFolderUserRole->create(); + } + } + if (isset($fRoleID) & ($fRoleID != -1)) { + //if a role was chosen then update the folder collaboration entry in the db + $oFolderCollaboration->setRoleID($fRoleID); + $oFolderCollaboration->update(); + } + //go back to the document view page + redirect("$default->owl_root_url/control.php?action=viewDocument&fDocumentID=$fDocumentID"); + } else { + //we're still browsing, so just display the document routing details + require_once("$default->owl_fs_root/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + + $aFolderCollaborationArray = getFolderCollaborationArray($fFolderCollaborationID); + $oPatternCustom->setHtml(getDocumentRoutingPage($aFolderCollaborationArray["group_id"],$aFolderCollaborationArray["user_id"], $aFolderCollaborationArray["role_id"], $aFolderCollaborationArray["sequence"], $fDocumentID)); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction($_SEVER["PHP_SELF"] . "?fFolderCollaborationID=$fFolderCollaborationID&fDocumentID=$fDocumentID&fForStore=1"); + $main->render(); + } + } else { + //user does not have permission to edit these details + require_once("$default->owl_fs_root/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml("owl_root_url/control.php?action=viewDocument&fDocumentID=" . $fDocumentID . "\">Return to document view page"); + $main->setCentralPayload($oPatternCustom); + $main->setErrorMessage("You do not have permission to edit document routing details"); + $main->render(); + } + } else { + //user does not have permission to edit these details + require_once("$default->owl_fs_root/presentation/webpageTemplate.inc"); + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml("owl_root_url/control.php?action=dashboard\">Return to document dashboard"); + $main->setCentralPayload($oPatternCustom); + $main->setErrorMessage("No document/document routing details are currently selected"); + $main->render(); + } +} + +function getFolderCollaborationArray($fFolderCollaborationID) { + global $default; + $sQuery = "SELECT GFL.group_id AS group_id, GFL.folder_id AS folder_id, GFL.precedence AS precedence, GFL.role_id, U.id AS user_id " . + "FROM $default->owl_groups_folders_approval_table AS GFL LEFT OUTER JOIN folders_users_roles_link AS FURL ON FURL.group_folder_approval_id = GFL.id " . + "LEFT OUTER JOIN users AS U ON FURL.user_id = U.id " . + "WHERE GFL.id = $fFolderCollaborationID"; + + $sql = $default->db; + $sql->query($sQuery); + if ($sql->next_record()) { + return array("group_id" => $sql->f("group_id"), "user_id" => $sql->f("user_id"), "role_id" => $sql->f("role_id"), "sequence" => $sql->f("precedence")); + } +} + +?> diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationUI.inc b/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationUI.inc new file mode 100644 index 0000000..ddba7b1 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/collaborationUI.inc @@ -0,0 +1,67 @@ +" . $oGroup->getName(); +} + +function getUserDropDown($iGroupID, $iUserID) { + global $default; + $oPatternListBox = & new PatternListBox("$default->owl_users_table", "name", "id", "fUserID"); + $sFromClause = "INNER JOIN $default->owl_users_groups_table AS UGL ON ST.id = UGL.user_id "; + $oPatternListBox->setFromClause($sFromClause); + $sWhereClause = "UGL.group_id = $iGroupID"; + $oPatternListBox->setWhereClause($sWhereClause); + + if (isset($iUserID)) { + $oPatternListBox->setSelectedValue($iUserID); + } + + $oPatternListBox->setEmptyErrorMessage("There are no users in this group"); + return $oPatternListBox->render(); +} + +function getRoleDropDown($iRoleID) { + global $default; + $oPatternListBox = & new PatternListBox("$default->owl_roles_table", "name", "id", "fRoleID"); + if (isset($iRoleID)) { + $oPatternListBox->setSelectedValue($iRoleID); + } + $oPatternListBox->setEmptyErrorMessage("There are no users in this group"); + return $oPatternListBox->render(); +} + +function getDocumentRoutingPage($iGroupID, $iUserID, $iRoleID, $iSequenceNumber, $fDocumentID) { + global $default; + return "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "\n" . + "
Document Routing
Group".getGroupRow($iGroupID)."
Role".getRoleDropDown($iRoleID)."
Player".getUserDropDown($iGroupID, $iUserID)."
Seq. no.$iSequenceNumber
 
owl_root_url/control.php?action=viewDocument&fDocumentID=$fDocumentID \">Cancel
\n"; +} +?>