משתמש:יוסאריאן/vector.js/afterdelete warning.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
//<syntaxhighlight lang="javascript">
/* For syspos: when deleting a page, add a the name (including links and warnings) of the last person who edited the page.
   useful for blocking a person after deleting a page he created.
   created by [[User:Yonidebest]], changed by [[User:Mikimik]]    */
function lastAuthorOfDeletedPage()
{
    function encodeTextToUrl ( text )
    {
        return encodeURIComponent(text).replace(/%2F/g,"/").replace(/%24/g,"$").replace(/%2C/g,",").replace(/%3A/g,":").replace(/%40/g,"@");
    }

    function createLink ( url, text )
    {
        var link = document.createElement("a");
        link.href = "/wiki/" + url;
        link.appendChild ( document.createTextNode( text ) );
        link.title = text;
        return link;
    }

    function createWarningLink ( user, warning )
    {
        var link = document.createElement("a");
        link.href = "javascript:void();";
        link.onclick = function()
            {
                window.open ( mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=User Talk:" + encodeTextToUrl(user) +
                              "&action=edit&warning=" + encodeTextToUrl(warning) +
                              "&frompage=" + encodeTextToUrl((wgNamespaceNumber == 6 || wgNamespaceNumber == 14 ? ":" : "" ) + wgPageName) );
            }
        link.appendChild ( document.createTextNode( warning ) );
        link.title = warning;
        return link;
    }

  try
  {
    if ( !userDeleteWarnings ) var userDeleteWarnings = [ "אזהרה", "ניסויים", "פרסומת", "נחסמת", "שגיאה", "נמחק", "נמחק ניסויים", "הבל" ];

    var mwreturnto = document.getElementById ("mw-returnto");
    if ( !mwreturnto ) return;

    var span = document.createElement("span");
    span.id = "lastAuthorOfDeletedPage";
    span.innerHTML = "טוען...";

    var line = document.createElement("p");
    line.innerHTML = "התורם האחרון בדף זה היה: ";
    line.appendChild (span);

    mwreturnto.parentNode.insertBefore (line, mwreturnto);

    var ajaxObj = sajax_init_object();

    ajaxObj.open ("GET", wgServer + "/w/api.php?action=query&list=deletedrevs&titles=" + encodeTextToUrl(wgPageName) + "&drprop=user&drlimit=1", true);

    ajaxObj.onreadystatechange = function()
    {
        if ( ajaxObj.readyState != 4 || ajaxObj.status != 200 ) return;

        var rx = /user=&quot;(\d+\.\d+\.\d+\.\d+|.+)&quot; /;
        var m = ajaxObj.responseText.match (rx);

        if ( m && m.length )
        {
            var username = m[0].replace(rx,"$1").replace(/&amp;/g,"&").replace(/&amp;/g,"&").replace(/&quot;/g,'"');
            while ( /&#\d+;/.test(username) ) username = username.replace ( /&#\d+;/, String.fromCharCode(username.replace(/.*?&#(\d+);.*/,"$1")) );
            var userurl = encodeTextToUrl(username);

            var span = document.getElementById("lastAuthorOfDeletedPage");
            while ( span.firstChild ) span.removeChild ( span.firstChild );
            span.appendChild ( createLink("User:"+userurl,username) );
            span.appendChild ( document.createTextNode(" (") );
            for ( var i in userDeleteWarnings )
            {
                span.appendChild ( createWarningLink( username, userDeleteWarnings[i] ) );
                span.appendChild ( document.createTextNode(" | ") );
            }
            span.replaceChild ( document.createTextNode( ") (" ), span.lastChild );
            span.appendChild ( createLink("User_Talk:"+userurl,wgUserLanguage == "he" ? "שיחה" : "talk") );
            span.appendChild ( document.createTextNode(" | ") );
            span.appendChild ( createLink("Special:Contributions/"+userurl,wgUserLanguage == "he" ? "תרומות" : "contributions") );
            span.appendChild ( document.createTextNode(" | ") );
            span.appendChild ( createLink("Special:Blockip/"+userurl,wgUserLanguage == "he" ? "חסימה" : "block") );
            span.appendChild ( document.createTextNode(")") );
        }
        else document.getElementById("lastAuthorOfDeletedPage").innerHTML = '<span style="color: red;">תקלה</span>';
    };

    ajaxObj.send(null);
  }
  catch(e)
  {
    return;      // lets just ignore what's happened
  }
}

if ( wgAction == "delete" && !wgArticleId ) addOnloadHook ( lastAuthorOfDeletedPage );

if ( typeof(postWarning) != "function" )  // check if the function was already defined
{
    function postWarning()
    {
      try {
        document.getElementById("wpTextbox1").value += "\n== [" + "[" + getParamValue("frompage").replace(/_/g," ") + "]] ==\n{" + "{" + getParamValue("warning") + "}} ~~" + "~~";
        document.getElementById("wpSummary").value = getParamValue("warning");
        document.getElementById("editform").submit();
      }
      catch(e)
      { return; }
    }

    if ( getParamValue("warning") && getParamValue("frompage") ) addOnloadHook ( postWarning );
}
//</syntaxhighlight>