pages_core 3.4.2

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 (271) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +29 -0
  3. data/Rakefile +10 -0
  4. data/app/assets/images/pages/admin/description-bg.gif +0 -0
  5. data/app/assets/images/pages/admin/drag-handle.gif +0 -0
  6. data/app/assets/images/pages/admin/drag-icon.png +0 -0
  7. data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
  8. data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
  9. data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
  10. data/app/assets/images/pages/admin/icon.png +0 -0
  11. data/app/assets/images/pages/admin/image-editor-bg.png +0 -0
  12. data/app/assets/images/pages/admin/list-table-pin-blue.gif +0 -0
  13. data/app/assets/images/pages/admin/list-table-pin-disabled.gif +0 -0
  14. data/app/assets/images/pages/admin/list-table-pin-green.gif +0 -0
  15. data/app/assets/images/pages/admin/list-table-pin-red.gif +0 -0
  16. data/app/assets/images/pages/admin/list-table-pin-yellow.gif +0 -0
  17. data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
  18. data/app/assets/images/pages/admin/loading-modal.gif +0 -0
  19. data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
  20. data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
  21. data/app/assets/images/pages/admin/warning-icon.gif +0 -0
  22. data/app/assets/images/pages/favicon.gif +0 -0
  23. data/app/assets/images/pages/feed-icon-14x14.png +0 -0
  24. data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +4 -0
  25. data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +139 -0
  26. data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +9 -0
  27. data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +47 -0
  28. data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +122 -0
  29. data/app/assets/javascripts/pages/admin/features/modal.js.coffee +66 -0
  30. data/app/assets/javascripts/pages/admin/features/page_images.js +329 -0
  31. data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +40 -0
  32. data/app/assets/javascripts/pages/admin/features/tag_editor.js +159 -0
  33. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +17 -0
  34. data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +21 -0
  35. data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +57 -0
  36. data/app/assets/javascripts/pages/admin.js.coffee +54 -0
  37. data/app/assets/javascripts/pages/login_form.js.coffee +17 -0
  38. data/app/assets/stylesheets/pages/admin/buttons.css.erb +5 -0
  39. data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +94 -0
  40. data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +58 -0
  41. data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +178 -0
  42. data/app/assets/stylesheets/pages/admin/controllers/users.css.erb +3 -0
  43. data/app/assets/stylesheets/pages/admin/editable_image.css.erb +19 -0
  44. data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +73 -0
  45. data/app/assets/stylesheets/pages/admin/header.css.erb +129 -0
  46. data/app/assets/stylesheets/pages/admin/images.css.scss.erb +160 -0
  47. data/app/assets/stylesheets/pages/admin/links.css.erb +34 -0
  48. data/app/assets/stylesheets/pages/admin/list_table.css.erb +56 -0
  49. data/app/assets/stylesheets/pages/admin/login.css.scss.erb +32 -0
  50. data/app/assets/stylesheets/pages/admin/modal.css.erb +14 -0
  51. data/app/assets/stylesheets/pages/admin/pagination.css.scss +22 -0
  52. data/app/assets/stylesheets/pages/admin/print.css.erb +17 -0
  53. data/app/assets/stylesheets/pages/admin/sidebar.css.erb +39 -0
  54. data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +18 -0
  55. data/app/assets/stylesheets/pages/admin/tag_editor.css.scss.erb +48 -0
  56. data/app/assets/stylesheets/pages/admin/textarea.css.erb +55 -0
  57. data/app/assets/stylesheets/pages/admin.css.erb +404 -0
  58. data/app/assets/stylesheets/pages/errors.css +126 -0
  59. data/app/controller_dummies/admin/admin_controller.rb +6 -0
  60. data/app/controller_dummies/application_controller.rb +6 -0
  61. data/app/controller_dummies/frontend_controller.rb +4 -0
  62. data/app/controller_dummies/images_controller.rb +4 -0
  63. data/app/controller_dummies/page_files_controller.rb +4 -0
  64. data/app/controller_dummies/pages_controller.rb +4 -0
  65. data/app/controller_dummies/sitemaps_controller.rb +4 -0
  66. data/app/controllers/admin/categories_controller.rb +57 -0
  67. data/app/controllers/admin/images_controller.rb +48 -0
  68. data/app/controllers/admin/invites_controller.rb +79 -0
  69. data/app/controllers/admin/page_comments_controller.rb +61 -0
  70. data/app/controllers/admin/page_files_controller.rb +81 -0
  71. data/app/controllers/admin/page_images_controller.rb +116 -0
  72. data/app/controllers/admin/pages_controller.rb +179 -0
  73. data/app/controllers/admin/password_resets_controller.rb +83 -0
  74. data/app/controllers/admin/users_controller.rb +102 -0
  75. data/app/controllers/concerns/pages_core/authentication.rb +48 -0
  76. data/app/controllers/concerns/pages_core/domain_based_cache.rb +28 -0
  77. data/app/controllers/concerns/pages_core/exception_handler.rb +114 -0
  78. data/app/controllers/concerns/pages_core/policies_helper.rb +40 -0
  79. data/app/controllers/concerns/pages_core/process_titler.rb +44 -0
  80. data/app/controllers/errors_controller.rb +45 -0
  81. data/app/controllers/pages_core/admin_controller.rb +109 -0
  82. data/app/controllers/pages_core/application_controller.rb +31 -0
  83. data/app/controllers/pages_core/frontend/page_files_controller.rb +42 -0
  84. data/app/controllers/pages_core/frontend/pages_controller.rb +308 -0
  85. data/app/controllers/pages_core/frontend_controller.rb +34 -0
  86. data/app/controllers/pages_core/images_controller.rb +15 -0
  87. data/app/controllers/pages_core/sitemaps_controller.rb +73 -0
  88. data/app/controllers/sessions_controller.rb +38 -0
  89. data/app/formatters/pages_core/html_formatter.rb +86 -0
  90. data/app/helpers/admin/admin_helper.rb +7 -0
  91. data/app/helpers/admin/menu_helper.rb +65 -0
  92. data/app/helpers/admin/pages_helper.rb +74 -0
  93. data/app/helpers/application_helper.rb +5 -0
  94. data/app/helpers/frontend_helper.rb +5 -0
  95. data/app/helpers/pages_core/admin/admin_helper.rb +108 -0
  96. data/app/helpers/pages_core/admin/labelled_field_helper.rb +73 -0
  97. data/app/helpers/pages_core/admin/tag_editor_helper.rb +46 -0
  98. data/app/helpers/pages_core/application_helper.rb +65 -0
  99. data/app/helpers/pages_core/form_builder.rb +187 -0
  100. data/app/helpers/pages_core/frontend_helper.rb +21 -0
  101. data/app/helpers/pages_core/head_tags_helper.rb +270 -0
  102. data/app/helpers/pages_core/images_helper.rb +36 -0
  103. data/app/helpers/pages_core/login_helper.rb +14 -0
  104. data/app/indices/page_file_index.rb +9 -0
  105. data/app/indices/page_index.rb +29 -0
  106. data/app/indices/user_index.rb +11 -0
  107. data/app/jobs/pages_core/autopublish_job.rb +11 -0
  108. data/app/jobs/pages_core/sweep_cache_job.rb +11 -0
  109. data/app/mailers/admin_mailer.rb +46 -0
  110. data/app/models/autopublisher.rb +33 -0
  111. data/app/models/category.rb +23 -0
  112. data/app/models/concerns/pages_core/has_roles.rb +25 -0
  113. data/app/models/concerns/pages_core/humanizable_param.rb +17 -0
  114. data/app/models/concerns/pages_core/page_tree.rb +85 -0
  115. data/app/models/concerns/pages_core/searchable_page.rb +33 -0
  116. data/app/models/concerns/pages_core/sweepable.rb +23 -0
  117. data/app/models/concerns/pages_core/taggable.rb +46 -0
  118. data/app/models/concerns/pages_core/templateable.rb +85 -0
  119. data/app/models/image.rb +23 -0
  120. data/app/models/invite.rb +33 -0
  121. data/app/models/invite_role.rb +11 -0
  122. data/app/models/localization.rb +27 -0
  123. data/app/models/page.rb +281 -0
  124. data/app/models/page_builder.rb +61 -0
  125. data/app/models/page_comment.rb +18 -0
  126. data/app/models/page_file.rb +74 -0
  127. data/app/models/page_image.rb +62 -0
  128. data/app/models/password_reset_token.rb +38 -0
  129. data/app/models/role.rb +51 -0
  130. data/app/models/tag.rb +64 -0
  131. data/app/models/tagging.rb +22 -0
  132. data/app/models/user.rb +131 -0
  133. data/app/policies/invite_policy.rb +29 -0
  134. data/app/policies/page_file_policy.rb +25 -0
  135. data/app/policies/page_image_policy.rb +25 -0
  136. data/app/policies/page_policy.rb +33 -0
  137. data/app/policies/policy.rb +64 -0
  138. data/app/policies/user_policy.rb +49 -0
  139. data/app/serializers/admin/image_serializer.rb +10 -0
  140. data/app/serializers/admin/page_image_serializer.rb +6 -0
  141. data/app/serializers/page_image_serializer.rb +38 -0
  142. data/app/serializers/page_serializer.rb +21 -0
  143. data/app/views/admin/invites/new.html.erb +16 -0
  144. data/app/views/admin/invites/show.html.erb +25 -0
  145. data/app/views/admin/pages/_edit_comments.html.erb +21 -0
  146. data/app/views/admin/pages/_edit_content.html.erb +10 -0
  147. data/app/views/admin/pages/_edit_images.html.erb +84 -0
  148. data/app/views/admin/pages/_edit_metadata.html.erb +24 -0
  149. data/app/views/admin/pages/_edit_options.html.erb +72 -0
  150. data/app/views/admin/pages/_pagelisting.html.erb +63 -0
  151. data/app/views/admin/pages/edit.html.erb +161 -0
  152. data/app/views/admin/pages/index.html.erb +67 -0
  153. data/app/views/admin/pages/new.html.erb +48 -0
  154. data/app/views/admin/pages/news.html.erb +69 -0
  155. data/app/views/admin/password_resets/show.html.erb +24 -0
  156. data/app/views/admin/users/_access_control.html.erb +14 -0
  157. data/app/views/admin/users/_list.html.erb +62 -0
  158. data/app/views/admin/users/_login_form.html.erb +47 -0
  159. data/app/views/admin/users/deactivated.html.erb +12 -0
  160. data/app/views/admin/users/edit.html.erb +54 -0
  161. data/app/views/admin/users/index.html.erb +27 -0
  162. data/app/views/admin/users/login.html.erb +15 -0
  163. data/app/views/admin/users/new.html.erb +23 -0
  164. data/app/views/admin/users/new_password.html.erb +19 -0
  165. data/app/views/admin/users/show.html.erb +64 -0
  166. data/app/views/admin_mailer/comment_notification.text.erb +7 -0
  167. data/app/views/admin_mailer/error_report.html.erb +70 -0
  168. data/app/views/admin_mailer/invite.text.erb +9 -0
  169. data/app/views/admin_mailer/password_reset.text.erb +13 -0
  170. data/app/views/errors/403.html.erb +6 -0
  171. data/app/views/errors/404.html.erb +11 -0
  172. data/app/views/errors/405.html.erb +4 -0
  173. data/app/views/errors/500.html.erb +19 -0
  174. data/app/views/errors/500_critical.html.erb +7 -0
  175. data/app/views/errors/_generic_help.html.erb +21 -0
  176. data/app/views/errors/report.html.erb +4 -0
  177. data/app/views/feeds/pages.rss.builder +39 -0
  178. data/app/views/layouts/admin/_analytics.html.erb +18 -0
  179. data/app/views/layouts/admin/_header.html.erb +37 -0
  180. data/app/views/layouts/admin.html.erb +79 -0
  181. data/app/views/layouts/errors.html.erb +23 -0
  182. data/app/views/sitemaps/show.xml.builder +9 -0
  183. data/config/locales/en.yml +6 -0
  184. data/config/removed_migrations.yml +60 -0
  185. data/config/routes.rb +127 -0
  186. data/db/migrate/20111219033112_create_pages_tables.rb +281 -0
  187. data/db/migrate/20120627033112_rename_textbits.rb +19 -0
  188. data/db/migrate/20121010055412_drop_removed_tables.rb +83 -0
  189. data/db/migrate/20130130053932_add_queue_to_delayed_jobs.rb +11 -0
  190. data/db/migrate/20130303053932_remove_filter_from_localizations.rb +11 -0
  191. data/db/migrate/20130303160632_remove_imagesets.rb +24 -0
  192. data/db/migrate/20130303161732_remove_sms_subscribers.rb +16 -0
  193. data/db/migrate/20130823133208_update_page_redirect_to.rb +25 -0
  194. data/db/migrate/20140203183900_create_roles.rb +63 -0
  195. data/db/migrate/20140414150500_change_locale_names.rb +13 -0
  196. data/db/migrate/20140515130100_remove_sphinx_deltas.rb +15 -0
  197. data/db/migrate/20140604142100_remove_openid_url.rb +9 -0
  198. data/db/migrate/20140920231700_convert_images_to_dis.rb +79 -0
  199. data/db/migrate/20140922124600_convert_page_files_to_dis.rb +50 -0
  200. data/db/migrate/20141004003100_create_password_reset_tokens.rb +10 -0
  201. data/db/migrate/20141006181300_remove_user_cruft.rb +11 -0
  202. data/db/migrate/20141007173000_create_invites.rb +16 -0
  203. data/db/migrate/20150204130800_update_delayed_job_table.rb +9 -0
  204. data/db/migrate/20150401131300_localize_images.rb +39 -0
  205. data/db/migrate/20150520174300_add_meta_image_to_page.rb +5 -0
  206. data/db/migrate/20150904164200_add_pinned_to_tags.rb +5 -0
  207. data/lib/pages_core/admin_menu_item.rb +22 -0
  208. data/lib/pages_core/archive_finder.rb +75 -0
  209. data/lib/pages_core/cache_sweeper.rb +112 -0
  210. data/lib/pages_core/configuration/base.rb +85 -0
  211. data/lib/pages_core/configuration/pages.rb +23 -0
  212. data/lib/pages_core/configuration.rb +9 -0
  213. data/lib/pages_core/engine.rb +27 -0
  214. data/lib/pages_core/extensions/hash_extensions.rb +23 -0
  215. data/lib/pages_core/extensions/string_extensions.rb +17 -0
  216. data/lib/pages_core/extensions.rb +4 -0
  217. data/lib/pages_core/localizable/active_record_extension.rb +41 -0
  218. data/lib/pages_core/localizable/class_methods.rb +51 -0
  219. data/lib/pages_core/localizable/configuration.rb +50 -0
  220. data/lib/pages_core/localizable/instance_methods.rb +130 -0
  221. data/lib/pages_core/localizable/localizer.rb +72 -0
  222. data/lib/pages_core/localizable/scope_extension.rb +22 -0
  223. data/lib/pages_core/localizable.rb +49 -0
  224. data/lib/pages_core/pages_plugin.rb +14 -0
  225. data/lib/pages_core/paginates.rb +102 -0
  226. data/lib/pages_core/plugin.rb +118 -0
  227. data/lib/pages_core/templates/block_configuration.rb +17 -0
  228. data/lib/pages_core/templates/configuration.rb +81 -0
  229. data/lib/pages_core/templates/configuration_handler.rb +62 -0
  230. data/lib/pages_core/templates/configuration_proxy.rb +28 -0
  231. data/lib/pages_core/templates/controller_actions.rb +32 -0
  232. data/lib/pages_core/templates/template_configuration.rb +198 -0
  233. data/lib/pages_core/templates.rb +53 -0
  234. data/lib/pages_core/version.rb +5 -0
  235. data/lib/pages_core.rb +89 -0
  236. data/lib/rails/generators/pages_core/frontend/frontend_generator.rb +68 -0
  237. data/lib/rails/generators/pages_core/frontend/templates/application.css.scss.erb +3 -0
  238. data/lib/rails/generators/pages_core/frontend/templates/application.js.erb +16 -0
  239. data/lib/rails/generators/pages_core/frontend/templates/base.css.scss.erb +3 -0
  240. data/lib/rails/generators/pages_core/frontend/templates/breakpoints.css.scss.erb +24 -0
  241. data/lib/rails/generators/pages_core/frontend/templates/hidpi.css.scss.erb +8 -0
  242. data/lib/rails/generators/pages_core/frontend/templates/layout.html.erb +15 -0
  243. data/lib/rails/generators/pages_core/frontend/templates/normalize.css.erb +425 -0
  244. data/lib/rails/generators/pages_core/install/install_generator.rb +135 -0
  245. data/lib/rails/generators/pages_core/install/templates/active_job_initializer.rb +1 -0
  246. data/lib/rails/generators/pages_core/install/templates/application_controller.rb +11 -0
  247. data/lib/rails/generators/pages_core/install/templates/application_helper.rb +5 -0
  248. data/lib/rails/generators/pages_core/install/templates/cache_sweeper_initializer.rb +11 -0
  249. data/lib/rails/generators/pages_core/install/templates/default_page_template.html.erb +5 -0
  250. data/lib/rails/generators/pages_core/install/templates/delayed_job +7 -0
  251. data/lib/rails/generators/pages_core/install/templates/delayed_job_initializer.rb +3 -0
  252. data/lib/rails/generators/pages_core/install/templates/frontend_controller.rb +6 -0
  253. data/lib/rails/generators/pages_core/install/templates/frontend_helper.rb +5 -0
  254. data/lib/rails/generators/pages_core/install/templates/gitignore.erb +25 -0
  255. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +67 -0
  256. data/lib/rails/generators/pages_core/install/templates/pages_controller.rb +4 -0
  257. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +45 -0
  258. data/lib/rails/generators/pages_core/install/templates/thinking_sphinx.yml +12 -0
  259. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +34 -0
  260. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +9 -0
  261. data/lib/rails/generators/pages_core/rspec/templates/mailer_macros.rb +9 -0
  262. data/lib/rails/generators/pages_core/rspec/templates/spec_helper.rb +51 -0
  263. data/lib/tasks/db.rake +96 -0
  264. data/lib/tasks/pages/assets.rake +65 -0
  265. data/lib/tasks/pages/cache.rake +16 -0
  266. data/lib/tasks/pages/update.rake +19 -0
  267. data/lib/tasks/pages.rake +76 -0
  268. data/template.rb +19 -0
  269. data/vendor/assets/javascripts/jquery.dimscreen.js +77 -0
  270. data/vendor/assets/javascripts/jquery.fieldselection.js +59 -0
  271. metadata +690 -0
@@ -0,0 +1,25 @@
1
+ <%
2
+ self.page_title = "Welcome"
3
+ self.page_description = "Welcome to Pages"
4
+ %>
5
+
6
+ <div class="content">
7
+ <p>
8
+ Welcome to Pages! Before you can log on, we need to create your user account.
9
+ </p>
10
+ </div>
11
+
12
+ <%= form_for @user, url: accept_admin_invite_path(@invite, token: @invite.token), builder: PagesCore::FormBuilder do |f| %>
13
+
14
+ <%= f.labelled_text_field :name %>
15
+ <%= f.labelled_text_field :email %>
16
+ <%= f.labelled_password_field :password %>
17
+ <%= f.labelled_password_field :confirm_password %>
18
+
19
+ <p>
20
+ <button type="submit">
21
+ Sign up
22
+ </button>
23
+ </p>
24
+
25
+ <% end %>
@@ -0,0 +1,21 @@
1
+ <table class="list comments">
2
+ <% @page.comments.each do |c| %>
3
+ <tr>
4
+ <td>
5
+ <p>
6
+ <strong><%= c.name %></strong><br />
7
+ <% if c.email? %><%= mail_to c.email, c.email %><br /><% end %>
8
+ <% if c.url? %><%= link_to c.url, c.url %><br /><% end %>
9
+ </p>
10
+ <p>
11
+ <%= time_ago_in_words c.created_at %> ago<br />
12
+ from <%= c.remote_ip %>
13
+ </p>
14
+ <p>
15
+ <%= link_to "Delete comment", admin_page_comment_url(@locale, @page, c), class: :delete, data: {confirm: "Are you sure?"}, method: :delete %>
16
+ </p>
17
+ </td>
18
+ <td><%= c.body %></td>
19
+ </tr>
20
+ <% end %>
21
+ </table>
@@ -0,0 +1,10 @@
1
+ <% @page.template_config.enabled_blocks do |block_name, block_options| %>
2
+ <%= page_block_field(f, block_name, block_options) %>
3
+ <% end %>
4
+
5
+ <% if !@page.new_record? && @page.template_config.value(:tags) %>
6
+ <div class="field">
7
+ <label>Tags</label>
8
+ <%= tag_editor_for f, @page %>
9
+ </div>
10
+ <% end %>
@@ -0,0 +1,84 @@
1
+ <div class="page_images">
2
+
3
+ <div class="editor">
4
+ <div class="controls">
5
+ <div class="nav">
6
+ <%= link_to "Close", '#', class: :close %>
7
+ </div>
8
+ <h4>Image Editor</h4>
9
+ <%= fields_for PageImage.new do |pi| %>
10
+ <%= pi.fields_for :image_attributes, Image.new do |i| %>
11
+ <%= i.hidden_field :id, class: 'image_id' %>
12
+ <fieldset>
13
+ <label>
14
+ Alternative text
15
+ </label>
16
+ <%= i.text_field(:alternative,
17
+ class: 'alternative',
18
+ placeholder: 'Alternative text') %>
19
+ </fieldset>
20
+ <fieldset class="caption-fieldset">
21
+ <label>
22
+ Caption
23
+ </label>
24
+ <%= i.text_field(:caption,
25
+ class: 'caption',
26
+ placeholder: 'Write your caption/byline') %>
27
+ </fieldset>
28
+ <%= text_field_tag 'embed', '', class: 'embed' %>
29
+ <%= pi.check_box :primary %><label>Primary</label>
30
+ <%= i.hidden_field :crop_start_x, class: 'crop_start_x' %>
31
+ <%= i.hidden_field :crop_start_y, class: 'crop_start_y' %>
32
+ <%= i.hidden_field :crop_width, class: 'crop_width' %>
33
+ <%= i.hidden_field :crop_height, class: 'crop_height' %>
34
+ <% end %>
35
+
36
+ <button class="save">
37
+ Save
38
+ </button>
39
+
40
+ <%= link_to "Delete image", '#', class: :delete %>
41
+ <% end %>
42
+ </div>
43
+ <div class="edit-image-container">
44
+ <%= link_to "", '#', class: :previous %>
45
+ <%= link_to "", '#', class: :next %>
46
+ <div class="edit-image">
47
+ </div>
48
+ </div>
49
+ </div>
50
+
51
+ <div class="uploadButton">
52
+ <p>
53
+ <button type="button" class="upload-images-button">
54
+ Upload images
55
+ </button>
56
+ </p>
57
+ </div>
58
+
59
+ <div class="no_images">
60
+ <p>No images have been uploaded.</p>
61
+ </div>
62
+
63
+ <div class="primary_container">
64
+ <% if @page.image? && (page_image = @page.page_images.select{|pi| pi.primary?}.first) %>
65
+ <a class="image primary"
66
+ data-page-image-id="<%= page_image.id %>"
67
+ data-uncropped-url="<%= uncropped_dynamic_image_path(page_image.image, size: '2000x2000') %>"
68
+ href="<%= dynamic_image_url page_image.image, size: '2000x2000' %>">
69
+ <%= dynamic_image_tag(page_image.image, size: '380x380', crop: true, upscale: true) %>
70
+ </a>
71
+ <% end %>
72
+ </div>
73
+ <div class="images clearfix">
74
+ <% @page.page_images.reject{|pi| pi.primary?}.each do |i| %>
75
+ <a class="image"
76
+ data-page-image-id="<%= i.id %>"
77
+ data-uncropped-url="<%= uncropped_dynamic_image_path(i.image, size: '2000x2000') %>"
78
+ href="<%= dynamic_image_url i.image, size: '2000x2000' %>">
79
+ <%= dynamic_image_tag(i.image, size: '240x240', crop: true, upscale: true) %>
80
+ </a>
81
+ <% end %>
82
+ </div>
83
+
84
+ </div>
@@ -0,0 +1,24 @@
1
+ <div class="field">
2
+ <%= f.label_for :meta_image, "Image" %>
3
+ <p class="description">
4
+ Image displayed when sharing on social media.
5
+ Will fall back to the primary image if absent.
6
+ Recommended size is at least 1200x630.
7
+ </p>
8
+ <% if @page.meta_image %>
9
+ <p>
10
+ <%= dynamic_image_tag @page.meta_image, size: "250x" %>
11
+ <br>
12
+ <%= link_to("Delete image",
13
+ delete_meta_image_admin_page_path(@locale, @page),
14
+ method: "delete",
15
+ class: "delete",
16
+ data: { confirm: "Are you sure?" }) %>
17
+ </p>
18
+ <% end %>
19
+ <%= f.file_field :meta_image %>
20
+ </div>
21
+
22
+ <% @page.template_config.metadata_blocks do |block_name, block_options| %>
23
+ <%= page_block_field(f, block_name, block_options) %>
24
+ <% end %>
@@ -0,0 +1,72 @@
1
+ <%= labelled_field f.select(:status, Page.status_labels.invert), "Status",
2
+ errors: @page.errors[:status]
3
+ %>
4
+ <div class="published_date">
5
+ <%= labelled_field (
6
+ f.date_select(
7
+ :published_at,
8
+ start_year: (Time.now.year - 20),
9
+ end_year: (Time.now.year + 5)
10
+ ) +
11
+ '<br />'.html_safe +
12
+ f.time_select(:published_at)
13
+ ),
14
+ "Date",
15
+ errors: @page.errors[:published_at]
16
+ %>
17
+ <p class="autopublish_notice">This page will publish later</p>
18
+ </div>
19
+
20
+ <%= labelled_field (
21
+ f.select(:user_id, @authors.map{|a| [a.name, a.id]})
22
+ ),
23
+ "Author",
24
+ errors: @page.errors[:user_id]
25
+ %>
26
+
27
+ <% if @page.parent && @page.parent.news_page? %>
28
+ <div class="field">
29
+ <label>Pin to top</label>
30
+ <%= f.check_box(:pinned) %> Make post featured<br />
31
+ </div>
32
+ <% end %>
33
+
34
+ <% if @categories.length > 0 %>
35
+ <div class="field">
36
+ <label>Categories</label>
37
+ <% @categories.each do |category| %>
38
+ <%= check_box_tag "category[#{category.id}]", "1", (@page.categories.map{|c| c.id}.include?(category.id) ? true : false) %>
39
+ <%= category.name %><br />
40
+ <% end %>
41
+ </div>
42
+ <% end %>
43
+
44
+ <%= labelled_field f.select( :template, available_templates_for_select ), "Template", errors: @page.errors[:template] %>
45
+
46
+
47
+ <%= link_to "Advanced options", "#", class: "advanced_toggle" %>
48
+
49
+ <div class="advanced_options">
50
+
51
+ <div class="field">
52
+ <label>Subpages</label>
53
+ Sort <%= f.select(:content_order, [ ['manually','position'], ['with the newest first','published_at DESC'] ] ) %><br />
54
+ <%= f.check_box(:feed_enabled) %> RSS feed enabled<br />
55
+ <%= f.check_box(:news_page) %> Show in News<br />
56
+ </div>
57
+ <% if @page.template_config.value(:comments) %>
58
+ <p class="field">
59
+ <label>Comments</label>
60
+ <%= f.check_box(:comments_allowed) %> Enabled<br />
61
+ </p>
62
+ <% end %>
63
+ <%= labelled_field f.text_field(:unique_name), "Unique name", errors: @page.errors[:unique_name] %>
64
+ <%= labelled_field f.text_field(:redirect_to), "Redirect", errors: @page.errors[:redirect_to] %>
65
+ </div>
66
+
67
+ <% if @page.id? && @page.name? %>
68
+ <div class="field">
69
+ <label>Page link</label>
70
+ <%= page_link @page %>
71
+ </div>
72
+ <% end %>
@@ -0,0 +1,63 @@
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>
@@ -0,0 +1,161 @@
1
+ <%
2
+ self.page_title = "Editing “" + @page.name.to_s + "”"
3
+ self.page_description = "Editing " + [@page.ancestors.reverse,@page].flatten.map{|page| link_to((page.name rescue "(Untitled)"), edit_admin_page_path(@locale, page))}.join(" &raquo; ")
4
+
5
+ if PagesCore.config.localizations?
6
+ self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n, edit_admin_page_path(l, @page) }.join(link_separator)
7
+ end
8
+ %>
9
+
10
+
11
+
12
+ <%# #### SIDEBAR ########################################################### %>
13
+
14
+ <% content_for :sidebar do %>
15
+ <%= form_for(@page,
16
+ url: admin_page_url(@locale, @page),
17
+ html: {class: :edit_page, id: 'page-form-sidebar'}) do |f| %>
18
+ <%= render partial: 'edit_options', locals: {f: f} %>
19
+ <% end %>
20
+ <% end %>
21
+
22
+
23
+
24
+ <%# #### EDIT AREA ######################################################### %>
25
+
26
+ <%= form_for(@page,
27
+ url: admin_page_url(@locale, @page),
28
+ html: {
29
+ class: :edit_page,
30
+ id: 'page-form',
31
+ method: :put,
32
+ multipart: true
33
+ },
34
+ builder: PagesCore::FormBuilder
35
+ ) do |f| %>
36
+
37
+ <div class="hiddenOptions">
38
+ <%= render partial: 'edit_options', locals: {f: f} %>
39
+ </div>
40
+
41
+ <%# #### CONTENT #### %>
42
+ <%= content_tab "Content" do %>
43
+ <%= render partial: 'edit_content', locals: {f: f} %>
44
+ <% end %>
45
+
46
+ <%# #### IMAGES #### %>
47
+ <% if @page.template_config.value(:images) || @page.template_config.value(:image) %>
48
+ <%= content_tab "Images" do %>
49
+ <%= render partial: 'edit_images', locals: {f: f} %>
50
+ <% end %>
51
+ <% end %>
52
+
53
+
54
+ <%# #### FILES #### %>
55
+ <% if @page.template_config.value(:files) %>
56
+ <%= content_tab "Files" do %>
57
+ <% if @page.files.any? %>
58
+ <ul class="filelist" data-url="<%= reorder_admin_page_files_url(@locale, @page) %>">
59
+ <% @page.files.each do |file| %>
60
+ <li data-file-id="<%= file.id %>">
61
+ <span class="actions">
62
+ <%= link_to "Delete", admin_page_file_path(@locale, @page, file), class: :delete, method: :delete, data: {confirm: 'Are you sure? There is no undo.'} %>
63
+ </span>
64
+ <div class="drag_handle"></div>
65
+ <strong><%= file.name %></strong> &ndash; <%= link_to file.filename, page_file_path(@locale, @page, file) %>
66
+ </li>
67
+ <% end %>
68
+ </ul>
69
+ <% else %>
70
+ <p>No files added yet.</p>
71
+ <% end %>
72
+ <p>
73
+ <button type="button" class="upload-file-button">
74
+ Upload file
75
+ </button>
76
+ </p>
77
+ <% end %>
78
+ <% end %>
79
+
80
+
81
+ <%# #### COMMENTS #### %>
82
+ <% if @page.template_config.value(:comments) %>
83
+ <% if @page.comments.count > 0 %>
84
+ <%= content_tab "Comments" do %>
85
+ <%= render partial: 'edit_comments', locals: {f: f} %>
86
+ <% end %>
87
+ <% else %>
88
+ <%= content_tab "Comments", {disabled: true} do %>
89
+ <p>No comments added.</p>
90
+ <% end %>
91
+ <% end %>
92
+ <% end %>
93
+
94
+
95
+ <%# #### METADATA #### %>
96
+ <%= content_tab "Metadata" do %>
97
+ <%= render partial: 'edit_metadata', locals: {f: f} %>
98
+ <% end %>
99
+
100
+ <div class="buttons">
101
+ <button type="button" id="previewButton" data-url="<%= preview_page_url(@page.locale, @page) %>">
102
+ Preview
103
+ </button>
104
+ <button type="submit">
105
+ Save
106
+ </button>
107
+ </div>
108
+
109
+ <% end %>
110
+
111
+ <%# #### UPLOAD IMAGE #### %>
112
+ <div id="new-image">
113
+ <h2>Upload images</h2>
114
+ <%= form_for(@page.page_images.new, url: admin_page_images_url(@locale, @page), html: {multipart: true}) do |f| %>
115
+
116
+ <table>
117
+ <tr>
118
+ <th>File</th>
119
+ <th>Caption</th>
120
+ </tr>
121
+ <% 10.times do |i| %>
122
+ <tr class="">
123
+ <td>
124
+ <%= file_field_tag("page_images[#{i}][image]") %>
125
+ </td>
126
+ <td>
127
+ <%= text_field_tag("page_images[#{i}][image_attributes][caption]", '', size: 48) %>
128
+ </td>
129
+ </tr>
130
+ <% end %>
131
+ </table>
132
+
133
+ <p>
134
+ <%= submit_tag "Upload" %> or
135
+ <%= link_to "Cancel", "#", class: "cancel clear-modal" %>
136
+ </p>
137
+ <% end %>
138
+ </div>
139
+
140
+
141
+ <%# #### UPLOAD FILE #### %>
142
+ <% if @page.template_config.value(:files) %>
143
+ <div id="new-file" class="page_new_file">
144
+ <h2>Upload new file</h2>
145
+ <%= form_for((@new_file = PageFile.new), url: admin_page_files_path(@locale, @page), html: {multipart: true}) do |f| %>
146
+ <%= labelled_field f.text_field( :name, size: 48 ), "Name",
147
+ errors: @new_file.errors[:name]
148
+ %>
149
+ <%= labelled_field f.text_field( :description, size: 48 ), "Description",
150
+ errors: @new_file.errors[:name]
151
+ %>
152
+ <%= labelled_field f.file_field( :file ), "File",
153
+ errors: @new_file.errors[:file]
154
+ %>
155
+ <p>
156
+ <%= submit_tag "Upload" %> or
157
+ <%= link_to "Cancel", "#", class: "cancel clear-modal" %>
158
+ </p>
159
+ <% end %>
160
+ </div>
161
+ <% end %>
@@ -0,0 +1,67 @@
1
+ <%
2
+ self.page_title = "Pages"
3
+ self.page_description = "Viewing pages"
4
+
5
+ if PagesCore.config.localizations?
6
+ self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n, admin_pages_path(l) }.join(link_separator)
7
+ end
8
+ %>
9
+
10
+ <% content_for :sidebar do %>
11
+ <% if policy(Page).new? %>
12
+ <h2>New page</h2>
13
+ <p>
14
+ <%= form_tag new_admin_page_path, method: :get do %>
15
+ In <%= select_tag 'parent', options_from_collection_for_select(@root_pages, 'id', 'name') %>
16
+ <%= submit_tag "Go", name: nil %>
17
+ <% end %>
18
+ </p>
19
+ <p>
20
+ You can also <%= link_to "create a new root page", new_admin_page_path(@locale) %>.
21
+ </p>
22
+ <h2>Structure</h2>
23
+ <p>
24
+ <button id="reorder_link" type="button">Reorder the pages</button>
25
+ </p>
26
+ <!-- What shall with do with a drunken sailor?
27
+ <h2>Categories</h2>
28
+ <% if @categories && @categories.length > 0 %>
29
+ <ul>
30
+ <% @categories.each do |category| %>
31
+ <li><%= category.name %> (<%= link_to "Delete", admin_category_path(category), method: :delete, class: :delete, data: {confirm: "Are you sure? There is no undo."} %>)</li>
32
+ <% end %>
33
+ </ul>
34
+ <% end %>
35
+ <div id="new-category">
36
+ <%= form_for([:admin, Category.new]) do |f| %>
37
+ <p>
38
+ <label><strong>New category</strong></label>
39
+ <%= f.text_field :name %>
40
+ <%= submit_tag "Save" %>
41
+ </p>
42
+ <% end %>
43
+ </div>
44
+ <div id="new-category-button">
45
+ <p>
46
+ <button type="button" class="toggle-category">
47
+ Add a new category
48
+ </button>
49
+ </p>
50
+ </div>
51
+ -->
52
+ <% else %>
53
+ &nbsp;
54
+ <% end %>
55
+ <% end %>
56
+
57
+ <div class="content">
58
+ <% if @root_pages.length < 1 -%>
59
+ <p>No pages found</p>
60
+ <% else -%>
61
+ <ul class="pagelist reorderable">
62
+ <% @root_pages.each do |page| -%>
63
+ <%= render partial: "pagelisting", locals: { page: page } %>
64
+ <% end -%>
65
+ </ul>
66
+ <% end -%>
67
+ </div>
@@ -0,0 +1,48 @@
1
+ <%
2
+ if @page.parent
3
+ self.page_title = "#{@page.parent.name} &raquo; New Page".html_safe
4
+ self.page_description = "<em>#{@page.parent.name}</em> &raquo; New Page"
5
+ else
6
+ self.page_title = "Create new page"
7
+ self.page_description = "You are creating a new root page"
8
+ end
9
+
10
+ @url_options = { action: :new }
11
+ @url_options[:parent] = @page.parent if @page.parent
12
+ %>
13
+
14
+ <% content_for :sidebar do %>
15
+ <%= form_for(@page,
16
+ url: admin_pages_url(@locale),
17
+ html: {class: :edit_page, id: 'page-form-sidebar'}) do |f| %>
18
+ <%= render partial: 'edit_options', locals: {f: f} %>
19
+ <% end %>
20
+ <% end %>
21
+
22
+ <%= form_for(@page,
23
+ url: admin_pages_url(@locale),
24
+ html: {
25
+ class: :edit_page,
26
+ id: 'page-form',
27
+ method: :post,
28
+ multipart: true
29
+ }
30
+ ) do |f| %>
31
+
32
+ <div class="hiddenOptions">
33
+ <%= render partial: 'edit_options', locals: {f: f} %>
34
+ </div>
35
+
36
+ <%= hidden_field_tag 'locale', @locale %>
37
+ <%= f.hidden_field 'parent_page_id' if @page.parent %>
38
+
39
+ <%# #### CONTENT #### %>
40
+ <%= content_tab "Content" do %>
41
+ <%= render partial: 'edit_content', locals: {f: f} %>
42
+ <% end %>
43
+
44
+ <p>
45
+ <%= submit_tag "Save" %>
46
+ </p>
47
+
48
+ <% end %>
@@ -0,0 +1,69 @@
1
+ <%
2
+ month_names = %w{January February March April May June July August September October November December}
3
+ self.page_title = "News"
4
+ self.page_description = "<em>#{month_names[@month - 1]} #{@year}</em>"
5
+
6
+ if PagesCore.config.localizations?
7
+ self.page_description_links = 'In ' + PagesCore.config.locales.map{ |l, n| link_to_unless_current n, news_admin_pages_path(l) }.join(link_separator)
8
+ end
9
+ %>
10
+
11
+ <% content_for :sidebar do %>
12
+ <h2>New article</h2>
13
+ <p>
14
+ <%= form_tag new_news_admin_pages_path, method: :get do %>
15
+ In <%= select_tag 'parent', options_for_select(@news_pages.map{|p| [page_name(p, include_parents: true).gsub("&raquo;", "»"), p.id] }) %>
16
+ <%= submit_tag "Go", name: nil %>
17
+ <% end %>
18
+ </p>
19
+ <% @archive_finder.years.reverse.each do |year| %>
20
+ <h2><%= year %><%= ": #{@category.name}" if @category %></h2>
21
+ <ul>
22
+ <% @archive_finder.months_in_year_with_count(year).each do |month, page_count| %>
23
+ <li><% if year == @year && month == @month %>
24
+ <strong><%= month_names[month-1] %></strong> (<%= page_count %>)</strong>
25
+ <% else %>
26
+ <%= link_to month_names[month-1], news_admin_pages_path(@locale, month: month, year: year, category: ((@category) ? @category.slug : nil)) %> (<%= page_count %>)
27
+ <% end %></li>
28
+ <% end %>
29
+ </ul>
30
+ <% end %>
31
+ <% end %>
32
+
33
+ <% if @pages.any? %>
34
+ <table class="list news_item_list">
35
+ <tr>
36
+ <th>Name</th>
37
+ <th>Published</th>
38
+ <th>Author</th>
39
+ <th>Section</th>
40
+ </tr>
41
+ <% @pages.each do |page| %><tr class="<%= [page.status_label.downcase,((page.autopublish?) ? 'autopublish' : nil), ((page.pinned?) ? 'pinned' : nil)].join(' ') %>">
42
+ <td class="name">
43
+ <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'name_link') %>
44
+ <% if page.autopublish? %>
45
+ <br /><small>This page will be published <strong><%= publish_time(page.published_at) %></strong></small>
46
+ <% end %>
47
+ </td>
48
+ <td>
49
+ <% if page.published? %>
50
+ <%= l(page.published_at, format: :short) %>
51
+ <% else %>
52
+ <% if page.status_label == 'Published' %>
53
+ <em>Not published</em>
54
+ <% else %>
55
+ <em><%= page.status_label %></em>
56
+ <% end %>
57
+ <% end %>
58
+ </td>
59
+ <td>
60
+ <%= link_to page.author.name, admin_user_path(page.author) %>
61
+ </td>
62
+ <td>
63
+ <%= link_to_if(policy(page.parent).edit?, page_name(page.parent, include_parents: true), news_admin_pages_path(section: page.parent.id)) %>
64
+ </td>
65
+ </tr><% end %>
66
+ </table>
67
+ <% else %>
68
+ <div class="content"><p>No news items have been posted yet.</p></div>
69
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <%
2
+ self.page_title = "Reset password"
3
+ self.page_description = "Please choose a new password to proceed"
4
+ add_body_class "login"
5
+ -%>
6
+
7
+ <div class="login-form">
8
+ <%= form_for(@user, url: admin_password_reset_path(@password_reset_token, token: @password_reset_token.token), class: 'form') do |f| %>
9
+ <p>
10
+ <%= f.label :password %>
11
+ <%= f.password_field :password %>
12
+ </p>
13
+ <p>
14
+ <%= f.label :confirm_password %>
15
+ <%= f.password_field :confirm_password %>
16
+ </p>
17
+ <p>
18
+ <button type="submit">
19
+ Change Password
20
+ </button>
21
+ or <%= link_to "Return to login screen", login_admin_users_path %>
22
+ </p>
23
+ <% end %>
24
+ </div>