From 50ae5f8e7f867a9488cf21505bd4a00276cb71aa Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 7 Jul 2003 15:13:23 +0000 Subject: [PATCH] tidied, refactored and added check that the field is not mapped to a document type before deleting (fixes #2655) --- presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php | 49 +++++++++++++++++++++++++++++-------------------- presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc | 64 ++++++++++++++++++++++++++++++---------------------------------- 2 files changed, 59 insertions(+), 54 deletions(-) diff --git a/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php b/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php index 823ef36..1f61a7d 100644 --- a/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php +++ b/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php @@ -15,6 +15,7 @@ if (checkSession()) { require_once("removeDocFieldUI.inc"); require_once("$default->fileSystemRoot/lib/security/permission.inc"); require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentField.inc"); + require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc"); require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); @@ -23,32 +24,40 @@ if (checkSession()) { $oPatternCustom = & new PatternCustom(); - // get main page if (isset($fDocFieldID)) { - - $oPatternCustom->setHtml(getDeletePage($fDocFieldID)); - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForDelete=1"); - - // get delete page + $oDocField = DocumentField::get($fDocFieldID); + if ($oDocField) { + + // check if the document field is mapped to a document type first + $aDocumentTypes = $oDocField->getDocumentTypes(); + if (count($aDocumentTypes) > 0) { + // display status message- can't delete + $oPatternCustom->setHtml(getFieldMappedPage($oDocField->getName(), $aDocumentTypes)); + } else { + // perform the deletion + if (isset($fForDelete)) { + if ($oDocField->delete()) { + $oPatternCustom->setHtml(getDeleteSuccessPage()); + } else { + $oPatternCustom->setHtml(getDeleteFailPage()); + } + } else { + // delete confirmation page + $oPatternCustom->setHtml(getDeletePage($fDocFieldID)); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForDelete=1"); + } + } + } else { + // couldn't retrieve document field from db + $oPatternCustom->setHtml(getStatusPage("Non-existent document field", "This document field does not exist in the database")); + } } else { + // prompt for a field to delete $oPatternCustom->setHtml(getDeletePage(null)); $main->setFormAction($_SERVER["PHP_SELF"] ); } - // if delete entry - if (isset($fForDelete)) { - $oDocField = DocumentField::get($fDocFieldID); - $oDocField->setName($fDocFieldName); - - if ($oDocField->delete()) { - $oPatternCustom->setHtml(getDeleteSuccessPage()); - - } else { - $oPatternCustom->setHtml(getDeleteFailPage()); - } - } - $main->setCentralPayload($oPatternCustom); $main->render(); } -?> +?> \ No newline at end of file diff --git a/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc b/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc index 1c3453d..39e285d 100644 --- a/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc @@ -44,48 +44,44 @@ function getDeletePage($fDocFieldID) { return $sToRender; } -// get successfully deletion page -function getDeleteSuccessPage() { - - global $default; - +function getStatusPage($sHeading, $sText = "") { + global $default; + $sToRender .= renderHeading("Remove Document Field"); - $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 .= "\n"; $sToRender .= "
Document Field SuccessFully Removed!
rootUrl/control.php?action=listDocFields\">graphicsUrl/widgets/back.gif\" border = \"0\" />$sHeading
$sText
" . generateControllerLink("listDocFields", "", "graphicsUrl/widgets/back.gif\" border = \"0\" />") . "
\n"; - return $sToRender; } +// get successfully deletion page +function getDeleteSuccessPage() { + return getStatusPage("Document Field SuccessFully Removed!"); +} + // get deletion failed page function getDeleteFailPage() { + return getStatusPage("Deletion Failed!", "Please Ensure that The Document Field has not been assigned"); +} - global $default; - - $sToRender .= renderHeading("Remove Document Field"); - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; +function getFieldMappedPage($sDocumentFieldName, $aDocumentTypes) { + global $default; + + $sToRender .= "
Deletion Failed!
Please Ensure that The Document Field has not been assigned
rootUrl/control.php?action=listDocFields\">graphicsUrl/widgets/back.gif\" border = \"0\" />
\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + for ($i=0; $igetID(), $aDocumentTypes[$i]->getName()) . ""; + } $sToRender .= "
Document field '$sDocumentFieldName' is mapped to the following document type(s), and can therefore not be deleted.
Click on the Document Type name to edit its fields, or click 'Back' to return to List Document Fields.
\n"; - return $sToRender; + return getStatusPage("Can't delete document field '$sDocumentFieldName'", $sToRender); } // show listbox...or the text name @@ -117,8 +113,8 @@ function getDocFieldDataType($oDocField) { function getDeleteButton($oDocField) { global $default; if (isset($oDocField)) { - return "graphicsUrl/widgets/delete.gif\" value=\"submit\"border=\"0\" />\n". - "rootUrl/control.php?action=listDocFields\">graphicsUrl/widgets/cancel.gif\" border = \"0\" />\n"; + return "graphicsUrl/widgets/delete.gif\" value=\"submit\"border=\"0\" />\n". + "" . getControllerLink("listDocFields", "graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "\n"; } } @@ -126,10 +122,10 @@ function getDeleteButton($oDocField) { function getCancelButton($oDocField) { global $default; if (!isset($oDocField)) { - return "rootUrl/control.php?action=docfield\">graphicsUrl/widgets/cancel.gif\" value=\"cancel\" border = \"0\"/>\n"; + return "" . getControllerLink("docfield", "graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "\n"; } else { - return "rootUrl/control.php?action=listDocFields\">graphicsUrl/widgets/cancel.gif\" border = \"0\" />\n"; + return "" . getControllerLink("listDocFields", "graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "\n"; } } ?> -- libgit2 0.21.4