మీడియావికీ:Gadget-BookMakerLoader.js

వికీసోర్స్ నుండి

గమనిక: భద్రపరచిన తర్వాత, మార్పులను చూడాలంటే మీ విహారిణి కోశాన్ని తీసేయాల్సిరావచ్చు.

  • ఫైర్‌ఫాక్స్‌ / సఫారి: Shift మీటని నొక్కిపట్టి Reloadని నొక్కండి లేదా Ctrl-F5 గానీ Ctrl-R (మాకింటోషులో ⌘-Shift-R) గానీ నొక్కండి
  • గూగుల్ క్రోమ్: Ctrl-Shift-R (మాక్ లో ⌘-Shift-R) నొక్కండి
  • ఇంటర్నెట్ ఎక్ప్లోరర్/ఎడ్జి: Ctrl ను నొక్కిపట్టి Refresh నొక్కండి లేదా Ctrl-F5 నొక్కండి.
  • ఒపేరా:* Ctrl-F5 నొక్కండి.
/**
 * Gadget that loads [[MediaWiki:BookMaker.js]] after clicking the
 * relevant button (or if a book is alread in progress.
 * This script also does any processing and DOM modification that needs
 * to be shown before any user interaction.
 *
 * Help at [[Help:Gadget-BookMaker]]
 *
 * @rev 1 (2012-06-16)
 * @author Inductiveload, 2012
 *
 */

/*global jQuery:false, mediaWiki:false*/

(function ($, mw) {
	'use strict';

	if ($.inArray(mw.config.get('wgNamespaceNumber'), [0, 2]) === -1) { return; }

	var bmi, // ImporterInstance
		waiting = false,
		onScriptLoad = function (evt, st, instance) {
			if ('BookMaker' !== st || !instance) { return; }
			bmi = instance;
			waiting = false;
			$(document).off('scriptLoaded.BookMaker');
			loadBookMaker();
		},

		loadBookMaker = function () {
			if (waiting) { return; }
			if (bmi) {
				if (bmi.wantToStart) {
					bmi.start_bookmaker();
				}
			} else {
				waiting = true;
				$(document).on('scriptLoaded.BookMaker', onScriptLoad);
				mw.loader.load('//en.wikisource.org/w/index.php?title=MediaWiki:BookMaker.js&action=raw&ctype=text/javascript&dummy=0');
			}
		};

	window.BookMaker = function () {
		//parameters we need in the loader script
		this.bookTemplateID = 'ws-savedbook'; //matches pages that could be books
		this.localstorage_name = 'wikisource_bookmakerpersistentdata';
		this.portletID = 'coll-bookmaker';
		this.wantToStart = false; //sometimes we want to load the script. but not start the editor

		this.initMsg = { //messages that are shown before the bookmaker starts
			editBook: 'Edit this book',
			createBook: 'Create a book',
			tooltip: 'Open the BookMaker tool to create a collection of pages for export'
		};

		this.add_create_book_link();

		//if we are editing a book, display bookmaker right away
		if (this.localstorage_name in localStorage) {
			this.wantToStart = true;
			loadBookMaker();
		}
		//loadBookMaker(); //uncomment to load automatically for testing.
	};

	//generates a link element to a Special:PrefixIndex page
	window.BookMaker.prototype.generate_prefix_link = function (prefix, text) {
		return $('<a>', {'href': mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=Special:PrefixIndex&prefix=' + prefix, 'text': (text || prefix)});
	};

	window.BookMaker.prototype.add_create_book_link = function () {
		var myself = this;
		//remove the PediaPress tool portlet link if any, plus any existing bookmaker portlet
		$('#coll-create_a_book, #' + this.portletID).remove();

		var href, linktext, portlet;

		if ($('#' + this.bookTemplateID).length > 0) {
			href = '//en.wikisource.org/w/index.php?title=Special:Book&bookcmd=book_creator&referer=';
			linktext = this.initMsg.editBook;
			loadBookMaker();
		} else {
			href = '//en.wikisource.org/w/index.php?title=Special:Book&bookcmd=book_creator&referer=' + mw.config.get('wgPageName');
			linktext = this.initMsg.createBook;
		}

		portlet = mw.util.addPortletLink('p-coll-print_export', href, linktext, this.portletID, this.initMsg.tooltip);
		$(portlet).click( function () {
			myself.wantToStart = true;
			loadBookMaker();
			});
	};

	window.BookMakerInstance = new window.BookMaker();

}(jQuery, mediaWiki));