From 940d38f5093d940eddcc614cceb5aa5b6b023ede Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Wed, 2 Nov 2005 19:16:09 +0000 Subject: [PATCH] Bring the outer boolean into the boolean_search array, and finish the pagination in the boolean search. --- presentation/lookAndFeel/knowledgeTree/js/constructed_search.js | 6 +++--- presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php | 41 +++++++++++++++-------------------------- templates/ktcore/boolean_search.smarty | 7 ++++--- 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js b/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js index 660560b..0ef9af9 100644 --- a/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js +++ b/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js @@ -84,7 +84,7 @@ function addNewCriteria(add_button) { // ok, warn the user that we're loading the item. replaceChildNodes(notify_message, 'loading...'); var newCriteriaText = scrapeText(select.options[select.selectedIndex])+' '; // FIXME insert the "input" here. - replaceChildNodes(select.parentNode, newCriteriaText, INPUT({'type':'hidden', 'name':'boolean_search['+tableId+'][values]['+critId+'][type]','value':select.value})); // works thanks to DOM co-ercion. + replaceChildNodes(select.parentNode, newCriteriaText, INPUT({'type':'hidden', 'name':'boolean_search[subgroup]['+tableId+'][values]['+critId+'][type]','value':select.value})); // works thanks to DOM co-ercion. createAdditionalCriteriaOption(parent_table); var removeButton = INPUT({'type':'button', 'value':'Remove'}); attachToElementEvent(removeButton, 'click', partial(removeCriteria, removeButton)); @@ -117,11 +117,11 @@ function do_addNewCriteria(destination_cell, crit_id, table_id, req) { for (var i=0; ierrorRedirectToMain('You need to have at least 1 condition.'); } - if (empty($booleanJoinName)) { - $this->errorRedirectToMain('You need to specify which kind of search (ALL/ANY) you wish to perform.'); - } - // Step 1: extract the criteria selection, and create an array of criteria. - $criteria_set = array(); - foreach (array_keys($datavars) as $k) { - foreach ($datavars[$k] as $order => $dataset) { - $oCriterion = Criteria::getCriterionByNumber($dataset["type"]); - if (PEAR::isError($oCriterion)) { - $this->errorRedirectToMain('Invalid criteria specified.'); - } - $criteria_set[$k][] = array($oCriterion, $dataset["data"]); - } - } - $res = $this->handleCriteriaSet($datavars, $booleanJoinName); + $res = $this->handleCriteriaSet($datavars, KTUtil::arrayGet($_REQUEST, 'fStartIndex', 1)); return $res; } @@ -116,11 +104,11 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { return array($aCritQueries, $aCritParams, $aJoinSQL); } - function criteriaSetToSQL($aCriteriaSet, $sMergeType = "AND") { + function criteriaSetToSQL($aCriteriaSet) { $aJoinSQL = array(); $aSearchStrings = array(); $aParams = array(); - foreach ($aCriteriaSet as $k => $aOneCriteriaSet) { + foreach ($aCriteriaSet["subgroup"] as $k => $aOneCriteriaSet) { if (is_null($aOneCriteriaSet["values"])) { continue; } @@ -130,13 +118,13 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { $aSearchStrings[] = "\n\t\t(\n\t\t\t" . join("\n " . KTUtil::arrayGet($aOneCriteriaSet, 'join', "AND") . " ", $aThisCritQueries) . "\n\t\t)"; } $sJoinSQL = join(" ", $aJoinSQL); - $sSearchString = "\n\t(" . join("\n\t\t" . $sMergeType . " ", $aSearchStrings) . "\n\t)"; + $sSearchString = "\n\t(" . join("\n\t\t" . $aCriteriaSet['join'] . " ", $aSearchStrings) . "\n\t)"; return array($sSearchString, $aParams, $sJoinSQL); } - function handleCriteriaSet($aCriteriaSet, $sMergeType = "AND") { + function handleCriteriaSet($aCriteriaSet, $iStartIndex) { global $default; - list($sSQLSearchString, $aCritParams, $sJoinSQL) = $this->criteriaSetToSQL($aCriteriaSet, $sMergeType); + list($sSQLSearchString, $aCritParams, $sJoinSQL) = $this->criteriaSetToSQL($aCriteriaSet); $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); // actually never present in this version. @@ -175,8 +163,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { //print '
';var_dump(DBUtil::getResultArray(array($sQuery, $aParams)));
 		//exit(0);
 		//return '
'.print_r(DBUtil::getResultArray(array($sQuery, $aParams)), true).'
'; - $iStartIndex = 1; - $aColumns = array("folder_name", "file_name", "document_name", "doc_count", "view"); $aColumnTypes = array(3,3,3,1,3); $aColumnHeaders = array("graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "", "" . _("Name") . "", "" . _("Title") . "", "" . _("Matches") . "", "" . _("View") . ""); @@ -187,9 +173,12 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { $oPatternBrowse = & new PatternBrowseableSearchResults(array($sQuery, $aParams), 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); $oPatternBrowse->setStartIndex($iStartIndex); $oPatternBrowse->setSearchText(""); - $sForSearch = ""; - - return renderHeading(_("Advanced Search")) . $oPatternBrowse->render() . $sForSearch . $sRefreshMessage; + $sFormStart = '
'; + + $sFormEnd = ''; + $sFormEnd .= ''; + + return renderHeading(_("Advanced Search")) . $sFormStart . $oPatternBrowse->render() . $sFormEnd . $sRefreshMessage; } } diff --git a/templates/ktcore/boolean_search.smarty b/templates/ktcore/boolean_search.smarty index 90bdf36..e1ff9f6 100644 --- a/templates/ktcore/boolean_search.smarty +++ b/templates/ktcore/boolean_search.smarty @@ -48,15 +48,16 @@ legend { border: 1px dotted #999;}

Boolean Search

- + -

Return items which match   of the criteria groups specified.

+

Return items which match   of the criteria groups specified.

Criteria Group -

Return items which match   of the criteria specified.

+

Return items which match   of the criteria specified.

-- libgit2 0.21.4