enyo.kind({
name: "blerg.Post",
- kind: "Control",
+ kind: "FittableRows",
classes: "blerg-post",
handlers: {
onPostVisibility: "postVisibilityUpdate",
onLogin: "loggedIn",
onLogout: "loggedOut"
},
- resizePostContentTimeout: null,
components: [
- {name: "helpContent", allowHtml: true, showing: false},
- {style: "position: relative;", components: [
- {tag: "h2", content: "What's on your mind?", style: "width: 75%;",},
- {name: "showHelpLink", kind: "blerg.Link", onNavigate: "showHelp", content: "Help!", style: "position: absolute; right: 1pt; bottom: 1pt; font-weight: bold; font-size: large;"},
- {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}
+ {tag: "h2", content: "What's on your mind?"},
+ {kind: "onyx.InputDecorator", alwaysLooksFocused: true, classes: "content-decorator", fit: true, components: [
+ {name: "postContent", kind: "onyx.TextArea", classes: "content", onkeyup: "updatePreview", attributes: {tabindex: 4}}
]},
- {kind: "onyx.InputDecorator", components: [
- {name: "postContent", classes: "content", kind: "onyx.TextArea", onkeydown: "resizePostContent", attributes: {tabindex: 4}}
+ {name: "toolbar", kind: "FittableColumns", classes: "toolbar", components: [
+ {classes: "switcher", components: [
+ {kind: "onyx.RadioGroup", onActivate: "switchBottomPanel", components: [
+ {content: "Replying to"},
+ {content: "Preview"},
+ {content: "Help"}
+ ]}
+ ]},
+ {classes: "buttons", fit: true, components: [
+ {name: "loginReminder", tag: "span", classes: "blerg-error", style: "margin-right: 8px", content: "You must log in before posting."},
+ {kind: "onyx.Button", content: "Close", onclick: "closePost", classes: "onyx-negative", attributes: {tabindex: 6}},
+ {name: "postButton", kind: "onyx.Button", content: "Post", onclick: "doPost", classes: "onyx-affirmative", disabled: true, attributes: {tabindex: 5}}
+ ]},
]},
- {classes: "buttons", components: [
- {name: "loginReminder", tag: "span", classes: "blerg-error", style: "margin-right: 8px; vertical-align: 60%;", content: "You must log in before posting."},
- {kind: "onyx.Button", content: "Close", onclick: "closePost", classes: "onyx-negative", attributes: {tabindex: 6}},
- {name: "postButton", kind: "onyx.Button", content: "Post", onclick: "doPost", classes: "onyx-affirmative", disabled: true, attributes: {tabindex: 5}}
+ {name: "bottomPanel", kind: "Panels", classes: "bottom-panel", draggable: false, fit: true, components: [
+ {content: "In reply to:"},
+ {kind: "Scroller", components: [
+ {name: "preview", classes: "record", allowHtml: true},
+ ]},
+ {kind: "Scroller", components: [
+ {name: "helpContent", allowHtml: true},
+ ]}
]},
{name: "api", kind: "blerg.API",
onPostSuccessful: "postSuccessful",
postVisibilityUpdate: function(inSender, inEvent) {
if (inEvent.showing) {
this.show();
+ // Need to reflow manually because this is hidden by default
+ this.$.toolbar.reflow();
+ this.reflow();
this.$.postContent.focus();
if (inEvent.data && this.getData() == "") {
this.setData(inEvent.data);
this.hide();
}
},
- resizePostContent: function(inSender, inEvent) {
- if (this.resizePostContentTimeout)
- clearTimeout(this.resizePostContentTimeout);
- this.resizePostContentTimeout = setTimeout(function() {
- var n = this.$.postContent.hasNode();
- if (!n)
- return;
- var c = this.getData();
- var lines = Math.floor(c.length / (100 * (n.clientWidth / 1000))) + 1;
- var m = c.match(/\r?\n/g);
- if (m)
- lines += m.length;
- if (lines <= 3) {
- this.$.postContent.setStyle("");
- } else {
- this.$.postContent.setStyle("height: " + (lines * 17) + "pt");
- }
- this.resizePostContentTimeout = null;
- }.bind(this), 150);
+ updatePreview: function(inSender, inEvent) {
+ this.$.preview.setContent(blerg.Util.blergFormat(this.getData()));
},
loggedIn: function() {
this.$.postButton.setDisabled(false);
this.$.postButton.setDisabled(true);
this.$.loginReminder.show();
},
- showHelp: function() {
- this.$.helpContent.show();
- this.$.showHelpLink.hide();
- this.$.hideHelpLink.show();
+ loadHelp: function() {
if (this.$.helpContent.getContent() == '') {
var req = new enyo.Ajax({
url: baseURL + '/doc/post_help.html',
req.go();
}
},
- hideHelp: function() {
- this.$.helpContent.hide();
- this.$.showHelpLink.show();
- this.$.hideHelpLink.hide();
- }
+ switchBottomPanel: function(inSender, inEvent) {
+ var active = inSender.getActive();
+ var index = inSender.children.indexOf(active);
+ this.$.bottomPanel.setIndex(index);
+ if (index == 2) {
+ this.loadHelp();
+ }
+ },
});