search2.php.tmp
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· TMP 代码 · 共 649 行 · 第 1/2 页
TMP
649 行
$aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search'); $collection->addColumns($aColumns); // set a view option $aTitleOptions = array( 'documenturl' => $GLOBALS['KTRootUrl'] . '/view.php', 'direct_folder' => true, ); $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions); // set the selection options $collection->setColumnOptions('ktcore.columns.selection', array( 'rangename' => 'selection', 'show_folders' => true, 'show_documents' => true, )); $aOptions = $collection->getEnvironOptions(); // extract data from the environment $aOptions['empty_message'] = _kt("No documents or folders match this query."); $aOptions['is_browse'] = true; $aOptions['return_url'] = KTUtil::addQueryStringSelf("action=oldSearchResults"); $collection->setOptions($aOptions); $collection->setQueryObject(new Search2Query()); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("kt3/browse"); $aTemplateData = array( "context" => $this, "collection" => $collection, 'isEditable' => true, 'bulkactions' => KTBulkActionUtil::getAllBulkActions(), 'browseutil' => new KTBrowseUtil(), 'returnaction' => 'search2', ); return $oTemplate->render($aTemplateData); } /** * Renders the search results. * * @return string */ function do_searchResults() { if (array_key_exists('format', $_GET)) { switch ($_GET['format']){ case 'searchengine': $_SESSION['search2resultFormat'] = 'searchengine'; break; case 'browseview': $_SESSION['search2resultFormat'] = 'browseview'; break; } } else { if(!array_key_exists('search2resultFormat', $_SESSION)){ global $default; $_SESSION['search2resultFormat'] = $default->resultsDisplayFormat; } } if ($_SESSION['search2resultFormat'] == 'browseview') { $this->redirectTo('oldSearchResults'); } $this->oPage->setBreadcrumbDetails(_kt("Search Results")); $this->oPage->title = _kt("Search Results"); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/search2/search_results"); KTEntityUtil::_proxyCreate('KTDocumentContentVersion','KTDocumentContentVersionProxy'); KTEntityUtil::_proxyCreate('KTDocumentCore','KTDocumentCoreProxy'); KTEntityUtil::_proxyCreate('KTDocumentMetadataVersion','KTDocumentMetadataVersionProxy'); $results = unserialize($_SESSION['search2_results']); if (!is_array($results) || count($results) == 0) { $results=array(); } $numRecs = count($results); $showall = $_GET['showAll']; if (is_numeric($showall)) { $showall = ($showall+0) > 0; } else { $showall = ($showall == 'true'); } $config = KTConfig::getSingleton(); $resultsPerPage = ($showall)?$numRecs:$config->get('search/resultsPerPage', SearchDispatcher::RESULTS_PER_PAGE); $maxPageMove = SearchDispatcher::MAX_PAGE_MOVEMENT; $pageOffset = 1; if (isset($_GET['pageOffset'])) { $pageOffset = $_GET['pageOffset']; } $maxPages = ceil($numRecs / $resultsPerPage) ; if ($pageOffset <= 0 || $pageOffset > $maxPages) { $pageOffset = 1; } $firstRec = ($pageOffset-1) * $resultsPerPage; $lastRec = $firstRec + $resultsPerPage; if ($lastRec > $numRecs) { $lastRec = $numRecs; } $display = array_slice($results,$firstRec ,$resultsPerPage); $startOffset = $pageOffset - $maxPageMove; if ($startOffset < 1) { $startOffset = 1; } $endOffset = $pageOffset + $maxPageMove; if ($endOffset > $maxPages) { $endOffset = $maxPages; } $pageMovement = array(); for($i=$startOffset;$i<=$endOffset;$i++) { $pageMovement[] = $i; } $aBulkActions = KTBulkActionUtil::getAllBulkActions(); $aTemplateData = array( "context" => $this, 'bulkactions'=>$aBulkActions, 'firstRec'=>$firstRec, 'lastRec'=>$lastRec, 'showAll'=>$showall, 'numResults' => count($results), 'pageOffset' => $pageOffset, 'resultsPerPage'=>$resultsPerPage, 'maxPages' => $maxPages, 'results' => $display, 'pageMovement'=>$pageMovement, 'startMovement'=>$startOffset, 'endMovement'=>$endOffset, 'txtQuery' => $_SESSION['search2_query'], 'iSavedID' => $_SESSION['search2_savedid'], 'txtSavedName' => $_SESSION['search2_savedname'] ); return $oTemplate->render($aTemplateData); } function do_manage() { $this->oPage->setBreadcrumbDetails(_kt("Manage Saved Searches")); $this->oPage->title = _kt("Manage Saved Searches"); $sql = "SELECT ss.id, ss.name, u.name as username, user_id is not null as editable, shared FROM search_saved ss LEFT OUTER JOIN users u on ss.user_id = u.id WHERE ss.type='S' "; if (!$this->sysAdmin) { $sql .= " AND (ss.user_id=$this->curUserId OR ss.shared=1)"; } $saved = DBUtil::getResultArray($sql); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/search2/manage_saved_search"); $aTemplateData = array( "context" => $this, 'saved'=>$saved, 'sysadmin'=>$this->sysAdmin ); return $oTemplate->render($aTemplateData); } function do_share() { if (is_null($this->savedSearchId)) { $this->errorRedirectTo('manage', _kt('The saved search id was not passed correctly.')); } if (!array_key_exists('share',$_GET)) { $this->errorRedirectTo('manage', _kt('The sharing option was not passed correctly.')); } if ($_GET['share']=='no') { $share=0; $msg = _kt("The saved search can only be seen by you."); } else { $share=1; $msg = _kt("The saved search is now visible to all users."); } $sql = "UPDATE search_saved SET shared=$share WHERE type='S' AND id=$this->savedSearchId"; if (!$this->sysAdmin) { $sql .= " AND ss.user_id=$this->curUserId"; } DBUtil::runQuery($sql); $this->successRedirectTo('manage', $msg); } function do_delete() { if (is_null($this->savedSearchId)) { $this->errorRedirectTo('manage', _kt('The saved search id was not passed correctly.')); } $sql = "DELETE FROM search_saved WHERE type='S' AND id=$this->savedSearchId"; if (!$this->sysAdmin) { $sql .= " AND user_id=$this->curUserId "; } DBUtil::runQuery($sql); $this->successRedirectTo('manage', _kt('The saved search was deleted successfully.')); } function do_guiBuilder() { $this->oPage->setBreadcrumbDetails(_kt("Advanced Search")); $this->oPage->title = _kt("Advanced Search"); $result = array(); // TODO: need to escape the parameters $result['fieldsets'] = SearchHelper::getFieldsets(); $result['fieldset_str'] = SearchHelper::getJSfieldsetStruct($result['fieldsets']); $result['workflows'] = SearchHelper::getWorkflows(); $result['workflow_str'] = SearchHelper::getJSworkflowStruct($result['workflows']); $result['fields'] = SearchHelper::getSearchFields(); $result['fields_str'] = SearchHelper::getJSfieldsStruct($result['fields']); $result['users_str'] = SearchHelper::getJSusersStruct(); $result['mimetypes_str'] = SearchHelper::getJSmimeTypesStruct(); $result['documenttypes_str'] = SearchHelper::getJSdocumentTypesStruct(); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/search2/adv_query_builder"); $aTemplateData = array( "context" => $this, 'metainfo'=> $result ); return $oTemplate->render($aTemplateData); } function do_queryBuilder() { $this->oPage->setBreadcrumbDetails(_kt("Query Editor")); $this->oPage->title = _kt("Query Editor"); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/search2/adv_query_search"); $registry = ExprFieldRegistry::getRegistry(); $aliases = $registry->getAliasNames(); sort($aliases); $edit = is_numeric($this->savedSearchId); $name = ''; if ($edit) { list($name, $expr) = $this->getSavedExpression(); } else { $expr = $_SESSION['search2_query']; } $aTemplateData = array( "context" => $this, 'aliases' => $aliases, 'bSave'=>$edit, 'edtSaveQueryName'=>$name, 'txtQuery'=>$expr, 'iSavedSearchId'=>$this->savedSearchId ); return $oTemplate->render($aTemplateData); }}$oDispatcher = new SearchDispatcher();$oDispatcher->dispatch();?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?