X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=www%2Fjssrc%2Fblerg%2FControls.js;h=cc8ae8d9d1697751db5b3844bc3ccf99ccac0531;hb=4210d2d20df6635e19c20f5b303d498f4657968b;hp=8c91c2951d857876a4408be27f2ef78753cbf38f;hpb=4720a1f90f7d42f3611f064cc5ba3d768a92b5c6;p=blerg.git diff --git a/www/jssrc/blerg/Controls.js b/www/jssrc/blerg/Controls.js index 8c91c29..cc8ae8d 100644 --- a/www/jssrc/blerg/Controls.js +++ b/www/jssrc/blerg/Controls.js @@ -10,11 +10,12 @@ enyo.kind({ handlers: { onLogin: "login", onLogout: "logout", - onPostVisibility: "postVisibilityUpdate" + onPostVisibility: "postVisibilityUpdate", + onShowForgotPasswordLink: "showForgotPasswordLink" }, components: [ {name: "loggedOutControls", components: [ - {tag: "form", onsubmit: "loginClicked", classes: "login", components: [ + {tag: "form", onkeyup: "loginKeyUp", classes: "login", components: [ {kind: "onyx.Groupbox", components: [ {kind: "onyx.InputDecorator", components: [ {name: "username", kind: "onyx.Input", placeholder: "Username", attributes: {tabindex: 1}} @@ -23,31 +24,34 @@ enyo.kind({ {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password", attributes: {tabindex: 2}} ]}, ]}, - {kind: "onyx.Button", content: "Login", onclick: "loginClicked", attributes: {tabindex: 3}} + {kind: "onyx.Button", content: "Login", onclick: "loginClicked", attributes: {tabindex: 3}}, + {name: "forgotPassword", showing: false, style: "margin-top: 10px; text-align: left", components: [ + {kind: "blerg.Link", content: "Forgot your password?", onNavigate: "popupForgotPasswordDialog"} + ]} ]} ]}, {name: "loggedInControls", showing: false, components: [ - {name: "greeting", components: [ - {noDom: true, content: "Hello, "}, + {name: "greeting", classes: "blerg-controls-greeting", components: [ + {tag: null, content: "Hello, "}, {name: "userlink", tag: "a"}, - {noDom: true, content: ". "}, + {tag: null, content: ". "}, {kind: "blerg.Link", content: "Logout", onNavigate: "logoutClicked"}, - {noDom: true, content: "."} - ]}, - {components: [ - {name: "rssButton", kind: "blerg.Link", showing: false, components: [ - {kind: "Image", src: "/images/rss.png", width: 16, height: 16}, - {noDom: true, content: " RSS"} - ]} + {tag: null, content: "."}, + {tag: "br"}, + {kind: "blerg.Link", content: "Account Center", href: '/#/account'}, + {tag: null, content: "."} ]}, {classes: "blerg-controls-toolbar", components: [ - {kind: "onyx.Button", content: "Feed Your Vanity", onclick: "chatterClicked"}, + {name: "mentionButton", kind: "onyx.Button", content: "Feed Your Vanity", onclick: "chatterClicked"}, {name: "feedButton", kind: "onyx.Button", classes: "feed-button", content: "Stalk Your Victims", onclick: "feedClicked"}, {name: "spewButton", kind: "onyx.Button", classes: "spew-button", content: "Spew It!", onclick: "spewToggle"} ]}, ]}, + {name: "forgotPasswordDialog", kind: "blerg.ForgotPasswordDialog"}, {name: "api", kind: "blerg.API", - onFeedInfo: "gotFeedInfo"} + onStatus: "gotStatus"}, + {kind: "Signals", + onClearNotification: "clearNotification"} ], showRSS: function(url) { this.$.rssButton.show(); @@ -74,26 +78,42 @@ enyo.kind({ inEvent.preventDefault(); return true; }, + loginKeyUp: function(inSender, inEvent) { + if (inEvent.keyCode == 13) { + if (this.$.username.hasFocus()) { + this.$.password.focus(); + } else { + this.loginClicked(this, inEvent); + } + return true; + } + }, logoutClicked: function() { this.bubble('onTryLogout'); return true; }, login: function(inSender, inEvent) { this.$.password.setValue(''); + this.$.forgotPassword.hide(); + // TODO: Replace with regular blur() call in future enyo + this.$.password.node.blur(); this.setLoggedIn(true); this.$.userlink.setAttribute('href', '/#' + inEvent.username); this.$.userlink.setContent('@' + inEvent.username); this.username = inEvent.username; - this.$.api.getFeedInfo(); + this.updateStatus(); this.feedStatusUpdateInterval = setInterval(function() { - this.$.api.getFeedInfo(); + this.updateStatus(); }.bind(this), 900000); }, logout: function(inSender, inEvent) { this.setLoggedIn(false); clearInterval(this.feedStatusUpdateInterval); }, + changePasswordClicked: function() { + this.bubble('onShowChangePassword'); + }, spewToggle: function(inSender, inEvent) { this.postShowing = !this.postShowing; this.bubble('onPostVisibility', {showing: this.postShowing}); @@ -102,12 +122,20 @@ enyo.kind({ this.postShowing = inEvent.showing; this.$.spewButton.addRemoveClass('active', inEvent.showing); }, - gotFeedInfo: function(inSender, inEvent) { - this.$.feedButton.addRemoveClass('new', inEvent.new > 0); - if (inEvent.new > 0) { - this.$.feedButton.setContent('Stalk Your Victims (' + inEvent.new + ')'); - } else { - this.$.feedButton.setContent('Stalk Your Victims'); + updateStatus: function() { + this.$.api.getStatus(); + }, + gotStatus: function(inSender, inEvent) { + if ('mentioned' in inEvent) { + this.$.mentionButton.addRemoveClass('new', inEvent.mentioned); + } + if ('feed_new' in inEvent) { + this.$.feedButton.addRemoveClass('new', inEvent.feed_new > 0); + if (inEvent.feed_new > 0) { + this.$.feedButton.setContent('Stalk Your Victims (' + inEvent.feed_new + ')'); + } else { + this.$.feedButton.setContent('Stalk Your Victims'); + } } }, chatterClicked: function() { @@ -117,5 +145,19 @@ enyo.kind({ feedClicked: function() { window.location.href = '/#/feed'; this.bubble('onNavigate'); + }, + clearNotification: function(inSender, inEvent) { + if (inEvent.type == 'feed') { + this.gotStatus(this, {feed_new: 0}); + } else if (inEvent.type == 'mentioned') { + this.gotStatus(this, {mentioned: false}); + } + }, + showForgotPasswordLink: function(inSender, inevent) { + this.$.forgotPassword.show(); + }, + popupForgotPasswordDialog: function() { + this.$.forgotPasswordDialog.setUsername(this.$.username.getValue()); + this.$.forgotPasswordDialog.show(); } });