From 6fe149c4a5899117c3bd4f51c3e12f9300d77c8c Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Sat, 14 Sep 2019 12:56:28 +1000 Subject: [PATCH] basic admin interface --- app/controllers/admin_controller.rb | 11 +++++++++ app/serializers/payment_serializer.rb | 5 ++++ .../admin-plugins-discourse-patrons.js.es6 | 2 ++ .../discourse-patrons-route-map.js.es6 | 8 +++++++ .../admin-plugins-discourse-patrons.js.es6 | 15 ++++++++++++ .../admin/plugins-discourse-patrons.hbs | 23 +++++++++++++++++++ .../stylesheets/common/discourse-patrons.scss | 6 +++++ config/locales/client.en.yml | 9 ++++++++ config/routes.rb | 1 + plugin.rb | 10 +++++++- .../admin_controller_spec.rb | 0 11 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 app/controllers/admin_controller.rb create mode 100644 app/serializers/payment_serializer.rb create mode 100644 assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 create mode 100644 assets/javascripts/discourse/discourse-patrons-route-map.js.es6 create mode 100644 assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 create mode 100644 assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs create mode 100644 spec/controllers/discourse_patrons/admin_controller_spec.rb diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb new file mode 100644 index 0000000..6236370 --- /dev/null +++ b/app/controllers/admin_controller.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module DiscoursePatrons + class AdminController < ::Admin::AdminController + def index + payments = Payment.all + + render_serialized(payments, PaymentSerializer) + end + end +end diff --git a/app/serializers/payment_serializer.rb b/app/serializers/payment_serializer.rb new file mode 100644 index 0000000..6fd251d --- /dev/null +++ b/app/serializers/payment_serializer.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class PaymentSerializer < ApplicationSerializer + attributes :payment_intent_id, :receipt_email, :url, :amount +end diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 new file mode 100644 index 0000000..d9b24c6 --- /dev/null +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-patrons.js.es6 @@ -0,0 +1,2 @@ +export default Ember.Controller.extend({ +}); diff --git a/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 new file mode 100644 index 0000000..e51b06d --- /dev/null +++ b/assets/javascripts/discourse/discourse-patrons-route-map.js.es6 @@ -0,0 +1,8 @@ + +export default { + resource: 'admin.adminPlugins', + path: '/plugins', + map() { + this.route('discourse-patrons'); + } +}; diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 new file mode 100644 index 0000000..6f2ffc5 --- /dev/null +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-patrons.js.es6 @@ -0,0 +1,15 @@ +import { ajax } from "discourse/lib/ajax"; + +export default Discourse.Route.extend({ + model() { + return ajax("/patrons/admin", { + method: "get" + }) + .then(results => { + + console.log(12, results); + + return results; + }); + } +}); diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs new file mode 100644 index 0000000..132fcdd --- /dev/null +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs @@ -0,0 +1,23 @@ + +

{{i18n 'discourse_patrons.title' site_name=siteSettings.title}}

+ + + + + + + + + + + + {{#each model as |payment|}} + + + + + + + + {{/each}} +
{{i18n 'discourse_patrons.admin.table.head.user'}}{{i18n 'discourse_patrons.admin.table.head.payment_intent_id'}}{{i18n 'discourse_patrons.admin.table.head.receipt_email'}}{{i18n 'discourse_patrons.admin.table.head.url'}}{{i18n 'discourse_patrons.admin.table.head.amount'}}
{{payment.user_id}}{{payment.payment_intent_id}}{{payment.receipt_email}}{{payment.url}}{{payment.amount}}
diff --git a/assets/stylesheets/common/discourse-patrons.scss b/assets/stylesheets/common/discourse-patrons.scss index 54fcfb7..4a2a649 100644 --- a/assets/stylesheets/common/discourse-patrons.scss +++ b/assets/stylesheets/common/discourse-patrons.scss @@ -32,6 +32,12 @@ } } +.discourse_patrons_admin { + .amount { + text-align: right; + } +} + .desc { color: dark-light-choose($primary-medium, $secondary-medium); font-size: 0.8em; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 296e1fa..3829c01 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -13,6 +13,7 @@ en: discourse_patrons_amount_must_be_currency: "Currency amounts must be currencies without dollar symbol (eg 1.50)" js: discourse_patrons: + title: Discourse Patrons nav_item: Payment heading: payment: Make a Payment @@ -35,3 +36,11 @@ en: make_payment: Make payment confirm_payment: Confirm payment success: Go back + admin: + table: + head: + url: User + payment_intent_id: Payment Intent Id + receipt_email: Receipt Email + url: URL + amount: Amount diff --git a/config/routes.rb b/config/routes.rb index d8eb7b5..752942d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true DiscoursePatrons::Engine.routes.draw do + get '/admin' => 'admin#index' get '/' => 'patrons#index' get '/:pid' => 'patrons#index' diff --git a/plugin.rb b/plugin.rb index 056fa86..6f47180 100644 --- a/plugin.rb +++ b/plugin.rb @@ -2,7 +2,7 @@ # name: discourse-patrons # about: Integrates Stripe into Discourse to allow visitors to make payments -# version: 1.1.0 +# version: 1.2.0 # url: https://github.com/rimian/discourse-patrons # authors: Rimian Perkins @@ -21,6 +21,12 @@ extend_content_security_policy( script_src: ['https://js.stripe.com/v3/'] ) +add_admin_route 'discourse_patrons.title', 'discourse-patrons' + +Discourse::Application.routes.append do + get '/admin/plugins/discourse-patrons' => 'admin/plugins#index' +end + after_initialize do ::Stripe.api_version = "2019-08-14" ::Stripe.set_app_info('Discourse Patrons', version: '1.0.0', url: 'https://github.com/rimian/discourse-patrons') @@ -28,8 +34,10 @@ after_initialize do [ "../lib/discourse_patrons/engine", "../config/routes", + "../app/controllers/admin_controller", "../app/controllers/patrons_controller", "../app/models/payment", + "../app/serializers/payment_serializer", ].each { |path| require File.expand_path(path, __FILE__) } Discourse::Application.routes.append do diff --git a/spec/controllers/discourse_patrons/admin_controller_spec.rb b/spec/controllers/discourse_patrons/admin_controller_spec.rb new file mode 100644 index 0000000..e69de29