trusty-cms 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (380) hide show
  1. data/.gitignore +4 -1
  2. data/CHANGELOG.md +1 -1
  3. data/Gemfile +12 -8
  4. data/Gemfile.lock +141 -82
  5. data/LICENSE.md +1 -1
  6. data/README.md +48 -5
  7. data/Vagrantfile +122 -0
  8. data/{public → app/assets}/images/admin/add_tab.png +0 -0
  9. data/app/assets/images/admin/animated-overlay.gif +0 -0
  10. data/{public → app/assets}/images/admin/avatar_32x32.png +0 -0
  11. data/{public → app/assets}/images/admin/avatar_64x64.png +0 -0
  12. data/{public → app/assets}/images/admin/avatar_96x96.png +0 -0
  13. data/{public → app/assets}/images/admin/brown_bottom_line.gif +0 -0
  14. data/{public → app/assets}/images/admin/calendar_down.gif +0 -0
  15. data/{public → app/assets}/images/admin/collapse.png +0 -0
  16. data/{public/images/admin/expand.png → app/assets/images/admin/collapsed.png} +0 -0
  17. data/{public → app/assets}/images/admin/draft_page.png +0 -0
  18. data/{public → app/assets}/images/admin/image.png +0 -0
  19. data/{public → app/assets}/images/admin/javascript.png +0 -0
  20. data/{public → app/assets}/images/admin/layout.png +0 -0
  21. data/{public → app/assets}/images/admin/metadata_toggle.png +0 -0
  22. data/{public → app/assets}/images/admin/minus.png +0 -0
  23. data/{public → app/assets}/images/admin/minus_disabled.png +0 -0
  24. data/{public → app/assets}/images/admin/minus_grey.png +0 -0
  25. data/{public → app/assets}/images/admin/navigation_secondary_separator.gif +0 -0
  26. data/{public → app/assets}/images/admin/page.png +0 -0
  27. data/{public → app/assets}/images/admin/plus.png +0 -0
  28. data/{public → app/assets}/images/admin/plus_disabled.png +0 -0
  29. data/{public → app/assets}/images/admin/plus_grey.png +0 -0
  30. data/{public → app/assets}/images/admin/popup_border_background.png +0 -0
  31. data/{public → app/assets}/images/admin/popup_border_bottom_left.png +0 -0
  32. data/{public → app/assets}/images/admin/popup_border_bottom_right.png +0 -0
  33. data/{public → app/assets}/images/admin/popup_border_top_left.png +0 -0
  34. data/{public → app/assets}/images/admin/popup_border_top_right.png +0 -0
  35. data/{public → app/assets}/images/admin/search.png +0 -0
  36. data/{public → app/assets}/images/admin/single_form_shadow.png +0 -0
  37. data/{public → app/assets}/images/admin/snippet.png +0 -0
  38. data/{public → app/assets}/images/admin/spinner.gif +0 -0
  39. data/{public → app/assets}/images/admin/status_background.png +0 -0
  40. data/{public → app/assets}/images/admin/status_bottom_left.png +0 -0
  41. data/{public → app/assets}/images/admin/status_bottom_right.png +0 -0
  42. data/{public → app/assets}/images/admin/status_spinner.gif +0 -0
  43. data/{public → app/assets}/images/admin/status_top_left.png +0 -0
  44. data/{public → app/assets}/images/admin/status_top_right.png +0 -0
  45. data/{public → app/assets}/images/admin/stylesheet.png +0 -0
  46. data/{public → app/assets}/images/admin/tab_close.png +0 -0
  47. data/app/assets/images/admin/ui-bg_flat_75_ffffff_40x100.png +0 -0
  48. data/app/assets/images/admin/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  49. data/app/assets/images/admin/ui-bg_glass_65_ffffff_1x400.png +0 -0
  50. data/app/assets/images/admin/ui-bg_glass_75_dadada_1x400.png +0 -0
  51. data/app/assets/images/admin/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  52. data/app/assets/images/admin/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  53. data/app/assets/images/admin/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  54. data/app/assets/images/admin/ui-icons_222222_256x240.png +0 -0
  55. data/app/assets/images/admin/ui-icons_2e83ff_256x240.png +0 -0
  56. data/app/assets/images/admin/ui-icons_454545_256x240.png +0 -0
  57. data/app/assets/images/admin/ui-icons_888888_256x240.png +0 -0
  58. data/app/assets/images/admin/ui-icons_cd0a0a_256x240.png +0 -0
  59. data/{public → app/assets}/images/admin/upload.png +0 -0
  60. data/{public → app/assets}/images/admin/virtual_page.png +0 -0
  61. data/{public → app/assets}/images/radiant/radiant-badge-color.png +0 -0
  62. data/app/assets/javascripts/admin.js +35 -0
  63. data/app/assets/javascripts/admin/autopopulate-breadcrumb.js +35 -0
  64. data/{public → app/assets}/javascripts/admin/cookie.js +13 -13
  65. data/app/assets/javascripts/admin/datecheck.js +7 -0
  66. data/app/assets/javascripts/admin/dropdown.js +26 -0
  67. data/app/assets/javascripts/admin/jquery-ui.js +2371 -0
  68. data/app/assets/javascripts/admin/jquery.treetable.js +629 -0
  69. data/app/assets/javascripts/admin/jquery.validate.min.js +4 -0
  70. data/app/assets/javascripts/admin/modernizr.js +409 -0
  71. data/app/assets/javascripts/admin/more-or-less.js +38 -0
  72. data/app/assets/javascripts/admin/page-edit.js +51 -0
  73. data/app/assets/javascripts/admin/pagefield.js +35 -0
  74. data/app/assets/javascripts/admin/persist.min.js +31 -0
  75. data/app/assets/javascripts/admin/popup.js +40 -0
  76. data/app/assets/javascripts/admin/preview.js +40 -0
  77. data/app/assets/javascripts/admin/tabcontrol.js.erb +81 -0
  78. data/app/assets/javascripts/admin/tags.js +41 -0
  79. data/app/assets/javascripts/admin/treetable.js +50 -0
  80. data/app/assets/javascripts/admin/utilities.js +5 -0
  81. data/app/assets/javascripts/admin/validation.js +7 -0
  82. data/app/assets/javascripts/admin/validations/user_validations.js +21 -0
  83. data/app/assets/javascripts/ckeditor/config.js +10 -0
  84. data/{config/initializers/configuration_extensions.rb → app/assets/javascripts/ckeditor/contents.css} +0 -0
  85. data/app/assets/javascripts/notes.md +40 -0
  86. data/app/assets/stylesheets/admin/_base.scss +17 -0
  87. data/app/assets/stylesheets/admin/main.scss +34 -0
  88. data/app/assets/stylesheets/admin/modules/_boxes.scss +7 -0
  89. data/app/assets/stylesheets/admin/modules/_gradients.scss +5 -0
  90. data/app/assets/stylesheets/admin/modules/_links.scss +24 -0
  91. data/app/assets/stylesheets/admin/partials/_actions.scss +118 -0
  92. data/app/assets/stylesheets/admin/partials/_avatars.scss +12 -0
  93. data/app/assets/stylesheets/admin/partials/_content.scss +74 -0
  94. data/app/assets/stylesheets/admin/partials/_dateinput.scss +71 -0
  95. data/app/assets/stylesheets/admin/partials/_deprecated.scss +65 -0
  96. data/app/assets/stylesheets/admin/partials/_dropdown.scss +34 -0
  97. data/app/assets/stylesheets/admin/partials/_footer.scss +14 -0
  98. data/app/assets/stylesheets/admin/partials/_forms.scss +419 -0
  99. data/app/assets/stylesheets/admin/partials/_header.scss +135 -0
  100. data/app/assets/stylesheets/admin/partials/_index.scss +198 -0
  101. data/app/assets/stylesheets/admin/partials/_jquery-ui-structure.scss +258 -0
  102. data/app/assets/stylesheets/admin/partials/_jquery-ui-theme.scss +410 -0
  103. data/app/assets/stylesheets/admin/partials/_jquery-ui.scss +650 -0
  104. data/app/assets/stylesheets/admin/partials/_layout.scss +14 -0
  105. data/app/assets/stylesheets/admin/partials/_messages.scss +13 -0
  106. data/app/assets/stylesheets/admin/partials/_popup.scss +263 -0
  107. data/app/assets/stylesheets/admin/partials/_tabcontrol.scss +94 -0
  108. data/app/assets/stylesheets/admin/partials/_toolbar.scss +40 -0
  109. data/app/assets/stylesheets/admin/partials/_treetable.scss +120 -0
  110. data/app/assets/stylesheets/admin/partials/_typography.scss +77 -0
  111. data/app/assets/stylesheets/admin/partials/_validations.scss +22 -0
  112. data/app/controllers/admin/configuration_controller.rb +9 -9
  113. data/app/controllers/admin/extensions_controller.rb +1 -1
  114. data/app/controllers/admin/page_parts_controller.rb +1 -1
  115. data/app/controllers/admin/pages_controller.rb +8 -5
  116. data/app/controllers/admin/preferences_controller.rb +8 -25
  117. data/app/controllers/admin/resource_controller.rb +19 -20
  118. data/app/controllers/admin/users_controller.rb +7 -7
  119. data/app/controllers/admin/welcome_controller.rb +9 -9
  120. data/app/controllers/application_controller.rb +13 -24
  121. data/app/controllers/site_controller.rb +2 -1
  122. data/app/helpers/admin/configuration_helper.rb +20 -19
  123. data/app/helpers/admin/extensions_helper.rb +1 -1
  124. data/app/helpers/admin/layouts_helper.rb +1 -19
  125. data/app/helpers/admin/node_helper.rb +21 -7
  126. data/app/helpers/admin/pages_helper.rb +4 -92
  127. data/app/helpers/admin/preferences_helper.rb +1 -1
  128. data/app/helpers/admin/regions_helper.rb +5 -4
  129. data/app/helpers/application_helper.rb +62 -64
  130. data/app/models/deprecated_tags.rb +1 -21
  131. data/app/models/file_not_found_page.rb +8 -8
  132. data/app/models/layout.rb +3 -2
  133. data/app/models/menu_renderer.rb +7 -7
  134. data/app/models/page.rb +8 -7
  135. data/app/models/page_context.rb +10 -10
  136. data/app/models/page_field.rb +1 -0
  137. data/app/models/page_part.rb +5 -5
  138. data/app/models/standard_tags.rb +95 -75
  139. data/app/models/status.rb +8 -8
  140. data/app/models/text_filter.rb +5 -5
  141. data/app/models/trusty_cms/config.rb +36 -42
  142. data/app/models/trusty_cms/page_response_cache_director.rb +2 -1
  143. data/app/models/user.rb +1 -10
  144. data/app/models/user_action_observer.rb +5 -5
  145. data/app/views/admin/configuration/edit.html.haml +5 -5
  146. data/app/views/admin/configuration/show.html.haml +11 -11
  147. data/app/views/admin/extensions/index.html.haml +4 -4
  148. data/app/views/admin/layouts/_form.html.haml +6 -7
  149. data/app/views/admin/layouts/_popups.html.haml +4 -0
  150. data/app/views/admin/layouts/edit.html.haml +4 -2
  151. data/app/views/admin/layouts/new.html.haml +1 -1
  152. data/app/views/admin/layouts/remove.html.haml +3 -3
  153. data/app/views/admin/page_fields/_page_field.html.haml +3 -2
  154. data/app/views/admin/page_parts/_page_part.html.haml +4 -5
  155. data/app/views/admin/pages/_fields.html.haml +2 -3
  156. data/app/views/admin/pages/_meta_row.html.haml +2 -2
  157. data/app/views/admin/pages/_node.html.haml +4 -9
  158. data/app/views/admin/pages/_popups.html.haml +9 -5
  159. data/app/views/admin/pages/children.html.haml +5 -1
  160. data/app/views/admin/pages/edit.html.haml +1 -3
  161. data/app/views/admin/pages/index.html.haml +2 -2
  162. data/app/views/admin/pages/new.html.haml +2 -4
  163. data/app/views/admin/pages/remove.html.haml +8 -7
  164. data/app/views/admin/preferences/edit.html.haml +14 -14
  165. data/app/views/admin/references/_tag_reference.haml +1 -1
  166. data/app/views/admin/references/filters.haml +1 -1
  167. data/app/views/admin/references/tags.haml +9 -27
  168. data/app/views/admin/users/_avatar.html.haml +2 -2
  169. data/app/views/admin/users/_form.html.haml +16 -16
  170. data/app/views/admin/users/_password_fields.html.haml +3 -3
  171. data/app/views/admin/users/edit.html.haml +1 -1
  172. data/app/views/admin/users/new.html.haml +2 -2
  173. data/app/views/admin/users/remove.html.haml +4 -4
  174. data/app/views/admin/welcome/login.html.haml +6 -6
  175. data/app/views/layouts/application.html.haml +22 -11
  176. data/app/views/site/not_found.html.haml +1 -1
  177. data/app/views/site/show_page.html.haml +1 -0
  178. data/bin/ci/before_script +0 -5
  179. data/config.ru +4 -0
  180. data/config/application.rb +118 -108
  181. data/config/boot.rb +1 -1
  182. data/config/database.mysql.yml +3 -6
  183. data/config/environments/development.rb +17 -5
  184. data/config/environments/production.rb +20 -3
  185. data/config/environments/test.rb +17 -0
  186. data/config/initializers/active_record_extensions.rb +1 -1
  187. data/config/initializers/haml.rb +1 -1
  188. data/config/initializers/rails_patch.rb +1 -1
  189. data/config/initializers/secret_token.rb +7 -0
  190. data/config/initializers/string_extensions.rb +1 -1
  191. data/config/initializers/symbol_extensions.rb +1 -1
  192. data/config/initializers/{radiant_config.rb → trusty_cms_config.rb} +2 -2
  193. data/config/locales/en.yml +33 -33
  194. data/config/locales/en_available_tags.yml +62 -62
  195. data/config/routes.rb +18 -10
  196. data/db/migrate/001_create_radiant_tables.rb +3 -3
  197. data/db/migrate/002_insert_initial_data.rb +2 -2
  198. data/db/migrate/005_add_virtual_column_to_page.rb +1 -1
  199. data/db/migrate/006_integer_columns_to_boolean.rb +9 -9
  200. data/db/migrate/007_remove_virtual_column_from_page.rb +1 -1
  201. data/db/migrate/008_add_virtual_column_to_page_again.rb +1 -1
  202. data/db/migrate/010_merge_behaviors_and_pages.rb +6 -6
  203. data/db/migrate/014_rename_config_default_parts_key.rb +3 -3
  204. data/db/migrate/015_add_optimistic_locking.rb +2 -2
  205. data/db/migrate/020_add_session_info_to_users.rb +1 -1
  206. data/db/migrate/20081203140407_add_indexes.rb +2 -2
  207. data/db/migrate/20090226140109_add_user_language.rb +2 -2
  208. data/db/migrate/20100805155020_convert_page_metas.rb +1 -1
  209. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +1 -1
  210. data/db/migrate/20111016150725_extend_page_part_content_limit.rb +1 -1
  211. data/db/migrate/20120209231801_change_pages_allowed_children_cache_to_text.rb +3 -4
  212. data/db/schema.rb +0 -6
  213. data/lib/active_record_extensions/active_record_extensions.rb +3 -3
  214. data/lib/annotatable.rb +3 -3
  215. data/lib/configuration_extensions/configuration_extensions.rb +7 -42
  216. data/lib/generators/extension/extension_generator.rb +11 -11
  217. data/lib/generators/extension/templates/README.md +1 -1
  218. data/lib/generators/extension/templates/cucumber.yml +1 -1
  219. data/lib/generators/extension/templates/cucumber_env.rb +2 -2
  220. data/lib/generators/extension/templates/cucumber_paths.rb +7 -7
  221. data/lib/generators/extension/templates/en.yml +1 -1
  222. data/lib/generators/extension/templates/functional_test.rb +3 -3
  223. data/lib/generators/extension/templates/migration.rb +4 -4
  224. data/lib/generators/extension/templates/routes.rb +1 -1
  225. data/lib/generators/extension/templates/spec_helper.rb +1 -1
  226. data/lib/generators/extension/templates/tasks.rake +5 -5
  227. data/lib/generators/extension/templates/test_helper.rb +5 -5
  228. data/lib/generators/extension_controller/extension_controller_generator.rb +11 -11
  229. data/lib/generators/extension_controller/templates/helper.rb +1 -1
  230. data/lib/generators/extension_controller/templates/helper_spec.rb +2 -2
  231. data/lib/generators/extension_controller/templates/view.html.erb +1 -1
  232. data/lib/generators/extension_controller/templates/view_spec.rb +1 -1
  233. data/lib/generators/extension_mailer/extension_mailer_generator.rb +10 -10
  234. data/lib/generators/extension_mailer/templates/mailer.rb +2 -2
  235. data/lib/generators/extension_migration/extension_migration_generator.rb +5 -5
  236. data/lib/generators/extension_model/extension_model_generator.rb +10 -10
  237. data/lib/generators/generator_base_extension.rb +1 -1
  238. data/lib/generators/instance/instance_generator.rb +14 -14
  239. data/lib/generators/instance/templates/databases/db2.yml +3 -3
  240. data/lib/generators/instance/templates/databases/mysql.yml +2 -2
  241. data/lib/generators/instance/templates/instance_boot.rb +4 -4
  242. data/lib/generators/instance/templates/instance_environment.rb +13 -3
  243. data/lib/generators/instance/templates/instance_radiant_config.rb +2 -2
  244. data/lib/generators/language_extension/language_extension_generator.rb +14 -14
  245. data/lib/generators/language_extension/templates/available_tags.yml +91 -91
  246. data/lib/generators/language_extension/templates/cucumber.yml +1 -1
  247. data/lib/generators/language_extension/templates/cucumber_env.rb +3 -3
  248. data/lib/generators/language_extension/templates/cucumber_paths.rb +4 -4
  249. data/lib/generators/language_extension/templates/extension.rb +1 -1
  250. data/lib/generators/language_extension/templates/functional_test.rb +3 -3
  251. data/lib/generators/language_extension/templates/lang.yml +39 -39
  252. data/lib/generators/language_extension/templates/spec_helper.rb +1 -1
  253. data/lib/generators/language_extension/templates/tasks.rake +3 -3
  254. data/lib/generators/language_extension/templates/test_helper.rb +5 -5
  255. data/lib/inheritable_class_attributes.rb +11 -11
  256. data/lib/local_time.rb +2 -2
  257. data/lib/login_system.rb +5 -6
  258. data/lib/method_observer.rb +9 -9
  259. data/lib/simpleton.rb +7 -7
  260. data/lib/string_extensions/string_extensions.rb +5 -5
  261. data/lib/symbol_extensions/symbol_extensions.rb +1 -1
  262. data/lib/tasks/database.rake +17 -20
  263. data/lib/tasks/extensions.rake +2 -2
  264. data/lib/tasks/framework.rake +13 -13
  265. data/lib/tasks/instance.rake +1 -1
  266. data/lib/tasks/radiant_config.rake +3 -3
  267. data/lib/tasks/translate.rake +10 -10
  268. data/lib/tasks/undefine.rake +1 -5
  269. data/lib/translation_support.rb +7 -7
  270. data/lib/trusty_cms.rb +1 -1
  271. data/lib/trusty_cms/admin_ui.rb +34 -34
  272. data/lib/trusty_cms/admin_ui/region_partials.rb +3 -3
  273. data/lib/trusty_cms/admin_ui/region_set.rb +5 -5
  274. data/lib/trusty_cms/available_locales.rb +1 -1
  275. data/lib/trusty_cms/config/definition.rb +21 -21
  276. data/lib/trusty_cms/engine.rb +4 -7
  277. data/lib/trusty_cms/extension.rb +15 -15
  278. data/lib/trusty_cms/extension/script.rb +7 -7
  279. data/lib/trusty_cms/extension_loader.rb +23 -11
  280. data/lib/trusty_cms/extension_migrator.rb +9 -9
  281. data/lib/trusty_cms/extension_path.rb +23 -23
  282. data/lib/trusty_cms/initializer.rb +33 -15
  283. data/lib/trusty_cms/pagination/link_renderer.rb +3 -3
  284. data/lib/trusty_cms/resource_responses.rb +15 -15
  285. data/lib/trusty_cms/setup.rb +35 -33
  286. data/lib/trusty_cms/taggable.rb +18 -18
  287. data/public/404.html +1 -1
  288. data/public/500.html +1 -1
  289. data/public/loading-iframe.html +1 -1
  290. data/public/robots.txt +1 -1
  291. data/script/rails +0 -0
  292. data/spec/features/admin_login_spec.rb +92 -0
  293. data/spec/features/config_spec.rb +34 -0
  294. data/spec/features/javascript_smoke_spec.rb +59 -0
  295. data/spec/features/layouts_spec.rb +49 -0
  296. data/spec/features/pages_spec.rb +55 -0
  297. data/spec/fixtures/users.yml +16 -0
  298. data/spec/helpers/regions_helper_spec.rb +16 -0
  299. data/spec/rails_helper.rb +74 -0
  300. data/spec/spec_helper.rb +78 -0
  301. data/spec/support/custom_actions.rb +9 -0
  302. data/trusty_cms.gemspec +22 -25
  303. metadata +393 -242
  304. checksums.yaml +0 -15
  305. data/config/compass.config +0 -15
  306. data/config/database.db2.yml +0 -20
  307. data/config/database.postgresql.yml +0 -25
  308. data/config/database.sqlite.yml +0 -16
  309. data/config/database.sqlserver.yml +0 -20
  310. data/config/initializers/object_extensions.rb +0 -1
  311. data/config/preinitializer.rb +0 -18
  312. data/lib/object_extensions/object_extensions.rb +0 -5
  313. data/lib/tasks/prototype.rake +0 -31
  314. data/lib/tasks/release.rake +0 -131
  315. data/lib/trusty_cms/cache.rb +0 -100
  316. data/public/javascripts/admin/application.js +0 -94
  317. data/public/javascripts/admin/codearea.js +0 -165
  318. data/public/javascripts/admin/controls.js +0 -965
  319. data/public/javascripts/admin/dateinput.js +0 -402
  320. data/public/javascripts/admin/dragdrop.js +0 -974
  321. data/public/javascripts/admin/dropdown.js +0 -216
  322. data/public/javascripts/admin/effects.js +0 -1122
  323. data/public/javascripts/admin/lowpro.js +0 -340
  324. data/public/javascripts/admin/overrides.js +0 -1
  325. data/public/javascripts/admin/page_preview.js +0 -41
  326. data/public/javascripts/admin/pagefield.js +0 -54
  327. data/public/javascripts/admin/pagestatus.js +0 -17
  328. data/public/javascripts/admin/popup.js +0 -339
  329. data/public/javascripts/admin/prototype.js +0 -4874
  330. data/public/javascripts/admin/ruledtable.js +0 -13
  331. data/public/javascripts/admin/shortcuts.js +0 -33
  332. data/public/javascripts/admin/sitemap.js +0 -149
  333. data/public/javascripts/admin/status.js +0 -233
  334. data/public/javascripts/admin/tabcontrol.js +0 -123
  335. data/public/javascripts/admin/toggle.js +0 -430
  336. data/public/javascripts/admin/utility.js +0 -53
  337. data/public/javascripts/admin/validationerror.js +0 -18
  338. data/public/stylesheets/sass/admin/_base.sass +0 -18
  339. data/public/stylesheets/sass/admin/main.sass +0 -27
  340. data/public/stylesheets/sass/admin/modules/_boxes.sass +0 -6
  341. data/public/stylesheets/sass/admin/modules/_gradients.sass +0 -4
  342. data/public/stylesheets/sass/admin/modules/_links.sass +0 -18
  343. data/public/stylesheets/sass/admin/overrides.sass +0 -2
  344. data/public/stylesheets/sass/admin/partials/_actions.sass +0 -96
  345. data/public/stylesheets/sass/admin/partials/_avatars.sass +0 -10
  346. data/public/stylesheets/sass/admin/partials/_content.sass +0 -58
  347. data/public/stylesheets/sass/admin/partials/_dateinput.sass +0 -62
  348. data/public/stylesheets/sass/admin/partials/_deprecated.sass +0 -55
  349. data/public/stylesheets/sass/admin/partials/_dropdown.sass +0 -28
  350. data/public/stylesheets/sass/admin/partials/_footer.sass +0 -12
  351. data/public/stylesheets/sass/admin/partials/_forms.sass +0 -322
  352. data/public/stylesheets/sass/admin/partials/_header.sass +0 -114
  353. data/public/stylesheets/sass/admin/partials/_index.sass +0 -147
  354. data/public/stylesheets/sass/admin/partials/_layout.sass +0 -10
  355. data/public/stylesheets/sass/admin/partials/_messages.sass +0 -10
  356. data/public/stylesheets/sass/admin/partials/_popup.sass +0 -213
  357. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +0 -72
  358. data/public/stylesheets/sass/admin/partials/_toolbar.sass +0 -31
  359. data/public/stylesheets/sass/admin/partials/_typography.sass +0 -60
  360. data/public/stylesheets/sass/admin/partials/_validations.sass +0 -19
  361. data/rails/init.rb +0 -1
  362. data/script/about +0 -4
  363. data/script/breakpointer +0 -3
  364. data/script/console +0 -3
  365. data/script/dbconsole +0 -3
  366. data/script/destroy +0 -3
  367. data/script/generate +0 -3
  368. data/script/performance/benchmarker +0 -3
  369. data/script/performance/profiler +0 -3
  370. data/script/performance/request +0 -3
  371. data/script/plugin +0 -3
  372. data/script/process/inspector +0 -3
  373. data/script/process/reaper +0 -3
  374. data/script/process/spawner +0 -3
  375. data/script/process/spinner +0 -3
  376. data/script/runner +0 -3
  377. data/script/server +0 -3
  378. data/script/version +0 -5
  379. data/spec/ci/database.postgresql.yml +0 -4
  380. data/spec/ci/database.sqlite.yml +0 -3
@@ -12,31 +12,11 @@ module DeprecatedTags
12
12
  end
13
13
  end
14
14
 
15
- deprecated_tag 'meta:description', :deadline => '2.0' do |tag|
16
- show_tag = tag.attr['tag'] != 'false' || false
17
- description = CGI.escapeHTML(tag.locals.page.field(:description).try(:content))
18
- if show_tag
19
- "<meta name=\"description\" content=\"#{description}\" />"
20
- else
21
- description
22
- end
23
- end
24
-
25
- deprecated_tag 'meta:keywords', :deadline => '2.0' do |tag|
26
- show_tag = tag.attr['tag'] != 'false' || false
27
- keywords = CGI.escapeHTML(tag.locals.page.field(:keywords).try(:content))
28
- if show_tag
29
- "<meta name=\"keywords\" content=\"#{keywords}\" />"
30
- else
31
- keywords
32
- end
33
- end
34
-
35
15
  deprecated_tag "rfc1123_date", :deadline => '2.0' do |tag|
36
16
  page = tag.locals.page
37
17
  if date = page.published_at || page.created_at
38
18
  CGI.rfc1123_date(date.to_time)
39
19
  end
40
20
  end
41
-
21
+
42
22
  end
@@ -1,32 +1,32 @@
1
1
  class FileNotFoundPage < Page
2
-
2
+
3
3
  def allowed_children
4
4
  []
5
5
  end
6
-
6
+
7
7
  description %{
8
8
  A "File Not Found" page can be used to override the default error
9
9
  page in the event that a page is not found among a page's children.
10
-
10
+
11
11
  To create a "File Not Found" error page for an entire Web site, create
12
12
  a page that is a child of the root page and assign it "File Not Found"
13
13
  page type.
14
14
  }
15
-
15
+
16
16
  tag "attempted_url" do |tag|
17
17
  CGI.escapeHTML(request.request_uri) unless request.nil?
18
18
  end
19
-
19
+
20
20
  def virtual?
21
21
  true
22
22
  end
23
-
23
+
24
24
  def response_code
25
25
  404
26
26
  end
27
-
27
+
28
28
  def cache?
29
29
  false
30
30
  end
31
-
31
+
32
32
  end
data/app/models/layout.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  class Layout < ActiveRecord::Base
2
-
2
+ attr_protected :created_at, :updated_at
3
+
3
4
  # Default Order
4
5
  default_scope :order => "name"
5
6
 
@@ -12,4 +13,4 @@ class Layout < ActiveRecord::Base
12
13
  validates_presence_of :name
13
14
  validates_uniqueness_of :name
14
15
  validates_length_of :name, :maximum => 100
15
- end
16
+ end
@@ -38,7 +38,7 @@ module MenuRenderer
38
38
  (allowed_children_cache.to_s.split(',') - Array(excluded_class_names)).map do |name|
39
39
  begin
40
40
  name.constantize
41
- rescue LoadError, NameError => e
41
+ rescue LoadError, NameError => _
42
42
  nil
43
43
  end
44
44
  end.compact
@@ -64,7 +64,7 @@ module MenuRenderer
64
64
  end
65
65
 
66
66
  def menu_list
67
- view.content_tag :ul, menu_items.join, :class => 'menu', :id => "allowed_children_#{id}"
67
+ view.content_tag :ul, menu_items.join.html_safe, :class => 'menu', :id => "allowed_children_#{id}"
68
68
  end
69
69
 
70
70
  def remove_link
@@ -80,15 +80,15 @@ module MenuRenderer
80
80
  end
81
81
 
82
82
  def disabled_add_child_link
83
- view.content_tag :span, view.image('plus_disabled') + ' ' + I18n.t('add_child'), :class => 'action disabled'
83
+ view.content_tag :span, view.image('plus_disabled') + ' Add Child', :class => 'action disabled'
84
84
  end
85
85
 
86
86
  def add_child_link
87
- view.link_to((view.image('plus') + ' ' + I18n.t('add_child')), view.new_admin_page_child_path(self, :page_class => default_child.name), :class => "action")
87
+ view.link_to((view.image('plus') + ' Add Child'), view.new_admin_page_child_path(self, :page_class => default_child.name), :class => "action")
88
88
  end
89
89
 
90
90
  def add_child_link_with_menu_hook
91
- view.link_to((view.image('plus') + ' ' + I18n.t('add_child')), "#allowed_children_#{id}", :class => "action dropdown")
91
+ view.link_to((view.image('plus') + ' Add Child'), "#allowed_children_#{id}", :class => "action dropdown")
92
92
  end
93
93
 
94
94
  def add_child_menu
@@ -127,7 +127,7 @@ module MenuRenderer
127
127
  text = link_text_for_child_class(child_class.name)
128
128
  view.link_to(text, path, :title => title)
129
129
  end
130
-
130
+
131
131
  def link_text_for_child_class(given_class_name)
132
132
  translation_key = if given_class_name == 'Page' || given_class_name.blank?
133
133
  'normal_page'
@@ -137,4 +137,4 @@ module MenuRenderer
137
137
  fallback = given_class_name == 'Page' ? 'Page' : given_class_name.sub('Page','').titleize
138
138
  I18n.t(translation_key, :default => fallback)
139
139
  end
140
- end
140
+ end
data/app/models/page.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'acts_as_tree'
2
2
 
3
3
  class Page < ActiveRecord::Base
4
+ attr_protected :created_at, :updated_at
4
5
 
5
6
  class MissingRootPageError < StandardError
6
7
  def initialize(message = 'Database missing root page'); super end
@@ -41,7 +42,7 @@ class Page < ActiveRecord::Base
41
42
  class_attribute :default_child
42
43
  self.default_child = self
43
44
 
44
- set_inheritance_column :class_name
45
+ self.inheritance_column = 'class_name'
45
46
 
46
47
  def layout_with_inheritance
47
48
  unless layout_without_inheritance
@@ -100,15 +101,15 @@ class Page < ActiveRecord::Base
100
101
  def published?
101
102
  status == Status[:published]
102
103
  end
103
-
104
+
104
105
  def scheduled?
105
106
  status == Status[:scheduled]
106
107
  end
107
-
108
+
108
109
  def status
109
110
  Status.find(self.status_id)
110
111
  end
111
-
112
+
112
113
  def status=(value)
113
114
  self.status_id = value.id
114
115
  end
@@ -202,13 +203,13 @@ class Page < ActiveRecord::Base
202
203
 
203
204
  def update_status
204
205
  self.published_at = Time.zone.now if published? && self.published_at == nil
205
-
206
+
206
207
  if self.published_at != nil && (published? || scheduled?)
207
208
  self[:status_id] = Status[:scheduled].id if self.published_at > Time.zone.now
208
209
  self[:status_id] = Status[:published].id if self.published_at <= Time.zone.now
209
210
  end
210
211
 
211
- true
212
+ true
212
213
  end
213
214
 
214
215
  def to_xml(options={}, &block)
@@ -260,7 +261,7 @@ class Page < ActiveRecord::Base
260
261
  @display_name = @display_name + " - not installed" if missing? && @display_name !~ /not installed/
261
262
  @display_name
262
263
  end
263
-
264
+
264
265
  def display_name=(string)
265
266
  display_name(string)
266
267
  end
@@ -1,7 +1,7 @@
1
1
  class PageContext < Radius::Context
2
-
2
+
3
3
  attr_reader :page
4
-
4
+
5
5
  def initialize(page)
6
6
  super
7
7
  @page = page
@@ -10,14 +10,14 @@ class PageContext < Radius::Context
10
10
  define_tag(name) { |tag_binding| page.render_tag(name, tag_binding) }
11
11
  end
12
12
  end
13
-
13
+
14
14
  def dup
15
15
  rv = self.class.new(page)
16
16
  rv.globals = globals.dup
17
17
  rv.definitions = definitions.dup
18
18
  rv
19
19
  end
20
-
20
+
21
21
  def render_tag(name, attributes = {}, &block)
22
22
  binding = @tag_binding_stack.last
23
23
  locals = binding ? binding.locals : globals
@@ -28,26 +28,26 @@ class PageContext < Radius::Context
28
28
  @tag_binding_stack.pop unless @tag_binding_stack.last == binding
29
29
  render_error_message(e.message)
30
30
  end
31
-
31
+
32
32
  def tag_missing(name, attributes = {}, &block)
33
33
  super
34
34
  rescue Radius::UndefinedTagError => e
35
35
  raise StandardTags::TagError.new(e.message)
36
36
  end
37
-
37
+
38
38
  private
39
-
39
+
40
40
  def render_error_message(message)
41
41
  "<div><strong>#{message}</strong></div>"
42
42
  end
43
-
43
+
44
44
  def set_process_variables(page)
45
45
  page.request ||= @page.request
46
46
  page.response ||= @page.response
47
47
  end
48
-
48
+
49
49
  def raise_errors?
50
50
  Rails.env != 'production'
51
51
  end
52
-
52
+
53
53
  end
@@ -1,3 +1,4 @@
1
1
  class PageField < ActiveRecord::Base
2
+ attr_accessible :name, :content
2
3
  validates_presence_of :name
3
4
  end
@@ -1,20 +1,20 @@
1
1
  class PagePart < ActiveRecord::Base
2
-
2
+ attr_accessible :name, :filter_id, :content
3
+
3
4
  # Default Order
4
5
  default_scope :order => 'name'
5
-
6
+
6
7
  # Associations
7
8
  belongs_to :page
8
-
9
+
9
10
  # Validations
10
11
  validates_presence_of :name
11
12
  validates_length_of :name, :maximum => 100
12
13
  validates_length_of :filter_id, :maximum => 25, :allow_nil => true
13
-
14
+
14
15
  object_id_attr :filter, TextFilter
15
16
 
16
17
  def after_initialize
17
18
  self.filter_id ||= TrustyCms::Config['defaults.page.filter'] if new_record?
18
19
  end
19
-
20
20
  end
@@ -15,7 +15,7 @@ module StandardTags
15
15
  Causes the tags referring to a page's attributes to refer to the current page.
16
16
 
17
17
  *Usage:*
18
-
18
+
19
19
  <pre><code><r:page>...</r:page></code></pre>
20
20
  }
21
21
  tag 'page' do |tag|
@@ -44,7 +44,7 @@ module StandardTags
44
44
  Gives access to a page's children.
45
45
 
46
46
  *Usage:*
47
-
47
+
48
48
  <pre><code><r:children>...</r:children></code></pre>
49
49
  }
50
50
  tag 'children' do |tag|
@@ -66,7 +66,7 @@ module StandardTags
66
66
  the first child. Takes the same ordering options as @<r:children:each>@.
67
67
 
68
68
  *Usage:*
69
-
69
+
70
70
  <pre><code><r:children:first>...</r:children:first></code></pre>
71
71
  }
72
72
  tag 'children:first' do |tag|
@@ -83,7 +83,7 @@ module StandardTags
83
83
  the last child. Takes the same ordering options as @<r:children:each>@.
84
84
 
85
85
  *Usage:*
86
-
86
+
87
87
  <pre><code><r:children:last>...</r:children:last></code></pre>
88
88
  }
89
89
  tag 'children:last' do |tag|
@@ -98,16 +98,16 @@ module StandardTags
98
98
  desc %{
99
99
  Cycles through each of the children. Inside this tag all page attribute tags
100
100
  are mapped to the current child page.
101
-
101
+
102
102
  Supply @paginated="true"@ to paginate the displayed list. will_paginate view helper
103
103
  options can also be specified, including @per_page@, @previous_label@, @next_label@,
104
104
  @class@, @separator@, @inner_window@ and @outer_window@.
105
105
 
106
106
  *Usage:*
107
-
107
+
108
108
  <pre><code><r:children:each [offset="number"] [limit="number"]
109
109
  [by="published_at|updated_at|created_at|slug|title|keywords|description"]
110
- [order="asc|desc"]
110
+ [order="asc|desc"]
111
111
  [status="draft|reviewed|published|hidden|all"]
112
112
  [paginated="true"]
113
113
  [per_page="number"]
@@ -125,7 +125,7 @@ module StandardTags
125
125
  be automatically display only the current page of results, with pagination controls at the bottom.
126
126
 
127
127
  *Usage:*
128
-
128
+
129
129
  <pre><code><r:children:each paginated="true" per_page="50" container="false" previous_label="foo" next_label="bar">
130
130
  <r:child>...</r:child>
131
131
  </r:children:each>
@@ -143,7 +143,7 @@ module StandardTags
143
143
  current child.
144
144
 
145
145
  *Usage:*
146
-
146
+
147
147
  <pre><code><r:children:each>
148
148
  <r:child>...</r:child>
149
149
  </r:children:each>
@@ -153,81 +153,81 @@ module StandardTags
153
153
  tag.locals.page = tag.locals.child
154
154
  tag.expand
155
155
  end
156
-
156
+
157
157
  desc %{
158
158
  Renders the tag contents only if the current page is the first child in the context of
159
159
  a children:each tag
160
-
160
+
161
161
  *Usage:*
162
-
162
+
163
163
  <pre><code><r:children:each>
164
164
  <r:if_first >
165
165
  ...
166
166
  </r:if_first>
167
167
  </r:children:each>
168
168
  </code></pre>
169
-
169
+
170
170
  }
171
171
  tag 'children:each:if_first' do |tag|
172
172
  tag.expand if tag.locals.first_child
173
173
  end
174
174
 
175
-
175
+
176
176
  desc %{
177
177
  Renders the tag contents unless the current page is the first child in the context of
178
178
  a children:each tag
179
-
179
+
180
180
  *Usage:*
181
-
181
+
182
182
  <pre><code><r:children:each>
183
183
  <r:unless_first >
184
184
  ...
185
185
  </r:unless_first>
186
186
  </r:children:each>
187
187
  </code></pre>
188
-
188
+
189
189
  }
190
190
  tag 'children:each:unless_first' do |tag|
191
191
  tag.expand unless tag.locals.first_child
192
192
  end
193
-
193
+
194
194
  desc %{
195
195
  Renders the tag contents only if the current page is the last child in the context of
196
196
  a children:each tag
197
-
197
+
198
198
  *Usage:*
199
-
199
+
200
200
  <pre><code><r:children:each>
201
201
  <r:if_last >
202
202
  ...
203
203
  </r:if_last>
204
204
  </r:children:each>
205
205
  </code></pre>
206
-
206
+
207
207
  }
208
208
  tag 'children:each:if_last' do |tag|
209
209
  tag.expand if tag.locals.last_child
210
210
  end
211
211
 
212
-
212
+
213
213
  desc %{
214
214
  Renders the tag contents unless the current page is the last child in the context of
215
215
  a children:each tag
216
-
216
+
217
217
  *Usage:*
218
-
218
+
219
219
  <pre><code><r:children:each>
220
220
  <r:unless_last >
221
221
  ...
222
222
  </r:unless_last>
223
223
  </r:children:each>
224
224
  </code></pre>
225
-
225
+
226
226
  }
227
227
  tag 'children:each:unless_last' do |tag|
228
228
  tag.expand unless tag.locals.last_child
229
229
  end
230
-
230
+
231
231
  desc %{
232
232
  Renders the tag contents only if the contents do not match the previous header. This
233
233
  is extremely useful for rendering date headers for a list of child pages.
@@ -241,7 +241,7 @@ module StandardTags
241
241
  separated list.
242
242
 
243
243
  *Usage:*
244
-
244
+
245
245
  <pre><code><r:children:each>
246
246
  <r:header [name="header_name"] [restart="name1[;name2;...]"]>
247
247
  ...
@@ -269,7 +269,7 @@ module StandardTags
269
269
  Page attribute tags inside this tag refer to the parent of the current page.
270
270
 
271
271
  *Usage:*
272
-
272
+
273
273
  <pre><code><r:parent>...</r:parent></code></pre>
274
274
  }
275
275
  tag "parent" do |tag|
@@ -283,7 +283,7 @@ module StandardTags
283
283
  is not the root page.
284
284
 
285
285
  *Usage:*
286
-
286
+
287
287
  <pre><code><r:if_parent>...</r:if_parent></code></pre>
288
288
  }
289
289
  tag "if_parent" do |tag|
@@ -296,7 +296,7 @@ module StandardTags
296
296
  is the root page.
297
297
 
298
298
  *Usage:*
299
-
299
+
300
300
  <pre><code><r:unless_parent>...</r:unless_parent></code></pre>
301
301
  }
302
302
  tag "unless_parent" do |tag|
@@ -311,7 +311,7 @@ module StandardTags
311
311
  non-virtual pages regardless of status.
312
312
 
313
313
  *Usage:*
314
-
314
+
315
315
  <pre><code><r:if_children [status="published"]>...</r:if_children></code></pre>
316
316
  }
317
317
  tag "if_children" do |tag|
@@ -326,21 +326,21 @@ module StandardTags
326
326
  regardless of status.
327
327
 
328
328
  *Usage:*
329
-
329
+
330
330
  <pre><code><r:unless_children [status="published"]>...</r:unless_children></code></pre>
331
331
  }
332
332
  tag "unless_children" do |tag|
333
333
  children = tag.locals.page.children.where(children_find_options(tag)[:conditions]).count
334
334
  tag.expand unless children > 0
335
335
  end
336
-
336
+
337
337
  desc %{
338
338
  Aggregates the children of multiple paths using the @paths@ attribute.
339
339
  Useful for combining many different sections/categories into a single
340
340
  feed or listing.
341
-
341
+
342
342
  *Usage*:
343
-
343
+
344
344
  <pre><code><r:aggregate paths="/section1; /section2; /section3"> ... </r:aggregate></code></pre>
345
345
  }
346
346
  tag "aggregate" do |tag|
@@ -350,13 +350,13 @@ module StandardTags
350
350
  tag.locals.parent_ids = parent_ids
351
351
  tag.expand
352
352
  end
353
-
353
+
354
354
  desc %{
355
355
  Sets the scope to the individual aggregated page allowing you to
356
356
  iterate through each of the listed paths.
357
-
357
+
358
358
  *Usage*:
359
-
359
+
360
360
  <pre><code><r:aggregate:each paths="/section1; /section2; /section3"> ... </r:aggregate:each></code></pre>
361
361
  }
362
362
  tag "aggregate:each" do |tag|
@@ -368,12 +368,12 @@ module StandardTags
368
368
  end
369
369
  aggregates.flatten.join('')
370
370
  end
371
-
371
+
372
372
  tag "aggregate:each:children" do |tag|
373
373
  tag.locals.children = tag.locals.page.children
374
374
  tag.expand
375
375
  end
376
-
376
+
377
377
  tag "aggregate:each:children:each" do |tag|
378
378
  options = children_find_options(tag)
379
379
  result = []
@@ -386,21 +386,21 @@ module StandardTags
386
386
  end
387
387
  result.flatten.join('')
388
388
  end
389
-
389
+
390
390
  tag "aggregate:children" do |tag|
391
391
  tag.expand
392
392
  end
393
-
393
+
394
394
  desc %{
395
395
  Renders the total count of children of the aggregated pages. Accepts the
396
396
  same options as @<r:children:each />@.
397
397
 
398
398
  *Usage*:
399
-
399
+
400
400
  <pre><code><r:aggregate paths="/section1; /section2; /section3">
401
401
  <r:children:count />
402
402
  </r:aggregate></code></pre>
403
- }
403
+ }
404
404
  tag "aggregate:children:count" do |tag|
405
405
  options = aggregate_children(tag)
406
406
  if ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
@@ -415,7 +415,7 @@ module StandardTags
415
415
  same options as the plain @<r:children:each />@.
416
416
 
417
417
  *Usage*:
418
-
418
+
419
419
  <pre><code><r:aggregate paths="/section1; /section2; /section3">
420
420
  <r:children:each>
421
421
  ...
@@ -425,13 +425,13 @@ module StandardTags
425
425
  tag "aggregate:children:each" do |tag|
426
426
  render_children_with_pagination(tag, :aggregate => true)
427
427
  end
428
-
428
+
429
429
  desc %{
430
430
  Renders the first child of the aggregated pages. Accepts the
431
431
  same options as @<r:children:each />@.
432
432
 
433
433
  *Usage*:
434
-
434
+
435
435
  <pre><code><r:aggregate paths="/section1; /section2; /section3">
436
436
  <r:children:first>
437
437
  ...
@@ -448,13 +448,13 @@ module StandardTags
448
448
  tag.expand
449
449
  end
450
450
  end
451
-
451
+
452
452
  desc %{
453
453
  Renders the last child of the aggregated pages. Accepts the
454
454
  same options as @<r:children:each />@.
455
455
 
456
456
  *Usage*:
457
-
457
+
458
458
  <pre><code><r:aggregate paths="/section1; /section2; /section3">
459
459
  <r:children:last>
460
460
  ...
@@ -473,15 +473,15 @@ module StandardTags
473
473
  end
474
474
 
475
475
  desc %{
476
- Renders a counter value or one of the values given based on a global cycle counter.
477
-
476
+ Renders a counter value or one of the values given based on a global cycle counter.
477
+
478
478
  To get a numeric counter just use the tag, or specify a start value with @start@.
479
479
  Use the @reset@ attribute to reset the cycle to the beginning. Using @reset@ on a
480
- numbered cycle will begin at 0. Use the @name@ attribute to track multiple cycles;
480
+ numbered cycle will begin at 0. Use the @name@ attribute to track multiple cycles;
481
481
  the default is @cycle@.
482
482
 
483
483
  *Usage:*
484
-
484
+
485
485
  <pre><code><r:cycle [values="first, second, third"] [reset="true|false"] [name="cycle"] [start="second"] /></code></pre>
486
486
  <pre><code><r:cycle start="3" /></code></pre>
487
487
  }
@@ -523,7 +523,7 @@ module StandardTags
523
523
  is set to true.
524
524
 
525
525
  *Usage:*
526
-
526
+
527
527
  <pre><code><r:content [part="part_name"] [inherit="true|false"] [contextual="true|false"] /></code></pre>
528
528
  }
529
529
  tag 'content' do |tag|
@@ -562,7 +562,7 @@ module StandardTags
562
562
  By default the @find@ attribute is set to @all@.
563
563
 
564
564
  *Usage:*
565
-
565
+
566
566
  <pre><code><r:if_content [part="part_name, other_part"] [inherit="true"] [find="any"]>...</r:if_content></code></pre>
567
567
  }
568
568
  tag 'if_content' do |tag|
@@ -597,7 +597,7 @@ module StandardTags
597
597
  By default the @find@ attribute is set to @all@.
598
598
 
599
599
  *Usage:*
600
-
600
+
601
601
  <pre><code><r:unless_content [part="part_name, other_part"] [inherit="false"] [find="any"]>...</r:unless_content></code></pre>
602
602
  }
603
603
  tag 'unless_content' do |tag|
@@ -629,7 +629,7 @@ module StandardTags
629
629
  match is case sensitive. By default, @ignore_case@ is set to true.
630
630
 
631
631
  *Usage:*
632
-
632
+
633
633
  <pre><code><r:if_path matches="regexp" [ignore_case="true|false"]>...</r:if_path></code></pre>
634
634
  }
635
635
  tag 'if_path' do |tag|
@@ -645,7 +645,7 @@ module StandardTags
645
645
  The opposite of the @if_path@ tag.
646
646
 
647
647
  *Usage:*
648
-
648
+
649
649
  <pre><code><r:unless_path matches="regexp" [ignore_case="true|false"]>...</r:unless_path></code></pre>
650
650
  }
651
651
  tag 'unless_path' do |tag|
@@ -663,7 +663,7 @@ module StandardTags
663
663
  This is typically used inside another tag (like &lt;r:children:each&gt;) to add conditional mark-up if the child element is or descends from the current page.
664
664
 
665
665
  *Usage:*
666
-
666
+
667
667
  <pre><code><r:if_ancestor_or_self>...</r:if_ancestor_or_self></code></pre>
668
668
  }
669
669
  tag "if_ancestor_or_self" do |tag|
@@ -676,7 +676,7 @@ module StandardTags
676
676
  This is typically used inside another tag (like &lt;r:children:each&gt;) to add conditional mark-up unless the child element is or descends from the current page.
677
677
 
678
678
  *Usage:*
679
-
679
+
680
680
  <pre><code><r:unless_ancestor_or_self>...</r:unless_ancestor_or_self></code></pre>
681
681
  }
682
682
  tag "unless_ancestor_or_self" do |tag|
@@ -689,7 +689,7 @@ module StandardTags
689
689
  This is typically used inside another tag (like &lt;r:children:each&gt;) to add conditional mark-up if the child element is the current page.
690
690
 
691
691
  *Usage:*
692
-
692
+
693
693
  <pre><code><r:if_self>...</r:if_self></code></pre>
694
694
  }
695
695
  tag "if_self" do |tag|
@@ -739,9 +739,9 @@ module StandardTags
739
739
  size = (tag.attr['size'] || '32px')
740
740
  user = User.find_by_name(name)
741
741
  email = user ? user.email : nil
742
- local_avatar_url = "/images/admin/avatar_#{([size.to_i] * 2).join('x')}.png"
742
+ local_avatar_url = "/images/admin/avatar_#{([size.to_i] * 2).join('x')}.png"
743
743
  default_avatar_url = "#{request.protocol}#{request.host_with_port}#{local_avatar_url}"
744
-
744
+
745
745
  unless email.blank?
746
746
  url = '//gravatar.com/avatar/'
747
747
  url << "#{Digest::MD5.new.update(email)}?"
@@ -809,9 +809,9 @@ module StandardTags
809
809
  *Usage:*
810
810
 
811
811
  <pre><code><r:link [anchor="name"] [other attributes...] /></code></pre>
812
-
812
+
813
813
  or
814
-
814
+
815
815
  <pre><code><r:link [anchor="name"] [other attributes...]>link text here</r:link></code></pre>
816
816
  }
817
817
  tag 'link' do |tag|
@@ -827,7 +827,7 @@ module StandardTags
827
827
  Renders a trail of breadcrumbs to the current page. The separator attribute
828
828
  specifies the HTML fragment that is inserted between each of the breadcrumbs. By
829
829
  default it is set to @>@. The boolean @nolinks@ attribute can be specified to render
830
- breadcrumbs in plain text, without any links (useful when generating title tag).
830
+ breadcrumbs in plain text, without any links (useful when generating title tag).
831
831
  Set the boolean @noself@ attribute to omit the present page (useful in page headers).
832
832
 
833
833
  *Usage:*
@@ -1129,7 +1129,7 @@ module StandardTags
1129
1129
  else field
1130
1130
  end
1131
1131
  end
1132
-
1132
+
1133
1133
  tag 'site' do |tag|
1134
1134
  tag.expand
1135
1135
  end
@@ -1151,7 +1151,27 @@ module StandardTags
1151
1151
  tag "site:dev_host" do |tag|
1152
1152
  TrustyCms::Config["dev.host"]
1153
1153
  end
1154
-
1154
+
1155
+ tag 'meta:description' do |tag|
1156
+ show_tag = tag.attr['tag'] != 'false' || false
1157
+ description = CGI.escapeHTML(tag.locals.page.field(:description).try(:content)) if tag.locals.page.field(:description)
1158
+ if show_tag
1159
+ "<meta name=\"description\" content=\"#{description}\" />"
1160
+ else
1161
+ description
1162
+ end
1163
+ end
1164
+
1165
+ tag 'meta:keywords' do |tag|
1166
+ show_tag = tag.attr['tag'] != 'false' || false
1167
+ keywords = CGI.escapeHTML(tag.locals.page.field(:keywords).try(:content)) if tag.locals.page.field(:keywords)
1168
+ if show_tag
1169
+ "<meta name=\"keywords\" content=\"#{keywords}\" />"
1170
+ else
1171
+ keywords
1172
+ end
1173
+ end
1174
+
1155
1175
  private
1156
1176
  def render_children_with_pagination(tag, opts={})
1157
1177
  if opts[:aggregate]
@@ -1178,7 +1198,7 @@ module StandardTags
1178
1198
  end
1179
1199
  result.flatten.join('')
1180
1200
  end
1181
-
1201
+
1182
1202
  def children_find_options(tag)
1183
1203
  attr = tag.attr.symbolize_keys
1184
1204
 
@@ -1222,17 +1242,17 @@ module StandardTags
1222
1242
  end
1223
1243
  options
1224
1244
  end
1225
-
1245
+
1226
1246
  def aggregate_children(tag)
1227
1247
  options = children_find_options(tag)
1228
1248
  parent_ids = tag.locals.parent_ids
1229
-
1249
+
1230
1250
  conditions = options[:conditions]
1231
1251
  conditions.first << " AND parent_id IN (?)"
1232
1252
  conditions << parent_ids
1233
1253
  options
1234
1254
  end
1235
-
1255
+
1236
1256
  def pagination_find_options(tag)
1237
1257
  attr = tag.attr.symbolize_keys
1238
1258
  if attr[:paginated] == 'true'
@@ -1241,7 +1261,7 @@ module StandardTags
1241
1261
  false
1242
1262
  end
1243
1263
  end
1244
-
1264
+
1245
1265
  def will_paginate_options(tag)
1246
1266
  attr = tag.attr.symbolize_keys
1247
1267
  if attr[:paginated] == 'true'
@@ -1299,7 +1319,7 @@ module StandardTags
1299
1319
  raise TagError.new(%{`#{attribute_name}' attribute of `#{tag.name}' tag must be one of: #{values.join(', ')}}) unless values.include?(attribute)
1300
1320
  return attribute
1301
1321
  end
1302
-
1322
+
1303
1323
  def required_attr(tag, *attribute_names)
1304
1324
  attr_collection = attribute_names.map{|a| "`#{a}'"}.join(' or ')
1305
1325
  raise TagError.new("`#{tag.name}' tag must contain a #{attr_collection} attribute.") if (tag.attr.keys & attribute_names).blank?
@@ -1314,5 +1334,5 @@ module StandardTags
1314
1334
  request.host =~ /^dev\./
1315
1335
  end
1316
1336
  end
1317
-
1337
+
1318
1338
  end