Utilisateur:Dr Brains/CreateEmptyWikidataLink.js

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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
// Ajoute un lien Wikidata si il n'y en a pas
 
var NoWikidataLinksInTheseNamespaces = new Array(1, 6);

if( (mw.config.get('wgAction')=="view" || mw.config.get('wgAction')=="submit" || mw.config.get('wgAction')=="purge") && (mw.config.get('wgNamespaceNumber') > -1) && (NoWikidataLinksInTheseNamespaces.indexOf(mw.config.get('wgNamespaceNumber'))==-1) && (mw.config.get('wgNamespaceNumber')%2==0) )
$(ManageWikidataLinks_Init);
 
function ManageWikidataLinks_Init(){
     var noarticletext = getElementsByClassName(document, "div", "noarticletext")[0];
     if(noarticletext) return;

     var pLang= document.getElementById("p-lang");
     if(!pLang){
          var TB = document.getElementById('p-tb');
          if(!TB) return;
          pLang = TB.cloneNode(true);
          pLang.id = "p-lang";
          pLangH3 = pLang.getElementsByTagName("h3")[0];
          if(pLangH3) pLangH3.innerHTML = "Autres langues";
          var pLangUL = pLang.getElementsByTagName("ul")[0];
          while(pLangUL.firstChild){ pLangUL.removeChild(pLangUL.firstChild); };
          TB.parentNode.insertBefore(pLang, TB.nextSibling);
          WikidataEmptyLi = document.createElement('li');
          WikidataEmptyLi.className = "wbc-editpage wbc-nolanglinks";
          pLangUL.appendChild(WikidataEmptyLi);
     }
     pLang.style.display = "block";
     CreateEmptyWikidataLink();
     UpdateWikidataLink();

}

function CreateEmptyWikidataLink(){
     var WikidataEmptyLi = getElementsByClassName(document, "li", "wbc-nolanglinks")[0];
     if(!WikidataEmptyLi) return;
     var WikidataLinkHref = "//www.wikidata.org/wiki/Special:NewItem";
     var WikidataEmptyLink = document.createElement('a');
     WikidataEmptyLink.className = "new";
     WikidataEmptyLink.href = WikidataLinkHref;
     WikidataEmptyLink.onclick = function(){
         CreateWikidataIframe(this.href);
         return false;
     };
     WikidataEmptyLink.appendChild(document.createTextNode("Créer les liens"));
     WikidataEmptyLink.title="Créer les liens interlangue";
     WikidataEmptyLi.appendChild(WikidataEmptyLink);
};

function UpdateWikidataLink(){
     var WikidataLinkLi = getElementsByClassName(document, "li", "wbc-editpage")[0];
     if(!WikidataLinkLi) return;
     var WikidataLink = WikidataLinkLi.getElementsByTagName('a')[0];
     if(!WikidataLink) return;
     WikidataLink.onclick = function(){
         CreateWikidataIframe( this.href );
         return false;
     };
}

 
document.write('<style type="text/css">'
+ '.Frame_Wikidata_TopBarDiv {padding:0.3em;cursor:move !important;}'
+ '</style>');

function CreateWikidataIframe(Href){
      var Frame = document.getElementById("Frame_Wikidata");
      if(!Frame){ 
            var LargeurEcran = ManageWikidataLinks_GetScreenWidth();
            var HauteurEcran = ManageWikidataLinks_GetScreenHeight();
            Frame = document.createElement('div');
            Frame.id="Frame_Wikidata";
            document.body.appendChild(Frame);
            Frame.style.position='fixed';
            Frame.style.zIndex= 1000;
            Frame.style.width= '75%';
            PositionGauche = parseInt((LargeurEcran-Frame.clientWidth)/2) ;
            PositionHaut = parseInt((HauteurEcran-Frame.clientHeight)/5) ;
            Frame.style.left=PositionGauche + 'px';
            Frame.style.top=PositionHaut + 'px';
            Frame.style.backgroundColor='white';
            Frame.style.border='3px double black';
 
            var TopBar = document.createElement('div');
            TopBar.className = "Frame_Wikidata_TopBarDiv";
            var CloseLink = document.createElement('a');
            CloseLink.href = "javascript:ManageWikidataLinks_EndPreview();";
            CloseLink.title = "Fermer la fenêtre";
            CloseLink.setAttribute("style", "float:right");
            CloseLink.innerHTML = '<img height="30" width="30" src="//upload.wikimedia.org/wikipedia/commons/thumb/2/2e/Crystal_Clear_action_button_cancel.png/30px-Crystal_Clear_action_button_cancel.png" alt="Fermer">';
            TopBar.appendChild(CloseLink);
            Frame.appendChild(TopBar);
            TopBar.onmousedown=function(event) {
                  monbody = document.body;
                  if(is_ie){ 
                        if(!event) { event= window.event; }
                        positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                        positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
                  }else{
                        positionSouris_X = parseInt( event.clientX );
                        positionSouris_Y = parseInt( event.clientY );
                  }
 
                  Frame.initialX = parseInt( positionSouris_X - Frame.offsetLeft);
                  Frame.initialY = parseInt( positionSouris_Y - Frame.offsetTop);
                  monbody.onmousemove = function(event) {
                  if(is_ie){
                        if(!event) { event= window.event; }
                              positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                              positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
                        }else{
                              positionSouris_X = parseInt( event.clientX );
                              positionSouris_Y = parseInt( event.clientY );
                        }
                        PositionGauche = parseInt( positionSouris_X ) - Frame.initialX;
                        PositionHaut = parseInt(positionSouris_Y ) - Frame.initialY;
                        if( PositionGauche < 0){
                              PositionGauche = 0;
                        }
                        if( PositionHaut < 0){
                              PositionHaut = 0;
                        }
                        Frame.style.left=PositionGauche + 'px';
                        Frame.style.top=PositionHaut + 'px';
                        Frame.style.opacity='.8';
                  }
 
                  monbody.onmouseup=function(event) {
                        Frame.style.opacity='';
                        monbody.onmousemove=null;
                        monbody.onmouseup=null;
                  }
            }
 
            var FrameContent = document.createElement('iframe');
            FrameContent.src=Href;
            FrameContent.width="100%";
            FrameContent.height= parseInt(HauteurEcran/2) + "px";
            Frame.appendChild(FrameContent);
            var BottomBar = document.createElement('div');
            BottomBar.style.height = "30px";
            BottomBar.style.cursor='se-resize';
            BottomBar.onmousedown = function(event){
                  monbody = document.body;
                  if(is_ie){ 
                        if(!event) { event= window.event; }
                        positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                        positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
                  }else{
                        positionSouris_X = parseInt( event.clientX );
                        positionSouris_Y = parseInt( event.clientY );
                  }
                  FrameContent.initialWidth = parseInt( positionSouris_X - FrameContent.offsetWidth );
                  FrameContent.initialHeight = parseInt( positionSouris_Y - FrameContent.offsetHeight );
                  Frame.initialWidth = parseInt( positionSouris_X - Frame.offsetWidth );
                  Frame.initialHeight = parseInt( positionSouris_Y - Frame.offsetHeight );
                  Frame.style.opacity='.8';
 
                  monbody.onmousemove=function(event) {
                        if(is_ie){ 
                              if(!event) { event= window.event; }
                              positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                              positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
                        }else{
                              positionSouris_X = parseInt( event.clientX );
                              positionSouris_Y = parseInt( event.clientY );
                        }
                        FrameContent.width  = parseInt( positionSouris_X - FrameContent.initialWidth  ) + 'px';
                        FrameContent.height = parseInt( positionSouris_Y - FrameContent.initialHeight ) + 'px';
                        Frame.style.width  = parseInt( positionSouris_X - Frame.initialWidth  ) + 'px';
                        Frame.style.height = parseInt( positionSouris_Y - Frame.initialHeight ) + 'px';
 
                  }
                  monbody.onmouseup=function(event) {
                        Frame.style.opacity = '';
                        monbody.onmousemove=null;
                        monbody.onmouseup=null;
                  }
            }
            Frame.appendChild(BottomBar);
            Parent.appendChild(Frame);
      }
      return false;
}
 
function ManageWikidataLinks_EndPreview(){
      var Frame = document.getElementById("Frame_Wikidata");
      if(Frame) Frame.parentNode.removeChild(Frame);
} 

// Détermination de la hauteur de l'écran
 
function ManageWikidataLinks_GetScreenHeight(){
     var ScreenHeight = 0;
     if( typeof( window.innerHeight ) == 'number' ) {
          ScreenHeight = parseInt(window.innerHeight);
     }else if( document.documentElement && document.documentElement.clientHeight ){
          ScreenHeight = parseInt(document.documentElement.clientHeight);
     }else if( document.body && document.body.clientHeight ){
          ScreenHeight = parseInt(document.body.clientHeight);
     }
     return ScreenHeight;
}
 
// Détermination de la largeur de l'écran
 
function ManageWikidataLinks_GetScreenWidth(){
     var ScreenWidth = 0;
     if( typeof( window.innerWidth ) == 'number' ) {
          ScreenWidth = parseInt(window.innerWidth);
     }else if( document.documentElement && document.documentElement.clientWidth ){
          ScreenWidth = parseInt(document.documentElement.clientWidth);
     }else if( document.body && document.body.clientWidth ){
          ScreenWidth = parseInt(document.body.clientWidth);
     }
     return ScreenWidth;
}