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
@@ -2,64 +2,59 @@
2
2
  margin-top: 10px;
3
3
  margin-bottom: 1.5em;
4
4
 
5
- .tags {
5
+ & .tags {
6
6
  line-height: 1.5;
7
7
  }
8
8
 
9
- .tag {
9
+ & .tag {
10
10
  font-size: 13px;
11
11
  cursor: pointer;
12
12
  display: block;
13
13
  float: left;
14
14
  margin: 0 5px 5px 0;
15
15
  padding: 0px;
16
- background: $c-background-disabled;
16
+ background: var(--background-disabled-color);
17
17
  border-radius: 5px;
18
18
  line-height: 26px;
19
19
  line-height: 36px;
20
20
  min-width: 40px;
21
21
  transition: all 200ms ease-out;
22
- -webkit-user-select: none;
23
- -khtml-user-select: none;
24
- -moz-user-select: none;
25
- -ms-user-select: none;
26
22
  user-select: none;
27
23
 
28
- label {
24
+ & label {
29
25
  margin: 0px;
30
26
  padding: 0px 10px;
31
27
  color: inherit;
32
28
  }
33
29
 
34
- input {
30
+ & input {
35
31
  margin: 2px 3px 0 0;
36
32
  }
37
33
 
38
- .name {
34
+ & .name {
39
35
  padding: 1px 5px;
40
36
  margin: 0;
41
37
  }
42
38
 
43
39
  &.enabled {
44
40
  color: #fff;
45
- background: $c-link;
46
- background: $c-blue-dark;
41
+ background: var(--blue-dark);
47
42
  }
48
43
  }
49
44
 
50
- .add-tag-form {
45
+ & .add-tag-form {
51
46
  float: left;
52
47
  width: 178px;
53
48
  white-space: nowrap;
54
49
  }
55
50
 
56
- input.add-tag {
51
+ & input.add-tag {
57
52
  margin-top: 0px;
58
53
  border-radius: 5px;
59
54
  margin: 0 4px 0 0;
60
55
 
61
56
  &.example {
62
- color: $c-text-light;
57
+ color: var(--text-light-color);
63
58
  }
64
59
  }
65
60
  }
@@ -1,6 +1,6 @@
1
1
  textarea.rich {
2
2
  margin-top: -32px;
3
- padding-top: 8px + 32px;
3
+ padding-top: calc(8px + 32px);
4
4
  width: 100%;
5
5
  max-width: none;
6
6
  }
@@ -6,10 +6,10 @@
6
6
  overflow: hidden;
7
7
  z-index: 200;
8
8
 
9
- .toast {
9
+ & .toast {
10
10
  font-size: 14px;
11
11
  display: inline-block;
12
- background: $c-background-invert;
12
+ background: var(--background-invert-color);
13
13
  color: white;
14
14
  margin: 20px auto 0px auto;
15
15
  padding: 15px 30px;
@@ -21,7 +21,7 @@
21
21
  animation-fill-mode: forwards;
22
22
 
23
23
  &.error {
24
- background: $c-red;
24
+ background: var(--red);
25
25
  }
26
26
 
27
27
  &.fadeout {
@@ -36,6 +36,7 @@
36
36
  from {
37
37
  transform: translateZ(0px) translateY(60px);
38
38
  }
39
+
39
40
  to {
40
41
  transform: translateZ(0px) translateY(0px);
41
42
  }
@@ -45,6 +46,7 @@
45
46
  from {
46
47
  transform: translateZ(0px) translateY(0px);
47
48
  }
49
+
48
50
  to {
49
51
  transform: translateZ(0px) translateY(60px);
50
52
  }
@@ -1,36 +1,41 @@
1
1
  .toolbar {
2
- @extend %clearfix;
3
2
  position: relative;
4
3
  display: block;
5
4
  list-style: none;
6
5
  margin: 0px;
7
- border: 1px solid $c-border;
6
+ border: 1px solid var(--border-color);
8
7
  background-color: #fafafa;
9
8
  padding: 0px 10px 0px 0px;
10
9
  line-height: 30px;
11
10
  width: auto;
12
11
 
13
- li {
12
+ &:after {
13
+ content: "";
14
+ display: table;
15
+ clear: both;
16
+ }
17
+
18
+ & li {
14
19
  list-style: none;
15
20
  margin: 0;
16
21
  padding: 0;
17
22
  }
18
23
 
19
- .info {
24
+ & .info {
20
25
  float: right;
21
- color: $c-text-lighter;
26
+ color: var(--text-lighter-color);
22
27
  padding: 0px 10px;
23
28
  }
24
29
 
25
- .label {
30
+ & .label {
26
31
  float: left;
27
32
  padding: 0px 10px;
28
- color: $c-text-light;
29
- border-right: 1px solid $c-border;
33
+ color: var(--text-light-color);
34
+ border-right: 1px solid var(--border-color);
30
35
  }
31
36
 
32
- .button,
33
- button {
37
+ & .button,
38
+ & button {
34
39
  float: left;
35
40
  display: inline;
36
41
  margin: 0px;
@@ -44,58 +49,80 @@
44
49
  min-width: 35px;
45
50
  border: 0px;
46
51
  border-left: 1px solid #fff;
47
- border-right: 1px solid $c-border;
48
- color: $c-text-light;
52
+ border-right: 1px solid var(--border-color);
53
+ color: var(--text-light-color);
49
54
  font-size: 12px;
50
- background-color: $c-button;
55
+ background-color: #f8f8f8;
51
56
  transition: all 200ms ease-out;
52
57
 
53
- i.fa {
58
+ & i.fa {
54
59
  font-size: 14px;
55
60
  }
56
61
 
57
62
  &:focus,
58
63
  &:hover {
59
- color: $c-text;
64
+ color: var(--text-color);
60
65
  background: #fdfdfd;
61
66
  }
62
67
 
63
68
  &[disabled] {
64
69
  opacity: 0.33;
65
70
  cursor: default;
66
- &:focus, &:hover {
67
- color: $c-text-light;
71
+
72
+ &:focus,
73
+ &:hover {
74
+ color: var(--text-light-color);
68
75
  background: inherit;
69
76
  }
70
77
  }
71
78
 
72
79
  &.active {
73
- color: $c-text-invert;
80
+ color: var(--text-invert-color);
74
81
  background: #666;
75
82
  border-left: 1px solid #555;
76
83
  border-right: 1px solid #888;
77
84
  }
78
85
 
79
- // font-awesome doesn't have h1-h6, so we'll apply some tricks
86
+ /* font-awesome doesn't have h1-h6, so we'll apply some tricks */
80
87
  &.header {
81
88
  vertical-align: bottom;
82
- i {
89
+
90
+ & i {
83
91
  margin-left: -6px;
84
92
  }
85
- i:after {
86
- font-family: Helvetica, Georgia, serif;
93
+
94
+ & i:after {
95
+ font-family: var(--font-os-sans);
87
96
  font-weight: bold;
88
97
  font-size: 13px;
89
98
  display: inline-block;
90
99
  position: absolute;
91
- bottom: 3px;
100
+ bottom: 5px;
101
+ }
102
+
103
+ &.h1 i::after {
104
+ content: "1";
105
+ }
106
+
107
+ &.h2 i::after {
108
+ content: "2";
109
+ }
110
+
111
+ &.h3 i::after {
112
+ content: "3";
113
+ }
114
+
115
+ &.h4 i::after {
116
+ content: "4";
117
+ }
118
+
119
+ &.h5 i::after {
120
+ content: "5";
121
+ }
122
+
123
+ &.h6 i::after {
124
+ content: "6";
92
125
  }
93
- &.h1 i::after { content: "1" }
94
- &.h2 i::after { content: "2" }
95
- &.h3 i::after { content: "3" }
96
- &.h4 i::after { content: "4" }
97
- &.h5 i::after { content: "5" }
98
- &.h6 i::after { content: "6" }
99
126
  }
100
127
  }
101
128
 
@@ -6,7 +6,7 @@
6
6
  margin-left: 6px;
7
7
  width: 13px;
8
8
  height: 16px;
9
- background-image: image-url("pages/admin/drag-icon.png");
9
+ background-image: url("pages/admin/drag-icon.png");
10
10
  }
11
11
 
12
12
  td.drag-handle {
@@ -17,48 +17,49 @@ td.drag-handle {
17
17
 
18
18
  .page-list {
19
19
  float: left;
20
- list-style-type: none;
20
+ list-style-type: none;
21
21
  padding: 0;
22
22
  margin: 0;
23
23
  font-size: 1.2em;
24
24
  margin-left: -8px;
25
25
  margin-top: 16px;
26
26
 
27
- .page-listing {
27
+ & .page-listing {
28
28
  border: 1px solid transparent;
29
29
  padding: 3px 8px 2px 8px !important;
30
30
  }
31
31
 
32
- ul {
32
+ & ul {
33
33
  border-left: 1px dotted #ccc !important;
34
34
  margin-left: 12px !important;
35
- padding-left: 8px !important
35
+ padding-left: 8px !important;
36
36
  }
37
37
 
38
- ul li {
38
+ & ul li {
39
39
  overflow: auto;
40
40
  }
41
41
 
42
- .page {
42
+ & .page {
43
43
  padding: 4px 8px;
44
44
  line-height: 17px;
45
45
  float: left;
46
46
 
47
- .status {
47
+ & .status {
48
48
  font-weight: normal;
49
49
  }
50
50
 
51
- a.page-name,
52
- a.page-name:visited {
51
+ & a.page-name,
52
+ & a.page-name:visited {
53
53
  text-decoration: none;
54
54
  color: #222;
55
55
  }
56
- a.page-name:hover {
56
+
57
+ & a.page-name:hover {
57
58
  text-decoration: underline;
58
59
  }
59
60
 
60
61
  &.hidden {
61
- a.page-name {
62
+ & a.page-name {
62
63
  color: #666;
63
64
  }
64
65
  }
@@ -66,42 +67,43 @@ td.drag-handle {
66
67
  &:hover {
67
68
  background: #ffd;
68
69
  border: 1px solid #dda;
69
- .status {
70
+
71
+ & .status {
70
72
  display: none;
71
73
  }
72
74
  }
73
75
  }
74
76
 
75
- .page-without-locale {
77
+ & .page-without-locale {
76
78
  color: #888;
77
79
  }
78
80
 
79
- li {
80
- font-weight: bold;
81
- margin: 0;
81
+ & li {
82
+ font-weight: bold;
83
+ margin: 0;
82
84
  padding: 0;
83
85
  clear: both;
84
86
  }
85
87
 
86
- li li {
88
+ & li li {
87
89
  font-weight: normal;
88
- font-size: 12px;
90
+ font-size: 12px;
89
91
  padding: 0;
90
92
  }
91
93
 
92
- ul {
94
+ & ul {
93
95
  clear: both;
94
- list-style-type: none;
95
- border-left: 1px dashed #ccc;
96
- margin: 0 0 0px 12px;
96
+ list-style-type: none;
97
+ border-left: 1px dashed #ccc;
98
+ margin: 0 0 0px 12px;
97
99
  padding: 0 0 0 12px;
98
100
  }
99
101
 
100
- .hover {
102
+ & .hover {
101
103
  background: #cef;
102
104
  }
103
105
 
104
- .drag-handle {
106
+ & .drag-handle {
105
107
  display: none;
106
108
  }
107
109
 
@@ -112,87 +114,96 @@ td.drag-handle {
112
114
 
113
115
  .news-item-list,
114
116
  .calendar-item-list {
115
- .name {
117
+ & .name {
116
118
  line-height: 1.5;
117
- small {
119
+
120
+ & small {
118
121
  font-weight: normal;
119
122
  }
120
123
  }
121
124
 
122
- .draft,
123
- .hidden,
124
- .autopublish,
125
- .reviewed {
126
- background: $c-background-disabled;
125
+ & .draft,
126
+ & .hidden,
127
+ & .autopublish,
128
+ & .reviewed {
129
+ background: var(--background-disabled-color);
127
130
  }
128
131
 
129
- .pinned .name {
130
- background: transparent image-url("pages/admin/list-table-pin-blue.gif") no-repeat 13px 50%;
132
+ & .pinned .name {
133
+ background: transparent radial-gradient(ellipse at center, #92b6c4 50%, transparent 50%) no-repeat left 12px top 50%;
134
+ background-size: 10px 10px;
131
135
  }
132
136
  }
133
137
 
134
138
  .edit-page {
135
139
  width: auto;
136
140
 
137
- main div.content {
141
+ & main div.content {
138
142
  padding-top: 16px;
139
143
  }
140
144
 
141
- .hidden-options {
145
+ & .hidden-options {
142
146
  display: none;
143
147
  }
144
148
 
145
- .autopublish-notice,
146
- .published-date,
147
- .advanced-options {
149
+ & .autopublish-notice,
150
+ & .published-date,
151
+ & .advanced-options {
148
152
  display: none;
153
+
149
154
  &.show {
150
155
  display: block;
151
156
  }
152
157
  }
153
158
 
154
- main input[type=text],
155
- main textarea {
159
+ & main input[type=text],
160
+ & main textarea {
156
161
  width: 100%;
157
162
  max-width: 100%;
158
163
  }
159
164
 
160
- main input.page_title {
165
+ & main input.page_title {
161
166
  font-weight: bold;
162
167
  font-size: 1.4em;
163
- color: $c-text;
168
+ color: var(--text-color);
164
169
  }
165
170
  }
166
171
 
167
-
168
172
  .file-list {
169
173
  list-style-type: none;
170
174
  margin-left: 0;
171
175
  margin-right: 0;
172
176
  padding: 0;
173
- .embed-code {
177
+
178
+ & .embed-code {
174
179
  display: inline-block;
175
180
  width: 60px;
176
181
  margin-right: 10px;
177
182
  }
178
- li {
183
+
184
+ & li {
179
185
  line-height: 30px;
180
- border-top: 1px solid $c-border;
186
+ border-top: 1px solid var(--border-color);
187
+
181
188
  &:first-child {
182
189
  border-top: 0px;
183
190
  }
184
- .actions {
191
+
192
+ & .actions {
185
193
  float: right;
186
194
  }
187
- .drag-handle {
195
+
196
+ & .drag-handle {
188
197
  margin-right: 10px;
189
198
  }
190
199
  }
191
- .placeholder {
200
+
201
+ & .placeholder {
192
202
  height: 30px;
193
203
  }
194
- .ui-sortable-helper {
195
- border: 1px solid $c-border !important;
204
+
205
+ & .ui-sortable-helper {
206
+ border: 1px solid var(--border-color) !important;
196
207
  background: rgba(250, 250, 250, 0.8);
197
208
  }
198
209
  }
@@ -0,0 +1,3 @@
1
+ table.users tr.invite td {
2
+ color: var(--text-light-color);
3
+ }
@@ -0,0 +1,34 @@
1
+ @custom-media --mobile screen and (max-width: 900px);
2
+ @custom-media --narrow screen and (max-width: 1150px);
3
+
4
+ :root {
5
+ --font-os-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Oxygen, Cantarell, sans-serif;
6
+
7
+ --red: #c00007;
8
+ --red-transparent: #c0000740;
9
+ --red-hover: #8d0005;
10
+ --red-light: #d6a6a8;
11
+ --red-invert: #fff0f3;
12
+ --blue: #1d7195;
13
+ --blue-hover: #15516a;
14
+ --blue-transparent: #1d719540;
15
+ --blue-dark: #114055;
16
+ --green: #19ac1e;
17
+ --green-hover: #137f16;
18
+ --green-transparent: #19ac1e40;
19
+ --background-color: #fff;
20
+ --background-invert-color: #000;
21
+ --background-disabled-color: #f8f8f8;
22
+ --background-warning-color: #ffdfa0;
23
+ --text-color: #111;
24
+ --text-light-color: #666;
25
+ --text-lighter-color: #999;
26
+ --text-invert-color: #fff;
27
+ --link-color: var(--blue);
28
+ --link-hover-color: var(--blue-hover);
29
+ --border-color: #ddd;
30
+ --border-color-light: #eee;
31
+ --button-border-color: #aaa;
32
+ --button-color: #e8e8e8;
33
+ --button-color-hover: #d8d8d8;
34
+ }
@@ -0,0 +1,9 @@
1
+ @import "normalize.css";
2
+ @import "react-image-crop/dist/ReactCrop";
3
+ @import "@fortawesome/fontawesome-free/css/fontawesome";
4
+ @import "@fortawesome/fontawesome-free/css/solid";
5
+ @import "@fortawesome/fontawesome-free/css/regular";
6
+
7
+ @import "admin/vars";
8
+ @import-glob "admin/components/*.css";
9
+ @import-glob "admin/controllers/*.css";
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Admin
4
+ class CalendarsController < Admin::AdminController
5
+ before_action :find_year_and_month
6
+
7
+ require_authorization object: Page
8
+
9
+ def show
10
+ unless @year
11
+ redirect_to(admin_calendar_path(@locale, Time.zone.now.year))
12
+ return
13
+ end
14
+ @pages = if @month
15
+ calendar_items.in_year_and_month(@year, @month)
16
+ else
17
+ calendar_items.in_year(@year)
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def calendar_items
24
+ Page.with_dates
25
+ .order("starts_at DESC")
26
+ .in_locale(@locale)
27
+ .visible
28
+ .paginate(per_page: 50, page: params[:page])
29
+ end
30
+
31
+ def find_year_and_month
32
+ @year = params[:year]&.to_i
33
+ @month = params[:month]&.to_i
34
+ end
35
+ end
36
+ end
@@ -16,6 +16,8 @@ module Admin
16
16
  @category = Category.new
17
17
  end
18
18
 
19
+ def edit; end
20
+
19
21
  def create
20
22
  @category = Category.create(category_params)
21
23
  if @category.valid?
@@ -26,8 +28,6 @@ module Admin
26
28
  end
27
29
  end
28
30
 
29
- def edit; end
30
-
31
31
  def update
32
32
  if @category.update(category_params)
33
33
  flash[:notice] = t("pages_core.categories_controller.updated")
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Admin
4
+ class NewsController < Admin::AdminController
5
+ before_action :require_news_pages
6
+ before_action :find_news_pages
7
+ before_action :find_year_and_month
8
+
9
+ require_authorization object: Page
10
+
11
+ def index
12
+ @archive_finder = archive_finder(@news_pages, @locale)
13
+ unless @year
14
+ redirect_to(admin_news_index_path(@locale,
15
+ (@archive_finder.latest_year ||
16
+ Time.zone.now.year)))
17
+ return
18
+ end
19
+ @pages = @archive_finder.by_year_and_maybe_month(@year, @month)
20
+ .paginate(per_page: 50, page: params[:page])
21
+ end
22
+
23
+ private
24
+
25
+ def archive_finder(parents, locale)
26
+ Page.where(parent_page_id: parents)
27
+ .visible
28
+ .order("published_at DESC")
29
+ .in_locale(locale)
30
+ .archive_finder
31
+ end
32
+
33
+ def find_news_pages
34
+ @news_pages = Page.news_pages
35
+ .in_locale(@locale)
36
+ .reorder("parent_page_id ASC, position ASC")
37
+ return if @news_pages.any?
38
+
39
+ redirect_to(admin_pages_url(@locale))
40
+ end
41
+
42
+ def find_year_and_month
43
+ @year = params[:year]&.to_i
44
+ @month = params[:month]&.to_i
45
+ end
46
+
47
+ # Redirect away if no news pages has been configured
48
+ def require_news_pages
49
+ return if Page.news_pages.any?
50
+
51
+ redirect_to(admin_pages_url(@locale))
52
+ end
53
+
54
+ def latest_year
55
+ archive_finder.latest_year_and_month.first || Time.zone.now.year
56
+ end
57
+ end
58
+ end