ghost 4.20.2 → 4.22.0

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 (85) hide show
  1. package/.eslintrc.js +1 -1
  2. package/Gruntfile.js +1 -0
  3. package/content/themes/casper/assets/built/screen.css +1 -1
  4. package/content/themes/casper/assets/built/screen.css.map +1 -1
  5. package/content/themes/casper/assets/css/screen.css +263 -50
  6. package/content/themes/casper/default.hbs +12 -3
  7. package/content/themes/casper/index.hbs +25 -23
  8. package/content/themes/casper/package.json +91 -2
  9. package/content/themes/casper/partials/post-card.hbs +1 -1
  10. package/content/themes/casper/post.hbs +18 -14
  11. package/content/themes/casper/yarn.lock +245 -192
  12. package/core/boot.js +5 -0
  13. package/core/bridge.js +14 -0
  14. package/core/built/assets/{chunk.3.777d43e2ce954ba8b2f5.js → chunk.3.1148677ff3b78e5aeaee.js} +60 -60
  15. package/core/built/assets/{ghost-dark-20e2892d4f30d0d1183c9ac725ea37d0.css → ghost-dark-684ad238e1a858c7cb5be6988de7c6f5.css} +1 -1
  16. package/core/built/assets/{ghost.min-57e46fd3b1145ecf2cbd185a13611f3b.css → ghost.min-66e08535f8bb797a8c40e0a2b31f1e9e.css} +1 -1
  17. package/core/built/assets/{ghost.min-07b6a50c54b3e2e190332c28c7255d2f.js → ghost.min-efbfb823467b66f4acc66537d033aa55.js} +1770 -1906
  18. package/core/built/assets/{vendor.min-af502ac4142871500fc424f6a5a254ec.js → vendor.min-7c8fdd90f7ecd2e94328a07ea3b64608.js} +985 -956
  19. package/core/frontend/apps/amp/lib/helpers/amp_content.js +16 -4
  20. package/core/frontend/helpers/asset.js +9 -1
  21. package/core/frontend/helpers/ghost_head.js +13 -1
  22. package/core/frontend/meta/title.js +15 -5
  23. package/core/frontend/services/card-assets/index.js +16 -0
  24. package/core/frontend/services/card-assets/service.js +101 -0
  25. package/core/frontend/services/routing/router-manager.js +5 -3
  26. package/core/frontend/services/theme-engine/config/defaults.json +4 -1
  27. package/core/frontend/services/theme-engine/config/index.js +1 -1
  28. package/core/frontend/src/cards/css/bookmark.css +83 -0
  29. package/core/frontend/src/cards/css/gallery.css +36 -0
  30. package/core/frontend/src/cards/js/gallery.js +8 -0
  31. package/core/frontend/web/middleware/serve-public-file.js +10 -1
  32. package/core/frontend/web/site.js +10 -9
  33. package/core/server/adapters/storage/LocalImagesStorage.js +50 -0
  34. package/core/server/adapters/storage/LocalMediaStorage.js +23 -0
  35. package/core/server/adapters/storage/{LocalFileStorage.js → LocalStorageBase.js} +36 -48
  36. package/core/server/adapters/storage/index.js +1 -1
  37. package/core/server/adapters/storage/utils.js +2 -2
  38. package/core/server/api/canary/index.js +4 -0
  39. package/core/server/api/canary/media.js +22 -0
  40. package/core/server/api/canary/members.js +6 -103
  41. package/core/server/api/canary/membersStripeConnect.js +0 -10
  42. package/core/server/api/canary/redirects.js +1 -6
  43. package/core/server/api/canary/utils/serializers/input/pages.js +8 -0
  44. package/core/server/api/canary/utils/serializers/output/images.js +4 -0
  45. package/core/server/api/canary/utils/serializers/output/index.js +4 -0
  46. package/core/server/api/canary/utils/serializers/output/media.js +28 -0
  47. package/core/server/api/canary/utils/validators/input/index.js +4 -0
  48. package/core/server/api/canary/utils/validators/input/media.js +7 -0
  49. package/core/server/api/v2/redirects.js +1 -6
  50. package/core/server/api/v2/utils/serializers/output/images.js +4 -0
  51. package/core/server/api/v3/members.js +5 -1
  52. package/core/server/api/v3/redirects.js +1 -6
  53. package/core/server/api/v3/utils/serializers/output/images.js +4 -0
  54. package/core/server/data/migrations/utils.js +55 -16
  55. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +8 -0
  56. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +39 -0
  57. package/core/server/data/schema/default-settings.json +8 -0
  58. package/core/server/frontend/ghost.min.css +1 -1
  59. package/core/server/lib/image/blog-icon.js +2 -4
  60. package/core/server/lib/image/image-size.js +1 -1
  61. package/core/server/services/limits.js +3 -6
  62. package/core/server/services/mega/template.js +4 -0
  63. package/core/server/services/members/api.js +1 -1
  64. package/core/server/services/members/emails/signup.js +2 -2
  65. package/core/server/services/members/stripe-connect.js +14 -0
  66. package/core/server/services/offers/service.js +1 -31
  67. package/core/server/services/redirects/api.js +270 -0
  68. package/core/server/services/redirects/index.js +27 -12
  69. package/core/server/services/themes/ThemeStorage.js +5 -5
  70. package/core/server/web/admin/views/default-prod.html +4 -4
  71. package/core/server/web/admin/views/default.html +4 -4
  72. package/core/server/web/api/canary/admin/routes.js +13 -4
  73. package/core/server/web/api/middleware/upload.js +117 -10
  74. package/core/server/web/members/app.js +1 -1
  75. package/core/server/web/shared/middlewares/index.js +0 -4
  76. package/core/shared/config/defaults.json +3 -1
  77. package/core/shared/config/helpers.js +2 -0
  78. package/core/shared/config/overrides.json +8 -0
  79. package/core/shared/labs.js +5 -3
  80. package/package.json +35 -34
  81. package/yarn.lock +997 -1016
  82. package/core/built/assets/img/themes/Editorial-a25a4a34c04dedd858bd5e05ef388b1c.jpg +0 -0
  83. package/core/built/assets/img/themes/Massively-06edf00108429f7fb8e65f190fba34fe.jpg +0 -0
  84. package/core/server/services/redirects/settings.js +0 -234
  85. package/core/server/web/shared/middlewares/custom-redirects.js +0 -128
@@ -2,7 +2,7 @@
2
2
  "name": "casper",
3
3
  "description": "A clean, minimal default theme for the Ghost publishing platform",
4
4
  "demo": "https://demo.ghost.io",
5
- "version": "4.1.1",
5
+ "version": "4.2.0",
6
6
  "engines": {
7
7
  "ghost": ">=4.0.0",
8
8
  "ghost-api": "v4"
@@ -50,7 +50,7 @@
50
50
  "autoprefixer": "10.2.5",
51
51
  "beeper": "2.1.0",
52
52
  "cssnano": "4.1.10",
53
- "gscan": "4.0.0",
53
+ "gscan": "4.10.1",
54
54
  "gulp": "4.0.2",
55
55
  "gulp-concat": "2.6.1",
56
56
  "gulp-livereload": "4.0.2",
@@ -87,6 +87,95 @@
87
87
  "xl": {
88
88
  "width": 2000
89
89
  }
90
+ },
91
+ "custom": {
92
+ "title_font": {
93
+ "type": "select",
94
+ "options": [
95
+ "Modern sans-serif",
96
+ "Elegant serif"
97
+ ],
98
+ "default": "Modern sans-serif"
99
+ },
100
+ "body_font": {
101
+ "type": "select",
102
+ "options": [
103
+ "Modern sans-serif",
104
+ "Elegant serif"
105
+ ],
106
+ "default": "Elegant serif"
107
+ },
108
+ "publication_cover_style": {
109
+ "type": "select",
110
+ "options": [
111
+ "None",
112
+ "Medium",
113
+ "Large"
114
+ ],
115
+ "default": "Medium",
116
+ "group": "homepage"
117
+ },
118
+ "feed_layout": {
119
+ "type": "select",
120
+ "options": [
121
+ "Dynamic grid",
122
+ "Simple grid",
123
+ "List"
124
+ ],
125
+ "default": "Dynamic grid",
126
+ "group": "homepage"
127
+ },
128
+ "color_scheme": {
129
+ "type": "select",
130
+ "options": [
131
+ "Light",
132
+ "Dark",
133
+ "Auto"
134
+ ],
135
+ "default": "Light"
136
+ },
137
+ "header_button_background": {
138
+ "type": "color",
139
+ "default": "#ffffff"
140
+ },
141
+ "header_button_text_color": {
142
+ "type": "select",
143
+ "options": [
144
+ "Light",
145
+ "Dark"
146
+ ],
147
+ "default": "Dark"
148
+ },
149
+ "post_image_width": {
150
+ "type": "select",
151
+ "options": [
152
+ "Wide",
153
+ "Full",
154
+ "Small"
155
+ ],
156
+ "default": "Wide",
157
+ "group": "post"
158
+ },
159
+ "email_signup_for_logged_out_visitors": {
160
+ "type": "select",
161
+ "options": [
162
+ "Footer",
163
+ "Bottom of post",
164
+ "None"
165
+ ],
166
+ "default": "Footer",
167
+ "group": "post"
168
+ },
169
+ "email_signup_text": {
170
+ "type": "text",
171
+ "default": "Sign up for more like this.",
172
+ "group": "post"
173
+ },
174
+ "show_recent_posts": {
175
+ "type": "boolean",
176
+ "default": true,
177
+ "group": "post"
178
+ }
90
179
  }
91
180
  },
92
181
  "renovate": {
@@ -1,7 +1,7 @@
1
1
  {{!-- This is a partial file used to generate a post "card"
2
2
  which templates loop over to generate a list of posts. --}}
3
3
 
4
- <article class="post-card {{post_class}} {{#is "home"}}{{#if feature_image}}{{#has index="0"}}post-card-large{{/has}}{{/if}}{{/is}}">
4
+ <article class="post-card {{post_class}} {{#match @custom.feed_layout "!=" "Simple grid"}}{{#is "home"}}{{#match @custom.feed_layout "Dynamic grid"}}{{#has index="0"}}{{#if feature_image}}post-card-large{{/if}}{{/has}}{{else}}post-card-large{{/match}}{{/is}}{{/match}}">
5
5
 
6
6
  {{#if feature_image}}
7
7
  <a class="post-card-image-link" href="{{url}}">
@@ -8,7 +8,7 @@ into the {body} tag of the default.hbs template --}}
8
8
  {{!-- Everything inside the #post block pulls data from the post --}}
9
9
 
10
10
  <main id="site-main" class="site-main">
11
- <article class="article {{post_class}}">
11
+ <article class="article {{post_class}} {{#match @custom.post_image_width "Full"}}image-full{{else match @custom.post_image_width "=" "Small"}}image-small{{/match}}">
12
12
 
13
13
  <header class="article-header gh-canvas">
14
14
 
@@ -83,22 +83,25 @@ into the {body} tag of the default.hbs template --}}
83
83
  </main>
84
84
 
85
85
  {{!-- A signup call to action is displayed here, unless viewed as a logged-in member --}}
86
- {{#unless @member}}
87
- <section class="footer-cta">
88
- <div class="inner">
89
- <h2>Sign up for more like this.</h2>
90
- <a class="footer-cta-button" href="#/portal">
91
- <div>Enter your email</div>
92
- <span>Subscribe</span>
93
- </a>
94
- {{!-- ^ This looks like a form element, but it's just a link to Portal,
95
- making the form validation and submission much simpler. --}}
96
- </div>
97
- </section>
98
- {{/unless}}
86
+ {{#match @custom.email_signup_for_logged_out_visitors "!=" "None"}}
87
+ {{#unless @member}}{{#if access}}
88
+ <section class="footer-cta {{#match @custom.email_signup_for_logged_out_visitors "Bottom of post"}}cta-alt{{/match}}">
89
+ <div class="inner">
90
+ {{#if @custom.email_signup_text}}<h2>{{@custom.email_signup_text}}</h2>{{/if}}
91
+ <a class="footer-cta-button" href="#/portal">
92
+ <div class="footer-cta-input">Enter your email</div>
93
+ <span>Subscribe</span>
94
+ </a>
95
+ {{!-- ^ This looks like a form element, but it's just a link to Portal,
96
+ making the form validation and submission much simpler. --}}
97
+ </div>
98
+ </section>
99
+ {{/if}}{{/unless}}
100
+ {{/match}}
99
101
 
100
102
 
101
103
  {{!-- Read more links, just above the footer --}}
104
+ {{#if @custom.show_recent_posts}}
102
105
  <aside class="read-more-wrap">
103
106
  <div class="read-more inner">
104
107
 
@@ -118,5 +121,6 @@ into the {body} tag of the default.hbs template --}}
118
121
 
119
122
  </div>
120
123
  </aside>
124
+ {{/if}}
121
125
 
122
126
  {{/post}}