From 57776dcdfb3c794175127061cac1f3fac374a84f Mon Sep 17 00:00:00 2001 From: Megan Watson Date: Wed, 13 Feb 2008 14:21:27 +0000 Subject: [PATCH] KTS-1489 "Unarchival action not recorded within document transaction history" Fixed. Added a transaction in. --- plugins/ktcore/admin/archivedDocuments.php | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------- templates/ktcore/document/admin/archivebrowse.smarty | 20 +++++++++++++------- 2 files changed, 69 insertions(+), 65 deletions(-) diff --git a/plugins/ktcore/admin/archivedDocuments.php b/plugins/ktcore/admin/archivedDocuments.php index 3072083..c9533d2 100755 --- a/plugins/ktcore/admin/archivedDocuments.php +++ b/plugins/ktcore/admin/archivedDocuments.php @@ -5,32 +5,32 @@ * KnowledgeTree Open Source Edition * Document Management Made Simple * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited - * + * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * + * * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. - * + * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. - * + * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by - * KnowledgeTree" logo and retain the original copyright notice. If the display of the + * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices - * must display the words "Powered by KnowledgeTree" and retain the original - * copyright notice. + * must display the words "Powered by KnowledgeTree" and retain the original + * copyright notice. * Contributor( s): ______________________________________ * */ @@ -53,12 +53,12 @@ require_once(KT_LIB_DIR . "/documentmanagement/PhysicalDocumentManager.inc"); // FIXME chain in a notification alert for un-archival requests. class KTArchiveTitle extends TitleColumn { - + function renderDocumentLink($aDataRow) { $outStr .= $aDataRow["document"]->getName(); return $outStr; - } - + } + function buildFolderLink($aDataRow) { return KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fFolderId=%d', $aDataRow["folder"]->getId())); } @@ -68,94 +68,88 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher { var $sHelpPage = 'ktcore/admin/archived documents.html'; function do_main () { $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Archived Documents')); - + $this->oPage->setBreadcrumbDetails(_kt('browse')); - + $oFolder = Folder::get(KTUtil::arrayGet($_REQUEST, 'fFolderId', 1)); - if (PEAR::isError($oFolder)) { + if (PEAR::isError($oFolder)) { $this->errorRedirectToMain(_kt('Invalid folder selected.')); exit(0); } - - // Setup the collection for move display. - + + // Setup the collection for restore display. $aBaseParams = array(); $collection = new AdvancedCollection(); $oCR =& KTColumnRegistry::getSingleton(); - - // selection col $col = $oCR->getColumn('ktcore.columns.selection'); - $col->setOptions(array('show_folders' => false, 'rangename' => '_d[]')); + $aColOptions = array(); + //$aColOptions['qs_params'] = kt_array_merge($aBaseParams, array('fFolderId'=>$oFolder->getId())); + $aColOptions['show_folders'] = false; + $aColOptions['show_documents'] = true; + $aColOptions['rangename'] = '_d[]'; + $col->setOptions($aColOptions); $collection->addColumn($col); - - // title col + $col = $oCR->getColumn('ktcore.columns.title'); + //$col->setOptions(array('qs_params'=>kt_array_merge($aBaseParams, array('action' => 'new', 'fFolderId'=>$oFolder->getId())))); $col->setOptions(array('link_documents' => false)); - $collection->addColumn($col); + //$qObj = new BrowseQuery($iFolderId); $qObj = new ArchivedBrowseQuery($oFolder->getId()); $collection->setQueryObject($qObj); $aOptions = $collection->getEnvironOptions(); - $aOptions['result_url'] = KTUtil::addQueryString($_SERVER['PHP_SELF'], + $aOptions['result_url'] = KTUtil::addQueryString($_SERVER['PHP_SELF'], array(kt_array_merge($aBaseParams, array('fFolderId' => $oFolder->getId())))); $collection->setOptions($aOptions); - $oWF =& KTWidgetFactory::getSingleton(); - $oWidget = $oWF->get('ktcore.widgets.collection', - array('label' => _kt('Target Documents'), - 'description' => _kt('Use the folder collection and path below to browse to the folder containing the documents you wish to restore.'), - 'required' => true, - 'name' => 'browse', - 'folder_id' => $oFolder->getId(), - 'bcurl_params' => $aBaseParams, - 'collection' => $collection)); + $aURLParams = $aBaseParams; + $aURLParams['action'] = 'restore'; + $aBreadcrumbs = KTUtil::generate_breadcrumbs($oFolder, $iFolderId, $aURLParams); - - $oTemplating =& KTTemplating::getSingleton(); - $oTemplate = $oTemplating->loadTemplate("ktcore/document/admin/archivebrowse"); $aTemplateData = array( - "context" => $this, + 'context' => $this, 'folder' => $oFolder, 'breadcrumbs' => $aBreadcrumbs, - 'collection' => $oWidget, + 'collection' => $collection ); - - return $oTemplate->render($aTemplateData); + + $oTemplate =& $this->oValidator->validateTemplate('ktcore/document/admin/archivebrowse'); + return $oTemplate->render($aTemplateData); } - + /* * Provide for "archived" browsing. */ function do_browse() { - + } - + function do_confirm_restore() { $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Archived Documents')); - - $selected_docs = KTUtil::arrayGet($_REQUEST, '_d', array()); - + + $selected_docs = KTUtil::arrayGet($_REQUEST, '_d', array()); + $this->oPage->setTitle(sprintf(_kt('Confirm Restore of %d documents'), count($selected_docs))); - + $this->oPage->setBreadcrumbDetails(sprintf(_kt('confirm restore of %d documents'), count($selected_docs))); - + $aDocuments = array(); foreach ($selected_docs as $doc_id) { $oDoc =& Document::get($doc_id); - if (PEAR::isError($oDoc) || ($oDoc === false)) { + if (PEAR::isError($oDoc) || ($oDoc === false)) { $this->errorRedirectToMain(_kt('Invalid document id specified. Aborting restore.')); } else if ($oDoc->getStatusId() != ARCHIVED) { $this->errorRedirectToMain(sprintf(_kt('%s is not an archived document. Aborting restore.'), $oDoc->getName())); } $aDocuments[] = $oDoc; } - - + + $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate('ktcore/document/admin/dearchiveconfirmlist'); $oTemplate->setData(array( @@ -167,22 +161,22 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher { function do_finish_restore() { - - $selected_docs = KTUtil::arrayGet($_REQUEST, 'selected_docs', array()); - + + $selected_docs = KTUtil::arrayGet($_REQUEST, 'selected_docs', array()); + $aDocuments = array(); foreach ($selected_docs as $doc_id) { $oDoc =& Document::get($doc_id); - if (PEAR::isError($oDoc) || ($oDoc === false)) { + if (PEAR::isError($oDoc) || ($oDoc === false)) { $this->errorRedirectToMain(_kt('Invalid document id specified. Aborting restore.')); } else if ($oDoc->getStatusId() != ARCHIVED) { $this->errorRedirectToMain(sprintf(_kt('%s is not an archived document. Aborting restore.'), $oDoc->getName())); } $aDocuments[] = $oDoc; } - + $this->startTransaction(); - + foreach ($aDocuments as $oDoc) { // FIXME find de-archival source. // FIXME purge old notifications. @@ -192,11 +186,15 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher { if (PEAR::isError($res) || ($res == false)) { $this->errorRedirectToMain(sprintf(_kt('%s could not be made "live".'), $oDoc->getName)); } + $oDocumentTransaction = & new DocumentTransaction($oDoc, _kt('Document restored.'), 'ktcore.transactions.update'); + $oDocumentTransaction->create(); } + $this->commitTransaction(); $msg = sprintf(_kt('%d documents made active.'), count($aDocuments)); $this->successRedirectToMain($msg); } + } ?> diff --git a/templates/ktcore/document/admin/archivebrowse.smarty b/templates/ktcore/document/admin/archivebrowse.smarty index 3f83fdd..8bed3cc 100644 --- a/templates/ktcore/document/admin/archivebrowse.smarty +++ b/templates/ktcore/document/admin/archivebrowse.smarty @@ -7,17 +7,23 @@ will typically be done within the system and will generate a notification to you.{/i18n}

+

{i18n}Use the folder collection and path below to browse to the folder containing the documents you wish to restore.{/i18n} +

+
+ +{foreach from=$breadcrumbs item=breadcrumb name=bc} + {if !$smarty.foreach.bc.last} + {$breadcrumb.name|sanitize} » + {else} + {$breadcrumb.name|sanitize} + {/if} +{/foreach} +
-{foreach from=$collection_breadcrumbs item=breadcrumb name=bc} -{$breadcrumb.name} -{if !$smarty.foreach.bc.last} -» -{/if} -{/foreach} -{$collection->render()} +{$collection->render()}
-- libgit2 0.21.4