/*
== Code JavaScript ==
* Durée de la mise à jour :
{{Projet:JavaScript/Script}}
{{Boîte déroulante début|titre=Lumière sur...}}<!--
*/
// --><source lang=javascript>
// <nowiki>
var LumiereSur_Adresse = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";
var LumiereSur_ModeleDefaut = '<noinclude>\n'
+ '{{Lumière sur...\n'
+ '|page=$1\n'
+ '|catégorie=$2\n'
+ '|miseAjour=$3\n'
+ '|nbArticles=$4\n'
+ '}}</noinclude>\n'
var LumiereSur_DebutModele = '<!-- Ce modèle est créé automatiquement par un robot. Lumière sur DEBUT -->\n';
var LumiereSur_FinModele = '<!-- Ce modèle est créé automatiquement par un robot. Lumière sur FIN -->\n';
var LumiereSur_ResumeModif = 'Mise à jour du modèle {{Lumière sur}}';
// Boîtes déroulantes fenêtre de rendu
var LumiereSur_Enrouler = '';
var LumiereSur_Derouler = '';
var LumiereSur_indexBoitesDeroulantes = 0;
// Lancement
if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
addOnloadHook(LumiereSur_makeUpdateLinks);
}
// recherche des modèles de la page et ajout des liens de mise à jour
var LumiereSur_AnalysisDivCount = 0;
function LumiereSur_makeUpdateLinks(){
var Cadres = document.getElementsByTagName('span');
for(s=0;s<Cadres.length;s++){
if( $(Cadres).hasClass('categoryLumiereSur') ){
LumiereSur_AnalysisDivCount++
Cadres.id = 'categoryLumiereSur_'+LumiereSur_AnalysisDivCount;
var ParamCategorie = Cadres.firstChild.innerHTML;
var ParamPage = Cadres.firstChild.title;
var NewButton = '<a href="javascript:LumiereSur_makeControlPanel(\'categoryLumiereSur_'
+LumiereSur_AnalysisDivCount+ '\');" title="Cliquer pour mettre à jour l\'analyse de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >Mettre à jour le modèles {{Lumière sur}}</a><br/>' ;
Cadres.innerHTML += NewButton ;
}
}
}
// vérifie les paramètres du modèle cliqué et crée le tableau de bord
var LumiereSur_Categorie; // Catégorie à analyser
var LumiereSur_PagePortail; // Page à éditer
var LumiereSur_Informations; // Tableau de bord : cadre informations
var LumiereSur_BoutonCancel; // Tableau de bord : cadre bouton pour annuler
var LumiereSur_PageCible; // Tableau de bord : cadre affichage de la page ciblée
var LumiereSur_PageRequete; // Tableau de bord : cadre affichage des requêtes
var LumiereSur_ListeArticles; // Tableau de bord : liste des articles de la catégorie
var LumiereSur_PagesCategorieCible = 1; // Compte des pages de catégorie
var LumiereSur_TotalArticles = 0; // Compte des pages incluses dans la catégorie
var LumiereSur_Result = new Array(); // "Rangées" du futur modèle
function LumiereSur_makeControlPanel(id){
if(!id) return;
var Cadre = document.getElementById(id);
var Bouton = Cadre.firstChild;
LumiereSur_Categorie = Bouton.innerHTML;
LumiereSur_PagePortail = Bouton.title;
if( (LumiereSur_Categorie=='')||(LumiereSur_PagePortail=='') ) return;
window.scrollTo(0,0); void 0;
var TableauDeBord = document.createElement('div');
TableauDeBord.id = 'Tableau_de_bord';
TableauDeBord.innerHTML = ''
+ '<div style="position:absolute;top:0px;left:0px;width:800px;height:40px;padding:5px;font-weight:bold;background-color:white;border:3px double black;" ><ul id="Informations" ></ul></div>'
+ '<div id="Bouton_Cancel" style="position:absolute;top:0px;left:820px;width:600px;height:40px;padding:5px;font-weight:bold;background-color:white;border:3px double black;text-align:center;" ></div>'
+ '<div id="Page_cible" style="position:absolute;top:60px;left:0px;width:800px;height:800px;overflow:scroll;padding: 0.5em;background-color:white;border:3px double black;" ></div>'
+ '<div id="Page_requete" style="position:absolute;top:880px;left:0px;width:800px;height:800px;overflow:scroll;padding: 0.5em;background-color:white;border:3px double black;" ></div>'
+ '<div style="position:absolute;top:60px;left:820px;height:1620px;overflow-y: auto;width:600px; padding: 0.5em;background-color:white;border:3px double black;" >'
+ '<center>Pages de la catégorie <b>'+LumiereSur_Categorie.replace(/Catégorie:/g,'')+'</b></center><hr size="1" style="margin:0.5em;" /><ul id="Liste_Articles"></ul></div>';
document.body.appendChild(TableauDeBord);
TableauDeBord.style.position = 'absolute';
TableauDeBord.style.zIndex = '150';
TableauDeBord.style.top = '20px';
TableauDeBord.style.left = '20px';
LumiereSur_Informations = document.getElementById("Informations");
LumiereSur_BoutonCancel = document.getElementById("Bouton_Cancel");
LumiereSur_PageRequete = document.getElementById("Page_requete");
LumiereSur_PageCible = document.getElementById("Page_cible");
LumiereSur_ListeArticles = document.getElementById("Liste_Articles");
if( (!LumiereSur_PageCible)||(!LumiereSur_BoutonCancel)||(!LumiereSur_ListeArticles)||(!LumiereSur_PageRequete) ){
return;
}else{
LumiereSur_BoutonCancel.innerHTML = '<a href="'+LumiereSur_Adresse + encodeURIComponent(mw.config.get('wgPageName'))+'"title="Arrêter la mise à jour" >'
+'<img src="http://upload.wikimedia.org/wikipedia/commons/0/0c/Crystal_Clear_action_exit.png" height="40" width="40" alt="Arrêter la mise à jour"/></a>';
var ajaxRequest = new XMLHttpRequest();
if (!ajaxRequest){
alert('Méthode ajax non supportée : new XMLHttpRequest()');
return;
}else{
var url = LumiereSur_Adresse + decodeURIComponent(LumiereSur_PagePortail).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'")+ '&action=render' ;
LumiereSur_Informations.innerHTML = '<li>Requête ajax de la page à éditer : '+LumiereSur_PagePortail+'</li><li>' + url + '</li>';
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
var ajaxResponse;
ajaxResponse = ajaxRequest.responseText;
LumiereSur_PageCible.innerHTML = ajaxResponse;
LumiereSur_cleanContent(LumiereSur_PageCible);
var Suretcertain = confirm('Paramètres :'
+ '\n* Page à mettre à jour : - ' + LumiereSur_PagePortail + ' - '
+ '\n* Catégorie : - ' + LumiereSur_Categorie + ' - '
+ '\n\n Lancer la mise à jour ?' );
if(!Suretcertain) return;
LumiereSur_checkCategory(LumiereSur_Adresse + encodeURIComponent(LumiereSur_Categorie) + '&action=render');
}
}
}
}
}
// analyse la catégorie : requête ajax, recopie des liens dans une colonne du tableau de bord, renouvellement si il y a d'autres pages puis lancement de la fonction analyse d'historique
function LumiereSur_checkCategory(Cible){
var AutrePage=false;
var AutrePageAdresse ='';
LumiereSur_PageRequete.innerHTML = '';
var ajaxRequest = new XMLHttpRequest();
if (!ajaxRequest){
alert('Méthode ajax non supportée : new XMLHttpRequest()');
return;
}else{
var url = decodeURIComponent(Cible).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'") ;
LumiereSur_Informations.innerHTML = '<li>Requête ajax de la catégorie : page '+LumiereSur_PagesCategorieCible+'</li><li>' + url + '</li>';
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
var ajaxResponse;
ajaxResponse = ajaxRequest.responseText;
LumiereSur_PageRequete.innerHTML = ajaxResponse;
var ContenuCategorie = getElementWithId(LumiereSur_PageRequete, 'div', 'mw-pages');
var LiensCategorie = ContenuCategorie.getElementsByTagName('li');
for(a=0;a<LiensCategorie.length;a++){
PageCibleCategory = LiensCategorie.innerHTML;
if(PageCibleCategory.indexOf(mw.config.get('wgFormattedNamespaces'))==-1){
LumiereSur_ListeArticles.innerHTML += '<li>' + PageCibleCategory + '</li>';
LumiereSur_TotalArticles++
}
}
LumiereSur_Informations.innerHTML = 'Recherche de page supplémentaires';
var TousLiens = LumiereSur_PageRequete.getElementsByTagName('a');
var length = TousLiens.length;
var dernierLien = TousLiens.href;
if(dernierLien.indexOf("&from=")!=-1){
LumiereSur_PagesCategorieCible++
AutrePageAdresse = dernierLien + '&action=render';
LumiereSur_checkCategory(AutrePageAdresse);
}else{
LumiereSur_checkPage( 0, LumiereSur_TotalArticles)
}
}
}
}
}
// analyse la page : requête ajax, recopie les infos recherchées dans le tableau de bord sous chaque lien puis lancement de la fonction d'édition
var LumiereSur_checkedPages=0;
function LumiereSur_checkPage(Position, LumiereSur_TotalArticles){
var Lien = LumiereSur_ListeArticles.getElementsByTagName('a');
if(!Lien) {
LumiereSur_editPage();
}
LiParent = Lien.parentNode;
TitrePage = Lien.innerHTML.replace(/&/, "&");
TitrePage = TitrePage.split(mw.config.get('wgFormattedNamespaces')+":").join("");
LumiereSur_PageRequete.innerHTML = '';
var ajaxRequest = new XMLHttpRequest();
if (!ajaxRequest){
alert('Méthode ajax non supportée : new XMLHttpRequest()');
return;
}else{
var url = LumiereSur_Adresse + decodeURIComponent(TitrePage).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=edit' ;
LumiereSur_Informations.innerHTML = '<li>Requête ajax de la page ' + Position + ' sur ' + LumiereSur_TotalArticles + '</li><li>' + url + '</li>';
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
var ajaxResponse;
ajaxResponse = ajaxRequest.responseText;
LumiereSur_PageRequete.innerHTML = ajaxResponse;
var ContenuPage = document.getElementById("wpTextbox1").value;
var Introduction = ContenuPage;
if(Introduction.indexOf("==")!=-1){
while((Introduction.indexOf("==")!=-1)){
Introduction = Introduction .substring(0, Introduction.indexOf("=="));
}
if(Introduction.indexOf("<ref>")!=-1) Introduction += '\n<references />\n';
//alert(Introduction);
LumiereSur_Result = '<noinclude>\n'
+ '== ] ==\n'
+ '</noinclude>\n'
+ '| '+(LumiereSur_checkedPages+1)+' = <!-- ------------------------------------------------------------------------- DÉBUT -->\n'
+ Introduction + '\n'
+ '\'\']\'\'<br clear="all" />'
+ '<!-- -------------------------------------------------------------------------- FIN -->\n';
LiParent.innerHTML = LiParent.innerHTML + '<li style="color:green;" >OK</li>';
LumiereSur_checkedPages++
}
LumiereSur_checkPage((Position+1), LumiereSur_TotalArticles);
}
}
}
}
// édition de la page : cherche la présence d'un tableau précédent, crée un tableau et remplace le tableau existant
function LumiereSur_editPage(){
LumiereSur_PageRequete.innerHTML = '';
var ajaxRequest = new XMLHttpRequest();
if (!ajaxRequest){
alert('Méthode ajax non supportée : new XMLHttpRequest()');
return;
}else{
url = LumiereSur_Adresse + decodeURIComponent(LumiereSur_PagePortail).replace(/ /g, "_").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/%27/g, "\'").replace(/&/g, "%26") + '&action=edit';
LumiereSur_Informations.innerHTML = '<li>Édition de la page : ' + LumiereSur_PagePortail + '</li><li>' + url + '</li>';
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
var ajaxResponse;
ajaxResponse = ajaxRequest.responseText;
LumiereSur_PageCible.innerHTML = ajaxResponse;
// -----------------------------------------------------------------------------------------------------------------------
/*
var LumiereSur_ModeleDefaut = '<noinclude>\n'
+ '{{Lumière sur\n'
+ '|page=$1\n'
+ '|catégorie=$2\n'
+ '|miseAjour=$3\n'
+ '|nbArticles=$4\n'
+ '}}</noinclude>\n'
*/
var NouveauModele = LumiereSur_ModeleDefaut;
var Aujourdhui = new Date();
var Minutes = Aujourdhui.getMinutes()
if(Minutes<10){ var ZeroMinutes = "0" ; }else{ var ZeroMinutes = "";}
var Heures = Aujourdhui.getHours()
if(Heures<10){ var ZeroHeures = "0" ; }else{ var ZeroHeures = "";}
var Jour = Aujourdhui.getDate();
if(Jour<10){ var ZeroJour = "0" ; }else{ var ZeroJour = "";}
var Mois = Aujourdhui.getMonth() + 1;
if(Mois<10){ var ZeroMois = "0" ; }else{ var ZeroMois = "";}
var Annee = Aujourdhui.getYear();
if (Annee < 2000){
Annee = Annee + 1900;
}
var LumiereSur_miseAjour = 'le '+ZeroJour+Jour+'/'+ZeroMois+Mois+'/'+Annee+' à '+ZeroHeures+Heures+':'+ZeroMinutes+Minutes;
NouveauModele = NouveauModele.split('$1').join(LumiereSur_PagePortail);
NouveauModele = NouveauModele.split('$2').join(LumiereSur_Categorie);
NouveauModele = NouveauModele.split('$3').join(LumiereSur_miseAjour);
NouveauModele = NouveauModele.split('$4').join(LumiereSur_checkedPages);
NouveauModele += '<includeonly>{{#switch: {{{1}}} </includeonly><noinclude>' + LumiereSur_DebutModele + '<noinclude>';
for(a=0;a<LumiereSur_Result.length;a++){
NouveauModele += LumiereSur_Result;
}
NouveauModele += '<includeonly>}}</includeonly>' + LumiereSur_FinModele + '\n';
var ContenuPage = document.getElementById("wpTextbox1").value;
var AncienResumeModif = document.editform.wpSummary.value;
// -----------------------------------------------------------------------------------------------------------------------
document.getElementById ("wpTextbox1").value = NouveauModele ;
document.editform.wpSummary.value = AncienResumeModif + LumiereSur_ResumeModif ;
LumiereSur_Informations.innerHTML = '<li>Sauvegarde de la page : ' + LumiereSur_PagePortail + '</li>';
var SurEtCertain = confirm('Sauvegarder la modification ?');
if(SurEtCertain) document.editform.submit();
LumiereSur_Informations.innerHTML += '<li>' + decodeURIComponent(action) +'</li>';
}
}
}
}
// * Recherche d'un élement dont on connait l'Id mais non unique, donc sans utiliser document.getElementById()
function getElementWithId( elementParentNode , elementTagName , elementId ){
if(!elementParentNode) elementParentNode = document;
var TheElement = false;
var Elements = elementParentNode.getElementsByTagName(elementTagName);
var elementcount = 0;
while(elementcount<Elements.length){
var Id = Elements.id;
if(Id){
if(Id.indexOf(elementId)!=-1){
TheElement = Elements;
}
}
elementcount++
}
return TheElement;
}
function LumiereSur_cleanContent(element){
if(!element) element = document;
var newContentWrapper = element.getElementsByTagName("div");
var div=0;
while(div<newContentWrapper.length){
if( ($(newContentWrapper).hasClass("portlet")) || ($(newContentWrapper).hasClass("printfooter"))){
newContentWrapper.style.display="none";
}
if (
($(newContentWrapper).hasClass("NavFrame")) // ************************************* Boîtes déroulantes
){
LumiereSur_indexBoitesDeroulantes++;
var NavFrame = newContentWrapper;
NavFrame.title= LumiereSur_Enrouler;
NavFrame.id = 'LumiereSur_NavFrame_' + LumiereSur_indexBoitesDeroulantes;
NavHead = NavFrame.firstChild;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.id = 'LumiereSur_NavToggle_' + LumiereSur_indexBoitesDeroulantes;
NavToggle.href = 'javascript:LumiereSur_toggleCollapsibleTables(' + LumiereSur_indexBoitesDeroulantes + ');';
NavToggle.innerHTML = LumiereSur_Enrouler;
newContentWrapper.insertBefore( NavToggle, NavHead );
var Content = newContentWrapper.getElementsByTagName("div");
for( var c=0;c<Content.length; c++ ) {
if ($(Content).hasClass("NavContent")) {
Content.id = 'LumiereSur_NavContent_' + LumiereSur_indexBoitesDeroulantes;
}
}
LumiereSur_toggleCollapsibleTables(LumiereSur_indexBoitesDeroulantes);
}
Div_Id = newContentWrapper.id;
if(Div_Id){
if((Div_Id=="globalWrapper")||(Div_Id=="column-content")||(Div_Id=="content")||(Div_Id=="bodyContent")||(Div_Id=="article")||(Div_Id=="mw_main")||(Div_Id=="mw_contentwrapper")||(Div_Id=="mmw_content")||(Div_Id=="mmw_contentholder")){
newContentWrapper.id = newContentWrapper.id + '_' + div;
}
if((Div_Id=="siteNotice")||(Div_Id=="p-personal")||(Div_Id=="topbar")||(Div_Id=="quickbar")||(Div_Id=="column-one")||(Div_Id=="mw_portlets")||(Div_Id=="page-base")||(Div_Id=="head-base")||(Div_Id=="head")||(Div_Id=="panel")||(Div_Id=="footer")||(Div_Id=="previewnote")){
newContentWrapper.style.display= "none";
}
}
div++
}
}
function LumiereSur_toggleCollapsibleTables(index) {
var NavToggle = document.getElementById("LumiereSur_NavToggle_" + index);
var NavContent = document.getElementById("LumiereSur_NavContent_" + index);
var NavFrame = document.getElementById("LumiereSur_NavFrame_" + index);
if( (!NavToggle) || (!NavContent) ) return;
var Caption = NavToggle.innerHTML;
if (Caption == LumiereSur_Enrouler) {
NavContent.style.display = 'none';
NavToggle.innerHTML = LumiereSur_Derouler;
NavFrame.title = LumiereSur_Derouler;
} else if (Caption == LumiereSur_Derouler) {
NavContent.style.display = 'block';
NavToggle.innerHTML = LumiereSur_Enrouler;
NavFrame.title = LumiereSur_Enrouler;
}
}
// </nowiki>
//</source>{{Boîte déroulante fin}}