Commit 1c435d0ca7a32fc04a1f3c4c976f3eeded96d5c0
1 parent
f8c928fa
Bring the outer boolean into the boolean_search array, and finish the
pagination in the boolean search. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3911 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
3 changed files
with
22 additions
and
32 deletions
presentation/lookAndFeel/knowledgeTree/js/constructed_search.js
| ... | ... | @@ -84,7 +84,7 @@ function addNewCriteria(add_button) { |
| 84 | 84 | // ok, warn the user that we're loading the item. |
| 85 | 85 | replaceChildNodes(notify_message, 'loading...'); |
| 86 | 86 | var newCriteriaText = scrapeText(select.options[select.selectedIndex])+' '; // FIXME insert the "input" here. |
| 87 | - replaceChildNodes(select.parentNode, newCriteriaText, INPUT({'type':'hidden', 'name':'boolean_search['+tableId+'][values]['+critId+'][type]','value':select.value})); // works thanks to DOM co-ercion. | |
| 87 | + replaceChildNodes(select.parentNode, newCriteriaText, INPUT({'type':'hidden', 'name':'boolean_search[subgroup]['+tableId+'][values]['+critId+'][type]','value':select.value})); // works thanks to DOM co-ercion. | |
| 88 | 88 | createAdditionalCriteriaOption(parent_table); |
| 89 | 89 | var removeButton = INPUT({'type':'button', 'value':'Remove'}); |
| 90 | 90 | attachToElementEvent(removeButton, 'click', partial(removeCriteria, removeButton)); |
| ... | ... | @@ -117,11 +117,11 @@ function do_addNewCriteria(destination_cell, crit_id, table_id, req) { |
| 117 | 117 | |
| 118 | 118 | for (var i=0; i<inputs.length; i++) { |
| 119 | 119 | var obj = inputs[i]; |
| 120 | - obj.name = "boolean_search["+table_id+"][values]["+crit_id+"][data]["+obj.name+"]"; | |
| 120 | + obj.name = "boolean_search[subgroup]["+table_id+"][values]["+crit_id+"][data]["+obj.name+"]"; | |
| 121 | 121 | } |
| 122 | 122 | for (var i=0; i<selects.length; i++) { |
| 123 | 123 | var obj = selects[i]; |
| 124 | - obj.name = "boolean_search["+table_id+"][values]["+crit_id+"][data]["+obj.name+"]"; | |
| 124 | + obj.name = "boolean_search[subgroup]["+table_id+"][values]["+crit_id+"][data]["+obj.name+"]"; | |
| 125 | 125 | } |
| 126 | 126 | simpleLog('DEBUG','criteria addition complete.'); |
| 127 | 127 | } | ... | ... |
presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php
| ... | ... | @@ -48,27 +48,15 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { |
| 48 | 48 | // TODO finally return via PatternBrowseableSearchResults (urgh.) |
| 49 | 49 | |
| 50 | 50 | $datavars = KTUtil::arrayGet($_REQUEST, 'boolean_search'); |
| 51 | - $booleanJoinName = KTUtil::arrayGet($_REQUEST, 'outer_boolean_condition'); | |
| 51 | + if (!is_array($datavars)) { | |
| 52 | + $datavars = unserialize($datavars); | |
| 53 | + } | |
| 52 | 54 | |
| 53 | 55 | if (empty($datavars)) { |
| 54 | 56 | $this->errorRedirectToMain('You need to have at least 1 condition.'); |
| 55 | 57 | } |
| 56 | - if (empty($booleanJoinName)) { | |
| 57 | - $this->errorRedirectToMain('You need to specify which kind of search (ALL/ANY) you wish to perform.'); | |
| 58 | - } | |
| 59 | 58 | |
| 60 | - // Step 1: extract the criteria selection, and create an array of criteria. | |
| 61 | - $criteria_set = array(); | |
| 62 | - foreach (array_keys($datavars) as $k) { | |
| 63 | - foreach ($datavars[$k] as $order => $dataset) { | |
| 64 | - $oCriterion = Criteria::getCriterionByNumber($dataset["type"]); | |
| 65 | - if (PEAR::isError($oCriterion)) { | |
| 66 | - $this->errorRedirectToMain('Invalid criteria specified.'); | |
| 67 | - } | |
| 68 | - $criteria_set[$k][] = array($oCriterion, $dataset["data"]); | |
| 69 | - } | |
| 70 | - } | |
| 71 | - $res = $this->handleCriteriaSet($datavars, $booleanJoinName); | |
| 59 | + $res = $this->handleCriteriaSet($datavars, KTUtil::arrayGet($_REQUEST, 'fStartIndex', 1)); | |
| 72 | 60 | |
| 73 | 61 | return $res; |
| 74 | 62 | } |
| ... | ... | @@ -116,11 +104,11 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { |
| 116 | 104 | return array($aCritQueries, $aCritParams, $aJoinSQL); |
| 117 | 105 | } |
| 118 | 106 | |
| 119 | - function criteriaSetToSQL($aCriteriaSet, $sMergeType = "AND") { | |
| 107 | + function criteriaSetToSQL($aCriteriaSet) { | |
| 120 | 108 | $aJoinSQL = array(); |
| 121 | 109 | $aSearchStrings = array(); |
| 122 | 110 | $aParams = array(); |
| 123 | - foreach ($aCriteriaSet as $k => $aOneCriteriaSet) { | |
| 111 | + foreach ($aCriteriaSet["subgroup"] as $k => $aOneCriteriaSet) { | |
| 124 | 112 | if (is_null($aOneCriteriaSet["values"])) { |
| 125 | 113 | continue; |
| 126 | 114 | } |
| ... | ... | @@ -130,13 +118,13 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { |
| 130 | 118 | $aSearchStrings[] = "\n\t\t(\n\t\t\t" . join("\n " . KTUtil::arrayGet($aOneCriteriaSet, 'join', "AND") . " ", $aThisCritQueries) . "\n\t\t)"; |
| 131 | 119 | } |
| 132 | 120 | $sJoinSQL = join(" ", $aJoinSQL); |
| 133 | - $sSearchString = "\n\t(" . join("\n\t\t" . $sMergeType . " ", $aSearchStrings) . "\n\t)"; | |
| 121 | + $sSearchString = "\n\t(" . join("\n\t\t" . $aCriteriaSet['join'] . " ", $aSearchStrings) . "\n\t)"; | |
| 134 | 122 | return array($sSearchString, $aParams, $sJoinSQL); |
| 135 | 123 | } |
| 136 | 124 | |
| 137 | - function handleCriteriaSet($aCriteriaSet, $sMergeType = "AND") { | |
| 125 | + function handleCriteriaSet($aCriteriaSet, $iStartIndex) { | |
| 138 | 126 | global $default; |
| 139 | - list($sSQLSearchString, $aCritParams, $sJoinSQL) = $this->criteriaSetToSQL($aCriteriaSet, $sMergeType); | |
| 127 | + list($sSQLSearchString, $aCritParams, $sJoinSQL) = $this->criteriaSetToSQL($aCriteriaSet); | |
| 140 | 128 | |
| 141 | 129 | $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); // actually never present in this version. |
| 142 | 130 | |
| ... | ... | @@ -175,8 +163,6 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { |
| 175 | 163 | //print '<pre>';var_dump(DBUtil::getResultArray(array($sQuery, $aParams))); |
| 176 | 164 | //exit(0); |
| 177 | 165 | //return '<pre>'.print_r(DBUtil::getResultArray(array($sQuery, $aParams)), true).'</pre>'; |
| 178 | - $iStartIndex = 1; | |
| 179 | - | |
| 180 | 166 | $aColumns = array("folder_name", "file_name", "document_name", "doc_count", "view"); |
| 181 | 167 | $aColumnTypes = array(3,3,3,1,3); |
| 182 | 168 | $aColumnHeaders = array("<font color=\"ffffff\"><img src=$default->graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "</font>", "<font color=\"ffffff\">" . _("Name") . "</font>", "<font color=\"ffffff\">" . _("Title") . "</font>", "<font color=\"ffffff\">" . _("Matches") . "</font>", "<font color=\"ffffff\">" . _("View") . "</font>"); |
| ... | ... | @@ -187,9 +173,12 @@ class BooleanSearchDispatcher extends KTStandardDispatcher { |
| 187 | 173 | $oPatternBrowse = & new PatternBrowseableSearchResults(array($sQuery, $aParams), 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); |
| 188 | 174 | $oPatternBrowse->setStartIndex($iStartIndex); |
| 189 | 175 | $oPatternBrowse->setSearchText(""); |
| 190 | - $sForSearch = "<input type=\"hidden\" name=\"fForSearch\" value=\"1\" />"; | |
| 191 | - | |
| 192 | - return renderHeading(_("Advanced Search")) . $oPatternBrowse->render() . $sForSearch . $sRefreshMessage; | |
| 176 | + $sFormStart = '<form method="POST" name="MainForm">'; | |
| 177 | + | |
| 178 | + $sFormEnd = '<input type="hidden" name="boolean_search" value="'. htmlentities(serialize($aCriteriaSet)) . '" />'; | |
| 179 | + $sFormEnd .= '<input type="hidden" name="action" value="performSearch" />'; | |
| 180 | + | |
| 181 | + return renderHeading(_("Advanced Search")) . $sFormStart . $oPatternBrowse->render() . $sFormEnd . $sRefreshMessage; | |
| 193 | 182 | } |
| 194 | 183 | } |
| 195 | 184 | ... | ... |
templates/ktcore/boolean_search.smarty
| ... | ... | @@ -48,15 +48,16 @@ legend { border: 1px dotted #999;} |
| 48 | 48 | |
| 49 | 49 | <h2>Boolean Search</h2> |
| 50 | 50 | |
| 51 | -<form> | |
| 51 | +<form method="POST"> | |
| 52 | 52 | <input type="hidden" name="action" value="performSearch" /> |
| 53 | 53 | |
| 54 | - <p class="helpText">Return items which match <select name="outer_boolean_condition"><option value="AND">all</option><option value="OR">any</option></select> of the <strong>criteria groups</strong> specified.</p> | |
| 54 | + <p class="helpText">Return items which match <select | |
| 55 | +name="boolean_search[join]"><option value="AND">all</option><option value="OR">any</option></select> of the <strong>criteria groups</strong> specified.</p> | |
| 55 | 56 | |
| 56 | 57 | <fieldset> |
| 57 | 58 | <legend>Criteria Group</legend> |
| 58 | 59 | |
| 59 | - <p class="helpText">Return items which match <select name="boolean_search[0][join]"><option value="AND">all</option><option value="OR">any</option></select> of the criteria specified.</p> | |
| 60 | + <p class="helpText">Return items which match <select name="boolean_search[subgroup][0][join]"><option value="AND">all</option><option value="OR">any</option></select> of the criteria specified.</p> | |
| 60 | 61 | |
| 61 | 62 | <table class="advanced-search-form"> |
| 62 | 63 | <tbody> | ... | ... |