pages_core 3.4.3 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +74 -15
  3. data/Rakefile +2 -0
  4. data/app/assets/javascripts/pages/admin.jsx +17 -0
  5. data/app/assets/javascripts/pages/admin/components.jsx +2 -0
  6. data/app/assets/javascripts/pages/admin/components/attachment.jsx +130 -0
  7. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +131 -0
  8. data/app/assets/javascripts/pages/admin/components/attachments.jsx +211 -0
  9. data/app/assets/javascripts/pages/admin/components/date_range_select.jsx +174 -0
  10. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +174 -0
  11. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +57 -0
  12. data/app/assets/javascripts/pages/admin/components/file_upload_button.jsx +44 -0
  13. data/app/assets/javascripts/pages/admin/components/focal_point.jsx +82 -0
  14. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +124 -0
  15. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +496 -0
  16. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +306 -0
  17. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +176 -0
  18. data/app/assets/javascripts/pages/admin/components/modal.jsx +48 -0
  19. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +20 -0
  20. data/app/assets/javascripts/pages/admin/components/page_dates.jsx +58 -0
  21. data/app/assets/javascripts/pages/admin/components/page_files.jsx +14 -0
  22. data/app/assets/javascripts/pages/admin/components/page_images.jsx +16 -0
  23. data/app/assets/javascripts/pages/admin/components/page_tree.jsx +300 -0
  24. data/app/assets/javascripts/pages/admin/components/page_tree_node.jsx +396 -0
  25. data/app/assets/javascripts/pages/admin/components/page_tree_store.jsx +203 -0
  26. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +64 -0
  27. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +91 -0
  28. data/app/assets/javascripts/pages/admin/components/toast.jsx +34 -0
  29. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +52 -0
  30. data/app/assets/javascripts/pages/admin/features/content_tabs.jsx +72 -0
  31. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +97 -0
  32. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +14 -0
  33. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +160 -0
  34. data/app/assets/javascripts/pages/admin/lib/tree.jsx +294 -0
  35. data/app/assets/javascripts/pages/login_form.jsx +21 -0
  36. data/app/assets/stylesheets/pages/admin.scss +144 -0
  37. data/app/assets/stylesheets/pages/admin/components/archive.scss +6 -0
  38. data/app/assets/stylesheets/pages/admin/components/attachments.scss +130 -0
  39. data/app/assets/stylesheets/pages/admin/components/buttons.scss +23 -0
  40. data/app/assets/stylesheets/pages/admin/components/forms.scss +169 -0
  41. data/app/assets/stylesheets/pages/admin/components/header.scss +157 -0
  42. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +195 -0
  43. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +181 -0
  44. data/app/assets/stylesheets/pages/admin/components/image_uploader.scss +53 -0
  45. data/app/assets/stylesheets/pages/admin/components/layout.scss +44 -0
  46. data/app/assets/stylesheets/pages/admin/components/links.scss +43 -0
  47. data/app/assets/stylesheets/pages/admin/components/list_table.scss +61 -0
  48. data/app/assets/stylesheets/pages/admin/{login.css.scss.erb → components/login.scss} +3 -9
  49. data/app/assets/stylesheets/pages/admin/components/modal.scss +106 -0
  50. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +179 -0
  51. data/app/assets/stylesheets/pages/admin/components/pagination.scss +49 -0
  52. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +28 -0
  53. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +59 -0
  54. data/app/assets/stylesheets/pages/admin/components/textarea.scss +6 -0
  55. data/app/assets/stylesheets/pages/admin/components/toast.scss +51 -0
  56. data/app/assets/stylesheets/pages/admin/components/toolbar.scss +108 -0
  57. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +184 -0
  58. data/app/assets/stylesheets/pages/admin/controllers/{users.css.erb → users.scss} +2 -2
  59. data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +21 -0
  60. data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +7 -0
  61. data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +7 -0
  62. data/app/assets/stylesheets/pages/admin/vars.scss +30 -0
  63. data/app/assets/stylesheets/pages/errors.css +2 -0
  64. data/app/controller_dummies/admin/admin_controller.rb +1 -1
  65. data/app/controller_dummies/application_controller.rb +3 -3
  66. data/app/controller_dummies/attachments_controller.rb +4 -0
  67. data/app/controller_dummies/frontend_controller.rb +1 -1
  68. data/app/controller_dummies/images_controller.rb +1 -1
  69. data/app/controller_dummies/page_files_controller.rb +1 -1
  70. data/app/controller_dummies/pages_controller.rb +1 -1
  71. data/app/controller_dummies/sitemaps_controller.rb +1 -1
  72. data/app/controllers/admin/attachments_controller.rb +50 -0
  73. data/app/controllers/admin/categories_controller.rb +3 -4
  74. data/app/controllers/admin/images_controller.rb +29 -18
  75. data/app/controllers/admin/invites_controller.rb +20 -23
  76. data/app/controllers/admin/pages_controller.rb +59 -111
  77. data/app/controllers/admin/password_resets_controller.rb +23 -21
  78. data/app/controllers/admin/users_controller.rb +23 -23
  79. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +67 -0
  80. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +75 -0
  81. data/app/controllers/concerns/pages_core/authentication.rb +4 -3
  82. data/app/controllers/concerns/pages_core/error_renderer.rb +36 -0
  83. data/app/controllers/concerns/pages_core/error_reporting.rb +36 -0
  84. data/app/controllers/concerns/pages_core/policies_helper.rb +16 -13
  85. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +44 -0
  86. data/app/controllers/concerns/pages_core/process_titler.rb +4 -4
  87. data/app/controllers/concerns/pages_core/rss_controller.rb +25 -0
  88. data/app/controllers/concerns/pages_core/static_cache_controller.rb +48 -0
  89. data/app/controllers/errors_controller.rb +20 -30
  90. data/app/controllers/pages_core/admin_controller.rb +21 -70
  91. data/app/controllers/pages_core/attachments_controller.rb +40 -0
  92. data/app/controllers/pages_core/{application_controller.rb → base_controller.rb} +13 -8
  93. data/app/controllers/pages_core/frontend/page_files_controller.rb +7 -24
  94. data/app/controllers/pages_core/frontend/pages_controller.rb +39 -228
  95. data/app/controllers/pages_core/frontend_controller.rb +10 -3
  96. data/app/controllers/pages_core/images_controller.rb +2 -2
  97. data/app/controllers/pages_core/sitemaps_controller.rb +15 -10
  98. data/app/controllers/sessions_controller.rb +4 -14
  99. data/app/formatters/pages_core/html_formatter.rb +52 -48
  100. data/app/formatters/pages_core/image_embedder.rb +79 -0
  101. data/app/formatters/pages_core/link_renderer.rb +17 -0
  102. data/app/helpers/admin/admin_helper.rb +1 -1
  103. data/app/helpers/admin/menu_helper.rb +19 -16
  104. data/app/helpers/admin/pages_helper.rb +27 -30
  105. data/app/helpers/application_helper.rb +1 -1
  106. data/app/helpers/frontend_helper.rb +1 -1
  107. data/app/helpers/pages_core/admin/admin_helper.rb +44 -71
  108. data/app/helpers/pages_core/admin/content_tabs_helper.rb +28 -0
  109. data/app/helpers/pages_core/admin/date_range_helper.rb +55 -0
  110. data/app/helpers/pages_core/admin/form_builder.rb +44 -0
  111. data/app/helpers/pages_core/admin/image_uploads_helper.rb +48 -0
  112. data/app/helpers/pages_core/admin/labelled_field_helper.rb +19 -19
  113. data/app/helpers/pages_core/admin/page_blocks_helper.rb +66 -0
  114. data/app/helpers/pages_core/admin/page_json_helper.rb +23 -0
  115. data/app/helpers/pages_core/admin/tag_editor_helper.rb +16 -14
  116. data/app/helpers/pages_core/application_helper.rb +15 -26
  117. data/app/helpers/pages_core/attachments_helper.rb +40 -0
  118. data/app/helpers/pages_core/form_builder.rb +71 -134
  119. data/app/helpers/pages_core/frontend_helper.rb +2 -8
  120. data/app/helpers/pages_core/head_tags_helper.rb +36 -169
  121. data/app/helpers/pages_core/images_helper.rb +5 -4
  122. data/app/helpers/pages_core/meta_tags_helper.rb +96 -0
  123. data/app/helpers/pages_core/open_graph_tags_helper.rb +51 -0
  124. data/app/helpers/pages_core/page_path_helper.rb +66 -0
  125. data/app/jobs/pages_core/autopublish_job.rb +2 -2
  126. data/app/jobs/pages_core/sweep_cache_job.rb +3 -3
  127. data/app/mailers/admin_mailer.rb +8 -31
  128. data/app/models/attachment.rb +78 -0
  129. data/app/models/autopublisher.rb +7 -4
  130. data/app/models/category.rb +10 -11
  131. data/app/models/concerns/pages_core/has_roles.rb +5 -4
  132. data/app/models/concerns/pages_core/humanizable_param.rb +11 -8
  133. data/app/models/concerns/pages_core/page_model/attachments.rb +41 -0
  134. data/app/models/concerns/pages_core/page_model/autopublishable.rb +25 -0
  135. data/app/models/concerns/pages_core/page_model/dated_page.rb +59 -0
  136. data/app/models/concerns/pages_core/page_model/images.rb +51 -0
  137. data/app/models/concerns/pages_core/page_model/localizable.rb +38 -0
  138. data/app/models/concerns/pages_core/page_model/pathable.rb +114 -0
  139. data/app/models/concerns/pages_core/page_model/redirectable.rb +36 -0
  140. data/app/models/concerns/pages_core/page_model/sortable.rb +53 -0
  141. data/app/models/concerns/pages_core/page_model/status.rb +50 -0
  142. data/app/models/concerns/pages_core/page_model/templateable.rb +85 -0
  143. data/app/models/concerns/pages_core/page_model/tree.rb +134 -0
  144. data/app/models/concerns/pages_core/sweepable.rb +3 -3
  145. data/app/models/concerns/pages_core/taggable.rb +11 -4
  146. data/app/models/image.rb +15 -1
  147. data/app/models/invite.rb +3 -11
  148. data/app/models/invite_role.rb +5 -3
  149. data/app/models/page.rb +49 -234
  150. data/app/models/page_builder.rb +5 -7
  151. data/app/models/page_category.rb +7 -0
  152. data/app/models/page_exporter.rb +100 -0
  153. data/app/models/page_file.rb +26 -50
  154. data/app/models/page_image.rb +7 -40
  155. data/app/models/page_path.rb +52 -0
  156. data/app/models/password_reset_token.rb +7 -9
  157. data/app/models/role.rb +23 -7
  158. data/app/models/tag.rb +28 -19
  159. data/app/models/tagging.rb +6 -5
  160. data/app/models/user.rb +38 -32
  161. data/app/policies/invite_policy.rb +2 -0
  162. data/app/policies/page_file_policy.rb +15 -17
  163. data/app/policies/page_image_policy.rb +15 -17
  164. data/app/policies/page_policy.rb +29 -23
  165. data/app/policies/policy.rb +4 -8
  166. data/app/policies/user_policy.rb +34 -32
  167. data/app/serializers/admin/attachment_serializer.rb +31 -0
  168. data/app/serializers/admin/image_serializer.rb +55 -6
  169. data/app/serializers/admin/page_file_serializer.rb +8 -0
  170. data/app/serializers/admin/page_image_serializer.rb +3 -1
  171. data/app/serializers/page_export_serializer.rb +32 -0
  172. data/app/serializers/page_file_export_serializer.rb +6 -0
  173. data/app/serializers/page_image_export_serializer.rb +42 -0
  174. data/app/serializers/page_image_serializer.rb +4 -0
  175. data/app/serializers/page_serializer.rb +2 -0
  176. data/app/services/pages_core/create_user_service.rb +39 -0
  177. data/app/services/pages_core/destroy_invite_service.rb +25 -0
  178. data/app/services/pages_core/invite_service.rb +43 -0
  179. data/app/views/admin/images/show.json.jbuilder +8 -0
  180. data/app/views/admin/invites/new.html.erb +2 -1
  181. data/app/views/admin/invites/show.html.erb +3 -4
  182. data/app/views/admin/pages/_edit_content.html.erb +11 -2
  183. data/app/views/admin/pages/_edit_files.html.erb +8 -0
  184. data/app/views/admin/pages/_edit_images.html.erb +8 -84
  185. data/app/views/admin/pages/_edit_metadata.html.erb +23 -12
  186. data/app/views/admin/pages/_edit_options.html.erb +25 -25
  187. data/app/views/admin/pages/_list_item.html.erb +50 -0
  188. data/app/views/admin/pages/deleted.html.erb +42 -0
  189. data/app/views/admin/pages/edit.html.erb +11 -91
  190. data/app/views/admin/pages/index.html.erb +10 -54
  191. data/app/views/admin/pages/new.html.erb +5 -4
  192. data/app/views/admin/pages/news.html.erb +61 -47
  193. data/app/views/admin/password_resets/show.html.erb +6 -9
  194. data/app/views/admin/users/_access_control.html.erb +4 -1
  195. data/app/views/admin/users/_list.html.erb +12 -7
  196. data/app/views/admin/users/edit.html.erb +5 -11
  197. data/app/views/admin/users/login.html.erb +58 -15
  198. data/app/views/admin/users/show.html.erb +1 -1
  199. data/app/views/admin_mailer/invite.text.erb +1 -1
  200. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  201. data/app/views/errors/401.html.erb +6 -0
  202. data/app/views/errors/403.html.erb +1 -1
  203. data/app/views/errors/422.html.erb +7 -0
  204. data/app/views/errors/500.html.erb +2 -15
  205. data/app/views/errors/_generic_help.html.erb +1 -1
  206. data/app/views/feeds/pages.rss.builder +2 -2
  207. data/app/views/layouts/admin.html.erb +83 -79
  208. data/app/views/layouts/admin/_analytics.html.erb +1 -3
  209. data/app/views/layouts/admin/_header.html.erb +4 -4
  210. data/app/views/layouts/errors.html.erb +3 -7
  211. data/app/views/sitemaps/show.xml.builder +2 -0
  212. data/config/locales/en.yml +50 -1
  213. data/config/routes.rb +57 -58
  214. data/db/migrate/20111219033112_create_pages_tables.rb +191 -276
  215. data/lib/pages_core.rb +34 -32
  216. data/lib/pages_core/admin_menu_item.rb +18 -4
  217. data/lib/pages_core/archive_finder.rb +49 -20
  218. data/lib/pages_core/attachment_embedder.rb +36 -0
  219. data/lib/pages_core/cache_sweeper.rb +9 -89
  220. data/lib/pages_core/configuration.rb +3 -3
  221. data/lib/pages_core/configuration/base.rb +8 -9
  222. data/lib/pages_core/configuration/pages.rb +8 -9
  223. data/lib/pages_core/digest_verifier.rb +70 -0
  224. data/lib/pages_core/engine.rb +72 -5
  225. data/lib/pages_core/extensions.rb +2 -3
  226. data/lib/pages_core/extensions/string_extensions.rb +2 -2
  227. data/lib/pages_core/page_path_constraint.rb +23 -0
  228. data/lib/pages_core/pages_plugin.rb +13 -2
  229. data/lib/pages_core/plugin.rb +8 -52
  230. data/lib/pages_core/pub_sub.rb +38 -0
  231. data/lib/pages_core/static_cache.rb +26 -0
  232. data/lib/pages_core/static_cache/null_handler.rb +17 -0
  233. data/lib/pages_core/static_cache/page_cache_handler.rb +56 -0
  234. data/lib/pages_core/static_cache/varnish_handler.rb +55 -0
  235. data/lib/pages_core/templates.rb +10 -10
  236. data/lib/pages_core/templates/block_configuration.rb +4 -3
  237. data/lib/pages_core/templates/configuration.rb +115 -34
  238. data/lib/pages_core/templates/configuration_handler.rb +9 -5
  239. data/lib/pages_core/templates/configuration_proxy.rb +12 -12
  240. data/lib/pages_core/templates/controller_actions.rb +1 -1
  241. data/lib/pages_core/templates/template_configuration.rb +102 -98
  242. data/lib/pages_core/version.rb +2 -2
  243. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +11 -16
  244. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +1 -2
  245. data/lib/rails/generators/pages_core/frontend/templates/{application.css.scss.erb → application.scss.erb} +0 -0
  246. data/lib/rails/generators/pages_core/frontend/templates/{base.css.scss.erb → base.scss.erb} +0 -0
  247. data/lib/rails/generators/pages_core/frontend/templates/{breakpoints.css.scss.erb → breakpoints.scss.erb} +0 -0
  248. data/lib/rails/generators/pages_core/frontend/templates/clearfix.scss.erb +7 -0
  249. data/lib/rails/generators/pages_core/frontend/templates/layout.html.erb +0 -3
  250. data/lib/rails/generators/pages_core/install/install_generator.rb +25 -66
  251. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +2 -0
  252. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +2 -2
  253. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +1 -1
  254. data/lib/rails/generators/pages_core/install/templates/delayed_job +1 -0
  255. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +16 -1
  256. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +1 -1
  257. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +1 -1
  258. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +12 -1
  259. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +9 -15
  260. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +1 -1
  261. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +5 -23
  262. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +19 -14
  263. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +3 -8
  264. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +2 -0
  265. data/lib/rails/generators/pages_core/rspec/templates/page_templates_spec.rb +26 -0
  266. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +91 -0
  267. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +89 -45
  268. data/lib/tasks/pages.rake +2 -63
  269. data/lib/tasks/pages/cache.rake +12 -5
  270. data/lib/tasks/pages/export.rake +11 -0
  271. data/lib/tasks/pages/page_paths.rake +12 -0
  272. data/template.rb +5 -3
  273. data/vendor/assets/javascripts/ReactCrop.min.js +1 -0
  274. data/vendor/assets/javascripts/reflux.min.js +1 -0
  275. data/vendor/assets/stylesheets/ReactCrop.css +167 -0
  276. metadata +356 -192
  277. data/app/assets/images/pages/admin/description-bg.gif +0 -0
  278. data/app/assets/images/pages/admin/drag-handle.gif +0 -0
  279. data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
  280. data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
  281. data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
  282. data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
  283. data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
  284. data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
  285. data/app/assets/javascripts/pages/admin.js.coffee +0 -54
  286. data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +0 -4
  287. data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +0 -139
  288. data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +0 -9
  289. data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +0 -47
  290. data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +0 -122
  291. data/app/assets/javascripts/pages/admin/features/modal.js.coffee +0 -66
  292. data/app/assets/javascripts/pages/admin/features/page_images.js +0 -329
  293. data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +0 -40
  294. data/app/assets/javascripts/pages/admin/features/tag_editor.js +0 -159
  295. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +0 -17
  296. data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +0 -21
  297. data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +0 -57
  298. data/app/assets/javascripts/pages/login_form.js.coffee +0 -17
  299. data/app/assets/stylesheets/pages/admin.css.erb +0 -404
  300. data/app/assets/stylesheets/pages/admin/buttons.css.erb +0 -5
  301. data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +0 -94
  302. data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +0 -58
  303. data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +0 -178
  304. data/app/assets/stylesheets/pages/admin/editable_image.css.erb +0 -19
  305. data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +0 -73
  306. data/app/assets/stylesheets/pages/admin/header.css.erb +0 -129
  307. data/app/assets/stylesheets/pages/admin/images.css.scss.erb +0 -160
  308. data/app/assets/stylesheets/pages/admin/links.css.erb +0 -34
  309. data/app/assets/stylesheets/pages/admin/list_table.css.erb +0 -56
  310. data/app/assets/stylesheets/pages/admin/modal.css.erb +0 -14
  311. data/app/assets/stylesheets/pages/admin/pagination.css.scss +0 -22
  312. data/app/assets/stylesheets/pages/admin/print.css.erb +0 -17
  313. data/app/assets/stylesheets/pages/admin/sidebar.css.erb +0 -39
  314. data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +0 -18
  315. data/app/assets/stylesheets/pages/admin/tag_editor.css.scss.erb +0 -48
  316. data/app/assets/stylesheets/pages/admin/textarea.css.erb +0 -55
  317. data/app/controllers/admin/page_comments_controller.rb +0 -61
  318. data/app/controllers/admin/page_files_controller.rb +0 -81
  319. data/app/controllers/admin/page_images_controller.rb +0 -116
  320. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -28
  321. data/app/controllers/concerns/pages_core/exception_handler.rb +0 -114
  322. data/app/helpers/pages_core/login_helper.rb +0 -14
  323. data/app/indices/page_file_index.rb +0 -9
  324. data/app/indices/page_index.rb +0 -29
  325. data/app/indices/user_index.rb +0 -11
  326. data/app/models/concerns/pages_core/page_tree.rb +0 -85
  327. data/app/models/concerns/pages_core/searchable_page.rb +0 -33
  328. data/app/models/concerns/pages_core/templateable.rb +0 -85
  329. data/app/models/localization.rb +0 -27
  330. data/app/models/page_comment.rb +0 -18
  331. data/app/views/admin/pages/_edit_comments.html.erb +0 -21
  332. data/app/views/admin/pages/_pagelisting.html.erb +0 -63
  333. data/app/views/admin/users/_login_form.html.erb +0 -47
  334. data/app/views/admin_mailer/comment_notification.text.erb +0 -7
  335. data/app/views/admin_mailer/error_report.html.erb +0 -70
  336. data/app/views/errors/500_critical.html.erb +0 -7
  337. data/app/views/errors/report.html.erb +0 -4
  338. data/config/removed_migrations.yml +0 -60
  339. data/db/migrate/20120627033112_rename_textbits.rb +0 -19
  340. data/db/migrate/20121010055412_drop_removed_tables.rb +0 -83
  341. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +0 -11
  342. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +0 -11
  343. data/db/migrate/20130303160632_remove_imagesets.rb +0 -24
  344. data/db/migrate/20130303161732_remove_sms_subscribers.rb +0 -16
  345. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -25
  346. data/db/migrate/20140203183900_create_roles.rb +0 -63
  347. data/db/migrate/20140414150500_change_locale_names.rb +0 -13
  348. data/db/migrate/20140515130100_remove_sphinx_deltas.rb +0 -15
  349. data/db/migrate/20140604142100_remove_openid_url.rb +0 -9
  350. data/db/migrate/20140920231700_convert_images_to_dis.rb +0 -79
  351. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +0 -50
  352. data/db/migrate/20141004003100_create_password_reset_tokens.rb +0 -10
  353. data/db/migrate/20141006181300_remove_user_cruft.rb +0 -11
  354. data/db/migrate/20141007173000_create_invites.rb +0 -16
  355. data/db/migrate/20150204130800_update_delayed_job_table.rb +0 -9
  356. data/db/migrate/20150401131300_localize_images.rb +0 -39
  357. data/db/migrate/20150520174300_add_meta_image_to_page.rb +0 -5
  358. data/db/migrate/20150904164200_add_pinned_to_tags.rb +0 -5
  359. data/lib/pages_core/extensions/hash_extensions.rb +0 -23
  360. data/lib/pages_core/localizable.rb +0 -49
  361. data/lib/pages_core/localizable/active_record_extension.rb +0 -41
  362. data/lib/pages_core/localizable/class_methods.rb +0 -51
  363. data/lib/pages_core/localizable/configuration.rb +0 -50
  364. data/lib/pages_core/localizable/instance_methods.rb +0 -130
  365. data/lib/pages_core/localizable/localizer.rb +0 -72
  366. data/lib/pages_core/localizable/scope_extension.rb +0 -22
  367. data/lib/pages_core/paginates.rb +0 -102
  368. data/lib/rails/generators/pages_core/frontend/templates/hidpi.css.scss.erb +0 -8
  369. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -11
  370. data/lib/rails/generators/pages_core/install/templates/thinking_sphinx.yml +0 -12
  371. data/lib/tasks/db.rake +0 -96
  372. data/lib/tasks/pages/assets.rake +0 -65
  373. data/lib/tasks/pages/update.rake +0 -19
  374. data/vendor/assets/javascripts/jquery.dimscreen.js +0 -77
  375. data/vendor/assets/javascripts/jquery.fieldselection.js +0 -59
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ module ContentTabsHelper
6
+ def content_tab(name, options = {}, &block)
7
+ @content_tabs ||= []
8
+ return unless block_given?
9
+
10
+ tab = {
11
+ name: name.to_s.humanize,
12
+ key: options[:key] || name.to_s.underscore.gsub(/\s+/, "_"),
13
+ options: options,
14
+ content: capture(&block)
15
+ }
16
+ @content_tabs << tab
17
+ content_tab_tag(tab[:key], tab[:content])
18
+ end
19
+
20
+ private
21
+
22
+ def content_tab_tag(key, content)
23
+ tag.div(content, class: "content_tab",
24
+ id: "content-tab-#{key}")
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ module DateRangeHelper
6
+ def page_date_range(page)
7
+ if page.all_day?
8
+ date_range(page.starts_at.to_date, page.ends_at.to_date)
9
+ else
10
+ date_range(page.starts_at, page.ends_at)
11
+ end
12
+ end
13
+
14
+ def date_range(starts_at, ends_at)
15
+ dates = different_year_date_range(starts_at, ends_at) ||
16
+ different_month_date_range(starts_at, ends_at) ||
17
+ different_day_date_range(starts_at, ends_at) ||
18
+ same_day_date_range(starts_at, ends_at)
19
+ safe_join(dates.map(&:strip), "&ndash;".html_safe)
20
+ end
21
+
22
+ private
23
+
24
+ def different_year_date_range(starts_at, ends_at)
25
+ return if starts_at.year == ends_at.year
26
+
27
+ [l(starts_at, format: :pages_full), l(ends_at, format: :pages_full)]
28
+ end
29
+
30
+ def different_month_date_range(starts_at, ends_at)
31
+ return if starts_at.month == ends_at.month
32
+
33
+ [l(starts_at, format: :pages_date), l(ends_at, format: :pages_full)]
34
+ end
35
+
36
+ def different_day_date_range(starts_at, ends_at)
37
+ return if starts_at.day == ends_at.day
38
+
39
+ if starts_at.is_a?(Date) && ends_at.is_a?(Date)
40
+ [l(starts_at, format: :pages_day), l(ends_at, format: :pages_full)]
41
+ else
42
+ [l(starts_at, format: :pages_date), l(ends_at, format: :pages_full)]
43
+ end
44
+ end
45
+
46
+ def same_day_date_range(starts_at, ends_at)
47
+ if starts_at.is_a?(Date) && ends_at.is_a?(Date)
48
+ [l(starts_at, format: :pages_full)]
49
+ else
50
+ [l(starts_at, format: :pages_full), l(ends_at, format: :pages_time)]
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ class FormBuilder < PagesCore::FormBuilder
6
+ include DynamicImage::Helper
7
+
8
+ def rich_text_area(attr, options = {})
9
+ @template.rich_text_area_tag(
10
+ "#{object_name}[#{attr}]",
11
+ object.send(attr),
12
+ options
13
+ )
14
+ end
15
+
16
+ def image_uploader(attr, options = {})
17
+ @template.image_uploader_tag(
18
+ "#{object_name}[#{foreign_key(attr)}]",
19
+ object.send(attr),
20
+ options
21
+ )
22
+ end
23
+
24
+ def labelled_rich_text_area(attribute, label_text = nil, options = {})
25
+ labelled_field(attribute, label_text, options) do |opts|
26
+ rich_text_area(attribute, opts)
27
+ end
28
+ end
29
+
30
+ def labelled_image_uploader(attribute, label_text = nil, options = {})
31
+ labelled_field(attribute, label_text, options) do |opts|
32
+ image_uploader(attribute, opts)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def foreign_key(attr)
39
+ object.class.reflections[attr.to_s].options[:foreign_key] ||
40
+ "#{attr}_id".to_sym
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ module ImageUploadsHelper
6
+ # Generates tags for an editable dynamic image.
7
+ def editable_dynamic_image_tag(image, width: 250,
8
+ caption: false, locale: nil)
9
+ react_component("EditableImage",
10
+ editable_image_options(
11
+ image,
12
+ width: width,
13
+ caption: caption,
14
+ locale: locale
15
+ ).merge(width: width))
16
+ end
17
+
18
+ def image_uploader_tag(name, image, options = {})
19
+ opts = { caption: false, locale: nil }.merge(options)
20
+ react_component("ImageUploader",
21
+ editable_image_options(
22
+ image,
23
+ caption: opts[:caption],
24
+ locale: opts[:locale]
25
+ ).merge(attr: name, alternative: opts[:alternative]))
26
+ end
27
+
28
+ private
29
+
30
+ def editable_image_src_options(image, width)
31
+ return {} unless image
32
+
33
+ { src: dynamic_image_path(image, size: "#{width * 2}x"),
34
+ image: ::Admin::ImageSerializer.new(image) }
35
+ end
36
+
37
+ def editable_image_options(image, width: 250, caption: false, locale: nil)
38
+ editable_image_src_options(image, width).merge(
39
+ width: width,
40
+ caption: caption,
41
+ locale: locale || I18n.default_locale,
42
+ locales: PagesCore.config.locales,
43
+ csrf_token: form_authenticity_token
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module PagesCore
4
4
  module Admin
@@ -19,54 +19,54 @@ module PagesCore
19
19
  # <% end %>
20
20
  #
21
21
  def labelled_field(field, label, options = {})
22
- content_tag(:div, class: labelled_field_class(options)) do
23
- (
24
- labelled_field_label(label, options) +
25
- labelled_field_description(options[:description]) +
26
- field +
27
- (options[:check_box_description] || "")
28
- ).html_safe
22
+ tag.div(class: labelled_field_class(options)) do
23
+ safe_join(
24
+ [labelled_field_label(label, options),
25
+ labelled_field_description(options[:description]),
26
+ field,
27
+ (options[:check_box_description] || "")]
28
+ )
29
29
  end
30
30
  end
31
31
 
32
32
  def image_upload_field(form, label, method = :image, options = {})
33
33
  output = ""
34
34
  if form.object.send(method)
35
- output += "<p>" +
36
- dynamic_image_tag(form.object.send(method), size: "120x100") +
37
- "</p>"
35
+ output += tag.p(dynamic_image_tag(form.object.send(method),
36
+ size: "120x100"))
38
37
  end
39
- output += labelled_field(
38
+ output + labelled_field(
40
39
  form.file_field(method),
41
40
  label, { errors: form.object.errors[method] }.merge(options)
42
41
  )
43
- output.html_safe
44
42
  end
45
43
 
46
44
  private
47
45
 
48
46
  def labelled_field_class(options = {})
49
- if options[:errors] && options[:errors].any?
50
- "field field_with_errors"
47
+ if options[:errors]&.any?
48
+ "field field-with-errors"
51
49
  else
52
50
  "field"
53
51
  end
54
52
  end
55
53
 
56
54
  def labelled_field_label(label, options = {})
57
- content_tag(:label) do
55
+ tag.label do
58
56
  label + labelled_field_errors(options[:errors])
59
57
  end
60
58
  end
61
59
 
62
60
  def labelled_field_description(str)
63
61
  return "" unless str
64
- content_tag(:p, str, class: "description")
62
+
63
+ tag.p(str, class: "description")
65
64
  end
66
65
 
67
66
  def labelled_field_errors(errors)
68
- return "" unless errors && errors.any?
69
- content_tag(:span, class: "error") { Array(errors).last }
67
+ return "" unless errors&.any?
68
+
69
+ tag.span(class: "error") { Array(errors).last }
70
70
  end
71
71
  end
72
72
  end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ module PageBlocksHelper
6
+ def page_block_field(form, block_name, block_options)
7
+ labelled_field(
8
+ if block_options[:type] == :select
9
+ page_block_select(form, block_name, block_options)
10
+ else
11
+ page_block_text_field(form, block_name, block_options)
12
+ end,
13
+ block_options[:title],
14
+ errors: form.object.errors[block_name],
15
+ description: block_options[:description]
16
+ )
17
+ end
18
+
19
+ def page_block_select(form, block_name, block_options)
20
+ opts = localize_page_select_options(form, block_options)
21
+ opts = opts.call if opts.is_a?(Proc)
22
+ opts = opts.map { |v| [v, v] } unless nested_array?(opts)
23
+ opts = ([["", nil]] + opts).uniq
24
+
25
+ value = form.object.send(block_name)
26
+ opts << [value, value] unless opts.map(&:last).include?(value)
27
+
28
+ form.send(:select, block_name, opts)
29
+ end
30
+
31
+ def page_block_text_field(form, block_name, block_options)
32
+ form.send(
33
+ block_options[:size] == :field ? :text_field : :rich_text_area,
34
+ block_name,
35
+ page_block_field_options(block_options)
36
+ )
37
+ end
38
+
39
+ private
40
+
41
+ def localize_page_select_options(form, block_options)
42
+ if block_options[:options].is_a?(Hash)
43
+ block_options[:options][form.object.locale.to_sym]
44
+ else
45
+ block_options[:options]
46
+ end
47
+ end
48
+
49
+ def page_block_classes(class_name, block_options = {})
50
+ [class_name, block_options[:class]].join(" ").strip
51
+ end
52
+
53
+ def page_block_field_options(block_options = {})
54
+ opts = { placeholder: block_options[:placeholder] }
55
+ if block_options[:size] == :field
56
+ opts.merge(class: page_block_classes("rich", block_options))
57
+ else
58
+ opts.merge(
59
+ class: page_block_classes("rich", block_options),
60
+ rows: (block_options[:size] == :large ? 15 : 5)
61
+ )
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module Admin
5
+ module PageJsonHelper
6
+ def page_json(page)
7
+ { id: page.id, param: page.to_param,
8
+ name: page.name,
9
+ parent_page_id: page.parent_page_id,
10
+ locale: page.locale, status: page.status,
11
+ news_page: page.news_page,
12
+ published_at: page.published_at,
13
+ pinned: page.pinned?, starts_at: page.starts_at,
14
+ permissions: page_permissions(page) }
15
+ end
16
+
17
+ def page_permissions(page)
18
+ [(:edit if policy(page).edit?),
19
+ (:create if policy(page).edit?)].compact
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module PagesCore
4
4
  module Admin
@@ -9,7 +9,7 @@ module PagesCore
9
9
  tags = options[:tags] || Tag.tags_and_suggestions_for(item, limit: 20)
10
10
  tagged = options[:tagged] || item.tags
11
11
  options[:placeholder] ||= "Add tag..."
12
- content_tag(:div, class: "tag-editor clearfix") do
12
+ tag.div(class: "tag-editor clearfix") do
13
13
  form_helper.hidden_field(field_name, class: "serialized_tags") +
14
14
  tag_check_boxes(tags, tagged) +
15
15
  add_tag_button(options)
@@ -18,27 +18,29 @@ module PagesCore
18
18
 
19
19
  private
20
20
 
21
+ def tag_check_box(tag_instance, tagged)
22
+ tag.span(class: :tag) do
23
+ check_box_tag(
24
+ "tag-#{tag_instance.id}",
25
+ 1,
26
+ tagged.include?(tag_instance)
27
+ ) + tag.span(tag_instance.name, class: :name)
28
+ end
29
+ end
30
+
21
31
  def tag_check_boxes(tags, tagged)
22
- content_tag(:div, class: :tags) do
23
- tags.map do |tag|
24
- content_tag(:span, class: :tag) do
25
- check_box_tag(
26
- "tag-#{tag.id}",
27
- 1,
28
- tagged.include?(tag)
29
- ) + content_tag(:span, tag.name, class: :name)
30
- end
31
- end.join.html_safe
32
+ tag.div(class: :tags) do
33
+ safe_join(tags.map { |t| tag_check_box(t, tagged) }, "")
32
34
  end
33
35
  end
34
36
 
35
37
  def add_tag_button(options = {})
36
- content_tag(:div, class: "add-tag-form") do
38
+ tag.div(class: "add-tag-form") do
37
39
  text_field_tag(
38
40
  "add_tag",
39
41
  options[:placeholder],
40
42
  class: "add-tag"
41
- ) + content_tag(:button, "Add", class: "add-tag-button")
43
+ ) + tag.button("Add", class: "add-tag-button")
42
44
  end
43
45
  end
44
46
  end
@@ -1,42 +1,23 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  # Methods added to this helper will be available to all templates
4
4
  # in the application.
5
5
  module PagesCore
6
6
  module ApplicationHelper
7
+ include PagesCore::AttachmentsHelper
7
8
  include PagesCore::HeadTagsHelper
8
9
  include PagesCore::ImagesHelper
10
+ include PagesCore::MetaTagsHelper
11
+ include PagesCore::OpenGraphTagsHelper
12
+ include PagesCore::PagePathHelper
9
13
 
10
14
  def page_link(page, options = {})
11
15
  link_locale = options[:locale] || locale
12
16
  page.localize(link_locale) do |p|
13
17
  title = options[:title] || p.name.to_s
14
18
  return title unless conditional_options?(options)
15
- url = if p.redirects?
16
- p.redirect_path(locale: link_locale)
17
- else
18
- page_path(link_locale, p)
19
- end
20
- link_to(title, url, class: options[:class])
21
- end
22
- end
23
19
 
24
- def page_url(page_or_locale, page = nil, options = {})
25
- if page
26
- locale = page_or_locale
27
- else
28
- ActiveSupport::Deprecation.warn(
29
- "Calling page_url without locale is deprecated"
30
- )
31
- locale = options[:locale] || @locale
32
- page = page_or_locale
33
- end
34
- page.localize(locale) do |p|
35
- if p.redirects?
36
- p.redirect_path(locale: locale)
37
- else
38
- super locale, p, options
39
- end
20
+ link_to(title, page_link_path(link_locale, p), class: options[:class])
40
21
  end
41
22
  end
42
23
 
@@ -47,7 +28,7 @@ module PagesCore
47
28
  output = capture(page.localize(locale), &block)
48
29
  concat(output)
49
30
  end
50
- (page) ? page.localize(locale) : nil
31
+ page ? page.localize(locale) : nil
51
32
  end
52
33
 
53
34
  private
@@ -61,5 +42,13 @@ module PagesCore
61
42
  true
62
43
  end
63
44
  end
45
+
46
+ def page_link_path(locale, page)
47
+ if page.redirects?
48
+ page.redirect_path(locale: locale)
49
+ else
50
+ page_path(locale, page)
51
+ end
52
+ end
64
53
  end
65
54
  end