Commit eb81f66f516f032af326348390209b247bac0dcf

Authored by Neil Blakey-Milner
1 parent d23ca1fb

Allow the user to choose multiple document types when creating a folder.

Default the document types to that of the parent folder.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3113 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderBL.php
@@ -149,9 +149,25 @@ if (!$oFolder->create()) { @@ -149,9 +149,25 @@ if (!$oFolder->create()) {
149 exit(0); 149 exit(0);
150 } 150 }
151 151
  152 +if (!is_array($fDocumentTypeID)) {
  153 + $fDocumentTypeID = array($fDocumentTypeID);
  154 +}
  155 +
  156 +$aFolderDocTypeLinks = array();
  157 +$bFailed = false;
  158 +foreach ($fDocumentTypeID as $iDocumentTypeID) {
  159 + $oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $iDocumentTypeID);
  160 + if (!$oFolderDocTypeLink->create()) {
  161 + $bFailed = true;
  162 + break;
  163 + }
  164 + $aFolderDocTypeLinks[] =& $oFolderDocTypeLink;
  165 +}
152 166
153 -$oFolderDocTypeLink = & new FolderDocTypeLink($oFolder->getID(), $fDocumentTypeID);  
154 -if (!$oFolderDocTypeLink->create()) { 167 +if ($bFailed) {
  168 + foreach ($aFolderDocTypeLinks as $oFolderDocTypeLink) {
  169 + $oFolderDocTypeLink->delete();
  170 + }
155 //couldn't associate the chosen document type with this folder 171 //couldn't associate the chosen document type with this folder
156 $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"); 172 $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");
157 173
@@ -173,7 +189,10 @@ if (!PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getI @@ -173,7 +189,10 @@ if (!PhysicalFolderManagement::createFolder(Folder::getFolderPath($oFolder->getI
173 $default->log->error("addFolderBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID"); 189 $default->log->error("addFolderBL.php Filesystem error attempting to store folder name=$fFolderName in parent folder '" . Folder::getFolderPath($fFolderID) . "' id=$fFolderID");
174 190
175 // remove the folder and its doc type link from the db and report and error 191 // remove the folder and its doc type link from the db and report and error
176 - $oFolderDocTypeLink->delete(); 192 + foreach ($aFolderDocTypeLinks as $oFolderDocTypeLink) {
  193 + $oFolderDocTypeLink->delete();
  194 + }
  195 + //couldn't associate the chosen document type with this folder
177 $oFolder->delete(); 196 $oFolder->delete();
178 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 197 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
179 $oPatternCustom->setHtml(renderBrowsePage($fFolderID)); 198 $oPatternCustom->setHtml(renderBrowsePage($fFolderID));
presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderUI.inc
@@ -55,7 +55,7 @@ function getRightSide($iFolderID) { @@ -55,7 +55,7 @@ function getRightSide($iFolderID) {
55 $sToRender .= "</tr>\n"; 55 $sToRender .= "</tr>\n";
56 $sToRender .= "<tr>\n"; 56 $sToRender .= "<tr>\n";
57 $sToRender .= "<td><b>" . _("Document Type") . ": </b></td>\n"; 57 $sToRender .= "<td><b>" . _("Document Type") . ": </b></td>\n";
58 - $sToRender .= "<td>" . getDocumentTypeDropDown() . "</td>\n"; 58 + $sToRender .= "<td>" . getDocumentTypeDropDown($iFolderID) . "</td>\n";
59 $sToRender .= "</tr>\n"; 59 $sToRender .= "</tr>\n";
60 $sToRender .= "<td><table border=\"0\"><tr><td><input type=\"image\" src=\"" . KTHtml::getAddButton() . "\" border=\"0\"></td><td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a></td></tr></table></td><td>&nbsp</td>\n"; 60 $sToRender .= "<td><table border=\"0\"><tr><td><input type=\"image\" src=\"" . KTHtml::getAddButton() . "\" border=\"0\"></td><td><a href=\"$default->rootUrl/control.php?action=browse&fFolderID=$iFolderID\"><img src=\"" . KTHtml::getCancelButton() . "\" border=\"0\"></a></td></tr></table></td><td>&nbsp</td>\n";
61 $sToRender .= "</tr>\n"; 61 $sToRender .= "</tr>\n";
@@ -75,11 +75,24 @@ function getRightSide($iFolderID) { @@ -75,11 +75,24 @@ function getRightSide($iFolderID) {
75 return $sToRender; 75 return $sToRender;
76 } 76 }
77 77
78 -function getDocumentTypeDropDown() { 78 +function getDocumentTypeDropDown($iFolderID) {
79 global $default; 79 global $default;
80 - $oPatternListBox = & new PatternListBox("$default->document_types_table", "name", "id", "fDocumentTypeID");  
81 - $oPatternListBox->setIncludeDefaultValue(false);  
82 - return $oPatternListBox->render(); 80 +// $oPatternListBox = & new PatternListBox("$default->document_types_table", "name", "id", "fDocumentTypeID");
  81 +// $oPatternListBox->setIncludeDefaultValue(false);
  82 +// return $oPatternListBox->render();
  83 + require_once("$default->fileSystemRoot/lib/documentmanagement/DocumentType.inc");
  84 + $aDocumentTypes = DocumentType::getList();
  85 + $ret = "";
  86 + $ret .= sprintf("<SELECT NAME=\"%s\" SIZE=\"%d\" MULTIPLE=\"1\">\n", 'fDocumentTypeID[]', 5);
  87 + foreach ($aDocumentTypes as $oDocumentType) {
  88 + $sSelected = "";
  89 + if (Folder::folderIsLinkedToDocType($iFolderID, $oDocumentType->getID())) {
  90 + $sSelected = " SELECTED";
  91 + }
  92 + $ret .= sprintf("<OPTION VALUE=\"%s\"%s>%s</OPTION>\n", $oDocumentType->getID(), $sSelected, $oDocumentType->getName());
  93 + }
  94 + $ret .= "</SELECT>\n";
  95 + return $ret;
83 } 96 }
84 97
85 function renderBrowsePage($iFolderID) { 98 function renderBrowsePage($iFolderID) {