Skip to content
Extraits de code Groupes Projets
Valider 2777f16f rédigé par Ilyaaaaaaaaaaaaa Zhitomirskiy's avatar Ilyaaaaaaaaaaaaa Zhitomirskiy
Parcourir les fichiers

Merge branch 'issue1586-aspectdropdown-when-posting'

parents 8b278adf 064ae972
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
// Copyright (c) 2011, Diaspora Inc. This file is
// licensed under the Affero General Public License version 3 or later. See
// the COPYRIGHT file.
var AspectsDropdown = {
updateNumber: function(dropdown, personId, number, inAspectClass){
var button = dropdown.parents(".dropdown").children('.button.toggle'),
replacement;
if (number == 0) {
button.removeClass(inAspectClass);
replacement = Diaspora.widgets.i18n.t("aspect_dropdown.toggle.zero");
}else if (number == 1) {
button.addClass(inAspectClass);
replacement = dropdown.find(".selected").first().text();
}else if (number < 3) {
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.few', { count: number.toString()})
}else if (number > 3) {
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.many', { count: number.toString()})
}else {
//the above one are a tautology, but I want to have them here once for once we figure out a neat way i18n them
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.other', { count: number.toString()})
}
button.html(replacement + '');
},
toggleCheckbox:
function(check){
check.parent('li').toggleClass('selected');
},
};
......@@ -4,7 +4,8 @@
var ContactEdit = {
init: function(){
$('.dropdown .dropdown_list > li').live('click', function(evt){
$.extend(ContactEdit, AspectsDropdown);
$('.dropdown.aspect_membership .dropdown_list > li').live('click', function(evt){
ContactEdit.processClick($(this), evt);
});
},
......@@ -44,33 +45,11 @@ var ContactEdit = {
"_method": (selected) ? "DELETE" : "POST"
}, function(aspectMembership) {
li.removeClass('loading')
li.toggleClass("selected");
ContactEdit.updateNumber(li.closest(".dropdown_list"), li.parent().data("person_id"), aspectMembership.aspect_ids.length);
ContactEdit.toggleCheckbox(checkbox);
ContactEdit.updateNumber(li.closest(".dropdown_list"), li.parent().data("person_id"), aspectMembership.aspect_ids.length, 'in_aspect');
Diaspora.widgets.publish("aspectDropdown/updated", [li.parent().data("person_id"), li.parents(".dropdown").parent(".right").html()]);
});
},
updateNumber: function(dropdown, personId, number){
var button = dropdown.parents(".dropdown").children('.button.toggle'),
replacement;
if (number == 0) {
button.removeClass("in_aspects");
replacement = Diaspora.widgets.i18n.t("aspect_dropdown.toggle.zero");
}else if (number == 1) {
button.addClass("in_aspects");
replacement = dropdown.find(".selected").first().text();
}else if (number < 3) {
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.few', { count: number.toString()})
}else if (number > 3) {
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.many', { count: number.toString()})
}else {
//the above one are a tautology, but I want to have them here once for once we figure out a neat way i18n them
replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.other', { count: number.toString()})
}
button.html(replacement + '');
},
};
$(document).ready(function(){
......
......@@ -315,6 +315,12 @@ var Publisher = {
'<input id="services_" name="services[]" type="hidden" value="'+provider+'">');
}
},
selectedAspectIds: function() {
var aspects = $('#publisher [name="aspect_ids[]"]');
var aspectIds = [];
aspects.each(function() { aspectIds.push( parseInt($(this).attr('value'))); });
return aspectIds;
},
toggleAspectIds: function(aspectId) {
var hidden_field = $('#publisher [name="aspect_ids[]"][value="'+aspectId+'"]');
if(hidden_field.length > 0){
......@@ -338,18 +344,25 @@ var Publisher = {
$('#status_message_fake_text').charCount({allowed: min, warning: min/10 });
}
},
bindAspectToggles: function() {
$('#publisher .aspect_badge').bind("click", function(){
var unremovedAspects = $(this).parent().children('.aspect_badge').length - $(this).parent().children(".aspect_badge.removed").length;
if(!$(this).hasClass('removed') && ( unremovedAspects == 1 )){
alert(Diaspora.widgets.i18n.t('publisher.at_least_one_aspect'));
}else{
Publisher.toggleAspectIds($(this).children('a').attr('data-guid'));
$(this).toggleClass("removed");
}
$('#publisher .dropdown .dropdown_list li').bind("click", function(evt){
var li = $(this),
button = li.find('.button'),
checkbox = li.find('img.check');
if(button.hasClass('disabled')) { return; }
AspectsDropdown.toggleCheckbox(checkbox);
AspectsDropdown.updateNumber(li.closest(".dropdown_list"), null, li.parent().find('li.selected').length, '');
Publisher.toggleAspectIds(li.attr('data-aspect_id'));
});
},
beforeSubmit: function(){
if($("#publisher .content_creation form #aspect_ids_").length == 0){
alert(Diaspora.widgets.i18n.t('publisher.at_least_one_aspect'));
return false;
}
},
onSubmit: function(data, json, xhr){
$("#photodropzone").find('li').remove();
$("#publisher textarea").removeClass("with_attachments").css('paddingBottom', '');
......@@ -363,7 +376,21 @@ var Publisher = {
}
},
onSuccess: function(data, json, xhr){
ContentUpdater.addPostToStream(json.html);
var isPostVisible = false;
var postedTo = Publisher.selectedAspectIds();
$.each(AspectFilters.selectedGUIDS, function(index, value){
if(postedTo.indexOf(parseInt(value))>-1)
isPostVisible = true;
});
if(isPostVisible)
ContentUpdater.addPostToStream(json.html);
else
Diaspora.widgets.flashes.render({
success: true,
message: Diaspora.widgets.i18n.t('successfully_posted_message_to_an_aspects_that_is_not_visible')
});
//collapse publisher
Publisher.close();
Publisher.clear();
......@@ -371,6 +398,7 @@ var Publisher = {
Stream.setUpAudioLinks();
},
bindAjax: function(){
Publisher.form().bind('submit', Publisher.beforeSubmit);
Publisher.form().bind('ajax:loading', Publisher.onSubmit);
Publisher.form().bind('ajax:failure', Publisher.onFailure);
Publisher.form().bind('ajax:success', Publisher.onSuccess);
......
......@@ -765,8 +765,12 @@ a.paginate, #infscr-loading
&:hover
:border 1px solid #1C6D99
#main_stream .pagination
:display none
#main_stream
:position relative
:z-index 0
.pagination
:display none
.request_buttons
:position absolute
......@@ -866,7 +870,7 @@ label
#publisher
:z-index 0
:z-index 1
:color #999
:position relative
:margin
......@@ -930,6 +934,9 @@ label
.public_toggle
:text
:align right
.dropdown
:text
:align left
#publisher_service_icons
:position relative
......@@ -945,6 +952,7 @@ label
:position relative
:top -2px
.content_creation
:margin
:top 1em
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter