Commit Graph

37 Commits

Author SHA1 Message Date
Kevin Ansfield
922c304e3b Added "Email call to action" card for an email-only CTA targeting free or paid members (#2080)
refs https://github.com/TryGhost/Team/issues/993

The new editor card allows you to add styled content along with an optional button that will only be visible to free or paid members when the post is emailed. Useful for encouraging free members to sign up to a paid account for example.

- removed labs flag and conditionals to make the feature is available by default
- cleaned up CSS that re-used the `.email-card` class or was referencing `labs`
2021-09-02 13:11:15 +01:00
Sanne de Vries
d8c7673a94 Capitalized email preview footer buttons 2021-08-25 13:13:55 +02:00
Kevin Ansfield
e02e921b22 Fixed email tab not working in preview modal
no issue

- added missing service injection
2021-07-27 16:46:02 +01:00
Kevin Ansfield
23a1f63d24 Added free/paid toggle to email preview modal
refs https://github.com/TryGhost/Team/issues/927

- the `email-cta` card can be segmented so only free or paid members can see the content, it should be possible for authors to preview what that will look like in either case
2021-07-27 16:31:56 +01:00
Kevin Ansfield
c646e78fff Made session.user a synchronous property rather than a promise
no issue

Having `session.user` return a promise made dealing with it in components difficult because you always had to remember it returned a promise rather than a model and had to handle the async behaviour. It also meant that you couldn't use any current user properties directly inside getters which made refactors to Glimmer/Octane idioms harder to reason about.

`session.user` was a cached computed property so it really made no sense for it to be a promise - it was loaded on first access and then always returned instantly but with a fulfilled promise rather than the  underlying model.

Refactoring to a synchronous property that is loaded as part of the authentication flows (we load the current user to check that we're logged in - we may as well make use of that!) means one less thing to be aware of/remember and provides a nicer migration process to Glimmer components. As part of the refactor, the auth flows and pre-load of required data across other services was also simplified to make it easier to find and follow.

- refactored app setup and `session.user`
  - added `session.populateUser()` that fetches a user model from the current user endpoint and sets it on `session.user`
  - removed knowledge of app setup from the `cookie` authenticator and moved it into = `session.postAuthPreparation()`, this means we have the same post-authentication setup no matter which authenticator is used so we have more consistent behaviour in tests which don't use the `cookie` authenticator
  - switched `session` service to native class syntax to get the expected `super()` behaviour
  - updated `handleAuthentication()` so it populate's `session.user` and performs post-auth setup before transitioning (handles sign-in after app load)
  - updated `application` route to remove duplicated knowledge of app preload behaviour that now lives in `session.postAuthPreparation()` (handles already-authed app load)
  - removed out-of-date attempt at pre-loading data from setup controller as that's now handled automatically via `session.handleAuthentication`
- updated app code to not treat `session.user` as a promise
  - predominant usage was router `beforeModel` hooks that transitioned users without valid permissions, this sets us up for an easier removal of the `current-user-settings` mixin in the future
2021-07-08 14:54:31 +01:00
Kevin Ansfield
1b85b9244b Updated email previews to show full from email address
no issue

- moved duplicated email domain generation from `members-email` controller and `<GhMembersEmailSetting>` to `config.emailDomain`
- added `{{from-email-address emailStr}}` helper that will output the passed in emailStr value if it contains an `@` or concat `emailStr@emailDomain` if it doesn't - lets us use `settings.membersFromAddress` to always get a full email address when it could be just a name (`noreply`) or a full address
- updated customise email and post email preview templates to use the new helper
2021-06-11 16:42:27 +01:00
Kevin Ansfield
4ad305534a 🐛 Fixed links in email preview not being clickable
no issue

- browsers blocked links from opening in a new window due to the iframe sandbox permissions
- allowed popups so that it's possible to check links go where you expect them to before sending an email
- our email rendering adds `target="_blank"` to all links so they'll open in a new tab rather than clearing navigating away from the admin area
2021-06-08 10:36:17 +01:00
Kevin Ansfield
e584569914 Switch deprecated htmlSafe imports from @ember/string to @ember/template
no issue

See https://deprecations.emberjs.com/v3.x#toc_ember-string-htmlsafe-ishtmlsafe
2021-05-12 12:33:40 +01:00
Sanne de Vries
d47352fd29 Updated metadata description preview cutoff point across admin 2021-05-05 17:33:59 +02:00
Kevin Ansfield
15561efd48 Fixed url formatting in search engine result previews
no issue

- `config.blogDomain` includes subdirectory and `config.ghostPaths.subdir` includes a leading `/` which resulted in the search engine result preview url incorrectly showing as `mysite.com/subdir > /subdir > slug`
- replaced the in-template construction of the url previews with a getter on the backing class that constructs the preview url based on parsing the configured url
2021-03-30 10:10:34 +01:00
Kevin Ansfield
a8abc3a366 Pre-filled email address input in post preview modal for current user
no issue

- when viewing the email preview in the post preview modal having your email address pre-filled makes sending yourself an email preview much quicker as there's no need to type anything
2021-03-10 09:35:10 +00:00
Sanne de Vries
b75839f325 Fixed Safari bug not showing full-height post preview 2021-03-09 09:52:35 +01:00
Sanne de Vries
312000638d Improved social media previews screen in post-preview
No ref

- Added explanatory copy
- Updated "change image" button type
2021-03-03 15:53:16 +01:00
Sanne de Vries
b9a35be517 Fixed facebook description cut-off in edit mode bug 2021-03-03 14:59:28 +01:00
Sanne de Vries
2cf6dc4e4b Improved social media inline editing
No ref

- Added placeholder attributes to focused input fields
- Fixed only text value being clickable vs. entire field
- Added placeholder attributes to PSM meta data inputs
2021-03-03 13:30:41 +01:00
Sanne de Vries
d8e5764d17 Fixed google breadcumb character in social media preview 2021-03-02 13:45:53 +01:00
Sanne de Vries
2ec9383bdd Hid Facebook description when title exceeds single line in all social media previews 2021-03-02 13:25:00 +01:00
Sanne de Vries
89f4cdfd0a Styled social media previews empty state for images 2021-02-25 17:20:43 +01:00
Sanne de Vries
1cb2b8cddd Improved social media preview editing design 2021-02-23 21:47:17 +01:00
Kevin Ansfield
ff09a20ac8 Made social/meta text and images in preview modal editable (#1850)
refs https://github.com/TryGhost/Team/issues/482

- replace titles and descriptions with text fields when clicked
    - save on blur
    - blur+save on <kbd>Enter</kbd>
    - blur+restore on <kbd>Escape</kbd>
    - create newline with <kbd>Shift+Enter</kbd> in description fields
- if there's no available image or fallback show a "+ Add image" header in the previews when hovering
- if there is an image show an upload/change image button when hovering
- show a delete image button when hovering once a custom image has been uploaded

Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
2021-02-23 18:37:12 +00:00
Sanne de Vries
478084e274 Updated social media previews in general settings 2021-02-18 21:33:04 +01:00
Kevin Ansfield
cebe43935c Added link to preview-in-new-tab button
refs 80e2103f1d

- changed button to a link and added necessary attributes
- copied button to the mobile view for consistency
2021-02-16 11:51:32 +00:00
Sanne de Vries
80e2103f1d Added external tab preview link to post-preview modal footer 2021-02-16 12:23:34 +01:00
Sanne de Vries
a792d152da Fixed twitter preview shrinking bug and responsive issues for social preview 2021-02-12 16:13:42 +01:00
Sanne de Vries
d4f131ee26 Updated preview-modal social preview design
Refs https://github.com/TryGhost/Team/issues/459

- Updated styles for Facebook, Twitter and Google
- Added mockup for tweets, posts, and Google search results
- Got rid of browser mockup on desktop preview
- Changed button-group active style from blue to black
2021-02-10 15:25:49 +01:00
Sanne de Vries
4c9d9289ef Updated footer design of post preview
No ref

- Changed copy-url button style in browser view
- Changed send-test-email input and button style in email view
- Moved error notification for invalid email
- Changed "Saved" notification style
2021-02-08 19:20:44 +01:00
Sanne de Vries
4ddfd3b3c6 Updated browser and email mockup in post-preview 2021-02-08 13:14:46 +01:00
Kevin Ansfield
06bb047d2d Fixed layout when send email preview fails in post preview modal
refs https://github.com/TryGhost/Team/issues/459

- moved error text to the left of the input to avoid layout jump
- added aria attributes to mark field as invalid and associate error text
2021-02-08 10:54:42 +00:00
Kevin Ansfield
59948a7b7e Added site twitter/facebook and cover image fallbacks to social previews
refs f3e0949c73

- Ghost has been updated to use the additional fallbacks, we should reflect this in the Admin social previews too
2021-02-05 09:24:26 +00:00
Kevin Ansfield
2c09b22375 Fixed twitter/facebook image fallback to feature image in social preview
refs https://github.com/TryGhost/Team/issues/459

- fall back to feature image for twitter+facebook when specific images don't exist
2021-02-02 16:08:08 +00:00
Kevin Ansfield
9fcf3cce9d Added generic/bookmark card preview modal settings tab
refs https://github.com/TryGhost/Team/issues/459

- re-use bookmark card styling
- approximate the data grabbed by metascraper (used when generating bookmark card contents) based on saved post data
2021-02-02 16:08:08 +00:00
Kevin Ansfield
e8970841d2 Fixed missing seo description in post preview modal
refs https://github.com/TryGhost/Team/issues/459

- the SERP description was not falling back to the server-side generated `excerpt` field on the post
- removed outdated dynamic description generation from markdown card, should be replaced with dynamic description generation from mobiledoc if needed
2021-02-02 16:08:08 +00:00
Kevin Ansfield
4108ec735a Fixed missing seo url in post preview modal
refs https://github.com/TryGhost/Team/issues/459

- added missing getter for generating SERP preview URL
2021-02-02 16:08:07 +00:00
Kevin Ansfield
28a2ff8259 Fixed sending email preview from post preview modal
refs https://github.com/TryGhost/Team/issues/459

- fixed incorrect tracked variable name for the email preview address
- fixed incorrect access of `this.post` instead of `this.args.post`
- re-throw any error that is encountered so the cause is not silently lost
2021-02-02 16:08:07 +00:00
Sanne de Vries
c45294717c Improved preview post modal design and added mobile view
refs https://github.com/TryGhost/Team/issues/451

- Added mobile view to the post preview modal
- Replaced tabs text with icons
- Moved back button and added publish button
- Changed copy-link design to be aligned with link preview in portal
- Changed layout for social previews
- Added images to the Twittr and Facebook previews
- Added labels to the social previews
- Changed styling for the "Preview post" button in editor
2021-02-02 16:08:05 +00:00
Kevin Ansfield
7f7d2cafc6 Added share/send preview footers to post preview modal
refs https://github.com/TryGhost/Team/issues/451

- disabled email tab when previewing a page (pages can't be emailed)
- added share preview url footer to browser tab
- added send preview footer to email tab
- added first pass at social tab contents
2021-02-02 16:08:05 +00:00
Kevin Ansfield
e932af26a7 Added first pass at new post preview
refs https://github.com/TryGhost/Team/issues/451

Start of new post preview prototype.

- adds preview button next to publish button
- opens new combined preview modal with desktop/email/social tabs
- desktop preview shows front-end preview url in iframe
- email preview fetches preview data as per the older email preview modal
- social preview to come later
2021-02-02 16:08:04 +00:00