fixes#4572
- Remove both inline and bottom footnotes from excerpt output before stripping the remaining HTML
- No more red errors, black text or bold links in codemirror, as codemirror gets confused by footnote syntax. This is a step towards the new editor which has no syntax highlighting in the editor
Refs #4578
- Match label "for" attributes with ids from the inputs they're
labeling.
- Remove extra promise generation from ghost header and footer helpers.
refs #1993
- adds ctrl/cmd+s for save
- adds config flag
- adds icon on settings page, puts items in the right order
- sorts out permissions for all settings pages with consistent configuration
fixes#4555
- There's no easy way to declare an XSL with the node xml module, so I
needed to move the declarations to both be strings
- Ideally the code to serve the XSL would also be inside the sitemap
module, but I think we need to refactor a bit to get there easily
- Added the XSL from #4559, with minor amends to make the tables and urls
display correctly
closes#4498
- remove toJSON code which returns only IDs from objects
- don't auto-include tags & fields in post responses
- don't auto-include roles in user responses
- fix #allthethings that made assumptions about the auto-includes, or otherwise were only working because of the auto-include
Closes#4446
- Mobile Safari doesn’t support the HTML5 `autofocus` attribute, but
also doesn’t play nice with jQuery’s `focus()` and `select()` methods.
- Mobile Safari wouldn’t automatically select the input field anyway,
so this PR simply removes the “jumping input fields” error without
changing any actual behaviour.
- Disallowing the programmatic selection of input fields (with select,
focus or similar methods) is apparently considered a feature rather
than a bug (ref http://bugs.jquery.com/ticket/12789)
- `autofocus` attribute is now only set on non-iOS devices
Closes#4557
- The underlying issue is that the PSM is already loaded when Ember
routes from an existing post to a new post. Instead of resetting the
‘Published Date’ value manually (with jQuery), I’m using Ember’s
computed property setter to ‘refresh’ the cache for that property. I
believe that this Ember solution is better than manually going in and
resetting it with jQuery.
closes#4534
- Adds new Labs route
- Wires route in settings page
- Move and rename debug templates and logic to labs
- Redirect /debug to settings/labs
Closes#4379
- Adjusts the `.viewport` `z-index` propetty to allow notificatons to sit over the nav bar
Looks like a weird fix, but inheritence of z-index was the issue here.
Refs #4543
- Check EditorController.isDirty before displaying the
authorization failed modal dialog. This prevents the modal
appearing immediately upon entering the editor in cases where
auth has failed prior to opening the editor.
Refs #4543
- Alway return model out of save handler so sub-classes which
call this._super() on save have a model on success and failure.
- Always return resolved promise out of post slug generator.
- Test the errors object in the error notification helper to avoid
throwing an unhandled exception and silently failing.
- Consider a post model "dirty" if it is in an error state.
Closes#623
- Add basic init and eventing scaffold
- Add sitemap-index.xml generation
- Broke out generators to individual files, added request handler
- Add page, author and tag xml files; add index mapping
- Add SiteMapManager unit tests
- Add Generators tests
- Cache invalidation headers for sitemap-*.xml
- Redirect sitemap.xml to index and rename to sitemap-index
- Handle page convert and publish/draft changes
- Add very basic functional test for route existence
- Add cache headers to sitemap routes
closes#4485
- removes data attributes used on body in default.hbs
- introduces new way to generate configuration through meta tags
- config initializer consumes configurations from the meta tags using parser
- moves blog_title helper/value to be a property in a configuration api
No issue
- Consolidate extension of Ember.Router.
- Remove unneeded local jshint flags and '_' as a global.
- Cleanup client README.md.
- Fix error message.
No Issue
- Use Ghost version value that is already loaded instead of
reading package.json from the filesystem and parsing it on
every call into the configuration API.
- Every route can set a title token that is combined with the blog’s
title, resulting in titles like ‘Content - Test Blog’.
- Subroutes are supported (‘Settings - General - Test Blog’)
- The blog’s name is applied to and taken from the `config` object to
spare Ember a REST call via `store.find(‘settings’)`.
- Tests have been changed to test for the new titles.
- The initially proposed solution
(https://github.com/paddle8/ember-document-title) doesn’t play nice
with EAK, which is why I went with this solution
(https://gist.github.com/machty/8413411) by Ember.JS core dev @Machty.
no issue
- changes the content type for the RSS feeds from text/xml to
application/rss+xml
- changes the link rel=alternate tag to use an absolute URL for the feed
in the blog meta data
Closes#4431
- The PSM does not reset on a transition from editor (existing post) to
editor (new post). If the existing post had a cover image, the image
uploader would not be reset during the transition and appear slightly
broken in the editor for the new post.
- In this PR: A reference to the uploader is saved, allowing the route
for editor/new to instruct the PSM controller to have the uploader
reset.
Ref #4248
- Added tags settings menu
- Added basic new, edit, delete, and save actions
- Show actionable edit buttons dynamically based on tag state
- Infinite scroll
- Closing the tag settings menu rollbacks your changes
- Removed not-yet-implementable code
No Issue
- Add local store lookup back to edit route.
- Prevent entry into route when an author is not the owner of a post
even if model is passed in.
- Clean up references to pagination as there's no pagination going on.
No Issue
- Fix exception being thrown when updateConfigTheme called before
settingsCache fully populated.
- Remove unnecessary check in a conditional in the migration command
builder.
Base64 encoding causes some issues when the token is URL encoded
as the = symbol is not a valid URL character. We replace any =
symbols with a - as this is valid in a URL, but is guaranteed
not to appear in a base64 string. This fix ensures that Ghost
password resets work with mail providers such as Mailgun that
add their own tracking redirects
closes#3872 (for real this time)
References #4248
- Updates the markup & classes for the tag management settings menu, as they've fallen behind now we've renamed the 'right-outlet' to 'settings-menu'
Closes#3998
- Scroll the active post into view on page load
- If the active post changes and the newly active post is offscreen, scroll it into the middle of the screen
No Issue
- Strip sub-directory from image paths before passing to
config.createUrl. Since images are stored with the sub-directory
and createUrl builds a URL with the sub-directory the result
would be a URL that contains the sub-directory twice.
Closes#4400
- Added focusCursorAtEnd property to codemirror component, to set the cursor at document end on load. Used for posts that have been edited
- centralized codemirror init code in component
Closes#4378. Closes#4455.
- Trim whitespace from tag names on entry.
- Prevent duplicate tags in suggestion list.
- Fix unhandled exception that happens when backspace is pressed in
an empty tags input box.
closes#4414
- adds `ctrl/cmd+s` shortcuts to `settings/general` screen
- adds `ctrl/cmd+s` shortcuts to `settings/user/xx` screen
- extracts `ctrlOrCmd` variable to separate module for reuse
Continues on from #4401
- Reformats the Sass to match our new style (property order, comments, & white space)
- Changes the modal container to a class from an ID (and adjust tests)
No issue
According to [caniuse](http://caniuse.com/#feat=woff), all the browsers we support (last 2 versions of major browsers) support the `.woff` font format. It's actually what pretty much all browsers will serve if its offered anyway.
This PR removes the .eot and .ttf font formats.
SVG remains as its the base file we use to add new icons & convert into other formats. It is not referenced anywhere.
Closes#4411
- Previously, saving the user’s slug would lead to the slug value being
‘stuck’ on that saved value, even if one navigated to a different
user’s profile settings.
Removes that hash appended to the URL when clicking Meta Data in post settings.
Closes#4386
When clicking 'Meta Data' the click event appends a # to the URL. I replaced the a with a button element so that won't happen anymore. The button has a type attribute because it will try and submit the form without it. Added text-align: left to the navlist button because the button centers it's content by default.
closes#4260
- Adds "tags" route inside of the settings routes.
- Adds this route to router.js
- Links the route from the settings.hbs template
- Adds demo tags html in tag.hbs template
- Adds flag for tagsUI
Closes#4369
- Renamed `editor-route-base` -> `editor-base-route` to bring it in alignment with the view and controller mixins
- Consolidated editor route code into editor-base-route
- Removed `serialize` from EditorEditRoute, as it reimplemented the ember default
closes#4253
- checked for the CodeMirror-focused class on the CodeMirror div
- used length to determine whether CodeMirror-focused has been added
- determines whether the editor has been focused on
Closes#4277
- Increase the wait time for forked processes to spin up.
- If we give up on waiting for a forked process, send it a
kill signal so if it comes alive later it doesn't sit in the
background forever.
- Fail fast if test setup fails instead of waiting for the timeout.
Refs #4277
- Switch from the built-in http module to request and set
a timeout of 2 seconds on gravatar lookup requests.
- Move request package from devDependencies to dependencies.
Closes#4316
- Ember@1.8.0.
- Ember-Data@1.0.0-beta.11.
- Change templates to use new Ember.Select syntax and other minor
cleanup.
- Adjust functional tests.
For example, outlook 2013 plus would not interpert the following html
(encoded via quoted-printable encoding):
<a href=3D=22http://engineering=
.como.com/ghost/signup/MTQxNTcwNzM5MTYwN3x5dXJ5QG5peC5jby5pbHx3NVBmUUN4RGZr=
cGhKc3FPOElybXNZNWtzR0FMTU9tRFI5UlNyRWQ4SGJZPQ=3D=3D/=22 style=3D=22color:
=
The workournd forces node-mailer to user base64, which outlook understands
well.
Issue #806
- Modify sanitize to check for duplicate posts and tags
- Update posts_tags when referencing removed duplicate tags
- Return both data and problems from importData
- Add tests for duplicate posts and tags with fixtures
Closes#3940
- Pushing left/right changes the "focus" of the posts screen to the list / content, respectively
- Once one of these has been focused, up/down keyboards work on that section in particular
- By default, the post list is selected
- Using the keyboard to focus one of the two makes it go "poof" to let you know you changed stuff
No Issue
- Make helper behave as stated in description when variable
number of arguments are passed in.
- Handle leading and trailing slashes when creating output
url partial.
Closes#4340
Fixes a UI glitch where the vertical parts of a box shadow would show.
This fix changes those box shadows for 1 radial gradient, where only 5px of it is shown. No more vertical shadows.
Closes#3858
- urlPathForPost is now aware of the author’s slug, allowing for the
permalink setting to use :author
- Frontend controller only renders posts that have the specified
author, if one is given
- Extensive tests included
Refs #4323
- Remove any titleScratch observers that may be hanging
around on the post-settings-menu controller from previous posts.
- Change logic around when to regenerate slugs on posts that are
"(Untitled)" so that slug generation continues after slug no
longer resembles "untitled."
closes#4328
- Escapes metaTitle, metaDescription, blog url, blog title, tags
- Updates tests
- Adds test for metaTitle and metaDescription with double quotes
* Adds `bind`, `isFinite`, and `isNumber` utility functions from lodash.
* Use new util funtions instead of lodash throughout the codebase.
* Remove lodash from vendor builds.
Closes#4105
- Turns the tag icon white when input is focused.
- Focuses on the tag inout after deleting a tag.
Credit to @novaugust for a PR to this which is rebased into one single commit
Refs #4307 Refs #4259
- Make sure that a slug has been generated prior to the first
save that occurs on a post.
- Wait on in-flight slug generation requests before saving.
no issue
- Some of the tests were duplicated and all of these tests are faster and easier to do with super test as we aren't testing interactions
- Introduced a new test util to toggle permalinks which allows us to test the different structures
- Using cheerio in route tests to test the HTML / XML output is well formed
issue #4305, issue #4259, issue #1413
- change new->edit transitionToRoute to be replaceRoute
- auto focus in the editor on transition to the edit route
- change the one-time autosave to happen on codemirror focusin instead of title focusout
- re-add removed tests, and reorder broken test
Refs #4259
- Auto-save new post when title loses focus.
- If a post has '(Untitled)' for a title, regenerate slugs
on all title changes--same behavior as a new post that does
not yet have a slug.
- Adjust some functional tests to handle the automatic transition
from editor/new to editor/editor and the URL changes that go
along with it.
closes#3900
- Adds twitter cards to ghost head helper
- Adds schema json information
- Adds test with null values for post image and cover image
- Adds test for privacy flag
- Adds test for the case of no tags
- Updates test to check for twitter card and schema data
- Updates privacy.md
- Fixes issue with image urls that are linked by url rather than uploaded
No issue
Safari (iOS 8 & OS X Yosemite) throws a massive hissy fit about `console.error` and goes on to break all the things.
This PR simply removes it.
no issue
- Split theme helpers into individual files for each
- Do the same for tests
- Have utils to share some things between them
- Move assetHash onto config
ref #4257
- This is a follow on from #4257 where I updated the codestyle.
- We were outputting escaped single quotes when double quotes would be much nicer.
- Changes the HTML output from our markdown conversion (non-breaking change)
- Updated tests to match the new output
Ref #1413
- If the user stops typing for 5 seconds, a "typingPause" action is sent from the GhCodemirrorComponent
- Editor-base-controller ties the "typingPause" action to its "autosave"
- If a post is being saved and does not have a title, the title is set to "(Untitled)"
- Cleanup editor base controller property dependencies and code
Closes#4208
- Removes `min-width` & `max-width` from `.publish-bar-actions`
- Uses flexbox to correctly handle dynamic size (due to font size and text content of button)
ref #4243
- Removing /lib/ from the list of things which aren't linted, as this is
all custom code
- Fixing up the two files to pass linting, erring on the side of caution
with disabling regexp rules vs fixing regexes!
closes#4247
- added scope to every shortcut, the scope of shortcut is default to
'default'
- add shortcut `enter` to modal which confirm the modal
- shortcut `enter` and `esc` now have scope 'modal'
- when lunch a modal, scope is switching to 'modal', and set back to
'default' when close
- shortcut `enter` now confirm the dialog without conflicting with route
shortcuts
issue #3900
- uses isPrivacyDisabled helper to see if useStructuredData has been disabled in config.js
- adds an array of promises to deal with asynchronous data
- resolves asynchronous data then adds open graph tags after canonical link
- featured image and tags are only added if present
- open graph tags only added on post and page
- adds unit test to check correct data is returned
- updates other unit tests to reflect changes
Closes#4246
- Removed the input wrapper background colour
- Moved `:focus` styles to one element, so its not defined separate for each page
- Removed unnecessary MQ for body background colour (it changed nothing)
Closes#4196
- Clear confidential info on leaving reset route
- Remove nested password access, because gross
- Also cleaned up some .then(f, h) to .then(f).catch(h) in setup controller
Closes#4186, Closes#4190, Closes#4150
- Alters markup to allow for correct use of `-webkit-overflow-scrolling: touch;`
- Updates the debug page to use the same markup as the rest of the settings page
- Solve floating tag bar issue by making it absolute, not fixed
Closes#4225
- If a theme is symlinked in the themes directory, follow
the symlink so that the theme object is populated correctly.
- Only do the fallback loading of theme data in the validations
module if it doesn't exist in config.
closes#4157
- adds cache-control header back to api routes
- moves cache rules object into testUtils
- adds cache-control header test to every existing API test
closes#3019
* Remove preexisting `ctrl+h` keymap.
* Add logic to cycle the header level.
* Loops around after h3.
* Sets cursor position to end of heading
* Set initial level to h2.
* Remove `ctrl+alt+${NUM}` keymaps (as they do not work
internationally).
Closes#4123, closes#4114, references #4105
- Rewrite to use flexbox for über mobile goodness
- Fixes tag suggestions (using the new dropdown style)
- Fixes vertical alignment
closes#4124
- incremented values for client-side validation for Meta title and Meta description
- changed error messages to display the maximum number of characters.
Closes#4018
* cleaned up `mail_spec.js`
* deprecated `mail.fromaddress`
* implemented 'Blog title <email@address.com>' format with fallbacks
* added tests to deprecation and from address, made existing ones more robust
* moved domain intuit into its own module: `GhostMailer.getDomain()`
Closes#4082
* reformatted code to allow for traversal
* deeper config items should be denoted like this: `object.object.object.property`.
* added tests for testing the deprecation warnings
Refs #3864
- Make sure that require() is able to resolve all dependencies
listed in package.json. If packages are missing halt the
bootstrap process and display an error and help message for user.
- Check that contentPath and its subdirectories exist with the correct
permissions.
- Check sqlite3 database file is set for read/write access.
Closes#4088
- Fix Flexbox issue with the user list
- Fix positioning issue with the mobile menu toggle icon
- Make the mobile settings nav use absolute positioning (as fixed elements don't move inside a `transform: translate(...);` parent
Ref #3940
- add `j`/`k` for navigating posts down / up
- `c` for opening a new post
- `o` to open the selected post
- update keymaster dep to allow for multiple key unbinds (`key.unbind('up, j')`)
Closes#4050
- Full-width invite user modal button
- `<select>` can be focused in Firefox
- Increase size of background images for avatars
- Add `-moz-osx-font-smoothing: grayscale;` to icons
Refs #3876
- Prevent signup page from flashing when an invalid invitation
token is used.
- Clear sensitive information from signup controller.
- Make isInvitation API behavior consistent with other auth
related APIs.
Closes#3565
- Added server API isInvitation (analog to isSetup), checking if an
invitation exists for a given email address.
- If the invitation is no longer valid (or didn’t exist in the first
place), the user is redirected and an error notification is shown.
ref #3795
- express updated to 4.9.2
- express 4.9.0 introduced res.sendStatus() to replace res.status().end()
- we no longer need express-session, connect or cookie-parser
- body-parser, busboy, compression, express-hbs, morgan, all bumped to
latest versions as well - there doesn't seem to be any breaking changes
refs #3795
- updates all dev dependencies to their latest version number
- jshint now complains about the Promise global, removed it from predef in
lieu of a better solution
- changes in should require minor updates to the tests
- tests are passing and all major grunt commands appear to work: clean,
init, prod, validate and release
Closes#4032
- Created "mobile" views: `parent-view`, `content-view` and `index-view`
- `mobile/parent-view` has three callbacks for managing layout, and a mediaQuery listener to keep in sync with the user
- content-view and index-view use their parent-views callbacks to bring themselves into and out of the viewport as appropriate
- fixed media queries for post content list from 800px to 900px
- Created `mobile-index-route` to intelligently transition to a new route on desktops (used by both PostsIndexRoute and SettingsIndexRoute)
- Extract mobile interactions from settings views to new mobile utility views
- `js-` prefixed settings view transitions
- removed unused openEditor action from PostsRoute
- removed unused mobile util "responsiveAction"
no issue
- Whilst testing the mail PR #3915 I noticed the first run messages aren't
appearing because the dbHash is getting pre-populated, but there doesn't
appear to be a reason why this is necessary
closes#3983
- removed naive regex implementation
- added cheerio to project dependencies
- used cheerio to parse RSS content
- use attribute getter/setter to replace href/src attribute urls with the resolved version
closes#3241
- in config.js, the `privacy` attribute holds all privacy-related flags
- `privacy.userTinfoil: true` disables everything (equivalent to setting all flags to false)
- added helper function to core/server/config/index.js to checking privacy flags
- added helper function to core/server/config/index.js to show warning about deprecated items
addresses #2852
- Moves storage modules to use prototypes and to create prototypes
that inherit from the base storage ctor.
- Makes storage/base conform to an all Promise interface.
No issue
- Changes the class used by the transparent div used to close the PSM
Without this change, when in the editor and the nav is open, the transparent div here is above the div the nav is looking for. So, the div for the PSM is clicked, rather than the nav div.
References #3810
- Re-adds the icons for each item of the settings nav and related styles
I've opted to go with adding `.icon-users` classes instead of setting them in the Sass.
Closes#3950
- Fixed up event attachment and removal in a few mixins
- Renamed content-list-content-view to something more understandable
- simplify transition from posts.index to posts.post
closes#3758
- new API method to delete access and refresh token
- use new ember-simple-auth config to revoke tokens on logout
- new method to delete tokens by .. token
References #3810, #3944
- Fixes several small visual bugs with the user settings page
- Changes `.settings-subview-header` to use a clearfix instead of `overflow: hidden;` (fixing style issues in #3944)
Closes#1538
* rips out sendmail
* adds direct
* updates nodemailer to 0.7.1
* changes unit tests for mail
* changed integration tests for mail
* adds mail api tests
Closes#3955
- Change titleScratch from being bound to the title to being
set when entering the editor so it is not overwritten on a
model refresh.
- Ensure that the "unsaved content" dialog is shown when there are
changes to the "scratch" fields after a post-settings-menu change.
- Add tests to prevent regression.