@@ -38,6 +38,26 @@ var Search = (function() {
38
38
localStorage . setItem ( 'search_view_type' , viewType ) ;
39
39
} ;
40
40
41
+ /**
42
+ * Check if the current query is an advanced search one.
43
+ */
44
+ self . isAdvancedSearchQuery = function ( ) {
45
+ let searchParams = new URLSearchParams ( document . location . search ) ;
46
+ let params = Array . from ( searchParams . entries ( ) ) ;
47
+ for ( let i in params ) {
48
+ let k = params [ i ] [ 0 ] ;
49
+ let v = params [ i ] [ 1 ] ;
50
+ if ( v !== ''
51
+ && ! [ 'q' , 'search' , 'fulltext_search' , 'sort' , 'sort_by' , 'sort_order' , 'page' , 'per_page' , 'limit' , 'offset' , 'csrf' ] . includes ( k )
52
+ && ! k . startsWith ( 'facet[' )
53
+ && ! k . startsWith ( 'facet%5B' )
54
+ ) {
55
+ return true ;
56
+ }
57
+ }
58
+ return false ;
59
+ }
60
+
41
61
/**
42
62
* Chosen default options.
43
63
* @see https://harvesthq.github.io/chosen/
@@ -96,6 +116,21 @@ var Search = (function() {
96
116
97
117
$ ( document ) . ready ( function ( ) {
98
118
119
+ /**
120
+ * When the simple and the advanced form are the same form.
121
+ */
122
+ $ ( '.advanced-search-form-toggle a' ) . on ( 'click' , function ( e ) {
123
+ e . preventDefault ( ) ;
124
+ $ ( '.advanced-search-form, .advanced-search-form-toggle' ) . toggleClass ( 'open' ) ;
125
+ if ( $ ( '.advanced-search-form' ) . hasClass ( 'open' ) ) {
126
+ $ ( '.advanced-search-form-toggle a' ) . text ( $ ( '.advanced-search-form-toggle' ) . data ( 'msgOpen' ) ) ;
127
+ } else {
128
+ $ ( '.advanced-search-form-toggle a' ) . text ( $ ( '.advanced-search-form-toggle' ) . data ( 'msgClosed' ) ) ;
129
+ }
130
+ // TODO Don't open autosuggestion when toggle.
131
+ // $('#search-form [name=q]').focus();
132
+ } ) ;
133
+
99
134
/* Sort selector links (depending if server of client build) */
100
135
$ ( '.search-sort select' ) . on ( 'change' , function ( e ) {
101
136
// Sort fields don't look like a url.
@@ -165,13 +200,27 @@ $(document).ready(function() {
165
200
$ ( '.search-view-type' ) . removeClass ( 'active' ) ;
166
201
$ ( this ) . addClass ( 'active' ) ;
167
202
} ) ;
203
+
168
204
$ ( '.search-view-type-grid' ) . on ( 'click' , function ( e ) {
169
205
e . preventDefault ( ) ;
170
206
Search . setViewType ( 'grid' ) ;
171
207
$ ( '.search-view-type' ) . removeClass ( 'active' ) ;
172
208
$ ( this ) . addClass ( 'active' ) ;
173
209
} ) ;
174
210
211
+ /**********
212
+ * Initialisation.
213
+ */
214
+
215
+ /**
216
+ * Open advanced search when it is used according to the query.
217
+ * @todo Check if we are on the advanced search page first.
218
+ * @todo Use focus on load, but don't open autosuggestion on focus.
219
+ */
220
+ if ( Search . isAdvancedSearchQuery ( ) ) {
221
+ $ ( '.advanced-search-form-toggle a' ) . click ( ) ;
222
+ }
223
+
175
224
var view_type = localStorage . getItem ( 'search_view_type' ) ;
176
225
if ( ! view_type ) {
177
226
view_type = 'list' ;
0 commit comments