diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index ee686d5ce7..a1d2bb4a19 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -18,8 +18,8 @@ If you've **got some code** ✨ you want to [pull request](https://docs.ghost.or
*Quick Links:*
- [forum](https://forum.ghost.org)
- [user documentation](https://help.ghost.org)
-- [themes documentation](https://themes.ghost.org)
-- [api documentation](https://api.ghost.org)
+- [themes documentation](https://themes.ghost.org/v1.23.0/)
+- [api documentation](https://api.ghost.org/v1.22.0/)
- [self-hoster guide](https://docs.ghost.org/v1/)
- [community guidelines](https://ghost.org/conduct/)
- [dev blog](https://blog.ghost.org)
diff --git a/.github/ISSUE_TEMPLATE/--anything-else.md b/.github/ISSUE_TEMPLATE/--anything-else.md
index d6926f4ff7..d8ab44ef47 100644
--- a/.github/ISSUE_TEMPLATE/--anything-else.md
+++ b/.github/ISSUE_TEMPLATE/--anything-else.md
@@ -14,8 +14,8 @@ For usage and support questions, or ideas & feature requests please check out [o
Alternatively, check out these resources below. Thanks! 😁.
- [Forum Support](https://forum.ghost.org/c/help)
-- [Theme Docs](http://themes.ghost.org/v1/)
-- [API Docs](https://api.ghost.org/)
+- [Theme Docs](http://themes.ghost.org/v1.23.0/)
+- [API Docs](https://api.ghost.org/v1.22.0/)
- [Ideas](https://forum.ghost.org/c/Ideas)
- [Contributing Guide](https://docs.ghost.org/v1/docs/contributing)
-- [Self-hoster Docs](http://docs.ghost.org/v1/)
+- [Self-hoster Docs](https://docs.ghost.org/v1/)
diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md
index 06ec3074b1..173959f359 100644
--- a/.github/SUPPORT.md
+++ b/.github/SUPPORT.md
@@ -7,7 +7,7 @@ Please **_do not_** raise an issue on GitHub.
We have a **help** category in our **[forum](https://forum.ghost.org/)** where you can get quick answers,
help with debugging weird issues, and general help with any aspect of Ghost. There's also an **ideas** category for feature requests.
-Our extensive **documentation** can be found at https://docs.ghost.org.
+Our extensive **documentation** can be found at https://docs.ghost.org/v1/.
Please go to https://forum.ghost.org and signup to join our community.
You can create a new account, or signup using Google, Twitter or Facebook.
diff --git a/PRIVACY.md b/PRIVACY.md
index db97de7b88..a1f0dd9a9f 100644
--- a/PRIVACY.md
+++ b/PRIVACY.md
@@ -2,7 +2,7 @@
This is a plain English summary of all of the components within Ghost which may affect your privacy in some way. Please keep in mind that if you use third party Themes or Apps with Ghost, there may be additional things not listed here.
-Each of the items listed in this document can be disabled via Ghost's `config.[env].json` file. Check out the [configuration guide](https://docs.ghost.org/docs/config#section-privacy) for details.
+Each of the items listed in this document can be disabled via Ghost's `config.[env].json` file. Check out the [configuration guide](https://docs.ghost.org/v1/docs/config#section-privacy) for details.
## Official Services
diff --git a/README.md b/README.md
index ca2e651c18..8c4fcc789a 100644
--- a/README.md
+++ b/README.md
@@ -7,8 +7,8 @@ The project is maintained by a non-profit organisation called the **Ghost Founda
- [Supported Node Versions](https://docs.ghost.org/v1/docs/supported-node-versions)
- [Latest Release](https://ghost.org/developers/)
- [Help & Support](https://help.ghost.org/)
-- [Theme Docs](https://themes.ghost.org/)
-- [API Docs](https://api.ghost.org/)
+- [Theme Docs](https://themes.ghost.org/v1.23.0/)
+- [API Docs](https://api.ghost.org/v1.22.0/)
- [Contributing Guide](https://docs.ghost.org/v1/docs/contributing)
- [Developer Blog](https://blog.ghost.org)
- [Self-hoster Docs](https://docs.ghost.org/v1/)
@@ -41,7 +41,7 @@ Other options are also available if you prefer playing around with servers by yo
If you are developing a Ghost theme for your own site or creating themes for others to use we recommend installing Ghost on your own local machine. Luckily we have a brand new Ghost CLI to make this really easy 😄
- [Installing Ghost via the CLI](https://docs.ghost.org/v1/docs/install-local)
-- [Theme Developer Docs](https://themes.ghost.org)
+- [Theme Developer Docs](https://themes.ghost.org/v1.23.0/)
# Contributors & Advanced Developers
diff --git a/core/server/data/db/health.js b/core/server/data/db/health.js
index 3677d9609c..ec31b6c605 100644
--- a/core/server/data/db/health.js
+++ b/core/server/data/db/health.js
@@ -25,7 +25,7 @@ module.exports.check = function healthCheck() {
throw new common.errors.DatabaseVersionError({
message: 'Your database version is not compatible with Ghost 1.0.0 (master branch)',
context: 'Want to keep your DB? Use Ghost < 1.0.0 or the "stable" branch. Otherwise please delete your DB and restart Ghost.',
- help: 'More information on the Ghost 1.0.0 at https://docs.ghost.org/docs/introduction'
+ help: 'More information on the Ghost 1.0.0 at https://docs.ghost.org/v1/docs/introduction'
});
})
.catch(function (err) {
diff --git a/core/server/data/schema/fixtures/fixtures.json b/core/server/data/schema/fixtures/fixtures.json
index 24b064d12b..d281f858d8 100644
--- a/core/server/data/schema/fixtures/fixtures.json
+++ b/core/server/data/schema/fixtures/fixtures.json
@@ -361,7 +361,7 @@
{
"title": "Setting up your own Ghost theme",
"slug": "themes",
- "mobiledoc": "{\"version\":\"0.3.1\",\"markups\":[],\"atoms\":[],\"cards\":[[\"card-markdown\",{\"cardName\":\"card-markdown\",\"markdown\":\"Creating a totally custom design for your publication\\n\\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.\\n\\nThere are a huge range of both free and premium pre-built themes which you can get from the [Ghost Theme Marketplace](http:\/\/marketplace.ghost.org), or you can simply create your own from scratch.\\n\\n[![marketplace](https:\/\/casper.ghost.org\/v1.0.0\/images\/marketplace.jpg)](http:\/\/marketplace.ghost.org)\\n\\n> Anyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS\\n\\nGhost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like `{{author.name}}`, for example, outputs the name of the current author.\\n\\nThe best way to learn how to write your own Ghost theme is to have a look at [the source code for Casper](https:\/\/github.com\/TryGhost\/Casper), which is heavily commented and should give you a sense of how everything fits together.\\n\\n- `default.hbs` is the main template file, all contexts will load inside this file unless specifically told to use a different template.\\n- `post.hbs` is the file used in the context of viewing a post.\\n- `index.hbs` is the file used in the context of viewing the home page.\\n- and so on\\n\\nWe've got [full and extensive theme documentation](http:\/\/themes.ghost.org\/docs\/about) which outlines every template file, context and helper that you can use.\\n\\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a **themes** section on our [public Ghost forum](https:\/\/forum.ghost.org\/c\/themes).\"}]],\"sections\":[[10,0]]}",
+ "mobiledoc": "{\"version\":\"0.3.1\",\"markups\":[],\"atoms\":[],\"cards\":[[\"card-markdown\",{\"cardName\":\"card-markdown\",\"markdown\":\"Creating a totally custom design for your publication\\n\\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.\\n\\nThere are a huge range of both free and premium pre-built themes which you can get from the [Ghost Theme Marketplace](http:\/\/marketplace.ghost.org), or you can simply create your own from scratch.\\n\\n[![marketplace](https:\/\/casper.ghost.org\/v1.0.0\/images\/marketplace.jpg)](http:\/\/marketplace.ghost.org)\\n\\n> Anyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS\\n\\nGhost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like `{{author.name}}`, for example, outputs the name of the current author.\\n\\nThe best way to learn how to write your own Ghost theme is to have a look at [the source code for Casper](https:\/\/github.com\/TryGhost\/Casper), which is heavily commented and should give you a sense of how everything fits together.\\n\\n- `default.hbs` is the main template file, all contexts will load inside this file unless specifically told to use a different template.\\n- `post.hbs` is the file used in the context of viewing a post.\\n- `index.hbs` is the file used in the context of viewing the home page.\\n- and so on\\n\\nWe've got [full and extensive theme documentation](http:\/\/themes.ghost.org\/v1.23.0\/docs\/about) which outlines every template file, context and helper that you can use.\\n\\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a **themes** section on our [public Ghost forum](https:\/\/forum.ghost.org\/c\/themes).\"}]],\"sections\":[[10,0]]}",
"feature_image": "https://casper.ghost.org/v1.0.0/images/design.jpg",
"featured": false,
"page": false,
@@ -417,7 +417,7 @@
{
"title": "Organising your content with tags",
"slug": "using-tags",
- "mobiledoc": "{\"version\":\"0.3.1\",\"markups\":[],\"atoms\":[],\"cards\":[[\"card-markdown\",{\"cardName\":\"card-markdown\",\"markdown\":\"Ghost has a single, powerful organisational taxonomy, called tags.\\n\\nIt doesn't matter whether you want to call them categories, tags, boxes, or anything else. You can think of Ghost tags a lot like Gmail labels. By tagging posts with one or more keyword, you can organise articles into buckets of related content.\\n\\n\\n## Basic tagging\\n\\nWhen you write a post, you can assign tags to help differentiate between categories of content. For example, you might tag some posts with `News` and other posts with `Cycling`, which would create two distinct categories of content listed on `/tag/news/` and `/tag/cycling/`, respectively.\\n\\nIf you tag a post with both `News` *and* `Cycling` - then it appears in both sections.\\n\\nTag archives are like dedicated home-pages for each category of content that you have. They have their own pages, their own RSS feeds, and can support their own cover images and meta data.\\n\\n\\n## The primary tag\\n\\nInside the Ghost editor, you can drag and drop tags into a specific order. The first tag in the list is always given the most importance, and some themes will only display the primary tag (the first tag in the list) by default. So you can add the most important tag which you want to show up in your theme, but also add a bunch of related tags which are less important.\\n\\n==**News**, Cycling, Bart Stevens, Extreme Sports==\\n\\nIn this example, **News** is the primary tag which will be displayed by the theme, but the post will also still receive all the other tags, and show up in their respective archives.\\n\\n\\n## Private tags\\n\\nSometimes you may want to assign a post a specific tag, but you don't necessarily want that tag appearing in the theme or creating an archive page. In Ghost, hashtags are private and can be used for special styling.\\n\\nFor example, if you sometimes publish posts with video content - you might want your theme to adapt and get rid of the sidebar for these posts, to give more space for an embedded video to fill the screen. In this case, you could use private tags to tell your theme what to do.\\n\\n==**News**, Cycling, #video==\\n\\nHere, the theme would assign the post publicly displayed tags of `News`, and `Cycling` - but it would also keep a private record of the post being tagged with `#video`.\\n\\nIn your theme, you could then look for private tags conditionally and give them special formatting:\\n\\n```\\n{{#post}}\\n {{#has tag=\\\"#video\\\"}}\\n ...markup for a nice big video post layout...\\n {{else}}\\n ...regular markup for a post...\\n {{/has}}\\n{{/post}}\\n```\\n\\nYou can find documentation for theme development techniques like this and many more over on Ghost's extensive [theme documentation](https://themes.ghost.org/).\"}]],\"sections\":[[10,0]]}",
+ "mobiledoc": "{\"version\":\"0.3.1\",\"markups\":[],\"atoms\":[],\"cards\":[[\"card-markdown\",{\"cardName\":\"card-markdown\",\"markdown\":\"Ghost has a single, powerful organisational taxonomy, called tags.\\n\\nIt doesn't matter whether you want to call them categories, tags, boxes, or anything else. You can think of Ghost tags a lot like Gmail labels. By tagging posts with one or more keyword, you can organise articles into buckets of related content.\\n\\n\\n## Basic tagging\\n\\nWhen you write a post, you can assign tags to help differentiate between categories of content. For example, you might tag some posts with `News` and other posts with `Cycling`, which would create two distinct categories of content listed on `/tag/news/` and `/tag/cycling/`, respectively.\\n\\nIf you tag a post with both `News` *and* `Cycling` - then it appears in both sections.\\n\\nTag archives are like dedicated home-pages for each category of content that you have. They have their own pages, their own RSS feeds, and can support their own cover images and meta data.\\n\\n\\n## The primary tag\\n\\nInside the Ghost editor, you can drag and drop tags into a specific order. The first tag in the list is always given the most importance, and some themes will only display the primary tag (the first tag in the list) by default. So you can add the most important tag which you want to show up in your theme, but also add a bunch of related tags which are less important.\\n\\n==**News**, Cycling, Bart Stevens, Extreme Sports==\\n\\nIn this example, **News** is the primary tag which will be displayed by the theme, but the post will also still receive all the other tags, and show up in their respective archives.\\n\\n\\n## Private tags\\n\\nSometimes you may want to assign a post a specific tag, but you don't necessarily want that tag appearing in the theme or creating an archive page. In Ghost, hashtags are private and can be used for special styling.\\n\\nFor example, if you sometimes publish posts with video content - you might want your theme to adapt and get rid of the sidebar for these posts, to give more space for an embedded video to fill the screen. In this case, you could use private tags to tell your theme what to do.\\n\\n==**News**, Cycling, #video==\\n\\nHere, the theme would assign the post publicly displayed tags of `News`, and `Cycling` - but it would also keep a private record of the post being tagged with `#video`.\\n\\nIn your theme, you could then look for private tags conditionally and give them special formatting:\\n\\n```\\n{{#post}}\\n {{#has tag=\\\"#video\\\"}}\\n ...markup for a nice big video post layout...\\n {{else}}\\n ...regular markup for a post...\\n {{/has}}\\n{{/post}}\\n```\\n\\nYou can find documentation for theme development techniques like this and many more over on Ghost's extensive [theme documentation](https://themes.ghost.org/v1.23.0/).\"}]],\"sections\":[[10,0]]}",
"feature_image": "https://casper.ghost.org/v1.0.0/images/tags.jpg",
"featured": false,
"page": false,
diff --git a/core/server/data/validation/index.js b/core/server/data/validation/index.js
index 9b2c70dca0..9bf5eb4742 100644
--- a/core/server/data/validation/index.js
+++ b/core/server/data/validation/index.js
@@ -364,7 +364,7 @@ validateRedirects = function validateRedirects(redirects) {
if (!_.isArray(redirects)) {
throw new common.errors.ValidationError({
message: common.i18n.t('errors.utils.redirectsWrongFormat'),
- help: 'https://docs.ghost.org/docs/redirects'
+ help: 'https://docs.ghost.org/v1/docs/redirects'
});
}
@@ -373,7 +373,7 @@ validateRedirects = function validateRedirects(redirects) {
throw new common.errors.ValidationError({
message: common.i18n.t('errors.utils.redirectsWrongFormat'),
context: JSON.stringify(redirect),
- help: 'https://docs.ghost.org/docs/redirects'
+ help: 'https://docs.ghost.org/v1/docs/redirects'
});
}
});
diff --git a/core/server/helpers/pagination.js b/core/server/helpers/pagination.js
index 18fbeecfa8..7713b7b2e5 100644
--- a/core/server/helpers/pagination.js
+++ b/core/server/helpers/pagination.js
@@ -14,7 +14,7 @@ pagination = function (options) {
throw new errors.IncorrectUsageError({
level: 'normal',
message: i18n.t('warnings.helpers.pagination.invalidData'),
- help: 'https://themes.ghost.org/docs/pagination'
+ help: 'https://themes.ghost.org/v1.23.0/docs/pagination'
});
}
diff --git a/core/server/lib/fs/package-json/parse.js b/core/server/lib/fs/package-json/parse.js
index eb76276f21..3271afc091 100644
--- a/core/server/lib/fs/package-json/parse.js
+++ b/core/server/lib/fs/package-json/parse.js
@@ -30,7 +30,7 @@ function parsePackageJson(path) {
if (!hasRequiredKeys) {
err = new Error(common.i18n.t('errors.utils.parsepackagejson.nameOrVersionMissing'));
err.context = path;
- err.help = common.i18n.t('errors.utils.parsepackagejson.willBeRequired', {url: 'http://docs.ghost.org/themes/'});
+ err.help = common.i18n.t('errors.utils.parsepackagejson.willBeRequired', {url: 'http://themes.ghost.org/v1.23.0/'});
return Promise.reject(err);
}
@@ -39,7 +39,7 @@ function parsePackageJson(path) {
} catch (parseError) {
err = new Error(common.i18n.t('errors.utils.parsepackagejson.themeFileIsMalformed'));
err.context = path;
- err.help = common.i18n.t('errors.utils.parsepackagejson.willBeRequired', {url: 'http://docs.ghost.org/themes/'});
+ err.help = common.i18n.t('errors.utils.parsepackagejson.willBeRequired', {url: 'http://themes.ghost.org/v1.23.0/'});
return Promise.reject(err);
}
diff --git a/core/server/models/plugins/filter.js b/core/server/models/plugins/filter.js
index edbd6f897d..df4d587425 100644
--- a/core/server/models/plugins/filter.js
+++ b/core/server/models/plugins/filter.js
@@ -28,7 +28,7 @@ filterUtils = {
err: err,
property: 'filter',
context: common.i18n.t('errors.models.plugins.filter.errorParsing'),
- help: common.i18n.t('errors.models.plugins.filter.forInformationRead', {url: 'http://api.ghost.org/docs/filter'})
+ help: common.i18n.t('errors.models.plugins.filter.forInformationRead', {url: 'https://api.ghost.org/v1.22.0/docs/filter'})
});
}
diff --git a/core/server/services/auth/authenticate.js b/core/server/services/auth/authenticate.js
index 06565058ab..75ecc66d8c 100644
--- a/core/server/services/auth/authenticate.js
+++ b/core/server/services/auth/authenticate.js
@@ -40,7 +40,7 @@ authenticate = {
return next(new common.errors.UnauthorizedError({
message: common.i18n.t('errors.middleware.auth.accessDenied'),
context: common.i18n.t('errors.middleware.auth.clientCredentialsNotProvided'),
- help: common.i18n.t('errors.middleware.auth.forInformationRead', {url: 'http://api.ghost.org/docs/client-authentication'})
+ help: common.i18n.t('errors.middleware.auth.forInformationRead', {url: 'https://api.ghost.org/v1.22.0/docs/client-authentication'})
}));
}
@@ -58,7 +58,7 @@ authenticate = {
return next(new common.errors.UnauthorizedError({
message: common.i18n.t('errors.middleware.auth.accessDenied'),
context: common.i18n.t('errors.middleware.auth.clientCredentialsNotValid'),
- help: common.i18n.t('errors.middleware.auth.forInformationRead', {url: 'http://api.ghost.org/docs/client-authentication'})
+ help: common.i18n.t('errors.middleware.auth.forInformationRead', {url: 'https://api.ghost.org/v1.22.0/docs/client-authentication'})
}));
}
diff --git a/core/server/services/mail/GhostMailer.js b/core/server/services/mail/GhostMailer.js
index 221e45d9e1..30cd63fc98 100644
--- a/core/server/services/mail/GhostMailer.js
+++ b/core/server/services/mail/GhostMailer.js
@@ -48,7 +48,7 @@ GhostMailer.prototype.getDomain = function () {
GhostMailer.prototype.send = function (message) {
var self = this,
to,
- help = common.i18n.t('errors.api.authentication.checkEmailConfigInstructions', {url: 'http://docs.ghost.org/v1/docs/mail-config'}),
+ help = common.i18n.t('errors.api.authentication.checkEmailConfigInstructions', {url: 'https://docs.ghost.org/v1/docs/mail-config'}),
errorMessage = common.i18n.t('errors.mail.failedSendingEmail.error');
// important to clone message as we modify it
diff --git a/core/server/services/slack.js b/core/server/services/slack.js
index d4653046d4..8c8ea43608 100644
--- a/core/server/services/slack.js
+++ b/core/server/services/slack.js
@@ -64,7 +64,7 @@ function ping(post) {
common.logging.error(new common.errors.GhostError({
err: err,
context: common.i18n.t('errors.services.ping.requestFailed.error', {service: 'slack'}),
- help: common.i18n.t('errors.services.ping.requestFailed.help', {url: 'http://docs.ghost.org'})
+ help: common.i18n.t('errors.services.ping.requestFailed.help', {url: 'https://docs.ghost.org/v1/'})
}));
});
}
diff --git a/core/server/services/xmlrpc.js b/core/server/services/xmlrpc.js
index 7b53f3597d..8d60f63424 100644
--- a/core/server/services/xmlrpc.js
+++ b/core/server/services/xmlrpc.js
@@ -76,7 +76,7 @@ function ping(post) {
err: err,
message: err.message,
context: common.i18n.t('errors.services.ping.requestFailed.error', {service: 'xmlrpc'}),
- help: common.i18n.t('errors.services.ping.requestFailed.help', {url: 'http://docs.ghost.org'})
+ help: common.i18n.t('errors.services.ping.requestFailed.help', {url: 'https://docs.ghost.org/v1/'})
}));
});
});
diff --git a/core/server/translations/en.json b/core/server/translations/en.json
index 81f9214213..ce78e875d0 100644
--- a/core/server/translations/en.json
+++ b/core/server/translations/en.json
@@ -543,7 +543,7 @@
"isDeprecated": "Warning: pageUrl is deprecated, please use page_url instead\nThe helper pageUrl has been replaced with page_url in Ghost 0.4.2, and will be removed entirely in Ghost 0.6\nIn your theme's pagination.hbs file, pageUrl should be renamed to page_url"
},
"pagination": {
- "invalidData": "The \\{\\{pagination\\}\\} helper was used outside of a paginated context. See https://themes.ghost.org/docs/pagination.",
+ "invalidData": "The \\{\\{pagination\\}\\} helper was used outside of a paginated context. See https://themes.ghost.org/v1.23.0/docs/pagination.",
"valuesMustBeDefined": "All values must be defined for page, pages, limit and total",
"nextPrevValuesMustBeNumeric": "Invalid value, Next/Prev must be a number",
"valuesMustBeNumeric": "Invalid value, check page, pages, limit and total are numbers"
diff --git a/core/server/web/middleware/custom-redirects.js b/core/server/web/middleware/custom-redirects.js
index 6bdd7c466c..becc6fa4fc 100644
--- a/core/server/web/middleware/custom-redirects.js
+++ b/core/server/web/middleware/custom-redirects.js
@@ -57,7 +57,7 @@ _private.registerRoutes = function registerRoutes() {
common.logging.error(new common.errors.IncorrectUsageError({
message: common.i18n.t('errors.middleware.redirects.register'),
context: err.message,
- help: 'https://docs.ghost.org/docs/redirects'
+ help: 'https://docs.ghost.org/v1/docs/redirects'
}));
}
}
diff --git a/core/test/unit/data/schema/integrity_spec.js b/core/test/unit/data/schema/integrity_spec.js
index 85845adf7d..841a34cc46 100644
--- a/core/test/unit/data/schema/integrity_spec.js
+++ b/core/test/unit/data/schema/integrity_spec.js
@@ -20,7 +20,7 @@ var should = require('should'),
describe('DB version integrity', function () {
// Only these variables should need updating
var currentSchemaHash = '2073bee126f6e419ef86196f719caea6',
- currentFixturesHash = '5445060333d3cf52cb1f8c17451c9fa9';
+ currentFixturesHash = 'a7633cca0c3f73e2358aac8bb56c08db';
// If this test is failing, then it is likely a change has been made that requires a DB version bump,
// and the values above will need updating as confirmation
diff --git a/core/test/unit/helpers/pagination_spec.js b/core/test/unit/helpers/pagination_spec.js
index 431e616298..a3df1264d4 100644
--- a/core/test/unit/helpers/pagination_spec.js
+++ b/core/test/unit/helpers/pagination_spec.js
@@ -28,7 +28,7 @@ describe('{{pagination}} helper', function () {
return function () {
helpers.pagination.call(data);
};
- }, expectedMessage = 'The {{pagination}} helper was used outside of a paginated context. See https://themes.ghost.org/docs/pagination.';
+ }, expectedMessage = 'The {{pagination}} helper was used outside of a paginated context. See https://themes.ghost.org/v1.23.0/docs/pagination.';
runHelper('not an object').should.throwError(expectedMessage);
runHelper(function () {
diff --git a/core/test/unit/lib/fs/package-json/parse_spec.js b/core/test/unit/lib/fs/package-json/parse_spec.js
index 2ef7cf26e3..46907c3a3b 100644
--- a/core/test/unit/lib/fs/package-json/parse_spec.js
+++ b/core/test/unit/lib/fs/package-json/parse_spec.js
@@ -45,7 +45,7 @@ describe('lib/fs/package-json: parse', function () {
.catch(function (err) {
err.message.should.equal('"name" or "version" is missing from theme package.json file.');
err.context.should.equal(tmpFile.name);
- err.help.should.equal('This will be required in future. Please see http://docs.ghost.org/themes/');
+ err.help.should.equal('This will be required in future. Please see http://themes.ghost.org/v1.23.0/');
done();
})
@@ -70,7 +70,7 @@ describe('lib/fs/package-json: parse', function () {
.catch(function (err) {
err.message.should.equal('"name" or "version" is missing from theme package.json file.');
err.context.should.equal(tmpFile.name);
- err.help.should.equal('This will be required in future. Please see http://docs.ghost.org/themes/');
+ err.help.should.equal('This will be required in future. Please see http://themes.ghost.org/v1.23.0/');
done();
})
@@ -93,7 +93,7 @@ describe('lib/fs/package-json: parse', function () {
.catch(function (err) {
err.message.should.equal('Theme package.json file is malformed');
err.context.should.equal(tmpFile.name);
- err.help.should.equal('This will be required in future. Please see http://docs.ghost.org/themes/');
+ err.help.should.equal('This will be required in future. Please see http://themes.ghost.org/v1.23.0/');
done();
})
diff --git a/core/test/unit/services/themes/validate_spec.js b/core/test/unit/services/themes/validate_spec.js
index 3caab2785e..fa8091a01f 100644
--- a/core/test/unit/services/themes/validate_spec.js
+++ b/core/test/unit/services/themes/validate_spec.js
@@ -68,7 +68,7 @@ describe('Themes', function () {
fatal: true,
level: 'error',
rule: 'Replace the {{#if author.cover}}
helper with {{#if author.cover_image}}
',
- details: 'The cover
attribute was replaced with cover_image
.
Instead of {{#if author.cover}}
you need to use {{#if author.cover_image}}
.
See the object attributes of author
here.',
+ details: 'The cover
attribute was replaced with cover_image
.
Instead of {{#if author.cover}}
you need to use {{#if author.cover_image}}
.
See the object attributes of author
here.',
failures: [ {} ],
code: 'GS001-DEPR-CON-AC'
}
@@ -98,7 +98,7 @@ describe('Themes', function () {
fatal: true,
level: 'error',
rule: 'Replace the {{#if author.cover}}
helper with {{#if author.cover_image}}
',
- details: 'The cover
attribute was replaced with cover_image
.
Instead of {{#if author.cover}}
you need to use {{#if author.cover_image}}
.
See the object attributes of author
here.',
+ details: 'The cover
attribute was replaced with cover_image
.
Instead of {{#if author.cover}}
you need to use {{#if author.cover_image}}
.
See the object attributes of author
here.',
failures: [ {} ],
code: 'GS001-DEPR-CON-AC'
}
diff --git a/core/test/utils/fixtures/export/export-authors.json b/core/test/utils/fixtures/export/export-authors.json
index 8433d29ea9..2b5e96ec4e 100644
--- a/core/test/utils/fixtures/export/export-authors.json
+++ b/core/test/utils/fixtures/export/export-authors.json
@@ -12,10 +12,10 @@
"uuid": "8c414ae2-dce6-4b0f-8ee6-5c403fa2ae86",
"title": "Setting up your own Ghost theme",
"slug": "themes",
- "mobiledoc": "{\"version\":\"0.3.1\",\"markups\":[],\"atoms\":[],\"cards\":[[\"card-markdown\",{\"cardName\":\"card-markdown\",\"markdown\":\"Creating a totally custom design for your publication\\n\\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.\\n\\nThere are a huge range of both free and premium pre-built themes which you can get from the [Ghost Theme Marketplace](http://marketplace.ghost.org), or you can simply create your own from scratch.\\n\\n[![marketplace](https://casper.ghost.org/v1.0.0/images/marketplace.jpg)](http://marketplace.ghost.org)\\n\\n> Anyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS\\n\\nGhost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like `{{author.name}}`, for example, outputs the name of the current author.\\n\\nThe best way to learn how to write your own Ghost theme is to have a look at [the source code for Casper](https://github.com/TryGhost/Casper), which is heavily commented and should give you a sense of how everything fits together.\\n\\n- `default.hbs` is the main template file, all contexts will load inside this file unless specifically told to use a different template.\\n- `post.hbs` is the file used in the context of viewing a post.\\n- `index.hbs` is the file used in the context of viewing the home page.\\n- and so on\\n\\nWe've got [full and extensive theme documentation](http://themes.ghost.org/docs/about) which outlines every template file, context and helper that you can use.\\n\\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a **themes** section on our [public Ghost forum](https://forum.ghost.org/c/themes).\"}]],\"sections\":[[10,0]]}",
- "html": "
Creating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\nCreating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\nCreating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\nCreating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\nCreating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\nCreating a totally custom design for your publication
\nGhost comes with a beautiful default theme called Casper, which is designed to be a clean, readable publication layout and can be easily adapted for most purposes. However, Ghost can also be completely themed to suit your needs. Rather than just giving you a few basic settings which act as a poor proxy for code, we just let you write code.
\nThere are a huge range of both free and premium pre-built themes which you can get from the Ghost Theme Marketplace, or you can simply create your own from scratch.
\n\n\n\nAnyone can write a completely custom Ghost theme, with just some solid knowledge of HTML and CSS
\n
Ghost themes are written with a templating language called handlebars, which has a bunch of dynamic helpers to insert your data into template files. Like {{author.name}}
, for example, outputs the name of the current author.
The best way to learn how to write your own Ghost theme is to have a look at the source code for Casper, which is heavily commented and should give you a sense of how everything fits together.
\ndefault.hbs
is the main template file, all contexts will load inside this file unless specifically told to use a different template.post.hbs
is the file used in the context of viewing a post.index.hbs
is the file used in the context of viewing the home page.We've got full and extensive theme documentation which outlines every template file, context and helper that you can use.
\nIf you want to chat with other people making Ghost themes to get any advice or help, there's also a themes section on our public Ghost forum.
\n