Commit f763fe3e7848b23c96e1c194dec35bc199a9a8bc

Authored by Michael Joseph
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
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 ?>
... ...