Skip to content

Instantly share code, notes, and snippets.

@joegaudet
Created December 22, 2011 19:15
Show Gist options
  • Save joegaudet/1511476 to your computer and use it in GitHub Desktop.
Save joegaudet/1511476 to your computer and use it in GitHub Desktop.
Darkhorse.CrudButtonsMixin = {
// terrible coupling
showEditBinding: "Darkhorse.leftPaneController.showEditItems",
showDeleteBinding: "Darkhorse.leftPaneController.showDeleteItems",
render: function(context){
context = context.begin('div').addClass('buttons');
context = context.begin('div').addClass('edit-button').addClass('edit-delete-button').addClass('hidden').begin('span').addClass('edit-button').push("Edit").end().end();
context = context.begin('div').addClass('delete-button').addClass('edit-delete-button').addClass('hidden').begin('span').addClass('delete-button').push("Delete").end().end();
context = context.end();
},
_is: function(string, evt) {
return evt.target.className.indexOf(string) > -1;
},
mouseDown: function(original, evt){
return this._is('edit-button', evt) || this._is('delete-button', evt) || original(evt);
}.enhance(),
mouseUp: function(original, evt){
var retval = YES;
if(this._is('edit-button', evt)) {
Darkhorse.statechart.sendEvent('editItem', this);
}
else if (this._is('delete-button', evt)) {
Darkhorse.statechart.sendEvent('deleteItem', this);
}
else {
retval = NO || original(evt);
}
return retval;
}.enhance(),
update: function(original) {
this.updateDeleteButton();
this.updateEditButton();
original();
}.enhance(),
updateDeleteButton: function() {
this._toggleButton("showDelete", "delete-button");
},
updateEditButton: function() {
this._toggleButton("showEdit", "edit-button");
},
_toggleButton: function(key, klass) {
var content = this.get('content');
var toggle = content.isOwner ? content.isOwner(Matygo.currentUserController.get('content')) : YES;
if(!toggle) return;
var $button = this.$("." + klass);
if (this.get(key)) {
$button.removeClass('hidden');
}
else {
$button.addClass('hidden');
}
},
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment