* @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ /** * Include parent class */ require_once("class.Bootstrap.php"); /** * Include class to preview documents */ require_once("SeedDMS/Preview.php"); /** * Class which outputs the html page for Search result view * * @category DMS * @package SeedDMS * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann * @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { /** * Mark search query sting in a given string * * @param string $str mark this text * @param string $tag wrap the marked text with this html tag * @return string marked text */ function markQuery($str, $tag = "b") { /* {{{ */ $querywords = preg_split("/ /", $this->query); foreach ($querywords as $queryword) $str = str_ireplace("($queryword)", "<" . $tag . ">\\1", $str); return $str; } /* }}} */ function js() { /* {{{ */ header('Content-Type: application/javascript; charset=UTF-8'); parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); // $this->printFolderChooserJs("form1"); $this->printDeleteFolderButtonJs(); $this->printDeleteDocumentButtonJs(); /* Add js for catching click on document in one page mode */ $this->printClickDocumentJs(); $this->printClickFolderJs(); } /* }}} */ function typeahead() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $query = $this->params['query']; $entries = $this->params['searchhits']; $recs = array(); if($entries) { foreach ($entries as $entry) { if($entry->isType('document')) { $recs[] = 'D'.$entry->getName(); } elseif($entry->isType('folder')) { $recs[] = 'F'.$entry->getName(); } } } array_unshift($recs, ' '.$query); header('Content-Type: application/json'); echo json_encode($recs); } /* }}} */ function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $fullsearch = $this->params['fullsearch']; $totaldocs = $this->params['totaldocs']; $totalfolders = $this->params['totalfolders']; $attrdefs = $this->params['attrdefs']; $allCats = $this->params['allcategories']; $allUsers = $this->params['allusers']; $mode = $this->params['mode']; $resultmode = $this->params['resultmode']; $workflowmode = $this->params['workflowmode']; $enablefullsearch = $this->params['enablefullsearch']; $enableclipboard = $this->params['enableclipboard']; $attributes = $this->params['attributes']; $category = $this->params['category']; $categories = $this->params['categories']; $mimetype = $this->params['mimetype']; $owner = $this->params['owner']; $startfolder = $this->params['startfolder']; $startdate = $this->params['startdate']; $stopdate = $this->params['stopdate']; $expstartdate = $this->params['expstartdate']; $expstopdate = $this->params['expstopdate']; $creationdate = $this->params['creationdate']; $expirationdate = $this->params['expirationdate']; $status = $this->params['status']; $this->query = $this->params['query']; $orderby = $this->params['orderby']; $entries = $this->params['searchhits']; $facets = $this->params['facets']; $totalpages = $this->params['totalpages']; $pageNumber = $this->params['pagenumber']; $searchTime = $this->params['searchtime']; $urlparams = $this->params['urlparams']; $searchin = $this->params['searchin']; $cachedir = $this->params['cachedir']; $previewwidth = $this->params['previewWidthList']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; $this->htmlAddHeader(''."\n", 'js'); $this->htmlStartPage(getMLText("search_results")); $this->globalNavigation(); $this->contentStart(); $this->pageNavigation(getMLText("search_results"), ""); $this->rowStart(); $this->columnStart(4); //echo "
";print_r($_GET);echo "
"; ?>
contentContainerStart(); ?> getObjType() == SeedDMS_Core_AttributeDefinition::objtype_all) { ?>
:
:
:
:
: printFolderChooserHtml("form1", M_READ, -1, $startfolder);?>
:
">   ">
getName()); ?>: printAttributeEditField($attrdef, isset($attributes[$attrdef->getID()]) ? $attributes[$attrdef->getID()] : '', 'attributes', true) ?>
contentContainerEnd(); /* First check if any of the folder filters are set. If it is, * open the accordion. */ $openfilterdlg = false; if($attrdefs) { foreach($attrdefs as $attrdef) { $attricon = ''; if($attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_document || $attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_documentcontent) { if(!empty($attributes[$attrdef->getID()])) $openfilterdlg = true; } } } if($category) $openfilterdlg = true; if($status) $openfilterdlg = true; if($expirationdate) $openfilterdlg = true; ?>
" style="_height: 0px;">
getObjType() == SeedDMS_Core_AttributeDefinition::objtype_document || $attrdef->getObjType() == SeedDMS_Core_AttributeDefinition::objtype_documentcontent) { ?>
:
:
:
">   ">
getName()); ?>: printAttributeEditField($attrdef, isset($attributes[$attrdef->getID()]) ? $attributes[$attrdef->getID()] : '', 'attributes', true) ?>
getObjType() == SeedDMS_Core_AttributeDefinition::objtype_folder) { if(!empty($attributes[$attrdef->getID()])) $openfilterdlg = true; } } } ?>
" style="_height: 0px;">
getObjType() == SeedDMS_Core_AttributeDefinition::objtype_folder) { ?>
getName()); ?>: printAttributeEditField($attrdef, isset($attributes[$attrdef->getID()]) ? $attributes[$attrdef->getID()] : '', 'attributes', true) ?>
\n"; $this->contentContainerStart(); ?>
$values) { ?>
:
:
:
:
: $c) { $option = array($v, $v.' ('.$c.')'); if(isset(${$facetname}) && in_array($v, ${$facetname})) $option[] = true; $options[] = $option; } $this->formField( null, array( 'element'=>'select', 'id'=>$facetname, 'name'=>$facetname."[]", 'class'=>'chzn-select', 'attributes'=>array(array('data-placeholder', getMLText('select_'.$facetname))), 'options'=>$options, 'multiple'=>true ) ); ?>
contentContainerEnd(); echo "
\n"; } ?> columnEnd(); $this->columnStart(8); // Search Result {{{ $foldercount = $doccount = 0; if($entries) { /* foreach ($entries as $entry) { if($entry->isType('document')) { $doccount++; } elseif($entry->isType('document')) { $foldercount++; } } */ print "
".getMLText("search_report", array("doccount" => $totaldocs, "foldercount" => $totalfolders, 'searchtime'=>$searchTime))."
"; $this->pageList($pageNumber, $totalpages, "../out/out.Search.php", $urlparams); // $this->contentContainerStart(); $txt = $this->callHook('searchListHeader', $orderby, 'asc'); if(is_string($txt)) echo $txt; else { parse_str($_SERVER['QUERY_STRING'], $tmp); $tmp['orderby'] = $orderby=="n"||$orderby=="na)"?"nd":"n"; print ""; print "\n\n"; print "\n"; print "\n"; //print "\n"; print "\n"; print "\n"; print "\n\n\n"; } $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); foreach ($entries as $entry) { if($entry->isType('document')) { $txt = $this->callHook('documentListItem', $entry, $previewer, false, 'search'); if(is_string($txt)) echo $txt; else { $document = $entry; $owner = $document->getOwner(); if($lc = $document->getLatestContent()) $previewer->createPreview($lc); if (in_array(3, $searchin)) $comment = $this->markQuery(htmlspecialchars($document->getComment())); else $comment = htmlspecialchars($document->getComment()); if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; $belowtitle = "
".getMLText('in_folder').": /"; $folder = $document->getFolder(); $path = $folder->getPath(); for ($i = 1; $i < count($path); $i++) { $belowtitle .= htmlspecialchars($path[$i]->getName())."/"; } $belowtitle .= ""; $lcattributes = $lc ? $lc->getAttributes() : null; $attrstr = ''; if($lcattributes) { $attrstr .= "
".getMLText("name"); if(!$fullsearch) { print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; $tmp['orderby'] = $orderby=="d"||$orderby=="da)"?"dd":"d"; print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; } print "".getMLText("attributes")."".getMLText("status")."".getMLText("action")."
\n"; $attrstr .= ""; foreach($lcattributes as $lcattribute) { $arr = $this->callHook('showDocumentContentAttribute', $lc, $lcattribute); if(is_array($arr)) { $attrstr .= ""; $attrstr .= ""; $attrstr .= ""; $attrstr .= ""; } elseif(is_string($arr)) { $attrstr .= $arr; } else { $attrdef = $lcattribute->getAttributeDefinition(); $attrstr .= "\n"; // TODO: better use printAttribute() // $this->printAttribute($lcattribute); } } $attrstr .= "
".getMLText('name')."".getMLText('attribute_value')."
".$arr[0].":".$arr[1]."
".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $lcattribute->getValueAsArray()))."
\n"; } $docattributes = $document->getAttributes(); if($docattributes) { $attrstr .= "\n"; $attrstr .= ""; foreach($docattributes as $docattribute) { $arr = $this->callHook('showDocumentAttribute', $document, $docattribute); if(is_array($arr)) { $attrstr .= ""; $attrstr .= ""; $attrstr .= ""; $attrstr .= ""; } elseif(is_string($arr)) { $attrstr .= $arr; } else { $attrdef = $docattribute->getAttributeDefinition(); $attrstr .= "\n"; } } $attrstr .= "
".getMLText('name')."".getMLText('attribute_value')."
".$arr[0].":".$arr[1]."
".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $docattribute->getValueAsArray()))."
\n"; } $extracontent = array(); $extracontent['below_title'] = $belowtitle; if($attrstr) $extracontent['bottom_title'] = '
'.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); print $this->documentListRow($document, $previewer, false, 0, $extracontent); } } elseif($entry->isType('folder')) { $folder = $entry; $owner = $folder->getOwner(); if (in_array(2, $searchin)) { $folderName = $this->markQuery(htmlspecialchars($folder->getName()), "i"); } else { $folderName = htmlspecialchars($folder->getName()); } $attrstr = ''; $folderattributes = $folder->getAttributes(); if($folderattributes) { $attrstr .= "\n"; $attrstr .= ""; foreach($folderattributes as $folderattribute) { $attrdef = $folderattribute->getAttributeDefinition(); $attrstr .= "\n"; } $attrstr .= "
".getMLText('name')."".getMLText('attribute_value')."
".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $folderattribute->getValueAsArray()))."
"; } $extracontent = array(); if($attrstr) $extracontent['bottom_title'] = '
'.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); print $this->folderListRow($folder, false, $extracontent); } } print "\n"; // $this->contentContainerEnd(); $this->pageList($pageNumber, $totalpages, "../out/out.Search.php", $_GET); } else { $numResults = $totaldocs + $totalfolders; if ($numResults == 0) { print "
".getMLText("search_no_results")."
"; } } // }}} $this->columnEnd(); $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ } ?>