<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://xn--b1amah.xn--d1ad.xn--p1ai/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://xn--b1amah.xn--d1ad.xn--p1ai/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-watchlist.js</id>
		<title>MediaWiki:Gadget-watchlist.js - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://xn--b1amah.xn--d1ad.xn--p1ai/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-watchlist.js"/>
		<link rel="alternate" type="text/html" href="http://xn--b1amah.xn--d1ad.xn--p1ai/w/index.php?title=MediaWiki:Gadget-watchlist.js&amp;action=history"/>
		<updated>2026-05-26T21:41:01Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>http://xn--b1amah.xn--d1ad.xn--p1ai/w/index.php?title=MediaWiki:Gadget-watchlist.js&amp;diff=1409&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://xn--b1amah.xn--d1ad.xn--p1ai/w/index.php?title=MediaWiki:Gadget-watchlist.js&amp;diff=1409&amp;oldid=prev"/>
				<updated>2011-06-28T13:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
function WLScript(){&lt;br /&gt;
&lt;br /&gt;
var whenPageLoaded = +(new Date()) - 20000 //add 20 sec just in case&lt;br /&gt;
var namespace, $content, mainTab, hideInterfaceCSS&lt;br /&gt;
var alreadySorted, alreadyAddedUnwatch, isEnhanced, mm&lt;br /&gt;
var inProgress = null, timeoutID = null&lt;br /&gt;
&lt;br /&gt;
mm = {&lt;br /&gt;
sortTip:'Сортировать страницы по пространствам',&lt;br /&gt;
sortDone:'Изменения уже отсортированы',&lt;br /&gt;
unwatchTip:'Добавить (x) ссылки для вычёркивания страниц из списка наблюдения',&lt;br /&gt;
unwatchDone:'Для удаления страниц из списка наблюдения используйте появившиеся ссылки (x)',&lt;br /&gt;
onlynew:'Только новые',&lt;br /&gt;
onlynewTip:'Показать изменения с момента загрузки этой страницы',&lt;br /&gt;
expandAll:'Показать/спрятать все свёрнутые правки',&lt;br /&gt;
fullPage:'Спрятать/показать элементы интерфейса'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
namespace = document.getElementById('namespace')&lt;br /&gt;
if (!namespace) return&lt;br /&gt;
&lt;br /&gt;
$content = $('#bodyContent')&lt;br /&gt;
if (!$content.length){&lt;br /&gt;
  $content = $('#mw_content, #article').eq(0)&lt;br /&gt;
  if (!$content.length) $content = $(document.body) // covered all the skin but who knows...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//enhanced RC: make (x) appear by clicking on timestamp&lt;br /&gt;
isEnhanced = $content.find('ul.special').length == 0&lt;br /&gt;
if (isEnhanced) $content.click(toggleXLink)&lt;br /&gt;
&lt;br /&gt;
//find insertion points for links:  after &amp;quot;days all&amp;quot;&lt;br /&gt;
var linksAt = $('#mw-watchlist-options').find('a[href*=&amp;amp;days=7]').next().next()&lt;br /&gt;
if (!linksAt.length) linksAt = $('#mw-watchlist-options').find('hr').last()&lt;br /&gt;
//find &amp;quot;Special&amp;quot; tab&lt;br /&gt;
mainTab = $('#ca-special, #ca-nstab-special').eq(0)&lt;br /&gt;
&lt;br /&gt;
//&amp;quot;only new&amp;quot; link and tab&lt;br /&gt;
addLnk(mm.onlynew, mm.onlynewTip).mousedown(onlyNewEntries).attr('id', 'listSince')&lt;br /&gt;
addTab(mm.onlynew, mm.onlynewTip).mousedown(onlyNewEntries)&lt;br /&gt;
&lt;br /&gt;
//&amp;quot;unwatch&amp;quot; link(s)&lt;br /&gt;
if (window.unwatchLinksOnLoad) addXLinks()&lt;br /&gt;
else addLnk('x' , mm.unwatchTip).click(addXLinks)&lt;br /&gt;
&lt;br /&gt;
//&amp;quot;sort&amp;quot; link&lt;br /&gt;
addLnk('↑↓', mm.sortTip).click(sortWatchlist)&lt;br /&gt;
&lt;br /&gt;
//&amp;quot;expand all&amp;quot; link&lt;br /&gt;
if ($('#mw-rc-openarrow-0').length) addLnk('±', mm.expandAll).click(expandMultipleEdits)&lt;br /&gt;
&lt;br /&gt;
//&amp;quot;hideInterface&amp;quot; tab&lt;br /&gt;
addTab('↸',mm.fullPage).click(hideInterface).attr('href','#')&lt;br /&gt;
if (document.cookie.indexOf('wlmax=1') != -1) hideInterface()&lt;br /&gt;
&lt;br /&gt;
function addLnk(txt, tip){&lt;br /&gt;
  linksAt.before(' | ')&lt;br /&gt;
  return $('&amp;lt;a href=# title=&amp;quot;'+tip+'&amp;quot; style=&amp;quot;font-style:italic&amp;quot;&amp;gt;'+txt+'&amp;lt;/a&amp;gt;').insertBefore(linksAt)&lt;br /&gt;
}&lt;br /&gt;
function addTab(txt, tip){&lt;br /&gt;
  var tab = mainTab.clone(true).removeClass('selected').attr('id','')&lt;br /&gt;
  tab.find('a').text(txt).attr('title', tip).attr('accesskey','')&lt;br /&gt;
  return tab.appendTo(mainTab.parent())&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function onlyNewEntries(e) {&lt;br /&gt;
 var url = window.location.href.split('#')[0]&lt;br /&gt;
 var days = ( +(new Date()) - whenPageLoaded)/(1000 * 3600 * 24)&lt;br /&gt;
 e.target.href = /[?&amp;amp;]days=/.test(url)&lt;br /&gt;
  ? url.replace(/([?&amp;amp;]days=)[^&amp;amp;]*/, '$1'+days)&lt;br /&gt;
  : url + (url.indexOf('?') &amp;lt; 0 ? '?':'&amp;amp;') + 'days=' + days&lt;br /&gt;
 return true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function sortWatchlist(e){&lt;br /&gt;
 e.preventDefault()&lt;br /&gt;
 if (alreadySorted) return alert(mm.sortDone)&lt;br /&gt;
 $content.find('h4').each(function(i, H4){ //sort all days separately&lt;br /&gt;
   sortDay($(H4).next('div, ul'))&lt;br /&gt;
 })&lt;br /&gt;
 alreadySorted = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function sortDay(dayDiv){&lt;br /&gt;
 var i, pgname, rowElem, hiddenDiv, rows = dayDiv.find('a[href*=&amp;quot;&amp;amp;action=history&amp;quot;]')&lt;br /&gt;
 for (i = 0; i &amp;lt; rows.length; i++){&lt;br /&gt;
   pgname = getTitleFromURL(rows[i].href)&lt;br /&gt;
   ns = getNSFromTitle(pgname)&lt;br /&gt;
   if (ns&amp;gt;0) pgname = pgname.substring(getNamespace(ns).length+1) //title w/o prefix&lt;br /&gt;
   if (ns%2) ns-- //sort talk page as if it was a base page&lt;br /&gt;
   rows[i].sortkey = zzz(ns) + ':' + pgname //assign custom tag attribute: namespace+title&lt;br /&gt;
 }&lt;br /&gt;
 //sort rows array&lt;br /&gt;
 rows.sort(function(a,b){&lt;br /&gt;
   if (a.sortkey &amp;gt; b.sortkey) return 1&lt;br /&gt;
   else if (a.sortkey &amp;lt; b.sortkey) return -1&lt;br /&gt;
   else return 0&lt;br /&gt;
 })&lt;br /&gt;
 //sort rows in HTML, by moving all to the bottom&lt;br /&gt;
 if (isEnhanced)&lt;br /&gt;
   for (i=0; i&amp;lt;rows.length; i++){&lt;br /&gt;
     rowElem = rows.eq(i).closest('table')&lt;br /&gt;
     hiddenDiv = rowElem.next('div')&lt;br /&gt;
     dayDiv.append(rowElem, hiddenDiv)&lt;br /&gt;
   }&lt;br /&gt;
 else&lt;br /&gt;
   for (i=0; i&amp;lt;rows.length; i++){&lt;br /&gt;
     rowElem = rows.eq(i).closest('li')&lt;br /&gt;
     dayDiv.append(rowElem)&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function expandMultipleEdits(e){&lt;br /&gt;
 e.preventDefault()&lt;br /&gt;
 var i = 0, sp, state = $('#mw-rc-openarrow-0')[0].style.display&lt;br /&gt;
 while (sp=document.getElementById('mw-rc-openarrow-'+(i++).toString()))&lt;br /&gt;
   if (sp.style.display == state) $(sp.firstChild).click()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function addXLinks(e){&lt;br /&gt;
 if (e) e.preventDefault()&lt;br /&gt;
 if (alreadyAddedUnwatch) return alert(mm.unwatchDone)&lt;br /&gt;
 $content.find('a[href*=&amp;quot;&amp;amp;action=history&amp;quot;]').each(function(i, lnk){ addXLink(lnk) })&lt;br /&gt;
 alreadyAddedUnwatch = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addXLink(lnk){&lt;br /&gt;
  var x = $('&amp;lt;a class=aj-unwatch style=&amp;quot;font-size:smaller&amp;quot; title=&amp;quot;'+mw.msg('unwatch')+'&amp;quot; /&amp;gt;')&lt;br /&gt;
       .attr('href', lnk.href.replace(/&amp;amp;curid=\d+/,'').replace(/action=history/,'action=unwatch'))&lt;br /&gt;
       .click(ajaxUnwatch)&lt;br /&gt;
   lnk = $(lnk)&lt;br /&gt;
   if (isEnhanced) lnk.parent().prepend(  x.append('(x)'), ' ' )&lt;br /&gt;
   else lnk.after( ' | ', x.append('x') )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function toggleXLink(e){ //add (x) when clicking on timestamp&lt;br /&gt;
   if ( ! $(e.target).filter('td.mw-enhanced-rc').length ) return&lt;br /&gt;
   var tbl = $(e.target).parents('table.mw-enhanced-rc')&lt;br /&gt;
   var x = tbl.find('a.aj-unwatch')&lt;br /&gt;
   if (x.length) x.remove()&lt;br /&gt;
   else addXLink(tbl.find('a[href*=&amp;quot;&amp;amp;action=history&amp;quot;]')[0])&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function ajaxUnwatch(e) {&lt;br /&gt;
 if (inProgress) return false&lt;br /&gt;
 inProgress = getTitleFromURL(this.href)&lt;br /&gt;
 timeoutID = window.setTimeout( function() {inProgress = null},  10000 )&lt;br /&gt;
 //call server&lt;br /&gt;
 var req = { action:'watch', format:'json', title:inProgress }&lt;br /&gt;
 if (/&amp;amp;action=unwatch/.test(this.href)) req.unwatch = ''&lt;br /&gt;
 $.getJSON( '/w/api.php', req, showUnwatch)&lt;br /&gt;
 return false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function showUnwatch (response) {&lt;br /&gt;
  if (timeoutID) window.clearTimeout(timeoutID)&lt;br /&gt;
  response = response.watch&lt;br /&gt;
  var name = inProgress, state, pg&lt;br /&gt;
  inProgress = null&lt;br /&gt;
  if (response.watched !== undefined) state = false&lt;br /&gt;
  else if (response.unwatched !== undefined) state = true&lt;br /&gt;
  else return //unrecognized response&lt;br /&gt;
  //find the full name of &amp;quot;other page&amp;quot;&lt;br /&gt;
  var ns = getNSFromTitle(name)&lt;br /&gt;
  var name2 = name&lt;br /&gt;
  if (ns &amp;gt; 0) name2 = name2.substring(getNamespace(ns).length+1) //remove old prefix&lt;br /&gt;
  if (ns % 2)  ns--; else ns++ //switch to  &amp;quot;other&amp;quot; namespace&lt;br /&gt;
  if (ns &amp;gt; 0) name2 = getNamespace(ns) + ':' +  name2 //add new prefix&lt;br /&gt;
  //now mark all rows that are either name or name2&lt;br /&gt;
  $content.find('a.aj-unwatch').each(function(i, lnk){&lt;br /&gt;
    pg = getTitleFromURL(lnk.href)&lt;br /&gt;
    if (pg != name &amp;amp;&amp;amp; pg != name2) return&lt;br /&gt;
    lnk.title = mw.msg(state?'watch':'unwatch')&lt;br /&gt;
	$(lnk).parent().find('a').css('text-decoration', state ? 'line-through' : '')&lt;br /&gt;
	lnk.href = lnk.href.replace(/&amp;amp;action=\w+/, '&amp;amp;action='+ (state?'watch':'unwatch'))&lt;br /&gt;
  })&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function hideInterface(e){&lt;br /&gt;
&lt;br /&gt;
 if (e) e.preventDefault()&lt;br /&gt;
&lt;br /&gt;
 if (!hideInterfaceCSS)  hideInterfaceCSS = mw.util.addCSS('\&lt;br /&gt;
 div#siteNotice, h1#firstHeading, #siteSub, #contentSub, fieldset#mw-watchlist-options,\&lt;br /&gt;
 div.mw-rc-label-legend, #mw-fr-watchlist-pending-notice {display:none}')&lt;br /&gt;
 else hideInterfaceCSS.disabled = !hideInterfaceCSS.disabled&lt;br /&gt;
&lt;br /&gt;
 document.cookie = 'wlmax=' + (!hideInterfaceCSS.disabled ? '1' : '0;expires=' + (new Date()).toGMTString() + ';;')&lt;br /&gt;
&lt;br /&gt;
 var a = mainTab.find('a') //replace &amp;quot;Special&amp;quot; tab text with &amp;quot;Watchlist&amp;quot;&lt;br /&gt;
 if (hideInterfaceCSS.disabled){ //restore&lt;br /&gt;
     a.text( a.attr('oldtext') )&lt;br /&gt;
 }else{//set to &amp;quot;watchlist&amp;quot;&lt;br /&gt;
   a.attr('oldtext', a.text())&lt;br /&gt;
   a.text($('h1#firstHeading').text())&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//common functions; need 'namespace' select element&lt;br /&gt;
&lt;br /&gt;
function getNSFromTitle(title){ //returns namespace number&lt;br /&gt;
 var i = title.indexOf(':')&lt;br /&gt;
 if (i == -1) return 0&lt;br /&gt;
 var prefix = title.substring(0,i+1) //including ':'&lt;br /&gt;
 for (i=2; i &amp;lt; namespace.options.length; i++)&lt;br /&gt;
   if (namespace.options[i].text+':' == prefix)&lt;br /&gt;
     return i-1&lt;br /&gt;
 return 0 // ':' was just a part of the title&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getNamespace(ns){ //returns namespace name&lt;br /&gt;
 if (ns==0) return ''&lt;br /&gt;
 else return namespace.options[ns+1].text&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getTitleFromURL (url){ //gets 'title=' part from a link&lt;br /&gt;
  var ma = url.match(/(&amp;amp;|\?)title=([^&amp;amp;]+)/)&lt;br /&gt;
  if (ma) return decodeURIComponent(ma[2]).replace(/_/g,' ')&lt;br /&gt;
  else return ''&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function zzz(s){ // 5 -&amp;gt; 005&lt;br /&gt;
 s = s.toString()&lt;br /&gt;
 if (s.length==1) return '00'+s&lt;br /&gt;
 else if (s.length==2) return '0'+s&lt;br /&gt;
 else return s&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (wgCanonicalSpecialPageName == 'Watchlist' &amp;amp;&amp;amp; wgAction == 'view') WLScript()&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>