משתמש:Bharel/סקריפטים/64.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/* סקריפט להוספת קישורים להוספת תבניות אזהרה שונות למשתמשים, התורמים: Yonidebest, Ofekalef, קיפודנחש, חיים 7 */
$(function() {
    "use strict";
    function save_topage(title, summary, content, wl, next) {
        var param = {action: 'edit', title: title, summary: summary, token: mw.user.tokens.get('csrfToken'), appendtext: content, format: 'json'};
        if (wl)
            param.watchlist = wl;
        $.post(mw.util.wikiScript('api'), param, function (data) {
            if (data && data.error)
                alert('error saving: ' + data.error.info);
            else if (data && data.edit && data.edit.result == 'Success' && typeof next == 'function')
                next();
        });
    }

    function activate() {
        var $this = $(this),
            user = $this.attr('user'),
            templ = $this.data('templ'),
            warning = templ.m || templ.t,
            linkTitle = templ.hasOwnProperty('linkTitle')? templ.linkTitle : true,
            tw = warning,
            refPage = $this.attr('refPage').replace(/_/g, ' ');

        if(user == mw.user.getName() && ! confirm('זהו דף השיחה שלך. האם אתה בטוח שברצונך להוסיף את התבנית?'))
            return;

        if (!warning || !user)
            return;

        if (refPage)
            tw += '|' + refPage;
        
        if (templ.askExtra) {
            var skipExtra = window.skipAsk64 && window.skipAsk64[templ.m];      
            if (templ.askExtra.prompt && !skipExtra) {
                var extra = $.trim(prompt(templ.askExtra.prompt));
                if (extra)
                    tw += templ.askExtra.param + extra;
            }
            else if (! skipExtra && templ.askExtra.confirm && confirm(templ.askExtra.confirm))
                tw += templ.askExtra.param;
        }

        var text = "{{" + tw + "}} ~~" + "~~\n";
        if (refPage)
            text = '\n==' + (linkTitle? "[[" + refPage + "]]" : refPage ) + '==\n' + text;
        save_topage("שיחת משתמש:" + user, warning, text, watchOrUnwatch(templ), function() {mw.notify(' תבנית "' + warning + '" נרשמה בשיחת משתמש:' + user);});
    }
    
    function watchOrUnwatch(templ) {
        var l = window.script64Watch || '';
        return l
            ? (typeof l == "string"
                ? l
                : l[templ.t])
            : templ.wl;
    }
    
    function getUserLink() {
        return mw.config.get('wgCanonicalSpecialPageName') == 'Block'
            ? mw.util.$content.find('p a:first')
            : (mw.config.get('wgAction') == 'rollback'
                ? $('.mw-userlink:first')
                : $('#mw-diff-ntitle2 a:first')
                );
    }
    // main body of function
    var
        link = getUserLink(),
        user = link.text(),
        anon = mw.util.isIPv4Address(user) || mw.util.isIPv6Address(user),
        all = [
            anon ? {t:"אזהרה", m: "אזהרה", tl:"הוספת תבנית אזהרה", wl: 'unwatch'} : {t:"אזהרה", m: "אזהרה לרשום", tl:"הוספת תבנית אזהרה", wl: 'unwatch'},
            {t:"לך", m: "לך", tl:"הוספת תבנית לך", wl: 'unwatch'},
            {t:"ניסוי", m: "ניסויים", tl:"הוספת תבנית ניסויים", wl: 'unwatch'},
            {t:"בוטל",  m: "בוטל", tl:"הוספת תבנית בוטל", askExtra: {prompt: 'סיבת הביטול', param: '|סיבה='}, wl: 'watch'},
            {t:"חזרה", m: "חזרה על עריכה", tl:"הוספת תבנית חזרה על עריכה"},
            {t:"פרסום", m: "פרסומת", tl:"הוספת תבנית פרסומת", wl: 'unwatch'},
            {t:"שגיאה", m: "שגיאה", tl:"הוספת תבנית שגיאה", wl: 'unwatch'},
            anon ? {t:"העתקה", m: "העתקה", tl:"הוספת תבנית העתקה", askExtra: {prompt: 'מקור', param: '|'}, wl: 'unwatch'} : {t:"העתקה", m: "העתקה לרשום", tl:"הוספת תבנית העתקה", askExtra: {prompt: 'מקור', param: '|'}, wl: 'unwatch'},
            {t:"הסבר", m: "הסבר", tl:"הוספת תבנית הסבר", askExtra: {confirm: 'בוטל ? (ביטול=לא)', param: '|בוטל=כן'}, wl: 'watch'},
            {t:"שימוש בשיחה", m: "שימוש בדף השיחה", tl:"הוספת תבנית שימוש בדף השיחה", wl: 'unwatch'},
            anon ? {t:"מילון", m: "מילון", tl:"הוספת תבנית מילון", wl: 'unwatch'} : {t:"מילון", m: "מילון לרשום", tl:"הוספת תבנית מילון", wl: 'unwatch'},
            {t:"סגנון", m: "סגנון", tl:"הוספת תבנית סגנון", wl: 'unwatch'},
            {t:"ויקיזציה", m: "ויקיזציה", tl:"הוספת תבנית ויקיזציה", wl: 'unwatch'},
            {t:"טעות", m: "טעות", tl:"הוספת תבנית טעות", wl: 'unwatch'},
            {t:"לא במקום", m: "לא במקום", tl:"הוספת תבנית לא במקום", wl: 'unwatch'},
            {t:"נייטרליות", m: "נייטרליות", tl:"הוספת תבנית נייטרליות", wl: 'unwatch'},
            {t:"קישור מבוטל", m: "קישור מבוטל", tl:"הוספת תבנית קישור מבוטל"},
            {t:"משוב שגוי", m: "ס:משוב שגוי", tl:"הוספת תבנית משוב שגוי", wl: 'unwatch'},
            {t:"מחקת שיחה", m: "מחקת שיחה", tl:"הוספת תבנית מחקת שיחה", wl: 'unwatch'},
            anon ? {t:"תודה", m: "תודה", tl:"הוספת תבנית תודה"} : {t:"בה", m: "בה", tl:"הוספת תבנית ברוך בואך", noPage: true},
            anon ? {t:"הזמנה", m: "הזמנה", tl:"הוספת תבנית הזמנה"} : {t:"תודה", m: "תודה לרשום", tl:"הוספת תבנית תודה"}
        ],
        deletedTemplates = [
            {t:"הבל", m: "הבל", tl:"הוספת אזהרת הבל", linkTitle: false },
            {t:"נמחק", m: "נמחק", tl:"הוספת תבנית מחיקה", linkTitle: false },
            {t:"ניסוי נמחק", m: "נמחק ניסויים", tl:"הוספת תבנית מחיקה של ניסוי", linkTitle: false },
            {t:"פרסום", m: "פרסומת", tl:"הוספת תבנית פרסומת", linkTitle: false },
            {t:"הועתק", m: "העתקה", tl:"הוספת אזהרת העתקה"},
            {t:"תרגום מכונה", m: "תרגום מכונה", tl:"הוספת אזהרת תרגום מכונה", linkTitle: false },
        ],
        youWereBlocked = {t:"נחסמת", m: "נחסמת", tl:"הודעה למשתמש שנחסם", askExtra: {prompt: 'סיבת החסימה', param: '|'}, noPage: true};

    function makeSpan(forUser, forDeletePage, paragraph) {
        var container = $(paragraph ? '<p>' : '<span>').text(' (');
        if (forDeletePage) {
            container.append(
                $('<a>', {href: mw.util.getUrl('User:' + forUser), text: forUser}),
                ' (',
                $('<a>', {href: mw.util.getUrl('User Talk:' + forUser), text: 'שיחה'}),
                ' | ',
                $('<a>', {href: mw.util.getUrl('Special:Contributions/' + forUser), text: 'תרומות'}),
                ' | ',
                $('<a>', {href: mw.util.getUrl('Special:Block/' + forUser), text: 'חסימה'}),
                ' ) '
            );
            all = deletedTemplates.concat([youWereBlocked]);
        }
        for (var i in all) {
            var templ = all[i];
            var page = (templ.noPage)
                ? ''
                : (($.inArray(mw.config.get('wgNamespaceNumber'), [6, 14]) + 1) ? ':' : '') + mw.config.get('wgPageName').replace(/_/g, " ");
            var a = $("<a>", {href: '#', user: forUser, refPage: page, title: templ.tl || templ.t})
                .text(templ.t)
                .click(activate)
                .data({templ: templ});
            container.append(i==0 ? '':' | ').append(a);
        }
        return container.append(')');
    }

    var sysop = $.inArray('sysop', mw.config.get('wgUserGroups'))+1;
    if (sysop) {
        if (mw.config.get('wgCanonicalSpecialPageName') == 'Block')
            all = [];
        all.push(youWereBlocked);
    }

    if (user) {
        if ($('#mw-diff-ntitle2').length)
            $('#mw-diff-ntitle2').append(makeSpan(user, false, true));
        else
            link.after(makeSpan(user, false));
    }
    else if (sysop && mw.config.get('wgAction') == 'delete' && $('#deleteconfirm').length===0) { //more complex case: we have to use API to get the user.
        $.getJSON(
            mw.util.wikiScript('api'),
            {action: 'query', list: 'deletedrevs', drlimit: 20, titles: mw.config.get('wgPageName'), drprop: 'user', format: 'json'},
            function(data) {
                var users = {};
                var content = mw.util.$content;
                if (data && data.query && data.query.deletedrevs)
                    $(data.query.deletedrevs).each(function() {
                        $(this.revisions).each(function() {users[this.user] = true;});
                    });
                content.append('<p>', {text: 'את הדף ' + mw.config.get('wgPageName') + ' ערכו העורכים הבאים:'});
                for (var editor in users)
                    content.append($('<p>').append(makeSpan(editor, true)));
            });
        }
});