Example #1
0
        var preCheck = function (lang) {
            lang = $.trim(lang).toLowerCase();

            log('========= LANGUAGE PRE CHECK ======== LANGUAGE IS: ' + lang);

            if((/en/).test(lang)) {
                lang = 'en';
            }

            if((/deutsch/).test(lang)) {
                lang = 'de';
            }

            if(lang !== defaultLang && lang !== 'de') {
                lang = defaultLang;
            }

            common.store.set('app-language', lang);
            app.lang = lang;

            if(app.user && typeof app.user.set === 'function') {
                app.user.set('lang', lang, {silent: true});
            }

            return callback(lang);
        };
Example #2
0
    /**
     * Detect language in phonegap or browser
     *
     * @param callback gets a lang string like 'en' or 'de' (default 'en')
     */
    function detectLang(callback) {
        var lang = common.store.get('app-language');

        var preCheck = function (lang) {
            lang = $.trim(lang).toLowerCase();

            log('========= LANGUAGE PRE CHECK ======== LANGUAGE IS: ' + lang);

            if((/en/).test(lang)) {
                lang = 'en';
            }

            if((/deutsch/).test(lang)) {
                lang = 'de';
            }

            if(lang !== defaultLang && lang !== 'de') {
                lang = defaultLang;
            }

            common.store.set('app-language', lang);
            app.lang = lang;

            if(app.user && typeof app.user.set === 'function') {
                app.user.set('lang', lang, {silent: true});
            }

            return callback(lang);
        };

        if(lang) {
            return callback(lang);
        }

        // browser environment
        if(_.isUndefined(navigator.globalization)) {
            if(!lang) {
                lang = navigator.userLanguage || navigator.language || defaultLang;
            }

            preCheck(lang);
        } else { // phonegap environment

            navigator.globalization.getPreferredLanguage(
                function (language) {
                    lang = language.value;
                    preCheck(lang);
                }, function () {
                    return callback(defaultLang); // error, fallback to "defaultLang"...
                });
        }
    }
Example #3
0
        changeLang: function (lang) {
            // log('CHANGE LANG to ' + lang + ' from ' + app.lang);
            if(lang === app.lang) {
                return false;
            }

            app.lang = lang;

            if(lang !== 'en' && lang !== 'de') {
                app.lang = 'en';
            }

            common.store.set('app-language', app.lang);
            moment.lang(app.lang);

            i18n.init({
                lng: app.lang // triggers translationsLoaded
            });
        },
Example #4
0
        deauthenticateUser: function () {
            var self = this;

            // MUST be called before we reset the user!
            app.unregisterPUSHNotifications();

            setTimeout(function() {
                self.go('start');
            }, 1);

            this.isAuth     = false;
            app.isLoggedIn  = false;
            common.store.drop('is-auth');
            common.unlockScreen();

            app.todolists.reset(); // !
            app.user = new User();

            // soll man NICHT sehen wenn eingeloggt
            $('.hide-me').each(function () {
                $(this).addClass('hidden');
            });

            // deauthenticate means "DELETE ALL LOCAL DATA"
            if(app.storage) {
                app.storage.nukeAll(function() {});
            }

            // unsubscribe from all socket-io events
            if(app.socketWrapper) {
                setTimeout(function() {
                    // shutdown, denn beim nächsten login ändert sich der token
                    // -> deshalb müssen wir dort wieder initial verbinden
                    // mit neuem token (bei resume hat sich der token ja nicht geändert)
                    app.socketWrapper.disconnect(true, true);
                }, 1000);
            }

            // reset activities
            app.activityCollection.reset();
        },
Example #5
0
        setAuthenticated: function (userJSON, doNotSaveToDb) {
            log('=== AppRouter.setAuthenticated() YUHU I AM LOGGED IN: ', userJSON.email, userJSON);

            // ##### API ACCESS TOKEN siehe zepto ajax conf in main.js #####
            // der token muss nun bei jedem weiteren request mitgehn!
            app.API_TOKEN = userJSON.API_TOKEN;

            // SOFORT RENDERN !!!
            // NOTE: es kann sein dass wir bereits auf #todolists sind,
            // AUCH AUF MOB. GERÄTEN
            // ist dies also der Fall: only re-render via app.user change
            // event in listview.js!

            if(!app.todolistView) {
                this.go('todolists', true);
            }

            app.isLoggedIn = true;

            this.isAuth = true;

            // wir speichern im local storage einfach ob wir eingeloggt sind
            // den rest übernimmt der server via access token
            common.store.set('is-auth', '1');

            // hier kommt der user mit all seinen todolisten und deren todos
            // save user and todolists
            var lists = [];
            _.each(userJSON.todolists, function (list) {
                lists.push(list);
            });

            app.todolists.reset();
            app.todolists.add(lists);

            // update user's language
            // app.user.set('lang', userJSON.lang, {silent: true});
            app.changeLang(userJSON.lang ? userJSON.lang : app.lang);

            if(!userJSON.lang) {
                userJSON.lang = app.lang;
            }

            // log(JSON.stringify(userJSON))

            // triggers change in views
            app.user.set(userJSON);

            // 1. connect websocket
            /* no support anymore
            if(app.socketWrapper) {
                app.socketWrapper.connect(app.API_TOKEN);

                // listen for succes only ONCE:
                app.socketWrapper.once('connect_success', function() {
                    // falls wir bereits listen aus der lokalen db haben:
                    app.socketWrapper.subscribeToLists(app.todolists);
                });
            }*/

            // 2. register push notifications
            app.initAndRegisterPushNotifications();

            // wenn 2.param gesetzt: nicht speichern, denn dann haben wir ihn
            // vorher gerade ausgelesen...
            if(!doNotSaveToDb) {
                var userID = app.user.get('_id');

                console.log('STORING USER, LISTS AND TODOS IN LOCAL DB');

                // ###### store user & lists to local db: ######
                app.storage.storeUser(userJSON, function __storeUser(err, success) {
                    if(success === true && lists.length > 0) {
                        app.storage.storeListsForUser(userID, lists, function(/*err, success*/) {
                            /*app.storage.fetchListsForUser(userID, function(err, results) {
                                var len = results.rows.length;
                                console.log('=================>', len)
                            });*/

                            // auch gleich alle todos speichern:
                            _.each(app.todolists.toJSON(), function(list) {
                                var todos = list.todos;

                                if(todos && todos.length > 0) {
                                    // ##### store local db #####
                                    // app.storage.storeTodosOfList(list._id, todos, function(/*err, success*/) {});

                                    // keep it local
                                    var l = app.todolists.get(list._id);
                                    if(l) {
                                        l.set({
                                            todos: todos
                                        }, {silent: true});
                                    }
                                }
                            });
                        });
                    }
                });
            }
        },