From ce9645d0092d42c7bf8781378181ffbd4ff3d088 Mon Sep 17 00:00:00 2001 From: hukl Date: Fri, 6 Feb 2009 21:48:41 +0100 Subject: added head id to node model which points to the head of the nodes pages collection. modified tests, importer etc renamed flags to tags --- app/models/node.rb | 5 +++-- app/models/page.rb | 4 ++-- db/migrate/20090206201554_add_head_id_to_node.rb | 9 +++++++++ doc/README_FOR_APP | 2 +- lib/update_importer.rb | 10 +++++++--- test/functional/content_controller_test.rb | 4 +++- test/unit/node_test.rb | 3 +++ 7 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 db/migrate/20090206201554_add_head_id_to_node.rb 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 @@ class Node < ActiveRecord::Base acts_as_nested_set - has_many :pages, :order => "revision ASC" + has_many :pages, :order => "revision ASC" + belongs_to :head, :class_name => "Page", :foreign_key => :head_id # Class methods @@ -21,7 +22,7 @@ class Node < ActiveRecord::Base if node case revision when -1 - return node.pages.last + return node.head else return node.pages.find_by_revision revision 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 def self.aggregate options defaults = { - :flags => "", + :tags => "", :limit => 20, :order_by => "id", :order_direction => "ASC" @@ -23,7 +23,7 @@ class Page < ActiveRecord::Base options = defaults.merge options pages = Page.find_tagged_with( - options[:flags].gsub(/\s/, ", "), + options[:tags].gsub(/\s/, ", "), :match_all => true, :order => "#{options[:order_by]} #{options[:order_direction]}") 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 @@ +class AddHeadIdToNode < ActiveRecord::Migration + def self.up + add_column :nodes, :head_id, :integer + end + + def self.down + remove_column :nodes, :head_id + end +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 into the body of another page. >> " - puts flags.attributes['calendar'].inspect + page.save! + end + + if node.head.nil? && page + puts page.title + node.head = page + node.save! end end 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 def test_rendering_a_page assert Node.valid? assert_not_nil first_child = Node.find_by_slug("first_child") - first_child.pages.create :title => "First Child" + page = first_child.pages.create :title => "First Child" + first_child.head = page + first_child.save! get :render_page, :language => 'de', :page_path => ["first_child"] 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 foo.pages.create :title => "Version 2" foo.pages.create :title => "Version 3" + foo.head = foo.pages.last + foo.save! + page = Node.find_page("updates/2008/foo") assert_equal page, foo.pages.find_by_revision(3) end -- cgit v1.3