MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Karaby (обсуждение | вклад) Нет описания правки |
Karaby (обсуждение | вклад) Нет описания правки |
||
Строка 41: | Строка 41: | ||
.click( func ); | .click( func ); | ||
} | } | ||
runAsEarlyAsPossible( function () { | |||
// Автоматическое заполнение полей при добавлении новых тем сверху | |||
var summary = $( '#wpSummary' ).val(); | |||
if ( decodeURIComponent( location.search ).search( /[?&]summary=\/\*[+ ]*\*\// ) !== -1 || | |||
( mw.config.get( 'wgAction' ) === 'submit' && | |||
summary !== undefined && | |||
summary.search( /\/\*\s*\*\// ) !== -1 | |||
) | |||
) { | |||
mw.loader.load( 'ext.gadget.newTopicOnTop' ); | |||
} | |||
}, $( '#wpSummary' ), mw.hook( 'wikipage.content' ).add ); | |||
console.log ('RUNNING MediaWiki:Gadget-common-action-edit.js'); | |||
// Секция гаджетов в панели инструментов | |||
if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) { | |||
var gadgetToolbarLocation = '#wikiEditor-section-main'; | |||
$.when( | |||
mw.loader.using( 'ext.wikiEditor' ), | |||
$.ready | |||
).then( function() { | |||
function addGadgetsGroup() { | |||
gadgetToolbar(); | |||
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { | |||
'section': 'main', | |||
'groups': { | |||
'gadgets': {} | |||
} | |||
} ); | |||
var $groupGadgets = $( '#wikiEditor-section-main .group-gadgets' ), | |||
$groupFormat = $( '#wikiEditor-section-main .group-format' ); | |||
if ( $groupGadgets.length && $groupFormat.length ) { | |||
$groupGadgets.insertBefore( $groupFormat ); | |||
} | |||
if ( $groupGadgets.length ) { | |||
mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).fire(); | |||
} | |||
} | |||
addGadgetsGroup(); | |||
if ( !$( '#wikiEditor-section-main .group-gadgets' ).length ) { | |||
// Лечение для случаев, когда панель инструментов поздно прорисовывается | |||
setTimeout( addGadgetsGroup, 0 ); | |||
} | |||
} ); | |||
} else if ( mw.user.options.get( 'showtoolbar' ) === 1 ) { | |||
var gadgetToolbarLocation = '#toolbar'; | |||
console.log ('CP 01'); | |||
importScript( 'MediaWiki:ToolbarOld.js' ); | |||
} else { | |||
var gadgetToolbarLocation = '#editform'; | |||
console.log ('CP 02'); | |||
importScript( 'MediaWiki:ToolbarNone.js' ); | |||
} | |||
function gadgetToolbar() { | |||
if ( !$( '#gadget-toolbar' ).length ) { | |||
var $where = $( gadgetToolbarLocation ); | |||
if ( !$where.length ) return; // Новая панель инструментов ещё не готова | |||
$( '<div>' ) | |||
.attr('id', 'gadget-toolbar' ) | |||
.prependTo( $where ); | |||
} | |||
} | |||
if ( mw.user.options.get( 'usebetatoolbar' ) !== 1 ) { | |||
$( function() { | |||
gadgetToolbar(); | |||
setTimeout( gadgetToolbar, 2000 ); | |||
setTimeout( gadgetToolbar, 6000 ); | |||
} ); | |||
} | |||
// Напоминание о подписи | |||
////// Удалено ///////// | |||
/* * * * * * * * * * Ajax functions * * * * * * * * * */ | /* * * * * * * * * * Ajax functions * * * * * * * * * */ |
Версия от 11:29, 9 июня 2018
/**
* Локальная функция загрузки скриптов с поддержкой указания проекта
*/
var importScript_ = importScript;
/*importScript = function ( page, proj ) {
if ( !proj ) {
importScript_( page );
} else {
if ( proj.indexOf( '.' ) === -1 ) {
proj += '.wikipedia.org';
}
mw.loader.using( 'mediawiki.util' ).done( function () {
mw.loader.load( '//' + proj + '/w/index.php?title=' + mw.util.wikiUrlencode( page ) +
'&action=raw&ctype=text/javascript' );
} );
}
};
*/
importScript = function ( page ) {
mw.loader.using( 'mediawiki.util' ).done( function () {
mw.loader.load( '/w/index.php?title=' + mw.util.wikiUrlencode( page ) + '&action=raw&ctype=text/javascript' );
} );
}
importMW = function ( name ) {importScript( 'MediaWiki:' + name + '.js' );};
console.log ('COMMON.JS importscript');
mw.config.set( 'tableSorterCollation', { 'Ё': 'Е', 'ё': 'е' } );
mw.loader.load( 'ext.gadget.wikificator' );
importMW('Gadget-wikificator');
importMW('Wikificator-old');
function wgImg( img ) {
return '//upload.wikimedia.org/wikipedia/' + img;
}
function createFuncBtn( id, func, img, tip ) {
$( '<img id="' + id + '" src="' + wgImg( img ) + '" style="cursor:pointer;" ' +
'title="' + tip + '" alt="' + tip.substr( 0, 3 ) + '">' )
.appendTo( '#gadget-toolbar' )
.click( func );
}
runAsEarlyAsPossible( function () {
// Автоматическое заполнение полей при добавлении новых тем сверху
var summary = $( '#wpSummary' ).val();
if ( decodeURIComponent( location.search ).search( /[?&]summary=\/\*[+ ]*\*\// ) !== -1 ||
( mw.config.get( 'wgAction' ) === 'submit' &&
summary !== undefined &&
summary.search( /\/\*\s*\*\// ) !== -1
)
) {
mw.loader.load( 'ext.gadget.newTopicOnTop' );
}
}, $( '#wpSummary' ), mw.hook( 'wikipage.content' ).add );
console.log ('RUNNING MediaWiki:Gadget-common-action-edit.js');
// Секция гаджетов в панели инструментов
if ( mw.user.options.get( 'usebetatoolbar' ) === 1 ) {
var gadgetToolbarLocation = '#wikiEditor-section-main';
$.when(
mw.loader.using( 'ext.wikiEditor' ),
$.ready
).then( function() {
function addGadgetsGroup() {
gadgetToolbar();
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'groups': {
'gadgets': {}
}
} );
var $groupGadgets = $( '#wikiEditor-section-main .group-gadgets' ),
$groupFormat = $( '#wikiEditor-section-main .group-format' );
if ( $groupGadgets.length && $groupFormat.length ) {
$groupGadgets.insertBefore( $groupFormat );
}
if ( $groupGadgets.length ) {
mw.hook( 'wikieditor.toolbar.gadgetsgroup' ).fire();
}
}
addGadgetsGroup();
if ( !$( '#wikiEditor-section-main .group-gadgets' ).length ) {
// Лечение для случаев, когда панель инструментов поздно прорисовывается
setTimeout( addGadgetsGroup, 0 );
}
} );
} else if ( mw.user.options.get( 'showtoolbar' ) === 1 ) {
var gadgetToolbarLocation = '#toolbar';
console.log ('CP 01');
importScript( 'MediaWiki:ToolbarOld.js' );
} else {
var gadgetToolbarLocation = '#editform';
console.log ('CP 02');
importScript( 'MediaWiki:ToolbarNone.js' );
}
function gadgetToolbar() {
if ( !$( '#gadget-toolbar' ).length ) {
var $where = $( gadgetToolbarLocation );
if ( !$where.length ) return; // Новая панель инструментов ещё не готова
$( '<div>' )
.attr('id', 'gadget-toolbar' )
.prependTo( $where );
}
}
if ( mw.user.options.get( 'usebetatoolbar' ) !== 1 ) {
$( function() {
gadgetToolbar();
setTimeout( gadgetToolbar, 2000 );
setTimeout( gadgetToolbar, 6000 );
} );
}
// Напоминание о подписи
////// Удалено /////////
/* * * * * * * * * * Ajax functions * * * * * * * * * */
var prevReq;
var pageUrlTpl = mw.config.get('wgScript') + "?title=$1&action=raw&templates=expand";
var pageUrl = "";
var pageToFetch = "";
/**
* Compatibility wrapper for creating a new XMLHttpRequest object.
*/
function createXhr() {
// debug( 'sajax_init_object() called..' );
var a;
try {
// Try the new style before ActiveX so we don't
// unnecessarily trigger warnings in IE 7 when
// set to prompt about ActiveX usage
a = new XMLHttpRequest();
} catch ( xhrE ) {
try {
a = new window.ActiveXObject( 'Msxml2.XMLHTTP' );
} catch ( msXmlE ) {
try {
a = new window.ActiveXObject( 'Microsoft.XMLHTTP' );
} catch ( msXhrE ) {
a = null;
}
}
}
if ( !a ) {
debug( 'Could not create connection object.' );
}
return a;
}
function loadPage(page) {
//deprecated prevReq = sajax_init_object();
prevReq = createXhr();
if ( !prevReq ) return false;
pageToFetch = page;
pageUrl = pageUrlTpl.replace(/\$1/, encodeURI(page));
showLoadIndicator();
prevReq.onreadystatechange = insertIntoWikiTextFromRequest;
prevReq.open("GET", pageUrl, true);
prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
prevReq.send(null);
return true;
}
function insertIntoWikiTextFromRequest() {
if ( prevReq.readyState != 4 ) {
return;
}
hideLoadIndicator();
if ( prevReq.status != 200 ) {
window.alert(/*gLang.msg(*/"et-ajaxerror", prevReq.status, prevReq.statusText,
pageToFetch, pageUrl/*)*/);
return;
}
insertIntoWikiText(prevReq.responseText);
}
function insertIntoWikiText(content) {
// delete text marked for no inclusion + <pre> and <nowiki>
var re = /<!--noinclude-->.*<!--\/noinclude-->|<\/?pre>|<\/?nowiki>/g;
content = content.replace(re, "");
// replace escaped tags
var specials = ["pre", "nowiki"];
for (var i in specials) {
re = new RegExp("\\[(\/?)"+ specials[i] +"\\]", "g");
content = content.replace(re, "<$1"+ specials[i] +">");
}
// we can have >>|sample text|<< or >>|<< or just simple text
var parts = null;
var left, right, def = "";
content = escapeNl(content);
if ( ( parts = content.match(/(.*)>>\|(.*)\|<<(.*)/) ) ) {
left = parts[1];
def = parts[2];
right = parts[3];
} else { // no sample text: split at caret’s position
parts = content.split(">>|<<");
left = parts[0];
delete(parts[0]);
right = parts.join("");
}
insertTags(unescapeNl(left), unescapeNl(right), unescapeNl(def));
}
function escapeNl(s) { return s.replace(/\n/g, "\x01"); }
function unescapeNl(s) { return s.replace(/\x01/g, "\n"); }
var loadIndicator;
function showLoadIndicator() {
if ( loadIndicator ) {
loadIndicator.style.display = "block";
return;
}
loadIndicator = document.createElement("div");
loadIndicator.id = "loadIndicator";
loadIndicator.appendChild( document.createTextNode(/*gLang.msg(*/"et-tplloading"/*)*/) );
document.getElementsByTagName("body")[0].appendChild(loadIndicator);
}
function hideLoadIndicator() {
if (loadIndicator) loadIndicator.style.display = "none";
}
var customizeToolbar = function() {
$('#wpTextbox1').wikiEditor('addToToolbar', {
section: 'advanced',
group: 'format',
tools: {
"strikethrough": {
label: 'Зачеркнуть',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/f/f9/Toolbaricon_regular_S_stroke.png',
action: {
type: 'encapsulate',
options: {
pre: "<s>",
post: "</s>"
}
}
}
}
});
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'advanced',
group: 'format',
tools: {
"hline": {
label: 'Горизонт. линия',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/b/b4/Toolbaricon_rule.png',
action: {
type: 'encapsulate',
options: {
pre: "----",
ownline: true
}
}
}
}
} );
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'advanced',
group: 'format',
tools: {
"comment": {
label: 'Комментарий',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/1/11/Toolbaricon_hiddencomment.png',
action: {
type: 'encapsulate',
options: {
pre: "<!-- ",
post: " -->"
}
}
}
}
} );
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'advanced',
group: 'format',
tools: {
"math": {
label: 'Математика',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/3/38/Button_Math.png',
action: {
type: 'encapsulate',
options: {
pre: "<math>",
post: "</math>"
}
}
}
}
} );
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'groups': {
'blanks': {
'label': '' // or use labelMsg for a localized label, see above
}
}
} );
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'group': 'blanks',
'tools': {
'blank-page':{
'label':'Заготовка статьи',
'type':'select',
'list':{
'blank-page-5':{
'label':'Газета',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодическое_издание/Газета");}
}
},
'blank-page-4':{
'label':'Журнал',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодическое_издание/Журнал");}
}
},
'blank-page-3':{
'label':'Периодическое издание (общее)',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодическое_издание");}
}
},
'blank-page-4':{
'label':'Журнал',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодическое_издание/Журнал");}
}
},
'blank-page-6':{
'label':'Библиография периодики',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодическое_издание/Библиография");}
}
},
'blank-page-1':{
'label':'Исполнитель аудиокниг',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Исполнитель");}
}
}
}
},
'blank-card':{
'label':'Заготовка карточки',
'type':'select',
'list':{
'blank-page-1':{
'label':'Персона',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Персона");}
}
},
'blank-page-2':{
'label':'Периодич. издание',
'action':{
'type':'callback',
execute: function(context){loadPage("MediaWiki:Common.js/Edit_tools_data/Периодика");}
}
}
}
},
'blank-ins': {
'label': 'Доп. форматирование', // or use labelMsg for a localized label, see above
'type': 'select',
'list': {
'blank-ins-1' : { // Вставить новую пустую категорию
'label': 'Категория',
'action': {
'type': 'encapsulate',
'options': {
'pre': '[[Категория:',
'peri': '', // <== сюда курсор (текущее выделение)
'post': ']]',
}
}
},
'blank-ins-7' : { // форматирование года издания периодики
'label': 'Год периодики',
'action': {
'type': 'encapsulate',
'options': {
'pre': '\n{{Год периодики|',
'peri': 'Год',
'post': '|f}}',
}
}
},
'blank-ins-6' : { // форматирование ссылки на изображение
'label': 'Изображение',
'action': {
'type': 'encapsulate',
'options': {
'pre': '',
'peri': 'Файл с изображением',
'post': '',
'regex': /^: ?\[\[(File|Файл):(.*?)\]\]$/,
'regexReplace': " [ [[:Файл:$2|Изображение]] ] ",
// : [[Файл:ClipCapIt-171104-215641.PNG]]
// :[[File:ClipCapIt-171105-212715.PNG]]
}
}
},
'blank-ins-3' : { // Вставить includeonly
'label': 'includeonly',
'action': {
'type': 'encapsulate',
'options': {
'pre': '<includeonly>',
'peri': '', // <== сюда курсор (текущее выделение)
'post': '</includeonly>',
}
}
},
'blank-ins-4' : { // Вставить noinclude
'label': 'noinclude',
'action': {
'type': 'encapsulate',
'options': {
'pre': '<noinclude>',
'peri': '', // <== сюда курсор (текущее выделение)
'post': '</noinclude>',
}
}
},
'blank-ins-5' : { // Вставить ссылку на статью в Web
'label': 'Ссылка на статью в Web',
'action': {
'type': 'encapsulate',
'options': {
'pre': '<ref>{{cite web| url =',
'peri': 'url', // <== сюда курсор (текущее выделение)
'post': ' | title = [Заголовок статьи]}}</ref>',
}
}
},
'blank-ins-2' : { // шаблон Автор статьи
'label': 'Подпись',
'action': {
'type': 'encapsulate',
'options': {
'pre': '{{автор статьи|',
'peri': 'Автор и дата',
'post': '}}',
'regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,
'regexReplace': "$1===$3===$4",
// 'ownline': true // новая строка
}
}
}
}
}
}
} );
};
////////////////////////////////////////
/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
/*
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
mw.loader.using( 'user.options' ).then( function () {
// This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
if ( mw.user.options.get( 'usebetatoolbar' ) == 1 ) {
$.when(
mw.loader.using( 'ext.wikiEditor.toolbar' ), $.ready
).then( customizeToolbar );
}
} );
}
*/
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.using( 'user.options', function () {
if ( mw.user.options.get('usebetatoolbar') ) {
mw.loader.using( 'ext.wikiEditor.toolbar', function () {
$(document).ready( customizeToolbar );
} );
}
} );
}