pages_core 3.4.3 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
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