« MediaWiki:Gadget-HotCatsMulti.js » : différence entre les versions

Contenu supprimé Contenu ajouté
Dr Brains (discuter | contributions)
m amélioration code de lancement
Dr Brains (discuter | contributions)
Correction problème avec requêtes synchrones ; sauvegarde messages système et alias de DEFAULTSORT dans cookie
Ligne 210 :
///////////////////////// REQUÊTES PRÉLIMINAIRES ////////////////////////////////////////////////////////
 
// RÉCUPÉRATION DU CONTENU ACTUEL DE LA PAGE (asynchrone ou synchrone)
 
// RÉCUPÉRATION ALIAS DE LA CLEF DE TRI GLOBALE ET DES MESSAGES SYSTEME
window.hotcat_getOldPageContent = function(Mode){
if(hotcat_OldPageContent === "") return "";
// Mise à jour du cookie
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=raw&oldid=' + mw.config.get('wgCurRevisionId');
hotcat_ajax.http({url : URL,
window.hotcat_SetCookie = function(cookieName, cookieValue) {
async : Mode,
var now = new Date();
onSuccess : hotcat_receiveOldPageContent
var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365 );
});
return jQuery.cookie(cookieName, cookieValue, {expires:nextYear, path:"/"});
};
}
// Interrogation du cookie
window.hotcat_GetCookie = function(cookieName) {
return jQuery.cookie(cookieName);
}
 
window.hotcat_receiveOldPageContenthotcat_getDefaultsortAliasesAndMessages = function(Req, dataMode){
var meta = [];
hotcat_OldPageContent = Req.responseText;
var otherparams = {};
return hotcat_OldPageContent;
var missingmessages = [];
};
var CookieMessages = hotcat_GetCookie("hotcatmessages");
if(CookieMessages){
CookieMessages = CookieMessages.split("||");
for(var Message in hotcat_text_SystemMessage){
var found = false;
for(var a=0,l=CookieMessages.length;a<l;a++){
if(CookieMessages[a].indexOf(Message+"::") !== 0) continue;
found = true;
hotcat_text_SystemMessage[Message] = CookieMessages[a].split("::")[1];
}
if(!found) missingmessages.push(Message);
}
 
}else{
 
for(var Message in hotcat_text_SystemMessage){
// RÉCUPÉRATION ALIAS DE LA CLEF DE TRI GLOBALE
missingmessages.push(Message);
 
}
window.hotcat_getDefaultsortAliases = function(Mode){
}
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&meta=siteinfo&siprop=magicwords';
if(missingmessages.length > 0){
hotcat_ajax.http({url : URL,
meta.push("allmessages");
async : Mode,
otherparams["ammessages"] = missingmessages.join("|");
onSuccess : hotcat_receiveDefaultsortAliases
});
var CookieDefaultsortAliases = hotcat_GetCookie("hotcatdefaultsortaliases");
if(CookieDefaultsortAliases){
hotcat_DefaultsortAliases = CookieDefaultsortAliases.split("||");
}
if(hotcat_DefaultsortAliases.length === 0){
meta.push("siteinfo");
otherparams["siprop"] = "magicwords";
}
if(meta.length === 0){
hotcat_getOldPageContent();
return;
}
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&meta=' + meta.join("|");
for(var paramname in otherparams){
URL += "&" + paramname + "=" + otherparams[paramname];
}
hotcat_ajax.http({url : URL,
onSuccess : hotcat_receiveDefaultsortAliasesAndMessages,
nextcallback : hotcat_getOldPageContent
});
};
 
window.hotcat_receiveDefaultsortAliaseshotcat_receiveDefaultsortAliasesAndMessages = function(Req, data){
var Response = Req.responseXML;
var MagicWords = Response.getElementsByTagName('magicword');
if(!Response) return ["DEFAULTSORT", "DEFAULTSORTKEY", "DEFAULTCATEGORYSORT"];
var if(MagicWords.length => Response.getElementsByTagName('magicword'0);{
for(var a=0;a<MagicWords.length;a++){
var MagicWordName = MagicWords[a].getAttribute('name');
if(MagicWordName=="defaultsort"){
var Aliases = MagicWords[a].getElementsByTagName('alias');
for(var b=0;b<Aliases.length;b++){
var ThisAlias = Aliases[b].firstChild.nodeValue;
ThisAlias = ThisAlias.replace(/:/g, "");
if(hotcat_DefaultsortAliases.indexOf(ThisAlias)==-1) hotcat_DefaultsortAliases.push(ThisAlias);
}
}
}
hotcat_SetCookie("hotcatdefaultsortaliases", hotcat_DefaultsortAliases.join("||"));
}
var Messages = Response.getElementsByTagName('message');
if(Messages.length > 0){
var cookievalue = [];
for(var a=0;a<Messages.length;a++){
var MessageName = Messages[a].getAttribute('name');
var MessageContent = (Messages[a].firstChild ? Messages[a].firstChild.nodeValue : "");
for(var Message in hotcat_text_SystemMessage){
if(MessageName == Message){
hotcat_text_SystemMessage[Message] = MessageContent;
cookievalue.push(Message+"::"+MessageContent);
}
}
}
hotcat_SetCookie("hotcatmessages", cookievalue.join("||"));
}
if(typeof(data.nextcallback) === "function") data.nextcallback(data);
};
 
// RÉCUPÉRATION DU CONTENU ACTUEL DE LA PAGE (asynchrone ou synchrone)
// RÉCUPÉRATION MESSAGES SYSTÈME [[MediaWiki:red-link-title]], [[MediaWiki:pagecategorieslink]], [[MediaWiki:pagecategories]] et [[MediaWiki:categories]]
 
window.hotcat_GetMessageshotcat_getOldPageContent = function(Mode){
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=raw&oldid=' + mw.config.get('wgCurRevisionId');
var Titles = [];
hotcat_ajax.http({url : URL, onSuccess : hotcat_receiveOldPageContent });
for(var Message in hotcat_text_SystemMessage){
Titles.push(Message);
}
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&meta=allmessages&ammessages=' + Titles.join("|");
hotcat_ajax.http({url : URL,
async : Mode,
onSuccess : hotcat_receiveMessages
});
};
 
window.hotcat_receiveMessageshotcat_receiveOldPageContent = function(Req, data){
var Responsehotcat_OldPageContent = Req.responseXMLresponseText;
ifhotcat(!Response) return;
var Messages = Response.getElementsByTagName('message');
for(var a=0;a<Messages.length;a++){
var MessageName = Messages[a].getAttribute('name');
var MessageContent = (Messages[a].firstChild ? Messages[a].firstChild.nodeValue : "");
for(var Message in hotcat_text_SystemMessage){
if(MessageName == Message) hotcat_text_SystemMessage[Message] = MessageContent;
}
}
};
 
Ligne 338 ⟶ 379 :
SectionNumber = parseInt(SectionNumber);
hotcat_Multi_IsSection = SectionNumber;
if(hotcat_OldPageContent === false) hotcat_OldPageContent = hotcat_getOldPageContent(false);
var SectionRegExp = new RegExp("[^=\\|\\{\n]*={1,6}[^=\n]+={1,6}\n", "ig");
var Sections = hotcat_OldPageContent.match(SectionRegExp);
Ligne 1 015 ⟶ 1 055 :
 
window.hotcat_defaultSort_getOld = function(ID){
if(hotcat_OldPageContent == false) hotcat_OldPageContent = hotcat_getOldPageContent(false);
if(!hotcat_DefaultsortAliases[0]) hotcat_getDefaultsortAliases(false);
 
var OldDefaultSpan = document.getElementById(ID);
if(!OldDefaultSpan) return;
Ligne 1 037 ⟶ 1 074 :
 
window.hotcat_defaultSort_getOneOld = function(TargetCategory){
if(hotcat_OldPageContent == false) hotcat_OldPageContent = hotcat_getOldPageContent(false);
var Page = hotcat_OldPageContent;
var Key = "";
Ligne 1 773 ⟶ 1 809 :
}
if(!hotcat_CanEdit) return;
// Récupération contenu page
hotcat_getOldPageContent(true);
// Récupération aliases du {{DEFAULTSORT:}}
hotcat_getDefaultsortAliases(true);
// Récupération des messages système
hotcat_GetMessages(true);
// Définition styles CSS
mw.loader.addStyleTag("" +
Ligne 1 799 ⟶ 1 829 :
// Lancement
mw.loader.implement( "HotCatsModules", HCMmodules, {}, {}, {} );
mw.loader.using("HotCatsModules", function(){ $(hotcathotcat_getDefaultsortAliasesAndMessages); });
}