mirror of
https://github.com/discourse/discourse-subscriptions.git
synced 2025-07-13 01:23:28 +00:00
name space the js admin
This commit is contained in:
parent
274fd0c518
commit
382fd4ac41
@ -1,8 +1,8 @@
|
|||||||
# Discourse Patrons
|
# Discourse Subscriptions
|
||||||
|
|
||||||
[](https://travis-ci.org/rimian/discourse-patrons)
|
[](https://travis-ci.org/rimian/discourse-subscriptions)
|
||||||
|
|
||||||
The Discourse Patrons plugin allows you to set up a subscription based Discourse application. By integrating with the [Stripe](https://stripe.com) payment gateway and setting up this plugin to manage Subscriptions, you can start selling users access to content on your website.
|
The Discourse Subscriptions plugin allows you to set up a subscription based Discourse application. By integrating with the [Stripe](https://stripe.com) payment gateway and setting up this plugin to manage Subscriptions, you can start selling users access to content on your website.
|
||||||
|
|
||||||
You can try it out here: https://discourse.rimian.com.au/patrons/subscribe
|
You can try it out here: https://discourse.rimian.com.au/patrons/subscribe
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ export default Ember.Controller.extend({
|
|||||||
actions: {
|
actions: {
|
||||||
editPlan(id) {
|
editPlan(id) {
|
||||||
return DiscourseURL.redirectTo(
|
return DiscourseURL.redirectTo(
|
||||||
`/admin/plugins/discourse-patrons/plans/${id}`
|
`/admin/plugins/discourse-subscriptions/plans/${id}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ export default Ember.Controller.extend({
|
|||||||
this.get("model.plan")
|
this.get("model.plan")
|
||||||
.save()
|
.save()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.transitionToRoute("adminPlugins.discourse-patrons.plans");
|
this.transitionToRoute("adminPlugins.discourse-subscriptions.plans");
|
||||||
})
|
})
|
||||||
.catch(popupAjaxError);
|
.catch(popupAjaxError);
|
||||||
}
|
}
|
@ -17,7 +17,7 @@ export default Ember.Controller.extend({
|
|||||||
|
|
||||||
redirect(product_id) {
|
redirect(product_id) {
|
||||||
DiscourseURL.redirectTo(
|
DiscourseURL.redirectTo(
|
||||||
`/admin/plugins/discourse-patrons/products/${product_id}`
|
`/admin/plugins/discourse-subscriptions/products/${product_id}`
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
@ -3,7 +3,7 @@ import { popupAjaxError } from "discourse/lib/ajax-error";
|
|||||||
export default Ember.Controller.extend({
|
export default Ember.Controller.extend({
|
||||||
actions: {
|
actions: {
|
||||||
cancelProduct() {
|
cancelProduct() {
|
||||||
this.transitionToRoute("adminPlugins.discourse-patrons.products");
|
this.transitionToRoute("adminPlugins.discourse-subscriptions.products");
|
||||||
},
|
},
|
||||||
|
|
||||||
createProduct() {
|
createProduct() {
|
||||||
@ -11,7 +11,7 @@ export default Ember.Controller.extend({
|
|||||||
.save()
|
.save()
|
||||||
.then(product => {
|
.then(product => {
|
||||||
this.transitionToRoute(
|
this.transitionToRoute(
|
||||||
"adminPlugins.discourse-patrons.products.show",
|
"adminPlugins.discourse-subscriptions.products.show",
|
||||||
product.id
|
product.id
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
@ -22,7 +22,7 @@ export default Ember.Controller.extend({
|
|||||||
this.get("model.product")
|
this.get("model.product")
|
||||||
.update()
|
.update()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.transitionToRoute("adminPlugins.discourse-patrons.products");
|
this.transitionToRoute("adminPlugins.discourse-subscriptions.products");
|
||||||
})
|
})
|
||||||
.catch(popupAjaxError);
|
.catch(popupAjaxError);
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ export default {
|
|||||||
path: "/plugins",
|
path: "/plugins",
|
||||||
|
|
||||||
map() {
|
map() {
|
||||||
this.route("discourse-patrons", function() {
|
this.route("discourse-subscriptions", function() {
|
||||||
this.route("dashboard");
|
this.route("dashboard");
|
||||||
|
|
||||||
this.route("products", function() {
|
this.route("products", function() {
|
@ -1,4 +1,4 @@
|
|||||||
import Plan from "discourse/plugins/discourse-patrons/discourse/models/plan";
|
import Plan from "discourse/plugins/discourse-subscriptions/discourse/models/plan";
|
||||||
import computed from "ember-addons/ember-computed-decorators";
|
import computed from "ember-addons/ember-computed-decorators";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import computed from "ember-addons/ember-computed-decorators";
|
import computed from "ember-addons/ember-computed-decorators";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import Plan from "discourse/plugins/discourse-patrons/discourse/models/plan";
|
import Plan from "discourse/plugins/discourse-subscriptions/discourse/models/plan";
|
||||||
|
|
||||||
const UserSubscription = Discourse.Model.extend({
|
const UserSubscription = Discourse.Model.extend({
|
||||||
@computed("status")
|
@computed("status")
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
import AdminPlan from "discourse/plugins/discourse-patrons/discourse/models/admin-plan";
|
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
|
||||||
model() {
|
|
||||||
return AdminPlan.findAll();
|
|
||||||
}
|
|
||||||
});
|
|
@ -0,0 +1,7 @@
|
|||||||
|
import AdminPlan from "discourse/plugins/discourse-subscriptions/discourse/models/admin-plan";
|
||||||
|
|
||||||
|
export default Discourse.Route.extend({
|
||||||
|
model() {
|
||||||
|
return AdminPlan.findAll();
|
||||||
|
}
|
||||||
|
});
|
@ -1,4 +1,4 @@
|
|||||||
import AdminProduct from "discourse/plugins/discourse-patrons/discourse/models/admin-product";
|
import AdminProduct from "discourse/plugins/discourse-subscriptions/discourse/models/admin-product";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
model() {
|
||||||
@ -16,7 +16,7 @@ export default Discourse.Route.extend({
|
|||||||
product
|
product
|
||||||
.destroy()
|
.destroy()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.controllerFor("adminPluginsDiscoursePatronsProductsIndex")
|
this.controllerFor("adminPluginsDiscourseSubscriptionsProductsIndex")
|
||||||
.get("model")
|
.get("model")
|
||||||
.removeObject(product);
|
.removeObject(product);
|
||||||
})
|
})
|
@ -1,11 +1,11 @@
|
|||||||
import AdminPlan from "discourse/plugins/discourse-patrons/discourse/models/admin-plan";
|
import AdminPlan from "discourse/plugins/discourse-subscriptions/discourse/models/admin-plan";
|
||||||
import Group from "discourse/models/group";
|
import Group from "discourse/models/group";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model(params) {
|
model(params) {
|
||||||
const id = params["plan-id"];
|
const id = params["plan-id"];
|
||||||
const product = this.modelFor(
|
const product = this.modelFor(
|
||||||
"adminPlugins.discourse-patrons.products.show"
|
"adminPlugins.discourse-subscriptions.products.show"
|
||||||
).product;
|
).product;
|
||||||
let plan;
|
let plan;
|
||||||
|
|
||||||
@ -26,10 +26,10 @@ export default Discourse.Route.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
renderTemplate() {
|
renderTemplate() {
|
||||||
this.render("adminPlugins.discourse-patrons.products.show.plans.show", {
|
this.render("adminPlugins.discourse-subscriptions.products.show.plans.show", {
|
||||||
into: "adminPlugins.discourse-patrons.products",
|
into: "adminPlugins.discourse-subscriptions.products",
|
||||||
outlet: "main",
|
outlet: "main",
|
||||||
controller: "adminPlugins.discourse-patrons.products.show.plans.show"
|
controller: "adminPlugins.discourse-subscriptions.products.show.plans.show"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
@ -1,5 +1,5 @@
|
|||||||
import AdminProduct from "discourse/plugins/discourse-patrons/discourse/models/admin-product";
|
import AdminProduct from "discourse/plugins/discourse-subscriptions/discourse/models/admin-product";
|
||||||
import AdminPlan from "discourse/plugins/discourse-patrons/discourse/models/admin-plan";
|
import AdminPlan from "discourse/plugins/discourse-subscriptions/discourse/models/admin-plan";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model(params) {
|
model(params) {
|
||||||
@ -28,7 +28,7 @@ export default Discourse.Route.extend({
|
|||||||
plan
|
plan
|
||||||
.destroy()
|
.destroy()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.controllerFor("adminPluginsDiscoursePatronsProductsShow")
|
this.controllerFor("adminPluginsDiscourseSubscriptionsProductsShow")
|
||||||
.get("model.plans")
|
.get("model.plans")
|
||||||
.removeObject(plan);
|
.removeObject(plan);
|
||||||
})
|
})
|
@ -1,4 +1,4 @@
|
|||||||
import AdminSubscription from "discourse/plugins/discourse-patrons/discourse/models/admin-subscription";
|
import AdminSubscription from "discourse/plugins/discourse-subscriptions/discourse/models/admin-subscription";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
model() {
|
@ -1,6 +1,6 @@
|
|||||||
import Product from "discourse/plugins/discourse-patrons/discourse/models/product";
|
import Product from "discourse/plugins/discourse-subscriptions/discourse/models/product";
|
||||||
import Plan from "discourse/plugins/discourse-patrons/discourse/models/plan";
|
import Plan from "discourse/plugins/discourse-subscriptions/discourse/models/plan";
|
||||||
import Subscription from "discourse/plugins/discourse-patrons/discourse/models/subscription";
|
import Subscription from "discourse/plugins/discourse-subscriptions/discourse/models/subscription";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model(params) {
|
model(params) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Product from "discourse/plugins/discourse-patrons/discourse/models/product";
|
import Product from "discourse/plugins/discourse-subscriptions/discourse/models/product";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
model() {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Invoice from "discourse/plugins/discourse-patrons/discourse/models/invoice";
|
import Invoice from "discourse/plugins/discourse-subscriptions/discourse/models/invoice";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
model() {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import UserSubscription from "discourse/plugins/discourse-patrons/discourse/models/user-subscription";
|
import UserSubscription from "discourse/plugins/discourse-subscriptions/discourse/models/user-subscription";
|
||||||
|
|
||||||
export default Discourse.Route.extend({
|
export default Discourse.Route.extend({
|
||||||
model() {
|
model() {
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
|
|
||||||
<h2>{{i18n 'discourse_patrons.title' site_name=siteSettings.title}}</h2>
|
|
||||||
|
|
||||||
<ul class="nav nav-pills">
|
|
||||||
{{!-- {{nav-item route='adminPlugins.discourse-patrons.dashboard' label='discourse_patrons.admin.dashboard.title'}} --}}
|
|
||||||
{{nav-item route='adminPlugins.discourse-patrons.products' label='discourse_patrons.admin.products.title'}}
|
|
||||||
{{nav-item route='adminPlugins.discourse-patrons.subscriptions' label='discourse_patrons.admin.subscriptions.title'}}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<div id="discourse-patrons-admin">
|
|
||||||
{{outlet}}
|
|
||||||
</div>
|
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
<p class="btn-right">
|
<p class="btn-right">
|
||||||
{{#link-to 'adminPlugins.discourse-patrons.products.show' 'new' class="btn btn-primary"}}
|
{{#link-to 'adminPlugins.discourse-subscriptions.products.show' 'new' class="btn btn-primary"}}
|
||||||
{{d-icon "plus"}}
|
{{d-icon "plus"}}
|
||||||
<span>{{i18n 'discourse_patrons.admin.products.operations.new'}}</span>
|
<span>{{i18n 'discourse_patrons.admin.products.operations.new'}}</span>
|
||||||
{{/link-to}}
|
{{/link-to}}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<td>{{format-unix-date product.updated}}</td>
|
<td>{{format-unix-date product.updated}}</td>
|
||||||
<td class="td-right">{{product.active}}</td>
|
<td class="td-right">{{product.active}}</td>
|
||||||
<td class="td-right">
|
<td class="td-right">
|
||||||
{{#link-to "adminPlugins.discourse-patrons.products.show" product.id class="btn no-text btn-icon"}}
|
{{#link-to "adminPlugins.discourse-subscriptions.products.show" product.id class="btn no-text btn-icon"}}
|
||||||
{{d-icon "far-edit"}}
|
{{d-icon "far-edit"}}
|
||||||
{{/link-to}}
|
{{/link-to}}
|
||||||
{{d-button
|
{{d-button
|
@ -42,7 +42,7 @@
|
|||||||
<th>{{i18n 'discourse_patrons.admin.plans.plan.active'}}</th>
|
<th>{{i18n 'discourse_patrons.admin.plans.plan.active'}}</th>
|
||||||
<th class="td-right">{{i18n 'discourse_patrons.admin.plans.plan.amount'}}</th>
|
<th class="td-right">{{i18n 'discourse_patrons.admin.plans.plan.amount'}}</th>
|
||||||
<th class="td-right">
|
<th class="td-right">
|
||||||
{{#link-to "adminPlugins.discourse-patrons.products.show.plans.show" model.product.id "new" class="btn"}}
|
{{#link-to "adminPlugins.discourse-subscriptions.products.show.plans.show" model.product.id "new" class="btn"}}
|
||||||
{{i18n 'discourse_patrons.admin.plans.operations.add'}}
|
{{i18n 'discourse_patrons.admin.plans.operations.add'}}
|
||||||
{{/link-to}}
|
{{/link-to}}
|
||||||
</th>
|
</th>
|
||||||
@ -56,7 +56,7 @@
|
|||||||
<td>{{plan.active}}</td>
|
<td>{{plan.active}}</td>
|
||||||
<td class="td-right">{{format-currency plan.currency plan.amountDollars}}</td>
|
<td class="td-right">{{format-currency plan.currency plan.amountDollars}}</td>
|
||||||
<td class="td-right">
|
<td class="td-right">
|
||||||
{{#link-to "adminPlugins.discourse-patrons.products.show.plans.show" model.product.id plan.id class="btn no-text btn-icon"}}
|
{{#link-to "adminPlugins.discourse-subscriptions.products.show.plans.show" model.product.id plan.id class="btn no-text btn-icon"}}
|
||||||
{{d-icon "far-edit"}}
|
{{d-icon "far-edit"}}
|
||||||
{{/link-to}}
|
{{/link-to}}
|
||||||
{{d-button
|
{{d-button
|
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
<h2>{{i18n 'discourse_patrons.title' site_name=siteSettings.title}}</h2>
|
||||||
|
|
||||||
|
<ul class="nav nav-pills">
|
||||||
|
{{!-- {{nav-item route='adminPlugins.discourse-subscriptions.dashboard' label='discourse_patrons.admin.dashboard.title'}} --}}
|
||||||
|
{{nav-item route='adminPlugins.discourse-subscriptions.products' label='discourse_patrons.admin.products.title'}}
|
||||||
|
{{nav-item route='adminPlugins.discourse-subscriptions.subscriptions' label='discourse_patrons.admin.subscriptions.title'}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div id="discourse-patrons-admin">
|
||||||
|
{{outlet}}
|
||||||
|
</div>
|
@ -1,6 +1,6 @@
|
|||||||
en:
|
en:
|
||||||
site_settings:
|
site_settings:
|
||||||
discourse_patrons_enabled: Enable the Discourse Patrons plugin.
|
discourse_patrons_enabled: Enable the Discourse Subscriptions plugin.
|
||||||
discourse_patrons_extra_nav_subscribe: Show the subscribe button in the primary navigation
|
discourse_patrons_extra_nav_subscribe: Show the subscribe button in the primary navigation
|
||||||
discourse_patrons_public_key: Stripe Publishable Key
|
discourse_patrons_public_key: Stripe Publishable Key
|
||||||
discourse_patrons_secret_key: Stripe Secret Key
|
discourse_patrons_secret_key: Stripe Secret Key
|
||||||
@ -15,7 +15,7 @@ en:
|
|||||||
discourse_patrons_amount_must_be_currency: "Currency amounts must be currencies without dollar symbol (eg 1.50)"
|
discourse_patrons_amount_must_be_currency: "Currency amounts must be currencies without dollar symbol (eg 1.50)"
|
||||||
js:
|
js:
|
||||||
discourse_patrons:
|
discourse_patrons:
|
||||||
title: Discourse Patrons
|
title: Discourse Subscriptions
|
||||||
optional: Optional
|
optional: Optional
|
||||||
transactions:
|
transactions:
|
||||||
payment:
|
payment:
|
||||||
|
33
plugin.rb
33
plugin.rb
@ -1,9 +1,9 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# name: discourse-patrons
|
# name: discourse-subscriptions
|
||||||
# about: Integrates Stripe into Discourse to allow visitors to make payments and Subscribe
|
# about: Integrates Stripe into Discourse to allow visitors to subscribe
|
||||||
# version: 2.3.2
|
# version: 2.4.0
|
||||||
# url: https://github.com/rimian/discourse-patrons
|
# url: https://github.com/rimian/discourse-subscriptions
|
||||||
# authors: Rimian Perkins
|
# authors: Rimian Perkins
|
||||||
|
|
||||||
enabled_site_setting :discourse_patrons_enabled
|
enabled_site_setting :discourse_patrons_enabled
|
||||||
@ -24,24 +24,29 @@ extend_content_security_policy(
|
|||||||
script_src: ['https://js.stripe.com/v3/']
|
script_src: ['https://js.stripe.com/v3/']
|
||||||
)
|
)
|
||||||
|
|
||||||
add_admin_route 'discourse_patrons.title', 'discourse-patrons.products'
|
add_admin_route 'discourse_patrons.title', 'discourse-subscriptions.products'
|
||||||
|
|
||||||
Discourse::Application.routes.append do
|
Discourse::Application.routes.append do
|
||||||
get '/admin/plugins/discourse-patrons' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/products' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/products' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/products/:product_id' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/products/:product_id' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/products/:product_id/plans' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/products/:product_id/plans' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/products/:product_id/plans/:plan_id' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/products/:product_id/plans/:plan_id' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/subscriptions' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/subscriptions' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/plans' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/plans' => 'admin/plugins#index'
|
||||||
get '/admin/plugins/discourse-patrons/plans/:plan_id' => 'admin/plugins#index'
|
get '/admin/plugins/discourse-subscriptions/plans/:plan_id' => 'admin/plugins#index'
|
||||||
get 'u/:username/billing' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
get 'u/:username/billing' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
||||||
get 'u/:username/subscriptions' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
get 'u/:username/subscriptions' => 'users#show', constraints: { username: USERNAME_ROUTE_FORMAT }
|
||||||
end
|
end
|
||||||
|
|
||||||
after_initialize do
|
after_initialize do
|
||||||
::Stripe.api_version = "2019-11-05"
|
::Stripe.api_version = "2019-11-05"
|
||||||
::Stripe.set_app_info('Discourse Patrons', version: '2.3.2', url: 'https://github.com/rimian/discourse-patrons')
|
|
||||||
|
::Stripe.set_app_info(
|
||||||
|
'Discourse Subscriptions',
|
||||||
|
version: '2.4.0',
|
||||||
|
url: 'https://github.com/rimian/discourse-subscriptions'
|
||||||
|
)
|
||||||
|
|
||||||
[
|
[
|
||||||
"../lib/discourse_patrons/engine",
|
"../lib/discourse_patrons/engine",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user