MediaWiki:Base.js: Difference between revisions
Appearance
Content deleted Content added
Declare global functions with "window.<name>" (MediaWiki:IndexForm.js uses "ws_msg"; MediaWiki:TextSizeModifier.js and MediaWiki:Modernisation.js uses "get_optlist"; etc); +missing semicolons; +consistency: $ is shorter than jQuery; +jshint |
no warn in console and no pageheader id in namespace Page:, remove dead code |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 2: | Line 2: | ||
/*global mw, $, ws_msg, get_optlist */ |
/*global mw, $, ws_msg, get_optlist */ |
||
/* messages to be moved (FIXME: what this mean ? moved where ?) |
|||
// FIXME: Unused? [[MediaWiki:InterWikiTransclusion.js]] redefines this. |
|||
var page_ns_prefixes= { |
|||
'be':'Старонка', |
|||
'be-tarask':'Старонка', |
|||
'br':'Pajenn', |
|||
'ca':'Pàgina', |
|||
'de':'Seite', |
|||
'en':'Page', |
|||
'eo':'Paĝo', |
|||
'es':'Página', |
|||
'fr':'Page', |
|||
'hr':'Stranica', |
|||
'hu':'Oldal', |
|||
'hy':'Էջ', |
|||
'it':'Pagina', |
|||
'la':'Pagina', |
|||
'ml':'താൾ', |
|||
'mr':'पान', |
|||
'no':'Side', |
|||
'pl':'Strona', |
|||
'pt':'Página', |
|||
'sl':'Stran', |
|||
'sv':'Sida', |
|||
'ru':'Страница', |
|||
'te':'పుట', |
|||
'vi':'Trang', |
|||
'vec':'Pagina', |
|||
'zh':'Page' |
|||
}; |
|||
// FIXME: Unused? |
|||
var index_ns_prefixes= { |
|||
'be':'Індэкс', |
|||
'be-tarask':'Індэкс', |
|||
'br':'Meneger', |
|||
'ca':'Llibre', |
|||
'de':'Index', |
|||
'en':'Index', |
|||
'eo':'Indekso', |
|||
'es':'Índice', |
|||
'fr':'Livre', |
|||
'hy':'Ինդեքս', |
|||
'it':'Indice', |
|||
'la':'Liber', |
|||
'ml':'സൂചിക', |
|||
'mr':'अनुक्रमणिका', |
|||
'no':'Indeks', |
|||
'pt':'Galeria', |
|||
'sv':'Index', |
|||
'ru':'Индекс', |
|||
'te':'సూచిక', |
|||
'vec':'Indice', |
|||
'vi':'Mục_lục' |
|||
}; |
|||
/* messages to be moved |
|||
'it':'Il testo proviene da', |
'it':'Il testo proviene da', |
||
'la':'Hic textus visibils est in', |
'la':'Hic textus visibils est in', |
||
| Line 72: | Line 17: | ||
}; |
}; |
||
/* FIXME: Remove this around September 11 2014, all use removed August 10 2014 */ |
|||
/* Note : there is a similar function in wikibits.js, but it does not work for me on page numbers */ |
/* Note : there is a similar function in wikibits.js, but it does not work for me on page numbers */ |
||
mw.log.deprecate( window, 'get_elements_by_classname', function (classname, tagname) { |
mw.log.deprecate( window, 'get_elements_by_classname', function (classname, tagname) { |
||
| Line 289: | Line 235: | ||
$( easy_lst_setup ); |
$( easy_lst_setup ); |
||
/* fix to reposition running headers */ |
|||
function pr_fix_page_headers(){ |
|||
if (mw.config.get( 'wgCanonicalNamespace' ) === 'Page' && $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) { |
|||
var a = document.getElementById("pageheader"); |
|||
if (a) { |
|||
var p = a.parentNode; |
|||
p.removeChild(a); |
|||
p.parentNode.insertBefore(a,p); |
|||
} |
|||
} |
|||
} |
|||
$( pr_fix_page_headers ); |
|||
Revision as of 02:57, 11 August 2014
/*jshint boss:true, loopfunc:true, scripturl:true*/
/*global mw, $, ws_msg, get_optlist */
/* messages to be moved (FIXME: what this mean ? moved where ?)
'it':'Il testo proviene da',
'la':'Hic textus visibils est in',
'es':'Su texto procede de',
'ca':'El seu text procedeix de'
*/
if(!self.ws_messages) self.ws_messages = { };
window.ws_msg = function (name) {
var m = self.ws_messages[name];
if(m) return m; else return name;
};
/* FIXME: Remove this around September 11 2014, all use removed August 10 2014 */
/* Note : there is a similar function in wikibits.js, but it does not work for me on page numbers */
mw.log.deprecate( window, 'get_elements_by_classname', function (classname, tagname) {
if(document.getElementsByClassName) return document.getElementsByClassName(classname);
var ml = [];
var l = document.getElementsByTagName(tagname);
for (var i=0; i< l.length; i++) {
var a = l[i];
if( a.className.indexOf(classname) !=-1 ) ml[ml.length] = l[i];
}
return ml;
}, 'Use jQuery instead.' );
window.get_optlist = function () {
var optlist = document.getElementById("optlist"),
cl;
if(!optlist) {
var displayOptions = document.createElement("div");
if (mw.config.get('skin')==='vector') {
displayOptions.className = "portal collapsed";
cl="body";
} else {
displayOptions.className = "portlet";
cl="pBody";
}
displayOptions.innerHTML = '<h3>' + ws_msg('optlist') + '<\/h3><div class="'+cl+'"><ul id="optlist"></ul><\/div>';
var ptb = document.getElementById("p-tb");
ptb.parentNode.insertBefore(displayOptions,ptb);
displayOptions.setAttribute("id","p-displayOptions");
displayOptions.id="p-displayOptions"; /* */
optlist = document.getElementById("optlist");
}
return optlist;
};
/*** Cookies (depreciated, use jQuery.cookie) ***/
mw.log.deprecate( window, 'SetCookie', function (name,value) {
$.cookie(name, value);
}, 'Use jQuery.cookie instead.' );
mw.log.deprecate( window, 'GetCookie', function (name) {
return $.cookie(name);
}, 'Use jQuery.cookie instead.' );
/**** Display options ****/
function OptionText() {
var SpanElem, OptionTitle, OptionStyle, CookieDisplayOption;
// iterate over all < span >-elements until class "OptionText" is found
for(
var i=0;
SpanElem = document.getElementsByTagName("span")[i];
i++
) {
// if found an option span
if (SpanElem.className == "OptionText") {
//SpanElem.style.display = 'none';
OptionTitle = SpanElem.title;
OptionStyle = SpanElem.firstChild.getAttribute('style');
//check if option was already encountered...
if(!document.getElementById(OptionTitle)){
//read cookie
var DisplayOptionDefault = true;
CookieDisplayOption = $.cookie("Display"+OptionTitle);
if (CookieDisplayOption ) {
if (CookieDisplayOption == "false") DisplayOptionDefault = false; }
var PageDisplay = document.createElement("li");
PageDisplay.setAttribute('id', OptionTitle);
var PageDisplayLink = document.createElement("a");
var OptionTextNode = document.createTextNode("Désactiver "+OptionTitle);
PageDisplayLink.appendChild(OptionTextNode);
PageDisplayLink.setAttribute('href','javascript:void(0)');
$(PageDisplayLink).click(function() {
displayOptionText(OptionTitle, OptionStyle, DisplayOptionDefault);
});
PageDisplay.appendChild(PageDisplayLink);
var optlist = get_optlist();
optlist.appendChild(PageDisplay);
displayOptionText(OptionTitle,OptionStyle,DisplayOptionDefault);
}
}
}
}
function displayOptionText(optiontitle, optionstyle, bool) {
var SpanElem;
$.cookie("Display"+optiontitle,bool);
if( ! document.getElementById(optiontitle) ) return;
var PageDisplayLink = document.getElementById(optiontitle).firstChild;
// iterate over all < span >-elements
for(
var i=0;
SpanElem = document.getElementsByTagName("span")[i];
i++
) {
// if found an option text
if ((SpanElem.className == "OptionText") && (SpanElem.title == optiontitle)) {
if(bool) {
SpanElem.setAttribute('style',optionstyle);
PageDisplayLink.firstChild.data = (optiontitle);
PageDisplayLink.setAttribute('href', 'javascript:void(0)');
$(PageDisplayLink).unbind('click');
$(PageDisplayLink).click(function() {
displayOptionText(optiontitle, optionstyle, false);
});
}
else {
SpanElem.setAttribute('style','null');
PageDisplayLink.firstChild.data = (optiontitle);
PageDisplayLink.setAttribute('href', 'javascript:void(0)');
$(PageDisplayLink).unbind('click');
$(PageDisplayLink).click(function() {
displayOptionText(optiontitle, optionstyle, true);
});
}
}
}
}
$( OptionText );
function restore_lst(){
var editbox = document.getElementById('wpTextbox1');
var search = /##[\s]*(.*?)[\s]*##[\s]*\n/;
var a = editbox.value.split(search);
var s = a[0];
var m = parseInt(a.length/2);
for( var i = 0 ; i < m ; i++ ) {
var title = a[i*2+1];
// Ensure we'll don't get twice quote.
title = title.replace(/^"(.*)"$/, "$1");
title = title.replace(/^'(.*)'$/, "$1");
var content = a[i*2+2];
if( title && content.substring(0,2)=='{|' ) content = '\n' + content;
if(title) s = s + '<section begin="'+title+'"/>' + content + '<section end="'+title+'"/>\n';
else s = s + content;
/* if( i < m-1 ) s = s + "----\n"; */
}
editbox.value = s;
}
/*
* easy lst : hide section markers
*/
function easy_lst() {
var editbox = document.getElementById('wpTextbox1');
if(editbox) {
var search = /<section\sbegin=[\s]*(.*?)[\s]*\/>/;
var a = editbox.value.split(search);
var s = a[0];
var ok = true;
for( var i = 0 ; i < parseInt(a.length/2) ; i++ ) {
var title = a[i*2+1];
var content = a[i*2+2];
var r2 = /^([\s\S]*?)<section\send=(.*?)\/>(\n|)[\s]*([\s\S]*?)$/;
var m2 = content.match(r2);
if( m2 ) {
title = title.replace(/^"(.*)"$/, "$1");
title = title.replace(/^'(.*)'$/, "$1");
if(s && s.charAt(s.length-1)!='\n' && s.charAt(s.length-1)!='|' ) s = s+'\n';
s = s + "## " + title + " ##\n"+ m2[1] ;
if( m2[4] ) {
if( m2[4]!='----\n' ) {
if(s && s.charAt(s.length-1)!='\n' ) s = s+'\n';
s = s + "####\n" + m2[4] ;
}
}
} else {
ok = false; /* alert("error"+title);*/
}
}
if(ok) {
editbox.value = s;
}
var saveButton = document.getElementById("wpSave");
var previewButton = document.getElementById("wpPreview");
var diffButton = document.getElementById("wpDiff");
if(saveButton){
saveButton.onclick = restore_lst;
previewButton.onclick = restore_lst;
diffButton.onclick = restore_lst;
}
}
}
function easy_lst_setup() {
if (self.proofreadpage_raw_lst || mw.config.get( 'wgCanonicalNamespace' ) !== 'Page')
return;
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
mw.loader.using('ext.proofreadpage.page', function () {
// mimic code in the extension, there is a conditionnal deps on ext.wikiEditor.toolbar.
if (mw.user.options.get('usebetatoolbar') && $.inArray('ext.wikiEditor.toolbar', mw.loader.getModuleNames()) > -1) {
mw.loader.using('ext.wikiEditor.toolbar', function() {
easy_lst();
});
} else {
easy_lst();
}
});
}
}
$( easy_lst_setup );