Refs https://github.com/TryGhost/Team/issues/2878
- The free-only version of Portal will show the signup terms just above the signup button, whereas the non-free Portal version will show the signup terms above the plan selection
- The signup terms settings have been moved to the "Signup options" section
fixes https://github.com/TryGhost/Team/issues/2919
This pull request implements a new feature that allows bulk editing of
posts by a filter. It adds a new `bulkEdit` endpoint to the posts API
and new `PostsService` methods to handle the bulk actions.
The posts list component is duplicated, so we can keep working in a
copied version without affecting the old version without a flag. It
temporarily adds a star icon to indicate featured posts in the posts
list.
refs https://github.com/TryGhost/Team/issues/2680
When selecting a portion of text in KoenigBasicHtmlInput (caption input
for images, newsletter footer text input, new signup notice), and then
pasting a link, some funky things happen:
- Part of the text disappears
- The wrong part of the text is linked
The cause of this is that `KoenigBasicHtmlInput` deletes the selected
text range when pasting, even when pasting a link. so moving that part
below the code that detected a valid link, fixes the issue.
This also adds an option to not close an old style modal when pressing
the enter key (e.g. pressing enter when entering a link causes the modal
to close).
refs https://github.com/TryGhost/Team/issues/2936
We want to make sure that downloads complete in a reasonable number of
time, and the simplest way to do that is to cap the size of the file.
refs https://github.com/TryGhost/Team/issues/2935
This allows us to track the state with a loading spinner and a
success/error message on completion. This is expecially important for
larger sites where the download can take a long time, and users are
unsure if something is happening.
The existing approach didn't expose when the download was complete.
By fetching the file upfront and downloading from a blob we can better
estimate when the download is complete because we load the file in
memory, and then download from there.
The promise resolves after the file is in memory, so the delay between
the promise resolving and the file actually being downloaded is a lot
shorter, and based on the size of the file.
refs TryGhost/Team#2833
- for mocha tests, we can add `this.retries(1)` to any flaky tests
- for playwright tests, we can add `test.describe.configure({ retries:
1})` to any `describe` block
- not a long-term solution, but it should help mitigate issues with flaky
tests in short term
Because we load Portal in an iFrame the anchor tags do nto work
correctly. We've intercepted all clicks on them and manually opened
the URL in a new window instead.
no issue
- Made improvements to the translation strings.
- Turns out I need to read & write in my mothertongue more often. :)
- Thanks for helping with the contribution Dad, @ Emil Langeveld.
closesTryGhost/Team#2793
- if a member is imported with a created_at in the future, the member
will not appear in the members list in admin
- this commit updates created_at to the current date if it is in the
future upon import
refs https://github.com/TryGhost/Team/issues/2691
refs
939f25a987
- Resurrected refed commit that was adding tests for versioning API,
this time it's using dynamic replacements to match dynamic content of
the email using matchHTMLSnapshot / matchPlaintextSnapshot with dynamic
content replacements.
refs https://github.com/TryGhost/Team/issues/2691
- This bump changes the "sentEmailCount" method to a more descriptive "assertSentEmailCount" and adds chaining to this method.
Refs https://github.com/TryGhost/Team/issues/2878
- The default checkbox component is limited in terms of styling. This commit replaces the default checkbox with a custom checkbox component in Portal, which turns red when a signup attempt is made without checking the box.
refs TryGhost/Team#2691
- The bump adds possibility to make email's html/text snapshots with dynamic content. The breaking change here is with separate "matchPlaintextSnapshot" method extracted out of "matchMetadataSnapshot" to handle dynamic content in "text" part of the sent email.
refs https://github.com/TryGhost/Team/issues/2878
We've updated the signup page to display the signup terms and checkbox when
they've been set, as well as denying the signup from occuring if the checkbox
is required and not checked.
We've had to add a random value for the `key` property of the checkbox because
otherwise it isn't rendered correctly, unsure why that is at the moment.
Without the random key, the checkbox is never visually checked, even though the
internal state of both the component and the virtual DOM do say it should be
checked, it seems some kind of equality checker is broken.
We had two implementations for the same signup logic, which meant that we would
have to update two places when modifying the logic. This consolidates the logic
into a single method so that when we add the terms and checkbox feature we can
make the checks in a single place.
no issue
This change waits for domain events and jobs before continuing with the
next test. This prevents issues where background tasks in tests are
executed when the next test is running and the configurations have
changed, causing random error logs and test failures.
It also includes a change in Stripe mocking in one E2E test to make use
of the new StripeMocker instead of custom mocking in each test (also to
reduce error logs).
refs TryGhost/Team#2891
- test was flaking frequently enough that we had to remove it — not a perfect fix but figure it's better to enable retries than to completely remove the test
- ran CI 5 times (x 4 environments) and it passed 5 times in a row