Commit Graph

1277 Commits

Author SHA1 Message Date
Kevin Ansfield
5a8753fb8f Added ability to install free themes directly from GitHub (#1837)
refs https://github.com/TryGhost/Ghost/issues/12608
requires https://github.com/TryGhost/Ghost/pull/12635

- adds `/settings/themes/install` route with `source` and `ref` query params that match the API. Shows a confirmation modal when accessed asking to confirm installation and activation
  - does not allow Casper to be installed
  - warns if installing the theme will overwrite an existing one
  - follows similar process to zip uploads for error handling
- adds install/preview links for Massively in the free themes showcase

Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
2021-02-12 09:19:25 +00:00
Kevin Ansfield
3ed73c795d Fixed plan type checkboxes not updating portal preview in launch wizard
refs https://github.com/TryGhost/Team/issues/460

- incorrect property names were used
2021-02-11 18:37:23 +00:00
Peter Zimon
adc4e1e077 Updated dark styles 2021-02-11 16:24:49 +01:00
Peter Zimon
b8a79467ae Updated icons 2021-02-11 11:45:14 +01:00
Peter Zimon
9f6c83cd85 Updated no member UI 2021-02-11 10:56:54 +01:00
Peter Zimon
660ed2c79d Updated account menu 2021-02-10 21:05:54 +01:00
Peter Zimon
86ee1142e0 Member details screen refinements 2021-02-10 19:55:35 +01:00
Peter Zimon
7c2bae6f29 CSS restructure for main sections 2021-02-10 18:48:27 +01:00
Peter Zimon
7b88038d05 Fixed payments settings 2021-02-10 16:50:34 +01:00
Peter Zimon
9093b32529 Refined editor main buttons 2021-02-10 16:35:25 +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
Peter Zimon
d13505ea7a Updated email design UI 2021-02-10 11:29:54 +01:00
Peter Zimon
ae9abe22c0 Update portal settings UI 2021-02-10 11:08:09 +01:00
Peter Zimon
5329506db9 Updated member email settings UI 2021-02-10 09:24:34 +01:00
Peter Zimon
da8c86ca7e Updated expadable list styles 2021-02-09 18:13:07 +01:00
Peter Zimon
ebb83d7fb8 Updated expandable UI 2021-02-09 17:23:03 +01:00
Kevin Ansfield
054b82f822 Fixed launch wizard preview not showing plans after connecting Stripe
refs https://github.com/TryGhost/Team/issues/460

- after connecting Stripe we were showing the "set pricing" step with the portal preview but the portal preview did not reflect Stripe having been connected
- the problem arose because we were triggering the portal preview without refreshing the preview in the iframe, meaning the portal preview only had access to the "before stripe" state
- forcing a refresh after successfully connecting Stripe ensures portal is loaded with all the necessary state
2021-02-09 15:53:26 +00:00
Kevin Ansfield
b4e750466d Hid tour throbbers when opening launch wizard
refs https://github.com/TryGhost/Team/issues/460

- add `showTour` property to `ui` service
- updated `<GhTourItem>` to not render anything if `ui.showTour` is `false`
- updated launch wizard template to hide tour when open and re-enable when closed
2021-02-09 11:43:44 +00:00
Rish
5fe20898d6 Revert "Revert "Updated usage of subscriptions data for members (#1834)""
This reverts commit d539d4ca53.
2021-02-09 07:52:40 +05:30
Peter Zimon
605cb81865 Form heading UI update 2021-02-08 22:30:48 +01:00
Peter Zimon
8490ebc542 Updated general settings UI 2021-02-08 21:51:26 +01:00
Peter Zimon
6e1b6a2618 Updated custom integration UI 2021-02-08 21:16:41 +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
Peter Zimon
78d23a2544 Admin UI: added global section grid 2021-02-08 17:22:53 +01:00
Peter Zimon
0ef70cb568 Updated member details page 2021-02-08 15:35:08 +01:00
Peter Zimon
977c2dcb0d Updated member details 2021-02-08 14:55:18 +01:00
Sanne de Vries
44c935847e Fixed responsive issue for launch-site wizard
No ref

- Prevented preview from overlapping settings
- Avoided "Save and exit" button to left-align on smaller screens
2021-02-08 14:10:34 +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
Sanne de Vries
47abad1837 Updated buttons and styles in editor, post-preview modal and launch-site wizard
No ref

- Updated all buttons in the editor header
- Updated buttons in publish menu
- Updated back-button in post-preview
- Updated icons for launch-site wizard
- Updated Stripe-info box in launch-site wizard
2021-02-08 10:13:26 +01:00
Peter Zimon
f4766d1920 Members list style cleanup 2021-02-05 18:27:40 +01:00
Peter Zimon
abdebe4727 Updated members chart style 2021-02-05 15:43:20 +01:00
Peter Zimon
cb40158666 Updated members list screen UI 2021-02-05 12:04:42 +01:00
Peter Zimon
5fbd01a237 Updated colors 2021-02-05 12:04:42 +01:00
Sanne de Vries
8e702e420e Improved nav buttons in launch-site wizard
Refs https://github.com/TryGhost/Team/issues/460
2021-02-05 11:03:19 +01: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
f470549e80 Hid launch-site link on dashboard once wizard is completed
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
2021-02-04 18:35:19 +00:00
Kevin Ansfield
29ae0f734c Added ability to disconnect Stripe in launch wizard
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
2021-02-04 16:49:06 +00:00
Peter Zimon
3f0ec92119 Updated button styles| 2021-02-04 17:25:42 +01:00
Peter Zimon
879c7866e9 Members screen UI refinements 2021-02-04 16:52:19 +01:00
Peter Zimon
ae77dad8dd Added segmented control style 2021-02-04 15:25:28 +01:00
Sanne de Vries
80895f15e3 Improved launch wizard design
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
2021-02-04 15:02:57 +01:00
Rish
d539d4ca53 Revert "Updated usage of subscriptions data for members (#1834)"
This reverts commit fbd42ef33e.
2021-02-04 11:56:26 +05:30
Peter Zimon
c757ddbef8 UI updates (#1835)
* 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
2021-02-03 20:08:01 +01:00
Kevin Ansfield
d287848393 Fixed unsaveable Stripe direct keys in launch-site wizard
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
2021-02-03 16:45:09 +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
Sanne de Vries
1ee2be76c3 Changed design for Set up subscriptions and Finalise steps in Launch wizard
Refs https://github.com/TryGhost/Team/issues/460
2021-02-02 16:08:08 +00:00
Sanne de Vries
b8df7b7a28 Changed design of Connect to Stripe step in Launch wizard
Refs https://github.com/TryGhost/Team/issues/460
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
be01fa6920 Added publish menu to post preview modal
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
2021-02-02 16:08:08 +00:00
Sanne de Vries
f9779cf5e3 Changed design of first step Launch wizard to be consistent with branding modal in settings
refs https://github.com/TryGhost/Team/issues/460
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
Kevin Ansfield
7687571b12 Updated launch wizard pricing step to show portal preview
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
2021-02-02 16:08:07 +00:00
Rishabh Garg
fbd42ef33e Updated usage of subscriptions data for members (#1834)
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
2021-02-02 16:08:07 +00:00
Kevin Ansfield
d520e2b079 Extracted portal preview url generation into service
no issue

- allows for preview url generation to be shared across the portal design settings screen and the payment setup step of the launch wizard
2021-02-02 16:08:07 +00:00
Kevin Ansfield
9e05e134e1 Fixed next step transition when saving pricing in launch wizard 2021-02-02 16:08:07 +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
Kevin Ansfield
df453ed874 Fixed pricing step error due to renamed file
no issue

- `gh-members-lab-setting` was renamed to `gh-members-payments-setting`
2021-02-02 16:08:06 +00:00
Kevin Ansfield
23a4066a01 Fixed stripe connect step failing in launch wizard
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
2021-02-02 16:08:06 +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
214158bee8 Refactored launch wizard
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
2021-02-02 16:08:06 +00:00
Kevin Ansfield
6954d2f185 Added <GhBrowserPreview> component for re-usable browser chrome 2021-02-02 16:08:05 +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
ac6b011298 Added accent colour to customise design step of launch wizard
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
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
Sanne de Vries
76419917bf Changed design for first step of the launch wizard 2021-02-02 16:08:05 +00:00
Kevin Ansfield
f5372376f3 Fixed typo in template file
refs d364fc1146
2021-02-02 16:08:05 +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
Peter Zimon
202468c025 Move accent color to Design settings 2021-02-02 16:08:05 +00:00
Kevin Ansfield
7b593e5df0 Fixed modal confirm actions
refs 2527a856ce

- typo `confirm/config` in previous commit that refactored fullscreen modal template
2021-02-02 16:08:04 +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
Peter Zimon
c610d3d072 Moved members settings out of labs 2021-02-02 16:08:04 +00:00
Peter Zimon
e903046813 Basic settings restructure
- created new central settings page and moved there all settings from the nav menu
2021-02-02 16:08:03 +00:00
Kevin Ansfield
4b5f3f64a4 Added launch wizard prototype
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
2021-02-02 16:08:03 +00:00
Kevin Ansfield
a6b11b8c0c Added blank dashboard screen
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
2021-02-02 16:08:00 +00:00
Kevin Ansfield
a059ace335 Reverted dashboard route
no issue

- removing dashboard prototype from master ready to re-apply in 4.0 branch
2021-01-21 09:04:54 +00:00
Kevin Ansfield
72d8b4f14d Reverted launch wizard prototype
no issue

- removing launch wizard from master ready to re-apply in 4.0 branch
2021-01-21 09:02:19 +00:00
Kevin Ansfield
f6a82b0099 Added pricing setup to launch site wizard
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
2021-01-20 15:49:14 +00:00
Kevin Ansfield
63c1f2060c Added stripe connection to 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
2021-01-19 22:31:59 +00:00
Aileen Nowak
abc38ab375 Updated links to ghost.org sites
no issue

Follow-up task of the updated Ghost Docs structure. Updated links reflecting the new structure to prevent unnecessary 404s and redirects.
2021-01-19 13:18:59 +13:00
Kevin Ansfield
2b41499b22 Added design customisation and preview to launch wizard
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
2021-01-18 17:48:11 +00:00
Kevin Ansfield
d48abaa1f8 Added outline launch wizard framework
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
2021-01-18 13:48:23 +00:00
Kevin Ansfield
5463e95d8e Added blank dashboard screen
no issue

- preparatory work for upcoming features
- default homepage when developer experiments is enabled
2021-01-18 09:02:44 +00:00
Kevin Ansfield
17a69850a2 Removed "unsubscribed" events from member activity feed
refs 63f7f9a827
closes https://github.com/TryGhost/Team/issues/446

- email failures no longer auto-unsubscribe members so we shouldn't show that in the activity feed
2021-01-12 18:44:43 +00:00
Sanne de Vries
44ff46277c Fixed several responsiveness issues in members list
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
2021-01-08 14:01:48 +01:00
Sanne de Vries
57c376e202 Fixed overflowing content on mobile for user rows on staff page 2021-01-07 17:12:28 +01:00
Kevin Ansfield
8c712d62bf 🐛 Fixed blank data in member customer tab
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
2021-01-06 11:56:15 +00:00
Kevin Ansfield
772f5fa766 🐛 Fixed duplicate customers showing for members with multiple subscriptions
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
2020-12-19 09:11:13 +00:00
Sanne de Vries
27cc99c907 Fixed issues for member details mobile view (#1807)
* 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>
2020-12-16 10:04:33 +01:00
Kevin Ansfield
a3b2f2072a 🐛 Fixed clipped tooltips in member activity feed after showing all
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
2020-12-11 11:04:18 +00:00
Sanne de Vries
20d0ef2fe7 Changed tooltip on hovering schedule state in post list from uppercase to capitalised 2020-12-11 09:49:07 +01:00
Sanne de Vries
e4c4237365 Fixed overflow issue for ID and email in member Stripe info 2020-12-10 15:33:12 +01:00
Sanne de Vries
57dc3ca115 Changed icon color for received emails in member feed 2020-12-10 15:06:45 +01:00
Kevin Ansfield
c84282d5da Added member activity feed icon color classes
no issue

- use green for normal activities and red for failed/undesireable activities
2020-12-10 14:01:11 +00:00
Sanne de Vries
2453f6afbd Added activity feed to member details screen (#1796)
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>
2020-12-10 11:38:38 +00:00
Peter Zimon
be0ad730e0 Copy fix for member import errors
no refs.
- removed full stops from member import error messages
2020-12-10 12:15:07 +01:00
Rishabh Garg
69782e7aca Updated UI for empty member import (#1801)
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
2020-12-10 16:33:56 +05:30
Rishabh Garg
f068e40723 Added new members CSV importer (#1797)
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>
2020-12-10 01:02:31 +05:30
Sanne de Vries
4b51ae8705 Fixed responsive layout for members list 2020-12-09 19:10:12 +01:00
Sanne de Vries
3adcf2b5d8 Fixed font color bug for email on member details page 2020-12-09 17:23:25 +01:00
Sanne de Vries
ecfb77b980 Added email stats overview to member details page (#1795)
refs https://github.com/TryGhost/Ghost/issues/12461

- Added "Emails received", "Emails opened", and "Avg. open rate" to member details
- Adjusted visual display of avatar, name and email. Made email a mailto link
- Rearranged Name and Email fields to reduce height
- Changed height of the notes textarea

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-12-09 13:26:00 +00:00
Sanne de Vries
ffe0f84700 Added open-rate column and ordering to the members list (#1790)
closes https://github.com/TryGhost/Ghost/issues/12421

- added `emailOpenRate` property to member model
- added open-rate column to the members list
  - hidden when email analytics is disabled
- added `{{feature "flag"}}` helper so feature flags can be checked in templates without injecting the feature service into the backing class
- added `order` query param to the members controller/route and wired it into the data fetching routine
- added order dropdown to the filter bar with "Newest" (default) and "Open rate" as the two options
  - whole dropdown is hidden if email analytics is disabled

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-12-08 19:23:57 +00:00
Sanne de Vries
70b34432c8 Fixed copy for open-tracking settings 2020-12-02 21:31:11 +01:00
Peter Zimon
b616a839a9 Email settings preview refinements (#1788)
- fixed sizes for email preview area
- replaced static values with dynamic ones
- replaced radio button with font selector
- fixed footer textarea styles
- refined styles
- refined copy
2020-12-02 13:12:41 +01:00
Kevin Ansfield
ca97f84cad Added emailAnalytics feature flag
no issue

- email analytics feature has a potential to be resource-intensive so it may be switched off via config, when this is the case we don't want to show stats in the admin that are out of date or won't be added/updated
- fixed page link titles saying "Edit this post" instead of "Edit this page"
2020-12-02 11:47:34 +00:00
Sanne de Vries
8467bf025b Changed font styling for email stats in posts list 2020-11-30 10:14:27 +01:00
Sanne de Vries
a2a98b575f Added email open rate to posts list in admin (#1772)
no issue

- added "Sends" and "Opens" columns to the posts list to see newsletter performance at a glance
- "Sends" will show the type of members sent to (free, paid, all) as a tooltip
- "Opens" shows open rate by default and total opens on hover
2020-11-26 17:19:05 +00:00
Rishabh Garg
1dd2b33499 Updated Stripe Subscription status label handling (#1784)
refs https://github.com/TryGhost/Ghost/issues/12256

* Replace `_` in stripe's status with space to setup proper status label for subscriptions
* Displayed subscription status for cancelled subscriptions

Co-authored-by: Fabien O'Carroll <fabien@allou.is>
2020-11-25 10:45:18 +00:00
Fabien 'egg' O'Carroll
9cd6ed06a7 Added cancellation reason to Members UI (#1782)
refs https://github.com/TryGhost/Ghost/issues/12403

This is only displayed when it is present, so as not to clutter the UI
unless it's required.
2020-11-24 10:20:21 +00:00
Sanne de Vries
50a423ed2b Added toggle in settings to enable open-tracking configuration (#1777)
closes https://github.com/TryGhost/Ghost/issues/12390
requires https://github.com/TryGhost/Ghost/pull/12404

- Added toggle for open-tracking in settings (Labs > Members > Email section)

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-11-23 18:36:57 +00:00
Daniel Lockyer
0ed99dd0a1 Merged 3.38.3 into master
v3.38.3

* tag '3.38.3':
  v3.38.3
  🐛 Fixed editor unable to handle non-latin IME languages
  🐛 Fixed authors failing to publish post with newsletters
2020-11-23 17:37:19 +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
487724e0fe Added support for external urls for redirect (#1778)
refs https://github.com/TryGhost/Ghost/issues/12366

Adds support for saving external URL's for custom redirects and improves error handling to validate on blur/before saving

Co-authored-by: Fabien O'Carroll <fabien@allou.is>
2020-11-23 09:38:29 +00:00
Peter Zimon
660762e100 Added scrolling for Portal settings links
no refs.
2020-11-20 12:02:35 +01:00
Rish
d8dec01edd Added new portal link for free plan
refs TryGhost/Ghost#12365

Portal allows direct free signup link or data attributes, allowing members to directly share or link to only free plan in Portal popup if available

- A new portal signup link for free plan - `/signup/free`
2020-11-20 15:48:18 +05:30
Fabien 'egg' O'Carroll
b6dfa54b07 Improved UI for custom redirect settings (#1775)
refs https://github.com/TryGhost/Ghost/issues/12366

* Displays URL as absolute, but still stores the path relative to the site 
* Allows pasting absolute URL's or relative
* Does not support external URL's
* Removed redundant "Links" section in Portal settings sidebar

Co-authored-by: Peter Zimon <zimo@ghost.org>
2020-11-20 09:53:08 +00:00
Thibaut Patel
b16b4bcdc7 Added staff personal tokens
refs TryGhost/Ghost#12373
2020-11-20 10:23:19 +01:00
Peter Zimon
3cdb63006a Supported custom redirects for member signup (#1768)
refs https://github.com/TryGhost/Ghost/issues/12366

- added form fields for redirects
- updated CSS to handle scrolling

Co-authored-by: Fabien O'Carroll <fabien@allou.is>
2020-11-19 09:59:51 +00:00
Rishabh Garg
7a0defab17 Added new portal links for plan checkout (#1770)
refs TryGhost/Ghost#12365

Portal now allows direct checkout links for monthly/yearly plans via Portal links or data attributes, allowing members to directly signup to a paid plan. This PR adds -

- A new portal signup link for monthly plan - `/signup/monthly`
- A new portal signup link for yearly plan - `/signup/yearly`

Co-authored-by: Peter Zimon <zimo@ghost.org>
2020-11-18 00:00:46 +05:30
Peter Zimon
b3354c5f67 Fixed copy in newsletter settings
no refs.
2020-11-16 18:44:39 +01:00
Peter Zimon
d03f0f56fb Fixed extra padding in Members settings
no refs.
- removed extra padding when mailgun configuration is not displayed on Members screen
2020-11-16 18:43:38 +01:00
Peter Zimon
7970917872 Updated email recipient checkbox design
no refs.
- changed email recipient checkboxes to switches in the publish menu so that it's nicely balanced
2020-11-16 16:48:42 +01:00
Peter Zimon
c46198f728 Update post email preview design (#1767)
Made post email preview design consistent with the new email settings design preview.

* changed background

* added fake container windows and faux sender/recipient content

* updated mobile and dark mode
2020-11-16 12:16:51 +01:00
Fabien 'egg' O'Carroll
96f096a839 Added support for basic HTML newsletter footer (#1765)
no-issue

This allows users to use basic HTML to customise their newsletter
footer, meaning they can use links, and bold/italic text.
2020-11-16 10:29:32 +00:00
Peter Zimon
8d8a5d8bc3 Updated scroll area for email settings
no refs.
- updated email settings preview scroll area so that now only the content is scrolling not the whole screen
2020-11-13 16:31:21 +01:00
Fabien O'Carroll
65b310d500 Renamed footer setting to newsletterFooterContent
no-issue

This is more generic and matches the setting in the backend.
2020-11-13 13:32:31 +00:00
Fabien 'egg' O'Carroll
fafe7d7b74 Added newsletter footer customisation (#1764)
no-issue

This adds support for customising the newsletter footer with plaintext.
Updates the new modal to use Octane, rather than legacy components.
2020-11-13 13:21:42 +00:00
Peter Zimon
b9ae1f6e95 Updated email address in email settings preview
no refs.
- set actual (dynamic) from address in email settings preview
2020-11-13 12:35:56 +01:00
Peter Zimon
37c5f0ce08 Refined newsletter settings modal
no refs.
- set fake sender, site icon and title dynamic
- removed scrollbar for preview window
2020-11-13 12:18:19 +01:00
Peter Zimon
94581a87f8 Added newsletter customisation options (#1756)
no-issue

This adds three initial customisation options for newsletters:
  1. Show/Hide site title and logo
  2. Set font to serif/sans serif
  3. Display a publish with Ghost badge

This is the first step in allowing customisation of the look and feel of newsletters.

Co-authored-by: Rish <zrishabhgarg@gmail.com>
Co-authored-by: Peter Zimon <zimo@ghost.org>
2020-11-12 14:45:22 +00:00
Peter Zimon
28888be650 Updated publishmenu copy
no refs.
- updated newsletter recepient checkbox label
2020-11-12 11:00:10 +01:00
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
Rishabh Garg
d534bba348 Enabled Portal settings for all sites (#1748)
refs 8ad11fe082

- Removes Portal settings access from behind flag and includes it by default.

Portal script is now enabled as default, the change here allows Site owners to access Portal settings via Ghost-Admin
2020-11-03 14:38:53 +05:30
Peter Zimon
cf9534f31c Fixed truncated label names in members list
no refs.
- fixed Import related labels being truncated in the label filter dropdown list on the Members screen
2020-10-29 18:31:59 +01:00
Sanne de Vries
8b26a2ae7e Changed "Delete snippet" button to sentence case 2020-10-28 13:45:13 +01:00
Sanne de Vries
22050954df Changed copy for snippet deletion modal 2020-10-28 13:30:26 +01:00
Rishabh Garg
2edb7226e1 Added past_due and unpaid subscriptions for members (#1740)
refs https://github.com/TryGhost/Ghost/issues/12256, https://github.com/TryGhost/Ghost/issues/12255

Currently when listing subscriptions for Members in both the Admin and the Theme, we only show the subscriptions which have a status of trialing or active.

Based on discussion, the `unpaid` and `past_due` states on Stripe also represent owner's intention of considering a subscription as active instead of `cancelled`, so we allow any subscriptions under these 2 states to be also listed for a member and consider them as `paid`. This updates Admin to consider those subscriptions as active as well.

- Subscriptions will go into a past_due state if the payment is missed, this should be considered a grace period where the member still has access.

- After this the subscriptions will either go to the unpaid or the cancelled state - this can be configured on an account by account basis in the Stripe dashboard. `unpaid` is considered as an intention to keep the subscription to allow for re-activation later.
2020-10-27 15:27:31 +05:30
Sanne de Vries
c0f7cbcd40 Added a "Sent to xxx members" message in content management screen for posts that have been sent out to members 2020-10-27 09:33:38 +01:00
Kevin Ansfield
1bd4b5cda7 Added delete button with confirmation to snippets in card menus
no issue

- show a delete icon when a snippet is hovered in plus/slash menus
- show a confirmation dialog when the delete icon is clicked
- keep menus open whilst displaying the delete confirmation dialog
2020-10-26 17:09:39 +00:00
Kevin Ansfield
5d97c1710f Update dependency eslint-plugin-ghost to v2.0.0
no issue

- bumps eslint and eslint-plugin-ember versions
- octane rules are enabled by default
  - disabled them in our eslintrc.json so we can switch to warn/error whilst migrating to octane
- fixed a couple of linting errors from new/updated rules
2020-10-23 09:59:09 +01:00
Peter Zimon
6ecba355eb Moved members settings to new page (#1736)
no refs

Moves members related settings in Labs to its own page to improve the overall UX and make it more consistent with the rest of the Admin.
2020-10-22 16:09:00 +05:30
Kevin Ansfield
f1bab33296 Fixed member's location sometimes showing as ", US"
no issue

- geolocation.region is not always available but we had assumed it was. Adjusted the logic to only show "region, US" if region is available
2020-10-22 09:15:03 +01:00
Peter Zimon
94077449b3 Update portal settings (#1731)
* Added auto focusing preview on the signup page while being on links and clicking on any setting in the sidebar

* Refine upload custom portal icon button

* Updated copy for sidebar and links screen

* Added grouping to links list
2020-10-16 15:34:22 +02:00
Kevin Ansfield
b590ce1b95 Implemented first iteration of content snippets
closes https://github.com/TryGhost/Team/issues/411

- adds "Create snippet" icon to the editor toolbar
- uses the same link input component design for specifying snippet titles
- snippets are loaded in the background when the editor is accessed
- snippets are listed at the bottom of the card menus of the + and / menus
- clicking a snippet inserts the snippet's contents in place of the current blank section
2020-10-15 18:03:35 +01:00
Peter Zimon
bc779bb3e7 Fixed 'null' portal button text
no refs.
- fixing portal button displaying 'null' if the portal button text input field is empty
2020-10-14 14:47:08 +02:00
Peter Zimon
eede9e1141 Updated Portal links design
no refs.
- in Portal settings domain and the path are separated visually so that it conveys the concept of using the relative URL instead of absolute
- for similar reasons, copy link copies only the path part
2020-10-12 13:56:37 +02:00
Peter Zimon
d567e975d2 Removed full stop from scheduling text in editor
no refs.
2020-10-09 16:56:37 +02:00
Peter Zimon
a7c0dc7469 Fixed account menu margin
no refs.
- fixes account menu dropdown button margins disappearing on Firefox for smaller screensizes
2020-10-09 16:56:13 +02:00
Kevin Ansfield
a8f63f9343 Fixed usage of {{enable-developer-experiments}} without sub-expression syntax 2020-10-09 15:52:23 +01:00
Kevin Ansfield
235d5f1b8b Added {{enable-developer-experiments}} helper
no issue

- removes the need to have component backing classes with the `config` service injected
2020-10-09 11:10:39 +01:00
Kevin Ansfield
db68f0248b Update dependency ember-in-viewport to v3.8.0
no issue

- now that we no longer have the `ember-sticky-element` dependency we're free to upgrade `ember-in-viewport`
- remove package.json resolution so latest version gets installed
- remove ember-in-viewport from renovate ignore config
- update `<GhScrollTrigger>` to match latest `ember-in-viewport` usage and convert to a glimmer component
  - ensure `scrollableArea` is always set so that the trigger doesn't stop working after the first trigger
2020-10-01 10:06:53 +01:00
Rish
245dbef994 Allowed empty accent color in portal preview
no issue

- Current logic was not setting empty accent color in portal preview which was misleading when no accent color is set
- Updated preview url to contain empty accent color which is picked by Portal preview
2020-10-01 12:28:24 +05:30
Fabien O'Carroll
a93c9bebe9 Updated magic link expiry information to 24 hours
no-issue

Since https://github.com/TryGhost/Ghost/commit/fd5194ea magic links have
a 24 hour expiry
2020-09-30 10:56:12 +01:00
Fabien 'egg' O'Carroll
177d6f773d 🐛 Fixed tag metadata fields not being populated when editing in admin (#1714)
closes #12190

The "scratch" concept was being used incorrectly for codeinjection fields and was not initialised with all the required fields.
2020-09-28 16:20:53 +01:00
Peter Zimon
4142b98cdf Fixed loading spinner size for Portal icons
no refs.
- fixed oversized loading spinner for Portal icons
2020-09-24 10:00:22 +02:00
Rish
c7696ca03b Renamed members-modal naming to portal
no issue

- Updated naming for members modal to portal in sync with rest of the codebase
2020-09-24 12:19:35 +05:30
Umur Dinçer
2051b65e51 🐛 Fixed missing start date in members chart (#1644)
closes https://github.com/TryGhost/Ghost/issues/12014

- `startDateLabel` was never populated after refactoring the members chart to use the members stats service
- use the first date that's returned as part of the members stats days array so that we can account for any potential time period being selected

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-09-22 08:51:29 +01:00
Kukhyeon Heo
c38ca94683 🐛 Fixed Ctrl/Cmd+S triggering browser save when tags or authors input has focus (#1707)
closes https://github.com/TryGhost/Ghost/issues/11786

`GhTokenInput` uses `PowerSelect` component of `ember-power-select` internally in `app/components/gh-token-input/select-multiple`. 

When you open that component, [you can find](d36f38f39e/addon/components/power-select.ts (L262-L278)) that it calls `stopImmediatePropagation` when ctrl/cmd or meta key is down.

```js
  handleTriggerKeydown(e: KeyboardEvent) {
    if (this.args.onKeydown && this.args.onKeydown(this.storedAPI, e) === false) {
      e.stopImmediatePropagation();
      return;
    }
    if (e.ctrlKey || e.metaKey) {
      e.stopImmediatePropagation();
      return;
    }
    if ((e.keyCode >= 48 && e.keyCode <= 90) || isNumpadKeyEvent(e)) { // Keys 0-9, a-z or numpad keys
      (this.triggerTypingTask as unknown as Performable).perform(e);
    } else if (e.keyCode === 32) {  // Space
      this._handleKeySpace(this.storedAPI, e);
    } else {
      return this._routeKeydown(this.storedAPI, e);
    }
  }
```

Because of that, I had to dispatch event directly to the root of the Ghost admin app.
2020-09-21 18:14:57 +01:00
Fabien 'egg' O'Carroll
213434c389 Updated magic link expiry information to 4 hours (#1715)
no-issue

Since https://github.com/TryGhost/Ghost/pull/12218 magic links now have
an expiry of 4 hours.
2020-09-21 16:08:10 +01:00
Rish
ede24fec24 Moved Portal settings behind dedicated flag
no issue
depends on https://github.com/TryGhost/Ghost/pull/12211

- Other than dev flag, the Portal is now also enabled behind a dedicated `portal` flag
- Shows/hides Portal settings based on dev or Portal flag
2020-09-17 19:50:41 +05:30
Sanne de Vries
710d6178c1 Added message box on Staff user page that indicates user is locked, and improved boxes naming and styling 2020-09-16 15:37:33 +02:00
Peter Zimon
fc3d83e869 Fixed date format in member Stripe details
no refs.
2020-09-15 07:33:58 +02:00
Sanne de Vries
3c6923989e Changed locked state badge into lock icon and clarified its meaning with tooltip on hover. This commit builds on top of PR #1668 2020-09-14 12:34:18 +02:00
Sanne de Vries
6a7745c9a8 Adjusted dark mode styling of top menu dropdowns on the members page for consistency 2020-09-08 17:56:50 +02:00
Peter Zimon
ed1433b809 Added logic to custom portal icon delete
no refs.
- fixed issue that users can't reselect custom icon in portal by making the delete button only visible when the custom icon is selected
2020-09-04 16:10:46 +02:00
Sanne de Vries
0b27a366ff Adjusted styling for user role badges in light and dark mode for improved consistency 2020-09-04 15:25:32 +02:00
Peter Zimon
4ec6aa3d3e Success button fixes in member email settings
no refs.
- fixed checkmark being too small on support or newsletter success button
- fixed case style for success button
2020-09-02 20:45:52 +02:00
Rish
4fa2912bc3 Fixed missing signup text value in Portal preview
closes https://github.com/TryGhost/members.js/issues/91

- Fixes the missing signup text value in input box as it was incorrectly reading from wrong place
2020-09-02 13:28:51 +05:30
Sanne de Vries
bf6e37f2dd Fixed account menu spacing issue (#1693)
* Fixed spacing issue with account menu by changing verticalPosition of the Ember dropdown component to 'above' and adjusted the top attribute as needed.
2020-09-01 12:44:50 +02:00
Rish
eefbb55d84 Added new support and reply-to address for members
no issue

- Adds 2 new email address fields for members in email settings section - support address and reply-to address
- Support address - Is used for member auth emails as well as in themes and Portal for allowing members to contact support.
- Reply-to address - Is used to set `reply-to` address for newsletter emails that allows configuring where member's reply to emails will go
- Disabled from address update for empty value
- Updated success toast message and copy for from/support address update
- Changed section title + description for email addresses
- Added "public" to support email description
2020-08-31 18:10:26 +05:30
Peter Zimon
5b8ccabee2 Refined Portal links page 2020-08-27 16:06:00 +02:00
Peter Zimon
18cc1a2b91 Fixed case style for Portal accent color 2020-08-27 15:57:15 +02:00
Nazar Gargol
0c673f280f Fixed linter error 2020-08-28 00:37:18 +12:00
Nazar Gargol
5faa18743f Replaced progress bar with spinner for members import uploader
no issue

- When an import is in progress showing completed progress bar is unusefull and confusing. For large imports it takes a lot longer to process the import itself than to upload the file, that's why it made sense to show a generic spinner untill a better solution is worked on (probably with introduction of jobs)
2020-08-28 00:32:26 +12:00
Rish
01c19fb672 Updated color picker sync in Portal settings
no refs

- Syncs the new color picker for accent color to the input field
- Updating color through new color picker or input field updates the portal preview
2020-08-26 21:38:53 +05:30
Peter Zimon
8674e8f32b Updated Portal links page
no refs.
- refined copy and design for Portal links page
2020-08-26 17:10:19 +02:00
Peter Zimon
20bcfd4839 Added color picker to Portal settings
no refs.
- added CSS color picker for accent color Portal settings. Note: sync between the input field and the color picker is to be done
2020-08-26 16:00:17 +02:00
Peter Zimon
2ef41dc852 Fixed copy in members upgrade message
no refs.
- fixed pluralisation in members upgrade message
- added decimal point to limit and total numbers in members upgrade message
2020-08-24 17:16:31 +02:00
Rishabh Garg
9da88937d7 Added subscription cancellation button to member page (#1683)
closes TryGhost/Ghost#12127

* Added cancel/continue button for individual subscriptions on member page

Co-authored-by: Peter Zimon <zimo@ghost.org>
2020-08-21 17:05:45 +05:30
Rishabh Garg
c47593891c Refined portal custom icon flow (#1675)
refs https://github.com/TryGhost/members.js/issues/79

- Updated interaction for custom icon flow as per design spec in issue
2020-08-19 20:30:06 +05:30
Rish
59e49bb541 Fixed typo in portal preview signup options
no issue

- Pretty sure its supposed to be Signup and not Singup
2020-08-14 21:29:16 +05:30
Rish
d4cf0602e5 Updated background flicker for portal preview
refs https://github.com/TryGhost/members.js/issues/77

- There was a quick flicker before the portal popup appears due to the site theme being visible in background till portal loads
- Adds the constant background with slight delay to show the frame which ensures the portal script is successfully loaded to minimise the visible flicker
2020-08-11 12:27:34 +05:30
Rish
b796bf74fc Added close confirmation for Portal settings
refs https://github.com/TryGhost/members.js/issues/77

- Adds close confirmation when closing Portal settings for unsaved changes
2020-08-11 12:27:34 +05:30
Nazar Gargol
36e1dd6f2a Fixed members importer state after unknown API error
no issue

- Members importer returns to first state of uploader with file selection when unknown error happens during the upload. If the upload fails and 'summary' state is set, it leads to showing summary stas during 'customizing' state.
2020-08-11 00:08:12 +12:00
Kevin Ansfield
63070673d2 Added explicit count of paid members to email confirmation modal
closes https://github.com/TryGhost/Ghost/issues/12112

- perform a paid members list query with a limit of 1 when the modal is displayed if the post is set to members only, then use the pagination meta data to get a total number of members
- display a spinner and disable the confirm button whilst the count query is in progress
- does not display any counts for users with the Editor role as they do not have permission to list members
2020-08-10 12:27:16 +01:00
Kevin Ansfield
fd91b593a5 Added number formatting to all pluralized counts
closes https://github.com/TryGhost/Ghost/issues/12110

- adds `{{gh-pluralize}}` helper that wraps the `{{pluralize}}` helper from `ember-inflector` but formats the number using our `{{format-number}}` helper
- updates all uses of `{{pluralize}}` to `{{gh-pluralize}}`
2020-08-10 11:16:03 +01:00
Rish
6df368ed3b Updated portal preview to use default icon
refs https://github.com/TryGhost/members.js/issues/77

- By default, if there is no icon button selected, we fallback to show the first icon in list as selected in both preview and portal
2020-08-06 16:21:27 +05:30
Rish
5cce6138e5 Added Portal links section in preview area
closes https://github.com/TryGhost/members.js/issues/80

- This adds the link/attribute switcher and chooser directly to Admin in Portal preview area
- Thinks links/attributes section was previously shown as a Portal page
2020-08-05 11:36:26 +05:30
Kevin Ansfield
970df7fba7 🐛 Fixed missing autosave indicator regression in editor
refs https://github.com/TryGhost/Ghost/issues/12098

- the component template was directly referencing `this._isSaving` which meant that the `this.isSaving` getter was never fetched and so no autotracking was set up for `this.args.isSaving` to trigger the task that updates `this._isSaving`
2020-08-03 09:51:06 +01:00
Peter Zimon
f937bf2790 Updated Portal settings preview style
no refs.
- updated preview window style for portal so that it fits with the rest of the screen
2020-07-30 16:38:47 +02:00
Peter Zimon
a199e87201 Updated single member delete design
no issue
- updated single member delete modal copy + design layout
- swapped switch to regular checkbox + applied red color to it
- set button label based on checkbox state
2020-07-27 13:32:40 +02:00
Peter Zimon
9e9dcf4d1a Updated default Portal icons
no refs.
- added a set of portal icons
- updated related CSS and mappings
2020-07-24 17:00:46 +02:00
Fabien 'egg' O'Carroll
28a2caec98 Updated delete member UI to add toggle to cancel subscriptions (#1647)
no-issue

* Supported cancellation of subscriptions on delete

This makes the cancellation of subscriptions much more obvious to the
user, and we err on the side of caution by *not* cancelling by default.

* Updated base adapter to handle urls with query params

After creating the member adapter and overriding the urlForDeleteRecord
method the flow would take the url from that and it would get passed
into the buildUrl method of the base adapter. At this point it would
append a "/" _after_ the query param.

It would ouput http://admin.com/ghost/api?query=blah/
rather than http://admin.com/ghost/api/?query=blah
2020-07-24 16:02:42 +02:00
Hannah Wolfe
1cce69a1e2 Updated host limit message to be clearer
- limits are based on total members not number of members that will be emailed
2020-07-23 18:24:33 +01:00
Rish
bb53379eb1 Updated portal preview iframe url
no issue

- Updates url to load portal preview to use more specific path by appending `/preview`  in hash path
- Allows portal script to validate preview mode easily instead of guessing based on query string
2020-07-23 21:03:42 +05:30
Kevin Ansfield
3b78973a21 Removed bulk member edit dev experiment
no issue

- we're moving forward with a simplified bulk delete and the UI would conflict if both approaches are behind the dev experiments flag
2020-07-23 15:03:18 +01:00
Kevin Ansfield
42b3e3a412 Added automatic filter of members list after CSV import
requires 8ceabbcfba

- if the API responds with `meta.import_label` after an import, use it to reset and apply the filter across the members list so that it's quick to see the results of the import and perform further bulk actions (coming later)
- added ability to pass arguments through `<GhFullscreenModal>`'s `@confirm` action
- added a `console.error()` call to the members csv import so that any underlying error is not completely lost by the custom error handling
2020-07-23 14:15:07 +01:00
Rish
b9e9265c45 Updated default icon handling for portal settings
no issue

- Adds mapping for default svg icons to keys
- Updates custom icon check to not include default icons
- Updated settings update to save default icon key on update
2020-07-22 16:16:29 +05:30
Rish
c6a42a925c Updated portal preview setting for free plan selection
no issue

- Portal preview's free plan selection for Signup in settings was disabled because of old setting check
- Updates the disabled check to use correct self signup property
2020-07-22 13:19:37 +05:30
Peter Zimon
369cdf9fa2 Updated Stripe connect disconnect error UI
no refs.
- added logic to show either the disconnect error or the connected status to make the UI less dense
2020-07-17 19:07:20 +02:00
Rish
59ce29e19a Added custom error message handling for newsletter email failures
refs https://github.com/TryGhost/Ghost/issues/11971

- Newsletter preview email request has been using hardcoded fixed error message
- Reads custom error message from server's API response to show when available
2020-07-17 13:54:31 +05:30
Peter Zimon
42240c8be0 Refined Portal settings main area topbar
no refs.
- changed preview tab style to buttons for better discoverability
2020-07-17 09:53:15 +02:00
Peter Zimon
41daa5fada Moved Portal settings button to top
no refs.
- moved cancel and save buttons to top to save space and resolve conflict with Portal button
2020-07-17 09:19:47 +02:00
Peter Zimon
c30ba921d5 Renamed "Modal settings" to "Portal settings"
no refs.
2020-07-16 16:55:00 +02:00
Peter Zimon
dba7522470 Resized Portal preview iframe
no refs.
- made Portal preview iframe a bit smaller to make sure users get the UI context
2020-07-16 16:51:45 +02:00
Peter Zimon
058193f9e4 Updated Portal preview area tabs
no refs.
- added active style to Portal settings preview area
2020-07-16 16:37:54 +02:00
Peter Zimon
9102f3d51a Styled links section in Portal settings
no refs.
- applied basic styles to link section in sidebar of Portal settings
2020-07-16 16:01:39 +02:00
Peter Zimon
aba652ec56 Portal settings sidebar refinements
no refs.
- refined typography, colors and layout
- using built in admin icons for portal button icon temporarily
- styled icons for future usage with inline svgs
2020-07-16 15:25:09 +02:00
Peter Zimon
7ff098aae6 Basic design cleanup of Portal preview area
no refs.
- applied basic spacing and typography to Portal preview area
2020-07-16 15:25:09 +02:00
Fabien 'egg' O'Carroll
97feab1002 🐛 Fixed email newsletter settings (#1641)
closes https://github.com/TryGhost/Ghost/issues/12052

* Added breaking test for mailgun settings

* 🐛 Fixed mailgun settings to always set a baseUrl

This matches the functionality seen before the bulk_email_settings were
split, where the baseUrl was set when any of the mailgun settings were.
2020-07-16 11:13:36 +02:00
Rish
4b0f1a18d6 Fixed incorrect self-signup setting for portal modal
no issue

- Portal modal was using incorrect `allowSelfSignup` value post settings refactor
- Updated to use correct setting for free signup to correctly disable/enable checkbox
2020-07-16 11:12:00 +05:30
Peter Zimon
9e3a935bd7 Basic Portal sidebar stylings
no refs.
- cleaned up `style` attributes
- applied basic styles to sidebar UI elements
2020-07-15 13:18:58 +02:00
Rish
a38d7ddb19 🐛 Fixed broken structured data previews
closes https://github.com/TryGhost/Ghost/issues/11385

- Updates og and twitter description to use correct fallbacks for posts/pages
- Updates og and twitter description to use correct fallback for tags
- Updates og and twitter title to use correct name format for tags
2020-07-15 12:06:03 +05:30
Fabien 'egg' O'Carroll
ed1aa5262c Fixed typo in tag settings 2020-07-14 15:48:31 +02:00
Peter Zimon
a409a3464e Fixed typos in tag meta data
no refs.
- fixed capitalisation on tag meta data properties
2020-07-13 15:42:34 +02:00
Fabien 'egg' O'Carroll
ffdde799b8 Added UI for setting tag metadata (#1632)
no-issue

* Updated tag model with new metadata fields
* Updated Tag setting UI to handle metadata

Co-authored-by: Peter Zimon <zimo@ghost.org>
2020-07-13 14:58:13 +02:00
Nazar Gargol
2bf69f94e7 Removed developerExperiments flag from behind updated members importer
no issue

- Removes redesigned members importer features from behind `enableDeveloperExperiments` flag enabling it by default for everyone
- Had to disable some of the tests for future investigation to unblock the release
2020-07-13 23:55:07 +12:00
Nazar Gargol
caf08b1021 Fixed members CSV uploader for non-devExperiments version 2020-07-13 20:30:32 +12:00
Nazar Gargol
21a5b2ad38 Updated mapping validation error copy 2020-07-13 17:29:10 +12:00
Nazar Gargol
1465eb7045 Added import validation message when no "Email" mapping selected
no issue

- Ensures the "email" field required to create a member is always present with the mapping
- If the field is not mapped, import would fail for all members
2020-07-13 17:25:56 +12:00
Peter Zimon
f74ca902c2 Added sample CSV link to members import
no refs.
- added link to a sample CSV in members import start screen
2020-07-09 17:30:24 +02:00
Peter Zimon
59ed8d718d Members import refinements
no refs.
- updated and removed copy on mapping screen
2020-07-09 14:42:29 +02:00
Peter Zimon
c611f65f53 Refined members import modal
no refs.
- fixed title logic
- fixed stripe validation message
2020-07-09 12:12:53 +02:00
Nazar Gargol
cf2f12e046 Fixed error message substitutions for members-importer summary 2020-07-09 22:10:38 +12:00
Nazar Gargol
4f56e77db5 Updated members uploader mapper logic to map all known types 2020-07-09 20:52:12 +12:00
Nazar Gargol
21a0bc7aa9 Made more readable two most common member validation errors
no issue

- Because returned validation errors are too technical some of the most common ones were mapped for better human readibility.
- This is a patchwork on the client instead of introducing a lot bigger changes on the server side
2020-07-09 18:39:42 +12:00
Nazar Gargol
3086ac1439 Added upload progress stage to members importer
no issue

- As the number of states for the component has become larger introduced a concept of "stages" on component level to easier track UI changes.
2020-07-09 17:31:28 +12:00
Rish
dc82014283 Fixed check for empty portal button icon
no issue

- Members modal missed check for null portal button icon in initial state for dummy icons
2020-07-08 20:53:29 +05:30
Peter Zimon
3f0f3f1b68 Added number formatting to members import
no refs.
- added number formatting to all the screens of members import
2020-07-08 15:51:12 +02:00
Nazar Gargol
2da05338dd Fixed failure to render gh-members-import-table compontent
refs 4ee30dc5bd

- The tests were failing because there was no protective code to check for empty parameters.
2020-07-08 23:11:07 +12:00
Peter Zimon
5d261bfde8 Added pluralisation to members import
no refs.
- added correct pluralisation to pre- and post-validation copy of members import
2020-07-08 13:09:23 +02:00
Peter Zimon
4ee30dc5bd Added table header data to member import mapping
no refs.
- added counter ("x of y") to "Data" header for member import mapping table
- set disabled style to prev/next buttons in "Data" header for first/last records
2020-07-08 12:23:02 +02:00
Peter Zimon
1b98800bfb Updated members import mapping fields
no refs.
- made mapping fields ("Import as") human readable in members import
2020-07-08 10:18:56 +02:00
Peter Zimon
6511a47524 Fixed tests
no refs.
2020-07-07 18:18:00 +02:00
Peter Zimon
1dd2a3db07 Updated styles for members import
no refs.
- added spinner to validation state
- applied styles to pre-validation step
- applied styles to import results
2020-07-07 17:53:59 +02:00
Peter Zimon
7cc49b4b70 Added long data handling to member import UI
no refs.
- added styles to handle long data for field and data cells in members import mapping table
2020-07-07 13:29:44 +02:00
Peter Zimon
a819837bd4 Refined members import modal dropdown
no refs.
- updated style of members import modal field dropdown
2020-07-07 13:07:21 +02:00
Rish
f8b2092f6c 🐛 Fixed nav item not saving updated value on keyboard save
no issue

- Fixes nav item values not saving on keyboard save shortcut
- Nav items value was only being updated in settings on focus out from text field.
- In case of keyboard save, focus out didn't happen so old value got saved and re-populated
- Change fixes to update setting value while typing
2020-07-07 14:47:10 +05:30
Rish
182663bdf8 Added new look feel and links section to modal settings
no issue

- Adds new Look & Feel section to portal settings to control accent color, button style, text and icon
- Adds Links section to portal settings to show static links to control popup behavior
- Adds the 3 new portal settings to setting model
2020-07-07 14:07:37 +05:30
Peter Zimon
11c684f9b0 Changed date formatting for members
no refs.
- applied date format to members chart tooltip
- made all members date format consistent
2020-07-06 17:54:30 +02:00
Peter Zimon
6c39c22266 Added 'thousands' separator to members chart
no refs.
- added 'thousands' separator to Y axis values and tooltip in members chart
2020-07-06 17:11:52 +02:00
Peter Zimon
6e2803e24b Fixed members chart date range regression
no refs.
- added range value to "Signed up in the last x days" label in members chart summary
2020-07-06 16:19:47 +02:00
Nazar Gargol
39c4fec9ea Improved validation process for members CSV import
no issue

- A new validation stage has been introduced as a second step after CSV file has been dropped. It is meant to catch any obvious validation errors and output detailed statistics about
- These improvements also improve sampling logic which increases sample size to 30 non-empty cells which are used to validate stripe_customer_ids when there's such need.
- New sampling logic also introduces improved automatic field type detection which allows to better map email and stripe_customer_id fields to CSV columns
2020-07-07 00:28:30 +12:00
Fabien 'egg' O'Carroll
1f7fbdfc8f Updated labs to use new mailgun_* settings (#1628)
refs https://github.com/TryGhost/Ghost/issues/10318

This removes references to the old bulk_email_settings
2020-07-03 11:48:54 +02:00
Fabien 'egg' O'Carroll
1d0e49a869 Added basic handling for invalid plan amount (#1625)
refs https://github.com/TryGhost/Ghost/issues/11765

Adds handling to disallow plans of less than 1

Co-authored-by: Matt Hanley <3798302+matthanley@users.noreply.github.com>
2020-07-03 10:36:59 +02:00
Nazar Gargol
e36b79c940 Added field mapping column to members importer gird
no issue

- Adds UI to map imported csv fields to ones accepted by Ghost API
- Includes automatic mapping detection for emails and stripe_customer_ids
2020-07-03 16:54:21 +12:00
Matt Hanley
43419275ac 🐛 Fixed missing currency for yearly plan in Labs subscription price settings (#1626)
no-issue
2020-07-02 12:36:32 +02:00
Kevin Ansfield
be0a6d58a0 Improved scheduled status text in posts list
closes https://github.com/TryGhost/Ghost/issues/11965

- fixes scheduled posts always showing "and sent"
- updates status text to match that shown in the editor for scheduled posts
2020-07-01 20:37:46 +01:00
Kevin Ansfield
ec925a60b0 Converted <GhPostsListItem> to glimmer component
no issue

- moved tag name and classes into template
- updated backing class to native class syntax
2020-07-01 20:37:46 +01:00
Kevin Ansfield
1f87c59055 Refactored <GhPostsListItem>
no issue

- moved `primaryTag` CP into the post model as per `primaryAuthor`
- removed all unnecessary or unused CPs in the component's backing class
- switched to using `@post` for direct argument access rather than `this.post`
2020-07-01 20:37:46 +01:00
Kevin Ansfield
a6ebb928a9 Improved scheduled status text shown in editor
refs https://github.com/TryGhost/Ghost/issues/11965

- always show scheduled time when a post is scheduled
- show when a post will be emailed and to which group of members
2020-07-01 14:07:52 +01:00
Peter Zimon
09f4a48bc5 Refined styles and copy for member import dialog
no refs.
- refined copy for Stripe warnings for members import pre-validation
- updated styles for data preview for dark mode
2020-07-01 07:24:10 +02:00
Fabien O'Carroll
1cf0dc14b9 Fixed stripe disconnect not working with new settings
refs #10318
2020-06-30 18:27:13 +02:00
Fabien O'Carroll
495143b027 Updated to remove stripe_connect_integration references
refs #10318
2020-06-30 11:50:43 +02:00
Rish
3f75c2857b Fixed incorrect from address check for button
refs https://github.com/TryGhost/Ghost/issues/10318

- The check for disabled update button for from address was reversed in this commit - 5d22b788c8
- This updates the check to correctly validate for from address update for disabling the button
2020-06-30 12:16:48 +05:30
Rish
85a77388e2 Refined email newsletter error messages
refs https://github.com/TryGhost/Ghost/issues/11971

- Updates error messages incorrectly pointing to invalid mailgun config to show more generic error
- Needs to be updated to point to correct error message in future
2020-06-30 11:57:18 +05:30
Fabien 'egg' O'Carroll
5d22b788c8 Refactored to use updated members and stripe settings (#1621)
refs #10318

* Updated settings model with new settings

* Removed parseSubscriptionSettings from settings service

* Updated members-utils to use new settings

* Updated labs controller to use new settings

* Fixed dependency for member-settings-form

* Updated members-lab-setting component to use new settings

* Updated disconnect modal to use new settings

* Updated members portal modal to use new settings

* Removed Direct from settings

* Renamed members_allow_signup -> members_allow_free_signup

* Allowed for null fromAddress
2020-06-29 19:37:11 +02:00
Rishabh Garg
23537355b6 Added live preview to members settings modal (#1622)
no issue

- Adds live preview of members.js modal UI to the new settings modal behind dev flag
- Uses `gh-site-iframe` to render site in preview mode with custom portal url
2020-06-26 02:15:47 +05:30
Kevin Ansfield
fcb9b87884 Renamed activeTimezone setting to timezone
refs https://github.com/TryGhost/Ghost/issues/10318

- API has been updated to still work with `active_timezone` for backwards compatibility but it makes sense for the client to match the underlying settings keys
2020-06-24 15:34:59 +01:00
Fabien 'egg' O'Carroll
6a3ae748c5 Disconnect Stripe Connect integration (#1613)
no-issue

Co-authored-by: Peter Zimon <peter.zimon@gmail.com>

This adds the ability to disconnect the Stripe Connect integration from the Members settings.
2020-06-23 13:29:12 +02:00
Rish
4a4a6cba3f 🐛 Fixed staff profile editing incorrectly showing saved state
closes https://github.com/TryGhost/Ghost/issues/11866

- Adds extra check to task button states if the last task ran was same as the current associated task
- In case of task groups, triggering one task in group also triggered states for other tasks in group
- Editing slug called `updateSlug` task which is part of the same task group as `save` task, which triggered the state for save button
2020-06-22 17:09:37 +05:30
John O'Nolan
2784f38553 Updated email newsletter config instructions
Added link to explain why Mailgun is required, and the different types of emails within Ghost
2020-06-22 13:47:45 +07:00
Peter Zimon
db065a58e7 Added scrolling to members import preview table
no issues.
- adds scrolling to import table
- adds shadow to top and bottom if the table is taller than the viewport
2020-06-19 19:43:12 +02:00
Kevin Ansfield
eee84ab5f7 Added first pass bulk members delete confirmation and results display
no issue

- display a confirmation modal when bulk deleting members
- hit the `DELETE /members/?all=true` endpoint when confirming
- show counts of members deleted/skipped
- fix selection reset when leaving edit mode
2020-06-19 18:14:41 +01:00
Rishabh Garg
c6d12cbe5b Added new modal settings behind dev flag (#1615)
no issue

depends on 77e1ada6c6

- reverts commit 6760527 with modifications for naming
- Adds new portal settings UI in Labs -> Members setting
- Allows customization of new portal-* settings upstream
- Updates settings service to include portal group
- Updates settings modal to include new portal-* settings
2020-06-19 21:36:49 +05:30
Kevin Ansfield
d8270a110c Moved members bulk delete confirmation into a modal 2020-06-19 14:14:39 +01:00
Kevin Ansfield
74033eb14f Switched members links to use default cursor when in edit mode 2020-06-19 13:08:02 +01:00
Rish
831fed23c6 🐛 Added tags sidebar navigation for editors
closes https://github.com/TryGhost/Ghost/issues/11882

- Editors have all the same permissions and access to tags as Owner/Admin roles, but had the sidebar navigation for tags missing
- Adds "Tags" to sidebar for Editor roles same as Owner/Admin
2020-06-19 11:39:05 +05:30
Rish
6760527a05 Revert "Added new members modal settings behind dev flag (#1611)"
This reverts commit 3c9af3f397.
2020-06-18 19:05:06 +05:30
Peter Zimon
7613757fad Refined member import result screen
no issues.
- puts back file icon preview when not in dev. experiment
- refines generic style of member import result screen
2020-06-18 15:24:08 +02:00
Rish
a7c0899782 🐛 Fixed incorrect save warning on design settings
closes https://github.com/TryGhost/Ghost/issues/11590

- Dirty attribute flag was set incorrectly on focus out from label/url fields as no check with existing was used
- Checks against existing nav item value before setting dirty attribute on focus out
2020-06-18 17:46:18 +05:30
Rishabh Garg
3c9af3f397 Added new members modal settings behind dev flag (#1611)
no issue

- Adds new modal settings option in members settings
- Allows customization of modal settings for membersjs
- Uses new `memebrsjs_*` settings from core
2020-06-18 17:15:19 +05:30
Kevin Ansfield
6776b8cde7 Disabled members list links whilst editing
no issue

- these will eventually toggle selection of individual members when clicked whilst in editing mode
2020-06-18 11:42:06 +01:00
Kevin Ansfield
34c28dcc0e Added rough "edit mode" for members table behind dev flag
no issue

- initial UI for bulk-selection, focusing for now on first stage which is limited to select-all and delete actions
- adds "Edit" button to the members table that shows the "selection" toolbar in place of the table header and shows a checkbox next to each member
2020-06-18 11:08:53 +01:00
Peter Zimon
7c540a9090 Refined members import data table design
no issues.
- refined style for members import preview table
2020-06-18 11:33:34 +02:00
Peter Zimon
2dfff367b9 Refined pre-validation of members import
no issues.
- removes email and Stripe duplicate customer ID check to focus validation that might affect the whole dataset
- applies visual style and refines copy
2020-06-18 10:30:15 +02:00
Nazar Gargol
ed98d89771 Added imported members csv data preview
no issue

- Adds a table representation of data present in a CSV file that is about to be imported. Allows to navigate through data to see how exactly the file would be parsed on server
2020-06-18 17:47:04 +12:00
Kevin Ansfield
7331f8feed Fixed multiple no-shadow linting errors 2020-06-17 09:35:46 +01:00
Peter Zimon
e235f20f3e Updated members import validation warning design
no issues.
- changed warning style when import can still happen
- combines all warnings to a single section
- hides details for warnings behind an expandable list so that
- updated copy
2020-06-16 19:08:37 +02:00
Nazar Gargol
fca6d3300d Renamed members import/export endpoints to match API changes
refs 5f00619d1a
2020-06-16 18:13:06 +12:00
Kevin Ansfield
839ebb0b59 Fixed stripe connect persistent button and "unsaved changes" warnings
no issue

- hook template up directly to the `settings.stripeConnectIntegrationToken` value
- reset `settings.stripeConnectIntegrationToken` when leaving the labs route
  - without the reset, after a failed save other settings screens will show the "unsaved changes" warning
2020-06-15 17:43:02 +01:00
Peter Zimon
c389015b08 Made save Stripe settings button dynamic
no issues.
- shows/hides the "Save Stripe settings" button depending on the token value. This allows better focus and less distraction UX
2020-06-15 17:57:46 +02:00
Kevin Ansfield
37de63e8cd Updated image card to store original width/height in payload
no issue

- extract width/height from selected local image when uploading and store in the payload with `src` once upload finishes
- capture width/height from Unsplash and store in the payload after selecting an image
2020-06-15 13:16:37 +01:00
Nazar Gargol
af648b8fb9 Hidden member import validation messages bahind the experiments flag
refs c3d141dd03

- The feature still needs polishing UI side and will move out of `enableDeveloperExperiments` flag once that's ready
2020-06-15 22:42:56 +12:00
Hannah Wolfe
ff84b41f91 Adding INR currency support
- We have many customers asking for INR as there are special rules in Stripe for this currency
- As well as a desire for local-selling
- Meaning it's not valid to use e.g. USD instead
2020-06-12 15:17:22 +01:00
Nazar Gargol
095e29d83d Added imported member count to the "Import" button
no issue

- When importing members from CSV file this change shows total amount of members that will attempt to be imported
2020-06-13 00:51:19 +12:00
Kevin Ansfield
d14c432264 🐛 Fixed file inputs not allowing same file to be re-uploaded in Firefox
closes https://github.com/TryGhost/Ghost/issues/11707

- Firefox is different to every other browser and doesn't allow file input values to be reset by doing `input.value = null`
- outcome of reset not working is that Firefox won't trigger the change event when the same file is re-selected
- fixed by cloning the input element and replacing it
2020-06-12 13:45:28 +01:00
Kevin Ansfield
16f4b1c9af Added all/free/paid filter to members admin screen (#1600)
requires https://github.com/TryGhost/Ghost/pull/11892

- adds `?paid` query parameter to members route that is tied to the `?paid` query param in the API request
- added all/free/paid members dropdown to members filter component
2020-06-12 12:12:27 +01:00
Nazar Gargol
e2db84d23b Updated import results response handling with new error format
refs 7904c303a7

- Adds failed import records details to post members import screen
2020-06-12 20:01:46 +12:00
Nazar Gargol
c3d141dd03 Added improved validations for 2nd step of members import
no issue

- Adds validations for imported CSV data
- These checks include obvious validation checks for data - like if email addresses are valid, checking if Stripe configured when entries with stripe_customer_id are present and additional server-side validation for entries with stripe_customer_id to check if they appear in connected Stripe account
- The validation set is calculated by naive choosing of first 5, middle 5 and 5 tail records from imported set. This logic comes from observations that errors usually apear withing "test" records in the beggining or the end of the file. These selection rules might change in the future if we find a need for it.
- Adds papaparse CSV parser, which was chosen for it's maturity and relatively small minified size. In the future this library should be lazy-loaded to make the first page load UX nicer
2020-06-12 17:22:36 +12:00
Peter Zimon
6a4db52205 Added success state for Stripe Connect
no issue
- adds success message when Stripe Connect is successfully set up
- automatically closes the setting section on success
2020-06-11 17:14:20 +02:00
Peter Zimon
cbc1c2a36e Added "Test mode" label UI to Stripe Connect
no issues.
- added label to indicate if the connected Stripe account is in test mode
2020-06-11 15:36:22 +02:00
Peter Zimon
f2bc57bbf5 Stripe connect design (#1603)
no issues

Updated and refined Stripe Connect design in Labs/Members settings:
- refined visuals and UI logic
- updated copy
- added switch for test mode
- added error handling
2020-06-11 15:15:44 +02:00
Nazar Gargol
67103be738 Fixed linting error for using this.get() in octane syntax
no issue

- Switched to getter as this.get() is not available in native classes
2020-06-12 00:46:04 +12:00
Nazar Gargol
0a0ce4098d Refactored stripe configuration checks into separate service
no issue

- This logic is planned to be reused in more places, e.g. members import data validation. This change is meant to be a prep work for that.
- With stripe connect functionality coming it is important to have a central place checking for configured Stripe
2020-06-11 21:05:40 +12:00
Kevin Ansfield
1836ff2631 Renamed <GhMembersContentFilter> to <GhMembersFilter> (fixed)
refs bae5497f1f

- adds the template rename that was missed in previous commit
2020-06-09 22:58:12 +01:00
Kevin Ansfield
bae5497f1f Renamed <GhMembersContentFilter> to <GhMembersFilter>
no issue

- "Content" referred to content as in posts/pages so the naming didn't make sense in the members filter component
2020-06-09 22:54:07 +01:00
Kevin Ansfield
758f5285fb Added access level filter to posts and pages lists in admin
no issue

- adds `visibility` query param to posts and pages controllers/routes that is tied to the `filter` query param used in API requests
- adds dropdown for selecting post/page visibility to `<GhContentFilter>`
2020-06-09 12:19:40 +01:00
Nazar Gargol
0395b63d63 Fixes labels duplicating themselves across lalbe inputs when unsaved
no issue

- Unsaved labels were still persisted in the store. This was causing unsaved labels reappearing on different instances and caused broken states
2020-06-09 20:31:09 +12:00
Rish
3328a5f1ba Fixed incorrect "from" address save
refs https://github.com/TryGhost/Ghost/issues/11414

- From address input value was refactored but update was still using the old value
2020-06-09 11:52:09 +05:30
Rish
958bb65308 Added site domain for default from address
refs https://github.com/TryGhost/Ghost/issues/11414

- Appends blog domain as default for from address members setting
- Disabled update button when current from address is same as in field
2020-06-09 11:14:53 +05:30
Rishabh Garg
01e72dc991 Allowed domain change for members "from" address (#1597)
refs TryGhost/Ghost#11414

- Restructures member settings in labs, from address gets its own section
- Removes explicit site domain for fromAddress as we allow updating the full address
- Adds new CTA to trigger magic link for updating members from address
- Adds new confirmation modal for email sent to new from address
- Adds notification banner for from address update redirect link
2020-06-09 01:52:58 +05:30
Peter Zimon
2b10a30a04 Refined copy for member import dialog
no issues.
- refined copy for member import start and end step screens
2020-06-05 15:03:43 +02:00
Nazar Gargol
a849ddda18 Updated members' import file validation logic
no issue

- The invalid file type error should be shown on the very first step of import and should not allow proceeding without selecting a correct file.
2020-06-06 00:48:09 +12:00
Peter Zimon
5a87520712 Refined members import dialog
no issue
- updated screen logic for member import
- added icons and refined styles for file upload dialog
2020-06-05 14:20:23 +02:00
Nazar Gargol
6bfe8e6490 Added separate stage to members import popup with support of labels
refs 633ba27f0e

- Import modal is now devided into separate stages with ability to specify labels which will be assigned to every member present in the dataset.
- Also adds explicit "Import" button without automatic import when the CSV file is selected
2020-06-05 22:57:07 +12:00
Kevin Ansfield
7ac7e73a05 🐛 Fixed members list not refreshing after adding yourself
no issue

- passed in the `refreshData` action to the `<GhMembersNoMembers>` component and called it after creating the member
- converted `<GhMembersNoMembers>` to a glimmer component
2020-06-05 08:50:20 +01:00
Kevin Ansfield
142f322338 Switched per-user custom views to shared custom views
requires fdeb7daf40

- swapped to using settings model for storing custom views instead of user accessibility field
- added conditional that checks current user is an admin/owner when displaying the manage custom views button in the content filter (only admins/owners can edit settings model)
  - passed `session.user` into the `<GhContentFilter>` component as an argument so that the conditional getter doesn't need to handle async user access
- fixed no-shadow linting error in settings service
2020-06-04 21:30:06 +01:00
Rish
85d1775608 Removed redundant reset value for task buttons
no issue

- Since task buttons by default have reset on now, we don't need to explicitly add it to individual buttons
2020-06-04 19:23:59 +05:30
Rish
f198bb8a45 Enabled auto reset state for action buttons
no issue

- By default, action buttons had auto-reset off and reset had to be explicitly set
- Auto reset for action buttons is on by default now, and any button that should not reset should explicitly switch it off
2020-06-04 18:44:38 +05:30
Fabien O'Carroll
94c68bbaec Corrected url for Stripe Connect auth
no-issue

This was missed in the PR changes requests in Ghost.
2020-06-03 15:10:29 +02:00
Fabien 'egg' O'Carroll
c4135d0b10 Added Stripe Connect UI (#1586)
no-issue

- Rendering is conditional on `stripeDirect` config being false.
- CSS downloaded from https://stripe.com/newsroom/brand-assets
- `stripe_connect_integration_token` is the setting to _set_ the
  stripe_connect_integration setting
2020-06-02 13:58:43 +02:00
Peter Zimon
7055d77df6 Fixed members list cell wrapping
no issues.
- sets members cells wrapping to avoid table cells overlapping
2020-06-02 12:30:11 +02:00
Kevin Ansfield
147943f3a3 Fixed members list/chart not updating after members import
no issue

- move members loading code into `members` controller so that it's more accessible to other areas of the app
- add `refreshData()` to the `members` controller which forces members list and stats to be re-fetched
- call `members.refreshData()` after successful upload of members import file
- store range/days in `membersStats` service so that it's remembered across refreshes and component renders
2020-06-01 15:48:46 +01:00
Peter Zimon
49214faf07 Added placeholder to impersonate URL
no issues.
- adds a placeholder value for impersonate URL field to avoid empty field while loading
- disables "Copy link" button until the actual URL is not loaded
2020-06-01 10:04:12 +02:00
Marco Zehe
59fcc567f1 🐛 Fixed various Close buttons throughout the UI. (#1585)
refs TryGhost/Ghost#11863

Some `a`tags with `href` attributes that are empty are used as buttons, but since the href is not linkifying anything, they appear as text nodes to assistive technologies. Give them a `"button"` role so it is guaranteed that assistive technologies will pick them up as actionable controls.
2020-05-28 17:11:21 +01:00
Marco Zehe
adb7828003 Various A11y post screen fixes (#1584)
refs #11863

* 🐛 Gave various buttons accessible labels

Hidden span elements are not rendered to assistive technologies, so duplicate the text in an aria-label on the button element.

* 🐛 Fixed various accessibility issues in the editor

* Made menus menus and menu item menuitems.
* Added labels to buttons where there were only hidden spans, or no text at all.
* Made separators show up for screen readers.
2020-05-28 16:01:09 +01:00
Marco Zehe
db527d27f3 🐛 Fixed various small accessibility problems in the admin screen (#1583)
refs #11863

* 🐛 Fixed accessible button label for showing and hiding custom post types.
* 🐛 Made the menu separators accessible.
* 🐛 Fixed the More item to be a button for assistive technologies.
2020-05-28 15:51:14 +01:00
Kevin Ansfield
9942fb337e Improved performance of members admin screens
no issue

- removes the "old" members screens
- swaps route names and links to point at the new members screens that were behind the experiments flag

Why are the new screens faster?

- only loads 50 members at once rather than every member in the database
- loads pages of members in as-needed whilst scrolling
- fetches member stats from the API rather than calculating locally
- caches members list and stats data for 60 seconds to avoid re-fetching when navigating to/from the members list
- moves search and filtering duties to the API rather than calculating locally
2020-05-28 13:35:53 +01:00
Kevin Ansfield
29b4d72939 Fixed borders on <GhMemberListItem> loading state
no issue

- `display: table` doesn't provide an equivalent of `colspan` so the loading state needs to include the same number of `display: table-cell` elements as the live state
2020-05-28 12:55:11 +01:00
Kevin Ansfield
e5ef8bad9b Removed unnecessary <GhMembersListItem> backing class
no issue

- `ember-moment` provides the `{{moment-from-now}}` helper that does the same thing the `.memberSince` computed property was doing
2020-05-28 12:33:49 +01:00
Kevin Ansfield
dd00161a0c Deleted component templates that are no longer used
no issue

- we had a few template files left over where their backing JS files had been deleted
2020-05-28 12:33:48 +01:00
Rish
05f7ec5dbe 🐛 Fixed email preview not visible to Editors
refs https://github.com/TryGhost/Ghost/issues/11841

- Allows editors to see email customization option for sending test newsletters
- Editors had the necessary permission fixtures but the UI was previously only available to owners or administrators
2020-05-28 15:57:59 +05:30
Aileen Nowak
f7034c7e91 Updated billing icon in nav bar
no issue

- Replaced placeholder icon with new billing icon
2020-05-28 21:53:38 +12:00
Kevin Ansfield
76b93c3be7 Fixed members chart
no issue

- "stale data" logic was incorrect so we were always returning `undefined` from `membersStats.fetch()`
- improved behaviour of the chart when stats are not available or are loading
2020-05-27 16:12:13 +01:00
Kevin Ansfield
86702ed949 Memoized member stats with expiration
no issue

- added a `member-stats` service to keep member stats state outside of the chart component's lifecycle
- returns memoized member stats when fetching if the query hasn't changed and the data is less than a minute old
- reduces potentially heavy network requests when quickly navigating between members list and other screens
2020-05-26 17:17:52 +01:00
Kevin Ansfield
91873d1857 Improved number formatting in members screen
no issue

- added `format-number` helper that uses browser's built-in `toLocaleString()` method to format numbers such as adding commas or periods to improve number readability (`123,000` instead of `123000`)
- updated members chart totals to use the helper
- replaced direct `.toLocaleString()` usage with the new helper so we can change global number formatting if needed
2020-05-26 14:40:03 +01:00
Kevin Ansfield
26f3d48f5d Updated members screen to work with final stats API naming
refs 071ab9774b

- stats API uses snake_case rather than camelCase to be consistent with the rest of Ghost's APIs
2020-05-26 12:26:04 +01:00
Kevin Ansfield
fb1c048f24 Removed "members" from mocked stats API payload property names
no issue

- removes duplication from property names as the "members" part is implicit from the resource name
2020-05-25 10:35:39 +01:00
Kevin Ansfield
8c19ea9cf9 Updated <GhMembersChart> to fetch stats from the API
no issue

- added mocked API for `/admin/members/stats/` that generates random data for the chart
- re-architected `<GhMembersChart>` to fetch data from the API rather than calculating stats from all members loaded in memory
- enabled mirage in development so that the chart can be tested before the live API is ready
2020-05-22 17:58:45 +01:00
Kevin Ansfield
3a6550b7c4 Linked label dropdown in members screen to paginated list loading
no issue

- moved model loading back into the route
- updated model loading to refresh correctly when `label` query param changes
- fixed infinite loading/"no members" display in members list by using the `members.loading` property that `ella-sparse` gives us (previously we'd never leave the loading display because `this.members.length` would be 0)
- changed the members nav link to reset query params only if it's clicked whilst on the members screen - matches posts/pages behaviour and lets you navigate without having to re-enter your filter/search
2020-05-22 17:58:45 +01:00
Kevin Ansfield
03d4c55a8e Fixed dropdown styling for content filter and members chart timeframe
refs 654d373655

- `<PowerSelect>` no longer has it's own wrapper element so `@classNames=` has no effect and needs to be added to an explicit wrapper element
2020-05-22 11:38:50 +01:00
Kevin Ansfield
7e7bca7ff0 Added loading state for member list rows
no issue

- with the sparsely loaded list you can scroll to an area which is being loaded in the background
- if a list row is being loaded, display a "loading" version of the row so it doesn't look like you're stuck on a blank screen
2020-05-22 09:31:17 +01:00
Nazar Gargol
5d59670ac3 Fixed browser URL syncronization with embeded iframe state
no issue

- Opted in to use explicit `hisotry.replaceState` and setting iframe's `src` using assignment instead of tracking it through computed property. This allows for tighter control over when iframe's history is updated which was causing problems when `src` was bound to computed property
- Added billing page metadata. This way browser history records appear with nicer signature
- Removed "update button" iframe and rewrote "global iframe" to not use modals. This allows to have single iframe on a page, which simplifies `postMessage` communication and preserve history inside iframe to be able to navigate it after closure
- Added route change handler responding to BMA app route changes. Allows to sync browser URL visible to the user with active route in BMA iframe. The sync is based on `hisory.replaceState` method that makes sure singular history records are kept in the browser history
- Added nested wildcard billing route. This is meant to catch all the nested routes inside of BMA iframe
2020-05-22 14:44:37 +12:00
Kevin Ansfield
5a1b3d90fb Updated members list to use paginated loading
no issue

- disabled members search/filter/chart as they won't work without all members loaded into memory (they will be added back later)
- added `ember-ella-sparse` to handle a sparse array of members
- updated `fetchMembersTask` to return a sparse array instance
- updated components that work on a `member` instance to use `.get` because all items in a sparse array are proxy objects
- changed list loading behaviour to not refresh the list from the API unless the client-side list is more than a minute old - allows for much snappier nav between list and details screens
2020-05-20 16:39:32 +01:00
Kevin Ansfield
f0e359be11 Refactored members routes
no issue

- moved labels fetching into the controller to unify members+labels loading approaches
- removed unnecessary `deactivate` hook on members route because the label form component already rolls back the model attributes when it's destroyed
- unified non owner/admin redirect approach across members and member routes
2020-05-20 16:39:31 +01:00
Kevin Ansfield
3cc10bfa83 Updated members routes/controllers with Octane idioms
no issue

- ran [`ember-native-class-codemod`](https://github.com/ember-codemods/ember-native-class-codemod) on members-related files
- updated files to remove need for `@classic` decorator where possible
    - switched to tracked properties
    - removed usage of `this.get/set/toggleProperty` etc
- swapped usage of `{{action 'foo'}}` for `{{this.foo}}`
2020-05-20 16:39:31 +01:00
Kevin Ansfield
a758d99dc7 Swapped duplicated members files from -dev to -old
no issue

- allows continued development on the "original/non duplicated" files to better preserve git history once the `-old.*` files are deleted
2020-05-20 16:39:31 +01:00
Fabien O'Carroll
c899af36b4 Hid Stripe apikey form if stripeDirect: false
no-issue

We are going to keep the UI as a fallback in future. Eventually this
`if` will include an `else` block rendering a Stripe Connect button.
2020-05-20 16:49:00 +02:00
Kevin Ansfield
598a327d6e Duplicated members screens for development experiments
no issue

- members screens will be undergoing heavy development to change how underlying data loading works
- duplicated all related screens and components so that development can occur behind the `enableDeveloperExperiments` flag without breaking the existing screens
- added "Members (dev)" link to the duplicate screens in nav bar when `enableDeveloperExperiments` is on
2020-05-19 16:18:30 +01:00
Kevin Ansfield
e721bca2d9 Fixed delete button in token select inputs
refs 654d373655

- ember-power-select switch to Glimmer components meant that our mousedown handler that was going through Ember's event bus was firing after the EPS events which trigger dropdown open/close and therefore not triggering the delete action
2020-05-18 13:33:21 +01:00
Kevin Ansfield
09435ecf76 Co-located component template files
no issue

Keeps component JS backing files and template files in the same directory which avoids hunting across directories when working with components. Also lets you see all components when looking at one directory, whereas previously template-only or js-only components may not have been obvious without looking at both directories.

- ran [codemod](https://github.com/ember-codemods/ember-component-template-colocation-migrator/) for app-level components
- manually moved in-repo-addon component templates in `lib/koenig-editor`
- removed all explicit `layout` imports as JS/template associations are now made at build-time removing the need for them
- updated `.embercli` to default to new flat component structure
2020-05-18 13:14:08 +01:00
renovate[bot]
654d373655 Update dependency ember-power-select to v4 (#1528)
* Update dependency ember-power-select to v4
* Fixed trigger component override collision when building

- move the "override" into our own namespace
- update all `<PowerSelect>` usage to explicitly reference our customised trigger component

* Bumped ember-power-datepicker

- bumps `ember-basic-dropdown` sub-dependency
- resolves "Error: Could not find module `ember-compatibility-helpers` imported from `@glimmer/component/index`"
- https://github.com/cibernox/ember-basic-dropdown/issues/551

* Updated trigger to use class syntax

- it's not possible to use `.extend()` on an imported class

* Updated <GhBasicDropdown>

- match updated ember-basic-dropdown code

* Added `autofocus` modifier

- added `ember-modifier` dependency so that we can create our own render modifiers

* Updated <GhSearchInputTrigger> to a glimmer component

* Updated gh-token-input components

* Fixed tests

- wrap `<PowerSelect>` with `<div>` to maintain test selectors
- fixed `<GhBasicDropdown>` not rendering anything due to not having a local template

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-05-17 22:35:53 +01:00
renovate[bot]
29a388ad27 Update dependency ember-infinity to v2.1.1 (#1484)
no issue

- fixed template reference
- updated template to match upstream's use of render-modifiers
- removed silencing of `isVisible` deprecation

Co-authored-by: Renovate Bot <bot@renovateapp.com>
2020-05-12 09:05:17 +01:00
Kevin Ansfield
07f24e69f6 Reduced unnecessary waiting in tests
no issue

- fixed `<GhTaskButton>` not resetting after an externally triggered task run such as when pressing Cmd+S
- cleaned up manual timeouts/resets where button reset is now fully handled by `<GhTaskButton>` (these were causing 2.5s waits each time a save occurred in acceptance tests)
- where manual timeouts were required, reduce testing time from >2.5s to 50ms
2020-05-11 11:37:35 +01:00
Kevin Ansfield
5b17a70e8b Update dependency eslint-plugin-ghost to v1.4.0
no issue

- applies fixes for new/updated rules
- disables `ember/no-mixins` rule as we're not able to migrate away yet
2020-05-06 18:07:01 +01:00
Rish
6b90aafd20 Added regenerate copy tweak for internal Zapier integration
no issue

- Updates dialog copy for confirmation of regenerating internal Zapier integration admin key
2020-05-06 12:36:43 +05:30