Commit Graph

2339 Commits

Author SHA1 Message Date
Simon Backx
2d5c9ff5d7 Added POC for activity feed comment post name
refs https://github.com/TryGhost/Team/issues/1731

- Includes the post title and url in the activity feed
- For now only implemented on the member page (not yet in remaining 2 activity feeds)
- No styling added
2022-08-02 17:02:42 +02:00
Kevin Ansfield
bbf7e8ed7a Cleaned up react component rendering
no issue

- switched from needing to extend from `ReactComponent` to using a `{{react-render}}` modifier
  - modifiers are modern idiomatic Ember for handing "did-insert" hooks and associated lifecycle
- moved code from `<ReactMobiledocEditor>` into `<KoenigReactEditor>`
  - no need for the extra layering of components and need to remember two places to modify when adding passthrough args/props
2022-07-28 15:52:50 +01:00
Kevin Ansfield
bd194f4ccc Fixed loading of react editor in production
no issue

- replaced use of `GhostAdmin` global when it doesn't exist in production by using the `Ember` global and picking the correct namespace
2022-07-28 13:37:20 +01:00
Kevin Ansfield
7a9435d524 Hooked up editor registration in react editor experiment
no issue

- use the `didCreateEditor` hook to register the editor instance as we do with our Ember version of Koenig
- allows for initial handling of focus control for moving cursor between title and body inputs
- disabled card cleanup call because the react editor does not yet have cards or the custom `cleanup()` method
2022-07-27 14:14:12 +01:00
Kevin Ansfield
a4a4136c2f Fixed hooks not being usable inside of react components
no issue

- switched to using the `window.ReactDOM` instance that is created when importing the react/react-dom libraries
  - React stores state/component references inside of the ReactDOM instance when rendering so we need to make sure all renders use the same instance otherwise it loses track of which component a hook belongs to
- cleaned up unnecessary vendor shims and `prop-types` import
  - `react` and `react-dom` vendor shims are unused when using the globals instead of imports
  - `prop-types` import+shim is not required as it's part of the `@tryghost/koenig-react` build unlike the earlier direct import of `react-mobiledoc-editor`
2022-07-27 14:14:12 +01:00
Kevin Ansfield
b5b88e7c5e Added mobiledoc change handling to react-editor experiment
no issue

- passed through the `onChange` event handler so that changes to the content are updated in Ember and autosave etc is triggered
2022-07-26 14:42:59 +01:00
Kevin Ansfield
873a2ff8e3 Updated <ReactMobiledocEditor> to work with single-component export from koenig-react
no issue

- top-level export from `@tryghost/koenig-react` is a single component and the UMD module is loaded onto `window.koenigEditor`
2022-07-26 14:34:14 +01:00
Simon Backx
0963da7a2e Added support for comment activity feed events
refs https://github.com/TryGhost/Team/issues/1709

- Hides comment events if lab flag is disabled
- Hides comment events if comments are disabled
2022-07-22 11:52:11 +02:00
Kevin Ansfield
f00bdbf43c Changed url for react editor module to use Ghost/config-provided url (#2428)
reqs https://github.com/TryGhost/Ghost/pull/15045

- accesses the Ember registry via the `GhostAdmin` global to grab the editor component url that Admin fetches from the config endpoint
- `ember-auto-import` does not allow dynamic imports unless it can see it's an absolute URL, to work around that we strip the `https://` part of the provided URL and manually include it in the template string so it's detectable as an absolute URL when building
- added redirect to posts screen if no editor url is provided in config
2022-07-19 14:24:07 +01:00
Kevin Ansfield
896cd4888f Switched to dynamically loaded external react-mobiledoc-editor package
no issue

- dropped the bundled `react-mobiledoc-editor` package
- updated `<ReactMobiledocEditor>` component to pull in editor components dynamically
  - added a resource function to dynamically import the external module
  - added `Container` and `Editor` components that read from the resource function and wrap components of the same name from the external module
  - added `<Suspense>` around the `Container` and `Editor` components so that React will show a loading state whilst the external components are still being fetched
  - added `<ErrorHandler>` so we can show an error state if loading fails
2022-07-19 12:48:53 +01:00
Kevin Ansfield
d991da399c Added support for building/rendering react components
no issue

- updated ember-cli-build and eslint config to support jsx
- added `react` and `react-dom` libraries
  - included them in the build so the `React` and `ReactDom` globals are available for use by third party components
  - added vendor shims so we can do things like `import * from 'react'` where the imports are referenced directly to the already imported modules
- added `<ReactComponent>` component
  - designed to be extended from in specific react component classes
  - renders a div and calls `renderComponent()` action once inserted - this should be replaced in any extended classes in order to render a react component
  - handles react rendering and teardown
- added `<ReactMobiledocEditor>` react component that renders an editor composed of components provided by the `react-mobiledoc-editor` package
- added `<KoenigReactEditor>` ember component that renders `<ReactMobiledocEditor>` and handles pass-through of Ember arguments and handling of actions
- updated `<GhKoenigEditorReact>` to render `<KoenigReactEditor>` in place of `<KoenigEditor>`
2022-07-19 12:48:53 +01:00
Kevin Ansfield
81f3718867 Duplicated <GhKoenigEditor> to <GhKoenigEditorReact>
no issue

- the component wraps the title and editor canvas components, we only want to replace the canvas component with a react experiment so we need a duplicate for use in the `react-editor` experiment templates
2022-07-18 11:11:19 +01:00
Simon Backx
9e7727752c Updated support email address confirmation flow (#2426)
refs https://github.com/TryGhost/Team/issues/584

- No longer uses a API URL + redirect inside verification emails. This is replaced by a new route (`/settings/members/?verifyEmail=token`) that does the API request and shows a modal.
- Removed update button when changing support email address in the Portal settings
- Added `_meta` attribute to settings (uses same pattern as newsletters model)
- When updating the `membersSupportAddress` setting (via the normal edit endpoint), the `sent_email_verification` meta property will get set by the API. When this new property is present, we'll show a warning that the support address requires verification.
2022-07-15 14:44:26 +02:00
Daniel Lockyer
1d6fee8aa0 Fixed date zero-padding in table views
- when you have a date column in a table, dates with 2 digits vs 1
  digit cause the vertical alignment to be all over the place
- this commit fixes the date formatting for those entries to be zero-padded
2022-07-15 09:45:42 +01:00
James Morris
db0929d07a Improved the strange resizing issues for the main chart on new Dashboard 2022-07-14 16:00:17 +01:00
Sanne de Vries
a4d5d14ba6 Updated internal tag style in user deletion modal 2022-07-14 15:11:43 +01:00
Sanne de Vries
09794a7c05 Updated theme upload modal in Casper error state
No ref

- Updated modal default state to make it look more clickable
- Updated the Casper upload error state design
- Changed the 'try again' button to directly open the finder rather than only resetting the modal
2022-07-14 15:07:08 +01:00
Djordje Vlaisavljevic
5ad99f79a9 Added unique aria-labels to form elements 2022-07-13 18:25:46 +02:00
Djordje Vlaisavljevic
a710dd3c06 Removed option to close the modal by clicking behind it 2022-07-13 17:28:29 +02:00
Djordje Vlaisavljevic
82808d69f5 Made the "back" buttons have unique aria-label attributes 2022-07-13 17:27:24 +02:00
Djordje Vlaisavljevic
1158555084 Set canonical post placeholder value to post URL 2022-07-13 16:59:28 +02:00
Simon Backx
5f63060f78 🐛 Excluded plan changes from paid subscribers graph in dashboard
refs https://github.com/TryGhost/Team/issues/1673

When a user switches plan, the paid subscribers delta chart on the dashboard displays the change as a cancellation plus a new subscription. This display is misleading and confusing - instead, plan changes should be excluded from the paid subscribers delta chart.
2022-07-13 13:46:45 +02:00
Sanne de Vries
be2744c27f Updated activity feed empty state icon 2022-07-12 14:03:40 +01:00
Naz
c7de8d3358 Updated copy for user deletion modal
refs https://github.com/TryGhost/Ghost/issues/15008

- When the user is removed the new flow adds a special tag and reassignes all the user-owned posts to the owner user. Updated copy to inform about this behavior clearly
2022-07-13 00:26:13 +12:00
Kevin Ansfield
c06692a2fb 🐛 Fixed "Published" date for recent posts in dashboard always showing current time
no issue

- switched to the actual published at property name
- wrapped date in `{{moment-site-tz}}` so the site-local time is shown
2022-07-08 12:34:58 +02:00
Naz
04d27fac5f Stopped downloading site backup when deleting a user
refs https://github.com/TryGhost/Ghost/issues/15008

- Backup process had a slim benefit to keep around. Without it the removal process is much smoother.
- The backup still happens on the server side if it's absolutely needed at some point in the future
2022-07-08 20:56:52 +12:00
Peter Zimon
ff7bb48b7e Added Comment access dropdown to membership settings 2022-07-06 11:01:57 +02:00
Kevin Ansfield
b98b6aa805 🐛 Fixed dashboard member activity feed always showing current time for timestamp
no issue

- `event.timestamp` was used instead of `parsedEvent.timestamp` meaning it was undefined and `{{moment-format}}` created a new date object instead of using the real event date
2022-07-06 09:22:05 +02:00
Kevin Ansfield
f03041929f 🐛 Fixed schedule post date picker sometimes not allowing "today" to be selected
no issue

- with large site timezone UTC offsets it could happen that "today" in the site timezone is not selectable in the date picker when scheduling posts
- the problem occurred because we were passing a minimum date to the date picker in UTC which was then converted to a local date using just the "YYYY-MM-DD" data but that would not always be correct because the UTC date could be "tomorrow" compared to the site timezone. Passing in the minimum date in the site timezone rather than UTC ensures the minimum date always matches "today" in the site timezone
2022-07-01 11:20:26 +01:00
Kevin Ansfield
100dea6d98 🐛 Fixed scheduled post datepicker sometimes picking day before selected date
no issue

- in sites with a timezone that is negatively offset from UTC at certain times of day when the equivalent UTC date would be the next day, selecting a date when scheduling a post would select a day before the selected date
- fixed the date adjustment when applying the selected date to properly take timezones into account
2022-07-01 11:20:26 +01:00
Simon Backx
557e268445 Added newsletter archiving tests
refs https://github.com/TryGhost/Team/issues/1477
2022-06-02 10:39:17 +02:00
Sanne de Vries
1e76022a28 Fixed post bookmark shifting layout bug 2022-06-01 18:26:20 -04:00
Sanne de Vries
5e7678b239 Fixed empty states spacing regression 2022-06-01 17:31:23 -04:00
Kevin Ansfield
e1dfe3edb0 🎨 Improved save/update button copy in editor (#2413)
no issue

- renamed "Update" to "Unpublish" or "Unschedule" to match the available actions
- renamed "Save" to "Update" and made it always visible but disabled when there are no unsaved changes
- switched <Editor::PublishManagement> to a provider component and extracted `<Editor::PublishButtons>`
  - allows for the management flow to wrap other UI elements and have the yielded actions passed down so the publish/update flow can be opened from more than just the publish/unschedule/unpublish buttons
- added link to "Sent" in editor status that opens the update flow for email-only posts

Co-authored-by: Peter Zimon <peter.zimon@gmail.com>
2022-06-01 13:48:33 +01:00
Kevin Ansfield
ed235b374d Increased publish flow acceptance tests
refs https://github.com/TryGhost/Team/issues/1586

- updated `?newsletter_id=id` handling in posts API mock to match the real `?newsletter=slug` behaviour
- added additional publish flow acceptance tests for single/multiple newsletter behaviour, scheduling, and sending
2022-05-31 22:59:20 +01:00
Kevin Ansfield
99f05e14b2 🐛 Fixed default publish type being "Publish and email" when default recipients set to "Usually nobody"
no issue

The default recipients setting "Usually nobody" was being respected with the email recipient list defaulting to no members selected. However the UI for that state was confusing because the default publish options ended up being "Publish and email" and "Not sent as a newsletter" but it was expected to be "Publish" with the newsletter option being disabled.

- updated the `PublishOptions` setup to reflect the desired outcome for "Usually nobody"
  - default publish type is set to "Publish"
  - default email recipients are set to match post visibility - this means there are fewer clicks required when switching from "Publish" to "Publish and send"
- updated mirage data setup so any members created are automatically assigned to any newsletter instance with `subscribeOnSignup` set
  - ensures we get proper member counts in the publish flow
2022-05-30 20:04:04 +01:00
Kevin Ansfield
3f0e46c7b0 Added initial tests for new publish flow
refs https://github.com/TryGhost/Team/issues/1586

- added test helper for enabling/disabling members and helpers for disabling mailgun and newsletters
- added `loginAsRole` helper that alleviates duplication of user+role creation and also handles log-out before log-in so it's easier to mix different role tests within a block that has a default role setup in `beforeEach()`
- cleaned up editor tests that were skipped due to using the old publish flow
- added `Publish flow` acceptance test suite with an initial batch of tests
2022-05-30 19:12:16 +01:00
Kevin Ansfield
e4b402c603 Sped up tests that use {{liquid-if}}
no issue

- some tests were unnecessarily slowed down by waiting repeatedly for animations to complete
- added override for `<LiquidContainer>` component that `<LiquidIf>` uses internally with the only change being to set the default growth animation duration to 5ms when running tests
2022-05-30 12:10:37 +01:00
Djordje Vlaisavljevic
ac52e01977 Put less emphasis on the "Send test email" button 2022-05-30 12:42:13 +02:00
Kevin Ansfield
09400a1ef8 🐛 Fixed broken file selectors in labs, general, and portal settings screens
refs 8fee5f155b

- the conversion from jQuery to native was incomplete in a few places and still used `.find()` in place of `.querySelector()`
2022-05-29 11:18:55 +01:00
Simon Backx
191c7e312b 🎨 Reduced favicon requirements (#2408)
refs TryGhost/Team#1652

- Support picking new image types in the favicon image uploader.
- Added support for non-square and not resizable files (e.g., svg files) as favicon (cover background image).
2022-05-27 16:20:40 +02:00
Kevin Ansfield
b9707a2b4a Moved logic for publish confirm button text states into backing class (#2397)
refs a021553203

- keeps text and logic together, avoids duplication of button code just for changing the running/success text
- added a `buttonTextMap` to keep the high-level text states in one place
- added `publishType` getter for easier switching between states in other getters and to have one place for the logic
- updated `confirmButtonText` getter and added `confirmRunningText` and `confirmSuccessText` getters that read from the button text map so the pattern used for getting text to pass as arguments in the template is consistent
2022-05-27 11:45:40 +01:00
James Morris
2f85bd6ea4 Fixed the button positions and spacings for the Publish, Save and Sidebar icons in the editor
no issue
2022-05-26 13:47:38 +01:00
Kevin Ansfield
8fee5f155b Standardized on non-jQuery file dialog triggers
no issue

- we had a mix of legacy jQuery triggers and native triggers for file input clicks and jQuery hasn't been required to do this in our target browsers for quite a long time now so it made sense to update all click triggers to avoid old patterns being replicated
- cleaned up some conditionals with optional-chaining
- removed use of `run.bind(this)` for methods that use `@action` because the binding is already handled for us
2022-05-26 11:05:14 +01:00
Kevin Ansfield
aaef8f7d44 Deleted unused <GhProfileImage> component
no issue

- the component became unused when the staff user page design was updated but was never cleaned up
2022-05-26 10:42:10 +01:00
Kevin Ansfield
7356bfbcd9 Migrated notifications tests to Octane patterns
refs e021843e3f

- fixed closing of alerts due to missing `.args` after migrating to glimmer syntax
- updated related tests for glimmer component syntax
2022-05-25 12:45:26 +01:00
Kevin Ansfield
e021843e3f Migrated notifications to Octane patterns
no issue

- migrated `notifications` service from EmberObject to true native class
  - switched to tracked properties and use of `TrackedArray`
  - swapped computed properties to getters
  - dropped unnecessary usage of `get` and `set`
- migrated alert/notification related components to Glimmer components
2022-05-25 12:16:37 +01:00
Kevin Ansfield
99bfde4417 Converted <GhCanvasHeader> to glimmer component
no issue

- added `{{on-scroll}}` modifier to replace custom setup and teardown of event handlers inside the component
2022-05-25 10:07:11 +01:00
Peter Zimon
90dfe9f0df Fixed button type from membership settings link 2022-05-25 10:27:44 +02:00
Sanne de Vries
5edc95d96d Fixed dark mode issues in publishing flow 2022-05-25 10:23:11 +02:00