MediaWiki:Common.js/ajaxrefresh.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) */ var	ajaxIndicator = 'http://images2.wikia.nocookie.net/dev/images/8/82/Facebook_throbber.gif', ajaxTimer, ajaxRefresh = 60000, refreshText = 'Automatically refresh', refreshHover = 'Enable auto-refreshing page loads', doRefresh = true; var ajaxPages = ["Special:RecentChanges", "Special:Watchlist", "Special:Log", "Special:Contributions", "Special:AbuseLog", "Special:NewFiles", "Category:Speedy_deletion_candidates", "Category:Speedy_move_candidates", "Special:Statistics", "Special:NewPages", "Special:ListFiles"]; if ( !window.ajaxCallAgain ) { var ajaxCallAgain = []; } refreshText = "Auto-refresh"

/** * Sets the cookie * @param c_name string Name of the cookie * @param value string 'on' or 'off' * @param expiredays integer Expiry time of the cookie in days */ function setCookie( c_name, value, expiredays ) { var exdate = new Date; exdate.setDate( exdate.getDate + expiredays); document.cookie = c_name + "=" + escape(value) + ( ( expiredays === null ) ? "" : ";expires=" + exdate.toGMTString ); } /** * Gets the cookie * @param c_name string Cookie name * @return The cookie name or empty string */ function getCookie( c_name ) { if ( document.cookie.length > 0 ) { var c_start = document.cookie.indexOf( c_name + "=" ); if ( c_start !== -1 ) { c_start = c_start + c_name.length + 1; var c_end = document.cookie.indexOf( ";", c_start ); if ( c_end === -1 ) { c_end = document.cookie.length; }			return unescape( document.cookie.substring( c_start, c_end ) ); }	}	return ""; } /** * Main function to start the Auto-refresh process */ function preloadAJAXRL { var	ajaxRLCookie = ( getCookie( "ajaxload-" + wgPageName ) == "on" ) ? true : false, appTo = ( $( '#WikiaPageHeader' ).length ) ? $( '#WikiaPageHeader' ) : ( $( '#AdminDashboardHeader' ).length ? $( '#AdminDashboardHeader > h1' ) : $( '.firstHeading' ) ); appTo.append( ' ' + refreshText + ':   ' ); if ( $( '.mw-rc-openarrow a' ).length ) { $( '.mw-rc-openarrow a' ).removeAttr( 'href' ).css( 'cursor', 'pointer' ); }	$( '#ajaxLoadProgress' ).ajaxSend( function ( event, xhr, settings ) {		if ( location.href == settings.url ) {			$( this ).show;		}	} ).ajaxComplete ( function ( event, xhr, settings ) {		var	$collapsibleElements = $( '#mw-content-text' ).find( '.mw-collapsible' );		if ( location.href == settings.url ) {			$( this ).hide;			for ( var i = 0; i < ajaxCallAgain.length; i++ ) {				ajaxCallAgain[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-rc-openarrow a' ).length ) {					$( '.mw-rc-openarrow a' ).removeAttr( 'href' ).css( 'cursor', 'pointer' );				}			} }	} );	$( '#ajaxToggle' ).click( toggleAjaxReload );	$( '#ajaxToggle' ).attr( 'checked', ajaxRLCookie);	if ( getCookie( "ajaxload-" + wgPageName ) == "on" ) {		loadPageData;	} } /** * Turn refresh on and off by toggling the checkbox */ function toggleAjaxReload {	if ( $( '#ajaxToggle' ).prop( 'checked' ) === true ) {		setCookie( "ajaxload-" + wgPageName, "on", 30 );		doRefresh = true;		loadPageData;	} else {		setCookie( "ajaxload-" + wgPageName, "off", 30 );		doRefresh = false;		clearTimeout( ajaxTimer );	} } /** * Does the actual refresh */ function loadPageData {	var cC = '#mw-content-text';	$( cC ).load( location.href + " " + cC + " > *", function ( data ) { if ( doRefresh ) { ajaxTimer = setTimeout( loadPageData, ajaxRefresh ); }	} ); } /** * Load the script on specific pages */ $( function { for ( var x = 0; x < ajaxPages.length; x++ ) { if ( wgPageName == ajaxPages[x] && $( '#ajaxToggle' ).length === 0 ) { preloadAJAXRL; }	} } ); /** * Hack: copy the RC filter JS since it can't be accessed */ 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; }		});	} }; /* */