summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/_inc/jetpack-modules.js')
-rw-r--r--plugins/jetpack/_inc/jetpack-modules.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/jetpack-modules.js b/plugins/jetpack/_inc/jetpack-modules.js
new file mode 100644
index 00000000..d4321d1c
--- /dev/null
+++ b/plugins/jetpack/_inc/jetpack-modules.js
@@ -0,0 +1,95 @@
+( function( window, $, items, models, views, i18n, modalinfo, nonces ) {
+ 'use strict';
+
+ var modules,
+ list_table,
+ handle_module_tag_click,
+ $the_table,
+ $the_filters,
+ $the_search,
+ $jp_frame,
+ $bulk_button;
+
+ $the_table = $( '.wp-list-table.jetpack-modules' );
+ $the_filters = $( '.navbar-form' );
+ $the_search = $( '#srch-term-search-input' );
+ $jp_frame = $( '.jp-frame' );
+ $bulk_button = $( '#doaction' );
+
+ modules = new models.Modules( {
+ items: items,
+ } );
+
+ list_table = new views.List_Table( {
+ el: '#the-list',
+ model: modules,
+ } );
+
+ // Kick off an initial redraw.
+ modules.trigger( 'change' );
+
+ // Handle the filtering of modules.
+ handle_module_tag_click = function( event ) {
+ // Switch the item in the subsubsub list that's flagged as current.
+ $( '.subsubsub' )
+ .find( 'a[data-title="' + $( this ).data( 'title' ) + '"]' )
+ .addClass( 'current' )
+ .closest( 'li' )
+ .siblings()
+ .find( 'a.current' )
+ .removeClass( 'current' );
+
+ event.preventDefault();
+ modules.trigger( 'change' );
+ };
+
+ $( '.subsubsub a' ).on( 'click', { modules: modules }, handle_module_tag_click );
+
+ $the_filters.on( 'click', '.button-group .button', { modules: modules }, function( event ) {
+ event.preventDefault();
+ $( this )
+ .addClass( 'active' )
+ .siblings( '.active' )
+ .removeClass( 'active' );
+ modules.trigger( 'change' );
+ } );
+
+ $the_search.on( 'keyup search', function( e ) {
+ // Don't trigger change on tab, since it's only used for accessibility
+ // anyway, and will remove all checked boxes
+ if ( e.keyCode !== 9 ) {
+ modules.trigger( 'change' );
+ }
+ } );
+
+ $the_search.prop( 'placeholder', i18n.search_placeholder );
+
+ $bulk_button.on( 'click', function( event ) {
+ var selectedModules = $( '.jetpack-modules-list-table-form' ).serialize(),
+ selectedAction = $( this )
+ .siblings( 'select' )
+ .val(),
+ url;
+
+ if ( selectedModules.length && '-1' !== selectedAction ) {
+ url = 'admin.php?page=jetpack&action=' + encodeURIComponent( selectedAction );
+ url += '&' + selectedModules;
+ url += '&_wpnonce=' + encodeURIComponent( nonces.bulk );
+
+ window.location.href = url;
+ } else {
+ // Possibly add in an alert here explaining why nothing's happening?
+ }
+
+ event.preventDefault();
+ } );
+} )(
+ this,
+ jQuery,
+ window.jetpackModulesData.modules,
+ this.jetpackModules.models,
+ this.jetpackModules.views,
+ window.jetpackModulesData.i18n,
+ window.jetpackModulesData.modalinfo,
+ window.jetpackModulesData.nonces
+);