صارف:Yethrosh/Monobook.js/Catwatch.js

آزاد دائرۃ المعارف، ویکیپیڈیا سے

تفصیل کے لیے کھولیں کے بٹن پر کلک کریں یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔

  • فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
  • گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
  • انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
  • اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں

/*<noinclude>
Il "Controllo categorie" (grazie a [[:en:User:ais523]] che per primo ha avuto l'idea) aggiunge elementi alla watchlist se una pagina viene aggiunta ad una categoria (ed e' ancora presente al momento del controllo). Questo evento apparira' solo se un'altra pagina della watchlist e' stata modificata quel giorno (se l'aggiunta e' l'unica cosa successa non apparira').<br/>
La ricategorizzazione di una pagina  appartenente ad una categoria osservata verra' segnalata anche se la modifica riguardava  un'altra categoria (a meno che  quella osservata venga cancellata).<br/>
I cancellamenti dalla categoria controllata non verranno visualizzati.<br/>
L'ora delle modifiche si riferisce a quella dei server, potrebbe essere differente da quella locale.<br/>

Per ogni pagina aggiunta verranno mostrati i seguenti link:
* Alla relativa categoria
* Alla pagina aggiunta
* All'ultima modifica della pagina
* Alla cronologia della pagina
*/

//<source lang="javascript">

// End of [[WP:US]] quote

function cwOntoWatchlist(responseText, catName)
{
  var a=responseText;
  var c=catName;
  var i;
  var diag="";
  if(a.indexOf("<categorymembers/>")!=-1) return; //cat is empty, nothing to do here
  if(a.indexOf('title="')==-1) return; // this error happens sometimes, just do nothing here
  var temp, temp2;
  
  var pages=a.split('title="');
  var times=a.split('timestamp="');
  
  a=document.getElementsByTagName("h4"); //get dates in the watchlist
  var monthname=new Array();
  monthname['01']="جنوری";
  monthname['02']="فروری";
  monthname['03']="مارچ";
  monthname['04']="اپریل";
  monthname['05']="مئی";
  monthname['06']="جون";
  monthname['07']="جولائی";
  monthname['08']="اگست";
  monthname['09']="ستمبر";
  monthname['10']="اکتوبر";
  monthname['11']="نومبر";
  monthname['12']="دسمبر";

  // skip first element, it's unnecessary
  for (cicla=1; cicla<pages.length; cicla++)
  {
     pages[cicla] = pages[cicla].split('" timestamp=')[0];
     times[cicla] = times[cicla].split('" />')[0];
  
     // 2008-08-25
     times[cicla]=new String(times[cicla]);

     var mn1;

     // 25 ago 2008
     mn1=""+new Number(times[cicla].substr(8,2))+" "+monthname[times[cicla].substr(5,2)]+" "+times[cicla].substr(0,4);

     i=a.length;
     while(i--)
     {
       if(a[i].innerHTML==mn1)
       {
         diag+=a[i].innerHTML+":";
         temp=a[i].nextSibling.firstChild;
         if(temp==null) temp=a[i].nextSibling.nextSibling.firstChild;
         while(temp!=null)
         {
           diag+=temp.tagname+"!";
           if( temp.tagName != null  &&  temp.tagName.toLowerCase() === "li" ) {
             temp2 = temp.innerHTML.match( /<span class="mw-changeslist-date">(\d\d):(\d\d)|; (\d\d):(\d\d)(:\d\d)? \. \./ );
             if ( temp2 == null ) {
               temp2 = temp;
               break;
             } else {
               if ( temp2[1] !== undefined ) {                                   
                 temp2 = new Number( temp2[1] ) * 100 + new Number( temp2[2] );
               }
               else {
                 temp2 = new Number( temp2[3] ) * 100 + new Number( temp2[4] );
               }
               diag+=temp2+",";
               if( temp2 < new Number( times[cicla].substr(11,2) + times[cicla].substr(14,2) ) ) {
                 temp2 = temp;
                 break;
               }
             }
           }
           temp2=temp; temp=temp.nextSibling;
           if(temp==null) break;
         }
         temp=document.createElement("li");
         if(temp2==null) {return;}
         if(a[i].nextSibling.firstChild!=null) // IE-like whitespace handling
           a[i].nextSibling.insertBefore(temp,temp2);
         else // Firefox-like whitespace handling
           a[i].nextSibling.nextSibling.insertBefore(temp,temp2);

         temp.innerHTML='<span style="font-weight:bold;">'+"(diff) (<a href='//ur.wikipedia.org/w/index.php?title="+encodeURI(pages[cicla])+
                        "&action=history'>cron</a>) . . <a "+
                        "href='//en.wikipedia.org/wiki/Category:"+
                        encodeURI(c)+
                        "'>Category:"+c+"</a>; "+times[cicla].substr(11,2)+":"+times[cicla].substr(14,2)+
                        " . . (+ <a "+
                        "href='//urwikipedia.org/wiki/"+
                        encodeURI(pages[cicla])+"'>"+pages[cicla]+"</a> "+
                        "(<a href='//ur.wikipedia.org/w/index.php?title="+encodeURI(pages[cicla])+
                        "&diff=last'>last</a>))</span>";
       }
     }
  }
}

var CategoryObserved;

if(mw.config.get('wgPageName')=="خاص:Watchlist")
jQuery(document).ready(function($){
  $.ajax({
    url: mw.util.wikiScript("index"),
    data: ({title: "User:"+mw.config.get('wgUserName')+"/CategoryObserved.js", action : 'raw', ctype : 'text/javascript'}),
    cache: false,
    success: function(data){
      try {
        eval(data);
      }
      catch(e) {
        alert("The syntax of the User page:"+mw.config.get('wgUserName')+"/CategoryObserved.js is incorrect.");
        return;
      }

      if(typeof CategoryObserved == 'undefined')
      {
        if(confirm("آپ کے پاس جانچ کے لیے فہرست زمرہ جات موجود نہیں ہے۔ کیا آپ تخلیق کرنا چاہتے ہیں؟"))
          location.href = mw.config.get("wgServer") + mw.util.wikiScript("index") + '?title=User:'+mw.config.get('wgUserName')+
          '/CategoryObserved.js&action=edit&preload=User:محمد شعیب/CategoryObservedTemplate.js';
      }
      else
      {
        $.each(CategoryObserved, function(i, cat){
          $.ajax({
            url: mw.util.wikiScript("api"),
            data: ({action : "query", list : 'categorymembers', cmtitle : 'Category:'+cat, cmlimit : '100', cmprop : "title|timestamp", cmsort : "timestamp", cmdir : "desc", format : "xml"}),
            dataType: "text",
            success: function(data){
               cwOntoWatchlist(data, cat);
            }
          });
        });
      }
    }
  });
});