Commit Graph

340 Commits

Author SHA1 Message Date
Kevin Ansfield
a9ae15b1a5 Added responsive column count to gif selector
refs https://github.com/TryGhost/Team/issues/1220

- added resize observer and cut-off widths for number of columns to auto-adjust based on the size of the selector's container
- fixed error when tenor service is unavailable due to missing `retry` action
2021-11-15 14:27:22 +00:00
Kevin Ansfield
6853b964f8 First iteration of gifs image selector + card
refs https://github.com/TryGhost/Team/issues/1217

- adds `tenor` service that acts as a coordinator for the Tenor API similar to the `unsplash` service
- adds `<GhTenor>` component that renders an image search and select modal using the `tenor` service
- swapped the gifs card over to use the `tenor` image selector so it opens the tenor modal instead of the unsplash modal
2021-11-12 16:10:26 +00:00
Naz
b42271d87c Added "urlCache" labs alpha flag
closes https://github.com/TryGhost/Toolbox/issues/126

- A flag go control the experimental URL Cache alpha feature
2021-11-12 12:29:18 +04:00
Kevin Ansfield
fe07578905 Added GIFs card labs flag
refs https://github.com/TryGhost/Team/issues/1217

- labs flag for adding a gif selector in a similar fashion to our Unsplash image selector
2021-11-11 15:12:57 +00:00
Kevin Ansfield
8b007802d4 🐛 Fixed login problems in Safari on private sites that have front-end/admin on different domains
no issue

- if the automatic private site login fails during post-auth setup, don't fully error because that will block Admin from loading properly
- the automatic login is a nice-to-have and making it look like it worked won't break anything that wouldn't already be broken when the browser is blocking x-domain requests
2021-11-09 15:38:58 +00:00
Rishabh
e6a1f651ed Added accordion card alpha flag in labs
refs https://github.com/TryGhost/Team/issues/1209
2021-11-09 19:13:23 +05:30
Peter Zimon
8335266542 Added NFT card alpha flag 2021-11-09 13:27:25 +01:00
Rishabh
a16681c8b5 Cleaned up launch complete behavior on dashboard
no issue

- when switching from the user-specific `feature.launchComplete` flag to the global `settings.editorIsLaunchComplete` there was a missed replacement of `feature`->`settings` in the dashboard logic for showing "start creating content" CTA, resulting in it being always shown
- removes `launchComplete` feature flag setup on user which was used earlier for launch complete behavior
2021-11-09 12:51:46 +05:30
Thibaut Patel
7829ea149d Added calloutCard feature flag
refs https://github.com/TryGhost/Team/issues/1205

- developer flag for enabling callout cards in the card menus
2021-11-08 17:24:18 +01:00
Kevin Ansfield
fd3f879ea8 Added buttonCard feature flag
no issue

- developer flag for enabling button cards in the card menus
2021-11-08 15:46:46 +00:00
Kevin Ansfield
9c3ddf4b2b Added additional error reporting and context to Sentry
refs https://github.com/TryGhost/Team/issues/1121

- adds error reporting for `notifications.showAlert()` in addition to `notifications.showAPIError()` because the former is used for some handled errors but will still show the undesired red error bar
- adds `shown_to_user` tag to all reported errors. Only errors that result in the red error bar will be reported with the tag as `true`, there may still be cases where we display errors outside of the red error bar but those wouldn't make it to Sentry either, we'll need a full audit of Admin source to find those situations and handle the reporting manually
- adds `ghost` context to errors that are shown in the red bar
  - `ghost_error_code` - code returned from the API or passed manually through the `notifications.showAPIError()` options argument. Will be filled in once the error message has been audited+approved
  - `displayed_message` - the full error message displayed to the user. Admin combines multiple attributes from the error details so it's useful to see what we actually show
  - `full_error` - the actual API error response or a client-side generated error object
  - `source` - whether the red bar came from `.showAlert()` or `.showAPIError()`, useful for tracking down where errors originated
2021-11-08 12:34:23 +00:00
Kevin Ansfield
60ece435bc 🐛 Fixed design settings preview using old settings immediately after activating theme
no issue

- updating the preview is done asynchronously in the background as it's not essential to the theme activation process being complete, however it was kicked off before we had waited for the custom theme settings to be re-fetched from the API. The front-end _has_ successfully swapped themes and settings at this point but when we preview we send a full set of custom settings meaning we were sending settings for the previous theme rather than the current theme because the local settings cache in Admin hadn't finished updating
2021-11-08 09:47:14 +00:00
Naz
b33959f052 Added "filesAPI" labs alpha flag
refs https://github.com/TryGhost/Toolbox/issues/114

- A flag go control the Files API alpha feature
2021-11-08 11:36:35 +04:00
Kevin Ansfield
23b919d52e Fixed design menu not collapsing after installing theme with custom settings
no issue

- added a `yield` to the fetch theme settings request when activating a theme so that settings are loaded before we switch back to the design index screen. Previously the load would happen async and the design menu didn't collapse because at the time of transition it looked like no custom settings were present
2021-11-05 15:10:24 +00:00
Naz
d5c8d02f29 Added "mediaAPI" labs flag
refs https://github.com/TryGhost/Toolbox/issues/95

- Flat go control the Media API alpha feature
2021-11-04 10:46:57 +04:00
Fabien 'egg' O'Carroll
6bd93a88ef Removed Offers related usage of labs flag (#2134)
refs https://github.com/TryGhost/Team/issues/1115

This removes all the usages of the Offers labs flag which do not modify routing.
The routing changes have been left for @peterzimon
2021-11-03 16:55:45 +02:00
Fabien O'Carroll
d03ee358e0 Added membersAutoLogin labs flag
refs https://github.com/TryGhost/Team/issues/1067

- To be used whilst developing the auto-login functionality so we can
  test this on production sites.
2021-11-03 11:17:16 +02:00
Kevin Ansfield
f9f3edd589 Added cardSettingsPanel labs flag
no issue

- to be used for toggling UI experiments/exploration for cards with separate settings panels
2021-11-02 09:56:49 +00:00
Kevin Ansfield
e9263827da Removed duplication of default modal class in modals service
refs https://github.com/TryGhost/Team/issues/559

- the majority of modals all have the same class so it doesn't make sense to repeat it constantly
- added `DEFAULT_OPTIONS` object for options that apply to all modals and removed the now-unnecessary repeated className definitions
- renamed `DEFAULT_MODAL_OPTIONS` to `MODAL_OPTIONS` to avoid confusion
2021-11-01 18:38:00 +00:00
Kevin Ansfield
396b99ecb0 Fixed upgrade modal not showing when theme uploads are not allowed
closes https://github.com/TryGhost/Team/issues/1193

- there was a typo in the limits modal component name that is shown when the limits service check fails when opening the upload theme modal
- added acceptance test with associated fix of modal name test selector in the template
2021-11-01 18:35:21 +00:00
Kevin Ansfield
f6ec42959a Ensured preview iframes always include doctype and html attributes
closes https://github.com/TryGhost/Ghost/issues/13684
refs 7eda410dc3

- ensures any `<DOCTYPE html>` (or equivalent) served when fetching preview html is passed through when replacing iframe contents
- replicates across all previews the fix for missing attributes on the `<html>` element that was put in for the design settings preview - using `documentElement.outerHTML` in place of `documentElement.innerHTML`
2021-10-28 14:53:40 +01:00
Rishabh Garg
65495b528f 🐛 Fixed settings previews not working in private site mode (#2128)
closes https://github.com/TryGhost/Team/issues/1161

- when a site is in private mode, design previews, the portal previews on membership, customize portal and offer pages were unable to load. 
- For design and theme previews, the request to fetch preview data was failing due to cors and cookie not attached when admin and frontend have split urls. 
- For portal and offer previews, there was no authentication done on private site before load, so if user opened the pages directly on them it failed to load the site.
- this change adds a new service that authenticates private site from admin as soon as user session is loaded, so previews on settings will always find the authenticated session for private sites and load correctly.
- it also updates fetch method for previews to include credentials so they are always able to fetch the site data after login
- removes authentication from site route since that was done as its now centrally taken care of by the frontend service
2021-10-28 18:29:41 +05:30
Aileen Nowak
5593407647 Fetched owner users at earlier stage to have it ready for BMA 2021-10-28 12:10:24 +02:00
Kevin Ansfield
a083f87b43 🐛 Fixed offers and custom theme setting features not appearing in Admin
no issue

- the feature flags still had the `developer: true` option so even though the server is correctly returning `true` for the features, Admin wasn't enabling them unless the `enableDeveloperExperiments` flag was also set
2021-10-23 15:56:16 +01:00
Aileen Nowak
b63a396423 Added handling for forceUpgrade state (#2116)
no issue

- Lapsed trials and subscriptions will set the site's hosting config to `forceUpgrade` in which case a Ghost(Pro) site does not have a valid subscription or trial
- In this state we need to redirect all routes for all staff users to `/#/pro` to ensure the subscription can be put back into an active state
- This commit tackles
    - Route update on startup on the application route level
    - Catching and redirecting all transition (utils routes)
    - Fetching the owner user to pass this information to the Ghost(Pro) app for better communication to non-owner staff users
    - Allowing non-owner users in the force upgrade state to transition to the `/#/pro` route
2021-10-22 12:29:55 +02:00
Kevin Ansfield
505ae7493e Optimized loading of custom theme setting in design screens
no issue

We want to automatically show brand settings expanded in the design menu when the active theme has no custom theme settings, in order to do that without causing visual noise/jank we need to ensure that we have all the data we need up-front before the design menu is rendered.

- optimized `customThemeSettings` loading behaviour
  - `.load()` will now only perform a fetch if settings have not previously been loaded so it can be called without causing unnecessary waits
  - `.reload()` will force a clear+refetch of the settings - called by `themeManagement.activate()` after successfully changing a theme
- moved fetching of theme settings from the design menu constructor to the `settings.design` route's `model()` hook
  - means the app will wait for loading to finish before showing any of the design settings screen so we can guarantee the data we need is available
- moved update of preview html from the design menu constructor to the design settings route as it's a more appropriate place to find screen setup/loading behaviour
2021-10-22 10:49:13 +01:00
Kevin Ansfield
86c5d14145 Fixed re-render (+ potential jump) of theme settings menu on save
refs https://github.com/TryGhost/Team/issues/1149

- `customThemeSettings.{settings,settingGroups}` are arrays with references to Ember Data model instances, those instances will automatically have updated properties on save so there's no need to completely re-build the settings and settingGroups lists that were forcing a re-render of the same data
2021-10-20 16:06:21 +01:00
Kevin Ansfield
93768ef678 Added navigation back to design settings index after activating uploaded theme
refs https://github.com/TryGhost/Team/issues/1149

- added a `@data.onActivationSuccess` option to the upload-theme modal that if present is called when activation of a theme is completed as part of the upload process
- added a `startThemeUpload()` action to the `change-theme` controller so that we can pass in an `onActivationSuccess` which transitions to the `design.settings.index` screen
- removed unnecessary `@tracked` decorators on class properties that have `store.peekAll('theme')` assigned to them
2021-10-19 19:43:36 +01:00
Kevin Ansfield
6c14e1ea71 Removed matchHelper labs flag toggle
refs 981f11da95

- `{{match}}` is GA now and the flag doesn't exist server-side so it was always auto-toggling off in Admin
2021-10-19 19:25:23 +01:00
Kevin Ansfield
d9c9818c73 Fixed custom theme settings disappearing when confirming leave-without-save
refs https://github.com/TryGhost/Team/issues/1149

- `customThemeSettings.rollback()` was not performing the correct job, changed to rollback attributes on each model rather than resetting everything to empty
- moved leave confirmation handling to the `settings.design.index` route so that it's always called when moving to the change-theme route, previously with the behaviour on the main `settings.design` route the willtransition/deactivate was not called when expected because that route is still active when on `settings.design.change-theme`
2021-10-19 16:22:16 +01:00
Rishabh
452ee8c3aa Refined offer detail screen
refs https://github.com/TryGhost/Team/issues/1162

- fixes decimal value for fixed type discount not working
- updates offer name placeholder to Display title
- removed default offer description value in portal preview
2021-10-19 13:08:31 +05:30
Kevin Ansfield
8b5f62439d Fixed error when saving design settings when theme has no custom settings
no issue

- if there are no settings loaded then we shouldn't try to save an empty `custom-theme-setting-list` record because it will result in an invalid API request
2021-10-18 16:40:06 +01:00
Kevin Ansfield
8e648420e8 Added Casper to the themes list
refs https://github.com/TryGhost/Team/issues/1149

- added Casper to the hardcoded official themes list with a ref of `'default'` so that the install theme process knows to process it differently
- updated the install-theme modal
  - removed the `willOverwriteDefault` getter because it's a path that can't be reached and is now handled differently
  - changed `installThemeTask` to only perform an activation when a default theme is passed in
2021-10-18 13:02:35 +01:00
Rishabh
bb575dbb87 Added portal preview to offer screen
refs https://github.com/TryGhost/Team/issues/1137

- adds new portal preview using portal offer url on offer screen
- adds new utility to calculate portal offer preview url from data
- fixed tiny bug with discount type currency not shown correctly
2021-10-18 14:31:29 +05:30
Kevin Ansfield
9eb2832cd2 Fixed all settings appearing in home and post groups
refs f4596a0add

- when extracting the groups code from component to service some variable names were changed but the assignment was missed meaning we were assigning all settings rather than specific group settings to each `group.settings` array
2021-10-14 16:58:17 +01:00
Kevin Ansfield
f4596a0add Fixed design menu re-rendering and losing input focus on first change
no issue

- `get settingGroups()` was always returning a new object which meant the template was re-rendering unexpectedly which created issues with form fields that lose their focus when re-rendered
- moved group handling into the `customThemeSettings` service as it makes more sense to keep it centralized, that gave us the ability to create a new `settingGroups` array only when the settings list changes keeping the tracked invalidation easier to reason about
2021-10-14 14:15:11 +01:00
Kevin Ansfield
19d6d3f9e5 Fixed selection of latest post in design settings preview
no issue

- we were sorting by `created_at` when fetching an individual post rather than the intended `published_at` column
- `.sortBy('publishedAtUTC')` didn't work as intended because the raw values are not directly comparable, switched to a manual sort by using `.valueOf()`
2021-10-14 10:36:02 +01:00
Kevin Ansfield
24507ac5cc Added preview page selector to design settings screen
closes https://github.com/TryGhost/Team/issues/1103

Custom post settings can be grouped by homepage or post, when set to `'post'` it makes sense to be able to preview a post page rather than the homepage.

- added preview type selection to `themeManagement` service
  - `.availablePreviewTypes` is useful for populating selects or other page selection elements
  - `.previewType` is set to the currently selected preview type name
  - `.setPreviewType()` is for setting the preview type and re-generating the preview html if necessary
- updated `themeManagement.updatePreviewHtmlTask` to fetch the latest published post if we don't already have a published post reference in the store, that post's `url` is then used when fetching the preview html if the preview type is set to `'post'`
- added a select element to the design index header that uses the themeManagement properties/actions to list types and update the preview on change
- updated the design nav menu to switch preview types when different sections are opened so the preview automatically switches to the post preview when making changes to the "post" custom theme settings group
2021-10-13 16:07:01 +01:00
Kevin Ansfield
569e4576d5 Added install+activate process to view theme screen
closes https://github.com/TryGhost/Team/issues/1130

- migrated install theme process to new modal system and changed to install+activate
- added "Use theme" button that opens the new install+activate modal
- when the view theme screen opens the install modal, an `onSuccess` callback is passed which sets a property that will skip closing the install modal when the view theme modal is closed and transitions to the `settings.design` route leaving the "success" modal state on screen
- added a `skipErrors` option to `themeManage.activateThemeTask` so that it can be used from processes that already handle theme errors without opening extra modals on top
2021-10-12 16:47:44 +01:00
Kevin Ansfield
3f7cdb34d9 Added auto-check of match helper flag when enabling custom theme settings
no issue

- custom themes settings isn't really usable without the `{{match}}` helper so to help avoid confusion we'll now enable it whenever the custom theme settings flag is enabled
- added `requires` array to the feature definition which when set will enable all flags in the array when the main feature is enabled
2021-10-12 15:33:03 +01:00
Kevin Ansfield
265a19f550 Added initial view-theme modal for installing from themes list
refs https://github.com/TryGhost/Team/issues/1130

- added new route for viewing themes so back/forward buttons can be used
  - takes theme name as a parameter
  - opens a fullscreen modal with an iframe containing the theme demo
- changed installable themes list to link to new route
- swapped `previewUrl` in theme data to point at the real demo rather than the ghost.org demo page
2021-10-12 14:28:05 +01:00
Kevin Ansfield
fee190eb08 Removed unneeded customThemes limit check
no issue

- the first check when uploading a theme is the same as the second but without returning a specific error message so it shouldn't be necessary
2021-10-12 08:27:25 +01:00
Kevin Ansfield
13f9cb85fa Refactored theme upload process and linked from design screens
refs https://github.com/TryGhost/Team/issues/1130

- copied theme upload modal to new modals system and refactored for Octane syntax
  -  updated to use `themeManagement` service rather than passed in actions so the modal-based process can be opened from any screen
  - added default `beforeClose()` for the modal to the modals service so it won't close if an upload is in-progress (defaults were moved directly into the class so it had access to services)
- added `themeManagement.upload` action for triggering the upload modal and providing a central place for limit checks
- added upload-triggering buttons to change-theme and advanced design screens
2021-10-11 19:30:58 +01:00
Kevin Ansfield
595018098d Switched design screen from modals to standard routes
refs https://github.com/TryGhost/Team/issues/1130

- added `ui.contextualNavMenu` property that when set will switch the main nav menu between components, if it's not set then it will show the default "main" menu component
- added `design` menu sub-component of `gh-nav-menu` ready for use via `contextualNavMenu`
  - moved sidebar contents from the design modal into this component
- updated design route to set/reset `ui.contextualNavMenu` to `design` on entering/leaving the route
  - all other design routes are sub-routes so this works across all other design screens
- moved base design modal preview into the `settings/design/index` controller/template
  - using index means that it's the default screen for `/settings/design` but will be automatically replaced by any other `design.x` routes
- moved `design/advanced` modal content into the `settings.design.advanced` controller/template and removed the modal handling from the route
2021-10-11 15:24:46 +01:00
Kevin Ansfield
7eda410dc3 Fixed html attributes not showing in design settings preview
no issue

- by using `innerHTML` we were missing the lang and class attributes on the `<html>` element that are added by themes, breaking things like dark mode
- switching to `outerHTML` includes the `<html>` element and is handled automatically by iframes when writing to the `contentWindow`
2021-10-11 15:03:49 +01:00
Naz
4f3e340c03 Promoted email-only feature to general availability
refs https://github.com/TryGhost/Team/issues/1125

-- Email-only is not considered a general availability feature and can be used without special flags.
- It allows to publish a new post type "email only" that only goes out as an email newletter and is available through an undescoverable URL (does not appear anywhere publicly similarly to preview posts) on the site.
- The new "send" option in the post publishing menu allows to send this new type of post.
2021-10-07 12:07:48 +02:00
Kevin Ansfield
ef97be3ffb Fixed custom theme settings disappearing after save
refs https://github.com/TryGhost/Team/issues/1111

- on saving, `customThemeSettings.settings` was set to the `hasMany` reference on the `customThemeSettingsList` model instance but the model is then immediately unloaded and the reference goes with it
- switched to using `.toArray()` on the hasMany so that we get a stable reference to the `customThemeSetting` model instances
2021-10-05 21:45:11 +01:00
Kevin Ansfield
221db9f11e Fixed design preview and settings not updating when changing theme
refs https://github.com/TryGhost/Team/issues/1111

We now have a situation where we have modals on modals and we've lost the straightforward built-in "Data down, actions up" communication methods that we'd have workaround across nested routes/controllers. The upshot of that is we didn't have a way to trigger a refresh of the preview when a new theme was activated.

- moved the task responsible for fetching preview html from the design modal onto the `theme-management` service and adjusted it to set a tracked `previewHtml` property rather than updating an iframe directly
- added a `<GhHtmlIframe>` component that renders a basic iframe element and updates it's contents each time the `@html` argument changes
- updated design modal preview to use the new iframe component
2021-10-05 21:32:42 +01:00
Kevin Ansfield
640f028ae9 Fixed theme errors modal positioning
refs https://github.com/TryGhost/Team/issues/1111

- missed the modal classes on the newly added modal
2021-10-05 20:49:15 +01:00
Kevin Ansfield
715ee08100 Added advanced theme settings modal
refs https://github.com/TryGhost/Team/issues/1111

Extracted functionality for listing, downloading, activating, and deleting from the theme controller/template into separate components and services so that they are more composable/reusable in different situations.

- moved theme activation to a new `theme-management` service that uses the `modals` service to open the theme warnings modal or limits upgrade modal as required
  - the activate process is a task so that consumers can store a reference to the task instance and cancel it to close any related warning/limit modals (eg, when navigating away from the route or closing the modal that kicked off the process)
- created new-pattern modals for custom theme limit upgrade, theme errors, and delete confirmation so that we can treat them as promises and close where needed from parent
- duplicated theme table component as `<GhThemeTableLabs>` with an actions redesign and a refactor to handle download, activation, and deletion itself making use of the new theme-management service and modals
- fixed some oddities with design modal's transition/modal close handling by simplifying the async behaviour and being more explicit
- added advanced design modal that contains the new theme table component and linked to it from footer of design modal's sidebar
2021-10-05 20:44:27 +01:00