Commit eb81f66f516f032af326348390209b247bac0dcf
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
Showing
2 changed files
with
40 additions
and
8 deletions
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> </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> </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) { |