Compare commits
16 Commits
v_1.10
...
site_build
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ee722f6c2 | ||
|
|
28ba380cca | ||
|
|
357449c1c6 | ||
|
|
de70522850 | ||
|
|
cf5f71d14e | ||
|
|
34b47e40ab | ||
|
|
32ea581437 | ||
|
|
16ccbca2af | ||
|
|
3fd9beae1e | ||
|
|
01d0ae96f9 | ||
|
|
c211817f78 | ||
|
|
9ff0b96837 | ||
|
|
7a3413b339 | ||
|
|
72ff731694 | ||
|
|
3959b208b5 | ||
|
|
5c8c9db1de |
@@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
log('Script "custom.js" loaded');
|
||||||
|
|
||||||
var loaderCount = 2;
|
var loaderCount = 2;
|
||||||
var showLoader = function() {
|
var showLoader = function() {
|
||||||
if (loaderCount < 1) {
|
if (loaderCount < 1) {
|
||||||
@@ -19,6 +21,7 @@ var hideLoader = function() {
|
|||||||
if (loaderCount < 1) {
|
if (loaderCount < 1) {
|
||||||
$('#preloader').addClass('preloader-hide');
|
$('#preloader').addClass('preloader-hide');
|
||||||
loaderCount = 0;
|
loaderCount = 0;
|
||||||
|
log('Loader hidden');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,14 +30,23 @@ $(window).on('load',function(){
|
|||||||
hideLoader();
|
hideLoader();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
//Generating Cookies
|
||||||
|
function createCookie(e, t, n) {if (n) {var o = new Date;o.setTime(o.getTime() + n * 365 * 24 * 3600 * 1e3);var r = "; expires=" + o.toGMTString()} else var r = "";document.cookie = e + "=" + t + r + "; path=/"}
|
||||||
|
function readCookie(e) {for (var t = e + "=", n = document.cookie.split(";"), o = 0; o < n.length; o++) {for (var r = n[o];" " == r.charAt(0);) r = r.substring(1, r.length);if (0 == r.indexOf(t)) return r.substring(t.length, r.length)}return null}
|
||||||
|
function eraseCookie(e) {createCookie(e, "", -1)}
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
log('Document ready');
|
||||||
|
|
||||||
var isAJAX = false; //Enables or disable AJAX page transitions and loading.
|
var isAJAX = false; //Enables or disable AJAX page transitions and loading.
|
||||||
var isDevelopment = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults.
|
var isDevelopment = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults.
|
||||||
|
|
||||||
function init_template(){
|
function init_template(){
|
||||||
|
|
||||||
|
log('Initializing template...');
|
||||||
|
|
||||||
//ADD YOUR CUSTOM JAVASCRIPT CODES HERE!
|
//ADD YOUR CUSTOM JAVASCRIPT CODES HERE!
|
||||||
//Do not put inside HTML files.
|
//Do not put inside HTML files.
|
||||||
//The init_template() function will be triggered when pages open.
|
//The init_template() function will be triggered when pages open.
|
||||||
@@ -187,11 +199,6 @@ $(document).ready(function(){
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
//Generating Cookies
|
|
||||||
function createCookie(e, t, n) {if (n) {var o = new Date;o.setTime(o.getTime() + n * 365 * 24 * 3600 * 1e3);var r = "; expires=" + o.toGMTString()} else var r = "";document.cookie = e + "=" + t + r + "; path=/"}
|
|
||||||
function readCookie(e) {for (var t = e + "=", n = document.cookie.split(";"), o = 0; o < n.length; o++) {for (var r = n[o];" " == r.charAt(0);) r = r.substring(1, r.length);if (0 == r.indexOf(t)) return r.substring(t.length, r.length)}return null}
|
|
||||||
function eraseCookie(e) {createCookie(e, "", -1)}
|
|
||||||
|
|
||||||
//Disabling & Enabling Dark Transitions in Dark Mode to Speed up Performance.
|
//Disabling & Enabling Dark Transitions in Dark Mode to Speed up Performance.
|
||||||
function allowTransitions(){$('body').find('#transitions-remove').remove();}
|
function allowTransitions(){$('body').find('#transitions-remove').remove();}
|
||||||
function removeTransitions(){$('body').append('<style id="transitions-remove">.btn, .header, #footer-bar, .menu-box, .menu-active{transition:all 0ms ease!important;}</style>'); setTimeout(function(){allowTransitions();},10);}
|
function removeTransitions(){$('body').append('<style id="transitions-remove">.btn, .header, #footer-bar, .menu-box, .menu-active{transition:all 0ms ease!important;}</style>'); setTimeout(function(){allowTransitions();},10);}
|
||||||
@@ -1345,6 +1352,9 @@ $(document).ready(function(){
|
|||||||
$('#menu-welcome-a-okay').click(welcomeOk);
|
$('#menu-welcome-a-okay').click(welcomeOk);
|
||||||
showWelcome();
|
showWelcome();
|
||||||
|
|
||||||
|
log('Template initialized');
|
||||||
|
log('Initializing app');
|
||||||
|
|
||||||
initRegatten();
|
initRegatten();
|
||||||
|
|
||||||
hideLoader();
|
hideLoader();
|
||||||
|
|||||||
@@ -417,32 +417,35 @@ function dbSettingsSet(key, value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateSyncStatus() { // TODO
|
async function updateSyncStatus() {
|
||||||
// var syncStatus = document.getElementById('syncstatus');
|
var lastSync = await dbGetData('update_times', 'last_sync');
|
||||||
// var lastSync = await dbGetData('update_times', 'last_sync');
|
lastSync = new Date(lastSync.time * 1000);
|
||||||
// lastSync = new Date(lastSync.time * 1000);
|
if (lastSync > 0) {
|
||||||
// var now = new Date();
|
var now = new Date();
|
||||||
// var diff = Math.round((now - lastSync) / 1000);
|
var diff = Math.round((now - lastSync) / 1000);
|
||||||
// var txt = '';
|
var txt = '';
|
||||||
//
|
|
||||||
// if (diff < 30) { // 30 sec
|
if (diff < 30) { // 30 sec
|
||||||
// txt = 'jetzt';
|
txt = 'jetzt';
|
||||||
// } else if (diff < 3600) { // 60 min
|
} else if (diff < 3600) { // 60 min
|
||||||
// diff = Math.round(diff / 60);
|
diff = Math.round(diff / 60);
|
||||||
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Minute' : 'Minuten');
|
txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Minute' : 'Minuten');
|
||||||
// } else if (diff < 86400) { // 24 std
|
} else if (diff < 86400) { // 24 std
|
||||||
// diff = Math.round(diff / 3600);
|
diff = Math.round(diff / 3600);
|
||||||
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Stunde' : 'Stunden');
|
txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Stunde' : 'Stunden');
|
||||||
// } else {
|
} else {
|
||||||
// diff = Math.round(diff / 86400);
|
diff = Math.round(diff / 86400);
|
||||||
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Tag' : 'Tagen');
|
txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Tag' : 'Tagen');
|
||||||
// }
|
}
|
||||||
//
|
} else {
|
||||||
// var btn = '<a href="#" onclick="setLoading(true); sync(); return false;"><i class="fas fa-sync"></i> Sync</a>';
|
var txt = 'nie';
|
||||||
// syncStatus.innerHTML = 'Zuletzt aktualisiert: ' + txt + btn;
|
}
|
||||||
|
|
||||||
|
$('#syncstatus').html('Zuletzt aktualisiert: ' + txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function runPageScript() {
|
async function runPageScript() {
|
||||||
|
log('running page script...')
|
||||||
if (canUseLocalDB) {
|
if (canUseLocalDB) {
|
||||||
var osUpdateTimes = db.transaction('update_times').objectStore('update_times');
|
var osUpdateTimes = db.transaction('update_times').objectStore('update_times');
|
||||||
osUpdateTimes.get('loggedin').onsuccess = function (event) {
|
osUpdateTimes.get('loggedin').onsuccess = function (event) {
|
||||||
@@ -460,21 +463,21 @@ async function runPageScript() {
|
|||||||
dbSettingsSet('myregattas_' + BOATCLASS, plannings);
|
dbSettingsSet('myregattas_' + BOATCLASS, plannings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (typeof updateSyncStatusTimer == 'undefined') { // TODO
|
if (typeof updateSyncStatusTimer == 'undefined') {
|
||||||
// var syncStatus = document.getElementById('syncstatus');
|
|
||||||
if (canUseLocalDB) {
|
if (canUseLocalDB) {
|
||||||
updateSyncStatusTimer = window.setInterval(updateSyncStatus, 10000);
|
updateSyncStatusTimer = window.setInterval(updateSyncStatus, 10000);
|
||||||
} else {
|
} else {
|
||||||
// syncStatus.innerHTML = 'Keine Offline-Nutzung möglich.';
|
$('#syncstatus').html('Keine Offline-Nutzung möglich.');
|
||||||
$('#i-sync').parent().hide();
|
$('#i-sync').parent().hide();
|
||||||
updateSyncStatusTimer = null;
|
updateSyncStatusTimer = null;
|
||||||
}
|
}
|
||||||
// syncStatus.style.display = 'block';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof siteScript === 'function') {
|
if (typeof siteScript === 'function') {
|
||||||
|
log('loading site script');
|
||||||
siteScript();
|
siteScript();
|
||||||
} else {
|
} else {
|
||||||
|
log('no site script');
|
||||||
hideLoader();
|
hideLoader();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -928,11 +931,14 @@ function checkSync() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initDatabase() {
|
function initDatabase() {
|
||||||
|
log('Initializing DB...');
|
||||||
if (window.indexedDB) {
|
if (window.indexedDB) {
|
||||||
var request = window.indexedDB.open('regatten_app_db_' + BOATCLASS, DB_VERSION);
|
var request = window.indexedDB.open('regatten_app_db_' + BOATCLASS, DB_VERSION);
|
||||||
request.onerror = function (event) {
|
request.onerror = function (event) {
|
||||||
log("Cannot open DB: " + event.target);
|
log("Cannot open DB: " + event.target);
|
||||||
|
|
||||||
|
if (typeof onDatabaseLoaded == 'function') onDatabaseLoaded();
|
||||||
|
|
||||||
runPageScript();
|
runPageScript();
|
||||||
};
|
};
|
||||||
request.onsuccess = function (event) {
|
request.onsuccess = function (event) {
|
||||||
@@ -1048,6 +1054,8 @@ function initDatabase() {
|
|||||||
osUpdateTimes.put({ table: 'last_sync', time: 0 });
|
osUpdateTimes.put({ table: 'last_sync', time: 0 });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (typeof onDatabaseLoaded == 'function') onDatabaseLoaded();
|
||||||
|
|
||||||
runPageScript();
|
runPageScript();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -440,8 +440,12 @@ async function updateNewsBadge() {
|
|||||||
var initRegatten = function() {
|
var initRegatten = function() {
|
||||||
showLoader();
|
showLoader();
|
||||||
|
|
||||||
|
log('Initializing DB...');
|
||||||
|
|
||||||
initDatabase();
|
initDatabase();
|
||||||
|
|
||||||
|
log('Loading app specific code...');
|
||||||
|
|
||||||
if (isLoggedIn()) {
|
if (isLoggedIn()) {
|
||||||
$('.show-loggedin').show();
|
$('.show-loggedin').show();
|
||||||
$('.show-notloggedin').hide();
|
$('.show-notloggedin').hide();
|
||||||
@@ -461,6 +465,7 @@ var initRegatten = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var onServiceWorkerLoaded = function() {
|
var onServiceWorkerLoaded = function() {
|
||||||
|
log('sW loaded');
|
||||||
if ((swRegistration !== null) && canUseLocalDB) {
|
if ((swRegistration !== null) && canUseLocalDB) {
|
||||||
pushesPossible = true;
|
pushesPossible = true;
|
||||||
updatePushBadge();
|
updatePushBadge();
|
||||||
@@ -470,6 +475,21 @@ var onServiceWorkerLoaded = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var onDatabaseLoaded = function() {
|
var onDatabaseLoaded = function() {
|
||||||
|
log('DB loaded');
|
||||||
|
if (!canUseLocalDB && !$('#menu-welcome').hasClass('menu-active')) {
|
||||||
|
function NoDbWarningOk() {
|
||||||
|
createCookie('regatten_nodb_banner', true, 1);
|
||||||
|
$('#menu-nodb-warning').hideMenu();
|
||||||
|
}
|
||||||
|
function showNoDbWarning() {
|
||||||
|
if (!readCookie('regatten_nodb_banner')) {
|
||||||
|
$('#menu-nodb-warning').showMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#menu-nodb-warning-okay').click(NoDbWarningOk);
|
||||||
|
showNoDbWarning();
|
||||||
|
}
|
||||||
|
|
||||||
onServiceWorkerLoaded();
|
onServiceWorkerLoaded();
|
||||||
initPushSettings();
|
initPushSettings();
|
||||||
|
|
||||||
@@ -486,13 +506,13 @@ var addConsoleOpenerToPreloader = function() {
|
|||||||
var preloader = document.getElementById('preloader');
|
var preloader = document.getElementById('preloader');
|
||||||
var button = document.createElement('a');
|
var button = document.createElement('a');
|
||||||
button.href = '#';
|
button.href = '#';
|
||||||
button.classList = 'btn btn-full rounded-s text-uppercase font-900 shadow-m bg-highlight m-3';
|
button.classList = 'btn rounded-s text-uppercase font-900 shadow-m m-3';
|
||||||
button.style.position = 'fixed';
|
button.style.position = 'fixed';
|
||||||
button.style.bottom = 0;
|
button.style.bottom = 0;
|
||||||
button.style.left = 0;
|
|
||||||
button.style.right = 0;
|
button.style.right = 0;
|
||||||
button.innerHTML = 'Show Console';
|
button.innerHTML = '</>';
|
||||||
button.onclick = function(){
|
button.onclick = function(){
|
||||||
|
alert('CONSOLE OPENED\nDir werden jetzt einige Entwickler-Informationen angezeigt. Du kannst die Console über das X oben rechts wieder schließen.');
|
||||||
mobileConsole.displayConsole();
|
mobileConsole.displayConsole();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
13
server/content/go2url.php
Normal file
13
server/content/go2url.php
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$sp['title'] = 'Umleitung - Regatten.net ' . $_CLASS['name'];
|
||||||
|
|
||||||
|
// Title
|
||||||
|
$content = '<h1>Umleitung</h1>';
|
||||||
|
$content .= '<p>Wir leiten Dich in Kürze zur gewünschten Website weiter</p>';
|
||||||
|
|
||||||
|
$sp['output'] .= $tpl->load('card', [$content, 'html-id' => 'card-title']);
|
||||||
|
|
||||||
|
$sp['scripts'] .= $scripts->load('go2url');
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -291,6 +291,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="menu-nodb-warning" class="menu menu-box-bottom menu-box-detached rounded-m" data-height="500">
|
||||||
|
<div class="menu-title"><h1>Warnung</h1><p class="color-highlight">Datenbank nicht unterstützt</p><a href="#" class="close-menu"><i class="fa fa-times"></i></a></div>
|
||||||
|
<div class="divider divider-margins mb-n2"></div>
|
||||||
|
<div class="content bottom-0">
|
||||||
|
<p>
|
||||||
|
Das Speichern der benötigten Daten wird von Deinem Gerät nicht unterstützt.<br>
|
||||||
|
Da deshalb die Daten jedesmal direkt vom Server geladen werden müssen, kannst Du die App nicht offline nutzen.<br>
|
||||||
|
Das Nachladen kann außerdem gerade bei großen Datenmengen (wie Ranglisten) sehr lange dauern.
|
||||||
|
Wir empfehlen Dir daher, auf diesem Gerät unsere normale Website zu benutzen. Diese ist auch für Mobil-Geräte optimiert.
|
||||||
|
</p>
|
||||||
|
<a class="btn btn-m mt-2 btn-full bg-highlight text-uppercase font-900" href="https://regatten.net/">Zur Website</a>
|
||||||
|
<a id="menu-nodb-warning-okay" class="btn btn-m mt-2 mb-3 btn-full bg-highlight text-uppercase font-900" href="#">Nicht erneut anzeigen</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="menu-update">
|
<div id="menu-update">
|
||||||
<div class="content bottom-0">
|
<div class="content bottom-0">
|
||||||
<p class="text-center mt-5"><i class="fa fa-sync-alt fa-7x color-highlight fa-spin"></i></p>
|
<p class="text-center mt-5"><i class="fa fa-sync-alt fa-7x color-highlight fa-spin"></i></p>
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
<?php include(__DIR__ . '/headerfooter.php'); ?>
|
<?php include(__DIR__ . '/headerfooter.php'); ?>
|
||||||
|
|
||||||
<!--start of page content, add your stuff here-->
|
<!--start of page content, add your stuff here-->
|
||||||
<div class="page-content header-clear-medium">
|
<div class="page-content header-clear">
|
||||||
|
<div id="syncstatus" class="text-right mr-2 mb-1">Zuletzt aktualisiert: nie</div>
|
||||||
<?php echo $sp['output']; ?>
|
<?php echo $sp['output']; ?>
|
||||||
</div>
|
</div>
|
||||||
<!--end of page content, off canvas elements here-->
|
<!--end of page content, off canvas elements here-->
|
||||||
|
|||||||
12
server/scripts/go2url.js
Normal file
12
server/scripts/go2url.js
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
var siteScript = function() {
|
||||||
|
hideLoader();
|
||||||
|
setTimeout(function() {
|
||||||
|
var url = findGetParameter('url');
|
||||||
|
if (url === null) {
|
||||||
|
$('#card-title').find('p').html('Wir konnten Dich leider nicht umleiten.<br><a href="' + LINK_PRE + 'index">Hier kommst Du zurück zur Startseite</a>');
|
||||||
|
} else {
|
||||||
|
showLoader();
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
define('PWA_VERSION', '1.10');
|
define('PWA_VERSION', '1.10.3h2');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -229,6 +229,7 @@ self.addEventListener('push', async function(event) {
|
|||||||
case 'meldeschluss':
|
case 'meldeschluss':
|
||||||
if (await dbSettingsGet('notify_channel_<?php echo BOATCLASS; ?>_meldeschluss')) {
|
if (await dbSettingsGet('notify_channel_<?php echo BOATCLASS; ?>_meldeschluss')) {
|
||||||
if (await isMyRegatta(getEntry(data, 'id', ''))) okay = true;
|
if (await isMyRegatta(getEntry(data, 'id', ''))) okay = true;
|
||||||
|
// TODO: only if not already registered
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -310,3 +311,16 @@ self.addEventListener('notificationclick', function(event) {
|
|||||||
clients.openWindow(url)
|
clients.openWindow(url)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
self.addEventListener('pushsubscriptionchange', function(event) {
|
||||||
|
var formData = new URLSearchParams();
|
||||||
|
formData.append('old', JSON.stringify(event.oldSubscription));
|
||||||
|
formData.append('new', JSON.stringify(event.newSubscription));
|
||||||
|
event.waitUntil(
|
||||||
|
fetch('<?php echo QUERY_URL; ?>update_subscription', {
|
||||||
|
method: 'POST',
|
||||||
|
cache: 'no-cache',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user