MediaWiki:Editpage.js: различия между версиями

Материал из Викитаки
Перейти к навигацииПерейти к поиску
Новая: importScript('MediaWiki:Wikificator.js') //Toolbar buttons function StandardButtons(){ if (mwEditButtons.length < 6) return mwEditButtons[5].tagClose = '|thumb]]' } function...
 
Нет описания правки
 
Строка 1: Строка 1:
mw.loader.using(['mediawiki.util'], function () {
// --- Compatibility shim (same as Common.js) ---
var wgNamespaceNumber = mw.config.get('wgNamespaceNumber'),
    wgTitle          = mw.config.get('wgTitle'),
    wgArticlePath    = mw.config.get('wgArticlePath'),
    wgUserGroups      = mw.config.get('wgUserGroups'),
    wgScript          = mw.config.get('wgScript');
function addOnloadHook(fn) { $(fn); }
function importScript(page) {
    mw.loader.load(wgScript + '?title=' + encodeURIComponent(page.replace(/ /g, '_')) + '&action=raw&ctype=text/javascript');
}
// --- end shim ---
importScript('MediaWiki:Wikificator.js')
importScript('MediaWiki:Wikificator.js')
 
 
//Toolbar buttons
//Toolbar buttons — old "classic" toolbar API (mwEditButtons/mwCustomEditButtons) was
//removed in MediaWiki 1.18. Guarded so nothing throws when the API isn't present.
 
function StandardButtons(){
function StandardButtons(){
if (mwEditButtons.length < 6) return
    if (typeof mwEditButtons === 'undefined' || mwEditButtons.length < 6) return
mwEditButtons[5].tagClose = '|thumb]]'
    mwEditButtons[5].tagClose = '|thumb]]'
}  
}
 
 
function CustomButtons(){
function CustomButtons(){
var u = 'http://upload.wikimedia.org/'
    if (typeof mwCustomEditButtons === 'undefined') return
addCustomButton(u+'wikipedia/ru/1/1d/Button_redirect_rus.png', 'Перенаправление','#REDIRECT [[',']]','название страницы')
    var u = 'https://upload.wikimedia.org/'
addCustomButton(u+'wikisource/ru/a/a6/Button-cat.png','Категория','[\[Категория:',']]\n','')
    addCustomButton(u+'wikipedia/ru/1/1d/Button_redirect_rus.png', 'Перенаправление','#REDIRECT [[',']]','название страницы')
addCustomButton(u+'wikipedia/en/3/34/Button_hide_comment.png', 'Комментарий', '<!-- ', ' -->', 'Комментарий')
    addCustomButton(u+'wikisource/ru/a/a6/Button-cat.png','Категория','[\[Категория:',']]\n','')
addCustomButton(u+'wikipedia/en/f/fd/Button_blockquote.png', 'Развёрнутая цитата', '<blockquote>\n', '\n</blockquote>', 'Развёрнутая цитата одним абзацем')
    addCustomButton(u+'wikipedia/en/3/34/Button_hide_comment.png', 'Комментарий', '<!-- ', ' -->', 'Комментарий')
addCustomButton(u+'wikipedia/en/6/60/Button_insert_table.png',
    addCustomButton(u+'wikipedia/en/f/fd/Button_blockquote.png', 'Развёрнутая цитата', '<blockquote>\n', '\n</blockquote>', 'Развёрнутая цитата одним абзацем')
'Вставить таблицу', '{| class="wikitable"\n|', '\n|}', '-\n! заголовок 1\n! заголовок 2\n! заголовок 3\n|-\n| строка 1, ячейка 1\n| строка 1, ячейка 2\n| строка 1, ячейка 3\n|-\n| строка 2, ячейка 1\n| строка 2, ячейка 2\n| строка 2, ячейка 3')
    addCustomButton(u+'wikipedia/en/6/60/Button_insert_table.png',
addCustomButton(u+'wikipedia/commons/7/79/Button_reflink.png','Сноска','<ref>','</ref>','')
        'Вставить таблицу', '{| class="wikitable"\n|', '\n|}', '-\n! заголовок 1\n! заголовок 2\n! заголовок 3\n|-\n| строка 1, ячейка 1\n| строка 1, ячейка 2\n| строка 1, ячейка 3\n|-\n| строка 2, ячейка 1\n| строка 2, ячейка 2\n| строка 2, ячейка 3')
addFuncButton(u+'wikisource/ru/d/d1/Button-wikifikator.png', 'Викификатор', function(){Wikify()})
    addCustomButton(u+'wikipedia/commons/7/79/Button_reflink.png','Сноска','<ref>','</ref>','')
    addFuncButton(u+'wikisource/ru/d/d1/Button-wikifikator.png', 'Викификатор', function(){ if (typeof Wikify === 'function') Wikify() })
}
}
 
function addCustomButton(img, tip, open, close, sample){
function addCustomButton(img, tip, open, close, sample){
mwCustomEditButtons[mwCustomEditButtons.length] =
    if (typeof mwCustomEditButtons === 'undefined') return
  {'imageFile':img, 'speedTip':tip, 'tagOpen':open, 'tagClose':close, 'sampleText':sample}
    mwCustomEditButtons[mwCustomEditButtons.length] =
        {'imageFile':img, 'speedTip':tip, 'tagOpen':open, 'tagClose':close, 'sampleText':sample}
}
}
 
 
function addFuncButton(img, tip, func){
function addFuncButton(img, tip, func){
var toolbar = document.getElementById('toolbar')
    var toolbar = document.getElementById('toolbar')
if (!toolbar) return
    if (!toolbar) return
var i = document.createElement('img')
    var i = document.createElement('img')
i.src = img
    i.src = img
i.alt = tip;  i.title = tip
    i.alt = tip;  i.title = tip
i.onclick = func
    i.onclick = func
i.style.cursor = 'pointer'
    i.style.cursor = 'pointer'
toolbar.appendChild(i)
    toolbar.appendChild(i)
}
}
 
 
//Edit Summary buttons  
//Edit Summary buttons
 
function SummaryButtons(){
function SummaryButtons(){
var wpSummary = document.getElementById('wpSummary')
    var wpSummary = document.getElementById('wpSummary')
if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return
    if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return
wpSummaryBtn = document.createElement('span') //global var
    window.wpSummaryBtn = document.createElement('span')
wpSummaryBtn.id = 'userSummaryButtonsA'
    wpSummaryBtn.id = 'userSummaryButtonsA'
wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling)
    wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling)
wpSummary.parentNode.insertBefore(document.createElement('br'), wpSummary.nextSibling)
    wpSummary.parentNode.insertBefore(document.createElement('br'), wpSummary.nextSibling)
addSumButton('викиф.', 'викификация', 'Произведена викификация')
    addSumButton('викиф.', 'викификация', 'Произведена викификация')
addSumButton('оформл.', 'оформление', 'Улучшено оформление')
    addSumButton('оформл.', 'оформление', 'Улучшено оформление')
addSumButton('стиль', 'стилевые правки', 'Поправлен стиль изложения')
    addSumButton('стиль', 'стилевые правки', 'Поправлен стиль изложения')
addSumButton('орфогр.', 'орфография', 'Поправлена орфография')
    addSumButton('орфогр.', 'орфография', 'Поправлена орфография')
addSumButton('пункт.', 'пунктуация', 'Изменена пунктуация')
    addSumButton('пункт.', 'пунктуация', 'Изменена пунктуация')
addSumButton('интервики', 'интервики', 'Исправлены межъязыковые ссылки (интервики)')
    addSumButton('интервики', 'интервики', 'Исправлены межъязыковые ссылки (интервики)')
addSumButton('кат.', 'категория', 'Исправлена категоризация')
    addSumButton('кат.', 'категория', 'Исправлена категоризация')
addSumButton('шаб.', 'шаблон', 'Добавлен / изменён шаблон')
    addSumButton('шаб.', 'шаблон', 'Добавлен / изменён шаблон')
addSumButton('к удал.', 'к удалению', 'Страница предложена к удалению')
    addSumButton('к удал.', 'к удалению', 'Страница предложена к удалению')
addSumButton('доп.', 'дополнение', 'Добавлены новые сведения')
    addSumButton('доп.', 'дополнение', 'Добавлены новые сведения')
addSumButton('иллюстрация', 'иллюстрация', 'Размещена иллюстрация')
    addSumButton('иллюстрация', 'иллюстрация', 'Размещена иллюстрация')
addSumButton('обнов.', 'обновление данных', 'Обновлены устаревшие данные')
    addSumButton('обнов.', 'обновление данных', 'Обновлены устаревшие данные')
}
}
 
function addSumButton(name, text, title) {
function addSumButton(name, text, title) {
var btn = document.createElement('a')
    var btn = document.createElement('a')
btn.appendChild(document.createTextNode(name))
    btn.appendChild(document.createTextNode(name))
btn.title = title
    btn.title = title
btn.onclick = function(){insertSummary(text)}
    btn.onclick = function(){insertSummary(text)}
wpSummaryBtn.appendChild(btn)
    wpSummaryBtn.appendChild(btn)
}
}
 
function insertSummary(text) {
function insertSummary(text) {
var wpSummary = document.getElementById('wpSummary')
    var wpSummary = document.getElementById('wpSummary')
if (wpSummary.value.indexOf(text) != -1) return  
    if (wpSummary.value.indexOf(text) != -1) return
if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ','
    if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ','
if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' '
    if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' '
wpSummary.value += text
    wpSummary.value += text
}
}
window.insertSummary = insertSummary
 
 
//call functions
//call functions
addOnloadHook(StandardButtons)
addOnloadHook(StandardButtons)
addOnloadHook(CustomButtons)
addOnloadHook(CustomButtons)
addOnloadHook(SummaryButtons)
addOnloadHook(SummaryButtons)
 
 
//sig reminder
//sig reminder
if (wgNamespaceNumber % 2 || wgNamespaceNumber==4)
if (wgNamespaceNumber % 2 || wgNamespaceNumber==4)
addOnloadHook(function (){
    addOnloadHook(function (){
var cp = document.getElementById('editpage-copywarn')
        var cp = document.getElementById('editpage-copywarn')
var wpSave = document.getElementById('wpSave')
        var wpSave = document.getElementById('wpSave')
if (!cp || !wpSave) return
        if (!cp || !wpSave) return
if (wgNamespaceNumber == 4 &&  
        if (wgNamespaceNumber == 4 &&
  (!wgTitle.match('^(Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на .*/|Запросы.|Кандидаты в .*/|К (удалению|объединению|переименованию|разделению|улучшению)/|Проверка участников/)') || wgTitle.match ('/Архив'))) return
            (!wgTitle.match('^(Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на .*/|Запросы.|Кандидаты в .*/|К (удалению|объединению|переименованию|разделению|улучшению)/|Проверка участников/)') || wgTitle.match ('/Архив'))) return
var ins = ' <a href=\'javascript:insertTags(" ~~\~~\","","")\'>~~\~~</a>'
        var ins = ' <a href=\'javascript:insertTags(" ~~\~~\","","")\'>~~\~~</a>'
cp.innerHTML = 'Не забудьте добавить к вашему сообщению подпись с помощью' + ins
        cp.innerHTML = 'Не забудьте добавить к вашему сообщению подпись с помощью' + ins
cp.style.padding = '2px'
        cp.style.padding = '2px'
cp.style.background = '#F7F7F7'
        cp.style.background = '#F7F7F7'
cp.style.border = '1px solid gray'
        cp.style.border = '1px solid gray'
if (wgUserGroups && wgUserGroups.join().indexOf('autoconfirmed') != -1 && !window.sigWarning) return
        if (wgUserGroups && wgUserGroups.join().indexOf('autoconfirmed') != -1 && !window.sigWarning) return
//unreg/new users only
        //unreg/new users only
var warningDone = false
        var warningDone = false
wpSave.onclick = function(){
        wpSave.onclick = function(){
  try{  
            try{
    if (warningDone || document.editform.wpTextbox1.value.indexOf('~~\~~') >= 0 ) return true
                if (warningDone || document.editform.wpTextbox1.value.indexOf('~~\~~') >= 0 ) return true
    warningDone = true
                warningDone = true
    cp.innerHTML = 'Пожалуйста, <b>подпишитесь</b>, добавив  в конце своего сообщения' + ins
                cp.innerHTML = 'Пожалуйста, <b>подпишитесь</b>, добавив  в конце своего сообщения' + ins
    + ' (<a href="' + wgArticlePath.replace(/\$1/, 'Википедия:Подписывайтесь')
                    + ' (<a href="' + wgArticlePath.replace(/\$1/, 'Википедия:Подписывайтесь')
    + '" title="(ссылка откроется в новом окне)" target=_blank>подробнее&nbsp;↗</a>)'//→ ↗
                    + '" title="(ссылка откроется в новом окне)" target=_blank>подробнее&nbsp;↗</a>)'//→ ↗
    cp.style.background = '#FFD080'
                cp.style.background = '#FFD080'
    cp.style.border = '1px solid orange'
                cp.style.border = '1px solid orange'
    return false
                return false
  }catch(e) {return true}
            }catch(e) {return true}
}
        }
})
    })
 
}); // mw.loader.using

Текущая версия от 16:49, 24 апреля 2026

mw.loader.using(['mediawiki.util'], function () {

// --- Compatibility shim (same as Common.js) ---
var wgNamespaceNumber = mw.config.get('wgNamespaceNumber'),
    wgTitle           = mw.config.get('wgTitle'),
    wgArticlePath     = mw.config.get('wgArticlePath'),
    wgUserGroups      = mw.config.get('wgUserGroups'),
    wgScript          = mw.config.get('wgScript');

function addOnloadHook(fn) { $(fn); }
function importScript(page) {
    mw.loader.load(wgScript + '?title=' + encodeURIComponent(page.replace(/ /g, '_')) + '&action=raw&ctype=text/javascript');
}
// --- end shim ---

importScript('MediaWiki:Wikificator.js')


//Toolbar buttons — old "classic" toolbar API (mwEditButtons/mwCustomEditButtons) was
//removed in MediaWiki 1.18. Guarded so nothing throws when the API isn't present.

function StandardButtons(){
    if (typeof mwEditButtons === 'undefined' || mwEditButtons.length < 6) return
    mwEditButtons[5].tagClose = '|thumb]]'
}


function CustomButtons(){
    if (typeof mwCustomEditButtons === 'undefined') return
    var u = 'https://upload.wikimedia.org/'
    addCustomButton(u+'wikipedia/ru/1/1d/Button_redirect_rus.png', 'Перенаправление','#REDIRECT [[',']]','название страницы')
    addCustomButton(u+'wikisource/ru/a/a6/Button-cat.png','Категория','[\[Категория:',']]\n','')
    addCustomButton(u+'wikipedia/en/3/34/Button_hide_comment.png', 'Комментарий', '<!-- ', ' -->', 'Комментарий')
    addCustomButton(u+'wikipedia/en/f/fd/Button_blockquote.png', 'Развёрнутая цитата', '<blockquote>\n', '\n</blockquote>', 'Развёрнутая цитата одним абзацем')
    addCustomButton(u+'wikipedia/en/6/60/Button_insert_table.png',
        'Вставить таблицу', '{| class="wikitable"\n|', '\n|}', '-\n! заголовок 1\n! заголовок 2\n! заголовок 3\n|-\n| строка 1, ячейка 1\n| строка 1, ячейка 2\n| строка 1, ячейка 3\n|-\n| строка 2, ячейка 1\n| строка 2, ячейка 2\n| строка 2, ячейка 3')
    addCustomButton(u+'wikipedia/commons/7/79/Button_reflink.png','Сноска','<ref>','</ref>','')
    addFuncButton(u+'wikisource/ru/d/d1/Button-wikifikator.png', 'Викификатор', function(){ if (typeof Wikify === 'function') Wikify() })
}

function addCustomButton(img, tip, open, close, sample){
    if (typeof mwCustomEditButtons === 'undefined') return
    mwCustomEditButtons[mwCustomEditButtons.length] =
        {'imageFile':img, 'speedTip':tip, 'tagOpen':open, 'tagClose':close, 'sampleText':sample}
}


function addFuncButton(img, tip, func){
    var toolbar = document.getElementById('toolbar')
    if (!toolbar) return
    var i = document.createElement('img')
    i.src = img
    i.alt = tip;  i.title = tip
    i.onclick = func
    i.style.cursor = 'pointer'
    toolbar.appendChild(i)
}


//Edit Summary buttons

function SummaryButtons(){
    var wpSummary = document.getElementById('wpSummary')
    if (!wpSummary || (wpSummary.form.wpSection && wpSummary.form.wpSection.value == 'new')) return
    window.wpSummaryBtn = document.createElement('span')
    wpSummaryBtn.id = 'userSummaryButtonsA'
    wpSummary.parentNode.insertBefore(wpSummaryBtn, wpSummary.nextSibling)
    wpSummary.parentNode.insertBefore(document.createElement('br'), wpSummary.nextSibling)
    addSumButton('викиф.', 'викификация', 'Произведена викификация')
    addSumButton('оформл.', 'оформление', 'Улучшено оформление')
    addSumButton('стиль', 'стилевые правки', 'Поправлен стиль изложения')
    addSumButton('орфогр.', 'орфография', 'Поправлена орфография')
    addSumButton('пункт.', 'пунктуация', 'Изменена пунктуация')
    addSumButton('интервики', 'интервики', 'Исправлены межъязыковые ссылки (интервики)')
    addSumButton('кат.', 'категория', 'Исправлена категоризация')
    addSumButton('шаб.', 'шаблон', 'Добавлен / изменён шаблон')
    addSumButton('к удал.', 'к удалению', 'Страница предложена к удалению')
    addSumButton('доп.', 'дополнение', 'Добавлены новые сведения')
    addSumButton('иллюстрация', 'иллюстрация', 'Размещена иллюстрация')
    addSumButton('обнов.', 'обновление данных', 'Обновлены устаревшие данные')
}

function addSumButton(name, text, title) {
    var btn = document.createElement('a')
    btn.appendChild(document.createTextNode(name))
    btn.title = title
    btn.onclick = function(){insertSummary(text)}
    wpSummaryBtn.appendChild(btn)
}

function insertSummary(text) {
    var wpSummary = document.getElementById('wpSummary')
    if (wpSummary.value.indexOf(text) != -1) return
    if (wpSummary.value.match(/[^,; \/]$/)) wpSummary.value += ','
    if (wpSummary.value.match(/[^ ]$/)) wpSummary.value += ' '
    wpSummary.value += text
}
window.insertSummary = insertSummary


//call functions
addOnloadHook(StandardButtons)
addOnloadHook(CustomButtons)
addOnloadHook(SummaryButtons)


//sig reminder
if (wgNamespaceNumber % 2 || wgNamespaceNumber==4)
    addOnloadHook(function (){
        var cp = document.getElementById('editpage-copywarn')
        var wpSave = document.getElementById('wpSave')
        if (!cp || !wpSave) return
        if (wgNamespaceNumber == 4 &&
            (!wgTitle.match('^(Форум[/ ]|Голосования/|Опросы/|Обсуждение правил/|Заявки на .*/|Запросы.|Кандидаты в .*/|К (удалению|объединению|переименованию|разделению|улучшению)/|Проверка участников/)') || wgTitle.match ('/Архив'))) return
        var ins = ' <a href=\'javascript:insertTags(" ~~\~~\","","")\'>~~\~~</a>'
        cp.innerHTML = 'Не забудьте добавить к вашему сообщению подпись с помощью' + ins
        cp.style.padding = '2px'
        cp.style.background = '#F7F7F7'
        cp.style.border = '1px solid gray'
        if (wgUserGroups && wgUserGroups.join().indexOf('autoconfirmed') != -1 && !window.sigWarning) return
        //unreg/new users only
        var warningDone = false
        wpSave.onclick = function(){
            try{
                if (warningDone || document.editform.wpTextbox1.value.indexOf('~~\~~') >= 0 ) return true
                warningDone = true
                cp.innerHTML = 'Пожалуйста, <b>подпишитесь</b>, добавив  в конце своего сообщения' + ins
                    + ' (<a href="' + wgArticlePath.replace(/\$1/, 'Википедия:Подписывайтесь')
                    + '" title="(ссылка откроется в новом окне)" target=_blank>подробнее&nbsp;↗</a>)'//→ ↗
                cp.style.background = '#FFD080'
                cp.style.border = '1px solid orange'
                return false
            }catch(e) {return true}
        }
    })

}); // mw.loader.using