מדיה ויקי:Gadget-RestoreWarnings.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
function addWarningLinks() { "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.mw-userlink') ); } // main body of function var link = getUserLink(), user = link.text(), anon = mw.util.isIPv4Address(user) || mw.util.isIPv6Address(user), all = [ {t: "אזהרה", m: "אזהרה", tl: "הוספת תבנית אזהרה", wl: 'unwatch'}, {t: "ניסויים", m: "ניסויים", tl: "הוספת תבנית ניסויים", wl: 'unwatch'}, {t: "בוטל", m: "בוטל", tl: "הוספת תבנית בוטל", askExtra: {prompt: 'סיבת הביטול', param: '|סיבה='}}, {t: "חזרה", m: "חזרה על עריכה", tl: "הוספת תבנית חזרה על עריכה"}, {t: "פרסום", m: "פרסומת", tl: "הוספת תבנית פרסומת", wl: 'unwatch'}, {t: "הועתק", m: "העתקה", tl: "הוספת אזהרת העתקה", askExtra: {prompt: 'מקור ההעתקה', param: '|2='}}, {t: "הסבר", m: "הסבר", tl: "הוספת תבנית הסבר", askExtra: {confirm: 'בוטל ? (ביטול=לא)', param: '|בוטל=כן'}, wl: 'unwatch'}, anon ? {t: "תודה", m: "תודה", tl: "הוספת תבנית תודה", wl: 'unwatch'} : {t: "בה", m: "ברוך בואך", tl:"הוספת תבנית ברוך בואך", wl: 'unwatch', noPage: true} ], deletedTemplates = [ {t: "הבל", m: "הבל", tl: "הוספת אזהרת הבל", linkTitle: false }, {t: "נמחק", m: "נמחק", tl: "הוספת תבנית מחיקה", linkTitle: false }, {t: "ניסוי נמחק", m: "נמחק ניסויים", tl: "הוספת תבנית מחיקה של ניסוי", linkTitle: false }, {t: "פרסום", m: "פרסומת", tl: "הוספת תבנית פרסומת", linkTitle: false }, {t: "הועתק", m: "העתקה", tl: "הוספת אזהרת העתקה"} ], youWereBlocked = {t: "נחסמת", m: "נחסמת", tl: "הודעה למשתמש שנחסם", askExtra: {prompt: 'סיבת החסימה', param: '|'}, noPage: true}; if (mw.user.options.get('userjs-RestoreWarnings-all')) { var userTp = mw.user.options.get('userjs-RestoreWarnings-all').split(','); for(var v in userTp) { all.push({t:userTp[v], m:userTp[v]}); } } 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:deletedcontributions/' + 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(')').append($('<a href="#" title="הגדרת תבניות"> ⚙</a>').click(function(){ var newParams = prompt('תבניות נוספות להגדרה בתפריט (יש להפריד עם ,)', mw.user.options.get('userjs-RestoreWarnings-all') || ''); if (newParams !== null) { if (newParams.length > 0) newParams = '=' + newParams; var api = new mw.Api().postWithToken('csrf', {action: 'options', change: 'userjs-RestoreWarnings-all' + newParams }) } return false; })); } 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))); }); } } // Early execution if ( document.readyState === 'interactive' ) { addWarningLinks(); } else { $( addWarningLinks ); }