MediaWiki:Gadget-common-special-upload.js
Заўвага: Пасля апублікавання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змены.
- Firefox / Safari: націсніце Reload, утрымліваючы Shift, або націсніце Ctrl-F5 ці Ctrl-R (⌘-R на Макінтошах)
- Google Chrome: Націсніце Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer / Edge: націсніце Refresh, утрымліваючы Ctrl, або націсніце Ctrl-F5
- Opera: Увайдзіце Menu → Settings (Opera → Preferences на Mac), далей Privacy & security → Clear browsing data → Cached images and files.
( function ( mw, $ ) {
function uploadPage() {
$( 'input[name=wpUpload]' ).addClass( 'mw-ui-button mw-ui-progressive' );
$( 'p.mw-upload-editlicenses' ).addClass( 'group-sysop-show group-engineer-show' );
if ( mw.config.get( 'wgUploadAutoFill' ) ) {
upForm = document.getElementById( 'mw-upload-form' );
upForm.onsubmit = checkUpForm;
}
var desc = document.getElementById( 'wpUploadDescription' );
var tmpl = document.getElementById( 'imageinfo' );
if ( mw.config.get( 'wgUploadAutoFill' ) && tmpl && desc && !desc.value ) {
desc.value = tmpl.innerHTML;
}
var span = document.getElementById( 'insertlink-free' );
if ( span ) {
var a = document.createElement( 'a' );
a.href = 'javascript:addInfoTemplate("rationale", "imageinfo", 8)';
a.className = 'insertlink';
span.parentNode.insertBefore( a, span );
a.appendChild( span );
}
var span = document.getElementById( 'insertlink-unfree' );
if ( span ) {
var a = document.createElement( 'a' );
a.href = 'javascript:addInfoTemplate("imageinfo", "rationale", 16)';
a.className = 'insertlink';
span.parentNode.insertBefore( a, span );
a.appendChild( span );
}
}
window.addInfoTemplate = function( oldId, newId, rows ) {
var desc = document.getElementById( 'wpUploadDescription' );
var oldTmpl = document.getElementById( oldId );
var tmpl = document.getElementById( newId );
if ( desc && oldTmpl && desc.value == oldTmpl.innerHTML ) {
desc.value = tmpl.innerHTML;
desc.rows = rows;
} else if ( desc && tmpl && desc.value.indexOf( tmpl.innerHTML.substring( 0, 8 ) ) == -1 ) {
desc.value += '\n' + tmpl.innerHTML;
desc.rows = 20;
}
licList = document.getElementsByTagName( 'option', document.getElementById( 'wpLicense' ) );
licList[ 0 ].selected = 'selected';
if ( licList.length && newId == 'rationale' ) {
licList[ 0 ].textContent = 'Дзейнічайце згодна з інструкцыяй для несвабодных файлаў, прыведзенай уверсе старонкі';
} else if (licList.length ){
licList[ 0 ].textContent = 'Нішто не выбрана';
}
};
function decapitalizeExtension() {
var reupl = document.getElementById( 'wpForReUpload' );
if ( reupl !== null && reupl.value == 1 ) { return; }
var fld = document.getElementById( 'wpDestFile' );
var fname = fld.value;
var repl = function ( s, p1, p2 ) {
return p1.replace( /^(.*?)[\s\.]+$/, '$1' ) + '.' + p2.toLowerCase();
};
fname = fname.replace( /^(.*)\.([^\.]+)$/, repl );
fld.value = fname;
}
function checkUpForm() {
upForm = document.getElementById( 'mw-upload-form' );
var desc = document.getElementById( 'wpUploadDescription' );
var lcns = document.getElementById( 'wpLicense' );
var wrn = document.createElement( 'div' );
wrn.innerHTML = '';
if ( lcns.value != '' && /\{\{Несвабодны файл/i.exec( desc.value ) ) { wrn.innerHTML += '<li>Вы выкарыстоўваеце састарэлую схему апісання несвабодных выяў. Калі ласка, прачытайце інструкцыю вышэй.</li>'; }
if ( lcns.value == '' && /^[^\{\}]*(\{\{Выява[^\{\}]+\}\}[^\{\}]*)*$/i.exec( desc.value ) ) { wrn.innerHTML += '<li>Не пазначана ліцэнзія. Выберыце ліцэнзію ў выпадальным спісе вышэй.</li>'; }
if ( lcns.value != '' && lcns.value != 'subst:ET' && /\{\{Абгрунтаванне добрасумленнага выкарыстання/i.exec( desc.value ) ) { wrn.innerHTML += '<li>Для несвабоднага файла выбрана ліцэнзія ў выпадальным спісе. Магчыма, вы дзесьці памыліліся.</li>'; }
if ( lcns.value == '' && /\{\{Выява\s*((\|\s*)+[\s\wа-яё]+=\s*)*(\|\s*)*\}\}/i.exec( desc.value ) ) { wrn.innerHTML += '<li>Не запоўнены шаблон {' + '{Выява}}.</li>'; }
if ( lcns.value == '' && /\{\{Абгрунтаванне добрасумленнага выкарыстання\s*((\|\s*)+([\wа-яё]+\s*)+=\s*)*(\|\s*)*\}\}/i.exec( desc.value ) ) { wrn.innerHTML += '<li>Не запоўнены шаблон {' + '{Абгрунтаванне добрасумленнага выкарыстання}}.</li>'; }
if ( /\{\{(Несвабодная выява|Выява)[^\{\}]*Крыніца\s*=\s*(из|с|з|https?:\/\/(www\.)?)?\s*(інтэрнет|інтэрнэт|интернет|internet|гугл|google|яндэкс|яндекс|yandex|яху|yahoo|рамблер|rambler)[^\{\}]*\}\}/i.test( desc.value ) ) { wrn.innerHTML += '<li>«Інтэрнэт» ці пошукавая сістэма не з’яўляюцца крыніцай, якая б пацвярджала ліцэнзійны статус файла. Пазначце больш пэўную крыніцу.</li>'; }
if ( wrn.innerHTML != '' ) {
wrn.innerHTML = '<p style="text-align:center; font-weight:bold;">Аўтаматычная праверка выявіла наступныя памылкі:</p><ul style="font-weight:bold">' + wrn.innerHTML;
wrn.innerHTML += '</ul><p style="padding:0.2em 0.8em">Пры паўторным націску на кнопку «Загрузіць файл» гэтае папярэджанне будзе праігнаравана. Памятаеце, што файлы без ліцэнзіі ці з некарэктнай ліцэнзіяй будуць выдалены. Калі ў вас узніклі праблемы ці пытанні, звяртайцеся на Форум.</p>';
var oldWrn = document.getElementById( 'jsUploadWarnings' );
if ( oldWrn ) {
decapitalizeExtension();
return true;
} else {
wrn.style.border = '1px solid red';
wrn.style.background = '#ffe4e1';
wrn.id = 'jsUploadWarnings';
upNode = document.getElementById( 'mw-htmlform-options' ).parentNode;
upNode.parentNode.insertBefore( wrn, upNode );
}
return false;
} else {
decapitalizeExtension();
return true;
}
}
/* Hide quick insert */
function uploadHideInsert() {
qIns = document.getElementById( 'editpage-specialchars' );
if(!qIns)return;
qInsCover = document.createElement( 'div' );
qInsCover.setAttribute( 'style', qIns.style ? qIns.style.cssText: '' );
if ( typeof ( qInsCover.style.setAttribute ) === 'function' ) {
qInsCover.style.setAttribute( 'style', qIns.style.cssText ); // IE
}
qInsCover.innerHTML = '<small><span style="border-bottom:1px dotted gray; cursor:help" title="Дазваляе хутка ўстаўляць сімвалы разметкі ў поле апісання">Хуткая ўстаўка</span> (<a href="javascript:uploadExpandInsert()">раскрыць блок</a>)</small>';
qIns.style.display = 'none';
qIns.parentNode.appendChild( qInsCover );
}
window.uploadExpandInsert = function() {
qInsCover.style.display = 'none';
qIns.style.display = 'block';
};
/* Ajax Preview */
function uploadPreviewRun() {
var $PD = $( '#wikiPreview' ).empty();
if ( !$PD.length ) {
$PD = $( ' <div id=wikiPreview />' ).insertAfter( '#wpLicense' );
}
$PD.injectSpinner( 'preview' );
$.ajax( {
type: 'post',
url: mw.util.wikiScript( 'api' ) + '?action=parse&format=json&pst=&disablepp=&prop=text',
data: { text: $( '#wpUploadDescription' ).val() },
success: function ( resp ) {
if(!resp || !resp.parse || !!resp.parse.text || !resp.parse.text[ '*' ] || $PD.length) return;
$PD.html( resp.parse.text[ '*' ] )[ 0 ].scrollIntoView();
},
complete: function () {
$.removeSpinner( 'preview' );
}
} );
}
function uploadPreviewInit() {
$( '<input type=button value="Перадпрагляд" style="float:right" />' )
.click( uploadPreviewRun )
.insertAfter( '#wpDestFile' );
}
$.when(
$.ready,
mw.loader.using( [
'jquery.spinner'
] )
).done( function() {
$( function () {
window.insertTags = function ( o, c, s, t ) {
$( '#wpUploadDescription' ).textSelection( 'encapsulateSelection', { pre: o, peri: t, post: c } );
};
} );
$( uploadPreviewInit );
$( uploadPage );
$( uploadHideInsert );
} );
}( mediaWiki, jQuery ) );