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
@@ -1,10 +1,10 @@
1
1
  module TrustyCms
2
2
  class ExtensionPath
3
- # This class holds information about extensions that may be loaded. It has two roles: to remember the
3
+ # This class holds information about extensions that may be loaded. It has two roles: to remember the
4
4
  # location of the extension so that we don't have to search for it again, and to look within that path
5
5
  # for significant application subdirectories.
6
6
  #
7
- # We can't just retrieve this information from the Extension class because the initializer sets up
7
+ # We can't just retrieve this information from the Extension class because the initializer sets up
8
8
  # most of the application load_paths before plugins (including extensions) are loaded. You can think
9
9
  # of this as a sort of pre-extension class preparing the way for extension loading.
10
10
  #
@@ -22,21 +22,21 @@ module TrustyCms
22
22
 
23
23
  attr_accessor :name, :path
24
24
  @@known_paths = {}
25
-
25
+
26
26
  def initialize(options = {}) #:nodoc
27
- @name, @path = options[:name], options[:path]
27
+ @name, @path = options[:name].underscore, options[:path]
28
28
  @@known_paths[@name.to_sym] = self
29
29
  end
30
-
30
+
31
31
  def required
32
32
  File.join(path, "#{name}_extension")
33
33
  end
34
-
34
+
35
35
  def to_s
36
36
  path
37
37
  end
38
-
39
- # Builds a new ExtensionPath object from the supplied path, working out the name of the extension by
38
+
39
+ # Builds a new ExtensionPath object from the supplied path, working out the name of the extension by
40
40
  # stripping the extra bits from radiant-something-extension-1.0.0 to leave just 'something'. The object
41
41
  # is returned, and also remembered here for later use by the initializer (to find load paths) and the
42
42
  # ExtensionLoader, to load and activate the extension.
@@ -48,20 +48,20 @@ module TrustyCms
48
48
  name = File.basename(name).gsub(/^trusty-|-extension(-[\d\.a-z]+|-[a-z\d]+)*$/, '')
49
49
  new(:name => name, :path => path)
50
50
  end
51
-
51
+
52
52
  # Forgets all recorded extension paths.
53
53
  # Currently only used in testing.
54
54
  #
55
55
  def self.clear_paths!
56
56
  @@known_paths = {}
57
57
  end
58
-
59
- # Returns a list of all the likely load paths found within this extension root. It includes all of these
58
+
59
+ # Returns a list of all the likely load paths found within this extension root. It includes all of these
60
60
  # that exist and are directories:
61
61
  #
62
62
  # * path
63
- # * path/lib
64
- # * path/app/models
63
+ # * path/lib
64
+ # * path/app/models
65
65
  # * path/app/controllers
66
66
  # * path/app/metal
67
67
  # * path/app/helpers
@@ -86,7 +86,7 @@ module TrustyCms
86
86
  #
87
87
  def locale_paths
88
88
  if check_subdirectory("config/locales")
89
- Dir[File.join("#{path}","config/locales","*.{rb,yml}")]
89
+ Dir[File.join("#{path}","config/locales","*.{rb,yml}")]
90
90
  end
91
91
  end
92
92
 
@@ -111,7 +111,7 @@ module TrustyCms
111
111
  check_subdirectory("app/controllers")
112
112
  end
113
113
 
114
- # Returns the app/views path if it is found within this extension root.
114
+ # Returns the app/views path if it is found within this extension root.
115
115
  # Call the class method ExtensionPath.view_paths to get a list of the view paths found in all enabled extensions
116
116
  # in reverse order so that views override one another correctly.
117
117
  #
@@ -130,7 +130,7 @@ module TrustyCms
130
130
  #
131
131
  def rake_task_paths
132
132
  if check_subdirectory("lib/tasks")
133
- Dir[File.join("#{path}","lib/tasks/**","*.rake")]
133
+ Dir[File.join("#{path}","lib/tasks/**","*.rake")]
134
134
  end
135
135
  end
136
136
 
@@ -143,7 +143,7 @@ module TrustyCms
143
143
  def eager_load_paths
144
144
  [controller_paths, model_paths, helper_paths].flatten.compact
145
145
  end
146
-
146
+
147
147
  class << self
148
148
  # Returns the ExtensionPath object for the given extension name.
149
149
  #
@@ -151,14 +151,14 @@ module TrustyCms
151
151
  raise LoadError, "Cannot return path for unknown extension: #{name}" unless @@known_paths[name.to_sym]
152
152
  @@known_paths[name.to_sym]
153
153
  end
154
-
154
+
155
155
  # Returns the root path recorded for the given extension name.
156
156
  #
157
157
  def for(name)
158
158
  find(name).path
159
159
  end
160
160
 
161
- # Returns a list of path objects for all the enabled extensions in the configured order.
161
+ # Returns a list of path objects for all the enabled extensions in the configured order.
162
162
  # If a configured extension has not been found during initialization, a LoadError will be thrown here.
163
163
  #
164
164
  # Note that at this stage, in line with the usage of config.extensions = [], the extension names
@@ -168,13 +168,13 @@ module TrustyCms
168
168
  enabled_extensions = TrustyCms::Application.config.enabled_extensions
169
169
  @@known_paths.values_at(*enabled_extensions).compact
170
170
  end
171
-
171
+
172
172
  # Returns a list of the root paths to all the enabled extensions, in the configured order.
173
173
  #
174
174
  def enabled_paths
175
175
  enabled.map(&:path)
176
176
  end
177
-
177
+
178
178
  [:load_paths, :plugin_paths, :helper_paths, :model_paths, :controller_paths, :eager_load_paths].each do |m|
179
179
  define_method(m) do
180
180
  enabled.map{|ep| ep.send(m)}.flatten.compact
@@ -195,6 +195,6 @@ module TrustyCms
195
195
  subdirectory = File.join(path, subpath)
196
196
  subdirectory if File.directory?(subdirectory)
197
197
  end
198
-
198
+
199
199
  end
200
- end
200
+ end
@@ -1,31 +1,49 @@
1
+ require 'will_paginate'
2
+ require 'rails'
3
+ require 'jquery-rails'
4
+ require 'haml-rails'
5
+ require 'haml'
6
+ require 'mysql'
7
+
1
8
  require 'trusty_cms/admin_ui'
2
9
  require 'trusty_cms/extension_loader'
10
+ require 'string_extensions/string_extensions'
11
+ require 'trusty_cms/engine'
12
+
13
+ # This is a wild and probably terrible hack built to initialize extension engines.
14
+ # I have no idea what the repercussions will be. Revisit later.
15
+ Gem.loaded_specs.each_with_object([]) do |(gemname, gemspec), found|
16
+ if gemname =~ /trusty-.*-extension$/
17
+ ep = TrustyCms::ExtensionLoader.record_path(gemspec.full_gem_path, gemname)
18
+ require "#{ep.name}/engine"
19
+ end
20
+ end
3
21
 
4
22
  module TrustyCms
5
23
 
6
24
  module Initializer
7
-
25
+
8
26
  # Rails::Initializer is essentially a list of startup steps and we extend it here by:
9
27
  # * overriding or extending some of those steps so that they use radiant and extension paths
10
28
  # as well as (or instead of) the rails defaults.
11
29
  # * appending some extra steps to set up the admin UI and activate extensions
12
30
 
13
31
 
14
- # Returns true in the very unusual case where radiant has been deployed as a rails app itself, rather than
32
+ # Returns true in the very unusual case where radiant has been deployed as a rails app itself, rather than
15
33
  # loaded as a gem or from vendor/. This is only likely in situations where radiant is customised so heavily
16
34
  # that extensions are not sufficient.
17
35
  #
18
36
  def deployed_as_app?
19
37
  TRUSTY_CMS_ROOT == Rails.root
20
38
  end
21
-
39
+
22
40
  # Extends the Rails::Initializer default to add extension paths to the autoload list.
23
41
  # Note that +default_autoload_paths+ is also overridden to point to TRUSTY_CMS_ROOT.
24
- #
42
+ #
25
43
  def set_autoload_patf
26
44
  super
27
45
  end
28
-
46
+
29
47
  # Overrides the Rails initializer to load metal from TRUSTY_CMS_ROOT and from radiant extensions.
30
48
  #
31
49
  def initialize_metal
@@ -34,7 +52,7 @@ module TrustyCms
34
52
  Rails::Rack::Metal.metal_paths += plugin_loader.engine_metal_paths
35
53
  Rails::Rack::Metal.metal_paths += extension_loader.paths(:metal)
36
54
  Rails::Rack::Metal.metal_paths.uniq!
37
-
55
+
38
56
  configuration.middleware.insert_before(
39
57
  :"ActionController::ParamsParser",
40
58
  Rails::Rack::Metal, :if => Rails::Rack::Metal.metals.any?)
@@ -70,13 +88,13 @@ module TrustyCms
70
88
  super
71
89
  extension_loader.load_extensions
72
90
  end
73
-
91
+
74
92
  # Extends the Rails initializer to run initializers from radiant and from extensions. The load order will be:
75
93
  # 1. TRUSTY_CMS_ROOT/config/intializers/*.rb
76
94
  # 2. Rails.root/config/intializers/*.rb
77
95
  # 3. config/initializers/*.rb found in extensions, in extension load order.
78
96
  #
79
- # In the now rare case where radiant is deployed as an ordinary rails application, step 1 is skipped
97
+ # In the now rare case where radiant is deployed as an ordinary rails application, step 1 is skipped
80
98
  # because it is equivalent to step 2.
81
99
  #
82
100
  def load_application_initializers
@@ -107,7 +125,7 @@ module TrustyCms
107
125
  TrustyCms::Application.config.add_controller_paths(extension_loader.paths(:controller))
108
126
  TrustyCms::Application.config.add_eager_load_paths(extension_loader.paths(:eager_load))
109
127
  end
110
-
128
+
111
129
  # Initializes all the admin interface elements and views. Separate here so that it can be called
112
130
  # to reset the interface before extension (re)activation.
113
131
  #
@@ -116,15 +134,15 @@ module TrustyCms
116
134
  initialize_framework_views
117
135
  admin.load_default_regions
118
136
  end
119
-
137
+
120
138
  # Initializes the core admin tabs. Separate so that it can be invoked by itself in tests.
121
139
  #
122
140
  def initialize_default_admin_tabs
123
141
  admin.initialize_nav
124
142
  end
125
-
126
- # This adds extension view paths to the standard Rails::Initializer method.
127
- # In environments that don't cache templates it reloads the path set on each request,
143
+
144
+ # This adds extension view paths to the standard Rails::Initializer method.
145
+ # In environments that don't cache templates it reloads the path set on each request,
128
146
  # so that new extension paths are noticed without a restart.
129
147
  #
130
148
  def initialize_framework_views
@@ -135,9 +153,9 @@ module TrustyCms
135
153
  if ActionMailer::Base.view_paths.count == 0 || !ActionView::Base.cache_template_loading
136
154
  ActionMailer::Base.view_paths = ActionView::Base.process_view_paths(view_paths)
137
155
  end
138
- end
156
+ end
139
157
 
140
- # Extends the Rails initializer to make sure that extension controller paths are available when routes
158
+ # Extends the Rails initializer to make sure that extension controller paths are available when routes
141
159
  # are initialized.
142
160
  #
143
161
  def initialize_routing
@@ -8,7 +8,7 @@ module TrustyCms
8
8
  def initialize(url_stem)
9
9
  @url_stem = url_stem
10
10
  end
11
-
11
+
12
12
  def to_html
13
13
  links = @options[:page_links] ? windowed_links : []
14
14
  links.unshift page_link_or_span(@collection.previous_page, 'disabled prev_page', @options[:previous_label])
@@ -16,7 +16,7 @@ module TrustyCms
16
16
  html = links.join(@options[:separator])
17
17
  @options[:container] ? %{<div class="pagination">#{html}</div>} : html
18
18
  end
19
-
19
+
20
20
  # this is rather crude compared to the WillPaginate link-builder,
21
21
  # but it can get by without much context to draw on
22
22
  def page_link(page, text, attributes = {})
@@ -31,4 +31,4 @@ module TrustyCms
31
31
  end
32
32
  end
33
33
  end
34
- end
34
+ end
@@ -5,13 +5,13 @@ module TrustyCms
5
5
  base.send :class_attribute, :responses
6
6
  base.send :include, InstanceMethods
7
7
  end
8
-
9
- def responses
10
- r = (self.responses = read_inheritable_attribute(:responses) || Collector.new)
8
+
9
+ def create_responses
10
+ r = (self.responses ||= Collector.new)
11
11
  yield r if block_given?
12
12
  r
13
13
  end
14
-
14
+
15
15
  module InstanceMethods
16
16
  def response_for(action)
17
17
  responses = self.class.responses.send(action)
@@ -33,7 +33,7 @@ module TrustyCms
33
33
  end
34
34
  end
35
35
  end
36
-
36
+
37
37
  def wrap(proc)
38
38
  # Makes sure our response blocks get evaluated in the right context
39
39
  lambda do
@@ -42,18 +42,18 @@ module TrustyCms
42
42
  if RUBY_VERSION =~ /^1\.9/ and proc.lambda? and proc.arity != 1
43
43
  raise "You can only pass a proc ('Proc.new') or a lambda that takes exactly one arg (for self) to the wrap method."
44
44
  end
45
-
45
+
46
46
  instance_eval(&proc)
47
47
  end
48
48
  end
49
49
  end
50
-
50
+
51
51
  class Collector < OpenStruct
52
52
  def initialize
53
53
  super
54
54
  @table = Hash.new {|h,k| h[k] = Response.new }
55
55
  end
56
-
56
+
57
57
  def initialize_copy(orig)
58
58
  super
59
59
  @table.keys.each do |key|
@@ -61,7 +61,7 @@ module TrustyCms
61
61
  end
62
62
  end
63
63
  end
64
-
64
+
65
65
  class Response
66
66
  attr_reader :publish_formats, :publish_block, :blocks, :block_order
67
67
  def initialize
@@ -69,7 +69,7 @@ module TrustyCms
69
69
  @blocks = {}
70
70
  @block_order = []
71
71
  end
72
-
72
+
73
73
  def initialize_copy(orig)
74
74
  @publish_formats = orig.publish_formats.dup
75
75
  @blocks = orig.blocks.dup
@@ -77,23 +77,23 @@ module TrustyCms
77
77
  @publish_block = orig.publish_block.dup if orig.publish_block
78
78
  @default = orig.default.dup if orig.default
79
79
  end
80
-
80
+
81
81
  def default(&block)
82
82
  if block_given?
83
83
  @default = block
84
84
  end
85
85
  @default
86
86
  end
87
-
87
+
88
88
  def publish(*formats, &block)
89
89
  @publish_formats.concat(formats)
90
90
  if block_given?
91
- @publish_block = block
91
+ @publish_block = block
92
92
  else
93
93
  raise ArgumentError, "Block required to publish" unless @publish_block
94
94
  end
95
95
  end
96
-
96
+
97
97
  def each_published
98
98
  publish_formats.each do |format|
99
99
  yield format, publish_block if block_given?
@@ -118,4 +118,4 @@ module TrustyCms
118
118
  end
119
119
  end
120
120
  end
121
- end
121
+ end
@@ -3,7 +3,7 @@ require "forwardable"
3
3
 
4
4
  module TrustyCms
5
5
  class Setup
6
-
6
+
7
7
  class << self
8
8
  def bootstrap(config)
9
9
  setup = new
@@ -11,18 +11,18 @@ module TrustyCms
11
11
  setup
12
12
  end
13
13
  end
14
-
14
+
15
15
  attr_accessor :config
16
-
16
+
17
17
  def bootstrap(config)
18
18
  @config = config
19
19
  @admin = create_admin_user(config[:admin_name], config[:admin_username], config[:admin_password])
20
20
  UserActionObserver.current_user = @admin
21
21
  load_default_configuration
22
- load_database_template(config[:database_template])
22
+ # load_database_template(config[:database_template])
23
23
  announce "Finished."
24
24
  end
25
-
25
+
26
26
  def create_admin_user(name, username, password)
27
27
  unless name and username and password
28
28
  announce "Create the admin user (press enter for defaults)."
@@ -34,15 +34,16 @@ module TrustyCms
34
34
  :name => name,
35
35
  :login => username,
36
36
  :password => password,
37
- :password_confirmation => password,
38
- :admin => true
37
+ :password_confirmation => password
39
38
  }
40
39
  admin = User.find_by_login(username)
41
40
  admin = User.new unless admin
42
41
  admin.update_attributes(attributes)
42
+ admin.admin = true
43
+ admin.save
43
44
  admin
44
45
  end
45
-
46
+
46
47
  def load_default_configuration
47
48
  feedback "\nInitializing configuration" do
48
49
  step { TrustyCms::Config['admin.title' ] = 'TrustyCms CMS' }
@@ -55,7 +56,7 @@ module TrustyCms
55
56
  step { TrustyCms::Config['default_locale'] = 'en' }
56
57
  end
57
58
  end
58
-
59
+
59
60
  def load_database_template(filename)
60
61
  template = nil
61
62
  if filename
@@ -85,19 +86,19 @@ module TrustyCms
85
86
  end
86
87
  create_records(template)
87
88
  end
88
-
89
+
89
90
  private
90
-
91
+
91
92
  def prompt_for_admin_name
92
93
  username = ask('Name (Administrator): ', String) do |q|
93
94
  q.validate = /^.{0,100}$/
94
- q.responses[:not_valid] = "Invalid name. Must be at less than 100 characters long."
95
+ q.responses[:not_valid] = "Invalid name. Must be under 100 characters long."
95
96
  q.whitespace = :strip
96
97
  end
97
98
  username = "Administrator" if username.blank?
98
99
  username
99
100
  end
100
-
101
+
101
102
  def prompt_for_admin_username
102
103
  username = ask('Username (admin): ', String) do |q|
103
104
  q.validate = /^(|.{3,40})$/
@@ -107,18 +108,19 @@ module TrustyCms
107
108
  username = "admin" if username.blank?
108
109
  username
109
110
  end
110
-
111
+
111
112
  def prompt_for_admin_password
112
- password = ask('Password (radiant): ', String) do |q|
113
+ default_password = 'trusty'
114
+ password = ask("Password (#{default_password}): ", String) do |q|
113
115
  q.echo = false unless defined?(::JRuby) # JRuby doesn't support stty interaction
114
116
  q.validate = /^(|.{5,40})$/
115
117
  q.responses[:not_valid] = "Invalid password. Must be at least 5 characters long."
116
118
  q.whitespace = :strip
117
119
  end
118
- password = "radiant" if password.blank?
120
+ password = default_password if password.blank?
119
121
  password
120
122
  end
121
-
123
+
122
124
  def find_template_in_path(filename)
123
125
  (
124
126
  [
@@ -137,17 +139,17 @@ module TrustyCms
137
139
  end
138
140
  ).find { |name| File.file?(name) }
139
141
  end
140
-
142
+
141
143
  def find_and_load_templates(glob)
142
144
  templates = Dir[glob]
143
145
  templates.map! { |template| load_template_file(template) }
144
146
  templates.sort_by { |template| template['name'] }
145
147
  end
146
-
148
+
147
149
  def load_template_file(filename)
148
150
  YAML.load_file(filename)
149
151
  end
150
-
152
+
151
153
  def create_records(template)
152
154
  records = template['records']
153
155
  if records
@@ -166,44 +168,44 @@ module TrustyCms
166
168
  end
167
169
  end
168
170
  end
169
-
171
+
170
172
  def model(model_name)
171
173
  model_name.to_s.singularize.constantize
172
174
  end
173
-
175
+
174
176
  def order_by_id(records)
175
177
  records.map { |name, record| [record['id'], record] }.sort { |a, b| a[0] <=> b[0] }
176
178
  end
177
-
179
+
178
180
  extend Forwardable
179
181
  def_delegators :terminal, :agree, :ask, :choose, :say
180
-
182
+
181
183
  def terminal
182
184
  @terminal ||= HighLine.new
183
185
  end
184
-
186
+
185
187
  def output
186
188
  terminal.instance_variable_get("@output")
187
189
  end
188
-
190
+
189
191
  def wrap(string)
190
192
  string = terminal.send(:wrap, string) unless terminal.wrap_at.nil?
191
193
  string
192
194
  end
193
-
195
+
194
196
  def print(string)
195
197
  output.print(wrap(string))
196
198
  output.flush
197
199
  end
198
-
200
+
199
201
  def puts(string = "\n")
200
202
  say string
201
203
  end
202
-
204
+
203
205
  def announce(string)
204
206
  puts "\n#{string}"
205
207
  end
206
-
208
+
207
209
  def feedback(process, &block)
208
210
  print "#{process}..."
209
211
  if yield
@@ -217,11 +219,11 @@ module TrustyCms
217
219
  puts "FAILED"
218
220
  raise e
219
221
  end
220
-
222
+
221
223
  def step
222
224
  yield if block_given?
223
225
  print '.'
224
226
  end
225
-
227
+
226
228
  end
227
- end
229
+ end