Skip to content
Extraits de code Groupes Projets
Valider 5fa4519e rédigé par theworldbright's avatar theworldbright
Parcourir les fichiers

Fix #5757 (+2 squashed commits)

Squashed commits:
[e10acde] Open reactions after commenting
[aceea75] Fix hound remarks and reactions tests
The ".comment_action" should be active when the
user clicks on "a.show comments"

[d1deae5] Fix hound remarks
[f5db5dd] Keep current instead of scrolling to first comment
[be63092] Remove unused evt parameter
parent 7dc70c73
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,7 +6,7 @@
$(document).ready(function() {
$(".stream").on("tap click", "a.back_to_stream_element_top", function(evt) {
$(".stream").on("tap click", "a.back_to_stream_element_top", function() {
var bottomBar = $(this).closest(".bottom_bar").first();
var streamElement = bottomBar.parent();
$("html, body").animate({
......@@ -16,60 +16,86 @@ $(document).ready(function() {
$(".stream").on("tap click", "a.show_comments", function(evt){
evt.preventDefault();
var toggleReactionsLink = $(this),
bottomBar = toggleReactionsLink.closest(".bottom_bar").first(),
commentActionLink = bottomBar.find("a.comment_action"),
commentsContainer = function() { return bottomBar.find(".comment_container").first(); },
existingCommentsContainer = commentsContainer();
toggleComments($(this));
});
function toggleComments(toggleReactionsLink) {
if (toggleReactionsLink.hasClass("active")) {
existingCommentsContainer.hide();
toggleReactionsLink.removeClass("active");
} else if (existingCommentsContainer.length > 0) {
existingCommentsContainer.show();
showCommentBox(commentActionLink);
toggleReactionsLink.addClass('active');
commentsContainer().find("time.timeago").timeago();
hideComments(toggleReactionsLink);
} else {
$.ajax({
url: toggleReactionsLink.attr('href'),
success: function(data) {
$(data).insertAfter(bottomBar.children(".show_comments").first());
showCommentBox(commentActionLink);
toggleReactionsLink.addClass("active");
commentsContainer().find("time.timeago").timeago();
}
});
showComments(toggleReactionsLink);
}
});
}
function hideComments(toggleReactionsLink) {
var bottomBar = toggleReactionsLink.closest(".bottom_bar").first(),
commentsContainer = commentsContainerLazy(bottomBar),
existingCommentsContainer = commentsContainer();
existingCommentsContainer.hide();
toggleReactionsLink.removeClass("active");
}
function showComments(toggleReactionsLink) {
var bottomBar = toggleReactionsLink.closest(".bottom_bar").first(),
commentsContainer = commentsContainerLazy(bottomBar),
existingCommentsContainer = commentsContainer(),
commentActionLink = bottomBar.find("a.comment_action");
if (existingCommentsContainer.length > 0) {
showLoadedComments(toggleReactionsLink, existingCommentsContainer, commentActionLink);
} else {
showUnloadedComments(toggleReactionsLink, bottomBar, commentActionLink);
}
}
function showLoadedComments(toggleReactionsLink, existingCommentsContainer, commentActionLink) {
existingCommentsContainer.show();
showCommentBox(commentActionLink);
toggleReactionsLink.addClass("active");
existingCommentsContainer.find("time.timeago").timeago();
}
function showUnloadedComments(toggleReactionsLink, bottomBar, commentActionLink) {
var commentsContainer = commentsContainerLazy(bottomBar);
$.ajax({
url: toggleReactionsLink.attr("href"),
success: function (data) {
$(data).insertAfter(bottomBar.children(".show_comments").first());
showCommentBox(commentActionLink);
toggleReactionsLink.addClass("active");
commentsContainer().find("time.timeago").timeago();
}
});
}
function commentsContainerLazy(bottomBar) {
return function() {
return bottomBar.find(".comment_container").first();
};
}
$(".stream").on("tap click", "a.comment_action", function(evt) {
evt.preventDefault();
showCommentBox(this);
var bottomBar = $(this).closest(".bottom_bar").first();
var commentContainer = bottomBar.find(".comment_container").first();
scrollToOffset(commentContainer);
});
var scrollToOffset = function(commentsContainer){
var commentCount = commentsContainer.find("li.comment").length;
if ( commentCount > 3 ) {
var lastComment = commentsContainer.find("li:nth-child("+(commentCount-3)+")");
$('html,body').animate({
$("html,body").animate({
scrollTop: lastComment.offset().top
}, 1000);
}
};
$(".stream").on("tap click", "a.comment_action", function(evt){
evt.preventDefault();
showCommentBox(this);
var bottomBar = $(this).closest(".bottom_bar").first();
scrollToOffset(bottomBar.find(".comment_container").first());
});
function showCommentBox(link){
var link = $(link);
if(link.hasClass("inactive")) {
var commentActionLink = $(link);
if(commentActionLink.hasClass("inactive")) {
$.ajax({
url: link.attr("href"),
url: commentActionLink.attr("href"),
beforeSend: function(){
link.addClass("loading");
commentActionLink.addClass("loading");
},
context: link,
context: commentActionLink,
success: function(data){
appendCommentBox.call(this, link, data);
appendCommentBox.call(this, commentActionLink, data);
}
});
}
......@@ -82,21 +108,14 @@ $(document).ready(function() {
bottomBar.append(data);
var textArea = bottomBar.find("textarea.comment_box").first()[0];
MBP.autogrow(textArea);
scrollToFirstComment(bottomBar);
}
function scrollToFirstComment(bottomBar) {
$("html, body").animate({
scrollTop: bottomBar.offset().top - 54
}, 500);
}
$(".stream").on("submit", ".new_comment", function(evt) {
evt.preventDefault();
var form = $(this);
$.post(form.attr('action')+"?format=mobile", form.serialize(), function(data) {
$.post(form.attr("action")+"?format=mobile", form.serialize(), function(data) {
updateStream(form, data);
}, 'html');
}, "html");
});
function updateStream(form, data) {
......@@ -104,7 +123,7 @@ $(document).ready(function() {
addNewComments(bottomBar, data);
updateCommentCount(bottomBar);
updateReactionCount(bottomBar);
handleNewCommentBox(form, bottomBar);
handleCommentShowing(form, bottomBar);
bottomBar.find("time.timeago").timeago();
}
......@@ -129,16 +148,12 @@ $(document).ready(function() {
}));
}
function handleNewCommentBox(form, bottomBar) {
form.parent().remove();
function handleCommentShowing(form, bottomBar) {
var formContainer = form.parent();
formContainer.remove();
var commentActionLink = bottomBar.find("a.comment_action").first();
commentActionLink.addClass("inactive");
showCommentBoxIfApplicable(bottomBar, commentActionLink);
}
function showCommentBoxIfApplicable(bottomBar, commentActionLink) {
var toggleReactionsLink = bottomBar.find(".show_comments").first();
if (toggleReactionsLink.hasClass("active")) {
showCommentBox(commentActionLink);
}
showComments(toggleReactionsLink);
}
});
......@@ -8,7 +8,7 @@
%fieldset
.control-group
= hidden_field_tag :post_id, post_id, id: "post_id_on_#{post_id}"
= text_area_tag :text, nil, class: "col-md-12 comment_box form-control form-group", id: "comment_text_on_#{post_id}", placeholder: t('.comment'), autofocus: true
= text_area_tag :text, nil, class: "col-md-12 comment_box form-control form-group", id: "comment_text_on_#{post_id}", placeholder: t('.comment')
= submit_tag t('.comment'), id: "comment_submit_#{post_id}", 'data-disable-with' => t('.commenting'), class: "btn btn-primary pull-right"
.clearfix
......
......@@ -33,7 +33,7 @@ Feature: reactions mobile post
And I should see "1 reaction" within ".show_comments"
And I click on selector "a.show_comments"
And I should see "1" within ".comment_count"
When I click on selector "a.image_link.comment_action.inactive"
When I click on selector "a.image_link.comment_action"
And I click on selector "a.remove"
And I confirm the alert
Then I should not see "1 reaction" within ".show_comments"
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