<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://ejwiki.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ASysop.js</id>
	<title>MediaWiki:Sysop.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://ejwiki.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ASysop.js"/>
	<link rel="alternate" type="text/html" href="https://ejwiki.org/index.php?title=MediaWiki:Sysop.js&amp;action=history"/>
	<updated>2026-05-16T04:18:26Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://ejwiki.org/index.php?title=MediaWiki:Sysop.js&amp;diff=388334&amp;oldid=prev</id>
		<title>Mliris: 1 версия</title>
		<link rel="alternate" type="text/html" href="https://ejwiki.org/index.php?title=MediaWiki:Sysop.js&amp;diff=388334&amp;oldid=prev"/>
		<updated>2010-03-11T07:35:32Z</updated>

		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 07:35, 11 марта 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mliris</name></author>
	</entry>
	<entry>
		<id>https://ejwiki.org/index.php?title=MediaWiki:Sysop.js&amp;diff=25628&amp;oldid=prev</id>
		<title>Ariely в 22:06, 27 февраля 2010</title>
		<link rel="alternate" type="text/html" href="https://ejwiki.org/index.php?title=MediaWiki:Sysop.js&amp;diff=25628&amp;oldid=prev"/>
		<updated>2010-02-27T22:06:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;function sysopDeletePage(){&lt;br /&gt;
 var msgDiv, oldValue, curValue, opt, quoteRegExp = /^\/\*(.*)\*\//&lt;br /&gt;
 var hiddenGroups = [], hiddenGroupsNames = &amp;#039;&amp;#039;, btnUnhide&lt;br /&gt;
&lt;br /&gt;
 var select = document.getElementById(&amp;#039;wpDeleteReasonList&amp;#039;)&lt;br /&gt;
 var reason = document.getElementById(&amp;#039;wpReason&amp;#039;)&lt;br /&gt;
 if (!select || !reason) return&lt;br /&gt;
 groups = select.getElementsByTagName(&amp;#039;optgroup&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
 //simplify list&lt;br /&gt;
 for (var i=1; i&amp;lt;select.length; i++){&lt;br /&gt;
   opt = select.options[i]&lt;br /&gt;
   opt.title = opt.value&lt;br /&gt;
   opt.text = opt.value.replace(/\[\[[^|]+\|([^\]]+)\]\]/,&amp;#039;$1&amp;#039;)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 if (wgNamespaceNumber == 6) return //file delete page, nothing else to do&lt;br /&gt;
&lt;br /&gt;
 if (!window.opera) hideGroups()&lt;br /&gt;
&lt;br /&gt;
 if (window.delPageExpandSelect) {&lt;br /&gt;
   expandSelect()&lt;br /&gt;
   select.form.scrollIntoView()&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
 guessReasonFromTemplate()&lt;br /&gt;
&lt;br /&gt;
 addHandler(select, &amp;#039;change&amp;#039;, onReasonChange)&lt;br /&gt;
&lt;br /&gt;
 //add &amp;quot;info&amp;quot; link&lt;br /&gt;
 var p = select.form.nextSibling&lt;br /&gt;
 if (p &amp;amp;&amp;amp; p.className &amp;amp;&amp;amp; p.className==&amp;#039;mw-delete-editreasons&amp;#039;)&lt;br /&gt;
   p.innerHTML = &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;MediaWiki_talk:Sysop.js&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;Про скрипт&amp;lt;/a&amp;gt; | &amp;#039; + p.innerHTML&lt;br /&gt;
 &lt;br /&gt;
 return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// *** FUNCTIONS ***&lt;br /&gt;
&lt;br /&gt;
//remove groups that are not applicable; doesn&amp;#039;t work in Opera&lt;br /&gt;
 function hideGroups(){&lt;br /&gt;
   if (wgNamespaceNumber!=0) hideGroup (&amp;#039;Статьи&amp;#039;)&lt;br /&gt;
   if (wgNamespaceNumber!=2 &amp;amp;&amp;amp; wgNamespaceNumber!=3) hideGroup (&amp;#039;Личные страницы&amp;#039;)&lt;br /&gt;
   if (wgNamespaceNumber==14) hideGroup (&amp;#039;Перенаправления&amp;#039;);  else hideGroup (&amp;#039;Категории&amp;#039;)&lt;br /&gt;
   //create button to return removed groups&lt;br /&gt;
   if (!hiddenGroupsNames) return&lt;br /&gt;
   btnUnhide = document.createElement(&amp;#039;input&amp;#039;)&lt;br /&gt;
   btnUnhide.type = &amp;#039;button&amp;#039;;  btnUnhide.value = &amp;#039;*&amp;#039;; btnUnhide.onclick = unHideGroups&lt;br /&gt;
   btnUnhide.title = &amp;#039;вернуть спрятанные группы &amp;#039; + hiddenGroupsNames  &lt;br /&gt;
   btnUnhide.style.cssText = &amp;#039;margin-left:10px; background:inherit; height:1.2em&amp;#039;&lt;br /&gt;
   //if (!delPageExpandSelect)    select.parentNode.insertBefore(btnUnhide, select)&lt;br /&gt;
   select.parentNode.insertBefore(btnUnhide, select.nextSibling)&lt;br /&gt;
 }&lt;br /&gt;
 function hideGroup(name){&lt;br /&gt;
  for (var i=0; i&amp;lt;groups.length; i++)  if (groups[i].label == name) break&lt;br /&gt;
  if (i==groups.length) return&lt;br /&gt;
  hiddenGroups.push( [ groups[i].nextSibling, select.removeChild(groups[i]) ] ) &lt;br /&gt;
  hiddenGroupsNames += (hiddenGroupsNames? &amp;#039;, &amp;#039;:&amp;#039;&amp;#039;) + &amp;#039;«&amp;#039;+name+&amp;#039;»&amp;#039;&lt;br /&gt;
  //groups[i].style.display = &amp;#039;none&amp;#039; // doesn&amp;#039;t work in IE&lt;br /&gt;
 }&lt;br /&gt;
 function unHideGroups(){&lt;br /&gt;
   for (var i=hiddenGroups.length-1; i&amp;gt;=0; i--)&lt;br /&gt;
      select.insertBefore(hiddenGroups[i][1], hiddenGroups[i][0])&lt;br /&gt;
   btnUnhide.style.display = &amp;#039;none&amp;#039;&lt;br /&gt;
   expandSelect()&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function guessReasonFromTemplate(){ //try to guess reason from the db- template in quote&lt;br /&gt;
 var delTemplates = {&lt;br /&gt;
 &amp;#039;О1&amp;#039;: &amp;#039;бессвязно|nonsense|абсурд|nocontext&amp;#039;,&lt;br /&gt;
 &amp;#039;О2&amp;#039;: &amp;#039;тест|test&amp;#039;,&lt;br /&gt;
 &amp;#039;О3&amp;#039;: &amp;#039;ванд|vand|вандал|vandal|attack &amp;#039;,&lt;br /&gt;
 &amp;#039;О4&amp;#039;: &amp;#039;повторно|repost&amp;#039;,&lt;br /&gt;
 &amp;#039;О5&amp;#039;: &amp;#039;автор|author&amp;#039;,&lt;br /&gt;
 &amp;#039;О6&amp;#039;: &amp;#039;обсужд|talk&amp;#039;,&lt;br /&gt;
 &amp;#039;О7&amp;#039;: &amp;#039;переим|move|переименование|rename&amp;#039;,&lt;br /&gt;
 &amp;#039;О8&amp;#039;: &amp;#039;дубль|fork&amp;#039;,&lt;br /&gt;
 &amp;#039;С1&amp;#039;: &amp;#039;пусто|empty&amp;#039;,&lt;br /&gt;
 &amp;#039;С2&amp;#039;: &amp;#039;иностр|foreign&amp;#039;,&lt;br /&gt;
 &amp;#039;С3&amp;#039;: &amp;#039;ссылки|nocontent&amp;#039;,&lt;br /&gt;
 &amp;#039;С5&amp;#039;: &amp;#039;нз|nn|незначимо&amp;#039;,&lt;br /&gt;
 &amp;#039;С6&amp;#039;: &amp;#039;copyvio|копивио&amp;#039;,&lt;br /&gt;
 &amp;#039;П1&amp;#039;: &amp;#039;в никуда|redirect|redirnone&amp;#039;,&lt;br /&gt;
 &amp;#039;П2&amp;#039;: &amp;#039;межпространственный|redirspace&amp;#039;,&lt;br /&gt;
 &amp;#039;П3&amp;#039;: &amp;#039;опечатка|ошибка|redirtypo&amp;#039;,&lt;br /&gt;
 &amp;#039;П4&amp;#039;: &amp;#039;падеж|redirflect&amp;#039;,&lt;br /&gt;
 &amp;#039;П5&amp;#039;: &amp;#039;смысл|redirsense&amp;#039;,&lt;br /&gt;
 &amp;#039;К1&amp;#039;: &amp;#039;пусткат|catempty&amp;#039;,&lt;br /&gt;
 &amp;#039;У1&amp;#039;: &amp;#039;владелец|owner|self|user&amp;#039;,&lt;br /&gt;
 &amp;#039;У2&amp;#039;: &amp;#039;anon|анон&amp;#039;,&lt;br /&gt;
 &amp;#039;У3&amp;#039;: &amp;#039;несущ|nouser&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
 var ma&lt;br /&gt;
 if (ma=reason.value.match(/\{\{\s*(db|уд)-?([\wа-яА-Я\s]+).*\}\}/i)){&lt;br /&gt;
   var dbReason = &amp;#039;|&amp;#039; + ma[2].toLowerCase()&lt;br /&gt;
   for (var name in delTemplates)&lt;br /&gt;
     if ((&amp;#039;|&amp;#039;+delTemplates[name]).indexOf(dbReason) != -1){&lt;br /&gt;
        if (setSelect(name))&lt;br /&gt;
          dispMsg(&amp;#039;Автоматически выбран &amp;#039;+name+&amp;#039; согласно шаблону «&amp;#039; + ma[1]+&amp;#039;-&amp;#039;+ma[2]+&amp;#039;»&amp;#039;, &amp;#039;#F4FFF4&amp;#039;)&lt;br /&gt;
        break&lt;br /&gt;
     }&lt;br /&gt;
 }else if (ma=reason.value.match(/\{\{К удалению *\| *([^\}]+) *\}\}/i)){&lt;br /&gt;
    setReason(&amp;#039;по результатам обсуждения на \[\[Википедия:К удалению/&amp;#039;+ma[1]+&amp;#039;#&amp;#039;+wgPageName.replace(/_/g, &amp;#039; &amp;#039;)+&amp;#039;]]&amp;#039;)&lt;br /&gt;
    dispMsg(&amp;#039;Автоматически вставлена ссылка на ВП:КУ&amp;#039;, &amp;#039;#F4FFF4&amp;#039;)&lt;br /&gt;
    delPageExpandSelect = false&lt;br /&gt;
 }else if (ma=reason.value.match(/#REDIRECT ?\[\[([^\]]+:)/i)){&lt;br /&gt;
   var ma2 = wgPageName.match(/.+:/)&lt;br /&gt;
   if (ma2 &amp;amp;&amp;amp; ma[1]!=ma2[0])&lt;br /&gt;
     if (setSelect(&amp;#039;П2&amp;#039;))&lt;br /&gt;
        dispMsg(&amp;#039;Автоматически выбран П2&amp;#039;, &amp;#039;#F4FFF4&amp;#039;)&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function dispMsg(msg, color){&lt;br /&gt;
 if (!msgDiv){ //create DIV for messages&lt;br /&gt;
   msgDiv = document.createElement(&amp;#039;div&amp;#039;)&lt;br /&gt;
   msgDiv.style.cssText = &amp;#039;padding:0 3px 0 3px; border:1px dotted gray; line-height:1.2em; margin-left:20px; float:right; display:none&amp;#039;&lt;br /&gt;
   var el = document.getElementById(&amp;#039;wpConfirmB&amp;#039;)&lt;br /&gt;
   if (el) el.parentNode.insertBefore(msgDiv, el)&lt;br /&gt;
   else select.form.appendChild(msgDiv)&lt;br /&gt;
 } &lt;br /&gt;
 if (msg) {&lt;br /&gt;
   msgDiv.innerHTML = msg&lt;br /&gt;
   msgDiv.style.display = &amp;#039;&amp;#039;&lt;br /&gt;
   msgDiv.style.backgroundColor = color || &amp;#039;&amp;#039;&lt;br /&gt;
 }else msgDiv.style.display = &amp;#039;none&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function onReasonChange(){&lt;br /&gt;
 select.style.backgroundColor = select.selectedIndex==0 ? &amp;#039;#F5F5F5&amp;#039; : &amp;#039;&amp;#039;&lt;br /&gt;
if (/(#О3|#С4|оскорблен|вандализм)/.test(select.value)){ //then remove quote&lt;br /&gt;
  if (oldValue) return //user selected one vand criteria after another&lt;br /&gt;
  var newV = reason.value&lt;br /&gt;
  if (/^\/\*#(redi|пере)/i.test(newV)) newV=newV.replace(/\(автор.*\]\)/, &amp;#039;&amp;#039;)&lt;br /&gt;
  newV = newV.replace(quoteRegExp,&amp;#039;&amp;#039;)&lt;br /&gt;
  if (setReason(newV))  dispMsg(&amp;#039;Автоматически убрана цитата&amp;#039;, &amp;#039;#FFF5F5&amp;#039;)&lt;br /&gt;
}else if (oldValue &amp;amp;&amp;amp; reason.value==curValue){ //return quote back&lt;br /&gt;
  setReason(oldValue, true)&lt;br /&gt;
  dispMsg()&lt;br /&gt;
}else&lt;br /&gt;
  dispMsg()&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function expandSelect(){ //not for Opera (sometimes works in 9.27 though)&lt;br /&gt;
 if (!window.delPageExpandSelect) return&lt;br /&gt;
 var count = 1&lt;br /&gt;
 for (var i=0; i&amp;lt;groups.length; i++)&lt;br /&gt;
	 if (groups[i].style.display != &amp;#039;none&amp;#039;) &lt;br /&gt;
		 count += groups[i].getElementsByTagName(&amp;#039;option&amp;#039;).length + 1&lt;br /&gt;
 select.size = count&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function setSelect(name){&lt;br /&gt;
 for (var i=0; i&amp;lt;select.options.length; i++)&lt;br /&gt;
    if (select.options[i].value.indexOf(&amp;#039;#&amp;#039;+name+&amp;#039;|&amp;#039;) != -1 ){&lt;br /&gt;
        //messageStays = true&lt;br /&gt;
        select.selectedIndex = i&lt;br /&gt;
        onReasonChange()&lt;br /&gt;
        return true&lt;br /&gt;
    }&lt;br /&gt;
 return false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setReason(val, forgetOld){&lt;br /&gt;
 if (val == reason.value) return false &lt;br /&gt;
 oldValue = reason.value&lt;br /&gt;
 curValue = val&lt;br /&gt;
 reason.value = curValue&lt;br /&gt;
 if (reason.onupdate) reason.onupdate() //for compatibility with &amp;quot;summary preview&amp;quot; script&lt;br /&gt;
 if (forgetOld) oldValue = &amp;#039;&amp;#039;&lt;br /&gt;
 return true&lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
} //sysopDeletePage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//avoid [move=autoconfirmed] in protection logs&lt;br /&gt;
function sysopProtectPage(){&lt;br /&gt;
 var inp = document.getElementById(&amp;#039;mwProtect-level-edit&amp;#039;) &lt;br /&gt;
 if (inp) addHandler(inp, &amp;#039;change&amp;#039;, noMoveAutoconfirmedProtection)&lt;br /&gt;
 function noMoveAutoconfirmedProtection(){&lt;br /&gt;
   var inp = document.getElementById(&amp;#039;mwProtectUnchained&amp;#039;)&lt;br /&gt;
   if (!inp || inp.checked) return&lt;br /&gt;
   inp = document.getElementById(&amp;#039;mwProtect-level-move&amp;#039;)&lt;br /&gt;
   if (inp &amp;amp;&amp;amp; inp.selectedIndex==1) inp.selectedIndex = 0&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function addContentSubLink(url, name){&lt;br /&gt;
 var cSub = document.getElementById(&amp;#039;contentSub&amp;#039;)&lt;br /&gt;
 if (!cSub) return&lt;br /&gt;
 if (cSub.lastChild.nodeName == &amp;#039;A&amp;#039;) cSub.appendChild(document.createTextNode(&amp;#039; · &amp;#039;))&lt;br /&gt;
 var aa=document.createElement(&amp;#039;a&amp;#039;)&lt;br /&gt;
 aa.href=url&lt;br /&gt;
 aa.appendChild(document.createTextNode(name))&lt;br /&gt;
 cSub.appendChild(document.createTextNode(&amp;#039; &amp;#039;))&lt;br /&gt;
 cSub.appendChild(aa)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function sysopStart(){&lt;br /&gt;
 switch (wgAction){&lt;br /&gt;
  case &amp;#039;delete&amp;#039;: sysopDeletePage(); break&lt;br /&gt;
  //case &amp;#039;protect&amp;#039;: case &amp;#039;unprotect&amp;#039;: sysopProtectPage(); break&lt;br /&gt;
  case &amp;#039;history&amp;#039;: switch (wgNamespaceNumber){ case 0: case 6: case 10: case 14: //stabilization link&lt;br /&gt;
	addContentSubLink(wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;Special:Stabilization/&amp;#039;&lt;br /&gt;
    +encodeURIComponent(wgPageName)), &amp;#039;Настройки стабилизации&amp;#039;)&lt;br /&gt;
  }	 &lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
addOnloadHook(sysopStart)&lt;/div&gt;</summary>
		<author><name>Ariely</name></author>
	</entry>
</feed>