summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhukl <hukl@eight.local>2009-02-06 21:48:41 +0100
committerhukl <hukl@eight.local>2009-02-07 12:25:31 +0100
commitce9645d0092d42c7bf8781378181ffbd4ff3d088 (patch)
treee569a73ac2db2b36b2e90835260c46bcf0d479fa
parent79002c688d4fe6bf058459af84986a0d70dde758 (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.rb5
-rw-r--r--app/models/page.rb4
-rw-r--r--db/migrate/20090206201554_add_head_id_to_node.rb9
-rw-r--r--doc/README_FOR_APP2
-rw-r--r--lib/update_importer.rb10
-rw-r--r--test/functional/content_controller_test.rb4
-rw-r--r--test/unit/node_test.rb3
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 @@
1class Node < ActiveRecord::Base 1class 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 @@
1class 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
9end
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
69into the body of another page. 69into 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