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,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PagesCore
4
+ module AttachmentsHelper
5
+ def attachment_path(*args)
6
+ super(*attachment_params(args))
7
+ end
8
+
9
+ def download_attachment_path(*args)
10
+ super(*attachment_params(args))
11
+ end
12
+
13
+ def page_file_path(*args)
14
+ ActiveSupport::Deprecation.warn(
15
+ "#page_file_path is deprecated, use #attachment_path"
16
+ )
17
+ page_file = args.detect { |a| a.is_a?(PageFile) }
18
+ return attachment_path(page_file.attachment) if page_file
19
+
20
+ super(*args)
21
+ end
22
+
23
+ private
24
+
25
+ def attachment_params(args)
26
+ attachment = args.detect { |a| a.is_a?(Attachment) }
27
+ args = [attachment.digest] + args if args.first == attachment
28
+ if args.last.is_a?(Hash)
29
+ args.last[:format] = attachment.filename_extension
30
+ else
31
+ args.push(format: attachment.filename_extension)
32
+ end
33
+ args
34
+ end
35
+
36
+ def attachment_digest(attachment)
37
+ Attachment.verifier.generate(attachment.id.to_s)
38
+ end
39
+ end
40
+ end
@@ -1,187 +1,124 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module PagesCore
4
4
  class FormBuilder < ActionView::Helpers::FormBuilder
5
5
  include ActionView::Helpers::TagHelper
6
6
 
7
- # Are there any errors on this attribute?
8
- def errors_on?(attribute)
9
- errors_on(attribute).length > 0
7
+ def field_with_label(attr, str, label = nil, class_name = nil)
8
+ classes = ["field", class_name]
9
+ classes << "field-with-errors" if object.errors[attr].any?
10
+ tag.div(label_for(attr, label) + str, class: classes.compact.join(" "))
10
11
  end
11
12
 
12
- # Returns all errors for the attribute
13
- def errors_on(attribute)
14
- errors = object.errors[attribute] || []
15
- errors = [errors] unless errors.is_a?(Array)
16
- errors
17
- end
13
+ def image_file_preview(attribute)
14
+ return "" unless object.send(attribute) &&
15
+ !object.send(attribute).new_record?
18
16
 
19
- # Returns the first error on attribute
20
- def first_error_on(attribute)
21
- errors_on(attribute).first
17
+ tag.p(
18
+ @template.dynamic_image_tag(object.send(attribute), size: "120x100")
19
+ )
22
20
  end
23
21
 
24
22
  def image_file_field(attribute, options = {})
25
- if object.send(attribute)
26
- content_tag(
27
- "p",
28
- @template.dynamic_image_tag(object.send(attribute), size: "120x100")
29
- ) + file_field(attribute, options)
30
- else
31
- file_field(attribute, options)
32
- end
23
+ safe_join [image_file_preview(attribute), file_field(attribute, options)]
33
24
  end
34
25
 
35
- def field_with_label(attribute, content, label_text = nil)
36
- classes = ["field"]
37
- classes << "field_with_errors" if errors_on?(attribute)
38
- content_tag(
39
- "div",
40
- label_for(attribute, label_text) + content,
41
- class: classes.join(" ")
42
- )
26
+ def label_and_errors(attribute, label_text)
27
+ return label_text unless object.errors[attribute].any?
28
+
29
+ error = tag.span(object.errors[attribute].first, class: "error")
30
+ safe_join([label_text, error], " ")
43
31
  end
44
32
 
45
33
  def label_for(attribute, label_text = nil)
46
34
  label_text ||= object.class.human_attribute_name(attribute)
47
- if errors_on?(attribute)
48
- label_text += " <span class=\"error\">" +
49
- first_error_on(attribute) +
50
- "</span>"
51
- end
52
- content_tag(
53
- "label",
54
- label_text.html_safe,
55
- for: [object.class.to_s.underscore, attribute].join("_")
56
- )
35
+ tag.label(label_and_errors(attribute, label_text),
36
+ for: [object.class.to_s.underscore, attribute].join("_"))
57
37
  end
58
38
 
59
- def labelled_text_field(attribute, label_text = nil, options = {})
60
- label_text, options = parse_label_text_and_options(label_text, options)
61
- field_with_label(
62
- attribute,
63
- text_field(attribute, options),
64
- label_text
65
- )
66
- end
67
-
68
- def labelled_text_area(attribute, label_text = nil, options = {})
69
- label_text, options = parse_label_text_and_options(label_text, options)
70
- field_with_label(
71
- attribute,
72
- text_area(attribute, options),
73
- label_text
74
- )
39
+ def labelled_check_box(
40
+ attr, label = nil, options = {}, checked = "1", unchecked = "0"
41
+ )
42
+ labelled_field(attr, label, options) do |opts|
43
+ check_box(attr, opts, checked, unchecked)
44
+ end
75
45
  end
76
46
 
77
47
  def labelled_country_select(
78
- attribute,
79
- label_text = nil,
80
- priority_or_options = {},
81
- options = {},
82
- html_options = {}
48
+ attr, label = nil, priority = {}, opts = {}, html_opts = {}
83
49
  )
84
- if priority_or_options.is_a?(Hash)
85
- label_text, priority_or_options = parse_label_text_and_options(
86
- label_text,
87
- priority_or_options
88
- )
89
- else
90
- label_text, options = parse_label_text_and_options(
91
- label_text,
92
- options
93
- )
50
+ if priority.is_a?(Hash)
51
+ return labelled_field(attr, label, priority) do |options|
52
+ country_select(attr, options, opts, html_opts)
53
+ end
54
+ end
55
+ labelled_field(attr, label, opts) do |options|
56
+ country_select(attr, priority, options, html_opts)
94
57
  end
95
- field_with_label(
96
- attribute,
97
- country_select(attribute, priority_or_options, options, html_options),
98
- label_text
99
- )
100
58
  end
101
59
 
102
60
  def labelled_date_select(attribute, label_text = nil, options = {})
103
- label_text, options = parse_label_text_and_options(label_text, options)
104
- field_with_label(
105
- attribute,
106
- date_select(attribute, options),
107
- label_text
108
- )
61
+ labelled_field(attribute, label_text, options) do |opts|
62
+ date_select(attribute, opts)
63
+ end
109
64
  end
110
65
 
111
66
  def labelled_datetime_select(attribute, label_text = nil, options = {})
112
- label_text, options = parse_label_text_and_options(label_text, options)
113
- field_with_label(
114
- attribute,
115
- datetime_select(attribute, options),
116
- label_text
117
- )
67
+ labelled_field(attribute, label_text, options) do |opts|
68
+ datetime_select(attribute, opts)
69
+ end
118
70
  end
119
71
 
120
- def labelled_time_select(attribute, label_text = nil, options = {})
121
- label_text, options = parse_label_text_and_options(label_text, options)
122
- field_with_label(
123
- attribute,
124
- time_select(attribute, options),
125
- label_text
126
- )
72
+ def labelled_file_field(attribute, label_text = nil, options = {})
73
+ labelled_field(attribute, label_text, options) do |opts|
74
+ file_field(attribute, opts)
75
+ end
127
76
  end
128
77
 
129
- def labelled_select(attribute, choices, label_text = nil, options = {})
130
- label_text, options = parse_label_text_and_options(label_text, options)
131
- field_with_label(
132
- attribute,
133
- select(attribute, choices, options),
134
- label_text
135
- )
78
+ def labelled_image_file_field(attribute, label_text = nil, options = {})
79
+ labelled_field(attribute, label_text, options) do |opts|
80
+ image_file_field(attribute, opts)
81
+ end
136
82
  end
137
83
 
138
- def labelled_check_box(
139
- attribute, label_text = nil, options = {},
140
- checked_value = "1", unchecked_value = "0"
141
- )
142
- label_text, options = parse_label_text_and_options(label_text, options)
143
- field_with_label(
144
- attribute,
145
- check_box(attribute, options, checked_value, unchecked_value),
146
- label_text
147
- )
84
+ def labelled_password_field(attribute, label_text = nil, options = {})
85
+ labelled_field(attribute, label_text, options, "text-field") do |opts|
86
+ password_field(attribute, opts)
87
+ end
148
88
  end
149
89
 
150
- def labelled_file_field(attribute, label_text = nil, options = {})
151
- label_text, options = parse_label_text_and_options(label_text, options)
152
- field_with_label(
153
- attribute,
154
- file_field(attribute, options),
155
- label_text
156
- )
90
+ def labelled_select(attribute, choices, label_text = nil, options = {})
91
+ labelled_field(attribute, label_text, options) do |opts|
92
+ select(attribute, choices, opts)
93
+ end
157
94
  end
158
95
 
159
- def labelled_image_file_field(attribute, label_text = nil, options = {})
160
- label_text, options = parse_label_text_and_options(label_text, options)
161
- field_with_label(
162
- attribute,
163
- image_file_field(attribute, options),
164
- label_text
165
- )
96
+ def labelled_text_area(attribute, label_text = nil, options = {})
97
+ labelled_field(attribute, label_text, options, "text-area") do |opts|
98
+ text_area(attribute, opts)
99
+ end
166
100
  end
167
101
 
168
- def labelled_password_field(attribute, label_text = nil, options = {})
169
- label_text, options = parse_label_text_and_options(label_text, options)
170
- field_with_label(
171
- attribute,
172
- password_field(attribute, options),
173
- label_text
174
- )
102
+ def labelled_text_field(attribute, label_text = nil, options = {})
103
+ labelled_field(attribute, label_text, options, "text-field") do |opts|
104
+ text_field(attribute, opts)
105
+ end
106
+ end
107
+
108
+ def labelled_time_select(attribute, label_text = nil, options = {})
109
+ labelled_field(attribute, label_text, options) do |opts|
110
+ time_select(attribute, opts)
111
+ end
175
112
  end
176
113
 
177
114
  protected
178
115
 
179
- def parse_label_text_and_options(label_text = nil, options = {})
116
+ def labelled_field(attr, label_text = nil, options = {}, class_name = nil)
180
117
  if label_text.is_a?(Hash) && options == {}
181
118
  options = label_text
182
119
  label_text = nil
183
120
  end
184
- [label_text, options]
121
+ field_with_label(attr, yield(options), label_text, class_name)
185
122
  end
186
123
  end
187
124
  end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module PagesCore
4
4
  module FrontendHelper
@@ -10,12 +10,6 @@ module PagesCore
10
10
  @root_page ||= root_pages.first
11
11
  end
12
12
 
13
- attr_reader :search_query
14
-
15
- attr_reader :search_category_id
16
-
17
- def comment_honeypot_field
18
- text_field_tag "email", "", class: "comment_email"
19
- end
13
+ attr_reader :search_query, :search_category_id
20
14
  end
21
15
  end
@@ -1,26 +1,7 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module PagesCore
4
4
  module HeadTagsHelper
5
- # Sets a default image to use for meta tags. Supports
6
- # both paths and Image objects.
7
- #
8
- # default_meta_image image_path("facebook-share.png")
9
- # default_meta_image root_page.image
10
- #
11
- def default_meta_image(*args)
12
- if args.any?
13
- @default_meta_image = args.first
14
- else
15
- @default_meta_image
16
- end
17
- end
18
-
19
- # Returns true if default meta image has been set.
20
- def default_meta_image?
21
- default_meta_image ? true : false
22
- end
23
-
24
5
  # Sets a document title.
25
6
  #
26
7
  # document_title "Dashboard"
@@ -35,7 +16,7 @@ module PagesCore
35
16
  )
36
17
  end
37
18
  end
38
- alias_method :page_title, :document_title
19
+ alias page_title document_title
39
20
 
40
21
  # Returns true if document title has been set.
41
22
  def document_title?
@@ -51,19 +32,13 @@ module PagesCore
51
32
  def feed_tags(options = {})
52
33
  feeds = Page.enabled_feeds(@locale, options)
53
34
  return unless feeds.any?
35
+
54
36
  feed_tags = [
55
- rss_link_tag(
56
- PagesCore.config(:site_name),
57
- pages_url(@locale, format: :rss)
58
- )
59
- ]
60
- if feeds.count < 1
61
- feed_tags += feeds.map do |page|
62
- rss_link_tag(
63
- "#{PagesCore.config(:site_name)}: #{page.name}",
64
- page_url(@locale, page, format: :rss)
65
- )
66
- end
37
+ rss_link_tag(PagesCore.config(:site_name),
38
+ pages_url(@locale, format: :rss))
39
+ ] + feeds.map do |page|
40
+ rss_link_tag("#{PagesCore.config(:site_name)}: #{page.name}",
41
+ page_url(@locale, page, format: :rss))
67
42
  end
68
43
  safe_join(feed_tags, "\n")
69
44
  end
@@ -74,17 +49,12 @@ module PagesCore
74
49
  #
75
50
  def google_analytics_tags(account_id)
76
51
  javascript_tag(
77
- "var _gaq = _gaq || [];\n" \
78
- "_gaq.push(['_setAccount', '#{account_id}']);\n" \
79
- "_gaq.push(['_trackPageview']);\n" \
80
- "(function() {\n" \
81
- "var ga = document.createElement('script'); " \
82
- "ga.type = 'text/javascript'; ga.async = true;\n" \
83
- "ga.src = ('https:' == document.location.protocol ? 'https://ssl' " \
84
- ": 'http://www') + '.google-analytics.com/ga.js';\n" \
85
- "var s = document.getElementsByTagName('script')[0]; " \
86
- "s.parentNode.insertBefore(ga, s);\n" \
87
- "})();"
52
+ "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||" \
53
+ "function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new " \
54
+ "Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];" \
55
+ "a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window," \
56
+ "document,'script','//www.google-analytics.com/analytics.js','ga');" \
57
+ "\n\nga('create', '#{account_id}', 'auto');\nga('send', 'pageview');"
88
58
  )
89
59
  end
90
60
 
@@ -102,90 +72,13 @@ module PagesCore
102
72
  # The block output must be captured first
103
73
  block_output = block_given? ? capture(&block) : nil
104
74
 
105
- "<!doctype html>\n<html lang=\"#{I18n.locale}\">".html_safe +
106
- content_tag(:head) { safe_join(head_tag_contents(block_output), "\n") }
107
- end
108
-
109
- # Sets a description for meta tags.
110
- #
111
- # meta_description "This is an awesome site"
112
- #
113
- def meta_description(*args)
114
- if args.any?
115
- @meta_description = args.first
116
- else
117
- description = @meta_description
118
- description ||= @page.meta_description if @page.try(&:meta_description?)
119
- description ||= @page.excerpt if @page && !@page.excerpt.empty?
120
- strip_tags(description)
121
- end
122
- end
123
-
124
- # Returns true if meta description has been set.
125
- def meta_description?
126
- !meta_description.blank?
127
- end
128
-
129
- # Sets an image to use for meta tags. Supports
130
- # both paths and Image objects.
131
- #
132
- # meta_image image_path("facebook-share.png")
133
- # meta_image @page.image
134
- #
135
- def meta_image(*args)
136
- if args.any?
137
- @meta_image = args.first
138
- else
139
- image = @meta_image
140
- image ||= @page.try(&:meta_image)
141
- image ||= @page.try(&:image)
142
- image ||= default_meta_image
143
- if image.is_a?(Image)
144
- dynamic_image_url(image, size: "1200x", only_path: false)
145
- else
146
- image
147
- end
148
- end
149
- end
150
-
151
- # Returns true if meta image has been set.
152
- def meta_image?
153
- !meta_image.blank? || default_meta_image?
154
- end
155
-
156
- # Sets keywords for meta tags.
157
- #
158
- # meta_keywords "cialis viagra"
159
- #
160
- def meta_keywords(*args)
161
- if args.any?
162
- @meta_keywords = Array(args.first).join(" ")
163
- else
164
- keywords = @meta_keywords
165
- keywords ||= @page.tag_list if @page && @page.tags.any?
166
- strip_tags(keywords)
167
- end
168
- end
169
-
170
- # Returns true if meta keywords have been set.
171
- def meta_keywords?
172
- !meta_keywords.blank?
173
- end
174
-
175
- def open_graph_properties
176
- @_open_graph_properties ||= {}
177
- end
178
-
179
- # Outputs Open Graph tags for Facebook.
180
- def open_graph_tags
181
- properties = default_open_graph_properties.merge(open_graph_properties)
182
75
  safe_join(
183
- properties
184
- .delete_if { |_, content| content.nil? }
185
- .map do |name, content|
186
- tag(:meta, property: "og:#{name}", content: content)
187
- end,
188
- "\n"
76
+ [
77
+ "<!doctype html>\n<html lang=\"#{I18n.locale}\">".html_safe,
78
+ tag.head do
79
+ safe_join(head_tag_contents(block_output), "\n")
80
+ end
81
+ ]
189
82
  )
190
83
  end
191
84
 
@@ -209,62 +102,36 @@ module PagesCore
209
102
  #
210
103
  def typekit_tags(kit_id)
211
104
  safe_join([
212
- javascript_include_tag("http://use.typekit.com/#{kit_id}.js"),
213
- javascript_tag("try{Typekit.load();}catch(e){}")
214
- ], "\n")
105
+ javascript_include_tag("http://use.typekit.com/#{kit_id}.js"),
106
+ javascript_tag("try{Typekit.load();}catch(e){}")
107
+ ], "\n")
215
108
  end
216
109
 
217
110
  private
218
111
 
219
- def default_open_graph_title
220
- if @page.try(:open_graph_title?)
221
- @page.open_graph_title
222
- else
223
- document_title
224
- end
225
- end
226
-
227
- def default_open_graph_description
228
- if @page.try(:open_graph_description?)
229
- @page.open_graph_description
230
- elsif meta_description?
231
- meta_description
232
- end
233
- end
234
-
235
- def default_open_graph_properties
236
- {
237
- type: "website",
238
- site_name: PagesCore.config(:site_name),
239
- title: default_open_graph_title,
240
- image: (meta_image if meta_image?),
241
- description: default_open_graph_description,
242
- url: request.url
243
- }
112
+ def head_tag_contents(block_output)
113
+ [
114
+ tag(:meta, charset: "utf-8"),
115
+ tag(:meta, "http-equiv" => "X-UA-Compatible", "content" => "IE=edge"),
116
+ tag.title(document_title),
117
+ meta_description_tag, meta_keywords_tag,
118
+ (tag(:link, rel: "image_src", href: meta_image) if meta_image?),
119
+ open_graph_tags,
120
+ csrf_meta_tags,
121
+ block_output
122
+ ]
244
123
  end
245
124
 
246
125
  def meta_description_tag
247
126
  return unless meta_description?
127
+
248
128
  tag(:meta, name: "description", content: meta_description)
249
129
  end
250
130
 
251
131
  def meta_keywords_tag
252
132
  return unless meta_keywords?
253
- tag(:meta, name: "keywords", content: meta_keywords)
254
- end
255
133
 
256
- def head_tag_contents(block_output)
257
- [
258
- tag(:meta, charset: "utf-8"),
259
- tag(:meta, "http-equiv" => "X-UA-Compatible", "content" => "IE=edge"),
260
- content_tag(:title, document_title),
261
- meta_description_tag,
262
- meta_keywords_tag,
263
- (tag(:link, rel: "image_src", href: meta_image) if meta_image?),
264
- open_graph_tags,
265
- csrf_meta_tags,
266
- block_output
267
- ]
134
+ tag(:meta, name: "keywords", content: meta_keywords)
268
135
  end
269
136
  end
270
137
  end