Commit 778b1e4a2625bd4b1499424eb77cee966ac51c65

Authored by michael
1 parent d7948013

added document type validation


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@2527 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderBL.php
@@ -44,103 +44,114 @@ if (checkSession()) { @@ -44,103 +44,114 @@ if (checkSession()) {
44 $main->setHasRequiredFields(true); 44 $main->setHasRequiredFields(true);
45 $main->render(); 45 $main->render();
46 } else { 46 } else {
  47 + // a document type has been specified
  48 + if (isset($fDocumentTypeID)) {
47 //have a folder name to store 49 //have a folder name to store
48 - if (Permission::userHasFolderWritePermission($fFolderID)) {  
49 - //check for illegal characters in the folder name  
50 - if (strpos($fFolderName, "\\") === false && strpos($fFolderName, ">") === false &&  
51 - strpos($fFolderName, "<") === false && strpos($fFolderName, ":") === false &&  
52 - strpos($fFolderName, "*") === false && strpos($fFolderName, "?") === false &&  
53 - strpos($fFolderName, "|") === false && strpos($fFolderName, "/") === false &&  
54 - strpos($fFolderName, "\"") === false) {  
55 -  
56 - if (Folder::folderExistsName($fFolderName, $fFolderID)) {  
57 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
58 - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));  
59 - $main->setCentralPayload($oPatternCustom);  
60 - $main->setErrorMessage("There is another folder named $fFolderName in this folder already");  
61 - $main->setHasRequiredFields(true);  
62 - $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");  
63 - $main->render();  
64 - } else {  
65 - $oParentFolder = Folder::get($fFolderID);  
66 - //create the folder in the db, giving it the properties of it's parent folder  
67 - $oFolder = & new Folder($fFolderName, "", $fFolderID, $_SESSION["userID"], $oParentFolder->getUnitID());  
68 - if ($oFolder->create()) {  
69 - $oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $fDocumentTypeID);  
70 - if ($oFolderDocTypeLink->create()) {  
71 - //create the folder on the file system  
72 - if (PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getID()))) {  
73 - $default->log->info("addFolderBL.php successfully added folder $fFolderName to parent folder " . Folder::getFolderPath($fFolderID) . " id=$fFolderID");  
74 -  
75 - // fire subscription alerts for the new folder  
76 - $count = SubscriptionEngine::fireSubscription($oParentFolder->getID(), SubscriptionConstants::subscriptionAlertType("AddFolder"),  
77 - SubscriptionConstants::subscriptionType("FolderSubscription"),  
78 - array( "newFolderName" => $fFolderName,  
79 - "parentFolderName" => $oParentFolder->getName()) );  
80 - $default->log->info("addFolderBL.php fired $count subscription alerts for new folder $fFolderName");  
81 - redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oFolder->getID()); 50 + if (Permission::userHasFolderWritePermission($fFolderID)) {
  51 + //check for illegal characters in the folder name
  52 + if (strpos($fFolderName, "\\") === false && strpos($fFolderName, ">") === false &&
  53 + strpos($fFolderName, "<") === false && strpos($fFolderName, ":") === false &&
  54 + strpos($fFolderName, "*") === false && strpos($fFolderName, "?") === false &&
  55 + strpos($fFolderName, "|") === false && strpos($fFolderName, "/") === false &&
  56 + strpos($fFolderName, "\"") === false) {
  57 +
  58 + if (Folder::folderExistsName($fFolderName, $fFolderID)) {
  59 + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
  60 + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));
  61 + $main->setCentralPayload($oPatternCustom);
  62 + $main->setErrorMessage("There is another folder named $fFolderName in this folder already");
  63 + $main->setHasRequiredFields(true);
  64 + $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
  65 + $main->render();
  66 + } else {
  67 + $oParentFolder = Folder::get($fFolderID);
  68 + //create the folder in the db, giving it the properties of it's parent folder
  69 + $oFolder = & new Folder($fFolderName, "", $fFolderID, $_SESSION["userID"], $oParentFolder->getUnitID());
  70 + if ($oFolder->create()) {
  71 + $oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $fDocumentTypeID);
  72 + if ($oFolderDocTypeLink->create()) {
  73 + //create the folder on the file system
  74 + if (PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getID()))) {
  75 + $default->log->info("addFolderBL.php successfully added folder $fFolderName to parent folder " . Folder::getFolderPath($fFolderID) . " id=$fFolderID");
  76 +
  77 + // fire subscription alerts for the new folder
  78 + $count = SubscriptionEngine::fireSubscription($oParentFolder->getID(), SubscriptionConstants::subscriptionAlertType("AddFolder"),
  79 + SubscriptionConstants::subscriptionType("FolderSubscription"),
  80 + array( "newFolderName" => $fFolderName,
  81 + "parentFolderName" => $oParentFolder->getName()) );
  82 + $default->log->info("addFolderBL.php fired $count subscription alerts for new folder $fFolderName");
  83 + redirect("$default->rootUrl/control.php?action=editFolder&fFolderID=" . $oFolder->getID());
  84 + } else {
  85 + //if we couldn't do that
  86 + $default->log->error("addFolderBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID");
  87 +
  88 + // remove the folder and its doc type link from the db and report and error
  89 + $oFolderDocTypeLink->delete();
  90 + $oFolder->delete();
  91 + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
  92 + $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
  93 + $main->setCentralPayload($oPatternCustom);
  94 + $main->setErrorMessage("There was an error creating the folder $fFolderName on the filesystem");
  95 + $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
  96 + $main->setHasRequiredFields(true);
  97 + $main->render();
  98 + }
82 } else { 99 } else {
83 - //if we couldn't do that  
84 - $default->log->error("addDocumentBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); 100 + //couldn't associate the chosen document type with this folder
  101 + $default->log->error("addFolderBL.php DB error storing folder-document type link for folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' folderID=$fFolderID; docTypeID=$fDocumentTypeID");
85 102
86 - // remove the folder and its doc type link from the db and report and error  
87 - $oFolderDocTypeLink->delete(); 103 + //remove the folder from the database
88 $oFolder->delete(); 104 $oFolder->delete();
89 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 105 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
90 $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); 106 $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
91 $main->setCentralPayload($oPatternCustom); 107 $main->setCentralPayload($oPatternCustom);
92 $main->setErrorMessage("There was an error creating the folder $fFolderName on the filesystem"); 108 $main->setErrorMessage("There was an error creating the folder $fFolderName on the filesystem");
93 $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); 109 $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
94 - $main->setHasRequiredFields(true);  
95 - $main->render(); 110 + $main->setHasRequiredFields(true);
  111 + $main->render();
96 } 112 }
97 - } else {  
98 - //couldn't associate the chosen document type with this folder  
99 - $default->log->error("addDocumentBL.php DB error storing folder-document type link for folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' folderID=$fFolderID; docTypeID=$fDocumentTypeID");  
100 -  
101 - //remove the folder from the database  
102 - $oFolder->delete();  
103 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
104 - $oPatternCustom->setHtml(renderBrowsePage($fFolderID));  
105 - $main->setCentralPayload($oPatternCustom);  
106 - $main->setErrorMessage("There was an error creating the folder $fFolderName on the filesystem");  
107 - $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");  
108 - $main->setHasRequiredFields(true);  
109 - $main->render();  
110 - }  
111 - } else {  
112 - //if we couldn't create the folder in the db, report an error  
113 - $default->log->error("addDocumentBL.php DB error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID");  
114 -  
115 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
116 - $oPatternCustom->setHtml(renderBrowsePage($fFolderID));  
117 - $main->setCentralPayload($oPatternCustom);  
118 - $main->setErrorMessage("There was an error creating the folder $fFolderName in the database");  
119 - $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");  
120 - $main->render();  
121 - }  
122 - }  
123 - } else {  
124 - //the user entered an illegal character in the folder name  
125 - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");  
126 - $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));  
127 - $main->setCentralPayload($oPatternCustom);  
128 - $main->setErrorMessage("Folder not created. Folder names may not contain: '<', '>', '*', '/', '\', '|', '?' or '\"' ");  
129 - $main->setHasRequiredFields(true);  
130 - $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");  
131 - $main->render();  
132 - }  
133 -  
134 - } else {  
135 - //if the user doesn't have write permission for this folder,  
136 - //give them only browse facilities 113 + } else {
  114 + //if we couldn't create the folder in the db, report an error
  115 + $default->log->error("addFolderBL.php DB error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID");
  116 +
  117 + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
  118 + $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
  119 + $main->setCentralPayload($oPatternCustom);
  120 + $main->setErrorMessage("There was an error creating the folder $fFolderName in the database");
  121 + $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
  122 + $main->render();
  123 + }
  124 + }
  125 + } else {
  126 + //the user entered an illegal character in the folder name
  127 + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
  128 + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));
  129 + $main->setCentralPayload($oPatternCustom);
  130 + $main->setErrorMessage("Folder not created. Folder names may not contain: '<', '>', '*', '/', '\', '|', '?' or '\"' ");
  131 + $main->setHasRequiredFields(true);
  132 + $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
  133 + $main->render();
  134 + }
  135 +
  136 + } else {
  137 + //if the user doesn't have write permission for this folder,
  138 + //give them only browse facilities
  139 + require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
  140 + $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
  141 + $main->setCentralPayload($oPatternCustom);
  142 + $main->setErrorMessage("You do not have permission to create new folders in this folder");
  143 + $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
  144 + $main->render();
  145 + }
  146 + } else {
  147 + //there are no document type assigned to this folder
137 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 148 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
138 - $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); 149 + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));
139 $main->setCentralPayload($oPatternCustom); 150 $main->setCentralPayload($oPatternCustom);
140 - $main->setErrorMessage("You do not have permission to create new folders in this folder"); 151 + $main->setErrorMessage("You did not specify a document type. If there are no system document types, please contact a System Administrator.");
141 $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID"); 152 $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
142 - $main->render();  
143 - } 153 + $main->render();
  154 + }
144 } 155 }
145 } else { 156 } else {
146 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 157 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderUI.inc
@@ -38,7 +38,7 @@ function getRightSide($iFolderID) { @@ -38,7 +38,7 @@ function getRightSide($iFolderID) {
38 $sToRender .= "<td><input type=\"text\" name=\"fFolderName\" value=\"\" /></td>\n"; 38 $sToRender .= "<td><input type=\"text\" name=\"fFolderName\" value=\"\" /></td>\n";
39 $sToRender .= "</tr>\n"; 39 $sToRender .= "</tr>\n";
40 $sToRender .= "<tr>\n"; 40 $sToRender .= "<tr>\n";
41 - $sToRender .= "<td><b>Doc Type: </b></td>\n"; 41 + $sToRender .= "<td><b>Document Type: </b></td>\n";
42 $sToRender .= "<td>" . getDocumentTypeDropDown() . "</td>\n"; 42 $sToRender .= "<td>" . getDocumentTypeDropDown() . "</td>\n";
43 $sToRender .= "</tr>\n"; 43 $sToRender .= "</tr>\n";
44 $sToRender .= "<td><table border=\"0\"><tr><td><input type=\"image\" src=\"$default->graphicsUrl/widgets/add.gif\" border=\"0\"></td><td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\"><img src=\"$default->graphicsUrl/widgets/cancel.gif\" border=\"0\"></a></td></tr></table></td><td>&nbsp</td>\n"; 44 $sToRender .= "<td><table border=\"0\"><tr><td><input type=\"image\" src=\"$default->graphicsUrl/widgets/add.gif\" border=\"0\"></td><td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\"><img src=\"$default->graphicsUrl/widgets/cancel.gif\" border=\"0\"></a></td></tr></table></td><td>&nbsp</td>\n";
@@ -49,6 +49,9 @@ function getRightSide($iFolderID) { @@ -49,6 +49,9 @@ function getRightSide($iFolderID) {
49 $sToRender .= "function validateForm(theForm) {\n"; 49 $sToRender .= "function validateForm(theForm) {\n";
50 $sToRender .= "\tif (!(validRequired(theForm.fFolderName, 'Folder Name'))) {\n"; 50 $sToRender .= "\tif (!(validRequired(theForm.fFolderName, 'Folder Name'))) {\n";
51 $sToRender .= "\t\treturn false;\n"; 51 $sToRender .= "\t\treturn false;\n";
  52 + $sToRender .= "\t}\n";
  53 + $sToRender .= "\tif (!(validRequired(theForm.fDocumentTypeID, 'Document Type'))) {\n";
  54 + $sToRender .= "\t\treturn false;\n";
52 $sToRender .= "\t}\n"; 55 $sToRender .= "\t}\n";
53 $sToRender .= "return true;\n}\n"; 56 $sToRender .= "return true;\n}\n";
54 $sToRender .= "//-->\n</script>\n\n"; 57 $sToRender .= "//-->\n</script>\n\n";