Utilisateur:Dr Brains/favoris.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./******************************************************************************************************************
* - FAVORIS.JS - *
* *
* Fonction : *
** Ajoute un panneau supplémentaire au dessus de la boîte de recherche permettant de lister des pages favorites. *
** La liste est stockée localement dans un cookie. *
* *
* Tests : *
** Monobook et Firefox 3 ou 3.5 : OK *
** Monobook et Internet Explorer 8 : OK *
** Moderne et Firefox 3.5 : OK *
** Moderne et Internet Explorer 7 : OK *
** Vector et Firefox 3.5 : OK *
** Vector et Internet Explorer 7 : OK *
** Autres skins : en cours d'adaptation. *
* *
* Crédits : *
** Code original de Andy Cook [http://cookandy.com/downloads/mediawiki/andy-s-mediawiki-skin ext] *
** Adapté en gadget par Dr Brains [https://fr.wikipedia.org/wiki/Utilisateur:Dr_Brains/favoris.js ext] *
* *
* {{Projet:JavaScript/Script}} *
******************************************************************************************************************/
/////////////////////////////// PARTIE PERSONNALISABLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// POPUPS //////////
// popup titre //
var PopupTitle_fav = "Cliquer pour ajouter la page courante aux favoris" ;
// popup aide (?) //
var PopupHelp_fav = "INFORMATION : Cette liste est stockée sur un cookie local. Si vous effacez vos cookies, cette liste disparaîtra." ;
// popup retrait [-] //
var PopupRemove_fav = "Cliquer pour retirer de la liste la page : " ;
//////////////////////////////// TEXTES ///////////
// titre de la boîte //
var Title_fav = "Ajouter aux favoris" ;
// texte de la boîte vide //
var NoFavorites_fav = "Vous n'avez pas de favoris." ;
/////////////////////////////// PARAMÈTRES /////////////////
// début de l'URL des liens //
var Path_fav = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split("$1").join(''); ;
// affichage de l'aide (icône (?) à droite du titre) //
var ShowHelp_fav = true;
/////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
addOnloadHook(AddFavoritesPortlet) ;
// * création du panneau *
function AddFavoritesPortlet() {
var span_fav = document.createElement( "span" );
span_fav.setAttribute( "title",PopupTitle_fav );
span_fav.setAttribute( "fixdabsx","3");
span_fav.setAttribute( "requireclick","off");
var a_fav = document.createElement( "a" );
a_fav.setAttribute( "href", "javascript:storePage()" );
var title_fav = document.createTextNode( Title_fav ) ;
a_fav.appendChild( title_fav ) ;
span_fav.appendChild( a_fav ) ;
if (ShowHelp_fav == true){
var spanhelp_fav = document.createElement( "span" );
spanhelp_fav.setAttribute( "title", PopupHelp_fav );
spanhelp_fav.setAttribute( "fixdabsx","3");
spanhelp_fav.setAttribute( "requireclick","off");
spanhelp_fav.setAttribute( "style","cursor:pointer");
var help_fav = document.createTextNode( " (?)" ) ;
spanhelp_fav.appendChild( help_fav ) ;
}
var h5_fav = document.createElement( "h5" );
h5_fav.appendChild( span_fav ) ;
if (ShowHelp_fav == true){
h5_fav.appendChild( spanhelp_fav ) ;
}
var ul_fav = document.createElement( "ul" );
ul_fav.id = "FavoriList";
// * insertion du panneau (suivant le skin actif) *
var skin = mw.config.get('skin');
if((skin=="monobook")||(skin=="chick")||(skin=="myskin")||(skin=="simple")){
var Portlet_ClassName = "portlet";
var PBody_ClassName = "pBody";
var Element_Id = 'p-search';
}else if(skin=="modern"){
var Portlet_ClassName = "portlet";
var PBody_ClassName = "pBody";
var Element_Id = 'p-search';
}else if(skin=="vector"){
var Portlet_ClassName = "portal";
var PBody_ClassName = "body";
var Element_Id = 'p-tb'
}else{
var Portlet_ClassName = false;
}
if(!Portlet_ClassName) return;
var Element = document.getElementById(Element_Id);
if(!Element) return;
var div_fav = document.createElement( "div" );
div_fav.className = PBody_ClassName ;
div_fav.appendChild( ul_fav ) ;
var portlet_fav = document.createElement( "div" ) ;
portlet_fav.className = Portlet_ClassName ;
portlet_fav.id = "p-fav" ;
portlet_fav.appendChild( h5_fav ) ;
portlet_fav.appendChild( div_fav ) ;
Element.parentNode.insertBefore( portlet_fav, Element);
UpdateFavoritesList("FavoriList");
}
// * mise à jour de la liste de favoris *
function UpdateFavoritesList(UL){
var ul_fav = document.getElementById(UL);
if(!ul_fav) return;
while(ul_fav.firstChild){ul_fav.removeChild(ul_fav.firstChild);}
var pageListTitle = getCookie("pageListTitle");
if (pageListTitle != "" && pageListTitle != null) {
pSplitTitle = pageListTitle.split(";")
for (a=0;a<pSplitTitle.length;a++) {
if (pSplitTitle[a] != '' && pSplitTitle[a] != 'null') {
var Title = decodeURIComponent(pSplitTitle[a]).replace(/_/g," ");
var EncodedTitle = encodeURIComponent(Title);
var li_fav = document.createElement( "li" );
li_fav.id = "n-fav_"+[a] ;
li_fav.className = "favorite" ;
var spanaCR_fav = document.createElement( "span" );
spanaCR_fav.setAttribute( "title", PopupRemove_fav + Title );
spanaCR_fav.setAttribute( "fixdabsx","3");
spanaCR_fav.setAttribute( "requireclick","off");
spanaCR_fav.setAttribute( "style","cursor:pointer");
var aCR_fav = document.createElement( "a" );
aCR_fav.setAttribute( "href", "javascript:removePage('" + Title + "')" );
var smallR_fav = document.createElement( "small" );
var font_fav = document.createElement( "font" );
font_fav.setAttribute( "color", "red" );
var textaCR_fav = document.createTextNode( "[-]");
font_fav.appendChild( textaCR_fav );
smallR_fav.appendChild( font_fav );
aCR_fav.appendChild( smallR_fav );
spanaCR_fav.appendChild( aCR_fav ) ;
var spanaC_fav = document.createElement( "span" );
spanaC_fav.setAttribute( "title", "" + Title + "");
spanaC_fav.setAttribute( "fixdabsx","3");
spanaC_fav.setAttribute( "requireclick","off");
spanaC_fav.setAttribute( "style","cursor:pointer");
var aC_fav = document.createElement( "a" );
aC_fav.setAttribute( "href", "" + Path_fav + Title +"");
var smallT_fav = document.createElement( "small" );
Raccourci = pSplitTitle[a]
Raccourci = Raccourci.replace(/Spécial:/g,"Sp:");
Raccourci = Raccourci.replace(/Utilisateur:/g,"Ut:");
Raccourci = Raccourci.replace(/Wikipédia:/g,"Wp:");
Raccourci = Raccourci.replace(/Fichier:/g,"F:");
Raccourci = Raccourci.replace(/Catégorie:/g,"Cat:");
Raccourci = Raccourci.replace(/Aide:/g,"A:");
Raccourci = Raccourci.replace(/MediaWiki:/g,"MW:");
Raccourci = Raccourci.replace(/Modèle:/g,"Mod:");
Raccourci = Raccourci.replace(/Portail:/g,"Pt:");
Raccourci = Raccourci.replace(/Projet:/g,"Pj:");
Raccourci = Raccourci.replace(/^Discussion/g,"D");
Raccourci = Raccourci.replace(/_/g," ");
var textaC_fav = document.createTextNode( "" + Raccourci + "") ;
smallT_fav.appendChild( textaC_fav ) ;
aC_fav.appendChild( smallT_fav );
spanaC_fav.appendChild( aC_fav ) ;
li_fav.appendChild( spanaCR_fav );
li_fav.appendChild( spanaC_fav );
ul_fav.appendChild( li_fav );
}
}
} else {
var li_fav = document.createElement( "li" );
var nofav_fav = document.createTextNode( NoFavorites_fav );
li_fav.appendChild( nofav_fav );
ul_fav.appendChild( li_fav );
}
}
// * Ajout d'une page à la liste de favoris *
function storePage(){
thisPageTitle = mw.config.get('wgPageName').replace(/_/g," ");
var pageListTitle = getCookie("pageListTitle");
var linkFound = false;
if (pageListTitle != "" && pageListTitle != null) {
pSplit = pageListTitle.split(";");
for (a=0;a<pSplit.length;a++) {
if(pSplit[a] == thisPageTitle) linkFound = true;
}
}
if (!linkFound) {
if (pageListTitle == null || pageListTitle == ";") {
pageListTitle = thisPageTitle;
} else {
pageListTitle += ";" + thisPageTitle;
}
var now = new Date();
var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365 );
setCookie("pageListTitle",pageListTitle,nextYear);
UpdateFavoritesList("FavoriList");
}
}
// * Suppression d'une page de la liste *
function removePage(Title){
var pageListTitle = getCookie("pageListTitle");
var linkList = ""
if (pageListTitle != "" && pageListTitle != null) {
pSplitTitle = pageListTitle.split(";");
for (a=0;a<pSplitTitle.length;a++) {
pSplitTitle[a] = decodeURIComponent(pSplitTitle[a]).replace(/_/g," ");
if (pSplitTitle[a] != Title && pSplitTitle[a] != '') linkList += ";" + pSplitTitle[a];
}
var now = new Date();
var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365 );
setCookie("pageListTitle",linkList,nextYear);
UpdateFavoritesList("FavoriList");
}
}
// * Mise à jour du cookie *
function setCookie (cookieName, cookieValue, expires, path) {
document.cookie = escape(cookieName) + '=' + escape(cookieValue) + (expires ? '; EXPIRES=' + expires.toGMTString() : '') + "; PATH=/" ;
}
// * Interrogation du cookie *
function getCookie (cookieName) {
var cookieValue = null;
var posName = document.cookie.indexOf(escape(cookieName) + '=' );
if (posName != -1) {
var posValue = posName + (escape(cookieName) + '=' ).length;
var endPos = document.cookie.indexOf(';', posValue) ;
if (endPos != -1) {
cookieValue = unescape(document.cookie.substring(posValue, endPos));
} else {
cookieValue = unescape(document.cookie.substring(posValue));
}
}
return cookieValue;
}