diff --git a/ghost/admin/models/settings.js b/ghost/admin/models/settings.js index dc1ea5ef84..31f1c7000a 100644 --- a/ghost/admin/models/settings.js +++ b/ghost/admin/models/settings.js @@ -4,7 +4,7 @@ // Set the url manually and id to '0' to force PUT requests Ghost.Models.Settings = Backbone.Model.extend({ - url: '/api/v0.1/settings/', + url: Ghost.settings.apiRoot + '/settings', id: "0", defaults: { title: 'My Blog', diff --git a/ghost/admin/models/themes.js b/ghost/admin/models/themes.js new file mode 100644 index 0000000000..47549b758d --- /dev/null +++ b/ghost/admin/models/themes.js @@ -0,0 +1,9 @@ +/*global window, document, Ghost, $, _, Backbone */ +(function () { + "use strict"; + + Ghost.Models.Themes = Backbone.Model.extend({ + url: Ghost.settings.apiRoot + '/themes' + }); + +}()); \ No newline at end of file diff --git a/ghost/admin/tpl/settings/general.hbs b/ghost/admin/tpl/settings/general.hbs index 7846eb09c9..ffbb06709a 100644 --- a/ghost/admin/tpl/settings/general.hbs +++ b/ghost/admin/tpl/settings/general.hbs @@ -50,6 +50,15 @@ +
+ + +
+
diff --git a/ghost/admin/views/settings.js b/ghost/admin/views/settings.js index 92c4886727..640c93a6f2 100644 --- a/ghost/admin/views/settings.js +++ b/ghost/admin/views/settings.js @@ -41,7 +41,8 @@ showContent: function (id) { var self = this, - model; + model, + themes; Ghost.router.navigate('/settings/' + id); Ghost.trigger('urlchange'); @@ -53,9 +54,13 @@ this.pane = new Settings[id]({ el: '.settings-content'}); if (!this.models.hasOwnProperty(this.pane.options.modelType)) { + themes = this.models.Themes = new Ghost.Models.Themes(); model = this.models[this.pane.options.modelType] = new Ghost.Models[this.pane.options.modelType](); - model.fetch().then(function () { - self.renderPane(model); + themes.fetch().then(function () { + model.fetch().then(function () { + model.set({availableThemes: themes.toJSON()}); + self.renderPane(model); + }); }); } else { model = this.models[this.pane.options.modelType]; @@ -134,12 +139,13 @@ }, saveSettings: function () { + this.model.unset('availableThemes'); this.model.save({ title: this.$('#blog-title').val(), email: this.$('#email-address').val(), logo: this.$('#logo').attr("src"), - icon: this.$('#icon').attr("src") - + icon: this.$('#icon').attr("src"), + activeTheme: this.$('#activeTheme').val() }, { success: this.saveSuccess, error: this.saveError