pages_core 3.4.3 → 3.5.1

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 (215) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -15
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/pages/admin.es6.jsx +19 -0
  5. data/app/assets/javascripts/pages/admin/components.es6.jsx +1 -0
  6. data/app/assets/javascripts/pages/admin/components/page_tree.es6.jsx +330 -0
  7. data/app/assets/javascripts/pages/admin/components/page_tree_actions.es6.jsx +8 -0
  8. data/app/assets/javascripts/pages/admin/components/page_tree_node.es6.jsx +374 -0
  9. data/app/assets/javascripts/pages/admin/components/page_tree_store.es6.jsx +161 -0
  10. data/app/assets/javascripts/pages/admin/features/content_tabs.es6.jsx +63 -0
  11. data/app/assets/javascripts/pages/admin/features/edit_page.es6.jsx +141 -0
  12. data/app/assets/javascripts/pages/admin/features/editable_image.es6.jsx +145 -0
  13. data/app/assets/javascripts/pages/admin/features/modal.es6.jsx +90 -0
  14. data/app/assets/javascripts/pages/admin/features/page_images.es6.jsx +338 -0
  15. data/app/assets/javascripts/pages/admin/features/rich_text.es6.jsx +124 -0
  16. data/app/assets/javascripts/pages/admin/features/tag_editor.es6.jsx +160 -0
  17. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.es6.jsx +21 -0
  18. data/app/assets/javascripts/pages/admin/lib/center_on_screen.es6.jsx +22 -0
  19. data/app/assets/javascripts/pages/admin/lib/tree.es6.jsx +294 -0
  20. data/app/assets/javascripts/pages/login_form.es6.jsx +21 -0
  21. data/app/assets/stylesheets/pages/admin.scss +148 -0
  22. data/app/assets/stylesheets/pages/admin/components/buttons.scss +5 -0
  23. data/app/assets/stylesheets/pages/admin/{editable_image.css.erb → components/editable_image.scss} +7 -8
  24. data/app/assets/stylesheets/pages/admin/components/forms.scss +71 -0
  25. data/app/assets/stylesheets/pages/admin/components/header.scss +169 -0
  26. data/app/assets/stylesheets/pages/admin/{images.css.scss.erb → components/images.scss} +6 -11
  27. data/app/assets/stylesheets/pages/admin/components/layout.scss +44 -0
  28. data/app/assets/stylesheets/pages/admin/components/links.scss +43 -0
  29. data/app/assets/stylesheets/pages/admin/components/list_table.scss +58 -0
  30. data/app/assets/stylesheets/pages/admin/{login.css.scss.erb → components/login.scss} +1 -1
  31. data/app/assets/stylesheets/pages/admin/{modal.css.erb → components/modal.scss} +3 -2
  32. data/app/assets/stylesheets/pages/admin/components/page_tree.scss +173 -0
  33. data/app/assets/stylesheets/pages/admin/{pagination.css.scss → components/pagination.scss} +13 -4
  34. data/app/assets/stylesheets/pages/admin/components/sidebar.scss +25 -0
  35. data/app/assets/stylesheets/pages/admin/{tag_editor.css.scss.erb → components/tag_editor.scss} +6 -0
  36. data/app/assets/stylesheets/pages/admin/components/textarea.scss +76 -0
  37. data/app/assets/stylesheets/pages/admin/controllers/pages.scss +196 -0
  38. data/app/assets/stylesheets/pages/admin/controllers/{users.css.erb → users.scss} +0 -0
  39. data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +21 -0
  40. data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +7 -0
  41. data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +7 -0
  42. data/app/assets/stylesheets/pages/admin/{print.css.erb → print.scss} +0 -0
  43. data/app/assets/stylesheets/pages/admin/vars.scss +8 -0
  44. data/app/controllers/admin/invites_controller.rb +10 -6
  45. data/app/controllers/admin/page_files_controller.rb +6 -8
  46. data/app/controllers/admin/page_images_controller.rb +14 -19
  47. data/app/controllers/admin/pages_controller.rb +44 -97
  48. data/app/controllers/admin/password_resets_controller.rb +7 -2
  49. data/app/controllers/concerns/pages_core/add_comments_controller.rb +67 -0
  50. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +58 -0
  51. data/app/controllers/concerns/pages_core/authentication.rb +1 -1
  52. data/app/controllers/concerns/pages_core/exception_handler.rb +44 -21
  53. data/app/controllers/concerns/pages_core/policies_helper.rb +10 -6
  54. data/app/controllers/concerns/pages_core/preview_pages_controller.rb +43 -0
  55. data/app/controllers/concerns/pages_core/process_titler.rb +2 -2
  56. data/app/controllers/concerns/pages_core/rss_controller.rb +25 -0
  57. data/app/controllers/concerns/pages_core/search_pages_controller.rb +40 -0
  58. data/app/controllers/errors_controller.rb +14 -2
  59. data/app/controllers/pages_core/admin_controller.rb +7 -5
  60. data/app/controllers/pages_core/frontend/page_files_controller.rb +5 -7
  61. data/app/controllers/pages_core/frontend/pages_controller.rb +41 -219
  62. data/app/controllers/pages_core/frontend_controller.rb +8 -2
  63. data/app/controllers/pages_core/sitemaps_controller.rb +5 -4
  64. data/app/formatters/pages_core/html_formatter.rb +33 -23
  65. data/app/helpers/admin/menu_helper.rb +12 -9
  66. data/app/helpers/admin/pages_helper.rb +40 -28
  67. data/app/helpers/pages_core/admin/admin_helper.rb +58 -56
  68. data/app/helpers/pages_core/admin/labelled_field_helper.rb +6 -7
  69. data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -9
  70. data/app/helpers/pages_core/application_helper.rb +13 -26
  71. data/app/helpers/pages_core/form_builder.rb +71 -134
  72. data/app/helpers/pages_core/head_tags_helper.rb +26 -168
  73. data/app/helpers/pages_core/images_helper.rb +3 -3
  74. data/app/helpers/pages_core/meta_tags_helper.rb +96 -0
  75. data/app/helpers/pages_core/open_graph_tags_helper.rb +51 -0
  76. data/app/helpers/pages_core/page_path_helper.rb +40 -0
  77. data/app/mailers/admin_mailer.rb +14 -14
  78. data/app/models/autopublisher.rb +2 -2
  79. data/app/models/category.rb +8 -8
  80. data/app/models/concerns/pages_core/has_roles.rb +2 -2
  81. data/app/models/concerns/pages_core/humanizable_param.rb +5 -5
  82. data/app/models/concerns/pages_core/page_model/autopublishable.rb +25 -0
  83. data/app/models/concerns/pages_core/page_model/commentable.rb +29 -0
  84. data/app/models/concerns/pages_core/page_model/images.rb +50 -0
  85. data/app/models/concerns/pages_core/page_model/localizable.rb +29 -0
  86. data/app/models/concerns/pages_core/page_model/pathable.rb +115 -0
  87. data/app/models/concerns/pages_core/page_model/redirectable.rb +36 -0
  88. data/app/models/concerns/pages_core/page_model/searchable.rb +41 -0
  89. data/app/models/concerns/pages_core/page_model/sortable.rb +54 -0
  90. data/app/models/concerns/pages_core/page_model/status.rb +50 -0
  91. data/app/models/concerns/pages_core/page_model/templateable.rb +82 -0
  92. data/app/models/concerns/pages_core/page_model/tree.rb +108 -0
  93. data/app/models/page.rb +30 -212
  94. data/app/models/page_builder.rb +4 -6
  95. data/app/models/page_category.rb +7 -0
  96. data/app/models/page_comment.rb +1 -1
  97. data/app/models/page_file.rb +4 -6
  98. data/app/models/page_image.rb +6 -7
  99. data/app/models/page_path.rb +46 -0
  100. data/app/models/password_reset_token.rb +5 -5
  101. data/app/models/role.rb +1 -1
  102. data/app/models/tag.rb +14 -16
  103. data/app/models/tagging.rb +2 -1
  104. data/app/models/user.rb +6 -7
  105. data/app/policies/page_policy.rb +8 -4
  106. data/app/policies/user_policy.rb +1 -1
  107. data/app/serializers/page_tree_serializer.rb +15 -0
  108. data/app/views/admin/invites/new.html.erb +2 -1
  109. data/app/views/admin/invites/show.html.erb +3 -4
  110. data/app/views/admin/pages/_edit_comments.html.erb +22 -6
  111. data/app/views/admin/pages/_edit_content.html.erb +4 -2
  112. data/app/views/admin/pages/_edit_images.html.erb +86 -75
  113. data/app/views/admin/pages/_edit_metadata.html.erb +22 -0
  114. data/app/views/admin/pages/_edit_options.html.erb +23 -15
  115. data/app/views/admin/pages/_pagelisting.html.erb +6 -6
  116. data/app/views/admin/pages/edit.html.erb +11 -6
  117. data/app/views/admin/pages/index.html.erb +12 -53
  118. data/app/views/admin/pages/new.html.erb +3 -3
  119. data/app/views/admin/pages/news.html.erb +1 -1
  120. data/app/views/admin_mailer/invite.text.erb +1 -1
  121. data/app/views/admin_mailer/password_reset.text.erb +1 -1
  122. data/app/views/errors/422.html.erb +7 -0
  123. data/app/views/errors/500_critical.html.erb +1 -1
  124. data/app/views/layouts/admin.html.erb +36 -32
  125. data/app/views/layouts/admin/_header.html.erb +2 -2
  126. data/config/locales/en.yml +38 -1
  127. data/config/routes.rb +40 -23
  128. data/db/migrate/20111219033112_create_pages_tables.rb +25 -29
  129. data/db/migrate/20121010055412_drop_removed_tables.rb +3 -3
  130. data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -13
  131. data/db/migrate/20140203183900_create_roles.rb +5 -2
  132. data/db/migrate/20140920231700_convert_images_to_dis.rb +4 -2
  133. data/db/migrate/20150401131300_localize_images.rb +7 -8
  134. data/db/migrate/20151002174800_create_page_paths.rb +10 -0
  135. data/db/migrate/20151021103400_drop_binaries_table.rb +7 -0
  136. data/db/migrate/20151204151000_remove_page_content_order.rb +5 -0
  137. data/db/migrate/20160330220900_rename_pages_categories.rb +6 -0
  138. data/db/migrate/20160405202700_change_localization_limit.rb +9 -0
  139. data/lib/pages_core.rb +22 -27
  140. data/lib/pages_core/admin_menu_item.rb +16 -3
  141. data/lib/pages_core/archive_finder.rb +40 -13
  142. data/lib/pages_core/cache_sweeper.rb +72 -45
  143. data/lib/pages_core/configuration.rb +2 -2
  144. data/lib/pages_core/configuration/base.rb +4 -8
  145. data/lib/pages_core/configuration/pages.rb +6 -3
  146. data/lib/pages_core/engine.rb +23 -1
  147. data/lib/pages_core/extensions.rb +2 -2
  148. data/lib/pages_core/file_embedder.rb +40 -0
  149. data/lib/pages_core/page_path_constraint.rb +23 -0
  150. data/lib/pages_core/pages_plugin.rb +11 -0
  151. data/lib/pages_core/paginates.rb +3 -3
  152. data/lib/pages_core/plugin.rb +14 -8
  153. data/lib/pages_core/templates.rb +6 -6
  154. data/lib/pages_core/templates/block_configuration.rb +1 -1
  155. data/lib/pages_core/templates/configuration.rb +23 -24
  156. data/lib/pages_core/templates/configuration_handler.rb +1 -1
  157. data/lib/pages_core/templates/configuration_proxy.rb +7 -11
  158. data/lib/pages_core/templates/template_configuration.rb +55 -61
  159. data/lib/pages_core/version.rb +1 -1
  160. data/lib/rails/generators/pages_core/install/install_generator.rb +22 -48
  161. data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +1 -1
  162. data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +6 -3
  163. data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +4 -1
  164. data/lib/rails/generators/pages_core/rspec/templates/factories.rb +1 -1
  165. data/lib/tasks/pages.rake +4 -4
  166. data/lib/tasks/pages/page_paths.rake +12 -0
  167. data/template.rb +2 -2
  168. data/vendor/assets/javascripts/reflux.min.js +1 -0
  169. metadata +173 -85
  170. data/app/assets/images/pages/admin/description-bg.gif +0 -0
  171. data/app/assets/images/pages/admin/drag-handle.gif +0 -0
  172. data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
  173. data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
  174. data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
  175. data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
  176. data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
  177. data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
  178. data/app/assets/javascripts/pages/admin.js.coffee +0 -54
  179. data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +0 -4
  180. data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +0 -139
  181. data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +0 -9
  182. data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +0 -47
  183. data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +0 -122
  184. data/app/assets/javascripts/pages/admin/features/modal.js.coffee +0 -66
  185. data/app/assets/javascripts/pages/admin/features/page_images.js +0 -329
  186. data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +0 -40
  187. data/app/assets/javascripts/pages/admin/features/tag_editor.js +0 -159
  188. data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +0 -17
  189. data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +0 -21
  190. data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +0 -57
  191. data/app/assets/javascripts/pages/login_form.js.coffee +0 -17
  192. data/app/assets/stylesheets/pages/admin.css.erb +0 -404
  193. data/app/assets/stylesheets/pages/admin/buttons.css.erb +0 -5
  194. data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +0 -94
  195. data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +0 -58
  196. data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +0 -178
  197. data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +0 -73
  198. data/app/assets/stylesheets/pages/admin/header.css.erb +0 -129
  199. data/app/assets/stylesheets/pages/admin/links.css.erb +0 -34
  200. data/app/assets/stylesheets/pages/admin/list_table.css.erb +0 -56
  201. data/app/assets/stylesheets/pages/admin/sidebar.css.erb +0 -39
  202. data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +0 -18
  203. data/app/assets/stylesheets/pages/admin/textarea.css.erb +0 -55
  204. data/app/models/concerns/pages_core/page_tree.rb +0 -85
  205. data/app/models/concerns/pages_core/searchable_page.rb +0 -33
  206. data/app/models/concerns/pages_core/templateable.rb +0 -85
  207. data/app/models/localization.rb +0 -27
  208. data/db/migrate/20140515130100_remove_sphinx_deltas.rb +0 -15
  209. data/lib/pages_core/localizable.rb +0 -49
  210. data/lib/pages_core/localizable/active_record_extension.rb +0 -41
  211. data/lib/pages_core/localizable/class_methods.rb +0 -51
  212. data/lib/pages_core/localizable/configuration.rb +0 -50
  213. data/lib/pages_core/localizable/instance_methods.rb +0 -130
  214. data/lib/pages_core/localizable/localizer.rb +0 -72
  215. data/lib/pages_core/localizable/scope_extension.rb +0 -22
@@ -1,3 +1,25 @@
1
+ <div class="field">
2
+ <% if f.object.pathable? %>
3
+ <%= labelled_field(f.text_field(:path_segment),
4
+ "Path segment",
5
+ description: "Only alpanumeric characters and dashes " \
6
+ "are allowed.") %>
7
+ <% else %>
8
+ <div class="field">
9
+ <label>Path segment</label>
10
+ <p class="description">
11
+ Unable to add a path segment,
12
+ please add one to
13
+ <%= link_to("this page's parent",
14
+ edit_admin_page_path(f.object.parent,
15
+ locale: f.object.locale,
16
+ anchor: "metadata")) %>
17
+ first.
18
+ </p>
19
+ </div>
20
+ <% end %>
21
+ </div>
22
+
1
23
  <div class="field">
2
24
  <%= f.label_for :meta_image, "Image" %>
3
25
  <p class="description">
@@ -1,7 +1,7 @@
1
- <%= labelled_field f.select(:status, Page.status_labels.invert), "Status",
2
- errors: @page.errors[:status]
3
- %>
4
- <div class="published_date">
1
+ <%= labelled_field(f.select(:status, Page.status_labels.invert),
2
+ "Status",
3
+ errors: @page.errors[:status]) %>
4
+ <div class="published-date">
5
5
  <%= labelled_field (
6
6
  f.date_select(
7
7
  :published_at,
@@ -14,11 +14,13 @@
14
14
  "Date",
15
15
  errors: @page.errors[:published_at]
16
16
  %>
17
- <p class="autopublish_notice">This page will publish later</p>
17
+ <p class="autopublish-notice">
18
+ This page will publish later
19
+ </p>
18
20
  </div>
19
21
 
20
22
  <%= labelled_field (
21
- f.select(:user_id, @authors.map{|a| [a.name, a.id]})
23
+ f.select(:user_id, page_authors(@page).map{|a| [a.name, a.id]})
22
24
  ),
23
25
  "Author",
24
26
  errors: @page.errors[:user_id]
@@ -26,8 +28,11 @@
26
28
 
27
29
  <% if @page.parent && @page.parent.news_page? %>
28
30
  <div class="field">
29
- <label>Pin to top</label>
30
- <%= f.check_box(:pinned) %> Make post featured<br />
31
+ <label>
32
+ Pin to top
33
+ </label>
34
+ <%= f.check_box(:pinned) %>
35
+ Make post featured<br />
31
36
  </div>
32
37
  <% end %>
33
38
 
@@ -35,22 +40,24 @@
35
40
  <div class="field">
36
41
  <label>Categories</label>
37
42
  <% @categories.each do |category| %>
38
- <%= check_box_tag "category[#{category.id}]", "1", (@page.categories.map{|c| c.id}.include?(category.id) ? true : false) %>
43
+ <%= check_box_tag("category[#{category.id}]",
44
+ "1",
45
+ @page.categories.map { |c| c.id }.include?(category.id)) %>
39
46
  <%= category.name %><br />
40
47
  <% end %>
41
48
  </div>
42
49
  <% end %>
43
50
 
44
- <%= labelled_field f.select( :template, available_templates_for_select ), "Template", errors: @page.errors[:template] %>
45
-
51
+ <%= labelled_field(f.select(:template, available_templates_for_select),
52
+ "Template",
53
+ errors: @page.errors[:template]) %>
46
54
 
47
- <%= link_to "Advanced options", "#", class: "advanced_toggle" %>
55
+ <%= link_to "Advanced options", "#", class: "advanced-toggle" %>
48
56
 
49
- <div class="advanced_options">
57
+ <div class="advanced-options">
50
58
 
51
59
  <div class="field">
52
60
  <label>Subpages</label>
53
- Sort <%= f.select(:content_order, [ ['manually','position'], ['with the newest first','published_at DESC'] ] ) %><br />
54
61
  <%= f.check_box(:feed_enabled) %> RSS feed enabled<br />
55
62
  <%= f.check_box(:news_page) %> Show in News<br />
56
63
  </div>
@@ -67,6 +74,7 @@
67
74
  <% if @page.id? && @page.name? %>
68
75
  <div class="field">
69
76
  <label>Page link</label>
70
- <%= page_link @page %>
77
+ <%= link_to(page_path(@page.locale, @page),
78
+ page_path(@page.locale, @page)) %>
71
79
  </div>
72
80
  <% end %>
@@ -4,20 +4,20 @@
4
4
  else
5
5
  subpages = page.children.visible.in_locale(page.locale).order(page.content_order)
6
6
  end
7
- page_classes = ['page', 'page_listing']
7
+ page_classes = ['page', 'page-listing']
8
8
  page_classes << 'hidden' unless page.published?
9
- page_classes << 'page_without_locale' unless page.name?
9
+ page_classes << 'page-without-locale' unless page.name?
10
10
  -%>
11
11
  <li page_id="<%= page.id %>">
12
12
  <% if page.reorderable? %>
13
- <div class="drag_handle">
13
+ <div class="drag-handle">
14
14
  </div>
15
15
  <% end %>
16
16
  <div class="<%= page_classes.join(' ') %>" id="pagelisting_<%= page.id %>">
17
17
  <% if page.published? %>
18
- <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page_name') %>
18
+ <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page-name') %>
19
19
  <% else %>
20
- <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page_name') %>
20
+ <%= link_to_if(policy(page).edit?, page_name(page), edit_admin_page_url(@locale, page), class: 'page-name') %>
21
21
  <small class="status">
22
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
23
  </small>
@@ -43,7 +43,7 @@
43
43
  </div>
44
44
  <% if page.news_page? %>
45
45
  <ul>
46
- <li><div class="page_listing">
46
+ <li><div class="page-listing">
47
47
  <em>(<%= page.children.visible.count %> items)</em>
48
48
  <div class="actions">
49
49
  <% if policy(Page).new? %>
@@ -14,7 +14,7 @@
14
14
  <% content_for :sidebar do %>
15
15
  <%= form_for(@page,
16
16
  url: admin_page_url(@locale, @page),
17
- html: {class: :edit_page, id: 'page-form-sidebar'}) do |f| %>
17
+ html: {class: "edit-page", id: 'page-form-sidebar'}) do |f| %>
18
18
  <%= render partial: 'edit_options', locals: {f: f} %>
19
19
  <% end %>
20
20
  <% end %>
@@ -26,7 +26,7 @@
26
26
  <%= form_for(@page,
27
27
  url: admin_page_url(@locale, @page),
28
28
  html: {
29
- class: :edit_page,
29
+ class: "edit-page",
30
30
  id: 'page-form',
31
31
  method: :put,
32
32
  multipart: true
@@ -34,7 +34,7 @@
34
34
  builder: PagesCore::FormBuilder
35
35
  ) do |f| %>
36
36
 
37
- <div class="hiddenOptions">
37
+ <div class="hidden-options">
38
38
  <%= render partial: 'edit_options', locals: {f: f} %>
39
39
  </div>
40
40
 
@@ -55,13 +55,16 @@
55
55
  <% if @page.template_config.value(:files) %>
56
56
  <%= content_tab "Files" do %>
57
57
  <% if @page.files.any? %>
58
- <ul class="filelist" data-url="<%= reorder_admin_page_files_url(@locale, @page) %>">
58
+ <ul class="file-list" data-url="<%= reorder_admin_page_files_url(@locale, @page) %>">
59
59
  <% @page.files.each do |file| %>
60
60
  <li data-file-id="<%= file.id %>">
61
61
  <span class="actions">
62
+ <span class="embed-code">
63
+ <%= file_embed_code(file) %>
64
+ </span>
62
65
  <%= link_to "Delete", admin_page_file_path(@locale, @page, file), class: :delete, method: :delete, data: {confirm: 'Are you sure? There is no undo.'} %>
63
66
  </span>
64
- <div class="drag_handle"></div>
67
+ <div class="drag-handle"></div>
65
68
  <strong><%= file.name %></strong> &ndash; <%= link_to file.filename, page_file_path(@locale, @page, file) %>
66
69
  </li>
67
70
  <% end %>
@@ -142,7 +145,9 @@
142
145
  <% if @page.template_config.value(:files) %>
143
146
  <div id="new-file" class="page_new_file">
144
147
  <h2>Upload new file</h2>
145
- <%= form_for((@new_file = PageFile.new), url: admin_page_files_path(@locale, @page), html: {multipart: true}) do |f| %>
148
+ <%= form_for((@new_file = PageFile.new),
149
+ url: admin_page_files_path(@locale, @page),
150
+ html: {multipart: true}) do |f| %>
146
151
  <%= labelled_field f.text_field( :name, size: 48 ), "Name",
147
152
  errors: @new_file.errors[:name]
148
153
  %>
@@ -8,60 +8,19 @@
8
8
  %>
9
9
 
10
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
11
  <% end %>
56
12
 
57
13
  <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 -%>
14
+ <%= react_component(
15
+ "PageTree", {
16
+ tree: {
17
+ name: "All Pages",
18
+ locale: @locale,
19
+ children: ActiveModel::ArraySerializer.new(
20
+ @root_pages,
21
+ each_serializer: PageTreeSerializer
22
+ )
23
+ }
24
+ }
25
+ ) %>
67
26
  </div>
@@ -14,7 +14,7 @@
14
14
  <% content_for :sidebar do %>
15
15
  <%= form_for(@page,
16
16
  url: admin_pages_url(@locale),
17
- html: {class: :edit_page, id: 'page-form-sidebar'}) do |f| %>
17
+ html: {class: "edit-page", id: 'page-form-sidebar'}) do |f| %>
18
18
  <%= render partial: 'edit_options', locals: {f: f} %>
19
19
  <% end %>
20
20
  <% end %>
@@ -22,14 +22,14 @@
22
22
  <%= form_for(@page,
23
23
  url: admin_pages_url(@locale),
24
24
  html: {
25
- class: :edit_page,
25
+ class: "edit-page",
26
26
  id: 'page-form',
27
27
  method: :post,
28
28
  multipart: true
29
29
  }
30
30
  ) do |f| %>
31
31
 
32
- <div class="hiddenOptions">
32
+ <div class="hidden-options">
33
33
  <%= render partial: 'edit_options', locals: {f: f} %>
34
34
  </div>
35
35
 
@@ -31,7 +31,7 @@
31
31
  <% end %>
32
32
 
33
33
  <% if @pages.any? %>
34
- <table class="list news_item_list">
34
+ <table class="list news-item-list">
35
35
  <tr>
36
36
  <th>Name</th>
37
37
  <th>Published</th>
@@ -6,4 +6,4 @@ Click the link below to create your account and get started.
6
6
 
7
7
  <%= @url %>
8
8
 
9
- If you have any further trouble, please don't hesitate in contacting us by sending us an email at support@manualdesign.no (or simply by replying to this message).
9
+ If you have any further trouble, please don't hesitate in contacting us by sending us an email at support@kord.no (or simply by replying to this message).
@@ -10,4 +10,4 @@ This will take you to a web page where you can set a new password of your choosi
10
10
 
11
11
  If you do not want to change your password, please ignore this email.
12
12
 
13
- If you have any further trouble, please don't hesitate in contacting us by sending us an email at support@manualdesign.no (or simply by replying to this message).
13
+ If you have any further trouble, please don't hesitate in contacting us by sending us an email at support@kord.no (or simply by replying to this message).
@@ -0,0 +1,7 @@
1
+ <% @page_title = "422: Unacceptable" %>
2
+ <p>
3
+ The change you wanted was rejected.
4
+ Maybe you tried to change something you didn't have access to.
5
+ </p>
6
+
7
+ <%= render partial: 'errors/generic_help' %>
@@ -3,5 +3,5 @@
3
3
  %>
4
4
  <p>
5
5
  Something went terribly wrong. Of course, this shouldn't happen, and we'd really appreciate it if you
6
- could notify us at <a href="mailto:support@manualdesign.no">support@manualdesign.no</a>.
6
+ could notify us at <a href="mailto:support@kord.no">support@kord.no</a>.
7
7
  </p>
@@ -31,49 +31,53 @@
31
31
  <%= csrf_meta_tag %>
32
32
  </head>
33
33
 
34
- <body class="<%= body_classes %>"
34
+ <body class="<%= body_classes.join(" ") %>"
35
35
  data-controller="<%= controller.class.to_s %>"
36
36
  data-action="<%= controller.action_name %>"
37
37
  data-locale="<%= @locale %>">
38
38
 
39
- <%= render partial: "layouts/admin/header" %>
39
+ <div class="wrapper">
40
40
 
41
- <% if content_for?(:sidebar) %>
42
- <div id="sidebar">
43
- <%= content_for(:sidebar) %>
44
- </div>
45
- <% end %>
41
+ <%= render partial: "layouts/admin/header" %>
46
42
 
47
- <div id="main">
48
- <% if @page_description || @content_tabs %>
49
- <div id="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
50
- <% if @page_description_links -%>
51
- <div class="links">
52
- <%= @page_description_links.html_safe %>
53
- </div>
54
- <% end %>
55
- <h3>
56
- <%= (@page_description || @page_title).html_safe %>
57
- </h3>
58
- <% if @content_tabs %>
59
- <ul id="content-tabs">
60
- <% @content_tabs.map do |t| %>
61
- <li id="content-tab-link-<%= t[:key] %>" data-tab-name="<%= t[:key] %>">
62
- <% if t[:options][:disabled] == true %>
63
- <%= t[:name] %>
64
- <% else %>
65
- <%= link_to(t[:name], anchor: "#{t[:key]}") %>
43
+ <div class="main-wrapper">
44
+ <main>
45
+ <% if @page_description || @content_tabs %>
46
+ <div id="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
47
+ <% if @page_description_links -%>
48
+ <div class="links">
49
+ <%= @page_description_links.html_safe %>
50
+ </div>
51
+ <% end %>
52
+ <h3>
53
+ <%= (@page_description || @page_title).html_safe %>
54
+ </h3>
55
+ <% if @content_tabs %>
56
+ <ul id="content-tabs">
57
+ <% @content_tabs.map do |t| %>
58
+ <li id="content-tab-link-<%= t[:key] %>" data-tab-name="<%= t[:key] %>">
59
+ <% if t[:options][:disabled] == true %>
60
+ <%= t[:name] %>
61
+ <% else %>
62
+ <%= link_to(t[:name], anchor: "#{t[:key]}") %>
63
+ <% end %>
64
+ </li>
66
65
  <% end %>
67
- </li>
66
+ </ul>
68
67
  <% end %>
69
- </ul>
68
+ </div>
70
69
  <% end %>
71
- </div>
72
- <% end %>
73
70
 
74
- <%= yield %>
75
- </div>
71
+ <%= yield %>
72
+ </main>
76
73
 
74
+ <% if content_for?(:sidebar) %>
75
+ <aside class="sidebar">
76
+ <%= content_for(:sidebar) %>
77
+ </aside>
78
+ <% end %>
79
+ </div>
80
+ </div>
77
81
  <%= render partial: "layouts/admin/analytics" %>
78
82
  </body>
79
83
  </html>
@@ -1,4 +1,4 @@
1
- <div id="header">
1
+ <header>
2
2
  <div id="logo">
3
3
  <%= link_to image_tag("pages/admin/icon.png"), '/admin' %>
4
4
  </div>
@@ -22,7 +22,7 @@
22
22
  <%= header_tabs(:account) %>
23
23
  <% end -%>
24
24
  </div>
25
- </div>
25
+ </header>
26
26
 
27
27
  <% if flash[:error] %>
28
28
  <div id="flash-error">
@@ -3,4 +3,41 @@ en:
3
3
  attributes:
4
4
  user:
5
5
  email: Email address
6
- image: Profile picture
6
+ image: Profile picture
7
+ templates:
8
+ default:
9
+ blocks:
10
+ name:
11
+ name: Name
12
+ description: "This is the name of the page, and it will also be the
13
+ name of the link to this page."
14
+ body:
15
+ name: Body
16
+ description: ""
17
+ headline:
18
+ name: Headline
19
+ description: "Optional, use if the headline should differ from the
20
+ page name."
21
+ excerpt:
22
+ name: Standfirst
23
+ description: An introductory paragraph before the start of the body.
24
+ boxout:
25
+ name: Boxout
26
+ description: "Part of the page, usually background info or facts
27
+ related to the article."
28
+ meta_title:
29
+ name: Title
30
+ description: "Document title. Will fall back to the page name if
31
+ empty. Recommended length: Up to 56 characters."
32
+ meta_description:
33
+ name: Description
34
+ description: "Description for search engines. Will fall back to
35
+ Standfirst if empty. Recommended length: Up to 156 characters."
36
+ open_graph_title:
37
+ name: Open Graph Title
38
+ description: "Page title for Facebook sharing. Will fall back to the
39
+ document title."
40
+ open_graph_description:
41
+ name: Open Graph Description
42
+ description: "Description for Facebook sharing. Will fall back to
43
+ Description or Standfirst if empty."