80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
|
|
|
|
app.views.Contact = app.views.Base.extend({
|
|
templateName: 'contact',
|
|
|
|
subviews: {
|
|
".aspect_membership_dropdown": "AspectMembershipView"
|
|
},
|
|
|
|
events: {
|
|
"click .contact_add-to-aspect" : "addContactToAspect",
|
|
"click .contact_remove-from-aspect" : "removeContactFromAspect"
|
|
},
|
|
|
|
tooltipSelector: '.contact_add-to-aspect, .contact_remove-from-aspect',
|
|
|
|
initialize: function() {
|
|
this.AspectMembershipView = new app.views.AspectMembership(
|
|
{person: _.extend(this.model.get("person"), {contact: this.model})}
|
|
);
|
|
},
|
|
|
|
presenter: function() {
|
|
return _.extend(this.defaultPresenter(), {
|
|
person_id : this.model.get('person_id'),
|
|
person : this.model.get('person'),
|
|
in_aspect: (app.aspect && this.model.inAspect(app.aspect.get('id'))) ? 'in_aspect' : '',
|
|
});
|
|
},
|
|
|
|
addContactToAspect: function(){
|
|
var self = this;
|
|
// do we create the first aspect membership for this person?
|
|
var startSharing = this.model.aspectMemberships.length === 0;
|
|
this.model.aspectMemberships.create({
|
|
"person_id": this.model.get("person_id"),
|
|
"aspect_id": app.aspect.get("id")
|
|
},{
|
|
success: function(){
|
|
app.events.trigger("aspect_membership:create", {
|
|
membership: {
|
|
aspectId: app.aspect.get("id"),
|
|
personId: self.model.get("person_id")
|
|
},
|
|
startSharing: startSharing
|
|
});
|
|
self.render();
|
|
},
|
|
error: function(){
|
|
var msg = Diaspora.I18n.t("contacts.error_add", { "name": self.model.get("person").name });
|
|
app.flashMessages.error(msg);
|
|
}
|
|
});
|
|
},
|
|
|
|
removeContactFromAspect: function(){
|
|
var self = this;
|
|
// do we destroy the last aspect membership for this person?
|
|
var stopSharing = this.model.aspectMemberships.length <= 1;
|
|
this.model.aspectMemberships
|
|
.find(function(membership){ return membership.get("aspect").id === app.aspect.id; })
|
|
.destroy({
|
|
success: function(){
|
|
app.events.trigger("aspect_membership:destroy", {
|
|
membership: {
|
|
aspectId: app.aspect.get("id"),
|
|
personId: self.model.get("person_id")
|
|
},
|
|
stopSharing: stopSharing
|
|
});
|
|
self.render();
|
|
},
|
|
error: function(){
|
|
var msg = Diaspora.I18n.t("contacts.error_remove", { "name": self.model.get("person").name });
|
|
app.flashMessages.error(msg);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
// @license-end
|