[Git][noosfero/noosfero][master] 3 commits: Prioritize posts from a blog post in the newsletter

Gabriel Silva gitlab at mg.gitlab.com
Thu May 24 12:07:30 BRT 2018


Gabriel Silva pushed to branch master at Noosfero / noosfero


Commits:
8ae8c16a by mendesiasmin at 2018-05-17T13:08:11Z
Prioritize posts from a blog post in the newsletter

- - - - -
8db4b25e by mendesiasmin at 2018-05-21T13:45:38Z
Reorder posts based on order metadata

- - - - -
b1ee902c by Gabriel Silva at 2018-05-24T15:07:18Z
Merge branch 'featured-news-newsletter' into 'master'

Prioritize highlighted posts from a newsletter

See merge request noosfero/noosfero!1494
- - - - -


2 changed files:

- plugins/newsletter/lib/newsletter_plugin/newsletter.rb
- plugins/newsletter/test/unit/newsletter_plugin_newsletter_test.rb


Changes:

=====================================
plugins/newsletter/lib/newsletter_plugin/newsletter.rb
=====================================
--- a/plugins/newsletter/lib/newsletter_plugin/newsletter.rb
+++ b/plugins/newsletter/lib/newsletter_plugin/newsletter.rb
@@ -81,9 +81,18 @@ class NewsletterPlugin::Newsletter < ApplicationRecord
   def posts(data = {})
     limit = self.posts_per_blog.zero? ? nil : self.posts_per_blog
     posts = if self.last_send_at.nil?
-      self.blogs.flat_map{ |blog| blog.posts.limit limit }
+      self.blogs.flat_map do |blog|
+        blog.posts
+          .reorder("articles.metadata->'order' NULLS FIRST, published_at DESC")
+          .limit limit
+      end
     else
-      self.blogs.flat_map{ |blog| blog.posts.where("published_at >= :last_send_at", {last_send_at: self.last_send_at}).limit limit }
+      self.blogs.flat_map do |blog|
+        blog.posts
+          .where("published_at >= :last_send_at", {last_send_at: self.last_send_at})
+          .reorder("articles.metadata->'order' NULLS FIRST, published_at DESC")
+          .limit limit
+      end
     end
     data[:post_ids].nil? ? posts : posts.select{|post| data[:post_ids].include?(post.id.to_s)}
   end


=====================================
plugins/newsletter/test/unit/newsletter_plugin_newsletter_test.rb
=====================================
--- a/plugins/newsletter/test/unit/newsletter_plugin_newsletter_test.rb
+++ b/plugins/newsletter/test/unit/newsletter_plugin_newsletter_test.rb
@@ -344,6 +344,36 @@ EOS
     assert_includes newsletter_posts, post2
   end
 
+  should 'reorder highlighted posts of a blog by order metadata' do
+    environment = fast_create Environment
+    community = fast_create(Community, :environment_id => environment.id)
+    blog = fast_create(Blog, :profile_id => community.id)
+
+    post1 = fast_create(TextArticle, :parent_id => blog.id, :name => 'the last news 1',
+                :published_at => DateTime.parse("2015-01-09"), :highlighted => false)
+    post2 = fast_create(TextArticle, :parent_id => blog.id, :name => 'the last news 2',
+                :published_at => DateTime.parse("2015-01-02"), :highlighted => true)
+
+    post1.metadata['order'] = 1
+    post1.save!
+
+    post2.metadata['order'] = 0
+    post2.save!
+
+    Date.stubs(:today).returns(DateTime.parse("2015-01-10").to_date)
+
+    newsletter = NewsletterPlugin::Newsletter.create!(
+      :environment => environment,
+      :blog_ids => [blog.id],
+      :person => fast_create(Person))
+    newsletter.stubs(:last_send_at).returns(DateTime.parse("2015-01-01"))
+
+    newsletter_posts = newsletter.posts
+    assert_includes newsletter_posts, post1
+    assert_includes newsletter_posts, post2
+    assert newsletter_posts.first == post2
+  end
+
   should 'sanitize tags <p> from news lead' do
     environment = fast_create Environment
     community = fast_create(Community, :environment_id => environment.id)



View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/2edf7fb251ed0b52562c82bc3f50727ad2297c8d...b1ee902c201ebbf4e775504949b93e484f275540

-- 
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/2edf7fb251ed0b52562c82bc3f50727ad2297c8d...b1ee902c201ebbf4e775504949b93e484f275540
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20180524/329b6402/attachment-0001.html>


More information about the Noosfero-dev mailing list