MediaWiki:SysopDelete.js

ХӀара гӀирс Википеди чуьра бу — маьрша энциклопеди

Билгалдаккхар: Ӏалашйинчул тӀаьхьа хийцамаш га браузеран кэш цӀанйан йезаш хила мега.

  • Firefox / Safari: Shift тӀетаӀийна йитина, гӀирсийн панелан тӀера тӀетаӀайе Карлайаккха йа Ctrl+F5 йа Ctrl+R (⌘+R Mac тӀехь)
  • Google Chrome: тӀетаӀайе Ctrl+Shift+R (⌘+Shift+R Mac тӀехь)
  • Internet Explorer / Edge: тӀетаӀийна йитина Ctrl, тӀетаӀайе Карлайаккха йа тӀетаӀайе Ctrl+F5
  • Opera: тӀетаӀайе Ctrl+F5.
function sysopDeletePage(){
 var msgDiv, oldValue, curValue, opt, quoteRegExp = /^\/\*(.*)\*\//
 var hiddenGroups = [], hiddenGroupsNames = '', btnUnhide

 var select = document.getElementById('wpDeleteReasonList')
 var reason = document.getElementById('wpReason')
 if (!select || !reason) return
 groups = select.getElementsByTagName('optgroup')

 //simplify list
 for (var i=1; i<select.length; i++){
   opt = select.options[i]
   opt.title = opt.value
   opt.text = opt.value.replace(/\[\[[^|]+\|([^\]]+)\]\]/,'$1')
 }

 if (mw.config.get('wgNamespaceNumber') == 6) return //file delete page, nothing else to do

 if (!window.opera) hideGroups()

 if (window.delPageExpandSelect) {
   expandSelect()
   select.form.scrollIntoView()
 } 

 guessReasonFromTemplate()

 addHandler(select, 'change', onReasonChange)

 //add "info" link
 var p = select.form.nextSibling
 if (p && p.className && p.className=='mw-delete-editreasons')
   p.innerHTML = '<a href="' + mw.config.get('wgArticlePath').replace('$1', 'MediaWiki_talk:Sysop.js') + '">Оцу метта башхо</a> | ' + p.innerHTML
 
 return



// *** FUNCTIONS ***

//remove groups that are not applicable; doesn't work in Opera
 function hideGroups(){
   if (mw.config.get('wgNamespaceNumber')!=0) hideGroup ('Йаззамаш')
   if (mw.config.get('wgNamespaceNumber')!=2 && mw.config.get('wgNamespaceNumber')!=3) hideGroup ('Долахь агӀонаш')
   if (mw.config.get('wgNamespaceNumber')==14) hideGroup ('Дlасхьажайарш');  else hideGroup ('Категореш')
   //create button to return removed groups
   if (!hiddenGroupsNames) return
   btnUnhide = document.createElement('input')
   btnUnhide.type = 'button';  btnUnhide.value = '*'; btnUnhide.onclick = unHideGroups
   btnUnhide.title = 'йухайерзайе къайла йахна тобанаш ' + hiddenGroupsNames  
   btnUnhide.style.cssText = 'margin-left:10px; background:inherit; height:1.2em'
   //if (!delPageExpandSelect)    select.parentNode.insertBefore(btnUnhide, select)
   select.parentNode.insertBefore(btnUnhide, select.nextSibling)
 }
 function hideGroup(name){
  for (var i=0; i<groups.length; i++)  if (groups[i].label == name) break
  if (i==groups.length) return
  hiddenGroups.push( [ groups[i].nextSibling, select.removeChild(groups[i]) ] ) 
  hiddenGroupsNames += (hiddenGroupsNames? ', ':'') + '«'+name+'»'
  //groups[i].style.display = 'none' // doesn't work in IE
 }
 function unHideGroups(){
   for (var i=hiddenGroups.length-1; i>=0; i--)
      select.insertBefore(hiddenGroups[i][1], hiddenGroups[i][0])
   btnUnhide.style.display = 'none'
   expandSelect()
 }


function guessReasonFromTemplate(){ //try to guess reason from the db- template in quote
 var delTemplates = {
 'О1': 'хlоттаделдоцу|nonsense|гlурте|nocontext',
 'О2': 'хьажарна|test',
 'О3': 'гал-верг|vand|галдаьлларгдяш-верг|vandal|attack ',
 'О4': 'йухааl|repost',
 'О5': 'куьгда|author',
 'О6': 'дийцар|talk',
 'О7': 'цlе-хийца|move|цlе-хийца|rename',
 'О8': 'кхисанна|fork',
 'С1': 'ясса|empty',
 'С2': 'кхечуматтахь|foreign',
 'С3': 'хьажорг|nocontent',
 'С5': 'дз|nn|дазалдоцаш',
 'С6': 'copyvio|цхьанах-хьаэцна',
 'П1': 'цхьанхьа-доцаш|redirect|redirnone',
 'П2': 'энаюккъараллийн|redirspace',
 'П3': 'цахууш|гlалато|redirtypo',
 'П4': 'дожар|redirflect',
 'П5': 'маьlна|redirsense',
 'К1': 'яссакад|catempty',
 'У1': 'оцуьнда|owner|self|user',
 'У2': 'anon|хlинц',
 'У3': 'йоцуаш|nouser'
}
 var ma
 if (ma=reason.value.match(/\{\{\s*(db|дх)-?([\wа-яА-Я\s]+).*\}\}/i)){
   var dbReason = '|' + ma[2].toLowerCase()
   for (var name in delTemplates)
     if (('|'+delTemplates[name]).indexOf(dbReason) != -1){
        if (setSelect(name))
          dispMsg('Шашех хаьржин '+name+' резонна кепца «' + ma[1]+'-'+ma[2]+'»', '#F4FFF4')
        break
     }
 // {ДӀаяаккха хlар|2010-03-18}
 }else if (ma=reason.value.match(/\{\{ДӀайаккха хӀара *\| *(\d\d\d\d)-(\d\d)-(\d\d)/i)){
  setReason('хилам оцу дийцар кху \[\[ВП:ДӀайаккха хӀара/'+ma[3].replace(/^0/,'')+' '
  +'январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь'
  .split('|')[parseInt(ma[2],10)-1]+' '+ma[1]
  +'#'+mw.config.get('wgPageName').replace(/_/g, ' ')+']]')
    dispMsg('Шашех хӀоттийна хьажориг кху ВП:ДХ', '#F4FFF4')
    delPageExpandSelect = false
 }else if (ma=reason.value.match(/\{\{ДӀайаккха хӀара *\| *([^\}]+) *\}\}/i)){
    setReason('хилам оцу дийцар кху \[\[Википеди:ДӀайаккха хӀара/'+ma[1]+'#'+mw.config.get('wgPageName').replace(/_/g, ' ')+']]')
    dispMsg('Шашех хӀоттийна хьажорг кху ВП:ДХ', '#F4FFF4')
    delPageExpandSelect = false
 }else if (ma=reason.value.match(/#REDIRECT ?\[\[([^\]]+:)/i)){
   var ma2 = mw.config.get('wgPageName').match(/.+:/)
   if (ma2 && ma[1]!=ma2[0])
     if (setSelect('П2'))
        dispMsg('Шашех хаьржина П2', '#F4FFF4')
 }else if ((mw.config.get('wgNamespaceNumber')==1 || mw.config.get('wgNamespaceNumber')==5)
           && (ma=document.getElementById('ca-nstab-main'))
           && (ma.getAttribute('class').indexOf('new') != -1) ){
   setSelect('О6')
   dispMsg('Шашех хаьржина О6', '#F4FFF4')
 }
}


function dispMsg(msg, color){
 if (!msgDiv){ //create DIV for messages
   msgDiv = document.createElement('div')
   msgDiv.style.cssText = 'padding:0 3px 0 3px; border:1px dotted gray; line-height:1.2em; margin-left:20px; float:right; display:none'
   var el = document.getElementById('wpConfirmB')
   if (el) el.parentNode.insertBefore(msgDiv, el)
   else select.form.appendChild(msgDiv)
 } 
 if (msg) {
   msgDiv.innerHTML = msg
   msgDiv.style.display = ''
   msgDiv.style.backgroundColor = color || ''
 }else msgDiv.style.display = 'none'
}


function onReasonChange(){
 select.style.backgroundColor = select.selectedIndex==0 ? '#F5F5F5' : ''
if (/(#ХГ|харцлер|гlолелар)/.test(select.value)){ //then remove quote
  if (oldValue) return //user selected one vand criteria after another
  var newV = reason.value
  newV = newV.replace(quoteRegExp,'')
  if (setReason(newV))  dispMsg('Шашех дlадаьлла аьллахетарг', '#FFF5F5')
}else if (oldValue && reason.value==curValue){ //return quote back
  setReason(oldValue, true)
  dispMsg()
}else
  dispMsg()
}





function expandSelect(){ //not for Opera (sometimes works in 9.27 though)
 if (!window.delPageExpandSelect) return
 var count = 1
 for (var i=0; i<groups.length; i++)
	 if (groups[i].style.display != 'none') 
		 count += groups[i].getElementsByTagName('option').length + 1
 select.size = count
}


function setSelect(name){
 for (var i=0; i<select.options.length; i++)
    if (select.options[i].value.indexOf('#'+name+'|') != -1 ){
        //messageStays = true
        select.selectedIndex = i
        onReasonChange()
        return true
    }
 return false
}

function setReason(val, forgetOld){
 if (val == reason.value) return false 
 oldValue = reason.value
 curValue = val
 reason.value = curValue
 if (reason.onupdate) reason.onupdate() //for compatibility with "summary preview" script
 if (forgetOld) oldValue = ''
 return true
}  


}

sysopDeletePage()