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.
- checksums.yaml +4 -4
- data/README.md +81 -15
- data/Rakefile +1 -1
- data/app/assets/javascripts/pages/admin.es6.jsx +19 -0
- data/app/assets/javascripts/pages/admin/components.es6.jsx +1 -0
- data/app/assets/javascripts/pages/admin/components/page_tree.es6.jsx +330 -0
- data/app/assets/javascripts/pages/admin/components/page_tree_actions.es6.jsx +8 -0
- data/app/assets/javascripts/pages/admin/components/page_tree_node.es6.jsx +374 -0
- data/app/assets/javascripts/pages/admin/components/page_tree_store.es6.jsx +161 -0
- data/app/assets/javascripts/pages/admin/features/content_tabs.es6.jsx +63 -0
- data/app/assets/javascripts/pages/admin/features/edit_page.es6.jsx +141 -0
- data/app/assets/javascripts/pages/admin/features/editable_image.es6.jsx +145 -0
- data/app/assets/javascripts/pages/admin/features/modal.es6.jsx +90 -0
- data/app/assets/javascripts/pages/admin/features/page_images.es6.jsx +338 -0
- data/app/assets/javascripts/pages/admin/features/rich_text.es6.jsx +124 -0
- data/app/assets/javascripts/pages/admin/features/tag_editor.es6.jsx +160 -0
- data/app/assets/javascripts/pages/admin/lib/ajax_extensions.es6.jsx +21 -0
- data/app/assets/javascripts/pages/admin/lib/center_on_screen.es6.jsx +22 -0
- data/app/assets/javascripts/pages/admin/lib/tree.es6.jsx +294 -0
- data/app/assets/javascripts/pages/login_form.es6.jsx +21 -0
- data/app/assets/stylesheets/pages/admin.scss +148 -0
- data/app/assets/stylesheets/pages/admin/components/buttons.scss +5 -0
- data/app/assets/stylesheets/pages/admin/{editable_image.css.erb → components/editable_image.scss} +7 -8
- data/app/assets/stylesheets/pages/admin/components/forms.scss +71 -0
- data/app/assets/stylesheets/pages/admin/components/header.scss +169 -0
- data/app/assets/stylesheets/pages/admin/{images.css.scss.erb → components/images.scss} +6 -11
- data/app/assets/stylesheets/pages/admin/components/layout.scss +44 -0
- data/app/assets/stylesheets/pages/admin/components/links.scss +43 -0
- data/app/assets/stylesheets/pages/admin/components/list_table.scss +58 -0
- data/app/assets/stylesheets/pages/admin/{login.css.scss.erb → components/login.scss} +1 -1
- data/app/assets/stylesheets/pages/admin/{modal.css.erb → components/modal.scss} +3 -2
- data/app/assets/stylesheets/pages/admin/components/page_tree.scss +173 -0
- data/app/assets/stylesheets/pages/admin/{pagination.css.scss → components/pagination.scss} +13 -4
- data/app/assets/stylesheets/pages/admin/components/sidebar.scss +25 -0
- data/app/assets/stylesheets/pages/admin/{tag_editor.css.scss.erb → components/tag_editor.scss} +6 -0
- data/app/assets/stylesheets/pages/admin/components/textarea.scss +76 -0
- data/app/assets/stylesheets/pages/admin/controllers/pages.scss +196 -0
- data/app/assets/stylesheets/pages/admin/controllers/{users.css.erb → users.scss} +0 -0
- data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +21 -0
- data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +7 -0
- data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +7 -0
- data/app/assets/stylesheets/pages/admin/{print.css.erb → print.scss} +0 -0
- data/app/assets/stylesheets/pages/admin/vars.scss +8 -0
- data/app/controllers/admin/invites_controller.rb +10 -6
- data/app/controllers/admin/page_files_controller.rb +6 -8
- data/app/controllers/admin/page_images_controller.rb +14 -19
- data/app/controllers/admin/pages_controller.rb +44 -97
- data/app/controllers/admin/password_resets_controller.rb +7 -2
- data/app/controllers/concerns/pages_core/add_comments_controller.rb +67 -0
- data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +58 -0
- data/app/controllers/concerns/pages_core/authentication.rb +1 -1
- data/app/controllers/concerns/pages_core/exception_handler.rb +44 -21
- data/app/controllers/concerns/pages_core/policies_helper.rb +10 -6
- data/app/controllers/concerns/pages_core/preview_pages_controller.rb +43 -0
- data/app/controllers/concerns/pages_core/process_titler.rb +2 -2
- data/app/controllers/concerns/pages_core/rss_controller.rb +25 -0
- data/app/controllers/concerns/pages_core/search_pages_controller.rb +40 -0
- data/app/controllers/errors_controller.rb +14 -2
- data/app/controllers/pages_core/admin_controller.rb +7 -5
- data/app/controllers/pages_core/frontend/page_files_controller.rb +5 -7
- data/app/controllers/pages_core/frontend/pages_controller.rb +41 -219
- data/app/controllers/pages_core/frontend_controller.rb +8 -2
- data/app/controllers/pages_core/sitemaps_controller.rb +5 -4
- data/app/formatters/pages_core/html_formatter.rb +33 -23
- data/app/helpers/admin/menu_helper.rb +12 -9
- data/app/helpers/admin/pages_helper.rb +40 -28
- data/app/helpers/pages_core/admin/admin_helper.rb +58 -56
- data/app/helpers/pages_core/admin/labelled_field_helper.rb +6 -7
- data/app/helpers/pages_core/admin/tag_editor_helper.rb +11 -9
- data/app/helpers/pages_core/application_helper.rb +13 -26
- data/app/helpers/pages_core/form_builder.rb +71 -134
- data/app/helpers/pages_core/head_tags_helper.rb +26 -168
- data/app/helpers/pages_core/images_helper.rb +3 -3
- data/app/helpers/pages_core/meta_tags_helper.rb +96 -0
- data/app/helpers/pages_core/open_graph_tags_helper.rb +51 -0
- data/app/helpers/pages_core/page_path_helper.rb +40 -0
- data/app/mailers/admin_mailer.rb +14 -14
- data/app/models/autopublisher.rb +2 -2
- data/app/models/category.rb +8 -8
- data/app/models/concerns/pages_core/has_roles.rb +2 -2
- data/app/models/concerns/pages_core/humanizable_param.rb +5 -5
- data/app/models/concerns/pages_core/page_model/autopublishable.rb +25 -0
- data/app/models/concerns/pages_core/page_model/commentable.rb +29 -0
- data/app/models/concerns/pages_core/page_model/images.rb +50 -0
- data/app/models/concerns/pages_core/page_model/localizable.rb +29 -0
- data/app/models/concerns/pages_core/page_model/pathable.rb +115 -0
- data/app/models/concerns/pages_core/page_model/redirectable.rb +36 -0
- data/app/models/concerns/pages_core/page_model/searchable.rb +41 -0
- data/app/models/concerns/pages_core/page_model/sortable.rb +54 -0
- data/app/models/concerns/pages_core/page_model/status.rb +50 -0
- data/app/models/concerns/pages_core/page_model/templateable.rb +82 -0
- data/app/models/concerns/pages_core/page_model/tree.rb +108 -0
- data/app/models/page.rb +30 -212
- data/app/models/page_builder.rb +4 -6
- data/app/models/page_category.rb +7 -0
- data/app/models/page_comment.rb +1 -1
- data/app/models/page_file.rb +4 -6
- data/app/models/page_image.rb +6 -7
- data/app/models/page_path.rb +46 -0
- data/app/models/password_reset_token.rb +5 -5
- data/app/models/role.rb +1 -1
- data/app/models/tag.rb +14 -16
- data/app/models/tagging.rb +2 -1
- data/app/models/user.rb +6 -7
- data/app/policies/page_policy.rb +8 -4
- data/app/policies/user_policy.rb +1 -1
- data/app/serializers/page_tree_serializer.rb +15 -0
- data/app/views/admin/invites/new.html.erb +2 -1
- data/app/views/admin/invites/show.html.erb +3 -4
- data/app/views/admin/pages/_edit_comments.html.erb +22 -6
- data/app/views/admin/pages/_edit_content.html.erb +4 -2
- data/app/views/admin/pages/_edit_images.html.erb +86 -75
- data/app/views/admin/pages/_edit_metadata.html.erb +22 -0
- data/app/views/admin/pages/_edit_options.html.erb +23 -15
- data/app/views/admin/pages/_pagelisting.html.erb +6 -6
- data/app/views/admin/pages/edit.html.erb +11 -6
- data/app/views/admin/pages/index.html.erb +12 -53
- data/app/views/admin/pages/new.html.erb +3 -3
- data/app/views/admin/pages/news.html.erb +1 -1
- data/app/views/admin_mailer/invite.text.erb +1 -1
- data/app/views/admin_mailer/password_reset.text.erb +1 -1
- data/app/views/errors/422.html.erb +7 -0
- data/app/views/errors/500_critical.html.erb +1 -1
- data/app/views/layouts/admin.html.erb +36 -32
- data/app/views/layouts/admin/_header.html.erb +2 -2
- data/config/locales/en.yml +38 -1
- data/config/routes.rb +40 -23
- data/db/migrate/20111219033112_create_pages_tables.rb +25 -29
- data/db/migrate/20121010055412_drop_removed_tables.rb +3 -3
- data/db/migrate/20130823133208_update_page_redirect_to.rb +0 -13
- data/db/migrate/20140203183900_create_roles.rb +5 -2
- data/db/migrate/20140920231700_convert_images_to_dis.rb +4 -2
- data/db/migrate/20150401131300_localize_images.rb +7 -8
- data/db/migrate/20151002174800_create_page_paths.rb +10 -0
- data/db/migrate/20151021103400_drop_binaries_table.rb +7 -0
- data/db/migrate/20151204151000_remove_page_content_order.rb +5 -0
- data/db/migrate/20160330220900_rename_pages_categories.rb +6 -0
- data/db/migrate/20160405202700_change_localization_limit.rb +9 -0
- data/lib/pages_core.rb +22 -27
- data/lib/pages_core/admin_menu_item.rb +16 -3
- data/lib/pages_core/archive_finder.rb +40 -13
- data/lib/pages_core/cache_sweeper.rb +72 -45
- data/lib/pages_core/configuration.rb +2 -2
- data/lib/pages_core/configuration/base.rb +4 -8
- data/lib/pages_core/configuration/pages.rb +6 -3
- data/lib/pages_core/engine.rb +23 -1
- data/lib/pages_core/extensions.rb +2 -2
- data/lib/pages_core/file_embedder.rb +40 -0
- data/lib/pages_core/page_path_constraint.rb +23 -0
- data/lib/pages_core/pages_plugin.rb +11 -0
- data/lib/pages_core/paginates.rb +3 -3
- data/lib/pages_core/plugin.rb +14 -8
- data/lib/pages_core/templates.rb +6 -6
- data/lib/pages_core/templates/block_configuration.rb +1 -1
- data/lib/pages_core/templates/configuration.rb +23 -24
- data/lib/pages_core/templates/configuration_handler.rb +1 -1
- data/lib/pages_core/templates/configuration_proxy.rb +7 -11
- data/lib/pages_core/templates/template_configuration.rb +55 -61
- data/lib/pages_core/version.rb +1 -1
- data/lib/rails/generators/pages_core/install/install_generator.rb +22 -48
- data/lib/rails/generators/pages_core/install/templates/page_templates_initializer.rb +1 -1
- data/lib/rails/generators/pages_core/install/templates/pages_initializer.rb +6 -3
- data/lib/rails/generators/pages_core/rspec/rspec_generator.rb +4 -1
- data/lib/rails/generators/pages_core/rspec/templates/factories.rb +1 -1
- data/lib/tasks/pages.rake +4 -4
- data/lib/tasks/pages/page_paths.rake +12 -0
- data/template.rb +2 -2
- data/vendor/assets/javascripts/reflux.min.js +1 -0
- metadata +173 -85
- data/app/assets/images/pages/admin/description-bg.gif +0 -0
- data/app/assets/images/pages/admin/drag-handle.gif +0 -0
- data/app/assets/images/pages/admin/flash-error-bg.gif +0 -0
- data/app/assets/images/pages/admin/formelement-bg.gif +0 -0
- data/app/assets/images/pages/admin/header-tab-current-bg.gif +0 -0
- data/app/assets/images/pages/admin/list-table-td-bg.gif +0 -0
- data/app/assets/images/pages/admin/sidebar-bg.gif +0 -0
- data/app/assets/images/pages/admin/textarea_controls.gif +0 -0
- data/app/assets/javascripts/pages/admin.js.coffee +0 -54
- data/app/assets/javascripts/pages/admin/controllers/base.js.coffee +0 -4
- data/app/assets/javascripts/pages/admin/controllers/pages_controller.js.coffee +0 -139
- data/app/assets/javascripts/pages/admin/controllers/users_controller.js.coffee +0 -9
- data/app/assets/javascripts/pages/admin/features/content_tabs.js.coffee +0 -47
- data/app/assets/javascripts/pages/admin/features/editable_image.js.coffee.erb +0 -122
- data/app/assets/javascripts/pages/admin/features/modal.js.coffee +0 -66
- data/app/assets/javascripts/pages/admin/features/page_images.js +0 -329
- data/app/assets/javascripts/pages/admin/features/rich_text.js.coffee +0 -40
- data/app/assets/javascripts/pages/admin/features/tag_editor.js +0 -159
- data/app/assets/javascripts/pages/admin/lib/ajax_extensions.js.coffee +0 -17
- data/app/assets/javascripts/pages/admin/lib/center_on_screen.js.coffee +0 -21
- data/app/assets/javascripts/pages/admin/lib/jrichtextarea.js +0 -57
- data/app/assets/javascripts/pages/login_form.js.coffee +0 -17
- data/app/assets/stylesheets/pages/admin.css.erb +0 -404
- data/app/assets/stylesheets/pages/admin/buttons.css.erb +0 -5
- data/app/assets/stylesheets/pages/admin/controllers/artists.css.erb +0 -94
- data/app/assets/stylesheets/pages/admin/controllers/files.css.erb +0 -58
- data/app/assets/stylesheets/pages/admin/controllers/pages.css.scss.erb +0 -178
- data/app/assets/stylesheets/pages/admin/forms.css.scss.erb +0 -73
- data/app/assets/stylesheets/pages/admin/header.css.erb +0 -129
- data/app/assets/stylesheets/pages/admin/links.css.erb +0 -34
- data/app/assets/stylesheets/pages/admin/list_table.css.erb +0 -56
- data/app/assets/stylesheets/pages/admin/sidebar.css.erb +0 -39
- data/app/assets/stylesheets/pages/admin/sortable_images.css.erb +0 -18
- data/app/assets/stylesheets/pages/admin/textarea.css.erb +0 -55
- data/app/models/concerns/pages_core/page_tree.rb +0 -85
- data/app/models/concerns/pages_core/searchable_page.rb +0 -33
- data/app/models/concerns/pages_core/templateable.rb +0 -85
- data/app/models/localization.rb +0 -27
- data/db/migrate/20140515130100_remove_sphinx_deltas.rb +0 -15
- data/lib/pages_core/localizable.rb +0 -49
- data/lib/pages_core/localizable/active_record_extension.rb +0 -41
- data/lib/pages_core/localizable/class_methods.rb +0 -51
- data/lib/pages_core/localizable/configuration.rb +0 -50
- data/lib/pages_core/localizable/instance_methods.rb +0 -130
- data/lib/pages_core/localizable/localizer.rb +0 -72
- 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
|
|
2
|
-
|
|
3
|
-
%>
|
|
4
|
-
<div class="
|
|
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="
|
|
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, @
|
|
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>
|
|
30
|
-
|
|
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
|
|
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
|
|
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: "
|
|
55
|
+
<%= link_to "Advanced options", "#", class: "advanced-toggle" %>
|
|
48
56
|
|
|
49
|
-
<div class="
|
|
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
|
-
<%=
|
|
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', '
|
|
7
|
+
page_classes = ['page', 'page-listing']
|
|
8
8
|
page_classes << 'hidden' unless page.published?
|
|
9
|
-
page_classes << '
|
|
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="
|
|
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: '
|
|
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: '
|
|
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="
|
|
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:
|
|
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:
|
|
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="
|
|
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="
|
|
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="
|
|
67
|
+
<div class="drag-handle"></div>
|
|
65
68
|
<strong><%= file.name %></strong> – <%= 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),
|
|
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
|
-
|
|
54
|
-
<% end %>
|
|
55
11
|
<% end %>
|
|
56
12
|
|
|
57
13
|
<div class="content">
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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:
|
|
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:
|
|
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="
|
|
32
|
+
<div class="hidden-options">
|
|
33
33
|
<%= render partial: 'edit_options', locals: {f: f} %>
|
|
34
34
|
</div>
|
|
35
35
|
|
|
@@ -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@
|
|
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@
|
|
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).
|
|
@@ -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@
|
|
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
|
-
|
|
39
|
+
<div class="wrapper">
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
<div id="sidebar">
|
|
43
|
-
<%= content_for(:sidebar) %>
|
|
44
|
-
</div>
|
|
45
|
-
<% end %>
|
|
41
|
+
<%= render partial: "layouts/admin/header" %>
|
|
46
42
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
</
|
|
66
|
+
</ul>
|
|
68
67
|
<% end %>
|
|
69
|
-
</
|
|
68
|
+
</div>
|
|
70
69
|
<% end %>
|
|
71
|
-
</div>
|
|
72
|
-
<% end %>
|
|
73
70
|
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
<
|
|
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
|
-
</
|
|
25
|
+
</header>
|
|
26
26
|
|
|
27
27
|
<% if flash[:error] %>
|
|
28
28
|
<div id="flash-error">
|
data/config/locales/en.yml
CHANGED
|
@@ -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."
|