MediaWiki:Gadget-Wikify.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 wikifyButton(){
var tlb = document.getElementById('toolbar')
if (!tlb) return
var btn = document.createElement('input'); btn.type = 'button'
btn.style.cssText = 'background:#adbede; height:22px; vertical-align:middle; padding:0'
btn.value = '[[]]'; btn.title = 'Сделать все слова ссылками'
btn.onclick = wikifyButtonRun; btn.id = 'wikifyButtonID'
tlb.appendChild(btn)
if (window.es_accesskey){
btn.accessKey = es_accesskey
btn.title += ' ['+es_accesskey+']'
mw.util.updateTooltipAccessKeys([btn])
}
}
if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) $(wikifyButton)
function wikifyButtonRun(){ //main function
var localPrefix = 'ru'
var newText, linkSize, txtarea = document.editform.wpTextbox1
var isBeforeCursor = false
if (document.selection) { //IE/Opera
var scrollTop = document.documentElement.scrollTop
txtarea.focus()
range = document.selection.createRange()
if (!range.moveStart) return
if (range.text){
newText = processSelTextWikify(range.text)
}else { //no selection
if (!(rr=range.duplicate())) return
rr.moveStart('character', - 1500)
linkSize = processBeforeCursor(rr.text)
if (!linkSize) return
range.moveStart('character', - linkSize) //select matched
}
//replace text
if (newText != range.text){
range.text = newText
range.moveStart('character', - newText.length)
range.select()
}
// document.documentElement.scrollTop = scrollTop //restore window scroll position
}else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla
var scrollTop = txtarea.scrollTop, txt = txtarea.value
txtarea.focus()
var startPos = txtarea.selectionStart, endPos = txtarea.selectionEnd
if (startPos != endPos){
newText = processSelTextWikify(txt.substring(startPos, endPos))
}else{ //no selection
linkSize = processBeforeCursor(txt.substring((endPos-1500>0?endPos-1500:0), endPos))
if (!linkSize) return
startPos = endPos - linkSize //select matched
}
//replace text
if (newText != txt.substring(startPos, endPos)){
txtarea.value = txt.substring(0, startPos) + newText + txt.substring(endPos, txtarea.value.length)
txtarea.selectionEnd = startPos + newText.length
txtarea.selectionStart = startPos
}
txtarea.scrollTop = scrollTop
}
}//end of main function
function processBeforeCursor(str){//finds beginning of possible list
isBeforeCursor = true
alert("Вы должны выделить текст")
return(false)
//var pos = str.lastIndexOf('http://')
}
function processSelTextWikify(txt){
txt = txt.replace(/([-ёЁa-zа-яáćéíóśúýǿàèìòùâĉêĝĥîĵôŝûäëïöüÿãñõåůāēīōūőűøçǫşčěřšžŭłľťßæœðþα-ωἈἉἌἊἀἁἄἂἆἅἃἇὲἐἑἔἒἕἓὴῆἠἡἤἢἦἥἣἧϊΐὶῖἰἱὀὁὄὔὅὕὠὡὤᾤὥᾥϝϻϙϡϛϸϜϺϘϠϚϷ]+)(?!\\])/ig, '[[$1]]')
return txt
}