/* * Copyright (C) 2014 * This file is part of WvS-VPlan. * * WvS-VPlan is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ version = '0.9.2_rc1'; function istPremium(benutzer, key){ // Supersicherer Keygenerator :P Inspiriert von kryptochef.de sollKey = ''; switch(benutzer.length % 10){ // Anzahl Zeichen ausschreiben case 0: sollKey = 'NULL'; break; case 1: sollKey = 'EINS'; break; case 2: sollKey = 'ZWEI'; break; case 3: sollKey = 'DREI'; break; case 4: sollKey = 'VIER'; break; case 5: sollKey = 'FUNF'; break; case 6: sollKey = 'SECHS'; break; case 7: sollKey = 'SIEBEN'; break; case 8: sollKey = 'ACHT'; break; case 9: sollKey = 'NEUN'; break; } sollKey = sollKey.replace(/[A-Z]/g, function(s){ return String.fromCharCode(s.charCodeAt(0) + (s < 'N' ? 13 : -13)); // ROT13 }); sollKey = sollKey + Math.round(benutzer.length * 3.14); // Eine Zahl anfügen if(sollKey === key){ return true; }else{ return false; } } function updateCheck(){ var request = $.ajax({ url: 'http://klimaag.***REMOVED***/app/www/knockout.html', cache: false }); request.done(function(resultHtml){ var appStatus = $('li[id="' + version + '"]', resultHtml).text().trim(); var loginOk = true; console.log('Appstatus: ' + appStatus); switch(appStatus){ case 'ok': break; case 'info': $('#versioninfo').text('Ein Update ist im Appstore verfügbar.').show(); break; case 'warn': $('#versioninfo').text('Ein wichtiges Update ist im Appstore verfügbar.').show(); break; case 'force': $('#versioninfo').text('Ein wichtiges Update ist im Appstore verfügbar. Du musst es installieren, um dich weiterhin einloggen zu können.').show(); $('#loginsubmit').prop('disabled', true); loginOk = false; break; default: $('#versioninfo').text('Diese Appversion wird nicht mehr unterstützt, bitte aktualisiere auf die neueste Version aus dem Appstore.').show(); $('#loginsubmit').prop('disabled', true); loginOk = false; } if(loginOk === true){ tryLogin(); // nur wenn alles in Ordnung ist, einloggen lassen } }); request.fail(fail); } function track(what){ _paq.push(['setCustomUrl', what]); _paq.push(['trackPageView', what]); } function trackPlan(vdate){ track('plan/' + vdate.format('YYYY/MM/DD')); } $('#settingspanel').on('panelclose', function(){ localStorage.setItem('dntrack', $('#dntflip').val()); localStorage.setItem('classes', $('#addclass').val().toUpperCase()); localStorage.setItem('notifyday', $('#notifydayflip').val()); localStorage.setItem('notifydate', $('#notifydate').val()); localStorage.setItem('apptheme', $('#themeselect').val()); }); document.addEventListener('offline', function(){ $('#loginsubmit').prop('disabled', true); $('#error_noconn').show('fast'); }, false); document.addEventListener('online', function(){ $('#loginsubmit').prop('disabled', false); $('#error_noconn').hide('fast'); }, false); var _paq = _paq || []; $('#mainpage').on('pagebeforeshow', function(){ /* Versionsnummer zeigen */ $('.version').text(version); /* Sprache setzen */ moment.lang('de'); /* Nutzungsstatistiken */ _paq.push(['setTrackerUrl', 'http://klimaag.***REMOVED***/piwik/piwik.php']); // TODO Https wäre schön. _paq.push(['setSiteId', 5]); console.log('Piwik initialisiert'); /* gespeicherte Daten laden */ var dntrack = localStorage.getItem('dntrack'); var additionalClasses = localStorage.getItem('classes'); var notifyDay = localStorage.getItem('notifyday'); var notifyDate = localStorage.getItem('notifydate'); var premium = localStorage.getItem('premium'); var easteregg = localStorage.getItem('easteregg'); var apptheme = localStorage.getItem('apptheme'); if(dntrack === null || dntrack.length === 0){ dntrack = 'false'; } $('#dntflip').val(dntrack).slider('refresh'); if(additionalClasses === null || additionalClasses.length === 0){ additionalClasses = ''; } $('#addclass').val(additionalClasses).textinput('refresh'); if(notifyDay === null || notifyDay.length === 0){ notifyDay = 0; } $('#notifydayflip').val(notifyDay).slider('refresh'); if(notifyDate === null || notifyDate.length === 0){ notifyDate = '18:00'; } $('#notifydate').val(notifyDate).textinput('refresh'); if(premium === null || premium.length === 0){ premium = 'false'; } if(premium === 'true'){ $('#themeselect').append('').selectmenu('refresh'); console.log('Premium geladen'); } if(easteregg === null || easteregg.length === 0){ easteregg = 'false'; } if(easteregg === 'true'){ $('#themeselect').append('').selectmenu('refresh'); console.log('Easteregg geladen'); } if(apptheme === null || apptheme.length === 0){ apptheme = 'a'; } $('#themeselect').val(apptheme).selectmenu('refresh'); /* Piwik initialisieren */ _paq.push(['setDoNotTrack', dntrack]); }); // Login-Popup beim Start document.addEventListener('deviceready', function(){ /* iOS fix */ if(window.device && parseFloat(window.device.version) >= 7.0) { $('body').addClass('iOS7'); } /* los geht's */ _paq.push(['setCustomVariable', 1, 'Modell', device.model, 'visit']); _paq.push(['setCustomVariable', 2, 'Version', device.version, 'visit']); _paq.push(['setCustomVariable', 3, 'Appversion', version, 'visit']); track('load'); var dntrack = localStorage.getItem('dntrack'); if(dntrack === null || dntrack.length === 0){ setTimeout(function(){ $('#lnkdisclaimer').click(); }, 2000); _paq.push(['setDoNotTrack', false]); localStorage.setItem('dntrack', false); $('#dntflip').val(dntrack); }else{ fillForm(); if(navigator.connection.type !== Connection.NONE){ // falls Netz da ist updateCheck(); // checkt ob aktuellste Version und loggt ein } window.plugin.notification.local.cancelAll(); // alle Benachrichtigungen canceln, werden während des Renderings neu gesetzt load(); } }, false); /* der Loader wird nur angezeigt, wenn das Popup zu ist */ $('#loginpopup').on('popupafteropen', function(){ $.mobile.loading('hide'); }); $('#disclaimerpopup').on('popupafterclose', function(){ fillForm(); updateCheck(); window.plugin.notification.local.cancelAll(); load(); }); /* füllt die Loginform mit gespeicherten Werten */ function fillForm(){ var username = localStorage.getItem('username'); if(username !== null && username.length !== 0){ $('#username').val(username); } var password = localStorage.getItem('password'); if(password !== null && password.length !== 0){ $('#password').val(password); } } /* benachrichtigt den Benutzer an vdate mit msg */ function addNotification(vdate, msg, $div){ var title = 'Vertretung für ' + vdate.format('dddd'); var ndate = vdate.subtract('days', 1).add('days', $('#notifydayflip').val()); // Bei Bedarf einen Tag vorher if(moment().isBefore(ndate)){ window.plugin.notification.local.add({ date: ndate.toDate(), message: msg, title: title, autoCancel: true, json: JSON.stringify({id: $div.attr('id')}) }); window.plugin.notification.local.onclick = function(id, state, json){ var div = JSON.parse(json).id; location.href = '#' + div; // TODO hoffentlich funktioniert das auch immer... }; console.log('Benachrichtigung hinzugefügt: ' + ndate.format('DD.MM. HH:mm') + '; ' + msg); } } /* zeigt einen Button an, mit dem die Vertretung geteilt werden kann */ function addSocialButton(vdate, msg, $div){ if(moment().isBefore(vdate)){ var datestr = vdate.format('dddd'); var sharebtns = $('button', $div); if(sharebtns.length === 0){ var btn = $('