Add new account center and account recovery frontends
[blerg.git] / www / jssrc / blerg / Blerg.js
index f40a277..4a95114 100644 (file)
@@ -1,19 +1,26 @@
+// Listen for onsubmit events
+enyo.dispatcher.listen(document, "submit");
+
 enyo.kind({
     name: "blerg.Blerg",
     kind: "Control",
     lastHash: null,
+    pathHandlers: [ blerg.User, blerg.Tag, blerg.Feed, blerg.ExternalURLPost, blerg.Welcome, blerg.AccountCenter, blerg.Recovery ],
     handlers: {
         onStartSignup: "showSignupDialog",
         onTryLogin: "tryLogin",
         onTryLogout: "tryLogout",
         onSetTitle: "setTitle",
-        onPostVisibility: "postVisibilityUpdate"
+        onPostVisibility: "postVisibilityUpdate",
+        onReload: "sendReload",
+        onShowChangePassword: "showChangePassword",
+        onAuthFailure: "authFailure"
     },
     components: [
         {classes: "blerg-header", components: [
             {name: "title", kind: "blerg.Title"},
             {name: "controls", kind: "blerg.Controls"},
-            {style: "clear: both"},
+            {style: "clear: both;"},
             {name: "post", kind: "blerg.Post", showing: false},
             {name: "help", kind: "blerg.Help"}
         ]},
@@ -25,13 +32,6 @@ enyo.kind({
          onLoginFailed: "loginFailed",
          onLogoutSuccessful: "logout"}
     ],
-    urlmap: [
-        ['search', /^\?post\/([^/]+)\/(.+)/, "blerg.ExternalURLPost"],
-        ['hash',   /^#\/(ref|tag)\/([A-Za-z0-9_-]+)(?:\/p(\d+))?$/, "blerg.Tag"],
-        ['hash',   /^#\/feed(?:\/p(\d+))?$/, "blerg.Feed"],
-        ['hash',   /^#([A-Za-z0-9_-]+)(?:\/(p)?(\d+))?$/, "blerg.User"]
-    ],
-    pathHandlers: [ blerg.User, blerg.Tag, blerg.Welcome ],
     rendered: function() {
         this.inherited(arguments);
 
@@ -42,10 +42,10 @@ enyo.kind({
 
         document.body.addEventListener('keyup', function(event) {
             if (event.shiftKey && event.keyCode == 32) {
-                this.$.post.show();
+                this.waterfall('onPostVisibility', {showing: true});
                 event.stopPropagation();
             }
-        }, false);
+        }.bind(this), false);
     },
     hashCheck: function() {
         if (location.hash != this.lastHash) {
@@ -81,10 +81,6 @@ enyo.kind({
         this.$.api.logout();
     },
     loginSuccessful: function(inSender, inEvent) {
-        this.$.api.requestFeedStatus();
-        this.feedStatusUpdateInterval = setInterval(function() {
-            this.$.api.requestFeedStatus();
-        }.bind(this), 900000);
         this.waterfall('onLogin', inEvent);
     },
     loginFailed: function(inSender, inEvent) {
@@ -98,5 +94,14 @@ enyo.kind({
     postVisibilityUpdate: function(inSender, inEvent) {
         this.$.post.waterfall('onPostVisibility', inEvent);
         this.$.controls.waterfall('onPostVisibility', inEvent);
+    },
+    sendReload: function() {
+        this.$.main.waterfall('onReload');
+    },
+    showChangePassword: function() {
+        this.$.passwdDialog.show();
+    },
+    authFailure: function(inSender, inEvent) {
+        this.logout();
     }
 });