Jump to content

User:Inductiveload/Template autoloader.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Inductiveload (talk | contribs) at 00:42, 6 November 2010. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*
 * Does a lookup two previous Page:* from the current, extract the rh from
 * its content, insert it in the header after trying to increase the rh page
 * number. See the FIXME comment(s) for caveats.
 *
 * There is two way to use it, for both add
 * importScript('User:Phe/Running header.js');
 * to your javascript.
 * then you can use it through a new icon to the toolbar, add to your js
 * addOnloadHook(addRhButton); THIS WAY IS BROKEN
 * or trough a link in the left regex menu, add to your .js
 * regexTool('Running header', 'set_running_header()');
 */

function get_autoload_data(data)
{
    try {
        //the textbox to insert the text into
        var textbox = document.getElementsByName('wpTextbox1')[0];


        if (textbox && !data.query.pages["-1"]) {
            for (var ids in data.query.pages) {
                var content = data.query.pages[ids].revisions[0]['*'];

                var r = new RegExp("\<pre id=\"autoload_template\">(.*)\</pre\>");
                var match = r.exec(content);

                if (match) {
                   var template_text = match[0];

                   // prepend the autoloaded text to the editbox content
                   // TODO: insert at cursor (possible?)
                   header.value = autoload_text + "\n"  + header.value

                }

                break;
            }
        }
    }
    catch (err) { }
}

function create_script_obj(url)
{
    var scriptObj = document.createElement("script");
    scriptObj.setAttribute("type", "text/javascript");
    scriptObj.setAttribute("src", url);
    document.body.appendChild(scriptObj);
}

function autoloadTemplate( name )
{
    var pagename = 'Template:' + name;

    var url = wgServer + wgScriptPath
        + "/api.php" + "?action=query" + "&prop=revisions"
        + "&callback=get_autoload_data" + "&rvprop=content"
        + "&format=json" + "&titles=" + encodeURIComponent(pagename);

    create_script_obj(url);
}