From 082e196760d1ada114d4cf68440ce2b2c6e4fb68 Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Mon, 13 Jun 2005 21:31:40 +0000 Subject: [PATCH] Add link type for document links to describe the relationship --- config/siteMap.inc | 10 ++++++++++ config/tableMappings.inc | 4 +++- lib/documentmanagement/DocumentLink.inc | 21 +++++++++++++++++++-- lib/documentmanagement/LinkType.inc | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeUI.inc | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeUI.inc | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesUI.inc | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeUI.inc | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkBL.php | 5 +++-- presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkUI.inc | 20 ++++++++++++++++++++ presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc | 12 +++++++----- sql/mysql/install/data.sql | 2 ++ sql/mysql/install/structure.sql | 2 +- 18 files changed, 934 insertions(+), 11 deletions(-) create mode 100644 lib/documentmanagement/LinkType.inc create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeUI.inc create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeUI.inc create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesUI.inc create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php create mode 100644 presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeUI.inc diff --git a/config/siteMap.inc b/config/siteMap.inc index 99e58e0..3e253f1 100644 --- a/config/siteMap.inc +++ b/config/siteMap.inc @@ -132,6 +132,8 @@ $default->siteMap->addPage("systemAdministration", "/presentation/lookAndFeel/kn $default->siteMap->addPage("browseAdministration", "/presentation/lookAndFeel/knowledgeTree/administration/browsemanagement/editBrowserBL.php", "Administration", SysAdmin, _("Browse Management"), true, 15); +$default->siteMap->addPage("docLinkManagement", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php", "Administration", SysAdmin, _("Link Type Management"), true, 16); + $default->siteMap->addSectionColour("Administration", "th", "056DCE"); $default->siteMap->addSectionColour("Administration", "td", "6699FF"); @@ -260,4 +262,12 @@ $default->siteMap->addDefaultPage("addComment", "/presentation/lookAndFeel/knowl $default->siteMap->addSectionColour("Discussion Threads", "td", "BDDFE0"); $default->siteMap->addSectionColour("Discussion Threads", "th", "57AFAE"); + +// Document link management +$default->siteMap->addPage("listLinkTypes", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php", "Administration", SysAdmin, "List Link Types", false); +$default->siteMap->addPage("addLinkType", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php", "Administration", SysAdmin, "Add A Link Type", false); +$default->siteMap->addPage("addLinkTypeSuccess", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php", "Administration", SysAdmin, "Add A Link Type Success ", false); +$default->siteMap->addDefaultPage("editLinkType", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php", "Administration", SysAdmin, _("Edit Link Type Properties"), false); +$default->siteMap->addDefaultPage("removeLinkType", "/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php", "Administration", SysAdmin, _("Remove a Link Type"), false); + ?> diff --git a/config/tableMappings.inc b/config/tableMappings.inc index ff4ba03..79828f2 100644 --- a/config/tableMappings.inc +++ b/config/tableMappings.inc @@ -111,4 +111,6 @@ $default->time_unit_lookup_table = "time_unit_lookup"; $default->archive_restoration_table = "archive_restoration_request"; $default->status_table = "status_lookup"; $default->search_permissions_table = "search_document_user_link"; -?> \ No newline at end of file +$default->document_link_types_table = "document_link_types"; +$default->upgrades_table = "upgrades"; +?> diff --git a/lib/documentmanagement/DocumentLink.inc b/lib/documentmanagement/DocumentLink.inc index 447acbd..470bae8 100644 --- a/lib/documentmanagement/DocumentLink.inc +++ b/lib/documentmanagement/DocumentLink.inc @@ -34,7 +34,8 @@ class DocumentLink extends KTEntity { var $iParentDocumentID; /** document title name */ var $iChildDocumentID; - + /** type of link */ + var $iLinkTypeID; /** * Default constructor @@ -43,12 +44,13 @@ class DocumentLink extends KTEntity { * @param Child document primary key * */ - function DocumentLink($iNewParentDocumentID, $iNewChildDocumentID) { + function DocumentLink($iNewParentDocumentID, $iNewChildDocumentID, $iLinkTypeID) { //object not created yet global $default; $this->iId = -1; $this->iParentDocumentID = $iNewParentDocumentID; $this->iChildDocumentID = $iNewChildDocumentID; + $this->iLinkTypeID = $iLinkTypeID; } /** @@ -98,10 +100,25 @@ class DocumentLink extends KTEntity { $this->iChildDocumentID = $iNewValue; } + /** + * Get the primary key of the link type + */ + function getLinkTypeID() { + return $this->iLinkTypeID; + } + + /** + * Set the primary key of the link type + */ + function setLinkTypeID($iNewValue) { + $this->iLinkTypeID = $iNewValue; + } + function _fieldValues () { return array( 'parent_document_id' => $this->iParentDocumentID, 'child_document_id' => $this->iChildDocumentID, + 'link_type_id' => $this->iLinkTypeID, ); } diff --git a/lib/documentmanagement/LinkType.inc b/lib/documentmanagement/LinkType.inc new file mode 100644 index 0000000..bb7f549 --- /dev/null +++ b/lib/documentmanagement/LinkType.inc @@ -0,0 +1,94 @@ +iId = -1; + $this->sName = $sName; + $this->sDescription = $sDescription; + } + + function getDescription() { + return $this->sDescription; + } + + function setDescription($sNewValue) { + $this->sDescription = $sNewValue; + } + + function getName() { + return $this->sName; + } + + function setName($sNewValue) { + $this->sName = $sNewValue; + } + + function _fieldValues () { + return array( + 'name' => $this->sName, + 'description' => $this->sDescription, + ); + } + + function _table () { + global $default; + return $default->document_link_types_table; + } + + function getList($sWhereClause = null) { + return KTEntityUtil::getList(Link::_table(), 'LinkType', $sWhereClause); + } + + function &get($id) { + $sQuery = "SELECT id, name, description FROM " . LinkType::_table() . " WHERE id = ?"; + $aParams = array($id); + $res = DBUtil::getOneResult(array($sQuery, $aParams)); + if (PEAR::isError($res)) { + return $res; + } + if (is_null($res)) { + // XXX: No such key exception type + return $res; + } + $oLinkType =& new LinkType($res['name'], $res['description']); + $oLinkType->iId = $res['id']; + return $oLinkType; + } +} + +function &linktypecreateFromArray($aParameters) { + $oLinkType = & new LinkType($aParameters[0], $aParameters[1], $aParameters[2], $aParameters[3], $aParameters[4], $aParameters[5], $aParameters[6], $aParameters[7], $aParameters[8], $aParameters[9], $aParameters[10]); + return $oLinkType; +} + + +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php new file mode 100644 index 0000000..c38e16e --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeBL.php @@ -0,0 +1,87 @@ +fileSystemRoot/lib/visualpatterns/PatternCreate.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); + +require_once("$default->fileSystemRoot/presentation/Html.inc"); +require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/administration/adminUI.inc"); +require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + +require_once("$default->fileSystemRoot/lib/documentmanagement/LinkType.inc"); +require_once("addLinkTypeUI.inc"); + +if (!checkSession()) { + die("Session failed"); +} + +KTUtil::extractGPC('fLinkID'); + +if ($submitted) { + // include the page template (with navbar) + + $sToRender = renderHeading(_("Add Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + if ($fLinkID != -1) { + $sToRender .= "\n"; + } else { + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .="\n"; + } + + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("New Link Type Added SuccessFully") . "!
" . _("Addition Unsuccessful") . "...
Please Check Name and Rank for duplicates!
 
rootUrl/control.php?action=addLinkType\">" . KTHtml::getBackButton() . "
\n"; + + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml($sToRender); + $main->setCentralPayload($oPatternCustom); + $main->render(); +} else { + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getPage()); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction("$default->rootUrl/presentation/lookAndFeel/knowledgeTree/create.php?fRedirectURL=".urlencode("$default->rootUrl/control.php?action=addLinkTypeSuccess&fLinkID=")); + $main->setHasRequiredFields(true); + $main->render(); +} + +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php new file mode 100644 index 0000000..23f5c68 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeSuccess.php @@ -0,0 +1,67 @@ +fileSystemRoot/presentation/webpageTemplate.inc"); + +KTUtil::extractGPC('fLinkID'); + +if(checkSession()) { + + // include the page template (with navbar) + $Center .= renderHeading(_("Add Link Type")); + $Center .= "\n"; + $Center .= "\n"; + if ($fLinkID != -1) { + $Center .= "\n"; + } else { + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .="\n"; + } + + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "\n"; + $Center .= "
" . _("New Link Type Added Successfully") . "!
" . _("Addition Unsuccessful") . "...
Please Check Name and Rank for duplicates!
 
rootUrl/control.php?action=addLinkType\">
\n"; + + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml($Center); + $main->setCentralPayload($oPatternCustom); + $main->render(); +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeUI.inc new file mode 100644 index 0000000..58c0c6f --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/addLinkTypeUI.inc @@ -0,0 +1,72 @@ +setUniqueName("linktype"); + + $sToRender .= renderHeading(_("Add Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . $oPatternCreate->render() . "
"; + $sToRender .= getCancelButton("listLinkTypes") . "
\n"; + + return $sToRender; +} + + // TODO .. do a check if rank already taken...as well as do a check if name already exists when inserting + // if edition is successful print out success page +function getAddPageFail() { + global $default; + + $sToRender .= renderHeading(_("Add Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("Addition Unsuccessful") . "
rootUrl/control.php?action=addLinkType\">" . KTHtml::getBackButton() . "
\n"; + + return $sToRender; +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php new file mode 100644 index 0000000..c9c3148 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeBL.php @@ -0,0 +1,75 @@ +fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableListFromQuery.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); + + require_once("$default->fileSystemRoot/presentation/Html.inc"); + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + + require_once("$default->fileSystemRoot/lib/documentmanagement/LinkType.inc"); + require_once("editLinkTypeUI.inc"); + + + $oPatternCustom = & new PatternCustom(); + + if (isset($fForStore)){ + $oLink = LinkType::get($fLinkID); + $oLink->setName($fLinkName); + $oLink->setDescription($fDescription); + + if ($oLink->update()) { + // if successfull print out success message + $oPatternCustom->setHtml(getEditPageSuccess()); + + } else { + // if fail print out fail message + $oPatternCustom->setHtml(getEditPageFail()); + } + } else if (isset($fLinkID)){ + // post back on Link select from manual edit page + $oPatternCustom->setHtml(getEditPage($fLinkID)); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForStore=1"); + + + } else { + // if nothing happens...just reload edit page + $oPatternCustom->setHtml(getEditPage(null)); + $main->setFormAction($_SERVER["PHP_SELF"]); + + } + //render the page + $main->setCentralPayload($oPatternCustom); + $main->setHasRequiredFields(true); + $main->render(); +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeUI.inc new file mode 100644 index 0000000..a1a815b --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/editLinkTypeUI.inc @@ -0,0 +1,163 @@ +\n"; + $sToRender .= "$sHeading\n"; + $sToRender .= "\n"; + $sToRender .= "" . _("Link Name") . ": " . getLinkDisplay($oLink) . "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + + // if a Link selected...show checkboxes + if (isset($iLinkID)) { + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "" . _("Description") . ": " . getDescr($oLink) . "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + } + + + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "" . getUpdateButton($oLink); + $sToRender .= getCancelButton($oLink); + $sToRender .= "\n"; + + $sToRender .= "\n\n\n\n"; + + return $sToRender; +} + +// if edition is successful print otu success page +function getEditPageSuccess() { + global $default; + + $sToRender .= renderHeading(_("Edit Link Type")); + $sToRender .= "Success!\n"; + $sToRender .= "\n"; + $sToRender .= "

\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("The Link Type was successfully modified") . "
rootUrl/control.php?action=listLinkTypes\">" . generateImage(KTHtml::getBackButton()) . "
\n"; + + + return $sToRender; +} + + +// gets the page if edition fails +function getEditPageFail() { + global $default; + + $sToRender .= renderHeading(_("Edit Link Type")); + $sToRender .= "" . _("Success") . "!\n"; + $sToRender .= "\n"; + $sToRender .= "

\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("The Link Type modification failed") . "!
rootUrl/control.php?action=listLinkTypes\">" . generateImage(KTHtml::getBackButton()) . "
\n"; + + + return $sToRender; +} + +// show the list box when no Link selected +// then shows a text box with the Link's name +function getLinkDisplay($oLink) { + global $default; + if (!isset($oLink)) { + $oPatternListBox = & new PatternListBox($default->document_links_types_table, "name", "id", "fLinkID"); + //$oPatternListBox->setIncludeDefaultValue(true); + $oPatternListBox->setPostBackOnChange(true); + return $oPatternListBox->render(); + } else { + return "iId . "\">\n" . + "getName() . "\">"; + } + +} + + +// returns the checkbox ticked or unticked +function getDescr($oLink) { + if (!isset($oLink)) { + return ""; + } else { + return "getDescription() . "\">"; + } +} + + +// gets the updatebutton when a Link is selected +function getUpdateButton($oLink) { + global $default; + if (isset($oLink)) { + return "\n"; + } +} + +// gets the cancel button when a Link is selected +function getCancelButton($oLink) { + global $default; + if (!isset($oLink)) { + //return "rootUrl/control.php?action=LinkManagement\">graphicsUrl/widgets/cancel.gif\" value=\"cancel\" />\n"; + } else { + return "rootUrl/control.php?action=listLinkTypes\">" . generateImage(KTHtml::getCancelButton()) . "\n"; + } +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php new file mode 100644 index 0000000..c02e0e8 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesBL.php @@ -0,0 +1,48 @@ +fileSystemRoot/lib/visualpatterns/PatternCreate.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternTableSqlQuery.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternBrowsableSearchResults.inc"); +require_once("$default->fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); + +require_once("$default->fileSystemRoot/presentation/Html.inc"); +require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); +require_once("$default->fileSystemRoot/presentation/lookAndFeel/knowledgeTree/administration/adminUI.inc"); + +require_once("listLinkTypesUI.inc"); + +if (checkSession()) { + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getPage()); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction($_SERVER['PHP_SELF']); + $main->render(); +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesUI.inc new file mode 100644 index 0000000..1761cf6 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/listLinkTypesUI.inc @@ -0,0 +1,58 @@ +document_link_types_table . " " . + "ORDER BY name"; + + $aColumns = array("LinkName", "LinkDescr", "Edit", "Delete"); + $aColumnNames = array("Linktype Name","Description", "Edit", "Delete"); + $aColumnTypes = array(1,1,3,3); + $aDBColumnArray = array("LinkID"); + $aQueryStringVariableNames = array("fLinkID"); + + $aHyperLinkDescr = array( 2=> "$default->rootUrl/control.php?action=editLinkType", + 3=> "$default->rootUrl/control.php?action=removeLinkType"); + + + $oSearchResults = & new PatternTableSqlQuery($sQuery, $aColumns, $aColumnTypes, $aColumnNames, "100%", $aHyperLinkDescr,$aDBColumnArray,$aQueryStringVariableNames); + $oSearchResults->setDisplayColumnHeadings(true); + return $oSearchResults->render() ; +} + +function getPage() { + global $default; + $sToRender .= renderHeading(_("Link Types Management")); + + // add user link + $sToRender .= getAddLink("addLinkType", "Add A Link Type"); + $sToRender .= getLinkTypes(); + return $sToRender; +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php new file mode 100644 index 0000000..d201800 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeBL.php @@ -0,0 +1,71 @@ +fileSystemRoot/lib/visualpatterns/PatternListBox.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableListFromQuery.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); + + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + require_once("$default->fileSystemRoot/presentation/Html.inc"); + + require_once("$default->fileSystemRoot/lib/documentmanagement/LinkType.inc"); + require_once("removeLinkTypeUI.inc"); + + $oPatternCustom = & new PatternCustom(); + + // get main page + if (isset($fLinkID)) { + + $oPatternCustom->setHtml(getDeletePage($fLinkID)); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForDelete=1"); + + // get delete page + } else { + $oPatternCustom->setHtml(getDeletePage(null)); + $main->setFormAction($_SERVER["PHP_SELF"]); + } + + // if delete entry + if (isset($fForDelete)) { + $oLink = LinkType::get($fLinkID); + $oLink->setName($fLinkName); + + if ($oLink->delete()) { + $oPatternCustom->setHtml(getDeleteSuccessPage()); + + } else { + $oPatternCustom->setHtml(getDeleteFailPage()); + } + } + + $main->setCentralPayload($oPatternCustom); + $main->render(); +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeUI.inc new file mode 100644 index 0000000..bf8e9c7 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/removeLinkTypeUI.inc @@ -0,0 +1,134 @@ +" . _("Are you sure you wish to memove this Link Type?") . ":\n"; + } else { + $sHeading .= _("Please select a Link Type") . ":"; + } + + $sToRender .= renderHeading(_("Remove Document Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
$sHeading
Link Name: " . getLinkDisplay($oLink) . "
" . getDescr($oLink) . "
" . getDeleteButton($oLink) . "
\n"; + + return $sToRender; +} + +// get successfully deletion page +function getDeleteSuccessPage() { + + global $default; + + $sToRender .= renderHeading(_("Remove Document Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("Document Link Type successfully removed") . "!
rootUrl/control.php?action=listLinkTypes\">" . generateImage(KTHtml::getBackButton()) . "
\n"; + + return $sToRender; +} + +// get deletion failed page +function getDeleteFailPage() { + + global $default; + + $sToRender .= renderHeading(_("Remove Document Link Type")); + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "
" . _("Deletion failed") . "!
" . _("Please ensure that all document links from this type have been removed") . ".
rootUrl/control.php?action=listLinkTypes\">" . generateImage(KTHtml::getBackButton()) . "
\n"; + + return $sToRender; +} + +// show listbox...or the text name +function getLinkDisplay($oLink) { + global $default; + if (!isset($oLink)) { + $oPatternListBox = & new PatternListBox($default->quicklinks_table, "name", "id", "fLinkID"); + $oPatternListBox->setIncludeDefaultValue(true); + $oPatternListBox->setPostBackOnChange(true); + return $oPatternListBox->render(); + } else { + return "iId . "\">\n" . + "" . $oLink->getName() . ""; + } +} + +// show check box +function getDescr($oLink) { + if (!isset($oLink)) { + return ""; + } else { + return _("Description") . ": " . $oLink->getDescription(); + } +} + +// show delete button +function getDeleteButton($oLink) { + global $default; + if (isset($oLink)) { + return "\n". + "rootUrl/control.php?action=listLinks\">" . generateImage(KTHtml::getCancelButton()) . "\n"; + } +} +?> diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkBL.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkBL.php index 88a3e0a..208a31f 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkBL.php +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkBL.php @@ -31,13 +31,14 @@ require_once("../../../../config/dmsDefaults.php"); -KTUtil::extractGPC('fDocumentID', 'fForStore', 'fTargetDocumentID'); +KTUtil::extractGPC('fDocumentID', 'fForStore', 'fTargetDocumentID', 'fLinkTypeID'); if (checkSession()) { require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentLink.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); require_once("$default->fileSystemRoot/lib/security/Permission.inc"); + require_once("$default->fileSystemRoot/lib/linktypes/LinkType.inc"); require_once("$default->fileSystemRoot/presentation/Html.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); require_once("documentUI.inc"); @@ -48,7 +49,7 @@ if (checkSession()) { //user has permission to link this document to another if (isset($fForStore)) { //create a new document link - $oDocumentLink = & new DocumentLink($fDocumentID, $fTargetDocumentID); + $oDocumentLink = & new DocumentLink($fDocumentID, $fTargetDocumentID, $fLinkTypeID); if ($oDocumentLink->create()) { controllerRedirect("viewDocument", "fDocumentID=$fDocumentID&fShowSection=linkedDocuments"); } else { diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkUI.inc b/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkUI.inc index 67a564e..e20423a 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/addDocumentLinkUI.inc @@ -41,6 +41,10 @@ function getPage($iDocumentID) { //for netscape 4.7 do this $sToRender .= "" . _("Document to link") . "\n"; } + $sToRender .= ""; + $sToRender .= "Link Type".getLinkTypesList($name="fLinkTypeID")."\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "
rootUrl . "/control.php?action=viewDocument&fDocumentID=$iDocumentID\">
\n"; @@ -70,4 +74,20 @@ function getBrowseJavaScript() { $sToRender .= "//-->\n"; return $sToRender; } + +function getLinkTypesList($name="", $selected="") { + $sToRender = "\n"; + return $sToRender; +} + ?> diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc b/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc index 940356f..265dead 100644 --- a/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc @@ -297,16 +297,18 @@ function renderNonEditableDocumentRouting($oDocument) { function renderEditableLinkedDocuments($oDocument) { global $default; - /*ok*/ $sQuery = array("SELECT D.id AS child_document_id, D.name, DL.id as document_link_id, DL.parent_document_id AS parent_document_id, 'Unlink' AS unlink " . + /*ok*/ $sQuery = array("SELECT D.id AS child_document_id, D.name, DL.id as document_link_id, " . + "DL.parent_document_id AS parent_document_id, DLT.name AS link_type, 'Unlink' AS unlink " . "FROM $default->documents_table AS D INNER JOIN $default->document_link_table AS DL ON D.id = DL.child_document_id " . + "INNER JOIN $default->document_link_types_table AS DLT ON DL.link_type_id = DLT.id " . "WHERE DL.parent_document_id = ?", $oDocument->getID()); - $aColumns = array("name", "unlink"); - $aColumnHeaders = array(_("Document")); - $aColumnTypes = array(3,3); + $aColumns = array("name", "link_type", "unlink"); + $aColumnHeaders = array(_("Document"), _("Document Link Type")); + $aColumnTypes = array(3,3,3); $aDBColumnArray = array("parent_document_id", "child_document_id","document_link_id", "child_document_id"); $aQueryStringVariableNames = array("fParentDocumentID","fChildDocumentID", "fDocumentLinkID", "fDocumentID"); - $aLinkURLs = array(0=>"$default->rootUrl/control.php?action=viewDocument", 1=>"$default->rootUrl/control.php?action=removeDocumentLink"); + $aLinkURLs = array(0=>"$default->rootUrl/control.php?action=viewDocument", 2=>"$default->rootUrl/control.php?action=removeDocumentLink"); $oPatternTableSqlQuery = & new PatternTableSqlQuery($sQuery, $aColumns, $aColumnTypes, $aColumnHeaders, "500", $aLinkURLs, $aDBColumnArray, $aQueryStringVariableNames); $oPatternTableSqlQuery->setTableHeading(_("Linked documents")); diff --git a/sql/mysql/install/data.sql b/sql/mysql/install/data.sql index 6d282a1..6c47dbe 100644 --- a/sql/mysql/install/data.sql +++ b/sql/mysql/install/data.sql @@ -97,6 +97,7 @@ INSERT INTO document_fields VALUES (1, 'Category', 'STRING', 1, NULL); -- Dumping data for table `document_link_types` -- +INSERT INTO document_link_types VALUES (0, 'Default', 'Default link type'); -- -- Dumping data for table `document_subscriptions` @@ -644,6 +645,7 @@ INSERT INTO zseq_document_link VALUES (1); -- Dumping data for table `zseq_document_link_types` -- +INSERT INTO zseq_document_link_types VALUES(2); -- -- Dumping data for table `zseq_document_subscriptions` diff --git a/sql/mysql/install/structure.sql b/sql/mysql/install/structure.sql index 6f71fc4..0a1ba74 100644 --- a/sql/mysql/install/structure.sql +++ b/sql/mysql/install/structure.sql @@ -211,7 +211,7 @@ CREATE TABLE document_link ( id int(11) NOT NULL default '0', parent_document_id int(11) NOT NULL default '0', child_document_id int(11) NOT NULL default '0', - link_type_id int(11) default NULL, + link_type_id int(11) NOT NULL default '0', UNIQUE KEY id (id) ) TYPE=InnoDB; -- libgit2 0.21.4