From a503fff2c48457f602ebe8a3e91a4df2f56d2f0c Mon Sep 17 00:00:00 2001 From: nbm Date: Wed, 21 Sep 2005 22:46:58 +0000 Subject: [PATCH] Bulk import action to import files from the filesystem. --- presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ templates/ktcore/import/fs_import.smarty | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 189 insertions(+), 0 deletions(-) create mode 100644 presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php create mode 100644 templates/ktcore/import/fs_import.smarty diff --git a/presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php b/presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php new file mode 100644 index 0000000..d731c6c --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/documentmanagement/bulkImport.php @@ -0,0 +1,118 @@ +loadTemplate('ktcore/import/fs_import'); + $oFolder = Folder::get($_REQUEST['fFolderID']); + $aFields = array( + 'folder_id' => $oFolder->getID(), + 'folder_path_array' => $oFolder->getPathArray(), + 'document_type_choice' => $this->getDocumentTypeChoice('getMetadataForType(this.value);'), + 'generic_metadata_fields' => $this->getGenericMetadataFields(), + 'type_metadata_fields' => $this->getTypeMetadataFields(1), + ); + return $oTemplate->render($aFields); + } + + function getDocumentTypeChoice($onchange = "") { + $oTemplating =& KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate('ktcore/document/document_type_choice'); + $aFields = array( + 'document_types' => DocumentType::getList(), + 'onchange' => $onchange, + ); + return $oTemplate->render($aFields); + } + + function getGenericMetadataFields() { + $oTemplating = KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); + $aTemplateData = array( + 'caption' => _('Generic meta data'), + 'empty_message' => _("No Generic Meta Data"), + 'fields' => DocumentField::getList(array('is_generic = ?', array(true))), + ); + return $oTemplate->render($aTemplateData); + } + + function getTypeMetadataFields($iDocumentTypeID) { + global $default; + /*ok*/ $sQuery = array("SELECT DF.id AS id " . + "FROM document_fields AS DF LEFT JOIN document_type_fields_link AS DTFL ON DTFL.field_id = DF.id " . + "WHERE DF.is_generic = ? " . + "AND DTFL.document_type_id = ?", array(false, $iDocumentTypeID)); + + $aIDs = DBUtil::getResultArray($sQuery); + + $aFields = array(); + foreach ($aIDs as $iID) { + $aFields[] =& call_user_func(array('DocumentField', 'get'), $iID); + } + $aTemplateData = array( + 'caption' => _('Type specific meta data'), + 'empty_message' => _("No Type Specific Meta Data"), + 'fields' => $aFields, + ); + $oTemplating = KTTemplating::getSingleton(); + $oTemplate = $oTemplating->loadTemplate("ktcore/metadata_fields/editable_metadata_fields"); + return $oTemplate->render($aTemplateData); + } + + function do_import() { + $oFolder =& Folder::get($_REQUEST['fFolderID']); + $matches = array(); + $aFields = array(); + foreach ($_REQUEST as $k => $v) { + if (preg_match('/^emd(\d+)$/', $k, $matches)) { + $aFields[] = array(DocumentField::get($matches[1]), $v); + } + } + + $aOptions = array( + 'documenttype' => DocumentType::get($fDocumentTypeID), + 'metadata' => $aFields, + ); + + $fs =& new KTFSImportStorage($_REQUEST['fPath']); + $oUser =& User::get($_SESSION['userID']); + $bm =& new KTBulkImportManager($oFolder, $fs, $oUser, $aOptions); + DBUtil::startTransaction(); + $res = $bm->import(); + if (PEAR::isError($res)) { + DBUtil::rollback(); + $_SESSION["KTErrorMessage"][] = _("Bulk import failed") . ": " . $res->getMessage(); + } else { + DBUtil::commit(); + } + + controllerRedirect("browse", 'fFolderID=' . $oFolder->getID()); + } + + function handleOutput($data) { + global $main; + if (empty($data)) { + $data = ""; + } + $main->bFormDisabled = true; + $main->setCentralPayload($data); + $main->render(); + } +} + +$d =& new KTBulkImportDispatcher; +$d->dispatch(); + +?> diff --git a/templates/ktcore/import/fs_import.smarty b/templates/ktcore/import/fs_import.smarty new file mode 100644 index 0000000..ac93447 --- /dev/null +++ b/templates/ktcore/import/fs_import.smarty @@ -0,0 +1,71 @@ + + + +{literal} + +{/literal} + +
+ + + + +

Bulk Import

+ + + + + + + + + + + + + + +
Folder{" > "|join:$folder_path_array}
Path
Document Type +{$document_type_choice} +
+ +
+{$generic_metadata_fields} +
+ +
+{$type_metadata_fields} +
+ + +
-- libgit2 0.21.4