Commit Graph

654 Commits

Author SHA1 Message Date
Peter Zimon
8532c13a12 Updated copy for scheduled posts 2019-11-08 16:46:10 +07:00
Kevin Ansfield
2777856a29 Extracted PSM email settings into separate component 2019-11-08 15:56:56 +07:00
Rish
f74060b08b Removed subdirectory from blog host in email setting field
no issue
2019-11-07 17:47:34 +07:00
Kevin Ansfield
5aac467b3f Removed errant console.log 2019-11-07 17:40:48 +07:00
Kevin Ansfield
f23703c8b0 Fixed scrolling and hid scrollbars in email preview 2019-11-07 17:11:53 +07:00
Rish
e3616f177c Fixed lint 2019-11-07 16:02:32 +07:00
Kevin Ansfield
0c0da3813e Added confirmation modal and use email model in place of action 2019-11-07 15:56:41 +07:00
Peter Zimon
48449ee222 Refined disabled states and copy 2019-11-07 15:32:29 +07:00
Rish
2aa781eef1 Added error for incorrect mailgun config in publish and settings menu 2019-11-07 12:44:37 +07:00
Rish
ae39e79ce7 Revert "Added preview modal toggle in publish menu"
This reverts commit 80d58f99cb.
2019-11-07 11:47:16 +07:00
Rish
ea302d66b6 Added mailgun domain to admin settings 2019-11-07 11:32:38 +07:00
Rish
80d58f99cb Added preview modal toggle in publish menu 2019-11-07 10:54:26 +07:00
Rish
f98920aa12 Added test email validation in settings 2019-11-07 10:54:04 +07:00
Rish
18a882e6b0 Added send test email button loading states 2019-11-07 09:58:25 +07:00
Rish
904114d844 Added email subject to preview modal header 2019-11-06 18:18:37 +07:00
Rish
6d0f8984af Disabled email toggle in publish menu if no members 2019-11-06 15:28:40 +07:00
Rish
06e9dc7209 Fixed email preview fetch for draft posts
no issue
2019-11-06 11:58:17 +07:00
Rish
7faff0993e Hide members mail config setting in admin
no issue
2019-11-05 18:23:27 +07:00
Nazar Gargol
6aa64e77d1 Added subscribed toggle to member profile page 2019-11-05 18:00:07 +07:00
Rish
f6660d9116 Added mail provider API key setting
no issue
2019-11-05 17:26:25 +07:00
Rish
caff822706 Added test preview email to post email settings
no issue
2019-11-05 16:10:24 +07:00
Rish
b23288a41b Added email preview modal flow 2019-11-05 13:10:49 +07:00
Kevin Ansfield
049b2a4949 Fixed unwanted "unsaved changes" modal if changing email toggle without publishing 2019-11-04 17:25:24 +07:00
Kevin Ansfield
e9eb5ab8c6 Display email sent info on published state of publish menu 2019-11-04 16:59:46 +07:00
Kevin Ansfield
56cfbf2cd2 Display "sent" info in publish menu 2019-11-04 16:13:18 +07:00
Kevin Ansfield
6419222f31 Put email post toggle behind members feature flag 2019-11-04 13:38:48 +07:00
Rishabh Garg
7866546fab Added email settings to post settings menu (#1398)
no issue
2019-11-04 13:15:13 +07:00
Peter Zimon
5bfe1c2095 V3 css fixes (#1377)
* Fixed Firefox bug for input groups
* Moved from `rem` based responsive styles to `px` based
* Fixed invisible clickable menus for member/user list
* Added responsive CSS for meembers list header
* Updated member list responsive styles
* Fix list header responsive style
2019-10-21 13:09:56 +02:00
Rish
3bb9a9a164 Fixed default fromAddress for members
no issue
2019-10-21 12:40:42 +05:30
Peter Zimon
22c2ce0cf6 Refined member details
no issue
- updated copy for member since date
- added note to note field
- added subscription value to plan data
2019-10-15 16:24:20 +02:00
Peter Zimon
b7f83fad2c Refined member list
no issue
- added list headings
- added active state to search field when it has value
- set position of actions dropdown
- refined avatar typography
2019-10-15 16:11:43 +02:00
Kevin Ansfield
df4bdf1cf2 Merge branch 'master' into v3 2019-10-11 10:43:38 +01:00
Rish
e90b80822d Renamed member require payment setting
no issue

Renames member setting `requirePaymentForsSignup` -> `allowSelfSignup` to match existing usage in members API
2019-10-11 14:10:37 +05:30
Peter Zimon
079f40611b Updated members Labs settings UI
no issue
- new settings have been introduced for members, switched to expand/collapse UI pattern for members settings
2019-10-11 10:25:52 +02:00
Rish
5a609a785f Enabled write operation for member name and note
no issue

- Allows editing member's name and note in admin
2019-10-10 17:29:35 +05:30
Kevin Ansfield
26c48a52c2 Merge branch 'master' into v3 2019-10-10 10:17:44 +01:00
Rish
641dd35779 Updated subscription data in member details
no issue
2019-10-10 13:54:19 +05:30
Kevin Ansfield
ce7f0bf1ec Merge branch 'master' into v3 2019-10-09 15:06:37 +01:00
Rish
2e01455413 Updated members lab settings design
no issue

- Extracts members lab settings from `Beta Features` section to its own section
- Adds new `fromAddress` field to members settings
2019-10-09 15:33:08 +05:30
Naz Gargol
3aa260f92e Hidden post visibility select from PSM for non editors (#1357)
no issue

- Limited visiblity to only those users who have the rights to edit post's visibility
2019-10-09 10:23:36 +02:00
Kevin Ansfield
159e810d5c Merge branch 'master' into v3 2019-10-08 14:04:38 +01:00
Rish
a85129abc8 Fixed lint
no issue
2019-10-07 09:17:26 +05:30
Rish
3974dd5615 Updated member info to show multiple subscriptions
no issue

Displays details of multiple subscriptions of a member
2019-10-04 20:01:56 +05:30
Peter Zimon
523b8e856f Renamed post visiblity dropdown values for posts
no issue
2019-10-04 12:57:58 +02: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
Rish
a561b6e66e Updated members detail design
no issue

- Fixed bug with incorrect member count
- Added basic stripe info section
2019-10-03 23:17:52 +05:30
Peter Zimon
495663c3c4 Udpated members list design
no issue.
2019-10-03 12:56:31 +02:00
Rish
4a3fd90017 Updated members list/detail screens base structure
no issue
2019-10-02 17:05:57 +05:30
Naz Gargol
98da7e1f26 Content visibility configuration in labs (#1346)
no issue

- Changed members description to less verbose
- Added content visibility radio options to members configuration screen
- Moved setting of default visibility to server-side
- Default visibility setting when PSM is opened before making the first request to the server
2019-10-02 11:13:59 +02:00
Rish
e49a12cfa0 Updated member detail screen design 2019-10-02 09:30:21 +05:30
Rish
204e10c114 Updated members list screen design 2019-10-02 09:30:21 +05:30
Naz Gargol
cdb87e5112 Added PSM visibility input (#1344)
refs 80f7e0b19e

- Added visibility input in PSM to control content access level for members
- Added default post visibility in editor. To be changed (moved to server-side) once `defaultContentVisibility` is available in settings service
- Added `visibility` property to post model & mirage
2019-10-01 15:00:53 +02:00
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
Fabien O'Carroll
e584623399 Added guard against undefined member name (#1322)
no-issue

This is causing issues since we removed the name property from member
objects. This change stops admin crashing out, but a more correct
handling of the missing name property should happen at a later point.
2019-09-16 09:33:00 +01:00
Fabien O'Carroll
e6db09620e Added guard against undefined member name (#1322)
no-issue

This is causing issues since we removed the name property from member
objects. This change stops admin crashing out, but a more correct
handling of the missing name property should happen at a later point.
2019-09-12 16:33:03 +08:00
Kevin Ansfield
0ba331ec5f Updated Unsplash image selector to insert larger images
no issue

- the default "regular" url Unsplash provides is 1080px wide that does not work well for full-width image cards
- updated to grab 2000px wide images
2019-08-29 09:41:43 +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
22e320f725 Fixed linting 2019-08-27 10:49:50 +01:00
Kevin Ansfield
9eb9e9f00e Removed unused "active" handling in <GhPostListItem>
no issue

- "active" post list items no longer exist so we can remove the code related to handling the scroll-into-view and style changes
2019-08-27 10:42:27 +01:00
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
d33abeab04 Fixed ".set called on destroyed object" error thrown in <GhUploader>
no issue

- saw error being thrown sometimes when performing image/gallery uploads in the editor
2019-07-31 17:45:19 +01:00
Renovate Bot
c9537e27f1 Update ember core
no issue

- remove usages of function prototype extensions
- fix usage of evented.off
2019-07-22 14:00:52 +01:00
Kevin Ansfield
4ae9151923 Fix linting errors
refs https://github.com/TryGhost/Ghost-Admin/pull/1274

- fixes errors introduced from upgrading to eslint@6
2019-07-22 11:21:24 +01:00
Kevin Ansfield
6ac1480ffc Removed and disabled use of Ember.js function prototype extensions
no issue

- Function prototype extensions are being deprecated in Ember 3.11
2019-07-01 15:53:58 +01:00
Kevin Ansfield
a2bb7c95f2 Update dependency eslint-plugin-ghost to v0.3.0 (#1247)
no issue

- update dependency `eslint-plugin-ghost` to v0.3.0
  - includes new rules from `eslint-plugin-ember` 6.3.0-6.7.0
- fixed linting failures for new rules
2019-06-24 16:33:21 +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
c722c83a6e 🐛 Fixed editor crashing when leaving a markdown card's edit mode
no issue
- a change in Ember 3.10's rendering has resulting in the component's element being removed before the `{{gh-markdown-editor}}`'s cleanup action is run which meant that we were trying to run `.querySelector` on `undefined`
- removes the code which moved toolbar elements around because it hasn't been used since we moved to Koenig, this meant that the cleanup action could also be removed
2019-05-23 13:43:01 +01:00
Kevin Ansfield
8aba726bc8 Fixed gh-search-input tests failing on Ember 3.10 2019-05-20 11:32:08 +01:00
Kevin Ansfield
b7b51bbb0f Fixed deprecated usage of new EmberObject in <GhUploader>
no issue

- https://deprecations.emberjs.com/v3.x/#toc_object-new-constructor
- `UploadTracker` is extended from `EmberObject` so we should use the `.create` method
2019-05-07 13:26:32 +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
Kevin Ansfield
344999a69b Fixed "remove all listeners" deprecation
no issue

- https://deprecations.emberjs.com/v3.x/#toc_events-remove-all-listeners
2019-05-06 15:00:06 +01:00
Kevin Ansfield
1dad18a06c Added language selection to code cards (#1180)
no issue

- Added a language indicator when in rendered mode and a language input when in edit mode
- Allow code card language to be set with <code>```lang</code>+<kbd>Space/Enter</kbd> expansion 
    - previously <code>\`\`\`</code> would immediately create a code card, the <kbd>Space/Enter</kbd> is now necessary for the insertion to occur
    - lang is optional <code>\`\`\`</code>+<kbd>Space/Enter</kbd> will insert a code card with no language selected
    - requires <kbd>Enter</kbd> to be pressed to finalise the expansion and insert the card
    - added hook for text expansions to skip newline creation for when they are triggered with <kbd>Enter</kbd>
- Set the code card editor's language mode based on selected language
    - set the CodeMirror mode based on the code card payload language
        - add a basic map of language short codes to their respective CodeMirror modes
    - observe `mode` property in `{{gh-cm-editor}}` so that the mode is properly set when it's changed after initial render
2019-04-30 16:46:29 +02:00
Kevin Ansfield
151b7a2844 🐛 Fixed missing errors and confusing button text in theme upload modal
no issue
- fixed "Active with errors" button successful theme upload with no warnings/errors
- fixed fatal errors not showing due to change in API error response
- fixed "Retry" button not showing when there were fatal errors
- fixed "Upload successful!" message after clicking "Retry" on a failed upload
2019-04-15 22:43:29 +01:00
Vikas Potluri
747bf6ea9f 🐛 Fixed confusing messaging around .yml extension being allowed for routes.yaml uploads (#1140)
no issue

The server never supported uploading .yml files

* updated uploader `invalid extension` error message to be more abstract
* fixed routes uploader validation allowing .yml files
2019-04-03 19:54:05 +01:00
Kevin Ansfield
d0a834b477 🐛 Fixed missing error notification when attempting to activate an invalid theme
no issue
- updates error handling to work with new v2 error response formats
  - `.errorType` -> `.error`
  - `.errorDetails` -> `.details`
2019-03-25 11:32:29 +00:00
Zimo
cdd3f40422 Fixed button and title cases for Tags screen
no refs.
Set "New tag" button and "Tag settings" to sentence case to be consistent with the rest of the UI. (Previously they were title case.)
2019-03-25 09:37:44 +01:00
Kevin Ansfield
700d3587c3 Fixed "view site" link not getting active class immediately after login 2019-03-21 18:08:57 +00: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
Kevin Ansfield
63b8127cfa Fixed "Send invitation" button needing to be clicked twice
refs https://github.com/TryGhost/Ghost/issues/7131
- adds `disableMouseDown` flag to `{{gh-task-button}}`
- uses flag for the send invite button so that the focus-out validation on the e-mail input is not triggered before the click event is triggered
2019-03-18 17:56:32 +00:00
Kevin Ansfield
c28d024fec Fixed error when opening meta/facebook/twitter settings with a new post
no issue
- `post.scratch` does not exist until post contents have been edited which meant that the `seoDescription` CP was erroring trying to access a non-existent `cards` property
2019-03-12 12:15:02 +00:00
Kevin Ansfield
8ba1c8fb79 Added ability to override the canonical URL of posts/pages
closes https://github.com/TryGhost/Ghost/issues/10593
- adds a "Canonical URL" field to the Meta Data section of the Post Settings Menu
- adds validation for canonical url being a valid absolute or relative URL
2019-03-12 10:40:07 +00:00
Kevin Ansfield
047f5695b4 🐛 Fixed vague upload error messages on General and Labs setting screens
no issue
- API now returns the "useful" error message in `error.context` rather than `error.message`
- updated `{{gh-uploader}}` to expose `context` on errors
- updated error display to try using `context` with a fallback to `message`
2019-03-07 13:40:38 +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
Rish
57f9663b6e Added members feature to labs
no issue

- Added new members settings/toggle to labs
2019-02-26 15:33:38 +07:00
Kevin Ansfield
81eddbbf72 Updated post list preview to use excerpt instead of plaintext 2019-02-26 13:37:23 +07:00
Kevin Ansfield
a4c4fa7335 Updated gh-image-uploader to work with new /images/upload/ endpoint 2019-02-26 09:39:04 +07:00
Kevin Ansfield
72d9732958 Updated gh-uploader to work with new /images/upload/ endpoint 2019-02-25 23:01:49 +07:00
Zimo
46124ed6ee Refined members list and detail design 2019-02-23 16:31:18 +07:00
Kevin Ansfield
6ac2569f24 Implemented first pass of member details screen 2019-02-22 18:32:09 +07:00
Nazar Gargol
ac321fa62a Updated /images* response structure
refs #10438
2019-02-22 18:16:25 +07:00
Nazar Gargol
44ce2f5359 Renamed /uploads* endpoints to /images*
refs #10438
2019-02-22 18:16:25 +07:00
Kevin Ansfield
62009832fe Fixed uploading of images for staff users 2019-02-22 18:14:44 +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
68e684453d 🐛 Fixed Code Injection inputs not being clickable
no issue
- attempt to fix the "Cannot set property 'modeOption' of undefined" error by telling CM to replace the textarea element rather than appending to the wrapper and having Ember replace the textarea
2019-02-22 10:52:32 +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
e7c3b1b0e3 🐛 Fixed Code Injection input fields not being clickable
no issue
- lazy loaded scripts such as the CodeMirror asset used on the Code Injection screen could throw errors such as `TypeError: Cannot set property 'modeOption' of undefined`
- this was caused by "loading" promise returned from the `lazyLoader` service returning as soon as the network request finished which can be before the loaded script has been parsed and run meaning any processing occurring after the promise returns could be depending on unloaded code
- switched the lazyLoader service's loading mechanism from an ajax fetch to insertion of a `<script>` tag which can have `load` event attached which _will_ return after parsing/loading has completed
2019-02-11 21:08:15 +00:00
Zimo
ea2b89ab1c Visual tweaks on Members list
- tune list style
- tweak generated avatar background-colors
- type and color refinements
2019-01-31 17:41:55 +01:00
Kevin Ansfield
b3716505fa 🐛 Fixed incorrect username being saved by Safari when signing up via invitation
refs https://github.com/TryGhost/Ghost/issues/9868
- ensure signup task is always initiated via form submit
  - adds `defaultClick` option to `<GhTaskButton>` that allows the click event to bubble
- adds `autocomplete` values to signup form fields that match up to the spec
  - "name/display-name": `name`
  - "email": `username email`
  - "password": `new-password` / `current-password` depending on context
- 🔥 no-longer-relevant hacks for Chrome autocomplete
  - this still doesn't fix Chrome remembering the incorrect username unfortunately. Chrome will always select the input previous to the password that has had actual user input as the "username"
- 🔥 unused `authenticate` task in signup controller
2019-01-31 10:27:40 +00:00
Kevin Ansfield
6fe40b941b Fixed Ember.copy deprecations
refs https://github.com/TryGhost/Ghost/issues/10310
- https://emberjs.com/deprecations/v3.x/#toc_ember-runtime-deprecate-copy-copyable
2019-01-30 10:14:07 +00:00
Kevin Ansfield
a7e9796101 Renamed <MemberAvatar/> to <GhMemberAvatar/> for naming consistency 2019-01-25 13:51:18 +00:00
Kevin Ansfield
17c5b804e5 Removed unnecessary div in <MemberAvatar>, fixed component test 2019-01-24 19:50:23 +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
042aecb7f6 Switch from embor-browserify to ember-auto-import
no issue
- minor reduction in build size. Before/after:
  - `vendor.min.js 3.32 MB (710.66 KB gzipped)`
  - `vendor.min.js 3.29 MB (706 KB gzipped)`
2019-01-22 13:09:38 +00:00
Kevin Ansfield
90633caf06 🐛 Fixed admin search results sometimes showing "No results" for valid queries
closes https://github.com/TryGhost/Ghost/issues/10131
- switch to ember-concurrency tasks to take advantage of built-in concurrency handling and derived state
- bump search content expiry time to 30s
2019-01-21 18:25:58 +00:00
Kevin Ansfield
893a010a4f Lazy-load SimpleMDE dependency in MD card (reduces main bundle by 260KB)
no issue
- use broccoli-funnel to avoid polluting the `dist/` dir with unused build artefacts
- load codemirror and simplemde CSS up-front to avoid duplicate styles and specificity problems
- pull simplemde dependency out into a separate JS file and lazy-load in `{{gh-simplemde}}` component to reduce main bundle size. Before/after:
  - `vendor.min.js 3.58 MB (795.88 KB gzipped)`
  - `vendor.min.js 3.32 MB (710.66 KB gzipped)`
2019-01-21 16:06:25 +00:00
Kevin Ansfield
39c850f4fe 🐛 Fixed sticky "Unsaved changes" modal when leaving editor
no issue
- the unsaved changes confirmation modal could re-appear after leaving the editor and re-opening the same post
- remove the `.finally` which assumed the confirm action returns a promise so that the modal is properly closed
2019-01-21 09:18:51 +00:00
Kevin Ansfield
5e3de1c333 🎨 Removed auto hide/show navigation toggle (#1094)
no issue
- the autonav behaviour has outlasted it's usefulness - it was mostly useful for editing but the editor screen is now always fullscreen and the number of low-resolution screens has dropped significantly
- dropped the components and all supporting code associated with autonav behaviour
2019-01-10 15:00:07 +00:00
Kevin Ansfield
18b6596cd1 Bump dependencies (#1093)
no issue
- bump ember-cli-htmlbars-inline-precompile
- bump ember-cli-inject-livereload
- bump ember-concurrency
- bump ember-cli-string-helpers
- bump ember-sinon
- 🔥 remove unused ember-wormhole dependency
- bump ember-test-selectors
- bump ember-useragent
- bump ember-cli-babel
- bump eslint-plugin-ghost
- bump ember-load
- bump ember-load-initializers
- bump ember-power-select
- bump grunt-shell
- bump walk-sync

Partial dependency bump. Keeping groups smaller so that any issues are easier to pin down if needed. This PR covers remaining out-of-date dependencies that require little to no additional changes or investigation.
2019-01-10 14:15:37 +00:00
Kevin Ansfield
73daa80b7f Migrate to latest ember, ember-mocha and modern ember testing (#1044)
no issue
- upgrade to latest `ember-source` and related dependencies including `ember-cli`
- upgrade to latest `ember-mocha` and modern ember testing setup
    - https://github.com/emberjs/rfcs/blob/master/text/0268-acceptance-testing-refactor.md
    - switch from using global acceptance test helpers and `native-dom-helpers` to using the new `ember-test-helpers` methods
    - use [`chai-dom`](https://github.com/nathanboktae/chai-dom) assertions where in some places (still a lot of places in the tests that could use these)
- pin `ember-in-viewport` to 3.0.x to work around incompatibilities between different versions used in `ember-light-table`, `ember-infinity`, and `ember-sticky-element`
    - incompatibilities manifested as "Invalid value used as weak map key" errors thrown when using `ember-light-table` (subscribers screen)
- pin `ember-power-datepicker` to unreleased version that contains a move from global acceptance test helpers to modern test helpers
2019-01-02 09:58:55 +00:00
Kevin Ansfield
1946c7f3fa 🐛 Fixed ability to submit invite form with a missing role (#1080)
refs https://github.com/TryGhost/Ghost/issues/10071
- moved roles fetch request into an ember-concurrency task
- use the task's derived state to disable the submit button whilst fetching
- added role presence check to the invite user validator and updated template to display the error
2018-12-10 14:26:05 +00:00
Antonio
d1427c8ba3 Fixed post excerpt fallback in Stories list (#1052)
closes https://github.com/TryGhost/Ghost/issues/9775
- update the `subText` CP to prioritise the custom excerpt over meta description and plain text content
2018-11-26 14:32:49 +00:00
Kevin Ansfield
89440a30be Fixed linting 2018-11-13 09:56:59 +00:00
Kevin Ansfield
ef551b6061 Improve handling of non-validation errors in webhook modal
no issue
- display the error message of any API-provided error
2018-11-12 21:27:42 +00:00
Rishabh Garg
032fba8f7b Added active navigation state for all integrations related routes (#1069)
closes https://github.com/TryGhost/Ghost/issues/10136
- use a CP and `{{#link-to current-when}}` to add the `.active` class any time the current route name starts with `settings.integration` which covers built-in and custom integration screens
2018-11-12 13:10:33 +00:00
Kevin Ansfield
e802b06b77 Fixed error in stories list if plaintext is not a string
no issue
- `gh-posts-list-item`'s excerpt CP attempts to use `.slice` on whichever value is given to it, if it's `null` or `undefined` (as is the case when using mirage) then it would error with ".slice is not a function"
2018-11-08 14:02:01 +00:00
Kevin Ansfield
d88e7efd04 🎨 Changed tags list, filter dropdown, and select input to sort alphabetically (#1066)
no issue
- switch tags sorting from ID based to alphabetical
- pre-requisite to nested tags sorting
2018-11-07 15:06:28 +00:00
Kevin Ansfield
ac17053863 Added custom integrations - Content API Keys and "Site rebuild" webhooks (#1063)
closes TryGhost/Ghost#9942
- move custom integrations UI out from behind the developer experiments flag
- put Admin API key and web hook secret fields behind the developer experiments flag
- do not show "unsaved changes" modal when adding/editing a webhook
- fixed all webhooks showing for each custom integration
2018-11-06 10:59:47 +00:00
Kevin Ansfield
fce4aa9176 Added ability to upload integration icons (#1058)
no issue
- add `{{aspect-ratio-box}}` to make it easier to adjust box sizes at a fixed ratio based on container height which isn't possible with CSS directly
- used `{{gh-uploader}}` to add upload facility to the icon shown on the integration screen
2018-10-23 10:29:49 +01:00
Kevin Ansfield
513cddfaa3 Minor cleanups
no issue
- replace unnecessary destructuring with direct import
- remove unused action
2018-10-22 21:00:02 +01:00
Fabien O'Carroll
0d38df0f74 Added ability to delete integrations (#1057)
no issue
- adds delete integration modal, and delete button on the integration page to trigger it
2018-10-19 17:37:27 +01:00
Kevin Ansfield
296e35493d Added edit webhook modal (#1056)
requires https://github.com/TryGhost/Ghost/pull/10033
- added `settings.integration.webhooks.edit` route
  - `/integrations/:integration_id/webhooks/:webhook_id`
- added error handling to the webhook form modal that copes with the actual errors we get back from the server
- added `event-name` helper to display humanised event names in the webhooks list
- added delete button to the webhooks list and associated confirmation modal
2018-10-19 17:34:53 +01:00
Kevin Ansfield
9684e5e347 Changed "new-webhook" modal to generic "webhook-form" modal
no issue
- the webhook form needs to be re-usable for the "edit webhook" modal
- renamed modal
- added logic to adjust the confirm button's text depending on the state of the passed in webhook model
2018-10-18 18:43:34 +01:00
Kevin Ansfield
5047b9f3d7 Added initial custom integrations UI (#1051)
refs https://github.com/TryGhost/Ghost/issues/9865, https://github.com/TryGhost/Ghost/issues/9942

- `integration`, `api-key`, and `webhook` models and respective mirage mocks
- moves integration routes around to match ember's concept of nested routes (nested routes reflect nested UI not nested URLs)
- adds custom integrations list to integrations screen
- adds custom integration screen
  - allow editing of integration details
  - show list of webhooks
  - webhook creation modal

NB: the `enableDeveloperExperiments` flag needs to be enabled in the `config.development.json` file for the custom integrations UI to be displayed until it's out of development.
2018-10-18 00:18:29 +01:00
Fabien O'Carroll
3e5a62309f Use Admin API v2 with session auth (#1046)
refs #9865
- removed all `oauth2` and token-based ESA auth
- added new `cookie` authenticator which handles session creation
- updated the session store to extend from the `ephemeral` in-memory store and to restore by fetching the currently logged in user and using the success/failure state to indicate authentication state
  - ESA automatically calls this `.restore()` method on app boot
  - the `session` service caches the current-user query so there's no unnecessary requests being made for the "logged in" state
- removed the now-unnecessary token refresh and logout routines from the `application` route
- removed the now-unnecessary token refresh routines from the `ajax` service
- removed `access_token` query param from iframe file downloaders
- changed Ember Data adapters and `ghost-paths` to use the `/ghost/api/v2/admin/` namespace
2018-10-05 19:46:33 +01:00
Kevin Ansfield
525fb2a720 Fixed submit-on-enter and password manager issues on signup
closes https://github.com/TryGhost/Ghost/issues/9868
- moved submit action to the `<form>` which allowed removal of the per-input enter key handlers
- changed submit button to trigger the form submit
- improved markup for password managers
  - linked labels with inputs
  - changed button to a "submit" type and linked it with the form
  - added hidden email input at the bottom of the form in case password managers do not take disabled inputs into account
2018-09-17 16:03:58 +01:00
Kevin Ansfield
bfe985abe2 Do not allow upload of invalid images to gallery
no issue
- added `onUploadStart` action to `{{gh-uploader}}` that is triggered when individual files start uploading
  - will not be triggered for any files that fail client-side validation
- changed `{{koenig-card-gallery}}` to only add images to the local gallery display when the uploader starts an upload
2018-08-31 12:01:08 +01:00
Kevin Ansfield
08179545ab Added gallery card to the editor
no issue
- added gallery card (initial implementation)
    - supports upto 9 images in gallery
    - max 3 images per row
- fixed gh-uploaded error handling for generic errors
- ignore jsconfig.json
2018-08-30 17:48:20 +01:00
Kevin Ansfield
adb0508d2f Fixed default user images returning 404s
no issue
- dropping IE11 support meant that babel/uglifyjs was able to be clever and inline the image URLs variables directly into the template strings which was then breaking the fingerprint asset rewriting resulting in files having hashes but file references in the JS not having the hash
- removing use of template strings to build the default image URLs prevents the inlining behaviour, letting the asset fingerprint plugin do it's thing correctly
2018-08-15 23:58:37 +01:00
Kevin Ansfield
4463f975e3 Koenig - Unsplash integration
refs https://github.com/TryGhost/Ghost/issues/9724
- standardised `{{gh-unsplash}}` actions and action arguments to better represent a generic "image source"
- added `{{gh-unsplash searchTerm="ghosts"}}` parameter
- added `payload` param to `card` definitions used for plus/slash menus so that default payload params can be passed to cards
- added a concept of "image selectors" to image card
  - if a `payload.imageSelector` param is received by the card it will look it up in it's list of known selectors and display the appropriate image selection component
  - if the card was created with an image selector param and the image selector is closed without selecting an image then the card will be removed
- delete image cards during cleanup if they were created via selector but have no src
2018-08-10 18:11:35 +01:00
Kevin Ansfield
9a81a80706 Redesigned Unsplash modal
no issue
- Koenig is now full-screen so the Unsplash modal needed some design tweaks so that it doesn't look like Unsplash.com
2018-08-10 18:11:35 +01:00
Kevin Ansfield
cc2e20a486 Koenig - Added reading time and word count display
refs https://github.com/TryGhost/Ghost/issues/9724
- add `registerComponent` hook to cards so that `{{koenig-editor}}` can fetch properties from card components directly
- add word count and reading time utilities
- add throttled word count update routine to `{{koenig-editor}}` that walks all sections and counts text words or fetches word/image counts from card components
- add `wordCountDidChange` hook to `{{koenig-editor}}` so that word count + reading time can be exposed
- modify editor controller to update it's own word count property when koenig triggers it's action
- modified the editor template to show reading time + word count next to the post status
2018-07-20 15:53:21 +01:00
Kevin Ansfield
4d826fa004 Use filter instead of status and staticPages params for post queries (#1025)
no issue
- `staticPages` API param is deprecated in favour of using the `filter` param
- switched `status` query to param to the `filter` param as well for consistency
2018-07-20 11:57:53 +01:00
Kevin Ansfield
984654e19e 🐛 Koenig - Fixed deselect if mouse released at end of doc when drag-selecting
refs https://github.com/TryGhost/Ghost/issues/9623
- track the `mousedown` position and switch the `click` handler to a `mouseup` handler
- only trigger the editor focus event if both the `mousedown` and `mouseup` events occur below the editor canvas
2018-06-20 13:11:12 +01:00
Kevin Ansfield
1eaf85e5aa 🎨 Koenig - Keep posts free of blank cards
refs https://github.com/TryGhost/Ghost/issues/9623
- add new `deleteIfEmpty` option when defining cards
- add `.cleanup()` method to `{{koenig-editor}}` that will remove any blank cards
- pass `{{koenig-editor}}` instance up to the editor controller when it is initialised
- call `.cleanup()` in the editor controller when performing full saves, when leaving the editor with a draft, and when opening the editor with a draft
2018-06-14 16:55:02 +01:00
Kevin Ansfield
74f1837335 Koenig - Fix error when pressing Enter in title when first section is a list
refs https://github.com/TryGhost/Ghost/issues/9623
- ensure we're grabbing the correct section list, listItem.parent.sections is a list of the list items rather than all document sections
2018-06-14 13:01:54 +01:00
Kevin Ansfield
6b5650d102 Koenig - Fix PSM meta/twitter/facebook pane errors on new posts
refs https://github.com/TryGhost/Ghost/issues/9623
- do not assume that a markdown card exists when generating the SEO description preview
2018-06-14 12:38:43 +01:00
Kevin Ansfield
559dd29ba3 🐛 Koenig - Fixed creation of unnecessary undo states
refs https://github.com/TryGhost/Ghost/issues/9623
- only use `editor.run` calls when performing edits, do not use them when only moving the cursor/selection
2018-05-23 14:20:03 +01:00
Kevin Ansfield
54cb053fa5 Koenig - Clicks below the editor canvas always focus the editor
refs https://github.com/TryGhost/Ghost/issues/9623
- fixes the broken click handling and expands it
    - trigger for clicks on the container rather than only the editor canvas
    - trigger only if the click is below the editor canvas
    - create an empty paragraph if the last section in the doc is a card
2018-05-15 17:17:51 +01:00
Kevin Ansfield
5b43350112 Add {{background-image-style}} helper
no issue
- cleans up multiple CPs that were only outputting a background image style
- moves URL decoding/encoding and `htmlSafe` output into one place
2018-05-14 13:04:53 +01:00
Kevin Ansfield
5ce5dd04ab 🐛 Fixed low-resolution gravatar images on Team/User screens
closes https://github.com/TryGhost/Ghost/issues/9563
- fixes incorrect gravatar URLs by removing incorrect HTML encoding of the URL and enforcing URL encoding
- centralise image URL generation in the User model so that default image logic isn't spread across the app
- remove unnecessary proxy mixin from `ghost-paths` service (allows property access without `.get()`)
2018-05-14 12:15:08 +01:00
Kevin Ansfield
6c4d125cd6 🐛 Fixed tag creation via the Post Settings Menu
closes https://github.com/TryGhost/Ghost/issues/9619
- e28a960970 changed `availableTags` to be the direct result of `store.peekAll()` rather than a promise that resolved to the peekAll result but other code was not updated and still expected a promise object
2018-05-09 09:12:31 +01:00
Kevin Ansfield
9a68dca80e Remove more import Ember via module imports
refs https://github.com/TryGhost/Ghost/issues/8927
- removes usage of `Ember.testing`
- removes usage of `Ember.uuid`
- removes usage of `Ember.Debug.registerWarnHandler`
2018-05-03 17:52:39 +01:00
Zimo
4c05d618bd Koenig - Replace custom CSS classes with Spirit
no issue
- Koenig container styles for Spirit
- Applying Spirit styles to card menu
- Applying Spirit styles to generic cards
- Replacing icon styles with Spirit
- Fix slash menu selected state
- Cleanup of unused files + fix empty HTML
2018-05-02 15:54:22 +01:00
Kevin Ansfield
ac72b89164 Koenig - Fixed incorrect sticky card icon positioning
refs https://github.com/TryGhost/Ghost/issues/9505
- sticky positioning was correct on the first post load but leaving the editor then coming back never took the editor header height into account
- store a reference to the header element in `{{gh-editor}}` so that we can more reliably grab the height to pass through
2018-05-02 12:50:53 +01:00
Kevin Ansfield
26e70e86ea Koenig - Sticky card icons (#1013)
refs https://github.com/TryGhost/Ghost/issues/9505
- use `ember-sticky-element` to stick card icons in top left when scrolling
- pass an `headerOffset` down from the `{{gh-editor}}` component through Koenig and the card components so that it can be used for adjustments where necessary
    - calculate `headerHeight` in `{{gh-editor}}` any time we change the header class
2018-05-01 15:55:51 +01:00
Kevin Ansfield
e28a960970 Removed used of ember-data-filter
closes https://github.com/TryGhost/Ghost/issues/9591
- swapped use of `store.filter` for a combination `store.peekAll` and CPs to filter the result set
2018-04-30 13:54:09 +01:00
Kevin Ansfield
761e841875 Koenig - Enable line-wrapping for HTML card's CodeMirror instance
refs https://github.com/TryGhost/Ghost/issues/9505
- pass `lineWrapping` option through to CodeMirror in `{{gh-cm-editor}}`
- add cascade overrides for the `pre` line-wrapping styles needed by CodeMirror
2018-04-25 12:06:01 +01:00
Kevin Ansfield
b21e46aa39 Koenig - Keep MD card formatting toolbar visible when possible
refs https://github.com/TryGhost/Ghost/issues/9505
- use `{{gh-scroll-trigger}}` components at top and bottom of the markdown card when in edit mode so that styles can be applied to the `.editor-toolbar` element to keep the toolbar fixed at the bottom of the screen whilst scrolling
2018-04-24 13:10:20 +01:00