2 name: "blerg.Controls",
4 classes: "blerg-controls",
13 onPostVisibility: "postVisibilityUpdate",
14 onClearFeedStatus: "clearFeedStatus"
17 {name: "loggedOutControls", components: [
18 {tag: "form", onsubmit: "loginClicked", classes: "login", components: [
19 {kind: "onyx.Groupbox", components: [
20 {kind: "onyx.InputDecorator", components: [
21 {name: "username", kind: "onyx.Input", placeholder: "Username", attributes: {tabindex: 1}}
23 {kind: "onyx.InputDecorator", components: [
24 {name: "password", kind: "onyx.Input", placeholder: "Password", type: "password", attributes: {tabindex: 2}}
27 {kind: "onyx.Button", content: "Login", onclick: "loginClicked", attributes: {tabindex: 3}}
30 {name: "loggedInControls", showing: false, components: [
31 {name: "greeting", classes: "blerg-controls-greeting", components: [
32 {tag: null, content: "Hello, "},
33 {name: "userlink", tag: "a"},
34 {tag: null, content: ". "},
35 {kind: "blerg.Link", content: "Logout", onNavigate: "logoutClicked"},
36 {tag: null, content: "."},
38 {kind: "blerg.Link", content: "Change Password", onNavigate: "changePasswordClicked"},
39 {tag: null, content: "."}
41 {classes: "blerg-controls-toolbar", components: [
42 {kind: "onyx.Button", content: "Feed Your Vanity", onclick: "chatterClicked"},
43 {name: "feedButton", kind: "onyx.Button", classes: "feed-button", content: "Stalk Your Victims", onclick: "feedClicked"},
44 {name: "spewButton", kind: "onyx.Button", classes: "spew-button", content: "Spew It!", onclick: "spewToggle"}
47 {name: "api", kind: "blerg.API",
48 onFeedInfo: "gotFeedInfo"}
50 showRSS: function(url) {
51 this.$.rssButton.show();
53 this.$.rssButton.setAttribute('href', url);
56 this.$.rssButton.hide();
58 loggedInChanged: function() {
60 this.$.loggedOutControls.hide();
61 this.$.loggedInControls.show();
63 this.$.loggedOutControls.show();
64 this.$.loggedInControls.hide();
67 loginClicked: function(inSender, inEvent) {
68 this.bubble('onTryLogin', {
69 username: this.$.username.getValue(),
70 password: this.$.password.getValue()
72 inEvent.preventDefault();
75 logoutClicked: function() {
76 this.bubble('onTryLogout');
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;
86 this.updateFeedInfo();
87 this.feedStatusUpdateInterval = setInterval(function() {
88 this.updateFeedInfo();
89 }.bind(this), 900000);
91 logout: function(inSender, inEvent) {
92 this.setLoggedIn(false);
93 clearInterval(this.feedStatusUpdateInterval);
95 changePasswordClicked: function() {
96 this.bubble('onShowChangePassword');
98 spewToggle: function(inSender, inEvent) {
99 this.postShowing = !this.postShowing;
100 this.bubble('onPostVisibility', {showing: this.postShowing});
102 postVisibilityUpdate: function(inSender, inEvent) {
103 this.postShowing = inEvent.showing;
104 this.$.spewButton.addRemoveClass('active', inEvent.showing);
106 updateFeedInfo: function() {
107 this.$.api.getFeedInfo();
109 gotFeedInfo: function(inSender, inEvent) {
110 this.$.feedButton.addRemoveClass('new', inEvent.new > 0);
111 if (inEvent.new > 0) {
112 this.$.feedButton.setContent('Stalk Your Victims (' + inEvent.new + ')');
114 this.$.feedButton.setContent('Stalk Your Victims');
117 chatterClicked: function() {
118 window.location.href = '/#/ref/' + this.username;
119 this.bubble('onNavigate');
121 feedClicked: function() {
122 window.location.href = '/#/feed';
123 this.bubble('onNavigate');
125 clearFeedStatus: function() {
126 this.gotFeedInfo(this, {new: 0});