changeset 43:0974c1df3714

moved lots of app ui logic to require('app/ui')
author Atul Varma <avarma@mozilla.com>
date Sat, 24 Apr 2010 18:33:45 -0700
parents 0a1c7fec0af2
children d3ed74176b4d
files js/main.js js/modules/app.js js/require.js
diffstat 3 files changed, 74 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/js/main.js	Sat Apr 24 18:07:14 2010 -0700
+++ b/js/main.js	Sat Apr 24 18:33:45 2010 -0700
@@ -1,63 +1,5 @@
 $(window).ready(
   function() {
-    const BASE_TITLE = document.title;
-
-    var require = Require.build();
-
-    require("app/login").whenChanged(
-      function changeTitle(user) {
-        var title = BASE_TITLE;
-
-        if (user.isLoggedIn)
-          title = user.username + "'s " + BASE_TITLE;
-
-        if (document.title != title) {
-          document.title = title;
-          $("#header .title").text(title);
-        }
-      });
-
-    require("app/login").whenChanged(
-      function changeUI(user) {
-        if (user.isLoggedIn) {
-          $(".requires-no-login").hide();
-          $(".requires-login").show();
-          if (user.isAuthenticated) {
-            $(".requires-auth-login").show();
-          } else {
-            $(".requires-auth-login").hide();
-          }
-        } else {
-          $(".requires-no-login").show();
-          $(".requires-login").hide();
-          $(".requires-auth-login").hide();
-        }
-      });
-
-    $("#header .menu li").click(
-      function openDialog(event) {
-        var dialog = $("#" + this.title);
-        if (dialog.length == 0)
-          throw new Error("dialog not found: " + this.title);
-        dialog.fadeIn();
-      });
-
-    $(".dialog").click(
-      function dismissDialogOnOutsideClick(event) {
-        if (event.target == this)
-          $(this).fadeOut();
-      });
-
-    $("#login form").submit(
-      function(event) {
-        event.preventDefault();
-        require("app/login").set($("#login .username").val(),
-                                 $("#login .password").val());
-        $("#login").fadeOut();
-      });
-
-    require("app/login").set($("#login .username").val(),
-                             $("#login .password").val());
-    if (!require("app/login").isLoggedIn())
-      $("#login").fadeIn();
+    var require = Require.build(Require.modules, {jQuery: jQuery});
+    require("app/ui").init(document);
   });
--- a/js/modules/app.js	Sat Apr 24 18:07:14 2010 -0700
+++ b/js/modules/app.js	Sat Apr 24 18:33:45 2010 -0700
@@ -30,3 +30,72 @@
       });
   };
 };
+
+Require.modules["app/ui"] = function(exports, require) {
+  var $ = require("jQuery");
+
+  require("app/login").whenChanged(
+    function changeUI(user) {
+      if (user.isLoggedIn) {
+        $(".requires-no-login").hide();
+        $(".requires-login").show();
+        if (user.isAuthenticated) {
+          $(".requires-auth-login").show();
+        } else {
+          $(".requires-auth-login").hide();
+        }
+      } else {
+        $(".requires-no-login").show();
+        $(".requires-login").hide();
+        $(".requires-auth-login").hide();
+      }
+    });
+
+  $("#header .menu li").click(
+    function openDialog(event) {
+      var dialog = $("#" + this.title);
+      if (dialog.length == 0)
+        throw new Error("dialog not found: " + this.title);
+      dialog.fadeIn();
+    });
+
+  $(".dialog").click(
+    function dismissDialogOnOutsideClick(event) {
+      if (event.target == this)
+        $(this).fadeOut();
+    });
+
+  function setupDocumentTitleChanger(document) {
+    const BASE_TITLE = document.title;
+
+    require("app/login").whenChanged(
+      function changeTitle(user) {
+        var title = BASE_TITLE;
+
+        if (user.isLoggedIn)
+          title = user.username + "'s " + BASE_TITLE;
+
+        if (document.title != title) {
+          document.title = title;
+          $("#header .title").text(title);
+        }
+      });
+  };
+
+  exports.init = function init(document) {
+    setupDocumentTitleChanger(document);
+
+    $("#login form").submit(
+      function(event) {
+        event.preventDefault();
+        require("app/login").set($("#login .username").val(),
+                                 $("#login .password").val());
+        $("#login").fadeOut();
+      });
+
+    require("app/login").set($("#login .username").val(),
+                             $("#login .password").val());
+    if (!require("app/login").isLoggedIn())
+      $("#login").fadeIn();
+  };
+};
--- a/js/require.js	Sat Apr 24 18:07:14 2010 -0700
+++ b/js/require.js	Sat Apr 24 18:33:45 2010 -0700
@@ -1,10 +1,11 @@
 var Require = {
   modules: {},
-  build: function build(modules) {
+  build: function build(modules, moduleExports) {
     if (!modules)
       modules = this.modules;
 
-    var moduleExports = {};
+    if (!moduleExports)
+      moduleExports = {};
 
     return function require(module) {
       if (!(module in moduleExports)) {