diff --git a/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6
index c95db1e8b..943317b1b 100644
--- a/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6
+++ b/app/assets/javascripts/admin/controllers/admin-site-text-edit.js.es6
@@ -1,20 +1,16 @@
-export default Ember.ObjectController.extend({
- saving: false,
+export default Ember.Controller.extend({
saved: false,
saveDisabled: function() {
- if (this.get('saving')) { return true; }
- if ((!this.get('allow_blank')) && Ember.isEmpty(this.get('value'))) { return true; }
+ if (this.get('model.isSaving')) { return true; }
+ if ((!this.get('allow_blank')) && Ember.isEmpty(this.get('model.value'))) { return true; }
return false;
- }.property('saving', 'value'),
+ }.property('model.iSaving', 'model.value'),
actions: {
- saveChanges: function() {
- var self = this;
- self.setProperties({saving: true, saved: false});
- self.get('model').save().then(function () {
- self.setProperties({saving: false, saved: true});
- });
+ saveChanges() {
+ const model = this.get('model');
+ model.save(model.getProperties('value')).then(() => this.set('saved', true));
}
}
});
diff --git a/app/assets/javascripts/admin/models/site-text-type.js.es6 b/app/assets/javascripts/admin/models/site-text-type.js.es6
new file mode 100644
index 000000000..7cb1171e9
--- /dev/null
+++ b/app/assets/javascripts/admin/models/site-text-type.js.es6
@@ -0,0 +1,2 @@
+import RestModel from 'discourse/models/rest';
+export default RestModel.extend();
diff --git a/app/assets/javascripts/admin/models/site-text.js.es6 b/app/assets/javascripts/admin/models/site-text.js.es6
new file mode 100644
index 000000000..edbaf2a44
--- /dev/null
+++ b/app/assets/javascripts/admin/models/site-text.js.es6
@@ -0,0 +1,8 @@
+import RestModel from 'discourse/models/rest';
+
+export default RestModel.extend({
+ markdown: Em.computed.equal('format', 'markdown'),
+ plainText: Em.computed.equal('format', 'plain'),
+ html: Em.computed.equal('format', 'html'),
+ css: Em.computed.equal('format', 'css'),
+});
diff --git a/app/assets/javascripts/admin/models/site_text.js b/app/assets/javascripts/admin/models/site_text.js
deleted file mode 100644
index 0d671c433..000000000
--- a/app/assets/javascripts/admin/models/site_text.js
+++ /dev/null
@@ -1,21 +0,0 @@
-Discourse.SiteText = Discourse.Model.extend({
- markdown: Em.computed.equal('format', 'markdown'),
- plainText: Em.computed.equal('format', 'plain'),
- html: Em.computed.equal('format', 'html'),
- css: Em.computed.equal('format', 'css'),
-
- save: function() {
- return Discourse.ajax("/admin/customize/site_text/" + this.get('text_type'), {
- type: 'PUT',
- data: {value: this.get('value')}
- });
- }
-});
-
-Discourse.SiteText.reopenClass({
- find: function(type) {
- return Discourse.ajax("/admin/customize/site_text/" + type).then(function (data) {
- return Discourse.SiteText.create(data.site_text);
- });
- }
-});
diff --git a/app/assets/javascripts/admin/models/site_text_type.js b/app/assets/javascripts/admin/models/site_text_type.js
deleted file mode 100644
index 1a181bd8e..000000000
--- a/app/assets/javascripts/admin/models/site_text_type.js
+++ /dev/null
@@ -1,11 +0,0 @@
-Discourse.SiteTextType = Discourse.Model.extend();
-
-Discourse.SiteTextType.reopenClass({
- findAll: function() {
- return Discourse.ajax("/admin/customize/site_text_types").then(function(data) {
- return data.map(function(ct) {
- return Discourse.SiteTextType.create(ct);
- });
- });
- }
-});
diff --git a/app/assets/javascripts/admin/routes/admin-route-map.js.es6 b/app/assets/javascripts/admin/routes/admin-route-map.js.es6
index 66d9ea4c7..047e5d51a 100644
--- a/app/assets/javascripts/admin/routes/admin-route-map.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-route-map.js.es6
@@ -21,7 +21,7 @@ export default {
this.route('show', {path: '/:site_customization_id/:section'});
});
- this.resource('adminSiteText', { path: '/site_text' }, function() {
+ this.resource('adminSiteText', { path: '/site_texts' }, function() {
this.route('edit', {path: '/:text_type'});
});
this.resource('adminUserFields', { path: '/user_fields' });
diff --git a/app/assets/javascripts/admin/routes/admin-site-text-edit.js.es6 b/app/assets/javascripts/admin/routes/admin-site-text-edit.js.es6
index 6eba6e76e..847746d03 100644
--- a/app/assets/javascripts/admin/routes/admin-site-text-edit.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-site-text-edit.js.es6
@@ -1,5 +1,5 @@
export default Discourse.Route.extend({
- model: function(params) {
- return Discourse.SiteText.find(params.text_type);
+ model(params) {
+ return this.store.find('site-text', params.text_type);
}
});
diff --git a/app/assets/javascripts/admin/routes/admin-site-text.js.es6 b/app/assets/javascripts/admin/routes/admin-site-text.js.es6
index e850fd6c6..f69c3c395 100644
--- a/app/assets/javascripts/admin/routes/admin-site-text.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-site-text.js.es6
@@ -1,5 +1,5 @@
export default Discourse.Route.extend({
- model: function() {
- return Discourse.SiteTextType.findAll();
+ model() {
+ return this.store.findAll('site-text-type');
}
});
diff --git a/app/assets/javascripts/admin/templates/site-text-edit.hbs b/app/assets/javascripts/admin/templates/site-text-edit.hbs
new file mode 100644
index 000000000..438887f85
--- /dev/null
+++ b/app/assets/javascripts/admin/templates/site-text-edit.hbs
@@ -0,0 +1,26 @@
+
{{model.title}}
+{{model.description}}
+
+{{#if model.markdown}}
+ {{pagedown-editor value=model.value}}
+{{/if}}
+{{#if model.plainText}}
+ {{textarea value=model.value class="plain"}}
+{{/if}}
+{{#if model.html}}
+ {{ace-editor content=model.value mode="html"}}
+{{/if}}
+{{#if model.css}}
+ {{ace-editor content=model.value mode="css"}}
+{{/if}}
+
+
+
+ {{#if saved}}{{i18n 'saved'}}{{/if}}
+
diff --git a/app/assets/javascripts/admin/templates/site_text_index.hbs b/app/assets/javascripts/admin/templates/site-text-index.hbs
similarity index 100%
rename from app/assets/javascripts/admin/templates/site_text_index.hbs
rename to app/assets/javascripts/admin/templates/site-text-index.hbs
diff --git a/app/assets/javascripts/admin/templates/site_text.hbs b/app/assets/javascripts/admin/templates/site-text.hbs
similarity index 100%
rename from app/assets/javascripts/admin/templates/site_text.hbs
rename to app/assets/javascripts/admin/templates/site-text.hbs
diff --git a/app/assets/javascripts/admin/templates/site_text_edit.hbs b/app/assets/javascripts/admin/templates/site_text_edit.hbs
deleted file mode 100644
index ac3d0e540..000000000
--- a/app/assets/javascripts/admin/templates/site_text_edit.hbs
+++ /dev/null
@@ -1,26 +0,0 @@
-{{title}}
-{{description}}
-
-{{#if markdown}}
- {{pagedown-editor value=value}}
-{{/if}}
-{{#if plainText}}
- {{textarea value=value class="plain"}}
-{{/if}}
-{{#if html}}
- {{ace-editor content=value mode="html"}}
-{{/if}}
-{{#if css}}
- {{ace-editor content=value mode="css"}}
-{{/if}}
-
-
-
- {{#if saved}}{{i18n 'saved'}}{{/if}}
-
diff --git a/app/assets/javascripts/discourse/adapters/customization-base.js.es6 b/app/assets/javascripts/discourse/adapters/customization-base.js.es6
new file mode 100644
index 000000000..f57240a11
--- /dev/null
+++ b/app/assets/javascripts/discourse/adapters/customization-base.js.es6
@@ -0,0 +1,7 @@
+import RestAdapter from 'discourse/adapters/rest';
+
+export default RestAdapter.extend({
+ basePath() {
+ return "/admin/customize/";
+ }
+});
diff --git a/app/assets/javascripts/discourse/adapters/site-text-type.js.es6 b/app/assets/javascripts/discourse/adapters/site-text-type.js.es6
new file mode 100644
index 000000000..24cabb74f
--- /dev/null
+++ b/app/assets/javascripts/discourse/adapters/site-text-type.js.es6
@@ -0,0 +1,2 @@
+import CustomizationBase from 'discourse/adapters/customization-base';
+export default CustomizationBase;
diff --git a/app/assets/javascripts/discourse/adapters/site-text.js.es6 b/app/assets/javascripts/discourse/adapters/site-text.js.es6
new file mode 100644
index 000000000..24cabb74f
--- /dev/null
+++ b/app/assets/javascripts/discourse/adapters/site-text.js.es6
@@ -0,0 +1,2 @@
+import CustomizationBase from 'discourse/adapters/customization-base';
+export default CustomizationBase;
diff --git a/app/assets/javascripts/discourse/adapters/user-field.js.es6 b/app/assets/javascripts/discourse/adapters/user-field.js.es6
index f57240a11..24cabb74f 100644
--- a/app/assets/javascripts/discourse/adapters/user-field.js.es6
+++ b/app/assets/javascripts/discourse/adapters/user-field.js.es6
@@ -1,7 +1,2 @@
-import RestAdapter from 'discourse/adapters/rest';
-
-export default RestAdapter.extend({
- basePath() {
- return "/admin/customize/";
- }
-});
+import CustomizationBase from 'discourse/adapters/customization-base';
+export default CustomizationBase;
diff --git a/app/assets/javascripts/discourse/routes/application.js.es6 b/app/assets/javascripts/discourse/routes/application.js.es6
index f0af569b0..6cff9ca74 100644
--- a/app/assets/javascripts/discourse/routes/application.js.es6
+++ b/app/assets/javascripts/discourse/routes/application.js.es6
@@ -74,7 +74,7 @@ const ApplicationRoute = Discourse.Route.extend(OpenComposer, {
}
exceptionController.setProperties({ lastTransition: transition, thrown: err });
- this.transitionTo('exception');
+ this.intermediateTransitionTo('exception');
},
showLogin: unlessReadOnly('handleShowLogin'),
diff --git a/app/controllers/admin/site_text_controller.rb b/app/controllers/admin/site_text_controller.rb
deleted file mode 100644
index c92a0bd40..000000000
--- a/app/controllers/admin/site_text_controller.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-class Admin::SiteTextController < Admin::AdminController
-
- def show
- site_text = SiteText.find_or_new(params[:id].to_s)
- render_serialized(site_text, SiteTextSerializer)
- end
-
- def update
- site_text = SiteText.find_or_new(params[:id].to_s)
-
- # Updating to nothing is the same as removing it
- if params[:value].present?
- site_text.value = params[:value]
- site_text.save!
- else
- site_text.destroy
- end
-
- render nothing: true
- end
-end
diff --git a/app/controllers/admin/site_text_types_controller.rb b/app/controllers/admin/site_text_types_controller.rb
index 9f2efef6b..f13e1ce70 100644
--- a/app/controllers/admin/site_text_types_controller.rb
+++ b/app/controllers/admin/site_text_types_controller.rb
@@ -1,7 +1,7 @@
class Admin::SiteTextTypesController < Admin::AdminController
def index
- render_serialized(SiteText.text_types, SiteTextTypeSerializer)
+ render_serialized(SiteText.text_types, SiteTextTypeSerializer, root: 'site_text_types')
end
end
diff --git a/app/controllers/admin/site_texts_controller.rb b/app/controllers/admin/site_texts_controller.rb
new file mode 100644
index 000000000..416d99018
--- /dev/null
+++ b/app/controllers/admin/site_texts_controller.rb
@@ -0,0 +1,21 @@
+class Admin::SiteTextsController < Admin::AdminController
+
+ def show
+ site_text = SiteText.find_or_new(params[:id].to_s)
+ render_serialized(site_text, SiteTextSerializer, root: 'site_text')
+ end
+
+ def update
+ site_text = SiteText.find_or_new(params[:id].to_s)
+
+ # Updating to nothing is the same as removing it
+ if params[:site_text][:value].present?
+ site_text.value = params[:site_text][:value]
+ site_text.save!
+ else
+ site_text.destroy
+ end
+
+ render_serialized(site_text, SiteTextSerializer, root: 'site_text')
+ end
+end
diff --git a/app/serializers/site_text_serializer.rb b/app/serializers/site_text_serializer.rb
index 31caab4b9..fb8e79203 100644
--- a/app/serializers/site_text_serializer.rb
+++ b/app/serializers/site_text_serializer.rb
@@ -1,12 +1,17 @@
class SiteTextSerializer < ApplicationSerializer
- attributes :text_type,
+ attributes :id,
+ :text_type,
:title,
:description,
:value,
:format,
:allow_blank?
+ def id
+ text_type
+ end
+
def title
object.site_text_type.title
end
diff --git a/app/serializers/site_text_type_serializer.rb b/app/serializers/site_text_type_serializer.rb
index 02ee847e4..9c6f5f416 100644
--- a/app/serializers/site_text_type_serializer.rb
+++ b/app/serializers/site_text_type_serializer.rb
@@ -1,6 +1,10 @@
class SiteTextTypeSerializer < ApplicationSerializer
- attributes :text_type, :title
+ attributes :id, :text_type, :title
+
+ def id
+ text_type
+ end
def text_type
object.text_type
diff --git a/config/routes.rb b/config/routes.rb
index 30f7aa34c..1998644ff 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -142,7 +142,7 @@ Discourse::Application.routes.draw do
post "flags/defer/:id" => "flags#defer"
resources :site_customizations, constraints: AdminConstraint.new
scope "/customize" do
- resources :site_text, constraints: AdminConstraint.new
+ resources :site_texts, constraints: AdminConstraint.new
resources :site_text_types, constraints: AdminConstraint.new
resources :user_fields, constraints: AdminConstraint.new
resources :emojis, constraints: AdminConstraint.new