84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
$(document).ready(function(){
|
||
/* profile page: aspect-dropdown */
|
||
|
||
// renders the cover text for the dropdown
|
||
function profileAspectDropdown_refresh($el) {
|
||
var cover_text, num_selected = $el.find('option.selected').length;
|
||
if(num_selected === 0) {
|
||
$el.removeClass('has_connection');
|
||
cover_text = Diaspora.I18n.t('aspect_dropdown.add_to_aspect');
|
||
} else {
|
||
$el.addClass('has_connection');
|
||
if(num_selected === 1) {
|
||
cover_text = $el.find('option.selected').data('name');
|
||
} else {
|
||
cover_text = Diaspora.I18n.t('aspect_dropdown.toggle', { 'count' : num_selected });
|
||
}
|
||
}
|
||
$el.find('option.list_cover').text(cover_text);
|
||
}
|
||
|
||
// onchange handler for aspect dropdown instances
|
||
var profileAspectDropDown_onchange = function() {
|
||
var $el = $(this),
|
||
selected = $el.find('option:selected');
|
||
$el.find('option.list_cover').text(Diaspora.I18n.t('aspect_dropdown.updating'));
|
||
$el.val('list_cover'); // switch back to cover
|
||
|
||
if(selected.hasClass('selected')) {
|
||
// remove from aspect
|
||
var membershipId = selected.data("membership_id");
|
||
|
||
$.ajax({
|
||
url: Routes.aspectMembership(membershipId),
|
||
type: "DELETE",
|
||
dataType: "json",
|
||
headers: {
|
||
"Accept": "application/json, text/javascript, */*; q=0.01"
|
||
}
|
||
}).done(function() {
|
||
selected.text("– " + Diaspora.I18n.t('aspect_dropdown.mobile_row_unchecked', {name: selected.data('name')}));
|
||
selected.removeClass('selected');
|
||
profileAspectDropdown_refresh($el);
|
||
}).fail(function() {
|
||
alert(Diaspora.I18n.t('aspect_dropdown.error_remove'));
|
||
profileAspectDropdown_refresh($el);
|
||
});
|
||
|
||
} else {
|
||
// add to aspect
|
||
var person_id = $el.data('person-id');
|
||
|
||
$.ajax({
|
||
url: Routes.aspectMemberships(),
|
||
data: JSON.stringify({
|
||
"person_id": person_id,
|
||
"aspect_id": parseInt(selected.val(), 10)
|
||
}),
|
||
processData: false,
|
||
type: 'POST',
|
||
dataType: 'json',
|
||
headers: {
|
||
'Accept': "application/json, text/javascript, */*; q=0.01"
|
||
},
|
||
contentType: "application/json; charset=UTF-8"
|
||
}).done(function(data) {
|
||
selected.data('membership_id', data.id); // remember membership-id
|
||
selected.text("✓ " + Diaspora.I18n.t('aspect_dropdown.mobile_row_checked', {name: selected.data('name')}));
|
||
selected.addClass('selected');
|
||
profileAspectDropdown_refresh($el);
|
||
}).fail(function() {
|
||
alert(Diaspora.I18n.t('aspect_dropdown.error'));
|
||
profileAspectDropdown_refresh($el);
|
||
});
|
||
|
||
}
|
||
};
|
||
|
||
// initialize list_cover and register eventhandler for every user_aspect dropdown there is
|
||
$('.user_aspects').each(function() {
|
||
profileAspectDropdown_refresh($(this));
|
||
$(this).change(profileAspectDropDown_onchange);
|
||
});
|
||
});
|
||
|