Commit Graph

61 Commits

Author SHA1 Message Date
Simon Backx
98e80cb6f8 Replaced newsletterId usage with newsletter
refs https://github.com/TryGhost/Team/issues/1569
refs https://github.com/TryGhost/Team/issues/1596
refs https://github.com/TryGhost/Team/issues/1576

- Removed some usages of post.newsletterId with post.newsletter
- Renamed newsletterId adapterOption from newsletterId to newsletter, in preparation of https://github.com/TryGhost/Team/issues/1596 (still sending newsletter_id)
- Removed newsletterId property of post model
2022-05-10 13:56:30 +02:00
Simon Backx
1f5f9645e6 Updated members count to use selected newsletter when publishing
refs https://github.com/TryGhost/Team/issues/1576

- Passes the selected newsletter to the recipient selector
- Added a `recipientFilter` getter to the newsletter model to make changes easier in the future
- Updates the `fullRecipientFilter` in the new publishing flow to use the newsletter's recipientFilter
- Already takes future paid only newsletters into account
- The counts in the status message after publishing is not updated yet (requires https://github.com/TryGhost/Team/issues/1569)
- The counts in the scheduled notification is not updated yet (requires https://github.com/TryGhost/Team/issues/1569)
2022-05-05 17:17:23 +02:00
Simon Backx
04aff7f51b Removed unused memberCount property passed to GhPublishmenu
refs https://github.com/TryGhost/Team/issues/1538

The memberCount property was not used, so I removed all related code and fetch.
2022-04-26 13:10:16 +01:00
Kevin Ansfield
e5c26aac89 Added newsletter dropdown to publish menu
closes https://github.com/TryGhost/Team/issues/1479

- updated post adapter to append `?newsletter_id=xyz` when passed a `newsletterId` adapterOption
- updated editor save task to pass `options.newsletterId` through as `adapterOptions.newsletterId`
- set up `post.newsletter` relationship ready for handling embedded newsletter association from the API
  - explicitly deleted when serializing back to the API as it doesn't yet ignore the attribute
- updated `<GhPublishmenu>` for newsletter support
  - fetches newsletters on first render so they are available in the dropdown
  - sets "default" (first in the ordered list) newsletter as the initially selected newsletter
  - adds newsletter dropdown to draft publish menu
  - passes `newsletterId` option to editor save task when it's set

This is a minimal implementation for testing. Not included:
- correct free/paid member counts based on selected newsletter
- correct member count in confirmation modal
- indication of selected newsletter for scheduled post
2022-04-06 10:22:06 +01:00
Kevin Ansfield
623825f8f0 🐛 Fixed scheduled send-only post switching to publish+send when rescheduling
closes https://github.com/TryGhost/Ghost/issues/14354

When setting/cleaning up the publish menu state we were incorrectly reverting to the default "publish & send" state when a post was already set to be email-only. This resulted in an unexpected and non-obvious switch to "publish & send" when re-scheduling a scheduled email-only post.

- updated the publish menu setup and cleanup routines to account for scheduled, email-only posts
- fixed the header in the publish menu to say "sent" rather than "published" when an email-only post is scheduled
2022-03-31 17:11:06 +01:00
Kevin Ansfield
85d7932e45 Resolved deprecation warnings for dynamic modal component binding (#2303)
refs https://github.com/TryGhost/Team/issues/559
refs 054a5f15f5

- with the update of `ember-promise-modals` we started to get deprecation warnings when using `modals.open('modal-component-name')`
  - upcoming Ember build updates will introduce tree shaking but using run-time lookup of modal components by name works against that because it's not statically analysable
- switched to importing components and passing the component class directly, eg. `modals.open(ModalComponent)`
- standardized modal component class names with a `MyModal` style to get better behaviour in code editors when it auto generates imports
- dropped the modal defaults from the modals service because we can now use a static `modalOptions` property on the modal components themselves when we want to override the defaults
2022-03-14 10:52:04 +00:00
Kevin Ansfield
f0418266f4 🐛 Fixed "Must be in the past" error when closing and re-opening publish menu whilst scheduling
closes https://github.com/TryGhost/Team/issues/1399

- the publish/schedule save type was not being reset when closing the publish menu, even though the underlying post publish date _was_ reset leading to the publish menu and the post state being out of sync
- added a reset of the save type when closing the menu, this means "schedule" will need to be re-selected when re-opening the menu but that follows the same behaviour as the reset of the publish menu options
2022-03-11 10:13:08 +00:00
Rishabh Garg
7c5b14d050 Updated specific tier visibility handling for posts/pages (#2233)
refs TryGhost/Team#1071

Specific tier visibility for a post was previously stored in `visibility` column directly, which had a limitation of 50 charts. Going forward, for the specific tiers visibility of post/page, we use `tiers` array in API that contains list of tiers with access for post. This change -

- replaces `filter` type to `tiers` for visibility
- adds new visibility filter segment component in post settings menu which stores array of tiers instead of nql string for visibility
- updates serializer and model for post/page
- updates tests
2022-02-01 12:24:06 +05:30
Sanne de Vries
21b4b15a1c Improved Email newsletter settings page (#2207)
Updated email newsletter settings

- Added toggle to disable email newsletters
- Hides email related UI when email is completely turned off
- Rearranged email newsletter settings
- Added publish-menu preview in 
- Changed default-recipients setting
- Updated publish-menu to show Publish as default action
- Removed the confirmation modal during publishing when no emails are intended to be sent
2022-01-27 12:40:11 +01:00
Kevin Ansfield
b71babfc51 Updated Ember dependencies to 3.22 (#2220)
no issue

- bumped `ember-source`, `ember-data`, and `ember-cli` to latest 3.22.x versions
- fixed errors caused by updating properties inside of a render
  - `<GhPublishMenu>` removed insta-call of `@setSaveType` when rendering sub-components in favour of pre-setting the default `@saveType` value when the underlying post status changes
  - updated `<GhNavMenu>` to use the run-loop to update the `firstRender` property once rendering has finished rather than mid-render
2022-01-22 00:05:05 +00:00
Kevin Ansfield
57b1ab4800 Ran ember-cli-update --run-codemods (#2219)
no issue

- part of ember upgrades
- removed all unnecessary usage of `.get`
- cleaned up imports where we had imports from the same module across multiple lines
- standardized on importing specific computed helpers rather than using `computed.foo`
- switched tests from using `wait()` to `settled()`
2022-01-21 19:25:47 +00:00
Kevin Ansfield
98b5506d64 🎨 Added confirmation dialog any time a post/page will be published
refs https://github.com/TryGhost/Team/issues/1169

Previously we were only showing a confirmation dialog if a publish action would trigger an email which was inconsistent and did not instil confidence when publishing.

- replaced old `modal-confirm-email-send` modal with the newer-style `modals/editor/confirm-publish` component
  - updated to handle standard publish in addition to email publish
  - updated copy
  - added "error" state when attempting to send email-only post to no members
- updated publish menu `save` task to open the confirm modal when going from `draft` to `published` or `scheduled`
  - underlying save with email polling moved to `_saveTask` so it can be re-used across `save` task (when not publishing) and when confirming from the modal
2021-12-07 00:18:24 +00:00
Kevin Ansfield
84b8d1be3b Moved cmd+shift+p shortcut handling into <GhPublishmenu>
refs https://github.com/TryGhost/Team/issues/1169

We want all publish actions to trigger a confirmation modal. Currently that confirmation modal is controlled by `<GhPublishmenu>` which made it difficult to use from the route-induced publish shortcut.

- removed old shortcut mixin approach from the editor route
- added modern keyboard handler to a hidden element that is rendered any time the publish menu is present
2021-12-01 11:51:10 +00:00
Kevin Ansfield
b474e00cf8 🐛 Fixed inconsistent publish/send messaging in publish menu
no issue

- fixes the "publish/send" dropdown showing when mail is not allowed by tying it to the `canSendEmail` property rather than always showing when editing a draft post
  - was previously showing when mailgun is not configured and when default email recipients is set to "disabled", in both cases the recipient selection was never available so the dropdown was confusing and lead to invalid states
  - removed the unnecessary property`showEmailOnlyInput` - replaced with `@canSendEmail`
  - removed the unnecessary property `nextActionName` - it always resulted in "publish" because it was only being shown for pages and pages can't be sent by email
- removed the logic for setting the initial selected option in `<GhDistributionActionSelect>` because it meant the select was not directly tied to the real distribution action value leading to mixed states across components. Switched to using the passed in `@distributionAction` value directly.
- fixed the publish button incorrectly showing "Publish & send" when no send would be occurring for a post
  - if "Publish & Send" is selected, the button will now show "Publish" when no recipients are selected
- fixed the publish button incorrectly showing "Publish & send" for pages
- fixed the now/schedule radio texts not changing when publish type was set to "Send" - the conditionals were incorrectly looking at `this.args.post.emailOnly` which is incorrect syntax would only update _after_ saving, switched to the menu's internal `@emailOnly` argument instead
2021-10-21 13:08:08 +01:00
Kevin Ansfield
94c3163834 🐛 Fixed "Send" publish type not being reset when closing publish menu
refs https://github.com/TryGhost/Team/issues/1151

- we were setting `emailOnly` on the publish menu component but not resetting it meaning when you re-opened the menu after previously selecting "Send" the menu would still show "Send" but the state was inconsistent because the underlying `distributionAction` property _was_ reset
- dropped setting `emailOnly` directly in favour of making it a computed property based on `distributionAction === 'send'` so we only have to worry about changing distribution action and everything else updates for us automatically
2021-10-15 16:45:58 +01:00
Kevin Ansfield
89a6bc683b 🐛 Fixed incorrect publish type showing in publish menu after close/re-open
closes https://github.com/TryGhost/Team/issues/1151

The publish-type state was being set directly on the model in the publish menu rather than being internal to the menu until publishing. A previous attempt had been made to fix that but it wasn't complete and resulted in the menu showing that it would "Publish" after setting it and closing/re-opening when in fact it would "Publish and send".

- moved all state for the distribution type and email settings to be stored in the `<PublishMenu>` component rather than split across the the component and model
- when saving a post from the publish menu, we now pass `emailOnly` as an option to the editor's save task the same as `sendEmailWhenPublished` (corresponding to the `email_recipient_filter` query param) so that we're back to one place controlling email behaviour for a post
- when `emailOnly` is passed as an option to the editor save task it will set the property on the model before saving and reset it back if the save fails. That way the email-only flag behaves as close to the "send when published" flag as possible without it also being sent as a query param.
2021-10-15 15:42:32 +01:00
Naz
93893fe7f1 Fixed 'Publish & Send' CTA in page publish menu
https://linear.app/tryghost/issue/CORE-100/publishandsend-text-visible-on-page-publish-menu

- Page publish menu should not have any knowledge about "email-only" posts, the text in the publish menu should never show any variation of the "send" option.
2021-10-12 12:32:39 +02:00
Naz
4f3e340c03 Promoted email-only feature to general availability
refs https://github.com/TryGhost/Team/issues/1125

-- Email-only is not considered a general availability feature and can be used without special flags.
- It allows to publish a new post type "email only" that only goes out as an email newletter and is available through an undescoverable URL (does not appear anywhere publicly similarly to preview posts) on the site.
- The new "send" option in the post publishing menu allows to send this new type of post.
2021-10-07 12:07:48 +02:00
Naz
349230f2f5 Removed commented post.save call in puglishmenu
refs https://linear.app/tryghost/issue/CORE-71/email-only-posts-hand-off

- The piece of code was commented out with an intention of keeping an existing pattern of only calling post's save's when edits are done in the editor or PSM. The changes in the publishmenu should not effect the model and have a need to save it
- The side-effect that still needs to be sorted is the change to the 'saveType' is effecting a model and causes a confirmation modal when leaving the post screen
2021-10-05 13:47:15 +02:00
Rishabh
8e84b8e5ef Fixed email recipient list in publish menu not showing selected tiers
refs https://github.com/TryGhost/Team/issues/1032#issuecomment-918554923

- the email recipient menu in publish menu was not correctly translating the tiers in specific tier selection when matching post level access
- in case of specific tier, visibility type on post is `filter` and the visibility filter data is in a separate field on post - `visibilityFilter`, so it got missed
2021-09-14 13:09:22 +05:30
Kevin Ansfield
b6f973e5a6 Commented out unexpected save each time publish menu is closed
refs 107ed0e1f3

- save shouldn't be happening here as it means unexpected changes could be saved to published posts without the user's consent
- save is related to a labs feature so it should have been behind a labs flag
2021-09-09 15:35:09 +01:00
Naz
107ed0e1f3 Added post distribution labels to publish menu
refs https://github.com/TryGhost/Team/issues/947

- With email-only posts there's a new "send" status that deserved it's own publishing action in the post publish menu. With with addition the post ended up having few more publishing states: publish, send, and publish&send. In addition to all this there's a "schedule" option. An addition of the "send" only select option there became a need to persist the "email_only" flag when the option was changed in the publish menu. Such persistance was not done before from the publishing menu and led a whole chain of additional methods being passed down from publishmenu component all the way down to distribution-action-select component
- At this moment only a happy path work properly when selecting one of the publishing options and publishing. More states will need to be handled for scheduled, unblished, etc. states of the post
2021-08-26 23:37:51 +04:00
Naz
dfb0acf1a1 Fixed error not showing up in PPM after instance freeze
refs https://github.com/TryGhost/Team/issues/999
refs 637fa58983

- Right after the freeze is triggered the post publish menu did not have the latest settings loaded to display the "disabled email" warning.
2021-08-20 14:07:19 +04:00
Naz
637fa58983 Moved the email sending validation to pre-publish step
closes https://github.com/TryGhost/Team/issues/999

- Previous UX when the error popped up after the publish action was submitted was bad. Showing a warning and not allowing to send an email preembtively gives much better UX.
2021-08-19 17:50:21 +04:00
Naz
f23e8bc801 Changed post publish menu copy with "send" state
refs https://github.com/TryGhost/Team/issues/947

- Before making a bigger changes - introducing an inline component with send/send&publish/publish dropdown, have made minimal copy changes to reflect what's about to happen after the publish menu submit button is pressed
2021-08-13 16:23:55 +04:00
Thibaut Patel
dc9c812d9c Renamed isAdmin/isOwner/isAdminOrOwner to reduce confusion
issue https://github.com/TryGhost/Team/issues/857

- The goal is to avoid testing for the owner role only is cases where we should be testing for the owner or admin role
- `isOwner` => `isOwnerOnly`
- `isAdmin` => `isAdminOnly`
- `isOwnerOrAdmin` => `isAdmin` (concerns now both Owner and Admins)
2021-07-12 14:55:56 +02:00
Kevin Ansfield
77bd0ab6f1 Fixed default email recipients when visibility is members or paid
no issue

- since we reverted the post visibility changes, the visibility filter passed to `<GhMembersSegmentSelect>` was passing through `'members'` or `'paid'` which aren't known values
2021-05-21 17:53:29 +01:00
Kevin Ansfield
b08716a981 Fixed publish menu email recipients not matching post visibility
no issue

- updated to use the NQL query that now exists in `posts.visibility` rather than the older `members` and `paid` values
2021-05-11 13:20:53 +01:00
Kevin Ansfield
0caa539330 Added label and product options for email recipients (#1947)
refs https://github.com/TryGhost/Team/issues/581
requires https://github.com/TryGhost/Ghost/pull/12932

- added segment option and select to default newsletter recipients setting
- updated segment selector to fetch labels/products and show as options
- updated segment selector and count component to call an action when count changes so we can use it in the email confirmation modal
- removed usage and mapping of older `'none'`, `'all'`, `'free'`, and `'paid'` email recipient filter values
2021-05-07 11:58:05 +01:00
Kevin Ansfield
da49dc4922 Added default newsletter recipients setting (#1946)
refs https://github.com/TryGhost/Team/issues/496
reqs https://github.com/TryGhost/Ghost/pull/12925

The publish menu was meant to default to matching post visibility but that wasn't working consistently and didn't make sense for sites which don't email every post to their members.

A "Default newsletter recipients" option has been added to the "Email newsletter" settings screen and the publish menu updated to reflect the option. The free/paid toggles in the publish menu have also been swapped out for a multi-select style component that will cater to more complex member segmentation.
2021-05-07 10:02:19 +01:00
Naz
36feb46c65 Added email limit check in post's publish menu
refs https://github.com/TryGhost/Team/issues/588

- The change allows to give information about not being able to send a newsletter along with publishing the post instead of waiting for a server response to fail
- Implements client-side limit check for email along with information coming from limit's error message
2021-05-04 21:46:29 +04:00
Fabien 'egg' O'Carroll
b6047ae017 Updated paid member filters to handle comped status (#1839)
refs https://github.com/TryGhost/Ghost/issues/12602

As members can now have a status of 'comped' as well as 'free'/'paid',
we need to update queries to the API to function as they were before.
2021-02-15 12:15:23 +00:00
Fabien 'egg' O'Carroll
d699479c89 Updated usage of paid param to filter on status (#1833)
no-issue

This updates calls to the Admin API to list members to use `?filter=status:paid` instead of `?paid=true`
2021-02-02 16:08:07 +00:00
Peter Zimon
04d9caefed Updated navigation (#1832)
no issue

Updated settings navigation to a completely redesigned flow for Ghost 4.0 🎉

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
Co-authored-by: Fabien O'Carroll <fabien@allou.is>
Co-authored-by: Rish <zrishabhgarg@gmail.com>
2021-02-02 16:08:06 +00:00
Kevin Ansfield
56f18c8886 Added post.{isPost,isPage} computed properties
no issue

- removes the need to check `post.displayName === 'post/page'` any time we need a conditional on post type
2021-02-02 16:08:05 +00:00
Rish
aec4ee21bc 🐛 Fixed authors failing to publish post with newsletters
no refs

With last release, by default a post has newsletter sending option enabled by default based on default visibility. Since authors don't have permission to see or toggle the email newsletter options, if the newsletter was enabled for them the post publish failed as they lacked permissions to send newsletter. This patches the option by switching off newsletter option when publishing post as an author.
2020-11-23 21:07:34 +05:30
Rishabh Garg
7191fe1558 Added member counts to newsletter publish menu (#1760)
refs 6140a98351

- Adds free/paid member counts to newsletter option in publish menu
- Updates default state for newsletter sending option based on number of members for free/paid
- Updates styling for checkboxes based on enabled/disabled state
2020-11-11 22:38:43 +05:30
Rishabh Garg
49b86b466a Allowed sending newsletter to free members only (#1751)
refs 6140a98351

This officially decouples the newsletter recipients from the post visibility allowing us to send emails to free members only.
2020-11-07 00:24:27 +05:30
Kevin Ansfield
e887af36d7 🐛 Fixed ability to schedule emailed post when date is incorrect
refs https://github.com/TryGhost/Ghost/issues/11757

- moved schedule date validation to occur before we short-circuit for display of the email confirmation modal
2020-04-23 19:43:10 +01:00
Kevin Ansfield
f271415626 Enabled manual typing of post publish dates (#1431)
*  Enabled manual typing of post publish dates

closes https://github.com/TryGhost/Ghost/issues/9256

- stores the typed date internally to the component until
  - Enter is pressed whilst focused
  - Ctrl/Cmd+S is pressed whilst focused
  - the input loses focus
- shows an error message if the typed date is not in the correct format or is invalid
- stops Ctrl/Cmd+S propagating if the typed date is not in the correct format or is invalid
- as long as the date is valid it calls the `setDate` action when the input loses focus, Ctrl/Cmd+S or Enter is pressed
- prevents publish being triggered in the publish menu if an invalid date is entered
- resets any invalid state in the PSM when it's closed
- manages focus when using <kbd>Tab</kbd>
2020-01-10 14:25:59 +00:00
Kevin Ansfield
c1039f929c Added ability to retry failed emails from the confirm modal (#1412)
no issue

- adds a `.retry()` method to the email model+adapter
- adds a retry email task to the publishmenu that follows the same retry-then-poll behaviour as the regular email confirmation
- show a retry button in the confirm email modal if the original send failed
- increases max "immediate failure" poll timeout to 15sec (an 8sec retry-to-failure time has been seen locally)
2019-11-22 15:09:48 +00:00
Kevin Ansfield
30b23f2a7c Added polling when confirming email to show immediate error
no issue

- when confirming email send, after initial save in, poll every second for a maximum of 10 seconds and check the status of the email
  - if it's `'success'` close the modal immediately
  - if it's `'failure'` switch the confirm modal to an error state
  - if the save fails for some other reason (validation, server error) close the modal immediately and let the normal editor error handling do it's thing
- fixed confirm modal not appearing when retrying a save after a post validation failed
- show email status in post status area
    - `"and sending to x members"` when email is pending or submitting
    - `"and sent to x members"` once email is fully submitted
2019-11-20 23:27:09 +00:00
Kevin Ansfield
6fe159c8d9 Updated handling of send_email_when_published
refs 5fd2b7fed1

- sends `?send_email_when_published=true` query param when scheduling/publishing a post with the toggle turned on
  - adds support to the posts adapter for handling the `adapterOptions` option
  - updates the editor `save` task to pass through the required adapter option when a post is being published or scheduled with the toggle checked
- moves state for the email toggle into the publish menu so that we don't try to toggle the model attribute which should only be fetched from the API
- prevent `post.send_email_when_published` being sent to the API via the serializer as it's now a read-only attribute
2019-11-14 17:33:35 +00:00
Kevin Ansfield
7351a962b7 Fixed email subject field not being disabled if mailgun is not configured
no issue

- changed `disabled=deliveredAction` to `disabled=mailgunError` so that it's switching on the correct property
- removed all references to the unused `deliveredAction` property
2019-11-13 11:17:36 +00:00
Kevin Ansfield
0c0da3813e Added confirmation modal and use email model in place of action 2019-11-07 15:56:41 +07:00
Rish
ae39e79ce7 Revert "Added preview modal toggle in publish menu"
This reverts commit 80d58f99cb.
2019-11-07 11:47:16 +07:00
Rish
80d58f99cb Added preview modal toggle in publish menu 2019-11-07 10:54:26 +07:00
Kevin Ansfield
049b2a4949 Fixed unwanted "unsaved changes" modal if changing email toggle without publishing 2019-11-04 17:25:24 +07:00
Kevin Ansfield
56cfbf2cd2 Display "sent" info in publish menu 2019-11-04 16:13:18 +07:00
Kevin Ansfield
352c4af1d7 Refactored usage of .get('property') with es5 getters
no issue
- ran [es5-getter-ember-codemod](https://github.com/rondale-sc/es5-getter-ember-codemod)
- [es5 getters RFC](https://github.com/emberjs/rfcs/blob/master/text/0281-es5-getters.md)
- updates the majority of `object.get('property')` with `object.property` with exceptions:
  - `.get('nested.property')` - it's not possible to determine if this is relying on "safe" path chaining for when `nested` doesn't exist
  - `.get('config.x')` and `.get('settings.x')` - both our `config` and `settings` services are proxy objects which do not support es5 getters
- this PR is not exhaustive, there are still a number of places where `.get('service.foo')` and similar could be replaced but it gets us a long way there in a quick and automated fashion
2019-03-06 13:54:14 +00:00