MediaWiki:Gadget-MobileView.js
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
- Opera : appuyez sur Ctrl + F5.
/*
Aperçu de la page courante sur téléphone mobile (smartphone).
-------------------------------------------------------------
Auteur : DavidL
*/
wgfrwikibooks_Gadget_MobileViewJsVersion = "20130324003";
function mob_fullurl()
{
var url = mw.config.get('wgServer')+mw.config.get('wgArticlePath').replace("$1",mw.config.get('wgPageName'));
var i = url.indexOf('.');
return url.substring(0,i)+".m"+url.substring(i);
}
var mob_wx, mob_wy, mob_moving=false;
var mob_winx, mob_winy;
var mob_win = undefined;
function mobMMove(e)
{
if (!mob_moving) return false;
if (!e) var e = window.event;
var nwx=e.clientX, nwy=e.clientY;
mob_winx += nwx-mob_wx;
mob_winy += nwy-mob_wy;
mob_win.style.left = ''+mob_winx+'px';
mob_win.style.top = ''+mob_winy+'px';
mob_wx=nwx; mob_wy=nwy;
return true;
}
function mobMUp(e)
{
if (!e) var e = window.event;
mob_moving=false;
return true;
}
function mobMDown(e)
{
if (!e) var e = window.event;
mob_wx=e.clientX; mob_wy=e.clientY;
mob_winx=mob_win.offsetLeft;
mob_winy=mob_win.offsetTop;
mob_moving=true;
return true;
}
function mobOpen()
{
mob_win.style.display = 'block';
}
function mobClose()
{
mob_win.style.display = 'none';
}
var mob_default_wcell = 36;
var mob_default_horizontal = false;
var mob_pos_x = 50;
var mob_pos_y = 50;
var mob_title = "";
function getLangSet(messages)
{
if (messages[wgUserLanguage]!==undefined) return messages[wgUserLanguage];
if (messages[mw.config.get('wgContentLanguage')]!==undefined) return messages[mw.config.get('wgContentLanguage')];
return messages['fr'];
}
var mob_langset = getLangSet
({
/* titre par défaut, nom du lien, description du lien */
'fr': [ 'Aperçu sur téléphone mobile', 'aperçu mobile', 'Aperçu de cette page sur téléphone mobile' ],
/* default title, link name, link description */
'en': [ 'Mobile preview', 'mobile view', 'Preview this page on mobile phone' ],
});
function mobCreate()
{
var mob_cell = mob_default_wcell;
var horizontal = mob_default_horizontal;
// écran mobile 16:9
var mob_height = mob_cell*(horizontal?9:16);
var mob_width = mob_cell*(horizontal?16:9);
mob_height -= 16; // - marges barre d'état
var mob_title_bar, mob_close;
appendDOM(document.body,mob_win=genDOM(
['div',{'style':{'position':'fixed','z-index':'1000',
'box-shadow':'0 0 10px 5px LightGrey','-moz-box-shadow':'0 0 10px 5px LightGrey','-webkit-box-shadow':'0 0 10px 5px LightGrey',
'left':(mob_pos_x+'px'),'top':(mob_pos_y+'px'),
'width':((mob_width+10)+'px'),'height':((mob_height+36)+'px'),
'border':'solid 2px #eeeeee','background':'#eeeeee'}},
['form',['table',{'style':{'width':'100%','height':'100%','background':'black'}},
['tr',{'style':{'height':'25px'}},
['td',{'style':{'color':'white','font-weight':'bold'}},
mob_title_bar=genDOM(['div',{'style':{'background':'#444444','cursor':'move'}},mob_title])
],
[ "td", { 'style':{'width':'50px'} },
mob_close=genDOM([ "div", { 'title':'Fermer l\'aperçu',
'style':{'background':'#ee0000','color':'white','font-weight':'bold',
'text-align':'center','cursor':'default'}}, 'x'])
]
],
['tr',['td',{'colspan':'2','style':{'vertical-align':'top','verticalAlign':'top'}}, '',
['iframe',{'style':{'width':(mob_width+'px'),'height':(mob_height+'px')},'src':mob_fullurl()}]
]]
]]]));
mob_title_bar.onmousedown = mobMDown;
mob_title_bar.onmouseup = mobMUp;
mob_title_bar.onmousemove = mobMMove;
mob_close.onmouseup = mobClose;
mobOpenView = mobOpen;
}
var mobOpenView = mobCreate;
function mobOpenViewWindow()
{ mobOpenView(); }
function mobSetup()
{
if (typeof(MobileViewConfig)=='undefined') MobileViewConfig = {};
// Paramètres et valeurs par défaut
// - nom du menu où ajouter le lien
var portletId = MobileViewConfig.portletId || 'p-personal';
// - taille indicative de l'écran
mob_default_wcell = MobileViewConfig.sizeInCells || 36;
// - orientation de l'écran pour l'aperçu
mob_default_horizontal = MobileViewConfig.isHorizontal || false;
// - position initiale de l'aperçu
mob_pos_x = MobileViewConfig.positionX || 50;
mob_pos_y = MobileViewConfig.positionY || 50;
// - titre de la vue mobile
mob_title = MobileViewConfig.title || mob_langset[0];
var nextNode = MobileViewConfig.nextNodeId ? document.getElementById(MobileViewConfig.nextNodeId) : 'pt-logout';
// Create portlet link
var dev_portlet_link = mw.util.addPortletLink(portletId, '#',
mob_langset[1], 'ca-mob-view', mob_langset[2], undefined, nextNode);
// Bind click handler
$(dev_portlet_link).click( function( e ) { e.preventDefault(); mobOpenViewWindow(); });
}
$(mobSetup);