6 onPostVisibility: "postVisibilityUpdate",
10 resizePostContentTimeout: null,
12 {name: "helpContent", allowHtml: true, showing: false},
13 {style: "position: relative;", components: [
14 {tag: "h2", content: "What's on your mind?", style: "width: 75%;",},
15 {name: "showHelpLink", kind: "blerg.Link", onNavigate: "showHelp", content: "Help!", style: "position: absolute; right: 1pt; bottom: 1pt; font-weight: bold; font-size: large;"},
16 {name: "hideHelpLink", kind: "blerg.Link", onNavigate: "hideHelp", content: "Hide Help", style: "position: absolute; right: 1pt; bottom: 1pt; font-weight: bold; font-size: large;", showing: false}
18 {kind: "onyx.InputDecorator", components: [
19 {name: "postContent", classes: "content", kind: "onyx.TextArea", onkeydown: "resizePostContent", attributes: {tabindex: 4}}
21 {classes: "buttons", components: [
22 {name: "loginReminder", tag: "span", classes: "blerg-error", style: "margin-right: 8px; vertical-align: 60%;", content: "You must log in before posting."},
23 {kind: "onyx.Button", content: "Close", onclick: "closePost", classes: "onyx-negative", attributes: {tabindex: 6}},
24 {name: "postButton", kind: "onyx.Button", content: "Post", onclick: "doPost", classes: "onyx-affirmative", disabled: true, attributes: {tabindex: 5}}
26 {name: "api", kind: "blerg.API",
27 onPostSuccessful: "postSuccessful",
28 onPostFailed: "postFailed"}
31 this.inherited(arguments);
34 return this.$.postContent.getValue();
36 setData: function(inVal) {
37 this.$.postContent.setValue(inVal);
39 closePost: function() {
40 this.bubble('onPostVisibility', {showing: false});
43 this.$.api.post(this.getData());
45 postSuccessful: function() {
48 if (location.hash != '#' + blerg.API.username) {
49 location.hash = '#' + blerg.API.username
50 this.bubble('onNavigate');
52 this.bubble('onReload');
55 postFailed: function() {
56 alert('Could not post!');
58 postVisibilityUpdate: function(inSender, inEvent) {
59 if (inEvent.showing) {
61 this.$.postContent.focus();
62 if (inEvent.data && this.getData() == "") {
63 this.setData(inEvent.data);
64 this.$.postContent.node.setSelectionRange(inEvent.data.length, inEvent.data.length);
70 resizePostContent: function(inSender, inEvent) {
71 if (this.resizePostContentTimeout)
72 clearTimeout(this.resizePostContentTimeout);
73 this.resizePostContentTimeout = setTimeout(function() {
74 var n = this.$.postContent.hasNode();
77 var c = this.getData();
78 var lines = Math.floor(c.length / (100 * (n.clientWidth / 1000))) + 1;
79 var m = c.match(/\r?\n/g);
83 this.$.postContent.setStyle("");
85 this.$.postContent.setStyle("height: " + (lines * 17) + "pt");
87 this.resizePostContentTimeout = null;
90 loggedIn: function() {
91 this.$.postButton.setDisabled(false);
92 this.$.loginReminder.hide();
94 loggedOut: function() {
95 this.$.postButton.setDisabled(true);
96 this.$.loginReminder.show();
98 showHelp: function() {
99 this.$.helpContent.show();
100 this.$.showHelpLink.hide();
101 this.$.hideHelpLink.show();
102 if (this.$.helpContent.getContent() == '') {
103 var req = new enyo.Ajax({
104 url: baseURL + '/doc/post_help.html',
107 req.response(function(inSender, inResponse) {
108 this.$.helpContent.setContent(inResponse);
113 hideHelp: function() {
114 this.$.helpContent.hide();
115 this.$.showHelpLink.show();
116 this.$.hideHelpLink.hide();