Difference between revisions of "User:Shine/valve.js"

From Team Fortress Wiki
Jump to: navigation, search
m (Undo revision 66744 by Shine (Talk):()
m
Line 30: Line 30:
 
   
 
   
 
//
 
//
 +
 +
// This defines some control-key shortcuts you can use in text fields.
 +
// IE not supported.  See talk page for documentation.
 +
// by Greg Ubben
 +
 +
// Add some control hotkeys for easily entering right-arrows (→) and other
 +
// characters and phrases in the edit summary, edit box, or other text fields.
 +
// hotkeys[] can be defined to augment the defaults. Type Ctrl-? to list all.
 +
 +
function hotkey(e) {
 +
    if (e && e.ctrlKey && hotkeys[String.fromCharCode( e.charCode )])
 +
    {
 +
        var newtxt = hotkeys[String.fromCharCode( e.charCode )];
 +
        var before = this.value.slice( 0, this.selectionStart );
 +
        var after  = this.value.slice( this.selectionEnd );
 +
        var scroll = this.scrollTop;
 +
 +
        if (newtxt == "MENU") {        // type Ctrl-? for a list
 +
            var menu = "";
 +
            for (var key in hotkeys) {
 +
                var name  = key.toUpperCase().replace(",", "<").replace(".", ">");
 +
                var value = hotkeys[key].replace(/\n/g, "•").slice(0,40);
 +
                if (value && value != newtxt)
 +
                    menu += "\u200E" + name + " \t" + value + "\n";
 +
            }
 +
            alert( menu );
 +
            return false;
 +
        }
 +
        //  hack to not override Ctrl-F, Ctrl-T, etc. in main text area
 +
        //
 +
        if (newtxt.search(/\[\[WP:|\bfix/i) >= 0 && this.id == "wpTextbox1") {
 +
            return true;
 +
        }
 +
        if (newtxt.search(/^\[*\w./) >= 0 && this.id != "wpTextbox1") {
 +
            if (before.search(/[^\s;,]$/) >= 0)  before += "; ";
 +
            if  (after.search(/^[^\s;,]/) >= 0)  newtxt += "; ";
 +
        }
 +
        this.value = before + newtxt + after;
 +
        this.selectionStart = this.selectionEnd = before.length + newtxt.length;
 +
        this.scrollTop = scroll;      // don't lose our position
 +
        return false;
 +
    }
 +
    return true;
 +
}
 +
 +
addOnloadHook( function()
 +
{
 +
    var defaultCtrl = {
 +
        "U" : "Ü",                  // Ctrl U  umlaut
 +
    };
 +
    var fields = { wpSummary:0, wpTextbox1:0, wpReason:0, wpUploadDescription:0 };
 +
 +
    if (wgAction != "view" || wgCanonicalSpecialPageName)
 +
    {
 +
        if (typeof(hotkeys) == 'undefined')  hotkeys = {};
 +
        for (var key in defaultCtrl) {
 +
            if (hotkeys[key] == null)
 +
                hotkeys[key] = defaultCtrl[key];
 +
        }
 +
        for (var field in fields) {
 +
            var f = document.getElementById(field);
 +
            if (f)  f.onkeypress = hotkey;
 +
        }
 +
    }
 +
});

Revision as of 01:41, 8 August 2010

// addPurge
addOnloadHook(function () {
    var hist; var url;
    if (!(hist = document.getElementById('ca-history') )) return;
    if (!(url = hist.getElementsByTagName('a')[0] )) return;
    if (!(url = url.href )) return;
    addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
                   'Purge', 'ca-purge', 'Purge server cache for this page', '0');
});

//

// Adds a "Replace" tab which pops up two prompt boxes; one for a regexp and one for a replacement
function wpTextboxReplace()
{
    var s = prompt("Search regexp:");
    if(s){
        var r = prompt("Replace /"+s+"/ with:");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "mg"), r);
    }
}
addOnloadHook(function () {
    if (document.forms.editform) {
        addPortletLink('p-cactions', 'javascript:wpTextboxReplace()', 'Replace', 'ca-replace',
                       'Regexp replace for the edit window', 'R', document.getElementById('ca-history'));
    }
});
 
//

// This defines some control-key shortcuts you can use in text fields.
// IE not supported.  See talk page for documentation.
// by Greg Ubben
 
// Add some control hotkeys for easily entering right-arrows (→) and other
// characters and phrases in the edit summary, edit box, or other text fields.
// hotkeys[] can be defined to augment the defaults. Type Ctrl-? to list all.
 
function hotkey(e) {
    if (e && e.ctrlKey && hotkeys[String.fromCharCode( e.charCode )])
    {
        var newtxt = hotkeys[String.fromCharCode( e.charCode )];
        var before = this.value.slice( 0, this.selectionStart );
        var after  = this.value.slice( this.selectionEnd );
        var scroll = this.scrollTop;
 
        if (newtxt == "MENU") {         // type Ctrl-? for a list
            var menu = "";
            for (var key in hotkeys) {
                var name  = key.toUpperCase().replace(",", "<").replace(".", ">");
                var value = hotkeys[key].replace(/\n/g, "•").slice(0,40);
                if (value && value != newtxt)
                    menu += "\u200E" + name + " \t" + value + "\n";
            }
            alert( menu );
            return false;
        }
        //  hack to not override Ctrl-F, Ctrl-T, etc. in main text area
        //
        if (newtxt.search(/\[\[WP:|\bfix/i) >= 0 && this.id == "wpTextbox1") {
            return true;
        }
        if (newtxt.search(/^\[*\w./) >= 0 && this.id != "wpTextbox1") {
            if (before.search(/[^\s;,]$/) >= 0)  before += "; ";
            if  (after.search(/^[^\s;,]/) >= 0)  newtxt += "; ";
        }
        this.value = before + newtxt + after;
        this.selectionStart = this.selectionEnd = before.length + newtxt.length;
        this.scrollTop = scroll;       // don't lose our position
        return false;
    }
    return true;
}
 
addOnloadHook( function()
{
    var defaultCtrl = {
        "U" : "Ü",                   // Ctrl U   umlaut
    };
    var fields = { wpSummary:0, wpTextbox1:0, wpReason:0, wpUploadDescription:0 };
 
    if (wgAction != "view" || wgCanonicalSpecialPageName)
    {
        if (typeof(hotkeys) == 'undefined')  hotkeys = {};
        for (var key in defaultCtrl) {
            if (hotkeys[key] == null)
                hotkeys[key] = defaultCtrl[key];
        }
        for (var field in fields) {
            var f = document.getElementById(field);
            if (f)  f.onkeypress = hotkey;
        }
    }
});