pages_core 3.4.3 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +74 -15
  3. data/Rakefile +2 -0
  4. data/app/assets/javascripts/pages/admin.jsx +17 -0
  5. data/app/assets/javascripts/pages/admin/components.jsx +2 -0
  6. data/app/assets/javascripts/pages/admin/components/attachment.jsx +130 -0
  7. data/app/assets/javascripts/pages/admin/components/attachment_editor.jsx +131 -0
  8. data/app/assets/javascripts/pages/admin/components/attachments.jsx +211 -0
  9. data/app/assets/javascripts/pages/admin/components/date_range_select.jsx +174 -0
  10. data/app/assets/javascripts/pages/admin/components/drag_uploader.jsx +174 -0
  11. data/app/assets/javascripts/pages/admin/components/editable_image.jsx +57 -0
  12. data/app/assets/javascripts/pages/admin/components/file_upload_button.jsx +44 -0
  13. data/app/assets/javascripts/pages/admin/components/focal_point.jsx +82 -0
  14. data/app/assets/javascripts/pages/admin/components/grid_image.jsx +124 -0
  15. data/app/assets/javascripts/pages/admin/components/image_editor.jsx +496 -0
  16. data/app/assets/javascripts/pages/admin/components/image_grid.jsx +306 -0
  17. data/app/assets/javascripts/pages/admin/components/image_uploader.jsx +176 -0
  18. data/app/assets/javascripts/pages/admin/components/modal.jsx +48 -0
  19. data/app/assets/javascripts/pages/admin/components/modal_store.jsx +20 -0
  20. data/app/assets/javascripts/pages/admin/components/page_dates.jsx +58 -0
  21. data/app/assets/javascripts/pages/admin/components/page_files.jsx +14 -0
  22. data/app/assets/javascripts/pages/admin/components/page_images.jsx +16 -0
  23. data/app/assets/javascripts/pages/admin/components/page_tree.jsx +300 -0
  24. data/app/assets/javascripts/pages/admin/components/page_tree_node.jsx +396 -0
  25. data/app/assets/javascripts/pages/admin/components/page_tree_store.jsx +203 -0
  26. data/app/assets/javascripts/pages/admin/components/rich_text_area.jsx +64 -0
  27. data/app/assets/javascripts/pages/admin/components/rich_text_toolbar.jsx +91 -0
  28. data/app/assets/javascripts/pages/admin/components/toast.jsx +34 -0
  29. data/app/assets/javascripts/pages/admin/components/toast_store.jsx +52 -0
  30. data/app/assets/javascripts/pages/admin/features/content_tabs.jsx +72 -0
  31. data/app/assets/javascripts/pages/admin/features/edit_page.jsx +97 -0
  32. data/app/assets/javascripts/pages/admin/features/rich_text.jsx +14 -0
  33. data/app/assets/javascripts/pages/admin/features/tag_editor.jsx +160 -0
  34. data/app/assets/javascripts/pages/admin/lib/tree.jsx +294 -0
  35. data/app/assets/javascripts/pages/login_form.jsx +21 -0
  36. data/app/assets/stylesheets/pages/admin.scss +144 -0
  37. data/app/assets/stylesheets/pages/admin/components/archive.scss +6 -0
  38. data/app/assets/stylesheets/pages/admin/components/attachments.scss +130 -0
  39. data/app/assets/stylesheets/pages/admin/components/buttons.scss +23 -0
  40. data/app/assets/stylesheets/pages/admin/components/forms.scss +169 -0
  41. data/app/assets/stylesheets/pages/admin/components/header.scss +157 -0
  42. data/app/assets/stylesheets/pages/admin/components/image_editor.scss +195 -0
  43. data/app/assets/stylesheets/pages/admin/components/image_grid.scss +181 -0
  44. data/app/assets/stylesheets/pages/admin/components/image_uploader.scss +53 -0
  45. data/app/assets/stylesheets/pages/admin/components/layout.scss +44 -0
  46. data/app/assets/stylesheets/pages/admin/components/links.scss +43 -0
  47. data/app/assets/stylesheets/pages/admin/components/list_table.scss +61 -0
  48. data/app/assets/stylesheets/pages/admin/{login.css.scss.erb → components/login.scss} +3 -9
  49. data/app/assets/stylesheets/pages/admin/components/modal.scss +106 -0
  50. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +179 -0
  51. data/app/assets/stylesheets/pages/admin/components/pagination.scss +49 -0
  52. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +28 -0
  53. data/app/assets/stylesheets/pages/admin/components/tag_editor.scss +59 -0
  54. data/app/assets/stylesheets/pages/admin/components/textarea.scss +6 -0
  55. data/app/assets/stylesheets/pages/admin/components/toast.scss +51 -0
  56. data/app/assets/stylesheets/pages/admin/components/toolbar.scss +108 -0
  57. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +184 -0
  58. data/app/assets/stylesheets/pages/admin/controllers/{users.css.erb → users.scss} +2 -2
  59. data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +21 -0
  60. data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +7 -0
  61. data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +7 -0
  62. data/app/assets/stylesheets/pages/admin/vars.scss +30 -0
  63. data/app/assets/stylesheets/pages/errors.css +2 -0
  64. data/app/controller_dummies/admin/admin_controller.rb +1 -1
  65. data/app/controller_dummies/application_controller.rb +3 -3
  66. data/app/controller_dummies/attachments_controller.rb +4 -0
  67. data/app/controller_dummies/frontend_controller.rb +1 -1
  68. data/app/controller_dummies/images_controller.rb +1 -1
  69. data/app/controller_dummies/page_files_controller.rb +1 -1
  70. data/app/controller_dummies/pages_controller.rb +1 -1
  71. data/app/controller_dummies/sitemaps_controller.rb +1 -1
  72. data/app/controllers/admin/attachments_controller.rb +50 -0
  73. data/app/controllers/admin/categories_controller.rb +3 -4
  74. data/app/controllers/admin/images_controller.rb +29 -18
  75. data/app/controllers/admin/invites_controller.rb +20 -23
  76. data/app/controllers/admin/pages_controller.rb +59 -111
  77. data/app/controllers/admin/password_resets_controller.rb +23 -21
  78. data/app/controllers/admin/users_controller.rb +23 -23
  79. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +67 -0
  80. data/app/controllers/concerns/pages_core/admin/persistent_params.rb +75 -0
  81. data/app/controllers/concerns/pages_core/authentication.rb +4 -3
  82. data/app/controllers/concerns/pages_core/error_renderer.rb +36 -0
  83. data/app/controllers/concerns/pages_core/error_reporting.rb +36 -0
  84. data/app/controllers/concerns/pages_core/policies_helper.rb +16 -13
  85. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +44 -0
  86. data/app/controllers/concerns/pages_core/process_titler.rb +4 -4
  87. data/app/controllers/concerns/pages_core/rss_controller.rb +25 -0
  88. data/app/controllers/concerns/pages_core/static_cache_controller.rb +48 -0
  89. data/app/controllers/errors_controller.rb +20 -30
  90. data/app/controllers/pages_core/admin_controller.rb +21 -70
  91. data/app/controllers/pages_core/attachments_controller.rb +40 -0
  92. data/app/controllers/pages_core/{application_controller.rb → base_controller.rb} +13 -8
  93. data/app/controllers/pages_core/frontend/page_files_controller.rb +7 -24
  94. data/app/controllers/pages_core/frontend/pages_controller.rb +39 -228
  95. data/app/controllers/pages_core/frontend_controller.rb +10 -3
  96. data/app/controllers/pages_core/images_controller.rb +2 -2
  97. data/app/controllers/pages_core/sitemaps_controller.rb +15 -10
  98. data/app/controllers/sessions_controller.rb +4 -14
  99. data/app/formatters/pages_core/html_formatter.rb +52 -48
  100. data/app/formatters/pages_core/image_embedder.rb +79 -0
  101. data/app/formatters/pages_core/link_renderer.rb +17 -0
  102. data/app/helpers/admin/admin_helper.rb +1 -1
  103. data/app/helpers/admin/menu_helper.rb +19 -16
  104. data/app/helpers/admin/pages_helper.rb +27 -30
  105. data/app/helpers/application_helper.rb +1 -1
  106. data/app/helpers/frontend_helper.rb +1 -1
  107. data/app/helpers/pages_core/admin/admin_helper.rb +44 -71
  108. data/app/helpers/pages_core/admin/content_tabs_helper.rb +28 -0
  109. data/app/helpers/pages_core/admin/date_range_helper.rb +55 -0
  110. data/app/helpers/pages_core/admin/form_builder.rb +44 -0
  111. data/app/helpers/pages_core/admin/image_uploads_helper.rb +48 -0
  112. data/app/helpers/pages_core/admin/labelled_field_helper.rb +19 -19
  113. data/app/helpers/pages_core/admin/page_blocks_helper.rb +66 -0
  114. data/app/helpers/pages_core/admin/page_json_helper.rb +23 -0
  115. data/app/helpers/pages_core/admin/tag_editor_helper.rb +16 -14
  116. data/app/helpers/pages_core/application_helper.rb +15 -26
  117. data/app/helpers/pages_core/attachments_helper.rb +40 -0
  118. data/app/helpers/pages_core/form_builder.rb +71 -134
  119. data/app/helpers/pages_core/frontend_helper.rb +2 -8
  120. data/app/helpers/pages_core/head_tags_helper.rb +36 -169
  121. data/app/helpers/pages_core/images_helper.rb +5 -4
  122. data/app/helpers/pages_core/meta_tags_helper.rb +96 -0
  123. data/app/helpers/pages_core/open_graph_tags_helper.rb +51 -0
  124. data/app/helpers/pages_core/page_path_helper.rb +66 -0
  125. data/app/jobs/pages_core/autopublish_job.rb +2 -2
  126. data/app/jobs/pages_core/sweep_cache_job.rb +3 -3
  127. data/app/mailers/admin_mailer.rb +8 -31
  128. data/app/models/attachment.rb +78 -0
  129. data/app/models/autopublisher.rb +7 -4
  130. data/app/models/category.rb +10 -11
  131. data/app/models/concerns/pages_core/has_roles.rb +5 -4
  132. data/app/models/concerns/pages_core/humanizable_param.rb +11 -8
  133. data/app/models/concerns/pages_core/page_model/attachments.rb +41 -0
  134. data/app/models/concerns/pages_core/page_model/autopublishable.rb +25 -0
  135. data/app/models/concerns/pages_core/page_model/dated_page.rb +59 -0
  136. data/app/models/concerns/pages_core/page_model/images.rb +51 -0
  137. data/app/models/concerns/pages_core/page_model/localizable.rb +38 -0
  138. data/app/models/concerns/pages_core/page_model/pathable.rb +114 -0
  139. data/app/models/concerns/pages_core/page_model/redirectable.rb +36 -0
  140. data/app/models/concerns/pages_core/page_model/sortable.rb +53 -0
  141. data/app/models/concerns/pages_core/page_model/status.rb +50 -0
  142. data/app/models/concerns/pages_core/page_model/templateable.rb +85 -0
  143. data/app/models/concerns/pages_core/page_model/tree.rb +134 -0
  144. data/app/models/concerns/pages_core/sweepable.rb +3 -3
  145. data/app/models/concerns/pages_core/taggable.rb +11 -4
  146. data/app/models/image.rb +15 -1
  147. data/app/models/invite.rb +3 -11
  148. data/app/models/invite_role.rb +5 -3
  149. data/app/models/page.rb +49 -234
  150. data/app/models/page_builder.rb +5 -7
  151. data/app/models/page_category.rb +7 -0
  152. data/app/models/page_exporter.rb +100 -0
  153. data/app/models/page_file.rb +26 -50
  154. data/app/models/page_image.rb +7 -40
  155. data/app/models/page_path.rb +52 -0
  156. data/app/models/password_reset_token.rb +7 -9
  157. data/app/models/role.rb +23 -7
  158. data/app/models/tag.rb +28 -19
  159. data/app/models/tagging.rb +6 -5
  160. data/app/models/user.rb +38 -32
  161. data/app/policies/invite_policy.rb +2 -0
  162. data/app/policies/page_file_policy.rb +15 -17
  163. data/app/policies/page_image_policy.rb +15 -17
  164. data/app/policies/page_policy.rb +29 -23
  165. data/app/policies/policy.rb +4 -8
  166. data/app/policies/user_policy.rb +34 -32
  167. data/app/serializers/admin/attachment_serializer.rb +31 -0
  168. data/app/serializers/admin/image_serializer.rb +55 -6
  169. data/app/serializers/admin/page_file_serializer.rb +8 -0
  170. data/app/serializers/admin/page_image_serializer.rb +3 -1
  171. data/app/serializers/page_export_serializer.rb +32 -0
  172. data/app/serializers/page_file_export_serializer.rb +6 -0
  173. data/app/serializers/page_image_export_serializer.rb +42 -0
  174. data/app/serializers/page_image_serializer.rb +4 -0
  175. data/app/serializers/page_serializer.rb +2 -0
  176. data/app/services/pages_core/create_user_service.rb +39 -0
  177. data/app/services/pages_core/destroy_invite_service.rb +25 -0
  178. data/app/services/pages_core/invite_service.rb +43 -0
  179. data/app/views/admin/images/show.json.jbuilder +8 -0
  180. data/app/views/admin/invites/new.html.erb +2 -1
  181. data/app/views/admin/invites/show.html.erb +3 -4
  182. data/app/views/admin/pages/_edit_content.html.erb +11 -2
  183. data/app/views/admin/pages/_edit_files.html.erb +8 -0
  184. data/app/views/admin/pages/_edit_images.html.erb +8 -84
  185. data/app/views/admin/pages/_edit_metadata.html.erb +23 -12
  186. data/app/views/admin/pages/_edit_options.html.erb +25 -25
  187. data/app/views/admin/pages/_list_item.html.erb +50 -0
  188. data/app/views/admin/pages/deleted.html.erb +42 -0
  189. data/app/views/admin/pages/edit.html.erb +11 -91
  190. data/app/views/admin/pages/index.html.erb +10 -54
  191. data/app/views/admin/pages/new.html.erb +5 -4
  192. data/app/views/admin/pages/news.html.erb +61 -47
  193. data/app/views/admin/password_resets/show.html.erb +6 -9
  194. data/app/views/admin/users/_access_control.html.erb +4 -1
  195. data/app/views/admin/users/_list.html.erb +12 -7
  196. data/app/views/admin/users/edit.html.erb +5 -11
  197. data/app/views/admin/users/login.html.erb +58 -15
  198. data/app/views/admin/users/show.html.erb +1 -1
  199. data/app/views/admin_mailer/invite.text.erb +1 -1
  200. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  201. data/app/views/errors/401.html.erb +6 -0
  202. data/app/views/errors/403.html.erb +1 -1
  203. data/app/views/errors/422.html.erb +7 -0
  204. data/app/views/errors/500.html.erb +2 -15
  205. data/app/views/errors/_generic_help.html.erb +1 -1
  206. data/app/views/feeds/pages.rss.builder +2 -2
  207. data/app/views/layouts/admin.html.erb +83 -79
  208. data/app/views/layouts/admin/_analytics.html.erb +1 -3
  209. data/app/views/layouts/admin/_header.html.erb +4 -4
  210. data/app/views/layouts/errors.html.erb +3 -7
  211. data/app/views/sitemaps/show.xml.builder +2 -0
  212. data/config/locales/en.yml +50 -1
  213. data/config/routes.rb +57 -58
  214. data/db/migrate/20111219033112_create_pages_tables.rb +191 -276
  215. data/lib/pages_core.rb +34 -32
  216. data/lib/pages_core/admin_menu_item.rb +18 -4
  217. data/lib/pages_core/archive_finder.rb +49 -20
  218. data/lib/pages_core/attachment_embedder.rb +36 -0
  219. data/lib/pages_core/cache_sweeper.rb +9 -89
  220. data/lib/pages_core/configuration.rb +3 -3
  221. data/lib/pages_core/configuration/base.rb +8 -9
  222. data/lib/pages_core/configuration/pages.rb +8 -9
  223. data/lib/pages_core/digest_verifier.rb +70 -0
  224. data/lib/pages_core/engine.rb +72 -5
  225. data/lib/pages_core/extensions.rb +2 -3
  226. data/lib/pages_core/extensions/string_extensions.rb +2 -2
  227. data/lib/pages_core/page_path_constraint.rb +23 -0
  228. data/lib/pages_core/pages_plugin.rb +13 -2
  229. data/lib/pages_core/plugin.rb +8 -52
  230. data/lib/pages_core/pub_sub.rb +38 -0
  231. data/lib/pages_core/static_cache.rb +26 -0
  232. data/lib/pages_core/static_cache/null_handler.rb +17 -0
  233. data/lib/pages_core/static_cache/page_cache_handler.rb +56 -0
  234. data/lib/pages_core/static_cache/varnish_handler.rb +55 -0
  235. data/lib/pages_core/templates.rb +10 -10
  236. data/lib/pages_core/templates/block_configuration.rb +4 -3
  237. data/lib/pages_core/templates/configuration.rb +115 -34
  238. data/lib/pages_core/templates/configuration_handler.rb +9 -5
  239. data/lib/pages_core/templates/configuration_proxy.rb +12 -12
  240. data/lib/pages_core/templates/controller_actions.rb +1 -1
  241. data/lib/pages_core/templates/template_configuration.rb +102 -98
  242. data/lib/pages_core/version.rb +2 -2
  243. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +11 -16
  244. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +1 -2
  245. data/lib/rails/generators/pages_core/frontend/templates/{application.css.scss.erb → application.scss.erb} +0 -0
  246. data/lib/rails/generators/pages_core/frontend/templates/{base.css.scss.erb → base.scss.erb} +0 -0
  247. data/lib/rails/generators/pages_core/frontend/templates/{breakpoints.css.scss.erb → breakpoints.scss.erb} +0 -0
  248. data/lib/rails/generators/pages_core/frontend/templates/clearfix.scss.erb +7 -0
  249. data/lib/rails/generators/pages_core/frontend/templates/layout.html.erb +0 -3
  250. data/lib/rails/generators/pages_core/install/install_generator.rb +25 -66
  251. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +2 -0
  252. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +2 -2
  253. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +1 -1
  254. data/lib/rails/generators/pages_core/install/templates/delayed_job +1 -0
  255. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +16 -1
  256. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +1 -1
  257. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +1 -1
  258. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +12 -1
  259. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +9 -15
  260. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +1 -1
  261. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +5 -23
  262. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +19 -14
  263. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +3 -8
  264. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +2 -0
  265. data/lib/rails/generators/pages_core/rspec/templates/page_templates_spec.rb +26 -0
  266. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +91 -0
  267. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +89 -45
  268. data/lib/tasks/pages.rake +2 -63
  269. data/lib/tasks/pages/cache.rake +12 -5
  270. data/lib/tasks/pages/export.rake +11 -0
  271. data/lib/tasks/pages/page_paths.rake +12 -0
  272. data/template.rb +5 -3
  273. data/vendor/assets/javascripts/ReactCrop.min.js +1 -0
  274. data/vendor/assets/javascripts/reflux.min.js +1 -0
  275. data/vendor/assets/stylesheets/ReactCrop.css +167 -0
  276. metadata +356 -192
  277. data/app/assets/images/pages/admin/description-bg.gif +0 -0
  278. data/app/assets/images/pages/admin/drag-handle.gif +0 -0
  279. data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
  280. data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
  281. data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
  282. data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
  283. data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
  284. data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
  285. data/app/assets/javascripts/pages/admin.js.coffee +0 -54
  286. data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +0 -4
  287. data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +0 -139
  288. data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +0 -9
  289. data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +0 -47
  290. data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +0 -122
  291. data/app/assets/javascripts/pages/admin/features/modal.js.coffee +0 -66
  292. data/app/assets/javascripts/pages/admin/features/page_images.js +0 -329
  293. data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +0 -40
  294. data/app/assets/javascripts/pages/admin/features/tag_editor.js +0 -159
  295. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +0 -17
  296. data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +0 -21
  297. data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +0 -57
  298. data/app/assets/javascripts/pages/login_form.js.coffee +0 -17
  299. data/app/assets/stylesheets/pages/admin.css.erb +0 -404
  300. data/app/assets/stylesheets/pages/admin/buttons.css.erb +0 -5
  301. data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +0 -94
  302. data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +0 -58
  303. data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +0 -178
  304. data/app/assets/stylesheets/pages/admin/editable_image.css.erb +0 -19
  305. data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +0 -73
  306. data/app/assets/stylesheets/pages/admin/header.css.erb +0 -129
  307. data/app/assets/stylesheets/pages/admin/images.css.scss.erb +0 -160
  308. data/app/assets/stylesheets/pages/admin/links.css.erb +0 -34
  309. data/app/assets/stylesheets/pages/admin/list_table.css.erb +0 -56
  310. data/app/assets/stylesheets/pages/admin/modal.css.erb +0 -14
  311. data/app/assets/stylesheets/pages/admin/pagination.css.scss +0 -22
  312. data/app/assets/stylesheets/pages/admin/print.css.erb +0 -17
  313. data/app/assets/stylesheets/pages/admin/sidebar.css.erb +0 -39
  314. data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +0 -18
  315. data/app/assets/stylesheets/pages/admin/tag_editor.css.scss.erb +0 -48
  316. data/app/assets/stylesheets/pages/admin/textarea.css.erb +0 -55
  317. data/app/controllers/admin/page_comments_controller.rb +0 -61
  318. data/app/controllers/admin/page_files_controller.rb +0 -81
  319. data/app/controllers/admin/page_images_controller.rb +0 -116
  320. data/app/controllers/concerns/pages_core/domain_based_cache.rb +0 -28
  321. data/app/controllers/concerns/pages_core/exception_handler.rb +0 -114
  322. data/app/helpers/pages_core/login_helper.rb +0 -14
  323. data/app/indices/page_file_index.rb +0 -9
  324. data/app/indices/page_index.rb +0 -29
  325. data/app/indices/user_index.rb +0 -11
  326. data/app/models/concerns/pages_core/page_tree.rb +0 -85
  327. data/app/models/concerns/pages_core/searchable_page.rb +0 -33
  328. data/app/models/concerns/pages_core/templateable.rb +0 -85
  329. data/app/models/localization.rb +0 -27
  330. data/app/models/page_comment.rb +0 -18
  331. data/app/views/admin/pages/_edit_comments.html.erb +0 -21
  332. data/app/views/admin/pages/_pagelisting.html.erb +0 -63
  333. data/app/views/admin/users/_login_form.html.erb +0 -47
  334. data/app/views/admin_mailer/comment_notification.text.erb +0 -7
  335. data/app/views/admin_mailer/error_report.html.erb +0 -70
  336. data/app/views/errors/500_critical.html.erb +0 -7
  337. data/app/views/errors/report.html.erb +0 -4
  338. data/config/removed_migrations.yml +0 -60
  339. data/db/migrate/20120627033112_rename_textbits.rb +0 -19
  340. data/db/migrate/20121010055412_drop_removed_tables.rb +0 -83
  341. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +0 -11
  342. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +0 -11
  343. data/db/migrate/20130303160632_remove_imagesets.rb +0 -24
  344. data/db/migrate/20130303161732_remove_sms_subscribers.rb +0 -16
  345. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -25
  346. data/db/migrate/20140203183900_create_roles.rb +0 -63
  347. data/db/migrate/20140414150500_change_locale_names.rb +0 -13
  348. data/db/migrate/20140515130100_remove_sphinx_deltas.rb +0 -15
  349. data/db/migrate/20140604142100_remove_openid_url.rb +0 -9
  350. data/db/migrate/20140920231700_convert_images_to_dis.rb +0 -79
  351. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +0 -50
  352. data/db/migrate/20141004003100_create_password_reset_tokens.rb +0 -10
  353. data/db/migrate/20141006181300_remove_user_cruft.rb +0 -11
  354. data/db/migrate/20141007173000_create_invites.rb +0 -16
  355. data/db/migrate/20150204130800_update_delayed_job_table.rb +0 -9
  356. data/db/migrate/20150401131300_localize_images.rb +0 -39
  357. data/db/migrate/20150520174300_add_meta_image_to_page.rb +0 -5
  358. data/db/migrate/20150904164200_add_pinned_to_tags.rb +0 -5
  359. data/lib/pages_core/extensions/hash_extensions.rb +0 -23
  360. data/lib/pages_core/localizable.rb +0 -49
  361. data/lib/pages_core/localizable/active_record_extension.rb +0 -41
  362. data/lib/pages_core/localizable/class_methods.rb +0 -51
  363. data/lib/pages_core/localizable/configuration.rb +0 -50
  364. data/lib/pages_core/localizable/instance_methods.rb +0 -130
  365. data/lib/pages_core/localizable/localizer.rb +0 -72
  366. data/lib/pages_core/localizable/scope_extension.rb +0 -22
  367. data/lib/pages_core/paginates.rb +0 -102
  368. data/lib/rails/generators/pages_core/frontend/templates/hidpi.css.scss.erb +0 -8
  369. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +0 -11
  370. data/lib/rails/generators/pages_core/install/templates/thinking_sphinx.yml +0 -12
  371. data/lib/tasks/db.rake +0 -96
  372. data/lib/tasks/pages/assets.rake +0 -65
  373. data/lib/tasks/pages/update.rake +0 -19
  374. data/vendor/assets/javascripts/jquery.dimscreen.js +0 -77
  375. data/vendor/assets/javascripts/jquery.fieldselection.js +0 -59
@@ -1,50 +0,0 @@
1
- class ConvertPageFilesToDis < ActiveRecord::Migration
2
- class PageFile < ActiveRecord::Base; end
3
- class Binary < ActiveRecord::Base; end
4
-
5
- def change
6
- add_column :page_files, :content_hash, :string, null: false
7
- change_column :page_files, :content_type, :string, null: false
8
- rename_column :page_files, :filesize, :content_length
9
- change_column :page_files, :content_length, :integer, null: false
10
- change_column :page_files, :filename, :string, null: false
11
-
12
- PageFile.reset_column_information
13
- reversible do |dir|
14
- dir.up do
15
- PageFile.all.each do |page_file|
16
- binary = Binary.find(page_file.binary_id)
17
- hash = binary.sha1_hash
18
-
19
- if binary_exist?(hash)
20
- f = binary_file(hash)
21
- page_file.content_hash = Dis::Storage.store("page_files", f)
22
- f.close
23
- else
24
- page_file.content_hash = hash
25
- end
26
-
27
- page_file.save
28
- end
29
- end
30
- end
31
-
32
- remove_column :page_files, :binary_id, :integer
33
- end
34
-
35
- private
36
-
37
- def binary_file(hash)
38
- File.open(binary_path(hash), "rb")
39
- end
40
-
41
- def binary_exist?(hash)
42
- File.exist?(binary_path(hash))
43
- end
44
-
45
- def binary_path(hash)
46
- folder = hash[0...2]
47
- filename = hash[2..hash.length]
48
- Rails.root.join("db", "binary-objects", Rails.env, folder, filename)
49
- end
50
- end
@@ -1,10 +0,0 @@
1
- class CreatePasswordResetTokens < ActiveRecord::Migration
2
- def change
3
- create_table :password_reset_tokens do |t|
4
- t.belongs_to :user
5
- t.string :token
6
- t.datetime :expires_at
7
- t.timestamps
8
- end
9
- end
10
- end
@@ -1,11 +0,0 @@
1
- class RemoveUserCruft < ActiveRecord::Migration
2
- def change
3
- remove_column :users, :token, :string
4
- remove_column :users, :is_deleted, :boolean, default: false, null: false
5
- remove_column :users, :born_on, :date
6
- remove_column :users, :mobile, :string
7
- remove_column :users, :web_link, :string
8
- rename_column :users, :is_activated, :activated
9
- rename_column :users, :realname, :name
10
- end
11
- end
@@ -1,16 +0,0 @@
1
- class CreateInvites < ActiveRecord::Migration
2
- def change
3
- create_table :invites do |t|
4
- t.belongs_to :user
5
- t.string :email, :token
6
- t.datetime :sent_at
7
- t.timestamps
8
- end
9
-
10
- create_table :invite_roles do |t|
11
- t.belongs_to :invite
12
- t.string :name
13
- t.timestamps
14
- end
15
- end
16
- end
@@ -1,9 +0,0 @@
1
- class UpdateDelayedJobTable < ActiveRecord::Migration
2
- def up
3
- change_column :delayed_jobs, :last_error, :text
4
- end
5
-
6
- def down
7
- change_column :delayed_jobs, :last_error, :string
8
- end
9
- end
@@ -1,39 +0,0 @@
1
- class LocalizeImages < ActiveRecord::Migration
2
- def locale
3
- I18n.default_locale
4
- end
5
-
6
- def up
7
- Image.all.in_locale(locale).each do |image|
8
- unless image.attributes["byline"].blank?
9
- Localization.create(
10
- localizable: image,
11
- name: "caption",
12
- locale: locale,
13
- value: image.attributes["byline"]
14
- )
15
- end
16
- end
17
- remove_column :images, :name, :string
18
- remove_column :images, :byline, :string
19
- remove_column :images, :description, :string
20
- end
21
-
22
- def down
23
- add_column :images, :name, :string
24
- add_column :images, :byline, :string
25
- add_column :images, :description, :string
26
-
27
- Localization.where(
28
- localizable_type: "Image",
29
- name: "caption",
30
- locale: locale
31
- ).each do |localization|
32
- localization.localizable.update_column(
33
- "byline",
34
- localization.value
35
- )
36
- localization.destroy
37
- end
38
- end
39
- end
@@ -1,5 +0,0 @@
1
- class AddMetaImageToPage < ActiveRecord::Migration
2
- def change
3
- add_column :pages, :meta_image_id, :integer
4
- end
5
- end
@@ -1,5 +0,0 @@
1
- class AddPinnedToTags < ActiveRecord::Migration
2
- def change
3
- add_column :tags, :pinned, :boolean, default: false, null: false
4
- end
5
- end
@@ -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,49 +0,0 @@
1
- # encoding: utf-8
2
-
3
- load "pages_core/localizable/active_record_extension.rb"
4
- load "pages_core/localizable/class_methods.rb"
5
- load "pages_core/localizable/configuration.rb"
6
- load "pages_core/localizable/instance_methods.rb"
7
- load "pages_core/localizable/localizer.rb"
8
- load "pages_core/localizable/scope_extension.rb"
9
-
10
- module PagesCore
11
- # = Localizable
12
- #
13
- # Localizable allows any model to have localized attributes.
14
- #
15
- # == Configuring the model
16
- #
17
- # class Page < ActiveRecord::Base
18
- # localizable do
19
- # attribute :name
20
- # attribute :body
21
- # end
22
- # end
23
- #
24
- # == Usage
25
- #
26
- # page = Page.create(name: 'Hello', locale: 'en')
27
- # page.name? # => true
28
- # page.name.to_s # => 'Hello'
29
- #
30
- # The localized attributes always return an instance of Localization.
31
- #
32
- # To get a localized version of a page, call .localize on it:
33
- #
34
- # page = Page.first.localize('en')
35
- #
36
- # .localize also takes a block argument:
37
- #
38
- # page.localize('nb') do |p|
39
- # p.locale # => 'nb'
40
- # end
41
- # page.locale # => 'en'
42
- #
43
- # Multiple locales can be updated at the same time:
44
- #
45
- # page.name = {'en' => 'Hello', 'nb' => 'Hallo'}
46
- #
47
- module Localizable
48
- end
49
- end
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module Localizable
5
- # = Localizable::ActiveRecordExtension
6
- #
7
- # Extends ActiveRecord::Base with the localizable setup method.
8
- #
9
- module ActiveRecordExtension
10
- # Extends the model with Localizable features.
11
- # It takes an optional block as argument, which yields an instance of
12
- # Localizable::Configuration.
13
- #
14
- # Example:
15
- #
16
- # class Page < ActiveRecord::Base
17
- # localizable do
18
- # attribute :name
19
- # attribute :body
20
- # end
21
- # end
22
- #
23
- def localizable(&block)
24
- unless self.is_a?(Localizable::ClassMethods)
25
- send :extend, Localizable::ClassMethods
26
- send :include, Localizable::InstanceMethods
27
- has_many(
28
- :localizations,
29
- as: :localizable,
30
- dependent: :destroy,
31
- autosave: true
32
- )
33
- before_save :cleanup_localizations!
34
- end
35
- localizable_configuration.instance_eval(&block) if block_given?
36
- end
37
- end
38
- end
39
- end
40
-
41
- ActiveRecord::Base.send(:extend, PagesCore::Localizable::ActiveRecordExtension)
@@ -1,51 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module Localizable
5
- # = Localizable::ClassMethods
6
- #
7
- # Class methods for all Localizable models.
8
- #
9
- module ClassMethods
10
- # Returns a scope where all records will be set to the given locale.
11
- #
12
- def in_locale(locale)
13
- all
14
- .extending(Localizable::ScopeExtension)
15
- .localize(locale)
16
- .includes(:localizations)
17
- end
18
-
19
- # Returns a scope with only records matching the given locale.
20
- #
21
- # Page.localized('en').first.locale # => 'en'
22
- #
23
- def localized(locale)
24
- in_locale(locale)
25
- .where("localizations.locale = ?", locale)
26
- .references(:localizations)
27
- end
28
-
29
- def localized_attributes
30
- localizable_configuration.attributes.keys
31
- end
32
-
33
- # Accessor for the configuration.
34
- def localizable_configuration
35
- @localizable_configuration ||= inherited_localizable_configuration
36
- end
37
-
38
- private
39
-
40
- def inherited_localizable_configuration
41
- if superclass.respond_to?(:localizable_configuration)
42
- Localizable::Configuration.new(
43
- superclass.localizable_configuration.attributes.dup
44
- )
45
- else
46
- Localizable::Configuration.new
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,50 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module Localizable
5
- class Configuration
6
- def initialize(attributes = nil)
7
- @attributes = attributes
8
- end
9
-
10
- def attribute(attribute_name, options = {})
11
- attribute_table[attribute_name.to_sym] = options
12
- end
13
-
14
- def attributes
15
- attribute_table.merge(dictionary_attributes)
16
- end
17
-
18
- def dictionary(dict)
19
- dictionaries << dict
20
- end
21
-
22
- def attribute?(attribute)
23
- attributes.keys.include?(attribute)
24
- end
25
-
26
- private
27
-
28
- def dictionaries
29
- @dictionaries ||= []
30
- end
31
-
32
- def dictionary_attributes
33
- dictionaries.map(&:call).inject({}) do |attrs, list|
34
- attrs.merge(hashify(list))
35
- end
36
- end
37
-
38
- def hashify(list)
39
- return list if list.is_a?(Hash)
40
- list.each_with_object({}) do |e, a|
41
- a[e] = {}
42
- end
43
- end
44
-
45
- def attribute_table
46
- @attributes ||= {}
47
- end
48
- end
49
- end
50
- end
@@ -1,130 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module PagesCore
4
- module Localizable
5
- # = Localizable::InstanceMethods
6
- #
7
- # This is the public API for all localizable models.
8
- # See Localizable for usage examples.
9
- #
10
- module InstanceMethods
11
- # Returns all locales saved for this page.
12
- #
13
- def locales
14
- localizer.locales
15
- end
16
-
17
- # Getter for locale
18
- #
19
- # page.locale # => 'en'
20
- #
21
- def locale
22
- localizer.locale
23
- end
24
-
25
- # Setter for locale
26
- #
27
- # page.locale = 'no' # => 'no'
28
- #
29
- def locale=(locale)
30
- @localizer = Localizer.new(self)
31
- localizer.locale = locale
32
- end
33
-
34
- # Returns true if this page has a locale set
35
- #
36
- def locale?
37
- localizer.locale?
38
- end
39
-
40
- # Returns a copy of the model with a different locale.
41
- #
42
- # localized = page.localize('en')
43
- #
44
- # localize also takes a block as an argument, which returns the
45
- # result of the block.
46
- #
47
- # page.localize('nb') do |p|
48
- # p.locale # => 'nb'
49
- # end
50
- # page.locale # => 'en'
51
- #
52
- def localize(locale)
53
- clone = self.clone.localize!(locale)
54
- (block_given?) ? (yield clone) : clone
55
- end
56
-
57
- # In-place variant of #localize.
58
- #
59
- # page.localize!('en')
60
- #
61
- # This is functionally equivalent to setting locale=,
62
- # but returns the model instead of the locale and is chainable.
63
- #
64
- def localize!(locale)
65
- @localizer = Localizer.new(self)
66
- localizer.locale = locale
67
- self
68
- end
69
-
70
- # assign_attributes from ActiveRecord is overridden to catch locale before
71
- # any other attributes are written. This enables the following construct:
72
- #
73
- # Page.create(name: 'My Page', locale: 'en')
74
- #
75
- def assign_attributes(new_attributes)
76
- if new_attributes.is_a?(Hash)
77
- attributes = new_attributes.stringify_keys
78
- self.locale = attributes["language"] if attributes.key?("language")
79
- self.locale = attributes["locale"] if attributes.key?("locale")
80
- end
81
- super
82
- end
83
-
84
- # A localized model responds to :foo, :foo= and :foo?
85
- #
86
- def respond_to?(method_name, *args)
87
- requested_attribute, _ = method_name.to_s.match(/(.*?)([\?=]?)$/)[1..2]
88
- localizer.attribute?(requested_attribute.to_sym) ? true : super
89
- end
90
-
91
- alias_method :translate, :localize
92
- alias_method :translate!, :localize!
93
- alias_method :working_language, :locale
94
- alias_method :working_language=, :locale=
95
-
96
- protected
97
-
98
- # Getter for the model's Localizer.
99
- #
100
- def localizer
101
- @localizer ||= Localizer.new(self)
102
- end
103
-
104
- # Callback for cleaning up empty localizations.
105
- # This is performed automatically when the model is saved.
106
- #
107
- def cleanup_localizations!
108
- localizer.cleanup_localizations!
109
- end
110
-
111
- def method_missing(method_name, *args)
112
- attr = method_to_attr(method_name)
113
- super unless localizer.attribute?(attr)
114
-
115
- case method_name.to_s
116
- when /\?$/
117
- localizer.value_for?(attr)
118
- when /=$/
119
- localizer.set(attr, args.first)
120
- else
121
- localizer.get(attr).to_s
122
- end
123
- end
124
-
125
- def method_to_attr(method_name)
126
- method_name.to_s.match(/(.*?)([\?=]?)$/)[1].to_sym
127
- end
128
- end
129
- end
130
- end