diff --git a/app.js b/app.js index 5f5aa88e02..c7c2719d2f 100755 --- a/app.js +++ b/app.js @@ -30,6 +30,7 @@ */ ghost = new Ghost(); + ghost.app().configure('development', function () { ghost.app().use(express.favicon(__dirname + '/content/images/favicon.ico')); ghost.app().use(express.errorHandler({ dumpExceptions: true, showStack: true })); @@ -119,7 +120,7 @@ ghost.app().post('/ghost/register/', admin.doRegister); ghost.app().get('/ghost/editor/:id', auth, admin.editor); ghost.app().get('/ghost/editor', auth, admin.editor); - ghost.app().get('/ghost/blog', auth, admin.blog); + ghost.app().get('/ghost/content', auth, admin.content); ghost.app().get('/ghost/settings', auth, admin.settings); ghost.app().get('/ghost/debug', auth, admin.debug.index); ghost.app().get('/ghost/debug/db/delete/', auth, admin.debug.dbdelete); diff --git a/content/plugins/exampleFilters.js b/content/plugins/exampleFilters.js new file mode 100644 index 0000000000..712525d583 --- /dev/null +++ b/content/plugins/exampleFilters.js @@ -0,0 +1,27 @@ +(function(){ + "use strict"; + + /** + * Because I didn't want to write over FancyFirstChar + */ + var ExampleFilter; + + var ExampleFilter = function(ghost){ + this.ghost = function() { + return ghost; + } + } + + ExampleFilter.prototype.init = function() { + + this.ghost().registerFilter('messWithAdmin', function(adminNavbar){ + console.log('adminnavbar settings run'); + delete adminNavbar.add; + return adminNavbar; + }); + + }; + + module.exports = ExampleFilter; + +}()); \ No newline at end of file diff --git a/content/plugins/fancyFirstChar.js b/content/plugins/fancyFirstChar.js index f133346be9..b3652f11f8 100644 --- a/content/plugins/fancyFirstChar.js +++ b/content/plugins/fancyFirstChar.js @@ -9,6 +9,7 @@ return ghost; }; }; + FancyFirstChar.prototype.init = function () { this.ghost().registerFilter('prePostsRender', function (posts) { var post, @@ -41,5 +42,7 @@ FancyFirstChar.prototype.activate = function () {}; FancyFirstChar.prototype.deactivate = function () {}; + + module.exports = FancyFirstChar; }()); diff --git a/core/admin/controllers/index.js b/core/admin/controllers/index.js index 67510658c8..c9b888f123 100755 --- a/core/admin/controllers/index.js +++ b/core/admin/controllers/index.js @@ -17,32 +17,36 @@ name: 'Dashboard', navClass: 'dashboard', key: 'admin.navbar.dashboard', - defaultString: 'dashboard', - path: '' + // defaultString: 'dashboard', + path: '/' }, - blog: { + content: { name: 'Content', navClass: 'content', - key: 'admin.navbar.blog', - defaultString: 'blog', - path: '/blog' + key: 'admin.navbar.content', + // defaultString: 'content', + path: '/content/' }, add: { name: 'New Post', navClass: 'editor', key: 'admin.navbar.editor', - defaultString: 'editor', - path: '/editor' + // defaultString: 'editor', + path: '/editor/' }, settings: { name: 'Settings', navClass: 'settings', key: 'admin.navbar.settings', - defaultString: 'settings', - path: '/settings' + // defaultString: 'settings', + path: '/settings/' } }; + ghost.doFilter('messWithAdmin', adminNavbar, function() { + console.log('the dofilter hook called in /core/admin/controllers/index.js'); + }); + // TODO - make this a util or helper function setSelected(list, name) { _.each(list, function (item, key) { @@ -114,7 +118,7 @@ .then(function (post) { res.render('editor', { bodyClass: 'editor', - adminNav: setSelected(adminNavbar, 'blog'), + adminNav: setSelected(adminNavbar, 'content'), title: post.get('title'), content: post.get('content') }); @@ -126,12 +130,12 @@ }); } }, - 'blog': function (req, res) { + 'content': function (req, res) { api.posts.browse() .then(function (posts) { - res.render('blog', { + res.render('content', { bodyClass: 'manage', - adminNav: setSelected(adminNavbar, 'blog'), + adminNav: setSelected(adminNavbar, 'content'), posts: posts.toJSON() }); }); diff --git a/core/admin/views/blog.hbs b/core/admin/views/content.hbs similarity index 100% rename from core/admin/views/blog.hbs rename to core/admin/views/content.hbs diff --git a/core/admin/views/partials/navbar.hbs b/core/admin/views/partials/navbar.hbs index c22b5043e6..a4de3e9239 100644 --- a/core/admin/views/partials/navbar.hbs +++ b/core/admin/views/partials/navbar.hbs @@ -1,3 +1,4 @@ + \ No newline at end of file + diff --git a/core/ghost.js b/core/ghost.js index f5c5dc6adf..6912bb7aeb 100644 --- a/core/ghost.js +++ b/core/ghost.js @@ -17,10 +17,10 @@ jsonDataProvider = new JsonDataProvider(), BookshelfDataProvider = require('./shared/models/dataProvider.bookshelf'), bookshelfDataProvider = new BookshelfDataProvider(), + ExampleFilter = require('../content/plugins/exampleFilters'), Ghost, - instance, - filterCallbacks = {}, + instance, statuses; // ## Article Statuses @@ -45,10 +45,12 @@ Ghost = function () { var app, globals, + plugin, polyglot; if (!instance) { instance = this; + plugin = new ExampleFilter(instance).init(); // Temporary loading of settings jsonDataProvider.globals.findAll(function (error, data) { @@ -70,6 +72,7 @@ dataProvider: function () { return bookshelfDataProvider; }, statuses: function () { return statuses; }, polyglot: function () { return polyglot; }, + plugin: function() { return plugin; }, paths: function () { return { 'activeTheme': __dirname + '/../content/' + config.themeDir + '/' + config.activeTheme + '/', @@ -80,10 +83,21 @@ } }); } - return instance; }; + /** + * Holds the filters + * @type {Array} + */ + Ghost.prototype.filterCallbacks = []; + + /** + * Holds the filter hooks (that are built in to Ghost Core) + * @type {Array} + */ + Ghost.prototype.filters = []; + /** * @param {string} name * @param {Function} fn @@ -116,11 +130,11 @@ * @param {Function} fn */ Ghost.prototype.registerFilter = function (name, fn) { - if (!filterCallbacks.hasOwnProperty(name)) { - filterCallbacks[name] = []; + if (!this.filterCallbacks.hasOwnProperty(name)) { + this.filterCallbacks[name] = []; } console.log('registering filter for ', name); - filterCallbacks[name].push(fn); + this.filterCallbacks[name].push(fn); }; /** @@ -132,11 +146,11 @@ Ghost.prototype.doFilter = function (name, args, callback) { var fn; - if (filterCallbacks.hasOwnProperty(name)) { - for (fn in filterCallbacks[name]) { - if (filterCallbacks[name].hasOwnProperty(fn)) { + if (this.filterCallbacks.hasOwnProperty(name)) { + for (fn in this.filterCallbacks[name]) { + if (this.filterCallbacks[name].hasOwnProperty(fn)) { console.log('doing filter for ', name); - args = filterCallbacks[name][fn](args); + args = this.filterCallbacks[name][fn](args); } } }