Commit 51c1b9fda04c3822fe282d43570b820e927455d3

Authored by Neil Blakey-Milner
1 parent 60782450

Modernise bulk import to use dispatcher validation and implement

document type choice.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3785 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php
@@ -12,26 +12,40 @@ require_once(KT_LIB_DIR . "/visualpatterns/PatternMetaData.inc"); @@ -12,26 +12,40 @@ require_once(KT_LIB_DIR . "/visualpatterns/PatternMetaData.inc");
12 require_once(KT_LIB_DIR . "/import/fsimportstorage.inc.php"); 12 require_once(KT_LIB_DIR . "/import/fsimportstorage.inc.php");
13 require_once(KT_LIB_DIR . "/import/bulkimport.inc.php"); 13 require_once(KT_LIB_DIR . "/import/bulkimport.inc.php");
14 14
  15 +require_once(KT_LIB_DIR . "/validation/dispatchervalidation.inc.php");
  16 +
15 class KTBulkImportDispatcher extends KTStandardDispatcher { 17 class KTBulkImportDispatcher extends KTStandardDispatcher {
  18 + function check() {
  19 + if ($_REQUEST['fFolderID']) {
  20 + $_REQUEST['fFolderId'] = $_REQUEST['fFolderID'];
  21 + unset($_REQUEST['fFolderID']);
  22 + }
  23 + $this->oFolder =& $this->oValidator->validateFolder($_REQUEST['fFolderId']);
  24 + $this->oPermission =& $this->oValidator->validatePermissionByName('ktcore.permissions.write');
  25 + $this->oValidator->userHasPermissionOnItem($this->oUser, $this->oPermission, $this->oFolder);
  26 + return true;
  27 + }
  28 +
16 function do_main() { 29 function do_main() {
17 $oTemplating =& KTTemplating::getSingleton(); 30 $oTemplating =& KTTemplating::getSingleton();
18 $oTemplate = $oTemplating->loadTemplate('ktcore/import/fs_import'); 31 $oTemplate = $oTemplating->loadTemplate('ktcore/import/fs_import');
19 - $oFolder = Folder::get($_REQUEST['fFolderID']); 32 + $aTypes = $this->getDocumentTypes();
  33 + $iDefaultType = $aTypes[0]->getId();
20 $aFields = array( 34 $aFields = array(
21 - 'folder_id' => $oFolder->getID(),  
22 - 'folder_path_array' => $oFolder->getPathArray(),  
23 - 'document_type_choice' => $this->getDocumentTypeChoice('getMetadataForType(this.value);'), 35 + 'folder_id' => $this->oFolder->getID(),
  36 + 'folder_path_array' => $this->oFolder->getPathArray(),
  37 + 'document_type_choice' => $this->getDocumentTypeChoice($aTypes, 'getMetadataForType(this.value);'),
24 'generic_metadata_fields' => $this->getGenericMetadataFields(), 38 'generic_metadata_fields' => $this->getGenericMetadataFields(),
25 - 'type_metadata_fields' => $this->getTypeMetadataFields(1), 39 + 'type_metadata_fields' => $this->getTypeMetadataFields($iDefaultType),
26 ); 40 );
27 return $oTemplate->render($aFields); 41 return $oTemplate->render($aFields);
28 } 42 }
29 43
30 - function getDocumentTypeChoice($onchange = "") { 44 + function getDocumentTypeChoice($aTypes, $onchange = "") {
31 $oTemplating =& KTTemplating::getSingleton(); 45 $oTemplating =& KTTemplating::getSingleton();
32 $oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice'); 46 $oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice');
33 $aFields = array( 47 $aFields = array(
34 - 'document_types' => DocumentType::getList(), 48 + 'document_types' => $aTypes,
35 'onchange' => $onchange, 49 'onchange' => $onchange,
36 ); 50 );
37 return $oTemplate->render($aFields); 51 return $oTemplate->render($aFields);
@@ -39,7 +53,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { @@ -39,7 +53,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher {
39 53
40 function getGenericMetadataFields() { 54 function getGenericMetadataFields() {
41 $oTemplating = KTTemplating::getSingleton(); 55 $oTemplating = KTTemplating::getSingleton();
42 - $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); 56 + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields");
43 $aTemplateData = array( 57 $aTemplateData = array(
44 'caption' => _('Generic meta data'), 58 'caption' => _('Generic meta data'),
45 'empty_message' => _("No Generic Meta Data"), 59 'empty_message' => _("No Generic Meta Data"),
@@ -67,12 +81,25 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { @@ -67,12 +81,25 @@ class KTBulkImportDispatcher extends KTStandardDispatcher {
67 'fields' => $aFields, 81 'fields' => $aFields,
68 ); 82 );
69 $oTemplating = KTTemplating::getSingleton(); 83 $oTemplating = KTTemplating::getSingleton();
70 - $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); 84 + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/editable_metadata_fields");
71 return $oTemplate->render($aTemplateData); 85 return $oTemplate->render($aTemplateData);
72 } 86 }
73 87
  88 + function getDocumentTypes() {
  89 + $sTable = KTUtil::getTableName('folder_doctypes');
  90 + $aQuery = array(
  91 + "SELECT document_type_id FROM $sTable WHERE folder_id = ?",
  92 + array($this->oFolder->getId()),
  93 + );
  94 + $aIds = DBUtil::getResultArrayKey($aQuery, 'document_type_id');
  95 + $aRet = array();
  96 + foreach ($aIds as $iId) {
  97 + $aRet[] = DocumentType::get($iId);
  98 + }
  99 + return $aRet;
  100 + }
  101 +
74 function do_import() { 102 function do_import() {
75 - $oFolder =& Folder::get($_REQUEST['fFolderID']);  
76 $matches = array(); 103 $matches = array();
77 $aFields = array(); 104 $aFields = array();
78 foreach ($_REQUEST as $k => $v) { 105 foreach ($_REQUEST as $k => $v) {
@@ -87,8 +114,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { @@ -87,8 +114,7 @@ class KTBulkImportDispatcher extends KTStandardDispatcher {
87 ); 114 );
88 115
89 $fs =& new KTFSImportStorage($_REQUEST['fPath']); 116 $fs =& new KTFSImportStorage($_REQUEST['fPath']);
90 - $oUser =& User::get($_SESSION['userID']);  
91 - $bm =& new KTBulkImportManager($oFolder, $fs, $oUser, $aOptions); 117 + $bm =& new KTBulkImportManager($this->oFolder, $fs, $this->oUser, $aOptions);
92 DBUtil::startTransaction(); 118 DBUtil::startTransaction();
93 $res = $bm->import(); 119 $res = $bm->import();
94 if (PEAR::isError($res)) { 120 if (PEAR::isError($res)) {
@@ -98,19 +124,9 @@ class KTBulkImportDispatcher extends KTStandardDispatcher { @@ -98,19 +124,9 @@ class KTBulkImportDispatcher extends KTStandardDispatcher {
98 DBUtil::commit(); 124 DBUtil::commit();
99 } 125 }
100 126
101 - controllerRedirect("browse", 'fFolderID=' . $oFolder->getID()); 127 + controllerRedirect("browse", 'fFolderID=' . $this->oFolder->getID());
102 exit(0); 128 exit(0);
103 } 129 }
104 -  
105 - function handleOutput($data) {  
106 - global $main;  
107 - if (empty($data)) {  
108 - $data = "";  
109 - }  
110 - $main->bFormDisabled = true;  
111 - $main->setCentralPayload($data);  
112 - $main->render();  
113 - }  
114 } 130 }
115 131
116 $d =& new KTBulkImportDispatcher; 132 $d =& new KTBulkImportDispatcher;