Commit 371481e861db9ecf0f0eff13f37559f1f9da4e77

Authored by kevin_fourie
1 parent d7a4690e

Merged in from DEV trunk...

KTS-2391
"When changing doc type the old associated fieldsets should be removed"
Fixed. Incremented the metadata version and copied the metadata for the fieldsets that remain with the new doc type.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-3031
"Breadcrumb function in Document links displays incorrectly"
Fixed. Added the root folder at the start of the breadcrumb trail. Refactored the function into ktutil.

Committed by: Megan Watson
Reviewed by: Conrad Vermeulen

KTS-1489
"Unarchival action not recorded within document transaction history"
Fixed. Added a transaction in.

KTS-3029
"On restoring archived documents, all documents in the list are selected"
Fixed. Removed the collection widget which only works properly for single selections.

KTS-2891
"Search widget is too big as it is invisible when the screen resolution is low"
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-3024
"Search2: Searching using a quick search gives a warning"
Updated. Changed the content of the message.

Committed By: Conrad Vermeulen
Reviewed By: Xolo Mashinini

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/trunk@8052 c91229c3-7414-0410-bfa2-8a42b809f60b
config/config.ini
... ... @@ -206,13 +206,31 @@ uiUrl = ${rootUrl}/presentation/lookAndFeel/knowledgeTree
206 206 stopwordsFile = ${fileSystemRoot}/config/stopwords.txt
207 207  
208 208 [webservice]
  209 +; Directory to which all uploads via webservices are persisted before moving into the repository
209 210 uploadDirectory = ${varDirectory}/uploads
  211 +
  212 +; Url which is sent to clients via web service calls so they can then download file via HTTP GET
210 213 downloadUrl = ${rootUrl}/ktwebservice/download.php
  214 +
  215 +; Period indicating how long a file should be retained in the uploads directory.
211 216 uploadExpiry = 30
  217 +
  218 +; Period indicating how long a download link will be available
212 219 downloadExpiry = 30
  220 +
  221 +; Random text used to construct a hash. This can be customised on installations so there is less chance of overlap between installations.
213 222 randomKeyText = bkdfjhg23yskjdhf2iu
  223 +
  224 +; Validating session counts can interfere with access. It is best to leave this disabled, unless very strict access is required.
214 225 validateSessionCount = false
215 226  
  227 +; If the document type is invalid when adding a document, we can be tollerant and just default to the Default document type.
  228 +useDefaultDocumentTypeIfInvalid = true
  229 +
  230 +; The web service debugging if the logLevel is set to DEBUG. We can set the value to 4 or 5 to get more verbose web service logging.
  231 +; Level 4 logs the name of functions being accessed. Level 5 logs the SOAP XML requests and responses.
  232 +debug = false
  233 +
216 234 [session]
217 235 ; session timeout (in seconds)
218 236 sessionTimeout = 1200
... ...
lib/util/ktutil.inc
... ... @@ -748,6 +748,7 @@ class KTUtil {
748 748  
749 749 // {{{ isAbsolutePath
750 750 static function isAbsolutePath($sPath) {
  751 +
751 752 if (substr($sPath, 0, 1) == '/') {
752 753 return true;
753 754 }
... ... @@ -949,6 +950,79 @@ class KTUtil {
949 950 return $aRet;
950 951 }
951 952  
  953 +
  954 + /**
  955 + * Generates breadcrumbs for a browsable collection
  956 + *
  957 + * @param object $oFolder The folder being browsed to
  958 + * @param integer $iFolderId The id of the folder
  959 + * @param array $aURLParams The url parameters for each folder/breadcrumb link
  960 + * @return unknown
  961 + */
  962 + function generate_breadcrumbs($oFolder, $iFolderId, $aURLParams) {
  963 + static $aFolders = array();
  964 + static $aBreadcrumbs = array();
  965 +
  966 + // Check if selected folder is a parent of the current folder
  967 + if(in_array($iFolderId, $aFolders)){
  968 + $temp = array_flip($aFolders);
  969 + $key = $temp[$iFolderId];
  970 + array_splice($aFolders, $key);
  971 + array_splice($aBreadcrumbs, $key);
  972 + return $aBreadcrumbs;
  973 + }
  974 +
  975 + // Check for the parent of the selected folder unless its the root folder
  976 + $iParentId = $oFolder->getParentID();
  977 +
  978 + if(is_null($iParentId)){
  979 + // folder is root
  980 + return '';
  981 + }
  982 +
  983 + if($iFolderId != 1 && in_array($iParentId, $aFolders)){
  984 + $temp = array_flip($aFolders);
  985 + $key = $temp[$iParentId];
  986 + array_splice($aFolders, $key);
  987 + array_splice($aBreadcrumbs, $key);
  988 + array_push($aFolders, $iFolderId);
  989 +
  990 + $aParams = $aURLParams;
  991 + $aParams['fFolderId'] = $iFolderId;
  992 + $url = KTUtil::addQueryString($_SERVER['PHP_SELF'], $aParams);
  993 + $aBreadcrumbs[] = array('url' => $url, 'name' => $oFolder->getName());
  994 + return $aBreadcrumbs;
  995 + }
  996 +
  997 + // Get the root folder name
  998 + $oRootFolder = Folder::get(1);
  999 + $sRootFolder =$oRootFolder->getName();
  1000 +
  1001 + // Create the breadcrumbs
  1002 + $folder_path_names = $oFolder->getPathArray();
  1003 + array_unshift($folder_path_names, $sRootFolder);
  1004 + $folder_path_ids = explode(',', $oFolder->getParentFolderIds());
  1005 + $folder_path_ids[] = $oFolder->getId();
  1006 + if ($folder_path_ids[0] == 0) {
  1007 + array_shift($folder_path_ids);
  1008 + array_shift($folder_path_names);
  1009 + }
  1010 +
  1011 + $iCount = count($folder_path_ids);
  1012 + $range = range(0, $iCount - 1);
  1013 + foreach ($range as $index) {
  1014 + $id = $folder_path_ids[$index];
  1015 + $name = $folder_path_names[$index];
  1016 +
  1017 + $aParams = $aURLParams;
  1018 + $aParams['fFolderId'] = $id;
  1019 + $url = KTUtil::addQueryString($_SERVER['PHP_SELF'], $aParams);
  1020 + $aBreadcrumbs[] = array('url' => $url, 'name' => $name);
  1021 + }
  1022 + $aFolders = $folder_path_ids;
  1023 + return $aBreadcrumbs;
  1024 + }
  1025 +
952 1026 }
953 1027  
954 1028 /**
... ...
plugins/ktcore/admin/archivedDocuments.php
... ... @@ -5,32 +5,32 @@
5 5 * KnowledgeTree Open Source Edition
6 6 * Document Management Made Simple
7 7 * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited
8   - *
  8 + *
9 9 * This program is free software; you can redistribute it and/or modify it under
10 10 * the terms of the GNU General Public License version 3 as published by the
11 11 * Free Software Foundation.
12   - *
  12 + *
13 13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 16 * details.
17   - *
  17 + *
18 18 * You should have received a copy of the GNU General Public License
19 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20   - *
  20 + *
21 21 * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
22 22 * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
23   - *
  23 + *
24 24 * The interactive user interfaces in modified source and object code versions
25 25 * of this program must display Appropriate Legal Notices, as required under
26 26 * Section 5 of the GNU General Public License version 3.
27   - *
  27 + *
28 28 * In accordance with Section 7(b) of the GNU General Public License version 3,
29 29 * these Appropriate Legal Notices must retain the display of the "Powered by
30   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  30 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
31 31 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
32   - * must display the words "Powered by KnowledgeTree" and retain the original
33   - * copyright notice.
  32 + * must display the words "Powered by KnowledgeTree" and retain the original
  33 + * copyright notice.
34 34 * Contributor( s): ______________________________________
35 35 *
36 36 */
... ... @@ -53,12 +53,12 @@ require_once(KT_LIB_DIR . &quot;/documentmanagement/PhysicalDocumentManager.inc&quot;);
53 53  
54 54 // FIXME chain in a notification alert for un-archival requests.
55 55 class KTArchiveTitle extends TitleColumn {
56   -
  56 +
57 57 function renderDocumentLink($aDataRow) {
58 58 $outStr .= $aDataRow["document"]->getName();
59 59 return $outStr;
60   - }
61   -
  60 + }
  61 +
62 62 function buildFolderLink($aDataRow) {
63 63 return KTUtil::addQueryString($_SERVER['PHP_SELF'], sprintf('fFolderId=%d', $aDataRow["folder"]->getId()));
64 64 }
... ... @@ -68,94 +68,88 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher {
68 68 var $sHelpPage = 'ktcore/admin/archived documents.html';
69 69 function do_main () {
70 70 $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Archived Documents'));
71   -
  71 +
72 72 $this->oPage->setBreadcrumbDetails(_kt('browse'));
73   -
  73 +
74 74 $oFolder = Folder::get(KTUtil::arrayGet($_REQUEST, 'fFolderId', 1));
75   - if (PEAR::isError($oFolder)) {
  75 + if (PEAR::isError($oFolder)) {
76 76 $this->errorRedirectToMain(_kt('Invalid folder selected.'));
77 77 exit(0);
78 78 }
79   -
80   - // Setup the collection for move display.
81   -
  79 +
  80 + // Setup the collection for restore display.
82 81 $aBaseParams = array();
83 82  
84 83 $collection = new AdvancedCollection();
85 84  
86 85 $oCR =& KTColumnRegistry::getSingleton();
87   -
88   - // selection col
89 86 $col = $oCR->getColumn('ktcore.columns.selection');
90   - $col->setOptions(array('show_folders' => false, 'rangename' => '_d[]'));
  87 + $aColOptions = array();
  88 + //$aColOptions['qs_params'] = kt_array_merge($aBaseParams, array('fFolderId'=>$oFolder->getId()));
  89 + $aColOptions['show_folders'] = false;
  90 + $aColOptions['show_documents'] = true;
  91 + $aColOptions['rangename'] = '_d[]';
  92 + $col->setOptions($aColOptions);
91 93 $collection->addColumn($col);
92   -
93   - // title col
  94 +
94 95 $col = $oCR->getColumn('ktcore.columns.title');
  96 + //$col->setOptions(array('qs_params'=>kt_array_merge($aBaseParams, array('action' => 'new', 'fFolderId'=>$oFolder->getId()))));
95 97 $col->setOptions(array('link_documents' => false));
96   -
97 98 $collection->addColumn($col);
98 99  
  100 + //$qObj = new BrowseQuery($iFolderId);
99 101 $qObj = new ArchivedBrowseQuery($oFolder->getId());
100 102 $collection->setQueryObject($qObj);
101 103  
102 104 $aOptions = $collection->getEnvironOptions();
103   - $aOptions['result_url'] = KTUtil::addQueryString($_SERVER['PHP_SELF'],
  105 + $aOptions['result_url'] = KTUtil::addQueryString($_SERVER['PHP_SELF'],
104 106 array(kt_array_merge($aBaseParams, array('fFolderId' => $oFolder->getId()))));
105 107  
106 108 $collection->setOptions($aOptions);
107 109  
108   - $oWF =& KTWidgetFactory::getSingleton();
109   - $oWidget = $oWF->get('ktcore.widgets.collection',
110   - array('label' => _kt('Target Documents'),
111   - 'description' => _kt('Use the folder collection and path below to browse to the folder containing the documents you wish to restore.'),
112   - 'required' => true,
113   - 'name' => 'browse',
114   - 'folder_id' => $oFolder->getId(),
115   - 'bcurl_params' => $aBaseParams,
116   - 'collection' => $collection));
  110 + $aURLParams = $aBaseParams;
  111 + $aURLParams['action'] = 'restore';
  112 + $aBreadcrumbs = KTUtil::generate_breadcrumbs($oFolder, $iFolderId, $aURLParams);
117 113  
118   -
119   - $oTemplating =& KTTemplating::getSingleton();
120   - $oTemplate = $oTemplating->loadTemplate("ktcore/document/admin/archivebrowse");
121 114 $aTemplateData = array(
122   - "context" => $this,
  115 + 'context' => $this,
123 116 'folder' => $oFolder,
124 117 'breadcrumbs' => $aBreadcrumbs,
125   - 'collection' => $oWidget,
  118 + 'collection' => $collection
126 119 );
127   -
128   - return $oTemplate->render($aTemplateData);
  120 +
  121 + $oTemplate =& $this->oValidator->validateTemplate('ktcore/document/admin/archivebrowse');
  122 + return $oTemplate->render($aTemplateData);
129 123 }
130   -
  124 +
131 125 /*
132 126 * Provide for "archived" browsing.
133 127 */
134 128 function do_browse() {
135   -
  129 +
136 130 }
137   -
  131 +
138 132 function do_confirm_restore() {
139 133 $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Archived Documents'));
140   -
141   - $selected_docs = KTUtil::arrayGet($_REQUEST, '_d', array());
142   -
  134 +
  135 + $selected_docs = KTUtil::arrayGet($_REQUEST, '_d', array());
  136 +
143 137 $this->oPage->setTitle(sprintf(_kt('Confirm Restore of %d documents'), count($selected_docs)));
144   -
  138 +
145 139 $this->oPage->setBreadcrumbDetails(sprintf(_kt('confirm restore of %d documents'), count($selected_docs)));
146   -
  140 +
147 141 $aDocuments = array();
148 142 foreach ($selected_docs as $doc_id) {
149 143 $oDoc =& Document::get($doc_id);
150   - if (PEAR::isError($oDoc) || ($oDoc === false)) {
  144 + if (PEAR::isError($oDoc) || ($oDoc === false)) {
151 145 $this->errorRedirectToMain(_kt('Invalid document id specified. Aborting restore.'));
152 146 } else if ($oDoc->getStatusId() != ARCHIVED) {
153 147 $this->errorRedirectToMain(sprintf(_kt('%s is not an archived document. Aborting restore.'), $oDoc->getName()));
154 148 }
155 149 $aDocuments[] = $oDoc;
156 150 }
157   -
158   -
  151 +
  152 +
159 153 $oTemplating =& KTTemplating::getSingleton();
160 154 $oTemplate = $oTemplating->loadTemplate('ktcore/document/admin/dearchiveconfirmlist');
161 155 $oTemplate->setData(array(
... ... @@ -167,22 +161,22 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher {
167 161  
168 162 function do_finish_restore() {
169 163  
170   -
171   - $selected_docs = KTUtil::arrayGet($_REQUEST, 'selected_docs', array());
172   -
  164 +
  165 + $selected_docs = KTUtil::arrayGet($_REQUEST, 'selected_docs', array());
  166 +
173 167 $aDocuments = array();
174 168 foreach ($selected_docs as $doc_id) {
175 169 $oDoc =& Document::get($doc_id);
176   - if (PEAR::isError($oDoc) || ($oDoc === false)) {
  170 + if (PEAR::isError($oDoc) || ($oDoc === false)) {
177 171 $this->errorRedirectToMain(_kt('Invalid document id specified. Aborting restore.'));
178 172 } else if ($oDoc->getStatusId() != ARCHIVED) {
179 173 $this->errorRedirectToMain(sprintf(_kt('%s is not an archived document. Aborting restore.'), $oDoc->getName()));
180 174 }
181 175 $aDocuments[] = $oDoc;
182 176 }
183   -
  177 +
184 178 $this->startTransaction();
185   -
  179 +
186 180 foreach ($aDocuments as $oDoc) {
187 181 // FIXME find de-archival source.
188 182 // FIXME purge old notifications.
... ... @@ -192,11 +186,15 @@ class ArchivedDocumentsDispatcher extends KTAdminDispatcher {
192 186 if (PEAR::isError($res) || ($res == false)) {
193 187 $this->errorRedirectToMain(sprintf(_kt('%s could not be made "live".'), $oDoc->getName));
194 188 }
  189 + $oDocumentTransaction = & new DocumentTransaction($oDoc, _kt('Document restored.'), 'ktcore.transactions.update');
  190 + $oDocumentTransaction->create();
195 191 }
  192 +
196 193 $this->commitTransaction();
197 194 $msg = sprintf(_kt('%d documents made active.'), count($aDocuments));
198 195 $this->successRedirectToMain($msg);
199 196 }
  197 +
200 198 }
201 199  
202 200 ?>
... ...
plugins/ktcore/document/edit.php
... ... @@ -294,68 +294,76 @@ class KTDocumentEditAction extends KTDocumentAction {
294 294 }
295 295  
296 296 $document_type = $data['type'];
  297 + $doctypeid = $document_type->getId();
297 298  
  299 + // Get the current document type, fieldsets and metadata
  300 + $iOldDocTypeID = $this->oDocument->getDocumentTypeID();
  301 + $fieldsets = KTMetadataUtil::fieldsetsForDocument($this->oDocument, $iOldDocTypeID);
  302 + $mdlist = DocumentFieldLink::getByDocument($this->oDocument);
298 303  
299   - $doctypeid = $document_type->getId();
300   -
301   -
302   - DBUtil::startTransaction();
303   - $this->oDocument->setDocumentTypeId($doctypeid);
304   - $res = $this->oDocument->update();
  304 + $field_values = array();
  305 + foreach ($mdlist as $oFieldLink) {
  306 + $field_values[$oFieldLink->getDocumentFieldID()] = $oFieldLink->getValue();
  307 + }
305 308  
  309 + DBUtil::startTransaction();
306 310  
307   - if (PEAR::isError($res))
308   - {
309   - DBUtil::rollback();
310   - return $res;
311   - }
312   - DBUtil::commit();
  311 + // Update the document with the new document type id
  312 + $this->oDocument->startNewMetadataVersion($this->oUser);
  313 + $this->oDocument->setDocumentTypeId($doctypeid);
  314 + $res = $this->oDocument->update();
313 315  
314   - $fieldsets = KTMetadataUtil::fieldsetsForDocument($this->oDocument, $doctypeid);
  316 + if (PEAR::isError($res))
  317 + {
  318 + DBUtil::rollback();
  319 + return $res;
  320 + }
315 321  
316   - $fs_ids = array();
  322 + // Ensure all values for fieldsets common to both document types are retained
  323 + $fs_ids = array();
317 324  
318   - $doctype_fieldsets = KTFieldSet::getForDocumentType($doctypeid);
319   - foreach($doctype_fieldsets as $fieldset)
320   - {
321   - $fs_ids[] = $fieldset->getId();
322   - }
323   - $MDPack = array();
324   - foreach ($fieldsets as $oFieldset)
325   - {
326   - if ($oFieldset->getIsGeneric() || in_array($oFieldset->getId(),$fs_ids))
327   - {
328   - //print $oFieldset->getName() . "<br>";
329   - $fields = $oFieldset->getFields();
330   - $values = (array) KTUtil::arrayGet($data, 'fieldset_' . $oFieldset->getId());
331   - foreach ($fields as $oField)
332   - {
333   - $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId());
  325 + $doctype_fieldsets = KTFieldSet::getForDocumentType($doctypeid);
  326 + foreach($doctype_fieldsets as $fieldset)
  327 + {
  328 + $fs_ids[] = $fieldset->getId();
  329 + }
334 330  
335   - // FIXME "null" has strange meanings here.
336   - if (!is_null($val))
337   - {
338   - $MDPack[] = array(
339   - $oField,
340   - $val
341   - );
342   - }
343   - }
344   - }
  331 + $MDPack = array();
  332 + foreach ($fieldsets as $oFieldset)
  333 + {
  334 + if ($oFieldset->getIsGeneric() || in_array($oFieldset->getId(), $fs_ids))
  335 + {
  336 + $fields = $oFieldset->getFields();
  337 +
  338 + foreach ($fields as $oField)
  339 + {
  340 + $val = isset($field_values[$oField->getId()]) ? $field_values[$oField->getId()] : '';
  341 +
  342 + if (!empty($val))
  343 + {
  344 + $MDPack[] = array($oField, $val);
  345 + }
  346 + }
  347 + }
  348 + }
345 349  
346   - }
  350 + $core_res = KTDocumentUtil::saveMetadata($this->oDocument, $MDPack, array('novalidate' => true));
347 351  
348   - $core_res = KTDocumentUtil::saveMetadata($this->oDocument, $MDPack);
  352 + if (PEAR::isError($core_res)) {
  353 + DBUtil::rollback();
  354 + return $core_res;
  355 + }
  356 + DBUtil::commit();
349 357  
350   - $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
  358 + $oKTTriggerRegistry = KTTriggerRegistry::getSingleton();
351 359 $aTriggers = $oKTTriggerRegistry->getTriggers('edit', 'postValidate');
352 360  
353 361 foreach ($aTriggers as $aTrigger) {
354 362 $sTrigger = $aTrigger[0];
355 363 $oTrigger = new $sTrigger;
356 364 $aInfo = array(
357   - "document" => $this->oDocument,
358   - "aOptions" => $MDPack,
  365 + "document" => $this->oDocument,
  366 + "aOptions" => $MDPack,
359 367 );
360 368 $oTrigger->setInfo($aInfo);
361 369 $ret = $oTrigger->postValidate();
... ... @@ -366,4 +374,4 @@ class KTDocumentEditAction extends KTDocumentAction {
366 374 }
367 375 // }}}
368 376  
369 377 -?>
  378 +?>
370 379 \ No newline at end of file
... ...
plugins/ktstandard/KTDocumentLinks.php
... ... @@ -247,7 +247,7 @@ class KTDocumentLinkAction extends KTDocumentAction {
247 247  
248 248 $aURLParams = $aBaseParams;
249 249 $aURLParams['action'] = 'new';
250   - $aBreadcrumbs = $this->_generate_breadcrumbs($oFolder, $iFolderId, $aURLParams);
  250 + $aBreadcrumbs = KTUtil::generate_breadcrumbs($oFolder, $iFolderId, $aURLParams);
251 251  
252 252 $aTemplateData = array(
253 253 'context' => $this,
... ... @@ -438,59 +438,6 @@ class KTDocumentLinkAction extends KTDocumentAction {
438 438 $this->successRedirectToMain(_kt('Document link deleted'), sprintf('fDocumentId=%d', $oParentDocument->getId()));
439 439 exit(0);
440 440 }
441   -
442   - function _generate_breadcrumbs($oFolder, $iFolderId, $aURLParams) {
443   - static $aFolders = array();
444   - static $aBreadcrumbs = array();
445   -
446   - // Check if selected folder is a parent of the current folder
447   - if(in_array($iFolderId, $aFolders)){
448   - $temp = array_flip($aFolders);
449   - $key = $temp[$iFolderId];
450   - array_splice($aFolders, $key);
451   - array_splice($aBreadcrumbs, $key);
452   - return $aBreadcrumbs;
453   - }
454   -
455   - // Check for the parent of the selected folder unless its the root folder
456   - $iParentId = $oFolder->getParentID();
457   - if($iFolderId != 1 && in_array($iParentId, $aFolders)){
458   - $temp = array_flip($aFolders);
459   - $key = $temp[$iParentId];
460   - array_splice($aFolders, $key);
461   - array_splice($aBreadcrumbs, $key);
462   - array_push($aFolders, $iFolderId);
463   -
464   - $aParams = $aURLParams;
465   - $aParams['fFolderId'] = $iFolderId;
466   - $url = KTUtil::addQueryString($_SERVER['PHP_SELF'], $aParams);
467   - $aBreadcrumbs[] = array('url' => $url, 'name' => $oFolder->getName());
468   - return $aBreadcrumbs;
469   - }
470   -
471   - // Create the breadcrumbs
472   - $folder_path_names = $oFolder->getPathArray();
473   - $folder_path_ids = explode(',', $oFolder->getParentFolderIds());
474   - $folder_path_ids[] = $oFolder->getId();
475   - if ($folder_path_ids[0] == 0) {
476   - array_shift($folder_path_ids);
477   - array_shift($folder_path_names);
478   - }
479   -
480   - $iCount = count($folder_path_ids);
481   - $range = range(0, $iCount - 1);
482   - foreach ($range as $index) {
483   - $id = $folder_path_ids[$index];
484   - $name = $folder_path_names[$index];
485   -
486   - $aParams = $aURLParams;
487   - $aParams['fFolderId'] = $id;
488   - $url = KTUtil::addQueryString($_SERVER['PHP_SELF'], $aParams);
489   - $aBreadcrumbs[] = array('url' => $url, 'name' => $name);
490   - }
491   - $aFolders = $folder_path_ids;
492   - return $aBreadcrumbs;
493   - }
494 441 }
495 442  
496 443 class KTDocLinkAdminDispatcher extends KTAdminDispatcher {
... ...
resources/js/search2widget.js
... ... @@ -176,7 +176,7 @@ function createSearchBar(div, suffix)
176 176 value: quickQuery,
177 177 selectOnFocus:true,
178 178 id:'txtSearchBar' + suffix,
179   - width: 110
  179 + width: (suffix == 1)?180:110
180 180 }), button);
181 181  
182 182 var map = new Ext.KeyMap("txtSearchBar" + suffix,
... ... @@ -190,7 +190,7 @@ function createSearchBar(div, suffix)
190 190 var el = Ext.get(div);
191 191 if (suffix == 1)
192 192 {
193   - el.applyStyles('position:relative; top: -3px');
  193 + el.applyStyles('position:relative; top: -15px; margin-right: 15px');
194 194 }
195 195 else
196 196 {
... ...
search2/indexing/indexers/JavaXMLRPCLuceneIndexer.inc.php
... ... @@ -202,7 +202,7 @@ class JavaXMLRPCLuceneIndexer extends Indexer
202 202 }
203 203 else
204 204 {
205   - $_SESSION['KTErrorMessage'][] = _kt('The XMLRPC Server did not respond correctly. Please notify the system administrator to investigate.');
  205 + $_SESSION['KTErrorMessage'][] = _kt('The Document Indexer did not respond correctly. Your search results will not include content results. Please notify the system administrator to investigate why the Document Indexer is not running.');
206 206 }
207 207 return $results;
208 208 }
... ...
templates/kt3/standard_page.smarty
... ... @@ -158,7 +158,7 @@
158 158 <input type=hidden name="cbQuickGeneral" id="cbQuickGeneral" value="1"></form>
159 159 </div>
160 160  
161   - <div id="newSearchQuery"/>
  161 +
162 162  
163 163  
164 164  
... ... @@ -198,6 +198,7 @@
198 198 {if ($page->breadcrumbDetails !== false)}
199 199 <span class="additional">({$page->breadcrumbDetails|sanitize})</span>
200 200 {/if}
  201 + <div id="newSearchQuery" style="float: right; "/>
201 202 </div>
202 203 {/if}
203 204 </div>
... ...
templates/ktcore/document/admin/archivebrowse.smarty
... ... @@ -7,17 +7,23 @@ will typically be done within the system and will generate a
7 7 notification to you.{/i18n}
8 8 </p>
9 9  
  10 +<p>{i18n}Use the folder collection and path below to browse to the folder containing the documents you wish to restore.{/i18n}
  11 +</p>
  12 +<br />
  13 +
  14 +{foreach from=$breadcrumbs item=breadcrumb name=bc}
  15 + {if !$smarty.foreach.bc.last}
  16 + <a href="{$breadcrumb.url}">{$breadcrumb.name|sanitize}</a> &raquo;
  17 + {else}
  18 + {$breadcrumb.name|sanitize}
  19 + {/if}
  20 +{/foreach}
  21 +
10 22 <form method="POST" action="{$smarty.server.PHP_SELF}">
11 23 <input type="hidden" name="action" value="confirm_restore" />
12 24 <input type="hidden" name="fFolderId" value="{$folder->getId()}" />
13   -{foreach from=$collection_breadcrumbs item=breadcrumb name=bc}
14   -<a href="{$breadcrumb.url}">{$breadcrumb.name}</a>
15   -{if !$smarty.foreach.bc.last}
16   -&raquo;
17   -{/if}
18   -{/foreach}
19   -{$collection->render()}
20 25  
  26 +{$collection->render()}
21 27  
22 28 <div class="form_actions">
23 29 <input type="submit" name="submit[move]" value="{i18n}Restore{/i18n}" />
... ...