Add Tag handler. Also convert all tabs to spaces.
[blerg.git] / www / jssrc / blerg / Controls.js
1 enyo.kind({
2     name: "blerg.Controls",
3     kind: "Control",
4     classes: "blerg-controls",
5     username: null,
6     postShowing: false,
7     published: {
8         loggedIn: false
9     },
10     handlers: {
11         onLogin: "login",
12         onLogout: "logout",
13         onPostVisibility: "postVisibilityUpdate"
14     },
15     components: [
16         {name: "loggedOutControls", components: [
17             {tag: "form", onsubmit: "loginClicked", classes: "login", components: [
18                 {kind: "onyx.Groupbox", components: [
19                     {kind: "onyx.InputDecorator", components: [
20                         {name: "username", kind: "onyx.Input", placeholder: "Username"}
21                     ]},
22                     {kind: "onyx.InputDecorator", components: [
23                         {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password"}
24                     ]},
25                 ]},
26                 {kind: "onyx.Button", content: "Login", onclick: "loginClicked"}
27             ]}
28         ]},
29         {name: "loggedInControls", showing: false, components: [
30             {name: "greeting", components: [
31                 {noDom: true, content: "Hello, "},
32                 {name: "userlink", tag: "a"},
33                 {noDom: true, content: ". "},
34                 {kind: "blerg.Link", content: "Logout", onNavigate: "logoutClicked"},
35                 {noDom: true, content: "."}
36             ]},
37             {components: [
38                 {name: "rssButton", kind: "blerg.Link", showing: false, components: [
39                     {kind: "Image", src: "/images/rss.png", width: 16, height: 16},
40                     {noDom: true, content: " RSS"}
41                 ]}
42             ]},
43             {classes: "blerg-controls-toolbar", components: [
44                 {kind: "onyx.Button", content: "Feed Your Vanity", onclick: "chatterClicked"},
45                 {kind: "onyx.Button", content: "Stalk Your Victims", onclick: "feedClicked"},
46                 {name: "spewButton", kind: "onyx.Button", classes: "spew-button", content: "Spew It!", onclick: "spewToggle"}
47             ]},
48         ]}
49     ],
50     showRSS: function(url) {
51         this.$.rssButton.show();
52         if (url)
53             this.$.rssButton.setAttribute('href', url);
54     },
55     hideRSS: function() {
56         this.$.rssButton.hide();
57     },
58     loggedInChanged: function() {
59         if (this.loggedIn) {
60             this.$.loggedOutControls.hide();
61             this.$.loggedInControls.show();
62         } else {
63             this.$.loggedOutControls.show();
64             this.$.loggedInControls.hide();
65         }
66     },
67     loginClicked: function(inSender, inEvent) {
68         this.bubble('onTryLogin', {
69             username: this.$.username.getValue(),
70             password: this.$.password.getValue()
71         });
72         inEvent.preventDefault();
73         return true;
74     },
75     logoutClicked: function() {
76         this.bubble('onTryLogout');
77         return true;
78     },
79     login: function(inSender, inEvent) {
80         this.$.password.setValue('');
81         this.setLoggedIn(true);
82         this.$.userlink.setAttribute('href', '/#' + inEvent.username);
83         this.$.userlink.setContent('@' + inEvent.username);
84         this.username = inEvent.username;
85     },
86     logout: function(inSender, inEvent) {
87         this.setLoggedIn(false);
88     },
89     spewToggle: function(inSender, inEvent) {
90         this.postShowing = !this.postShowing;
91         this.bubble('onPostVisibility', {showing: this.postShowing});
92     },
93     postVisibilityUpdate: function(inSender, inEvent) {
94         this.postShowing = inEvent.showing;
95         this.$.spewButton.addRemoveClass('active', inEvent.showing);
96     }
97 });