diff --git a/core/server/data/default-settings.json b/core/server/data/default-settings.json index 66454b477a..59802b314d 100644 --- a/core/server/data/default-settings.json +++ b/core/server/data/default-settings.json @@ -25,7 +25,7 @@ "default": "" }, "defaultLang": { - "default": "en", + "default": "en_US", "validations": { "notNull": true } diff --git a/core/server/data/fixtures/001.js b/core/server/data/fixtures/001.js index 432a247c3b..a2d810e9cc 100644 --- a/core/server/data/fixtures/001.js +++ b/core/server/data/fixtures/001.js @@ -11,10 +11,10 @@ module.exports = { "meta_title": null, "meta_description": null, "meta_keywords": null, - "featured": null, + "featured": true, "image": null, "status": "published", - "language": null, + "language": "en", "author_id": 1, "created_at": 1373578890610, "created_by": 1, diff --git a/core/server/data/fixtures/003.js b/core/server/data/fixtures/003.js new file mode 100644 index 0000000000..64ee1f721a --- /dev/null +++ b/core/server/data/fixtures/003.js @@ -0,0 +1,13 @@ +var uuid = require('node-uuid'); + +module.exports = { + posts: [], + + settings: [], + + roles: [], + + permissions: [], + + permissions_roles: [] +}; \ No newline at end of file diff --git a/core/server/data/migration/001.js b/core/server/data/migration/001.js index 9634b293e8..9823bbebb1 100644 --- a/core/server/data/migration/001.js +++ b/core/server/data/migration/001.js @@ -15,13 +15,13 @@ up = function () { t.string('slug'); t.text('content_raw'); t.text('content'); - t.string('meta_title'); - t.string('meta_description'); - t.string('meta_keywords'); - t.bool('featured'); - t.string('image'); + t.string('meta_title').nullable(); + t.string('meta_description').nullable(); + t.string('meta_keywords').nullable(); + t.bool('featured').defaultTo(false); + t.string('image').nullable(); t.string('status'); - t.string('language'); + t.string('language').defaultTo('en'); t.integer('author_id'); t.dateTime('created_at'); t.integer('created_by'); diff --git a/core/server/data/migration/003.js b/core/server/data/migration/003.js new file mode 100644 index 0000000000..a603689cf8 --- /dev/null +++ b/core/server/data/migration/003.js @@ -0,0 +1,49 @@ +var when = require('when'), + _ = require('underscore'), + knex = require('../../models/base').Knex, + migrationVersion = '003', + fixtures = require('../fixtures/' + migrationVersion), + errors = require('../../errorHandling'), + up, + down; + +up = function up() { + + return when.all([ + + knex('posts') + .whereNull('language') + .orWhere('language', 'en') + .update({ + 'language': 'en_US' + }), + + knex('posts') + .whereNull('featured') + .update({ + 'featured': false + }) + + ]).then(function incrementVersion() { + + // Lastly, update the current version settings to reflect this version + return knex('settings') + .where('key', 'currentVersion') + .update({ 'value': migrationVersion }); + + }); +}; + +down = function down() { + + return when.all([ + + // No new tables as of yet, so just return a wrapped value + when(true) + + ]); + +}; + +exports.up = up; +exports.down = down; \ No newline at end of file diff --git a/core/server/data/migration/index.js b/core/server/data/migration/index.js index 0009b6e371..8db3e8ca98 100644 --- a/core/server/data/migration/index.js +++ b/core/server/data/migration/index.js @@ -4,11 +4,11 @@ var _ = require('underscore'), series = require('when/sequence'), errors = require('../../errorHandling'), knex = require('../../models/base').Knex, - initialVersion = "001", + initialVersion = '001', // This currentVersion string should always be the current version of Ghost, // we could probably load it from the config file. // - Will be possible after default-settings.json restructure - currentVersion = "002"; + currentVersion = '003'; function getCurrentVersion() { return knex.Schema.hasTable('settings').then(function () { diff --git a/core/server/models/base.js b/core/server/models/base.js index a42bc8ac73..00b99be178 100644 --- a/core/server/models/base.js +++ b/core/server/models/base.js @@ -1,5 +1,6 @@ var GhostBookshelf, Bookshelf = require('bookshelf'), + moment = require('moment'), _ = require('underscore'), config = require('../../../config'), Validator = require('validator').Validator; @@ -19,7 +20,7 @@ GhostBookshelf.Model = GhostBookshelf.Model.extend({ fixDates: function (attrs) { _.each(attrs, function (value, key) { if (key.substr(-3) === '_at' && value !== null) { - attrs[key] = new Date(attrs[key]); + attrs[key] = moment(attrs[key]).toDate(); } }); diff --git a/core/server/models/post.js b/core/server/models/post.js index 04cb845448..e86e7258c5 100644 --- a/core/server/models/post.js +++ b/core/server/models/post.js @@ -8,6 +8,7 @@ var Post, github = require('../../shared/vendor/showdown/extensions/github'), converter = new Showdown.converter({extensions: [github]}), User = require('./user').User, + config = require('../../../config'), Tag = require('./tag').Tag, Tags = require('./tag').Tags, GhostBookshelf = require('./base'); @@ -27,8 +28,8 @@ Post = GhostBookshelf.Model.extend({ defaults: function () { return { uuid: uuid.v4(), - status: 'draft' - // TODO: language: ghost.config().defaultLang); + status: 'draft', + language: config.defaultLang }; }, diff --git a/core/shared/lang/en.json b/core/shared/lang/en_US.json similarity index 100% rename from core/shared/lang/en.json rename to core/shared/lang/en_US.json diff --git a/core/shared/lang/i18n.js b/core/shared/lang/i18n.js index 1e5ee87977..596e67e56f 100644 --- a/core/shared/lang/i18n.js +++ b/core/shared/lang/i18n.js @@ -14,11 +14,11 @@ I18n = function (ghost) { return function (req, res, next) { - if (lang === 'en') { + if (lang === 'en_US') { // TODO: do stuff here to optimise for en // Make jslint empty block error go away - lang = 'en'; + lang = 'en_US'; } /** TODO: potentially use req.acceptedLanguages rather than the default @@ -26,8 +26,8 @@ I18n = function (ghost) { * TODO: switch this mess to be promise driven */ fs.stat(langFilePath, function (error) { if (error) { - console.log('No language file found for language ' + lang + '. Defaulting to en'); - lang = 'en'; + console.log('No language file found for language ' + lang + '. Defaulting to en_US'); + lang = 'en_US'; } fs.readFile(langFilePath, function (error, data) {