From c1854b8b518bde82b80429636f73496a537c3ad5 Mon Sep 17 00:00:00 2001 From: hukl Date: Sun, 1 Feb 2009 21:32:44 +0100 Subject: added first careful steps for aggregation --- app/helpers/content_helper.rb | 23 +++++++++++++++++++++- app/models/page.rb | 35 ++++++++++++++++++++++++++++++++++ app/views/content/_article.html.erb | 6 ++++++ app/views/content/render_page.html.erb | 2 +- 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 app/views/content/_article.html.erb diff --git a/app/helpers/content_helper.rb b/app/helpers/content_helper.rb index 0e1df66..046a2db 100644 --- a/app/helpers/content_helper.rb +++ b/app/helpers/content_helper.rb @@ -1,8 +1,29 @@ module ContentHelper - # def date_for_page page page.published_at.to_s(:db) rescue page.created_at.to_s(:db) end + def aggregate? content + options = {} + + if content =~ /]*)>/ + tag = $~.to_s + matched_data = $1.scan(/\w+\=\"[a-zA-Z\s\/_\d]*\"/) + + matched_data.each do |data| + splitted_data = data.split("=") + options[splitted_data[0].to_sym] = splitted_data[1].gsub(/\"/, "") + end + end + + content.sub(tag, render_collection(options)) + end + + def render_collection options + render( + :partial => 'content/article', + :collection => Page.aggregate(options) + ) + end end diff --git a/app/models/page.rb b/app/models/page.rb index 0fcb4a8..3d02e9f 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -4,4 +4,39 @@ class Page < ActiveRecord::Base acts_as_list :column => :revision, :scope => :node_id + + # + def self.aggregate options + + defaults = { + :flags => "", + :path => "", + :limit => 20, + :order_by => "id", + :order_direction => "ASC" + } + + options = defaults.merge options + + pages = Page.all( + :limit => options[:limit], + :order => "#{options[:order_by]} #{options[:order_direction]}" + ) + end end + + +named_scope :flagged_as, lambda { |flags| + conditions = {} + flags.each do |flag| + conditions[flag] = true + end + + { :conditions => conditions } +} \ No newline at end of file diff --git a/app/views/content/_article.html.erb b/app/views/content/_article.html.erb new file mode 100644 index 0000000..1e06787 --- /dev/null +++ b/app/views/content/_article.html.erb @@ -0,0 +1,6 @@ +
+
+
+

<%= article.title %>

+

<%= date_for_page article %>, gregoa

+

<%= article.abstract %>

\ No newline at end of file diff --git a/app/views/content/render_page.html.erb b/app/views/content/render_page.html.erb index 311d61d..b70f90e 100644 --- a/app/views/content/render_page.html.erb +++ b/app/views/content/render_page.html.erb @@ -13,5 +13,5 @@

<%= date_for_page @page %>, gregoa


<%= @page.abstract %>

- <%= @page.body %> + <%= aggregate?(@page.body) %> \ No newline at end of file -- cgit v1.3