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,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module PageModel
5
- module Searchable
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- after_save ThinkingSphinx::RealTime.callback_for(:page)
10
- end
11
-
12
- def localization_values
13
- localizations.map(&:value)
14
- end
15
-
16
- def category_names
17
- categories.map(&:name)
18
- end
19
-
20
- def comment_names
21
- comments.map(&:name)
22
- end
23
-
24
- def comment_bodies
25
- comments.map(&:body)
26
- end
27
-
28
- def file_names
29
- files.map(&:name)
30
- end
31
-
32
- def file_filenames
33
- files.map(&:filename)
34
- end
35
-
36
- def published
37
- published?
38
- end
39
- end
40
- end
41
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- class PageComment < ActiveRecord::Base
4
- include PagesCore::Sweepable
5
-
6
- belongs_to :page, counter_cache: :comments_count
7
- attr_accessor :invalid_captcha
8
-
9
- def valid_captcha?
10
- invalid_captcha ? false : true
11
- end
12
-
13
- after_create do |page_comment|
14
- if page_comment.page && page_comment.valid?
15
- page_comment.page.update(last_comment_at: page_comment.created_at)
16
- end
17
- end
18
- end
@@ -1,15 +0,0 @@
1
- class PageTreeSerializer < ActiveModel::Serializer
2
- attributes :id, :param, :parent_page_id, :locale, :status, :news_page
3
- attributes :name
4
- attributes :published_at, :pinned
5
-
6
- has_many :children, serializer: PageTreeSerializer
7
-
8
- def children
9
- object.subpages.visible.in_locale(object.locale)
10
- end
11
-
12
- def param
13
- object.to_param
14
- end
15
- end
@@ -1,37 +0,0 @@
1
- <table class="list comments">
2
- <% @page.comments.each do |c| %>
3
- <tr>
4
- <td>
5
- <p>
6
- <strong>
7
- <%= c.name %>
8
- </strong>
9
- <br />
10
- <% if c.email? %>
11
- <%= mail_to c.email, c.email %>
12
- <br />
13
- <% end %>
14
- <% if c.url? %>
15
- <%= link_to c.url, c.url %>
16
- <br />
17
- <% end %>
18
- </p>
19
- <p>
20
- <%= time_ago_in_words c.created_at %>
21
- ago<br />
22
- from <%= c.remote_ip %>
23
- </p>
24
- <p>
25
- <%= link_to("Delete comment",
26
- admin_page_comment_url(@locale, @page, c),
27
- class: :delete,
28
- data: { confirm: "Are you sure?" },
29
- method: :delete) %>
30
- </p>
31
- </td>
32
- <td>
33
- <%= c.body %>
34
- </td>
35
- </tr>
36
- <% end %>
37
- </table>
@@ -1,63 +0,0 @@
1
- <%
2
- if page.news_page?
3
- subpages = []
4
- else
5
- subpages = page.children.visible.in_locale(page.locale).order(page.content_order)
6
- end
7
- page_classes = ['page', 'page-listing']
8
- page_classes << 'hidden' unless page.published?
9
- page_classes << 'page-without-locale' unless page.name?
10
- -%>
11
- <li page_id="<%= page.id %>">
12
- <% if page.reorderable? %>
13
- <div class="drag-handle">
14
- </div>
15
- <% end %>
16
- <div class="<%= page_classes.join(' ') %>" id="pagelisting_<%= page.id %>">
17
- <% if page.published? %>
18
- <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page-name') %>
19
- <% else %>
20
- <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page-name') %>
21
- <small class="status">
22
- (<%= (page.autopublish?) ? "Will publish at "+page.published_at.to_formatted_s(:short) : page.status_label %><% if page.draft? && page.author %> by <%= page.author.name %><% end %>)
23
- </small>
24
- <% end %>
25
-
26
- <%# Feed icon %>
27
- <% if page.feed_enabled? %>
28
- <%= image_tag("pages/feed-icon-14x14.png", size: "10x10") %>
29
- <% end %>
30
-
31
- <div class="actions">
32
- <% if policy(page).edit? %>
33
- &mdash;
34
- <%= link_to "Edit", edit_admin_page_url(@locale, page) %>
35
- <% end %>
36
- <% if policy(Page).new? %>
37
- /
38
- <%= link_to "Create subpage", new_admin_page_url(@locale, parent: page ) %>
39
- <% end %>
40
- &mdash;
41
- <small>last updated <%= time_ago_in_words page.updated_at %> ago</small>
42
- </div>
43
- </div>
44
- <% if page.news_page? %>
45
- <ul>
46
- <li><div class="page-listing">
47
- <em>(<%= page.children.visible.count %> items)</em>
48
- <div class="actions">
49
- <% if policy(Page).new? %>
50
- &mdash;
51
- <%= link_to "Create new", new_news_admin_pages_url(@locale, parent: page) %>
52
- <% end %>
53
- </div>
54
- </div></li>
55
- </ul>
56
- <% elsif subpages.length > 0 %>
57
- <ul <%= 'class="reorderable"'.html_safe if page.reorderable_children? %> parent_page_id="<%= page.id %>"><% subpages.each do |subpage| %>
58
- <%= render partial: "pagelisting", locals: { page: subpage } %>
59
- <% end %></ul>
60
- <% else %>
61
- <ul></ul>
62
- <% end %>
63
- </li>
@@ -1,47 +0,0 @@
1
- <div class="login-form">
2
-
3
- <div class="login-tab password">
4
- <%= form_tag session_path do %>
5
- <%= hidden_field_tag :success_url, success_url %>
6
- <%= hidden_field_tag :login_url, login_url %>
7
- <p>
8
- <label>Email address</label>
9
- <%= text_field_tag :username, '' %>
10
- </p>
11
- <p>
12
- <label>Password</label>
13
- <%= password_field_tag :password, '' %>
14
- </p>
15
- <p>
16
- <button type="submit">Sign in</button>
17
- </p>
18
- <ul>
19
- <li>
20
- <%= link_to "<b>Help!</b> I forgot my password!".html_safe, login_url, class: 'show-password-reset' %>
21
- </li>
22
- </ul>
23
- <% end %>
24
- </div>
25
-
26
- <div class="login-tab password-reset">
27
- <%= form_tag admin_password_resets_path do %>
28
- <%= hidden_field_tag :login_url, login_url %>
29
- <h2>
30
- Forgot your password?
31
- </h2>
32
- <p>
33
- Don't worry, it happens.
34
- Enter your email address below,
35
- and we'll send you a link where you can reset your password.
36
- </p>
37
- <p>
38
- <%= text_field_tag :username, '' %>
39
- </p>
40
- <p>
41
- <button type="submit">
42
- Send
43
- </button>
44
- </p>
45
- <% end %>
46
- </div>
47
- </div>
@@ -1,7 +0,0 @@
1
- <%= @comment.name %> has made a comment on <%= @page.name %>:
2
-
3
- <%= @comment.body %>
4
-
5
- From IP address: <%= @comment.remote_ip %>
6
-
7
- <%= @url %>
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module Extensions
5
- module HashExtensions
6
- def deep_merge(hash)
7
- target = dup
8
-
9
- hash.keys.each do |key|
10
- if hash[key].is_a?(Hash) && self[key].is_a?(Hash)
11
- target[key] = target[key].deep_merge(hash[key])
12
- next
13
- end
14
-
15
- target[key] = hash[key]
16
- end
17
-
18
- target
19
- end
20
- end
21
- end
22
- end
23
- Hash.send(:include, PagesCore::Extensions::HashExtensions)
@@ -1,40 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- class FileEmbedder
5
- include ActionView::Helpers::AssetTagHelper
6
-
7
- attr_reader :files
8
-
9
- def initialize(files)
10
- @files = Array(files)
11
- end
12
-
13
- def to_html
14
- embed_files(files.map { |f| embed_file(f) })
15
- end
16
-
17
- def embed_files(embedded_files)
18
- embedded_files.join(", ")
19
- end
20
-
21
- def embed_file(file)
22
- content_tag(
23
- :a,
24
- file.name,
25
- class: "file",
26
- href: file_path(file)
27
- )
28
- end
29
-
30
- private
31
-
32
- def file_path(file)
33
- Rails.application.routes.url_helpers.page_file_path(
34
- file.locale,
35
- file.page,
36
- file
37
- )
38
- end
39
- end
40
- end
@@ -1,102 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- # The Paginates module adds syntactic sugar to a collection for
5
- # handling pagination. The module doesn't do any pagination on it's
6
- # own, the logic should be handled by the finders.
7
- #
8
- # Example:
9
- # @users = User.limit(20).offset(20)
10
- # PagesCore::Paginates.paginate(
11
- # @users,
12
- # current_page: 2,
13
- # pages: 5,
14
- # per_page: 20
15
- # )
16
- #
17
- # Now, in the view, you could do:
18
- #
19
- # <%= link_to_unless(
20
- # @pages.first_page?, "Previous", {page: @users.previous_page}) %>
21
- # <% @users.pages.each do |p| %>
22
- # <%= link_to_unless p == @users.current_page, p, {page: p} %>
23
- # <% end %>
24
- # <%= link_to_unless @pages.last_page? "Next", {page: @users.next_page} %>
25
- module Paginates
26
- attr_accessor :paginated, :current_page, :pages, :per_page, :offset
27
-
28
- class << self
29
- # Applies pagination to any collection.
30
- def paginate(collection, options = {})
31
- options = default_options.merge(options)
32
- class << collection
33
- include PagesCore::Paginates
34
- end
35
- collection.current_page = options[:current_page]
36
- collection.pages = options[:pages]
37
- collection.per_page = options[:per_page]
38
- collection.offset = options[:offset]
39
- collection.paginated = options[:per_page] ? true : false
40
- end
41
-
42
- def default_options
43
- {
44
- current_page: 1,
45
- pages: 1,
46
- per_page: nil,
47
- offset: 0
48
- }
49
- end
50
- end
51
-
52
- # Returns true if collection is paginated
53
- def paginated?
54
- @paginated ? true : false
55
- end
56
-
57
- # Returns next page, or nil if at last page.
58
- def next_page
59
- (@current_page < @pages) ? (@current_page + 1) : nil
60
- end
61
-
62
- # Returns true/false depending on if there's a next page
63
- def next_page?
64
- next_page ? true : false
65
- end
66
-
67
- # Returns previous page, or nil if at first page.
68
- def previous_page
69
- (@current_page > 1) ? (@current_page - 1) : nil
70
- end
71
-
72
- # Returns true/false depending on if there's a previous page
73
- def previous_page?
74
- previous_page ? true : false
75
- end
76
-
77
- # Number of pages
78
- def last_page
79
- @pages.to_i
80
- end
81
-
82
- # Returns true if at the last page
83
- def last_page?
84
- (@page == @pages) ? true : false
85
- end
86
-
87
- # First page
88
- def first_page
89
- 1
90
- end
91
-
92
- # Returns true if at the first page
93
- def first_page?
94
- (@page == 1) ? true : false
95
- end
96
-
97
- # All pages as an array
98
- def pages
99
- (first_page..last_page).to_a
100
- end
101
- end
102
- end
@@ -1,8 +0,0 @@
1
- @mixin hidpi {
2
- @media only screen and (-webkit-min-device-pixel-ratio : 1.5),
3
- only screen and (min-device-pixel-ratio : 1.5) {
4
- html.backgroundsize & {
5
- @content;
6
- }
7
- }
8
- }
@@ -1,12 +0,0 @@
1
- development:
2
- mysql41: <%= @sphinx_port %>
3
- enable_star: true
4
- min_prefix_len: 3
5
- charset_type: utf-8
6
- dict: keywords
7
- production:
8
- mysql41: <%= @sphinx_port %>
9
- enable_star: true
10
- min_prefix_len: 3
11
- charset_type: utf-8
12
- dict: keywords
data/lib/tasks/db.rake DELETED
@@ -1,96 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require "digest/sha1"
4
- require "tempfile"
5
-
6
- namespace :db do
7
- desc "Convert timestamps to UTC"
8
- task convert_to_utc: :environment do
9
- tables = ActiveRecord::Base.connection.execute("SHOW TABLES")
10
- tables.each do |table_row|
11
- table = table_row.first
12
- columns = ActiveRecord::Base.connection.execute("DESC `#{table}`")
13
- columns.each do |column_row|
14
- column = column_row[0]
15
- type = column_row[1]
16
- next unless %w(datetime time timestamp).include?(type)
17
- puts "Converting #{table}: #{column} (#{type})"
18
- ActiveRecord::Base.connection.execute(
19
- "UPDATE `#{table}` SET `#{column}` = " \
20
- "DATE_SUB(`#{column}`, INTERVAL 1 HOUR)"
21
- )
22
- end
23
- end
24
- end
25
-
26
- desc "Copy production database to current environment"
27
- task copy_from_production: :environment do
28
- db_config = YAML.load_file(Rails.root.join("config", "database.yml"))
29
- temp_file = Tempfile.new(db_config[Rails.env]["database"])
30
-
31
- export_opts = "--add-drop-table --single-transaction --allow-keywords " \
32
- "--hex-blob --quick " \
33
- "-u #{db_config['production']['username']} " \
34
- "-p#{db_config['production']['password']} " \
35
- "-h #{db_config['production']['host']} " \
36
- "--max_allowed_packet=100M " \
37
- "#{db_config['production']['database']}"
38
-
39
- import_opts = if db_config[Rails.env]["password"]
40
- "-u #{db_config[Rails.env]['username']} " \
41
- "-p#{db_config[Rails.env]['password']} " \
42
- "-h #{db_config[Rails.env]['host']} " \
43
- "#{db_config[Rails.env]['database']}"
44
- else
45
- "-u #{db_config[Rails.env]['username']} " \
46
- "-h #{db_config[Rails.env]['host']} " \
47
- "#{db_config[Rails.env]['database']}"
48
- end
49
-
50
- puts "Dumping remote database... (this might take a while)"
51
- `mysqldump #{export_opts} > #{temp_file.path}`
52
-
53
- puts "Importing database dump"
54
- `mysql #{import_opts} < #{temp_file.path}`
55
-
56
- puts "Done!"
57
- temp_file.close!
58
- end
59
-
60
- desc "Fixes double UTF-8 encoding"
61
- task fix_double_encoding: :environment do
62
- config = Rails.configuration.database_configuration[Rails.env]
63
-
64
- temp_file = Tempfile.new(config["database"])
65
-
66
- export_cmd = if config["password"]
67
- "mysqldump -u #{config['username']} -p#{config['password']}"
68
- else
69
- "mysqldump -u #{config['username']}"
70
- end
71
-
72
- export_opts = "--opt --quote-names --skip-set-charset " \
73
- "--default-character-set=latin1 " \
74
- "-h #{config['host']} --max_allowed_packet=100M " \
75
- "#{config['database']}"
76
-
77
- `#{export_cmd} #{export_opts} > #{temp_file.path}`
78
-
79
- puts "Dumping database..."
80
-
81
- mysql_command = if config["password"]
82
- "mysql -u #{config['username']} -p#{config['password']}"
83
- else
84
- "mysql -u #{config['username']}"
85
- end
86
-
87
- import_opts = "-h #{config['host']} --default-character-set=utf8 " \
88
- "#{config['database']}"
89
-
90
- puts "Importing database dump"
91
- `#{mysql_command} #{import_opts} < #{temp_file.path}`
92
-
93
- puts "Done!"
94
- temp_file.close!
95
- end
96
- end