diff --git a/lib/documentmanagement/LinkType.inc b/lib/documentmanagement/LinkType.inc index bbd6f18..c0ff30d 100644 --- a/lib/documentmanagement/LinkType.inc +++ b/lib/documentmanagement/LinkType.inc @@ -83,6 +83,7 @@ class LinkType extends KTEntity { $oLinkType->iId = $res['id']; return $oLinkType; } + } function &linktypecreateFromArray($aParameters) { diff --git a/plugins/ktcore/KTAdminPlugins.php b/plugins/ktcore/KTAdminPlugins.php index 4626acf..cc34624 100644 --- a/plugins/ktcore/KTAdminPlugins.php +++ b/plugins/ktcore/KTAdminPlugins.php @@ -30,6 +30,7 @@ $oAdminRegistry->registerLocation("admin",null,"principals", "Add/Remove Users", // documents $oAdminRegistry->registerLocation("fieldmanagement",'KTDocumentFieldDispatcher','documents', 'Document Fieldsets','Control which kinds of documents have which sets of information associated with them.', KT_DIR . '/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/documentFields.php', null); +$oAdminRegistry->registerLocation("linkmanagement",'KTDocLinkAdminDispatcher','documents', 'Link Type Management','Specify the different "link types" - ways to relate different documents togeter.', KT_DIR . '/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/documentLinks.php', null); // storage diff --git a/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/documentLinks.php b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/documentLinks.php new file mode 100644 index 0000000..e9d5c0a --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/doclinkmanagement/documentLinks.php @@ -0,0 +1,165 @@ +, Jam Warehouse (Pty) Ltd, South Africa + * @package documentmanagement + */ + +/* boilerplate */ +//require_once('../../../../../config/dmsDefaults.php'); + +require_once(KT_LIB_DIR . '/dispatcher.inc.php'); +require_once(KT_LIB_DIR . '/templating/kt3template.inc.php'); + +require_once(KT_LIB_DIR . '/widgets/fieldWidgets.php'); + +require_once(KT_LIB_DIR . '/documentmanagement/LinkType.inc'); // a horrible piece of work. + +class KTDocLinkAdminDispatcher extends KTAdminDispatcher { + + // Breadcrumbs base - added to in methods + var $aBreadcrumbs = array( + array('action' => 'administration', 'name' => 'Administration'), + ); + + function check() { + return true; + } + + function do_main() { + $this->aBreadcrumbs[] = array('name' => 'Document Links'); + $this->oPage->setBreadcrumbDetails("view"); + + $aLinkTypes =& LinkType::getList('id > 0'); + + $addLinkForm = array(); + // KTBaseWidget($sLabel, $sDescription, $sName, $value, $oPage, $bRequired = false, $sId = null, $aErrors = null, $aOptions = null) + $addLinkForm[] = new KTStringWidget('Name','A short, human-readable name for the link type.', 'fName', null, $this->oPage, true); + $addLinkForm[] = new KTStringWidget('Description','A short brief description of the relationship implied by this link type.', 'fDescription', null, $this->oPage, true); + + + $oTemplating =& KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate('ktcore/document/admin/linktypesadmin'); + $oTemplate->setData(array( + "context" => $this, + "add_form" => $addLinkForm, + "links" => $aLinkTypes, + )); + return $oTemplate; + } + + function do_edit() { + $link_id = KTUtil::arrayGet($_REQUEST, 'fLinkTypeId', null, false); + if ($link_id === null) { + $this->errorRedirectToMain("Please specify a link type to edit."); + } + + $oLinkType =& LinkType::get($link_id); + + $this->aBreadcrumbs[] = array('name' => 'Document Links'); + $this->oPage->setBreadcrumbDetails("view"); + + $aLinkTypes =& LinkType::getList('id > 0'); + + $editLinkForm = array(); + // KTBaseWidget($sLabel, $sDescription, $sName, $value, $oPage, $bRequired = false, $sId = null, $aErrors = null, $aOptions = null) + $editLinkForm[] = new KTStringWidget('Name','A short, human-readable name for the link type.', 'fName', $oLinkType->getName(), $this->oPage, true); + $editLinkForm[] = new KTStringWidget('Description','A short brief description of the relationship implied by this link type.', 'fDescription', $oLinkType->getDescription(), $this->oPage, true); + + + $oTemplating =& KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate('ktcore/document/admin/linktypesadmin'); + $oTemplate->setData(array( + "context" => $this, + "edit_form" => $editLinkForm, + "old_link" => $oLinkType, + "links" => $aLinkTypes, + )); + return $oTemplate; + } + + + function do_update() { + $link_id = KTUtil::arrayGet($_REQUEST, 'fLinkTypeId', null, false); + if ($link_id === null) { + $this->errorRedirectToMain("Please specify a link type to update."); + } + + $name = KTUtil::arrayGet($_REQUEST, 'fName'); + $description = KTUtil::arrayGet($_REQUEST, 'fDescription'); + + if (empty($name) || empty($description)) { // for bonus points, make this go to edit, and edit catch it. + $this->errorRedirectToMain('Please enter information for all fields.'); + } + + $oLinkType =& LinkType::get($link_id); + + $oLinkType->setName($name); + $oLinkType->setDescription($description); + $oLinkType->update(); + + $this->successRedirectToMain("Link Type updated."); + } + + function do_add() { + $name = KTUtil::arrayGet($_REQUEST, 'fName'); + $description = KTUtil::arrayGet($_REQUEST, 'fDescription'); + + if (empty($name) || empty($description)) { + $this->errorRedirectToMain('Please enter information for all fields.'); + } + + $oLinkType = new LinkType($name, $description); + $oLinkType->create(); + + //$oLinkType =& LinkType::createFromArray(array("sName" => $name, "sDescription" => $description)); + + $this->successRedirectToMain("Link Type created."); + } + + function do_delete() { + $types_to_delete = KTUtil::arrayGet($_REQUEST, 'fLinksToDelete'); // is an array. + + if (empty($types_to_delete)) { + $this->errorRedirectToMain('Please select one or more link types to delete.'); + } + + $count = 0; + foreach ($types_to_delete as $link_id) { + $oLinkType = LinkType::get($link_id); + $oLinkType->delete(); // technically, this is a bad thing + $count += 1; + } + + //$oLinkType =& LinkType::createFromArray(array("sName" => $name, "sDescription" => $description)); + + $this->successRedirectToMain($count . " Link types deleted."); + } + + +} + +// use the new admin framework. +//$d = new KTDocLinkAdminDispatcher(); +//$d->dispatch(); + +?> \ No newline at end of file diff --git a/templates/ktcore/document/admin/linktypesadmin.smarty b/templates/ktcore/document/admin/linktypesadmin.smarty new file mode 100644 index 0000000..74750dc --- /dev/null +++ b/templates/ktcore/document/admin/linktypesadmin.smarty @@ -0,0 +1,92 @@ +
Within the KnowledgeTree it is possible for users +to create links between related documents. Each of these links has a certain type. +FIXME this help text is useless.
+ +{if ($add_form)} + + + +{/if} + +{if ($edit_form)} + + + +{/if} + + + + \ No newline at end of file