AjaxRC/code.js

/* * ADVANCED AJAX AUTO-REFRESHING ARTICLES * Code originally by "pcj" of Wowpedia * Maintenance, cleanup, style and bug fixes by Grunny (http://community.wikia.com/wiki/User:Grunny) and Kangaroopower (http://community.wikia.com/wiki/User:Kangaroopower) */ ( function ( $, mw, window ) { 'use strict'; var ajaxIndicator = window.ajaxIndicator || 'http://images2.wikia.nocookie.net/dev/images/8/82/Facebook_throbber.gif', ajaxTimer, refreshText = typeof window.AjaxRCRefreshText === 'string' ? window.AjaxRCRefreshText : 'AJAX', refreshHover = typeof window.AjaxRCRefreshHoverText === 'string' ? window.AjaxRCRefreshHoverText : 'Enable auto-refreshing page loads', ajRefresh = window.ajaxRefresh || 60000, ajPages = window.ajaxPages || [ 'Special:RecentChanges' ];

function storage( setTo ) { if ( localStorage.getItem( 'AjaxRC-refresh' ) === null ) { localStorage.setItem( 'AjaxRC-refresh', true ); } if ( setTo === false ) { localStorage.setItem( 'AjaxRC-refresh', false ); } else if ( setTo === true ) { localStorage.setItem( 'AjaxRC-refresh', true ); } return JSON.parse( localStorage.getItem( 'AjaxRC-refresh' ) ); }

/** function preloadAJAXRL { var $appTo = ( $( '#WikiaPageHeader' ).length ) ? $( '#WikiaPageHeader' ) : ( $( '#AdminDashboardHeader' ).length ? $( '#AdminDashboardHeader > h1' ) : $( '.firstHeading' ) ); $appTo.append( ' ' + refreshText + ':   ' ); $( document ).ajaxSend( function ( event, xhr, settings ) { if ( location.href === settings.url ) { $( '#ajaxLoadProgress' ).show; } } ).ajaxComplete ( function ( event, xhr, settings ) { var $collapsibleElements = $( '#mw-content-text' ).find( '.mw-collapsible' ), ajCallAgain = window.ajaxCallAgain || []; if ( location.href === settings.url ) { $( '#ajaxLoadProgress' ).hide; for ( var i = 0; i < ajCallAgain.length; i++ ) { ajCallAgain[i]; } if ( $collapsibleElements.length ) { $collapsibleElements.makeCollapsible; } if ( mw.config.get( 'wgNamespaceNumber' ) === -1 && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Recentchanges' ) { mw.special.recentchanges.init; if ( $( '.mw-recentchanges-table' ).find( '.WikiaDropdown' ).length ) { RecentChangesLocal.init; } } if ( mw.config.get( 'wgNamespaceNumber' ) === -1 && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'WikiActivity' ) { window.WikiActivity.init; } } } ); $( '#ajaxToggle' ).click( toggleAjaxReload ); $( '#ajaxToggle' ).attr( 'checked', storage); if ( storage ) { loadPageData; } } /** function toggleAjaxReload { if ( $( '#ajaxToggle' ).prop( 'checked' ) === true ) { storage( true ); loadPageData; } else { storage( false ); clearTimeout( ajaxTimer ); } } /** function loadPageData {
 * Main function to start the Auto-refresh process
 * Turn refresh on and off by toggling the checkbox
 * Does the actual refresh

var $temp = $( '

' ); $temp.load( location.href + " #mw-content-text", function { var $newContent = $temp.children( '#mw-content-text' ); if ( $newContent.length ) { $( '#mw-content-text' ).replaceWith( $newContent ); } ajaxTimer = setTimeout( loadPageData, ajRefresh ); } ); } /** $( function { if ( $.inArray( mw.config.get( 'wgPageName' ), ajPages ) !== -1 && $( '#ajaxToggle' ).length === 0 && mw.config.get( 'wgAction' ) !== 'edit' ) { preloadAJAXRL; } } ); /** var RecentChangesLocal = { init: function { this.$table = $('.mw-recentchanges-table'); this.$dropdown = this.$table.find('.WikiaDropdown'); this.$submit = this.$table.find('input[type="submit"]'); this.$submit.on('click.RecentChangesDropdown', $.proxy(this.saveFilters, this)); this.$submit.removeAttr('disabled'); //FF clean this.dropdown = new Wikia.MultiSelectDropdown(this.$dropdown); this.dropdown.on('change', $.proxy(this.onChange, this)); }, saveFilters: function(event) { var self = this; event.preventDefault; self.dropdown.disable; self.$submit.attr('disabled', 'disabled'); if(self.dropdown.getSelectedValues.length == 0) { self.dropdown.doSelectAll(true); } $.nirvana.sendRequest({ controller: 'RecentChangesController', method: 'saveFilters', data: { filters: self.dropdown.getSelectedValues }, type: 'POST', format: 'json', callback: function(data) { window.location.reload; } }); } };
 * Load the script on specific pages
 * Should we make it load only on view or just not on edit....
 * Temp Hack: copy the RC filter JS since it can't be accessed

}( jQuery, mediaWiki, this ) );