Участник:Svetlovanton/monobook.js
Перейти к навигации
Перейти к поиску
Страница персонального оформления. JS-код ниже относится к теме оформления «MonoBook». CSS-файл для этой темы: Участник:Svetlovanton/monobook.css.
После сохранения очистите кэш браузера.
После сохранения очистите кэш браузера.
//Скрипт для преобразования ссылок в читабельный вид.
importScript('Участник:X-romix/refconv.js');
popupDelay = 1.5; // задержка на полторы секунды перед всплытием окна
popupStructure = 'fancy'; // не объединять навигационные ссылки в выпадающие списки
imagePopupsForImages = false; // не всплывать на иллюстрациях
popupMaxWidth = 400; // ширина всплывающего окна
popupMaxPreviewSentences = 10; // больше предложений в окне
popupMaxPreviewCharacters = 666;// больше символов в окне
popupPreviewFirstParOnly = false; // цитируется не только первый абзац
popupPreviewKillTemplates = false; // шаблоны показывать, пусть и сырыми
importScript('User:Lockal/recent2.js')
importScript('User:Morpheios Melas/articlecount.js')
$(function(){
var toolbar = document.getElementById('toolbar')
var copywarn = document.getElementById('editpage-copywarn')
if (!toolbar || !copywarn) return
copywarn.parentNode.insertBefore(toolbar, copywarn)
})
//Скрипт подсвечивает имя участников жирным.
importScript('Участник:X-romix/user bold.js')
//Скрипт дополняет форму поиска ссылками на поиск в гугле по различным вики-проектам.
extSearchMode = 1; //Режим просмотра: 1 - в новом окне, 0 - в текущем.
importScript('Участник:X-romix/wiki_google.js')
$(summaryPreview)
function summaryPreview(){
var select, inputId, isEdit, maxChars = 255, useMWPreview
if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit'){
inputId = 'wpSummary'
isEdit = true
maxChars = 200
}else if (mw.config.get('wgCanonicalNamespace') == 'Special' && mw.config.get('wgCanonicalSpecialPageName') == 'Movepage'){
inputId = 'wpReason'
}else if (mw.config.get('wgAction') == 'delete'){
inputId = 'wpReason'
select = document.getElementById('wpDeleteReasonList')
addHandler(select, 'change', update)
}else if (mw.config.get('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)
//create preview div
var preview = document.createElement('div')
preview.id = 'sumPreview'
preview.title = 'Предварительный просмотр описания'
with (preview.style){border = '1px solid gray'; width = '100%';
fontStyle = 'italic'; fontSize='90%'; paddingLeft = '2px'}
//add CSS
var inputStyle = addCSS('#' + inputId
+ '{' + (window.oversizedSummaryCSS ? oversizedSummaryCSS : 'background:#FFEEEE') + '}')
inputStyle.disabled = true
//attach preview div
if (isEdit){
var el = document.getElementById('wpMinoredit')
if (!el) return
el.parentNode.insertBefore(preview, el)
//hide standard preview
el = preview
while ((el=el.previousSibling) && (el.tagName != 'DIV'));
if (el && el.className == 'mw-summary-preview'){
var t = el.getElementsByTagName('span')[0].innerHTML
preview.innerHTML = t.substring(1, t.length-1) //cut ()
el.style.display = 'none'
useMWPreview = true
}else{
preview.innerHTML = ' '
}
}else{
input.form.appendChild(preview)
}
update()
//assign events
addHandler(input, 'change', update)
addHandler(input, 'keyup', update)
addHandler(input, 'mouseup', update)
useMWPreview = false
//functions
function update(){
var text = input.value, cutAt, bb
if (select && (select.selectedIndex != 0)) text = select.value + ': ' + text
var chars = text.length
//count bytes
bytes = 0
for (var i=0; i<chars; i++){
bytes++
bb = text.charCodeAt(i)
if (bb > 127) {
bytes++
if (bb > 2048) bytes++
}
if (bytes > 255) cutAt = i
}
//show bytes/chars
cnt.title = 'Used ' + chars + ' chars, ' + bytes + ' bytes'
cnt.style.opacity = chars/maxChars
var left
if (255-bytes < maxChars-chars) { left = 255-bytes; cnt.style.fontStyle = 'italic' }
else { left=maxChars-chars; cnt.style.fontStyle = 'normal'}
cnt.innerHTML = left
cnt.style.fontColor = (left < 0) ? 'red' : 'black'
cnt.style.fontWeight = (left < 20)? 'bold' : 'normal'
inputStyle.disabled = (left >= 0)
//show preview
if (useMWPreview) return
if (bytes > 255) text = text.substring(0, cutAt)
text = text.replace(/ +/g, ' ').replace(/</g,'<') //collapse multiple spaces and make safe
text = text.replace(/\/\*(.*?)\*\//g,
function(str, p){
p = p.replace(/^ */,'').replace(/ *$/,'')
return '<span class="autocomment">'
+ (isEdit ? '<a href="/wiki/'+mw.config.get('wgPageName')
+ '#' + encodeURI(p.replace(/ /g,'_')).replace(/%([0-9A-F][0-9A-F])/g, '.$1')
+ '" title="' +mw.config.get('wgPageName').replace(/_/g, ' ') + '">→</a>' + p + ' -' : p )
+ '</span>'
})
text = text.replace(/\[\[([^\]><}{|]+)\|?([^\]><]*)?\]\]/g,
function(str,p1,p2){ //[ [ p1 | p2 ] ]
return '<a href='+mw.config.get('wgServer')+'/wiki/'
+ encodeURI(p1.replace(/\?/g,'%3F').replace(/&/g,'%26'))
+' + title=\'' + p1 + '\'>' + (p2?p2:p1) + '</a>'
})
preview.innerHTML = text ? text : ' '
}
function addCSS(text){ //could use createStyleSheet for IE as well
var s = document.createElement('style')
s.setAttribute('type', 'text/css')
if (s.styleSheet) s.styleSheet.cssText = text //IE
else s.appendChild(document.createTextNode(text))
document.getElementsByTagName('head')[0].appendChild(s)
return s.sheet || s //Safari needs sheets, IE the other way
}
}