From 0f3a35785e9d51a1da1a9ab41d9a8136c73fa88f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20de=20Villamil?= Date: Sat, 10 Aug 2013 22:01:17 +0200 Subject: [PATCH] Adding a "most popular posts" sidebar plugin that will use the Article.bestof method. This because I'm going to remove the Most Popular articles widget from the dashboard, as it's not really useful to manage a blog on a daily basis. --- lib/popular_sidebar/Rakefile | 22 +++++++++++++++++++ .../views/popular_sidebar/_content.html.erb | 11 ++++++++++ lib/popular_sidebar/init.rb | 2 ++ lib/popular_sidebar/lib/popular_sidebar.rb | 11 ++++++++++ .../test/popular_sidebar_test.rb | 8 +++++++ 5 files changed, 54 insertions(+) create mode 100644 lib/popular_sidebar/Rakefile create mode 100644 lib/popular_sidebar/app/views/popular_sidebar/_content.html.erb create mode 100644 lib/popular_sidebar/init.rb create mode 100644 lib/popular_sidebar/lib/popular_sidebar.rb create mode 100644 lib/popular_sidebar/test/popular_sidebar_test.rb diff --git a/lib/popular_sidebar/Rakefile b/lib/popular_sidebar/Rakefile new file mode 100644 index 0000000000..eb2691ebf3 --- /dev/null +++ b/lib/popular_sidebar/Rakefile @@ -0,0 +1,22 @@ +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +desc 'Default: run unit tests.' +task :default => :test + +desc 'Test the popular_sidebar plugin.' +Rake::TestTask.new(:test) do |t| + t.libs << 'lib' + t.pattern = 'test/**/*_test.rb' + t.verbose = true +end + +desc 'Generate documentation for the popular_sidebar plugin.' +Rake::RDocTask.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'ArchivesSidebar' + rdoc.options << '--line-numbers' << '--inline-source' + rdoc.rdoc_files.include('README') + rdoc.rdoc_files.include('lib/**/*.rb') +end diff --git a/lib/popular_sidebar/app/views/popular_sidebar/_content.html.erb b/lib/popular_sidebar/app/views/popular_sidebar/_content.html.erb new file mode 100644 index 0000000000..561bf1bf7d --- /dev/null +++ b/lib/popular_sidebar/app/views/popular_sidebar/_content.html.erb @@ -0,0 +1,11 @@ + + diff --git a/lib/popular_sidebar/init.rb b/lib/popular_sidebar/init.rb new file mode 100644 index 0000000000..1fe936d491 --- /dev/null +++ b/lib/popular_sidebar/init.rb @@ -0,0 +1,2 @@ +require 'sidebar' +require 'popular_sidebar' diff --git a/lib/popular_sidebar/lib/popular_sidebar.rb b/lib/popular_sidebar/lib/popular_sidebar.rb new file mode 100644 index 0000000000..539f5bf698 --- /dev/null +++ b/lib/popular_sidebar/lib/popular_sidebar.rb @@ -0,0 +1,11 @@ +class PopularSidebar < Sidebar + description 'Displays the most popular posts' + setting :title, 'Most popular' + setting :count, 5, :label => 'Number articles' + + attr_accessor :popular + + def parse_request(contents, params) + @popular = Article.bestof.limit(5) + end +end diff --git a/lib/popular_sidebar/test/popular_sidebar_test.rb b/lib/popular_sidebar/test/popular_sidebar_test.rb new file mode 100644 index 0000000000..813a4d3744 --- /dev/null +++ b/lib/popular_sidebar/test/popular_sidebar_test.rb @@ -0,0 +1,8 @@ +require 'test/unit' +require File.dirname(__FILE__) + '/../../../../test/test_helper' + +class PopularSidebarTest < Test::Unit::TestCase + def test_popular_is_available + assert Sidebar.available_sidebars.include?(PopularSidebar) + end +end