From 0ecb2b58a8eed85ebef88d0031321694d66b535c Mon Sep 17 00:00:00 2001 From: Max Lynch Date: Thu, 3 Oct 2013 18:02:59 -0500 Subject: [PATCH] re-imagined toderp, first commit. --- example/toderp2/controllers.js | 69 ++++++++++++++++++++++ example/toderp2/index.html | 75 ++++++++++++++++++++++++ example/toderp2/js/app.js | 4 ++ example/toderp2/js/controllers.js | 73 +++++++++++++++++++++++ example/toderp2/js/services.js | 46 +++++++++++++++ js/ext/angular/src/directive/ionicNav.js | 2 +- 6 files changed, 268 insertions(+), 1 deletion(-) create mode 100644 example/toderp2/controllers.js create mode 100644 example/toderp2/index.html create mode 100644 example/toderp2/js/app.js create mode 100644 example/toderp2/js/controllers.js create mode 100644 example/toderp2/js/services.js diff --git a/example/toderp2/controllers.js b/example/toderp2/controllers.js new file mode 100644 index 0000000000..e89ba89d8d --- /dev/null +++ b/example/toderp2/controllers.js @@ -0,0 +1,69 @@ +angular.module('ionic.todo.controllers', ['ionic.todo', 'firebase']) + +// The main controller for the application +.controller('TodoCtrl', function($scope, $rootScope, AuthService) { + $rootScope.$on('angularFireAuth:login', function(evt, user) { + $scope.display.screen = 'tasks'; + }); + $rootScope.$on('angularFireAuth:logout', function(evt, user) { + console.log('Logged out!', evt, user); + $scope.display.screen = 'login'; + }); + $rootScope.$on('angularFireAuth:error', function(evt, err) { + console.log('Login Error!', evt, err); + }); + + $scope.setScreen = function(screen) { + $scope.display.screen = screen; + }; +}) + +// The login form controller +.controller('LoginCtrl', function($scope, AuthService) { + console.log('Created login Ctrl'); + + $scope.loginForm = { + email: 'max@drifty.com', + password: 'test' + }; + + $scope.tryLogin = function(data) { + $scope.loginError = false; + AuthService.login(data.email, data.password) + .then(function(e) { + $scope.loginError = false; + }, function(e) { + $scope.loginError = true; + }); + }; + + $scope.showSignup = function() { + }; +}) + +// The signup form controller +.controller('SignupCtrl', function($scope, AuthService) { + $scope.signupForm = {}; + + $scope.trySignup = function(data) { + AuthService.signup(data.email, data.password); + }; +}) + +// The tasks controller (main app controller) +.controller('TasksCtrl', function($scope, angularFire, FIREBASE_URL) { + var taskRef = new Firebase(FIREBASE_URL + '/todos'); + $scope.todos = []; + angularFire(taskRef, $scope, 'todos'); + $scope.addTask = function(task) { + var t = {}; + t = angular.extend({ + id: $scope.user.id + }, task); + + console.log("Adding task:", t); + $scope.todos.push(t); + + $scope.task = {}; + }; +}); diff --git a/example/toderp2/index.html b/example/toderp2/index.html new file mode 100644 index 0000000000..571bca8375 --- /dev/null +++ b/example/toderp2/index.html @@ -0,0 +1,75 @@ + + + + ToDerp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/toderp2/js/app.js b/example/toderp2/js/app.js new file mode 100644 index 0000000000..1740b47a93 --- /dev/null +++ b/example/toderp2/js/app.js @@ -0,0 +1,4 @@ +angular.module('ionic.todo', ['ionic.todo.services', 'ionic.todo.controllers', 'firebase', 'ngRoute', 'ngAnimate']) + +// Our Firebase URL +.constant('FIREBASE_URL', 'https://ionic-todo-demo.firebaseio.com/'); diff --git a/example/toderp2/js/controllers.js b/example/toderp2/js/controllers.js new file mode 100644 index 0000000000..eed3f0c637 --- /dev/null +++ b/example/toderp2/js/controllers.js @@ -0,0 +1,73 @@ +angular.module('ionic.todo.controllers', ['ionic.todo', 'firebase']) + +// The main controller for the application +.controller('TodoCtrl', function($scope, $rootScope, AuthService) { + $scope.display = { + screen: 'splash' + }; + $rootScope.$on('angularFireAuth:login', function(evt, user) { + $scope.display.screen = 'tasks'; + }); + $rootScope.$on('angularFireAuth:logout', function(evt, user) { + console.log('Logged out!', evt, user); + $scope.display.screen = 'login'; + }); + $rootScope.$on('angularFireAuth:error', function(evt, err) { + console.log('Login Error!', evt, err); + }); + + $scope.setScreen = function(screen) { + $scope.display.screen = screen; + }; +}) + +// The login form controller +.controller('LoginCtrl', function($scope, AuthService) { + console.log('Created login Ctrl'); + + $scope.loginForm = { + email: 'max@drifty.com', + password: 'test' + }; + + $scope.tryLogin = function(data) { + $scope.loginError = false; + AuthService.login(data.email, data.password) + .then(function(e) { + $scope.loginError = false; + }, function(e) { + $scope.loginError = true; + }); + }; + + $scope.showSignup = function() { + $scope.setScreen('signup'); + }; +}) + +// The signup form controller +.controller('SignupCtrl', function($scope, AuthService) { + $scope.signupForm = {}; + + $scope.trySignup = function(data) { + AuthService.signup(data.email, data.password); + }; +}) + +// The tasks controller (main app controller) +.controller('TasksCtrl', function($scope, angularFire, FIREBASE_URL) { + var taskRef = new Firebase(FIREBASE_URL + '/todos'); + $scope.todos = []; + angularFire(taskRef, $scope, 'todos'); + $scope.addTask = function(task) { + var t = {}; + t = angular.extend({ + id: $scope.user.id + }, task); + + console.log("Adding task:", t); + $scope.todos.push(t); + + $scope.task = {}; + }; +}); diff --git a/example/toderp2/js/services.js b/example/toderp2/js/services.js new file mode 100644 index 0000000000..5bd27fb9ac --- /dev/null +++ b/example/toderp2/js/services.js @@ -0,0 +1,46 @@ +angular.module('ionic.todo.services', ['ionic.todo', 'firebase']) + +// The AuthService handles user authentication with Firebase. +.factory('AuthService', function(angularFireAuth, $rootScope, FIREBASE_URL) { + + // Initialize the angularFireAuth service. + var ref = new Firebase(FIREBASE_URL); + angularFireAuth.initialize(ref, { + scope: $rootScope, + callback: function(user, err) { + console.log('AUTH CHANGED', err, user); + }, + name: 'user' + }); + + return { + + // Try to log in with the given email and pass + login: function(email, password) { + if(!email || !password) { + return; + } + console.log('Logging in', email, password); + + return angularFireAuth.login('password', { + email: email, + password: password + }); + }, + + // Try to sign up with the given email and pass + signup: function(email, password) { + if(!email || !password) { + return; + } + console.log('Signing up', name, email, password); + + angularFireAuth.createUser(email, password, function(err, user) { + if(err && err.code == "EMAIL_TAKEN") { + alert('That email is already taken'); + } + }); + } + }; +}) + diff --git a/js/ext/angular/src/directive/ionicNav.js b/js/ext/angular/src/directive/ionicNav.js index 764386f0f8..9af61eb468 100644 --- a/js/ext/angular/src/directive/ionicNav.js +++ b/js/ext/angular/src/directive/ionicNav.js @@ -32,7 +32,7 @@ angular.module('ionic.ui.nav', []) $scope.navController = this; }) -.directive('navController', function() { +.directive('navCtrl', function() { return { restrict: 'E', replace: true,