Utilisateur:Arh'lupia/GlobalManager.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.// {{Catégorisation JS|GlobalManager}} <pre><nowiki>
/***************************************************************************************************************
* GLOBAL-MANAGER *
* Pour installer et configurer ce gestionnaire : Voir [[Discussion utilisateur:Dr Brains/GlobalManager.js]] *
***************************************************************************************************************/
////////////////////////////// PARTIE PERSONNALISABLE (1/8) : DÉFINITION DU SKIN ACTIF ET DES SKINS SUPPORTÉS //////////////////////////////////////////////////////////////////////
var UserNamespace= mw.config.get('wgFormattedNamespaces')[2].replace(/ /g,"_");
if( skin == "monobook" ){
var cspSkin = "monobook";
var cspSkinalt1 = "modern";
var cspSkinalt2 = "vector";
var cspSkinalt3 = "cologneblue";
var cspSkinalt4 = "chick";
var cspSkinalt5 = "simple";
var cspSkinalt6 = "nostalgia";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "modern" ){
var cspSkin = "modern";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "vector";
var cspSkinalt3 = "cologneblue";
var cspSkinalt4 = "chick";
var cspSkinalt5 = "simple";
var cspSkinalt6 = "nostalgia";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "vector" ){
var cspSkin = "vector";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "cologneblue";
var cspSkinalt4 = "chick";
var cspSkinalt5 = "simple";
var cspSkinalt6 = "nostalgia";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "cologneblue" ){
var cspSkin = "cologneblue";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "chick";
var cspSkinalt5 = "simple";
var cspSkinalt6 = "nostalgia";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "chick" ){
var cspSkin = "chick";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "cologneblue";
var cspSkinalt5 = "simple";
var cspSkinalt6 = "nostalgia";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "nostalgia" ){
var cspSkin = "nostalgia";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "cologneblue";
var cspSkinalt5 = "chick";
var cspSkinalt6 = "simple";
var cspSkinalt7 = "standard";
var cspSkinalt8 = "myskin";
}
if( skin == "standard" ){
var cspSkin = "standard";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "cologneblue";
var cspSkinalt5 = "chick";
var cspSkinalt6 = "simple";
var cspSkinalt7 = "nostalgia";
var cspSkinalt8 = "myskin";
}
if( skin == "myskin" ){
var cspSkin = "myskin";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "cologneblue";
var cspSkinalt5 = "chick";
var cspSkinalt6 = "simple";
var cspSkinalt7 = "nostalgia";
var cspSkinalt8 = "standard";
}
if( skin == "simple" ){
var cspSkin = "simple";
var cspSkinalt1 = "monobook";
var cspSkinalt2 = "modern";
var cspSkinalt3 = "vector";
var cspSkinalt4 = "cologneblue";
var cspSkinalt5 = "chick";
var cspSkinalt6 = "myskin";
var cspSkinalt7 = "nostalgia";
var cspSkinalt8 = "standard";
}
var cspEntryPage = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkin + '.js'; //Pages JS où le script s'active
var cspEntryPagealt1 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt1 + '.js';
var cspEntryPagealt2 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt2 + '.js';
var cspEntryPagealt3 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt3 + '.js';
var cspEntryPagealt4 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt4 + '.js';
var cspEntryPagealt5 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt5 + '.js';
var cspEntryPagealt6 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt6 + '.js';
var cspEntryPagealt7 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt7 + '.js';
var cspEntryPagealt8 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt8 + '.js';
var cspCssPage = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkin + '.css'; //Pages CSS où le script s'active
var cspCssPagealt1 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt1 + '.css';
var cspCssPagealt2 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt2 + '.css';
var cspCssPagealt3 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt3 + '.css';
var cspCssPagealt4 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt4 + '.css';
var cspCssPagealt5 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt5 + '.css';
var cspCssPagealt6 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt6 + '.css';
var cspCssPagealt7 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt7 + '.css';
var cspCssPagealt8 = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' + cspSkinalt8 + '.css';
////////////////////////////// PARTIE PERSONNALISABLE (2/8) : PARAMÈTRES ///////////////////////////////////////////////////////////////////////////////////////////////////////////
//Adresses du site d'acceuil:
var SiteURL = mw.config.get('wgServer') + '/wiki/' ;
//* Adresse normale
var SiteURLbis = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' ;
//* Adresse en cours d'action
//Adresses du site où se trouve les scripts:
var SiteLangFrom = ':fr:' ;
var SiteURLFrom = 'http://fr.wikipedia.org/wiki/' ;
//* Adresse normale
var SiteURLFrombis = 'http://fr.wikipedia.org/w/index.php?title=' ;
//* Adresse en cours d'action
var cspCssRepos = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' ;
//Répertoire par défaut des pages personnelles css
var cspCssLinks = SiteURLFrom + cspCssRepos ;
//Url du répertoire par défaut des pages personnelles css
var cspScriptRepos = UserNamespace+':' + mw.config.get('wgUserName').replace(/ /g,"_") + '/' ;
//Répertoire par défaut des scripts personnels
var cspScriptLinks = SiteURLFrom + cspScriptRepos ;
//Url du répertoire par défaut
var cspGadgetsRepos = 'MediaWiki:Gadget-' ;
//Répertoire des gadgets
var cspGadgetsLinks = SiteURLFrom + cspGadgetsRepos ;
//Url du répertoire des gadgets
var cspMainScript = 'Utilisateur:' + mw.config.get('wgUserName').replace(/ /g,"_") + '/GlobalManager.js' ;
//Page où est copié le code du manager
var cspSummary = 'Mise à jour avec [[' + SiteLangFrom + cspMainScript + '|GlobalManager]]' ;
//Résumé de modification JS
var cspCssSummary = 'Mise à jour avec [[' + SiteLangFrom + cspMainScript + '|GlobalManager]]' ;
//Résumé de modification CSS
var cspCssStartComment = '/\* jncsp-start';
//Commentaire inséré au début du .css
var cspCssStartComment2 = ' La section ci-dessous est produite par le script : [' + SiteURLFrom + cspMainScript + ' ext] \*/' ;
//Commentaire supplémentaire inséré au début du .css
var cspCssConfigComment = '/\* jncsp-config' ;
//Commentaire de configuration du .css
var cspCssEndComment = '/\* jncsp-end \*/' ;
//Commentaire inséré à la fin du .css
var cspStartComment = '// jncsp-start' ;
//Commentaire inséré au début du .js
var cspStartComment2 = ' La section ci-dessous est produite par le script : [' + SiteURLFrom + cspMainScript + ' ext]' ;
//Commentaire supplémentaire inséré au début du .js
var cspConfigComment = '// jncsp-config' ;
//Commentaire de configuration du .js
var cspEndComment = '// jncsp-end' ;
//Commentaire inséré à la fin du .js
var SautLigne = true ;
// false pour ne pas revenir à la ligne à chaque coche
var ID_Div = "siteNotice" ;
// id du div remplacé par le script
var Manager_Div = "mw-GlobalManager" ;
// id du <fieldset> créé par le script
////////////////////////////// PARTIE PERSONNALISABLE (3/8) : DÉFINITION CSS /////////////////////////////////////////////////////////////////////////////////////////////////////////////
var cspCssFragments = [
/**********************************************************************************************************************************************
* id = un identifiant unique, généralement le nom de la fonction principale *
* type = 0 (défaut) : inclusion d'une page .css *
* 1 : le contenu de la variable page est recopié dans la page css *
* 2 : Titre de chapitre niveau 2 *
* 3 : Titre de chapitre niveau 3 *
* 4 : Titre de chapitre niveau 4 *
* 5 : Titre de chapitre niveau 5 *
* 6 : Titre de chapitre niveau 6 *
* 8 : Texte normal (HTML) *
* page = nom de la page où le css à inclure est stocké *
* rev = numéro de révision de la page (si inclusion d'une page archivée) *
* desc = description du css *
**********************************************************************************************************************************************/
{ desc: 'Comment ça marche ?', type: 2 },
{ desc: 'Insertion d\'une page personnelle', type: 3 },
{ id: 'setup-BacASable',
page: cspCssRepos + 'BacASable.css',
type: 0,
desc: '<a href=' + cspCssLinks + 'BacASable.css>BacASable</a>'
},
{ id: 'setup-MagicSidebox',
page: 'Utilisateur:Dr_Brains/MagicSidebox.css',
type: 0,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MagicSidebox.css>MagicSidebox</a>'
},
{ id: 'setup-MenuActions',
page: 'Utilisateur:Dr_Brains/MenuActions.css',
type: 0,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MenuActions.css>MenuActions</a>'
},
{ desc: 'Composition', type: 3 },
{ desc: 'Liens', type: 4 },
{ id: 'setup-Liens-Roses',
page: 'a {text-decoration: none;color:#ff00ff;background: none;}',
type: 1,
desc: 'Rose '
},
{ id: 'setup-Liens-Rouges',
page: 'a {text-decoration: none;color:#ff0000;background: none;}',
type: 1,
desc: 'Rouge '
},
{ id: 'setup-Liens-Bleus',
page: 'a {text-decoration: none;color:#0000ff;background: none;}',
type: 1,
desc: 'Bleu '
},
{ id: 'setup-Liens-Verts',
page: 'a {text-decoration: none;color:#00ff00;background: none;}',
type: 1,
desc: 'Vert '
},
{ id: 'setup-Liens-Noirs',
page: 'a {text-decoration: none;color:#000000;background: none;}',
type: 1,
desc: 'Noir '
},
{ desc: 'Liens visités', type: 4 },
{ id: 'setup-Liens-Visités-Roses',
page: 'a:visited {color: #ff00ff;}',
type: 1,
desc: 'Rose '
},
{ id: 'setup-Liens-Visités-Rouges',
page: 'a:visited {color: #ff0000;}',
type: 1,
desc: 'Rouge '
},
{ id: 'setup-Liens-Visités-Bleus',
page: 'a:visited {color: #0000ff;}',
type: 1,
desc: 'Bleu '
},
{ id: 'setup-Liens-Visités-Verts',
page: 'a:visited {color: #00ff00;}',
type: 1,
desc: 'Vert '
},
{ id: 'setup-Liens-Visités-Noirs',
page: 'a:visited {color: #ffffff;}',
type: 1,
desc: 'Noir '
},
{ desc: 'Liens actif', type: 4 },
{ id: 'setup-Liens-Actifs-Roses',
page: 'a:active {color: #ff00ff;}',
type: 1,
desc: 'Rose '
},
{ id: 'setup-LiensActifs-Rouges',
page: 'a:active {color: #ff0000;}',
type: 1,
desc: 'Rouge '
},
{ id: 'setup-Liens-Actifs-Bleus',
page: 'a:active {color: #0000ff;}',
type: 1,
desc: 'Bleu '
},
{ id: 'setup-Liens-Actifs-Verts',
page: 'a:active {color: #00ff00;}',
type: 1,
desc: 'Vert '
},
{ id: 'setup-Liens-Actifs-Noirs',
page: 'a:active {color: #ffffff;}',
type: 1,
desc: 'Noir '
},
];
////////////////////////////// PARTIE PERSONNALISABLE (4/8) : DÉFINITION JS /////////////////////////////////////////////////////////////////////////////////////////////////////////////
var cspFragments = [
/**********************************************************************************************************************************************
* id = un identifiant unique, généralement le nom de la fonction principale *
* type = 0 (défaut) : Le script sera entièrement recopié dans la page. (Peut se révéler problématique avec certains caractères spéciaux.) *
* 1 : Le script sera inclus par un élément <script> (solution préférable) *
* 2 : Titre de chapitre niveau 2 *
* 3 : Titre de chapitre niveau 3 *
* 4 : Titre de chapitre niveau 4 *
* 5 : Titre de chapitre niveau 5 *
* 6 : Titre de chapitre niveau 6 *
* 8 : Texte normal (HTML) *
* page = nom de la page où le script à inclure est stocké *
* rev = numéro de révision de la page (si inclusion d'une page archivée) *
* deps = liste des dépendances, à ignorer si il n'y en a pas *
* desc = description du script *
**********************************************************************************************************************************************/
{ desc: 'Bots', type: 4 }, ///////////////////////////////////////
{ id: 'setup-PageAuHasard',
page: 'Utilisateur:Dr_Brains/PageAuHasard.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/PageAuHasard.js>PageAuHasard</a>'
+' : Création automatique d\'un modèle de lien "page au hasard" à partir des pages d\'une catégorie.'
},
{ id: 'setup-LumiereSur',
page: 'Utilisateur:Dr_Brains/LumiereSur.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/LumiereSur.js>LumiereSur</a>'
+' : Création automatique d\'un modèle de page "Lumière sur..." à partir des pages d\'une catégorie.'
},
{ id: 'setup-VerifEval',
page: 'Utilisateur:Dr_Brains/VerifEval.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/VerifEval.js>VerifEval</a>'
+' : Création automatique d\'un tableau triable de l\'évaluation des pages d\'une catégorie.'
},
{ id: 'setup-MaintenanceCategorie',
page: 'Utilisateur:Dr_Brains/MaintenanceCategorie.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MaintenanceCategorie.js>MaintenanceCategorie</a>'
+' : Création automatique d\'un tableau triable avec diverses informations sur les pages d\'une catégorie.'
},
{ id: 'setup-ImagesUtilisees',
page: 'Utilisateur:Dr_Brains/ImagesUtilisees.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ImagesUtilisees.js>ImagesUtilisees</a>'
+' : Création automatique d\'un tableau triable des images utilisées par les pages d\'une catégorie.'
},
{ id: 'setup-ArticlesRecents',
page: 'Utilisateur:Dr_Brains/ArticlesRecents.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ArticlesRecents.js>ArticlesRecents</a>'
+' : Création automatique d\'un tableau triable des dernières modifications des pages d\'une catégorie.'
},
{ id: 'setup-ArticlesManquants',
page: 'Utilisateur:Dr_Brains/ArticlesManquants.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ArticlesManquants.js>ArticlesManquants</a>'
+' : Création automatique d\'un tableau triable des pages demandées à partir d\'une catégorie.'
},
{ id: 'setup-BandeauxPortailsCategorieMulti',
page: 'Utilisateur:Dr_Brains/BandeauxPortailsCategorieMulti.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxPortailsCategorieMulti.js>BandeauxPortailsCategorieMulti</a>'
+' : Ajout/retrait/modification automatique de bandeaux de portail aux pages d\'une catégorie et de ses sous-catégories.'
},
{ id: 'setup-BandeauxPortailsBOT',
page: 'Utilisateur:Dr_Brains/BandeauxPortailsBOT.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxPortailsBOT.js>BandeauxPortailsBOT</a>'
+ ' : Ajout ou retrait rapide de bandeaux de portails. Script spécifique pour bot.'
},
{ id: 'setup-BandeauxPortailsAutoRedirect',
page: 'Utilisateur:Dr_Brains/BandeauxPortailsAutoRedirect.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxPortailsAutoRedirect.js>BandeauxPortailsAutoRedirect</a>'
+ ' : Redirection automatique vers <a href="'+mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join('Special:Randompage') +'">Page au Hasard</a> pour trouver des pages sans bandeaux de portail.'
},
{ desc: 'Scripts opérationnels', type: 4 }, ///////////////////////////////////////
{ id: 'setup-Arrondis',
page: 'Utilisateur:Dr_Brains/Arrondis.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Arrondis.js>Arrondis</a>'
+' : Arrondit les angles de l\'interface.'
},
{ id: 'setup-GlobalWatchlist',
page: 'Utilisateur:Dr_Brains/GlobalWatchlist.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/GlobalWatchlist.js>GlobalWatchlist</a>'
+ ' : Liste de suivi globale.'
},
{ id: 'setup-BlocNote',
page: 'Utilisateur:Dr_Brains/BlocNote.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BlocNote.js>BlocNote</a>'
+' : Ajout d\'un ou plusieurs bloc-notes sur les bords de la page.'
},
{ id: 'setup-CollapseSidebox',
page: 'Utilisateur:Dr_Brains/CollapseSidebox.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/CollapseSidebox.js>CollapseSidebox</a>'
+ ' : Permet d\'enrouler les panneaux de la barre de navigation gauche.'
},
{ id: 'setup-wikEd',
page: 'Utilisateur:Dr_Brains/wikEd.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/wikEd.js>wikEd</a>'
+ ' : Édition améliorée.'
},
{ id: 'setup-Edit',
page: 'Utilisateur:Dr_Brains/Edit.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Edit.js>Edit</a>'
+ ' : Divise la zone d\'édition en plusieurs parties.'
},
{ id: 'setup-BandeauxEbauches',
page: 'Utilisateur:Dr_Brains/BandeauxEbauches.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxEbauches.js>BandeauxEbauches</a>'
+ ' : Ajout/retrait/modification rapide de bandeaux d\'ébauche.'
},
{ id: 'setup-BandeauxPortails',
page: 'Utilisateur:Dr_Brains/BandeauxPortails.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxPortails.js>BandeauxPortails</a>'
+ ' : Ajout/retrait/modification rapide de bandeaux de portails.'
},
{ id: 'setup-HotCatsPerso',
page: 'Utilisateur:Dr_Brains/HotCatsPerso.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/HotCatsPerso.js>HotCatsPerso</a>'
+ ' : Ajout ou retrait rapide de catégories <sup>(<a href=http://fr.wikipedia.org/wiki/MediaWiki:Gadget-HotCats.js>Gadget</a>)</sup>.'
},
{ id: 'setup-MenuClicDroit_Dev',
page: 'Utilisateur:Dr_Brains/MenuClicDroit_Dev.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MenuClicDroit_Dev.js>MenuClicDroit_Dev</a>'
},
{ id: 'setup-SpecialPagePreview',
page: 'Utilisateur:Dr_Brains/SpecialPagePreview.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SpecialPagePreview.js>SpecialPagePreview</a>'
+ ' : Permet de prévisualiser chaque entrée de diverses <a href=http://fr.wikipedia.org/wiki/Special:Specialpages>Pages spéciales</a>.'
},
{ id: 'setup-MessageWatchlist',
page: 'Utilisateur:Dr_Brains/MessageWatchlist.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MessageWatchlist.js>MessageWatchlist</a>'
+ ' : Affiche la dernière modification de la liste de suivi en haut de la page.'
},
{ id: 'setup-ListeSuivi',
page: 'Utilisateur:Dr_Brains/ListeSuivi.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ListeSuivi.js>ListeSuivi</a>'
+ ' : Permet de sélectionner facilement les pages à supprimer de la liste de suivi.'
},
{ id: 'setup-NukeDeluxe',
page: 'Utilisateur:Dr_Brains/NukeDeluxe.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/NukeDeluxe.js>NukeDeluxe</a>'
+ ' : Permet de sélectionner/dé-sélectionner facilement les pages à supprimer de la page <a href="'+mw.config.get('wgServer')+'/wiki/Spécial:Nuke">Spécial:Nuke</a>.'
},
{ id: 'setup-UndeleteDeluxe',
page: 'Utilisateur:Dr_Brains/UndeleteDeluxe.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/UndeleteDeluxe.js>UndeleteDeluxe</a>'
+ ' : Permet de sélectionner/dé-sélectionner facilement les versions à restaurer.'
},
{ id: 'setup-MoveDeluxe',
page: 'Utilisateur:Dr_Brains/MoveDeluxe.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MoveDeluxe.js>MoveDeluxe</a>'
+ ' : Améliore la page spéciale de renommage : pages liées et résumés de renommage prédéfinis.'
},
{ id: 'setup-DoubleActions',
page: 'Utilisateur:Dr_Brains/DoubleActions.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/DoubleActions.js>DoubleActions</a>'
+ ' : Ajoute un onglet \"Modifier\" et \"Historique\" pour la page associée.'
},
{ id: 'setup-MenuActions',
page: 'Utilisateur:Dr_Brains/MenuActions.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MenuActions.js>MenuActions</a>'
+' : Transforme les onglets en menus déroulants.'
},
{ id: 'setup-MenuClicDroit',
page: 'Utilisateur:Dr_Brains/MenuClicDroit.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MenuClicDroit.js>MenuClicDroit</a>'
+ ' : Procure un menu contextuel complet (clic droit).'
},
{ id: 'setup-Remplace',
page: 'Utilisateur:Dr_Brains/Remplace.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Remplace.js>Remplace</a>'
+' : Ajout d\'un bouton pour remplacer une chaîne de caractère par une autre.'
},
{ id: 'setup-AcaiToolbar',
page: 'Utilisateur:Dr_Brains/AcaiToolbar.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/AcaiToolbar.js>AcaiToolbar</a>'
+' : Ajoute l\'ancienne barre d\'outils au\-dessus de la nouvelle (bêta Açai).'
},
{ id: 'setup-FixSidebar',
page: 'Utilisateur:Dr_Brains/FixSidebar.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/FixSidebar.js>FixSidebar</a>'
+ ' : Fixe la position de la barre de navigation gauche, des onglets et des liens personnels.'
},
{ id: 'setup-MagicSidebox',
page: 'Utilisateur:Dr_Brains/MagicSidebox.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/MagicSidebox.js>MagicSidebox</a>'
+ ' : Panneaux de la barre de navigation gauche enroulables et réorganisables (skin Monobook).'
},
{ id: 'setup-VectorMagicSidebox',
page: 'Utilisateur:Dr_Brains/VectorMagicSidebox.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/VectorMagicSidebox.js>VectorMagicSidebox</a>'
+ ' : Panneaux de la barre de navigation gauche enroulables et réorganisables (skin Vector).'
},
{ id: 'setup-SysopPortlet',
page: 'Utilisateur:Dr_Brains/SysopPortlet.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SysopPortlet.js>SysopPortlet</a>'
+' : Ajoute un panneau avec des liens utiles pour l\'administration.'
},
{ id: 'setup-TranslatePortlet',
page: 'Utilisateur:Dr_Brains/TranslatePortlet.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/TranslatePortlet.js>TranslatePortlet</a>'
+' : Ajoute un panneau dans la barre de gauche pour traduire un terme en différentes langues.'
},
{ id: 'setup-SuiviRC',
page: 'Utilisateur:Dr_Brains/SuiviRC.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SuiviRC.js>SuiviRC</a>'
+' : Suivi dans un panneau de la barre de gauche des articles les plus modifiés actuellement (mise à jour à intervalle régulier (100 secondes).'
},
{ id: 'setup-Evaluation',
page: 'Utilisateur:Dr_Brains/Evaluation.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Evaluation.js>Evaluation</a>'
+' : Permet d\'évaluer rapidement un article.'
},
{ id: 'setup-SourceCliquable',
page: 'Utilisateur:Dr_Brains/SourceCliquable.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SourceCliquable.js>SourceCliquable</a>'
+ ' : Rend les liens cliquables à l\intérieur d\'une balise source.'
},
{ id: 'setup-BandeauxFaciles',
page: 'Utilisateur:Dr_Brains/BandeauxFaciles.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BandeauxFaciles.js>BandeauxFaciles</a>'
+ ' : Permet d\'ajouter des bandeaux au début d\'une page ou d\'une section.'
},
{ id: 'setup-Scroll',
page: 'Utilisateur:Dr_Brains/Scroll.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Scroll.js>Scroll</a>'
+ ' : Ajout de flèches pour atteindre le sommet ou le bas de la page.'
},
{ id: 'setup-TestExist',
page: 'Utilisateur:Dr_Brains/TestExist.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/TestExist.js>TestExist</a>'
+ ' : Ajout en dessous de la zone de recherche d\'un champ pour tester l\'existence d\'une page.'
},
{ id: 'setup-Popups',
page: 'Utilisateur:Dr_Brains/Popups.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Popups.js>Popups</a>'
+ ' : Ouverture de pop-up lors du passage de la souris au dessus d\'un lien.'
},
{ id: 'setup-ReferencesPopUp',
page: 'Utilisateur:Dr_Brains/ReferencesPopUp.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ReferencesPopUp.js>ReferencesPopUp</a>'
+ ' : Références en pop-up au survol de la souris.'
},
{ id: 'setup-Consult',
page: 'Utilisateur:Dr_Brains/Consult.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Consult.js>Consult</a>'
+ ' : Ajout d\'un compteur de consultation de la page courante.'
},
{ id: 'setup-SuiviCat',
page: 'Utilisateur:Dr_Brains/SuiviCat.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SuiviCat.js>SuiviCat</a>'
+ ' : Permet le suivi d\'une ou plusieurs catégories.'
},
{ id: 'setup-myName',
page: 'Utilisateur:Dr_Brains/myName.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/myName.js>myName</a>'
+ ' : Permet de surligner son nom d\'utilisateur.'
},
{ id: 'setup-PageSize',
page: 'Utilisateur:Dr_Brains/PageSize.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/PageSize.js>PageSize</a>'
+ ' : Ajoute dans le footer la taille de la page courante.'
},
{ id: 'setup-LiveRC',
page: 'User:EDUCA33E/LiveRC.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/User:EDUCA33E/LiveRC>LiveRC</a>'
+ ' : Modifications récentes en temps réel.'
},
{ id: 'setup-demineur',
page: 'Utilisateur:Dr_Brains/demineur.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Delhovlyn/Démineur>Démineur</a>'
+ ' : Jeu du démineur.'
},
{ id: 'setup-WindowPatrol',
page: 'Utilisateur:Dr_Brains/WindowPatrol.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/WindowPatrol.js>WindowPatrol</a>'
+ ' : Patrouille dans une nouvelle fenêtre.'
},
{ id: 'setup-SkinManager',
page: 'Utilisateur:Dr_Brains/SkinManager.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/SkinManager.js>SkinManager</a>'
+ ' : Divers gadgets concernant l\'affichage.'
},
{ id: 'setup-ColorSection',
page: 'Utilisateur:Dr_Brains/ColorSection.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/ColorSection.js>ColorSection</a>'
+ ' : Colore la section visée lors du survol de la souris sur un lien de section \"modifier\".'
},
{ id: 'setup-Video',
page: 'Utilisateur:Dr_Brains/Video.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Video.js>Video</a>'
+ ' : Remplace le logo par un clip vidéo issu de DailyMotion, YouTube ou Google.'
},
{ desc: 'Scripts en Tests', type: 4 }, ///////////////////////////////////////
{ id: 'setup-Twinkle',
page: 'Utilisateur:Dr_Brains/Twinkle.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Twinkle.js>Twinkle</a>'
},
{ id: 'setup-BacASable',
page: 'Utilisateur:Dr_Brains/BacASable.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/BacASable.js>Bac à Sable</a>'
},
{ id: 'setup-QuickEdit',
page: 'Utilisateur:Dr_Brains/QuickEdit.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/QuickEdit.js>QuickEdit</a>'
+ ' : Permet d\'éditer la page en sélectionnant simplement du texte.'
},
{ id: 'setup-Jeux',
page: 'Utilisateur:Dr_Brains/Jeux.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Jeux.js>Jeux</a>'
+ ' : Jeux WidgetBox. (<a href=http://fr.wikipedia.org/wiki/Utilisateur:'+mw.config.get('wgUserName').replace(/ /g,"_")+'/Jeux>Salle de jeux</a>)'
},
{ desc: 'Scripts obsolètes ou archivés', type: 4 }, ///////////////////////////////////////
{ id: 'setup-FullScreen',
page: 'Utilisateur:Dr_Brains/FullScreen.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/FullScreen.js>Fullscreen</a>'
+ ' : Permet de basculer du mode normal au mode plein écran.'
},
{ id: 'setup-favoris',
page: 'Utilisateur:Dr_Brains/favoris.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/favoris.js>favoris</a>'
+ ' : Ajoute une boîte favoris dans la barre de gauche.'
},
{ id: 'setup-CacheLiens',
page: 'Utilisateur:Dr_Brains/CacheLiens.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/CacheLiens.js>CacheLiens</a>'
+ ' : Permet de masquer les liens de la page.'
},
{ id: 'setup-Google',
page: 'Utilisateur:Dr_Brains/Google.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Google.js>Google</a>'
+ ' : Ajoute des onglets pour effectuer une recherche Google basée sur la titre de la page courante.'
},
{ id: 'setup-TailleEdit',
page: 'Utilisateur:Dr_Brains/TailleEdit.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/TailleEdit.js>TailleEdit</a>'
+ ' : Permet de moduler la taille de la zone d\'édition.'
},
{ id: 'setup-Balise',
page: 'Utilisateur:Dr_Brains/Balise.js',
type: 1,
desc: '<a href=http://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/Balise.js>Balise</a>'
+ ' : Permet d\'insérer n\'importe quelle balise.'
},
];
//////////////////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////
// LANCEMENT DU BOUZIN ...
$(RunManager);
if(
(
mw.config.get('wgPageName').match( cspEntryPage ) ||
mw.config.get('wgPageName').match( cspEntryPagealt1 )||
mw.config.get('wgPageName').match( cspEntryPagealt2 )||
mw.config.get('wgPageName').match( cspEntryPagealt3 )||
mw.config.get('wgPageName').match( cspEntryPagealt4 )||
mw.config.get('wgPageName').match( cspEntryPagealt5 )||
mw.config.get('wgPageName').match( cspEntryPagealt6 )||
mw.config.get('wgPageName').match( cspEntryPagealt7 )||
mw.config.get('wgPageName').match( cspEntryPagealt8 )
) && mw.config.get('wgAction')=="view" ){
addOnloadHook(clientSidePreferencesLoadFunction);
}
if(
(
mw.config.get('wgPageName').match( cspCssPage ) ||
mw.config.get('wgPageName').match( cspCssPagealt1 )||
mw.config.get('wgPageName').match( cspCssPagealt2 )||
mw.config.get('wgPageName').match( cspCssPagealt3 )||
mw.config.get('wgPageName').match( cspCssPagealt4 )||
mw.config.get('wgPageName').match( cspCssPagealt5 )||
mw.config.get('wgPageName').match( cspCssPagealt6 )||
mw.config.get('wgPageName').match( cspCssPagealt7 )||
mw.config.get('wgPageName').match( cspCssPagealt8 )
) && mw.config.get('wgAction')=="view" ){
addOnloadHook(CSSclientSidePreferencesLoadFunction);
}
function cspCSSGetForm(CSS_oldconfig){
var f, i, CSS_res;
//////////////////////////////////////// PARTIE PERSONNALISABLE (5/8) : ENTÊTE CSS /////////////////////////////////////////////////////////////////////////////////////////////////////
CSS_res = '<fieldset id="'+Manager_Div+'"><legend><span style="font-size:150%;">Sélectionner les styles à ajouter à la page : <b>' + mw.config.get('wgPageName').replace(/_/g," ") + '</b> '
+ '<sup><small><a href=http://fr.wikipedia.org/wiki/Discussion_Utilisateur:Dr_Brains/GlobalManager.js>(Aide)</a></small></sup></span></legend>'
+ '<table style=\"float:right;clear:right;\">'
+ '<td>'
+ '<div style=\"background:#EEE;\">'
+ '<center><h5><a href=\"http://fr.wikiversity.org/wiki/Cascading_Style_Sheet\">Styles CSS</a></h5></center>'
+ '<div style=\"font-size: 95%;background-color: white;color: black;border-collapse: collapse;border: 1px solid #aaa;padding: 0 .8em .3em .5em;\"><ul>'
+ '<li><b><a href=' + SiteURL + cspCssPage + '>' + cspSkin + '</a></b></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt1 + '>' + cspSkinalt1 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt2 + '>' + cspSkinalt2 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt3 + '>' + cspSkinalt3 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt4 + '>' + cspSkinalt4 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt5 + '>' + cspSkinalt5 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt6 + '>' + cspSkinalt6 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt7 + '>' + cspSkinalt7 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt8 + '>' + cspSkinalt8 + '</a></li>'
+ '</ul></div></div>'
+ '</td>'
+ '<td>'
+ '<div style=\"background:#EEE;\">'
+ '<center><h5><a href=\"http://fr.wikiversity.org/wiki/JavaScript\">Scripts JS</a></h5></center>'
+ '<div style=\"font-size: 95%;background-color: white;color: black;border-collapse: collapse;border: 1px solid #aaa;padding: 0 .8em .3em .5em;\"><ul>'
+ '<li><b><a href=' + SiteURL + cspEntryPage + '>' + cspSkin + '</a></b></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt1 + '>' + cspSkinalt1 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt2 + '>' + cspSkinalt2 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt3 + '>' + cspSkinalt3 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt4 + '>' + cspSkinalt4 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt5 + '>' + cspSkinalt5 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt6 + '>' + cspSkinalt6 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt7 + '>' + cspSkinalt7 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt8 + '>' + cspSkinalt8 + '</a></li>'
+ '</ul></div></div>'
+ '</td>'
+ '</table>'
+ '<form>\n';
//////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////
for (i=0; i<cspCssFragments.length; i++) {
f = cspCssFragments[i];
if (!f.desc) continue;
if (f.type == 2) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += '<h2><span class="mw-headline">' + f.desc
+ '</span></h2>\n'
+ '<p>\n';
} else {
if (f.type == 3) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += '<h3><span class="mw-headline">' + f.desc
+ '</span></h3>\n'
+ '<p>\n';
} else {
if (f.type == 4) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += '<h4><span class="mw-headline">' + f.desc
+ '</span></h4>\n'
+ '<p>\n';
} else {
if (f.type == 5) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += '<h5><span class="mw-headline">' + f.desc
+ '</span></h5>\n'
+ '<p>\n';
} else {
if (f.type == 6) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += '<h6><span class="mw-headline">' + f.desc
+ '</span></h6>\n'
+ '<p>\n';
} else {
if (f.type == 8) {
if (i != 0) CSS_res += '</p>\n';
CSS_res += f.desc + '<p>\n';
} else {
if (f.type == 1) {
CSS_res += '<input type="checkbox" name="' + f.id + '" ';
if (CSS_oldconfig.indexOf(f.id) != -1)
CSS_res += 'checked ';
CSS_res += '/> ' + f.desc + '\n';
if(SautLigne)CSS_res += '<br/>';
} else {
CSS_res += '<input type="checkbox" name="' + f.id + '" ';
if (CSS_oldconfig.indexOf(f.id) != -1)
CSS_res += 'checked ';
CSS_res += '/> ' + f.desc + '<br/>\n';
}
}
}
}
}
}
}
}
if ( mw.config.get('wgPageName').match( cspMainScript )){
CSS_res += '<br /><br /><input type="button" onclick="window.location.reload();" value="<Générer le style> Masquer le menu" /></p>\n'
+ '</form></fieldset>\n';
} else {
CSS_res += '<br /><br /><input type="button" onclick="cspCSSProcessForm();" value="Générer le style" /></p>\n'
+ '</form></fieldset>\n';
}
return CSS_res;
}
function cspGetForm(oldconfig){
var f, i, res;
//////////////////////////////////////// PARTIE PERSONNALISABLE (6/8) : ENTÊTE JS /////////////////////////////////////////////////////////////////////////////////////////////////////
res = '<fieldset id="'+Manager_Div+'"><legend><span style="font-size:150%;">Sélectionner les scripts à ajouter à la page : <b>' + mw.config.get('wgPageName').replace(/_/g," ") + '</b> '
+ '<sup><small><a href=http://fr.wikipedia.org/wiki/Discussion_Utilisateur:Dr_Brains/GlobalManager.js>(Aide)</a></small></sup></span></legend>'
+ '<table style=\"float:right;clear:right;\">'
+ '<td>'
+ '<div style=\"background:#EEE;\">'
+ '<center><h5><a href=\"http://fr.wikiversity.org/wiki/Cascading_Style_Sheet\">Styles CSS</a></h5></center>'
+ '<div style=\"font-size: 95%;background-color: white;color: black;border-collapse: collapse;border: 1px solid #aaa;padding: 0 .8em .3em .5em;\"><ul>'
+ '<li><b><a href=' + SiteURL + cspCssPage + '>' + cspSkin + '</a></b></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt1 + '>' + cspSkinalt1 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt2 + '>' + cspSkinalt2 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt3 + '>' + cspSkinalt3 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt4 + '>' + cspSkinalt4 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt5 + '>' + cspSkinalt5 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt6 + '>' + cspSkinalt6 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt7 + '>' + cspSkinalt7 + '</a></li>'
+ '<li><a href=' + SiteURL + cspCssPagealt8 + '>' + cspSkinalt8 + '</a></li>'
+ '</ul></div></div>'
+ '</td>'
+ '<td>'
+ '<div style=\"background:#EEE;\">'
+ '<center><h5><a href=\"http://fr.wikiversity.org/wiki/JavaScript\">Scripts JS</a></h5></center>'
+ '<div style=\"font-size: 95%;background-color: white;color: black;border-collapse: collapse;border: 1px solid #aaa;padding: 0 .8em .3em .5em;\"><ul>'
+ '<li><b><a href=' + SiteURL + cspEntryPage + '>' + cspSkin + '</a></b></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt1 + '>' + cspSkinalt1 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt2 + '>' + cspSkinalt2 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt3 + '>' + cspSkinalt3 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt4 + '>' + cspSkinalt4 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt5 + '>' + cspSkinalt5 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt6 + '>' + cspSkinalt6 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt7 + '>' + cspSkinalt7 + '</a></li>'
+ '<li><a href=' + SiteURL + cspEntryPagealt8 + '>' + cspSkinalt8 + '</a></li>'
+ '</ul></div></div>'
+ '</td>'
+ '</table>'
+ '<form>\n';
//////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for (i=0; i<cspFragments.length; i++) {
f = cspFragments[i];
if (!f.desc) continue;
if (f.type == 2) {
if (i != 0) res += '</p>\n';
res += '<h2><span class="mw-headline">' + f.desc
+ '</span></h2>\n'
+ '<p>\n';
} else {
if (f.type == 3) {
if (i != 0) res += '</p>\n';
res += '<h3><span class="mw-headline">' + f.desc
+ '</span></h3>\n'
+ '<p>\n';
} else {
if (f.type == 4) {
if (i != 0) res += '</p>\n';
res += '<h4><span class="mw-headline">' + f.desc
+ '</span></h4>\n'
+ '<p>\n';
} else {
if (f.type == 5) {
if (i != 0) res += '</p>\n';
res += '<h5><span class="mw-headline">' + f.desc
+ '</span></h5>\n'
+ '<p>\n';
} else {
if (f.type == 6) {
if (i != 0) res += '</p>\n';
res += '<h6><span class="mw-headline">' + f.desc
+ '</span></h6>\n'
+ '<p>\n';
} else {
if (f.type == 8) {
if (i != 0) res += '</p>\n';
res += f.desc + '<p>\n';
} else {
res += '<input type="checkbox" name="' + f.id + '" ';
if (oldconfig.indexOf(f.id) != -1)
res += 'checked ';
res += '/> ' + f.desc + '\n';
if(SautLigne)res += '<br/>';
}
}
}
}
}
}
}
if ( mw.config.get('wgPageName').match( cspMainScript )){
res += '<br /><br /><input type="button" onclick="window.location.reload();" value="<Générer le script> Masquer le menu" /></p>\n'
+ '</form></fieldset>\n';
} else {
res += '<br /><br /><input type="button" onclick="cspProcessForm();" value="Générer le script" /></p>\n'
+ '</form></fieldset>\n';
}
return res;
}
//*********************************
function RunManager(){
//////////////////////////////////////// PARTIE PERSONNALISABLE (7/8) : PETITS LIENS PERMANENTS (1/2) /////////////////////////////////////////////////////////////////////////////////////////////////////
if((cspSkin == "monobook")||
(cspSkin == "vector")||
(cspSkin == "modern") ||
(cspSkin == "chick")||
(cspSkin == "myskin")||
(cspSkin == "simple")){
var ManagerLinks = ""
+ "<li id=\"pt-manager\" ><a href=" + SiteURLFrom + cspMainScript + ">GlobalManager</a></li>"
+ "<li id=\"pt-csspage\" ><a href=" + SiteURL + cspCssPage + ">" + cspSkin + ".css</a></li>"
+ "<li id=\"pt-jspage\" ><a href=" + SiteURL + cspEntryPage + ">" + cspSkin + ".js</a></li>";
var ManagerTestLinks = ""
if(mw.config.get('wgPageName').match( cspMainScript )){
ManagerTestLinks += "<li id=\"pt-cssmenu\" ><a href=\"javascript:CSSclientSidePreferencesLoadFunction()\">Menu CSS</a></li>"
+ "<li id=\"pt-jsmenu\" ><a href=\"javascript:clientSidePreferencesLoadFunction()\">Menu JS</a></li>";
}
//////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var conteneur = document.getElementById("p-personal").getElementsByTagName('ul')[0];
conteneur.innerHTML = conteneur.innerHTML + ManagerLinks + ManagerTestLinks ;
}
//////////////////////////////////////// PARTIE PERSONNALISABLE (7/8) : PETITS LIENS PERMANENTS (2/2) /////////////////////////////////////////////////////////////////////////////////////////////////////
if((cspSkin == "cologneblue")||
( skin == "standard" )||
( skin == "nostalgia" )){
var ManagerLinks = "<small><center>"
+ "<a href=" + SiteURL + cspCssPage + ">" + cspSkin + ".css</a> • "
+ "<sup><a href=" + SiteURL + cspMainScript + ">GlobalManager</a></sup> • "
+ "<a href=" + SiteURL + cspEntryPage + ">" + cspSkin + ".js</a>"
+ "</center></small>";
var ManagerTestLinks = ""
if(mw.config.get('wgPageName').match( cspMainScript )){
ManagerTestLinks += "<br /><center><a href=\"javascript:CSSclientSidePreferencesLoadFunction()\">Menu CSS</a> • "
+ "<a href=\"javascript:clientSidePreferencesLoadFunction()\">Menu JS</a></center>";
}
//////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var ManagerlinkDiv = document.createElement("div");
ManagerlinkDiv.innerHTML = ManagerLinks + ManagerTestLinks;
var contentNode = document.getElementById("article");
contentNode.insertBefore(ManagerlinkDiv, contentNode.firstChild);
ManagerlinkDiv.id = "ManagerLink";
}
}
function cspReplacePage(x){
//////////////////////////////////////// PARTIE PERSONNALISABLE (8/8) : AFFICHAGE DU MENU /////////////////////////////////////////////////////////////////////////////////////////////////////
if(( skin == "monobook" )||( skin == "vector" )||( skin == "chick" )||( skin == "myskin" )||( skin == "simple" )){
var el = document.getElementById('content').childNodes[0];
}
if( skin == "modern" ){
var TopBoxesContainer = document.getElementById('mw_contentholder');
var TopBoxes = TopBoxesContainer.getElementsByTagName('div');
for(i=0;i<TopBoxes.length;i++){
if ($(TopBoxes[i]).hasClass( "mw-topboxes" )){
var el = TopBoxes[i].childNodes[0];
}
}
}
if(( skin == "cologneblue" )||( skin == "nostalgia" )||( skin == "standard" )){
var el = document.getElementById('article').childNodes[0];
}
while (el.nextSibling) {
el = el.nextSibling;
if ((el.tagName && el.tagName.toLowerCase() == 'div')&&(el.id==ID_Div))
break;
}
el.parentNode.replaceChild(x, el);
el.style.display='block';
}
function cspCSSReplacePage(x){
if(( skin == "monobook" )||( skin == "vector" )||( skin == "chick" )||( skin == "myskin" )||( skin == "simple" )){
var CSS_el = document.getElementById('content').childNodes[0];
}
if( skin == "modern" ){
var TopBoxesContainer = document.getElementById('mw_contentholder');
var TopBoxes = TopBoxesContainer.getElementsByTagName('div');
for(i=0;i<TopBoxes.length;i++){
if ($(TopBoxes[i]).hasClass( "mw-topboxes" )){
var CSS_el = TopBoxes[i].childNodes[0];
}
}
}
if(( skin == "cologneblue" )||( skin == "nostalgia" )||( skin == "standard" )){
var CSS_el = document.getElementById('article').childNodes[0];
}
while (CSS_el.nextSibling) {
CSS_el = CSS_el.nextSibling;
if ((CSS_el.tagName && CSS_el.tagName.toLowerCase() == 'div')&&(CSS_el.id==ID_Div))
break;
}
CSS_el.parentNode.replaceChild(x, CSS_el);
}
//////////////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Construct an XMLHttpRequest **************************************************************************/
function cspCSSConstructHttpRequest()
{
var CSS_res;
// Copied from http://developer.mozilla.org/en/docs/AJAX:Getting_Started
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
CSS_res = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
CSS_res = new ActiveXObject("Microsoft.XMLHTTP");
}else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return CSS_res;
}
/**************************************************************************************************************/
function getCSSXmlObj(req) {
if (req.responseXML && req.responseXML.documentElement)
return req.responseXML;
// Note: this doesn't work in konqueror, and the natural fix
// var doc=document.implementation.createDocument(); doc.loadXML(req.responseXML)
// results in a segfault :-(
try {
var CSS_doc = new ActiveXObject("Microsoft.XMLDOM");
CSS_doc.async = "false";
CSS_doc.loadXML(req.responseText);
}
catch (err) {
return null;
}
return CSS_doc;
}
/* Checks whether the request has finished successfully req = XMLHtmlRequest Returns true or false **************************/
function cspCSSRequestDone(req)
{
if (req.readyState != 4) {
// still not ready
return false;
}
if (window.http_request.status != 200) {
alert('Il y a eu un problème avec la requête.');
return false;
}
return true;
}
// Source: http://www.albionresearch.com/misc/urlencode.php ************************************************************
function URLEncode( plaintext )
{
// The Javascript escape and unescape functions do not correspond
// with what browsers actually do...
var SAFECHARS = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()";
var HEX = "0123456789ABCDEF";
var encoded = "";
for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+"; // x-www-urlencoded, rather than %20
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {
alert( "Le caractère Unicode '" + ch + "' ne peut pas être encodé en URL standard.\n" +
"(l'encodage URL supporte seulement les caractères de 8 bits.)\n" +
"Un espace (+) sera substitué." );
encoded += "+";
} else {
encoded += "%";
encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} // for
return encoded;
}
/* Returns dictionary with form data *****************************************************************/
function cspCSSFormData(CSS_form) {
var CSS_res = new Object();
for (var i=0; i<CSS_form.elements.length; ++i) {
var CSS_el = CSS_form.elements[i];
var CSS_data;
if (!CSS_el.name)
continue;
if (CSS_el.tagname && CSS_el.tagname == 'textarea')
CSS_data = CSS_el.childNodes[0].CSS_data;
else if (CSS_el.checked)
CSS_data = ((CSS_el.checked == 'checked') ? 'on' : 'off');
else if (CSS_el.value)
CSS_data = CSS_el.value;
else
continue;
CSS_res[CSS_el.name] = CSS_data;
}
return CSS_res;
}
/* Returns index of fragment with given id in fraglist, or -1 if it is not there. ******************************************/
function cspCSSFindFragment(id, fraglist)
{
for (var n=0; n<fraglist.length; n++) {
if (fraglist[n].id == id)
return n;
}
return -1;
}
/* Add fragment f to the list of fragments to be downloaded */
function cspCSSAddFragment(f)
{
var d, pos, i, tmp;
/* If f is already on the list, we're done */
if (cspCSSFindFragment(f.id, window.fragments) != -1)
return;
pos = -1;
if (f.deps) {
/* Add all dependencies */
for (i=0; i<f.deps.length; i++) {
tmp = cspCSSFindFragment(f.deps[i], cspCssFragments);
if (tmp == -1)
alert("Erreur dans cspCSSAddFragment : Impossible de trouver " + f.deps[i]);
cspCSSAddFragment(cspCssFragments[tmp]);
}
/* Find the last dependency */
for (i=0; i<f.deps.length; i++) {
tmp = cspCssFindFragment(f.deps[i], window.fragments);
if (tmp>pos)
pos = tmp;
}
}
/* Add f after all its dependencies */
window.fragments.splice(pos+1, 0, f);
}
/**************************************************************************************************** Main script ****************/
/* This function is called if the user visits the entry page. */
function CSSclientSidePreferencesLoadFunction()
{
var CSS_p = document.createElement("div");
CSS_p.id=ID_Div;
CSS_p.innerHTML = "Veuillez patienter pendant l\'analyse de votre configuration …";
cspCSSReplacePage(CSS_p);
window.http_request = cspCSSConstructHttpRequest();
window.http_request.onreadystatechange = cspCSSReceivedOldScript;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=raw'; /////////////////////////////////////////////////////////////////////////////////////////////////////////// Analyse
window.http_request.open('GET', url, true);
window.http_request.send(null);
}
/* This function is called when the old user script is received. ***********************************************/
function cspCSSReceivedOldScript()
{
if (!cspCSSRequestDone(window.http_request))
return;
window.oldscript = window.http_request.responseText;
var CSS_oldconfig = [];
var i = window.oldscript.indexOf(cspCssConfigComment);
if (i != -1) {
var i2 = window.oldscript.indexOf('\n', i);
var CSS_oldconfig = window.oldscript.substring(i+cspCssConfigComment.length+1, i2).split(' ');
}
cspCSSDisplayForm(CSS_oldconfig);
}
/* Creates and display the HTML form. ****************************************************************************************************************/
function cspCSSDisplayForm(CSS_oldconfig)
{
var cspCssForm = document.createElement("form");
cspCssForm.innerHTML = cspCSSGetForm(CSS_oldconfig);
cspCssForm.name = 'cspCssForm';
cspCssForm.style.padding="1em";
cspCSSReplacePage(cspCssForm);
}
/* This function is called when the user presses the "Generate script" button. **************************************************************************
It collects all fragments that should be downloaded in window.fragments
and starts building the new script in window.newscript */
function cspCSSProcessForm()
{
window.fragments = new Array();
var CSS_newconfig = '';
for (var i=0; i<cspCssFragments.length; i++) {
var f = cspCssFragments[i];
if (f.desc && f.type <= 1 && document.cspCssForm[f.id].checked) {
cspCSSAddFragment(f);
CSS_newconfig += ' ' + f.id;
}
}
window.newscript = '';
var i = window.oldscript.indexOf(cspStartComment);
if (i != -1)
window.newscript += window.oldscript.substr(0, i)
window.newscript += cspCssStartComment + cspCssStartComment2 + '\n';
window.newscript += cspCssConfigComment + CSS_newconfig + " \*/" + '\n\n';
var s = '';
window.newscript += s;
window.bottom = document.cspCssForm;
cspCSSGetFragments();
}
/* Go through the fragments listed in window.fragments and ************************************************************************
build window.newscript */
function cspCSSGetFragments()
{
if (window.fragments.length == 0) {
cspCSSFinalizeScript();
return;
}
var f = window.fragments[0];
if (f.type == 1)
cspCSSImportFragment(f);
else
cspCSSImportPage(f)
}
/* Callback for HTTP request initiated in cspDownloadFragment() **********************************************************************************************/
function cspCSSReceivedFragment()
{
if (!cspCSSRequestDone(window.http_request))
return;
var msg = document.createTextNode(' OK');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
var txt = window.http_request.responseText;
var tmp = /\/\/[ ]*<pre><nowiki>[ ]*\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /\/\/[ ]*<\/nowiki><\/pre>[ ]*(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
else {
tmp = /\/\*.*<pre>.*\*\/\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /\/\*.*<\/pre>.*\*\/(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
else {
tmp = /<pre>[ ]*\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /<\/pre>[ ]*(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
}
}
window.newscript += '\n/\* Copie de [[' + (window.fragments[0].page).replace('_', ' ')
+ ', revision ' + window.fragments[0].rev + '\n\n' + txt + ' \*/\n';
window.fragments = window.fragments.slice(1);
cspCSSGetFragments();
}
/* *********************************************************************************************/
function cspCSSImportFragment(f)
{
var msg = document.createTextNode('Copie de ' + f.page);
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
window.newscript += '\n/\* Copie de ' + (window.fragments[0].page).replace('_', ' ') + ' \*/ \n\n'
+ f.page ;
window.fragments = window.fragments.slice(1);
cspCSSGetFragments();
}
/* *********************************************************************************************/
function cspCSSImportPage(f)
{
var msg = document.createTextNode('Importation de ' + f.page);
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
window.newscript += '\n/\* Importation de [[' + (window.fragments[0].page).replace('_', ' ') + ']] \*/\n\n'
+ '@import url(' + SiteURLFrombis + f.page + '&action=raw&ctype=text/css); \n';
window.fragments = window.fragments.slice(1);
cspCSSGetFragments();
}
/****************************************************************************************************/
function cspCSSFinalizeScript()
{
window.newscript += '\n' + cspCssEndComment;
var i = window.oldscript.indexOf(cspCssEndComment);
if (i != -1)
window.newscript += window.oldscript.substr(i+cspCssEndComment.length)
cspCSSLoadEditPage();
}
/****************************************************************************************************/
function cspCSSLoadEditPage()
{
var msg = document.createTextNode('Chargement de votre style ...');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.http_request = cspCSSConstructHttpRequest();
window.http_request.overrideMimeType('text/xml');
window.http_request.onreadystatechange = cspCSSReceivedEditPage;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=edit'; /////////////////////////////////////////////////////////////////////////////////////////////////////////// Édition
window.http_request.open('GET', url, true);
window.http_request.send(null);
}
/****************************************************************************************************/
function cspCSSReceivedEditPage()
{
if (!cspCSSRequestDone(window.http_request))
return;
var doc = window.http_request.responseXML;
var editform = doc.getElementById('editform');
var CSS_data = cspCSSFormData(editform);
CSS_data['wpTextbox1'] = window.newscript;
CSS_data['wpSummary'] = cspCssSummary;
CSS_data['wpMinoredit'] = 'on';
CSS_data['wpPreview'] = null;
CSS_data['wpDiff'] = null;
var msg = document.createTextNode(' Sauvegarde de votre style ...');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.http_request = cspCSSConstructHttpRequest();
window.http_request.overrideMimeType('text/xml');
window.http_request.onreadystatechange = cspCSSEditPageSaved;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=submit'; /////////////////////////////////////////////////////////////////////////////////////////////////////////// Sauvegarde
window.http_request.open('POST', url, true);
window.http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
CSS_sendMe = '';
for (var name in CSS_data) {
if (CSS_data[name]) {
if (CSS_sendMe.length > 0)
CSS_sendMe += '&';
CSS_sendMe += URLEncode(name) + '=' + URLEncode(CSS_data[name]);
}
}
window.http_request.send(CSS_sendMe);
}
/****************************************************************************************************/
function cspCSSEditPageSaved()
{
if (!cspCSSRequestDone(window.http_request))
return;
var msg = document.createTextNode(' OK');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
window.location.reload();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SCRIPT
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/***********************************************************************************************************************************
* GLOBAL-SCRIPT-MANAGER *
* Permet de gérer une liste de scripts à la manière des gadgets mais pour n'importe quelle page. *
* Pour installer et configurer ce gestionnaire : Voir [[Discussion utilisateur:Dr Brains/GlobalScriptManager.js]] *
***********************************************************************************************************************************/
/* Construct an XMLHttpRequest */
function cspConstructHttpRequest()
{
var res;
// Copied from http://developer.mozilla.org/en/docs/AJAX:Getting_Started
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
res = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
res = new ActiveXObject("Microsoft.XMLHTTP");
}else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return res;
}
function getXmlObj(req) {
if (req.responseXML && req.responseXML.documentElement)
return req.responseXML;
// Note: this doesn't work in konqueror, and the natural fix
// var doc=document.implementation.createDocument(); doc.loadXML(req.responseXML)
// results in a segfault :-(
try {
var doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(req.responseText);
}
catch (err) {
return null;
}
return doc;
}
/* Checks whether the request has finished successfully
req = XMLHtmlRequest
Returns true or false */
function cspRequestDone(req)
{
if (req.readyState != 4) {
// still not ready
return false;
}
if (window.http_request.status != 200) {
alert('Il y a eu un problème avec la requête.');
return false;
}
return true;
}
// Source: http://www.albionresearch.com/misc/urlencode.php
function URLEncode( plaintext )
{
// The Javascript escape and unescape functions do not correspond
// with what browsers actually do...
var SAFECHARS = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()";
var HEX = "0123456789ABCDEF";
var encoded = "";
for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+"; // x-www-urlencoded, rather than %20
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {
alert( "Le caractère Unicode '" + ch + "' ne peut pas être encodé en URL standard.\n" +
"(l'encodage URL supporte seulement les caractères de 8 bits.)\n" +
"Un espace (+) sera substitué." );
encoded += "+";
} else {
encoded += "%";
encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} // for
return encoded;
}
/* Returns dictionary with form data */
function cspFormData(form) {
var res = new Object();
for (var i=0; i<form.elements.length; ++i) {
var el = form.elements[i];
var data;
if (!el.name)
continue;
if (el.tagname && el.tagname == 'textarea')
data = el.childNodes[0].data;
else if (el.checked)
data = ((el.checked == 'checked') ? 'on' : 'off');
else if (el.value)
data = el.value;
else
continue;
res[el.name] = data;
}
return res;
}
/* Returns index of fragment with given id in fraglist, or -1 if it is not there. */
function cspFindFragment(id, fraglist)
{
for (var n=0; n<fraglist.length; n++) {
if (fraglist[n].id == id)
return n;
}
return -1;
}
/* Add fragment f to the list of fragments to be downloaded */
function cspAddFragment(f)
{
var d, pos, i, tmp;
/* If f is already on the list, we're done */
if (cspFindFragment(f.id, window.fragments) != -1)
return;
pos = -1;
if (f.deps) {
/* Add all dependencies */
for (i=0; i<f.deps.length; i++) {
tmp = cspFindFragment(f.deps[i], cspFragments);
if (tmp == -1)
alert("Erreur dans cspAddFragment : Impossible de trouver " + f.deps[i]);
cspAddFragment(cspFragments[tmp]);
}
/* Find the last dependency */
for (i=0; i<f.deps.length; i++) {
tmp = cspFindFragment(f.deps[i], window.fragments);
if (tmp>pos)
pos = tmp;
}
}
/* Add f after all its dependencies */
window.fragments.splice(pos+1, 0, f);
}
/********** Main script **********/
/* This function is called if the user visits the entry page. */
function clientSidePreferencesLoadFunction()
{
var p = document.createElement("div");
p.id=ID_Div;
p.innerHTML = "Veuillez patienter pendant l'analyse de votre configuration …";
cspReplacePage(p);
window.http_request = cspConstructHttpRequest();
window.http_request.onreadystatechange = cspReceivedOldScript;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=raw'; ////////////////////////////////////////////*********************************************
window.http_request.open('GET', url, true);
window.http_request.send(null);
}
/* This function is called when the old user script is received. */
function cspReceivedOldScript()
{
if (!cspRequestDone(window.http_request))
return;
window.oldscript = window.http_request.responseText;
var oldconfig = [];
var i = window.oldscript.indexOf(cspConfigComment);
if (i != -1) {
var i2 = window.oldscript.indexOf('\n', i);
var oldconfig = window.oldscript.substring(i+cspConfigComment.length+1, i2).split(' ');
}
cspDisplayForm(oldconfig);
}
/* Creates and display the HTML form. */
function cspDisplayForm(oldconfig)
{
var cspForm = document.createElement("form");
cspForm.innerHTML = cspGetForm(oldconfig);
cspForm.name = 'cspForm';
cspForm.style.padding="1em";
cspReplacePage(cspForm);
}
/* This function is called when the user presses the "Generate script" button.
It collects all fragments that should be downloaded in window.fragments
and starts building the new script in window.newscript */
function cspProcessForm()
{
window.fragments = new Array();
var newconfig = '';
for (var i=0; i<cspFragments.length; i++) {
var f = cspFragments[i];
if (f.desc && f.type <= 1 && document.cspForm[f.id].checked) {
cspAddFragment(f);
newconfig += ' ' + f.id;
}
}
window.newscript = '';
var i = window.oldscript.indexOf(cspStartComment);
if (i != -1)
window.newscript += window.oldscript.substr(0, i)
window.newscript += cspStartComment + cspStartComment2 + '\n';
window.newscript += cspConfigComment + newconfig + '\n\n';
var s = 'document.write(\'<script type="text/javascript" src="' + SiteURLFrombis + cspMainScript + '&action=raw&ctype=text/javascript"></script>\'); \n';
window.newscript += s;
window.bottom = document.cspForm;
cspGetFragments();
}
/* Go through the fragments listed in window.fragments and
build window.newscript */
function cspGetFragments()
{
if (window.fragments.length == 0) {
cspFinalizeScript();
return;
}
var f = window.fragments[0];
if (f.type == 1)
cspImportFragment(f);
else
cspDownloadFragment(f)
}
/* Download a JavaScript fragment to be included in the user script */
function cspDownloadFragment(f)
{
var msg = document.createTextNode('Copie de ' + f.page + ' ...');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.http_request = cspConstructHttpRequest();
window.http_request.onreadystatechange = cspReceivedFragment;
var url = + SiteURLFrombis + f.page + '&oldid=' + f.rev + '&action=raw&ctype=text/javascript';
window.http_request.open('GET', url, true);
window.http_request.send(null);
}
/* Callback for HTTP request initiated in cspDownloadFragment() */
function cspReceivedFragment()
{
if (!cspRequestDone(window.http_request))
return;
var msg = document.createTextNode(' OK');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
var txt = window.http_request.responseText;
var tmp = /\/\/[ ]*<pre><nowiki>[ ]*\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /\/\/[ ]*<\/nowiki><\/pre>[ ]*(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
else {
tmp = /\/\*.*<pre>.*\*\/\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /\/\*.*<\/pre>.*\*\/(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
else {
tmp = /<pre>[ ]*\n/.exec(txt);
if (tmp)
txt = txt.slice(tmp.index + tmp[0].length);
tmp = /<\/pre>[ ]*(\n|$)/.exec(txt);
if (tmp)
txt = txt.slice(0, tmp.index);
}
}
window.newscript += '\n// Copie de [[' + (window.fragments[0].page).replace('_', ' ')
+ ']], revision ' + window.fragments[0].rev + '\n\n' + txt + '\n';
window.fragments = window.fragments.slice(1);
cspGetFragments();
}
/* Import JavaScript using a <script> tag */
function cspImportFragment(f)
{
var msg = document.createTextNode('Importation de ' + f.page);
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
window.newscript += '\n// Importation de [[' + (window.fragments[0].page).replace('_', ' ') + ']]\n\n'
+ 'document.write(\'<script type="text/javascript" src="' + SiteURLFrombis + f.page + '&action=raw&ctype=text/javascript"></script>\'); \n';
window.fragments = window.fragments.slice(1);
cspGetFragments();
}
function cspFinalizeScript()
{
window.newscript += '\n' + cspEndComment;
var i = window.oldscript.indexOf(cspEndComment);
if (i != -1)
window.newscript += window.oldscript.substr(i+cspEndComment.length)
cspLoadEditPage();
}
function cspLoadEditPage()
{
var msg = document.createTextNode('Chargement de votre script ...');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.http_request = cspConstructHttpRequest();
window.http_request.overrideMimeType('text/xml');
window.http_request.onreadystatechange = cspReceivedEditPage;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=edit'; ////////////////////////////////////////******************************************************
window.http_request.open('GET', url, true);
window.http_request.send(null);
}
function cspReceivedEditPage()
{
if (!cspRequestDone(window.http_request))
return;
var doc = window.http_request.responseXML;
var editform = doc.getElementById('editform');
var data = cspFormData(editform);
data['wpTextbox1'] = window.newscript;
data['wpSummary'] = cspSummary;
data['wpMinoredit'] = 'on';
data['wpPreview'] = null;
data['wpDiff'] = null;
var msg = document.createTextNode(' Sauvegarde de votre script ...');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.http_request = cspConstructHttpRequest();
window.http_request.overrideMimeType('text/xml');
window.http_request.onreadystatechange = cspEditPageSaved;
var url = SiteURLbis + mw.config.get('wgPageName') + '&action=submit'; ///////////////////////////////////******************************************
window.http_request.open('POST', url, true);
window.http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
sendMe = '';
for (var name in data) {
if (data[name]) {
if (sendMe.length > 0)
sendMe += '&';
sendMe += URLEncode(name) + '=' + URLEncode(data[name]);
}
}
window.http_request.send(sendMe);
}
function cspEditPageSaved()
{
if (!cspRequestDone(window.http_request))
return;
var msg = document.createTextNode(' OK');
window.bottom = window.bottom.parentNode.insertBefore(msg, bottom.nextSibling);
window.bottom = window.bottom.parentNode.insertBefore(document.createElement('BR'), bottom.nextSibling);
window.location.reload();
}
/****************************************************************************************************/
//</nowiki></pre>