diff options
| author | hukl <hukl@eight.local> | 2009-02-06 21:48:41 +0100 |
|---|---|---|
| committer | hukl <hukl@eight.local> | 2009-02-07 12:25:31 +0100 |
| commit | ce9645d0092d42c7bf8781378181ffbd4ff3d088 (patch) | |
| tree | e569a73ac2db2b36b2e90835260c46bcf0d479fa | |
| parent | 79002c688d4fe6bf058459af84986a0d70dde758 (diff) | |
added head id to node model which points to the
head of the nodes pages collection. modified
tests, importer etc
renamed flags to tags
| -rw-r--r-- | app/models/node.rb | 5 | ||||
| -rw-r--r-- | app/models/page.rb | 4 | ||||
| -rw-r--r-- | db/migrate/20090206201554_add_head_id_to_node.rb | 9 | ||||
| -rw-r--r-- | doc/README_FOR_APP | 2 | ||||
| -rw-r--r-- | lib/update_importer.rb | 10 | ||||
| -rw-r--r-- | test/functional/content_controller_test.rb | 4 | ||||
| -rw-r--r-- | test/unit/node_test.rb | 3 |
7 files changed, 28 insertions, 9 deletions
diff --git a/app/models/node.rb b/app/models/node.rb index 0aa28b9..a1d8af0 100644 --- a/app/models/node.rb +++ b/app/models/node.rb | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | class Node < ActiveRecord::Base | 1 | class Node < ActiveRecord::Base |
| 2 | acts_as_nested_set | 2 | acts_as_nested_set |
| 3 | 3 | ||
| 4 | has_many :pages, :order => "revision ASC" | 4 | has_many :pages, :order => "revision ASC" |
| 5 | belongs_to :head, :class_name => "Page", :foreign_key => :head_id | ||
| 5 | 6 | ||
| 6 | # Class methods | 7 | # Class methods |
| 7 | 8 | ||
| @@ -21,7 +22,7 @@ class Node < ActiveRecord::Base | |||
| 21 | if node | 22 | if node |
| 22 | case revision | 23 | case revision |
| 23 | when -1 | 24 | when -1 |
| 24 | return node.pages.last | 25 | return node.head |
| 25 | else | 26 | else |
| 26 | return node.pages.find_by_revision revision | 27 | return node.pages.find_by_revision revision |
| 27 | end | 28 | end |
diff --git a/app/models/page.rb b/app/models/page.rb index d33e11b..4fcee8c 100644 --- a/app/models/page.rb +++ b/app/models/page.rb | |||
| @@ -14,7 +14,7 @@ class Page < ActiveRecord::Base | |||
| 14 | def self.aggregate options | 14 | def self.aggregate options |
| 15 | 15 | ||
| 16 | defaults = { | 16 | defaults = { |
| 17 | :flags => "", | 17 | :tags => "", |
| 18 | :limit => 20, | 18 | :limit => 20, |
| 19 | :order_by => "id", | 19 | :order_by => "id", |
| 20 | :order_direction => "ASC" | 20 | :order_direction => "ASC" |
| @@ -23,7 +23,7 @@ class Page < ActiveRecord::Base | |||
| 23 | options = defaults.merge options | 23 | options = defaults.merge options |
| 24 | 24 | ||
| 25 | pages = Page.find_tagged_with( | 25 | pages = Page.find_tagged_with( |
| 26 | options[:flags].gsub(/\s/, ", "), | 26 | options[:tags].gsub(/\s/, ", "), |
| 27 | :match_all => true, | 27 | :match_all => true, |
| 28 | :order => "#{options[:order_by]} #{options[:order_direction]}") | 28 | :order => "#{options[:order_by]} #{options[:order_direction]}") |
| 29 | end | 29 | end |
diff --git a/db/migrate/20090206201554_add_head_id_to_node.rb b/db/migrate/20090206201554_add_head_id_to_node.rb new file mode 100644 index 0000000..7f4af4f --- /dev/null +++ b/db/migrate/20090206201554_add_head_id_to_node.rb | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | class AddHeadIdToNode < ActiveRecord::Migration | ||
| 2 | def self.up | ||
| 3 | add_column :nodes, :head_id, :integer | ||
| 4 | end | ||
| 5 | |||
| 6 | def self.down | ||
| 7 | remove_column :nodes, :head_id | ||
| 8 | end | ||
| 9 | end | ||
diff --git a/doc/README_FOR_APP b/doc/README_FOR_APP index b1d2ab4..bd9abe7 100644 --- a/doc/README_FOR_APP +++ b/doc/README_FOR_APP | |||
| @@ -69,7 +69,7 @@ Keywords and other meta data can be used to aggregate any ammount of pages | |||
| 69 | into the body of another page. | 69 | into the body of another page. |
| 70 | 70 | ||
| 71 | <aggregate | 71 | <aggregate |
| 72 | flags="updates pressemitteilungen" | 72 | tags="update pressemitteilung" |
| 73 | limit="20" | 73 | limit="20" |
| 74 | order_by="published_at" | 74 | order_by="published_at" |
| 75 | order_direction="DESC" | 75 | order_direction="DESC" |
diff --git a/lib/update_importer.rb b/lib/update_importer.rb index ec9033a..f09564e 100644 --- a/lib/update_importer.rb +++ b/lib/update_importer.rb | |||
| @@ -90,9 +90,13 @@ class UpdateImporter | |||
| 90 | if (flags = xhtml.elements['flags']) && page | 90 | if (flags = xhtml.elements['flags']) && page |
| 91 | page.tag_list.add("event") if flags.attributes['calendar'] | 91 | page.tag_list.add("event") if flags.attributes['calendar'] |
| 92 | page.tag_list.add("pressemitteilung") if flags.attributes['pm'] | 92 | page.tag_list.add("pressemitteilung") if flags.attributes['pm'] |
| 93 | page.save | 93 | page.save! |
| 94 | print "#{page.title} >>> " | 94 | end |
| 95 | puts flags.attributes['calendar'].inspect | 95 | |
| 96 | if node.head.nil? && page | ||
| 97 | puts page.title | ||
| 98 | node.head = page | ||
| 99 | node.save! | ||
| 96 | end | 100 | end |
| 97 | end | 101 | end |
| 98 | 102 | ||
diff --git a/test/functional/content_controller_test.rb b/test/functional/content_controller_test.rb index baf46b9..93cbbb4 100644 --- a/test/functional/content_controller_test.rb +++ b/test/functional/content_controller_test.rb | |||
| @@ -15,7 +15,9 @@ class ContentControllerTest < ActionController::TestCase | |||
| 15 | def test_rendering_a_page | 15 | def test_rendering_a_page |
| 16 | assert Node.valid? | 16 | assert Node.valid? |
| 17 | assert_not_nil first_child = Node.find_by_slug("first_child") | 17 | assert_not_nil first_child = Node.find_by_slug("first_child") |
| 18 | first_child.pages.create :title => "First Child" | 18 | page = first_child.pages.create :title => "First Child" |
| 19 | first_child.head = page | ||
| 20 | first_child.save! | ||
| 19 | 21 | ||
| 20 | get :render_page, :language => 'de', :page_path => ["first_child"] | 22 | get :render_page, :language => 'de', :page_path => ["first_child"] |
| 21 | assert_response :success | 23 | assert_response :success |
diff --git a/test/unit/node_test.rb b/test/unit/node_test.rb index 5325daa..a0fee7f 100644 --- a/test/unit/node_test.rb +++ b/test/unit/node_test.rb | |||
| @@ -36,6 +36,9 @@ class NodeTest < ActiveSupport::TestCase | |||
| 36 | foo.pages.create :title => "Version 2" | 36 | foo.pages.create :title => "Version 2" |
| 37 | foo.pages.create :title => "Version 3" | 37 | foo.pages.create :title => "Version 3" |
| 38 | 38 | ||
| 39 | foo.head = foo.pages.last | ||
| 40 | foo.save! | ||
| 41 | |||
| 39 | page = Node.find_page("updates/2008/foo") | 42 | page = Node.find_page("updates/2008/foo") |
| 40 | assert_equal page, foo.pages.find_by_revision(3) | 43 | assert_equal page, foo.pages.find_by_revision(3) |
| 41 | end | 44 | end |
