DEV: Fix linting errors (#83)

Template lint errors and broken rubocop linting.
This commit is contained in:
Jarek Radosz 2021-07-04 21:53:55 +02:00 committed by GitHub
parent 03aec5a44a
commit 21d71e09fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 392 additions and 346 deletions

View File

@ -1,6 +1,6 @@
{
"globals": {
"Stripe": true,
"Stripe": true
},
"extends": "eslint-config-discourse"
}

View File

@ -1,6 +1,3 @@
AllCops:
Exclude:
- 'gems/**/*'
inherit_gem:
rubocop-discourse: default.yml

View File

@ -7,31 +7,32 @@ GIT
GEM
remote: https://rubygems.org/
specs:
ast (2.4.1)
parallel (1.19.2)
parser (2.7.1.4)
ast (2.4.2)
parallel (1.20.1)
parser (3.0.1.1)
ast (~> 2.4.1)
rainbow (3.0.0)
regexp_parser (1.7.1)
regexp_parser (2.1.1)
rexml (3.2.5)
rubocop (0.88.0)
rubocop (1.18.2)
parallel (~> 1.10)
parser (>= 2.7.1.1)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.7)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 0.1.0, < 1.0)
rubocop-ast (>= 1.7.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (0.3.0)
parser (>= 2.7.1.4)
rubocop-discourse (2.3.1)
rubocop (>= 0.69.0)
rubocop-rspec (>= 1.39.0)
rubocop-rspec (1.42.0)
rubocop (>= 0.87.0)
ruby-progressbar (1.10.1)
unicode-display_width (1.7.0)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.7.0)
parser (>= 3.0.1.1)
rubocop-discourse (2.4.2)
rubocop (>= 1.1.0)
rubocop-rspec (>= 2.0.0)
rubocop-rspec (2.4.0)
rubocop (~> 1.0)
rubocop-ast (>= 1.1.0)
ruby-progressbar (1.11.0)
unicode-display_width (2.0.0)
PLATFORMS
ruby
@ -41,4 +42,4 @@ DEPENDENCIES
translations-manager!
BUNDLED WITH
2.1.4
2.2.19

View File

@ -92,6 +92,21 @@ export default Component.extend({
}
},
@discourseComputed("backgroundImageUrl")
bannerInfoStyle(backgroundImageUrl) {
if (!backgroundImageUrl) {
return "";
}
return `background-image: linear-gradient(
0deg,
rgba(var(--secondary-rgb), 0.75) 0%,
rgba(var(--secondary-rgb), 0.75) 100%),
var(--campaign-background-image);
background-size: cover;
background-repeat: no-repeat;`;
},
@discourseComputed(
"router.currentRouteName",
"currentUser",

View File

@ -1,31 +1,34 @@
{{#if model.unconfigured}}
<p>{{i18n 'discourse_subscriptions.admin.unconfigured'}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n 'discourse_subscriptions.admin.on_meta'}}</a></p>
<p>{{i18n "discourse_subscriptions.admin.unconfigured"}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n "discourse_subscriptions.admin.on_meta"}}</a></p>
{{else}}
{{#if model}}
<table class="table discourse-patrons-table">
<thead>
<th>{{i18n 'discourse_subscriptions.admin.coupons.code'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.coupons.discount'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.coupons.times_redeemed'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.coupons.active'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.coupons.actions'}}</th>
<th>{{i18n "discourse_subscriptions.admin.coupons.code"}}</th>
<th>{{i18n "discourse_subscriptions.admin.coupons.discount"}}</th>
<th>{{i18n "discourse_subscriptions.admin.coupons.times_redeemed"}}</th>
<th>{{i18n "discourse_subscriptions.admin.coupons.active"}}</th>
<th>{{i18n "discourse_subscriptions.admin.coupons.actions"}}</th>
</thead>
{{#each model as |coupon|}}
<tr>
<td>{{coupon.code}}</td>
<td>{{coupon.discount}}</td>
<td>{{coupon.times_redeemed}}</td>
<td>{{input type="checkbox" checked=coupon.active click=(action "toggleActive" coupon)}}</td>
<td>
{{d-button
action=(action "deleteCoupon")
actionParam=coupon
icon="trash-alt"
class="btn-danger btn btn-icon btn-no-text"}}
</td>
</tr>
{{/each}}
<tbody>
{{#each model as |coupon|}}
<tr>
<td>{{coupon.code}}</td>
<td>{{coupon.discount}}</td>
<td>{{coupon.times_redeemed}}</td>
<td>{{input type="checkbox" checked=coupon.active click=(action "toggleActive" coupon)}}</td>
<td>
{{d-button
action=(action "deleteCoupon")
actionParam=coupon
icon="trash-alt"
class="btn-danger btn btn-icon btn-no-text"
}}
</td>
</tr>
{{/each}}
</tbody>
</table>
{{/if}}
@ -35,10 +38,11 @@
label="discourse_subscriptions.admin.coupons.create"
title="discourse_subscriptions.admin.coupons.create"
icon="plus"
class="btn btn-icon btn-primary create-coupon"}}
class="btn btn-icon btn-primary create-coupon"
}}
{{/unless}}
{{#if creating}}
{{create-coupon-form cancel=(action 'closeCreateForm') create=(action 'createNewCoupon')}}
{{create-coupon-form cancel=(action "closeCreateForm") create=(action "createNewCoupon")}}
{{/if}}
{{/if}}

View File

@ -1,35 +1,36 @@
<h3>{{i18n 'discourse_subscriptions.admin.dashboard.title'}}</h3>
<h3>{{i18n "discourse_subscriptions.admin.dashboard.title"}}</h3>
{{#load-more selector=".discourse-patrons-table tr" action=(action "loadMore")}}
{{#if model}}
<table class="table discourse-patrons-table">
<thead>
<tr>
<th>{{i18n 'discourse_subscriptions.admin.dashboard.table.head.user'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.dashboard.table.head.payment_intent'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.dashboard.table.head.receipt_email'}}</th>
<th onclick={{action "orderPayments" "created_at"}} class="sortable">{{i18n 'created'}}</th>
<th class="amount" onclick={{action "orderPayments" "amount"}} class="sortable amount">{{i18n 'discourse_subscriptions.admin.dashboard.table.head.amount'}}</th>
<th>{{i18n "discourse_subscriptions.admin.dashboard.table.head.user"}}</th>
<th>{{i18n "discourse_subscriptions.admin.dashboard.table.head.payment_intent"}}</th>
<th>{{i18n "discourse_subscriptions.admin.dashboard.table.head.receipt_email"}}</th>
<th role="button" onclick={{action "orderPayments" "created_at"}} class="sortable">{{i18n "created"}}</th>
<th role="button" onclick={{action "orderPayments" "amount"}} class="sortable amount">{{i18n "discourse_subscriptions.admin.dashboard.table.head.amount"}}</th>
</tr>
</thead>
{{#each model as |payment|}}
<tr>
<td>
{{#link-to "adminUser.index" payment.user_id payment.username}}
{{payment.username}}
{{/link-to}}
</td>
<td>
{{#link-to "patrons.show" payment.payment_intent_id}}
{{{payment.payment_intent_id}}}
{{/link-to}}
</td>
<td>{{payment.receipt_email}}</td>
<td>{{{format-duration payment.created_at_age}}}</td>
<td class="amount">{{payment.amount_currency}}</td>
</tr>
{{/each}}
<tbody>
{{#each model as |payment|}}
<tr>
<td>
{{#link-to "adminUser.index" payment.user_id payment.username}}
{{payment.username}}
{{/link-to}}
</td>
<td>
{{#link-to "patrons.show" payment.payment_intent_id}}
{{html-safe payment.payment_intent_id}}
{{/link-to}}
</td>
<td>{{payment.receipt_email}}</td>
<td>{{html-safe (format-duration payment.created_at_age)}}</td>
<td class="amount">{{payment.amount_currency}}</td>
</tr>
{{/each}}
</tbody>
</table>
{{/if}}
{{/load-more}}

View File

@ -1,29 +1,32 @@
<table class="table discourse-patrons-table">
<thead>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.plan_id'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.nickname.title'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.interval'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.amount'}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.plan_id"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.nickname.title"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.interval"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.amount"}}</th>
<th></th>
</thead>
{{#each model as |plan|}}
<tr>
<td>{{plan.id}}</td>
<td>{{plan.nickname}}</td>
<td>{{plan.interval}}</td>
<td>{{plan.unit_amount}}</td>
<td class="td-right">
{{d-button
action=(action "editPlan" plan.id)
icon="far-edit"
class="btn no-text btn-icon"}}
{{d-button
action=(route-action "destroyPlan")
actionParam=plan
icon="trash-alt"
class="btn-danger btn no-text btn-icon"}}
</td>
</tr>
{{/each}}
<tbody>
{{#each model as |plan|}}
<tr>
<td>{{plan.id}}</td>
<td>{{plan.nickname}}</td>
<td>{{plan.interval}}</td>
<td>{{plan.unit_amount}}</td>
<td class="td-right">
{{d-button
action=(action "editPlan" plan.id)
icon="far-edit"
class="btn no-text btn-icon"
}}
{{d-button
action=(route-action "destroyPlan")
actionParam=plan
icon="trash-alt"
class="btn-danger btn no-text btn-icon"
}}
</td>
</tr>
{{/each}}
</tbody>
</table>

View File

@ -1,47 +1,50 @@
{{#if model.unconfigured }}
<p>{{i18n 'discourse_subscriptions.admin.unconfigured'}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n 'discourse_subscriptions.admin.on_meta'}}</a></p>
<p>{{i18n "discourse_subscriptions.admin.unconfigured"}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n "discourse_subscriptions.admin.on_meta"}}</a></p>
{{else}}
<p class="btn-right">
{{#link-to 'adminPlugins.discourse-subscriptions.products.show' 'new' class="btn btn-primary"}}
{{#link-to "adminPlugins.discourse-subscriptions.products.show" "new" class="btn btn-primary"}}
{{d-icon "plus"}}
<span>{{i18n 'discourse_subscriptions.admin.products.operations.new'}}</span>
<span>{{i18n "discourse_subscriptions.admin.products.operations.new"}}</span>
{{/link-to}}
</p>
{{#if model}}
<table class="table discourse-patrons-table">
<thead>
<th>{{i18n 'discourse_subscriptions.admin.products.product.name'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.products.product.created_at'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.products.product.updated_at'}}</th>
<th class="td-right">{{i18n 'discourse_subscriptions.admin.products.product.active'}}</th>
<th>{{i18n "discourse_subscriptions.admin.products.product.name"}}</th>
<th>{{i18n "discourse_subscriptions.admin.products.product.created_at"}}</th>
<th>{{i18n "discourse_subscriptions.admin.products.product.updated_at"}}</th>
<th class="td-right">{{i18n "discourse_subscriptions.admin.products.product.active"}}</th>
<th></th>
</thead>
{{#each model as |product|}}
<tr>
<td>{{product.name}}</td>
<td>{{format-unix-date product.created}}</td>
<td>{{format-unix-date product.updated}}</td>
<td class="td-right">{{product.active}}</td>
<td class="td-right">
<div class="align-buttons">
{{#link-to "adminPlugins.discourse-subscriptions.products.show" product.id class="btn no-text btn-icon"}}
{{d-icon "far-edit"}}
{{/link-to}}
{{d-button
action=(route-action "destroyProduct")
actionParam=product
icon="trash-alt"
class="btn-danger btn no-text btn-icon"}}
</div>
</td>
</tr>
{{/each}}
<tbody>
{{#each model as |product|}}
<tr>
<td>{{product.name}}</td>
<td>{{format-unix-date product.created}}</td>
<td>{{format-unix-date product.updated}}</td>
<td class="td-right">{{product.active}}</td>
<td class="td-right">
<div class="align-buttons">
{{#link-to "adminPlugins.discourse-subscriptions.products.show" product.id class="btn no-text btn-icon"}}
{{d-icon "far-edit"}}
{{/link-to}}
{{d-button
action=(route-action "destroyProduct")
actionParam=product
icon="trash-alt"
class="btn-danger btn no-text btn-icon"
}}
</div>
</td>
</tr>
{{/each}}
</tbody>
</table>
{{else}}
<p>
{{i18n 'discourse_subscriptions.admin.products.product_help'}}
{{i18n "discourse_subscriptions.admin.products.product_help"}}
</p>
{{/if}}
{{/if}}

View File

@ -1,20 +1,19 @@
<h4>{{i18n 'discourse_subscriptions.admin.plans.title'}}</h4>
<h4>{{i18n "discourse_subscriptions.admin.plans.title"}}</h4>
<form class="form-horizontal">
<p>
<label for="product">{{i18n 'discourse_subscriptions.admin.products.product.name'}}</label>
<label for="product">{{i18n "discourse_subscriptions.admin.products.product.name"}}</label>
{{input type="text" name="product_name" value=model.product.name disabled=true}}
</p>
<p>
<label for="name">{{i18n 'discourse_subscriptions.admin.plans.plan.nickname'}}</label>
<label for="name">{{i18n "discourse_subscriptions.admin.plans.plan.nickname"}}</label>
{{input type="text" name="name" value=model.plan.nickname}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.plans.plan.nickname_help'}}
{{i18n "discourse_subscriptions.admin.plans.plan.nickname_help"}}
</div>
</p>
<p>
<label for="interval">{{i18n 'discourse_subscriptions.admin.plans.plan.group'}}</label>
<label for="interval">{{i18n "discourse_subscriptions.admin.plans.plan.group"}}</label>
{{combo-box
valueProperty="name"
content=availableGroups
@ -22,11 +21,11 @@
onChange=(action (mut model.plan.metadata.group_name))
}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.plans.plan.group_help'}}
{{i18n "discourse_subscriptions.admin.plans.plan.group_help"}}
</div>
</p>
<p>
<label for="amount">{{i18n 'discourse_subscriptions.admin.plans.plan.amount'}}</label>
<label for="amount">{{i18n "discourse_subscriptions.admin.plans.plan.amount"}}</label>
{{#if planFieldDisabled}}
{{input class="plan-amount plan-currency" disabled=true value=model.plan.currency}}
{{else}}
@ -41,7 +40,7 @@
</p>
<p>
<label for="recurring">
{{i18n 'discourse_subscriptions.admin.plans.plan.recurring'}}
{{i18n "discourse_subscriptions.admin.plans.plan.recurring"}}
</label>
{{#if planFieldDisabled}}
{{input
@ -55,14 +54,14 @@
type="checkbox"
name="recurring"
checked=model.plan.isRecurring
change=(action 'changeRecurring')
change=(action "changeRecurring")
}}
{{/if}}
</p>
{{#if model.plan.isRecurring}}
<p>
<label for="interval">
{{i18n 'discourse_subscriptions.admin.plans.plan.interval'}}
{{i18n "discourse_subscriptions.admin.plans.plan.interval"}}
</label>
{{#if planFieldDisabled}}
{{input disabled=true value=selectedInterval}}
@ -77,18 +76,18 @@
</p>
<p>
<label for="trial">
{{i18n 'discourse_subscriptions.admin.plans.plan.trial'}}
({{i18n 'discourse_subscriptions.optional'}})
{{i18n "discourse_subscriptions.admin.plans.plan.trial"}}
({{i18n "discourse_subscriptions.optional"}})
</label>
{{input type="text" name="trial" value=model.plan.trial_period_days}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.plans.plan.trial_help'}}
{{i18n "discourse_subscriptions.admin.plans.plan.trial_help"}}
</div>
</p>
{{/if}}
<p>
<label for="active">
{{i18n 'discourse_subscriptions.admin.plans.plan.active'}}
{{i18n "discourse_subscriptions.admin.plans.plan.active"}}
</label>
{{input type="checkbox" name="active" checked=model.plan.active}}
</p>
@ -98,16 +97,24 @@
<hr>
<p class="control-instructions">
{{i18n 'discourse_subscriptions.admin.plans.operations.create_help'}}
{{i18n "discourse_subscriptions.admin.plans.operations.create_help"}}
</p>
<div class="pull-right">
{{#if model.plan.isNew}}
{{d-button label="discourse_subscriptions.admin.plans.operations.create" action="createPlan" icon="plus" class="btn btn-primary"}}
{{d-button
label="discourse_subscriptions.admin.plans.operations.create"
action="createPlan"
icon="plus"
class="btn btn-primary"
}}
{{else}}
{{d-button label="discourse_subscriptions.admin.plans.operations.update" action="updatePlan" icon="check" class="btn btn-primary"}}
{{d-button
label="discourse_subscriptions.admin.plans.operations.update"
action="updatePlan"
icon="check"
class="btn btn-primary"
}}
{{/if}}
</div>
</section>

View File

@ -1,96 +1,107 @@
<h4>{{i18n 'discourse_subscriptions.admin.products.title'}}</h4>
<h4>{{i18n "discourse_subscriptions.admin.products.title"}}</h4>
<form class="form-horizontal">
<p>
<label for="name">{{i18n 'discourse_subscriptions.admin.products.product.name'}}</label>
<label for="name">{{i18n "discourse_subscriptions.admin.products.product.name"}}</label>
{{input type="text" name="name" value=model.product.name}}
</p>
<p>
<label for="description">
{{i18n 'discourse_subscriptions.admin.products.product.description'}}
{{i18n "discourse_subscriptions.admin.products.product.description"}}
</label>
{{textarea name="description" value=model.product.metadata.description class="discourse-subscriptions-admin-textarea"}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.products.product.description_help'}}
{{i18n "discourse_subscriptions.admin.products.product.description_help"}}
</div>
</p>
<p>
<label for="statement_descriptor">
{{i18n 'discourse_subscriptions.admin.products.product.statement_descriptor'}}
{{i18n "discourse_subscriptions.admin.products.product.statement_descriptor"}}
</label>
{{input type="text" name="statement_descriptor" value=model.product.statement_descriptor}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.products.product.statement_descriptor_help'}}
{{i18n "discourse_subscriptions.admin.products.product.statement_descriptor_help"}}
</div>
</p>
<p>
<label for="repurchaseable">{{i18n 'discourse_subscriptions.admin.products.product.repurchaseable'}}</label>
<label for="repurchaseable">{{i18n "discourse_subscriptions.admin.products.product.repurchaseable"}}</label>
{{input type="checkbox" name="repurchaseable" checked=model.product.metadata.repurchaseable}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.products.product.repurchase_help'}}
{{i18n "discourse_subscriptions.admin.products.product.repurchase_help"}}
</div>
</p>
<p>
<label for="active">{{i18n 'discourse_subscriptions.admin.products.product.active'}}</label>
<label for="active">{{i18n "discourse_subscriptions.admin.products.product.active"}}</label>
{{input type="checkbox" name="active" checked=model.product.active}}
<div class="control-instructions">
{{i18n 'discourse_subscriptions.admin.products.product.active_help'}}
{{i18n "discourse_subscriptions.admin.products.product.active_help"}}
</div>
</p>
</form>
{{#unless model.product.isNew}}
<h4>{{i18n 'discourse_subscriptions.admin.plans.title'}}</h4>
<h4>{{i18n "discourse_subscriptions.admin.plans.title"}}</h4>
<p>
<table class="table discourse-patrons-table">
<thead>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.nickname'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.interval'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.created_at'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.group'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.plans.plan.active'}}</th>
<th class="td-right">{{i18n 'discourse_subscriptions.admin.plans.plan.amount'}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.nickname"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.interval"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.created_at"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.group"}}</th>
<th>{{i18n "discourse_subscriptions.admin.plans.plan.active"}}</th>
<th class="td-right">{{i18n "discourse_subscriptions.admin.plans.plan.amount"}}</th>
<th class="td-right">
{{#link-to "adminPlugins.discourse-subscriptions.products.show.plans.show" model.product.id "new" class="btn"}}
{{i18n 'discourse_subscriptions.admin.plans.operations.add'}}
{{i18n "discourse_subscriptions.admin.plans.operations.add"}}
{{/link-to}}
</th>
</thead>
{{#each model.plans as |plan|}}
<tr>
<td>{{plan.nickname}}</td>
<td>{{plan.recurring.interval}}</td>
<td>{{format-unix-date plan.created}}</td>
<td>{{plan.metadata.group_name}}</td>
<td>{{plan.active}}</td>
<td class="td-right">{{format-currency plan.currency plan.amountDollars}}</td>
<td class="td-right">
{{#link-to "adminPlugins.discourse-subscriptions.products.show.plans.show" model.product.id plan.id class="btn no-text btn-icon"}}
{{d-icon "far-edit"}}
{{/link-to}}
</td>
</tr>
{{/each}}
{{#unless model.plans}}
<tr>
<td colspan="8">
<hr>
{{i18n 'discourse_subscriptions.admin.products.product.plan_help'}}
</td>
</tr>
{{/unless}}
<tbody>
{{#each model.plans as |plan|}}
<tr>
<td>{{plan.nickname}}</td>
<td>{{plan.recurring.interval}}</td>
<td>{{format-unix-date plan.created}}</td>
<td>{{plan.metadata.group_name}}</td>
<td>{{plan.active}}</td>
<td class="td-right">{{format-currency plan.currency plan.amountDollars}}</td>
<td class="td-right">
{{#link-to "adminPlugins.discourse-subscriptions.products.show.plans.show" model.product.id plan.id class="btn no-text btn-icon"}}
{{d-icon "far-edit"}}
{{/link-to}}
</td>
</tr>
{{else}}
<tr>
<td colspan="8">
<hr>
{{i18n "discourse_subscriptions.admin.products.product.plan_help"}}
</td>
</tr>
{{/each}}
</tbody>
</table>
</p>
{{/unless}}
<div class="pull-right">
{{d-button label="cancel" action=(action "cancelProduct") icon="times"}}
{{#if model.product.isNew}}
{{d-button label="discourse_subscriptions.admin.products.operations.create" action="createProduct" icon="plus" class="btn btn-primary"}}
{{d-button
label="discourse_subscriptions.admin.products.operations.create"
action="createProduct"
icon="plus"
class="btn btn-primary"
}}
{{else}}
{{d-button label="discourse_subscriptions.admin.products.operations.update" action="updateProduct" icon="check" class="btn btn-primary"}}
{{d-button
label="discourse_subscriptions.admin.products.operations.update"
action="updateProduct"
icon="check"
class="btn btn-primary"
}}
{{/if}}
</div>

View File

@ -1,46 +1,54 @@
{{#if model.unconfigured}}
<p>{{i18n 'discourse_subscriptions.admin.unconfigured'}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n 'discourse_subscriptions.admin.on_meta'}}</a></p>
<p>{{i18n "discourse_subscriptions.admin.unconfigured"}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n "discourse_subscriptions.admin.on_meta"}}</a></p>
{{else}}
{{#load-more selector=".discourse-patrons-table tr" action=(action "loadMore")}}
<table class="table discourse-patrons-table">
<thead>
<tr>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.user'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.subscription_id'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.customer'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.product'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.plan'}}</th>
<th>{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.status'}}</th>
<th class="td-right">{{i18n 'discourse_subscriptions.admin.subscriptions.subscription.created_at'}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.user"}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.subscription_id"}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.customer"}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.product"}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.plan"}}</th>
<th>{{i18n "discourse_subscriptions.admin.subscriptions.subscription.status"}}</th>
<th class="td-right">{{i18n "discourse_subscriptions.admin.subscriptions.subscription.created_at"}}</th>
<th></th>
</tr>
</thead>
{{#each model.data as |subscription|}}
<tr>
<td>
{{#if subscription.metadataUserExists}}
<a href="{{unbound subscription.subscriptionUserPath}}">
{{subscription.metadata.username}}
</a>
{{/if}}
</td>
<td>{{subscription.id}}</td>
<td>{{subscription.customer}}</td>
<td>{{subscription.plan.product.name}}</td>
<td>{{subscription.plan.nickname}}</td>
<td>{{subscription.status}}</td>
<td class="td-right">{{format-unix-date subscription.created}}</td>
<td class="td-right">
{{#if subscription.loading}}
{{loading-spinner size="small"}}
{{else}}
{{d-button disabled=subscription.canceled label="cancel" action=(action "showCancelModal" subscription) icon="times"}}
{{/if}}
</td>
</tr>
{{/each}}
<tbody>
{{#each model.data as |subscription|}}
<tr>
<td>
{{#if subscription.metadataUserExists}}
<a href={{subscription.subscriptionUserPath}}>
{{subscription.metadata.username}}
</a>
{{/if}}
</td>
<td>{{subscription.id}}</td>
<td>{{subscription.customer}}</td>
<td>{{subscription.plan.product.name}}</td>
<td>{{subscription.plan.nickname}}</td>
<td>{{subscription.status}}</td>
<td class="td-right">{{format-unix-date subscription.created}}</td>
<td class="td-right">
{{#if subscription.loading}}
{{loading-spinner size="small"}}
{{else}}
{{d-button
disabled=subscription.canceled
label="cancel"
action=(action "showCancelModal" subscription)
icon="times"
}}
{{/if}}
</td>
</tr>
{{/each}}
</tbody>
</table>
{{/load-more}}
{{conditional-loading-spinner condition=loading}}
{{/if}}

View File

@ -1,5 +1,4 @@
<h2>{{i18n 'discourse_subscriptions.title' site_name=siteSettings.title}}</h2>
<h2>{{i18n "discourse_subscriptions.title" site_name=siteSettings.title}}</h2>
{{#if stripeConfigured}}
<div class="discourse-subscriptions-buttons">
@ -7,14 +6,14 @@
{{d-button
label="discourse_subscriptions.campaign.refresh_campaign"
icon="sync-alt"
action=(action 'triggerManualRefresh')
action=(action "triggerManualRefresh")
}}
{{else}}
{{#unless campaignProductSet}}
{{d-button
label="discourse_subscriptions.campaign.one_click_campaign"
icon="plus-square"
action=(action 'createOneClickCampaign')
action=(action "createOneClickCampaign")
isLoading=loading
}}
{{/unless}}
@ -22,9 +21,9 @@
</div>
<ul class="nav nav-pills">
{{nav-item route='adminPlugins.discourse-subscriptions.products' label='discourse_subscriptions.admin.products.title'}}
{{nav-item route='adminPlugins.discourse-subscriptions.coupons' label='discourse_subscriptions.admin.coupons.title'}}
{{nav-item route='adminPlugins.discourse-subscriptions.subscriptions' label='discourse_subscriptions.admin.subscriptions.title'}}
{{nav-item route="adminPlugins.discourse-subscriptions.products" label="discourse_subscriptions.admin.products.title"}}
{{nav-item route="adminPlugins.discourse-subscriptions.coupons" label="discourse_subscriptions.admin.coupons.title"}}
{{nav-item route="adminPlugins.discourse-subscriptions.subscriptions" label="discourse_subscriptions.admin.subscriptions.title"}}
</ul>
<hr>
@ -33,6 +32,6 @@
{{outlet}}
</div>
{{else}}
<p>{{i18n 'discourse_subscriptions.admin.unconfigured'}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n 'discourse_subscriptions.admin.on_meta'}}</a></p>
<p>{{i18n "discourse_subscriptions.admin.unconfigured"}}</p>
<p><a href="https://meta.discourse.org/t/discourse-subscriptions/140818/">{{i18n "discourse_subscriptions.admin.on_meta"}}</a></p>
{{/if}}

View File

@ -1,85 +1,85 @@
{{#if shouldShow}}
<div class="campaign-banner" style="box-shadow: 5px 5px #{{dropShadowColor}}">
<div class="campaign-banner" style={{html-safe (concat "box-shadow: 5px 5px #" dropShadowColor)}}>
{{d-button
icon="times"
action="dismissBanner"
class="close"
}}
<div class="campaign-banner-info" style="{{if backgroundImageUrl 'background-image: linear-gradient(
0deg,
rgba(var(--secondary-rgb), 0.75) 0%,
rgba(var(--secondary-rgb), 0.75) 100%),
var(--campaign-background-image);
background-size: cover;
background-repeat: no-repeat;' ''}}">
<div class="campaign-banner-info" style={{html-safe this.bannerInfoStyle}}>
{{#if isGoalMet}}
<h2 class="campaign-banner-info-header">{{i18n 'discourse_subscriptions.campaign.success_title'}}</h2>
<p class="campaign-banner-info-description">{{i18n 'discourse_subscriptions.campaign.success_body'}}</p>
<h2 class="campaign-banner-info-header">{{i18n "discourse_subscriptions.campaign.success_title"}}</h2>
<p class="campaign-banner-info-description">{{i18n "discourse_subscriptions.campaign.success_body"}}</p>
{{else}}
<h2 class="campaign-banner-info-header">{{i18n 'discourse_subscriptions.campaign.title'}}</h2>
<p class="campaign-banner-info-description">{{i18n 'discourse_subscriptions.campaign.body'}}</p>
<h2 class="campaign-banner-info-header">{{i18n "discourse_subscriptions.campaign.title"}}</h2>
<p class="campaign-banner-info-description">{{i18n "discourse_subscriptions.campaign.body"}}</p>
{{#if product}}
{{#link-to "s.show" product disabled=product.subscribed class="btn btn-primary campaign-banner-info-button"}}
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n "discourse_subscriptions.campaign.button"}}
{{/link-to}}
{{else}}
{{#link-to "s" class="btn btn-primary campaign-banner-info-button"}}
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n "discourse_subscriptions.campaign.button"}}
{{/link-to}}
{{/if}}
{{/if}}
</div>
<div class="campaign-banner-progress">
{{#if isGoalMet}}
<div class="fireworks">
<div class="before"></div>
<div class="after"></div>
</div>
<div class="campaign-banner-progress-success"></div>
{{#if subscriberGoal}}
<p class="campaign-banner-progress-description">
{{html-safe (i18n 'discourse_subscriptions.campaign.goal_comparison' current=subscribers goal=goalTarget)}}
{{i18n 'discourse_subscriptions.campaign.subscribers'}}
{{html-safe (i18n "discourse_subscriptions.campaign.goal_comparison" current=subscribers goal=goalTarget)}}
{{i18n "discourse_subscriptions.campaign.subscribers"}}
</p>
{{else}}
<p class="campaign-banner-progress-description">
{{html-safe (i18n 'discourse_subscriptions.campaign.goal_comparison' current=(format-currency currency amountRaised) goal=(format-currency currency goalTarget))}}
{{i18n 'discourse_subscriptions.campaign.raised'}}
{{html-safe (i18n "discourse_subscriptions.campaign.goal_comparison" current=(format-currency currency amountRaised) goal=(format-currency currency goalTarget))}}
{{i18n "discourse_subscriptions.campaign.raised"}}
</p>
{{#if showContributors}}
{{#conditional-loading-spinner condition=loading size="small"}}
<div class="campaign-banner-progress-users">
<p class="campaign-banner-progress-users-title">
<strong>{{i18n 'discourse_subscriptions.campaign.recent_contributors'}}</strong>
</p>
<div class="campaign-banner-progress-users-avatars">
{{#each contributors as |contributor|}}
{{avatar contributor avatarTemplatePath="avatar_template" usernamePath="username" namePath="name" imageSize="small"}}
{{/each}}
</div>
{{#if showContributors}}
{{#conditional-loading-spinner condition=loading size="small"}}
<div class="campaign-banner-progress-users">
<p class="campaign-banner-progress-users-title">
<strong>{{i18n "discourse_subscriptions.campaign.recent_contributors"}}</strong>
</p>
<div class="campaign-banner-progress-users-avatars">
{{#each contributors as |contributor|}}
{{avatar contributor avatarTemplatePath="avatar_template" usernamePath="username" namePath="name" imageSize="small"}}
{{/each}}
</div>
{{/conditional-loading-spinner}}
{{/if}}
</div>
{{/conditional-loading-spinner}}
{{/if}}
{{/if}}
{{else}}
{{#if subscriberGoal}}
<progress class="campaign-banner-progress-bar" value="{{subscribers}}" max="{{siteSettings.discourse_subscriptions_campaign_goal}}"/>
<progress class="campaign-banner-progress-bar" value={{subscribers}} max={{siteSettings.discourse_subscriptions_campaign_goal}}/>
<p class="campaign-banner-progress-description">
{{i18n 'discourse_subscriptions.campaign.goal_comparison' current=subscribers goal=goalTarget}}
{{i18n 'discourse_subscriptions.campaign.subscribers'}}
{{i18n "discourse_subscriptions.campaign.goal_comparison" current=subscribers goal=goalTarget}}
{{i18n "discourse_subscriptions.campaign.subscribers"}}
</p>
{{else}}
<progress class="campaign-banner-progress-bar" value="{{amountRaised}}" max="{{siteSettings.discourse_subscriptions_campaign_goal}}"/>
<progress class="campaign-banner-progress-bar" value={{amountRaised}} max={{siteSettings.discourse_subscriptions_campaign_goal}}/>
<p class="campaign-banner-progress-description">
{{html-safe (i18n 'discourse_subscriptions.campaign.goal_comparison' current=(format-currency currency amountRaised) goal=(format-currency currency goalTarget))}}
{{i18n 'discourse_subscriptions.campaign.raised'}}
{{html-safe (i18n "discourse_subscriptions.campaign.goal_comparison" current=(format-currency currency amountRaised) goal=(format-currency currency goalTarget))}}
{{i18n "discourse_subscriptions.campaign.raised"}}
</p>
{{/if}}
{{#if showContributors}}
{{#conditional-loading-spinner condition=loading size="small"}}
<div class="campaign-banner-progress-users">
<p class="campaign-banner-progress-users-title">
<strong>{{i18n 'discourse_subscriptions.campaign.recent_contributors'}}</strong>
<strong>{{i18n "discourse_subscriptions.campaign.recent_contributors"}}</strong>
</p>
<div class="campaign-banner-progress-users-avatars">
{{#each contributors as |contributor|}}

View File

@ -1,11 +1,11 @@
<div class='create-coupon-form'>
<div class="create-coupon-form">
<form class="form-horizontal">
<p>
<label for="promo_code">{{i18n 'discourse_subscriptions.admin.coupons.promo_code'}}</label>
<label for="promo_code">{{i18n "discourse_subscriptions.admin.coupons.promo_code"}}</label>
{{input type="text" name="promo_code" value=promoCode}}
</p>
<p>
<label for="amount">{{i18n 'discourse_subscriptions.admin.coupons.discount'}}</label>
<label for="amount">{{i18n "discourse_subscriptions.admin.coupons.discount"}}</label>
{{combo-box
content=discountTypes
value=discountType
@ -15,7 +15,7 @@
</p>
<p>
<label for="active">
{{i18n 'discourse_subscriptions.admin.coupons.active'}}
{{i18n "discourse_subscriptions.admin.coupons.active"}}
</label>
{{input type="checkbox" name="active" checked=active}}
</p>

View File

@ -1,2 +1,2 @@
<h3>{{i18n 'discourse_subscriptions.subscribe.unauthenticated'}}</h3>
<h3>{{i18n "discourse_subscriptions.subscribe.unauthenticated"}}</h3>
{{d-button label="log_in" action="createAccount" icon="user" class="btn btn-primary"}}

View File

@ -8,22 +8,22 @@
<div class="product-purchase">
{{#if product.repurchaseable}}
{{#link-to "s.show" product.id class="btn btn-primary"}}
{{i18n 'discourse_subscriptions.subscribe.title'}}
{{i18n "discourse_subscriptions.subscribe.title"}}
{{/link-to}}
{{#if product.subscribed}}
{{#link-to "user.billing.subscriptions" currentUser.username class="billing-link"}}
{{i18n 'discourse_subscriptions.subscribe.view_past'}}
{{i18n "discourse_subscriptions.subscribe.view_past"}}
{{/link-to}}
{{/if}}
{{else}}
{{#if product.subscribed}}
<span class="purchased">&#x2713; {{i18n 'discourse_subscriptions.subscribe.purchased'}}</span>
<span class="purchased">&#x2713; {{i18n "discourse_subscriptions.subscribe.purchased"}}</span>
{{#link-to "user.billing.subscriptions" currentUser.username class="billing-link"}}
{{i18n 'discourse_subscriptions.subscribe.go_to_billing'}}
{{i18n "discourse_subscriptions.subscribe.go_to_billing"}}
{{/link-to}}
{{else}}
{{#link-to "s.show" product.id disabled=product.subscribed class="btn btn-primary"}}
{{i18n 'discourse_subscriptions.subscribe.title'}}
{{i18n "discourse_subscriptions.subscribe.title"}}
{{/link-to}}
{{/if}}
{{/if}}

View File

@ -1,5 +1,5 @@
{{#if emptyProducts}}
<p>{{i18n 'discourse_subscriptions.subscribe.no_products'}}</p>
<p>{{i18n "discourse_subscriptions.subscribe.no_products"}}</p>
{{else}}
{{#each products as |product|}}
{{product-item product=product isLoggedIn=isLoggedIn}}

View File

@ -1,2 +1 @@
<div id="card-element"></div>

View File

@ -1 +1 @@
{{campaign-banner connectorName='above-main-container'}}
{{campaign-banner connectorName="above-main-container"}}

View File

@ -1 +1 @@
{{campaign-banner connectorName='after-topic-footer-buttons'}}
{{campaign-banner connectorName="after-topic-footer-buttons"}}

View File

@ -1 +1 @@
{{campaign-banner connectorName='before-topic-list'}}
{{campaign-banner connectorName="before-topic-list"}}

View File

@ -1,3 +1,3 @@
{{#if (user-viewing-self model)}}
{{#link-to 'user.billing'}}{{d-icon "far-credit-card"}}{{I18n 'discourse_subscriptions.navigation.billing'}}{{/link-to}}
{{#link-to "user.billing"}}{{d-icon "far-credit-card"}}{{I18n "discourse_subscriptions.navigation.billing"}}{{/link-to}}
{{/if}}

View File

@ -4,7 +4,6 @@
{{i18n "discourse_subscriptions.admin.ask_refund"}}
{{/d-modal-body}}
<div class="modal-footer">
{{#if model.loading}}
{{loading-spinner}}

View File

@ -1,8 +1,7 @@
<div class="container">
<div class="title-wrapper">
<h1>
{{i18n 'discourse_subscriptions.subscribe.title'}}
{{i18n "discourse_subscriptions.subscribe.title"}}
</h1>
</div>

View File

@ -1,4 +1,5 @@
{{#unless isLoggedIn}}
{{login-required}}
{{/unless}}
{{product-list products=model isLoggedIn=isLoggedIn}}

View File

@ -1,4 +1,3 @@
<div class="discourse-subscriptions-section-columns">
<div class="section-column discourse-subscriptions-confirmation-billing">
<h2>
@ -14,7 +13,7 @@
<div class="section-column">
{{#if canPurchase}}
<h2>
{{i18n 'discourse_subscriptions.subscribe.card.title'}}
{{i18n "discourse_subscriptions.subscribe.card.title"}}
</h2>
<hr>
@ -33,7 +32,7 @@
{{else if isAnonymous}}
{{login-required}}
{{else}}
<div class='promo-code'>
<div class="promo-code">
{{input type="text" name="promo_code" placeholderKey="discourse_subscriptions.subscribe.promo_code" value=promoCode}}
</div>
@ -45,9 +44,10 @@
}}
{{/if}}
{{else}}
<h2>{{i18n 'discourse_subscriptions.subscribe.already_purchased'}}</h2>
<h2>{{i18n "discourse_subscriptions.subscribe.already_purchased"}}</h2>
{{#link-to "user.billing.subscriptions" currentUser.username class="btn btn-primary"}}
{{i18n 'discourse_subscriptions.subscribe.go_to_billing'}}
{{i18n "discourse_subscriptions.subscribe.go_to_billing"}}
{{/link-to}}
{{/if}}
</div>

View File

@ -1,22 +1,23 @@
{{#d-section pageClass="user-billing" class="user-secondary-navigation" scrollTop="false"}}
{{#mobile-nav
class='activity-nav'
desktopClass='action-list nav-stacked'
class="activity-nav"
desktopClass="action-list nav-stacked"
currentPath=router._router.currentPath
}}
<li>
{{#link-to 'user.billing.subscriptions'}}
{{i18n 'discourse_subscriptions.navigation.subscriptions'}}
{{#link-to "user.billing.subscriptions"}}
{{i18n "discourse_subscriptions.navigation.subscriptions"}}
{{/link-to}}
</li>
<li>
{{#link-to 'user.billing.payments'}}
{{i18n 'discourse_subscriptions.navigation.payments'}}
{{#link-to "user.billing.payments"}}
{{i18n "discourse_subscriptions.navigation.payments"}}
{{/link-to}}
</li>
{{/mobile-nav}}
{{/d-section}}
<section class='user-content'>
<section class="user-content">
{{outlet}}
</section>

View File

@ -1,4 +1 @@
BILLING INDEX

View File

@ -1,20 +1,22 @@
{{#if model}}
<table class="table discourse-subscriptions-user-table">
<thead>
<th>{{i18n 'discourse_subscriptions.user.payments.id'}}</th>
<th>{{i18n 'discourse_subscriptions.user.payments.amount'}}</th>
<th>{{i18n 'discourse_subscriptions.user.payments.created_at'}}</th>
<th>{{i18n "discourse_subscriptions.user.payments.id"}}</th>
<th>{{i18n "discourse_subscriptions.user.payments.amount"}}</th>
<th>{{i18n "discourse_subscriptions.user.payments.created_at"}}</th>
</thead>
{{#each model as |payment|}}
<tr>
<td>{{payment.id}}</td>
<td>{{format-currency payment.currency payment.amountDollars}}</td>
<td>{{format-unix-date payment.created}}</td>
</tr>
{{/each}}
<tbody>
{{#each model as |payment|}}
<tr>
<td>{{payment.id}}</td>
<td>{{format-currency payment.currency payment.amountDollars}}</td>
<td>{{format-unix-date payment.created}}</td>
</tr>
{{/each}}
</tbody>
</table>
{{else}}
<div class="alert alert-info">
{{i18n 'discourse_subscriptions.user.payments_help'}}
{{i18n "discourse_subscriptions.user.payments_help"}}
</div>
{{/if}}

View File

@ -1,40 +1,42 @@
{{#if model}}
<table class="table discourse-subscriptions-user-table">
<thead>
<th>{{i18n 'discourse_subscriptions.user.subscriptions.id'}}</th>
<th>{{i18n 'discourse_subscriptions.user.plans.product'}}</th>
<th>{{i18n 'discourse_subscriptions.user.plans.rate'}}</th>
<th>{{i18n 'discourse_subscriptions.user.subscriptions.discounted'}}</th>
<th>{{i18n 'discourse_subscriptions.user.subscriptions.status'}}</th>
<th>{{i18n 'discourse_subscriptions.user.subscriptions.renews'}}</th>
<th>{{i18n 'discourse_subscriptions.user.subscriptions.created_at'}}</th>
<th>{{i18n "discourse_subscriptions.user.subscriptions.id"}}</th>
<th>{{i18n "discourse_subscriptions.user.plans.product"}}</th>
<th>{{i18n "discourse_subscriptions.user.plans.rate"}}</th>
<th>{{i18n "discourse_subscriptions.user.subscriptions.discounted"}}</th>
<th>{{i18n "discourse_subscriptions.user.subscriptions.status"}}</th>
<th>{{i18n "discourse_subscriptions.user.subscriptions.renews"}}</th>
<th>{{i18n "discourse_subscriptions.user.subscriptions.created_at"}}</th>
<th></th>
</thead>
{{#each model as |subscription|}}
<tr>
<td>{{subscription.id}}</td>
<td>{{subscription.product.name}}</td>
<td>{{subscription.plan.subscriptionRate}}</td>
<td>{{subscription.discounted}}</td>
<td>{{subscription.status}}</td>
<td>{{subscription.endDate}}</td>
<td>{{format-unix-date subscription.created}}</td>
<td class="td-right">
{{#if subscription.loading}}
{{loading-spinner size="small"}}
{{else}}
{{#if subscription.canceled_at}}
{{d-button disabled=subscription.canceled_at label="discourse_subscriptions.user.subscriptions.cancelled"}}
<tbody>
{{#each model as |subscription|}}
<tr>
<td>{{subscription.id}}</td>
<td>{{subscription.product.name}}</td>
<td>{{subscription.plan.subscriptionRate}}</td>
<td>{{subscription.discounted}}</td>
<td>{{subscription.status}}</td>
<td>{{subscription.endDate}}</td>
<td>{{format-unix-date subscription.created}}</td>
<td class="td-right">
{{#if subscription.loading}}
{{loading-spinner size="small"}}
{{else}}
{{d-button disabled=subscription.canceled_at label="discourse_subscriptions.user.subscriptions.cancel" action=(route-action "cancelSubscription" subscription) icon="times"}}
{{#if subscription.canceled_at}}
{{d-button disabled=subscription.canceled_at label="discourse_subscriptions.user.subscriptions.cancelled"}}
{{else}}
{{d-button disabled=subscription.canceled_at label="discourse_subscriptions.user.subscriptions.cancel" action=(route-action "cancelSubscription" subscription) icon="times"}}
{{/if}}
{{/if}}
{{/if}}
</td>
</tr>
{{/each}}
</td>
</tr>
{{/each}}
</tbody>
</table>
{{else}}
<div class="alert alert-info">
{{i18n 'discourse_subscriptions.user.subscriptions_help'}}
{{i18n "discourse_subscriptions.user.subscriptions_help"}}
</div>
{{/if}}

View File

@ -70,8 +70,7 @@ en:
week: Weekly
month: Monthly
year: Yearly
payment_button:
Subscribe
payment_button: Subscribe
success: Thank you! Your subscription has been created.
incomplete: The payment is incomplete. Your subscription will be updated when payment is complete.
validate:
@ -143,7 +142,7 @@ en:
update: Update Product
new: New Product
destroy:
confirm: Are you sure you want to destroy this product?
confirm: Are you sure you want to destroy this product?
product:
product_id: Product ID
name: Product Name

1
jsapp
View File

@ -1 +0,0 @@
assets/javascripts/discourse