-
Notifications
You must be signed in to change notification settings - Fork 800
/
jetpack-modules.views.js
62 lines (49 loc) · 1.67 KB
/
jetpack-modules.views.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
this.jetpackModules = this.jetpackModules || {};
window.jetpackModules.views = ( function( window, $, _, Backbone, wp ) {
'use strict';
var views = {};
views.List_Table = Backbone.View.extend( {
template: wp.template( 'Jetpack_Modules_List_Table_Template' ),
/**
* If we can, use replaceState to change the URL and indicate the new filtering.
* This will be handy with redirecting back to the same state after activating/deactivating.
*/
updateUrl: function() {
if ( ! window.history.replaceState ) {
return;
}
var url = window.location.href.split( '?' )[ 0 ] + '?page=jetpack_modules',
m_tag = $( '.subsubsub .current' ),
m_filter = $( '.button-group.filter-active .active' ),
m_sort = $( '.button-group.sort .active' ),
m_search = $( '#srch-term-search-input' ).val();
if ( m_search.length ) {
url += '&s=' + encodeURIComponent( m_search );
}
if ( ! m_tag.hasClass( 'all' ) ) {
url += '&module_tag=' + encodeURIComponent( m_tag.data( 'title' ) );
}
if ( m_filter.data( 'filter-by' ) ) {
url +=
'&' +
encodeURIComponent( m_filter.data( 'filter-by' ) ) +
'=' +
encodeURIComponent( m_filter.data( 'filter-value' ) );
}
if ( 'name' !== m_sort.data( 'sort-by' ) ) {
url += '&sort_by=' + encodeURIComponent( m_sort.data( 'sort-by' ) );
}
window.history.replaceState( {}, '', url );
},
render: function() {
this.model.filter_and_sort();
this.$el.html( this.template( this.model.attributes ) );
this.updateUrl();
return this;
},
initialize: function() {
this.listenTo( this.model, 'change', this.render );
},
} );
return views;
} )( this, jQuery, _, Backbone, wp );