Commit f763fe3e7848b23c96e1c194dec35bc199a9a8bc
1 parent
70bd3948
tidied, refactored and added check that the field is not mapped to a document type before deleting
(fixes #2655) git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@2312 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
2 changed files
with
59 additions
and
54 deletions
presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldBL.php
| ... | ... | @@ -15,6 +15,7 @@ if (checkSession()) { |
| 15 | 15 | require_once("removeDocFieldUI.inc"); |
| 16 | 16 | require_once("$default->fileSystemRoot/lib/security/permission.inc"); |
| 17 | 17 | require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentField.inc"); |
| 18 | + require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc"); | |
| 18 | 19 | require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); |
| 19 | 20 | require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); |
| 20 | 21 | require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); |
| ... | ... | @@ -23,32 +24,40 @@ if (checkSession()) { |
| 23 | 24 | |
| 24 | 25 | $oPatternCustom = & new PatternCustom(); |
| 25 | 26 | |
| 26 | - // get main page | |
| 27 | 27 | if (isset($fDocFieldID)) { |
| 28 | - | |
| 29 | - $oPatternCustom->setHtml(getDeletePage($fDocFieldID)); | |
| 30 | - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForDelete=1"); | |
| 31 | - | |
| 32 | - // get delete page | |
| 28 | + $oDocField = DocumentField::get($fDocFieldID); | |
| 29 | + if ($oDocField) { | |
| 30 | + | |
| 31 | + // check if the document field is mapped to a document type first | |
| 32 | + $aDocumentTypes = $oDocField->getDocumentTypes(); | |
| 33 | + if (count($aDocumentTypes) > 0) { | |
| 34 | + // display status message- can't delete | |
| 35 | + $oPatternCustom->setHtml(getFieldMappedPage($oDocField->getName(), $aDocumentTypes)); | |
| 36 | + } else { | |
| 37 | + // perform the deletion | |
| 38 | + if (isset($fForDelete)) { | |
| 39 | + if ($oDocField->delete()) { | |
| 40 | + $oPatternCustom->setHtml(getDeleteSuccessPage()); | |
| 41 | + } else { | |
| 42 | + $oPatternCustom->setHtml(getDeleteFailPage()); | |
| 43 | + } | |
| 44 | + } else { | |
| 45 | + // delete confirmation page | |
| 46 | + $oPatternCustom->setHtml(getDeletePage($fDocFieldID)); | |
| 47 | + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForDelete=1"); | |
| 48 | + } | |
| 49 | + } | |
| 50 | + } else { | |
| 51 | + // couldn't retrieve document field from db | |
| 52 | + $oPatternCustom->setHtml(getStatusPage("Non-existent document field", "This document field does not exist in the database")); | |
| 53 | + } | |
| 33 | 54 | } else { |
| 55 | + // prompt for a field to delete | |
| 34 | 56 | $oPatternCustom->setHtml(getDeletePage(null)); |
| 35 | 57 | $main->setFormAction($_SERVER["PHP_SELF"] ); |
| 36 | 58 | } |
| 37 | 59 | |
| 38 | - // if delete entry | |
| 39 | - if (isset($fForDelete)) { | |
| 40 | - $oDocField = DocumentField::get($fDocFieldID); | |
| 41 | - $oDocField->setName($fDocFieldName); | |
| 42 | - | |
| 43 | - if ($oDocField->delete()) { | |
| 44 | - $oPatternCustom->setHtml(getDeleteSuccessPage()); | |
| 45 | - | |
| 46 | - } else { | |
| 47 | - $oPatternCustom->setHtml(getDeleteFailPage()); | |
| 48 | - } | |
| 49 | - } | |
| 50 | - | |
| 51 | 60 | $main->setCentralPayload($oPatternCustom); |
| 52 | 61 | $main->render(); |
| 53 | 62 | } |
| 54 | 63 | -?> |
| 64 | +?> | |
| 55 | 65 | \ No newline at end of file | ... | ... |
presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc
| ... | ... | @@ -44,48 +44,44 @@ function getDeletePage($fDocFieldID) { |
| 44 | 44 | return $sToRender; |
| 45 | 45 | } |
| 46 | 46 | |
| 47 | -// get successfully deletion page | |
| 48 | -function getDeleteSuccessPage() { | |
| 49 | - | |
| 50 | - global $default; | |
| 51 | - | |
| 47 | +function getStatusPage($sHeading, $sText = "") { | |
| 48 | + global $default; | |
| 49 | + | |
| 52 | 50 | $sToRender .= renderHeading("Remove Document Field"); |
| 53 | - $sToRender .= "<TABLE BORDER=\"0\" CELLSPACING=\"2\" CELLPADDING=\"2\">\n"; | |
| 51 | + $sToRender .= "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n"; | |
| 54 | 52 | $sToRender .= "<tr>\n"; |
| 55 | - $sToRender .= "<td><b>Document Field SuccessFully Removed!</b></td>\n"; | |
| 56 | - $sToRender .= "</tr>\n"; | |
| 57 | - $sToRender .= "<tr></tr>\n"; | |
| 58 | - $sToRender .= "<tr></tr>\n"; | |
| 59 | - $sToRender .= "<tr></tr>\n"; | |
| 60 | - $sToRender .= "<tr></tr>\n"; | |
| 61 | - $sToRender .= "<tr>\n"; | |
| 62 | - $sToRender .= "<td align = right><a href=\"$default->rootUrl/control.php?action=listDocFields\"><img src =\"$default->graphicsUrl/widgets/back.gif\" border = \"0\" /></a></td>\n"; | |
| 53 | + $sToRender .= "<td><b>$sHeading</b></td>\n"; | |
| 63 | 54 | $sToRender .= "</tr>\n"; |
| 55 | + $sToRender .= "<tr/><tr/>\n"; | |
| 56 | + $sToRender .= "<tr><td>$sText</td></tr>\n"; | |
| 57 | + $sToRender .= "<tr/><tr/>\n"; | |
| 58 | + $sToRender .= "<td align=\"right\">" . generateControllerLink("listDocFields", "", "<img src =\"$default->graphicsUrl/widgets/back.gif\" border = \"0\" />") . "</td>\n"; | |
| 64 | 59 | $sToRender .= "</table>\n"; |
| 65 | - | |
| 66 | 60 | return $sToRender; |
| 67 | 61 | } |
| 68 | 62 | |
| 63 | +// get successfully deletion page | |
| 64 | +function getDeleteSuccessPage() { | |
| 65 | + return getStatusPage("Document Field SuccessFully Removed!"); | |
| 66 | +} | |
| 67 | + | |
| 69 | 68 | // get deletion failed page |
| 70 | 69 | function getDeleteFailPage() { |
| 70 | + return getStatusPage("Deletion Failed!", "Please Ensure that The Document Field has not been assigned"); | |
| 71 | +} | |
| 71 | 72 | |
| 72 | - global $default; | |
| 73 | - | |
| 74 | - $sToRender .= renderHeading("Remove Document Field"); | |
| 75 | - $sToRender .= "<TABLE BORDER=\"0\" CELLSPACING=\"2\" CELLPADDING=\"2\">\n"; | |
| 76 | - $sToRender .= "<tr>\n"; | |
| 77 | - $sToRender .= "<td><b>Deletion Failed!</b></td>\n"; | |
| 78 | - $sToRender .= "</tr>\n"; | |
| 79 | - $sToRender .= "<tr></tr>\n"; | |
| 80 | - $sToRender .= "<tr></tr>\n"; | |
| 81 | - $sToRender .= "<tr><td>Please Ensure that The Document Field has not been assigned</td></tr>\n"; | |
| 82 | - $sToRender .= "<tr></tr>\n"; | |
| 83 | - $sToRender .= "<tr></tr>\n"; | |
| 84 | - $sToRender .= "</tr>\n"; | |
| 85 | - $sToRender .= "<tr><td align = right><a href=\"$default->rootUrl/control.php?action=listDocFields\"><img src =\"$default->graphicsUrl/widgets/back.gif\" border = \"0\" /></a></td></tr>\n"; | |
| 73 | +function getFieldMappedPage($sDocumentFieldName, $aDocumentTypes) { | |
| 74 | + global $default; | |
| 75 | + | |
| 76 | + $sToRender .= "<table>\n"; | |
| 77 | + $sToRender .= "<tr><td>Document field '$sDocumentFieldName' is mapped to the following document type(s), and can therefore not be deleted.</td></tr>\n"; | |
| 78 | + $sToRender .= "<tr><td>Click on the Document Type name to edit its fields, or click 'Back' to return to List Document Fields.</td></tr>\n"; | |
| 79 | + for ($i=0; $i<count($aDocumentTypes); $i++) { | |
| 80 | + $sToRender .= "<tr><td><strong>" . generateControllerLink("editDocTypeFields", "fDocTypeSelected=1&fDocTypeID=" . $aDocumentTypes[$i]->getID(), $aDocumentTypes[$i]->getName()) . "</strong></td></tr>"; | |
| 81 | + } | |
| 86 | 82 | $sToRender .= "</table>\n"; |
| 87 | 83 | |
| 88 | - return $sToRender; | |
| 84 | + return getStatusPage("Can't delete document field '$sDocumentFieldName'", $sToRender); | |
| 89 | 85 | } |
| 90 | 86 | |
| 91 | 87 | // show listbox...or the text name |
| ... | ... | @@ -117,8 +113,8 @@ function getDocFieldDataType($oDocField) { |
| 117 | 113 | function getDeleteButton($oDocField) { |
| 118 | 114 | global $default; |
| 119 | 115 | if (isset($oDocField)) { |
| 120 | - return "<td align = right><input type=\"image\" src =\"$default->graphicsUrl/widgets/delete.gif\" value=\"submit\"border=\"0\" /></td>\n". | |
| 121 | - "<td align = right><a href=\"$default->rootUrl/control.php?action=listDocFields\"><img src =\"$default->graphicsUrl/widgets/cancel.gif\" border = \"0\" /></a></td>\n"; | |
| 116 | + return "<td align=\"right\"><input type=\"image\" src =\"$default->graphicsUrl/widgets/delete.gif\" value=\"submit\"border=\"0\" /></td>\n". | |
| 117 | + "<td align=\"right\">" . getControllerLink("listDocFields", "<img src =\"$default->graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "</td>\n"; | |
| 122 | 118 | } |
| 123 | 119 | } |
| 124 | 120 | |
| ... | ... | @@ -126,10 +122,10 @@ function getDeleteButton($oDocField) { |
| 126 | 122 | function getCancelButton($oDocField) { |
| 127 | 123 | global $default; |
| 128 | 124 | if (!isset($oDocField)) { |
| 129 | - return "<td align = right><a href=\"$default->rootUrl/control.php?action=docfield\"><img src =\"$default->graphicsUrl/widgets/cancel.gif\" value=\"cancel\" border = \"0\"/></a></td>\n"; | |
| 125 | + return "<td align=\"right\">" . getControllerLink("docfield", "<img src =\"$default->graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "</td>\n"; | |
| 130 | 126 | } |
| 131 | 127 | else { |
| 132 | - return "<td align = right><a href=\"$default->rootUrl/control.php?action=listDocFields\"><img src =\"$default->graphicsUrl/widgets/cancel.gif\" border = \"0\" /></a></td>\n"; | |
| 128 | + return "<td align=\"right\">" . getControllerLink("listDocFields", "<img src =\"$default->graphicsUrl/widgets/cancel.gif\" border = \"0\" />") . "</td>\n"; | |
| 133 | 129 | } |
| 134 | 130 | } |
| 135 | 131 | ?> | ... | ... |