diff --git a/core/client/controllers/settings.js b/core/client/controllers/settings.js new file mode 100644 index 0000000000..5db611072a --- /dev/null +++ b/core/client/controllers/settings.js @@ -0,0 +1,5 @@ +var SettingsController = Ember.Controller.extend({ + showApps: Ember.computed.bool('config.apps') +}); + +export default SettingsController; diff --git a/core/client/initializers/ghost-config.js b/core/client/initializers/ghost-config.js new file mode 100644 index 0000000000..a11f688c0c --- /dev/null +++ b/core/client/initializers/ghost-config.js @@ -0,0 +1,12 @@ +var ConfigInitializer = { + name: 'config', + + initialize: function (container, application) { + application.register('ghost:config', application.get('config'), {instantiate: false}); + + application.inject('route', 'config', 'ghost:config'); + application.inject('controller', 'config', 'ghost:config'); + } +}; + +export default ConfigInitializer; diff --git a/core/client/routes/settings/apps.js b/core/client/routes/settings/apps.js index 8c3672718b..91e3fa90c9 100644 --- a/core/client/routes/settings/apps.js +++ b/core/client/routes/settings/apps.js @@ -1,6 +1,11 @@ import AuthenticatedRoute from 'ghost/routes/authenticated'; var AppsRoute = AuthenticatedRoute.extend({ + beforeModel: function () { + if (!this.get('config.apps')) { + this.transitionTo('settings.general'); + } + }, model: function () { return this.store.find('app'); } diff --git a/core/client/templates/settings.hbs b/core/client/templates/settings.hbs index c52651cc34..fa900e6f9f 100644 --- a/core/client/templates/settings.hbs +++ b/core/client/templates/settings.hbs @@ -8,14 +8,16 @@ {{#view "item-view" tagName="li" class="general"}} {{#link-to "settings.general"}}General{{/link-to}} {{/view}} - + {{#view "item-view" tagName="li" class="users"}} {{#link-to "settings.user"}}User{{/link-to}} {{/view}} - - {{#view "item-view" tagName="li" class="apps"}} - {{#link-to "settings.apps"}}Apps{{/link-to}} - {{/view}} + + {{#if showApps}} + {{#view "item-view" tagName="li" class="apps"}} + {{#link-to "settings.apps"}}Apps{{/link-to}} + {{/view}} + {{/if}} diff --git a/core/server/controllers/admin.js b/core/server/controllers/admin.js index b625f1da12..2f2a87cd8e 100644 --- a/core/server/controllers/admin.js +++ b/core/server/controllers/admin.js @@ -42,15 +42,21 @@ function setSelected(list, name) { adminControllers = { 'index': function (req, res) { + /*jslint unparam:true*/ - var userData; + var userData, + // config we need on the frontend + frontConfig = { + apps: config().apps + }; if (req.session && req.session.userData) { userData = JSON.stringify(req.session.userData); } res.render('default-ember', { - user: userData + user: userData, + config: JSON.stringify(frontConfig) }); }, // Route: index diff --git a/core/server/views/default-ember.hbs b/core/server/views/default-ember.hbs index 5c7d76bfa1..4c681d13d6 100644 --- a/core/server/views/default-ember.hbs +++ b/core/server/views/default-ember.hbs @@ -41,9 +41,8 @@ diff --git a/core/test/functional/client/settings_test.js b/core/test/functional/client/settings_test.js index 39a186b2e0..472cc0500c 100644 --- a/core/test/functional/client/settings_test.js +++ b/core/test/functional/client/settings_test.js @@ -20,7 +20,7 @@ CasperTest.emberBegin('Settings screen is correct', 17, function suite(test) { test.assertExists('.settings-menu', 'Settings menu is present'); test.assertExists('.settings-menu .general', 'General tab is present'); test.assertExists('.settings-menu .users', 'Users tab is present'); - test.assertExists('.settings-menu .apps', 'Apps is present'); + test.assertNotExists('.settings-menu .apps', 'Apps is present'); test.assertExists('.wrapper', 'Settings main view is present'); test.assertExists('.settings-content', 'Settings content view is present'); test.assertExists('.settings-menu .general.active', 'General tab is marked active');