diaspora/public/javascripts/app/views/post-viewer/interactions.js
2012-03-07 16:24:02 -08:00

56 lines
No EOL
1.5 KiB
JavaScript

app.views.PostViewerInteractions = app.views.Base.extend({
className : "",
subviews : {
"#post-feedback" : "feedbackView",
"#post-reactions" : "reactionsView",
"#new-post-comment" : "newCommentView"
},
templateName: "post-viewer/interactions",
initialize : function() {
this.initViews();
this.feedbackView && this.feedbackView.bind("invokePane", this.invokePane, this)
this.feedbackView && this.feedbackView.bind("hidePane", this.hidePane, this)
},
initViews : function() {
this.reactionsView = new app.views.PostViewerReactions({ model : this.model })
/* subviews that require user */
this.feedbackView = new app.views.PostViewerFeedback({ model : this.model })
if(app.currentUser.authenticated()) {
this.newCommentView = new app.views.PostViewerNewComment({ model : this.model })
}
},
togglePane : function(evt) {
if(evt) { evt.preventDefault() }
$("#post-interactions").toggleClass("active")
this.$("#post-info").slideToggle(300)
this.removeTooltips()
},
invokePane : function() {
if(!this.$("#post-info").is(":visible")) {
this.$("#post-info-sneaky").addClass("passive")
this.togglePane()
}
},
hidePane : function() {
if(this.$("#post-info").is(":visible")) {
/* it takes about 400ms for the pane to hide. we need to keep
* the sneaky hidden until the slide is complete */
setTimeout(function(){
this.$("#post-info-sneaky").removeClass("passive")
}, 400)
this.togglePane()
}
}
});