Commit Graph

265 Commits

Author SHA1 Message Date
Kevin Ansfield
5585a781b9 Unified tag and member screen code
no issue

The tag and member screens share the same underlying UI/UX patterns but were using different code patterns. This brings both in line so that we have consistent code patterns that can be re-used for other screens.

- fixed cleanup of new tags by adding the `deactivate` hook to the `tag` route
- updated `member` and `member.new` route/controller setup to match tag route/controller setup
  - added `save` action to member controller so that Ctrl/Cmd+S works on member screen
  - updated tag route/controller to utilise the same instant display w/background refresh when accessing the tag details screen
- completed transition of non-component tag/members templates over to angle bracket component syntax
2019-12-12 13:59:46 +00:00
Kevin Ansfield
c53e4f9cd7 Fixed tag deletion
no issue

- don't show "Delete tag" button when we're displaying a new/unsaved tag
- refactor the `_deleteTag()` method to be more explicit and remove handling that is no longer required since the tag screen is not nested in the tags screen
- revised the condition in `showUnsavedChangesModal()` method so that it's body doesn't fire twice when leaving the `tag` or `tag.new` route
- revised the `showUnsavedChangesModal()` method body to look at the number of changed properties on the tag rather than relying on `tag.hasChangedAttributes` which is always `true` for new models
2019-12-10 12:18:20 +00:00
Kevin Ansfield
5c0cfca479 Cleaned up and re-organised tag and new tag routes/controllers
no issue

- removed unused `<GhTagsManagementContainer>` component and related `isMobile` CPs
- un-nested `tag` and `tag.new` routes
  - nested routes in Ember are used for nested UI but these are both separate screens
  - removes usage of `selectedTag` property in favour of using Ember's built-in model handling
  - removed unnecessary `tags/new` controller
  - sets up `tag.new` route which extends the `tag` route to avoid duplicate code
2019-12-09 17:44:16 +00:00
Naz Gargol
c41c184762 Added member "add" screen (#1411)
no issue

- We have a need to create a member manually, this changeset solves this problem.
- Added new member button to the member's screen
- Needed to be able to perform add member action
- Fixed inconsistent `createAt` naming. All models use consistent `createdAtUTC`, fixed it up so that members model follows the same pattern. If we want to change this pattern should probably happen for all models at once
- Fixed member avatar when creating a new member. If the values are completely empty the screen ends up being filled with empty space. Added some dummy initials which are recalculated once the member enters the name or an email
- Refactored DS naming for consistency. Nowhere else in the codebase 'DS' name is ever used, made this consistent
- Added missing validations in members form
- Simplified if conditions in the member list template. When using the if/esle statements unnecessary new-line symbols were inserted which made it hard to test. Also by using computed property view is much cleaner
- Updated member's model default value for `subscribed` to "true". It is turned on by default in the model layer  on the backend (ref: https://github.com/TryGhost/Ghost/blob/3.1.0/core/server/data/schema/schema.js#L330), this behavior is intended and should be the same on the frontend
2019-11-28 18:30:21 +07:00
Rish
6b1cd8dc23 Enabled members by default
no-issue

This removes the need for `enableDeveloperExperiments` flag for members
2019-10-14 08:42:04 +05:30
Kevin Ansfield
df4bdf1cf2 Merge branch 'master' into v3 2019-10-11 10:43:38 +01:00
Rish
cb1c851f21 Added unsaved changes check to member details page
no issue

- Adds unsaved changes check to member detail page for write operations
2019-10-10 18:06:33 +05:30
Kevin Ansfield
159e810d5c Merge branch 'master' into v3 2019-10-08 14:04:38 +01:00
Rish
c3a496fe9f Added csv import/export for members
no issue

- Adds action view with import/export csv options
2019-10-04 15:14:20 +05:30
Naz Gargol
7e3412ce8e 🔥 Removed all subscriber feature related code (#1337)
refs https://github.com/TryGhost/Ghost/pull/11153

- Removed all subscriber feature related code
- The feature is being substituted by members
2019-09-26 15:58:01 +02:00
Naz Gargol
3c2185a3bf Removed unnecessary '?status=all' query parameter (#1330)
no issue

- The default post/user filter gets expanded to same values as for  ALL_STATUSES in Ghost APIs model layer (https://github.com/TryGhost/Ghost/blob/e57e19e/core/server/api/canary/utils/serializers/input/posts.js#L97)
2019-09-18 15:11:35 +01:00
Kevin Ansfield
06cb0bd14e Allowed "view site" request to save cookies in cross-origin requests
no issue

- adds `credentials: 'include'` option to `fetch()` which instructs browsers to save cookies in the POST response in cross-origin requests (default is `'same-origin'`)
2019-09-09 17:01:26 +01:00
Kevin Ansfield
4a11a72ea2 🐛 Fixed browser back button behaviour after clicking "x posts" on tags screen (#1306)
closes https://github.com/TryGhost/Ghost/issues/11057

- removed static "replace" configuration of posts/pages query params
- used the router service to register a `willTransition` event handler which handles conditional replaceState transition behaviour only when filters are changed whilst already on the posts/pages route
2019-08-29 11:10:09 +01:00
Rishabh Garg
99a4c1c4c2 🎨 Updated tags screen design and usability (#1283)
no issue

Updates design and usability for tags list and details screen
2019-08-27 19:21:31 +05:30
Kevin Ansfield
5225a3d30a Added "What's new" indicator and modal to highlight recent updates (#1292)
no issue

- adds `whats-new` service that fetches the changelog from ghost.org and exposes the latest changelog entries
- trigger a background fetch of the changelog from ghost.org when first loading the admin when logged in, or after signing in
- adds a "What's new" menu item next to the user popup menu
- adds an indicator to the user menu button and what's new menu item if there are unseen changelog entries
- closing the changelog modal will update the "last seen date", clearing both indicators
2019-08-23 10:01:27 +01:00
Kevin Ansfield
457a8e2955 🎨 Added auto-login to private site when viewing site preview in admin (#1286)
closes https://github.com/TryGhost/Ghost/issues/10995

- when first loading the site preview, if private mode is enabled submit the login form in the background to get the cookie before loading the iframe
- refactors post-authentication preloading to ensure it occurs before post-authentication route hooks are called
- adds `showSuccess` attribute to `<GhTaskButton>` so that when set to `false` it can stay in the running state after "success" to avoid state change flashes whilst waiting for a transition
2019-08-12 09:11:10 +01:00
Kevin Ansfield
83a5a54801 Removed "Unsupported browser" warning for Chromium-based Edge
no issue

- Edge is dropping it's own engine and switching to Chromium which has full support in the editor
2019-06-25 14:52:09 +01:00
Kevin Ansfield
a066a505bd 🐛 Fixed error when opening editor after abandoning a new tag
no issue

- the new tag that is added to the store when opening the new tag route was not being cleaned up when leaving the new tag route
- blank tags have a name value of `undefined` which causes errors when calling `localeCompare()` on them as is done when ordering tag names for display in the tags input
2019-06-18 15:16:22 +01:00
Peter Zimon
c51bce7358 🎨 Updated admin area design and usability (#1232)
refs. https://github.com/TryGhost/Team/issues/205

Major update to Ghost Admin UI including:
- improved general consistency (typography, colors and contrast, UI components, icons)
- new design for post and pages lists, improved discoverability of filters 
- search moved to modal
- account menu is decoupled from ghost logo
- further usability fixes
2019-06-18 11:47:20 +01:00
Kevin Ansfield
3653cfbfbf Refactored document-title handler
no issue
- moved `document-title` Route extension's functionality into the `ui` service
  - updates the title each time the router service emits a route changed event
  - `ui.updateDocumentTitle()` can now be called directly from components rather than the confusing `this.send('updateDocumentTitle')` bubbling behaviour
- refactored the `titleToken` implementation to use the now-formalised `RouteInfo`'s `metadata` field (https://github.com/emberjs/rfcs/blob/master/text/0398-RouteInfo-Metadata.md#appendix-a)
2019-05-20 16:16:19 +01:00
Kevin Ansfield
bb7df76af0 Refactored styleBody mixin
no issue
- removed `styleBody` mixin in favour of using Ember's `buildRouteInfoMetadata` hook and router events in the `ui` service
- refactored separate CSS classes for each unauthenticated route into a single `.unauthenticated-route` class because hiding mobile nav whilst unauthenticated was the only use for body classes
2019-05-20 14:57:21 +01:00
Kevin Ansfield
9186c84e64 Removed unused body classes added by using the StyleBody mixin
no issue
- many routes were attaching classes to the `<body>` tag via the `StyleBody` mixin but those classes were never used and applied inconsistently throughout the app
2019-05-20 14:15:46 +01:00
Kevin Ansfield
d0c2caec9e Fixed transition-state deprecation on Integration screen
no issue

- https://deprecations.emberjs.com/v3.x/#toc_transition-state
2019-05-07 14:04:16 +01:00
Kevin Ansfield
320908d64d Removed unused code in posts route 2019-05-07 12:55:19 +01:00
Kevin Ansfield
a7f4610381 Removed usage of ember-light-table in subscribers screen (#1191)
no issue

`ember-light-table` is falling behind Ember.js and other addon development and is increasingly causing issues with Ember deprecations and addon incompatibility.

- swaps `ember-light-table` usage for a straightforward table using `vertical-collection` for occlusion
- uses the same loading mechanism as the members screen with a slight optimisation where the initial load will fetch subscribers in batches of 200 until they are all loaded
- removes now-unused pagination mixin
- fixes duplicate subscriber validation handling
2019-05-07 12:39:56 +01:00
Nazar Gargol
7486b6b2f3 Allowed editors to see notifications
refs https://github.com/TryGhost/Ghost/issues/9546

- Change introduced due to users with 'editor' role are now allowed to access notifications
2019-04-18 13:03:19 +02:00
Rishabh Garg
c72e7b6040 Updated member management data (#1150)
no issue

- Updated hard-coded data in member management to use real values from API
2019-04-16 20:32:43 +05:30
Kevin Ansfield
b51bc4751d Added integration details to Zapier integration screen behind dev flag
no issue
- the new version of our Zapier App uses API Key auth so we need to expose the details on the Zapier integration screen
- extracted `copyTextToClipboard` into a util function
- added `integrationModelHook` method to `settings.integrations` controller to remove duplication in the `settings.integration` and `settings.integration.zapier` routes
- fixed missing "Zapier" title token
2019-04-04 12:25:16 +01:00
Kevin Ansfield
e7b740ba5f Added reset-to-homepage behaviour when clicking "view site" link
no issue
- return a basic "guid" from the site's `model` hook so that we have some data which changes on each refresh
- add an action to the wrapper element of the "view site" link which will cause the route to refresh when clicked if we're already on the route
- move the site iframe into a component so that it can watch an @uuid property and force a reset of the iframe's `src` when it detects a change
2019-03-21 17:55:58 +00:00
John O'Nolan
181de6f5ea View site inside Ghost Admin
no refs.
- added "View site" as the first and default menu item in navigation bar to be able to browse the site without leaving the Admin
- rearranged left sidebar items according to new structure (moved Labs down to bottom)
- removed "View site" from publication main menu because it's become redundant
- added Night shift toggle in line with Labs menu to be able quickly access it
2019-03-21 10:33:14 +01:00
Kevin Ansfield
67815a3c99 Revert "[TEMP] Broke linting"
This reverts commit 8451151596.
2019-03-11 16:26:36 +00:00
Kevin Ansfield
8451151596 [TEMP] Broke linting
no issue
- used for checking nightly Travis build output and early exit on linting failure
2019-03-11 16:16:27 +00:00
Kevin Ansfield
8af0139316 Fixed linting 2019-03-11 10:13:56 +00:00
Kevin Ansfield
856c4000c8 Fixed 500 errors when accessing editor routes without post/page
no issue
2019-03-07 17:31:03 +00:00
Kevin Ansfield
8514372dad Bumped ember core dependencies to 3.8.x
no issue
- bumped ember core reps
- bumped ember-ajax for ember 3.8.0 compatibility
- removed deprecated use of `transition.handlerInfos`
2019-03-07 17:24:35 +00:00
Kevin Ansfield
a0dacf5231 Bumped ember core dependencies to 3.6.x 2019-03-06 17:15:44 +00:00
Kevin Ansfield
352c4af1d7 Refactored usage of .get('property') with es5 getters
no issue
- ran [es5-getter-ember-codemod](https://github.com/rondale-sc/es5-getter-ember-codemod)
- [es5 getters RFC](https://github.com/emberjs/rfcs/blob/master/text/0281-es5-getters.md)
- updates the majority of `object.get('property')` with `object.property` with exceptions:
  - `.get('nested.property')` - it's not possible to determine if this is relying on "safe" path chaining for when `nested` doesn't exist
  - `.get('config.x')` and `.get('settings.x')` - both our `config` and `settings` services are proxy objects which do not support es5 getters
- this PR is not exhaustive, there are still a number of places where `.get('service.foo')` and similar could be replaced but it gets us a long way there in a quick and automated fashion
2019-03-06 13:54:14 +00:00
Kevin Ansfield
cbfdd526d6 Fixed linting 2019-03-04 09:27:39 +00:00
Kevin Ansfield
e6df64ed52 Switched About screen to use config service 2019-02-26 16:12:34 +07:00
Kevin Ansfield
738823d8f8 Fixed "Authorization Failed" error screens when not logged in
no issue
- `/config/` can only be requested when authenticated
- updated `/config/` mock to look for an Authentication header and return a 403 if it's missing
- updated `ajax` service to add an `Authentication` header when authenticated in testing env (cookies are not present when testing)
- updated `config` service to add `fetchUnauthenticated()` and `fetchAuthenticated()` methods in addition to `.fetch()`
- updated `application` route to only fetch authenticated config when authenticated
- updated `signin` controller to correctly fetch config after sign-in
2019-02-26 10:38:00 +07:00
Kevin Ansfield
a0a0c50ff5 Removed use of ?include=tags,authors,authors.roles query param on post/page requests
no issue
- Admin API v2 now includes tags and authors by default
2019-02-25 21:55:55 +07:00
Kevin Ansfield
e87af158be Removed usage of /configuration/private/ endpoint 2019-02-25 19:20:17 +07:00
Peter Zimon
605b89a0d2 Left navigation menu update (#1102)
refs. [d6c22df](d6c22df6d7)

- added icons for members and pages
- improved view site link visibility
- added view site to logo dropdown
- updated all navigation and logo menu icons
- rename 'team' to 'staff'
- lots of design refinement and update (colors, shadows)
2019-02-22 16:43:35 +07:00
Kevin Ansfield
d6c22df6d7 🎨 Separated post and page list screens (#1101)
no issue
- added `page` model
- removed `page` param from Post model
- added pages screen with associated links
- added `:type` param to editor screens to work with the right models
- removed post<->page toggle and associated tour item
2019-02-22 10:17:33 +07:00
Kevin Ansfield
7f1c71c831 🐛 Fixed Chrome remembering wrong username when signing up from invitation
closes https://github.com/TryGhost/Ghost/issues/9868
- place email field directly above password field
- enable email field and do not set an initial value requiring user to type-in/auto-fill the email for Chrome to recognise it
2019-02-11 11:35:43 +00:00
Kevin Ansfield
7ec48b36e0 First pass at members list
no issue
- don't nest details route as it's not nested UI
- implement styled list of members
- add `<MemberAvatar>` component that generates random background colour and initials based on member name
- fixed generation of fake member details in mirage
2019-01-24 19:34:32 +00:00
Kevin Ansfield
1680508a0a Added initial members model and associated mirage setup
no issue
- mirage is now enabled by default in development with logging (can be turned off once we're no longer relying on mocked members endpoints)
2019-01-22 17:18:44 +00:00
Kevin Ansfield
bea2d8c871 Added empty member management routes 2019-01-22 16:23:26 +00:00
Kevin Ansfield
33450a4ee1 Added user.isOwnerOrAdmin CP 2019-01-22 16:22:12 +00:00
Moritz Schramm
8fcd75de32 🎨 Added post title to document title for easier location with multiple editor tabs (#1072)
closes https://github.com/tryghost/ghost/issues/10088
* added `updateDocumentTitle` action to base route and replace usage of `.send('collectTitleTokens, [])`
* added `.titleToken()` method to editor route to add post title to document title
* called `.send('updateDocumentTitle')` after saving post title in editor controller to keep document title in sync
* updated editor controller test for latest ember-mocha and ember-test-helpers
2019-01-21 11:44:30 +00:00