MediaWiki:Summary show overload.js

Материал из ЕЖЕВИКИ - EJWiki.org - Академической Вики-энциклопедии по еврейским и израильским темам
Версия от 07:52, 11 марта 2010; Mliris (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • 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.
//Показывает переполнение поля «Описание изменений».
//Поле «Описание изменений» принимает 250 латинских символов или 125 русских (каждый русский символ кодируется
//двумя байтами). Скрипт подсчитывает число символов и пишет сообщение, если размер поля был превышен.
//Сделан по аналогии со скриптом [[Участник:Js/summary.js]]

addOnloadHook(summaryPreview)
   
function summaryPreview(){
 
 var select, inputId, isEdit,  maxChars = 250, useMWPreview
 
 if (wgAction == 'edit' || wgAction == 'submit'){
   inputId = 'wpSummary'
 }else if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Movepage'){
   inputId = 'wpReason'
  }else if (wgAction == 'protect'){
   inputId = 'mwProtect-reason'
 }else return
 
 var input = document.getElementById(inputId)
 if (!input) return
 
 //create counter span
 var cnt = document.createElement('span')
 cnt.id = 'inputCounter'
 cnt.style.marginLeft = '3px'
 input.parentNode.insertBefore(cnt, input.nextSibling)
  
 update()
 //assign events
 addHandler(input, 'change', update)
 addHandler(input, 'keyup', update)
 addHandler(input, 'mouseup', update)
 useMWPreview = false
 
 function update(){
  var text = input.value, cutAt, bb

  
  var chars = text.length

  bytes = 0
  for (var i=0; i<chars; i++){
    bytes++
    bb = text.charCodeAt(i)
    if (bb > 127) { 
      bytes++
      if (bb > 2048) bytes++
    }
  }

 
  var left;
  left=maxChars-bytes;
  if (left>=0){
    //cnt.innerHTML = left;
    cnt.innerHTML = "";
  }else{
    cnt.innerHTML = "<br><font color=red>Превышена предельная длина строки описания на "+(-left)+" символов.</font>";
  }
 }  
}