3 Commits
38 changed files with 1466 additions and 1148 deletions
+6 -6
View File
@@ -15,12 +15,12 @@ AddOutputFilterByType DEFLATE text/css application/x-javascript text/html text/r
<ifModule mod_rewrite.c> <ifModule mod_rewrite.c>
RewriteEngine On RewriteEngine On
RewriteRule ^index.html$ index.php [L] RewriteRule ^index.html$ index.php [L]
RewriteRule ^js/libs/(.*)\.[0-9]+\.js$ /IlLievitarioManut/js/libs/$1.js [L] RewriteRule ^js/libs/(.*)\.[0-9]+\.js$ /WebClient_Manut/js/libs/$1.js [L]
RewriteRule ^js/(.*)\.[0-9]+\.js$ /IlLievitarioManut/js/$1.js [L] RewriteRule ^js/(.*)\.[0-9]+\.js$ /WebClient_Manut/js/$1.js [L]
RewriteRule ^css/(.*)\.[0-9]+\.css$ /IlLievitarioManut/css/$1.css [L] RewriteRule ^css/(.*)\.[0-9]+\.css$ /WebClient_Manut/css/$1.css [L]
RewriteRule ^Resources/img/(.*)\.[0-9]+\.png$ /IlLievitarioManut/Resources/img/$1.png [L] RewriteRule ^Resources/img/(.*)\.[0-9]+\.png$ /WebClient_Manut/Resources/img/$1.png [L]
RewriteRule ^Resources/img/(.*)\.[0-9]+\.gif$ /IlLievitarioManut/Resources/img/$1.gif [L] RewriteRule ^Resources/img/(.*)\.[0-9]+\.gif$ /WebClient_Manut/Resources/img/$1.gif [L]
RewriteRule ^Resources/icons/(.*)\.[0-9]+\.png$ /IlLievitarioManut/Resources/icons/$1.png [L] RewriteRule ^Resources/icons/(.*)\.[0-9]+\.png$ /WebClient_Manut/Resources/icons/$1.png [L]
</ifModule> </ifModule>
<ifModule mod_headers.c> <ifModule mod_headers.c>
+2 -1
View File
@@ -1,5 +1,6 @@
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
call cleancss -o .\css\style.min.css .\css\style.css call cleancss --s0 --skip-rebase -o .\css\style.min.css .\css\style.css
pause pause
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+19 -9
View File
@@ -9,7 +9,8 @@
.ui-icon-myHome:after { .ui-icon-myHome:after {
background: url("https://dl.dropboxusercontent.com/s/w5evmv0suijf2jd/house.png") 50% 50% no-repeat; background-size: 22px 22px; background: url("https://dl.dropboxusercontent.com/s/w5evmv0suijf2jd/house.png") 50% 50% no-repeat; background-size: 22px 22px;
margin-top: -15px !important; margin-top: -15px !important;
width: 30px!important; height: 30px!important; margin-left: -15px !important; box-shadow: none!important; -moz-box-shadow: none!important; -webkit-box-shadow: none!important; -webkit-border-radius: 0 !important; border-radius: 0 !important; width: 30px!important; height: 30px!important; margin-left: -15px !important;
box-shadow: none!important; -moz-box-shadow: none!important; -webkit-box-shadow: none!important; -webkit-border-radius: 0 !important; border-radius: 0 !important;
} }
#favoriteBtn:after { background: url("https://dl.dropboxusercontent.com/s/ptt4475xkrv0chu/favorite.png") 50% 50% no-repeat; background-size: 22px 22px; } #favoriteBtn:after { background: url("https://dl.dropboxusercontent.com/s/ptt4475xkrv0chu/favorite.png") 50% 50% no-repeat; background-size: 22px 22px; }
@@ -26,23 +27,23 @@
#saveBtn:after { background: url("https://dl.dropboxusercontent.com/s/dsqkblkv9zgqyab/save.png") 50% 50% no-repeat; background-size: 22px 22px; #saveBtn:after { background: url("https://dl.dropboxusercontent.com/s/dsqkblkv9zgqyab/save.png") 50% 50% no-repeat; background-size: 22px 22px;
box-shadow: none!important; -moz-box-shadow: none!important; -webkit-box-shadow: none!important; -webkit-border-radius: 0 !important; border-radius: 0 !important;} box-shadow: none!important; -moz-box-shadow: none!important; -webkit-box-shadow: none!important; -webkit-border-radius: 0 !important; border-radius: 0 !important;}
.loginfb { .loginfb:before {
content: url('https://www.dropbox.com/s/vsc19gan0ihjptr/fblogin.png'); content: url('https://dl.dropboxusercontent.com/s/vsc19gan0ihjptr/fblogin.png');
width: 200px; width: 200px;
} }
.logoutfb { .logoutfb:before {
content: url('https://www.dropbox.com/s/sdbe56vqxeqevph/fblogout.png'); content: url('https://dl.dropboxusercontent.com/s/sdbe56vqxeqevph/fblogout.png');
width: 200px; width: 200px;
} }
.logingplus { .logingplus:before {
content: url('https://www.dropbox.com/s/k43w3cfzowlynhk/gpluslogin.png'); content: url('https://dl.dropboxusercontent.com/s/k43w3cfzowlynhk/gpluslogin.png');
width: 200px; width: 200px;
} }
.logoutgplus { .logoutgplus:before {
content: url('https://www.dropbox.com/s/nnprsunm8zg31en/gpluslogout.png'); content: url('https://dl.dropboxusercontent.com/s/nnprsunm8zg31en/gpluslogout.png');
width: 200px; width: 200px;
} }
@@ -117,6 +118,15 @@ div.ricettaAutore{
-webkit-touch-callout: none; -webkit-touch-callout: none;
} }
.selectable {
-webkit-user-select: auto;
-moz-user-select: auto;
-ms-user-select: auto;
-o-user-select: auto;
user-select: auto;
-webkit-touch-callout: auto;
}
textarea { textarea {
-webkit-user-select: auto !important; -webkit-user-select: auto !important;
} }
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

+5 -5
View File
@@ -1,9 +1,9 @@
/* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */ /* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */
div.rating-cancel,div.star-rating{float:left;width:24px;height:24px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden} div.rating-cancel,div.star-rating{float:left;width:16px;height:16px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden}
div.rating-cancel,div.rating-cancel a{background:url(delete.png) no-repeat 0 -24px} div.rating-cancel,div.rating-cancel a{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC41ZYUyZQAABAZJREFUSEuVlGtIHFcUx++6YaPGB2ow3WqiCa2apmo0tkrQSExqrCVak7gVs6SPL6FQUGPB9RH8YkFBKPigii8oguL7rbvia0VQ/BBajCFQKCQxJsXo2mzdjbs7p/87O6luNt0kf/hx7sz9nzN3Zu497FXNz8/76fX65OXl5ZtLS0u3gWZxcfHG7Oxs5MzMzAHJ9nqNjY0dhEkHswHszs3NCYgConl6evox5n6SrM6ampqKBvcBuWJycrJpYGDAW0rbk06n6wcCDNzkChP4WkqzC4kZWq2W3paJiQkDOComd3V1KUZHR/V4f+JgTCMjIw7we+Pj4zxR9Ei+PLHA4ODgkaGhodXh4WHirKyskMViEdnd3SWTyUQ7OztkNBoJH1T0cJBTVV5e7sZ6e3uV/f399/BhiLO6ukr7ZbPZxGK8CP+IL319fX3VWL2coZInBgs9PT3EwYoIRQn3HOju7hbn93FLfAWujo6OvM7OTnoXUOBDKV2UrL29fQEIgN6AGThvqNbW1pS2trZNQG9A29TU5C+l/SdZQUGBR0NDg7q5ufkOilleTWxpadnC3FB9fX1Udna2XMqzi/8O4FlaWhpSUVGRVVVVVVtXV3e3sbFxE0XXampqdJWVlfnwxGk0mgBEp0Mlw00F8C8rKwtHTEFUFRcXq0EOxuklJSWxIKiwsPAQ5t2kvD3hl8vwu+T8VfhTsJqjiCeKiopCkRAIfAB/iHPyflFurp/w7ffJQt6PN623NLet+UUa6w95N17kfhNJyc5Ld5CQlnZQyPxKR1m5BuHq9V3hmlqwXVULGJttmTmPbRmq/+8HQmpWtC39yn364hq5wpZ2pUk4m+HcD2wXL/cLn2UKlPoluQIek3DhsmM/EM5dzKDkz+ltsSWlGYSkVHs/oI+yFZb483pr/AUS+eQ8WWOSyXpago9jwdlUsiZesns4cSn2fvD84/gj/0QnrppOnyOOubqWzDi6O+gDRkTD9jZtPHtGT54+JaPqO9FjJ6mKGHNjxohYpTHi03vGkwnEefHzL/ZGIMlqtYpNZRtFnmdcFz2cvyMSqrsYtvSa8oznVmjMguF4LHG2IxMRz9BWUJQDhmAQGiN6RN/xmL1+sHH4VN5G4Cl6F/46fNKxH6z7hC2se4UJT7zCyBXwmNd9P3DeUA/ZsZRHspDNNVkIueKR7Jj2AQt27gfBjHlo3d5T/86Ud/5k71sesCB6yUPwB1Nu/caUQ4MsMAp+x34A8RPm6e7uHpKg8MpSyb1qf2W+d/XMf3OS+a3Vy3x1KjeP/HB2IA6+AODcD4DCh/n4eyu8w+VyeQquVUANcnCdjhgLgsAh8NojzYvwpXl4M+8Ad+bOt+oJEAoCgQ9QgH3JjP0LiOu08eQI5iQAAAAASUVORK5CYII=') no-repeat 0 -16px}
div.star-rating,div.star-rating a{background:url(star.png) no-repeat 0 0px} div.star-rating,div.star-rating a{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAwCAYAAAAYX/pXAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAAaFSURBVEhLjZZrTFNnGMd7O6cXbrYsgoRvxo9GxC1Zsg98IEaMMSFmzTRsMidpshCMSJlfltR7QTMTXUDocFxkqdsQBCog4CjScqflUsUlBnVLVC4G2UUQ7Hv2f05beqgY9yaPPefw/v/v+zzv8/6iDEOem5ubVFJScqy2tnYEsWi326crKiounj17dmdDQ8MOm82WcuDAgQ8wV0khCIIsFDKTyaS7cuXKtcHBwdednZ3M6XSy0dFR4c6dO29cLteC1+ud6+vrm7l06ZLDarUWw/xcdnb2J7SwaJCfn7/t7t27syRyOBxsbGxMIJOhoSFhYmJiNfDND0OGhfx1dXUzKSkpaaJBWVnZnoGBgeXx8XGBxDS5sbHRLxVTuN1u5vF4BCwmLnLo0KES0aC6unofXFloIhndvHlzjQF9a2trE8iAdkfvR44cqRQNSktLd8FgSSqg1aTvra2trKWlRfw2PDwsdHV1sbS0tP2iQWFh4Ra4PqUaSEXSoHrQqvSMXfiLioquJycna0UDi8Wiq6ysvI1Kr66Kyq/ZgTQ6OjomzWbzZhKLBjhG7gIGTsBPWxsZGRGam5vFQlHOocKi0AyLzKMnDhqNxtVeoKHMy8sz37hxgyFXoaenh+GYWHd3N0N9GITiN6S5WFVVdYb6JiReNcDEglCOoUAaVEw6EXb58mWGZuvPyclJlopFA2yHRy9US8XSIOPe3l4hNTX1Sywmdt8ag6ysrGRs/xFtlQJHKkSeCO5JP8SqSLFokJ6evhVdNXvixAlG26V2bmpqYlRIyp3M0O6F64kpZHSeiYmJBdjJ/fr6+hU6czoJ2kl7ezvD7WQo3N71xBSBf1DI7du3J2VkZKAkRvupU6em0BtLqPocbqAtMzMzPlIYChryQq02qUmjOebi+RE3zy/2c9x0u1p9sSYqauc4x+1w6HQpx6Kj38GDTZt0t9Tqa//I5a//UKnYM6WSvcHG/lQq38wqFAvLMtncS7l8pk6jcVRHRRX3cdy5o3p9mAdWnW7bjEIxuyKXC7/DgMTPYfIv3sUMgwFj/wuFgmEhv5fjZj5OTAzwoJXn9/wtly/7MYnENNnHcX6pmILESzCdhjnNNev1AR44eX4fXFloIkMg7zUG9G1KpRJew4B2R+8nY2MDPGhWq3dhB0tSAa0mfX+I1ChIuAiTZ/h7RkJCgAfFMTFbnisUT0PbXy9eQURiekYa/hqtNsyDcplMhzRuv5SsuixJKTKeKBST52NjwzyAAfeTVnvhgUrlf4r8qFCT2C4Vip7pl4RIky3I5fNtGs3BXyS9QEN5Oi7OPMpxlKeAs2cePE/j16HRsL8UCvEb0lzsUqvPWNA3IbFoYITBLY2mILRSKFYQKCYdKavXahmarf8bg+FtHlhkMt7B89VSsTSoePMw+ighYX0e5MEV5/4IOVKeAnpCXF1q0qjRvJsHuzdu3Jqv18+WRUezeygetTMVEUVlc8idjtcaF/d+HuTq9fcnOG6F7gA1C+3mMU4Ft5Md37Dhf/AgPj7pU4PBeNhgsF/V6aZQ8aVunp+r0mptX8TEvIcHueBBGXhgBw/s4MGv4MGP4EEReNAAHtjAA1OYB6IqNEwm8MAGHnjBAyd44AIP7oEH3eDBAHjgAw+GwYPvwYNi8OBn8CA7wAPRwHocPOgFD3zgQRt4APFzN3gwihN7gF0G45kbPBgAD7zgQQN48GFimmjQWgEeeMGDSfDgfmCy7xaus0RMQeKlCfCgFzzAPPNhfYlo4LSDB15cnuBEBqPx5rUG9G2qEzyAAe2O3k8eja0UDZpt4IEHPJAIXgziZkreH3aABwiG58Ux8MAFHqQl7BcNir8FD1zgAXKXiqTxCvWgVekZafhrzgd4IBqUW8CDWvBgOLzqsi+cUmQ8cYIH5tjNophGuQk8+A48aAMPesCDcfCgBTxAoeiZfkmINNnCMHhwFTwwru0F5emj4EEjeNABHvSBBw3gQS94YAMPPOBBP3jgBg9qwQP0TVAXGCIPfgAPgjmGYsUnHp3gc4AHJeCBDTzIMSQHZeFhsYAH5eCBRCwNKt78EHiQGuBBQCUZeVngQRN44MENRKAnhJWIE2ksDfAgoIgYu9PBg6/Ag9PggQM8QDtPtoIH+J1D7nS81oK4wuD0t8cqDz4HD5rAA5w5NQvt5vFv4MF18ODrDXuD09858P8D8CADPPgMPDgDHtSAB7XggRU8yIyJD86LGDLZfy7jet43Ah+lAAAAAElFTkSuQmCC') no-repeat 0 0px}
div.rating-cancel a,div.star-rating a{display:block;width:24px;height:100%;background-position:0 0px;border:0} div.rating-cancel a,div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0}
div.star-rating-on a{background-position:0 -24px!important} div.star-rating-on a{background-position:0 -16px!important}
div.star-rating-hover a{background-position:0 -48px} div.star-rating-hover a{background-position:0 -48px}
/* Read Only CSS */ /* Read Only CSS */
div.star-rating-readonly a{cursor:default !important} div.star-rating-readonly a{cursor:default !important}
+15 -2
View File
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

+2
View File
@@ -1,3 +1,5 @@
@import url("jquery.mobile.icons.min.css");
@import url("IlLievitario.min.css");
@import url("loadingStyle.css"); @import url("loadingStyle.css");
@import url("base.style.css"); @import url("base.style.css");
@import url("mobile.style.css") screen; @import url("mobile.style.css") screen;
+1 -1
View File
File diff suppressed because one or more lines are too long
+14 -33
View File
@@ -4,50 +4,31 @@
<title>Il Lievitario</title> <title>Il Lievitario</title>
<meta name="google" value="notranslate" /> <meta name="google" value="notranslate" />
<meta http-equiv="expires" content="0"> <meta http-equiv="expires" content="0">
<meta http-equiv="Pragma" content="no-cache"> <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="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.structure.min.css" > <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.3/jquery.mobile-1.4.3.min.css" >
<link rel="stylesheet" href="css/jquery.mobile.icons.min.<?php echo filemtime('css/jquery.mobile.icons.min.css'); ?>.css"> <link rel="stylesheet" href="css/style.min.<?php echo filemtime('css/style.min.css'); ?>.css">
<link rel="stylesheet" href="css/IlLievitario.min.<?php echo filemtime('css/IlLievitario.min.css'); ?>.css"> <link rel="shortcut icon" sizes="196x196" href="https://dl.dropboxusercontent.com/s/l26w7lk0zwnpehf/Icon_Android196.png">
<link rel="stylesheet" href="css/style.min.<?php echo filemtime('css/style.min.css'); ?>.css"> <link rel="apple-touch-icon" href="https://dl.dropboxusercontent.com/s/9cc174ato4hckl5/Icon.png" />
<link rel="shortcut icon" sizes="196x196" href="https://dl.dropboxusercontent.com/s/l26w7lk0zwnpehf/Icon_Android196.png"> <link rel="apple-touch-icon" sizes="72x72" href="https://dl.dropboxusercontent.com/s/onehseqh6cusbo0/Icon~ipad.png" />
<link rel="apple-touch-icon" href="https://dl.dropboxusercontent.com/s/9cc174ato4hckl5/Icon.png" /> <link rel="apple-touch-icon" sizes="114x114" href="https://dl.dropboxusercontent.com/s/tcxl91zd502mapa/Icon%402x.png" />
<link rel="apple-touch-icon" sizes="72x72" href="https://dl.dropboxusercontent.com/s/onehseqh6cusbo0/Icon~ipad.png" /> <link rel="apple-touch-icon" sizes="144x144" href="https://dl.dropboxusercontent.com/s/pj3fk1lgc4cefwx/Icon~ipad%402x.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 name="viewport" content="width=device-width, initial-scale=1, minimal-ui"/>
<meta http-equiv="Access-Control-Allow-Origin" content="*"/> <meta http-equiv="Access-Control-Allow-Origin" content="*"/>
<script type='text/javascript' src="js/libs/ua-parser.min.<?php echo filemtime('js/libs/ua-parser.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' src="js/openfb.<?php echo filemtime('js/openfb.js'); ?>.js"></script> <script type='text/javascript'>
<script type='text/javascript' src="js/opengplus.<?php echo filemtime('js/opengplus.js'); ?>.js"></script> <?php echo file_get_contents("js/manifest.js"); ?>
<script type='text/javascript'> </script>
if(openFB && window.location && <script data-main="js/config.<?php echo filemtime('js/config.js'); ?>" src="js/libs/require.<?php echo filemtime('js/libs/require.js'); ?>.js"></script>
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"); ?>
</script>
<!--<script type='text/javascript' src="js/manifest.<?php echo filemtime('js/manifest.js'); ?>.js"></script>-->
<script data-main="js/config" 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") ?>
<div id="loadingFrm" style="text-align: center;"> <div id="loadingFrm" style="text-align: center;">
<img src="https://dl.dropboxusercontent.com/s/6qrdp9mbi1rb92k/sfondo.png" class="loadingSfondo"> <div class="loadingSfondo">
<div class="loadingText"> <div class="loadingText">
<div style="color: #ffffff;"><b>Caricamento...</b></div> <div style="color: #ffffff;"><b>Caricamento...</b></div>
<img src="https://dl.dropboxusercontent.com/s/mw90t9oay2v9jev/loading.gif">
</div> </div>
</div> </div>
</body> </body>
+63 -14
View File
@@ -1,29 +1,78 @@
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);
openGPlus.init('319140243944-qk0lfhgmi8shi4go97r83l69f1k0gdf4.apps.googleusercontent.com', origin, window.localStorage);
//console.log("Backbone history start");
// Trigger 'route' event on router instance.
router.on('route', function(name, args) {
//alert(name);
});
if( Profile.isConnected()) { hello.init({
facebook: '1466942266882168',
google: '319140243944-qk0lfhgmi8shi4go97r83l69f1k0gdf4.apps.googleusercontent.com'
}, {display: 'page', scope: 'email'});
//console.log("Backbone history start");
// Trigger 'route' event on router instance.
router.on('route', function (name, args) {
//alert(name);
});
Cache.checkCacheFromServer();
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();
}; };
return { return {
initialize:init initialize: init
}; };
}); });
+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 -7
View File
@@ -11,11 +11,6 @@ define(['jquery', 'backbone'],
if (this.data.type == null) if (this.data.type == null)
this.loadProfile(); this.loadProfile();
} }
else
{
this.data.risRic = window.localStorage.getItem("risRic");
this.data.tema = window.localStorage.getItem("tema");
}
return this; return this;
}, },
@@ -78,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 -1
View File
@@ -1,5 +1,6 @@
var pathJquery = "http://ajax.googleapis.com/ajax/libs/jquery/" + myManifest.Settings.JQueryVersion + "/jquery.min"; var pathJquery = "http://ajax.googleapis.com/ajax/libs/jquery/" + myManifest.Settings.JQueryVersion + "/jquery.min";
var pathJqueryMobile = "http://ajax.googleapis.com/ajax/libs/jquerymobile/"+ myManifest.Settings.JQueryMobileVersion + "/jquery.mobile.min"; var pathJqueryMobile = "http://code.jquery.com/mobile/"+ myManifest.Settings.JQueryMobileVersion + "/jquery.mobile-"+ myManifest.Settings.JQueryMobileVersion + ".min";
//var pathJqueryMobile = "http://ajax.googleapis.com/ajax/libs/jquerymobile/"+ myManifest.Settings.JQueryMobileVersion + "/jquery.mobile.min";
requirejs.config({ requirejs.config({
baseUrl: 'js', baseUrl: 'js',
+27 -5
View File
@@ -4,7 +4,6 @@
/** /**
* @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
* *
* @version 1.0.3
* @codingstandard ftlabs-jsv2 * @codingstandard ftlabs-jsv2
* @copyright The Financial Times Limited [All Rights Reserved] * @copyright The Financial Times Limited [All Rights Reserved]
* @license MIT License (see LICENSE.txt) * @license MIT License (see LICENSE.txt)
@@ -96,6 +95,13 @@
*/ */
this.tapDelay = options.tapDelay || 200; this.tapDelay = options.tapDelay || 200;
/**
* The maximum time for a tap
*
* @type number
*/
this.tapTimeout = options.tapTimeout || 700;
if (FastClick.notNeeded(layer)) { if (FastClick.notNeeded(layer)) {
return; return;
} }
@@ -167,13 +173,19 @@
} }
} }
/**
* Windows Phone 8.1 fakes user agent string to look like Android and iPhone.
*
* @type boolean
*/
var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0;
/** /**
* Android requires exceptions. * Android requires exceptions.
* *
* @type boolean * @type boolean
*/ */
var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0; var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;
/** /**
@@ -181,7 +193,7 @@
* *
* @type boolean * @type boolean
*/ */
var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent); var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;
/** /**
@@ -193,11 +205,11 @@
/** /**
* iOS 6.0(+?) requires the target element to be manually derived * iOS 6.0-7.* requires the target element to be manually derived
* *
* @type boolean * @type boolean
*/ */
var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent); var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent);
/** /**
* BlackBerry requires exceptions. * BlackBerry requires exceptions.
@@ -519,6 +531,10 @@
return true; return true;
} }
if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) {
return true;
}
// Reset to prevent wrong click cancel on input (issue #156). // Reset to prevent wrong click cancel on input (issue #156).
this.cancelNextClick = false; this.cancelNextClick = false;
@@ -776,6 +792,12 @@
return true; return true;
} }
// IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version
// http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx
if (layer.style.touchAction === 'none') {
return true;
}
return false; return false;
}; };
+2
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,10 +1,10 @@
var myManifest = { var myManifest = {
Debug: false, Debug: false,
Name: "Il Lievitario", Name: "Il Lievitario",
Version: "2.2.3", Version: "2.5.0",
Author: "Denis Ironi", Author: "Denis Ironi",
Settings: { Settings: {
//DefaultURL: "http://localhost:8081/Service", //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",
+12 -13
View File
@@ -1,17 +1,16 @@
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
model: Category,
url: function () {
return myManifest.Settings.DefaultURL + "/api/categories";
}
});
// Book is the model of the collection return Categories;
model:Category, });
url: function() {
return myManifest.Settings.DefaultURL + "/api/categories";
}
});
return 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,
+3 -3
View File
@@ -1,5 +1,5 @@
define(['jquery', 'underscore', 'backbone','text!modules/about/aboutViewTemplate.html', 'modules/base/baseView'], define(['jquery', 'underscore', 'backbone','text!modules/about/aboutViewTemplate.html', 'modules/base/baseView', 'classes/profile'],
function($, _, Backbone, aboutViewTemplate, BaseView){ function($, _, Backbone, aboutViewTemplate, BaseView, Profile){
var AboutView = BaseView.extend({ var AboutView = BaseView.extend({
@@ -18,7 +18,7 @@ function($, _, Backbone, aboutViewTemplate, BaseView){
//$el is cached jQuery object for the view's element. //$el is cached jQuery object for the view's element.
//append the compiled template into view div container //append the compiled template into view div container
this.$el.append(this.header.$el); this.$el.append(this.header.$el);
this.$el.append(this.template( { app: myManifest })); this.$el.append(this.template( { app: myManifest, profile: Profile }));
this.$el.append(this.footer.$el); this.$el.append(this.footer.$el);
this.$el.find("#infoBtn").addClass("ui-btn-active"); this.$el.find("#infoBtn").addClass("ui-btn-active");
//$("#homeBtn").addClass("ui-btn-active"); //$("#homeBtn").addClass("ui-btn-active");
+1
View File
@@ -7,6 +7,7 @@
<b>Sviluppatore:</b> <%= app.Author %><br><br> <b>Sviluppatore:</b> <%= app.Author %><br><br>
<br><b>Dettagli Sviluppo: </b><br>S.O.:<%= app.Agent.os.name %><br>Versione: <%= app.Agent.os.version %><br><br> <br><b>Dettagli Sviluppo: </b><br>S.O.:<%= app.Agent.os.name %><br>Versione: <%= app.Agent.os.version %><br><br>
<b>Librerie Usate: </b><br>JQuery:<%= app.Settings.JQueryVersion %><br>JQueryMobile: <%= app.Settings.JQueryMobileVersion %><br> <b>Librerie Usate: </b><br>JQuery:<%= app.Settings.JQueryVersion %><br>JQueryMobile: <%= app.Settings.JQueryMobileVersion %><br>
<div class="selectable"><b>Key Sync: </b><%= profile.getKeySave() %><br></div>
<br><br> <br><br>
<b>Ringraziamenti a</b> <b>Ringraziamenti a</b>
<br><br> <br><br>
+57 -49
View File
@@ -1,54 +1,62 @@
define(['jquery', 'underscore', 'backbone','text!modules/category/categoryViewTemplate.html', 'text!modules/category/categoryItemTemplate.html', 'modules/base/baseView'], define(['jquery', 'underscore', 'backbone', 'text!modules/category/categoryViewTemplate.html', 'text!modules/category/categoryItemTemplate.html', 'modules/base/baseView'],
function($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView){ function ($, _, Backbone, categoryViewTemplate, categoryItemTemplate, BaseView) {
var CategoryView = BaseView.extend({ var CategoryView = BaseView.extend({
collection: null,
categoryName: null,
//initialize template
template: _.template(categoryViewTemplate),
itemtemplate: _.template(categoryItemTemplate),
initialize: function (options) {
var self = this;
CategoryView.__super__.initialize.call(this);
this.collection = options.collection;
this.categoryName = options.categoryName;
this.collection.fetch({
success: function (data, textStatus, jqXHR) {
self.renderItem();
}
//success: function(){ self.renderItem(); }
});
},
renderItem: function () {
var $ul = $('#allRicette');
collection: null, var items = this.itemtemplate({data: this.collection.toJSON()});
categoryName: null,
//initialize template
template:_.template(categoryViewTemplate),
itemtemplate:_.template(categoryItemTemplate),
initialize: function (options) { $ul.html(items);
var self = this; $ul.listview("refresh");
CategoryView.__super__.initialize.call(this); $ul.trigger("updatelayout");
this.collection = options.collection;
this.categoryName = options.categoryName;
this.collection.fetch({
success: function(data, textStatus, jqXHR){
self.renderItem();
}
//success: function(){ self.renderItem(); }
});
},
renderItem: function(){ $ul.find('input[type=radio].star').rating({
var $ul = $('#allRicette'); callback: function (value, link) {
var tip = $('#hover-test');
if (value === undefined)
{
$('#hover-test').html("Nessuna" || 'value: ');
}
else
$('#hover-test').html(link.title || 'value: ' + value);
}
});
var items = this.itemtemplate({data:this.collection.toJSON()}); $.mobile.loading('hide');
//$( '[data-alpha="true"]' ).alphascroll();
$ul.html( items ); },
$ul.listview( "refresh" ); //render the content into div of view
$ul.trigger( "updatelayout"); render: function () {
//this.header.title = "pippo";
$.mobile.loading( 'hide' ); CategoryView.__super__.render.call(this);
//$( '[data-alpha="true"]' ).alphascroll(); //this.el is the root element of Backbone.View. By default, it is a div.
}, //$el is cached jQuery object for the view's element.
//append the compiled template into view div container
//render the content into div of view this.$el.append(this.header.$el);
render: function(){ this.$el.append(this.template({categoryName: this.categoryName}));
//this.header.title = "pippo"; this.$el.append(this.footer.$el);
CategoryView.__super__.render.call(this); //return to enable chained calls
//this.el is the root element of Backbone.View. By default, it is a div. this.$el.find("#indexBtn").addClass("ui-btn-active");
//$el is cached jQuery object for the view's element. return this;
//append the compiled template into view div container }
this.$el.append(this.header.$el); });
this.$el.append(this.template({ categoryName: this.categoryName })); return CategoryView;
this.$el.append(this.footer.$el); });
//return to enable chained calls
this.$el.find("#indexBtn").addClass("ui-btn-active");
return this;
}
});
return CategoryView;
});
+13 -1
View File
@@ -2,5 +2,17 @@
<h1>Nessuna ricetta trovata</h1> <h1>Nessuna ricetta trovata</h1>
<%} else { for (var i = 0; i < data.length; i++) { %> <%} else { for (var i = 0; i < data.length; i++) { %>
<% var item = data[i]; %> <% var item = data[i]; %>
<li><a href="#ricetta/<%= item.ricetta_id%>" class="ui-btn ui-btn-icon-right ui-icon-carat-r"><div class='ricettaTitolo'><%= unescape(item.titolo) %></div><div class='ricettaAutore'><%= unescape(item.autore) %></div></a></li> <li><a href="#ricetta/<%= item.ricetta_id%>" class="ui-btn ui-btn-icon-right ui-icon-carat-r">
<div class='ricettaTitolo'><%= unescape(item.titolo) %></div>
<div class='ricettaAutore'><%= unescape(item.autore) %></div>
<div id="valutazione" style="clear:both;">
<form id="difficoltaFrm" data-role="none">
<input name="difficolta" <% if(item.difficolta==="1"){%>checked="checked"<%}%> type="radio" data-role="none" value="1" disabled="disabled" title="Molto Semplice" class="star"/>
<input name="difficolta" <% if(item.difficolta==="2"){%>checked="checked"<%}%> type="radio" data-role="none" value="2" disabled="disabled" title="Semplice" class="star"/>
<input name="difficolta" <% if(item.difficolta==="3"){%>checked="checked"<%}%> type="radio" data-role="none" value="3" disabled="disabled" title="Normale" class="star"/>
<input name="difficolta" <% if(item.difficolta==="4"){%>checked="checked"<%}%> type="radio" data-role="none" value="4" disabled="disabled" title="Difficile" class="star"/>
<input name="difficolta" <% if(item.difficolta==="5"){%>checked="checked"<%}%> type="radio" data-role="none" value="5" disabled="disabled" title="Molto Difficile" class="star"/>
</form>
</div>
</a></li>
<% }} %> <% }} %>
+3 -3
View File
@@ -18,7 +18,7 @@
<div data-role="collapsible"><h4>Quando posso iniziare ad usare la PM autodrodotta? Quando posso mettere in frigorifero?</h4><p> La tua Pm sarà pronta all'utilizzo quando raddoppierà costantemente in 4 ore, ovvero avrà raggiunto un equilibrio accettabile tra lieviti e lactobacilli. Da questo momento potrai conservarla in frigorifero e rinfrescarla meno frequentemente. </p></div></li> <div data-role="collapsible"><h4>Quando posso iniziare ad usare la PM autodrodotta? Quando posso mettere in frigorifero?</h4><p> La tua Pm sarà pronta all'utilizzo quando raddoppierà costantemente in 4 ore, ovvero avrà raggiunto un equilibrio accettabile tra lieviti e lactobacilli. Da questo momento potrai conservarla in frigorifero e rinfrescarla meno frequentemente. </p></div></li>
<li data-role="collapsible" data-iconpos="left" data-inset="false"><h2>PM. Il Mantenimento (Rinfresco, fermentazione, collasso...) </h2> <div data-role="collapsible"><h4>Cos'è il rinfresco (o rigenero)?</h4><p>La Pasta Madre è un organismo vivo e per questo necessita di nutrimento:<br> <li data-role="collapsible" data-iconpos="left" data-inset="false"><h2>PM. Il Mantenimento (Rinfresco, fermentazione, collasso...) </h2> <div data-role="collapsible"><h4>Cos'è il rinfresco (o rigenero)?</h4><p>La Pasta Madre è un organismo vivo e per questo necessita di nutrimento:<br>
aggiungendo acqua e farina alla tua pm, le dai ""da mangiare"". I lieviti nutrendosi fanno partire la fermentazione e gonfiano la pm creando bolle d'aria.</p></div> aggiungendo acqua e farina alla tua pm, le dai ""da mangiare"". I lieviti nutrendosi fanno partire la fermentazione e gonfiano la pm creando bolle d'aria.</p></div>
<div data-role="collapsible"><h4>L'esubero di pasta madre</h4><p>"Esubero... chi era costui???"<br> <div data-role="collapsible"><h4>L'esubero di pasta madre</h4><p>"Esubero... chi era costui???"<br>
E' in assoluto la domanda più ricorrente qua dentro, la FAQ delle FAQ insomma, fiumi di discussioni in merito: chi lo definisce in un modo, chi in un altro, chi ne ha il frigo pieno, chi non lo conosce, chi lo butta, chi panifica solo con quello... ma in sintesi: <b>cosa sarebbe l'esubero?</b><br><br> E' in assoluto la domanda più ricorrente qua dentro, la FAQ delle FAQ insomma, fiumi di discussioni in merito: chi lo definisce in un modo, chi in un altro, chi ne ha il frigo pieno, chi non lo conosce, chi lo butta, chi panifica solo con quello... ma in sintesi: <b>cosa sarebbe l'esubero?</b><br><br>
Secondo il dizionario l'esubero è un'eccedenza, un avanzo, ma nel nostro ambito specifico, che è quello della panificazione con lievito madre, direi che possiamo trovarci in accordo nel definirlo <b>pasta madre di avanzo</b> (ebbene sì anche l'esubero è pasta madre!) <b>che non abbia subito un rinfresco recente.</b><br><br> Secondo il dizionario l'esubero è un'eccedenza, un avanzo, ma nel nostro ambito specifico, che è quello della panificazione con lievito madre, direi che possiamo trovarci in accordo nel definirlo <b>pasta madre di avanzo</b> (ebbene sì anche l'esubero è pasta madre!) <b>che non abbia subito un rinfresco recente.</b><br><br>
La pasta madre come ben sappiamo è <u>un impasto di acqua e farina colonizzato da particolari microrganismi (lieviti e lactobacilli) che le fanno avere potere fermentante, essi sono un qualcosa di vivo e per continuare a fare il proprio lavoro devono essere nutriti con quantitativi prestabiliti di acqua e farina. Una volta nutrita attraverso il rinfresco, la nostra pasta madre aumenta di volume raggiungendo un apice di crescita, dopo il quale (ed è fisiologico), raggiunge il collasso e tende ad inacidirsi.<br><br> La pasta madre come ben sappiamo è <u>un impasto di acqua e farina colonizzato da particolari microrganismi (lieviti e lactobacilli) che le fanno avere potere fermentante, essi sono un qualcosa di vivo e per continuare a fare il proprio lavoro devono essere nutriti con quantitativi prestabiliti di acqua e farina. Una volta nutrita attraverso il rinfresco, la nostra pasta madre aumenta di volume raggiungendo un apice di crescita, dopo il quale (ed è fisiologico), raggiunge il collasso e tende ad inacidirsi.<br><br>
@@ -91,8 +91,8 @@ Detto questo vorrei fare alcune considerazioni: <br><br>
<b>Biga:</b> è un preimpasto ottenuto miscelando acqua, farina e lievito in proporzioni tali che risulti piuttosto asciutto; alle volte può essere inteso anche come pasta madre (solida) rinfrescata, ad esempio nel libro di Annalisa De Luca<br><br> <b>Biga:</b> è un preimpasto ottenuto miscelando acqua, farina e lievito in proporzioni tali che risulti piuttosto asciutto; alle volte può essere inteso anche come pasta madre (solida) rinfrescata, ad esempio nel libro di Annalisa De Luca<br><br>
<b>Buratto:</b> è un setaccio e per estensione un tipo di farina di frumento setacciata appunto nel Buratto<br><br> <b>Buratto:</b> è un setaccio e per estensione un tipo di farina di frumento setacciata appunto nel Buratto<br><br>
<b>Burro a Pomata:</b> burro morbido, consistenza di una pomata/dentifricio/cremoso<br><br> <b>Burro a Pomata:</b> burro morbido, consistenza di una pomata/dentifricio/cremoso<br><br>
<b>Campana (lievitazione a):</b> far lievitare l'impasto sul piano di lavoro con ciotola rovesciata sopra a mo' di copertura<br><br> <b>Campana (lievitazione a):</b> far lievitare l'impasto sul piano di lavoro con ciotola rovesciata sopra a mo' di copertura<br><br>
<b>Esubero:</b> lievito madre non rinfescato e che avanza dopo la scorta standard e il rinfresco (vedere anche PM. Il Mantenimento (Rinfresco, fermentazione, collasso...) -> L'esubero di pasta madre)<br><br> <b>Esubero:</b> lievito madre non rinfescato e che avanza dopo la scorta standard e il rinfresco (vedere anche PM. Il Mantenimento (Rinfresco, fermentazione, collasso...) -> L'esubero di pasta madre)<br><br>
<b>Olio EVO:</b> Extra Vergine Oil (olio extravergine di Oliva)<br><br> <b>Olio EVO:</b> Extra Vergine Oil (olio extravergine di Oliva)<br><br>
<b>Cottura a fessura:</b> cottura con un oggetto - cucchiaio, mestolo piatto- che impedisca allo sportello del forno di chiudersi perfettamente (serve a far uscire l'umidità)<br><br> <b>Cottura a fessura:</b> cottura con un oggetto - cucchiaio, mestolo piatto- che impedisca allo sportello del forno di chiudersi perfettamente (serve a far uscire l'umidità)<br><br>
<b>Forno STATICO/VENTILATO:</b> il forno con la ventola spenta/accesa<br><br> <b>Forno STATICO/VENTILATO:</b> il forno con la ventola spenta/accesa<br><br>
+1
View File
@@ -15,6 +15,7 @@
Le admin <br><br><b>Alessia, Elena e Francesca</b><br><br>hanno RIFONDATO IL GRUPPO!!<br> Le admin <br><br><b>Alessia, Elena e Francesca</b><br><br>hanno RIFONDATO IL GRUPPO!!<br>
<br>"<b>Gruppo La Pasta Madre</b>"<br> <br>"<b>Gruppo La Pasta Madre</b>"<br>
<br>vuoi chiedere di diventare membro? <br>vuoi chiedere di diventare membro?
<br>Se sei già membro premi si e poi torna indietro con il browser
</p> </p>
<p style="text-align: center;"> <p style="text-align: center;">
<a id="goFbGroup" href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back">Si</a> <a id="goFbGroup" href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b" data-rel="back">Si</a>
+1 -1
View File
@@ -15,7 +15,7 @@
liStyle="list-style-type: none;"; liStyle="list-style-type: none;";
qty = ""; qty = "";
nome_ingr = ""; nome_ingr = "";
} %> <li style="<%= liStyle %>"><b><%= nome_ingr %></b><%= qty %> <%= ingrediente.unita %> <%= ingrediente.note %></li><br> <% }); %> } %> <li style="<%= liStyle %>"><b><%= nome_ingr %></b><%= qty %> <%= ingrediente.unita %> <%= unescape(ingrediente.note) %></li><br> <% }); %>
</p></center> </p></center>
</div> </div>
<div id="contentProcedimento" data-role="content" style="display: none;"> <div id="contentProcedimento" data-role="content" style="display: none;">
-9
View File
@@ -33,23 +33,14 @@ define(['jquery', 'underscore', 'backbone','text!modules/search/searchViewTempla
render: function () { render: function () {
//this.header.title = "pippo"; //this.header.title = "pippo";
SearchView.__super__.render.call(this); SearchView.__super__.render.call(this);
//this.el is the root element of Backbone.View. By default, it is a div.
//$el is cached jQuery object for the view's element.
//append the compiled template into view div container
this.$el.append(this.header.$el); this.$el.append(this.header.$el);
this.$el.append(this.template({data:this.collection.toJSON()})); this.$el.append(this.template({data:this.collection.toJSON()}));
this.$el.append(this.footer.$el); this.$el.append(this.footer.$el);
this.$el.find('#nResult').val(Profile.data.risRic); this.$el.find('#nResult').val(Profile.data.risRic);
// this.$el.find('#search').on("click", function(e){
// e.preventDefault();
//
// });
this.trigger("renderCompleted:Search", this); this.trigger("renderCompleted:Search", this);
this.$el.find("#searchBtn").addClass("ui-btn-active"); this.$el.find("#searchBtn").addClass("ui-btn-active");
//$("#homeBtn").addClass("ui-btn-active");
//return to enable chained calls
return this; return this;
} }
}); });
+128 -157
View File
@@ -1,164 +1,135 @@
define(['jquery', 'underscore', 'backbone','text!modules/sync/syncViewTemplate.html', 'modules/base/baseView', 'classes/profile'], define(['jquery', 'underscore', 'backbone', 'text!modules/sync/syncViewTemplate.html', 'modules/base/baseView', 'classes/profile'],
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) {
SyncView.__super__.initialize.call(this);
initialize: function (options) { if (options &&
SyncView.__super__.initialize.call(this); options.tokenFound == 1)
if(options &&
options.tokenFound == 1)
{
if(window.localStorage.getItem("tryLogin")=="fb")
{ {
this.fbAfterLogin(); this.updateLoginBtn();
} }
else if(window.localStorage.getItem("tryLogin")=="gplus") window.localStorage.setItem("tryLogin", null);
{ },
this.gPlusAfterLogin(); events: {
} "click #backBtn": "backBtn",
} "click #fblogin": "fbLogin",
window.localStorage.setItem("tryLogin", null); "click #gpluslogin": "gplusLogin",
}, "click #resetBtn": "resetBtn"
},
resetBtn: function (e) {
e.preventDefault();
Profile.setKeySave(null);
window.localStorage.setItem("hello", null);
Backbone.history.loadUrl();
},
backBtn: function (e) {
e.preventDefault();
window.history.back();
},
fbLogin: function (e) {
var self = this;
e.preventDefault();
events: { hello('facebook').login();
"click #backBtn": "backBtn", },
"click #fblogin": "fbLogin", fbAfterLogin: function ()
"click #gpluslogin": "gplusLogin",
"click #resetBtn": "resetBtn"
},
resetBtn:function(e){
e.preventDefault();
Profile.setKeySave(null);
Backbone.history.loadUrl();
},
backBtn:function(e){
e.preventDefault();
window.history.back();
},
fbLogin: function(e){
var self = this;
e.preventDefault();
if(!Profile.isConnected()) {
window.localStorage.setItem("tryLogin", "fb");
openFB.login('email');
}
else if(Profile.isConnected() && Profile.isFbConnected())
openFB.revokePermissions(function(){
Profile.setKeySave(null);
self.updateLoginBtn();
});
},
fbAfterLogin: function()
{
var self = this;
openFB.api({
path: '/me',
success: function (data) {
Profile.internalLoadProfile(data.id, function(retVal){
if(retVal == false)
Profile.createProfile(
data.id,
"fb",
data.name,
data.email,
data.gender,
function(){
//Backbone.history.loadUrl();
});
self.updateLoginBtn();
});
}});
},
gplusLogin: function(e){
var self = this;
e.preventDefault();
if(!Profile.isConnected()) {
window.localStorage.setItem("tryLogin", "gplus");
openGPlus.login('email');
}
else if(Profile.isConnected() && Profile.isGPlusConnected())
openGPlus.revokePermissions(function(){
Profile.setKeySave(null);
self.updateLoginBtn();
});
},
gPlusAfterLogin: function()
{
var self = this;
openGPlus.api({
path: 'people/me',
success: function (data) {
Profile.internalLoadProfile(data.id, function(retVal){
if(retVal == false)
Profile.createProfile(
data.id,
"gplus",
data.displayName,
data.emails[0].value,
data.gender,
function(){
//Backbone.history.loadUrl();
}
);
self.updateLoginBtn();
});
}});
},
updateLoginBtn: function()
{
if(Profile.isConnected()) {
if (Profile.isFbConnected()) {
this.$el.find("#fblogin").show();
this.$el.find("#gpluslogin").hide();
this.$el.find("#loginFbImg").removeClass("loginfb");
this.$el.find("#loginFbImg").addClass("logoutfb");
}
if (Profile.isGPlusConnected()) {
this.$el.find("#gpluslogin").show();
this.$el.find("#fblogin").hide();
this.$el.find("#loginGPlusImg").removeClass("logingplus");
this.$el.find("#loginGPlusImg").addClass("logoutgplus");
}
}
else
{ {
this.$el.find("#loginFbImg").removeClass("logoutfb"); /*
this.$el.find("#loginFbImg").addClass("loginfb"); var self = this;
this.$el.find("#loginGPlusImg").removeClass("logoutgplus"); openFB.api({
this.$el.find("#loginGPlusImg").addClass("logingplus"); path: '/me',
success: function (data) {
Profile.internalLoadProfile(data.id, function(retVal){
if(retVal == false)
Profile.createProfile(
data.id,
"fb",
data.name,
data.email,
data.gender,
function(){
//Backbone.history.loadUrl();
});
self.updateLoginBtn();
});
}});
*/
},
gplusLogin: function (e) {
var self = this;
e.preventDefault();
hello('google').login();
},
gPlusAfterLogin: function ()
{
/*
var self = this;
openGPlus.api({
path: 'people/me',
success: function (data) {
Profile.internalLoadProfile(data.id, function(retVal){
if(retVal == false)
Profile.createProfile(
data.id,
"gplus",
data.displayName,
data.emails[0].value,
data.gender,
function(){
//Backbone.history.loadUrl();
}
);
self.updateLoginBtn();
});
}});
*/
},
updateLoginBtn: function ()
{
if (Profile.isConnected()) {
if (Profile.isFbConnected()) {
this.$el.find("#fblogin").show();
this.$el.find("#gpluslogin").hide();
this.$el.find("#fblogin").removeClass("loginfb");
this.$el.find("#fblogin").addClass("logoutfb");
}
if (Profile.isGPlusConnected()) {
this.$el.find("#gpluslogin").show();
this.$el.find("#fblogin").hide();
this.$el.find("#gpluslogin").removeClass("logingplus");
this.$el.find("#gpluslogin").addClass("logoutgplus");
}
}
else
{
this.$el.find("#fblogin").removeClass("logoutfb");
this.$el.find("#fblogin").addClass("loginfb");
this.$el.find("#gpluslogin").removeClass("logoutgplus");
this.$el.find("#gpluslogin").addClass("logingplus");
}
},
//render the content into div of view
render: function () {
var self = this;
//this.header.title = "pippo";
SyncView.__super__.render.call(this);
this.header.$el.append("<a id=\"backBtn\" href=\"\" data-role=\"button\" class=\"ui-btn-right\" data-icon=\"custom\">Indietro</a>");
this.$el.append(this.header.$el);
this.$el.append(this.template({app: myManifest}));
this.$el.append(this.footer.$el);
this.$el.find("#moreBtn").addClass("ui-btn-active");
this.updateLoginBtn();
return this;
} }
}, });
return SyncView;
//render the content into div of view
render: function(){
var self = this;
//this.header.title = "pippo";
SyncView.__super__.render.call(this);
this.header.$el.append("<a id=\"backBtn\" href=\"\" data-role=\"button\" class=\"ui-btn-right\" data-icon=\"custom\">Indietro</a>");
this.$el.append(this.header.$el);
this.$el.append(this.template( { app: myManifest }));
this.$el.append(this.footer.$el);
this.$el.find("#moreBtn").addClass("ui-btn-active");
this.updateLoginBtn();
return this;
}
}); });
return SyncView;
});
+2 -2
View File
@@ -3,8 +3,8 @@
<div style="text-align: center;"> <div style="text-align: center;">
Qui puoi collegarti con l'account che preferisci<br>per avere la sincronizzazione dei tuoi dati su qualsiasi dispositivo che userai<br> Qui puoi collegarti con l'account che preferisci<br>per avere la sincronizzazione dei tuoi dati su qualsiasi dispositivo che userai<br>
Scegli il tipo di account e premi il tasto qui sotto per effettuare il login<br><br> Scegli il tipo di account e premi il tasto qui sotto per effettuare il login<br><br>
<a id="fblogin" href=""><img id="loginFbImg" class="loginfb"/><br></a> <a id="fblogin" href="" class="loginfb"></a><br>
<a id="gpluslogin" href=""><img id="loginGPlusImg" class="logingplus"/></a> <a id="gpluslogin" href="" class="logingplus"></a>
<div data-role="popup" id="popupLogin" data-overlay-theme="a" data-theme="a" data-corners="false" data-tolerance="15,15"> <div data-role="popup" id="popupLogin" data-overlay-theme="a" data-theme="a" data-corners="false" data-tolerance="15,15">
<a href="#" data-rel="back" class="ui-btn ui-btn-b ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a> <a href="#" data-rel="back" class="ui-btn ui-btn-b ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a>
<iframe id="urlLogin" src="" width="497" height="298" seamless=""></iframe> <iframe id="urlLogin" src="" width="497" height="298" seamless=""></iframe>
+15 -3
View File
@@ -156,6 +156,19 @@ var openFB = (function () {
tokenStore['fbtoken'] = undefined; tokenStore['fbtoken'] = undefined;
} }
function createHttpReq(callbackFn){
var request;
if (window.XDomainRequest) {
request = new window.XDomainRequest();
request.onload = callbackFn;
}
else {
request = new XMLHttpRequest();
request.onreadystatechange = callbackFn;
}
return request;
}
/** /**
* Lets you make any Facebook Graph API request. * Lets you make any Facebook Graph API request.
* @param obj - Request configuration object. Can include: * @param obj - Request configuration object. Can include:
@@ -169,14 +182,13 @@ var openFB = (function () {
var method = obj.method || 'GET', var method = obj.method || 'GET',
params = obj.params || {}, params = obj.params || {},
xhr = new XMLHttpRequest(),
url; url;
params['access_token'] = tokenStore['fbtoken']; params['access_token'] = tokenStore['fbtoken'];
url = 'https://graph.facebook.com' + obj.path + '?' + toQueryString(params); url = 'https://graph.facebook.com' + obj.path + '?' + toQueryString(params);
xhr.onreadystatechange = function () { var xhr = createHttpReq( function() {
if (xhr.readyState === 4) { if (xhr.readyState === 4) {
if (xhr.status === 200) { if (xhr.status === 200) {
if (obj.success) obj.success(JSON.parse(xhr.responseText)); if (obj.success) obj.success(JSON.parse(xhr.responseText));
@@ -185,7 +197,7 @@ var openFB = (function () {
if (obj.error) obj.error(error); if (obj.error) obj.error(error);
} }
} }
}; });
xhr.open(method, url, true); xhr.open(method, url, true);
xhr.send(); xhr.send();
+16 -3
View File
@@ -157,6 +157,19 @@ var openGPlus = (function () {
tokenStore['gplustoken'] = undefined; tokenStore['gplustoken'] = undefined;
} }
function createHttpReq(callbackFn){
var request;
if (window.XDomainRequest) {
request = new window.XDomainRequest();
request.onload = callbackFn;
}
else {
request = new XMLHttpRequest();
request.onreadystatechange = callbackFn;
}
return request;
}
/** /**
* Lets you make any Facebook Graph API request. * Lets you make any Facebook Graph API request.
* @param obj - Request configuration object. Can include: * @param obj - Request configuration object. Can include:
@@ -171,14 +184,14 @@ var openGPlus = (function () {
var method = obj.method || 'GET', var method = obj.method || 'GET',
baseUrl = obj.baseUrl || 'https://www.googleapis.com/plus/v1/', baseUrl = obj.baseUrl || 'https://www.googleapis.com/plus/v1/',
params = obj.params || {}, params = obj.params || {},
xhr = new XMLHttpRequest(),
url; url;
params['access_token'] = tokenStore['gplustoken']; params['access_token'] = tokenStore['gplustoken'];
url = baseUrl + obj.path + '?' + toQueryString(params); url = baseUrl + obj.path + '?' + toQueryString(params);
xhr.onreadystatechange = function () { //xhr.onreadystatechange =
var xhr = createHttpReq(function () {
if (xhr.readyState === 4) { if (xhr.readyState === 4) {
if (xhr.status === 200) { if (xhr.status === 200) {
if (obj.success) obj.success(JSON.parse(xhr.responseText)); if (obj.success) obj.success(JSON.parse(xhr.responseText));
@@ -187,7 +200,7 @@ var openGPlus = (function () {
if (obj.error) obj.error(error); if (obj.error) obj.error(error);
} }
} }
}; });
xhr.open(method, url, true); xhr.open(method, url, true);
xhr.send(); xhr.send();
+5 -3
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});
@@ -172,7 +174,7 @@ define(['jquery', 'underscore', 'backbone',
$('input[type=radio].star').rating({ $('input[type=radio].star').rating({
callback: function (value, link) { callback: function (value, link) {
var tip = $('#hover-test'); var tip = $('#hover-test');
if (value == undefined) if (value === undefined)
{ {
$('#hover-test').html("Nessuna" || 'value: '); $('#hover-test').html("Nessuna" || 'value: ');
} }
+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, joost@yoast.com
*/
// 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>