pages_core 3.11.3 → 3.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/app/assets/builds/fonts/661557ef.ttf +0 -0
  4. data/app/assets/builds/fonts/a18fc2d2.woff2 +0 -0
  5. data/app/assets/builds/fonts/b2c7b78f.woff2 +0 -0
  6. data/app/assets/builds/fonts/ceddc204.ttf +0 -0
  7. data/app/assets/builds/pages_core/admin-dist.js +4 -3
  8. data/app/assets/builds/pages_core/admin.css +9233 -0
  9. data/app/assets/images/pages/admin/angle-down-solid.svg +1 -0
  10. data/app/assets/images/pages/admin/icon.svg +1 -0
  11. data/app/assets/stylesheets/pages_core/admin/components/archive.css +6 -0
  12. data/app/assets/stylesheets/{pages/admin/components/attachments.scss → pages_core/admin/components/attachments.css} +35 -28
  13. data/app/assets/stylesheets/{pages/admin.scss → pages_core/admin/components/base.css} +125 -143
  14. data/app/assets/stylesheets/pages_core/admin/components/forms.css +223 -0
  15. data/app/assets/stylesheets/{pages/admin/components/header.scss → pages_core/admin/components/header.css} +78 -48
  16. data/app/assets/stylesheets/{pages/admin/components/image_editor.scss → pages_core/admin/components/image_editor.css} +42 -31
  17. data/app/assets/stylesheets/{pages/admin/components/image_grid.scss → pages_core/admin/components/image_grid.css} +76 -64
  18. data/app/assets/stylesheets/{pages/admin/components/image_uploader.scss → pages_core/admin/components/image_uploader.css} +12 -12
  19. data/app/assets/stylesheets/{pages/admin/components/layout.scss → pages_core/admin/components/layout.css} +13 -9
  20. data/app/assets/stylesheets/pages_core/admin/components/links.css +40 -0
  21. data/app/assets/stylesheets/pages_core/admin/components/list_table.css +66 -0
  22. data/app/assets/stylesheets/{pages/admin/components/login.scss → pages_core/admin/components/login.css} +6 -5
  23. data/app/assets/stylesheets/{pages/admin/components/modal.scss → pages_core/admin/components/modal.css} +10 -32
  24. data/app/assets/stylesheets/{pages/admin/components/page_tree.scss → pages_core/admin/components/page_tree.css} +54 -55
  25. data/app/assets/stylesheets/{pages/admin/components/pagination.scss → pages_core/admin/components/pagination.css} +17 -17
  26. data/app/assets/stylesheets/{pages/admin/components/sidebar.scss → pages_core/admin/components/sidebar.css} +8 -7
  27. data/app/assets/stylesheets/{pages/admin/components/tag_editor.scss → pages_core/admin/components/tag_editor.css} +10 -15
  28. data/app/assets/stylesheets/{pages/admin/components/textarea.scss → pages_core/admin/components/textarea.css} +1 -1
  29. data/app/assets/stylesheets/{pages/admin/components/toast.scss → pages_core/admin/components/toast.css} +5 -3
  30. data/app/assets/stylesheets/{pages/admin/components/toolbar.scss → pages_core/admin/components/toolbar.css} +56 -29
  31. data/app/assets/stylesheets/{pages/admin/controllers/pages.scss → pages_core/admin/controllers/pages.css} +63 -52
  32. data/app/assets/stylesheets/pages_core/admin/controllers/users.css +3 -0
  33. data/app/assets/stylesheets/pages_core/admin/vars.css +34 -0
  34. data/app/assets/stylesheets/pages_core/admin.postcss.css +9 -0
  35. data/app/controllers/admin/calendars_controller.rb +36 -0
  36. data/app/controllers/admin/categories_controller.rb +2 -2
  37. data/app/controllers/admin/news_controller.rb +58 -0
  38. data/app/controllers/admin/pages_controller.rb +2 -3
  39. data/app/controllers/admin/password_resets_controller.rb +4 -4
  40. data/app/controllers/admin/users_controller.rb +4 -4
  41. data/app/controllers/errors_controller.rb +1 -1
  42. data/app/controllers/sessions_controller.rb +1 -1
  43. data/app/formatters/pages_core/image_embedder.rb +5 -27
  44. data/app/helpers/admin/calendars_helper.rb +37 -0
  45. data/app/helpers/admin/news_helper.rb +13 -0
  46. data/app/helpers/pages_core/admin/admin_helper.rb +11 -54
  47. data/app/helpers/pages_core/admin/content_tabs_helper.rb +1 -0
  48. data/app/helpers/pages_core/admin/deprecated_admin_helper.rb +40 -0
  49. data/app/helpers/pages_core/admin/labelled_field_helper.rb +1 -1
  50. data/app/helpers/pages_core/application_helper.rb +1 -1
  51. data/app/helpers/pages_core/images_helper.rb +37 -0
  52. data/app/javascript/components/Attachments/Attachment.jsx +2 -2
  53. data/app/javascript/components/EditableImage.jsx +1 -1
  54. data/app/javascript/components/ImageCropper/Toolbar.jsx +3 -3
  55. data/app/javascript/components/PageTreeNode.jsx +9 -17
  56. data/app/javascript/components/RichTextToolbarButton.jsx +1 -1
  57. data/app/javascript/components/Toast.jsx +1 -1
  58. data/app/mailers/admin_mailer.rb +1 -0
  59. data/app/models/category.rb +1 -1
  60. data/app/models/concerns/pages_core/page_model/dated_page.rb +38 -0
  61. data/app/models/invite.rb +8 -0
  62. data/app/models/page.rb +1 -1
  63. data/app/policies/page_policy.rb +2 -6
  64. data/app/views/admin/calendars/_sidebar.html.erb +47 -0
  65. data/app/views/admin/calendars/show.html.erb +45 -0
  66. data/app/views/admin/invites/new.html.erb +2 -8
  67. data/app/views/admin/invites/show.html.erb +8 -8
  68. data/app/views/admin/news/_sidebar.html.erb +48 -0
  69. data/app/views/admin/news/index.html.erb +53 -0
  70. data/app/views/admin/pages/_list_item.html.erb +2 -1
  71. data/app/views/admin/pages/deleted.html.erb +10 -8
  72. data/app/views/admin/pages/edit.html.erb +20 -11
  73. data/app/views/admin/pages/index.html.erb +7 -8
  74. data/app/views/admin/pages/new.html.erb +10 -14
  75. data/app/views/admin/password_resets/show.html.erb +7 -7
  76. data/app/views/admin/users/deactivated.html.erb +6 -7
  77. data/app/views/admin/users/edit.html.erb +7 -9
  78. data/app/views/admin/users/index.html.erb +3 -6
  79. data/app/views/admin/users/login.html.erb +7 -8
  80. data/app/views/admin/users/new.html.erb +8 -8
  81. data/app/views/admin/users/new_password.html.erb +5 -6
  82. data/app/views/admin/users/show.html.erb +11 -9
  83. data/app/views/errors/401.html.erb +2 -1
  84. data/app/views/errors/403.html.erb +2 -1
  85. data/app/views/errors/404.html.erb +1 -3
  86. data/app/views/errors/405.html.erb +2 -1
  87. data/app/views/errors/422.html.erb +2 -1
  88. data/app/views/errors/500.html.erb +2 -3
  89. data/app/views/layouts/admin/_header.html.erb +5 -18
  90. data/app/views/layouts/admin/_page_header.html.erb +9 -7
  91. data/app/views/layouts/admin.html.erb +3 -3
  92. data/app/views/layouts/errors.html.erb +129 -6
  93. data/config/routes.rb +7 -2
  94. data/lib/pages_core/engine.rb +4 -3
  95. data/lib/pages_core/pages_plugin.rb +6 -1
  96. data/lib/pages_core.rb +0 -1
  97. data/lib/rails/generators/pages_core/install/install_generator.rb +2 -2
  98. data/lib/rails/generators/pages_core/install/templates/delayed_job +2 -3
  99. data/lib/rails/generators/pages_core/rspec/templates/rails_helper.rb +2 -2
  100. metadata +45 -199
  101. data/app/assets/images/pages/admin/icon.png +0 -0
  102. data/app/assets/images/pages/admin/image-editor-bg.png +0 -0
  103. data/app/assets/images/pages/admin/list-table-pin-blue.gif +0 -0
  104. data/app/assets/images/pages/admin/list-table-pin-disabled.gif +0 -0
  105. data/app/assets/images/pages/admin/list-table-pin-green.gif +0 -0
  106. data/app/assets/images/pages/admin/list-table-pin-red.gif +0 -0
  107. data/app/assets/images/pages/admin/list-table-pin-yellow.gif +0 -0
  108. data/app/assets/images/pages/admin/loading-modal.gif +0 -0
  109. data/app/assets/images/pages/feed-icon-14x14.png +0 -0
  110. data/app/assets/stylesheets/pages/admin/components/archive.scss +0 -6
  111. data/app/assets/stylesheets/pages/admin/components/buttons.scss +0 -23
  112. data/app/assets/stylesheets/pages/admin/components/forms.scss +0 -169
  113. data/app/assets/stylesheets/pages/admin/components/links.scss +0 -43
  114. data/app/assets/stylesheets/pages/admin/components/list_table.scss +0 -61
  115. data/app/assets/stylesheets/pages/admin/controllers/users.scss +0 -3
  116. data/app/assets/stylesheets/pages/admin/mixins/breakpoints.scss +0 -21
  117. data/app/assets/stylesheets/pages/admin/mixins/clearfix.scss +0 -7
  118. data/app/assets/stylesheets/pages/admin/mixins/gradients.scss +0 -7
  119. data/app/assets/stylesheets/pages/admin/vars.scss +0 -30
  120. data/app/assets/stylesheets/pages/errors.css +0 -128
  121. data/app/controllers/concerns/pages_core/admin/news_page_controller.rb +0 -67
  122. data/app/views/admin/pages/news.html.erb +0 -83
  123. data/vendor/assets/stylesheets/ReactCrop.css +0 -167
  124. /data/app/assets/stylesheets/{pages/admin/components/tabs.scss → pages_core/admin/components/tabs.css} +0 -0
@@ -1,8 +1,8 @@
1
1
  <header>
2
- <div id="logo">
3
- <%= link_to image_tag("pages/admin/icon.png"), '/admin' %>
2
+ <div class="logo">
3
+ <%= link_to image_tag("pages/admin/icon.svg"), '/admin' %>
4
4
  </div>
5
- <div id="site-name">
5
+ <div class="site-name">
6
6
  <h1>
7
7
  <%= link_to "Pages", "/admin" %> <%= PagesCore.config :site_name %>
8
8
  </h1>
@@ -10,28 +10,15 @@
10
10
  <% if logged_in? %>
11
11
  <div class="user">
12
12
  Hello, <%= link_to(current_user.name, admin_user_url(current_user)) %>
13
- <%= link_separator %>
14
13
  <%= link_to("Log out", session_path, method: "delete") %>
15
14
  </div>
16
15
  <% end %>
17
- <div class="tabs">
16
+ <nav class="tabs">
18
17
  <% if logged_in? %>
19
18
  <%= header_tabs(:pages) %>
20
19
  <%= header_tabs(:pages_plugins) %>
21
20
  <%= header_tabs(:custom) %>
22
21
  <%= header_tabs(:account) %>
23
22
  <% end -%>
24
- </div>
23
+ </nav>
25
24
  </header>
26
-
27
- <% if flash[:error] && false %>
28
- <div id="flash-error">
29
- <%= flash[:error] %>
30
- </div>
31
- <% end %>
32
-
33
- <% if flash[:notice] && false %>
34
- <div id="flash-notice">
35
- <%= flash[:notice] %>
36
- </div>
37
- <% end %>
@@ -1,15 +1,16 @@
1
- <% if @page_description || @content_tabs %>
2
- <div id="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
3
- <% if @page_description_links -%>
1
+ <% if content_for?(:page_description) || @content_tabs %>
2
+ <div class="page-description"<% if @content_tabs %> class="with_content_tabs"<% end %>>
3
+ <% if content_for?(:page_description_links) %>
4
4
  <div class="links">
5
- <%= @page_description_links.html_safe %>
5
+ <%= content_for(:page_description_links) %>
6
6
  </div>
7
7
  <% end %>
8
8
  <h3>
9
- <%= (@page_description || @page_title).html_safe %>
9
+ <%= content_for(:page_description) || content_for(:page_title) %>
10
10
  </h3>
11
11
  <% if @content_tabs %>
12
- <ul id="content-tabs">
12
+ <ul class="content-tabs"
13
+ role="tablist">
13
14
  <% @content_tabs.map do |t| %>
14
15
  <li id="content-tab-link-<%= t[:key] %>"
15
16
  data-tab="<%= t[:key] %>"
@@ -23,7 +24,8 @@
23
24
  data: {
24
25
  action: "click->main#changeTab",
25
26
  tab: t[:key]
26
- }) %>
27
+ },
28
+ role: "tab") %>
27
29
  <% end %>
28
30
  </li>
29
31
  <% end %>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <title>
6
- <%= [@page_title, "Pages"].reject(&:blank?).uniq.join(" - ") %>
6
+ <%= [content_for(:page_title), "Pages"].reject(&:blank?).uniq.join(" - ") %>
7
7
  </title>
8
8
 
9
9
  <link rel="shortcut icon"
@@ -13,7 +13,7 @@
13
13
  href="<%= asset_path 'pages/favicon.gif' %>"
14
14
  type="image/gif" />
15
15
 
16
- <%= stylesheet_link_tag "pages/admin" %>
16
+ <%= stylesheet_link_tag "pages_core/admin" %>
17
17
 
18
18
  <% if Dir.glob(Rails.root.join("app/assets/stylesheets/admin.*")).any? %>
19
19
  <%= stylesheet_link_tag "admin" %>
@@ -34,7 +34,7 @@
34
34
  <%= google_analytics_tags "UA-5468672-21" %>
35
35
  </head>
36
36
 
37
- <body class="<%= body_classes.join(" ") %>"
37
+ <body class="<%= content_for(:body_class) %>"
38
38
  data-controller="<%= controller.class.to_s %>"
39
39
  data-action="<%= controller.action_name %>"
40
40
  data-locale="<%= @locale %>">
@@ -5,15 +5,138 @@
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
- <title><%= @page_title || "We're sorry" %></title>
9
- <%= stylesheet_link_tag "pages/errors" %>
8
+ <title><%= content_for(:page_title) || "We're sorry" %></title>
9
+ <style>
10
+ body {
11
+ background: #fff;
12
+ background: linear-gradient(180deg, rgba(236, 236, 236, 1) 0%, rgba(255, 255, 255, 1) 50%);
13
+ background-repeat: no-repeat;
14
+ margin: 0;
15
+ padding: 0;
16
+ border: 0;
17
+ font-family: Helvetica, Arial, sans-serif;
18
+ font-size: 16px;
19
+ color: #111;
20
+ line-height: 1.5;
21
+ }
22
+
23
+ main {
24
+ width: 600px;
25
+ margin: 150px auto;
26
+ }
27
+
28
+ h1, h2, h3, h4, h5, h6, p, ul, form {
29
+ margin: 0 0 16px 0;
30
+ }
31
+
32
+ h4 {
33
+ margin-bottom: 0;
34
+ font-size: 1em;
35
+ font-weight: bold;
36
+ }
37
+
38
+ h4 em {
39
+ font-weight: normal;
40
+ font-style: normal;
41
+ }
42
+
43
+ ul {
44
+ list-style-type: disc;
45
+ list-style-position: inside;
46
+ padding: 0;
47
+ }
48
+
49
+ ul li {
50
+ margin: 0;
51
+ padding: 0;
52
+ }
53
+
54
+ h1 {
55
+ font-weight: bold;
56
+ color: #111;
57
+ font-size: 36px;
58
+ }
59
+
60
+ p.footer {
61
+ margin-top: 64px;
62
+ font-size: 12px;
63
+ color: #868686;
64
+ }
65
+
66
+ p.error_id {
67
+ margin-top: 64px;
68
+ font-size: 12px;
69
+ color: #dcdbd2;
70
+ }
71
+
72
+ input[type=text],
73
+ textarea {
74
+ vertical-align: top;
75
+ border: 1px solid #c4c2bb;
76
+ color: #444;
77
+ font-family: Helvetica, Arial, sans-serif;
78
+ font-size: 18px;
79
+ padding: 6px 8px 6px 8px;
80
+ width: 490px;
81
+ border-radius: 3px;
82
+ }
83
+
84
+ input.with_button {
85
+ width: 400px;
86
+ margin-right: 4px;
87
+ }
88
+
89
+ a,
90
+ a:visited {
91
+ color: #0751b6;
92
+ text-decoration: underline;
93
+ }
94
+
95
+ a:hover {
96
+ color: #042d65;
97
+ }
98
+
99
+ form {
100
+ vertical-align: top;
101
+ }
102
+
103
+ button.clean-gray {
104
+ background-color: #eeeeee;
105
+ background-image: linear-gradient(top, #f8f8f8, #e0e0e0);
106
+ border: 1px solid #ccc;
107
+ border-bottom: 1px solid #bbb;
108
+ border-radius: 3px;
109
+ color: #333;
110
+ font: bold 15px Helvetica, Arial, sans-serif;
111
+ line-height: 1;
112
+ padding: 9px 0;
113
+ text-align: center;
114
+ text-shadow: 0 1px 0 #eee;
115
+ width: 150px;
116
+ }
117
+
118
+ button.clean-gray:hover {
119
+ background-color: #dddddd;
120
+ background-image: linear-gradient(top, #f0f0f0, #dddddd);
121
+ border: 1px solid #bbb;
122
+ border-bottom: 1px solid #aaa;
123
+ cursor: pointer;
124
+ text-shadow: 0 1px 0 #ddd;
125
+ }
126
+
127
+ button.clean-gray:active {
128
+ border: 1px solid #aaa;
129
+ border-bottom: 1px solid #888;
130
+ box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
131
+ }
132
+ </style>
10
133
  </head>
11
134
  <body>
12
- <div id="content">
13
- <% if @page_title %>
14
- <h1><%= @page_title %></h1>
135
+ <main>
136
+ <% if content_for?(:page_title) %>
137
+ <h1><%= content_for(:page_title) %></h1>
15
138
  <% end %>
16
139
  <%= yield %>
17
- </content>
140
+ </main>
18
141
  </body>
19
142
  </html>
data/config/routes.rb CHANGED
@@ -78,11 +78,16 @@ Rails.application.routes.draw do
78
78
 
79
79
  # Pages
80
80
  scope ":locale" do
81
+ resources :news,
82
+ only: %i[index],
83
+ path: "pages/news(/:year(/:month)(/page/:page))"
84
+
85
+ resource :calendar,
86
+ path: "pages/calendar(/:year(/:month)(/page/:page))"
87
+
81
88
  resources :pages do
82
89
  collection do
83
- get "news(/:year(/:month)(/page/:page))", action: :news, as: :news
84
90
  get "deleted"
85
- get "new_news" # TODO: Should be refactored
86
91
  end
87
92
 
88
93
  member do
@@ -28,10 +28,11 @@ module PagesCore
28
28
  initializer :assets do |_config|
29
29
  Rails.application.config.assets.precompile += %w[
30
30
  pages_core/admin-dist.js
31
- pages/admin.css
32
- pages/errors.css
31
+ pages_core/admin.css
32
+ pages_core/fonts/*.ttf
33
+ pages_core/fonts/*.woff2
33
34
  pages/favicon.gif
34
- pages/admin/icon.png
35
+ pages/admin/icon.svg
35
36
  pages/*.gif
36
37
  pages/*.png
37
38
  pages/*.jpg
@@ -15,11 +15,16 @@ module PagesCore
15
15
 
16
16
  paths["db/migrate"] = "db/migrate"
17
17
 
18
- admin_menu_item "News", proc { news_admin_pages_path(@locale) }, :pages,
18
+ admin_menu_item "News", proc { admin_news_index_path(@locale) }, :pages,
19
19
  if: proc { Page.news_pages.any? },
20
20
  current: proc { @page && @page.parent.try(&:news_page?) }
21
21
 
22
+ admin_menu_item "Calendar", proc { admin_calendar_path(@locale) }, :pages,
23
+ if: proc { Page.with_dates.any? },
24
+ current: proc { @page && @page.starts_at? }
25
+
22
26
  admin_menu_item "Pages", proc { admin_pages_path(@locale) }, :pages
27
+
23
28
  admin_menu_item "Users", proc { admin_users_path }, :account
24
29
  end
25
30
  end
data/lib/pages_core.rb CHANGED
@@ -41,7 +41,6 @@ require "will_paginate"
41
41
  require "will_paginate/view_helpers/action_view"
42
42
 
43
43
  # Assets
44
- require "font-awesome-rails"
45
44
  require "react-rails"
46
45
 
47
46
  # Pages
@@ -58,8 +58,8 @@ module PagesCore
58
58
  end
59
59
 
60
60
  def create_delayed_job_script
61
- template "delayed_job", File.join("script/delayed_job")
62
- File.chmod(0o755, Rails.root.join("script/delayed_job"))
61
+ template "delayed_job", File.join("bin/delayed_job")
62
+ File.chmod(0o755, Rails.root.join("bin/delayed_job"))
63
63
  end
64
64
 
65
65
  def create_delayed_job_initializer
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require File.expand_path(
5
- File.join(File.dirname(__FILE__), "..", "config", "environment")
6
- )
4
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "config",
5
+ "environment"))
7
6
  require "delayed/command"
8
7
  Delayed::Command.new(ARGV).daemonize
@@ -31,7 +31,7 @@ require "shoulda-matchers"
31
31
  # directory. Alternatively, in the individual `*_spec.rb` files, manually
32
32
  # require only the support files necessary.
33
33
  #
34
- Dir[Rails.root.join("spec/support/**/*.rb")].sort.each do |f|
34
+ Dir[Rails.root.join("spec/support/**/*.rb")].each do |f|
35
35
  require f
36
36
  end
37
37
 
@@ -41,7 +41,7 @@ ActiveRecord::Migration.maintain_test_schema!
41
41
 
42
42
  RSpec.configure do |config|
43
43
  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
44
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
44
+ config.fixture_path = Rails.root.join("spec/fixtures")
45
45
 
46
46
  # If you're not using ActiveRecord, or you'd prefer not to run each of your
47
47
  # examples within a transaction, remove the following line or assign false