mirror of
https://github.com/Doodle3D/doodle3d-connect.git
synced 2024-12-26 02:23:48 +01:00
Merged branch develop into master
This commit is contained in:
commit
a748495c9e
@ -33,14 +33,14 @@
|
|||||||
});
|
});
|
||||||
$.mobile.document.on( "pageshow", PAGE_ID, function( event, data ) {
|
$.mobile.document.on( "pageshow", PAGE_ID, function( event, data ) {
|
||||||
//console.log("Boxes page pageshow");
|
//console.log("Boxes page pageshow");
|
||||||
addToHomescreen(/*{
|
addToHomescreen({
|
||||||
debug: true, // activate debug mode in ios emulation
|
//debug: true, // show on desktop browsers and unsupported devices
|
||||||
skipFirstVisit: false, // show at first access
|
skipFirstVisit: true, // Don't show on first visit
|
||||||
startDelay: 0, // display the message right away
|
//startDelay: 0, // display the message right away
|
||||||
lifespan: 0, // do not automatically kill the call out
|
//lifespan: 0, // do not automatically kill the call out
|
||||||
displayPace: 0, // do not obey the display pace
|
//displayPace: 0, // do not obey the display pace
|
||||||
maxDisplayCount: 0 // do not obey the max display count
|
//maxDisplayCount: 0 // do not obey the max display count
|
||||||
}*/);
|
});
|
||||||
});
|
});
|
||||||
$.mobile.document.on( "pagebeforehide", PAGE_ID, function( event, data ) {
|
$.mobile.document.on( "pagebeforehide", PAGE_ID, function( event, data ) {
|
||||||
//console.log("Boxes page pagehide");
|
//console.log("Boxes page pagehide");
|
||||||
|
@ -171,7 +171,7 @@
|
|||||||
var fields = [ ts.substr(0, 4), ts.substr(4, 2), ts.substr(6, 2) ];
|
var fields = [ ts.substr(0, 4), ts.substr(4, 2), ts.substr(6, 2) ];
|
||||||
if (!fields || fields.length !== 3 || fields[1] > 12) { return null; }
|
if (!fields || fields.length !== 3 || fields[1] > 12) { return null; }
|
||||||
|
|
||||||
var abbrMonths = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Sep', 'Aug', 'Oct', 'Nov', 'Dec' ];
|
var abbrMonths = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];
|
||||||
return abbrMonths[fields[1] - 1] + " " + fields[2] + ", " + fields[0];
|
return abbrMonths[fields[1] - 1] + " " + fields[2] + ", " + fields[0];
|
||||||
}
|
}
|
||||||
function noRetainCheckboxChanged () {
|
function noRetainCheckboxChanged () {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Add to Homescreen v3.0.4 ~ (c) 2014 Matteo Spinelli ~ @license: http://cubiq.org/license */
|
/* Add to Homescreen v3.2.2 ~ (c) 2015 Matteo Spinelli ~ @license: http://cubiq.org/license */
|
||||||
(function (window, document) {
|
(function (window, document) {
|
||||||
/*
|
/*
|
||||||
_ _ _____ _____
|
_ _ _____ _____
|
||||||
@ -8,9 +8,17 @@
|
|||||||
by Matteo Spinelli ~ http://cubiq.org
|
by Matteo Spinelli ~ http://cubiq.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Check for addEventListener browser support (prevent errors in IE<9)
|
||||||
|
var _eventListener = 'addEventListener' in window;
|
||||||
|
|
||||||
// Check if document is loaded, needed by autostart
|
// Check if document is loaded, needed by autostart
|
||||||
var _DOMReady = false;
|
var _DOMReady = false;
|
||||||
window.addEventListener('load', loaded, false);
|
if ( document.readyState === 'complete' ) {
|
||||||
|
_DOMReady = true;
|
||||||
|
} else if ( _eventListener ) {
|
||||||
|
window.addEventListener('load', loaded, false);
|
||||||
|
}
|
||||||
|
|
||||||
function loaded () {
|
function loaded () {
|
||||||
window.removeEventListener('load', loaded, false);
|
window.removeEventListener('load', loaded, false);
|
||||||
_DOMReady = true;
|
_DOMReady = true;
|
||||||
@ -30,32 +38,109 @@ function ath (options) {
|
|||||||
|
|
||||||
// message in all supported languages
|
// message in all supported languages
|
||||||
ath.intl = {
|
ath.intl = {
|
||||||
|
de_de: {
|
||||||
|
ios: 'Um diese Web-App zum Home-Bildschirm hinzuzufügen, tippen Sie auf %icon und dann <strong>Zum Home-Bildschirm</strong>.',
|
||||||
|
android: 'Um diese Web-App zum Home-Bildschirm hinzuzufügen, öffnen Sie das Menü und tippen dann auf <strong>Zum Startbildschirm hinzufügen</strong>. <small>Wenn Ihr Gerät eine Menütaste hat, lässt sich das Browsermenü über diese öffnen. Ansonsten tippen Sie auf <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
da_dk: {
|
||||||
|
ios: 'For at tilføje denne web app til hjemmeskærmen: Tryk %icon og derefter <strong>Føj til hjemmeskærm</strong>.',
|
||||||
|
android: 'For at tilføje denne web app til hjemmeskærmen, åbn browser egenskaber menuen og tryk på <strong>Føj til hjemmeskærm</strong>. <small>Denne menu kan tilgås ved at trykke på menu knappen, hvis din enhed har en, eller ved at trykke på det øverste højre menu ikon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
en_us: {
|
en_us: {
|
||||||
message: 'To add this web app to the home screen: tap %icon and then <strong>%action</strong>.',
|
ios: 'To add this web app to the home screen: tap %icon and then <strong>Add to Home Screen</strong>.',
|
||||||
action: { ios: 'Add to Home Screen', android: 'Add to homescreen', windows: 'pin to start' }
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
},
|
},
|
||||||
|
|
||||||
es_es: {
|
es_es: {
|
||||||
message: 'Para añadir esta aplicación web a la pantalla de inicio: pulsa %icon y selecciona <strong>%action</strong>.',
|
ios: 'Para añadir esta aplicación web a la pantalla de inicio: pulsa %icon y selecciona <strong>Añadir a pantalla de inicio</strong>.',
|
||||||
action: { ios: 'Añadir a pantalla de inicio', android: 'Añadir a pantalla de inicio', windows: 'Añadir a inicio' }
|
android: 'Para añadir esta aplicación web a la pantalla de inicio, abre las opciones y pulsa <strong>Añadir a pantalla inicio</strong>. <small>El menú se puede acceder pulsando el botón táctil en caso de tenerlo, o bien el icono de la parte superior derecha de la pantalla <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
fi_fi: {
|
||||||
|
ios: 'Liitä tämä sovellus kotivalikkoon: klikkaa %icon ja tämän jälkeen <strong>Lisää kotivalikkoon</strong>.',
|
||||||
|
android: 'Lisätäksesi tämän sovelluksen aloitusnäytölle, avaa selaimen valikko ja klikkaa tähti -ikonia tai <strong>Lisää aloitusnäytölle tekstiä</strong>. <small>Valikkoon pääsee myös painamalla menuvalikkoa, jos laitteessasi on sellainen tai koskettamalla oikealla yläkulmassa menu ikonia <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
fr_fr: {
|
||||||
|
ios: 'Pour ajouter cette application web sur l\'écran d\'accueil : Appuyez %icon et sélectionnez <strong>Ajouter sur l\'écran d\'accueil</strong>.',
|
||||||
|
android: 'Pour ajouter cette application web sur l\'écran d\'accueil : Appuyez sur le bouton "menu", puis sur <strong>Ajouter sur l\'écran d\'accueil</strong>. <small>Le menu peut-être accessible en appyant sur le bouton "menu" du téléphone s\'il en possède un <i class="fa fa-bars"></i>. Sinon, il se trouve probablement dans la coin supérieur droit du navigateur %icon.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
he_il: {
|
||||||
|
ios: '<span dir="rtl">להוספת האפליקציה למסך הבית: ללחוץ על %icon ואז <strong>הוסף למסך הבית</strong>.</span>',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
},
|
},
|
||||||
|
|
||||||
it_it: {
|
it_it: {
|
||||||
message: 'Per Aggiungere questa web app alla schermata iniziale: premi %icon e poi <strong>%action</strong>.',
|
ios: 'Per aggiungere questa web app alla schermata iniziale: premi %icon e poi <strong>Aggiungi a Home</strong>.',
|
||||||
action: { ios: 'Aggiungi a Home', android: 'Aggiungi alla homescreen', windows: 'aggiungi a start' }
|
android: 'Per aggiungere questa web app alla schermata iniziale, apri il menu opzioni del browser e premi su <strong>Aggiungi alla homescreen</strong>. <small>Puoi accedere al menu premendo il pulsante hardware delle opzioni se la tua device ne ha uno, oppure premendo l\'icona <span class="ath-action-icon">icon</span> in alto a destra.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
ja_jp: {
|
||||||
|
ios: 'このウェプアプリをホーム画面に追加するために%iconを押して<strong>ホーム画面に追加</strong>。',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
ko_kr: {
|
||||||
|
ios: '홈 화면에 바로가기 생성: %icon 을 클릭한 후 <strong>홈 화면에 추가</strong>.',
|
||||||
|
android: '브라우저 옵션 메뉴의 <string>홈 화면에 추가</string>를 클릭하여 홈화면에 바로가기를 생성할 수 있습니다. <small>옵션 메뉴는 장치의 메뉴 버튼을 누르거나 오른쪽 상단의 메뉴 아이콘 <span class="ath-action-icon">icon</span>을 클릭하여 접근할 수 있습니다.</small>'
|
||||||
|
},
|
||||||
|
|
||||||
|
nb_no: {
|
||||||
|
ios: 'For å installere denne appen på hjem-skjermen: trykk på %icon og deretter <strong>Legg til på Hjem-skjerm</strong>.',
|
||||||
|
android: 'For å legge til denne webappen på startsiden åpner en nettlesermenyen og velger <strong>Legg til på startsiden</strong>. <small>Menyen åpnes ved å trykke på den fysiske menyknappen hvis enheten har det, eller ved å trykke på menyikonet øverst til høyre <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
pt_br: {
|
||||||
|
ios: 'Para adicionar este app à tela de início: clique %icon e então <strong>Tela de início</strong>.',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
pt_pt: {
|
||||||
|
ios: 'Para adicionar esta app ao ecrã principal: clique %icon e depois <strong>Ecrã principal</strong>.',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
},
|
},
|
||||||
|
|
||||||
nl_nl: {
|
nl_nl: {
|
||||||
message: 'Om deze webapp op je telefoon te installeren, klik op %icon en dan <strong>%action</strong>.',
|
ios: 'Om deze webapp op je telefoon te installeren, klik op %icon en dan <strong>Zet in beginscherm</strong>.',
|
||||||
action: { ios: 'Voeg toe aan beginscherm', android: 'Toevoegen aan startscherm', windows: 'Aan startscherm vastmaken' }
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
}
|
},
|
||||||
|
|
||||||
|
ru_ru: {
|
||||||
|
ios: 'Чтобы добавить этот сайт на свой домашний экран, нажмите на иконку %icon и затем <strong>На экран "Домой"</strong>.',
|
||||||
|
android: 'Чтобы добавить сайт на свой домашний экран, откройте меню браузера и нажмите на <strong>Добавить на главный экран</strong>. <small>Меню можно вызвать, нажав на кнопку меню вашего телефона, если она есть. Или найдите иконку сверху справа <span class="ath-action-icon">иконка</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
sv_se: {
|
||||||
|
ios: 'För att lägga till denna webbapplikation på hemskärmen: tryck på %icon och därefter <strong>Lägg till på hemskärmen</strong>.',
|
||||||
|
android: 'För att lägga till den här webbappen på hemskärmen öppnar du webbläsarens alternativ-meny och väljer <strong>Lägg till på startskärmen</strong>. <small>Man hittar menyn genom att trycka på hårdvaruknappen om din enhet har en sådan, eller genom att trycka på menyikonen högst upp till höger <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
zh_cn: {
|
||||||
|
ios: '如要把应用程序加至主屏幕,请点击%icon, 然后<strong>添加到主屏幕</strong>',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
|
zh_tw: {
|
||||||
|
ios: '如要把應用程式加至主屏幕, 請點擊%icon, 然後<strong>加至主屏幕</strong>.',
|
||||||
|
android: 'To add this web app to the home screen open the browser option menu and tap on <strong>Add to homescreen</strong>. <small>The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon <span class="ath-action-icon">icon</span>.</small>',
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Add 2 characters language support (Android mostly)
|
||||||
|
for ( var lang in ath.intl ) {
|
||||||
|
ath.intl[lang.substr(0, 2)] = ath.intl[lang];
|
||||||
|
}
|
||||||
|
|
||||||
// default options
|
// default options
|
||||||
ath.defaults = {
|
ath.defaults = {
|
||||||
appID: 'org.cubiq.addtohome', // local storage name (no need to change)
|
appID: 'org.cubiq.addtohome', // local storage name (no need to change)
|
||||||
fontSize: 15, // base font size, used to properly resize the popup based on viewport scale factor
|
fontSize: 15, // base font size, used to properly resize the popup based on viewport scale factor
|
||||||
debug: false, // override browser checks
|
debug: false, // override browser checks
|
||||||
|
logging: false, // log reasons for showing or not showing to js console; defaults to true when debug is true
|
||||||
modal: false, // prevent further actions until the message is closed
|
modal: false, // prevent further actions until the message is closed
|
||||||
mandatory: false, // you can't proceed if you don't add the app to the homescreen
|
mandatory: false, // you can't proceed if you don't add the app to the homescreen
|
||||||
autostart: true, // show the message automatically
|
autostart: true, // show the message automatically
|
||||||
@ -72,25 +157,23 @@ ath.defaults = {
|
|||||||
onRemove: null, // executed when the message is removed
|
onRemove: null, // executed when the message is removed
|
||||||
onAdd: null, // when the application is launched the first time from the homescreen (guesstimate)
|
onAdd: null, // when the application is launched the first time from the homescreen (guesstimate)
|
||||||
onPrivate: null, // executed if user is in private mode
|
onPrivate: null, // executed if user is in private mode
|
||||||
|
privateModeOverride: false, // show the message even in private mode (very rude)
|
||||||
detectHomescreen: false // try to detect if the site has been added to the homescreen (false | true | 'hash' | 'queryString' | 'smartURL')
|
detectHomescreen: false // try to detect if the site has been added to the homescreen (false | true | 'hash' | 'queryString' | 'smartURL')
|
||||||
};
|
};
|
||||||
|
|
||||||
// browser info and capability
|
// browser info and capability
|
||||||
var _ua = window.navigator.userAgent;
|
var _ua = window.navigator.userAgent;
|
||||||
|
|
||||||
var _nav = window.navigator;
|
var _nav = window.navigator;
|
||||||
_extend(ath, {
|
_extend(ath, {
|
||||||
hasToken: document.location.hash == '#ath' || _reSmartURL.test(document.location.href) || _reQueryString.test(document.location.search),
|
hasToken: document.location.hash == '#ath' || _reSmartURL.test(document.location.href) || _reQueryString.test(document.location.search),
|
||||||
isRetina: window.devicePixelRatio && window.devicePixelRatio > 1,
|
isRetina: window.devicePixelRatio && window.devicePixelRatio > 1,
|
||||||
isIDevice: (/iphone|ipod|ipad/i).test(_ua),
|
isIDevice: (/iphone|ipod|ipad/i).test(_ua),
|
||||||
isMobileChrome: _ua.indexOf('Android') > -1 && (/Chrome\/[.0-9]*/).test(_ua),
|
isMobileChrome: _ua.indexOf('Android') > -1 && (/Chrome\/[.0-9]*/).test(_ua) && _ua.indexOf("Version") == -1,
|
||||||
isMobileIE: _ua.indexOf('Windows Phone') > -1,
|
isMobileIE: _ua.indexOf('Windows Phone') > -1,
|
||||||
language: _nav.language && _nav.language.toLowerCase().replace('-', '_') || ''
|
language: _nav.language && _nav.language.toLowerCase().replace('-', '_') || ''
|
||||||
});
|
});
|
||||||
|
|
||||||
// normalize language string so it always looks like aa_bb
|
|
||||||
if ( ath.language.length == 2 ) {
|
|
||||||
ath.language += '_' + ath.language;
|
|
||||||
}
|
|
||||||
// falls back to en_us if language is unsupported
|
// falls back to en_us if language is unsupported
|
||||||
ath.language = ath.language && ath.language in ath.intl ? ath.language : 'en_us';
|
ath.language = ath.language && ath.language in ath.intl ? ath.language : 'en_us';
|
||||||
|
|
||||||
@ -100,7 +183,7 @@ ath.OS = ath.isIDevice ? 'ios' : ath.isMobileChrome ? 'android' : ath.isMobileIE
|
|||||||
ath.OSVersion = _ua.match(/(OS|Android) (\d+[_\.]\d+)/);
|
ath.OSVersion = _ua.match(/(OS|Android) (\d+[_\.]\d+)/);
|
||||||
ath.OSVersion = ath.OSVersion && ath.OSVersion[2] ? +ath.OSVersion[2].replace('_', '.') : 0;
|
ath.OSVersion = ath.OSVersion && ath.OSVersion[2] ? +ath.OSVersion[2].replace('_', '.') : 0;
|
||||||
|
|
||||||
ath.isStandalone = window.navigator.standalone || ( ath.isMobileChrome && ( screen.height - document.documentElement.clientHeight < 40 ) ); // TODO: check the lame polyfill
|
ath.isStandalone = 'standalone' in window.navigator && window.navigator.standalone;
|
||||||
ath.isTablet = (ath.isMobileSafari && _ua.indexOf('iPad') > -1) || (ath.isMobileChrome && _ua.indexOf('Mobile') < 0);
|
ath.isTablet = (ath.isMobileSafari && _ua.indexOf('iPad') > -1) || (ath.isMobileChrome && _ua.indexOf('Mobile') < 0);
|
||||||
|
|
||||||
ath.isCompatible = (ath.isMobileSafari && ath.OSVersion >= 6) || ath.isMobileChrome; // TODO: add winphone
|
ath.isCompatible = (ath.isMobileSafari && ath.OSVersion >= 6) || ath.isMobileChrome; // TODO: add winphone
|
||||||
@ -115,16 +198,38 @@ var _defaultSession = {
|
|||||||
|
|
||||||
ath.removeSession = function (appID) {
|
ath.removeSession = function (appID) {
|
||||||
try {
|
try {
|
||||||
|
if (!localStorage) {
|
||||||
|
throw new Error('localStorage is not defined');
|
||||||
|
}
|
||||||
|
|
||||||
localStorage.removeItem(appID || ath.defaults.appID);
|
localStorage.removeItem(appID || ath.defaults.appID);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// we are most likely in private mode
|
// we are most likely in private mode
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ath.doLog = function (logStr) {
|
||||||
|
if ( this.options.logging ) {
|
||||||
|
console.log(logStr);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ath.Class = function (options) {
|
ath.Class = function (options) {
|
||||||
|
// class methods
|
||||||
|
this.doLog = ath.doLog;
|
||||||
|
|
||||||
// merge default options with user config
|
// merge default options with user config
|
||||||
this.options = _extend({}, ath.defaults);
|
this.options = _extend({}, ath.defaults);
|
||||||
_extend(this.options, options);
|
_extend(this.options, options);
|
||||||
|
// override defaults that are dependent on each other
|
||||||
|
if ( options && options.debug && (typeof options.logging === "undefined") ) {
|
||||||
|
this.options.logging = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IE<9 so exit (I hate you, really)
|
||||||
|
if ( !_eventListener ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// normalize some options
|
// normalize some options
|
||||||
this.options.mandatory = this.options.mandatory && ( 'standalone' in window.navigator || this.options.debug );
|
this.options.mandatory = this.options.mandatory && ( 'standalone' in window.navigator || this.options.debug );
|
||||||
@ -138,14 +243,15 @@ ath.Class = function (options) {
|
|||||||
if ( this.options.debug ) {
|
if ( this.options.debug ) {
|
||||||
ath.isCompatible = true;
|
ath.isCompatible = true;
|
||||||
ath.OS = typeof this.options.debug == 'string' ? this.options.debug : ath.OS == 'unsupported' ? 'android' : ath.OS;
|
ath.OS = typeof this.options.debug == 'string' ? this.options.debug : ath.OS == 'unsupported' ? 'android' : ath.OS;
|
||||||
ath.OSVersion = ath.OS == 'ios' ? '7' : '4';
|
ath.OSVersion = ath.OS == 'ios' ? '8' : '4';
|
||||||
}
|
}
|
||||||
|
|
||||||
// the element the message will be appended to
|
// the element the message will be appended to
|
||||||
this.container = document.documentElement;
|
this.container = document.documentElement;
|
||||||
|
|
||||||
// load session
|
// load session
|
||||||
this.session = JSON.parse(localStorage.getItem(this.options.appID));
|
this.session = this.getItem(this.options.appID);
|
||||||
|
this.session = this.session ? JSON.parse(this.session) : undefined;
|
||||||
|
|
||||||
// user most likely came from a direct link containing our token, we don't need it and we remove it
|
// user most likely came from a direct link containing our token, we don't need it and we remove it
|
||||||
if ( ath.hasToken && ( !ath.isCompatible || !this.session ) ) {
|
if ( ath.hasToken && ( !ath.isCompatible || !this.session ) ) {
|
||||||
@ -155,6 +261,7 @@ ath.Class = function (options) {
|
|||||||
|
|
||||||
// the device is not supported
|
// the device is not supported
|
||||||
if ( !ath.isCompatible ) {
|
if ( !ath.isCompatible ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because device not supported");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,6 +269,10 @@ ath.Class = function (options) {
|
|||||||
|
|
||||||
// check if we can use the local storage
|
// check if we can use the local storage
|
||||||
try {
|
try {
|
||||||
|
if (!localStorage) {
|
||||||
|
throw new Error('localStorage is not defined');
|
||||||
|
}
|
||||||
|
|
||||||
localStorage.setItem(this.options.appID, JSON.stringify(this.session));
|
localStorage.setItem(this.options.appID, JSON.stringify(this.session));
|
||||||
ath.hasLocalStorage = true;
|
ath.hasLocalStorage = true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -183,13 +294,21 @@ ath.Class = function (options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check compatibility with old versions of add to homescreen. Opt-out if an old session is found
|
// check compatibility with old versions of add to homescreen. Opt-out if an old session is found
|
||||||
if ( localStorage.getItem('addToHome') ) {
|
if ( this.getItem('addToHome') ) {
|
||||||
this.optOut();
|
this.optOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
// critical errors:
|
// critical errors:
|
||||||
// user opted out, already added to the homescreen, not a valid location
|
if ( this.session.optedout ) {
|
||||||
if ( this.session.optedout || this.session.added || !isValidLocation ) {
|
this.doLog("Add to homescreen: not displaying callout because user opted out");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( this.session.added ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because already added to the homescreen");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( !isValidLocation ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because not a valid location");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,6 +324,7 @@ ath.Class = function (options) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because in standalone mode");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,6 +344,7 @@ ath.Class = function (options) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because URL has token, so we are likely coming from homescreen");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,12 +365,14 @@ ath.Class = function (options) {
|
|||||||
|
|
||||||
// we do not show the message if this is your first visit
|
// we do not show the message if this is your first visit
|
||||||
if ( this.options.skipFirstVisit ) {
|
if ( this.options.skipFirstVisit ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because skipping first visit");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// we do no show the message in private mode
|
// we do no show the message in private mode
|
||||||
if ( !ath.hasLocalStorage ) {
|
if ( !this.options.privateModeOverride && !ath.hasLocalStorage ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because browser is in private mode");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,6 +384,7 @@ ath.Class = function (options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( this.options.autostart ) {
|
if ( this.options.autostart ) {
|
||||||
|
this.doLog("Add to homescreen: autostart displaying callout");
|
||||||
this.show();
|
this.show();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -291,11 +415,14 @@ ath.Class.prototype = {
|
|||||||
// in autostart mode wait for the document to be ready
|
// in autostart mode wait for the document to be ready
|
||||||
if ( this.options.autostart && !_DOMReady ) {
|
if ( this.options.autostart && !_DOMReady ) {
|
||||||
setTimeout(this.show.bind(this), 50);
|
setTimeout(this.show.bind(this), 50);
|
||||||
|
// we are not displaying callout because DOM not ready, but don't log that because
|
||||||
|
// it would log too frequently
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// message already on screen
|
// message already on screen
|
||||||
if ( this.shown ) {
|
if ( this.shown ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because already shown on screen");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,16 +432,19 @@ ath.Class.prototype = {
|
|||||||
if ( force !== true ) {
|
if ( force !== true ) {
|
||||||
// this is needed if autostart is disabled and you programmatically call the show() method
|
// this is needed if autostart is disabled and you programmatically call the show() method
|
||||||
if ( !this.ready ) {
|
if ( !this.ready ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because not ready");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we obey the display pace (prevent the message to popup too often)
|
// we obey the display pace (prevent the message to popup too often)
|
||||||
if ( now - lastDisplayTime < this.options.displayPace * 60000 ) {
|
if ( now - lastDisplayTime < this.options.displayPace * 60000 ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because displayed recently");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// obey the maximum number of display count
|
// obey the maximum number of display count
|
||||||
if ( this.options.maxDisplayCount && this.session.displayCount >= this.options.maxDisplayCount ) {
|
if ( this.options.maxDisplayCount && this.session.displayCount >= this.options.maxDisplayCount ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because displayed too many times already");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -337,12 +467,16 @@ ath.Class.prototype = {
|
|||||||
|
|
||||||
var message = '';
|
var message = '';
|
||||||
|
|
||||||
if ( this.options.message in ath.intl ) { // you can force the locale
|
if ( typeof this.options.message == 'object' && ath.language in this.options.message ) { // use custom language message
|
||||||
message = ath.intl[this.options.message].message.replace('%action', ath.intl[this.options.message].action[ath.OS]);
|
message = this.options.message[ath.language][ath.OS];
|
||||||
} else if ( this.options.message !== '' ) { // or use a custom message
|
} else if ( typeof this.options.message == 'object' && ath.OS in this.options.message ) { // use custom os message
|
||||||
|
message = this.options.message[ath.OS];
|
||||||
|
} else if ( this.options.message in ath.intl ) { // you can force the locale
|
||||||
|
message = ath.intl[this.options.message][ath.OS];
|
||||||
|
} else if ( this.options.message !== '' ) { // use a custom message
|
||||||
message = this.options.message;
|
message = this.options.message;
|
||||||
} else { // otherwise we use our message
|
} else if ( ath.OS in ath.intl[ath.language] ) { // otherwise we use our message
|
||||||
message = ath.intl[ath.language].message.replace('%action', ath.intl[ath.language].action[ath.OS]);
|
message = ath.intl[ath.language][ath.OS];
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the action icon
|
// add the action icon
|
||||||
@ -362,9 +496,9 @@ ath.Class.prototype = {
|
|||||||
// create the actual message element
|
// create the actual message element
|
||||||
this.element = document.createElement('div');
|
this.element = document.createElement('div');
|
||||||
this.element.className = 'ath-container ath-' + ath.OS + ' ath-' + ath.OS + (ath.OSVersion + '').substr(0,1) + ' ath-' + (ath.isTablet ? 'tablet' : 'phone');
|
this.element.className = 'ath-container ath-' + ath.OS + ' ath-' + ath.OS + (ath.OSVersion + '').substr(0,1) + ' ath-' + (ath.isTablet ? 'tablet' : 'phone');
|
||||||
this.element.style.cssText = '-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0;-webkit-transform:translate3d(0,0,0);transition-property:transform,opacity;transition-duration:0;transform:translate3d(0,0,0);-webkit-transition-timing-function:ease-out';
|
this.element.style.cssText = '-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0s;-webkit-transition-timing-function:ease-out;transition-property:transform,opacity;transition-duration:0s;transition-timing-function:ease-out;';
|
||||||
this.element.style.webkitTransform = 'translate3d(0,-' + window.innerHeight + 'px,0)';
|
this.element.style.webkitTransform = 'translate3d(0,-' + window.innerHeight + 'px,0)';
|
||||||
this.element.style.webkitTransitionDuration = '0s';
|
this.element.style.transform = 'translate3d(0,-' + window.innerHeight + 'px,0)';
|
||||||
|
|
||||||
// add the application icon
|
// add the application icon
|
||||||
if ( this.options.icon && this.applicationIcon ) {
|
if ( this.options.icon && this.applicationIcon ) {
|
||||||
@ -388,7 +522,9 @@ ath.Class.prototype = {
|
|||||||
this.container.appendChild(this.viewport);
|
this.container.appendChild(this.viewport);
|
||||||
|
|
||||||
// if we don't have to wait for an image to load, show the message right away
|
// if we don't have to wait for an image to load, show the message right away
|
||||||
if ( !this.img ) {
|
if ( this.img ) {
|
||||||
|
this.doLog("Add to homescreen: not displaying callout because waiting for img to load");
|
||||||
|
} else {
|
||||||
this._delayedShow();
|
this._delayedShow();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -422,8 +558,10 @@ ath.Class.prototype = {
|
|||||||
|
|
||||||
// kick the animation
|
// kick the animation
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
that.element.style.webkitTransform = 'translate3d(0,0,0)';
|
|
||||||
that.element.style.webkitTransitionDuration = '1.2s';
|
that.element.style.webkitTransitionDuration = '1.2s';
|
||||||
|
that.element.style.transitionDuration = '1.2s';
|
||||||
|
that.element.style.webkitTransform = 'translate3d(0,0,0)';
|
||||||
|
that.element.style.transform = 'translate3d(0,0,0)';
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
// set the destroy timer
|
// set the destroy timer
|
||||||
@ -508,7 +646,9 @@ ath.Class.prototype = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (localStorage) {
|
||||||
localStorage.setItem(this.options.appID, JSON.stringify(this.session));
|
localStorage.setItem(this.options.appID, JSON.stringify(this.session));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
clearSession: function () {
|
clearSession: function () {
|
||||||
@ -516,6 +656,19 @@ ath.Class.prototype = {
|
|||||||
this.updateSession();
|
this.updateSession();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getItem: function(item) {
|
||||||
|
try {
|
||||||
|
if (!localStorage) {
|
||||||
|
throw new Error('localStorage is not defined');
|
||||||
|
}
|
||||||
|
|
||||||
|
return localStorage.getItem(item);
|
||||||
|
} catch(e) {
|
||||||
|
// Preventing exception for some browsers when fetching localStorage key
|
||||||
|
ath.hasLocalStorage = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
optOut: function () {
|
optOut: function () {
|
||||||
this.session.optedout = true;
|
this.session.optedout = true;
|
||||||
this.updateSession();
|
this.updateSession();
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
.ath-viewport {
|
.ath-viewport {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2147483641;
|
z-index: 2147483641;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||||
-webkit-touch-callout: none;
|
-webkit-touch-callout: none;
|
||||||
@ -22,6 +23,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ath-modal {
|
.ath-modal {
|
||||||
|
pointer-events: auto !important;
|
||||||
background: rgba(0,0,0,0.6);
|
background: rgba(0,0,0,0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,6 +32,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ath-container {
|
.ath-container {
|
||||||
|
pointer-events: auto !important;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 2147483641;
|
z-index: 2147483641;
|
||||||
padding: 0.7em 0.6em;
|
padding: 0.7em 0.6em;
|
||||||
@ -46,40 +49,56 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ath-container small {
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.3em;
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
.ath-ios.ath-phone {
|
.ath-ios.ath-phone {
|
||||||
bottom: 1.8em;
|
bottom: 1.8em;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -9em;
|
margin-left: -9em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-ios7.ath-tablet {
|
|
||||||
left: 0.7em;
|
|
||||||
top: 1.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ath-ios6.ath-tablet {
|
.ath-ios6.ath-tablet {
|
||||||
left: 5em;
|
left: 5em;
|
||||||
top: 1.8em;
|
top: 1.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-android {
|
.ath-ios7.ath-tablet {
|
||||||
right: 1.5em;
|
left: 0.7em;
|
||||||
top: 1.8em;
|
top: 1.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ath-ios8.ath-tablet {
|
||||||
|
right: 0.4em;
|
||||||
|
top: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ath-android {
|
||||||
|
bottom: 1.8em;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -9em;
|
||||||
|
}
|
||||||
|
|
||||||
/* close icon */
|
/* close icon */
|
||||||
.ath-container:before {
|
.ath-container:before {
|
||||||
content: '×';
|
content: '';
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
float: right;
|
float: right;
|
||||||
margin: -0.3em -0.25em 0 0.1em;
|
margin: -0.7em -0.6em 0 0.5em;
|
||||||
background-color: rgba(255,255,255,0.7);
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAMAAABmmnOVAAAAdVBMVEUAAAA5OTkzMzM7Ozs3NzdBQUFAQEA/Pz8+Pj5BQUFAQEA/Pz8+Pj5BQUFAQEA/Pz9BQUE+Pj4/Pz8/Pz8+Pj4/Pz8/Pz8/Pz8+Pj4/Pz8+Pj4/Pz8/Pz8/Pz8/Pz8/Pz8+Pj4/Pz8/Pz8/Pz8/Pz9AQEA/Pz+fdCaPAAAAJnRSTlMACQoNDjM4OTo7PEFCQ0RFS6ytsbS1tru8vcTFxu7x8vX19vf4+C5yomAAAAJESURBVHgBvdzLTsJAGEfxr4C2KBcVkQsIDsK8/yPaqIsPzVlyzrKrX/5p0kkXEz81L23otc9NpIbbWia2YVLqdnhlqFlhGWpSDHe1aopsSIpRb8gK0dC3G30b9rVmhWZIimTICsvQtx/FsuYOrWHoDjX3Gu31gzJxdki934WrAIOsAIOsAIOiAMPhPsJTgKGN0BVsYIVsYIVpYIVpYIVpYIVpYIVpYIVpYIVpYIVlAIVgEBRs8BRs8BRs8BRs8BRs8BRs8BRs8BRTNmgKNngKNngKNngKNngKNhiKGxgiOlZoBlaYBlaYBlaYBlaYBlaYBlaYBlaYBlZIBlBMfQMrVAMr2KAqBENSHFHhGEABhi5CV6gGUKgGUKgGUKgGUFwuqgEUvoEVsoEVpoEUpgEUggF+gKTKY+h1fxSlC7/Z+RrxOQ3fcEoAPPHZBlaYBlaYBlaYBlZYBlYIhvLBCstw7PgM7hkiWOEZWGEaWGEaWGEaIsakEAysmHkGVpxmvoEVqoEVpoEVpoEVpoEVpoEVpoEVkoEVgkFQsEFSsEFQsGEcoSvY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnY4CnmbNAUT2c2WAo2eAo2eAo2eAo2eAo2eArNEPFACjZ4CjZ4CjZ4CjaIird/rBvFH6llNCvewdli1URWCIakSIZesUaDoFg36dKFWk9zCZDei3TtwmCj7pC22AwikiIZPEU29IpFNliKxa/hC9DFITjQPYhcAAAAAElFTkSuQmCC);
|
||||||
width: 1.2em;
|
background-color: rgba(255,255,255,0.8);
|
||||||
height: 1.2em;
|
background-size: 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 50%;
|
||||||
|
width: 2.7em;
|
||||||
|
height: 2.7em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: 2.3em;
|
|
||||||
color: #a33;
|
color: #a33;
|
||||||
z-index: 2147483642;
|
z-index: 2147483642;
|
||||||
}
|
}
|
||||||
@ -96,17 +115,9 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-android:before {
|
|
||||||
line-height: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ath-ios:before {
|
|
||||||
line-height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ath-container.ath-android:before {
|
.ath-container.ath-android:before {
|
||||||
float: left;
|
float: left;
|
||||||
margin: -0.3em 0.1em 0 -0.2em;
|
margin: -0.7em 0.5em 0 -0.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-container.ath-android.ath-icon:before {
|
.ath-container.ath-android.ath-icon:before {
|
||||||
@ -132,17 +143,11 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-android .ath-action-icon {
|
.ath-ios7 .ath-action-icon,
|
||||||
width: 1.2em;
|
.ath-ios8 .ath-action-icon {
|
||||||
height: 1.8em;
|
|
||||||
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAADcBAMAAAAig/QJAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAFtDAABbQwH5xg68AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAB5QTFRFAAAA////cXFxaWlp////ZmZmnJycoaGhpqam////1D9b6wAAAAV0Uk5TAAgJERExZxYzAAAAYklEQVRYw+3WoQ2AUBAE0SsBOiBUQEIDCArA4FFoHBaJxNItFYz/x5+xz282VmwJTdM0rRzbsS1e7Pm9zdgUVn491rkFmqZpSezEjqo/Sos1HoAEjdjgFmiapiWxG7tq/igfnYteFlnOWZEAAAAASUVORK5CYII=);
|
|
||||||
background-size: auto 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ath-ios7 .ath-action-icon {
|
|
||||||
width: 1.6em;
|
width: 1.6em;
|
||||||
height: 1.6em;
|
height: 1.6em;
|
||||||
background-image:url(data:image/png;base64,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);
|
background-image:url(data:image/png;base64,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);
|
||||||
margin-top: -0.3em;
|
margin-top: -0.3em;
|
||||||
background-size: auto 100%;
|
background-size: auto 100%;
|
||||||
}
|
}
|
||||||
@ -150,11 +155,18 @@
|
|||||||
.ath-ios6 .ath-action-icon {
|
.ath-ios6 .ath-action-icon {
|
||||||
width: 1.8em;
|
width: 1.8em;
|
||||||
height: 1.8em;
|
height: 1.8em;
|
||||||
background-image:url(data:image/png;base64,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);
|
background-image:url(data:image/png;base64,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);
|
||||||
margin-bottom: 0.4em;
|
margin-bottom: 0.4em;
|
||||||
background-size: 100% auto;
|
background-size: 100% auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ath-android .ath-action-icon {
|
||||||
|
width: 1.4em;
|
||||||
|
height: 1.4em;
|
||||||
|
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVmZmb///9mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZW6fJrAAAAEXRSTlMAAAYHG21ub8fLz9DR8/T4+RrZ9owAAAB3SURBVHja7dNLDoAgDATQWv4gKve/rEajJOJiWLgg6WzpSyB0aHqHiNj6nL1lovb4C+hYzkSNAT7mryQFAVOeGAj4CjwEtgrWXpD/uZKtwEJApXt+Vn0flzRhgNiFZQkOXY0aADQZCOCPlsZJ46Rx0jhp3IiN2wGDHhxtldrlwQAAAABJRU5ErkJggg==);
|
||||||
|
background-size: 100% auto;
|
||||||
|
}
|
||||||
|
|
||||||
.ath-container p {
|
.ath-container p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -192,17 +204,6 @@
|
|||||||
z-index: 2147483641;
|
z-index: 2147483641;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ath-android:after {
|
|
||||||
content: '';
|
|
||||||
background: #eee;
|
|
||||||
background: -webkit-linear-gradient(-45deg, rgba(238,238,238,0) 0%,rgba(238,238,238,0) 50%,rgba(238,238,238,1) 50%,rgba(238,238,238,1) 100%);
|
|
||||||
position: absolute;
|
|
||||||
width: 2em;
|
|
||||||
height: 2em;
|
|
||||||
top: -1.5em;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ath-application-icon {
|
.ath-application-icon {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -213,7 +214,6 @@
|
|||||||
z-index: 2147483642;
|
z-index: 2147483642;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* OS specific classes */
|
|
||||||
.ath-container.ath-ios .ath-application-icon {
|
.ath-container.ath-ios .ath-application-icon {
|
||||||
border-radius: 1em;
|
border-radius: 1em;
|
||||||
box-shadow: 0 0.2em 0.4em rgba(0,0,0,0.3),
|
box-shadow: 0 0.2em 0.4em rgba(0,0,0,0.3),
|
||||||
@ -226,6 +226,10 @@
|
|||||||
width: 24em;
|
width: 24em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ath-android.ath-phone {
|
||||||
|
margin-left: -12em;
|
||||||
|
}
|
||||||
|
|
||||||
.ath-ios.ath-phone {
|
.ath-ios.ath-phone {
|
||||||
margin-left: -12em;
|
margin-left: -12em;
|
||||||
}
|
}
|
||||||
@ -233,4 +237,19 @@
|
|||||||
.ath-ios6:after {
|
.ath-ios6:after {
|
||||||
left: 39%;
|
left: 39%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ath-ios8.ath-phone {
|
||||||
|
left: auto;
|
||||||
|
bottom: auto;
|
||||||
|
right: 0.4em;
|
||||||
|
top: 1.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ath-ios8.ath-phone:after {
|
||||||
|
bottom: auto;
|
||||||
|
top: -0.9em;
|
||||||
|
left: 68%;
|
||||||
|
z-index: 2147483641;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user