MediaWiki:Editpage.js: различия между версиями
Материал из Викитаки
Перейти к навигацииПерейти к поиску
Антон (обсуждение | вклад) Новая: importScript('MediaWiki:Wikificator.js') //Toolbar buttons function StandardButtons(){ if (mwEditButtons.length < 6) return mwEditButtons[5].tagClose = '|thumb]]' } function... |
Admin (обсуждение | вклад) Нет описания правки |
||
| Строка 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 (typeof mwEditButtons === 'undefined' || mwEditButtons.length < 6) return | |||
mwEditButtons[5].tagClose = '|thumb]]' | |||
} | } | ||
function CustomButtons(){ | 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){ | 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){ | 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 | //Edit Summary buttons | ||
function SummaryButtons(){ | 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) { | 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) { | 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 | //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 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>подробнее ↗</a>)'//→ ↗ | |||
cp.style.background = '#FFD080' | |||
cp.style.border = '1px solid orange' | |||
return false | |||
}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>подробнее ↗</a>)'//→ ↗
cp.style.background = '#FFD080'
cp.style.border = '1px solid orange'
return false
}catch(e) {return true}
}
})
}); // mw.loader.using