×
Create a new article
Write your page title here:
We currently have 30 articles on Ghost Machine Wiki. Type your article name above or create one of the articles listed here!



    Ghost Machine Wiki

    Note: After publishing, you may have to bypass your browser's cache to see the changes.

    • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
    • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
    • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
    • Opera: Press Ctrl-F5.
    mw.loader.using(["ext.LinkSuggest"], function () {
    
    "use strict";
    window.AjaxEdit = {};
    
    window.AjaxEdit.Click = function (ajaxEditAnchor) {
    	var _query = new mw.Uri($(ajaxEditAnchor).parent().find("a[href*='action=edit']").attr("href")).query,
    	    title = _query.title,
    	    section = _query.section;
    
    	section = section.replace("T-", ""); //translcusions...
    	var hdr = $(ajaxEditAnchor).parent().parent();
    	var sectionName = hdr.children(".mw-headline").first().text();
    	if (window.tabbedLanguages && !hdr.is(":header")) {
    		sectionName = window.tabbedLanguages[window.currentLanguageTab];
    	}
    
    	$("#ajaxedit-wrapper").remove();
    
    	var data = { action: 'raw', title: title, section: section };
    	$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
    		var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
    		var textarea = $("<textarea></textarea>").attr({ rows: rowHeight }).text(wikitext).linksuggest();
    		var saveButton = $('<button>Save</button>').click(function () {
    			window.AjaxEdit.Save(section, sectionName, textarea.val(), title).then(function () {
    				new mw.Api().parse(new mw.Title(mw.config.get("wgPageName"))).then(function (newHtml) {
    					$("#mw-content-text").html(newHtml);
    
    					mw.loader.moduleRegistry["site"].state = "registered";
    					//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
    					mw.loader.moduleRegistry["site"].script = undefined;
    					mw.loader.using("site", function () {});
    
    					window.AjaxEdit.Main();
    					// run NavToggle stuff
    				});
    			});
    		}).css("margin-left", "3px");
    		var cancelButton = $('<button>Cancel</button>').click(function () {
    			$("#ajaxedit-wrapper").remove();
    		});
    		var previewDiv = $("<div></div>").css({
    			"border-style": "solid", "border-width": "1px 1px 1px 4px",
    			"border-radius": "0.33em", "border-color": "#a3d3ff" }).hide();
    
    		var loadPreview = function loadPreview() {
    			new mw.Api().parse(textarea.val(), { title: mw.config.get("wgPageName") }).done(function (html) {
    				previewDiv.html(html);
    			});
    		};
    		var previewIntervalId = -1;
    		var livePreviewCheckbox = $("<input type='checkbox'/>").attr("id", "ajaxedit-live-preview-checkbox").on("change", function () {
    			if ($(this).is(':checked')) {
    				previewDiv.show("slow");
    				loadPreview();
    				previewIntervalId = setInterval(loadPreview, 500);
    			} else {
    				clearInterval(previewIntervalId);
    				previewDiv.hide("fast");
    				previewDiv.empty();
    			}
    		});
    
    		var wrapper = $("<div></div>").attr("id", "ajaxedit-wrapper").css({ width: "auto", "margin": 0, "overflow": "hidden" }).append(textarea).append(saveButton).append(livePreviewCheckbox).append('<label for="ajaxedit-live-preview-checkbox">Live preview</label>').append(cancelButton).append(previewDiv);
    
    		//tabbed languages support
    		if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) $(".languageContainer:not(:hidden)").first().prepend(wrapper);else hdr.after(wrapper);
    	});
    };
    
    window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title) {
    	var data = {
    		format: 'json',
    		action: 'edit',
    		title: title,
    		section: sectionID,
    		summary: "/* " + sectionName + " */ edited using AjaxEdit",
    		text: sectionText,
    		token: mw.user.tokens.get('csrfToken')
    	};
    	return $.post(mw.util.wikiScript('api'), data, function (data) {
    		if (data && data.edit && data.edit.result == 'Success') {
    			mw.notify("successful");
    		} else if (data && data.error) {
    			mw.notify('Error: API returned error code "' + data.error.code + '": ' + data.error.info);
    		}
    	}).fail(function (xhr) {
    		mw.notify('Error: Request failed.');
    	}, "json");
    };
    
    window.AjaxEdit.Main = function () {
    	$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
    		var btn = $('<a>ajax edit</a>').attr("onclick", "AjaxEdit.Click(this)").css("cursor", "pointer");
    		$(this).before(" | ").before(btn);
    	});
    };
    
    if (mw.config.get('wgAction') == "view")
    	$(window.AjaxEdit.Main);
    });
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.