Révision | 0e40cce05f2e417df1c3b6e571966571d09fab38 (tree) |
---|---|
l'heure | 2017-09-23 17:55:54 |
Auteur | umorigu <umorigu@gmai...> |
Commiter | umorigu |
Support base in search2
@@ -174,25 +174,24 @@ function plugin_search2_search_form($s_word = '', $type = '', $bases = array()) | ||
174 | 174 | if (!empty($bases)) { |
175 | 175 | $base_msg = ''; |
176 | 176 | $_num = 0; |
177 | - $check = ' checked="checked"'; | |
177 | + $check = ' checked'; | |
178 | 178 | foreach($bases as $base) { |
179 | 179 | ++$_num; |
180 | - if (PLUGIN_SEARCH_MAX_BASE < $_num) break; | |
181 | - $label_id = '_p_search_base_id_' . $_num; | |
180 | + if (PLUGIN_SEARCH2_MAX_BASE < $_num) break; | |
182 | 181 | $s_base = htmlsc($base); |
183 | 182 | $base_str = '<strong>' . $s_base . '</strong>'; |
184 | 183 | $base_label = str_replace('$1', $base_str, $_search_pages); |
185 | 184 | $base_msg .=<<<EOD |
186 | 185 | <div> |
187 | - <input type="radio" name="base" id="$label_id" value="$s_base" $check /> | |
188 | - <label for="$label_id">$base_label</label> | |
186 | + <label> | |
187 | + <input type="radio" name="base" value="$s_base" $check> $base_label | |
188 | + </label> | |
189 | 189 | </div> |
190 | 190 | EOD; |
191 | 191 | $check = ''; |
192 | 192 | } |
193 | 193 | $base_msg .=<<<EOD |
194 | - <input type="radio" name="base" id="_p_search_base_id_all" value="" /> | |
195 | - <label for="_p_search_base_id_all">$_search_all</label> | |
194 | +<label><input type="radio" name="base" value=""> $_search_all</label> | |
196 | 195 | EOD; |
197 | 196 | $base_option = '<div class="small">' . $base_msg . '</div>'; |
198 | 197 | } |
@@ -213,10 +212,10 @@ EOD; | ||
213 | 212 | } |
214 | 213 | |
215 | 214 | return <<<EOD |
216 | -<form action="$script" method="GET"> | |
215 | +<form action="$script" method="GET" class="_plugin_search2_form"> | |
217 | 216 | <div> |
218 | 217 | <input type="hidden" name="cmd" value="search2"> |
219 | - <input type="search" name="q" id="_plugin_search2_searchtext" value="$h_search_text" size="30"> | |
218 | + <input type="search" name="q" value="$h_search_text" size="30"> | |
220 | 219 | <input type="submit" value="$_btn_search"> |
221 | 220 | </div> |
222 | 221 | $base_option |
@@ -29,6 +29,9 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
29 | 29 | if (searchText) { |
30 | 30 | url += '&q=' + encodeURIComponent(searchText); |
31 | 31 | } |
32 | + if (session.base) { | |
33 | + url += '&base=' + encodeURIComponent(session.base); | |
34 | + } | |
32 | 35 | url += '&start=' + startIndex; |
33 | 36 | fetch (url |
34 | 37 | ).then(function(response){ |
@@ -307,13 +310,18 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
307 | 310 | } |
308 | 311 | } |
309 | 312 | function kickFirstSearch() { |
310 | - var searchText = document.querySelector('#_plugin_search2_searchtext'); | |
313 | + var form = document.querySelector('._plugin_search2_form'); | |
314 | + var searchText = form && form.q; | |
311 | 315 | if (!searchText) return; |
312 | 316 | if (searchText && searchText.value) { |
313 | 317 | var e = document.querySelector('#_plugin_search2_msg_searching'); |
314 | 318 | var msg = e && e.value || 'Searching...'; |
315 | 319 | setSearchStatus(msg); |
316 | - doSearch(searchText.value, {}, 0); | |
320 | + var base = ''; | |
321 | + forEach(form.querySelectorAll('input[name="base"]'), function(radio){ | |
322 | + if (radio.checked) base = radio.value; | |
323 | + }); | |
324 | + doSearch(searchText.value, {base: base}, 0); | |
317 | 325 | } |
318 | 326 | } |
319 | 327 | function setSearchStatus(statusText) { |
@@ -336,13 +344,16 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
336 | 344 | if (f.action.match(/cmd=search$/)) { |
337 | 345 | f.addEventListener('submit', function(e) { |
338 | 346 | var q = e.target.word.value; |
339 | - var base = e.target && e.target.base && e.target.base.value; | |
347 | + var base = ''; | |
348 | + forEach(f.querySelectorAll('input[name="base"]'), function(radio){ | |
349 | + if (radio.checked) base = radio.value; | |
350 | + }); | |
340 | 351 | var loc = document.location; |
341 | 352 | var url = loc.protocol + '//' + loc.host + loc.pathname + |
342 | 353 | '?cmd=search2' + |
343 | - (base ? '&base=' + encodeURIComponent(base) : '') + | |
344 | - '&q=' + encodeSearthText(q); | |
345 | - e.preventDefault(); | |
354 | + '&q=' + encodeSearthText(q) + | |
355 | + (base ? '&base=' + encodeURIComponent(base) : ''); | |
356 | + e.preventDefault(); | |
346 | 357 | setTimeout(function() { |
347 | 358 | location.href = url; |
348 | 359 | }, 1); |
@@ -355,7 +366,7 @@ window.addEventListener && window.addEventListener('DOMContentLoaded', function( | ||
355 | 366 | } else if (radio.value === 'OR') { |
356 | 367 | radio.addEventListener('click', onOrRadioClick); |
357 | 368 | } |
358 | - });; | |
369 | + }); | |
359 | 370 | function onAndRadioClick(e) { |
360 | 371 | var sp = removeSearchOperators(f.word.value).split(/\s+/); |
361 | 372 | var newText = sp.join(' '); |