diff js/modules/app.js @ 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 7a1162b1b7e7
children 0b71df72ebe1
line wrap: on
line diff
--- 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();
+  };
+};