on master help sign in
[enh] add nojs support into oscar-template
5bfaabeThomas Pointhuber
searx/search.py+7−2
@@ -384,12 +384,17 @@ class Search(object):
384 for pd_name, pd in self.request_data.items():
384 for pd_name, pd in self.request_data.items():
385 if pd_name.startswith('category_'):
385 if pd_name.startswith('category_'):
386 category = pd_name[9:]
386 category = pd_name[9:]
387+
387 # if category is not found in list, skip
388 # if category is not found in list, skip
388 if category not in categories:
389 if category not in categories:
389 continue
390 continue
390
391
392+ if pd != 'off':
391− # add category to list
393+ # add category to list
392− self.categories.append(category)
394+ self.categories.append(category)
395+ elif category in self.categories:
396+ # remove category from list if property is set to 'off'
397+ self.categories.remove(category)
393
398
394 # if no category is specified for this search,
399 # if no category is specified for this search,
395 # using user-defined default-configuration which
400 # using user-defined default-configuration which
searx/static/themes/oscar/css/oscar.min.css+9−5
@@ -1,11 +1,14 @@
1html{position:relative;min-height:100%}
1html{position:relative;min-height:100%}
2body{margin-bottom:80px}
2body{margin-bottom:80px}
3.footer{position:absolute;bottom:0;width:100%;height:60px}
3.footer{position:absolute;bottom:0;width:100%;height:60px}
4−input[type=checkbox]:checked~.label_hide_if_checked{display:none}
4+input[type=checkbox]:checked+.label_hide_if_checked,input[type=checkbox]:checked+.label_hide_if_not_checked+.label_hide_if_checked{display:none}
5−input[type=checkbox]:not(:checked)~.label_hide_if_not_checked{display:none}
5+input[type=checkbox]:not(:checked)+.label_hide_if_not_checked,input[type=checkbox]:not(:checked)+.label_hide_if_checked+.label_hide_if_not_checked{display:none}
6−.result_header{margin-bottom:5px;margin-top:20px}.result_header .favicon{margin-bottom:-3px}
6+.result_header{margin-bottom:5px;margin-top:20px}
7+.result_header .favicon{margin-bottom:-3px}
8+.result_header a{vertical-align:bottom}
7−.result_header a{vertical-align:bottom}.result_header a .highlight{font-weight:bold}
9+.result_header a .highlight{font-weight:bold}
10+.result-content{margin-top:5px}
8−.result-content{margin-top:5px}.result-content .highlight{font-weight:bold}
11+.result-content .highlight{font-weight:bold}
9.result-default{clear:both}
12.result-default{clear:both}
10.result-images{float:left !important}
13.result-images{float:left !important}
11.img-thumbnail{margin:5px;max-height:128px;min-height:128px}
14.img-thumbnail{margin:5px;max-height:128px;min-height:128px}
@@ -20,3 +23,4 @@ input[type=checkbox]:not(:checked)~.label_hide_if_not_checked{display:none}
20.search_categories{margin:10px 0;text-transform:capitalize}
23.search_categories{margin:10px 0;text-transform:capitalize}
21.cursor-text{cursor:text !important}
24.cursor-text{cursor:text !important}
22.cursor-pointer{cursor:pointer !important}
25.cursor-pointer{cursor:pointer !important}
26+
searx/static/themes/oscar/less/oscar/checkbox.less+2−2
@@ -1,9 +1,9 @@
1// Hide element if checkbox is checked
1// Hide element if checkbox is checked
2−input[type=checkbox]:checked ~ .label_hide_if_checked {
2+input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked {
3 display:none;
3 display:none;
4}
4}
5
5
6// Hide element if checkbox is not checked
6// Hide element if checkbox is not checked
7−input[type=checkbox]:not(:checked) ~ .label_hide_if_not_checked {
7+input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked {
8 display:none;
8 display:none;
9}
9}
searx/templates/oscar/base.html+2−1
@@ -36,7 +36,8 @@
36 </script>
36 </script>
37 <noscript>
37 <noscript>
38 <style type="text/css">
38 <style type="text/css">
39− .tab-content > .active_if_nojs {display: block;}
39+ .tab-content > .active_if_nojs, .active_if_nojs {display: block;}
40+ .margin_top_if_nojs {margin-top: 20px;}
40 .hide_if_nojs {display: none !important;overflow:none !important;}
41 .hide_if_nojs {display: none !important;overflow:none !important;}
41 </style>
42 </style>
42 </noscript>
43 </noscript>
searx/templates/oscar/categories.html+17−1
@@ -1,6 +1,22 @@
1+<!-- used if scripts are disabled -->
2+<noscript>
3+<div id="categories" class="btn-group btn-toggle">
4+{% for category in categories %}
5+ <!--<div class="checkbox">-->
6+ <input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}_nojs" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />
7+ <label class="btn btn-sm btn-primary active label_hide_if_not_checked" for="checkbox_{{ category|replace(' ', '_') }}_nojs">{{ _(category) }}</label>
8+ <label class="btn btn-sm btn-default label_hide_if_checked" for="checkbox_{{ category|replace(' ', '_') }}_nojs">{{ _(category) }}</label>
9+ <!--</div>-->
10+ {% if category in selected_categories %}<input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}_dis_activation" name="category_{{ category }}" value="off" checked="checked"/>{% endif %}
11+{% endfor %}
12+</div>
13+</noscript>
14+
1−<div id="categories" class="btn-group btn-toggle" data-toggle="buttons">
15+<div id="categories" class="btn-group btn-toggle hide_if_nojs" data-toggle="buttons">
2{% for category in categories %}
16{% for category in categories %}
3 <label class="btn btn-sm {% if category in selected_categories %}btn-primary active{% else %}btn-default{% endif %}" data-btn-class="primary">
17 <label class="btn btn-sm {% if category in selected_categories %}btn-primary active{% else %}btn-default{% endif %}" data-btn-class="primary">
4 <input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />{{ _(category) }}</label>
18 <input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />{{ _(category) }}</label>
5{% endfor %}
19{% endfor %}
6</div>
20</div>
21+
22+
searx/templates/oscar/search_full.html+2−2
@@ -8,8 +8,8 @@
8 </span>
8 </span>
9 </div>
9 </div>
10
10
11− <button type="button" class="btn btn-link btn-collapse center-block collapsed" data-toggle="collapse" data-target="#search_categories" data-btn-text-collapsed="{{ _('Show search filters') }}" data-btn-text-not-collapsed="{{ _('Hide search filters') }}">{{ _('Show search filters') }}</button>
11+ <button type="button" class="btn btn-link btn-collapse center-block collapsed hide_if_nojs" data-toggle="collapse" data-target="#search_categories" data-btn-text-collapsed="{{ _('Show search filters') }}" data-btn-text-not-collapsed="{{ _('Hide search filters') }}">{{ _('Show search filters') }}</button>
12− <div class="row collapse" id="search_categories">
12+ <div class="row collapse active_if_nojs margin_top_if_nojs" id="search_categories">
13 <div class="col-md-12 text-center">
13 <div class="col-md-12 text-center">
14 {% include 'oscar/categories.html' %}
14 {% include 'oscar/categories.html' %}
15 </div>
15 </div>