MediaWiki:Corrections.js: Difference between revisions
Appearance
Content deleted Content added
No edit summary |
Fixes navbar display |
||
| (124 intermediate revisions by 8 users not shown) | |||
| Line 3: | Line 3: | ||
**************/ |
**************/ |
||
// Until we can use dependencies to ensure load of Base.js first, we need this, |
|||
function pr_popup(str){ |
|||
// window.ws_msg and window.get_opt_list in this script. |
|||
var popup = window.open('','name','height=400,width=500'); |
|||
if(!self.ws_messages) self.ws_messages = { }; |
|||
popup.document.write('<html><head><title>Typos</title>'); |
|||
popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>'); |
|||
popup.document.write('</head><body>'); |
|||
popup.document.write('<p>str</p>'); |
|||
popup.document.write('<p><a href="javascript:self.close()">Close</a></p>'); |
|||
popup.document.write('</body></html>'); |
|||
popup.document.close(); |
|||
function ws_msg(name) { |
|||
var m = self.ws_messages[name]; |
|||
if(m) return m; else return name; |
|||
} |
|||
// Copy from MediaWiki:Base.js |
|||
function get_optlist() { |
|||
var optlist = document.getElementById("optlist"),displayOptions, |
|||
cl, ulCl; |
|||
if(!optlist) { |
|||
if (mw.config.get('skin')==='vector') { |
|||
displayOptions = document.createElement("nav"); |
|||
displayOptions.className = "mw-portlet vector-menu vector-menu-portal portal"; |
|||
cl="vector-menu-content"; |
|||
ulCl="vector-menu-content-list"; |
|||
} else { |
|||
displayOptions = document.createElement("div"); |
|||
displayOptions.className = "portlet"; |
|||
cl="pBody"; |
|||
ulCl=""; |
|||
} |
|||
displayOptions.innerHTML = '<h3 class="vector-menu-heading">' + ws_msg('optlist') + '<\/h3><div class="'+cl+'"><ul id="optlist" class="'+ ulCl + '"></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; |
|||
} |
|||
if(!String.HTMLize){ |
|||
String.prototype.HTMLize = function() { |
|||
var chars = new Array('&','<','>','"'); |
|||
var entities = new Array('amp','lt','gt','quot'); |
|||
var string = this; |
|||
for (var i=0; i<chars.length; i++) { |
|||
var regex = new RegExp(chars[i], "g"); |
|||
string = string.replace(regex, '&' + entities[i] + ';'); |
|||
} |
|||
return string; |
|||
}; |
|||
} |
|||
function close_corr_summary() { |
|||
var summary = document.getElementById("corr_summary"); |
|||
if(!summary) return; |
|||
summary.innerHTML = ""; |
|||
summary.parentNode.removeChild(summary); |
|||
} |
|||
function scroll_to_correction(k) { |
|||
var selectedPosX = 0; |
|||
var selectedPosY = 0; |
|||
var spanlist = $('span.coquille'); |
|||
for (var i = 0; i < spanlist.length; i++) { |
|||
var item = spanlist[i]; |
|||
if(i==k) { |
|||
element=item; |
|||
while(element != null){ |
|||
selectedPosX += element.offsetLeft; |
|||
selectedPosY += element.offsetTop; |
|||
element = element.offsetParent; |
|||
} |
|||
window.scrollTo(selectedPosX,selectedPosY); |
|||
} |
|||
} |
|||
} |
|||
function pr_popup(){ |
|||
var corr_container = document.getElementById("corr_summary"); |
|||
if(corr_container) { close_corr_summary(); return; } |
|||
corr_container = document.createElement("div"); |
|||
corr_container.setAttribute("id","corr_summary"); |
|||
var content= document.getElementById("text"); |
|||
var spanlist = document.getElementsByTagName("span"); |
|||
if(!content) for(var i=0; i< spanlist.length; i++) { if( spanlist[i].className=="text") content=item; } |
|||
if(content) { |
|||
corr_container.style.cssText="position:relative;"; |
|||
corr_container.innerHTML = "<div style=\"position:absolute;right:-0.5em;width:0em;\"><div style=\"position:fixed;min-width:16em;max-width:35em;max-height:35em;overflow:auto;background:#ffffff;z-index:1;border:1px solid;padding:5px\">"+self.corr_list+"</div></div>"; |
|||
content.insertBefore(corr_container,content.firstChild); |
|||
} else { |
|||
corr_container.style.cssText="position:fixed;min-width:16em;max-width:35em;max-height:35em;overflow:auto;scroll:auto;right:0.5em;background:#ffffff;z-index:1;border:1px solid;padding:5px"; |
|||
corr_container.innerHTML = self.corr_list; |
|||
content = document.getElementById("bodyContent"); |
|||
content.insertBefore(corr_container,content.firstChild); |
|||
} |
|||
} |
} |
||
function pr_typos() { |
function pr_typos() { |
||
if( ! ( mw.config.get('wgNamespaceNumber')==0 || mw.config.get( 'wgCanonicalNamespace' ) === 'Page' ) ) return; |
|||
var str = '<div style="float:right"><a href="javascript:close_corr_summary()"><img src="//upload.wikimedia.org/wikipedia/commons/9/97/WikEd_close.png"/></a></div><h4>'+ ws_msg('corr_list') + " :</h4><ul>"; |
|||
var message_title = { |
|||
var spanlist = $('span.coquille'); |
|||
'en':"List of corrections performed on this page" , |
|||
for(var i=0; i< spanlist.length; i++) { |
|||
'fr':"Liste des corrections apportées à cette page" |
|||
var item = spanlist[i]; |
|||
} |
|||
w1=w2=''; |
|||
if(item.previousSibling && item.previousSibling.data) { |
|||
var str = message_title[wgContentLanguage]+" :\\n\\n"; |
|||
context1=item.previousSibling.data.split(' '); |
|||
j=0; |
|||
if(context1.length>1) w1 = context1[context1.length - 2]; |
|||
for(var i=0; item=document.getElementsByTagName("span")[i]; i++) { |
|||
} |
|||
if(item.className=="coquille") { |
|||
if(item.nextSibling && item.nextSibling.data) { |
|||
j=j+1; |
|||
context2=item.nextSibling.data.split(' '); |
|||
w1=w2=''; |
|||
if(context2.length>1) w2 = context2[1]; |
|||
if(item.previousSibling) { |
|||
} |
|||
context1=item.previousSibling.data.split(' '); |
|||
//hidden "m" char is to avoid rtl languages firefox bug |
|||
if(context1.length>1) w1 = context1[context1.length - 2]; |
|||
var newline = '<li>'+'<a style=\"color:#000000;\" href=\"javascript:scroll_to_correction('+i+');\"> « '+w1+' <span style=\"color:#ff0000;\">#pre#</span> '+ w2.HTMLize() + ' » →<span style=\"color:#ffffff;\">m</span>« ' + w1.HTMLize() + ' <span style=\"color:#00A000;\">#post#</span> ' + w2 +' » </a></li>'; |
|||
} |
|||
newline = newline.replace("#pre#",item.title.HTMLize()); |
|||
if(item.nextSibling) { |
|||
newline = newline.replace("#post#",item.innerHTML); |
|||
context2=item.nextSibling.data.split(' '); |
|||
str = str + newline; |
|||
if(context2.length>1) w2 = context2[1]; |
|||
} |
|||
} |
|||
str=str+'</ul>'; |
|||
str = str+'« '+w1+' '+item.title + ' '+ w2 + ' » → « ' + w1 + ' ' + item.innerHTML + ' ' + w2 +' »\\n'; |
|||
self.corr_list = str; |
|||
} |
|||
} |
|||
if (spanlist.length) { |
|||
if(j) { |
|||
mw.loader.using( 'mediawiki.util', function() { |
|||
var optlist = get_optlist(); |
|||
var optlist = get_optlist(); |
|||
optlist.innerHTML = optlist.innerHTML + "<li class=\"\"><a href='javascript:pr_popup(\""+str+"\");'>Coquilles ("+j+")</a></li>"; |
|||
mw.util.addPortletLink ('p-displayOptions', 'javascript:pr_popup();', ws_msg('corr_link')+" ("+spanlist.length+")", 'option-corrections', '' ); |
|||
cs=document.getElementById("corr-info"); |
|||
cs = document.getElementById("corr-info"); |
|||
if(cs){ |
|||
if(cs) { |
|||
if(j==1) |
|||
if (spanlist.length == 1) |
|||
cs.innerHTML = " <a href='javascript:pr_popup(\""+str+"\");'>Une coquille </a> a été corrigée."; |
|||
cs.innerHTML += " <a href='javascript:pr_popup();'>" + ws_msg('corr_one'); |
|||
else |
|||
else |
|||
cs.innerHTML = " <a href='javascript:pr_popup(\""+str+"\");'>"+j+" coquilles</a> ont été corrigées."; |
|||
cs.innerHTML += " <a href='javascript:pr_popup();'>" + spanlist.length + ws_msg('corr_many'); |
|||
} |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
} |
} |
||
$(pr_typos); |
|||
Latest revision as of 11:22, 9 July 2022
/**************
* corrections
**************/
// Until we can use dependencies to ensure load of Base.js first, we need this,
// window.ws_msg and window.get_opt_list in this script.
if(!self.ws_messages) self.ws_messages = { };
function ws_msg(name) {
var m = self.ws_messages[name];
if(m) return m; else return name;
}
// Copy from MediaWiki:Base.js
function get_optlist() {
var optlist = document.getElementById("optlist"),displayOptions,
cl, ulCl;
if(!optlist) {
if (mw.config.get('skin')==='vector') {
displayOptions = document.createElement("nav");
displayOptions.className = "mw-portlet vector-menu vector-menu-portal portal";
cl="vector-menu-content";
ulCl="vector-menu-content-list";
} else {
displayOptions = document.createElement("div");
displayOptions.className = "portlet";
cl="pBody";
ulCl="";
}
displayOptions.innerHTML = '<h3 class="vector-menu-heading">' + ws_msg('optlist') + '<\/h3><div class="'+cl+'"><ul id="optlist" class="'+ ulCl + '"></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;
}
if(!String.HTMLize){
String.prototype.HTMLize = function() {
var chars = new Array('&','<','>','"');
var entities = new Array('amp','lt','gt','quot');
var string = this;
for (var i=0; i<chars.length; i++) {
var regex = new RegExp(chars[i], "g");
string = string.replace(regex, '&' + entities[i] + ';');
}
return string;
};
}
function close_corr_summary() {
var summary = document.getElementById("corr_summary");
if(!summary) return;
summary.innerHTML = "";
summary.parentNode.removeChild(summary);
}
function scroll_to_correction(k) {
var selectedPosX = 0;
var selectedPosY = 0;
var spanlist = $('span.coquille');
for (var i = 0; i < spanlist.length; i++) {
var item = spanlist[i];
if(i==k) {
element=item;
while(element != null){
selectedPosX += element.offsetLeft;
selectedPosY += element.offsetTop;
element = element.offsetParent;
}
window.scrollTo(selectedPosX,selectedPosY);
}
}
}
function pr_popup(){
var corr_container = document.getElementById("corr_summary");
if(corr_container) { close_corr_summary(); return; }
corr_container = document.createElement("div");
corr_container.setAttribute("id","corr_summary");
var content= document.getElementById("text");
var spanlist = document.getElementsByTagName("span");
if(!content) for(var i=0; i< spanlist.length; i++) { if( spanlist[i].className=="text") content=item; }
if(content) {
corr_container.style.cssText="position:relative;";
corr_container.innerHTML = "<div style=\"position:absolute;right:-0.5em;width:0em;\"><div style=\"position:fixed;min-width:16em;max-width:35em;max-height:35em;overflow:auto;background:#ffffff;z-index:1;border:1px solid;padding:5px\">"+self.corr_list+"</div></div>";
content.insertBefore(corr_container,content.firstChild);
} else {
corr_container.style.cssText="position:fixed;min-width:16em;max-width:35em;max-height:35em;overflow:auto;scroll:auto;right:0.5em;background:#ffffff;z-index:1;border:1px solid;padding:5px";
corr_container.innerHTML = self.corr_list;
content = document.getElementById("bodyContent");
content.insertBefore(corr_container,content.firstChild);
}
}
function pr_typos() {
if( ! ( mw.config.get('wgNamespaceNumber')==0 || mw.config.get( 'wgCanonicalNamespace' ) === 'Page' ) ) return;
var str = '<div style="float:right"><a href="javascript:close_corr_summary()"><img src="//upload.wikimedia.org/wikipedia/commons/9/97/WikEd_close.png"/></a></div><h4>'+ ws_msg('corr_list') + " :</h4><ul>";
var spanlist = $('span.coquille');
for(var i=0; i< spanlist.length; i++) {
var item = spanlist[i];
w1=w2='';
if(item.previousSibling && item.previousSibling.data) {
context1=item.previousSibling.data.split(' ');
if(context1.length>1) w1 = context1[context1.length - 2];
}
if(item.nextSibling && item.nextSibling.data) {
context2=item.nextSibling.data.split(' ');
if(context2.length>1) w2 = context2[1];
}
//hidden "m" char is to avoid rtl languages firefox bug
var newline = '<li>'+'<a style=\"color:#000000;\" href=\"javascript:scroll_to_correction('+i+');\"> « '+w1+' <span style=\"color:#ff0000;\">#pre#</span> '+ w2.HTMLize() + ' » →<span style=\"color:#ffffff;\">m</span>« ' + w1.HTMLize() + ' <span style=\"color:#00A000;\">#post#</span> ' + w2 +' » </a></li>';
newline = newline.replace("#pre#",item.title.HTMLize());
newline = newline.replace("#post#",item.innerHTML);
str = str + newline;
}
str=str+'</ul>';
self.corr_list = str;
if (spanlist.length) {
mw.loader.using( 'mediawiki.util', function() {
var optlist = get_optlist();
mw.util.addPortletLink ('p-displayOptions', 'javascript:pr_popup();', ws_msg('corr_link')+" ("+spanlist.length+")", 'option-corrections', '' );
cs = document.getElementById("corr-info");
if(cs) {
if (spanlist.length == 1)
cs.innerHTML += " <a href='javascript:pr_popup();'>" + ws_msg('corr_one');
else
cs.innerHTML += " <a href='javascript:pr_popup();'>" + spanlist.length + ws_msg('corr_many');
}
});
}
}
$(pr_typos);