62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
|
|
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 );
|