Commit Graph

14655 Commits

Author SHA1 Message Date
Djordje Vlaisavljevic
aea7820487 Renamed files
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 16:45:56 +02:00
Simon Backx
0cd0fc838d
Added email track clicks column and cleaned up frontend checks (#15501)
fixes https://github.com/TryGhost/Team/issues/2008

- New column that stores email click tracking at the time it was created
- Improved frontend side checks for when to show analytics
2022-09-29 16:42:45 +02:00
Djordje Vlaisavljevic
22a75ba144 Updated dashboard mocks
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 16:23:50 +02:00
Djordje Vlaisavljevic
d2d34b1418 Updated all sources modal width
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 16:23:01 +02:00
Djordje Vlaisavljevic
d811bd512f Fixed modal footer
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 16:20:21 +02:00
Djordje Vlaisavljevic
9fa48613de Updated hover state for the anchor dropdown
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 16:14:58 +02:00
James Morris
9e51ba0c31 Removed the button labels from the post rows
refs https://github.com/TryGhost/Team/issues/1965
2022-09-29 15:07:37 +01:00
Djordje Vlaisavljevic
3fe51c8e9a Set max height for All sources modal
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 15:59:12 +02:00
James Morris
a9308e6394 Adding in new code to bring source attribution more in line
refs https://github.com/TryGhost/Team/issues/2001
2022-09-29 14:52:36 +01:00
Simon Backx
1a5ff8d53d
Added back button from editor to analytics (#15493)
fixes https://github.com/TryGhost/Team/issues/1992

When you edit a post via the editor, the back button on the top of the editor should go back to the analytics page and the status at the top should be removed.
2022-09-29 14:34:01 +02:00
Simon Backx
0c20950512 Cleaned up indentation in links-table.hbs 2022-09-29 13:05:55 +02:00
Simon Backx
061ae9c018 Added pagination to the links table on analytics page
refs https://github.com/TryGhost/Team/issues/1984
2022-09-29 13:02:49 +02:00
Fabien "egg" O'Carroll
a05ef5ef95 Updated newsletter attribution to use the name rather than slug
The slug from the fixtures is "default-newsletter" which doesn't correctly
reflect the name of most sites newsletters. Because we're using the URL
constructor it handles all of the URL encoding/decoding on both ends for us.
2022-09-29 11:52:25 +01:00
Simon Backx
99e6f8ddda Moved analytics page to separate component
refs https://github.com/TryGhost/Team/issues/1976
refs https://ghost.slack.com/archives/C02G9E68C/p1664446234131629

- @tracked properties in controllers are persisted, should use components instead
2022-09-29 12:41:16 +02:00
James Morris
9be863cc82 Tiny tweaks to styles for post analytics
- Made the source attribution table half and half
- Adjust the button hover for post rows

no issue
2022-09-29 11:06:29 +01:00
Djordje Vlaisavljevic
0d6946685e Updated design for multiple subs in sub box edge case
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 10:22:59 +02:00
Djordje Vlaisavljevic
d1c269b2e7 Updated the tooltip offset
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 09:25:59 +02:00
Rishabh
aa6f65ac22 Fixed disabled attribution category selector dropdown
- removes hardcoded disable on attribution category selector and uses calculated value instead
2022-09-29 12:17:45 +05:30
Rishabh
b3adaf26c5 Handled attribution table empty data on dashboard
- updates default dropdown based on availability of paid conversions or signups
- disables dropdown if data is missing for type of attribution
2022-09-29 11:17:02 +05:30
Rishabh
7e68bc172a Added empty state UI for attribution charts on dashboard
refs https://github.com/TryGhost/Team/issues/1986
2022-09-29 11:17:02 +05:30
Rishabh
f9215cbbe4 Refined attribution table unavailable source style
- updates legend color for Unavailable to match Others as a white transparent dot
2022-09-29 11:17:02 +05:30
Daniel Lockyer
16ada37358 Updated Stats-Service repository URL
- this package was moved from the Analytics repo so this needed updating
2022-09-29 11:55:08 +07:00
renovate[bot]
839a61bacd Update dependency @babel/plugin-proposal-decorators to v7.19.3 2022-09-29 11:47:34 +07:00
renovate[bot]
5176aa8a7b Update dependency @types/mocha to v10 2022-09-29 11:42:45 +07:00
renovate[bot]
68ad829e1f Update sentry-javascript monorepo to v7.14.0 2022-09-29 07:44:21 +07:00
James Morris
5299905851 Added in the static front-end of the pagination
refs https://github.com/TryGhost/Team/issues/1984
2022-09-28 18:18:45 +01:00
James Morris
4cf5380724 Added in member filtering to rest of stats in analytics
- This adds member filtering for signups and conversions in analytics
- This also makes all events in rows clickable

refs https://github.com/TryGhost/Team/issues/1969
2022-09-28 17:10:15 +01:00
Djordje Vlaisavljevic
901708b299 Updated design of Other sources field
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 17:25:51 +02:00
Djordje Vlaisavljevic
e843df75b4 Added commented out footnote
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 17:25:51 +02:00
Simon Backx
b905085d6f
Added opened, clicked and received email filtering to members (#15492)
fixes https://github.com/TryGhost/Team/issues/1993

- Allows filtering members by opened, clicked and received email
- Adds clicked_links filter relation to Member model.
- Adds emails filter relation to Member model.
- Adds opened_emails filter expansion to Member model.
- Updated GhResourceSelect to be able to only show list posts by setting the `type` attribute to `email`.
- Improved code reuse in `filter-value` component.
2022-09-28 17:14:32 +02:00
Simon Backx
8af422c601
Updated email_track_clicks to current email_track_opens value (#15484)
fixes https://github.com/TryGhost/Team/issues/1990

We need to set the current track clicks setting to the current track opens setting, just before release.
2022-09-28 17:12:29 +02:00
James Morris
59b5cd59b2 Better matching posts and pages and fixing when no members
refs https://github.com/TryGhost/Team/issues/1995
2022-09-28 15:56:22 +01:00
Djordje Vlaisavljevic
584546cf1d Updated other sources button
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 16:47:29 +02:00
Djordje Vlaisavljevic
52af7c687d Added attribution help docs link placeholder
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 16:31:52 +02:00
Rishabh
f2430c34cc Updated attribution chart on post analytics page
refs https://github.com/TryGhost/Team/issues/1986

- added dropdown for paid vs signups selection on attribution chart
2022-09-28 19:50:29 +05:30
Simon Backx
1caa8f5b9a Hidden analytics page button for published post when attribution is disabled
fixes https://github.com/TryGhost/Team/issues/1998

- Should not show analytics button when post is not sent via email and attribution is disabled
- Improved checks for the analytics button
2022-09-28 16:15:03 +02:00
James Morris
dc9ef69547 Better matching up the pages table with the posts table
refs https://github.com/TryGhost/Team/issues/1995
2022-09-28 14:17:12 +01:00
James Morris
cd97341ed6 Fixed up the edit and stats buttons based on feedback
refs https://github.com/TryGhost/Team/issues/1994
2022-09-28 13:44:58 +01:00
Djordje Vlaisavljevic
b72b51b542 Made the attribution widget look better on smaller screens
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 14:20:40 +02:00
Rishabh
d63f4548c0 Removed attribution sources from UI if site is invite-only
refs https://github.com/TryGhost/Team/issues/1986

- removes attribution section from dashboard and post analytics if site is invite only
2022-09-28 17:26:38 +05:30
Rishabh
8c225ee9d0 Fixed lint
- updates `index` for susbcription detail box
2022-09-28 17:22:24 +05:30
Djordje Vlaisavljevic
9209a39c29 Added new attribution widget design
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 13:44:28 +02:00
Rishabh
79248cdde9 Fixed dropdown blink for subscription detail box
refs https://github.com/TryGhost/Team/issues/1986

- creates new component for subscription detail box that avoids re-render of whole block causing flicker
2022-09-28 17:08:28 +05:30
Rishabh
cf1f41d61c Updated attribution table design to show single column data
- adds new dropdown that allows switching between signups vs paid conversions
- updates chart data based on dropdown value, keeps the sort column till the design for this is polished
2022-09-28 16:27:44 +05:30
Rishabh Garg
b46258bbc6
Allowed storing attribution data on member events (#15487)
refs 90034577b8

- this change was missed in above commit and would have blocked capturing attribution data for sites without the flag
2022-09-28 15:42:04 +05:30
James Morris
994f0eea64 Tiny padding adjustment for boxes
refs https://github.com/TryGhost/Team/issues/1968
2022-09-28 11:11:15 +01:00
Rishabh
8b2db5c017 Refined attribution table on dashboard for list of sources
- updates table to always show top 5 sources, including the empty sources
- only adds `Other` to list on table if more than 5 sources exist
- updates mock to include `Unavailable` data
2022-09-28 15:31:41 +05:30
Simon Backx
160469d787 Improved analytics page loading states
refs https://github.com/TryGhost/Team/issues/1976

- Wait to show any module until everything has been loaded
2022-09-28 11:58:51 +02:00
Djordje Vlaisavljevic
49a922fbd5 Updated attribution widget empty state
refs https://github.com/TryGhost/Team/issues/1986
2022-09-28 11:05:28 +02:00
Simon Backx
03bfe2504e Fixed ref instead of rel when stripping querystring from tracked url
no issue
2022-09-28 11:03:00 +02:00
Simon Backx
e0965a6262 Readded hash to cleaned tracked links in admin
fixes https://github.com/TryGhost/Team/issues/1980
2022-09-28 10:31:18 +02:00
Naz
8cbf913582 Increased Vary granularity for versioned requests
refs https://github.com/TryGhost/Toolbox/issues/425
refs https://github.com/TryGhost/Toolbox/issues/280

- The versioned API responses vary based on requested version (passed in request's 'accept-version' header). shared caches that sit between Ghost's origin server and the browser would be putting responses with same Vary into the same caching bucket, which is incorrect.
- This change makes response's Vary more granular and tells caching mechanisms to take 'Accept-Version' request header into account when caching.
- Informative read on the topic - https://www.fastly.com/blog/getting-most-out-vary-fastly
2022-09-28 14:48:43 +08:00
renovate[bot]
b61c13e228 Update dependency @playwright/test to v1.26.1 2022-09-28 12:38:09 +07:00
Sanne de Vries
08656ea569 Updated lexical sandbox page structure
Refs https://github.com/TryGhost/Team/issues/1991
2022-09-28 11:06:32 +07:00
Naz
874d0bf81b Made Content API caching configurable
refs https://github.com/TryGhost/Toolbox/issues/411

- Having hardcoded cache control values in the codebase makes it impossible to experiment with new values without a version release.
- Having all values configurable by default will allow for easier caching experiments and customizations on self-hosting instances.
2022-09-28 07:32:27 +08:00
Naz
e45eb4d5dd Made robots.txt caching configurable
refs https://github.com/TryGhost/Toolbox/issues/411

- Having hardcoded cache control values in the codebase makes it impossible to experiment with new values without a version release.
- Having all values configurable by default will allow for easier caching experiments and customizations on self-hosting instances.
- Brings caching across both private and public robots file caching to same consistent and configurable value.
2022-09-28 07:32:27 +08:00
Naz
f6c7df4018 Fixed overly long robots.txt caching for private sites
refs https://github.com/TryGhost/Toolbox/issues/411
refs 78ac63d8ad (diff-fb6792aa9cc3b71f5b146129fb1b58765206ecf4c5f367b72e0826b4b2934508R74)

- The value should have been in SECONDS not MILLISECONDS from the very beginning (see referenced commit)
2022-09-28 07:32:27 +08:00
Naz
a26689c264 Added backend JWKS endpoint caching
refs https://github.com/TryGhost/Toolbox/issues/411
refs f58b5984cb

- Backend JWKS endpoint did not have any HTTP caching
- It is recommended to cache JWKS endpoints (ref.: https://docs.apigee.com/api-platform/reference/policies/jwt-policies-overview)
- This change also brings the endpoint up to speed with what members JWKS
endpoint does
- Above point gives another reminder to extract JWKS functionality into a
common module that should be reused
2022-09-28 07:32:27 +08:00
Naz
8c47819194 Made members JWKS endpoint caching configurable
refs https://github.com/TryGhost/Toolbox/issues/411
refs f58b5984cb

- Having hardcoded cache control values in the codebase makes it impossible to experiment with new values without a version release.
- Having all values configurable by default will allow for easier caching experiments and customizations on self-hosting instances.
- This change only changes the members endpoint caching configurability. The other JWKS endpoint will be modified separately (following commit), to keep changes concise
2022-09-28 07:32:27 +08:00
Naz
5331ba3999 Made public built assets caching configurable
refs https://github.com/TryGhost/Toolbox/issues/411

- Having hardcoded cache control values in the codebase makes it impossible to experiment with new values without a version release.
- Having all values configurable by default will allow for easier caching experiments and customizations on self-hosting instances.
-NOTE:  caching of `public/ghost.css` increases here from one HOUR to one YEAR (did not find any good reason to keep caching to short window for a built asset that has cache-busting mechanism)
2022-09-28 07:32:27 +08:00
Naz
381e419471 Made sitemap.xls caching configurable
refs https://github.com/TryGhost/Toolbox/issues/411

- Having hardcoded cache control values in the codebase makes it impossible to experiment with new values without a version release.
- Having all values configurable by default will allow for easier caching experiments and customizations on self-hosting instances.
2022-09-28 07:32:27 +08:00
Djordje Vlaisavljevic
2c2fd20a17 Removed inline styles
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 21:36:59 +02:00
Djordje Vlaisavljevic
ca7937d100 Removed inline styles
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 21:36:59 +02:00
Rishabh Garg
31733657a6
Updated naming for referrer attribution (#15486)
- renames `refSource`, `refMedium` and `refUrl` to `referrerSource`, `referrerMedium` and `referrerUrl` respectively for consistent naming across files and usages
2022-09-28 00:58:06 +05:30
Rishabh
3314dafa78 v2.13.1 2022-09-28 00:17:31 +05:30
Djordje Vlaisavljevic
b64e7b6da0 Fixed dashboard dark mode issues
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 20:47:10 +02:00
Rishabh
10e65f7fe8 Fixed incorrect import handling for data attributes
refs c3c503632b
2022-09-28 00:16:47 +05:30
Djordje Vlaisavljevic
8a3c696f9d Fixed subscription box dark mode issues
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 20:34:59 +02:00
Rishabh
d886bc4b0d Fixed tests for portal bump
refs 8848fd0f59

- last commit didn't update test snapshots for new portal version bump
2022-09-28 00:04:32 +05:30
Rishabh
8848fd0f59 Handled attribution history capture via portal data attributes
- updates portal to capture member attribution history when signing up via theme using data-attributes
2022-09-27 23:59:06 +05:30
Rishabh Garg
90034577b8
Added member attribution history frontend script (#15482)
- bumps member attribution script from alpha feature to now load for all sites. The script captures recent url history in localstorage to capture correct attribution for members.
- script is only loaded on the site if members is enabled
2022-09-27 23:45:41 +05:30
Rishabh
d558a185de v2.13.0 2022-09-27 23:43:00 +05:30
Rishabh
c3c503632b Added attribution history to api requests via data attributes
- we added attribution data from localstorage to api requests made via Portal UI, but was missed for requests directly from theme via data-attributes
- includes url history data for free or paid signups via theme to mark correct attribution
2022-09-27 23:42:09 +05:30
James Morris
81605f7f2a Added a basic loading state to modules in post analytics
refs https://github.com/TryGhost/Team/issues/1956
2022-09-27 18:02:20 +01:00
James Morris
c266971e04 Fixed the broken source attributiont table design in post analytics
refs https://github.com/TryGhost/Team/issues/1959
2022-09-27 18:02:20 +01:00
Simon Backx
f33e7a22fa
Added E2E test for whole link tracking flow (#15481)
refs https://github.com/TryGhost/Team/issues/1967

- Test is good to test if the whole flow works as expected, and works together
- We can test independent parts in separate tests that have better coverage of more edge cases
- Adds a basic helper to get an agent for the frontend (spent too much time on a better solution so I decided to keep the existing supertest agent)
2022-09-27 18:44:20 +02:00
Rishabh
2be3452c76 Refined attribution data on member details screen
refs https://github.com/TryGhost/Team/issues/1986

- hides attribution section if attribution data is null
- hides referrer section if referrer source is empty
2022-09-27 21:59:42 +05:30
Simon Backx
6489cb01b5
Disabled link replacement when link click tracking is disabled (#15483)
fixes https://github.com/TryGhost/Team/issues/1988

- We don't want to replace links when link click tracking is disabled (also not add ref)
- Cleaned up some comments and methods
2022-09-27 18:20:34 +02:00
Simon Backx
8c87bb8158 Fixed missing times in activity feed click events
fixes https://github.com/TryGhost/Team/issues/1983
2022-09-27 18:10:05 +02:00
Djordje Vlaisavljevic
f3f6e87378 Updated chart container size
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 16:52:21 +02:00
Djordje Vlaisavljevic
535624d511 Updated chart size
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 16:52:21 +02:00
Djordje Vlaisavljevic
cb25817581 Fixed chart title
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 16:52:21 +02:00
Djordje Vlaisavljevic
94009a2612 Removed old empty state
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 16:52:21 +02:00
Djordje Vlaisavljevic
cbd76f3437 Updated dot color
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 16:52:21 +02:00
Daniel Lockyer
18e3d38bb0
Merged v5.16.2 into main
v5.16.2
2022-09-27 21:19:32 +07:00
Ghost CI
effe66e3a5 v5.16.2 2022-09-27 13:45:58 +01:00
Kevin Ansfield
5513cfbbdb 🐛 Fixed error preventing publish for non-Admin staff users
refs e3db911108

Contributors/Authors/Editors do not have permissions to fetch members so the request to fetch a member count when checking member host limits fails and blocked publishing because it was treated like a failed limit check.

- prevented the up-front limit check from running for non-Admin staff users. Publishing will still fail for other users if the site is over the hosting plan members limit but the error will be shown later in the flow when the actual publish request is made.
2022-09-27 13:24:37 +01:00
Kevin Ansfield
a67cb265fc 🐛 Fixed error preventing publish for non-Admin staff users
refs e3db911108

Contributors/Authors/Editors do not have permissions to fetch members so the request to fetch a member count when checking member host limits fails and blocked publishing because it was treated like a failed limit check.

- prevented the up-front limit check from running for non-Admin staff users. Publishing will still fail for other users if the site is over the hosting plan members limit but the error will be shown later in the flow when the actual publish request is made.
2022-09-27 13:19:02 +01:00
Kevin Ansfield
e2d02131aa Added lexical editor design sandbox route
closes https://github.com/TryGhost/Team/issues/1985

- adds `/#/lexicalsandbox` route that renders the `<DesignSandbox />` component from the `@tryghost/koenig-lexical` library
2022-09-27 13:00:16 +01:00
Djordje Vlaisavljevic
a6bf772195 Added dynamic border color
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
Djordje Vlaisavljevic
45b3772ddc Made the dashes lighter
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
Djordje Vlaisavljevic
3960384a25 Removed fixed height from the table body
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
Djordje Vlaisavljevic
970eef761c Removed dots from modal sources table
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
Djordje Vlaisavljevic
49786c8ca4 Made the modal wider
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
Djordje Vlaisavljevic
baede872ea Updated the copy
refs https://github.com/TryGhost/Team/issues/1986
2022-09-27 13:54:27 +02:00
James Morris
ec9e61dc2f Tweaks to how click events are handled based on feedback
refs https://github.com/TryGhost/Team/issues/1981
2022-09-27 12:29:08 +01:00
Djordje Vlaisavljevic
e98dda15f9 Removed subscription source when it's unknown
refs https://github.com/TryGhost/Team/issues/1904
2022-09-27 11:32:31 +02:00
Kevin Ansfield
89d4e3daf9
Updated error messages for invalid mobiledoc+lexical post/page API requests (#15477)
closes https://github.com/TryGhost/Team/issues/1896

- updated message to be clearer, added context and help
2022-09-27 10:30:28 +01:00
Fabien "egg" O'Carroll
d3030cb87d Fixed query param typo for newsletter source attribution
The attribution tracking script uses the `ref` param, not `rel`
2022-09-27 10:25:29 +01:00
Djordje Vlaisavljevic
4858baf2df Added doughnut chart titles
refs https://github.com/TryGhost/Team/issues/1905
2022-09-27 10:55:27 +02:00
Djordje Vlaisavljevic
87ad7d1df3 Updated font weight for source
refs https://github.com/TryGhost/Team/issues/1953
2022-09-27 10:51:51 +02:00
Djordje Vlaisavljevic
83f88e1586 Added pointer cursor to column names
refs https://github.com/TryGhost/Team/issues/1941
2022-09-27 10:02:27 +02:00
Djordje Vlaisavljevic
5d5fc33d2c Updated MRR widget design
refs https://github.com/TryGhost/Team/issues/1932
2022-09-27 09:53:41 +02:00
Sanne de Vries
ac7d7427e9 Fixed padding on member-limit notification box on publish page
Refs https://github.com/TryGhost/Team/issues/1885
2022-09-27 11:27:58 +07:00
Daniel Lockyer
9818634b63
Merged v5.16.1 into main
v5.16.1
2022-09-27 11:21:48 +07:00
Ghost CI
ddb9c1b30c v5.16.1 2022-09-27 05:21:10 +01:00
Rishabh
0349acb7e3 Updated content cta to use global accent color property
refs https://github.com/TryGhost/Ghost/pull/15471#discussion_r979902374

- the accent color value used by default content cta was copying the global site property which is redundant, and can be directly used
- originally, the accentColor property was extended to allow a fallback value for content ctas, but was later removed as we added default value to global site property directly
- the accentColor property is now deprecated and will be removed in next version, as existing themes might be relying on it for custom cta helpers
2022-09-27 09:41:54 +05:30
Rishabh
1410a4237e 🐛 Fixed default content CTA message to reflect page vs post
closes https://github.com/TryGhost/Team/issues/1898

- the default content cta always used the terminology as `post` when showing message that users don't have access to some content
- this caused confusion when users were looking at a page and message showed "This post is for subscribers only"
- updates the message to correctly reflect `page` vs `post` on the default cta
2022-09-27 09:41:54 +05:30
renovate[bot]
c980865d3c Update dependency source-map-explorer to v2.5.3 2022-09-27 08:33:14 +07:00
renovate[bot]
9eb3c84a23
Updated @tryghost dependencies (#15434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-27 08:31:35 +07:00
renovate[bot]
7d21e192b2
Update metascraper to v5.31.1 2022-09-26 20:28:26 +00:00
Rishabh Garg
b1b3c72642
Added sorting for attribution data on dashboard (#15474)
refs https://github.com/TryGhost/Team/issues/1941

- sorts attribution table and chart on signups or paid conversions
2022-09-26 23:29:30 +05:30
James Morris
83e608c25b Changed link clicks to newsletter links for analytics page
refs https://github.com/TryGhost/Team/issues/1968
2022-09-26 18:12:06 +01:00
James Morris
8bef3b9e34 The new post list rows match the edit or analytics button
refs https://github.com/TryGhost/Team/issues/1965
2022-09-26 18:09:52 +01:00
Kevin Ansfield
e3db911108
🐛 Fixed confusing error state when publishing if member count is over hosting plan limit (#15473)
closes https://github.com/TryGhost/Team/issues/1885

- adds limit check for members to the `PublishOptions` class when it's constructed to set a `publishDisabledError` property if the limit check fails
  - if `publishOptions.publishDisabledCheck` is present, all publish options in the publish flow are disabled, the underlying error message is shown, and the continue button is removed to prevent filling in everything only to find at the end of the process that publishing fails
- added handling for a `HostLimitError` error from the API when confirming publishing so the proper underlying message is displayed instead of the confusing "Host limit error, cannot edit post" error
  - this is a backup measure for any instances where you're under the max members limit when starting the publish flow but are over the limit when you reach the end of the publish flow
2022-09-26 17:37:35 +01:00
James Morris
ad2cb3ae11 Lots of visual tweaks to the post list table
refs https://github.com/TryGhost/Team/issues/1965
2022-09-26 17:30:39 +01:00
Simon Backx
86022b136b
Allowed free signups regardless of Portal settings (#15472)
fixes https://github.com/TryGhost/Team/issues/1966

- Currently you can only do a free self signup when 'free' is enabled in Portal or when Stripe is disabled
- Some themes, such as the Edition theme add a free signup form to the theme. That theme stops working if we don't allow self signup.
- The portal settings shouldn't be used to determine if free signup is allowed or not.
2022-09-26 18:25:06 +02:00
Simon Backx
d132b723da Added unit tests to link-redirects package
fixes https://github.com/TryGhost/Team/issues/1958
2022-09-26 18:13:05 +02:00
Djordje Vlaisavljevic
ac661c19b7 Updated copy
refs https://github.com/TryGhost/Team/issues/1953
2022-09-26 17:26:01 +02:00
Djordje Vlaisavljevic
74873c7e48 Updated the heading text
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 17:25:27 +02:00
Djordje Vlaisavljevic
3a9143cacc Removed the medium info from the subscription box
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 17:20:14 +02:00
Djordje Vlaisavljevic
f9ce3239ee Updated the heading text
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 17:19:12 +02:00
Djordje Vlaisavljevic
bb0b9c4261 Added rotation to the details toggle arrow
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 17:12:56 +02:00
Djordje Vlaisavljevic
bdc43d8f66 Updated table design
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 17:12:25 +02:00
Djordje Vlaisavljevic
752cf1a607 Added static sort indicator to the table
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 15:53:26 +02:00
Djordje Vlaisavljevic
64d4ddbaca Updated logic for showing member profile attribution
refs https://github.com/TryGhost/Team/issues/1953
2022-09-26 15:52:39 +02:00
Djordje Vlaisavljevic
81e15f823b Updated logic for showing member profile attribution
refs https://github.com/TryGhost/Team/issues/1953
2022-09-26 15:44:53 +02:00
Djordje Vlaisavljevic
6461e814db Updated font weight
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 15:32:18 +02:00
Djordje Vlaisavljevic
d024bd60fc Updated attribution widget design
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 15:30:20 +02:00
Simon Backx
281cd2e7a3
Renamed count.conversions to count.paid_conversions in posts (#15460)
fixes https://github.com/TryGhost/Team/issues/1943
2022-09-26 14:25:27 +02:00
Djordje Vlaisavljevic
acd1de3983 Removed chart border on hover
refs https://github.com/TryGhost/Team/issues/1905
2022-09-26 13:38:56 +02:00
James Morris
97af5c3731 Added a small tweak to the percentages on post list
refs https://github.com/TryGhost/Team/issues/1965
2022-09-26 12:30:54 +01:00
James Morris
7e780681d9 Looking to improve the post list rows again for email clicks
refs https://github.com/TryGhost/Team/issues/1965
2022-09-26 12:30:54 +01:00
James Morris
c92267c900 Realignement of the post list items for email clicks
no issue
2022-09-26 12:30:54 +01:00
Daniel Lockyer
a94c93e1c0
Added yarn build command
refs https://github.com/TryGhost/Toolbox/issues/390

- this allows us to run `yarn build` and make it output a .tgz file
  which can be installed with `ghost install --archive ...`
2022-09-26 18:28:30 +07:00
Djordje Vlaisavljevic
ceadb2634f Updated MRR widget design
refs https://github.com/TryGhost/Team/issues/1932
2022-09-26 13:21:05 +02:00
Djordje Vlaisavljevic
4941627128 Added show/hide behaviour to subscription box details
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 13:20:31 +02:00
Djordje Vlaisavljevic
b9c7fe316b Updated attribution widget design
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 12:14:06 +02:00
Kevin Ansfield
2de0c1358f 🐛 Fixed product card not displaying with just an image+button
closes https://github.com/TryGhost/Team/issues/1877

- bumped `@tryghost/kg-default-cards` which includes updated "should render" dependencies that adds a fully enabled button to the list of possible requirements for the product card to render. Now any one of the following will render the product card:
  - title is present
  - description is present
  - button url is enabled and button text+url are present
2022-09-26 09:38:49 +01:00
Simon Backx
bf008bee2d 🐛 Fixed deleting users with draft posts
fixes https://github.com/TryGhost/Team/issues/1945

- When deleting a user, a private tag is assigned to their existing posts.
- In that loop, it tries to find the post, but the post model had a default filter to only return published posts.
- An error was thrown because the post model was not fetched.
2022-09-26 10:19:33 +02:00
renovate[bot]
d02401c1f0
Update dependency eslint to v8.24.0 2022-09-26 06:58:26 +00:00
Naz
4528cba1b9 Changed Content API caching to public
refs https://github.com/TryGhost/Toolbox/issues/410

- Private cache control was preventing browser or shared caches from storing Content APIs response. The type of data served through the Content API is very much of a "public" nature, so should be cacheable.
- Right now the 'max-age' value of 'cache-control' header is hardcoded to '0', without 'must-revalidate' value, to allow browsers to cache content slightly more aggressively. In the future the 'max-age' value will most-likely become configurable to allow even more aggressive HTTP caching.
2022-09-26 14:54:50 +08:00
Naz
7b009bf1fe Enabled shared caching of 404 error responses
refs https://github.com/TryGhost/Toolbox/issues/410

- The 'private' value in 'Cache-Control' response header for all errors made it impossible for shared caches (e.g.: Fastly, Cloudflare) to cache 404 responses efficiently.
- The change substitutes 'max-age=0' which should not effect the browser cache behavior but would allow shared caches to process such requests efficiently.
- A more loose caching logic only applies to 404 responses from GET requests that are not user-specific (non-authenticated, non-cookie containing requests)
2022-09-26 14:54:50 +08:00
Naz
2acb0fca74 Refactored error cache control logic to middleware
refs https://github.com/TryGhost/Toolbox/issues/410

- This is groundwork for split cache-control rules for Admin app endpoints and the rest of Ghost apps.
2022-09-26 14:54:50 +08:00
Rishabh
190031f38c Added modal for showing all attribution sources
refs https://github.com/TryGhost/Team/issues/1941

- limits the source attribution list to top 5 on dashboard, and shows all sources on clicking on `Other` link

Fixed lint
2022-09-26 10:43:05 +05:30
Rishabh
baaf64405a Refined details toggle on member subscription box
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 10:43:05 +05:30
Rishabh
f4e6f00077 Refined attribution chart to show custom tooltips
refs https://github.com/TryGhost/Team/issues/1905
2022-09-26 10:43:05 +05:30
Rishabh
e76f082884 Moved mrr data to dashboard anchor chart
refs https://github.com/TryGhost/Team/issues/1932

- moves MRR data to main dashboard anchor chart behind source attribution flag
2022-09-26 10:43:05 +05:30
Rishabh
6137f9d3d5 Refined attribution chart legends to match table
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 10:43:05 +05:30
Rishabh
ec5f09edeb Refined member subscription detail box design
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
50100a7c8d Capitalized subscription page
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
bdce8f21cc Updated font weights
refs https://github.com/TryGhost/Team/issues/1904
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
4a8c9a530b Updated embedded MRR metric design
refs https://github.com/TryGhost/Team/issues/1932
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
0be2191726 Updated attribution dashboard widget design
refs https://github.com/TryGhost/Team/issues/1941

Updated attribution dashboard widget design

refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
7c23e721f1 Updated attribution sources table design
refs https://github.com/TryGhost/Team/issues/1941
2022-09-26 10:43:05 +05:30
Djordje Vlaisavljevic
5785f2b9bd Reorganized dashboard layout
refs https://github.com/TryGhost/Team/issues/1932
2022-09-26 10:43:05 +05:30
Sanne de Vries
663b9ffe02 Updated post list stats
Refs https://github.com/TryGhost/Team/issues/1895
2022-09-26 10:39:37 +07:00
Kevin Ansfield
508119244c
Switched delete snippet modal to new modal pattern (#15468)
refs https://github.com/TryGhost/Team/issues/1734
refs https://github.com/TryGhost/Team/issues/559
refs https://github.com/TryGhost/Ghost/issues/14101

- switches to newer modal patterns ready for later Ember upgrades
2022-09-25 10:54:07 +01:00
renovate[bot]
7045eef930
Update dependency ember-css-transitions to v4.2.0 (#15453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-24 18:20:57 +02:00
Kevin Ansfield
ac67475605
Switched delete member modal to new modal pattern (#15467)
refs https://github.com/TryGhost/Team/issues/1734
refs https://github.com/TryGhost/Team/issues/559
refs https://github.com/TryGhost/Ghost/issues/14101

- switches to newer modal patterns ready for later Ember upgrades
2022-09-24 18:18:34 +02:00
Kevin Ansfield
63b1e4e8ad
Resolved power-select related deprecation warnings for loading components by string (#15466)
no issue

- in many places we were passing a string as an argument to a `<PowerSelect>` related component that referred to a component name, that was throwing deprecation warnings because those strings were used dynamically with `{{component}}` later on which isn't statically analyzable
- switched to passing a component explicitly with `{{component}}`
- https://github.com/embroider-build/embroider/blob/main/REPLACING-COMPONENT-HELPER.md#when-youre-passing-a-component-to-someone-else
2022-09-24 17:00:05 +02:00
renovate[bot]
8aa4308866
Update ember-basic-dropdown addons to v6 (major) (#15159)
Update ember-basic-dropdown addons to v6

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-24 15:37:06 +02:00
renovate[bot]
65a74f41c8
Update dependency ember-power-select to v4.1.7 (#15157)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2022-09-24 15:08:42 +02:00
Rishabh
e5fb7b805f Wired referrer information on member detail page
refs https://github.com/TryGhost/Ghost/pull/15463
2022-09-24 17:46:57 +05:30
Rishabh
6c85c75b86 Added referrer attribution data to member api
refs https://github.com/TryGhost/Team/issues/1961

- includes referrer source and medium information in member api
2022-09-24 17:46:57 +05:30
Kevin Ansfield
6fffe5468d Fixed linter error
refs fa84808048

- code copied from `ember-power-calendar-moment` did not comply with our linter rules
2022-09-24 13:36:47 +02:00
Kevin Ansfield
a934481f45 Fixed @sentry/browser imports
no issue

- needed for embroider compatibility
- the package we have installed is `@sentry/ember` not `@sentry/browser` so the imports fail when built by webpack
2022-09-24 13:28:35 +02:00
Kevin Ansfield
bfd7ace721 Fixed invalid shortcuts imports
no issue

- `utils/shortcuts.js` does not have a default export but we were using it as if it did, this isn't valid and breaks when transpiled via webpack via embroider
- switched to the valid `import * as shortcuts` import syntax
2022-09-24 13:28:30 +02:00
Kevin Ansfield
fa84808048 Dropped ember-cli-moment-shim dependency
no issue

Since `ember-moment@10.0` it's not been necessary to use the `ember-cli-moment-shim` package, with `moment` instead being usable directly via `ember-auto-import`. Getting rid of the shim package is necessary for compatibility with `embroider`, Ember's new build tooling.

- dropped `ember-cli-moment-shim` dependency
- added `moment-timezone` dependency and updated all imports to reflect the different package
- worked around `ember-power-calendar` having `ember-cli-moment-shim` as a sub-dependency
  - added empty in-repo-addon `ember-power-calendar-moment` to avoid `ember-power-calendar` complaining about a missing package
  - added `ember-power-calendar-utils` in-repo-addon that is a copy of `ember-power-calendar-moment` but without the build-time renaming of the tree for better compatibility with embroider
2022-09-24 13:28:23 +02:00
Kevin Ansfield
9bbafc3ccf Deleted unused files
no issue

- files were left over from earlier development and not being used anywhere
2022-09-24 13:27:54 +02:00
Simon Backx
bba6a4dc84 Fixed cleaned URLs in link table on analytics page
fixes https://github.com/TryGhost/Team/issues/1963
2022-09-23 17:42:51 +02:00
James Morris
87a242bada Removed the full width for posts with the member attribution flag
- Full width was  part of the member attribution flag
- It's messing with email clicks flag
- Removing for both to make things easier

refs https://github.com/TryGhost/Team/issues/1960
2022-09-23 16:19:35 +01:00
Ghost CI
c6865ffe6c v5.16.0 2022-09-23 16:00:34 +01:00
James Morris
6c527cfe78 Made the margins event between elements in the new post rows
refs https://github.com/TryGhost/Team/issues/1957
2022-09-23 15:55:20 +01:00
James Morris
80eaa567b5 Added target blank to links in the link table on post analytics
refs https://github.com/TryGhost/Team/issues/1955
2022-09-23 15:23:59 +01:00
Simon Backx
e658f7622a
Added LinkClickTrackingService unit tests and renamed wrapper (#15462)
refs https://github.com/TryGhost/Team/issues/1958

- Renamed wrapper service link-click-tracking to link-tracking to be consistent with the package name
- Added unit tests for LinkClickTrackingService
- Added DomainEvents dependency to LinkClickTrackingService
- Fixes dependencies in link-tracking package
2022-09-23 16:19:16 +02:00
Daniel Lockyer
2bff2a22e0
Extracted dev tooling to separate script
refs https://github.com/TryGhost/Toolbox/issues/426

- we're going to need to support more complex combinations of dev
  commands soon, with other packages optionally running and env
  variables being altered
- this command pulls out a lot of the dev env scripting into a single
  scripts
- also cleans up the use of grunt-shell so we can remove the dependency
2022-09-23 15:02:35 +02:00
Simon Backx
3056e3cb51 Fixed subdirectories saved in the link_redirects table
refs https://github.com/TryGhost/Team/issues/1954

- Subdir should be removed before storing it as the 'from' URL
- Should be removed before checking a URL
2022-09-23 14:41:26 +02:00
Simon Backx
239d93a725 Cleaned up LinkRedirectsService
no issue
2022-09-23 13:32:44 +02:00
Simon Backx
1290477d71
Added member last seen update on link click (#15459)
fixes https://github.com/TryGhost/Team/issues/1952

Adds a new MemberLinkClickEvent event that is fired when a member clicks a link. This code has been added to the `linkClickRepository` because that is the only place that has access to the member model (and the event requires the id and current last seen at value). The LastSeenAtUpdater listens for this event and updates the timestamp if required.
2022-09-23 10:34:33 +02:00
Naz
225a046bb8
Made Admin assets aggressively cacheable
closes https://github.com/TryGhost/Toolbox/issues/372

- The admin assets are served with a unique hash depending on the build with a year-long "max-age" value in the response cache-control header. The client browsers still do send 'If-None-Match' requests when there is a hard-refresh on the client side. There's no need for 'If-None-Match' requests though!
- With 'immutable' value in the cache-control header, the browser caches are treating responses as "hard-fresh" without sending redundant requests.
- For more about 'immutable' value read https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#immutable
2022-09-23 13:46:49 +08:00
Rishabh
fe90dde0e1 Updated referrer attribution for empty history
- empty history means attribution script is not loaded, which should be only when its behind the flag
2022-09-22 23:47:24 +05:30
James Morris
eb7547ea3c Added a new click icon for the member attribution flag
- Adds a new SVG icon when the members attribution flag is on only
- Fixes up some dark mode issues for the URL scrollable in events

refs https://github.com/TryGhost/Team/issues/1951
2022-09-22 18:00:48 +01:00
James Morris
729935eca7 Tidied up the page a bit more with the source attribution included
- Has the source attribution chart and table with some basic styles
- Added in a edit button to the analytics page

refs https://github.com/TryGhost/Team/issues/1920
2022-09-22 17:20:15 +01:00
James Morris
0541dbc79b Moved the empty links into it's own box in the post analytics page
- Not ideal, yet, but this is better than what it was before
- Now links empty state is inside it's box rather than just plain text

refs https://github.com/TryGhost/Team/issues/1920
2022-09-22 17:18:51 +01:00
Djordje Vlaisavljevic
a0c6fafba1
Refined source attribution dashboard design (#15457)
refs https://github.com/TryGhost/Team/issues/1932
refs https://github.com/TryGhost/Team/issues/1941
refs https://github.com/TryGhost/Team/issues/1904
refs https://github.com/TryGhost/Team/issues/1932

- updates attribution sources table design
- updates member profile page design
2022-09-22 21:46:42 +05:30
Rishabh
e93f6071cd Handled null sources for attribution chart and table
refs https://github.com/TryGhost/Team/issues/1932

- removes null sources from attribution chart
- moves null sources count to bottom of attribution table
2022-09-22 21:04:46 +05:30
Rishabh Garg
45a301277d
Updated empty referrer source to null (#15456)
refs https://github.com/TryGhost/Team/issues/1939

- changes empty referrer source to null instead of explicit `Unavailable` in API
- makes it easier for clients/frontend to ignore empty referrers
2022-09-22 20:58:45 +05:30
Kevin Ansfield
c59ea73a80 🐛 Fixed distorted images in newsletters for product cards
refs https://github.com/TryGhost/Team/issues/1949

- bumps `@tryghost/kg-default-cards` which updates the rendered output for emails
- added `height: auto` style to the img element so clients don't render the image at the fixed image height retrieved from the `height="x"` attribute
2022-09-22 16:02:04 +02:00
Simon Backx
7581b8726e Added basic post table and analytics page conditionals
refs https://github.com/TryGhost/Team/issues/1947
2022-09-22 15:40:37 +02:00
James Morris
99332dae21 Added the new URL design for events over in the members activity page too
- Brought over the new URL events design
- Tested to make sure it worked as expected
- Had to add a new JS component file

refs https://github.com/TryGhost/Team/issues/1922
2022-09-22 13:44:45 +01:00
Simon Backx
e18ba2bb4d Removed hardcoded subscribers count from list-item-clicks
fixes https://github.com/TryGhost/Team/issues/1948
2022-09-22 14:23:06 +02:00
Rishabh
6dbc42bf55 Updated api endpoint for referrer stats in admin
refs https://github.com/TryGhost/Team/issues/1939
2022-09-22 17:48:46 +05:30
Simon Backx
2d583cef43 Removed free from analytics page count header 2022-09-22 13:44:51 +02:00
Simon Backx
1ab6ff8ada Renamed free signups to signups on analytics page and source chart 2022-09-22 13:43:46 +02:00
Fabien 'egg' O'Carroll
5fcf5098a8
Added links API (#15446)
closes https://github.com/TryGhost/Team/issues/1927

This expose the /links endpoint on the Admin API, which is filterable by Post ID.

Co-authored-by: Simon Backx <simon@ghost.org>
2022-09-22 13:39:52 +02:00
James Morris
433842b2f2 Fixed up the post analytics page so it didn't break at narrower viewports
- Some layout problems at narrower viewports
- Followed dashboard convention with stacking metrics when narrow
- Stacking resources too

refs https://github.com/TryGhost/Team/issues/1937
2022-09-22 12:24:28 +01:00
Rishabh Garg
98fc808e6e
Wired referrers API data to admin dashboard (#15454)
closes https://github.com/TryGhost/Team/issues/1939

- adds real source data counts to attribution table and chart on dashboard
2022-09-22 16:51:41 +05:30
Rishabh Garg
b048b02f67
Added new referrer source stats API (#15449)
closes https://github.com/TryGhost/Team/issues/1939

- adds new endpoint that returns count of referrer sources by date for admin dashboard
2022-09-22 16:34:26 +05:30
Daniel Lockyer
c4c39fe3c4
Added pipe into History log date formatting
- this should help with readability when scanning the list
2022-09-21 19:57:39 +01:00
Simon Backx
7cadaa6378 Implemented referrers stats API on posts' analytics page
refs https://github.com/TryGhost/Team/issues/1921
2022-09-21 18:20:03 +02:00
Simon Backx
7437d92d50
Added post referrers stats API (#15448)
closes https://github.com/TryGhost/Team/issues/1942

- Added data fixtures for referrers
- Added new endpoint to fetch referrer stats for a given post: `/stats/referrers/posts/:id`
- Added new ReferrersStatsService, responsible for calculating referrer stats
2022-09-21 18:16:56 +02:00
James Morris
16acdad985 Improved the post table at narrower viewports
- Fixed up the broken table for Email Clicks flag
- Double checked other flags and when flag is off and fixed those
- Tested to smallest width

refs https://github.com/TryGhost/Team/issues/1937
2022-09-21 15:20:11 +01:00
Rishabh
bb0d900937 Handled storing referrer information in DB
refs https://github.com/TryGhost/Team/issues/1931

- stores `referrer_source`, `referrer_medium` and `referrer_url` in event tables for new members and paid subscriptions
2022-09-21 19:32:18 +05:30
Rishabh
3b9998cdd6 Updated referrer attribution calculation logic
refs https://github.com/TryGhost/Team/issues/1907

- assigns top-level domain as source for external referrers that don't have known mapping
- returns `Direct` as source for new members when no referrer information is found
2022-09-21 19:32:18 +05:30
Rishabh Garg
b99c5428d0
Added referrer attribution columns to events table (#15436)
refs TryGhost/Team#1931

- referrer source, medium and url will be stored in the events table along with rest of attribution data
- stores referrer information on two tables
  - `members_created_events` for signups
  - `members_subscription_created_events` for paid conversions
2022-09-21 19:01:36 +05:30
James Morris
fe46bd05fb Added in email clicks icon and better handling of URLs
- Now has a new email click icon
- Handles long URLs better in the events list
- Fixed narrow viewports bug with events

refs https://github.com/TryGhost/Team/issues/1936
2022-09-21 14:05:37 +01:00
Simon Backx
ad79d45926 Added source attribution table to posts' analytics page
refs https://github.com/TryGhost/Team/issues/1921
2022-09-21 15:01:31 +02:00
Simon Backx
cd4e4d7003 Added format option to gh-format-post-time helper
fixes https://github.com/TryGhost/Team/issues/1940

The passed format was not used by the helper. This is fixed now.
2022-09-21 12:15:53 +02:00
Simon Backx
14f91093eb Fixed post counts cleared when member attribution flag was disabled 2022-09-21 11:32:00 +02:00
Simon Backx
719e5321d6 Fixed wrong usage of frontend labs in server
no issue
2022-09-21 11:25:29 +02:00
Simon Backx
383edc293f Added protection for missing count in clickRate
refs https://ghost.slack.com/archives/C02G9E68C/p1663751415397159?thread_ts=1663748981.221509&cid=C02G9E68C
2022-09-21 11:11:06 +02:00
James Morris
9f41dde506 Added a new icon for clicking in emails
refs https://github.com/TryGhost/Team/issues/1930
2022-09-21 09:34:51 +01:00
Simon Backx
b8041f0a60
Added clicks to activity feed (#15439)
closes https://github.com/TryGhost/Team/issues/1933

- Added click_events to activity feed
- Added support for parsing click_events in the frontend
- Moved url parsing (transform ready) to model layer of LinkRedirect
- Moved `getEventTimeline` method to the top of the event repository
- Added description field to parsed events in the frontend (because we need a second line)
- Fixed: member email not returned in comment_event
2022-09-21 10:25:51 +02:00
Kevin Ansfield
9f0bf7e40c Added aside and blockquote lexical rendering support
no issue

- bumped `@tryghost/kg-lexical-html-renderer` with support for `quote` and `aside` node types
2022-09-21 08:30:30 +01:00
renovate[bot]
5573e111cd Update dependency @playwright/test to v1.26.0 2022-09-21 07:31:56 +01:00
Ludovic Toinel
79ffdd9b7e
Improved handling of mailgun errors on bulk send (#15445)
- show both the status code and original error from mailgun
- clarify that the error is from mailgun
- swap from error to err as we're rolling out that pattern everywhere

Co-authored-by: Hannah Wolfe <github.erisds@gmail.com>
2022-09-20 22:46:55 +01:00
renovate[bot]
19e21a1e78
Update Test & linting packages 2022-09-20 18:01:42 +00:00
renovate[bot]
5bec8eb2f4 Update dependency copy-webpack-plugin to v11 2022-09-20 17:48:43 +01:00
renovate[bot]
2814ea4774 Update dependency webpack-cli to v4 2022-09-20 17:35:16 +01:00
renovate[bot]
061f0ab062
Update dependency c8 to v7.12.0 2022-09-20 14:48:51 +00:00
Sam Lord
364f92f021 Added mailgun as transaction email transport
refs: https://github.com/TryGhost/Toolbox/issues/281

As well as SMTP, we can now use Mailgun's API to send transactional email.
2022-09-20 15:44:26 +01:00
renovate[bot]
ff09129dfc Lock file maintenance 2022-09-20 15:37:59 +01:00
renovate[bot]
69a346ccd7 Update sentry-javascript monorepo to v7 2022-09-20 15:34:52 +01:00
Renovate Bot
4fb6913a8e Update dependency react-error-overlay to v6.0.11 2022-09-20 15:33:59 +01:00
renovate[bot]
965c4afcca Update actions/checkout action to v3 2022-09-20 15:33:21 +01:00
Hannah Wolfe
f31a50270d Removed search labs flag
- the search helper was promoted to GA and we no longer need the feature flag
2022-09-20 15:22:06 +01:00
Daniel Lockyer
abe9811c6c
Remove typescript files and dependencies
- these are not currently used/needed in this repo
2022-09-20 14:54:23 +01:00
Renovate Bot
1135b0073a Update actions/setup-node action to v3 2022-09-20 14:43:22 +01:00
Renovate Bot
96e2c7d7c5 Update codecov/codecov-action action to v3 2022-09-20 14:42:59 +01:00
Daniel Lockyer
ab12a978b1
Fixed missing yarn test:unit command
- this is needed so CI can just run unit tests independently
2022-09-20 14:32:39 +01:00
Rishabh
e422ab48c2 Updated source grouping to use known referrers data
refs TryGhost/Team#1923

- updates referrer translator logic to use grouping for known domains/urls to calculate source and medium
- returns first external ref url if nothing matches in history in first pass
2022-09-20 19:02:06 +05:30
Rishabh
4ebe94f721 Added new package with known referrers list
refs TryGhost/Team#1923

- leverages well organized list from Plausible to create known referrers list package for grouping incoming referrers - 5d4918b66b/priv/ref_inspector/referers.yml
- original list has been modified from yaml to json
2022-09-20 19:02:06 +05:30
renovate[bot]
017bbd89c3
Pinned dependencies (#15441)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-20 14:29:59 +01:00
Daniel Lockyer
b1878e5a06
Cleanup Stats-Service package files
- LICENSE is no longer needed as this is an unpublished package in the
  monorepo
- the README has been cut down to reflect the fact that it's unpublished
- added `private: true` to package.json config
2022-09-20 14:28:11 +01:00
Daniel Lockyer
cd7aa42f5d
Updated knex dependency
- this needed to be updated to switch back to the official sqlite3
  library
2022-09-20 14:24:14 +01:00
Daniel Lockyer
b596eff418
Switched to official sqlite3 library
- this wasn't switched back when we switched from the vscode fork to our
  own maintained version
2022-09-20 14:21:31 +01:00
Daniel Lockyer
d73200799d
Updated lockfile
- also unversions `@tryghost/stats-service` so it isn't included in the
  lockfile
2022-09-20 14:18:51 +01:00
Daniel Lockyer
651252714a
Migrated packages and history from Analytics repo
- the Analytics repo was missed during the monorepo conversion and its packages
  belong in the Ghost repo
2022-09-20 14:17:05 +01:00
Simon Backx
ae6761c08b Updated filledSubscriptionCountStats implementation in dashboard stats
refs https://ghost.slack.com/archives/C02G9E68C/p1663674928386639
2022-09-20 15:06:09 +02:00
Simon Backx
1a0f366cf8 Fixed linting errors
refs fe0071496c
2022-09-20 15:05:54 +02:00
Simon Backx
fe0071496c Added real count data to analytics page
closes https://github.com/TryGhost/Team/issues/1934
2022-09-20 14:53:50 +02:00
Rishabh Garg
41bf5f1530
Fixed empty paid subscriptions chart for fake data (#15440)
- the paid subscribers chart was empty when using with fake data due to missing values of `signups` and `cancellations`
2022-09-20 17:36:31 +05:30
Simon Backx
63103c2251
Added click counts to posts admin API (#15435)
closes https://github.com/TryGhost/Team/issues/1928
2022-09-20 10:05:41 +02:00
Kevin Ansfield
e9f3d90147 Fixed "Cannot find module '@lexical/clipboard'" when rendering lexical
no issue

- bumped `@tryghost/kg-lexical-html-renderer` so it no longer has an implicit dependency on `@lexical/clipboard`
2022-09-19 19:06:35 +01:00
Kevin Ansfield
125a98192c Fixed "Cannot find module 'react'" when rendering lexical in production
no issue

- bumped `@tryghost/kg-lexical-html-renderer` so it no longer has an implicit dependency on `react`
2022-09-19 18:03:23 +01:00
Kevin Ansfield
b2b6be9cb5 Fixed content-length matcher in posts API test snapshot
refs d5f03ec0b1

- underlying error message varies across node versions so the content-length can't be fixed
- applied any-content-length matcher to the right test this time
2022-09-19 16:37:54 +01:00
Kevin Ansfield
1cc8176d4f Allowed any error message length in posts API error test snapshot
refs d5f03ec0b1

- underlying error message varies across node versions so the content-length can't be fixed
2022-09-19 16:22:22 +01:00
Simon Backx
4c5ba4ed7d
Added database storage for link redirects and click events (#15423)
closes https://github.com/TryGhost/Team/issues/1916 
closes https://github.com/TryGhost/Team/issues/1917

- Added database storage for link redirects and click events via repositories (hides away database layer) defined in the wrapper services
    - Added LinkClickRepository to store click events to database
    - Added LinkRedirectRepository to store link redirects to database
    - Added PostLinkRepository to link LinkRedirects with posts
- Renamed link-replacement package to link-replacer, and made it dependency less (it only replaces links now, doesn't do anything else)
- The link-tracking service has a new `addTrackingToUrl` which returns a new URL that includes tracking. The new `addRedirectToUrl` method does the same but without tracking for now.
- MEGA service now uses the link-replacer to replace links in the emails using a combination of different services (member attribution + link-tracking service)
2022-09-19 17:12:54 +02:00
Kevin Ansfield
201d4ef228 Loosened error message snapshot matching for posts API test error output
refs d5f03ec0b1

- underlying error message varies across node versions
- adjusted to match only the part we explicitly set
2022-09-19 16:06:34 +01:00
Kevin Ansfield
744534fde6 Updated snapshot for posts API test error output
refs d5f03ec0b1
2022-09-19 15:56:30 +01:00
Kevin Ansfield
d5f03ec0b1 Added original error message to context in "Invalid lexical structure" error
no issue

- setting the original error message to the `context` property means it's not completely lost and gives us a clue for debugging
- updated the lexical and mobiledoc validation errors to use the messages+tpl pattern
2022-09-19 15:51:55 +01:00
Sanne de Vries
b2d449fecf Added Lexical indicator to post list
Closes https://github.com/TryGhost/Team/issues/1926
2022-09-19 15:40:19 +01:00
Sanne de Vries
242850b7da Added external link to lexical indicator pointing to koenig-lexical repo
Refs https://github.com/TryGhost/Team/issues/1926
2022-09-19 14:55:00 +01:00
Daniel Lockyer
74f1f1bba6
Fixed CDN URLs in tests
refs de416629e6

- I forgot to update them when making the referenced commit
2022-09-19 14:51:31 +01:00
Sanne de Vries
e2dbf2c748 Added indicator to the Lexical editor screen
Refs https://github.com/TryGhost/Team/issues/1926
2022-09-19 14:48:44 +01:00
Daniel Lockyer
1ba6d2e5a7
Updated test snapshot
refs de416629e6

- this was forgotten after I'd changed the endpoint in the referenced
  commit
2022-09-19 14:43:07 +01:00
Daniel Lockyer
de416629e6
ℹ️ Switched to jsDelivr CDN endpoint with shorter browser cache
fixes https://github.com/TryGhost/Toolbox/issues/416

- this commit switches the default endpoint for our CDN-loaded assets to
  a Ghost-specific jsDelivr one, with a shorter 10 min browser cache config, so
  assets are refreshed quicker upon publishing
2022-09-19 14:22:34 +01:00
renovate[bot]
225765241c
Updated @tryghost dependencies (#15404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-19 12:09:33 +01:00
Kevin Ansfield
226f45fd83 Fixed "cannot save both mobiledoc and lexical" error when tabbing from title field to lexical editor
closes https://github.com/TryGhost/Team/issues/1924

- updated the Post model so the relevant `mobiledoc`/`lexical` field always has a blank document by default depending on which editor is selected via the feature flag
- ensures we don't send `{mobiledoc: null, lexical: null}` inadvertently creating a mobiledoc post (API sets the default blank document in that scenario) when the lexical editor flag is enabled
2022-09-19 12:06:05 +01:00
Kevin Ansfield
180bb72115 Added link and heading id attribute support when rendering lexical
no issue

- bumped `@tryghost/kg-lexical-html-renderer`
2022-09-19 11:42:15 +01:00
Kevin Ansfield
3bdfb68ff6
Added __GHOST_URL__ transform support to posts.lexical field (#15433)
no issue

- bumped `@tryghost/url-utils` to get access to the new lexical transform utilities
- updated the Post model's `parse()` and `formatOnWrite()` methods to transform the `lexical` field contents when reading/writing to ensure any links in content point at the correct place with `site.url` config changes
2022-09-19 11:30:38 +01:00
Sanne de Vries
a6c76dadc3 Fixed missing shadow on hovering edit button in post list 2022-09-19 10:47:27 +01:00
Simon Backx
901a28f3c6
Added link_redirects and members_link_click_events tables (#15421)
closes https://github.com/TryGhost/Team/issues/1912
closes https://github.com/TryGhost/Team/issues/1913
2022-09-19 11:20:36 +02:00
Sanne de Vries
8a5b401795 Removed dash separator between scheduled status and time in post list 2022-09-19 10:04:04 +01:00
Djordje Vlaisavljevic
99f119a1f4
Source attribution design (#15431)
- Updated subscription box design
- Added Source attribution widget to the dashboard

Co-authored-by: Rishabh <zrishabhgarg@gmail.com>
2022-09-19 10:48:24 +02:00
Rishabh
54f848415a Updated stripe checkout session metadata for referrer data
- adds referrer source, medium and url to stripe checkout metadata for later storage
2022-09-19 12:29:22 +05:30
Rishabh
c765c3230e Updated attribution service to handle referrer information
refs TryGhost/Team#1907

- calculates final attribution source and medium using captured referrer information in history
- adds new referrer-translator that goes through available history and based to determine most valid referrer info
- includes referrer url, source and medium in the attribution data for storage
2022-09-19 12:29:22 +05:30
Rishabh
2807a35cb0 Updated attribution script to capture referrer information
refs TryGhost/Team#1906

- captures referrer url and any source/medium param for referrer
- maintains history with latest referrer information when moving around pages
2022-09-19 12:29:22 +05:30
Naz
1b6a24f0d8
🐛 Fixed incorrect API error response message
closes https://github.com/TryGhost/Ghost/issues/15424
refs b9ab1002b3
refs 9210ac7dc7

- When errors were throw from the model layer the HTTP API responses contained misleading information about the error - e.g.:

"message": "Unknown error - TypeError, cannot save post."

- This was due to the error handling code throwing it's own internal error resulting in compete loss of the original Ghost's error context.
2022-09-19 14:52:28 +08:00
renovate[bot]
40df6c3252 Update dependency html-validate to v7.5.0 2022-09-19 07:52:04 +01:00
Sanne de Vries
9cca07ff70 Replaced all classnames referencing stats with analytics
Refs https://github.com/TryGhost/Team/issues/1893
2022-09-17 12:26:39 +01:00
Sanne de Vries
8a5bbad8e3 Updated resources section on post analytics page
Refs https://github.com/TryGhost/Team/issues/1918
2022-09-17 12:21:03 +01:00
Peter Zimon
7e3e4bd36b Fixed number formatting in Publish menu
no refs.

- number formatting (ie. thousands indicators) were missing in a couple of places in the Publish menu
2022-09-16 19:36:39 +02:00
Sanne de Vries
a4ff3e1900 Added resource section to post analytics page
Refs https://github.com/TryGhost/Team/issues/1918
2022-09-16 16:09:54 +01:00
Ghost CI
29e5a91323 v5.15.0 2022-09-16 16:00:36 +01:00
Kevin Ansfield
8b5bd09341 Added Sentry logging of any errors that occur internally in Lexical
no issue

- adds custom `onError` handler that both logs to console (as per default behaviour) and also logs to Sentry with the `lexical` tag added for easier filtering
- does not re-throw so Lexical will attempt to gracefully recover without losing data
2022-09-16 15:13:58 +01:00
Sanne de Vries
a077d4393f Updated post list for newsletters and/or memberships disabled
Refs https://github.com/TryGhost/Team/issues/1915
2022-09-16 14:59:29 +01:00
Aileen Nowak
be45d4ebcf Added post stats service to return total posts in Explore endpoint
no issue

- The explore endpoint needs to expose the total amount of published posts
- To be more consistent, this PR creates a PostStats class which is exposed as `stats` method within the PostService; just like it's done with the MemberService
- Moved existing method to return the date of the most recently published post into the stats service
- Updated the explore service test to reflect the new return property
2022-09-16 13:56:14 +01:00
Kevin Ansfield
79d8e64e9a 🐛 Fixed tag slug not auto-matching tag title when creating new tag
refs 08b099e527

- when the use of scratch values was removed a bug was introduced where only the first character of the tag title was used to set the slug when typing
- bug was caused because previously we were checking against the original `tag.slug` value which wouldn't have been set yet because we were setting scratch values instead
- updated the code to explicitly mark the slug value as being set manually if it's edited directly so the auto-update logic can use that to skip updates instead of comparing against old/unset values
2022-09-16 13:34:48 +01:00
Peter Zimon
04dfa0a9e5 Updated loading animation 2022-09-16 14:22:01 +02:00
Sanne de Vries
e87f468042 Updated email newsletter tracking settings
Refs https://github.com/TryGhost/Team/issues/1914
2022-09-16 13:14:48 +01:00
Kevin Ansfield
ce461aef34 Fixed post/page API requests having incorrect ?include= params
refs 58b0a1b90d

- `buildQuery` in the post/page adapters was recently removed which meant it was falling back to the `EmbeddedRelationAdapter.buildQuery` method which uses the defined Ember Data relationships to build up an `?include=` param
- the Ember Data relationships are not fully in sync with the API because we don't have models for all of the members/tiers related relationships meaning we were adding a more restrictive `?include` parameter than what the API would use internally by default, breaking parts of the app that expected the default embedded relationships
2022-09-16 12:54:50 +01:00
Peter Zimon
9972892259 Updated loading animation 2022-09-16 13:44:58 +02:00
Kevin Ansfield
3b21d26be7
Wired up creation of post_revisions entries when saving posts with lexical (#15422)
no issue

- added `PostRevsion` model
- duplicated `mobiledoc_revision` creation routine in Post model's onSaving hook to create `post_revision` when model's `lexical` field has changed
- updated `mobiledoc_revision` creation to skip when `lexical` field is populated
2022-09-16 11:59:35 +01:00
Kevin Ansfield
48aaa53770 Added lexical editor feature flag
no issue

- adds `lexicalEditor` alpha labs flag and associated toggle in Admin
- when feature flag is enabled the new post/page routes will load the lexical editor instead of the mobiledoc editor
2022-09-16 11:59:03 +01:00
Peter Zimon
e957c6d3a1 Updated Members importer preview table min. height
no refs.

- removed `min-height` of members importer preview table because it caused a weird spacing issue when there were only 1 or 2 columns in the CSV
2022-09-16 11:30:34 +02:00
Kevin Ansfield
1581f439e9
Added post_revisions table (#15420)
no issue

- initially this will perform the same function as `mobiledoc_revisions` but storing `lexical` instead of `mobiledoc`
- naming is intentionally generic ready for later expansions
2022-09-16 10:19:05 +01:00
Simon Backx
f9e5d57f0d 🎨 Added number formatting to members import email
refs https://ghost.slack.com/archives/C02G9E68C/p1663318892246929?thread_ts=1663317382.429489&cid=C02G9E68C
2022-09-16 11:13:12 +02:00
Simon Backx
7a565d4892 🐛 Fixed duplicate error columns in members import error CSV
fixes https://github.com/TryGhost/Team/issues/1911

Kept on creating a new error column when unparsing the error list. So for every error we would create a new column when it was already added.
2022-09-16 11:02:22 +02:00
Peter Zimon
2769578dbd Various Members importer UX improvements
no refs.

- CSV overview table headings were selectable
- spinner on the last screen was confusing: users might think they had to wait for something to finish, but that's not true
- spacings in import confirmation emails were off
2022-09-16 10:50:54 +02:00
Fabien 'egg' O'Carroll
bddb0ba754
Wired up link redirects & tracking (#15418)
refs https://github.com/TryGhost/Team/issues/1910
refs https://github.com/TryGhost/Team/issues/1888

- Uses an in-memory repository for now whilst in development
- Updates the LinkReplacementService to choose the slug
- Exposes a `getSlug` method so we can ensure uniqueness
- Emits the RedirectEvent for use by LinkTracking
2022-09-16 10:42:21 +02:00
Rishabh
87cbcc8f14 Updated copy for newsletter email verification popup
- updates heading copy dynamically based on verification status
- removes quotes around newsletter name
2022-09-16 13:40:44 +05:30
Simon Backx
a7b583050c
Added link tracking to paywall (#15414)
closes https://github.com/TryGhost/Team/issues/1908

### Problem:
- We need tracking on the paywall links in each email. (we cannot ignore them because those buttons are probably gonna have a higher paid conversion attribution than others).
- Currently we only add the paywall HTML to an email when processing each batch. So if we batch an email to 1.000 recipients per 100, we'll generate the paywall HTML 10 times. 
- We cannot replace links in `renderEmailForSegment` because that methods will get called multiple times. We don't want to have multiple redirect instances created for the same link in the same email.

###  Solution:
- Move the generation of the paywall to the `serialize` method of the post email serializer.
- Surround the generated paywall with HTML-comments so we can remove it if required in `renderEmailForSegment` depending on the member segment we are sending the email to.

---

### Before:

**Serialize output:**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
            <!--members-only-->
                <p>Content visible for paid members only</p>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```

To be modified later by  `renderEmailForSegment`:

**Paid members (nothing changed):**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
            <!--members-only-->
                <p>Content visible for paid members only</p>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```

**Free members (paywall _added_):**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
                <h2>Generated paywall here</h2>
                <a href="https://subscribe.com">Subscribe to read the full post</a>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```

### After this change:

**Serialize output:**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
            <!--members-only-->
                <p>Content visible for paid members only</p>
             <!-- PAYWALL -->
                <h2>Generated paywall here</h2>
                <a href="https://subscribe.com/?tracked">Subscribe to read the full post</a>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```

To be modified later by  `renderEmailForSegment`:

**Paid members (paywall removed):**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
            <!--members-only-->
                <p>Content visible for paid members only</p>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```

**Free members (members-only content removed):**
```html
<html>
    <body>
        <h1>Generated email header</h1>
        <p>Generated text</p>

        <div>
            <!-- POST CONTENT START -->
                <h1>Post title</h1>
                <p>Content visible for all members</p>
            <!-- PAYWALL -->
                <h2>Generated paywall here</h2>
                <a href="https://subscribe.com/?tracked">Subscribe to read the full post</a>
            <!-- POST CONTENT END -->
        </div>
    </body>
</html>
```
2022-09-16 10:08:12 +02:00
Peter Zimon
18a251976e Updated Explore section category link
no refs.

- category link wasn't opening in a new window which took users away from the Admin
2022-09-16 07:35:52 +02:00
renovate[bot]
72a08f4901
Update dependency sanitize-html to v2.7.2 2022-09-15 20:21:58 +00:00
Kevin Ansfield
58b0a1b90d Fixed post/page requests in Admin not including correct ?formats param
no issue

- `buildQuery` method in adapters is only used for store `.query()` calls so when saving the formats param wasn't being added meaning we were losing the `lexical` field in the API response
- switched to `buildURL` which is always used
2022-09-15 17:40:45 +01:00
Daniel Lockyer
6f3c18b6f4
Merged v5.14.2 into main
v5.14.2
2022-09-15 17:16:24 +01:00
Ghost CI
7a6375c840 v5.14.2 2022-09-15 17:13:56 +01:00
Kevin Ansfield
c240f7afa4
Added rendering of posts.lexical to posts.html when saving (#15416)
no issue

- added `@tryghost/kg-lexical-html-renderer` dependency
- added `lexical` lib following the same pattern as our `mobiledoc` lib
- updated the Post model's `onSaving` hook to generate the `html` value from `lexical` when present
2022-09-15 16:49:14 +01:00