Add Tag handler. Also convert all tabs to spaces.
[blerg.git] / www / jssrc / blerg / Controls.js
index 508cd60..1bbfd2d 100644 (file)
@@ -1,86 +1,97 @@
 enyo.kind({
-       name: "blerg.Controls",
-       kind: "Control",
-       style: "float: right",
-       classes: "blerg-controls",
-       username: null,
-       published: {
-               loggedIn: false
-       },
-       handlers: {
-               onLogin: "login",
-               onLogout: "logout"
-       },
-       components: [
-               {name: "loggedOutControls", components: [
-                       {tag: "form", onsubmit: "loginClicked", classes: "login", components: [
-                               {kind: "onyx.Groupbox", components: [
-                                       {kind: "onyx.InputDecorator", components: [
-                                               {name: "username", kind: "onyx.Input", placeholder: "Username"}
-                                       ]},
-                                       {kind: "onyx.InputDecorator", components: [
-                                               {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
-                                       ]},
-                               ]},
-                               {kind: "onyx.Button", content: "Login", onclick: "loginClicked"}
-                       ]}
-               ]},
-               {name: "loggedInControls", showing: false, components: [
-                       {name: "greeting", components: [
-                               {noDom: true, content: "Hello, "},
-                               {name: "userlink", tag: "a"},
-                               {noDom: true, content: "."}
-                       ]},
-                       {classes: "onyx-toolbar-inline", components: [
-                               {kind: "onyx.Button", content: "Write", onclick: "writeClicked"},
-                               {kind: "onyx.Button", content: "Hearsay", onclick: "chatterClicked"},
-                               {kind: "onyx.Button", content: "Stalking", onclick: "feedClicked"},
-                               {kind: "onyx.Button", content: "Logout", onclick: "logoutClicked"}
-                       ]},
-                       {components: [
-                               {name: "rssButton", showing: false, kind: "blerg.Link", components: [
-                                       {kind: "Image", src: "/images/rss.png", width: 16, height: 16},
-                                       {noDom: true, content: " RSS"}
-                               ]}
-                       ]}
-               ]}
-       ],
-       showRSS: function(url) {
-               this.$.rssButton.show();
-               if (url)
-                       this.$.rssButton.setAttribute('href', url);
-       },
-       hideRSS: function() {
-               this.$.rssButton.hide();
-       },
-       loggedInChanged: function() {
-               if (this.loggedIn) {
-                       this.$.loggedOutControls.hide();
-                       this.$.loggedInControls.show();
-               } else {
-                       this.$.loggedOutControls.show();
-                       this.$.loggedInControls.hide();
-               }
-       },
-       loginClicked: function(inSender, inEvent) {
-               this.bubble('onTryLogin', {
-                       username: this.$.username.getValue(),
-                       password: this.$.password.getValue()
-               });
-               inEvent.preventDefault();
-               return true;
-       },
-       logoutClicked: function() {
-               this.bubble('onTryLogout');
-       },
-       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);
-       }
+    name: "blerg.Controls",
+    kind: "Control",
+    classes: "blerg-controls",
+    username: null,
+    postShowing: false,
+    published: {
+        loggedIn: false
+    },
+    handlers: {
+        onLogin: "login",
+        onLogout: "logout",
+        onPostVisibility: "postVisibilityUpdate"
+    },
+    components: [
+        {name: "loggedOutControls", components: [
+            {tag: "form", onsubmit: "loginClicked", classes: "login", components: [
+                {kind: "onyx.Groupbox", components: [
+                    {kind: "onyx.InputDecorator", components: [
+                        {name: "username", kind: "onyx.Input", placeholder: "Username"}
+                    ]},
+                    {kind: "onyx.InputDecorator", components: [
+                        {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
+                    ]},
+                ]},
+                {kind: "onyx.Button", content: "Login", onclick: "loginClicked"}
+            ]}
+        ]},
+        {name: "loggedInControls", showing: false, components: [
+            {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", 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) {
+        this.$.rssButton.show();
+        if (url)
+            this.$.rssButton.setAttribute('href', url);
+    },
+    hideRSS: function() {
+        this.$.rssButton.hide();
+    },
+    loggedInChanged: function() {
+        if (this.loggedIn) {
+            this.$.loggedOutControls.hide();
+            this.$.loggedInControls.show();
+        } else {
+            this.$.loggedOutControls.show();
+            this.$.loggedInControls.hide();
+        }
+    },
+    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);
+    }
 });