diff --git a/presentation/lookAndFeel/knowledgeTree/js/divSwitch.js b/presentation/lookAndFeel/knowledgeTree/js/divSwitch.js index 5108955..5b81dcb 100644 --- a/presentation/lookAndFeel/knowledgeTree/js/divSwitch.js +++ b/presentation/lookAndFeel/knowledgeTree/js/divSwitch.js @@ -8,17 +8,23 @@ function switchDiv(div_id, object) var aDocumentDivs = new Array("documentData", "genericMetaData", "typeSpecificMetaData", "archiveSettings", "documentRouting", "linkedDocuments"); var aFolderDivs = new Array("folderData", "folderRouting", "documentTypes", "folderPermissions"); + var aSearchDivs = new Array("searchLess", "searchMore"); var style_sheet = getStyleObject(div_id); + var aDivs; if (style_sheet) { if (object == "document") { - showAll(aDocumentDivs); - hideAll(aDocumentDivs); - } else { - showAll(aFolderDivs); - hideAll(aFolderDivs); + aDivs = aDocumentDivs; + } + if (object == "folder") { + aDivs = aFolderDivs; + } + if (object == "search") { + aDivs = aSearchDivs; } + showAll(aDivs); + hideAll(aDivs); changeObjectVisibility(div_id,"visible"); } else @@ -29,7 +35,7 @@ function switchDiv(div_id, object) // function hideAll() // hides a bunch of divs -// + function hideAll(aDivs) { for (var i=0; i $v) { + if (searchCriteria($k) === 1) { + $v = trim($v); + if ($v === "") { + continue; + } + if ($v === "-1") { + continue; + } + $aReq[$k] = $v; + } + } + $aIDs = array_unique(array_map("criteriaNumber", array_keys($aReq))); + $aSQL = array(); + foreach ($aIDs as $iID) { + $oCriterion =& Criteria::getCriterionByNumber($iID); + $res = $oCriterion->searchSQL($aReq); + if (!is_null($res)) { + $aSQL[] = $res; + } + } + $aCritParams = array(); + $aCritQueries = array(); + foreach ($aSQL as $sSQL) { + if (is_array($sSQL)) { + $aCritQueries[] = $sSQL[0]; + $aCritParams = array_merge($aCritParams , $sSQL[1]); + } else { + $aCritQueries[] = $sSQL; + } + } + $sSQLSearchString = join(" AND ", $aCritQueries); + + $sQuery = DBUtil::compactQuery(" +SELECT + F.name AS folder_name, F.id AS folder_id, D.id AS document_id, + D.name AS document_name, COUNT(D.id) AS doc_count +FROM + $default->documents_table AS D + INNER JOIN $default->folders_table AS F ON D.folder_id = F.id + INNER JOIN $default->document_fields_link_table AS DFL ON DFL.document_id = D.id + INNER JOIN $default->document_fields_table AS DF ON DF.id = DFL.document_field_id + INNER JOIN $default->search_permissions_table AS SDUL ON SDUL.document_id = D.id + INNER JOIN $default->status_table AS SL on D.status_id=SL.id +WHERE + SDUL.user_id = ? + AND SL.name = ? + AND ($sSQLSearchString) +GROUP BY D.id +ORDER BY doc_count DESC"); + + $aParams = array(); + $aParams[] = $_SESSION["userID"]; + $aParams[] = "Live"; + $aParams = array_merge($aParams, $aCritParams); + + //var_dump(DBUtil::getResultArray(array($sQuery, $aParams))); + //exit(0); + + $aColumns = array("folder_name", "document_name", "doc_count"); + $aColumnTypes = array(3,3,1); + $aColumnHeaders = array("graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "","" . _("Document") . "", "" . _("Matches") . ""); + $aLinkURLs = array("$default->rootUrl/control.php?action=browse","$default->rootUrl/control.php?action=viewDocument"); + $aDBQueryStringColumns = array("document_id","folder_id"); + $aQueryStringVariableNames = array("fDocumentID", "fFolderID"); + + $oPatternBrowse = & new PatternBrowseableSearchResults(array($sQuery, $aParams), 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); + $oPatternBrowse->setStartIndex($iStartIndex); + $oPatternBrowse->setSearchText(""); + + $sRefreshMessage = "
" . _("If your browser displays a 'Warning: Page has Expired' message when you attempt to return to these search results, please click your browser's 'Refresh' button") . "
"; + return renderHeading(_("Advanced Search")) . $oPatternBrowse->render() . $sRefreshMessage . getSearchVariablesHtml($sSearchString, $sStatus, $sMetaTagIDs); +} + +function dealWithAdvancedSearch($aReq, $iStartIndex) { + global $main; + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getAdvancedSearchResults($aReq, $iStartIndex)); + $main->setCentralPayload($oPatternCustom); + $main->render(); +} if (checkSession()) { require_once("$default->fileSystemRoot/lib/visualpatterns/PatternBrowsableSearchResults.inc"); @@ -43,8 +136,14 @@ if (checkSession()) { require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); + if (!isset($fStartIndex)) { + $fStartIndex = 1; + } + if (strlen($fForSearch)) { - if (strlen($fSearchString) > 0) { + if (array_key_exists('advancedSearch_x', $_REQUEST)) { + dealWithAdvancedSearch($_REQUEST, $fStartIndex); + } else if (strlen($fSearchString) > 0) { $oPatternCustom = & new PatternCustom(); //display search results @@ -52,24 +151,20 @@ if (checkSession()) { if (strlen($sMetaTagIDs) > 0) { $sSQLSearchString = getSQLSearchString($fSearchString); - - if (!isset($fStartIndex)) { - $fStartIndex = 1; - } $oPatternCustom->setHtml(getSearchResults($sMetaTagIDs, $sSQLSearchString, $fStartIndex, $fSearchString, $fToSearch)); $main->setCentralPayload($oPatternCustom); $main->render(); } else { - $oPatternCustom->setHtml(getSearchPage($fSearchString)); $main->setCentralPayload($oPatternCustom); $main->setErrorMessage(_("Please select at least one criteria to search by")); $main->setHasRequiredFields(true); $main->setFormAction($_SERVER["PHP_SELF"] . "?fForSearch=1"); + $main->setOnLoadJavaScript("switchDiv('" . (isset($fShowSection) ? $fShowSection : "searchLess") . "', 'search')"); $main->render(); } } else { - $sMetaTagIDs = getChosenMetaDataTags(); + $sMetaTagIDs = getChosenMetaDataTags($_POST); $aMetaTagIDs = explode(",", $sMetaTagIDs); $oPatternCustom = & new PatternCustom(); $oPatternCustom->setHtml(getSearchPage($fSearchString, $aMetaTagIDs)); @@ -77,6 +172,7 @@ if (checkSession()) { $main->setErrorMessage(_("Please enter text to search on")); $main->setHasRequiredFields(true); $main->setFormAction($_SERVER["PHP_SELF"] . "?fForSearch=1"); + $main->setOnLoadJavaScript("switchDiv('" . (isset($fShowSection) ? $fShowSection : "searchLess") . "', 'search')"); $main->render(); } @@ -87,6 +183,7 @@ if (checkSession()) { $main->setHasRequiredFields(true); $main->setCentralPayload($oPatternCustom); $main->setFormAction($_SERVER["PHP_SELF"] . "?fForSearch=1"); + $main->setOnLoadJavaScript("switchDiv('" . (isset($fShowSection) ? $fShowSection : "searchLess") . "', 'search')"); $main->render(); } } diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc index adcca64..1ef4f88 100644 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc +++ b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc @@ -25,6 +25,8 @@ * @package search */ +require_once("$default->fileSystemRoot/lib/browse/Criteria.inc"); + function getMetaData($aMetaTagIDs) { global $default; /*ok*/ $sQuery = "SELECT name, id FROM $default->document_fields_table ORDER BY name ASC"; @@ -63,16 +65,40 @@ function getMetaData($aMetaTagIDs) { return $sToRender; } + +function renderSearchSection($sSectionName, $sHeadingText, $bDisplayLink) { + static $iColour; + if ($bDisplayLink) { + $sLink = generateControllerLink("advancedSearch", "fShowSection=$sSectionName", $sHeadingText); + } else { + $sLink = "$sHeadingText"; + } + return "$sLink\n"; +} + function getSearchPage($sSearchString = "", $aMetaTagIDs = array(), $sHeading = null, $bSearchArchive = false) { global $default; if (is_null($sHeading)) { $sHeading = _("Advanced Search"); } + $sToRender = renderHeading($sHeading); + + $sToRender .= "
\n"; + $sToRender .= ""; + $sToRender .= renderSearchSection("searchLess", _("Simpler Search"), false); + $sToRender .= renderSearchSection("searchMore", _("More Options"), false); + $sToRender .= "
"; + $sToRender .= "
"; + + $sToRender .= ""; + return $sToRender . getSearchValidationJavaScript(); } @@ -121,6 +172,7 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc $aParams[] = $sStatus; $default->log->info("getSearchResults $sQuery"); + $aColumns = array("folder_name", "document_name", "doc_count"); $aColumnTypes = array(3,3,1); $aColumnHeaders = array("graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "","" . _("Document") . "", "" . _("Matches") . ""); @@ -137,16 +189,15 @@ function getSearchResults($sMetaTagIDs, $sSQLSearchString, $iStartIndex, $sSearc } function getSearchValidationJavaScript() { - $sToRender = "\n\n\n\n"; + $sToRender .= "\n\n";*/ return $sToRender; - } function wasSelected($iID, $aMetaTagIDs) {