pages_core 3.5.1 → 3.6.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 (312) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +7 -13
  3. data/app/assets/javascripts/pages/{admin.es6.jsx → admin.jsx} +2 -4
  4. data/app/assets/javascripts/pages/admin/components.jsx +2 -0
  5. data/app/assets/javascripts/pages/admin/components/attachment.jsx +130 -0
  6. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +131 -0
  7. data/app/assets/javascripts/pages/admin/components/attachments.jsx +211 -0
  8. data/app/assets/javascripts/pages/admin/components/date_range_select.jsx +174 -0
  9. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +174 -0
  10. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +57 -0
  11. data/app/assets/javascripts/pages/admin/components/file_upload_button.jsx +44 -0
  12. data/app/assets/javascripts/pages/admin/components/focal_point.jsx +82 -0
  13. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +124 -0
  14. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +496 -0
  15. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +301 -0
  16. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +171 -0
  17. data/app/assets/javascripts/pages/admin/components/modal.jsx +48 -0
  18. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +20 -0
  19. data/app/assets/javascripts/pages/admin/components/page_dates.jsx +58 -0
  20. data/app/assets/javascripts/pages/admin/components/page_files.jsx +14 -0
  21. data/app/assets/javascripts/pages/admin/components/page_images.jsx +16 -0
  22. data/app/assets/javascripts/pages/admin/components/{page_tree.es6.jsx → page_tree.jsx} +7 -37
  23. data/app/assets/javascripts/pages/admin/components/{page_tree_node.es6.jsx → page_tree_node.jsx} +32 -10
  24. data/app/assets/javascripts/pages/admin/components/page_tree_store.jsx +203 -0
  25. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +63 -0
  26. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +58 -0
  27. data/app/assets/javascripts/pages/admin/components/toast.jsx +37 -0
  28. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +52 -0
  29. data/app/assets/javascripts/pages/admin/features/{content_tabs.es6.jsx → content_tabs.jsx} +11 -2
  30. data/app/assets/javascripts/pages/admin/features/{edit_page.es6.jsx → edit_page.jsx} +7 -51
  31. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +14 -0
  32. data/app/assets/javascripts/pages/admin/features/{tag_editor.es6.jsx → tag_editor.jsx} +0 -0
  33. data/app/assets/javascripts/pages/admin/lib/{tree.es6.jsx → tree.jsx} +0 -0
  34. data/app/assets/javascripts/pages/{login_form.es6.jsx → login_form.jsx} +0 -0
  35. data/app/assets/stylesheets/pages/admin.scss +9 -13
  36. data/app/assets/stylesheets/pages/admin/components/archive.scss +6 -0
  37. data/app/assets/stylesheets/pages/admin/components/attachments.scss +130 -0
  38. data/app/assets/stylesheets/pages/admin/components/buttons.scss +18 -0
  39. data/app/assets/stylesheets/pages/admin/components/forms.scss +99 -21
  40. data/app/assets/stylesheets/pages/admin/components/header.scss +16 -28
  41. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +195 -0
  42. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +181 -0
  43. data/app/assets/stylesheets/pages/admin/components/image_uploader.scss +53 -0
  44. data/app/assets/stylesheets/pages/admin/components/links.scss +1 -1
  45. data/app/assets/stylesheets/pages/admin/components/list_table.scss +8 -5
  46. data/app/assets/stylesheets/pages/admin/components/login.scss +2 -8
  47. data/app/assets/stylesheets/pages/admin/components/modal.scss +91 -0
  48. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +12 -6
  49. data/app/assets/stylesheets/pages/admin/components/pagination.scss +34 -16
  50. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +9 -6
  51. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +20 -15
  52. data/app/assets/stylesheets/pages/admin/components/textarea.scss +1 -71
  53. data/app/assets/stylesheets/pages/admin/components/toast.scss +51 -0
  54. data/app/assets/stylesheets/pages/admin/components/toolbar.scss +108 -0
  55. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +9 -21
  56. data/app/assets/stylesheets/pages/admin/controllers/users.scss +2 -2
  57. data/app/assets/stylesheets/pages/admin/vars.scss +26 -4
  58. data/app/controller_dummies/admin/admin_controller.rb +0 -2
  59. data/app/controller_dummies/application_controller.rb +2 -4
  60. data/app/controller_dummies/attachments_controller.rb +2 -0
  61. data/app/controller_dummies/frontend_controller.rb +0 -2
  62. data/app/controller_dummies/images_controller.rb +0 -2
  63. data/app/controller_dummies/page_files_controller.rb +0 -2
  64. data/app/controller_dummies/pages_controller.rb +0 -2
  65. data/app/controller_dummies/sitemaps_controller.rb +0 -2
  66. data/app/controllers/admin/attachments_controller.rb +48 -0
  67. data/app/controllers/admin/categories_controller.rb +2 -5
  68. data/app/controllers/admin/images_controller.rb +25 -19
  69. data/app/controllers/admin/invites_controller.rb +16 -26
  70. data/app/controllers/admin/pages_controller.rb +50 -32
  71. data/app/controllers/admin/password_resets_controller.rb +11 -18
  72. data/app/controllers/admin/users_controller.rb +16 -22
  73. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +21 -14
  74. data/app/controllers/concerns/pages_core/authentication.rb +0 -2
  75. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -2
  76. data/app/controllers/concerns/pages_core/error_renderer.rb +33 -0
  77. data/app/controllers/concerns/pages_core/policies_helper.rb +9 -13
  78. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +3 -5
  79. data/app/controllers/concerns/pages_core/process_titler.rb +1 -3
  80. data/app/controllers/concerns/pages_core/rss_controller.rb +0 -2
  81. data/app/controllers/errors_controller.rb +52 -26
  82. data/app/controllers/pages_core/admin_controller.rb +22 -13
  83. data/app/controllers/pages_core/attachments_controller.rb +36 -0
  84. data/app/controllers/pages_core/{application_controller.rb → base_controller.rb} +16 -5
  85. data/app/controllers/pages_core/frontend/page_files_controller.rb +5 -24
  86. data/app/controllers/pages_core/frontend/pages_controller.rb +4 -8
  87. data/app/controllers/pages_core/frontend_controller.rb +0 -2
  88. data/app/controllers/pages_core/images_controller.rb +0 -2
  89. data/app/controllers/pages_core/sitemaps_controller.rb +3 -5
  90. data/app/controllers/sessions_controller.rb +3 -15
  91. data/app/formatters/pages_core/html_formatter.rb +60 -16
  92. data/app/formatters/pages_core/link_renderer.rb +15 -0
  93. data/app/helpers/admin/admin_helper.rb +0 -2
  94. data/app/helpers/admin/menu_helper.rb +2 -4
  95. data/app/helpers/admin/pages_helper.rb +47 -9
  96. data/app/helpers/application_helper.rb +0 -2
  97. data/app/helpers/frontend_helper.rb +0 -2
  98. data/app/helpers/pages_core/admin/admin_helper.rb +75 -20
  99. data/app/helpers/pages_core/admin/form_builder.rb +36 -0
  100. data/app/helpers/pages_core/admin/labelled_field_helper.rb +6 -8
  101. data/app/helpers/pages_core/admin/tag_editor_helper.rb +0 -2
  102. data/app/helpers/pages_core/application_helper.rb +1 -2
  103. data/app/helpers/pages_core/attachments_helper.rb +36 -0
  104. data/app/helpers/pages_core/form_builder.rb +7 -11
  105. data/app/helpers/pages_core/frontend_helper.rb +0 -6
  106. data/app/helpers/pages_core/head_tags_helper.rb +8 -4
  107. data/app/helpers/pages_core/images_helper.rb +0 -2
  108. data/app/helpers/pages_core/meta_tags_helper.rb +3 -5
  109. data/app/helpers/pages_core/open_graph_tags_helper.rb +1 -3
  110. data/app/helpers/pages_core/page_path_helper.rb +14 -9
  111. data/app/jobs/pages_core/autopublish_job.rb +0 -2
  112. data/app/jobs/pages_core/sweep_cache_job.rb +0 -2
  113. data/app/mailers/admin_mailer.rb +3 -16
  114. data/app/models/attachment.rb +76 -0
  115. data/app/models/autopublisher.rb +3 -3
  116. data/app/models/category.rb +0 -3
  117. data/app/models/concerns/pages_core/has_roles.rb +1 -2
  118. data/app/models/concerns/pages_core/humanizable_param.rb +4 -4
  119. data/app/models/concerns/pages_core/page_model/attachments.rb +39 -0
  120. data/app/models/concerns/pages_core/page_model/autopublishable.rb +0 -2
  121. data/app/models/concerns/pages_core/page_model/dated_page.rb +59 -0
  122. data/app/models/concerns/pages_core/page_model/images.rb +12 -15
  123. data/app/models/concerns/pages_core/page_model/localizable.rb +10 -3
  124. data/app/models/concerns/pages_core/page_model/pathable.rb +8 -10
  125. data/app/models/concerns/pages_core/page_model/redirectable.rb +0 -2
  126. data/app/models/concerns/pages_core/page_model/sortable.rb +1 -3
  127. data/app/models/concerns/pages_core/page_model/status.rb +1 -3
  128. data/app/models/concerns/pages_core/page_model/templateable.rb +2 -4
  129. data/app/models/concerns/pages_core/page_model/tree.rb +24 -5
  130. data/app/models/concerns/pages_core/sweepable.rb +0 -2
  131. data/app/models/concerns/pages_core/taggable.rb +4 -3
  132. data/app/models/image.rb +1 -0
  133. data/app/models/invite.rb +0 -10
  134. data/app/models/page.rb +17 -21
  135. data/app/models/page_builder.rb +0 -2
  136. data/app/models/page_category.rb +0 -2
  137. data/app/models/page_exporter.rb +87 -0
  138. data/app/models/page_file.rb +24 -48
  139. data/app/models/page_image.rb +3 -37
  140. data/app/models/page_path.rb +0 -2
  141. data/app/models/password_reset_token.rb +0 -4
  142. data/app/models/role.rb +15 -2
  143. data/app/models/tag.rb +15 -6
  144. data/app/models/tagging.rb +1 -3
  145. data/app/models/user.rb +29 -25
  146. data/app/policies/page_file_policy.rb +13 -17
  147. data/app/policies/page_image_policy.rb +13 -17
  148. data/app/policies/page_policy.rb +26 -26
  149. data/app/policies/policy.rb +2 -8
  150. data/app/policies/user_policy.rb +32 -32
  151. data/app/serializers/admin/attachment_serializer.rb +29 -0
  152. data/app/serializers/admin/image_serializer.rb +53 -6
  153. data/app/serializers/admin/page_file_serializer.rb +6 -0
  154. data/app/serializers/admin/page_image_serializer.rb +1 -1
  155. data/app/serializers/page_export_serializer.rb +30 -0
  156. data/app/serializers/page_file_export_serializer.rb +4 -0
  157. data/app/serializers/page_image_export_serializer.rb +40 -0
  158. data/app/serializers/page_image_serializer.rb +2 -0
  159. data/app/services/pages_core/create_user_service.rb +36 -0
  160. data/app/services/pages_core/invite_service.rb +41 -0
  161. data/app/views/admin/images/show.json.jbuilder +6 -0
  162. data/app/views/admin/pages/_edit_content.html.erb +7 -0
  163. data/app/views/admin/pages/_edit_files.html.erb +8 -0
  164. data/app/views/admin/pages/_edit_images.html.erb +8 -95
  165. data/app/views/admin/pages/_edit_options.html.erb +7 -15
  166. data/app/views/admin/pages/_list_item.html.erb +50 -0
  167. data/app/views/admin/pages/deleted.html.erb +42 -0
  168. data/app/views/admin/pages/edit.html.erb +9 -94
  169. data/app/views/admin/pages/index.html.erb +9 -12
  170. data/app/views/admin/pages/new.html.erb +2 -1
  171. data/app/views/admin/pages/news.html.erb +59 -45
  172. data/app/views/admin/password_resets/show.html.erb +6 -9
  173. data/app/views/admin/users/_access_control.html.erb +4 -1
  174. data/app/views/admin/users/_list.html.erb +12 -7
  175. data/app/views/admin/users/edit.html.erb +5 -11
  176. data/app/views/admin/users/login.html.erb +58 -15
  177. data/app/views/admin/users/show.html.erb +1 -1
  178. data/app/views/admin_mailer/invite.text.erb +1 -1
  179. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  180. data/app/views/errors/401.html.erb +6 -0
  181. data/app/views/errors/403.html.erb +1 -1
  182. data/app/views/errors/500.html.erb +11 -6
  183. data/app/views/errors/500_critical.html.erb +1 -1
  184. data/app/views/feeds/pages.rss.builder +1 -3
  185. data/app/views/layouts/admin.html.erb +83 -83
  186. data/app/views/layouts/admin/_analytics.html.erb +1 -3
  187. data/app/views/layouts/admin/_header.html.erb +2 -2
  188. data/app/views/layouts/errors.html.erb +3 -7
  189. data/config/locales/en.yml +12 -0
  190. data/config/routes.rb +38 -55
  191. data/db/migrate/20111219033112_create_pages_tables.rb +6 -8
  192. data/db/migrate/20120627033112_rename_textbits.rb +1 -3
  193. data/db/migrate/20121010055412_drop_removed_tables.rb +1 -3
  194. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +1 -3
  195. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +1 -3
  196. data/db/migrate/20130303160632_remove_imagesets.rb +1 -3
  197. data/db/migrate/20130303161732_remove_sms_subscribers.rb +1 -3
  198. data/db/migrate/20130823133208_update_page_redirect_to.rb +1 -3
  199. data/db/migrate/20140203183900_create_roles.rb +1 -1
  200. data/db/migrate/20140414150500_change_locale_names.rb +1 -3
  201. data/db/migrate/20140604142100_remove_openid_url.rb +1 -1
  202. data/db/migrate/20140920231700_convert_images_to_dis.rb +1 -1
  203. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +1 -1
  204. data/db/migrate/20141004003100_create_password_reset_tokens.rb +1 -1
  205. data/db/migrate/20141006181300_remove_user_cruft.rb +1 -1
  206. data/db/migrate/20141007173000_create_invites.rb +1 -1
  207. data/db/migrate/20150204130800_update_delayed_job_table.rb +1 -1
  208. data/db/migrate/20150401131300_localize_images.rb +1 -1
  209. data/db/migrate/20150520174300_add_meta_image_to_page.rb +1 -1
  210. data/db/migrate/20150904164200_add_pinned_to_tags.rb +1 -1
  211. data/db/migrate/20151002174800_create_page_paths.rb +2 -2
  212. data/db/migrate/20151021103400_drop_binaries_table.rb +1 -1
  213. data/db/migrate/20151204151000_remove_page_content_order.rb +1 -1
  214. data/db/migrate/20160330220900_rename_pages_categories.rb +1 -1
  215. data/db/migrate/20160405202700_change_localization_limit.rb +1 -1
  216. data/db/migrate/20170716040500_remove_page_comments.rb +23 -0
  217. data/db/migrate/20170716213400_remove_sessions.rb +15 -0
  218. data/db/migrate/20180207134000_add_dates_to_pages.rb +11 -0
  219. data/db/migrate/20190211154800_create_attachments.rb +73 -0
  220. data/lib/pages_core.rb +6 -9
  221. data/lib/pages_core/admin_menu_item.rb +0 -2
  222. data/lib/pages_core/archive_finder.rb +21 -15
  223. data/lib/pages_core/attachment_embedder.rb +38 -0
  224. data/lib/pages_core/cache_sweeper.rb +14 -23
  225. data/lib/pages_core/configuration.rb +0 -2
  226. data/lib/pages_core/configuration/base.rb +0 -2
  227. data/lib/pages_core/configuration/pages.rb +2 -8
  228. data/lib/pages_core/digest_verifier.rb +70 -0
  229. data/lib/pages_core/engine.rb +6 -13
  230. data/lib/pages_core/extensions.rb +0 -3
  231. data/lib/pages_core/extensions/string_extensions.rb +0 -2
  232. data/lib/pages_core/page_path_constraint.rb +0 -2
  233. data/lib/pages_core/pages_plugin.rb +0 -2
  234. data/lib/pages_core/plugin.rb +0 -2
  235. data/lib/pages_core/pub_sub.rb +36 -0
  236. data/lib/pages_core/templates.rb +0 -2
  237. data/lib/pages_core/templates/block_configuration.rb +1 -3
  238. data/lib/pages_core/templates/configuration.rb +88 -10
  239. data/lib/pages_core/templates/configuration_handler.rb +6 -4
  240. data/lib/pages_core/templates/configuration_proxy.rb +4 -2
  241. data/lib/pages_core/templates/controller_actions.rb +0 -2
  242. data/lib/pages_core/templates/template_configuration.rb +41 -37
  243. data/lib/pages_core/version.rb +1 -3
  244. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +10 -17
  245. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +1 -2
  246. data/lib/rails/generators/pages_core/frontend/templates/{application.css.scss.erb → application.scss.erb} +0 -0
  247. data/lib/rails/generators/pages_core/frontend/templates/{base.css.scss.erb → base.scss.erb} +0 -0
  248. data/lib/rails/generators/pages_core/frontend/templates/{breakpoints.css.scss.erb → breakpoints.scss.erb} +0 -0
  249. data/lib/rails/generators/pages_core/frontend/templates/clearfix.scss.erb +7 -0
  250. data/lib/rails/generators/pages_core/frontend/templates/layout.html.erb +0 -3
  251. data/lib/rails/generators/pages_core/install/install_generator.rb +4 -15
  252. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +1 -3
  253. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +0 -2
  254. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -5
  255. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +0 -2
  256. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +0 -2
  257. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +0 -2
  258. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +7 -15
  259. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +0 -2
  260. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +2 -19
  261. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +2 -4
  262. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +1 -1
  263. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +4 -13
  264. data/lib/tasks/pages.rake +0 -62
  265. data/lib/tasks/pages/cache.rake +6 -2
  266. data/lib/tasks/pages/export.rake +9 -0
  267. data/lib/tasks/pages/page_paths.rake +0 -2
  268. data/lib/tasks/pages/update.rake +0 -2
  269. data/template.rb +3 -3
  270. data/vendor/assets/javascripts/ReactCrop.min.js +1 -0
  271. data/vendor/assets/javascripts/reflux.min.js +1 -1
  272. data/vendor/assets/stylesheets/ReactCrop.css +167 -0
  273. metadata +200 -175
  274. data/app/assets/javascripts/pages/admin/components.es6.jsx +0 -1
  275. data/app/assets/javascripts/pages/admin/components/page_tree_actions.es6.jsx +0 -8
  276. data/app/assets/javascripts/pages/admin/components/page_tree_store.es6.jsx +0 -161
  277. data/app/assets/javascripts/pages/admin/features/editable_image.es6.jsx +0 -145
  278. data/app/assets/javascripts/pages/admin/features/modal.es6.jsx +0 -90
  279. data/app/assets/javascripts/pages/admin/features/page_images.es6.jsx +0 -338
  280. data/app/assets/javascripts/pages/admin/features/rich_text.es6.jsx +0 -124
  281. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.es6.jsx +0 -21
  282. data/app/assets/javascripts/pages/admin/lib/center_on_screen.es6.jsx +0 -22
  283. data/app/assets/stylesheets/pages/admin/components/editable_image.scss +0 -18
  284. data/app/assets/stylesheets/pages/admin/components/images.scss +0 -155
  285. data/app/assets/stylesheets/pages/admin/print.scss +0 -17
  286. data/app/controllers/admin/page_comments_controller.rb +0 -61
  287. data/app/controllers/admin/page_files_controller.rb +0 -79
  288. data/app/controllers/admin/page_images_controller.rb +0 -111
  289. data/app/controllers/concerns/pages_core/add_comments_controller.rb +0 -67
  290. data/app/controllers/concerns/pages_core/exception_handler.rb +0 -137
  291. data/app/controllers/concerns/pages_core/search_pages_controller.rb +0 -40
  292. data/app/helpers/pages_core/login_helper.rb +0 -14
  293. data/app/indices/page_file_index.rb +0 -9
  294. data/app/indices/page_index.rb +0 -29
  295. data/app/indices/user_index.rb +0 -11
  296. data/app/models/concerns/pages_core/page_model/commentable.rb +0 -29
  297. data/app/models/concerns/pages_core/page_model/searchable.rb +0 -41
  298. data/app/models/page_comment.rb +0 -18
  299. data/app/serializers/page_tree_serializer.rb +0 -15
  300. data/app/views/admin/pages/_edit_comments.html.erb +0 -37
  301. data/app/views/admin/pages/_pagelisting.html.erb +0 -63
  302. data/app/views/admin/users/_login_form.html.erb +0 -47
  303. data/app/views/admin_mailer/comment_notification.text.erb +0 -7
  304. data/lib/pages_core/extensions/hash_extensions.rb +0 -23
  305. data/lib/pages_core/file_embedder.rb +0 -40
  306. data/lib/pages_core/paginates.rb +0 -102
  307. data/lib/rails/generators/pages_core/frontend/templates/hidpi.css.scss.erb +0 -8
  308. data/lib/rails/generators/pages_core/install/templates/thinking_sphinx.yml +0 -12
  309. data/lib/tasks/db.rake +0 -96
  310. data/lib/tasks/pages/assets.rake +0 -65
  311. data/vendor/assets/javascripts/jquery.dimscreen.js +0 -77
  312. data/vendor/assets/javascripts/jquery.fieldselection.js +0 -59
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class CreatePagesTables < ActiveRecord::Migration
1
+ class CreatePagesTables < ActiveRecord::Migration[4.2]
4
2
  def change
5
3
  create_table "accounts" do |t|
6
4
  t.string "name"
@@ -158,7 +156,7 @@ class CreatePagesTables < ActiveRecord::Migration
158
156
  t.boolean "primary", default: false, null: false
159
157
  end
160
158
 
161
- add_index "page_images", %w(page_id primary)
159
+ add_index "page_images", %w[page_id primary]
162
160
  add_index "page_images", ["page_id"]
163
161
 
164
162
  create_table "pages" do |t|
@@ -187,7 +185,7 @@ class CreatePagesTables < ActiveRecord::Migration
187
185
 
188
186
  add_index "pages", ["parent_page_id"]
189
187
  add_index "pages", ["position"]
190
- add_index "pages", %w(status parent_page_id position)
188
+ add_index "pages", %w[status parent_page_id position]
191
189
  add_index "pages", ["status"]
192
190
  add_index "pages", ["user_id"]
193
191
 
@@ -228,7 +226,7 @@ class CreatePagesTables < ActiveRecord::Migration
228
226
  end
229
227
 
230
228
  add_index "taggings", ["tag_id"]
231
- add_index "taggings", %w(taggable_type taggable_id)
229
+ add_index "taggings", %w[taggable_type taggable_id]
232
230
 
233
231
  create_table "tags" do |t|
234
232
  t.string "name"
@@ -245,10 +243,10 @@ class CreatePagesTables < ActiveRecord::Migration
245
243
  t.text "body"
246
244
  t.datetime "created_at"
247
245
  t.datetime "updated_at"
248
- t.index(%w(textable_id textable_type name language),
246
+ t.index(%w[textable_id textable_type name language],
249
247
  unique: true,
250
248
  name: "index_textbits_on_locale")
251
- t.index %w(textable_id textable_type)
249
+ t.index %w[textable_id textable_type]
252
250
  end
253
251
 
254
252
  create_table "users" do |t|
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class RenameTextbits < ActiveRecord::Migration
1
+ class RenameTextbits < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  rename_table :textbits, :localizations
6
4
  rename_column :localizations, :language, :locale
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class DropRemovedTables < ActiveRecord::Migration
1
+ class DropRemovedTables < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  drop_table :mail_subscribers
6
4
  drop_table :mailouts
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class AddQueueToDelayedJobs < ActiveRecord::Migration
1
+ class AddQueueToDelayedJobs < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  add_column :delayed_jobs, :queue, :string
6
4
  end
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class RemoveFilterFromLocalizations < ActiveRecord::Migration
1
+ class RemoveFilterFromLocalizations < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  remove_column :localizations, :filter
6
4
  end
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class RemoveImagesets < ActiveRecord::Migration
1
+ class RemoveImagesets < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  drop_table :imagesets
6
4
  drop_table :images_imagesets
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class RemoveSmsSubscribers < ActiveRecord::Migration
1
+ class RemoveSmsSubscribers < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  drop_table :sms_subscribers
6
4
  end
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class UpdatePageRedirectTo < ActiveRecord::Migration
1
+ class UpdatePageRedirectTo < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  include Rails.application.routes.url_helpers
6
4
  change_column :pages, :redirect_to, :string
@@ -1,4 +1,4 @@
1
- class CreateRoles < ActiveRecord::Migration
1
+ class CreateRoles < ActiveRecord::Migration[4.2]
2
2
  def connection
3
3
  @connection ||= ActiveRecord::Base.connection
4
4
  end
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- class ChangeLocaleNames < ActiveRecord::Migration
1
+ class ChangeLocaleNames < ActiveRecord::Migration[4.2]
4
2
  def self.up
5
3
  Localization.where(locale: "nor").update_all(locale: "nb")
6
4
  Localization.where(locale: "eng").update_all(locale: "en")
@@ -1,4 +1,4 @@
1
- class RemoveOpenidUrl < ActiveRecord::Migration
1
+ class RemoveOpenidUrl < ActiveRecord::Migration[4.2]
2
2
  def self.up
3
3
  remove_column :users, :openid_url
4
4
  end
@@ -1,4 +1,4 @@
1
- class ConvertImagesToDis < ActiveRecord::Migration
1
+ class ConvertImagesToDis < ActiveRecord::Migration[4.2]
2
2
  class Image < ActiveRecord::Base; end
3
3
  class Binary < ActiveRecord::Base; end
4
4
 
@@ -1,4 +1,4 @@
1
- class ConvertPageFilesToDis < ActiveRecord::Migration
1
+ class ConvertPageFilesToDis < ActiveRecord::Migration[4.2]
2
2
  class PageFile < ActiveRecord::Base; end
3
3
  class Binary < ActiveRecord::Base; end
4
4
 
@@ -1,4 +1,4 @@
1
- class CreatePasswordResetTokens < ActiveRecord::Migration
1
+ class CreatePasswordResetTokens < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :password_reset_tokens do |t|
4
4
  t.belongs_to :user
@@ -1,4 +1,4 @@
1
- class RemoveUserCruft < ActiveRecord::Migration
1
+ class RemoveUserCruft < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  remove_column :users, :token, :string
4
4
  remove_column :users, :is_deleted, :boolean, default: false, null: false
@@ -1,4 +1,4 @@
1
- class CreateInvites < ActiveRecord::Migration
1
+ class CreateInvites < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :invites do |t|
4
4
  t.belongs_to :user
@@ -1,4 +1,4 @@
1
- class UpdateDelayedJobTable < ActiveRecord::Migration
1
+ class UpdateDelayedJobTable < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column :delayed_jobs, :last_error, :text
4
4
  end
@@ -1,4 +1,4 @@
1
- class LocalizeImages < ActiveRecord::Migration
1
+ class LocalizeImages < ActiveRecord::Migration[4.2]
2
2
  def locale
3
3
  I18n.default_locale
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddMetaImageToPage < ActiveRecord::Migration
1
+ class AddMetaImageToPage < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :pages, :meta_image_id, :integer
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddPinnedToTags < ActiveRecord::Migration
1
+ class AddPinnedToTags < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  add_column :tags, :pinned, :boolean, default: false, null: false
4
4
  end
@@ -1,10 +1,10 @@
1
- class CreatePagePaths < ActiveRecord::Migration
1
+ class CreatePagePaths < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  create_table :page_paths do |t|
4
4
  t.belongs_to :page
5
5
  t.string :locale, :path
6
6
  t.timestamps null: false
7
7
  end
8
- add_index :page_paths, [:locale, :path], unique: true
8
+ add_index :page_paths, %i[locale path], unique: true
9
9
  end
10
10
  end
@@ -1,4 +1,4 @@
1
- class DropBinariesTable < ActiveRecord::Migration
1
+ class DropBinariesTable < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  drop_table :binaries do |t|
4
4
  t.string "sha1_hash"
@@ -1,4 +1,4 @@
1
- class RemovePageContentOrder < ActiveRecord::Migration
1
+ class RemovePageContentOrder < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  remove_column :pages, :content_order, :string
4
4
  end
@@ -1,4 +1,4 @@
1
- class RenamePagesCategories < ActiveRecord::Migration
1
+ class RenamePagesCategories < ActiveRecord::Migration[4.2]
2
2
  def change
3
3
  rename_table :pages_categories, :page_categories
4
4
  add_column :page_categories, :id, :primary_key, first: true
@@ -1,4 +1,4 @@
1
- class ChangeLocalizationLimit < ActiveRecord::Migration
1
+ class ChangeLocalizationLimit < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  change_column :localizations, :value, :text, limit: 16_777_215
4
4
  end
@@ -0,0 +1,23 @@
1
+ class RemovePageComments < ActiveRecord::Migration[5.0]
2
+ def up
3
+ drop_table :page_comments
4
+ remove_column :pages, :comments_allowed
5
+ remove_column :pages, :comments_count
6
+ end
7
+
8
+ def down
9
+ add_column :pages, :comments_allowed, :boolean, default: true, null: false
10
+ add_column :pages, :comments_count, :integer,
11
+ limit: 4, default: 0, null: false
12
+ create_table :page_comments do |t|
13
+ t.integer :page_id
14
+ t.string :remote_ip
15
+ t.string :name
16
+ t.string :email
17
+ t.string :url
18
+ t.text :body
19
+ t.datetime :created_at
20
+ t.datetime :updated_at
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ class RemoveSessions < ActiveRecord::Migration[5.0]
2
+ def up
3
+ drop_table :sessions
4
+ end
5
+
6
+ def down
7
+ create_table :sessions do |t|
8
+ t.string :session_id
9
+ t.text :data
10
+ t.datetime :updated_at
11
+ t.index :session_id
12
+ t.index :updated_at
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ class AddDatesToPages < ActiveRecord::Migration[5.0]
2
+ def change
3
+ change_table :pages do |t|
4
+ t.datetime :starts_at
5
+ t.datetime :ends_at
6
+ t.boolean :all_day, null: false, default: false
7
+ t.index :starts_at
8
+ t.index :ends_at
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,73 @@
1
+ class CreateAttachments < ActiveRecord::Migration[5.2]
2
+ def up
3
+ rename_table :page_files, :attachments
4
+ add_column :attachments, :user_id, :integer
5
+
6
+ create_table :page_files do |t|
7
+ t.references :page
8
+ t.references :attachment
9
+ t.integer :position
10
+ t.timestamps
11
+ end
12
+
13
+ Attachment.reset_column_information
14
+ PageFile.reset_column_information
15
+
16
+ locales = [I18n.default_locale,
17
+ PagesCore.config.locales&.keys].compact.map(&:to_sym).uniq
18
+
19
+ Attachment.all.each do |a|
20
+ begin
21
+ Dis::Storage.change_type("page_files", "attachments", a.content_hash)
22
+ rescue
23
+ puts "Missing attachment: #{a.content_hash}"
24
+ end
25
+ locales.each do |l|
26
+ Localization.create(localizable: a,
27
+ locale: l,
28
+ name: "name",
29
+ value: a.attributes["name"])
30
+ end
31
+ PageFile.create(attachment_id: a.id,
32
+ page_id: a.page_id,
33
+ position: a.position,
34
+ created_at: a.created_at,
35
+ updated_at: a.updated_at)
36
+ end
37
+
38
+ Localization.where(localizable_type: "PageFile")
39
+ .update_all(localizable_type: "Attachment")
40
+
41
+ remove_column :attachments, :page_id
42
+ remove_column :attachments, :position
43
+ remove_column :attachments, :name
44
+ end
45
+
46
+ def down
47
+ add_column :attachments, :name, :string
48
+ add_column :attachments, :position, :integer
49
+ add_column :attachments, :page_id, :integer
50
+
51
+ Attachment.reset_column_information
52
+ Attachment.all.in_locale(I18n.default_locale).each do |a|
53
+ begin
54
+ Dis::Storage.change_type("attachments", "page_files", a.content_hash)
55
+ rescue
56
+ puts "Missing attachment: #{a.content_hash}"
57
+ end
58
+
59
+ pf = PageFile.find_by(attachment_id: a.id)
60
+ Attachment.where(id: a.id).update_all(name: a.name,
61
+ page_id: pf.page_id,
62
+ position: pf.position)
63
+ end
64
+
65
+ Localization.where(localizable_type: "Attachment")
66
+ .update_all(localizable_type: "PageFile")
67
+ Localization.where(localizable_type: "PageFile", name: "name").destroy_all
68
+
69
+ drop_table :page_files
70
+ remove_column :attachments, :user_id
71
+ rename_table :attachments, :page_files
72
+ end
73
+ end
data/lib/pages_core.rb CHANGED
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # Ruby Standard Library
4
2
  require "digest/sha1"
5
3
  require "fileutils"
@@ -21,37 +19,36 @@ require "active_model_serializers"
21
19
  require "acts_as_list"
22
20
  require "bcrypt"
23
21
  require "coffee-script"
22
+ require "country_select"
24
23
  require "delayed_job"
25
24
  require "dis"
26
25
  require "dynamic_image"
27
26
  require "localizable_model"
28
27
  require "json"
29
28
  require "rails_i18n"
30
- require "recaptcha/rails"
31
29
  require "RedCloth"
32
- require "sass"
33
- require "thinking-sphinx"
30
+ require "sass-rails"
31
+ require "will_paginate"
34
32
 
35
33
  # Assets
36
34
  require "font-awesome-rails"
37
- require "jcrop/rails/v2"
38
35
  require "jquery-ui-rails"
39
36
  require "jquery/rails/engine"
40
37
  require "react-rails"
41
- require "underscore-rails"
42
38
 
43
39
  # Pages
44
40
  require "pages_core/plugin"
45
41
  require "pages_core/admin_menu_item"
46
42
  require "pages_core/archive_finder"
43
+ require "pages_core/attachment_embedder"
47
44
  require "pages_core/cache_sweeper"
48
- require "pages_core/file_embedder"
45
+ require "pages_core/digest_verifier"
49
46
  require "pages_core/configuration"
50
47
  require "pages_core/engine"
51
48
  require "pages_core/extensions"
52
49
  require "pages_core/page_path_constraint"
53
50
  require "pages_core/pages_plugin"
54
- require "pages_core/paginates"
51
+ require "pages_core/pub_sub"
55
52
  require "pages_core/templates"
56
53
  require "pages_core/version"
57
54
 
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module PagesCore
4
2
  class AdminMenuItem
5
3
  attr_reader :label, :path, :group, :options
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module PagesCore
4
2
  class ArchiveFinder
5
3
  def initialize(relation, options = {})
@@ -15,12 +13,14 @@ module PagesCore
15
13
  filter_by_time(range_for_year_and_month(year, month))
16
14
  end
17
15
 
16
+ def latest_year
17
+ latest_year_and_month&.first
18
+ end
19
+
18
20
  def latest_year_and_month
19
21
  ordered_relation.first.try do |record|
20
- [
21
- record[timestamp_attribute].year,
22
- record[timestamp_attribute].month
23
- ]
22
+ [record[timestamp_attribute].year,
23
+ record[timestamp_attribute].month]
24
24
  end
25
25
  end
26
26
 
@@ -32,7 +32,7 @@ module PagesCore
32
32
  group_by_month(by_year(year))
33
33
  .count
34
34
  .to_a
35
- .sort { |a, b| a.first <=> b.first }
35
+ .sort_by(&:first)
36
36
  end
37
37
 
38
38
  def timestamp_attribute
@@ -43,10 +43,14 @@ module PagesCore
43
43
  select_years(@relation).map(&:to_i).sort
44
44
  end
45
45
 
46
+ def years_with_count
47
+ years.map { |year| [year, by_year(year).count] }
48
+ end
49
+
46
50
  private
47
51
 
48
52
  def group_by_month(relation)
49
- relation.reorder("").group(month_part)
53
+ relation.reorder("").group(Arel.sql(month_part))
50
54
  end
51
55
 
52
56
  def filter_by_time(range)
@@ -61,7 +65,7 @@ module PagesCore
61
65
  if mysql?
62
66
  "MONTH(#{timestamp_attribute})"
63
67
  else
64
- "date_part('month', #{timestamp_attribute})"
68
+ "date_part('month', #{timestamp_attribute})::integer"
65
69
  end
66
70
  end
67
71
 
@@ -70,21 +74,23 @@ module PagesCore
70
74
  end
71
75
 
72
76
  def range_for_year(year)
73
- date_time = DateTime.new(year.to_i, 1, 1).utc
74
- date_time..date_time.end_of_year
77
+ start_time = Time.new(year.to_i, 1, 1)
78
+ end_time = start_time.end_of_year
79
+ (start_time.in_time_zone)..(end_time.in_time_zone)
75
80
  end
76
81
 
77
82
  def range_for_year_and_month(year, month)
78
- date_time = DateTime.new(year.to_i, month.to_i, 1).utc
79
- date_time..date_time.end_of_month
83
+ start_time = Time.new(year.to_i, month, 1)
84
+ end_time = start_time.end_of_month
85
+ (start_time.in_time_zone)..(end_time.in_time_zone)
80
86
  end
81
87
 
82
88
  def select_months(relation)
83
- relation.reorder("").pluck("DISTINCT #{month_part}")
89
+ relation.reorder("").pluck(Arel.sql("DISTINCT #{month_part}"))
84
90
  end
85
91
 
86
92
  def select_years(relation)
87
- relation.reorder("").pluck("DISTINCT #{year_part}")
93
+ relation.reorder("").pluck(Arel.sql("DISTINCT #{year_part}"))
88
94
  end
89
95
 
90
96
  def ordered_relation