মিডিয়াউইকি:Gadget-BookMakerLoader.js

টীকা: সংরক্ষণ করার পর, পরিবর্তনসমূহ তৎক্ষণাৎ নাও দেখাতে পারে। আপনার ব্রাউজারের ক্যাশ কিভাবে এড়াবেন তা জানতে এখানে ক্লিক করুন।
  • ফায়ারফক্স / সাফারি: Shift ধরে রাখা অবস্থায়পুনঃলোড করুন-এ ক্লিক করুন, অথবা Ctrl-F5 বা Ctrl-R (ম্যাক-এ ⌘-R) চাপুন
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাক-এ ⌘-Shift-R) চাপুন
  • ইন্টারনেট এক্সপ্লোরার: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা 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 (localStorage.hasOwnProperty(this.localstorage_name)) {
			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 linktext, portlet;

		if ($('#' + this.bookTemplateID).length > 0) {
			linktext = this.initMsg.editBook;
			loadBookMaker();
		} else {
			linktext = this.initMsg.createBook;
		}

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

	window.BookMakerInstance = new window.BookMaker();

}(jQuery, mediaWiki));