Commit 313d6915b177f4941a3fb4c3341ba90671d3fc85
1 parent
cb35a9eb
Exists in
master
and in
29 other branches
Fixes on AI1826
Duplicated comments when it has answers Displaying comment title Fixed avatar images on comment Article title far from article lead Only displaying 1000 cahrs Creating activities on communities feed Fixes on rightbar and leftbar
Showing
9 changed files
with
58 additions
and
36 deletions
Show diff stats
app/models/image.rb
... | ... | @@ -13,7 +13,7 @@ class Image < ActiveRecord::Base |
13 | 13 | :thumbnails => { :big => '150x150', |
14 | 14 | :thumb => '100x100', |
15 | 15 | :portrait => '64x64', |
16 | - :minor => '50x50', | |
16 | + :minor => '50x50>', | |
17 | 17 | :icon => '20x20!' }, |
18 | 18 | :max_size => 5.megabytes # remember to update validate message below |
19 | 19 | ... | ... |
app/views/profile/_comment.rhtml
... | ... | @@ -17,7 +17,11 @@ |
17 | 17 | |
18 | 18 | <div class="comment-details"> |
19 | 19 | <div class="comment-text"> |
20 | - <%= link_to(comment.author_name, comment.author.url) %> <%= txt2html comment.body %> | |
20 | + <%= link_to(comment.author_name, comment.author.url) %> | |
21 | + <% unless comment.title.blank? %> | |
22 | + <span class="comment-title"><%= comment.title %></span><br/> | |
23 | + <% end %> | |
24 | + <%= txt2html comment.body %> | |
21 | 25 | </div> |
22 | 26 | <div class="profile-activity-time"> |
23 | 27 | <%= time_ago_as_sentence(comment.created_at) %> | ... | ... |
app/views/profile/_create_article.rhtml
... | ... | @@ -7,9 +7,9 @@ |
7 | 7 | <%= _("on community %s") % link_to(activity.target.profile.short_name(20), activity.target.profile.url) if activity.target.profile.is_a?(Community) %> |
8 | 8 | </p> |
9 | 9 | <div class='profile-activity-lead'> |
10 | - <b><%= link_to(activity.params['name'], activity.params['url']) %></b> | |
11 | - <span title='<%= activity.target.class.short_description %>' class='profile-activity-icon icon-new icon-new<%= activity.target.class.icon_name %>'></span><br /> | |
12 | - <%= image_tag(activity.params['first_image']) unless activity.params['first_image'].blank? %><%= strip_tags(activity.params['lead']).gsub(/(\xA0|\xC2|\s)+/, ' ').gsub(/^\s+/, '') %> <small><%= link_to(_('See more'), activity.params['url']) unless activity.get_lead.blank? %></small> | |
10 | + <div class='article-name'><%= link_to(activity.params['name'], activity.params['url']) %></div> | |
11 | + <span title='<%= activity.target.class.short_description %>' class='profile-activity-icon icon-new icon-new<%= activity.target.class.icon_name %>'></span> | |
12 | + <%= image_tag(activity.params['first_image']) unless activity.params['first_image'].blank? %><%= strip_tags(truncate(activity.params['lead'], 1000, '...')).gsub(/(\xA0|\xC2|\s)+/, ' ').gsub(/^\s+/, '') %> <small><%= link_to(_('See more'), activity.params['url']) unless activity.get_lead.blank? %></small> | |
13 | 13 | </div> |
14 | 14 | <%= content_tag(:p, link_to(_('See complete forum'), activity.get_url), :class => 'see-forum') if activity.target.is_a?(Forum) %> |
15 | 15 | <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) %></p> | ... | ... |
app/views/profile/_profile_comments.rhtml
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | <% end %> |
8 | 8 | |
9 | 9 | <ul class="profile-wall-activities-comments" style="<%= 'display:none;' if (activity.comments_count > 2) %>" > |
10 | - <%= render :partial => 'comment', :collection => activity.comments %> | |
10 | + <%= render :partial => 'comment', :collection => activity.comments_as_thread %> | |
11 | 11 | </ul> |
12 | 12 | |
13 | 13 | <%= render :partial => 'profile_comment_form', :locals => { :activity => activity, :tab_action => tab_action } %> | ... | ... |
public/designs/templates/leftbar/stylesheets/style.css
... | ... | @@ -55,19 +55,13 @@ |
55 | 55 | height: 144px; |
56 | 56 | } |
57 | 57 | |
58 | -#profile-wall li.profile-activity-item.upload_image span a, | |
59 | -#profile-network li.profile-activity-item.upload_image span a { | |
60 | - background-image: url(/images/gallery-image-activity-border-onecol.png); | |
61 | -} | |
62 | - | |
63 | 58 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
64 | -#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
59 | +#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img, | |
65 | 60 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, |
66 | 61 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
67 | -#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
62 | +#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img, | |
68 | 63 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { |
69 | - width: 549px; | |
70 | - height: 254px; | |
64 | + max-width: 540px; | |
71 | 65 | } |
72 | 66 | |
73 | 67 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, | ... | ... |
public/designs/templates/rightbar/stylesheets/style.css
... | ... | @@ -55,22 +55,11 @@ |
55 | 55 | height: 144px; |
56 | 56 | } |
57 | 57 | |
58 | -#profile-wall li.profile-activity-item.upload_image span a, | |
59 | -#profile-network li.profile-activity-item.upload_image span a { | |
60 | - background-image: url(/images/gallery-image-activity-border-onecol.png); | |
61 | -} | |
62 | - | |
63 | 58 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
64 | -#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
59 | +#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img, | |
65 | 60 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, |
66 | 61 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
67 | -#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span img, | |
68 | -#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { | |
69 | - width: 549px; | |
70 | - height: 254px; | |
71 | -} | |
72 | - | |
73 | -#profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, | |
62 | +#profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img, | |
74 | 63 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { |
75 | - background-image: url(/images/gallery-image-activity-border-big-onecol.png); | |
64 | + max-width: 540px; | |
76 | 65 | } | ... | ... |
public/stylesheets/application.css
... | ... | @@ -1203,6 +1203,10 @@ a.comment-picture { |
1203 | 1203 | color: #888; |
1204 | 1204 | } |
1205 | 1205 | |
1206 | +.comment-title { | |
1207 | + font-size: 12px; | |
1208 | + font-weight: bold; | |
1209 | +} | |
1206 | 1210 | .comment-created-at { |
1207 | 1211 | padding-right: 9px; |
1208 | 1212 | } |
... | ... | @@ -5913,6 +5917,11 @@ h1#agenda-title { |
5913 | 5917 | margin: 5px 0; |
5914 | 5918 | } |
5915 | 5919 | |
5920 | +.profile-activity-lead .article-name { | |
5921 | + font-weight: bold; | |
5922 | + margin-bottom: 5px; | |
5923 | +} | |
5924 | + | |
5916 | 5925 | .profile-activity-article-forum .profile-activity-lead { |
5917 | 5926 | height: 50px; |
5918 | 5927 | width: 297px; |
... | ... | @@ -5980,7 +5989,8 @@ h1#agenda-title { |
5980 | 5989 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img, |
5981 | 5990 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span, |
5982 | 5991 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a img { |
5983 | - width: 383px; | |
5992 | + width: auto; | |
5993 | + max-width: 383px; | |
5984 | 5994 | height: auto; |
5985 | 5995 | } |
5986 | 5996 | |
... | ... | @@ -6006,13 +6016,11 @@ h1#agenda-title { |
6006 | 6016 | |
6007 | 6017 | #profile-wall li.profile-activity-item.upload_image span a, |
6008 | 6018 | #profile-network li.profile-activity-item.upload_image span a { |
6009 | - Xbackground: transparent url(/images/gallery-image-activity-border.png) center center no-repeat; | |
6010 | 6019 | text-indent: -5000em; |
6011 | 6020 | } |
6012 | 6021 | |
6013 | 6022 | #profile-wall li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a, |
6014 | 6023 | #profile-network li.profile-activity-item.upload_image .activity-gallery-images-count-1 span a { |
6015 | - Xbackground-image: url(/images/gallery-image-activity-border-big.png); | |
6016 | 6024 | position: relative; |
6017 | 6025 | } |
6018 | 6026 | |
... | ... | @@ -6365,8 +6373,8 @@ h1#agenda-title { |
6365 | 6373 | |
6366 | 6374 | #profile-wall .profile-wall-activities-comments img, |
6367 | 6375 | #profile-network .profile-wall-activities-comments img { |
6368 | - width: 33px; | |
6369 | - height: 33px; | |
6376 | + max-width: 50px; | |
6377 | + max-height: 50px; | |
6370 | 6378 | } |
6371 | 6379 | |
6372 | 6380 | #profile-wall .profile-wall-activities-comments .comment_reply, |
... | ... | @@ -6378,8 +6386,8 @@ h1#agenda-title { |
6378 | 6386 | |
6379 | 6387 | #profile-wall .profile-wall-activities-comments .comment-picture, |
6380 | 6388 | #profile-network .profile-wall-activities-comments .comment-picture { |
6381 | - width: 33px; | |
6382 | - margin-right: 10px; | |
6389 | + width: 50px; | |
6390 | + text-align: center; | |
6383 | 6391 | } |
6384 | 6392 | |
6385 | 6393 | #profile-wall .profile-wall-activities-comments .comment-text p, | ... | ... |
test/unit/comment_test.rb
... | ... | @@ -321,6 +321,22 @@ class CommentTest < ActiveSupport::TestCase |
321 | 321 | assert result[1].replies.empty? |
322 | 322 | end |
323 | 323 | |
324 | + should "return activities comments as a thread" do | |
325 | + person = fast_create(Person) | |
326 | + a = TextileArticle.create!(:profile => person, :name => 'My article', :body => 'Article body') | |
327 | + c0 = Comment.create!(:source => a, :body => 'My comment', :author => person) | |
328 | + c1 = Comment.create!(:reply_of_id => c0.id, :source => a, :body => 'bla', :author => person) | |
329 | + c2 = Comment.create!(:reply_of_id => c1.id, :source => a, :body => 'bla', :author => person) | |
330 | + c3 = Comment.create!(:reply_of_id => c0.id, :source => a, :body => 'bla', :author => person) | |
331 | + c4 = Comment.create!(:source => a, :body => 'My comment', :author => person) | |
332 | + result = a.activity.comments_as_thread | |
333 | + assert_equal c0, result[0] | |
334 | + assert_equal [c1, c3], result[0].replies | |
335 | + assert_equal [c2], result[0].replies[0].replies | |
336 | + assert_equal c4, result[1] | |
337 | + assert result[1].replies.empty? | |
338 | + end | |
339 | + | |
324 | 340 | should 'provide author url for authenticated user' do |
325 | 341 | author = Person.new |
326 | 342 | author.expects(:url).returns('http://blabla.net/author') | ... | ... |
vendor/plugins/action_tracker_has_comments/init.rb
... | ... | @@ -9,4 +9,15 @@ ActionTracker::Record.module_eval do |
9 | 9 | "source_type = '#{type}' AND source_id = '#{id}'" |
10 | 10 | end |
11 | 11 | |
12 | + def comments_as_thread | |
13 | + result = {} | |
14 | + root = [] | |
15 | + self.comments.each do |c| | |
16 | + c.replies = [] | |
17 | + result[c.id] ||= c | |
18 | + c.reply_of_id.nil? ? root << c : result[c.reply_of_id].replies << c | |
19 | + end | |
20 | + root | |
21 | + end | |
22 | + | |
12 | 23 | end | ... | ... |