MediaWiki:Gadget-editSummary.js: различия между версиями
м show/hide |
гаджет взят из РуВП |
||
| (не показано 55 промежуточных версий 3 участников) | |||
| Строка 1: | Строка 1: | ||
// | /* Стандартные описания правок. */ | ||
/* Standard edit summaries. */ | |||
/ | // Код из польской Википедии, изначально адаптированный для русскоязычного раздела Википедии by Alex Smotrov | ||
// https://ru.wikipedia.org/w/index.php?diff=32005736&oldid=32004004&title=MediaWiki%3AEditpage.js&type=revision | |||
// https://ru.wikipedia.org/w/index.php?title=MediaWiki:Gadget-summaryButtons.js&oldid=94596871 | |||
addSumButton('абсурдоф.', 'абсурдофикация', ' | function initSummaryButtons( mode ) { | ||
function insertSummary( txt ) { | |||
if ( typeof txt !== 'string' ) { | |||
txt = this.title; | |||
} | |||
if ( typeof summaryItemsSeparator === 'undefined' ) { | |||
window.summaryItemsSeparator = ','; | |||
} | |||
var val = $summary.val(); | |||
var regExp = new RegExp( '(^|[,;.?!/]) ?' + mw.RegExp.escape( txt ) ); | |||
if ( regExp.test( val ) ) { | |||
return; | |||
} | |||
if ( /[^,; \/]$/.test( val ) ) { | |||
val += summaryItemsSeparator; | |||
} | |||
if ( /[^ ]$/.test( val ) ) { | |||
val += ' '; | |||
} | |||
$summary.val( val + txt ).focus().change(); | |||
} | |||
mode = mode || 'classic'; | |||
if ( typeof summaryButtons === 'undefined' ) { | |||
window.summaryButtons = { | |||
hideDefaultButtons: false | |||
}; | |||
} | |||
var veSaveDialog, $summaryWrapper, $summary; | |||
if ( mode === 'classic' ) { | |||
$summaryWrapper = $( '#wpSummaryWidget' ); | |||
$summary = $( '#wpSummary' ); | |||
} else { | |||
veSaveDialog = ve.init.target.saveDialog; | |||
$summaryWrapper = veSaveDialog.editSummaryInput.$element; | |||
$summary = veSaveDialog.editSummaryInput.$input; | |||
} | |||
var $summaryButtons = $( '<div>' ) | |||
.addClass( 'summaryButtons' ) | |||
.insertAfter( $summaryWrapper ); | |||
var $groups = $( '<div>' ) | |||
.addClass( 'summaryButtons-groups' ) | |||
.appendTo( $summaryButtons ); | |||
window.addSumButton = window.addSummaryButton = function ( label, text, group ) { | |||
group = group || 'custom'; // default is 'default' | |||
var $group = $( '.summaryButtons-group-' + group ); | |||
if ( !$group.length ) { | |||
$group = $( '<div>' ) | |||
.addClass( 'mw-ui-button-group summaryButtons-group summaryButtons-group-' + group ) | |||
.appendTo( $groups ); | |||
} | |||
$( '<a>' ) | |||
.attr( 'role', 'button' ) | |||
.attr( 'title', text ) | |||
.addClass( 'mw-ui-button summaryButtons-button' ) | |||
.html( label ) | |||
.click( insertSummary ) | |||
.appendTo( $group ); | |||
}; | |||
addSumButton('абсурдоф.', 'абсурдофикация', 'default'); | |||
addSumButton('оформл.', 'оформление', 'default'); | |||
addSumButton('стиль', 'стиль', 'default'); | |||
addSumButton('орфогр.', 'орфография', 'default'); | |||
addSumButton('пункт.', 'пунктуация', 'default'); | |||
addSumButton('комм.', 'комментарий', 'default'); | |||
addSumButton('ответ.', 'ответ', 'default'); | |||
addSumButton('обнов.', 'обновление', 'default'); | |||
addSumButton('кат.', 'категория', 'default'); | |||
addSumButton('шаб.', 'шаблон', 'default'); | |||
addSumButton('к удал.', 'КУ', 'default'); | |||
addSumButton('мед. уд', 'мед. уд', 'default'); | |||
addSumButton('доп.', 'дополнение', 'default'); | |||
addSumButton('уточ.', 'уточнение', 'default'); | |||
addSumButton('картинка', 'картинка', 'default'); | |||
// Эти стили находятся здесь, а не в отдельном CSS, потому что на страницах, где кнопок нет, | |||
// они вредны, а за тем, где запускается CSS, мы не можем проследить. | |||
mw.util.addCSS( '\ | |||
.mw-editform #wpSummaryWidget {\ | |||
margin-bottom: 0;\ | |||
}\ | |||
\ | |||
.mw-editform .editCheckboxes {\ | |||
margin-top: .85714em;\ | |||
}\ | |||
' ); | |||
if ( mode !== 'classic' && !additionalCSS ) { | |||
additionalCSS = mw.util.addCSS( '\ | |||
.ve-ui-mwSaveDialog-savePanel .summaryButtons {\ | |||
margin-top: 2px;\ | |||
}\ | |||
\ | |||
.ve-ui-mwSaveDialog-savePanel .ve-ui-mwSaveDialog-options {\ | |||
border-top: 1px solid #c8ccd1;\ | |||
border-radius: 2px;\ | |||
}\ | |||
' ); | |||
veSaveDialog.updateSize(); | |||
} | |||
mw.hook( 'summaryButtons' ).fire(); | |||
} | } | ||
var additionalCSS; | |||
if ( window.ve && ve.init && ve.init.target && ve.init.target.active || $( '.ve-loading' ).length ) { | |||
mw.hook( 've.saveDialog.stateChanged' ).add( function () { | |||
if ( !mw.config.get( 'wgArticleId' ) || $( '.summaryButtons' ).length ) return; | |||
initSummaryButtons( ve.init.target.getSurface().getMode() ); | |||
} ); | |||
} else if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) { | |||
$( function () { | |||
var frm = document.getElementById( 'editform' ); | |||
function | if ( !mw.config.get( 'wgArticleId' ) || !frm || $( frm.wpSection ).val() === 'new' ) return; | ||
initSummaryButtons( 'classic' ); | |||
} ); | |||
} | } | ||