Mercurial > bugzilla-dashboard
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(); + }; +};