Commit Graph

1048 Commits

Author SHA1 Message Date
Kevin Ansfield
350e3d1481 Unsplash integration
closes https://github.com/TryGhost/Ghost/issues/8859, requires https://github.com/TryGhost/Ghost/pull/8895
- adds Unsplash app to app settings
  - enable/disable toggle
  - validation and testing of Unsplash App ID
  - Unsplash App ID field hidden if provided via Ghost config
  - adds `fetchPrivate` method to `config` service to pull config that requires authentication and updates authentication routines to fetch private config
- adds Unsplash buttons to editor toolbar and `{{gh-image-uploader}}`
  - only present when Unsplash app is enabled
  - opens Unsplash image selector when clicked
  - `{{gh-image-uploader}}` has a new `allowUnsplash` attribute to control display of the unsplash button on a per-uploader basis
- adds Unsplash image selector (`{{gh-unsplash}}`)
  - uses new `unsplash` service to handle API requests and maintain state
  - search
  - infinite scroll
  - zoom image
  - insert image
  - download image
- adds `{{gh-scroll-trigger}}` that will fire an event when the component is rendered into or enters the visible screen area via scrolling
- updates `ui` service
  - adds `isFullscreen` property and updates `gh-editor` so that it gets set/unset when toggling editor fullscreen mode
  - adds `hasSideNav` and `isSideNavHidden` properties
- updates `media-queries` service so that it fires an event each time a breakpoint is entered/exited
  - removes the need for observers in certain circumstances
2017-08-15 16:01:12 +01:00
Kevin Ansfield
bb17675602 Move csscomb.json to project root for better editor integration
no issue
- Atom and other editors have csscomb integrations that will look in the project root for configuration
- if you open Ghost-Admin (or Ghost/core/client) as a project then the custom config will be used which can be more convenient than maintaining a global config
2017-08-15 16:01:12 +01:00
Kevin Ansfield
6ae881e918 Remove unused gh-infinite-scroll component and infinite-scroll mixin
no issue
- this component and mixin has been replaced by `ember-infinity`
2017-08-15 16:01:12 +01:00
Kevin Ansfield
9ad5644031 Remove jquery ajax prefilter
no issue
- a jQuery ajax prefilter was used to add our own `Authorization` header to all requests that go through jQuery
- if a request had a different `Authrorization` header (eg, when accessing an 3rd party API) then the prefilter replaced it breaking the request
- it's no longer necessary because all Ghost API requests go through our `ajax` service which adds the necessary headers
2017-08-15 16:01:12 +01:00
Kevin Ansfield
267ce40945 Refactor general UI state into a service
no issue
- moves general UI state control such as menu display, autonav, settings menu, etc into a `ui` service for easier use within components
- no longer required to jump through hoops passing state and actions down from application controller into components
- removes indirect "route" actions in favour of calling actions/methods directly on the `ui` service
2017-08-15 16:01:12 +01:00
Kevin Ansfield
b643d47054 🐛 Fix order of multiple upload results (#825)
no issue
- push upload results into an array at the same index as the passed in files array
2017-08-14 09:35:41 +07:00
Kevin Ansfield
11cbe1abba 💄 Fixed scrollbar on editor title input in Chrome on Windows (#822)
closes https://github.com/TryGhost/Ghost/issues/8866
- add `overflow: hidden` to disable scrollbars on editor title input
2017-08-10 17:52:59 +07:00
Aileen Nowak
dd4fe3a68f Added Twitter & Facebook data override fields to PSM (#814)
refs https://github.com/TryGhost/Ghost/issues/8334, requires https://github.com/TryGhost/Ghost/pull/8827
- added open graph and twitter fields to `Post` model
- added facebook and twitter card pane to PSM
- 💅🏼 Added preview styles for custom FB/Twitter cards
2017-08-03 15:45:14 +04:00
Kevin Ansfield
d469134fb1 improve editor drop target colours 2017-08-03 15:27:59 +04:00
Aileen Nowak
6945c942d0 🎨 Improved theme validation messages (#812)
closes TryGhost/Ghost#8530

- Changed the wording for activation and uploading a theme to separate between error and warnings in the title and the body text for the modal
- Changed the wording of "Activated successful with warnings/errors" to "Activation successful with (warnings || errors)"
2017-08-02 14:30:47 +04:00
Kevin Ansfield
b89a0d0a5e ️ Added per-post code injection fields to PSM (#811)
- Remove gh-tab* components
    - The PSM was the only place where the `gh-tabs-manager`, `gh-tab`, and `gh-tab-pane` components were being used. These were very old components and did not work well with newer Ember versions and best practices.
    - 🔥 remove `gh-tab*` components
    - 💄 fix indents in `gh-post-settings-menu` template
    - 🎨 add support for named subviews ready for additional PSM panes

- Added per-post code injection fields to PSM
    - add "Code Injection" pane to the PSM
    - implement `codeinjectionHead` and `codeinjectionFoot`  attributes on `Post` model and save values from PSM
    - use CodeMirror for the PSM code injection fields
2017-08-02 13:32:51 +04:00
Kevin Ansfield
fb930b0698 ️ Add "Excerpt" field to post settings menu (#810)
refs TryGhost/Ghost#8793

- add `customExcerpt` attr to Post model + reorder attrs to be alphabetical
- add "Excerpt" field to PSM
- add validation for `customExcerpt` length (max 300 chars)
- add style adjustments for custom excerpt UI
2017-08-01 12:24:46 +04:00
Kevin Ansfield
68d2164672 🐛 fixed active users list not showing more than 20 users (#806)
closes https://github.com/TryGhost/Ghost/issues/8773
- swap old custom `PaginationMixin` for `ember-infinity`
2017-07-31 17:10:52 +04:00
John O'Nolan
86759067ea 🎨 Reorder fields in blog setup form (#808)
closes https://github.com/TryGhost/Ghost/issues/8622 by inadvertent knock-on effect.

People were having trouble with automatically entering password verification in blog title field. This re-orders the form to a more "normal" flow where password field is the last item on the page, so no risk of double-typing it.
2017-07-31 17:06:25 +04:00
Aileen Nowak
7eca803d00 🙅 Disable image upload save btn when uploading (#805)
closes TryGhost/#8724

Adds a `isUploading` action that disables the `save` button for `upload-image` component until the upload process is finished.
2017-07-31 13:44:26 +04:00
Kevin Ansfield
c489f4474b ⬆️ bump core ember dependencies (#804)
no issue

- bump core `ember`, `ember-data` and `ember-cli` related dependencies
- remove deprecated `MODEL_FACTORY_INJECTIONS` flag
- update files to better match `ember-cli new` output for easier diffs during upgrades
2017-07-31 13:38:46 +04:00
John O'Nolan
63df5ffb9b Resolve nightshift visual bugs
Closes https://github.com/TryGhost/Ghost/issues/8731, closes https://github.com/TryGhost/Ghost/issues/8742

- Visual bugs resolved
- Slack test message converted from alert to notiftication
- Slack test message notification copy update
- Increased size for notifications
2017-07-31 11:49:49 +04:00
Kevin Ansfield
7d5c0552fe ️ hemingway editor mode (disable backspace) (#803)
no issue
- adds Hemmingway Mode toggle to the editor toolbar that disables
backspace
- shortcut is <kbd>Ctrl+Alt+H</kbd>
2017-07-28 17:21:09 +04:00
Kevin Ansfield
19174c3b1a 🎨 fix download count position on setup/one (#801)
no issue
- default component tag of `<div>` forced the download count to appear
on it's own line, setting `tagName: ''` returns the desired inline
behaviour
2017-07-26 13:03:09 +04:00
Kevin Ansfield
3656297843 🐛 fix duplicate posts bug, more intelligent autosave when transitioning (#800)
no issue
- fixes bug where multiple posts were created starting with one char and growing until the new->edit transition completed, e.g. posts with content such as `a`, `ab`, `abcd` were created in quick succession
  - moves old `_savePromise` body into the `save` task
  - call the `save` task instead of the old `_savePromise` so that concurrency is handled properly
- fixes odd behaviour with the "Are you sure you want to leave?" modal appearing too often - it's now aware of on-going or scheduled saves and will wait for those to complete before transitioning
  - move all transition abort/save/retry handling into `toggleLeaveEditorModal` method
  - check for a running save, wait for it to finish then retry the transition
  - check for a scheduled autosave, cancel it if present and perform an immediate autosave then retry the transition
  - don't attempt new->edit transition on successful save of new post if we're already waiting for a different transition
  - once the new->edit transition has completed, if the post body content has changed schedule an autosave manually so that the user doesn't need to type something again to save what they assume is already saved
  - remove debounced slug generation/save on type of title field in favour of generation and save on focus out which plays a lot nicer with the new transition autosave behaviour
2017-07-22 10:25:00 -04:00
Kevin Ansfield
5a47f2ae4b 🐛 fix loss of editor focus on new post autosave (#798)
refs TryGhost/Ghost#8723
- #795 contained a regression where the body focus was lost during the new->edit transition because at that point `model.isNew` is false
- returns `shouldFocusEditor` code that was removed in #768 (it was assumed the body should _always_ have focus in that PR)
- instant-save if body is edited and the post is new - fixes issue where you could keep typing without any save when body had autofocus
- don't show preview link for new posts - fixes issue where it links directly to the admin endpoint so it would force a refresh
2017-07-21 19:11:24 -04:00
Kevin Ansfield
fb12237f62 🐛 fix filter dropdown issues
closes https://github.com/TryGhost/Ghost/issues/8729, closes https://github.com/TryGhost/Ghost/issues/8728
- remove the duplicated `max-height` rules for different parts of the power select dropdowns - they were interacting with each other and causing a large part of the lists to be unreachable
- bump the `bufferSize` so that enough dropdown items are rendered to fill the dropdown list
- filter the temporary tags that are created when using the PSM tags input so duplicates aren't visible in the tags dropdown filter
2017-07-21 19:01:54 -04:00
Kevin Ansfield
0f35d06942 🎨 show "locked" badge in team list (#794)
refs https://github.com/TryGhost/Ghost/issues/8652
2017-07-21 22:21:27 +01:00
Kevin Ansfield
9eda60a283 🎨 update markdown help modal shortcuts
no issue
- match shortcuts to the new editor shortcuts
- add shortcut for ordered lists
2017-07-21 17:01:04 -04:00
Kevin Ansfield
cd805608f1 🎨 fix typo in welcome tour (#797)
closes https://github.com/TryGhost/Ghost/issues/8730
- "and 'about' or 'contact' page" -> "an 'about' or 'contact' page"
2017-07-21 17:50:27 +04:00
Kevin Ansfield
12e251df8e 🎨 only focus editor body for new posts (#795)
closes https://github.com/TryGhost/Ghost/issues/8718

- only give focus to editor body when starting a new post
- update the title and body placeholders
2017-07-20 17:41:30 +02:00
John O'Nolan
2ef4472523 Minor colour update for nightshift
See https://github.com/TryGhost/Ghost/issues/8715
2017-07-20 18:07:00 +04:00
Kevin Ansfield
fe1c70f3c7 🎨 use blue instead of yellow for warning alerts (#792)
closes https://github.com/TryGhost/Ghost/issues/8680
2017-07-20 16:00:41 +02:00
Kevin Ansfield
7a5d132e1a 🎨 fix about logo colours in nightshift (#793)
closes https://github.com/TryGhost/Ghost/issues/8715
- use SVG logo, invert in nightshift
- fix colour of `>` in screen titles in nightshift
2017-07-20 17:59:45 +04:00
Kevin Ansfield
ec2a257443 🐛 fix "failed" button flash on password reset (#791)
closes https://github.com/TryGhost/Ghost/issues/8688
- `reset` task wasn't returning a truthy value on success so `gh-task-button` flashed the "retry" state before the transition happened
2017-07-20 19:12:33 +07:00
Kevin Ansfield
09bc15e980 🐛 fix broken editor at mobile sizes (#790)
closes https://github.com/TryGhost/Ghost/issues/8657
- add checks for the toolbar being present before attempting to set classes on the buttons
2017-07-20 18:37:18 +07:00
Kevin Ansfield
84b2824f95 🐛 don't show mobile nav bar when not logged in (#789)
closes https://github.com/TryGhost/Ghost/issues/8625
- add CSS rules for the non-authed pages to remove the mobile nav bar
2017-07-20 18:22:34 +07:00
Kevin Ansfield
783d9fa0a3 🎨 fix wording and capitalisation on empty stories screen (#787)
closes https://github.com/TryGhost/Ghost/issues/8689
- remove titlecase and switch `posts` to `stories`
2017-07-20 18:14:53 +07:00
Kevin Ansfield
9237e06493 🎨 fix missing lock icons on password reset form (#782)
closes https://github.com/TryGhost/Ghost/issues/8688
- match input fields HTML to other icon inputs
2017-07-20 18:06:02 +07:00
Kevin Ansfield
671d71cae7 🐛 fix editor fenced code block handling (#781)
closes https://github.com/TryGhost/Ghost/issues/8695
- non-spellchecker mode should be "gfm" not "markdown" so that fenced
code blocks are displayed correctly and other markdown behaviour better
matches the preview/rendering
2017-07-20 17:59:24 +07:00
Aileen Nowak
c478564513 🎨 Publish menu wording and saving states improvements (#788)
closes TryGhost/Ghost#8696

- Changes the `gh-save-button` component to allow a custom `runningText` which would be rendered in the button when the current task is running.
- Adds a `runningText` CP to `gh-publishmenu` component, which will render (depending of post status and desired save type) 'Unpublishing', 'Publishing', 'Scheduling', 'Updating', 'Unpublishing', 'Rescheduling', and 'Unscheduling'.
2017-07-20 11:46:31 +01:00
Aileen Nowak
2cbb181866 💄 Theme upload modal style improvements (#784)
no issue

With GScan sending error details now, the modal was a bit overloaded.

This PR adds a toggle for each error rule which - when clicked - shows the details and the affected files.
2017-07-20 11:30:45 +01:00
Kevin Ansfield
a99ecf4818 🐛 fix guard for inviting owner in setup/three (#786)
refs https://github.com/TryGhost/Ghost/issues/8692

- fixes the guard on setup/three against inviting the owner user set up
on setup/two (we were sending invites for every e-mail in the list
rather than only valid e-mails)
- adds a check to see if we get any invalid errors from the server and
will show those separately to the `x emails failed to send` alert
2017-07-20 12:08:34 +02:00
Kevin Ansfield
7e595d4be7 🐛 fix double-click on post to open editor (#780)
closes https://github.com/TryGhost/Ghost/issues/8675
- move `gh-posts-list-item` to closure actions
- add missing `openEditor` action in posts controller
2017-07-13 16:55:13 +07:00
Kevin Ansfield
6d11515f81 🐛 empty posts shouldn't be publishable (#776)
closes https://github.com/TryGhost/Ghost/issues/8501

- don't show publish menu for new posts - the publishmenu options don't make much sense for a post that hasn't been saved yet
- show post status as "new" when a post is unsaved rather than "draft"
2017-07-10 17:24:21 +02:00
Kevin Ansfield
a0af248df4 🎨 Focus editor content area by default (#768)
closes TryGhost/Ghost#8525

- always give focus to the editor content area by default when loading the editor
- allow content autosave to work for new posts (it was previously turned off for new posts)
- move transition-on-save behaviour from editor/new controller into the controller mixin's save routine
- cancel background autosave when "are you sure you want to leave?" modal is shown as it can cause the "leave" option to fail because it attempts to delete the post record that can be in flight (plus if we're saving anyway it doesn't make much sense to ask the user  🙈) - this is quite an edge-case as it will only happen if the user makes a content change to a draft post then tries to leave the screen within 3 seconds
- change the editor placeholder text
- wait for any save task to finish before exiting the new post route (fixes infinite loop and popup of "are you sure you want to leave?" modal that is then closed automatically straight away
- add a guard to the `gh-post-settings-menu` component so that if the authors query takes a while we don't end up trying to set a value when the component has already been removed
2017-07-10 17:09:50 +02:00
Kevin Ansfield
1596721468 🐛 fix PSM throbber bugs (#777)
closes https://github.com/TryGhost/Ghost/issues/8611
- fix positioning of "static page" throbber
- fix PSM throbbers re-appearing after PSM close/open (need to use `pushObject` instead of `push` so that it's KVO compliant and the `_activeThrobbers` CP is updated)
- fix order of `willDestroyElement` so that we don't attempt to use `get` after the component is destroyed
- fix issue in Chrome that was preventing the Meta Data link from sliding the PSM panels
2017-07-10 19:15:20 +07:00
Kevin Ansfield
ad358375b8 🐛 fix enter key not working in text inputs/areas (#771)
closes https://github.com/TryGhost/Ghost/issues/8588, closes https://github.com/TryGhost/Ghost/issues/8639
- check that we have an action assigned to keyEvent codes before attempting to prevent the default behaviour
- no tests because browsers don't trigger form submissions in response to JS key events as a security measure
2017-07-10 19:09:11 +07:00
Kevin Ansfield
1d3a9a692d 🎨 fix non-square icon sizes (#778)
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.
2017-07-10 13:54:24 +02:00
Kevin Ansfield
625cc3fe92 🎨 fix case inconsistency in team labels (#774)
closes https://github.com/TryGhost/Ghost/issues/8661
2017-07-10 13:36:11 +02:00
Kevin Ansfield
d37f68adcb 🐛 fix autosave+transition on title blur with empty title (#767)
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
2017-07-10 18:33:05 +07:00
John O'Nolan
9738ecc9dd Minor style fixes 2017-07-10 11:20:56 +01:00
Kevin Ansfield
0853b57244 🐛 prevent session sync issues with multiple tabs/refreshes (#772)
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.
2017-07-10 12:18:19 +02:00
Katharina Irrgang
034f74a560 Merge pull request #773 from kevinansfield/soo-many-tags
🚀 supercharge tags performance
2017-07-09 14:31:06 +02:00
Kevin Ansfield
d65666f90b 🚀 supercharge tags performance
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 🎉
2017-07-07 17:53:08 +01:00