[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