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 44 $main->setHasRequiredFields(true);
45 45 $main->render();
46 46 } else {
  47 + // a document type has been specified
  48 + if (isset($fDocumentTypeID)) {
47 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 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 104 $oFolder->delete();
89 105 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
90 106 $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
91 107 $main->setCentralPayload($oPatternCustom);
92 108 $main->setErrorMessage("There was an error creating the folder $fFolderName on the filesystem");
93 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 148 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
138   - $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
  149 + $oPatternCustom->setHtml(renderBrowseAddPage($fFolderID));
139 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 152 $main->setFormAction("addFolderBL.php?fFolderID=$fFolderID");
142   - $main->render();
143   - }
  153 + $main->render();
  154 + }
144 155 }
145 156 } else {
146 157 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
... ...
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderUI.inc
... ... @@ -38,7 +38,7 @@ function getRightSide($iFolderID) {
38 38 $sToRender .= "<td><input type=\"text\" name=\"fFolderName\" value=\"\" /></td>\n";
39 39 $sToRender .= "</tr>\n";
40 40 $sToRender .= "<tr>\n";
41   - $sToRender .= "<td><b>Doc Type: </b></td>\n";
  41 + $sToRender .= "<td><b>Document Type: </b></td>\n";
42 42 $sToRender .= "<td>" . getDocumentTypeDropDown() . "</td>\n";
43 43 $sToRender .= "</tr>\n";
44 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 49 $sToRender .= "function validateForm(theForm) {\n";
50 50 $sToRender .= "\tif (!(validRequired(theForm.fFolderName, 'Folder Name'))) {\n";
51 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 55 $sToRender .= "\t}\n";
53 56 $sToRender .= "return true;\n}\n";
54 57 $sToRender .= "//-->\n</script>\n\n";
... ...