Redesign user tasks
[blerg.git] / www / jssrc / blerg / Controls.js
index 4ef8a41..f23f63f 100644 (file)
@@ -1,14 +1,20 @@
 enyo.kind({
        name: "blerg.Controls",
        kind: "Control",
-       style: "float: right",
        classes: "blerg-controls",
+       username: null,
+       postShowing: false,
        published: {
                loggedIn: false
        },
+       handlers: {
+               onLogin: "login",
+               onLogout: "logout",
+               onPostVisibility: "postVisibilityUpdate"
+       },
        components: [
                {name: "loggedOutControls", components: [
-                       {tag: "form", onsubmit: "doLogin", classes: "login", components: [
+                       {tag: "form", onsubmit: "loginClicked", classes: "login", components: [
                                {kind: "onyx.Groupbox", components: [
                                        {kind: "onyx.InputDecorator", components: [
                                                {name: "username", kind: "onyx.Input", placeholder: "Username"}
@@ -17,22 +23,28 @@ enyo.kind({
                                                {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
                                        ]},
                                ]},
-                               {kind: "onyx.Button", content: "Login", onclick: "doLogin"}
+                               {kind: "onyx.Button", content: "Login", onclick: "loginClicked"}
                        ]}
                ]},
                {name: "loggedInControls", showing: false, components: [
-                       {name: "greeting"},
-                       {kind: "onyx.Toolbar", components: [
-                               {kind: "onyx.Button", content: "Write", onClick: "writeClicked"},
-                               {kind: "onyx.Button", content: "Hearsay", onClick: "chatterClicked"},
-                               {kind: "onyx.Button", content: "Stalking", onClick: "feedClicked"}
+                       {name: "greeting", components: [
+                               {noDom: true, content: "Hello, "},
+                               {name: "userlink", tag: "a"},
+                               {noDom: true, content: ". "},
+                               {kind: "blerg.Link", content: "Logout", onNavigate: "logoutClicked"},
+                               {noDom: true, content: "."}
                        ]},
                        {components: [
-                               {name: "rssButton", showing: false, kind: "blerg.Link", components: [
+                               {name: "rssButton", kind: "blerg.Link", showing: false, components: [
                                        {kind: "Image", src: "/images/rss.png", width: 16, height: 16},
                                        {noDom: true, content: " RSS"}
                                ]}
-                       ]}
+                       ]},
+                       {classes: "blerg-controls-toolbar", components: [
+                               {kind: "onyx.Button", content: "Feed Your Vanity", onclick: "chatterClicked"},
+                               {kind: "onyx.Button", content: "Stalk Your Victims", onclick: "feedClicked"},
+                               {name: "spewButton", kind: "onyx.Button", classes: "spew-button", content: "Spew It!", onclick: "spewToggle"}
+                       ]},
                ]}
        ],
        showRSS: function(url) {
@@ -52,10 +64,34 @@ enyo.kind({
                        this.$.loggedInControls.hide();
                }
        },
-       doLogin: function() {
+       loginClicked: function(inSender, inEvent) {
                this.bubble('onTryLogin', {
                        username: this.$.username.getValue(),
                        password: this.$.password.getValue()
                });
+               inEvent.preventDefault();
+               return true;
+       },
+       logoutClicked: function() {
+               this.bubble('onTryLogout');
+               return true;
+       },
+       login: function(inSender, inEvent) {
+               this.$.password.setValue('');
+               this.setLoggedIn(true);
+               this.$.userlink.setAttribute('href', '/#' + inEvent.username);
+               this.$.userlink.setContent('@' + inEvent.username);
+               this.username = inEvent.username;
+       },
+       logout: function(inSender, inEvent) {
+               this.setLoggedIn(false);
+       },
+       spewToggle: function(inSender, inEvent) {
+               this.postShowing = !this.postShowing;
+               this.bubble('onPostVisibility', {showing: this.postShowing});
+       },
+       postVisibilityUpdate: function(inSender, inEvent) {
+               this.postShowing = inEvent.showing;
+               this.$.spewButton.addRemoveClass('active', inEvent.showing);
        }
 });