You need to sign in before continuing.

Commit 7e13e0bf6750263e0e878efd16e5df45104f49e7

Authored by conradverm
1 parent 0a3d3f68

KTS-3201

"Ability to toggle between old 'browse view' search results, and 'search engine' results view"
Implemented.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8301 c91229c3-7414-0410-bfa2-8a42b809f60b
search2.php
... ... @@ -11,6 +11,122 @@ require_once(KT_LIB_DIR . "/actions/bulkaction.php");
11 11 require_once(KT_DIR . '/search2/search/search.inc.php');
12 12 require_once(KT_LIB_DIR . '/documentmanagement/Document.inc');
13 13  
  14 +function search2queryCompare($a, $b)
  15 +{
  16 + global $search2queryColumn, $search2queryOrder;
  17 +
  18 +
  19 + if ($a->$search2queryColumn == $b->$search2queryColumn)
  20 + {
  21 + return 0;
  22 + }
  23 +
  24 + $result = ($a->$search2queryColumn < $b->$search2queryColumn)?-1:1;
  25 +
  26 + if ($search2queryOrder == 'asc')
  27 + return $result;
  28 + else
  29 + return - $result;
  30 +}
  31 +
  32 +
  33 +/**
  34 + * Assists with old browse search results
  35 + *
  36 + * @param unknown_type $sSortColumn
  37 + * @param unknown_type $sSortOrder
  38 + */
  39 +
  40 +function search2QuerySort($sSortColumn, $sSortOrder)
  41 +{
  42 + $defaultSortColumn = $_SESSION['search2_sort_column'];
  43 + $defaultSortOrder = $_SESSION['search2_sort_order'];
  44 +
  45 + if (($defaultSortColumn == $sSortColumn) && ($defaultSortOrder == $sSortOrder))
  46 + {
  47 + return;
  48 + }
  49 +
  50 + global $search2queryColumn, $search2queryOrder;
  51 +
  52 + $search2queryOrder = strtolower($sSortOrder);
  53 +
  54 + switch(strtolower($sSortColumn))
  55 + {
  56 + case 'ktcore.columns.title':
  57 + $search2queryColumn = 'Title';
  58 + break;
  59 + case 'ktcore.columns.workflow_state':
  60 + $search2queryColumn = 'WorkflowAndState';
  61 + break;
  62 + case 'ktcore.columns.checkedout_by':
  63 + $search2queryColumn = 'CheckedOutBy';
  64 + break;
  65 + case 'ktcore.columns.creationdate':
  66 + $search2queryColumn = 'DateCreated';
  67 + break;
  68 + case 'ktcore.columns.modificationdate':
  69 + $search2queryColumn = 'DateModified';
  70 + break;
  71 + case 'ktcore.columns.creator':
  72 + $search2queryColumn = 'CreatedBy';
  73 + break;
  74 + case 'ktcore.columns.docid':
  75 + $search2queryColumn = 'DocumentID';
  76 + break;
  77 + case 'ktcore.columns.document_type':
  78 + $search2queryColumn = 'DocumentType';
  79 + break;
  80 + default:
  81 + return;
  82 + }
  83 +
  84 +
  85 + $results = unserialize($_SESSION['search2_results']);
  86 +
  87 + usort($results, 'search2queryCompare');
  88 +
  89 + $_SESSION['search2_results'] = serialize($results);
  90 +
  91 +}
  92 +
  93 +/**
  94 + * Search2Query is used to provide allow the old browse search to work
  95 + *
  96 + */
  97 +class Search2Query extends PartialQuery
  98 +{
  99 + function getFolderCount() { return 0; }
  100 + function getDocumentCount()
  101 + {
  102 + return count(unserialize($_SESSION['search2_results']));
  103 + }
  104 +
  105 + function getFolders($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null)
  106 + {
  107 + return array();
  108 + }
  109 +
  110 + function getDocuments($iBatchSize, $iBatchStart, $sSortColumn, $sSortOrder, $sJoinClause = null, $aJoinParams = null)
  111 + {
  112 + search2QuerySort($_GET['sort_on'], $_GET['sort_order']);
  113 + $results = unserialize($_SESSION['search2_results']);
  114 +
  115 + $batch = array();
  116 +
  117 + $no_results = count($results);
  118 + for($i=0;$i<$no_results;$i++)
  119 + {
  120 + if ($i < $iBatchStart) continue;
  121 + if ($i > $iBatchStart + $iBatchSize) continue;
  122 +
  123 + $batch[] = array('id'=>$results[$i]->DocumentID);
  124 + }
  125 +
  126 + return $batch;
  127 + }
  128 +}
  129 +
14 130  
15 131 class SearchDispatcher extends KTStandardDispatcher {
16 132  
... ... @@ -157,6 +273,56 @@ class SearchDispatcher extends KTStandardDispatcher {
157 273 $this->processQuery($expr);
158 274 }
159 275  
  276 + function do_oldSearchResults()
  277 + {
  278 + $this->oPage->setBreadcrumbDetails(_kt("Search Results"));
  279 + $this->oPage->title = _kt("Search Results");
  280 +
  281 + $collection = new AdvancedCollection;
  282 + $oColumnRegistry = KTColumnRegistry::getSingleton();
  283 + $aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search');
  284 + $collection->addColumns($aColumns);
  285 +
  286 + // set a view option
  287 + $aTitleOptions = array(
  288 + 'documenturl' => $GLOBALS['KTRootUrl'] . '/view.php',
  289 + 'direct_folder' => true,
  290 + );
  291 + $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions);
  292 +
  293 + // set the selection options
  294 + $collection->setColumnOptions('ktcore.columns.selection', array(
  295 + 'rangename' => 'selection',
  296 + 'show_folders' => true,
  297 + 'show_documents' => true,
  298 + ));
  299 +
  300 +
  301 + $aOptions = $collection->getEnvironOptions(); // extract data from the environment
  302 +
  303 + $aOptions['empty_message'] = _kt("No documents or folders match this query.");
  304 + $aOptions['is_browse'] = true;
  305 + $aOptions['return_url'] = KTUtil::addQueryStringSelf("action=oldSearchResults");
  306 +
  307 +
  308 + $collection->setOptions($aOptions);
  309 + $collection->setQueryObject(new Search2Query());
  310 +
  311 + $oTemplating =& KTTemplating::getSingleton();
  312 + $oTemplate = $oTemplating->loadTemplate("kt3/browse");
  313 + $aTemplateData = array(
  314 + "context" => $this,
  315 + "collection" => $collection,
  316 + 'isEditable' => true,
  317 + 'bulkactions' => KTBulkActionUtil::getAllBulkActions(),
  318 + 'browseutil' => new KTBrowseUtil(),
  319 + 'returnaction' => 'search2',
  320 + );
  321 + return $oTemplate->render($aTemplateData);
  322 + }
  323 +
  324 +
  325 +
160 326 /**
161 327 * Renders the search results.
162 328 *
... ... @@ -164,7 +330,33 @@ class SearchDispatcher extends KTStandardDispatcher {
164 330 */
165 331 function do_searchResults()
166 332 {
167   - $this->oPage->setBreadcrumbDetails(_kt("Search Results"));
  333 + if (array_key_exists('format', $_GET))
  334 + {
  335 + if ($_GET['format'] == 'toggle')
  336 + {
  337 + switch ($_SESSION['search2resultFormat'])
  338 + {
  339 + case 'searchengine':
  340 + $_SESSION['search2resultFormat'] = 'browseview';
  341 + break;
  342 + case 'browseview':
  343 + $_SESSION['search2resultFormat'] = 'searchengine';
  344 + break;
  345 + }
  346 + }
  347 + }
  348 + else
  349 + {
  350 + $_SESSION['search2resultFormat'] = 'searchengine';
  351 + }
  352 +
  353 + if ($_SESSION['search2resultFormat'] == 'browseview')
  354 + {
  355 + $this->redirectTo('oldSearchResults');
  356 +
  357 + }
  358 +
  359 + $this->oPage->setBreadcrumbDetails(_kt("Search Results"));
168 360 $this->oPage->title = _kt("Search Results");
169 361  
170 362 $oTemplating =& KTTemplating::getSingleton();
... ...
templates/kt3/standard_page.smarty
... ... @@ -112,7 +112,10 @@
112 112 /* 9 */ "{i18n}content and metadata{/i18n}",
113 113 /* 10 */ "{i18n}metadata{/i18n}",
114 114 /* 11 */ "{i18n}search{/i18n}",
115   - /* 12 */ "{i18n}Enter search criteria...{/i18n}"
  115 + /* 12 */ "{i18n}Enter search criteria...{/i18n}",
  116 + /* 13 */ "{i18n}Toggle search results format{/i18n}",
  117 + /* 14 */ "{i18n}Search engine format{/i18n}",
  118 + /* 15 */ "{i18n}Browse view format{/i18n}"
116 119  
117 120 ];
118 121  
... ...