refs https://github.com/TryGhost/Team/issues/221
- we're getting ready for the 4.0 API version so we should be using canary to fully test the changes
- changed from `v3` to `canary` in `utils/ghost-paths.js`
- updated mirage and tests to use `ghostPaths` util so we only need to change the version in one place in the future
refs https://github.com/TryGhost/Team/issues/460
- use the `user.accessibility` field via the `feature` service to add a `launchComplete` property
- this is the best place we have currently for UI-specific concerns
- toggle the property to `true` when the "Launch!" button is clicked in the final wizard step
- hide the launch site wizard link on the dashboard if launch has been completed
refs 6a14087ccc
- `super()` is needed in `beforeModel()` hook so that the AuthenticatedRoute redirect can occur
- launch wizard acceptance test needs to use an Owner user because Admins don't have access
refs https://github.com/TryGhost/Team/issues/460
- member payment settings are only changeable by owners which would leave the wizard being a single step
- wizard is designed to be used as one of the first things after initial site setup which will be completed as the owner user
refs https://github.com/TryGhost/Team/issues/460
- added "already connected" state for stripe with connected account name, test mode indicator, and disconnect button
- updated save task to skip integration token check when already connected
- adjusted template to have a deeper conditional for stripe connect vs stripe direct to remove duplication and shorten template
Refs https://github.com/TryGhost/Team/issues/460
- Made nav buttons sticky to bottom
- Introduced gh-btn-large for larger buttons
- Improved spacing
- Got rid of borders between settings
* Admin UI update basics
Added the basics for the Admin UI/style update. Very far from being done...
* Admin style updates
- exploring menu
- enabling full width content (integrations selection bg)
- updated main screens
refs https://github.com/TryGhost/Team/issues/460
- fixed mismatches in property naming for key fields
- updated error handling to show errors for missing and invalid stripe keys
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
refs https://github.com/TryGhost/Team/issues/459
- pass required properties+actions through editor->post preview modal->publish menu
- replace publish button placeholder with `<GhPublishMenu>`
- close modal when saving if not a silent save
refs https://github.com/TryGhost/Team/issues/459
- hid when post is published
- we have no facility for previewing unsaved changes to a published post via the front-end which would mean the desktop/mobile preview tabs are not useful
- email preview content is similarly generated from saved data meaning that tab wouldn't serve as a preview (plus emails can't currently be sent for an already published post)
- hid when post is "new" (unsaved)
- similar to the reasoning for hiding when published, if the post is not saved then no content exists for the server-side previews to be generated
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
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
refs
- dropped the portal service in favour of using the existing `membersUtils` service
- renamed `getPreviewUrl()` to `getPortalPreviewUrl()`
- update the iframe src to point to the portal preview url when on the pricing step
- added free/monthly/yearly checkboxes to pricing step
- update iframe src with regenerated portal preview params when making changes
no issue
depends on cc08be0e34
The subscriptions data on member - stripe.subscriptions - is flattened to top level subscriptions in v4 API. This PR -
- Updates model to use the new data structure
- Updates serializer to handle new data structure
- Updates references to subscriptions data
no issue
- save task was missing a truthy return value and call to transition to next step
- added a 500ms timeout after saving so the "saved" text is visible before moving to the next step
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>
refs https://github.com/TryGhost/Team/issues/450
- swapped individual step routes for single launch route and query params to allow for easier management of step content and preview via components
- defined all wizard steps inside of launch controller
- updated templates to use a fixed preview across all steps
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
refs https://github.com/TryGhost/Team/issues/451
- adds accent colour picker to "customise design" step
- updates colour picker to save & refresh 500ms after a value change
- saves and refreshes immediately on blur of input field unless value hasn't changed since last save and refresh
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
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
no issue
- adjusted centering behaviour to remove hardcoded fixed widths
- adjusted button styling to account for having more than 2 buttons in the button group
refs https://github.com/TryGhost/Team/issues/450
Initial prototype of new launch-site wizard, meant to speed up the setup of a members site with the following steps:
1. Customise design
2. Connect Stripe
3. Set subscription pricing
- added wizard link to dashboard screen
- added `/launch/*` screens representing the wizard steps
- duplicated and refactored relevant general and members setting code and templates into each step
no issue
- adds blank `/dashboard` route ready for future 4.0 related changes
- `/` now redirects to `/dashboard` instead of `/site`
- adds "Dashboard" link to main nav menu
refs https://github.com/TryGhost/Team/issues/450
- duplicated and refactored/updated members pricing settings UI from labs to the "set pricing" step of the launch site wizard
refs https://github.com/TryGhost/Team/issues/450
- duplicated and refactored/updated direct and connect settings UI from labs to the "connect stripe" step of the launch site wizard
- updated wizard buttons to be right-aligned
no issue
- due to various levels of sub-dependency support across our postcss dependencies we'd ended up with three different versions of postcss installed (6, 7, and 8)
- pinned our dependencies to versions that all use postcss@^7
- we can't upgrade to postcss@8 because we make heavy use of `color-mod` which is no longer in the CSS spec and so the dependency providing it has not been updated
- switched from `postcss-easy-import` to `postcss-import` to drop the postcss@6 sub dependency (we weren't using any of the features that postcss-easy-import added over postcss-import)
- initial tests show CSS compilation times to have roughly halved
- disabled renovate for css dependencies to reduce noise for updates we can't merge
refs https://github.com/TryGhost/Team/issues/450
- moved next/finish buttons into wizard step components in case they need to save before triggering transition
- added icon, logo, and cover image upload+removal to "customise design" step alongside a preview that reloads each time an image is changed
refs https://github.com/TryGhost/Team/issues/450
- adds `launch/*` routes corresponding to launch wizard steps
- sets up navigation between each wizard step
- adds components for each `launch/*` step to contain step-related functionality and facilitate later refactoring to a generalised wizard component
- adds link to the launch wizard from the dashboard screen
no issue
- we should be testing production functionality by default, if tests need to test functionality behind the developer experiments flag they should explicitly enable it
no issue
Adds new FirstPromoter integration on the integrations page. FirstPromoter enables sites to launch their own members referral program, and integration allows Site admins to directly add their FirstPromoter tracking ID in the settings to enable FirstPromoter script on their site.
closes https://github.com/TryGhost/Ghost/issues/12396
We use two stylesheets ghost-light.css and ghost-dark.css for light mode and night mode respectively. The problem occurs when we disable the light stylesheet when we enable dark stylesheet, as there is a moment when there is no style applied. This causes flash of unstyled content (or a big logo when users flip the night mode switch)
Since the ghost-dark style is loaded after the ghost-light stylesheet, we only need to enable or disable the dark stylesheet. When the dark stylesheet is enabled, the light stylesheet will be overridden automatically by the browser. I could not find any performance implications on overriding styles. The only performance implication is around loading a new stylesheet which we already do.
No issue
- Member email is cut off when overflowing on mobile
- Not displaying date moment-from-now and chevron on mobile
- Fixed left alignment issue for geolocation when there's no open rate
refs 772f5fa766
- when pulling the customer data display out of the subscriptions loop the data output was not updated to match
- adds a `customer` property to the `<GhMemberSettingsForm>` backing class that pulls the customer data from the first available subscription and adds the `startDate` property. Using the first available customer record works because there's a 1:1 mapping of member to stripe customer
no issue
- the customer info table was being rendered as part of the `{{#each member.subscriptions}}` loops which meant it was being rendered again for every subscription
- moved the customer record display out of the subscriptions loop
no issue
- `email_recipient` records are embedded alongside member data when fetching individual members so the member activity feed can be generated
- full email details are included for each email so that previews can be generated which can result in a large payload
- by default Ember Data will push all embedded records back to the server when saving which resulted in `Request entity too large` errors in some environments when a member has received many emails
* Fixed issues for member details mobile view
No-ref
- Changed order to display feed at the bottom
- Displayed heading and value vertically between 1400px and 1160px
- Displayed "Complementary plan" copy and switch vertically between 1400px and 1160px
- Added margin below "Continue subscription" button
- Prevented date in feed to wrap
* fixed tests
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
no issue
- liquid-fire containers (inserted by `{{#liquid-if}}`) have `overflow: hidden` applied which means the absolutely positioned tooltips that leave the container are clipped or in some cases not visible at all
- adding `class="show-overflow"` to `{{#liquid-if}}` adds the class to the top-level `.liquid-container` element allowing us to alter the behaviour slightly in CSS by making use of the `.liquid-animating` class that is added whilst the animation is in progress. By only applying `overflow: hidden` whilst animating we can keep the reveal whilst eliminating the clipping when the animation finishes
- does not work in all cases and can introduce jankiness in others where the visible overflow causes positioning changes
closes https://github.com/TryGhost/Ghost/issues/12461
Design changes:
- added activity feed to member details page
- rearranged Stripe info to display on the right
- added toggle buttons for Stripe subscription and customer info
- added box to display activity feed for received and opened emails
Functionality changes:
- added `queryRecord()` to member adapter so `queryRecord('member', {id: x})` will hit `/members/:id/?query` instead of `/members/?id=x&query`
- updated member route to query member with `?include=email_recipients`
- added `EmailRecipient` model for access to event timestamps and email relationship setup
- added `<GhMemberActivityFeed>` component that accepts an `EmailRecipient` array and converts that into an activity list
- added support for `@model=emailInstance` to the email preview modal
- fixed a timing issue with email preview that could result in it showing blank content until the mobile/desktop toggle is used
- fixed sometimes blank member location
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
no issue
- Disabled import button if mapping screen has 0 members to be imported
- Updated UI logic for no-member upload case
- Used bullet list for email summary
no refs
depends on https://github.com/TryGhost/Ghost/pull/12472
The members CSV importer gets an overhaul and works with new importer module in members service, performing the import in a background job when the import will take too long to complete in a reasonable time and send an email with data on completion. Also includes updated CSV mapping UI and error handling to allow easier import from different type of exports.
Co-authored-by: Fabien O'Carroll <fabien@allou.is>
Co-authored-by: Peter Zimon <zimo@ghost.org>