git-svn-id: https://msi/svn/firstRepo/WebClient/branches/Manut_2.2.3@25 0f545695-f87b-41b6-9a03-7f16563b5454

This commit is contained in:
2015-01-25 13:57:37 +00:00
parent 1b92a374cc
commit d0d55ee8e5
19 changed files with 517 additions and 292 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
call uglifyjs .\js\openfb.js .\js\opengplus.js .\js\libs\ua-parser.min.js -o .\js\common.min.js call uglifyjs .\js\libs\hello.min.js .\js\libs\ua-parser.min.js -o .\js\common.min.js
REM node r.js -o app.build_dev.js REM node r.js -o app.build_dev.js
node r.js -o app.build_prod.js node r.js -o app.build_prod.js
REM call cleancss -o .\css\loadingStyle.min.css .\css\loadingStyle.css REM call cleancss -o .\css\loadingStyle.min.css .\css\loadingStyle.css
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+1 -13
View File
@@ -19,21 +19,9 @@
<meta http-equiv="Access-Control-Allow-Origin" content="*"/> <meta http-equiv="Access-Control-Allow-Origin" content="*"/>
<script type='text/javascript' src="js/common.min.<?php echo filemtime('js/common.min.js'); ?>.js"></script> <script type='text/javascript' src="js/common.min.<?php echo filemtime('js/common.min.js'); ?>.js"></script>
<script type='text/javascript'> <script type='text/javascript'>
if(openFB && window.location &&
window.location.href.indexOf("access_token") != -1 &&
window.localStorage.getItem("tryLogin")=="fb") {
openFB.oauthCallback(window.location.href);
window.location.href = "#syncView/tokenFound";
}
else if(openGPlus && window.location &&
window.location.href.indexOf("access_token") != -1 &&
window.localStorage.getItem("tryLogin")=="gplus") {
openGPlus.oauthCallback(window.location.href);
window.location.href = "#syncView/tokenFound";
}
<?php echo file_get_contents("js/manifest.js"); ?> <?php echo file_get_contents("js/manifest.js"); ?>
</script> </script>
<script data-main="js/config.<?php echo filemtime('js/libs/require.js'); ?>" src="js/libs/require.<?php echo filemtime('js/libs/require.js'); ?>.js"></script> <script data-main="js/config.<?php echo filemtime('js/config.js'); ?>" src="js/libs/require.<?php echo filemtime('js/libs/require.js'); ?>.js"></script>
</head> </head>
<body style="background-color: #1d1d1d;"> <body style="background-color: #1d1d1d;">
<?php include_once("analyticstracking.php") ?> <?php include_once("analyticstracking.php") ?>
+54 -5
View File
@@ -1,24 +1,73 @@
define(['jquery','underscore', 'backbone', 'router', 'classes/profile'],function define(['jquery', 'underscore', 'backbone', 'router', 'classes/profile', 'classes/cache'], function
($, _, Backbone,Router, Profile) { ($, _, Backbone, Router, Profile, Cache) {
'use strict'; 'use strict';
var init = function () { var init = function () {
//create backbone router //create backbone router
var router = new Router(); var router = new Router();
Backbone.history.start(); Backbone.history.start();
Backbone.emulateJSON = true; Backbone.emulateJSON = true;
var origin = location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '') + (location.pathname?location.pathname:'');
openFB.init('1466942266882168', origin, window.localStorage); hello.init({
openGPlus.init('319140243944-qk0lfhgmi8shi4go97r83l69f1k0gdf4.apps.googleusercontent.com', origin, window.localStorage); facebook: '1466942266882168',
google: '319140243944-qk0lfhgmi8shi4go97r83l69f1k0gdf4.apps.googleusercontent.com'
}, {display: 'page', scope: 'email'});
//console.log("Backbone history start"); //console.log("Backbone history start");
// Trigger 'route' event on router instance. // Trigger 'route' event on router instance.
router.on('route', function (name, args) { router.on('route', function (name, args) {
//alert(name); //alert(name);
}); });
Cache.checkCacheFromServer();
if (Profile.isConnected()) { if (Profile.isConnected()) {
Profile.loadProfile(); Profile.loadProfile();
} }
hello.on('auth.login', function (auth) {
if (!Profile.isConnected())
{
hello(auth.network).api("me").then(function (json) {
var id = "";
var displayName = "";
var email = "";
var gender = "";
if (auth.network === "google")
{
id = json.id;
displayName = json.displayName;
email = json.email;
gender = json.gender;
}
else if (auth.network === "facebook")
{
id = json.id;
displayName = json.name;
email = json.email;
gender = json.gender;
}
Profile.internalLoadProfile(id, function(retVal){
if(retVal === false)
{
Profile.createProfile(
id,
auth.network,
displayName,
email,
gender,
function () {
window.location.href = "#syncView/tokenFound";
}
);
}
else
window.location.href = "#syncView/tokenFound";
});
});
}
});
$('body').css('background-color', ''); $('body').css('background-color', '');
$('#loadingFrm').remove(); $('#loadingFrm').remove();
}; };
+66
View File
@@ -0,0 +1,66 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
define(['jquery', 'backbone'],
function ($, Backbone) {
var Cache = {
convertToDate: function (mysql_string)
{
if (typeof mysql_string === 'string')
{
var t = mysql_string.split(/[- :]/);
//when t[3], t[4] and t[5] are missing they defaults to zero
return new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0);
}
return null;
},
prefix: "cacheItem",
get: function (name) {
var item = window.localStorage.getItem(this.prefix + name);
if(item === null)
return null;
item = JSON.parse(item);
return item.storeValue;
},
set: function (name, value) {
window.localStorage.setItem(this.prefix + name, JSON.stringify({setTime: new Date(), storeValue: value}));
},
isExpired: function (name, timeDiff) {
var item = window.localStorage.getItem(this.prefix + name);
if(item === null)
return true;
item = JSON.parse(item);
var time = item.setTime;
if(timeDiff.getTime() > Date.parse(time))
return true;
return false;
},
checkCacheFromServer: function ()
{
var self = this;
$.ajax({
url: myManifest.Settings.DefaultURL + "/api/profile/statusCache",
//dataType: "json",
type: 'GET',
success: function (msg) {
$(msg).each(function (index, element) {
var elemName = "Category" + element.ID_CATEGORIA;
if (self.isExpired(elemName, self.convertToDate(element.LastDateModified)))
{
self.set(elemName, null);
}
});
}
});
}
};
return Cache;
});
+54
View File
@@ -0,0 +1,54 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
define(['jquery', 'underscore', 'backbone', 'classes/cache'],
function ($, _, Backbone, Cache) {
var CachedCollection = Backbone.Collection.extend({
cacheName: null,
fetch: function (options) {
options = _.defaults(options || {}, {parse: true});
var deferred = new $.Deferred(),
self = this;
var cachedItem = Cache.get(this.cacheName);
if (cachedItem !== null)
{
window.setTimeout(function () {
self[options.reset ? 'reset' : 'set'](false, options);
deferred.resolve(cachedItem);
self.push(cachedItem);
self.trigger('sync', self, false, options);
if (_.isFunction(options.success)) {
options.success(self, false, options);
}
return deferred;
}, 0);
}
else
{
// Delegate to the actual fetch method and store the attributes in the cache
var jqXHR = Backbone.Collection.prototype.fetch.apply(this, arguments);
// resolve the returned promise when the AJAX call completes
jqXHR.done(_.bind(deferred.resolve, this, this))
// Set the new data in the cache
.done(_.bind(
function (a, b, c) {
Cache.set(self.cacheName, a);
}
, null, this, options))
// Reject the promise on fail
.fail(_.bind(deferred.reject, this, this));
deferred.abort = jqXHR.abort;
// return a promise which provides the same methods as a jqXHR object
return deferred;
}
}
});
return CachedCollection;
});
+2 -2
View File
@@ -73,12 +73,12 @@ define(['jquery', 'backbone'],
}, },
isGPlusConnected: function(){ isGPlusConnected: function(){
if(this.data.type == "gplus") if(this.data.type === "google")
return true; return true;
return false; return false;
}, },
isFbConnected: function(){ isFbConnected: function(){
if(this.data.type == "fb") if(this.data.type === "facebook")
return true; return true;
return false; return false;
}, },
+3
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -1,11 +1,11 @@
var myManifest = { var myManifest = {
Debug: false, Debug: false,
Name: "Il Lievitario", Name: "Il Lievitario",
Version: "2.3.0", Version: "2.5.0",
Author: "Denis Ironi", Author: "Denis Ironi",
Settings: { Settings: {
DefaultURL: "http://localhost:8081/Service_Manut", //DefaultURL: "http://localhost:8081/Service_Manut",
//DefaultURL: "http://app.gruppolapastamadre.it/Service", DefaultURL: "http://app.gruppolapastamadre.it/Service",
JQueryVersion: "1.11.1", JQueryVersion: "1.11.1",
JQueryMobileVersion: "1.4.3", JQueryMobileVersion: "1.4.3",
Device:{ Device:{
+4 -5
View File
@@ -1,11 +1,10 @@
define(['app', 'jquery', 'underscore', 'backbone', 'model/category/categoryModel'], define(['app', 'jquery', 'underscore', 'backbone', 'model/category/categoryModel', 'classes/cachedCollection'],
function (app, $, _, Backbone, Category){ function (app, $, _, Backbone, Category, CachedCollection) {
var Categories=Backbone.Collection.extend({
var Categories = CachedCollection.extend({
cacheName: "Category0",
// Book is the model of the collection // Book is the model of the collection
model: Category, model: Category,
url: function () { url: function () {
return myManifest.Settings.DefaultURL + "/api/categories"; return myManifest.Settings.DefaultURL + "/api/categories";
} }
@@ -1,11 +1,12 @@
define(['app', 'jquery', 'underscore', 'backbone', 'model/categoryItem/categoryItemModel'], define(['app', 'jquery', 'underscore', 'backbone', 'model/categoryItem/categoryItemModel', 'classes/cachedCollection'],
function (app, $, _, Backbone, Category){ function (app, $, _, Backbone, Category, CachedCollection){
var CategoryItems=Backbone.Collection.extend({ var CategoryItems=CachedCollection.extend({
categoryId: null, categoryId: null,
initialize: function (options) { initialize: function (options) {
this.categoryId = options.categoryId; this.categoryId = options.categoryId;
this.cacheName = "Category" + this.categoryId;
}, },
// Book is the model of the collection // Book is the model of the collection
model:Category, model:Category,
-4
View File
@@ -2,13 +2,11 @@ define(['jquery', 'underscore', 'backbone','text!modules/category/categoryViewTe
function ($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView) { function ($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView) {
var CategoryView = BaseView.extend({ var CategoryView = BaseView.extend({
collection: null, collection: null,
categoryName: null, categoryName: null,
//initialize template //initialize template
template: _.template(categoryViewTemplate), template: _.template(categoryViewTemplate),
itemtemplate: _.template(categoryItemTemplate), itemtemplate: _.template(categoryItemTemplate),
initialize: function (options) { initialize: function (options) {
var self = this; var self = this;
CategoryView.__super__.initialize.call(this); CategoryView.__super__.initialize.call(this);
@@ -21,7 +19,6 @@ function($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView){
//success: function(){ self.renderItem(); } //success: function(){ self.renderItem(); }
}); });
}, },
renderItem: function () { renderItem: function () {
var $ul = $('#allRicette'); var $ul = $('#allRicette');
@@ -46,7 +43,6 @@ function($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView){
$.mobile.loading('hide'); $.mobile.loading('hide');
//$( '[data-alpha="true"]' ).alphascroll(); //$( '[data-alpha="true"]' ).alphascroll();
}, },
//render the content into div of view //render the content into div of view
render: function () { render: function () {
//this.header.title = "pippo"; //this.header.title = "pippo";
+8 -37
View File
@@ -2,62 +2,42 @@ define(['jquery', 'underscore', 'backbone','text!modules/sync/syncViewTemplate.h
function ($, _, Backbone, syncViewTemplate, BaseView, Profile) { function ($, _, Backbone, syncViewTemplate, BaseView, Profile) {
var SyncView = BaseView.extend({ var SyncView = BaseView.extend({
//initialize template //initialize template
template: _.template(syncViewTemplate), template: _.template(syncViewTemplate),
initialize: function (options) { initialize: function (options) {
SyncView.__super__.initialize.call(this); SyncView.__super__.initialize.call(this);
if (options && if (options &&
options.tokenFound == 1) options.tokenFound == 1)
{ {
if(window.localStorage.getItem("tryLogin")=="fb") this.updateLoginBtn();
{
this.fbAfterLogin();
}
else if(window.localStorage.getItem("tryLogin")=="gplus")
{
this.gPlusAfterLogin();
}
} }
window.localStorage.setItem("tryLogin", null); window.localStorage.setItem("tryLogin", null);
}, },
events: { events: {
"click #backBtn": "backBtn", "click #backBtn": "backBtn",
"click #fblogin": "fbLogin", "click #fblogin": "fbLogin",
"click #gpluslogin": "gplusLogin", "click #gpluslogin": "gplusLogin",
"click #resetBtn": "resetBtn" "click #resetBtn": "resetBtn"
}, },
resetBtn: function (e) { resetBtn: function (e) {
e.preventDefault(); e.preventDefault();
Profile.setKeySave(null); Profile.setKeySave(null);
window.localStorage.setItem("hello", null);
Backbone.history.loadUrl(); Backbone.history.loadUrl();
}, },
backBtn: function (e) { backBtn: function (e) {
e.preventDefault(); e.preventDefault();
window.history.back(); window.history.back();
}, },
fbLogin: function (e) { fbLogin: function (e) {
var self = this; var self = this;
e.preventDefault(); e.preventDefault();
if(!Profile.isConnected()) { hello('facebook').login();
window.localStorage.setItem("tryLogin", "fb");
openFB.login('email');
}
else if(Profile.isConnected() && Profile.isFbConnected())
openFB.revokePermissions(function(){
Profile.setKeySave(null);
self.updateLoginBtn();
});
}, },
fbAfterLogin: function () fbAfterLogin: function ()
{ {
/*
var self = this; var self = this;
openFB.api({ openFB.api({
path: '/me', path: '/me',
@@ -76,25 +56,17 @@ define(['jquery', 'underscore', 'backbone','text!modules/sync/syncViewTemplate.h
self.updateLoginBtn(); self.updateLoginBtn();
}); });
}}); }});
*/
}, },
gplusLogin: function (e) { gplusLogin: function (e) {
var self = this; var self = this;
e.preventDefault(); e.preventDefault();
if(!Profile.isConnected()) { hello('google').login();
window.localStorage.setItem("tryLogin", "gplus");
openGPlus.login('email');
}
else if(Profile.isConnected() && Profile.isGPlusConnected())
openGPlus.revokePermissions(function(){
Profile.setKeySave(null);
self.updateLoginBtn();
});
}, },
gPlusAfterLogin: function () gPlusAfterLogin: function ()
{ {
/*
var self = this; var self = this;
openGPlus.api({ openGPlus.api({
path: 'people/me', path: 'people/me',
@@ -114,8 +86,8 @@ define(['jquery', 'underscore', 'backbone','text!modules/sync/syncViewTemplate.h
self.updateLoginBtn(); self.updateLoginBtn();
}); });
}}); }});
*/
}, },
updateLoginBtn: function () updateLoginBtn: function ()
{ {
if (Profile.isConnected()) { if (Profile.isConnected()) {
@@ -141,7 +113,6 @@ define(['jquery', 'underscore', 'backbone','text!modules/sync/syncViewTemplate.h
this.$el.find("#gpluslogin").addClass("logingplus"); this.$el.find("#gpluslogin").addClass("logingplus");
} }
}, },
//render the content into div of view //render the content into div of view
render: function () { render: function () {
var self = this; var self = this;
+4 -2
View File
@@ -4,14 +4,14 @@ define(['jquery', 'underscore', 'backbone',
'modules/sync/sync', 'modules/converter/converter', 'modules/donation/donation', 'modules/settings/settings', 'modules/sync/sync', 'modules/converter/converter', 'modules/donation/donation', 'modules/settings/settings',
'model/note/noteCollection', 'model/category/categoryCollection', 'model/categoryItem/categoryItemCollection', 'model/note/noteCollection', 'model/category/categoryCollection', 'model/categoryItem/categoryItemCollection',
'model/item/itemCollection', 'model/item/ingredientiCollection', 'model/categoryItem/foundItemCollection', 'model/item/itemCollection', 'model/item/ingredientiCollection', 'model/categoryItem/foundItemCollection',
'libs/fastclick', 'jqm', 'jQueryPlugins'], 'libs/fastclick', 'classes/cache', 'jqm', 'jQueryPlugins'],
function ($, _, Backbone, function ($, _, Backbone,
HomeView, FaqView, IndexView, CategoryView, ItemView, HomeView, FaqView, IndexView, CategoryView, ItemView,
AboutView, SearchView, FoundView, MoreView, NoteView, AboutView, SearchView, FoundView, MoreView, NoteView,
SyncView, ConverterView, DonationView, SettingsView, SyncView, ConverterView, DonationView, SettingsView,
NoteCollection, CategoryCollection, CategoryItemCollection, NoteCollection, CategoryCollection, CategoryItemCollection,
ItemCollection, IngredientiCollection, FoundItemCollection, ItemCollection, IngredientiCollection, FoundItemCollection,
FastClick) { FastClick, Cache) {
'use strict'; 'use strict';
var Router = Backbone.Router.extend({ var Router = Backbone.Router.extend({
@@ -84,6 +84,8 @@ define(['jquery', 'underscore', 'backbone',
this.changePage(faqView); this.changePage(faqView);
}, },
showIndex: function (actions) { showIndex: function (actions) {
Cache.checkCacheFromServer();
var categories = new CategoryCollection(); var categories = new CategoryCollection();
// will render home view and navigate to homeView // will render home view and navigate to homeView
var indexView = new IndexView({collection: categories}); var indexView = new IndexView({collection: categories});
+1 -15
View File
@@ -2,20 +2,6 @@
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group/>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/router.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/category/category.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/model/category/categoryModel.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/css/base.style.css</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/sync/syncViewTemplate.html</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/css/jquery.rating.css</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/index.php</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/model/categoryItem/categoryItemModel.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/home/homeViewTemplate.html</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/manifest.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/category/categoryItemTemplate.html</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/sync/sync.js</file>
<file>file:/E:/Sviluppo/IlLievitario/WebClient_Manut/js/modules/item/itemViewTemplate.html</file>
</group>
</open-files> </open-files>
</project-private> </project-private>
+63
View File
@@ -0,0 +1,63 @@
<?php
/**
* XML Sitemap PHP Script
* For more info, see: http://yoast.com/xml-sitemap-php-script/
* Copyright (C), 2011 - 2012 - Joost de Valk, [email protected]
*/
// inclusione del file contenente la classe
require_once "./Service/MySqlClass.php";
require_once "./Service/utility.php";
// Get the keys so we can check quickly
// Sent the correct header so browsers display properly, with or without XSL.
header( 'Content-Type: application/xml' );
echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
$url = "http://app.gruppolapastamadre.it/";
$blog_timezone = 'UTC';
$timezone_offset = '+01:00';
$W3C_datetime_format_php = 'Y-m-d\Th:i:s'; // See http://www.w3.org/TR/NOTE-datetime
function dinamicSite() {
global $url, $blog_timezone, $timezone_offset, $W3C_datetime_format_php;
$mysqlconnetion = new MysqlClass;
//$mysqlconneti on->connetti();
$retObj = $mysqlconnetion->queryToObject("select ID as category_id, NAME as name from categorie order by name");
foreach ($retObj as $key => $value)
{
$catStr = "#category/". $value["name"] ."/" . $value["category_id"];
$lastModified = $mysqlconnetion->queryToObject("select MAX(Data_creazione) as lastModified from ricette where ID_CATEGORIA = ". $value["category_id"]);
$date = DateTime::createFromFormat('Y-m-d H:i:s', $lastModified[0]["lastModified"], new DateTimeZone("Europe/Rome"));
$lastDate = date_format($date, $W3C_datetime_format_php) . $timezone_offset;
?>
<url>
<loc><?php echo $url . $catStr; ?></loc>
<lastmod><?php echo $lastDate; ?></lastmod>
</url><?php
$query = "select ID as ricetta_id, titolo from ricette where ID_CATEGORIA = " . $value["category_id"] . " order by titolo, autore";
$ricItems = $mysqlconnetion->queryToObject($query);
foreach ($ricItems as $keyRic => $valueRic)
{
$itemStr= "#ricetta/" . $valueRic["ricetta_id"];
?>
<url>
<loc><?php echo $url . $itemStr; ?></loc>
</url><?php
}
}
$mysqlconnetion->disconnetti();
}
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><?php
dinamicSite();
?>
</urlset>
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://app.gruppolapastamadre.it/</loc>
<lastmod>2014-04-09</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://app.gruppolapastamadre.it/</loc>
<lastmod>2014-04-09</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
+30
View File
@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<title>Il Lievitario</title>
<meta name="google" value="notranslate" />
<meta http-equiv="expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css" >
<link rel="stylesheet" href="css/style.min.<?php echo filemtime('css/style.min.css'); ?>.css">
<link rel="shortcut icon" sizes="196x196" href="https://dl.dropboxusercontent.com/s/l26w7lk0zwnpehf/Icon_Android196.png">
<link rel="apple-touch-icon" href="https://dl.dropboxusercontent.com/s/9cc174ato4hckl5/Icon.png" />
<link rel="apple-touch-icon" sizes="72x72" href="https://dl.dropboxusercontent.com/s/onehseqh6cusbo0/Icon~ipad.png" />
<link rel="apple-touch-icon" sizes="114x114" href="https://dl.dropboxusercontent.com/s/tcxl91zd502mapa/Icon%402x.png" />
<link rel="apple-touch-icon" sizes="144x144" href="https://dl.dropboxusercontent.com/s/pj3fk1lgc4cefwx/Icon~ipad%402x.png" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimal-ui"/>
<meta http-equiv="Access-Control-Allow-Origin" content="*"/>
</head>
<body style="background-color: #1d1d1d;">
<div id="loadingFrm" style="text-align: center;">
<div class="loadingSfondo">
<div class="loadingText">
<div style="color: #ffffff;"><b>Caricamento...</b></div>
</div>
</div>
</body>
</html>