closes https://github.com/TryGhost/Ghost/issues/8665
- updates width/height for non-square icons to match the desired dimensions (width+height have to be specified for IE11)
Changes introduced in #724 failed to take into account a few of our icons are not square (notably the `arrow-*-small.svg` icons) resulting in some icons appearing too small.
refs TryGhost/Ghost#8525
- fix `saveTitle` action
- don't abort title save when we have an empty title
- force a "dirty" state so that the save actually happens
- add acceptance test for title blur behaviour
- extract multiple instances `"(Untitled)"` into a const
refs https://github.com/TryGhost/Ghost/issues/8616
- only refresh tokens on boot if we last refreshed more than 24hrs ago - this should prevent rapidly changing access/refresh tokens when opening new admin tabs or refreshing whilst other tabs are open
- fix token refresh test which was testing it's own behaviour instead of the applications 🙈
This may not be the full solution to the session issues but it closes one potential culprit and should at least reduce token churn which can only help track down the real cause.
closes https://github.com/TryGhost/Ghost/issues/8540
- use `{{vertical-collection}}` in the tags dropdown filter list, opening the dropdown is now virtually instant as it's not attempting to immediately render components for every tag in the list
- remove pagination/infinite scroll from tags screen
- load all tags when accessing the tags screen
- will pause to show spinner if no tags have previously been loaded
- if tags exist in the ember data store, show the list immediately and load/update list in the background
- use `{{vertical-collection}}` to render enough tags to fill the scrollable area with a small buffer and use occlusion and element re-use to swap tags in whilst scrolling (suuuuper fast no matter number of tags loaded)
- scroll tags into view when they are selected (keyboard nav now makes a lot more sense)
- tested with 875 tags and 2x/5x CPU throttling with no major slowdowns 🎉
closes https://github.com/TryGhost/Ghost/issues/8662
- removes `k`, `j`, `up`, `down` shortcuts for changing the active post (these were already mostly unusable in 1.0) and the associated `enter` and `ctrl/cmd+backspace` commands for opening and triggering the delete modal respectively
- removes the `c` shortcut for opening the new post screen
no issue
- background color of the editor header at smaller screen sizes had been removed resulting in the editor content showing through when scrolling, this adds the explicit bg color back for both normal and dark mode
closes https://github.com/TryGhost/Ghost/issues/8656
- prevents button stretching from flexbox and adds margin between input and button
- use the `context` attribute returned from the server instead of the `message` so the error is now `Your password is incorrect.` instead of `You are not authorised to make this request.`
- return truthy/falsy values from the auth tasks so that the save-state button shows the correct state
closesTryGhost/Ghost#8612
* Additional check of privacy.useGravatar for gh-profile-image component
- added a check for privacy.useGravatar flag
- checked: tests are OK
* fix other issues in gh-profile-image
- we had CPs with side-effects 🤢
- replace CP with basic properties that can be set within the component
- use `didReceiveAttrs` and `ember-concurrency` to debounce changes to the email property and make the functionality easier to reason about
- fix the broken fade-in animation when the avatar changes
- fix tests - `.to.be.blank` was always returning true, replaced with `to.be.empty` which caused the tests to fail properly then replaced them with the expectations for the actual values
closesTryGhost/Ghost#8623
Uses the same classes as the other pages for more consistency and sexiness. Also updated the links to slack and contributers to be correct.
closesTryGhost/Ghost#8630
Add `width: calc(100% - 8px)` (substract 8px to keep a bit of a padding to the icon) to `.ember-power-select-search input` class so the input field is full width.
refs TryGhost/Ghost#8603
With 69b82b9207 we introduced a bug, that caused the Ghost Admin to crash when scheduling a blog post. Adding a check in the conditional prevents it from crashing and fixes the functionality.
no issue
- Add minimal extensibility to Ghost Admin
- Adds 3 sections of semi-flexible customisation to Ghost Admin
- Options:
- Menu: a list of links with icons and text and hrefs, also has a title
- Dropdown: another list of links
- Script: a custom container and a script file
- All of this can be provided via the blog config
- Also adds 2 extra icons for use with these menus
- 🎨 Improve extensibility
refs TryGhost/Ghost#8530
This PR takes care that the modals for theme activation gets the same treatment as theme upload modal:
- differentiate between normal and fatal errors
- list headings for each error type (fatal, normal or warning)
- update test
closes https://github.com/TryGhost/Ghost/issues/8523
- use shortcuts mixin to register `cmd-shift-i` shortcut in
`gh-markdown-editor` that triggers the image insertion dialog
- joins multiple uploaded images with new lines instead of a space for
easier editing post-upload
- add `captureSelection` option to `_openImageFileDialog` so that
insertion shortcut triggered when editor doesn't have focus doesn't
insert at the last focused char position
- if image insertion happens with no cursor position add two newlines
before the inserted image markdown for easier editing (previously it
would be inserted immediately after the last char in the post)
- removes unused `editor-shortcuts.js` file
closesTryGhost/Ghost#8552
Reduce the `font-size` per `0.5rem` so it'll fit within the `700px` `max-width` of the parent container even with three numbers in word count.
* ⬆️ Trigger image upload when clicking on image
closesTryGhost/Ghost#8544
When clicking on an already uploaded icon, logo or cover in Settings -> General we trigger now the file upload to be able to replace it.
* use lowercase event names
* toggle progress bar when replacing image
closes https://github.com/TryGhost/Ghost/issues/8551
- move `updateSlug` logic from `gh-post-settings-menu` component to `editor-base-controller` mixin
- put `updateSlug` and `save` into a task group so that concurrent calls are queued - means that pressing Cmd-S with the cursor still in the slug field will first trigger the `updateSlug` call (triggered by the field blur) then trigger the `save` call (triggered by Cmd-S) when `updateSlug` has finished so there are no conflicts and you still see the "saved" notification
closes https://github.com/TryGhost/Ghost/issues/8547
- `window.history.state` is no longer a thing (not sure if it's a recent browser change or because we switched to hash-urls) so the URL change logic after a successful user save needs to use `window.location.hash` instead
refs https://github.com/TryGhost/Ghost/issues/5168
- adds a `tour` service that handles syncing and management of tour throbbers & content
- adds a `gh-tour-item` component that handles the display of a throbber and it's associated popover when clicked
- uses settings API endpoint to populate viewed tour items on app boot/signin
- adds `liquid-tether@2.0.3` dependency for attaching throbbers and popups
- adds initial tour contents
closesTryGhost/Ghost#8222
- there are fatal and normal errors
- fatal === can't activate a theme
- the normal errors are only returned in development mode (!)
- Separate between `fatal` and normal errors and group them
closes https://github.com/TryGhost/Ghost/issues/8384
- fixes image uploads on settings/general by reverting to jQuery for triggering the file dialog because IE11 doesn't support `MouseEvent` events or have the `.closest` method on native DOM elements
- gives all SVG elements an explicit `width` and `height` - if one property is set to `auto` or not specified IE11 will treat it as 100% of the container
- fixes horizontal scroll + scrollbar on the main app viewport
closes https://github.com/TryGhost/Ghost/issues/8504
- allow `.settings-code-editor` to inherit from `.gh-input` - fixes border colours
- change `gh-cm-editor`'s "focused" class from `.focused` to `.focus` so it can inherit `.gh-input` styles
- add lazy loading of CM styles back in `gh-cm-editor` but prevent `lib/codemirror.css` from being compiled into the codemirror styles so that we get the theme colours without causing conflicts with the main editor
refs https://github.com/TryGhost/Ghost/issues/8482
- removes "save on first change" behaviour of the post body
- always trigger a background save when title loses focus if the post is a draft
- renames `updateTitle` action to `saveTitle` action to better describe it's purpose and to avoid confusion with the `updateTitle` task
no issue
- force editor toolbar to a fixed height, previously flexbox behaviour meant that it would squash the space above/below the buttons at smaller screen heights
refs https://github.com/TryGhost/Ghost/issues/8464
- fix padding on user actions button
- match user screen heading to other screens
- match app screen headers to other screens, update form styles
- change header link colour to match non-link colour
- fix team acceptance test
- fix canvas top padding so header elements always align
- reduce header font size
closes https://github.com/TryGhost/Ghost/issues/8480
- removes fullscreen button from toolbar but keeps the "fullscreen" routines so that styling and other behaviour doesn't need to be updated
- side-by-side toggle now toggles fullscreen on/off (previously only toggled fullscreen on)
refs #718, refs https://github.com/TryGhost/Ghost/pull/8305
- meta description preview in the PSM was relying on the `html` field which is no longer queried - see #718 and https://github.com/TryGhost/Ghost/pull/8305
- restores live preview that was in LTS but removed whilst implementing mobiledoc because we had no quick way of rendering mobiledoc->text
- adds a boolean argument to the `formatMarkdown` util that can disable the replacement of `<script>` and `<iframe>` tags so that the inserted text isn't rendered when converting HTML to text
refs https://github.com/TryGhost/Ghost/issues/8275
- ask Ghost for `mobiledoc` and `plaintext`
- Ghost returns `html` by default
- use plaintext for `{{subText}}` for posts overview
no issue
- adds `eslint-plugin-sort-imports-es6-autofix` dependency
- implements ESLint's base `sort-imports` rule but has a distinction in that `import {foo} from 'bar';` is considered `multiple` rather than `single`
- fixes ESLint's autofix behaviour so `eslint --fix` will actually fix the sort order
- updates all unordered import rules by using `eslint --fix`
With the increased number of `import` statements since Ember+ecosystem started moving towards es6 modules I've found it frustrating at times trying to search through randomly ordered import statements. Recently I've been sorting imports manually when I've added new code or touched old code so I thought I'd add an ESLint rule to codify it.
refs https://github.com/TryGhost/Ghost/issues/5422
- handles errors and warnings from returned from the server and improves visual display
- adds a reset so that errors are cleared when leaving the labs screen
- removes the unnecessary "Import failed" alert - we already show the errors on the screen, no point bugging the user even further
no issue
- the synchronous settings service keeps an internal reference to the settings model, when everything in the store is unloaded during an import that reference breaks and will throw errors when accessing areas of the app that read values from it. This change adds an explicit reload of the settings model during import so that later navigation doesn't break.
no issue
- removes transition on `all` properties in favour of an explicit list, fixes the buttons flickering after the modal appears and the outline/text being visible when the modal disappears
- simplifies the liquid-fire transition so that elements being removed at slightly different times doesn't cause flickering when the modal is removed
closesTryGhost/Ghost#8360
- when changing the publish time of an already scheduled post in the publish menu and leaving the menu with clicking outside of the menu, the time wouldn't reset properly and be shown in the PSM. With the usage of an `isClosing` property which is passed to the underlying `gh-publishmenu-scheduling` component, we prevent the changed time from being saved and reset it properly instead.
refs #706
- bumping to `autoprefixer@7.0.1` in #673 caused `cssnano` to fail on production builds
- upgrading to latest autoprefixer didn't result in any wins
- reverting to `autoprefixer@6.7.7` for now, we may need other dependencies to bump their `postcss` support before it can be upgraded
refs TryGhost/Ghost#8455
- ensure `uploadUrls` and `errors` are cleared in `gh-uploader` when new uploads are started
- yield `isUploading` in `gh-uploader` component
- replace image upload modals in settings/general with in-page uploads
closesTryGhost/Ghost#8443
- Fixes a bug where the keyboard shortcut `cmd+s` would cause a `Maximum call stack size` error and not save.
- Wherever there is a `save` button, the keyboard shortcut to save works now.
closes https://github.com/TryGhost/Ghost/issues/8461
- adds toggle spellcheck button to the `gh-markdown-editor` toolbar
- adds custom styles to fake a spellcheck icon
- updates `simplemde` fork
- adds `spellcheck` to the list of toolbar buttons that don't have their `active` class removed based on cursor position
- removes bundled `marked` dependency that we no longer use
closes https://github.com/TryGhost/Ghost/issues/8463
- move generic text input handling into `text-input` mixin so it applies to text inputs and textareas
- adds `autoExpand` property to `gh-textarea` that accepts a selector to watch for resize changes, if the property is set then auto-expanding behaviour is triggered any time the textarea value is changed or when the selector element is resized (this prevents change in textarea width from toggling nav or split screen mode resulting in textarea content being hidden or the textarea being taller than it's contents)
- adds `ember-element-resize-detector` addon to allow watching of element resizes rather than window resizes (this was already included as a sub-dependency via `ember-light-table`->`ember-scrollable`->`ember-element-resize-detector`)
closesTryGhost/Ghost#7134
Overhaul of the user settings page to make it more consistent with other settings panels.
The hardly readable validation for user "Full Name" is redundant as well, as the input field for it now has the same styles as the other input fields.
refs https://github.com/TryGhost/Ghost/issues/8296
- permit Facebook usernames with less than 5 chars
- brands are allowed to have Page names with less than 5 chars (ex: facebook.com/nike)
- current/former employees are allowed to have usernames with less than 5 chars (ex: facebook.com/zuck)
✨ use markdown-it for markdown previews
no issue
- replaces SimpleMDE's default `marked` rendering with `markdown-it`
- add ember-browserify and markdown-it plugins
closesTryGhost/Ghost#8143
- uses new soft limits in validation:
- post title to 255
- meta title (post and tag) to 300
- meta description (post and tag) to 500
no issue
- when entering preview mode (not split-screen preview) the toolbar buttons are now disabled. This is usually built in to SimpleMDE but that wasn't working because we've moved the location of the toolbar in the DOM
- hides the markdown editor when entering preview mode to prevent the markdown code appearing at the bottom of the preview when the markdown length is longer than the preview length
no issue
- adds a hidden file input to the `gh-markdown-editor` component
- when the editor image toolbar button is clicked, capture the current selection (it gets during the file upload), trigger the file dialog then when files are selected initiate the same upload+insert process as drag/drop image uploads
no issue
- fix visible scroll bars were rendered to the right and bottom of the internal editor area in certain browser/OS configurations
- disable the preview button when in split-screen mode as it's not any use there
- exit SimpleMDE preview mode if it's active when entering split-screen mode
no issue
* fix title input padding and placeholder weight
* 🔥 remove unused showdown-ghost dependency
* implement full screen mode via CSS rather than autonav toggle
* implement custom split pane editor preview
- replace SimpleMDE's split pane handling with our own so that we have more control over the element positioning, toggling of our custom fullscreen code, and so that the preview pane can be scrolled separately as per our old editor
* use forked version of simplemde that has the latest CodeMirror compiled
- SimpleMDE hasn't been updated for 11 months and the version of CodeMirror is baked into the SimpleMDE code, to get an up to date version I've forked and re-compiled
- pull in the unminified SimpleMDE source so that it's easier to debug in development, our asset compilation steps will take care of minifying it for production
* fix gh-markdown-editor teardown