radiant 1.0.0.rc3 → 1.0.0.rc4

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.

Files changed (296) hide show
  1. data/.gitignore +1 -1
  2. data/CHANGELOG.md +172 -4
  3. data/CONTRIBUTORS.md +13 -0
  4. data/Gemfile +6 -4
  5. data/Gemfile.lock +3 -3
  6. data/INSTALL.md +2 -2
  7. data/README.md +1 -1
  8. data/Rakefile +2 -1
  9. data/app/controllers/admin/pages_controller.rb +2 -0
  10. data/app/helpers/admin/node_helper.rb +5 -42
  11. data/app/helpers/admin/resource_helper.rb +2 -0
  12. data/app/models/file_not_found_page.rb +1 -1
  13. data/app/models/menu_renderer.rb +133 -0
  14. data/app/models/page.rb +10 -10
  15. data/app/models/radiant/config.rb +2 -1
  16. data/app/models/standard_tags.rb +15 -3
  17. data/app/views/admin/pages/_node.html.haml +3 -3
  18. data/bin/ci/before_script +13 -0
  19. data/bin/radiant +0 -2
  20. data/config.ru +2 -0
  21. data/config/boot.rb +0 -1
  22. data/config/cucumber.yml +1 -1
  23. data/config/environment.rb +2 -0
  24. data/config/initializers/radiant_config.rb +1 -1
  25. data/config/initializers/rails_patch.rb +2 -0
  26. data/config/locales/en.yml +4 -1
  27. data/config/preinitializer.rb +1 -1
  28. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +13 -0
  29. data/db/migrate/20111016150725_extend_page_part_content_limit.rb +15 -0
  30. data/db/radiant_dev.db.default +0 -0
  31. data/db/radiant_dev.db.high_five +0 -0
  32. data/db/schema.rb +8 -7
  33. data/features/admin/pages_management.feature +5 -15
  34. data/features/step_definitions/admin/pages_management_steps.rb +17 -0
  35. data/lib/generators/extension/templates/tasks.rake +0 -8
  36. data/lib/generators/instance/instance_generator.rb +2 -3
  37. data/lib/generators/instance/templates/instance_gemfile +22 -22
  38. data/lib/generators/language_extension/language_extension_generator.rb +22 -0
  39. data/lib/generators/language_extension/templates/available_tags.yml +1 -1
  40. data/lib/generators/language_extension/templates/extension.rb +9 -5
  41. data/lib/generators/language_extension/templates/gemspec.rb +24 -0
  42. data/lib/generators/language_extension/templates/lang.yml +1 -1
  43. data/lib/generators/language_extension/templates/lib.rb +8 -0
  44. data/lib/plugins/string_extensions/lib/string_extensions.rb +3 -1
  45. data/lib/radiant.rb +1 -1
  46. data/lib/radiant/admin_ui/region_partials.rb +5 -0
  47. data/lib/radiant/cache.rb +2 -1
  48. data/lib/radiant/extension/script.rb +3 -3
  49. data/lib/radiant/extension_loader.rb +4 -2
  50. data/lib/radiant/extension_path.rb +10 -2
  51. data/lib/radiant/initializer.rb +10 -14
  52. data/lib/radiant/resource_responses.rb +6 -0
  53. data/lib/radiant/setup.rb +5 -2
  54. data/lib/radiant/taggable.rb +7 -1
  55. data/lib/tasks/cucumber.rake +6 -0
  56. data/lib/tasks/database.rake +9 -5
  57. data/lib/tasks/extensions.rake +2 -17
  58. data/lib/tasks/framework.rake +52 -31
  59. data/public/javascripts/admin/assets.js +296 -0
  60. data/public/javascripts/application.js +2 -0
  61. data/public/javascripts/controls.js +963 -0
  62. data/public/javascripts/dragdrop.js +973 -0
  63. data/public/javascripts/effects.js +1128 -0
  64. data/public/javascripts/prototype.js +4320 -0
  65. data/public/stylesheets/admin/main.css +1 -1
  66. data/public/stylesheets/sass/admin/assets.sass +209 -0
  67. data/radiant.gemspec +33 -34
  68. data/spec/ci/database.mysql.yml +7 -0
  69. data/spec/ci/database.postgresql.yml +7 -0
  70. data/spec/ci/database.sqlite.yml +6 -0
  71. data/spec/controllers/site_controller_spec.rb +2 -2
  72. data/spec/datasets/config_dataset.rb +3 -2
  73. data/spec/datasets/home_page_dataset.rb +1 -1
  74. data/spec/datasets/layouts_dataset.rb +1 -1
  75. data/spec/datasets/snippets_dataset.rb +1 -1
  76. data/spec/generators/instance_generator_spec.rb +5 -11
  77. data/spec/helpers/admin/node_helper_spec.rb +1 -50
  78. data/spec/helpers/admin/regions_helper_spec.rb +1 -1
  79. data/spec/lib/radiant/admin_ui/region_partials_spec.rb +1 -1
  80. data/spec/lib/radiant/initializer_spec.rb +2 -7
  81. data/spec/lib/radiant/resource_responses_spec.rb +1 -1
  82. data/spec/lib/radiant/taggable_spec.rb +1 -1
  83. data/spec/lib/task_support_spec.rb +1 -0
  84. data/spec/models/menu_renderer_spec.rb +297 -0
  85. data/spec/models/page_spec.rb +21 -8
  86. data/spec/models/standard_tags_spec.rb +6 -2
  87. data/test/fixtures/extensions/basic/app/helpers/basic_extension_helper.rb +2 -0
  88. data/testthegemgeneration/CHANGELOG.md +721 -0
  89. data/testthegemgeneration/CONTRIBUTORS.md +257 -0
  90. data/testthegemgeneration/Gemfile +57 -0
  91. data/testthegemgeneration/Gemfile.lock +107 -0
  92. data/testthegemgeneration/INSTALL.md +42 -0
  93. data/testthegemgeneration/LICENSE.md +21 -0
  94. data/testthegemgeneration/README.md +84 -0
  95. data/testthegemgeneration/Rakefile +3 -0
  96. data/testthegemgeneration/config.ru +2 -0
  97. data/testthegemgeneration/config/boot.rb +122 -0
  98. data/testthegemgeneration/config/cucumber.yml +7 -0
  99. data/testthegemgeneration/config/database.yml +16 -0
  100. data/testthegemgeneration/config/environment.rb +81 -0
  101. data/testthegemgeneration/config/environments/cucumber.rb +22 -0
  102. data/testthegemgeneration/config/environments/development.rb +17 -0
  103. data/testthegemgeneration/config/environments/production.rb +24 -0
  104. data/testthegemgeneration/config/environments/test.rb +32 -0
  105. data/testthegemgeneration/config/initializers/radiant_config.rb +16 -0
  106. data/testthegemgeneration/config/preinitializer.rb +19 -0
  107. data/testthegemgeneration/config/routes.rb +1 -0
  108. data/testthegemgeneration/db/development.sqlite3.db +0 -0
  109. data/testthegemgeneration/db/schema.rb +142 -0
  110. data/testthegemgeneration/log/development.log +1055 -0
  111. data/testthegemgeneration/public/404.html +8 -0
  112. data/testthegemgeneration/public/500.html +8 -0
  113. data/testthegemgeneration/public/dispatch.cgi +10 -0
  114. data/testthegemgeneration/public/dispatch.fcgi +24 -0
  115. data/testthegemgeneration/public/dispatch.rb +10 -0
  116. data/testthegemgeneration/public/favicon.ico +0 -0
  117. data/testthegemgeneration/public/flash/ZeroClipboard.swf +0 -0
  118. data/testthegemgeneration/public/images/admin/add_tab.png +0 -0
  119. data/testthegemgeneration/public/images/admin/assets/add.png +0 -0
  120. data/testthegemgeneration/public/images/admin/assets/archive_icon.png +0 -0
  121. data/testthegemgeneration/public/images/admin/assets/audio_icon.png +0 -0
  122. data/testthegemgeneration/public/images/admin/assets/audio_thumbnail.png +0 -0
  123. data/testthegemgeneration/public/images/admin/assets/c_icon.png +0 -0
  124. data/testthegemgeneration/public/images/admin/assets/copy.png +0 -0
  125. data/testthegemgeneration/public/images/admin/assets/css_icon.png +0 -0
  126. data/testthegemgeneration/public/images/admin/assets/database_icon.png +0 -0
  127. data/testthegemgeneration/public/images/admin/assets/delete.png +0 -0
  128. data/testthegemgeneration/public/images/admin/assets/document_icon.png +0 -0
  129. data/testthegemgeneration/public/images/admin/assets/document_thumbnail.png +0 -0
  130. data/testthegemgeneration/public/images/admin/assets/flash_icon.png +0 -0
  131. data/testthegemgeneration/public/images/admin/assets/flash_thumbnail.png +0 -0
  132. data/testthegemgeneration/public/images/admin/assets/font_icon.png +0 -0
  133. data/testthegemgeneration/public/images/admin/assets/gzip_icon.png +0 -0
  134. data/testthegemgeneration/public/images/admin/assets/html_icon.png +0 -0
  135. data/testthegemgeneration/public/images/admin/assets/image_icon.png +0 -0
  136. data/testthegemgeneration/public/images/admin/assets/image_thumbnail.png +0 -0
  137. data/testthegemgeneration/public/images/admin/assets/java_icon.png +0 -0
  138. data/testthegemgeneration/public/images/admin/assets/page_edit.png +0 -0
  139. data/testthegemgeneration/public/images/admin/assets/perl_icon.png +0 -0
  140. data/testthegemgeneration/public/images/admin/assets/php_icon.png +0 -0
  141. data/testthegemgeneration/public/images/admin/assets/presentation_icon.png +0 -0
  142. data/testthegemgeneration/public/images/admin/assets/python_icon.png +0 -0
  143. data/testthegemgeneration/public/images/admin/assets/reorder_assets.png +0 -0
  144. data/testthegemgeneration/public/images/admin/assets/ruby_icon.png +0 -0
  145. data/testthegemgeneration/public/images/admin/assets/script_icon.png +0 -0
  146. data/testthegemgeneration/public/images/admin/assets/spreadsheet_icon.png +0 -0
  147. data/testthegemgeneration/public/images/admin/assets/tar_icon.png +0 -0
  148. data/testthegemgeneration/public/images/admin/assets/unknown_icon.png +0 -0
  149. data/testthegemgeneration/public/images/admin/assets/unknown_thumbnail.png +0 -0
  150. data/testthegemgeneration/public/images/admin/assets/video_icon.png +0 -0
  151. data/testthegemgeneration/public/images/admin/assets/video_thumbnail.png +0 -0
  152. data/testthegemgeneration/public/images/admin/assets/xml_icon.png +0 -0
  153. data/testthegemgeneration/public/images/admin/assets/zip_icon.png +0 -0
  154. data/testthegemgeneration/public/images/admin/avatar_32x32.png +0 -0
  155. data/testthegemgeneration/public/images/admin/avatar_64x64.png +0 -0
  156. data/testthegemgeneration/public/images/admin/avatar_96x96.png +0 -0
  157. data/testthegemgeneration/public/images/admin/brown_bottom_line.gif +0 -0
  158. data/testthegemgeneration/public/images/admin/calendar_down.gif +0 -0
  159. data/testthegemgeneration/public/images/admin/collapse.png +0 -0
  160. data/testthegemgeneration/public/images/admin/draft_page.png +0 -0
  161. data/testthegemgeneration/public/images/admin/expand.png +0 -0
  162. data/testthegemgeneration/public/images/admin/image.png +0 -0
  163. data/testthegemgeneration/public/images/admin/javascript.png +0 -0
  164. data/testthegemgeneration/public/images/admin/layout.png +0 -0
  165. data/testthegemgeneration/public/images/admin/metadata_toggle.png +0 -0
  166. data/testthegemgeneration/public/images/admin/minus.png +0 -0
  167. data/testthegemgeneration/public/images/admin/minus_disabled.png +0 -0
  168. data/testthegemgeneration/public/images/admin/minus_grey.png +0 -0
  169. data/testthegemgeneration/public/images/admin/navigation_secondary_separator.gif +0 -0
  170. data/testthegemgeneration/public/images/admin/page.png +0 -0
  171. data/testthegemgeneration/public/images/admin/plus.png +0 -0
  172. data/testthegemgeneration/public/images/admin/plus_disabled.png +0 -0
  173. data/testthegemgeneration/public/images/admin/plus_grey.png +0 -0
  174. data/testthegemgeneration/public/images/admin/popup_border_background.png +0 -0
  175. data/testthegemgeneration/public/images/admin/popup_border_bottom_left.png +0 -0
  176. data/testthegemgeneration/public/images/admin/popup_border_bottom_right.png +0 -0
  177. data/testthegemgeneration/public/images/admin/popup_border_top_left.png +0 -0
  178. data/testthegemgeneration/public/images/admin/popup_border_top_right.png +0 -0
  179. data/testthegemgeneration/public/images/admin/search.png +0 -0
  180. data/testthegemgeneration/public/images/admin/single_form_shadow.png +0 -0
  181. data/testthegemgeneration/public/images/admin/snippet.png +0 -0
  182. data/testthegemgeneration/public/images/admin/spinner.gif +0 -0
  183. data/testthegemgeneration/public/images/admin/status_background.png +0 -0
  184. data/testthegemgeneration/public/images/admin/status_bottom_left.png +0 -0
  185. data/testthegemgeneration/public/images/admin/status_bottom_right.png +0 -0
  186. data/testthegemgeneration/public/images/admin/status_spinner.gif +0 -0
  187. data/testthegemgeneration/public/images/admin/status_top_left.png +0 -0
  188. data/testthegemgeneration/public/images/admin/status_top_right.png +0 -0
  189. data/testthegemgeneration/public/images/admin/stylesheet.png +0 -0
  190. data/testthegemgeneration/public/images/admin/tab_close.png +0 -0
  191. data/testthegemgeneration/public/images/admin/upload.png +0 -0
  192. data/testthegemgeneration/public/images/admin/virtual_page.png +0 -0
  193. data/testthegemgeneration/public/images/radiant/radiant-badge-color.png +0 -0
  194. data/testthegemgeneration/public/images/roasters/banner.jpg +0 -0
  195. data/testthegemgeneration/public/images/roasters/closelabel.gif +0 -0
  196. data/testthegemgeneration/public/images/roasters/comment.png +0 -0
  197. data/testthegemgeneration/public/images/roasters/gallery1.jpg +0 -0
  198. data/testthegemgeneration/public/images/roasters/gallery2.jpg +0 -0
  199. data/testthegemgeneration/public/images/roasters/gallery3.jpg +0 -0
  200. data/testthegemgeneration/public/images/roasters/gallery4.jpg +0 -0
  201. data/testthegemgeneration/public/images/roasters/gift.gif +0 -0
  202. data/testthegemgeneration/public/images/roasters/green.gif +0 -0
  203. data/testthegemgeneration/public/images/roasters/nav-background.gif +0 -0
  204. data/testthegemgeneration/public/images/roasters/nav-divider.gif +0 -0
  205. data/testthegemgeneration/public/images/roasters/nextlabel.gif +0 -0
  206. data/testthegemgeneration/public/images/roasters/open.gif +0 -0
  207. data/testthegemgeneration/public/images/roasters/preview-1.jpg +0 -0
  208. data/testthegemgeneration/public/images/roasters/preview.jpg +0 -0
  209. data/testthegemgeneration/public/images/roasters/prevlabel.gif +0 -0
  210. data/testthegemgeneration/public/images/roasters/prize.gif +0 -0
  211. data/testthegemgeneration/public/images/roasters/recycle.gif +0 -0
  212. data/testthegemgeneration/public/images/roasters/rss.gif +0 -0
  213. data/testthegemgeneration/public/images/roasters/thumb-grinder.jpg +0 -0
  214. data/testthegemgeneration/public/images/roasters/thumb-grower.jpg +0 -0
  215. data/testthegemgeneration/public/images/roasters/thumb-roaster.jpg +0 -0
  216. data/testthegemgeneration/public/images/roasters/truck.gif +0 -0
  217. data/testthegemgeneration/public/javascripts/admin/application.js +94 -0
  218. data/testthegemgeneration/public/javascripts/admin/assets.js +296 -0
  219. data/testthegemgeneration/public/javascripts/admin/codearea.js +165 -0
  220. data/testthegemgeneration/public/javascripts/admin/controls.js +965 -0
  221. data/testthegemgeneration/public/javascripts/admin/cookie.js +80 -0
  222. data/testthegemgeneration/public/javascripts/admin/dateinput.js +402 -0
  223. data/testthegemgeneration/public/javascripts/admin/dragdrop.js +974 -0
  224. data/testthegemgeneration/public/javascripts/admin/dropdown.js +216 -0
  225. data/testthegemgeneration/public/javascripts/admin/effects.js +1122 -0
  226. data/testthegemgeneration/public/javascripts/admin/lowpro.js +340 -0
  227. data/testthegemgeneration/public/javascripts/admin/overrides.js +1 -0
  228. data/testthegemgeneration/public/javascripts/admin/page_preview.js +41 -0
  229. data/testthegemgeneration/public/javascripts/admin/pagefield.js +54 -0
  230. data/testthegemgeneration/public/javascripts/admin/pagestatus.js +17 -0
  231. data/testthegemgeneration/public/javascripts/admin/popup.js +339 -0
  232. data/testthegemgeneration/public/javascripts/admin/prototype.js +4874 -0
  233. data/testthegemgeneration/public/javascripts/admin/ruledtable.js +13 -0
  234. data/testthegemgeneration/public/javascripts/admin/shortcuts.js +27 -0
  235. data/testthegemgeneration/public/javascripts/admin/sitemap.js +149 -0
  236. data/testthegemgeneration/public/javascripts/admin/status.js +233 -0
  237. data/testthegemgeneration/public/javascripts/admin/tabcontrol.js +123 -0
  238. data/testthegemgeneration/public/javascripts/admin/toggle.js +430 -0
  239. data/testthegemgeneration/public/javascripts/admin/utility.js +53 -0
  240. data/testthegemgeneration/public/javascripts/admin/validationerror.js +18 -0
  241. data/testthegemgeneration/public/javascripts/application.js +2 -0
  242. data/testthegemgeneration/public/javascripts/controls.js +963 -0
  243. data/testthegemgeneration/public/javascripts/dragdrop.js +973 -0
  244. data/testthegemgeneration/public/javascripts/effects.js +1128 -0
  245. data/testthegemgeneration/public/javascripts/prototype.js +4320 -0
  246. data/testthegemgeneration/public/loading-iframe.html +11 -0
  247. data/testthegemgeneration/public/robots.txt +1 -0
  248. data/testthegemgeneration/public/stylesheets/admin/assets.css +1 -0
  249. data/testthegemgeneration/public/stylesheets/admin/main.css +1 -0
  250. data/testthegemgeneration/public/stylesheets/admin/overrides.css +0 -0
  251. data/testthegemgeneration/public/stylesheets/sass/admin/_base.sass +17 -0
  252. data/testthegemgeneration/public/stylesheets/sass/admin/assets.sass +209 -0
  253. data/testthegemgeneration/public/stylesheets/sass/admin/main.sass +27 -0
  254. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
  255. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_links.sass +18 -0
  256. data/testthegemgeneration/public/stylesheets/sass/admin/overrides.sass +2 -0
  257. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
  258. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
  259. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_content.sass +58 -0
  260. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
  261. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
  262. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
  263. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
  264. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
  265. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_header.sass +114 -0
  266. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_index.sass +147 -0
  267. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
  268. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
  269. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
  270. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
  271. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
  272. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
  273. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
  274. data/testthegemgeneration/script/about +4 -0
  275. data/testthegemgeneration/script/autospec +5 -0
  276. data/testthegemgeneration/script/breakpointer +3 -0
  277. data/testthegemgeneration/script/console +3 -0
  278. data/testthegemgeneration/script/cucumber +10 -0
  279. data/testthegemgeneration/script/dbconsole +3 -0
  280. data/testthegemgeneration/script/extension +5 -0
  281. data/testthegemgeneration/script/generate +6 -0
  282. data/testthegemgeneration/script/performance/benchmarker +3 -0
  283. data/testthegemgeneration/script/performance/profiler +3 -0
  284. data/testthegemgeneration/script/performance/request +3 -0
  285. data/testthegemgeneration/script/process/inspector +3 -0
  286. data/testthegemgeneration/script/process/reaper +3 -0
  287. data/testthegemgeneration/script/process/spawner +3 -0
  288. data/testthegemgeneration/script/process/spinner +3 -0
  289. data/testthegemgeneration/script/runner +3 -0
  290. data/testthegemgeneration/script/server +3 -0
  291. data/testthegemgeneration/script/spec +5 -0
  292. data/testthegemgeneration/script/spec_server +116 -0
  293. data/testthegemgeneration/script/version +5 -0
  294. data/testthegemgeneration/tmp/radiant_config_cache.txt +0 -0
  295. metadata +845 -133
  296. data/public/stylesheets/admin/base.css +0 -1
@@ -7,7 +7,7 @@ class Page < ActiveRecord::Base
7
7
  end
8
8
 
9
9
  # Callbacks
10
- before_save :update_virtual, :update_status
10
+ before_save :update_virtual, :update_status, :set_allowed_children_cache
11
11
 
12
12
  # Associations
13
13
  acts_as_tree :order => 'virtual DESC, title ASC'
@@ -38,8 +38,6 @@ class Page < ActiveRecord::Base
38
38
 
39
39
  annotate :description
40
40
  attr_accessor :request, :response, :pagination_parameters
41
- class_inheritable_accessor :in_menu
42
- self.in_menu = true
43
41
  class_inheritable_accessor :default_child
44
42
  self.default_child = self
45
43
 
@@ -201,7 +199,6 @@ class Page < ActiveRecord::Base
201
199
  true
202
200
  end
203
201
 
204
-
205
202
  def to_xml(options={}, &block)
206
203
  super(options.reverse_merge(:include => :parts), &block)
207
204
  end
@@ -210,17 +207,21 @@ class Page < ActiveRecord::Base
210
207
  self.class.default_child
211
208
  end
212
209
 
213
- def allowed_children
214
- [default_child, *Page.descendants.sort_by(&:name)].select(&:in_menu?)
210
+ def allowed_children_lookup
211
+ [default_child, *Page.descendants.sort_by(&:name)].uniq
215
212
  end
216
213
 
214
+ def set_allowed_children_cache
215
+ self.allowed_children_cache = allowed_children_lookup.collect(&:name).join(',')
216
+ end
217
217
 
218
218
  class << self
219
- alias_method :in_menu?, :in_menu
220
- alias_method :in_menu, :in_menu=
219
+
220
+ def root
221
+ find_by_parent_id(nil)
222
+ end
221
223
 
222
224
  def find_by_path(path, live = true)
223
- root = find_by_parent_id(nil)
224
225
  raise MissingRootPageError unless root
225
226
  root.find_by_path(path, live)
226
227
  end
@@ -323,7 +324,6 @@ class Page < ActiveRecord::Base
323
324
  def attributes_protected_by_default
324
325
  super - [self.class.inheritance_column]
325
326
  end
326
-
327
327
 
328
328
  def update_virtual
329
329
  unless self.class == Page.descendant_class(class_name)
@@ -100,6 +100,7 @@ module Radiant
100
100
  Radiant::Config.ensure_cache_file
101
101
  Rails.cache.write('Radiant::Config',Radiant::Config.to_hash)
102
102
  Rails.cache.write('Radiant.cache_mtime', File.mtime(cache_file))
103
+ Rails.cache.silence!
103
104
  end
104
105
 
105
106
  def cache_file_exists?
@@ -237,7 +238,7 @@ Config definition error: '#{key}' is defined twice:
237
238
  if newvalue != self[:value]
238
239
  raise ConfigError, "#{self.key} cannot be changed" unless settable? || self[:value].blank?
239
240
  if boolean?
240
- self[:value] = (newvalue == "0" || newvalue == "false" || newvalue.blank? ) ? "false" : "true"
241
+ self[:value] = (newvalue == "1" || newvalue == "true") ? "true" : "false"
241
242
  else
242
243
  self[:value] = newvalue
243
244
  end
@@ -364,7 +364,7 @@ module StandardTags
364
364
  tag.locals.page = aggregate_page
365
365
  aggregates << tag.expand
366
366
  end
367
- aggregates
367
+ aggregates.flatten.join('')
368
368
  end
369
369
 
370
370
  tag "aggregate:each:children" do |tag|
@@ -382,7 +382,7 @@ module StandardTags
382
382
  tag.locals.page = item
383
383
  result << tag.expand
384
384
  end
385
- result
385
+ result.flatten.join('')
386
386
  end
387
387
 
388
388
  tag "aggregate:children" do |tag|
@@ -1198,6 +1198,18 @@ module StandardTags
1198
1198
  else field
1199
1199
  end
1200
1200
  end
1201
+
1202
+ tag 'site' do |tag|
1203
+ tag.expand
1204
+ end
1205
+ %w(title domain dev_domain).each do |attr|
1206
+ desc %{
1207
+ Returns Radiant::Config['site.#{attr}'] as configured under the Settings tab.
1208
+ }
1209
+ tag "site:#{attr}" do |tag|
1210
+ Radiant::Config["site.#{attr}"]
1211
+ end
1212
+ end
1201
1213
 
1202
1214
  private
1203
1215
  def render_children_with_pagination(tag, opts={})
@@ -1223,7 +1235,7 @@ module StandardTags
1223
1235
  tag.locals.paginated_list = displayed_children
1224
1236
  result << tag.render('pagination', tag.attr.dup)
1225
1237
  end
1226
- result
1238
+ result.flatten.join('')
1227
1239
  end
1228
1240
 
1229
1241
  def children_find_options(tag)
@@ -17,10 +17,10 @@
17
17
  - node.actions_column do
18
18
  - unless simple
19
19
  %td.actions
20
- = child_link_for(page)
21
- = link_to image('minus') + ' ' + t('remove'), remove_admin_page_url(page), :class => "action"
22
- = child_menu_for(page)
20
+ = page.add_child_option
21
+ = page.remove_option
23
22
 
24
23
  - if expanded
25
24
  - page.children.each do |child|
25
+ - child.becomes(child.class_name.constantize) if child.class_name.present?
26
26
  = render_node child, :level => level + 1, :simple => simple
@@ -0,0 +1,13 @@
1
+ #!/bin/sh
2
+
3
+ case $DB in
4
+ "mysql" )
5
+ mysql -e 'create database radiant_test;'
6
+ cp spec/ci/database.mysql.yml config/database.yml;;
7
+ "postgres" )
8
+ psql -c 'create database radiant_test;' -U postgres
9
+ cp spec/ci/database.postgresql.yml config/database.yml;;
10
+ esac
11
+
12
+ bundle exec rake db:migrate
13
+ bundle exec rake db:migrate:extensions
@@ -2,8 +2,6 @@
2
2
 
3
3
  ENV['RAILS_ENV'] ||= 'production'
4
4
 
5
- require File.join(File.dirname(__FILE__), '..', 'config', 'boot')
6
-
7
5
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..')
8
6
 
9
7
  require 'ruby_version_check'
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/config/environment'
2
+ run ActionController::Dispatcher.new
@@ -2,7 +2,6 @@
2
2
  # Configure your app in config/environment.rb and config/environments/*.rb
3
3
 
4
4
  RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
5
- RAILS_ENV = (ENV['RAILS_ENV'] || 'development').dup unless defined?(RAILS_ENV)
6
5
 
7
6
  module Rails
8
7
  class << self
@@ -1,7 +1,7 @@
1
1
  <%
2
2
  rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
3
3
  rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
4
- std_opts = "#{rerun_opts} --format rerun --out rerun.txt --strict --tags ~@wip"
4
+ std_opts = "#{rerun_opts} --format rerun --out rerun.txt --strict --require features --tags ~@wip"
5
5
  %>
6
6
  default: <%= std_opts %>
7
7
  wip: --tags @wip:3 --wip features
@@ -9,6 +9,8 @@ require File.join(File.dirname(__FILE__), 'boot')
9
9
 
10
10
  require 'radius'
11
11
 
12
+ YAML::ENGINE.yamler = 'syck' if RUBY_VERSION =~ /1.9/
13
+
12
14
  Radiant::Initializer.run do |config|
13
15
  # Skip frameworks you're not going to use (only works if using vendor/rails).
14
16
  # To use Rails without a database, you must remove the Active Record framework
@@ -4,7 +4,7 @@ Radiant.config do |config|
4
4
  config.define 'local.timezone', :allow_change => true, :select_from => lambda { ActiveSupport::TimeZone::MAPPING.keys.sort }
5
5
  config.define 'defaults.locale', :select_from => lambda { Radiant::AvailableLocales.locales }, :allow_blank => true
6
6
  config.define 'defaults.page.parts', :default => "Body,Extended"
7
- config.define 'defaults.page.status', :select_from => lambda { Status.selectable_values }, :allow_blank => true, :default => "Draft"
7
+ config.define 'defaults.page.status', :select_from => lambda { Status.selectable_values }, :allow_blank => false, :default => "Draft"
8
8
  config.define 'defaults.page.filter', :select_from => lambda { TextFilter.descendants.map { |s| s.filter_name }.sort }, :allow_blank => true
9
9
  config.define 'defaults.page.fields'
10
10
  config.define 'defaults.snippet.filter', :select_from => lambda { TextFilter.descendants.map { |s| s.filter_name }.sort }, :allow_blank => true
@@ -0,0 +1,2 @@
1
+ # The following code alters Rails MissingSourceFile to catch errors in Ruby 1.9.3
2
+ MissingSourceFile::REGEXPS.push([/^cannot load such file -- (.+)$/i, 1])
@@ -75,7 +75,10 @@ en:
75
75
  only_day: "%e"
76
76
  short: "%e %b"
77
77
  month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
78
- order: [ :year, :month, :day ]
78
+ order:
79
+ - :year
80
+ - :month
81
+ - :day
79
82
  delete_layout: 'Delete Layout'
80
83
  delete_pages: 'Delete %{pages}'
81
84
  delete_snippet: 'Delete Snippet'
@@ -13,7 +13,7 @@ end
13
13
  begin
14
14
  # Set up load paths for all bundled gems
15
15
  ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
16
- Bundler.setup(:default, RAILS_ENV)
16
+ Bundler.setup
17
17
  rescue Bundler::GemNotFound => e
18
18
  raise RuntimeError, "Bundler couldn't find some gems: #{e}. Did you run `bundle install`?"
19
19
  end
@@ -0,0 +1,13 @@
1
+ class AddAllowedChildrenCacheToPages < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :pages, :allowed_children_cache, :string, :default => ''
4
+ Page.reset_column_information
5
+ Page.find_each do |page|
6
+ page.save # update the allowed_children_cache
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ remove_column :pages, :allowed_children_cache
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ class ExtendPagePartContentLimit < ActiveRecord::Migration
2
+ def self.up
3
+ if ActiveRecord::Base.connection.adapter_name =~ /m[sy]sql/i
4
+ # Make sure text longer than 64kB is not cropped in MySQL and MSSQL
5
+ # See https://github.com/radiant/radiant-sheets-extension/issues/10
6
+ change_column :page_parts, :content, :text, :limit => 1048575
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ if ActiveRecord::Base.connection.adapter_name =~ /m[sy]sql/i
12
+ change_column :page_parts, :content, :text
13
+ end
14
+ end
15
+ end
Binary file
@@ -9,7 +9,7 @@
9
9
  #
10
10
  # It's strongly recommended to check this file into your version control system.
11
11
 
12
- ActiveRecord::Schema.define(:version => 20100810151922) do
12
+ ActiveRecord::Schema.define(:version => 20110902203823) do
13
13
 
14
14
  create_table "assets", :force => true do |t|
15
15
  t.string "caption"
@@ -76,10 +76,10 @@ ActiveRecord::Schema.define(:version => 20100810151922) do
76
76
 
77
77
  create_table "pages", :force => true do |t|
78
78
  t.string "title"
79
- t.string "slug", :limit => 100
80
- t.string "breadcrumb", :limit => 160
81
- t.string "class_name", :limit => 25
82
- t.integer "status_id", :default => 1, :null => false
79
+ t.string "slug", :limit => 100
80
+ t.string "breadcrumb", :limit => 160
81
+ t.string "class_name", :limit => 25
82
+ t.integer "status_id", :default => 1, :null => false
83
83
  t.integer "parent_id"
84
84
  t.integer "layout_id"
85
85
  t.datetime "created_at"
@@ -87,8 +87,9 @@ ActiveRecord::Schema.define(:version => 20100810151922) do
87
87
  t.datetime "published_at"
88
88
  t.integer "created_by_id"
89
89
  t.integer "updated_by_id"
90
- t.boolean "virtual", :default => false, :null => false
91
- t.integer "lock_version", :default => 0
90
+ t.boolean "virtual", :default => false, :null => false
91
+ t.integer "lock_version", :default => 0
92
+ t.string "allowed_children_cache", :default => ""
92
93
  end
93
94
 
94
95
  add_index "pages", ["class_name"], :name => "altered_pages_class_name"
@@ -17,27 +17,17 @@ Feature: Managing pages
17
17
 
18
18
  Scenario: Creating a homepage
19
19
  Given I am logged in as "existing"
20
- Given there are no pages
21
- When I go to the "pages" admin page
22
- And I follow "New Homepage"
23
- Then I should see "New Page"
24
- And there should be a "body" part
25
- And there should be an "extended" part
26
- When I fill in "Page Title" with "My site"
27
- And I fill in "Slug" with "/"
28
- And I fill in "Breadcrumb" with "My site"
29
- And I fill in the "body" content with "Under Construction"
30
- And I fill in the "extended" content with "foobar"
31
- And I select "Published" from "Status"
32
- And I press "Create page"
20
+ And there are no pages
21
+ And I create a homepage
33
22
  Then I should be on the sitemap
34
23
  And I should see "My site"
35
24
  When I go to the homepage
36
25
  Then I should see "Under Construction"
37
26
 
38
27
  Scenario: Creating child pages
39
- Given I am logged in as "existing"
40
- And there is a homepage
28
+ Given there are no pages
29
+ And I am logged in as "existing"
30
+ And I create a homepage
41
31
  When I go to the "pages" admin page
42
32
  And I follow "Add Child"
43
33
  And I follow "Normal Page"
@@ -26,3 +26,20 @@ When /^I edit the "([^\"]*)" page$/ do |name|
26
26
  page = pages(name.to_sym)
27
27
  visit "/admin/pages/#{page.id}/edit"
28
28
  end
29
+
30
+ Given /^I create a homepage$/ do
31
+ steps %Q{
32
+ When I go to the "pages" admin page
33
+ And I follow "New Homepage"
34
+ Then I should see "New Page"
35
+ And there should be a "body" part
36
+ And there should be an "extended" part
37
+ When I fill in "Page Title" with "My site"
38
+ And I fill in "Slug" with "/"
39
+ And I fill in "Breadcrumb" with "My site"
40
+ And I fill in the "body" content with "Under Construction"
41
+ And I fill in the "extended" content with "foobar"
42
+ And I select "Published" from "Status"
43
+ And I press "Create page"
44
+ }
45
+ end
@@ -24,14 +24,6 @@ namespace :radiant do
24
24
  mkdir_p RAILS_ROOT + directory, :verbose => false
25
25
  cp file, RAILS_ROOT + path, :verbose => false
26
26
  end
27
- unless <%= class_name %>.root.starts_with? RAILS_ROOT # don't need to copy vendored tasks
28
- puts "Copying rake tasks from <%= class_name %>"
29
- local_tasks_path = File.join(RAILS_ROOT, %w(lib tasks))
30
- mkdir_p local_tasks_path, :verbose => false
31
- Dir[File.join <%= class_name %>.root, %w(lib tasks *.rake)].each do |file|
32
- cp file, local_tasks_path, :verbose => false
33
- end
34
- end
35
27
  end
36
28
 
37
29
  desc "Syncs all available translations for this ext to the English ext master"
@@ -46,8 +46,9 @@ class InstanceGenerator < Rails::Generator::Base
46
46
  schema_file = %w{db/schema.rb}
47
47
  scripts = Dir["#{root}/script/**/*"].reject { |f| f =~ /(destroy|generate|plugin)$/ }
48
48
  public_files = ["public/.htaccess"] + Dir["#{root}/public/**/*"]
49
+ test_files = ["config/cucumber.yml"]
49
50
 
50
- files = base_dirs + text_files + environments + bundler_compatibility_files + schema_file + scripts + public_files
51
+ files = base_dirs + text_files + environments + bundler_compatibility_files + schema_file + scripts + public_files + test_files
51
52
  files.map! { |f| f = $1 if f =~ %r{^#{root}/(.+)$}; f }
52
53
  files.sort!
53
54
 
@@ -75,9 +76,7 @@ class InstanceGenerator < Rails::Generator::Base
75
76
 
76
77
  # Instance Gemfile
77
78
  m.template "instance_gemfile", "Gemfile", :assigns => {
78
- :radiant_path => RADIANT_ROOT,
79
79
  :radiant_version => Radiant::Version.to_s,
80
- :sqlite_version => Gem.loaded_specs['sqlite3'].version.to_s,
81
80
  :db => options[:db]
82
81
  }
83
82
 
@@ -3,13 +3,13 @@ source :rubygems
3
3
  # If you make any changes in this file, please run `bundle install`.
4
4
  # If new versions of your installed gems are available, run `bundle update`
5
5
 
6
- gem "radiant", '~> <%= radiant_version %>'
6
+ gem "radiant", "~> <%= radiant_version %>"
7
7
 
8
8
  # alternatively, in development
9
- # gem 'radiant', :path => '/path/to/radiant/root'
9
+ # gem "radiant", :path => "/path/to/radiant/root"
10
10
 
11
11
  # SQLite is the default database connection but only suitable for local use
12
- <%= '# ' unless db == 'sqlite3' %>gem "sqlite3", "~> <%= sqlite_version %>"
12
+ <%= '# ' unless db == 'sqlite3' %>gem "sqlite3", "~> 1.3.4"
13
13
 
14
14
  # To use MySQL
15
15
  <%= '# ' unless db == 'mysql' %>gem "mysql", "~> 2.8.1"
@@ -21,37 +21,37 @@ gem "radiant", '~> <%= radiant_version %>'
21
21
  <%= '# ' unless db == 'db2' %>gem "db2", "~> 2.6.2"
22
22
 
23
23
  # SQL Server
24
- <%= '#' unless db == 'sqlserver' %>gem 'tiny_tds'
25
- <%= '#' unless db == 'sqlserver' %>gem "activerecord-sqlserver-adapter", "~> 3.1.0"
24
+ <%= '# ' unless db == 'sqlserver' %>gem "tiny_tds"
25
+ <%= '# ' unless db == 'sqlserver' %>gem "activerecord-sqlserver-adapter", "~> 3.1.0"
26
26
 
27
27
  # Language packs
28
- # gem 'radiant-dutch_language_pack-extension', '~> 1.0.0'
29
- # gem 'radiant-french_language_pack-extension', '~> 1.0.0'
30
- # gem 'radiant-german_language_pack-extension', '~> 1.0.0'
31
- # gem 'radiant-italian_language_pack-extension', '~> 1.0.0'
32
- # gem 'radiant-japanese_language_pack-extension', '~> 1.0.0'
33
- # gem 'radiant-russian_language_pack-extension', '~> 1.0.0'
28
+ # gem "radiant-dutch_language_pack-extension", "~> 1.0.0"
29
+ # gem "radiant-french_language_pack-extension", "~> 1.0.0"
30
+ # gem "radiant-german_language_pack-extension", "~> 1.0.0"
31
+ # gem "radiant-italian_language_pack-extension", "~> 1.0.0"
32
+ # gem "radiant-japanese_language_pack-extension", "~> 1.0.0"
33
+ # gem "radiant-russian_language_pack-extension", "~> 1.0.0"
34
34
 
35
35
  # A standard gem extension
36
- # gem 'radiant-example-extension', :version => '~> 1.0.0'
36
+ # gem "radiant-example-extension", :version => "~> 1.0.0"
37
37
 
38
38
  # Your own forked extension
39
- # gem 'radiant-modified-extension', :git => 'git://github.com/your/fork.git'
39
+ # gem "radiant-modified-extension", :git => "git://github.com/your/fork.git"
40
40
 
41
41
  # A local extension in development
42
- # gem 'radiant-new-extension', :path => '/path/to/extension/root'
42
+ # gem "radiant-new-extension", :path => "/path/to/extension/root"
43
43
 
44
44
  # Gems you would like to have in your development environment
45
45
  # group :development do
46
- # gem 'wirble'
46
+ # gem "wirble"
47
47
  # end
48
48
 
49
49
  # If you're running tests or specs
50
50
  # group :test do
51
- # gem "cucumber-rails", "~> 0.3.2"
52
- # gem "database_cleaner", "~> 0.6.5"
53
- # gem "webrat", "~> 0.7.3"
54
- # gem "rspec-rails", "~> 1.3.3"
55
- # gem "sqlite3", "~> 1.3.4"
56
- # gem "ZenTest", "4.6.0"
57
- # end
51
+ # gem "cucumber-rails", "~> 0.3.2"
52
+ # gem "database_cleaner", "~> 0.6.5"
53
+ # gem "webrat", "~> 0.7.3"
54
+ # gem "rspec-rails", "~> 1.3.3"
55
+ # gem "sqlite3", "~> 1.3.4"
56
+ # gem "ZenTest", "4.6.0"
57
+ # end