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,6 +15,7 @@ if (checkSession()) {
15 require_once("removeDocFieldUI.inc"); 15 require_once("removeDocFieldUI.inc");
16 require_once("$default->fileSystemRoot/lib/security/permission.inc"); 16 require_once("$default->fileSystemRoot/lib/security/permission.inc");
17 require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentField.inc"); 17 require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentField.inc");
  18 + require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc");
18 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 19 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
19 require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); 20 require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
20 require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); 21 require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc");
@@ -23,32 +24,40 @@ if (checkSession()) { @@ -23,32 +24,40 @@ if (checkSession()) {
23 24
24 $oPatternCustom = & new PatternCustom(); 25 $oPatternCustom = & new PatternCustom();
25 26
26 - // get main page  
27 if (isset($fDocFieldID)) { 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 } else { 54 } else {
  55 + // prompt for a field to delete
34 $oPatternCustom->setHtml(getDeletePage(null)); 56 $oPatternCustom->setHtml(getDeletePage(null));
35 $main->setFormAction($_SERVER["PHP_SELF"] ); 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 $main->setCentralPayload($oPatternCustom); 60 $main->setCentralPayload($oPatternCustom);
52 $main->render(); 61 $main->render();
53 } 62 }
54 -?> 63 -?>
  64 +?>
55 \ No newline at end of file 65 \ No newline at end of file
presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/removeDocFieldUI.inc
@@ -44,48 +44,44 @@ function getDeletePage($fDocFieldID) { @@ -44,48 +44,44 @@ function getDeletePage($fDocFieldID) {
44 return $sToRender; 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 $sToRender .= renderHeading("Remove Document Field"); 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 $sToRender .= "<tr>\n"; 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 $sToRender .= "</tr>\n"; 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 $sToRender .= "</table>\n"; 59 $sToRender .= "</table>\n";
65 -  
66 return $sToRender; 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 // get deletion failed page 68 // get deletion failed page
70 function getDeleteFailPage() { 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 $sToRender .= "</table>\n"; 82 $sToRender .= "</table>\n";
87 83
88 - return $sToRender; 84 + return getStatusPage("Can't delete document field '$sDocumentFieldName'", $sToRender);
89 } 85 }
90 86
91 // show listbox...or the text name 87 // show listbox...or the text name
@@ -117,8 +113,8 @@ function getDocFieldDataType($oDocField) { @@ -117,8 +113,8 @@ function getDocFieldDataType($oDocField) {
117 function getDeleteButton($oDocField) { 113 function getDeleteButton($oDocField) {
118 global $default; 114 global $default;
119 if (isset($oDocField)) { 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,10 +122,10 @@ function getDeleteButton($oDocField) {
126 function getCancelButton($oDocField) { 122 function getCancelButton($oDocField) {
127 global $default; 123 global $default;
128 if (!isset($oDocField)) { 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 else { 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 ?>