radiant 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of radiant might be problematic. Click here for more details.
- data/CHANGELOG +61 -7
- data/CONTRIBUTORS +15 -0
- data/app/controllers/admin/export_controller.rb +1 -1
- data/app/controllers/admin/page_controller.rb +1 -0
- data/app/controllers/admin/user_controller.rb +2 -1
- data/app/controllers/application.rb +7 -8
- data/app/helpers/admin/node_helper.rb +84 -0
- data/app/helpers/admin/page_helper.rb +1 -19
- data/app/helpers/application_helper.rb +15 -9
- data/app/models/file_not_found_page.rb +2 -2
- data/app/models/page.rb +22 -18
- data/app/models/page_context.rb +9 -0
- data/app/models/radiant/config.rb +4 -2
- data/app/models/response_cache.rb +18 -12
- data/app/models/standard_tags.rb +111 -50
- data/app/views/admin/extension/index.rhtml +2 -2
- data/app/views/admin/layout/edit.rhtml +2 -2
- data/app/views/admin/layout/remove.rhtml +2 -2
- data/app/views/admin/page/_node.rhtml +4 -26
- data/app/views/admin/page/_part.rhtml +9 -14
- data/app/views/admin/page/edit.rhtml +38 -121
- data/app/views/admin/page/index.rhtml +2 -6
- data/app/views/admin/page/remove.rhtml +2 -2
- data/app/views/admin/snippet/edit.rhtml +3 -3
- data/app/views/admin/snippet/index.rhtml +2 -2
- data/app/views/admin/snippet/remove.rhtml +2 -2
- data/app/views/admin/user/edit.rhtml +4 -4
- data/app/views/admin/user/preferences.rhtml +2 -2
- data/app/views/admin/welcome/login.rhtml +1 -1
- data/config/environment.rb +79 -78
- data/db/schema.rb +2 -0
- data/lib/local_time.rb +12 -0
- data/lib/plugins/extension_patches/lib/fixture_loading_extension.rb +1 -1
- data/lib/plugins/extension_patches/lib/mailer_view_paths_extension.rb +3 -3
- data/lib/radiant.rb +1 -1
- data/lib/radiant/extension.rb +9 -3
- data/lib/radiant/extension_loader.rb +2 -2
- data/lib/tasks/extensions.rake +23 -8
- data/public/javascripts/admin.js +89 -0
- data/public/javascripts/controls.js +486 -354
- data/public/javascripts/dragdrop.js +90 -58
- data/public/javascripts/effects.js +398 -364
- data/public/javascripts/pngfix.js +37 -37
- data/public/javascripts/prototype.js +2764 -1095
- data/public/javascripts/ruledtable.js +10 -25
- data/public/javascripts/sitemap.js +74 -112
- data/public/javascripts/string.js +1 -7
- data/public/javascripts/tabcontrol.js +71 -86
- data/public/javascripts/tag_reference_search.js +19 -26
- data/public/stylesheets/admin/main.css +11 -5
- data/test/fixtures/extensions/01_basic/lib/new_module.rb +2 -0
- data/test/fixtures/page_parts.yml +16 -1
- data/test/fixtures/pages.yml +47 -84
- data/test/functional/extension_initialization_test.rb +11 -0
- data/test/helpers/login_test_helper.rb +12 -1
- data/test/helpers/page_test_helper.rb +6 -0
- data/test/helpers/render_test_helper.rb +11 -8
- data/test/test_helper.rb +1 -12
- data/test/unit/file_not_found_page_test.rb +5 -1
- data/test/unit/local_time_test.rb +45 -0
- data/test/unit/page_context_test.rb +32 -1
- data/test/unit/page_test.rb +45 -11
- data/test/unit/radiant/config_test.rb +1 -1
- data/test/unit/response_cache_test.rb +27 -2
- data/test/unit/standard_tags_test.rb +60 -15
- data/vendor/extensions/archive/README +29 -0
- data/vendor/extensions/archive/Rakefile +25 -0
- data/{app → vendor/extensions/archive/app}/models/archive_day_index_page.rb +0 -0
- data/{app → vendor/extensions/archive/app}/models/archive_finder.rb +8 -6
- data/{app → vendor/extensions/archive/app}/models/archive_month_index_page.rb +0 -0
- data/{app → vendor/extensions/archive/app}/models/archive_page.rb +0 -0
- data/{app → vendor/extensions/archive/app}/models/archive_year_index_page.rb +0 -0
- data/vendor/extensions/archive/archive_extension.rb +19 -0
- data/{lib → vendor/extensions/archive/lib}/archive_index_tags_and_methods.rb +0 -0
- data/vendor/extensions/archive/lib/tasks/archive_extension_tasks.rake +28 -0
- data/vendor/extensions/archive/test/fixtures/pages.yml +397 -0
- data/vendor/extensions/archive/test/functional/archive_extension_test.rb +16 -0
- data/{test → vendor/extensions/archive/test}/helpers/archive_index_test_helper.rb +0 -0
- data/vendor/extensions/archive/test/test_helper.rb +19 -0
- data/{test → vendor/extensions/archive/test}/unit/archive_day_index_page_test.rb +0 -0
- data/{test → vendor/extensions/archive/test}/unit/archive_month_index_page_test.rb +0 -0
- data/{test → vendor/extensions/archive/test}/unit/archive_page_test.rb +7 -1
- data/{test → vendor/extensions/archive/test}/unit/archive_year_index_page_test.rb +0 -0
- data/vendor/rails/actionmailer/CHANGELOG +10 -0
- data/vendor/rails/actionmailer/Rakefile +1 -1
- data/vendor/rails/actionmailer/lib/action_mailer/version.rb +1 -1
- data/vendor/rails/actionpack/CHANGELOG +51 -2
- data/vendor/rails/actionpack/Rakefile +1 -1
- data/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +2 -2
- data/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +3 -0
- data/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +1 -0
- data/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +2 -0
- data/vendor/rails/actionpack/lib/action_controller/base.rb +7 -1
- data/vendor/rails/actionpack/lib/action_controller/caching.rb +39 -38
- data/vendor/rails/actionpack/lib/action_controller/cgi_ext/pstore_performance_fix.rb +30 -0
- data/vendor/rails/actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +13 -4
- data/vendor/rails/actionpack/lib/action_controller/cookies.rb +5 -3
- data/vendor/rails/actionpack/lib/action_controller/filters.rb +176 -77
- data/vendor/rails/actionpack/lib/action_controller/integration.rb +31 -21
- data/vendor/rails/actionpack/lib/action_controller/macros/in_place_editing.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/pagination.rb +7 -1
- data/vendor/rails/actionpack/lib/action_controller/resources.rb +117 -32
- data/vendor/rails/actionpack/lib/action_controller/routing.rb +56 -23
- data/vendor/rails/actionpack/lib/action_controller/test_process.rb +5 -2
- data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +4 -1
- data/vendor/rails/actionpack/lib/action_controller/verification.rb +1 -0
- data/vendor/rails/actionpack/lib/action_pack/version.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/base.rb +25 -19
- data/vendor/rails/actionpack/lib/action_view/compiled_templates.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +18 -18
- data/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +10 -0
- data/vendor/rails/actionpack/lib/action_view/helpers/deprecated_helper.rb +3 -0
- data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +33 -17
- data/vendor/rails/actionpack/test/activerecord/pagination_test.rb +9 -0
- data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +13 -0
- data/vendor/rails/actionpack/test/controller/addresses_render_test.rb +4 -1
- data/vendor/rails/actionpack/test/controller/base_test.rb +1 -1
- data/vendor/rails/actionpack/test/controller/caching_test.rb +3 -2
- data/vendor/rails/actionpack/test/controller/cookie_test.rb +11 -0
- data/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +18 -0
- data/vendor/rails/actionpack/test/controller/filter_params_test.rb +1 -0
- data/vendor/rails/actionpack/test/controller/filters_test.rb +149 -26
- data/vendor/rails/actionpack/test/controller/integration_test.rb +93 -8
- data/vendor/rails/actionpack/test/controller/resources_test.rb +215 -36
- data/vendor/rails/actionpack/test/controller/routing_test.rb +2 -2
- data/vendor/rails/actionpack/test/controller/test_test.rb +16 -0
- data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +66 -10
- data/vendor/rails/actionpack/test/controller/verification_test.rb +15 -0
- data/vendor/rails/actionpack/test/fixtures/test/hello_world.rxml +2 -1
- data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +5 -0
- data/vendor/rails/actionpack/test/template/compiled_templates_test.rb +29 -17
- data/vendor/rails/actionpack/test/template/javascript_helper_test.rb +4 -4
- data/vendor/rails/actionpack/test/template/number_helper_test.rb +1 -1
- data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +13 -13
- data/vendor/rails/actionwebservice/CHANGELOG +14 -0
- data/vendor/rails/actionwebservice/Rakefile +2 -2
- data/vendor/rails/actionwebservice/lib/action_web_service/version.rb +1 -1
- data/vendor/rails/activerecord/CHANGELOG +34 -0
- data/vendor/rails/activerecord/Rakefile +1 -1
- data/vendor/rails/activerecord/lib/active_record/acts/list.rb +14 -2
- data/vendor/rails/activerecord/lib/active_record/acts/tree.rb +7 -0
- data/vendor/rails/activerecord/lib/active_record/associations.rb +29 -14
- data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +5 -1
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +10 -0
- data/vendor/rails/activerecord/lib/active_record/base.rb +12 -3
- data/vendor/rails/activerecord/lib/active_record/calculations.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb +1 -0
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb +54 -38
- data/vendor/rails/activerecord/lib/active_record/deprecated_finders.rb +3 -3
- data/vendor/rails/activerecord/lib/active_record/fixtures.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/timestamp.rb +0 -9
- data/vendor/rails/activerecord/lib/active_record/version.rb +1 -1
- data/vendor/rails/activerecord/test/associations/eager_test.rb +13 -0
- data/vendor/rails/activerecord/test/associations/join_model_test.rb +10 -1
- data/vendor/rails/activerecord/test/associations_test.rb +36 -3
- data/vendor/rails/activerecord/test/base_test.rb +17 -4
- data/vendor/rails/activerecord/test/defaults_test.rb +15 -0
- data/vendor/rails/activerecord/test/fixtures/author.rb +1 -0
- data/vendor/rails/activerecord/test/fixtures/binaries.yml +437 -0
- data/vendor/rails/activerecord/test/fixtures/db_definitions/schema.rb +13 -0
- data/vendor/rails/activerecord/test/fixtures/developer.rb +10 -0
- data/vendor/rails/activerecord/test/fixtures_test.rb +9 -5
- data/vendor/rails/activerecord/test/migration_test.rb +9 -10
- data/vendor/rails/activerecord/test/mixin_test.rb +47 -0
- data/vendor/rails/activerecord/test/validations_test.rb +2 -2
- data/vendor/rails/activesupport/CHANGELOG +16 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +9 -3
- data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +48 -3
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +14 -0
- data/vendor/rails/activesupport/lib/active_support/dependencies.rb +3 -3
- data/vendor/rails/activesupport/lib/active_support/json/encoders/core.rb +5 -3
- data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +6 -6
- data/vendor/rails/activesupport/lib/active_support/version.rb +1 -1
- data/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +37 -0
- data/vendor/rails/activesupport/test/core_ext/module_test.rb +8 -0
- data/vendor/rails/activesupport/test/dependencies_test.rb +11 -0
- data/vendor/rails/activesupport/test/{json.rb → json_test.rb} +15 -5
- data/vendor/rails/railties/CHANGELOG +25 -1
- data/vendor/rails/railties/README +32 -3
- data/vendor/rails/railties/Rakefile +5 -5
- data/vendor/rails/railties/environments/boot.rb +12 -18
- data/vendor/rails/railties/environments/environment.rb +15 -15
- data/vendor/rails/railties/lib/dispatcher.rb +1 -2
- data/vendor/rails/railties/lib/initializer.rb +33 -9
- data/vendor/rails/railties/lib/rails/version.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold_resource/scaffold_resource_generator.rb +1 -0
- data/vendor/rails/railties/lib/railties_path.rb +1 -1
- data/vendor/rails/railties/lib/tasks/framework.rake +4 -4
- data/vendor/rails/railties/lib/tasks/routes.rake +17 -0
- data/vendor/rails/release.rb +2 -2
- metadata +1877 -1848
@@ -19,11 +19,42 @@ class PageContextTest < Test::Unit::TestCase
|
|
19
19
|
def @context.testing?() false end
|
20
20
|
assert_parse_output_match "undefined tag `missing'", '<r:missing />'
|
21
21
|
end
|
22
|
+
|
23
|
+
def test_request_is_passed_around
|
24
|
+
@context.define_tag "if_request" do |tag|
|
25
|
+
tag.expand if tag.locals.page.request
|
26
|
+
end
|
27
|
+
assert_parse_output_match /^$/, '<r:if_request>tada!</r:if_request>'
|
28
|
+
|
29
|
+
@page.request = ActionController::TestRequest.new
|
30
|
+
assert_parse_output_match "tada!", '<r:if_request>tada!</r:if_request>'
|
31
|
+
assert_parse_output_match "tada!", '<r:find url="/another/"><r:if_request>tada!</r:if_request></r:find>'
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_response_is_passed_around
|
35
|
+
@context.define_tag "if_response" do |tag|
|
36
|
+
tag.expand if tag.locals.page.response
|
37
|
+
end
|
38
|
+
assert_parse_output_match /^$/, '<r:if_response>tada!</r:if_response>'
|
22
39
|
|
40
|
+
@page.response = ActionController::TestResponse.new
|
41
|
+
assert_parse_output_match "tada!", '<r:if_response>tada!</r:if_response>'
|
42
|
+
assert_parse_output_match "tada!", '<r:find url="/another/"><r:if_response>tada!</r:if_response></r:find>'
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_exception_pops_stack
|
46
|
+
assert_equal '', @context.current_nesting
|
47
|
+
@context.define_tag("error") {|tag| raise "Broken!"}
|
48
|
+
def @context.testing?(); false; end
|
49
|
+
assert_parse_output_match /Broken\!/, "<r:error/>"
|
50
|
+
assert_equal '', @context.current_nesting
|
51
|
+
end
|
52
|
+
|
23
53
|
private
|
24
54
|
|
25
55
|
def assert_parse_output_match(regexp, input)
|
26
56
|
output = @parser.parse(input)
|
27
57
|
assert_match regexp, output
|
28
58
|
end
|
29
|
-
|
59
|
+
|
60
|
+
end
|
data/test/unit/page_test.rb
CHANGED
@@ -94,7 +94,19 @@ class PageTest < Test::Unit::TestCase
|
|
94
94
|
part = pages(:radius).part(:body)
|
95
95
|
assert_equal 'body', part.name
|
96
96
|
end
|
97
|
-
|
97
|
+
def test_part__when_page_is_unsaved
|
98
|
+
part = PagePart.new(:content => "test", :name => "test")
|
99
|
+
@page.parts << part
|
100
|
+
assert_equal part, @page.part('test')
|
101
|
+
assert_equal part, @page.part(:test)
|
102
|
+
end
|
103
|
+
def test_part__when_parts_are_unsaved
|
104
|
+
@page = pages(:radius)
|
105
|
+
@page.parts.build(:content => "test", :name => "test")
|
106
|
+
assert_equal "test", @page.part('test').content
|
107
|
+
assert_equal "test", @page.part(:test).content
|
108
|
+
end
|
109
|
+
|
98
110
|
def test_published_at
|
99
111
|
@page = create_test_page(:status_id => '1')
|
100
112
|
assert_nil @page.published_at
|
@@ -147,13 +159,9 @@ class PageTest < Test::Unit::TestCase
|
|
147
159
|
found = @page.find_by_url('/parent/child/grandchild/great-grandchild/')
|
148
160
|
assert_equal expected, found
|
149
161
|
end
|
150
|
-
def test_find_by_url_3
|
151
|
-
@page = pages(:homepage)
|
152
|
-
assert_equal pages(:article), @page.find_by_url('/archive/2000/05/01/article/')
|
153
|
-
end
|
154
162
|
def test_find_by_url__when_virtual
|
155
163
|
@page = pages(:homepage)
|
156
|
-
found = @page.find_by_url('/
|
164
|
+
found = @page.find_by_url('/assorted/virtual/')
|
157
165
|
assert_equal nil, found
|
158
166
|
end
|
159
167
|
def test_find_by_url__when_not_found_and_missing_page_defined
|
@@ -297,11 +305,6 @@ class PageTest < Test::Unit::TestCase
|
|
297
305
|
assert_equal "Hello world! Another test.", @page.render_part(:body)
|
298
306
|
end
|
299
307
|
|
300
|
-
def test_render_text
|
301
|
-
@page = pages(:homepage)
|
302
|
-
assert_equal "/", @page.render_text( "<r:slug />")
|
303
|
-
end
|
304
|
-
|
305
308
|
def test_display_name_class_method
|
306
309
|
assert_equal "Page", Page.display_name
|
307
310
|
|
@@ -412,4 +415,35 @@ class PageTest < Test::Unit::TestCase
|
|
412
415
|
end
|
413
416
|
end
|
414
417
|
|
418
|
+
def test_has_part
|
419
|
+
@page = pages(:homepage)
|
420
|
+
assert(@page.has_part?(:body))
|
421
|
+
assert(@page.has_part?('extended'))
|
422
|
+
assert(!@page.has_part?(:obviously_false_part_name))
|
423
|
+
end
|
424
|
+
def test_has_or_inherits_part
|
425
|
+
@page = pages(:child)
|
426
|
+
assert(!@page.has_part?(:sidebar))
|
427
|
+
assert(@page.has_or_inherits_part?(:sidebar))
|
428
|
+
assert(!@page.has_or_inherits_part?(:obviously_false_part_name))
|
429
|
+
|
430
|
+
@page = pages(:homepage)
|
431
|
+
assert(@page.has_part?(:sidebar))
|
432
|
+
assert(@page.has_or_inherits_part?(:sidebar))
|
433
|
+
assert(!@page.has_or_inherits_part?(:obviously_false_part_name))
|
434
|
+
end
|
435
|
+
def test_inherits_part
|
436
|
+
@page = pages(:child)
|
437
|
+
assert(!@page.has_part?(:sidebar))
|
438
|
+
assert(@page.inherits_part?(:sidebar))
|
439
|
+
|
440
|
+
@page = pages(:homepage)
|
441
|
+
assert(@page.has_part?(:sidebar))
|
442
|
+
assert(!@page.inherits_part?(:sidebar))
|
443
|
+
|
444
|
+
@page = pages(:radius)
|
445
|
+
assert(@page.has_part?(:extended))
|
446
|
+
assert(!@page.inherits_part?(:extended))
|
447
|
+
end
|
448
|
+
|
415
449
|
end
|
@@ -13,13 +13,15 @@ class ResponseCacheTest < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def setup
|
16
|
-
@dir = "#{RAILS_ROOT}/test/cache"
|
16
|
+
@dir = File.expand_path("#{RAILS_ROOT}/test/cache")
|
17
|
+
@baddir = File.expand_path("#{RAILS_ROOT}/test/badcache")
|
18
|
+
FileUtils.rm_rf @baddir
|
17
19
|
@old_perform_caching = ResponseCache.defaults[:perform_caching]
|
18
20
|
ResponseCache.defaults[:perform_caching] = true
|
19
21
|
@cache = ResponseCache.new(
|
20
22
|
:directory => @dir,
|
21
23
|
:perform_caching => true
|
22
|
-
)
|
24
|
+
)
|
23
25
|
@cache.clear
|
24
26
|
end
|
25
27
|
|
@@ -188,6 +190,29 @@ class ResponseCacheTest < Test::Unit::TestCase
|
|
188
190
|
File.open("#{@dir}/test_me.yml",'w') {|f| f.puts "--- \nheaders: \n Last-Modified: Tue, 27 Feb 2007 06:13:43 GMT\n"}
|
189
191
|
assert !@cache.response_cached?('/test_me')
|
190
192
|
end
|
193
|
+
|
194
|
+
def test_cache_cant_write_outside_dir
|
195
|
+
@cache.cache_response('../badcache/cache_cant_write_outside_dir', response('content'))
|
196
|
+
assert !File.exist?("#{RAILS_ROOT}/test/badcache/cache_cant_write_outside_dir.yml")
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_cache_cant_read_outside_dir
|
200
|
+
FileUtils.makedirs(@baddir)
|
201
|
+
@cache.cache_response('/test_me', response('content'))
|
202
|
+
File.rename "#{@dir}/test_me.yml","#{@baddir}/test_me.yml"
|
203
|
+
File.rename "#{@dir}/test_me.data","#{@baddir}/test_me.data"
|
204
|
+
assert !@cache.response_cached?('/../badcache/test_me')
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_cache_cant_expire_outside_dir
|
208
|
+
FileUtils.makedirs(@baddir)
|
209
|
+
@cache.cache_response('/test_me', response('content'))
|
210
|
+
File.rename "#{@dir}/test_me.yml","#{@baddir}/test_me.yml"
|
211
|
+
File.rename "#{@dir}/test_me.data","#{@baddir}/test_me.data"
|
212
|
+
@cache.expire_response('/../badcache/test_me')
|
213
|
+
assert File.exist?("#{@baddir}/test_me.yml")
|
214
|
+
assert File.exist?("#{@baddir}/test_me.data")
|
215
|
+
end
|
191
216
|
|
192
217
|
# Class Methods
|
193
218
|
|
@@ -66,27 +66,27 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
66
66
|
assert_render_error message, page_children_each_tags(%{order="asdf"})
|
67
67
|
end
|
68
68
|
def test_tag_children_each_does_not_list_virtual_pages
|
69
|
-
@page = pages(:
|
70
|
-
assert_renders '
|
71
|
-
assert_render_match /^(draft |)
|
69
|
+
@page = pages(:assorted)
|
70
|
+
assert_renders 'a b c d e f g h i j ', '<r:children:each><r:slug /> </r:children:each>'
|
71
|
+
assert_render_match /^(draft |)a b c d e f g h i j( draft|) $/, '<r:children:each status="all"><r:slug /> </r:children:each>'
|
72
72
|
end
|
73
73
|
|
74
74
|
def test_tag_children_each_header
|
75
|
-
@page = pages(:
|
76
|
-
assert_renders '[
|
75
|
+
@page = pages(:news)
|
76
|
+
assert_renders '[Jan/06] a-great-day-for-ruby [Feb/06] another-great-day-for-ruby later-that-day [Jan/07] next-year-in-ruby ', '<r:children:each><r:header>[<r:date format="%b/%y" />] </r:header><r:slug /> </r:children:each>'
|
77
77
|
end
|
78
78
|
def test_tag_children_each_header_with_name_attribute
|
79
|
-
@page = pages(:
|
80
|
-
assert_renders '[
|
79
|
+
@page = pages(:news)
|
80
|
+
assert_renders '[2006] (Jan) a-great-day-for-ruby (Feb) another-great-day-for-ruby later-that-day [2007] (Jan) next-year-in-ruby ', %{<r:children:each><r:header name="year">[<r:date format='%Y' />] </r:header><r:header name="month">(<r:date format="%b" />) </r:header><r:slug /> </r:children:each>}
|
81
81
|
end
|
82
82
|
def test_tag_children_each_header_with_restart_attribute
|
83
|
-
@page = pages(:
|
83
|
+
@page = pages(:news)
|
84
84
|
assert_renders(
|
85
|
-
'[
|
85
|
+
'[2006] (Jan) a-great-day-for-ruby (Feb) another-great-day-for-ruby later-that-day [2007] (Jan) next-year-in-ruby ',
|
86
86
|
%{<r:children:each><r:header name="year" restart="month">[<r:date format='%Y' />] </r:header><r:header name="month">(<r:date format="%b" />) </r:header><r:slug /> </r:children:each>}
|
87
87
|
)
|
88
88
|
assert_renders(
|
89
|
-
'[
|
89
|
+
'[2006] (Jan) <30> a-great-day-for-ruby (Feb) <05> another-great-day-for-ruby <06> later-that-day [2007] (Jan) <30> next-year-in-ruby ',
|
90
90
|
%{<r:children:each><r:header name="year" restart="month;day">[<r:date format='%Y' />] </r:header><r:header name="month" restart="day">(<r:date format="%b" />) </r:header><r:header name="day"><<r:date format='%d' />> </r:header><r:slug /> </r:children:each>}
|
91
91
|
)
|
92
92
|
end
|
@@ -141,7 +141,7 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
141
141
|
assert_renders '', '<r:content part="sidebar" inherit="false" />'
|
142
142
|
assert_renders 'Radius Test Page sidebar.', '<r:content part="sidebar" inherit="true" />'
|
143
143
|
assert_render_error %{`inherit' attribute of `content' tag must be set to either "true" or "false"}, '<r:content part="sidebar" inherit="weird value" />'
|
144
|
-
|
144
|
+
|
145
145
|
assert_renders '', '<r:content part="part_that_doesnt_exist" inherit="true" />'
|
146
146
|
end
|
147
147
|
def test_tag_content_with_inherit_and_contextual_attributes
|
@@ -151,6 +151,14 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
151
151
|
@page = pages(:inheritance_test_page_grandchild)
|
152
152
|
assert_renders 'Inheritance Test Page Grandchild inherited body.', '<r:content part="body" inherit="true" contextual="true" />'
|
153
153
|
end
|
154
|
+
def test_tag_content_with_inherit_attribute_grandparent
|
155
|
+
@page = pages(:child)
|
156
|
+
assert_renders '', '<r:content part="sidebar" />'
|
157
|
+
assert_renders 'Child sidebar.', '<r:content part="sidebar" inherit="true" />'
|
158
|
+
@page = pages(:parent)
|
159
|
+
assert_renders '', '<r:content part="sidebar" />'
|
160
|
+
assert_renders 'Parent sidebar.', '<r:content part="sidebar" inherit="true" />'
|
161
|
+
end
|
154
162
|
|
155
163
|
def test_tag_child_content
|
156
164
|
expected = "Radius test child 1 body.\nRadius test child 2 body.\nRadius test child 3 body.\n"
|
@@ -200,7 +208,13 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
200
208
|
assert_renders 'Monday, January 30, 2006', '<r:date for="published_at" />'
|
201
209
|
assert_render_error "Invalid value for 'for' attribute.", '<r:date for="blah" />'
|
202
210
|
end
|
203
|
-
|
211
|
+
def test_tag_date_uses_local_timezone
|
212
|
+
Radiant::Config["local.timezone"] = "Tokyo"
|
213
|
+
format = "%H:%m"
|
214
|
+
expected = TimeZone["Tokyo"].adjust(@page.published_at).strftime format
|
215
|
+
assert_renders expected, %Q(<r:date format="#{format}" />)
|
216
|
+
end
|
217
|
+
|
204
218
|
def test_tag_link
|
205
219
|
assert_renders '<a href="/radius/">Radius Test Page</a>', '<r:link />'
|
206
220
|
end
|
@@ -301,7 +315,7 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
301
315
|
end
|
302
316
|
|
303
317
|
def test_tag_find_and_children
|
304
|
-
assert_renders 'a-great-day-for-ruby another-great-day-for-ruby ', %{<r:find url="/news/"><r:children:each><r:slug /> </r:children:each></r:find>}
|
318
|
+
assert_renders 'a-great-day-for-ruby another-great-day-for-ruby later-that-day next-year-in-ruby ', %{<r:find url="/news/"><r:children:each><r:slug /> </r:children:each></r:find>}
|
305
319
|
end
|
306
320
|
|
307
321
|
def test_tag_escape_html
|
@@ -403,6 +417,37 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
403
417
|
assert_renders 'true', '<r:unless_parent>true</r:unless_parent>'
|
404
418
|
end
|
405
419
|
|
420
|
+
def test_tag_if_children
|
421
|
+
@page = pages(:homepage)
|
422
|
+
assert_renders 'true', '<r:if_children>true</r:if_children>'
|
423
|
+
@page = pages(:childless)
|
424
|
+
assert_renders '', '<r:if_children>true</r:if_children>'
|
425
|
+
end
|
426
|
+
def test_tag_unless_children
|
427
|
+
@page = pages(:homepage)
|
428
|
+
assert_renders '', '<r:unless_children>true</r:unless_children>'
|
429
|
+
@page = pages(:childless)
|
430
|
+
assert_renders 'true', '<r:unless_children>true</r:unless_children>'
|
431
|
+
end
|
432
|
+
|
433
|
+
def test_if_dev
|
434
|
+
assert_renders '-dev-', '-<r:if_dev>dev</r:if_dev>-', nil , 'dev.site.com'
|
435
|
+
assert_renders '--', '-<r:if_dev>dev</r:if_dev>-'
|
436
|
+
end
|
437
|
+
def test_if_dev_on_included_page
|
438
|
+
assert_renders '-dev-', '-<r:find url="/devtags/"><r:content part="if_dev" /></r:find>-', nil, 'dev.site.com'
|
439
|
+
assert_renders '--', '-<r:find url="/devtags/"><r:content part="if_dev" /></r:find>-'
|
440
|
+
end
|
441
|
+
|
442
|
+
def test_unless_dev
|
443
|
+
assert_renders '--', '-<r:unless_dev>not dev</r:unless_dev>-', nil, 'dev.site.com'
|
444
|
+
assert_renders '-not dev-', '-<r:unless_dev>not dev</r:unless_dev>-'
|
445
|
+
end
|
446
|
+
def test_unless_dev_on_included_page
|
447
|
+
assert_renders '--', '-<r:find url="/devtags/"><r:content part="unless_dev" /></r:find>-', nil, 'dev.site.com'
|
448
|
+
assert_renders '-not dev-', '-<r:find url="/devtags/"><r:content part="unless_dev" /></r:find>-'
|
449
|
+
end
|
450
|
+
|
406
451
|
private
|
407
452
|
|
408
453
|
def page_children_first_tags(attr = nil)
|
@@ -415,13 +460,13 @@ class StandardTagsTest < Test::Unit::TestCase
|
|
415
460
|
"<r:children:last#{attr}><r:slug /></r:children:last>"
|
416
461
|
end
|
417
462
|
|
418
|
-
|
419
463
|
def page_children_each_tags(attr = nil)
|
420
464
|
attr = ' ' + attr unless attr.nil?
|
421
465
|
"<r:children:each#{attr}><r:slug /> </r:children:each>"
|
422
466
|
end
|
423
|
-
|
467
|
+
|
424
468
|
def page_eachable_children(page)
|
425
469
|
page.children.select(&:published?).reject(&:virtual)
|
426
470
|
end
|
471
|
+
|
427
472
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
= Archive
|
2
|
+
|
3
|
+
The Archive extension extracts the Archive pages from their original place
|
4
|
+
in the Radiant distribution.
|
5
|
+
|
6
|
+
== Archive page
|
7
|
+
|
8
|
+
An archive page provides behavior similar to a blog archive or a news
|
9
|
+
archive. Child page URLs are altered to be in %Y/%m/%d format
|
10
|
+
(2004/05/06).
|
11
|
+
|
12
|
+
An archive page can be used in conjunction with the "Archive Year Index",
|
13
|
+
"Archive Month Index", and "Archive Day Index" page types to create year,
|
14
|
+
month, and day indexes.
|
15
|
+
|
16
|
+
== Archive Index pages
|
17
|
+
|
18
|
+
To create a year/month/day index for an archive, create a child page for the
|
19
|
+
archive and assign the "Archive [Year/Month/Day] Index" page type to it.
|
20
|
+
|
21
|
+
An index page makes following tags available to you:
|
22
|
+
|
23
|
+
<r:archive:children>...</r:archive:children>
|
24
|
+
Grants access to a subset of the children of the archive page
|
25
|
+
that match the specific year/month/day which the index page is rendering.
|
26
|
+
|
27
|
+
The title and breadcrumb attributes of an index page are rendered using Ruby's
|
28
|
+
Time#strftime method. Please refer to documentation for Time#strftime to
|
29
|
+
format these attributes.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the archive extension.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for the archive extension.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'ArchiveExtension'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
23
|
+
|
24
|
+
# Load any custom rakefiles for extension
|
25
|
+
Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
|
File without changes
|
@@ -1,8 +1,9 @@
|
|
1
1
|
class ArchiveFinder
|
2
|
+
|
2
3
|
def initialize(&block)
|
3
4
|
@block = block
|
4
5
|
end
|
5
|
-
|
6
|
+
|
6
7
|
def find(method, options = {})
|
7
8
|
@block.call(method, options)
|
8
9
|
end
|
@@ -11,7 +12,7 @@ class ArchiveFinder
|
|
11
12
|
def year_finder(finder, year)
|
12
13
|
new do |method, options|
|
13
14
|
start = Time.local(year)
|
14
|
-
|
15
|
+
finish = start.next_year
|
15
16
|
add_condition(options, "published_at >= ? and published_at < ?", start, finish)
|
16
17
|
finder.find(method, options)
|
17
18
|
end
|
@@ -20,7 +21,7 @@ class ArchiveFinder
|
|
20
21
|
def month_finder(finder, year, month)
|
21
22
|
new do |method, options|
|
22
23
|
start = Time.local(year, month)
|
23
|
-
|
24
|
+
finish = start.next_month
|
24
25
|
add_condition(options, "published_at >= ? and published_at < ?", start, finish)
|
25
26
|
finder.find(method, options)
|
26
27
|
end
|
@@ -29,25 +30,26 @@ class ArchiveFinder
|
|
29
30
|
def day_finder(finder, year, month, day)
|
30
31
|
new do |method, options|
|
31
32
|
start = Time.local(year, month, day)
|
32
|
-
|
33
|
+
finish = start.tomorrow
|
33
34
|
add_condition(options, "published_at >= ? and published_at < ?", start, finish)
|
34
35
|
finder.find(method, options)
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
38
39
|
private
|
39
|
-
|
40
|
+
|
40
41
|
def concat_conditions(a, b)
|
41
42
|
sql = "(#{ [a.shift, b.shift].compact.join(") AND (") })"
|
42
43
|
params = a + b
|
43
44
|
[sql, *params]
|
44
45
|
end
|
45
|
-
|
46
|
+
|
46
47
|
def add_condition(options, *condition)
|
47
48
|
old = options[:conditions] || []
|
48
49
|
conditions = concat_conditions(old, condition)
|
49
50
|
options[:conditions] = conditions
|
50
51
|
options
|
51
52
|
end
|
53
|
+
|
52
54
|
end
|
53
55
|
end
|
File without changes
|
File without changes
|
File without changes
|