diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 index 825ed23..b5f6a81 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-plans-index.js.es6 @@ -4,7 +4,7 @@ export default Ember.Controller.extend({ actions: { destroyPlan(plan) { plan.destroy().then(() => - this.controllerFor("adminBackupsIndex") + this.controllerFor("adminPluginsDiscoursePatronsPlansIndex") .get("model") .removeObject(plan) ); diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-index.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-index.js.es6 new file mode 100644 index 0000000..e240694 --- /dev/null +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-index.js.es6 @@ -0,0 +1,19 @@ +import DiscourseURL from "discourse/lib/url"; + +export default Ember.Controller.extend({ + actions: { + destroyProduct(product) { + product.destroy().then(() => + this.controllerFor("adminPluginsDiscoursePatronsProductsIndex") + .get("model") + .removeObject(product) + ); + }, + + editProduct(id) { + return DiscourseURL.redirectTo( + `/admin/plugins/discourse-patrons/products/${id}` + ); + } + } +}); diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 new file mode 100644 index 0000000..d6a5293 --- /dev/null +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons-products-show.js.es6 @@ -0,0 +1,14 @@ +import { popupAjaxError } from "discourse/lib/ajax-error"; + +export default Ember.Controller.extend({ + actions: { + createPlan() { + this.get("model") + .save() + .then(() => { + this.transitionToRoute("adminPlugins.discourse-patrons.products"); + }) + .catch(popupAjaxError); + } + } +}); diff --git a/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 index ce2da39..78ba315 100644 --- a/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 +++ b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 @@ -4,7 +4,9 @@ export default { map() { this.route("discourse-patrons", function() { this.route("dashboard"); - this.route("products"); + this.route("products", function() { + this.route("show", { path: "/:plan-id" }); + }); this.route("plans", function() { this.route("show", { path: "/:plan-id" }); }); diff --git a/assets/javascripts/discourse/models/admin-plan.js.es6 b/assets/javascripts/discourse/models/admin-plan.js.es6 index 889afe5..9417e63 100644 --- a/assets/javascripts/discourse/models/admin-plan.js.es6 +++ b/assets/javascripts/discourse/models/admin-plan.js.es6 @@ -1,7 +1,22 @@ import { ajax } from "discourse/lib/ajax"; const AdminPlan = Discourse.Model.extend({ - destroy() {} + name: "", + interval: "month", + amount: 0, + intervals: ["day", "week", "month", "year"], + + destroy() {}, + + save() { + const data = { + interval: this.interval, + amount: this.amount, + name: this.name + }; + + return ajax("/patrons/admin/plans", { method: "post", data }); + } }); AdminPlan.reopenClass({ diff --git a/assets/javascripts/discourse/models/admin-product.js.es6 b/assets/javascripts/discourse/models/admin-product.js.es6 new file mode 100644 index 0000000..5861ef5 --- /dev/null +++ b/assets/javascripts/discourse/models/admin-product.js.es6 @@ -0,0 +1,21 @@ +import { ajax } from "discourse/lib/ajax"; + +const AdminProduct = Discourse.Model.extend({ + destroy() {}, + + save() { + const data = {}; + + return ajax("/patrons/admin/products", { method: "post", data }); + } +}); + +AdminProduct.reopenClass({ + find() { + return ajax("/patrons/admin/products", { method: "get" }).then(result => + result.map(product => AdminProduct.create(product)) + ); + } +}); + +export default AdminProduct; diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-show.js.es6 index 08d7523..1818889 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-show.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-plans-show.js.es6 @@ -1,22 +1,7 @@ -import { ajax } from "discourse/lib/ajax"; +import AdminPlan from "discourse/plugins/discourse-patrons/discourse/models/admin-plan"; export default Discourse.Route.extend({ model() { - return Ember.Object.create({ - name: "", - interval: "month", - amount: 0, - intervals: ["day", "week", "month", "year"], - - save() { - const data = { - interval: this.interval, - amount: this.amount, - name: this.name - }; - - return ajax("/patrons/admin/plans", { method: "post", data }); - } - }); + return AdminPlan.create(); } }); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 index 55af882..5e61d7b 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons-products-show.js.es6 @@ -1 +1,7 @@ -export default Discourse.Route.extend({}); +import AdminProduct from "discourse/plugins/discourse-patrons/discourse/models/admin-plan"; + +export default Discourse.Route.extend({ + model() { + return AdminProduct.create(); + } +}); diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs index eb9e05a..58a6dce 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-plans-index.hbs @@ -5,6 +5,7 @@
+ | {{#each model as |product|}} |
---|---|
{{product.id}} | ++ {{d-button + action=(action "editProduct" product.id) + icon="far-edit" + class="btn no-text btn-icon"}} + {{d-button + action=(route-action "destroyProduct") + actionParam=product + icon="trash-alt" + class="btn-danger btn no-text btn-icon"}} + |
+ {{#link-to 'adminPlugins.discourse-patrons.products.show' 'new' class="btn btn-primary"}} + {{d-icon "plus"}} + {{i18n 'discourse_patrons.admin.products.new'}} + {{/link-to}} +
+ +{{outlet}} diff --git a/assets/stylesheets/common/discourse-patrons.scss b/assets/stylesheets/common/discourse-patrons.scss index 2f0e01a..8448dfb 100644 --- a/assets/stylesheets/common/discourse-patrons.scss +++ b/assets/stylesheets/common/discourse-patrons.scss @@ -38,8 +38,8 @@ } } -.discourse-patrons-admin { - .amount { +table.discourse-patrons-admin { + .td-right { text-align: right; } }