Commit ac42021dd561b723f14819656927ee20a636710d

Authored by Caio Almeida
Committed by Daniela Feitosa
1 parent f99a9e55

Layouts for wall activities done, scraps missing

app/models/event.rb
@@ -120,6 +120,10 @@ class Event < Article @@ -120,6 +120,10 @@ class Event < Article
120 true 120 true
121 end 121 end
122 122
  123 + def notifiable?
  124 + true
  125 + end
  126 +
123 include Noosfero::TranslatableContent 127 include Noosfero::TranslatableContent
124 include MaybeAddHttp 128 include MaybeAddHttp
125 129
app/models/forum.rb
@@ -24,4 +24,13 @@ class Forum < Folder @@ -24,4 +24,13 @@ class Forum < Folder
24 def self.icon_name(article = nil) 24 def self.icon_name(article = nil)
25 'forum' 25 'forum'
26 end 26 end
  27 +
  28 + def notifiable?
  29 + true
  30 + end
  31 +
  32 + def first_paragraph
  33 + paragraphs = Hpricot(body).search('p')
  34 + paragraphs.empty? ? '' : paragraphs.first.to_html
  35 + end
27 end 36 end
app/models/uploaded_file.rb
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 # of the file itself is kept. (FIXME?) 4 # of the file itself is kept. (FIXME?)
5 class UploadedFile < Article 5 class UploadedFile < Article
6 6
7 - track_actions :upload_image, :after_create, :keep_params => ["view_url", "thumbnail_path", "parent.url", "parent.name"], :if => Proc.new { |a| a.published? && a.image? && !a.parent.nil? && a.parent.gallery? } 7 + track_actions :upload_image, :after_create, :keep_params => ["view_url", "thumbnail_path", "parent.url", "parent.name"], :if => Proc.new { |a| a.published? && a.image? && !a.parent.nil? && a.parent.gallery? }, :custom_target => :parent
8 8
9 include ShortFilename 9 include ShortFilename
10 10
app/views/profile/_create_article.rhtml
@@ -2,8 +2,10 @@ @@ -2,8 +2,10 @@
2 <%= link_to(profile_image(activity.user, :minor), activity.user.url) %> 2 <%= link_to(profile_image(activity.user, :minor), activity.user.url) %>
3 </div> 3 </div>
4 <div class='profile-activity-description'> 4 <div class='profile-activity-description'>
5 - <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %> <%= describe activity %></p>  
6 - <div class='profile-activity-lead'><%= image_tag(activity.params['first_image']) if activity.params['first_image'] %><%= strip_tags(activity.params['lead']).gsub(/(\xA0|\xC2|\s)+/, ' ').gsub(/^\s+/, '') %></div> 5 + <p class='profile-activity-text'><%= link_to activity.user.name, activity.user.url %></p>
  6 + <div class='profile-activity-lead'>
  7 + <b><%= activity.params['name'] %></b> <span title='<%= activity.target.class.short_description %>' class='profile-activity-icon icon-new icon-new<%= activity.target.class.icon_name %>'></span><br />
  8 + <%= 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></div>
7 <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) + ' ' + _('ago') %></p> 9 <p class='profile-activity-time'><%= time_ago_as_sentence(activity.created_at) + ' ' + _('ago') %></p>
8 <div class='profile-wall-actions'> 10 <div class='profile-wall-actions'>
9 <%= link_to_remote(content_tag(:span, _('Remove')), :url =>{:action => 'remove_activity', :activity_id => activity.id}, :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %> 11 <%= link_to_remote(content_tag(:span, _('Remove')), :url =>{:action => 'remove_activity', :activity_id => activity.id}, :update => "profile-activity-item-#{activity.id}") if logged_in? && current_person == @profile %>
config/initializers/action_tracker.rb
@@ -23,7 +23,7 @@ ActionTrackerConfig.verbs = { @@ -23,7 +23,7 @@ ActionTrackerConfig.verbs = {
23 }, 23 },
24 24
25 :upload_image => { 25 :upload_image => {
26 - :description => lambda { n_('uploaded 1 image:<br />%{thumbnails}<br />%{details}', 'uploaded %{num} images:<br />%{thumbnails}<br />%{details}', get_view_url.size) % { :num => get_view_url.size, :thumbnails => '{{ta.collect_group_with_index(:thumbnail_path){ |t,i| content_tag(:span, link_to(image_tag(t), ta.get_view_url[i]))}.last(3).join}}', :details => '{{unique_with_count(ta.collect_group_with_index(:parent_name){ |n,i| link_to(n, ta.get_parent_url[i])}, "%s").join("<br />")}}' % _("in the gallery") } }, 26 + :description => lambda { n_('uploaded 1 image:<br />%{thumbnails}<br style="clear: both;" />%{details}', 'uploaded %{num} images:<br />%{thumbnails}<br style="clear: both;" />%{details}', get_view_url.size) % { :num => get_view_url.size, :thumbnails => '{{ta.collect_group_with_index(:thumbnail_path){ |t,i| content_tag(:span, image_tag(t) + link_to(nil, ta.get_view_url[i]))}.last(3).join}}', :details => '{{unique_with_count(ta.collect_group_with_index(:parent_name){ |n,i| link_to(n, ta.get_parent_url[i])}, "%s").join("<br />")}}' % _("in the gallery") } },
27 :type => :groupable 27 :type => :groupable
28 }, 28 },
29 29
public/images/gallery-image-activity-border.png 0 → 100644

732 Bytes

public/stylesheets/application.css
@@ -5911,6 +5911,65 @@ h1#agenda-title { @@ -5911,6 +5911,65 @@ h1#agenda-title {
5911 color: #808080; 5911 color: #808080;
5912 } 5912 }
5913 5913
  5914 +#profile-wall li.profile-activity-item.upload_image span,
  5915 +#profile-wall li.profile-activity-item.upload_image span img,
  5916 +#profile-wall li.profile-activity-item.upload_image span a {
  5917 + width: 98px;
  5918 + height: 86px;
  5919 + display: block;
  5920 + overflow: hidden;
  5921 + position: absolute;
  5922 +}
  5923 +
  5924 +#profile-wall li.profile-activity-item.upload_image span {
  5925 + position: relative;
  5926 + float: left;
  5927 + margin: 5px 5px 5px 0;
  5928 +}
  5929 +
  5930 +#profile-wall li.profile-activity-item.upload_image span a {
  5931 + background: transparent url(/images/gallery-image-activity-border.png) center center no-repeat;
  5932 + text-indent: -5000em;
  5933 +}
  5934 +
  5935 +#profile-wall li.profile-activity-item.upload_image .article-comment span,
  5936 +#profile-wall li.profile-activity-item.upload_image .profile-wall-actions span {
  5937 + display: inline;
  5938 + position: static;
  5939 + margin: 0;
  5940 + float: none;
  5941 + width: auto;
  5942 + height: auto;
  5943 +}
  5944 +
  5945 +#profile-wall li.profile-activity-item ul.profile-wall-activities-comments {
  5946 + margin-top: 0;
  5947 +}
  5948 +
  5949 +#profile-wall li.profile-activity-item.upload_image .profile-activity-text {
  5950 + padding-left: 50px;
  5951 +}
  5952 +
  5953 +#profile-wall li.profile-activity-item.join_community .profile-activity-text a img,
  5954 +#profile-wall li.profile-activity-item.new_friendship .profile-activity-text a img {
  5955 + margin: 5px 5px 0 0;
  5956 + padding: 1px;
  5957 + border: 1px solid #ccc;
  5958 +}
  5959 +
  5960 +#profile-wall li.profile-activity-item.create_article {
  5961 + position: relative;
  5962 +}
  5963 +
  5964 +.profile-activity-icon {
  5965 + width: 16px;
  5966 + height: 16px;
  5967 + display: inline-block;
  5968 + position: absolute;
  5969 + top: 5px;
  5970 + right: 5px;
  5971 +}
  5972 +
5914 #profile-activity .profile-wall-scrap-replies li, 5973 #profile-activity .profile-wall-scrap-replies li,
5915 #profile-network .profile-wall-scrap-replies li, 5974 #profile-network .profile-wall-scrap-replies li,
5916 #profile-wall .profile-wall-scrap-replies li { 5975 #profile-wall .profile-wall-scrap-replies li {
test/unit/article_test.rb
@@ -1600,4 +1600,9 @@ assert_equal &#39;bla&#39;, profile.articles.map(&amp;:comments_count) @@ -1600,4 +1600,9 @@ assert_equal &#39;bla&#39;, profile.articles.map(&amp;:comments_count)
1600 a = fast_create(Article, :body => '<p>Foo</p><p>Bar</p>') 1600 a = fast_create(Article, :body => '<p>Foo</p><p>Bar</p>')
1601 assert_equal '', a.first_image 1601 assert_equal '', a.first_image
1602 end 1602 end
  1603 +
  1604 + should 'store first image in tracked action' do
  1605 + a = TinyMceArticle.create! :name => 'Tracked Article', :body => '<p>Foo<img src="foo.png" />Bar</p>', :profile_id => profile.id
  1606 + assert_equal 'foo.png', ActionTracker::Record.last.get_first_image
  1607 + end
1603 end 1608 end
test/unit/event_test.rb
@@ -274,4 +274,7 @@ class EventTest &lt; ActiveSupport::TestCase @@ -274,4 +274,7 @@ class EventTest &lt; ActiveSupport::TestCase
274 assert Event.new.tiny_mce? 274 assert Event.new.tiny_mce?
275 end 275 end
276 276
  277 + should 'be notifiable' do
  278 + assert Event.new.notifiable?
  279 + end
277 end 280 end
test/unit/forum_test.rb
@@ -110,4 +110,17 @@ class ForumTest &lt; ActiveSupport::TestCase @@ -110,4 +110,17 @@ class ForumTest &lt; ActiveSupport::TestCase
110 assert !folder.accept_uploads? 110 assert !folder.accept_uploads?
111 end 111 end
112 112
  113 + should 'be notifiable' do
  114 + assert Forum.new.notifiable?
  115 + end
  116 +
  117 + should 'get first paragraph' do
  118 + f = fast_create(Forum, :body => '<p>First</p><p>Second</p>')
  119 + assert_equal '<p>First</p>', f.first_paragraph
  120 + end
  121 +
  122 + should 'not get first paragraph' do
  123 + f = fast_create(Forum, :body => 'Nothing to do here')
  124 + assert_equal '', f.first_paragraph
  125 + end
113 end 126 end
test/unit/uploaded_file_test.rb
@@ -330,4 +330,11 @@ class UploadedFileTest &lt; ActiveSupport::TestCase @@ -330,4 +330,11 @@ class UploadedFileTest &lt; ActiveSupport::TestCase
330 assert_equal 'hello_world.php.txt', file.filename 330 assert_equal 'hello_world.php.txt', file.filename
331 end 331 end
332 332
  333 + should 'use the gallery as the parent for action tracker' do
  334 + p = fast_create(Gallery, :profile_id => @profile.id)
  335 + f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile)
  336 + ta = ActionTracker::Record.last(:conditions => { :verb => "upload_image" })
  337 + assert_equal f.parent, ta.target
  338 + end
  339 +
333 end 340 end