×
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.
    /**
     * Ajax Undo links
     *
     * Adds an Ajax undo link next to the normal undo link on page histories
     * and on diff pages
     *
     * @author Grunny
     * @author Cqm
     *
     * @version 0.5
     */
    
    ;(function ($, mw) {
        'use strict';
        if (window.AjaxUndoLoaded) {
            return;
        }
        window.AjaxUndoLoaded = true;
    
        var conf = mw.config.get([
            'wgArticlePath',
            'wgAction',
            'wgVersion'
        ]);
    
        var isUCP = conf.wgVersion !== '1.19.24';
    
        if (!window.dev || !window.dev.i18n) {
            if (isUCP) {
            } else {
                
            }
        }
    
        var i18n, api;
    
        function msg(message) {
            return i18n.msg(message).plain();
        }
    
        function undoEdit() {
            var $this = $(this),
                url = $this.data().url,
                page = $this.data().page,
                undoId = /&undo=([^&]*)/.exec(url)[1];
    
            $this.html(
                $('<img>')
                    .attr({
                        src: 'https://static.miraheze.org/dcmultiversewiki/0/05/Ajax.gif',
                        alt: 'Undoing...',
                        border: '0'
                    })
                    .css('vertical-align', 'baseline')
            );
            api.post({
                action: 'edit',
                title: page,
                undo: undoId,
                bot: '1',
                minor: window.AjaxUndoMinor ? undefined : '1',
                summary: window.AjaxUndoSummary,
                token: mw.user.tokens.get(isUCP ? 'csrfToken' : 'editToken')
            }).done(function (data) {
                if (data.edit && data.edit.result === 'Success') {
                    $this.text( '(undone)' );
                } else {
                    $this.text('(error)');
    
                    alert(data.error && data.error.code === 'undofailure' ?
                        data.error.info :
                        'Error: Unknown result from API.'
                    );
                }
            });
        }
    
        function createUndoLink(url) {
            var uri = new mw.Uri(url);
            return $('<a>', {
                href: '#ajaxundo', // For integration
                'data-url': url,
                'data-page': decodeURIComponent(
                    uri.query &&
                        uri.query.title ||
                        uri.path.substring(
                            conf.wgArticlePath
                                .replace('$1', '')
                                .length
                        )
                ),
                text: 'AJAX Undo',
                click: undoEdit
            });
        }
    
        function init() {
            api = new mw.Api();
            if (conf.wgAction === 'history' && $('.mw-history-undo > a').length) {
                $('.mw-history-undo > a').each(function () {
                    var $this = $(this),
                        url = $(this).attr( 'href' ),
                        $link = createUndoLink(url);
    
                    $this.parent().after(' | ', $link);
                });
            } else if ($('table.diff').length && mw.util.getParamValue('diff') !== undefined) {
                var $undoLink = $('table.diff').find('.diff-ntitle > #mw-diff-ntitle1 a:last'),
                    url = $undoLink.attr('href'),
                    $link = createUndoLink(url);
    
                $undoLink.parent().append('(', $link, ')');
            }
            mw.hook('quickdiff.ready').add(function() {
                var $undoLink = $('#quickdiff-modal table.diff').find('.diff-ntitle > #mw-diff-ntitle1 a:last'),
                    url = $undoLink.attr('href'),
                    $link = createUndoLink(url);
    
                $undoLink.parent().append('(', $link, ')');
            });
        }
    
        
            $.when(
                mw.loader.using([
                    'mediawiki.api',
                    'mediawiki.user',
                    'mediawiki.util',
                    'mediawiki.Uri'
                ])
            ).then(init);
    }(jQuery, mediaWiki));
    
    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.