Commit 0791afd2aa0dc214a3804bd3955a2b0e074ff06f

Authored by kevin_fourie
1 parent c6132059

Merged in from DEV trunk...

KTC-436
"500 Internal Server Errors Happen when Uploading Files through KTE or KT Webdav"
Fixed. Checked that path is absolute before doing a require().

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTS-3190
""Import from server location" should also remove the file extension from the document name"
Fixed. Document add now drops the extension from the filename if it is used for the document title.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne

KTC-437
"info Box / Document preview"
In progress. Added big mimetype icons for the info box.

Committed by: Megan Watson
Reviewed by: Jalaloedien Abrahams

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

KTS-3112
"Fatal error on new installation when directed to login.php line 168"
Removed. The redirection could result in endless loop.

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

KTS-3204
"Search engine results references Score field, which should be Rank"
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

KTS-3205
"dmsDefaults refers to KTDIR and not KT_DIR"
Fixed.

Committed By: Conrad Vermeulen
Reviewed By: Megan Watson

KTS-3203
" Ensure all entries in config.ini have a default in dmsDefaults.php"
Fixed. Added defaults for all items from config that i could see were missing.

Committed By: Jonathan Byrne
Reviewed By: Jalaloedien Abrahams

KTS-3202
"Update search2 widget to persist search results default state"
Fixed. Used the session variable to persist state.

Committed by: Megan Watson
Reviewed by: Jonathan Byrne


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/trunk@8313 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 67 changed files with 417 additions and 112 deletions
config/config.ini
... ... @@ -279,10 +279,20 @@ df = df
279 279 ; defaults to 25
280 280 resultsPerPage = default
281 281  
  282 +; The format in which to display the results
  283 +; options are searchengine or browseview
  284 +; defaults to searchengine
  285 +resultsDisplayFormat = default
  286 +
282 287 ; The date format used when making queries using widgets
283 288 ; defaults to Y-m-d
284 289 dateFormat = default
285 290  
  291 +[browse]
  292 +; The document info box / preview is activated by mousing over or clicking on the icon
  293 +; Options: mouse-over (default); onclick
  294 +previewActivation = default
  295 +
286 296 [indexer]
287 297 ; The core indexing class
288 298 ;coreClass=PHPLuceneIndexer
... ...
config/dmsDefaults.php
... ... @@ -489,13 +489,20 @@ function catchFatalErrors($p_OnOff='On'){
489 489 $oKTConfig->setdefaultns('KnowledgeTree', 'execSearchPath', $_SERVER['PATH']);
490 490 $oKTConfig->setdefaultns('KnowledgeTree', 'pathInfoSupport', false);
491 491 $oKTConfig->setdefaultns('KnowledgeTree', 'magicDatabase', KTInit::detectMagicFile());
492   -
  492 + $oKTConfig->setdefaultns('KnowledgeTree', 'schedulerInterval', 30);
  493 +
493 494 $oKTConfig->setdefaultns('dashboard', 'alwaysShowYCOD', true);
494 495  
495 496 $oKTConfig->setdefaultns('storage', 'manager', 'KTOnDiskHashedStorageManager');
496 497 $oKTConfig->setdefaultns('config', 'useDatabaseConfiguration', false);
497 498  
  499 + $oKTConfig->setdefaultns('urls', 'varDirectory', '${fileSystemRoot}/var');
  500 + $oKTConfig->setdefaultns('urls', 'logDirectory', '${varDirectory}/log');
  501 + $oKTConfig->setdefaultns('urls', 'documentRoot', '${varDirectory}/Documents');
  502 + $oKTConfig->setdefaultns('urls', 'uiDirectory', '${fileSystemRoot}/presentation/lookAndFeel/knowledgeTree');
498 503 $oKTConfig->setdefaultns('urls', 'tmpDirectory', '${varDirectory}/tmp');
  504 + $oKTConfig->setdefaultns('urls', 'graphicsUrl', '${rootUrl}/graphics');
  505 + $oKTConfig->setdefaultns('urls', 'uiUrl', '${rootUrl}/presentation/lookAndFeel/knowledgeTree');
499 506 $oKTConfig->setdefaultns('urls', 'stopwordsFile', '${fileSystemRoot}/config/stopwords.txt');
500 507  
501 508 $oKTConfig->setdefaultns('tweaks', 'browseToUnitFolder', false);
... ... @@ -503,27 +510,74 @@ function catchFatalErrors($p_OnOff='On'){
503 510 $oKTConfig->setdefaultns('tweaks', 'phpErrorLogFile', false);
504 511 $oKTConfig->setdefaultns('tweaks', 'developmentWindowLog', false);
505 512 $oKTConfig->setdefaultns('tweaks', 'noisyBulkOperations', false);
  513 +
  514 + $oKTConfig->setdefaultns('email', 'emailServer', 'none');
  515 + $oKTConfig->setdefaultns('email', 'emailPort', '');
  516 + $oKTConfig->setdefaultns('email', 'emailAuthentication', false);
  517 + $oKTConfig->setdefaultns('email', 'emailUsername', 'username');
  518 + $oKTConfig->setdefaultns('email', 'emailPassword', 'password');
  519 + $oKTConfig->setdefaultns('email', 'emailFrom', 'kt@example.org');
  520 + $oKTConfig->setdefaultns('email', 'emailFromName', 'KnowledgeTree Document Management System');
  521 + $oKTConfig->setdefaultns('email', 'allowAttachment', false);
  522 + $oKTConfig->setdefaultns('email', 'allowEmailAddresses', false);
  523 + $oKTConfig->setdefaultns('email', 'sendAsSystem', false);
  524 + $oKTConfig->setdefaultns('email', 'onlyOwnGroups', false);
506 525  
507 526 $oKTConfig->setdefaultns('user_prefs', 'passwordLength', 6);
508 527 $oKTConfig->setdefaultns('user_prefs', 'restrictAdminPasswords', false);
  528 + $oKTConfig->setdefaultns('user_prefs', 'restrictPreferences', false);
509 529  
  530 + $oKTConfig->setdefaultns('session', 'sessionTimeout', 1200);
510 531 $oKTConfig->setdefaultns('session', 'allowAnonymousLogin', false);
511 532  
  533 + $oKTConfig->setdefaultns('ui', 'companyLogo', '${rootUrl}/resources/companylogo.png');
  534 + $oKTConfig->setdefaultns('ui', 'companyLogoWidth', '313px');
  535 + $oKTConfig->setdefaultns('ui', 'companyLogoTitle', 'ACME Corporation');
512 536 $oKTConfig->setdefaultns('ui', 'ieGIF', true);
513 537 $oKTConfig->setdefaultns('ui', 'alwaysShowAll', false);
  538 + $oKTConfig->setdefaultns('ui', 'automaticRefresh', false);
514 539 $oKTConfig->setdefaultns('ui', 'condensedAdminUI', false);
  540 + $oKTConfig->setdefaultns('ui', 'fakeMimetype', false);
  541 + $oKTConfig->setdefaultns('ui', 'dot', 'dot');
  542 + $oKTConfig->setdefaultns('ui', 'metadata_sort', true);
  543 +
  544 + $oKTConfig->setdefaultns('i18n', 'useLike', false);
515 545  
516 546 $oKTConfig->setdefaultns(null, 'logLevel', 'INFO');
517 547 $oKTConfig->setdefaultns('import', 'unzip', 'unzip');
  548 + $oKTConfig->setdefaultns('export', 'zip', 'zip');
  549 + $oKTConfig->setdefaultns('export', 'encoding', 'UTF-8');
  550 +
  551 + $oKTConfig->setdefaultns('externalBinary', 'xls2csv', 'xls2csv');
  552 + $oKTConfig->setdefaultns('externalBinary', 'pdftotext', 'pdftotext');
  553 + $oKTConfig->setdefaultns('externalBinary', 'catppt', 'catppt');
  554 + $oKTConfig->setdefaultns('externalBinary', 'pstotext', 'pstotext');
  555 + $oKTConfig->setdefaultns('externalBinary', 'catdoc', 'catdoc');
  556 + $oKTConfig->setdefaultns('externalBinary', 'antiword', 'antiword');
  557 + $oKTConfig->setdefaultns('externalBinary', 'python', 'python');
  558 + $oKTConfig->setdefaultns('externalBinary', 'java', 'java');
  559 + $oKTConfig->setdefaultns('externalBinary', 'php', 'php');
  560 + $oKTConfig->setdefaultns('externalBinary', 'df', 'df');
  561 +
518 562 $oKTConfig->setdefaultns('cache', 'cacheDirectory', '${varDirectory}/cache');
519 563 $oKTConfig->setdefaultns('cache', 'cacheEnabled', 'false');
520 564 $oKTConfig->setdefaultns('cache', 'proxyCacheDirectory', '${varDirectory}/proxies');
521 565 $oKTConfig->setdefaultns('cache', 'proxyCacheEnabled', 'true');
522   -
523   - $oKTConfig->setdefaultns('search', 'searchBasePath', '${fileSystemRoot}/search2');
  566 + $oKTConfig->setdefaultns('cache', 'cachePlugins', 'true');
  567 +
  568 + $oKTConfig->setdefaultns('KTWebDAVSettings', 'debug', 'off');
  569 + $oKTConfig->setdefaultns('KTWebDAVSettings', 'safemode', 'on');
  570 +
  571 + $oKTConfig->setdefaultns('BaobabSettings', 'debug', 'off');
  572 + $oKTConfig->setdefaultns('BaobabSettings', 'safemode', 'on');
  573 +
  574 + $oKTConfig->setdefaultns('search', 'searchBasePath', KT_DIR . '/search2');
524 575 $oKTConfig->setdefaultns('search', 'fieldsPath', '${searchBasePath}/search/fields');
  576 + $oKTConfig->setdefaultns('search', 'resultsDisplayFormat', 'searchengine');
525 577 $oKTConfig->setdefaultns('search', 'resultsPerPage', 25);
526 578 $oKTConfig->setdefaultns('search', 'dateFormat', 'Y-m-d');
  579 +
  580 + $oKTConfig->setdefaultns('browse', 'previewActivation', 'mouse-over');
527 581  
528 582 $oKTConfig->setdefaultns('indexer', 'coreClass', 'JavaXMLRPCLuceneIndexer');
529 583 $oKTConfig->setdefaultns('indexer', 'batchDocuments', 20);
... ... @@ -542,6 +596,8 @@ function catchFatalErrors($p_OnOff='On'){
542 596 $oKTConfig->setdefaultns('webservice', 'uploadExpiry', '30');
543 597 $oKTConfig->setdefaultns('webservice', 'downloadExpiry', '30');
544 598 $oKTConfig->setdefaultns('webservice', 'randomKeyText', 'bkdfjhg23yskjdhf2iu');
  599 + $oKTConfig->setdefaultns('webservice', 'validateSessionCount', false);
  600 + $oKTConfig->setdefaultns('webservice', 'useDefaultDocumentTypeIfInvalid', true);
545 601 $oKTConfig->setdefaultns('webservice', 'debug', false);
546 602  
547 603 $oKTConfig->setdefaultns('clientToolPolicies', 'explorerMetadataCapture', true);
... ... @@ -552,9 +608,11 @@ function catchFatalErrors($p_OnOff='On'){
552 608 $oKTConfig->setdefaultns('clientToolPolicies', 'captureReasonsCancelCheckout', true);
553 609 $oKTConfig->setdefaultns('clientToolPolicies', 'captureReasonsCopyInKT', true);
554 610 $oKTConfig->setdefaultns('clientToolPolicies', 'captureReasonsMoveInKT', true);
555   -
556 611 $oKTConfig->setdefaultns('clientToolPolicies', 'allowRememberPassword', true);
557 612  
  613 + $oKTConfig->setdefaultns('DiskUsage', 'warningThreshold', 10);
  614 + $oKTConfig->setdefaultns('DiskUsage', 'urgentThreshold', 5);
  615 +
558 616 $res = $this->readConfig();
559 617 if (PEAR::isError($res)) { return $res; }
560 618  
... ... @@ -645,7 +703,7 @@ require_once(KT_LIB_DIR . '/util/ktutil.inc');
645 703  
646 704 require_once(KT_LIB_DIR . '/ktentity.inc');
647 705  
648   -$KTInit->catchFatalErrors();
  706 +//$KTInit->catchFatalErrors();
649 707  
650 708 if (phpversion()<5){
651 709  
... ...
lib/documentmanagement/documentutil.inc.php
... ... @@ -237,7 +237,13 @@ class KTDocumentUtil {
237 237 //$oContents = KTUtil::arrayGet($aOptions, 'contents');
238 238 $aMetadata = KTUtil::arrayGet($aOptions, 'metadata', null, false);
239 239 $oDocumentType = KTUtil::arrayGet($aOptions, 'documenttype');
240   - $sDescription = KTUtil::arrayGet($aOptions, 'description', $sFilename);
  240 + $sDescription = KTUtil::arrayGet($aOptions, 'description', '');
  241 +
  242 + if(empty($sDescription)){
  243 + // If no document name is provided use the filename minus the extension
  244 + $aFile = pathinfo($sFilename);
  245 + $sDescription = (isset($aFile['filename']) && !empty($aFile['filename'])) ? $aFile['filename'] : $sFilename;
  246 + }
241 247  
242 248 $oUploadChannel =& KTUploadChannel::getSingleton();
243 249  
... ...
lib/triggers/triggerregistry.inc.php
... ... @@ -74,7 +74,8 @@ class KTTriggerRegistry {
74 74 {
75 75 if (!class_exists($trigger[0]))
76 76 {
77   - require_once($trigger[1]);
  77 + $sPath = (KTUtil::isAbsolutePath($trigger[1])) ? $trigger[1] : KT_DIR.'/'.$trigger[1];
  78 + require_once($sPath);
78 79 if (!class_exists($trigger[0]))
79 80 {
80 81 global $default;
... ...
login.php
... ... @@ -166,12 +166,8 @@ class LoginPageDispatcher extends KTDispatcher {
166 166 $aLanguageNames = $oReg->getLanguages('knowledgeTree');
167 167 $aRegisteredLanguageNames = array();
168 168  
169   - if(empty($aRegisteredLangs)) {
170   - $query = "DELETE FROM plugin_helper";
171   - DBUtil::runQuery($query);
172   - redirect($_SERVER['REQUEST_URI']);
173   - exit;
174   - } else {
  169 + if(!empty($aRegisteredLangs))
  170 + {
175 171 foreach (array_keys($aRegisteredLangs) as $sLang) {
176 172 $aRegisteredLanguageNames[$sLang] = $aLanguageNames[$sLang];
177 173 }
... ...
resources/css/kt-framing.css
1 1 /* ------------------ generic ------------------ */
2 2  
3   -html {
  3 +html {
4 4 height: 100%;
5 5 }
6 6  
7 7 body
8 8 {
9 9 padding: 1em ; border: 0; margin: 0;
10   - font-size: smaller;
  10 + font-size: smaller;
11 11 font-family: sans-serif;
12 12 }
13 13  
... ... @@ -38,7 +38,7 @@ body
38 38 width: 80%;
39 39 min-height: 200px;
40 40 position: relative;
41   - top:100;
  41 + top:100;
42 42 left:100;
43 43 }
44 44  
... ... @@ -151,14 +151,14 @@ body
151 151 height: 1.4em;
152 152 }
153 153  
154   -#navbar ul li a
  154 +#navbar ul li a
155 155 {
156 156 color: white;
157 157 text-decoration: none;
158 158 border-bottom: 1px transparent;
159 159 }
160 160  
161   -#navbar ul li a:hover
  161 +#navbar ul li a:hover
162 162 {
163 163 border-bottom: 1px solid white;
164 164 }
... ... @@ -188,7 +188,7 @@ a.main_nav_item {
188 188  
189 189 /* ------------------ breadcrumbs -------------- */
190 190  
191   -#breadcrumbs
  191 +#breadcrumbs
192 192 {
193 193 margin-top: 0.5em;
194 194 margin-bottom: 1em;
... ... @@ -197,7 +197,7 @@ a.main_nav_item {
197 197 text-transform: lowercase;
198 198 }
199 199  
200   -#breadcrumbs .primary
  200 +#breadcrumbs .primary
201 201 {
202 202 font-weight: bold;
203 203 }
... ... @@ -221,7 +221,7 @@ a.main_nav_item {
221 221 text-decoration: none;
222 222 border-bottom: 1px solid #9d0a0a;
223 223 }
224   -
  224 +
225 225 /* ------------------ portlets ----------------- */
226 226  
227 227 #portletbar
... ... @@ -254,7 +254,7 @@ a.main_nav_item {
254 254 left: 30px;
255 255 height: 30px;
256 256 width: 80%;
257   - z-index: -1;
  257 + z-index: -1;
258 258 border:0;
259 259 }
260 260  
... ... @@ -265,13 +265,13 @@ a.main_nav_item {
265 265 right: 0px;
266 266 height: 30px;
267 267 width: 60%;
268   - z-index: -1;
  268 + z-index: -1;
269 269 border: 0;
270 270 }
271 271  
272 272 #portletbar .portlet.expanded {
273 273 position: relative;
274   - margin: 0 0 1.5em 0;
  274 + margin: 0 0 1.5em 0;
275 275 padding: 0 0 0 0;
276 276 background: url(../../resources/graphics/portlet_corner_topleft.png) top left no-repeat;
277 277 border: 0;
... ... @@ -285,7 +285,7 @@ a.main_nav_item {
285 285 left: 30px;
286 286 height: 28px;
287 287 width: 80%;
288   - z-index: -1;
  288 + z-index: -1;
289 289 border: 0;
290 290 }
291 291  
... ... @@ -296,7 +296,7 @@ a.main_nav_item {
296 296 right: 0px;
297 297 height: 28px;
298 298 width: 60%;
299   - z-index: -1;
  299 + z-index: -1;
300 300 border: 0;
301 301 }
302 302  
... ... @@ -308,7 +308,7 @@ a.main_nav_item {
308 308 border-bottom: 1px solid #ccc;
309 309 border-left: 1px solid #ccc;
310 310 width: 99%;
311   - height: 100%;
  311 + height: 100%;
312 312 }
313 313  
314 314 /* Attempt to contain side portlet containers in MORE containers*/
... ... @@ -343,7 +343,7 @@ a.main_nav_item {
343 343 /* Bottom Portlet borders */
344 344 /*
345 345 #portletbar .portlet .portletbodyBottomLeft {
346   - position: absolute;
  346 + position: absolute;
347 347 bottom: 0px;
348 348 left: 0px;
349 349 width: 10px;
... ... @@ -352,7 +352,7 @@ a.main_nav_item {
352 352 }
353 353  
354 354 #portletbar .portlet .portletbodyBottomRight {
355   - position: absolute;
  355 + position: absolute;
356 356 bottom: 0px;
357 357 right: 0px;
358 358 width: 10px;
... ... @@ -361,7 +361,7 @@ a.main_nav_item {
361 361 }
362 362  
363 363 #portletbar .portlet .portletbodyBottom {
364   - position: absolute;
  364 + position: absolute;
365 365 bottom: 0px;
366 366 left: 5px;
367 367 height: 3px;
... ... @@ -372,7 +372,7 @@ a.main_nav_item {
372 372 /* Right-hand side portlet borders */
373 373 /*
374 374 #portletbar .portlet .portletbodyRightTop {
375   - position: absolute;
  375 + position: absolute;
376 376 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
377 377 top: 0px;
378 378 right: 0px;
... ... @@ -381,7 +381,7 @@ a.main_nav_item {
381 381 }
382 382  
383 383 #portletbar .portlet .portletbodyRightBottom {
384   - position: absolute;
  384 + position: absolute;
385 385 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
386 386 bottom: 0px;
387 387 right: 0px;
... ... @@ -391,7 +391,7 @@ a.main_nav_item {
391 391  
392 392  
393 393 #portletbar .portlet .portletbodyRightMiddleTop {
394   - position: absolute;
  394 + position: absolute;
395 395 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
396 396 top: 50%;
397 397 right: 0px;
... ... @@ -400,7 +400,7 @@ a.main_nav_item {
400 400 }
401 401  
402 402 #portletbar .portlet .portletbodyRightMiddleBottom {
403   - position: absolute;
  403 + position: absolute;
404 404 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
405 405 bottom: 50%;
406 406 right: 0px;
... ... @@ -409,7 +409,7 @@ a.main_nav_item {
409 409 }
410 410  
411 411 #portletbar .portlet .portletbodyRightQuartTop {
412   - position: absolute;
  412 + position: absolute;
413 413 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
414 414 top: 15%;
415 415 right: 0px;
... ... @@ -418,7 +418,7 @@ a.main_nav_item {
418 418 }
419 419  
420 420 #portletbar .portlet .portletbodyRightQuartBottom {
421   - position: absolute;
  421 + position: absolute;
422 422 background: url(../../resources/graphics/portlet_borderright.png) top right repeat-y;
423 423 bottom: 25%;
424 424 right: 0px;
... ... @@ -539,8 +539,8 @@ a.main_nav_item {
539 539  
540 540 #portletbar .portlet .actionlist li {
541 541 display: block;
542   - padding: 0 0 0 10px;
543   - margin: 0.5em 0.5em 0.15em 0;
  542 + padding: 0 0 0 10px;
  543 + margin: 0.5em 0.5em 0.15em 0;
544 544 text-align:left;
545 545 background: transparent url(../graphics/leftbullet.png) center left no-repeat;
546 546 }
... ... @@ -553,10 +553,10 @@ a.main_nav_item {
553 553 top: 0;
554 554 z-index: 1;
555 555 width:auto;
556   - /*padding: 0 2em 1em 0;
557   - overflow: auto;*/
558   - padding: 0.25em 2em 0em 0em;
559   - overflow: hidden;
  556 + /*padding: 0 2em 1em 0;
  557 + overflow: auto;*/
  558 + padding: 0.25em 2em 0em 0em;
  559 + overflow: hidden;
560 560 min-height: 600px;
561 561 }
562 562  
... ... @@ -573,7 +573,7 @@ a.main_nav_item {
573 573 display: none;
574 574 }
575 575  
576   -#content
  576 +#content
577 577 {
578 578 line-height: 1.6em;
579 579 }
... ... @@ -595,7 +595,7 @@ a.main_nav_item {
595 595 border-bottom: 1px solid #9d0a0a;
596 596 }
597 597  
598   -#content .descriptiveText
  598 +#content .descriptiveText
599 599 {
600 600 color: #666;
601 601 }
... ... @@ -656,15 +656,15 @@ a.main_nav_item {
656 656 }
657 657  
658 658 /* unframed (single button) forms */
659   -#content .noframe fieldset
660   -{
  659 +#content .noframe fieldset
  660 +{
661 661 border-width: 0px;
662 662 padding: 0;
663 663 }
664 664  
665 665 #content .noframe .form_actions
666   -{
667   - margin-top: 0;
  666 +{
  667 + margin-top: 0;
668 668 }
669 669  
670 670 /* old cancel style */
... ... @@ -708,7 +708,7 @@ a.main_nav_item {
708 708 color: #ffdd80;
709 709 }
710 710  
711   -#content .field label
  711 +#content .field label
712 712 {
713 713 display: block;
714 714 font-weight: bold;
... ... @@ -729,7 +729,7 @@ a.main_nav_item {
729 729 background: transparent url(../../resources/graphics/required.png) center left no-repeat;
730 730 }
731 731  
732   -.errorMessage
  732 +.errorMessage
733 733 {
734 734 font-weight: bold;
735 735 }
... ... @@ -767,7 +767,7 @@ a.main_nav_item {
767 767 font-weight: bold;
768 768 }
769 769  
770   -#content .actionmessage
  770 +#content .actionmessage
771 771 {
772 772 padding-bottom: 0.5em;
773 773 border-bottom: 1px dashed #ccc;
... ... @@ -786,7 +786,7 @@ a.main_nav_item {
786 786 }
787 787  
788 788 .metadata.versioned dd div {
789   -
  789 +
790 790 padding: 0.2em 0.5em;
791 791 border-style: solid;
792 792 border-color: #ccc;
... ... @@ -807,7 +807,7 @@ a.main_nav_item {
807 807 }
808 808 .metadata.versioned dd .current.different {
809 809 background-color: #fff2b8;
810   -/*
  810 +/*
811 811 padding-left: 25px;
812 812 background: transparent url(../../thirdparty/icon-theme/16x16/status/dialog-information.png) center left no-repeat;
813 813 */
... ... @@ -815,7 +815,7 @@ a.main_nav_item {
815 815  
816 816 .metadata.versioned dd .previous.different {
817 817 background-color: #e9dda8;
818   -/*
  818 +/*
819 819 padding-left: 25px;
820 820 background: transparent url(../../thirdparty/icon-theme/16x16/status/dialog-information.png) center left no-repeat;
821 821 */
... ... @@ -851,8 +851,8 @@ a.main_nav_item {
851 851  
852 852 .metadatatable td {
853 853 border-bottom: 1px dotted #ccc;
854   - vertical-align: top;
855   - padding: 0.5em;
  854 + vertical-align: top;
  855 + padding: 0.5em;
856 856 font-weight: bold;
857 857 }
858 858  
... ... @@ -1090,7 +1090,7 @@ a.main_nav_item {
1090 1090 margin-bottom: 20px;
1091 1091 }
1092 1092  
1093   -/* ========== kt actions
  1093 +/* ========== kt actions
1094 1094  
1095 1095 These are used to mark up various different "actions" (e.g. cut, copy, delete).
1096 1096 Use them as follows:
... ... @@ -1102,7 +1102,7 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1102 1102 */
1103 1103  
1104 1104  
1105   -.ktAction {
  1105 +.ktAction {
1106 1106 display: block;
1107 1107 text-decoration: none;
1108 1108 overflow: hidden;
... ... @@ -1115,12 +1115,12 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1115 1115 width: 16px;
1116 1116 background-position: top left;
1117 1117 background-repeat: no-repeat;
1118   - background-color: transparent;
  1118 + background-color: transparent;
1119 1119 }
1120 1120  
1121 1121 .ktActionDescribed {
1122 1122 float: left;
1123   - margin-right: 0.5em;
  1123 + margin-right: 0.5em;
1124 1124 }
1125 1125  
1126 1126  
... ... @@ -1132,12 +1132,12 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1132 1132 }
1133 1133  
1134 1134 .ktAction.ktInline {
1135   - float: left;
  1135 + float: left;
1136 1136 padding-right: 0.5em;
1137 1137 background-position: top left;
1138 1138 }
1139 1139  
1140   -.ktHelp {
  1140 +.ktHelp {
1141 1141 background: transparent url(../../thirdparty/icon-theme/16x16/apps/help-browser.png) top left no-repeat;
1142 1142 float: right;
1143 1143 display: block;
... ... @@ -1164,6 +1164,7 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1164 1164 .ktActionLink.ktDenied, .ktAction.ktDenied { background-image: url(../../resources/graphics/denied.png); }
1165 1165 .ktActionLink.ktMoveUp, .ktAction.ktMoveUp { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-up.png); }
1166 1166 .ktActionLink.ktMoveDown, .ktAction.ktMoveDown { background-image: url(../../thirdparty/icon-theme/16x16/actions/move-down.png); }
  1167 +.ktActionLink.ktPreview, .ktAction.ktPreview { background-image: url(../../resources/tango-icons/system-search.png); }
1167 1168  
1168 1169 /* this is sometimes used separately to get the auto-delete help. */
1169 1170 .ktDelete { }
... ... @@ -1188,7 +1189,7 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1188 1189  
1189 1190 /* dashboard blocks. */
1190 1191  
1191   -#dashboard-container-left {
  1192 +#dashboard-container-left {
1192 1193 clear: left;
1193 1194 width: 47%;
1194 1195 margin-top: 0;
... ... @@ -1319,22 +1320,22 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1319 1320 }
1320 1321  
1321 1322 .dashboard_block.rolled-up .dashboard_block_rightrepeat_top
1322   -{
  1323 +{
1323 1324 display: none;
1324 1325 }
1325 1326  
1326 1327 .dashboard_block.rolled-up .dashboard_block_rightrepeat_bottom
1327   -{
  1328 +{
1328 1329 display: none;
1329 1330 }
1330 1331  
1331 1332 .dashboard_block.rolled-up .dashboard_block_leftrepeat_top
1332   -{
  1333 +{
1333 1334 display: none;
1334 1335 }
1335 1336  
1336 1337 .dashboard_block.rolled-up .dashboard_block_leftrepeat_bottom
1337   -{
  1338 +{
1338 1339 display: none;
1339 1340 }
1340 1341  
... ... @@ -1509,32 +1510,32 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1509 1510 }
1510 1511  
1511 1512 .dashboard_block.rolled-up .error_dashlet_toprepeat
1512   -{
  1513 +{
1513 1514 height: 38px;
1514 1515 }
1515 1516  
1516 1517 .dashboard_block.rolled-up .error_dashlet_bottomrepeat
1517   -{
  1518 +{
1518 1519 height: 20px;
1519 1520 }
1520 1521  
1521 1522 .dashboard_block.rolled-up .error_dashlet_rightrepeat_top
1522   -{
  1523 +{
1523 1524 display: none;
1524 1525 }
1525 1526  
1526 1527 .dashboard_block.rolled-up .error_dashlet_rightrepeat_bottom
1527   -{
  1528 +{
1528 1529 display: none;
1529 1530 }
1530 1531  
1531 1532 .dashboard_block.rolled-up .error_dashlet_leftrepeat_top
1532   -{
  1533 +{
1533 1534 display: none;
1534 1535 }
1535 1536  
1536 1537 .dashboard_block.rolled-up .error_dashlet_leftrepeat_bottom
1537   -{
  1538 +{
1538 1539 display: none;
1539 1540 }
1540 1541  
... ... @@ -1709,32 +1710,32 @@ The text will be hidden for screen view. The generic fahrner-ish approach comes
1709 1710 }
1710 1711  
1711 1712 .dashboard_block.rolled-up .info_dashlet_toprepeat
1712   -{
  1713 +{
1713 1714 height: 38px;
1714 1715 }
1715 1716  
1716 1717 .dashboard_block.rolled-up .info_dashlet_bottomrepeat
1717   -{
  1718 +{
1718 1719 height: 20px;
1719 1720 }
1720 1721  
1721 1722 .dashboard_block.rolled-up .info_dashlet_rightrepeat_top
1722   -{
  1723 +{
1723 1724 display: none;
1724 1725 }
1725 1726  
1726 1727 .dashboard_block.rolled-up .info_dashlet_rightrepeat_bottom
1727   -{
  1728 +{
1728 1729 display: none;
1729 1730 }
1730 1731  
1731 1732 .dashboard_block.rolled-up .info_dashlet_leftrepeat_top
1732   -{
  1733 +{
1733 1734 display: none;
1734 1735 }
1735 1736  
1736 1737 .dashboard_block.rolled-up .info_dashlet_leftrepeat_bottom
1737   -{
  1738 +{
1738 1739 display: none;
1739 1740 }
1740 1741  
... ... @@ -1813,7 +1814,7 @@ hr {
1813 1814 #document-views .downloadbox ul li {
1814 1815 padding-left: 25px;
1815 1816 padding-top: 0.25em;
1816   - padding-bottom: 0.25em;
  1817 + padding-bottom: 0.25em;
1817 1818 background-repeat: no-repeat;
1818 1819 background-position: center left;
1819 1820 }
... ... @@ -1829,8 +1830,8 @@ hr {
1829 1830 #document-views .viewlet .actionlist li
1830 1831 {
1831 1832 display: block;
1832   - padding: 0 0 0 10px;
1833   - margin: 0.5em 0.5em 0.15em 0;
  1833 + padding: 0 0 0 10px;
  1834 + margin: 0.5em 0.5em 0.15em 0;
1834 1835 text-align: left;
1835 1836 background: transparent url(../graphics/leftbullet.png) center left no-repeat;
1836 1837 border: 0;
... ... @@ -1889,7 +1890,7 @@ hr {
1889 1890 border-left: 1px solid white;
1890 1891 border-top: 1px solid white;
1891 1892 border-right: 1px solid white;
1892   - border-bottom: 1px solid white;
  1893 + border-bottom: 1px solid white;
1893 1894 padding: 0 0 0.5em;
1894 1895 }
1895 1896  
... ... @@ -1939,7 +1940,7 @@ hr {
1939 1940  
1940 1941  
1941 1942 /* -------------------------- iframe browse ------------------------ */
1942   -.browse-frame {
  1943 +.browse-frame {
1943 1944 width: 100%;
1944 1945 height: 55em;
1945 1946 border-width: 0px;
... ... @@ -1947,14 +1948,14 @@ hr {
1947 1948 margin: 0;
1948 1949 }
1949 1950  
1950   -.browse_body {
  1951 +.browse_body {
1951 1952 padding: 0;
1952 1953 }
1953 1954  
1954 1955 /* -------------------------- dashboard ------------------------ */
1955 1956  
1956 1957 .dashboard_block_icons
1957   -{
  1958 +{
1958 1959 position: absolute;
1959 1960 top: 0px;
1960 1961 right: 10px;
... ... @@ -1970,12 +1971,12 @@ hr {
1970 1971 }
1971 1972  
1972 1973 .dashboard_block.rolled-up .dashboard_block_body
1973   -{
  1974 +{
1974 1975 display: none;
1975 1976 }
1976 1977  
1977 1978 .ktBlock .dashboard_block_body
1978   -{
  1979 +{
1979 1980 z-index:99;
1980 1981 margin: 8px 0 10px 0;
1981 1982 background-color:#FFFFFF;
... ... @@ -1998,8 +1999,8 @@ hr {
1998 1999 overflow: auto;
1999 2000 }
2000 2001  
2001   -.dashboard_block .dashboard_block_body .edit_action
2002   -{
  2002 +.dashboard_block .dashboard_block_body .edit_action
  2003 +{
2003 2004 z-index:99;
2004 2005 background-color:#FFFFFF;
2005 2006 }
... ... @@ -2007,7 +2008,7 @@ hr {
2007 2008 /* actions */
2008 2009  
2009 2010 #content .dashboard_block .action
2010   -{
  2011 +{
2011 2012 padding: 1em 0.5em;
2012 2013 border-bottom-width: 0px;
2013 2014 background-repeat: no-repeat;
... ... @@ -2015,46 +2016,46 @@ hr {
2015 2016 }
2016 2017  
2017 2018 #content .dashboard_block .action:hover
2018   -{
  2019 +{
2019 2020 border-bottom-width: 0px;
2020 2021 }
2021 2022  
2022   -#content .dashboard_block .action_rollup
2023   -{
  2023 +#content .dashboard_block .action_rollup
  2024 +{
2024 2025 background-image: url(../graphics/bullet_toggle_minus.png);
2025 2026 }
2026 2027  
2027   -#content .dashboard_block.rolled-up .action_rollup
2028   -{
  2028 +#content .dashboard_block.rolled-up .action_rollup
  2029 +{
2029 2030 background-image: url(../graphics/bullet_toggle_plus.png);
2030 2031 }
2031 2032  
2032   -#content .dashboard_block .action_close
2033   -{
  2033 +#content .dashboard_block .action_close
  2034 +{
2034 2035 background-image: url(../graphics/bullet_toggle_close.png);
2035 2036 }
2036 2037  
2037 2038 /* action effects */
2038   -#content .dashboard_block.rolled-up h2
2039   -{
  2039 +#content .dashboard_block.rolled-up h2
  2040 +{
2040 2041 border-bottom-width: 0px;
2041 2042 padding-bottom: 10px;
2042 2043 }
2043 2044  
2044   -#content .ktBlock h2
2045   -{
  2045 +#content .ktBlock h2
  2046 +{
2046 2047 border-bottom-width: 0px;
2047 2048 color: #FFFFFF;
2048 2049 font-size: small;
2049 2050 }
2050 2051  
2051   -#content .dashboard_block.closed
2052   -{
  2052 +#content .dashboard_block.closed
  2053 +{
2053 2054 display: none;
2054 2055 }
2055 2056  
2056 2057 .addDialogScreen
2057   -{
  2058 +{
2058 2059 position: absolute;
2059 2060 display: block;
2060 2061 top: 0px;
... ... @@ -2068,7 +2069,7 @@ hr {
2068 2069 }
2069 2070  
2070 2071 .addDialog
2071   -{
  2072 +{
2072 2073 display: block;
2073 2074 border: 1px solid #ccc;
2074 2075 background-color: white;
... ... @@ -2081,18 +2082,18 @@ hr {
2081 2082  
2082 2083  
2083 2084 .addDialog .dashletLink
2084   -{
  2085 +{
2085 2086 color: #666;
2086 2087 text-decoration: none;
2087 2088 display: block;
2088 2089 }
2089 2090  
2090 2091 body #content #add_dashlet
2091   -{
  2092 +{
2092 2093 display: none;
2093 2094 text-decoration: none;
2094 2095 border-width: 0px;
2095   -
  2096 +
2096 2097 }
2097 2098  
2098 2099 #add_dashlet
... ...
resources/js/search2widget.js
... ... @@ -26,6 +26,18 @@ function onMetadataClick()
26 26 Ext.example.msg(sSearchTranslations[0], sSearchTranslations[2]); /* Quick Search Options, Searches will now only search metadata */
27 27 }
28 28  
  29 +function onSearchEngineFormatClick()
  30 +{
  31 + bResultsFormatSearchEngine = true;
  32 + document.location=rootURL + "/search2.php?action=searchResults&format=searchengine";
  33 +}
  34 +
  35 +function onBrowseFormatClick()
  36 +{
  37 + bResultsFormatSearchEngine = false;
  38 + document.location=rootURL + "/search2.php?action=searchResults&format=browseview";
  39 +}
  40 +
29 41 function onSavedSearchClick(item)
30 42 {
31 43 id = item.id.substr(11);
... ... @@ -135,6 +147,27 @@ function createSearchBar(div, suffix)
135 147 })
136 148 ]
137 149 }
  150 + },
  151 + {
  152 + text: sSearchTranslations[13] , /*Toggle results format*/
  153 + menu: {
  154 + items: [
  155 + new Ext.menu.CheckItem({
  156 + text: sSearchTranslations[14], /* search engine format */
  157 + id: 'cbResultsFormatSearchEngine' + suffix,
  158 + checked: bResultsFormatSearchEngine,
  159 + group: 'options',
  160 + handler: onSearchEngineFormatClick
  161 + }),
  162 + new Ext.menu.CheckItem({
  163 + text: sSearchTranslations[15], /* browse view format */
  164 + id: 'cbBrowseSearchEngine' + suffix,
  165 + checked: !bResultsFormatSearchEngine,
  166 + group: 'options',
  167 + handler: onBrowseFormatClick
  168 + })
  169 + ]
  170 + }
138 171 }
139 172 ]
140 173 });
... ...
resources/mimetypes/big/avi.png 0 โ†’ 100755

9.75 KB

resources/mimetypes/big/c.png 0 โ†’ 100755

10.7 KB

resources/mimetypes/big/compressed.png 0 โ†’ 100755

16.3 KB

resources/mimetypes/big/cpp.png 0 โ†’ 100755

11 KB

resources/mimetypes/big/css.png 0 โ†’ 100755

10.2 KB

resources/mimetypes/big/deb.png 0 โ†’ 100755

18.2 KB

resources/mimetypes/big/default.png 0 โ†’ 100755

4.14 KB

resources/mimetypes/big/djvu.png 0 โ†’ 100755

16.3 KB

resources/mimetypes/big/doc-alt.png 0 โ†’ 100755

15.6 KB

resources/mimetypes/big/doc-alt2.png 0 โ†’ 100755

15.8 KB

resources/mimetypes/big/doc.png 0 โ†’ 100755

14.4 KB

resources/mimetypes/big/dvi.png 0 โ†’ 100755

16.1 KB

resources/mimetypes/big/exe.png 0 โ†’ 100755

13.3 KB

resources/mimetypes/big/f.png 0 โ†’ 100755

9.86 KB

resources/mimetypes/big/generic/pres.png 0 โ†’ 100755

12.6 KB

resources/mimetypes/big/generic/sound.png 0 โ†’ 100755

11.1 KB

resources/mimetypes/big/generic/source.png 0 โ†’ 100755

13.7 KB

resources/mimetypes/big/generic/text.png 0 โ†’ 100755

9.3 KB

resources/mimetypes/big/generic/video.png 0 โ†’ 100755

8.32 KB

resources/mimetypes/big/generic/wordprocessing.png 0 โ†’ 100755

11.3 KB

resources/mimetypes/big/h.png 0 โ†’ 100755

9.82 KB

resources/mimetypes/big/html.png 0 โ†’ 100755

12.6 KB

resources/mimetypes/big/image.png 0 โ†’ 100755

11.2 KB

resources/mimetypes/big/iso.png 0 โ†’ 100755

13.3 KB

resources/mimetypes/big/j.png 0 โ†’ 100755

9.94 KB

resources/mimetypes/big/jar.png 0 โ†’ 100755

17.1 KB

resources/mimetypes/big/java.png 0 โ†’ 100755

10.2 KB

resources/mimetypes/big/l.png 0 โ†’ 100755

9.99 KB

resources/mimetypes/big/mid.png 0 โ†’ 100755

7.08 KB

resources/mimetypes/big/midi.png 0 โ†’ 100755

7.08 KB

resources/mimetypes/big/mov.png 0 โ†’ 100755

12.4 KB

resources/mimetypes/big/o.png 0 โ†’ 100755

10.2 KB

resources/mimetypes/big/ogg.png 0 โ†’ 100755

13.4 KB

resources/mimetypes/big/p.png 0 โ†’ 100755

10.1 KB

resources/mimetypes/big/pdf.png 0 โ†’ 100755

9.79 KB

resources/mimetypes/big/pl.png 0 โ†’ 100755

10.6 KB

resources/mimetypes/big/pps.png 0 โ†’ 100755

16.9 KB

resources/mimetypes/big/ppt.png 0 โ†’ 100755

16.9 KB

resources/mimetypes/big/ps.png 0 โ†’ 100755

10.3 KB

resources/mimetypes/big/py.png 0 โ†’ 100755

11 KB

resources/mimetypes/big/rm.png 0 โ†’ 100755

11.7 KB

resources/mimetypes/big/rpm.png 0 โ†’ 100755

17.4 KB

resources/mimetypes/big/s.png 0 โ†’ 100755

10.4 KB

resources/mimetypes/big/source.png 0 โ†’ 100755

13.7 KB

resources/mimetypes/big/spreadsheet.png 0 โ†’ 100755

15 KB

resources/mimetypes/big/svg.png 0 โ†’ 100755

9.73 KB

resources/mimetypes/big/tar.png 0 โ†’ 100755

16.3 KB

resources/mimetypes/big/tex.png 0 โ†’ 100755

8.77 KB

resources/mimetypes/big/text.png 0 โ†’ 100755

9.3 KB

resources/mimetypes/big/tgz.png 0 โ†’ 100755

17.5 KB

resources/mimetypes/big/ttf.png 0 โ†’ 100755

10.2 KB

resources/mimetypes/big/txt.png 0 โ†’ 100755

9.3 KB

resources/mimetypes/big/vcal.png 0 โ†’ 100755

11.5 KB

resources/mimetypes/big/vcard.png 0 โ†’ 100755

11.7 KB

resources/mimetypes/big/wmv.png 0 โ†’ 100755

18.6 KB

resources/mimetypes/big/xls.png 0 โ†’ 100755

23.3 KB

resources/mimetypes/big/y.png 0 โ†’ 100755

10.1 KB

search2.php
... ... @@ -11,6 +11,122 @@ require_once(KT_LIB_DIR . &quot;/actions/bulkaction.php&quot;);
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,32 @@ 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 + switch ($_GET['format']){
  336 + case 'searchengine':
  337 + $_SESSION['search2resultFormat'] = 'searchengine';
  338 + break;
  339 + case 'browseview':
  340 + $_SESSION['search2resultFormat'] = 'browseview';
  341 + break;
  342 + }
  343 + }
  344 + else
  345 + {
  346 + if(!array_key_exists('search2resultFormat', $_SESSION)){
  347 + global $default;
  348 + $_SESSION['search2resultFormat'] = $default->resultsDisplayFormat;
  349 + }
  350 + }
  351 +
  352 + if ($_SESSION['search2resultFormat'] == 'browseview')
  353 + {
  354 + $this->redirectTo('oldSearchResults');
  355 +
  356 + }
  357 +
  358 + $this->oPage->setBreadcrumbDetails(_kt("Search Results"));
168 359 $this->oPage->title = _kt("Search Results");
169 360  
170 361 $oTemplating =& KTTemplating::getSingleton();
... ...
search2/indexing/indexers/JavaXMLRPCLuceneIndexer.inc.php
... ... @@ -182,7 +182,7 @@ class JavaXMLRPCLuceneIndexer extends Indexer
182 182 $document_id = $hit->DocumentID;
183 183  
184 184 // avoid adding duplicates. If it is in already, it has higher priority.
185   - if (!array_key_exists($document_id, $results) || $score > $results[$document_id]->Score)
  185 + if (!array_key_exists($document_id, $results) || $score > $results[$document_id]->Rank)
186 186 {
187 187 try
188 188 {
... ...
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  
... ... @@ -124,6 +127,12 @@
124 127 {assign var=count value=$count+1}
125 128 {/foreach}
126 129 ];
  130 +
  131 + {if $smarty.session.search2resultFormat != 'searchengine'}
  132 + var bResultsFormatSearchEngine = false;
  133 + {else}
  134 + var bResultsFormatSearchEngine = true;
  135 + {/if}
127 136 </script>
128 137 {literal}
129 138  
... ...