refs https://github.com/TryGhost/Team/issues/585
requires https://github.com/TryGhost/Ghost/pull/12082
When a label or status filter is selected on the members screen show a "Delete selected" option in the actions dropdown. Bulk deleted members will _not_ have any subscription data modified in Stripe, if a member should be deleted and have their subscription cancelled it's necessary to do that on a per-member basis.
- updated bulk delete handling to match API
- added link to bulk delete confirmation modal in members actions dropdown (only shown when label, status, or search is used)
- updated testing framework for members
- added label factory for easier test setup
- updated `GET /members` and `DEL /members` endpoints to work with label filters
- updated test selectors for easier reference in tests
refs https://github.com/TryGhost/Team/issues/587
- When user's instance reaches a "staff" limit we need a way to proactively notify them about reached limit and give enough information about why it was reached and what the next action would be to unblock them
- The implementeation uses a frontend implementation of the limit-service which allows to do preventative checks for the reached limits
refs https://github.com/TryGhost/Team/issues/587
- This is first pass on the frontend limit-service integration. Max count queries are substituted with HTTP requests to mimick backend checks. Note, they are not meant to substitute backend checks only to suplment them.
This reverts commit 9a1037b850.
- a sub-dependency was causing "Uncaught exception undefined" errors when post publish times were changed
- reverting until there is time to track down exactly which dependency was causing the problem
refs https://github.com/TryGhost/Team/issues/572
- Replaced dropdown in invite-user modal with radio buttons
- Added description for each user role
- Added icon to provide more info on hover for each role
- Got rid of unused box styling
refs https://github.com/TryGhost/Team/issues/587
refs e30b9735fa
- It was not possible to invite a new Contributor to a site that has reached its limit
- This fix divides the resend invite action into two separate steps: 1. Deleting existing invite 2. Creating a new one for the same data
- It was hitting the limit because the permissions were correctly checking for "add" action being executed when the limit of invites/staff users was already used up. By removing existing invite we mimic the behavior the server would do for us anyway (2111992dd4/core/server/services/invites/invites.js (L18-L22))
Co-authored-by: Rish <zrishabhgarg@gmail.com>
no issue
- we want to disable automerging of TryGhost dependencies in order to
allow commits that contain emojis and context for the bump
- similar to 54a09842a6
in Ghost, this commit adds the new preset to disable automerging of @TryGhost dependencies
no issue
- `config.blogDomain` includes subdirectory and `config.ghostPaths.subdir` includes a leading `/` which resulted in the search engine result preview url incorrectly showing as `mysite.com/subdir > /subdir > slug`
- replaced the in-template construction of the url previews with a getter on the backing class that constructs the preview url based on parsing the configured url
refs https://github.com/TryGhost/Team/issues/579
- empty screen ready for signup access and default post access level settings to be moved to
- has unsaved settings changes modal ready
closes https://github.com/TryGhost/Team/issues/397
The default newsletter/support email address for a site is currently setup as noreply@DOMAIN , which means for a custom domain setup with www the email address becomes noreply@www.somesite.com which is not the expected behavior.
Note: This fix only removes `www` subdomain from addresses and no other subdomains
closes https://github.com/TryGhost/Team/issues/561
In case the last event for a new member on site was before 30 day period, the count for members was showing 0 instead of the actual value. The change fixes the count to show the correct value even if there is no new recent member activity.
closes https://github.com/TryGhost/Team/issues/568
Displaying amount in cents in context of overall MRR forecast/estimate doesn't add much value, the change rounds MRR value to nearest whole number on dashboard
closes https://github.com/TryGhost/Team/issues/550
The MRR chart relied on first currency from the list in case of data for multiple currencies, falling back to USD in case of no MRR data for the site. This can be misleading, specially when the active currency set in payment settings is different from one picked to show on MRR chart.
The change updates dashboard to always pick the currency from Payment settings as default for showing chart data.
refs TryGhost/Team#536
From 4.0, we ensure and require that accent colour is always set. This change removes hardcoded accent color fallbacks to avoid confusion as well as cause accidental fallback that is undesired.
no issue
The current `/billing` route needs to be renamed into `/pro`, so we can use sub-routes like `/pro/billing` and `/pro/domain` in the billing app.
This reverts commit 9b6d4822e7.
- there is an issue with properties not being tracked correctly and the menu not being shown when returning from the editor
- reverting to working version with computed properties for now
no refs
MRR start date value for charts was being calculated with start value as 0, assuming we have the data for first date in our range to use as start value. Since the events data returned only has data on dates where any MRR event happened, in case the first date in our range didn't have any. data we started from 0 instead of value on previous date. This fix
- updates calculation to pick the start value for chart based on value on last date in our range(30 days)
- adds unit tests for stats
no issue
- the billing nav menu item isn't a regular route link so we don't get "active" classes by default
- added active class manually based on the service property that controls billing screen visibility
no issue
- the billing modal is always rendered, it's contents being shown/hidden via CSS
- when the billing modal was rendered it was changing the `key` scope and binding the enter key, however because it's always rendered this was messing with the default key scope for all other areas of the app
- removed all keyboard handling from the billing modal because it wasn't actually doing anything (there is nothing to handle the "confirm" action when Enter is pressed) which fixes the unexpected key scope change
- Have created a new v4 template, which is the same as the v3 template.
- Updating this reference now keeps it versioned, so that if we need to make changes just for v4 we can easily by just updating the asset
no issue
- the stale data checks would always return false because the calculation was reversed
- `old date - new date` will always result in a negative number so it would never be greater than 60000
- switched to `new date - old date` to get a positive number so the `>` comparison works
- moved `1 * 60 * 1000` into a constant so it's easier to the intended behaviour at a glance
no issue
- when viewing the email preview in the post preview modal having your email address pre-filled makes sending yourself an email preview much quicker as there's no need to type anything
closes https://github.com/TryGhost/Team/issues/535
To ensure accent color is always set for a site, this updates brand settings screen and launch wizard to not allow empty accent color to be set or updated, adding the relevant error on the page which needs to be fixed before saving or continuing on the screens.
- Shows error message for empty accent color on brand settings and launch wizard
- Shows error message for invalid accent color on brand settings and launch wizard
- Blocks save and continue with invalid/empty accent color on brand settings and launch wizard
Co-authored-by: Peter Zimon <zimo@ghost.org>
no issue
- sometimes it was possible for a drop target element to not have a child which would cause an error and cause drag/drop to get stuck with the dragged element sticking to the cursor with no action occurring on mouseup, requiring an `Esc` press but all further drags also being broken
- added a guard so we can handle `element.firstChild` not existing
no refs
For selected currency, we were only checking in the secondary currency list which does not include the top currencies like USD, so if the current selected currency is one of the top currencies, the `selectedCurrency` returned a value of `undefined`. The fix updates selected currency computation to check both top and other currencies
no refs
Fixes the "member since" value on dashboard for Top members table, was incorrectly referencing the `member` variable so all dates were picked as of today.
refs: https://github.com/TryGhost/Team/issues/510
- We now disable publishing, not just emailing, when over member limits
- Ideally, this should use the configured error message, but for now displaying the right info is important
refs: https://github.com/TryGhost/Team/issues/510
- We need to display host limit errors if we get them
- Host limit errors have a custom message added to them, so we show the original context message
refs: https://github.com/TryGhost/Team/issues/510
- The config API has been changed to return the full hostSettings key, not just the billing URL
- This has been done because we are adding more config, and it's easier to reason about if Admin has the same config as server
- Proxying each value also requires multiple updates to the API each time
- This updates all the places where the old values were used
refs f10e133acd
- updated the component backing class with the expected actions/tasks
- largely duplicated from `<GhBrandSettingsForm>` which had more up-to-date code style