mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +00:00
language strings updates
This commit is contained in:
@@ -70,6 +70,10 @@ Add the following Cron entry to your server. Just update your php path (if it's
|
|||||||
* * * * * /usr/local/bin/php /www/html/your-project/artisan schedule:run >> /dev/null 2>&1
|
* * * * * /usr/local/bin/php /www/html/your-project/artisan schedule:run >> /dev/null 2>&1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 8. Broadcasting
|
||||||
|
|
||||||
|
coming soon...
|
||||||
|
|
||||||
## Nginx Configuration
|
## Nginx Configuration
|
||||||
If you running VueFileManager under Nginx, don't forget set this value in your `nginx.conf` file:
|
If you running VueFileManager under Nginx, don't forget set this value in your `nginx.conf` file:
|
||||||
```
|
```
|
||||||
@@ -134,6 +138,11 @@ Make sure you have enabled mod_rewrite. There is an example config for running V
|
|||||||
# Developers
|
# Developers
|
||||||
## Running development environment on your localhost
|
## Running development environment on your localhost
|
||||||
|
|
||||||
|
**For running development environment make sure you have:**
|
||||||
|
|
||||||
|
- Node >= 14
|
||||||
|
- NPM >= 6
|
||||||
|
|
||||||
If you would like to express set up, please update your database credentials in .env file
|
If you would like to express set up, please update your database credentials in .env file
|
||||||
```
|
```
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,53 +1,53 @@
|
|||||||
{
|
{
|
||||||
"/js/main.js": "/js/main.js",
|
"/js/main.js": "/js/main.js",
|
||||||
"/chunks/request.js": "/chunks/request.js?id=88d37ed86ceba816",
|
"/chunks/request.js": "/chunks/request.js?id=dfe723f178024684",
|
||||||
"/chunks/request-upload.js": "/chunks/request-upload.js?id=9722fdb2f733ed4d",
|
"/chunks/request-upload.js": "/chunks/request-upload.js?id=adb096eca092cfdf",
|
||||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec",
|
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec",
|
||||||
"/chunks/status-check.js": "/chunks/status-check.js?id=86537fa25cb2c188",
|
"/chunks/status-check.js": "/chunks/status-check.js?id=ca27b637120e086a",
|
||||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
|
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
|
||||||
"/chunks/database.js": "/chunks/database.js?id=1d8661f23ef3f761",
|
"/chunks/database.js": "/chunks/database.js?id=6bd9994bd24d6c8d",
|
||||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=b27ffed124d1dbc9",
|
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=fc9b6215ce43229b",
|
||||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=c0958df6a3672aa6",
|
"/chunks/app-setup.js": "/chunks/app-setup.js?id=77937d105dfa28ba",
|
||||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=2e8ec4e6bd25f645",
|
"/chunks/admin-account.js": "/chunks/admin-account.js?id=6dbc3fe81f957a59",
|
||||||
"/chunks/shared.js": "/chunks/shared.js?id=1e0220ae85779862",
|
"/chunks/shared.js": "/chunks/shared.js?id=b7a9b097ce035686",
|
||||||
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=d3b959af90b6d1e3",
|
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=855a1efa8bc5a5cd",
|
||||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=af632a9bdc82be95",
|
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=9ccb8bb19b95a23f",
|
||||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=672e931a9fb0b672",
|
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=672e931a9fb0b672",
|
||||||
"/chunks/not-found.js": "/chunks/not-found.js?id=9f6ce23ce5d969f1",
|
"/chunks/not-found.js": "/chunks/not-found.js?id=9f6ce23ce5d969f1",
|
||||||
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=423f9af0ed1f7c85",
|
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=f564565faa09d6d6",
|
||||||
"/chunks/admin.js": "/chunks/admin.js?id=a1750b4ce22d58f8",
|
"/chunks/admin.js": "/chunks/admin.js?id=40ae44d319d3322b",
|
||||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=cb7c5fd2d6dbf0df",
|
"/chunks/dashboard.js": "/chunks/dashboard.js?id=c7fa2f0dc8ed949c",
|
||||||
"/chunks/invoices.js": "/chunks/invoices.js?id=f89964a5a55ace45",
|
"/chunks/invoices.js": "/chunks/invoices.js?id=1416cbf6d1a593ac",
|
||||||
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=3a34c7abf7c39465",
|
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=5bf6704f5b599f36",
|
||||||
"/chunks/pages.js": "/chunks/pages.js?id=a22d90135b5c42a5",
|
"/chunks/pages.js": "/chunks/pages.js?id=c8380d571e91e8be",
|
||||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=b19868b3100360a3",
|
"/chunks/page-edit.js": "/chunks/page-edit.js?id=b19868b3100360a3",
|
||||||
"/chunks/plans.js": "/chunks/plans.js?id=3596e49797d8e542",
|
"/chunks/plans.js": "/chunks/plans.js?id=c8506e0e20966ef7",
|
||||||
"/chunks/users.js": "/chunks/users.js?id=fca6ae29a4db92e8",
|
"/chunks/users.js": "/chunks/users.js?id=ec687ee365c4248a",
|
||||||
"/chunks/user-create.js": "/chunks/user-create.js?id=f3d40fff62b631c3",
|
"/chunks/user-create.js": "/chunks/user-create.js?id=bb3b30ce248209f0",
|
||||||
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=cc9d00d1f7b2b08d",
|
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=a8ffa08ce94ddf4e",
|
||||||
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=a9ca1e309b659182",
|
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=3b516dcccbbef20a",
|
||||||
"/chunks/user.js": "/chunks/user.js?id=6372d05a9abdc1c2",
|
"/chunks/user.js": "/chunks/user.js?id=c191b906a0496fe5",
|
||||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=c114a34ec886981f",
|
"/chunks/user-detail.js": "/chunks/user-detail.js?id=80491654e6ee63b1",
|
||||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=72a0d5f53d7a2cc8",
|
"/chunks/user-storage.js": "/chunks/user-storage.js?id=69eb59b682c5482f",
|
||||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=f033931911b07f5c",
|
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=a69ebc3b23446cda",
|
||||||
"/chunks/user-password.js": "/chunks/user-password.js?id=6d23f552e9d52c49",
|
"/chunks/user-password.js": "/chunks/user-password.js?id=e1c4ebc07ba426e6",
|
||||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=82b5180a1d9e1217",
|
"/chunks/user-delete.js": "/chunks/user-delete.js?id=82b5180a1d9e1217",
|
||||||
"/chunks/plan.js": "/chunks/plan.js?id=d3864115f662f616",
|
"/chunks/plan.js": "/chunks/plan.js?id=4b267375ea9f19b3",
|
||||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=4d7859aa1f1a3f7f",
|
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=a956ceca6865c50c",
|
||||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=866099771fab6dcc",
|
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=f366690f8764bb20",
|
||||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=e26d5bd3ecbb4bb1",
|
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=e26d5bd3ecbb4bb1",
|
||||||
"/chunks/payments.js": "/chunks/payments.js?id=3302fa3148c766de",
|
"/chunks/payments.js": "/chunks/payments.js?id=dc4586691c25de6f",
|
||||||
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=45bdae67aa7d936f",
|
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=9942aaac1bdb11e5",
|
||||||
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=76886eefc4b9d00a",
|
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=717bf97ba2ffdc28",
|
||||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=64d41e8b5ce7ff28",
|
"/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069",
|
||||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=20103e4ae5bac339",
|
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=c308941663208358",
|
||||||
"/chunks/app-index.js": "/chunks/app-index.js?id=a93175b2a28b1d56",
|
"/chunks/app-index.js": "/chunks/app-index.js?id=aa62aedf1f38cc22",
|
||||||
"/chunks/app-environment.js": "/chunks/app-environment.js?id=68e6d7a9cd872cb7",
|
"/chunks/app-environment.js": "/chunks/app-environment.js?id=538eea914fc27794",
|
||||||
"/chunks/app-others.js": "/chunks/app-others.js?id=c6ffde5374b27ae2",
|
"/chunks/app-others.js": "/chunks/app-others.js?id=19963f8026eb335a",
|
||||||
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=d3ed0a81743ac3ba",
|
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=3f8e5f906a4dee4e",
|
||||||
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=4ee8de4ac0dae19e",
|
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=4ee8de4ac0dae19e",
|
||||||
"/chunks/app-server.js": "/chunks/app-server.js?id=8269a0df9064927f",
|
"/chunks/app-server.js": "/chunks/app-server.js?id=dd8c15d4646053cd",
|
||||||
"/chunks/app-language.js": "/chunks/app-language.js?id=83a53ba4d233ae46",
|
"/chunks/app-language.js": "/chunks/app-language.js?id=ba087a47c8efca29",
|
||||||
"/chunks/homepage.js": "/chunks/homepage.js?id=f1cfba4f0152f4b9",
|
"/chunks/homepage.js": "/chunks/homepage.js?id=f1cfba4f0152f4b9",
|
||||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2504793131107b1f",
|
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2504793131107b1f",
|
||||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=2e0b16655d2d85d7",
|
"/chunks/contact-us.js": "/chunks/contact-us.js?id=2e0b16655d2d85d7",
|
||||||
@@ -57,19 +57,19 @@
|
|||||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=77351b7631a6ee6c",
|
"/chunks/sign-up.js": "/chunks/sign-up.js?id=77351b7631a6ee6c",
|
||||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=50a1bc5e4ed86ec9",
|
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=50a1bc5e4ed86ec9",
|
||||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f652de052dba55c1",
|
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f652de052dba55c1",
|
||||||
"/chunks/settings.js": "/chunks/settings.js?id=0c64ce909339f286",
|
"/chunks/settings.js": "/chunks/settings.js?id=db0f876b7f1229bb",
|
||||||
"/chunks/profile.js": "/chunks/profile.js?id=aa448a63771d7ad0",
|
"/chunks/profile.js": "/chunks/profile.js?id=5b2ed82815320625",
|
||||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=70128f4330237452",
|
"/chunks/settings-password.js": "/chunks/settings-password.js?id=c912a79595c2efcb",
|
||||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=80bca2eb75da275d",
|
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=6fec7aac1a5280c7",
|
||||||
"/chunks/billing.js": "/chunks/billing.js?id=7d56ea0d79e31c19",
|
"/chunks/billing.js": "/chunks/billing.js?id=2a2cd66f503a9fc0",
|
||||||
"/chunks/platform.js": "/chunks/platform.js?id=31b2ecb59e3124fc",
|
"/chunks/platform.js": "/chunks/platform.js?id=409b7dc2a080e93e",
|
||||||
"/chunks/files.js": "/chunks/files.js?id=40434484f678dfcf",
|
"/chunks/files.js": "/chunks/files.js?id=7ba4274a7b63f15b",
|
||||||
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=cd3353e8928b57df",
|
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=aeb9ea7f43a75aa1",
|
||||||
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=b3a32dbacd1e408e",
|
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ed296d2d8f6b4302",
|
||||||
"/chunks/trash.js": "/chunks/trash.js?id=878ef09616cc4668",
|
"/chunks/trash.js": "/chunks/trash.js?id=b671a56c6cfb99da",
|
||||||
"/chunks/team-folders.js": "/chunks/team-folders.js?id=2645ae9d570f94d2",
|
"/chunks/team-folders.js": "/chunks/team-folders.js?id=7518e54deade41d3",
|
||||||
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=ad9d57d26962de4a",
|
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=52f03c48445091e5",
|
||||||
"/chunks/invitation.js": "/chunks/invitation.js?id=21d172e77f12dbbb",
|
"/chunks/invitation.js": "/chunks/invitation.js?id=9ed8456c9d6d5ce1",
|
||||||
"/css/tailwind.css": "/css/tailwind.css",
|
"/css/tailwind.css": "/css/tailwind.css",
|
||||||
"/css/app.css": "/css/app.css"
|
"/css/app.css": "/css/app.css"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1" v-if="config.isSaaS">
|
<td class="px-3 md:px-1" v-if="config.isSaaS">
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -274,11 +274,11 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Billing Est.'),
|
label: this.$t('billing_est.'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -303,12 +303,12 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Max Storage'),
|
label: this.$t('max_storage'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
hidden: !this.config.storageLimit,
|
hidden: !this.config.storageLimit,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -333,12 +333,12 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Max Storage'),
|
label: this.$t('max_storage'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
hidden: !this.config.storageLimit,
|
hidden: !this.config.storageLimit,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
||||||
{{ $t('User was deleted') }}
|
{{ $t('user_was_deleted') }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -31,13 +31,13 @@
|
|||||||
v-if="config.subscriptionType === 'fixed'"
|
v-if="config.subscriptionType === 'fixed'"
|
||||||
:color="$getTransactionStatusColor(row.data.attributes.status)"
|
:color="$getTransactionStatusColor(row.data.attributes.status)"
|
||||||
>
|
>
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
<ColorLabel
|
<ColorLabel
|
||||||
v-if="config.subscriptionType === 'metered'"
|
v-if="config.subscriptionType === 'metered'"
|
||||||
:color="$getTransactionTypeColor(row.data.attributes.type)"
|
:color="$getTransactionTypeColor(row.data.attributes.type)"
|
||||||
>
|
>
|
||||||
{{ row.data.attributes.type }}
|
{{ $t(row.data.attributes.type) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
<!--Empty page-->
|
<!--Empty page-->
|
||||||
<template v-slot:empty-page>
|
<template v-slot:empty-page>
|
||||||
<InfoBox style="margin-bottom: 0">
|
<InfoBox style="margin-bottom: 0">
|
||||||
<p>{{ $t("There aren't any transactions.") }}</p>
|
<p>{{ $t("not_any_transactions") }}</p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
</template>
|
</template>
|
||||||
</DatatableWrapper>
|
</DatatableWrapper>
|
||||||
@@ -99,17 +99,17 @@ export default {
|
|||||||
return {
|
return {
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
label: this.$t('Note'),
|
label: this.$t('note'),
|
||||||
field: 'note',
|
field: 'note',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('User'),
|
label: this.$t('user'),
|
||||||
field: 'user_id',
|
field: 'user_id',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Status'),
|
label: this.$t('status'),
|
||||||
field: 'status',
|
field: 'status',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -119,12 +119,12 @@ export default {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Payed At'),
|
label: this.$t('payed_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Service'),
|
label: this.$t('service'),
|
||||||
field: 'driver',
|
field: 'driver',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
>
|
>
|
||||||
<template slot="loading">
|
<template slot="loading">
|
||||||
<b>
|
<b>
|
||||||
{{ $t('loading content...') }}
|
{{ $t('loading_content') }}
|
||||||
</b>
|
</b>
|
||||||
</template>
|
</template>
|
||||||
</pdf>
|
</pdf>
|
||||||
|
|||||||
@@ -12,11 +12,11 @@
|
|||||||
:action="$t('create_something')"
|
:action="$t('create_something')"
|
||||||
/>
|
/>
|
||||||
<PopoverItem name="desktop-create" side="left">
|
<PopoverItem name="desktop-create" side="left">
|
||||||
<OptionGroup :title="$t('Upload')">
|
<OptionGroup :title="$t('upload')">
|
||||||
<OptionUpload :title="$t('upload_files')" type="file" />
|
<OptionUpload :title="$t('upload_files')" type="file" />
|
||||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup :title="$t('Create')">
|
<OptionGroup :title="$t('create')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="$createFolder"
|
@click.native="$createFolder"
|
||||||
:title="$t('create_folder')"
|
:title="$t('create_folder')"
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
'is-inactive': !canManipulate,
|
'is-inactive': !canManipulate,
|
||||||
}"
|
}"
|
||||||
source="trash"
|
source="trash"
|
||||||
:action="$t('actions.delete')"
|
:action="$t('delete')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
/>
|
/>
|
||||||
<PopoverItem name="desktop-create" side="left">
|
<PopoverItem name="desktop-create" side="left">
|
||||||
<OptionGroup
|
<OptionGroup
|
||||||
:title="$t('Frequently Used')"
|
:title="$t('frequently_used')"
|
||||||
>
|
>
|
||||||
<OptionUpload
|
<OptionUpload
|
||||||
:title="$t('upload_files')"
|
:title="$t('upload_files')"
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
icon="folder-plus"
|
icon="folder-plus"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup :title="$t('Others')">
|
<OptionGroup :title="$t('others')">
|
||||||
<OptionUpload
|
<OptionUpload
|
||||||
:class="{
|
:class="{
|
||||||
'is-inactive': (isSharedWithMe && !canEdit) || canUploadFolderInView || isTeamFolderHomepage || isSharedWithMeHomepage,
|
'is-inactive': (isSharedWithMe && !canEdit) || canUploadFolderInView || isTeamFolderHomepage || isSharedWithMeHomepage,
|
||||||
@@ -42,12 +42,12 @@
|
|||||||
<Option
|
<Option
|
||||||
@click.stop.native="$createTeamFolder"
|
@click.stop.native="$createTeamFolder"
|
||||||
:class="{ 'is-inactive': canCreateTeamFolder }"
|
:class="{ 'is-inactive': canCreateTeamFolder }"
|
||||||
:title="$t('Create Team Folder')"
|
:title="$t('create_team_folder')"
|
||||||
icon="users"
|
icon="users"
|
||||||
/>
|
/>
|
||||||
<Option
|
<Option
|
||||||
@click.native="$createFileRequest"
|
@click.native="$createFileRequest"
|
||||||
:title="$t('Create File Request')"
|
:title="$t('create_file_request')"
|
||||||
icon="upload-cloud"
|
icon="upload-cloud"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
@@ -70,23 +70,23 @@
|
|||||||
<PopoverItem name="team-folder" side="left">
|
<PopoverItem name="team-folder" side="left">
|
||||||
<TeamFolderPreview />
|
<TeamFolderPreview />
|
||||||
|
|
||||||
<OptionGroup v-if="$isThisRoute($route, ['TeamFolders'])" :title="$t('Options')">
|
<OptionGroup v-if="$isThisRoute($route, ['TeamFolders'])" :title="$t('options')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="$updateTeamFolder(teamFolder)"
|
@click.native="$updateTeamFolder(teamFolder)"
|
||||||
:title="$t('Edit Members')"
|
:title="$t('edit_members')"
|
||||||
icon="rename"
|
icon="rename"
|
||||||
/>
|
/>
|
||||||
<Option
|
<Option
|
||||||
@click.native="$dissolveTeamFolder(teamFolder)"
|
@click.native="$dissolveTeamFolder(teamFolder)"
|
||||||
:title="$t('Dissolve Team')"
|
:title="$t('dissolve_team')"
|
||||||
icon="trash"
|
icon="trash"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
|
|
||||||
<OptionGroup v-if="$isThisRoute($route, ['SharedWithMe'])" :title="$t('Options')">
|
<OptionGroup v-if="$isThisRoute($route, ['SharedWithMe'])" :title="$t('options')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="$detachMeFromTeamFolder(teamFolder)"
|
@click.native="$detachMeFromTeamFolder(teamFolder)"
|
||||||
:title="$t('Leave the Team Folder')"
|
:title="$t('leave_team_folder')"
|
||||||
icon="user-minus"
|
icon="user-minus"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
'is-inactive': !canCreateTeamFolder,
|
'is-inactive': !canCreateTeamFolder,
|
||||||
}"
|
}"
|
||||||
source="user-plus"
|
source="user-plus"
|
||||||
:action="$t('actions.convert_into_team_folder')"
|
:action="$t('convert_into_team_folder')"
|
||||||
/>
|
/>
|
||||||
<ToolbarButton
|
<ToolbarButton
|
||||||
v-if="!$isThisRoute($route, ['SharedWithMe', 'Public'])"
|
v-if="!$isThisRoute($route, ['SharedWithMe', 'Public'])"
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
'is-inactive': canDeleteInView && !canEdit,
|
'is-inactive': canDeleteInView && !canEdit,
|
||||||
}"
|
}"
|
||||||
source="trash"
|
source="trash"
|
||||||
:action="$t('actions.delete')"
|
:action="$t('delete')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,11 +24,11 @@
|
|||||||
:action="$t('create_something')"
|
:action="$t('create_something')"
|
||||||
/>
|
/>
|
||||||
<PopoverItem name="desktop-create" side="left">
|
<PopoverItem name="desktop-create" side="left">
|
||||||
<OptionGroup :title="$t('Upload')">
|
<OptionGroup :title="$t('upload')">
|
||||||
<OptionUpload :title="$t('upload_files')" type="file" />
|
<OptionUpload :title="$t('upload_files')" type="file" />
|
||||||
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
<OptionUpload :title="$t('upload_folder')" type="folder" />
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup :title="$t('Create')">
|
<OptionGroup :title="$t('create')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="$createFolder"
|
@click.native="$createFolder"
|
||||||
:title="$t('create_folder')"
|
:title="$t('create_folder')"
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
'is-inactive': !canManipulate,
|
'is-inactive': !canManipulate,
|
||||||
}"
|
}"
|
||||||
source="trash"
|
source="trash"
|
||||||
:action="$t('actions.delete')"
|
:action="$t('delete')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export default {
|
|||||||
// Subtitle for single folder
|
// Subtitle for single folder
|
||||||
if (this.draggedItem.data.type === 'folder') {
|
if (this.draggedItem.data.type === 'folder') {
|
||||||
return this.draggedItem.items == 0
|
return this.draggedItem.items == 0
|
||||||
? this.$t('folder.empty')
|
? this.$t('empty')
|
||||||
: this.$tc('folder.item_counts', this.draggedItem.items)
|
: this.$tc('folder.item_counts', this.draggedItem.items)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<MenuMobile name="file-filter">
|
<MenuMobile name="file-filter">
|
||||||
<MenuMobileGroup>
|
<MenuMobileGroup>
|
||||||
<OptionGroup :title="$t('Base')">
|
<OptionGroup :title="$t('base')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToFiles"
|
@click.native="goToFiles"
|
||||||
:title="$t('sidebar.home')"
|
:title="$t('sidebar.home')"
|
||||||
@@ -31,17 +31,17 @@
|
|||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup :title="$t('Collaboration')">
|
<OptionGroup :title="$t('collaboration')">
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToTeamFolders"
|
@click.native="goToTeamFolders"
|
||||||
:title="$t('Team Folders')"
|
:title="$t('team_folders')"
|
||||||
icon="users"
|
icon="users"
|
||||||
:is-active="$isThisRoute($route, 'TeamFolders')"
|
:is-active="$isThisRoute($route, 'TeamFolders')"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToSharedWithMe"
|
@click.native="goToSharedWithMe"
|
||||||
:title="$t('Shared with Me')"
|
:title="$t('shared_with_me')"
|
||||||
icon="user-check"
|
icon="user-check"
|
||||||
:is-active="$isThisRoute($route, 'SharedWithMe')"
|
:is-active="$isThisRoute($route, 'SharedWithMe')"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<OptionGroup :title="$t('View')">
|
<OptionGroup :title="$t('view')">
|
||||||
<Option
|
<Option
|
||||||
v-if="isList"
|
v-if="isList"
|
||||||
@click.native="changePreview('grid')"
|
@click.native="changePreview('grid')"
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
icon="list"
|
icon="list"
|
||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup :title="$t('Sorting')">
|
<OptionGroup :title="$t('sorting')">
|
||||||
<Option
|
<Option
|
||||||
@click.native.stop="sort('created_at')"
|
@click.native.stop="sort('created_at')"
|
||||||
:arrow="arrowForCreatedAtField"
|
:arrow="arrowForCreatedAtField"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="flex items-center justify-between pt-0.5 pb-2" v-if="clipboard.data.attributes.date_time_original">
|
<div class="flex items-center justify-between pt-0.5 pb-2" v-if="clipboard.data.attributes.date_time_original">
|
||||||
<b class="font-bold text-sm">{{ $t('file_detail_meta.time_data') }}</b>
|
<b class="font-bold text-sm">{{ $t('time_data') }}</b>
|
||||||
<b class="font-bold text-sm">{{ clipboard.data.attributes.date_time_original }}</b>
|
<b class="font-bold text-sm">{{ clipboard.data.attributes.date_time_original }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<eye-off-icon size="22" class="vue-feather mb-3 inline-block text-gray-500" />
|
<eye-off-icon size="22" class="vue-feather mb-3 inline-block text-gray-500" />
|
||||||
<small class="block text-xs text-gray-500">
|
<small class="block text-xs text-gray-500">
|
||||||
{{ $t('messages.nothing_to_preview') }}
|
{{ $t('nothing_to_preview') }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</ListInfoItem>
|
</ListInfoItem>
|
||||||
|
|
||||||
<!--Author-->
|
<!--Author-->
|
||||||
<ListInfoItem v-if="canShowAuthor" :title="$t('Author')">
|
<ListInfoItem v-if="canShowAuthor" :title="$t('author')">
|
||||||
<div class="mt-1.5 flex items-center">
|
<div class="mt-1.5 flex items-center">
|
||||||
<MemberAvatar :size="32" :member="singleFile.data.relationships.owner" />
|
<MemberAvatar :size="32" :member="singleFile.data.relationships.owner" />
|
||||||
<span class="ml-3 block text-sm font-bold">
|
<span class="ml-3 block text-sm font-bold">
|
||||||
@@ -154,7 +154,7 @@ import { mapGetters } from 'vuex'
|
|||||||
return option.value === this.clipboard[0].data.relationships.shared.permission
|
return option.value === this.clipboard[0].data.relationships.shared.permission
|
||||||
})
|
})
|
||||||
|
|
||||||
return title ? this.$t(title.label) : this.$t('shared.can_download')
|
return title ? this.$t(title.label) : this.$t('can_download_file')
|
||||||
},
|
},
|
||||||
canShowAuthor() {
|
canShowAuthor() {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<eye-off-icon size="22" class="vue-feather mb-3 inline-block text-gray-500" />
|
<eye-off-icon size="22" class="vue-feather mb-3 inline-block text-gray-500" />
|
||||||
<small class="block text-xs text-gray-500">
|
<small class="block text-xs text-gray-500">
|
||||||
{{ $t('messages.nothing_to_preview') }}
|
{{ $t('nothing_to_preview') }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
<!--Folder sub line-->
|
<!--Folder sub line-->
|
||||||
<small v-if="isFolder" class="block text-xs text-gray-500 dark:text-gray-500">
|
<small v-if="isFolder" class="block text-xs text-gray-500 dark:text-gray-500">
|
||||||
{{ folderItems === 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems)
|
{{ folderItems === 0 ? $t('empty') : $tc('folder.item_counts', folderItems)
|
||||||
}}<span class="hidden text-xs text-gray-500 dark:text-gray-500 lg:inline-block"
|
}}<span class="hidden text-xs text-gray-500 dark:text-gray-500 lg:inline-block"
|
||||||
>, {{ timeStamp }}</span
|
>, {{ timeStamp }}</span
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
<!--Folder sub line-->
|
<!--Folder sub line-->
|
||||||
<small v-if="isFolder" class="block text-xs text-gray-500 dark:text-gray-500">
|
<small v-if="isFolder" class="block text-xs text-gray-500 dark:text-gray-500">
|
||||||
{{ folderItems === 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems) }},
|
{{ folderItems === 0 ? $t('empty') : $tc('folder.item_counts', folderItems) }},
|
||||||
{{ timeStamp }}
|
{{ timeStamp }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
@click.native="closeSelecting"
|
@click.native="closeSelecting"
|
||||||
class="action-btn close-icon"
|
class="action-btn close-icon"
|
||||||
source="close"
|
source="close"
|
||||||
:action="$t('actions.close')"
|
:action="$t('close')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|||||||
@@ -3,18 +3,6 @@
|
|||||||
class="sticky top-0 z-[19] block flex w-full items-center justify-between bg-white py-5 px-4 text-center dark:bg-dark-background lg:hidden"
|
class="sticky top-0 z-[19] block flex w-full items-center justify-between bg-white py-5 px-4 text-center dark:bg-dark-background lg:hidden"
|
||||||
>
|
>
|
||||||
<NavigationBar />
|
<NavigationBar />
|
||||||
|
|
||||||
<!-- <div class="relative flex items-center">
|
|
||||||
<!–More Actions–>
|
|
||||||
<div class="relative">
|
|
||||||
<div
|
|
||||||
@click="showMobileNavigation"
|
|
||||||
class="absolute right-0 -mr-2 -translate-y-2/4 transform p-4"
|
|
||||||
>
|
|
||||||
<menu-icon size="17" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>-->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<search-icon size="18" class="vue-feather text-gray-400 dark:text-gray-600" />
|
<search-icon size="18" class="vue-feather text-gray-400 dark:text-gray-600" />
|
||||||
<span class="pl-2.5 text-xs font-bold text-gray-400 dark:text-gray-600">
|
<span class="pl-2.5 text-xs font-bold text-gray-400 dark:text-gray-600">
|
||||||
{{ $t('inputs.placeholder_search_files') }}
|
{{ $t('search_anything') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
>
|
>
|
||||||
<check-icon size="16" class="vue-feather mr-2 text-green-600 dark:text-green-600" />
|
<check-icon size="16" class="vue-feather mr-2 text-green-600 dark:text-green-600" />
|
||||||
<span class="text-sm font-bold text-green-600 dark:text-green-600">
|
<span class="text-sm font-bold text-green-600 dark:text-green-600">
|
||||||
{{ $t('Accept') }}
|
{{ $t('accept') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
>
|
>
|
||||||
<x-icon size="16" class="vue-feather mr-2 text-rose-600 dark:text-rose-600" />
|
<x-icon size="16" class="vue-feather mr-2 text-rose-600 dark:text-rose-600" />
|
||||||
<span class="text-sm font-bold text-rose-600 dark:text-rose-600">
|
<span class="text-sm font-bold text-rose-600 dark:text-rose-600">
|
||||||
{{ $t('Decline') }}
|
{{ $t('decline') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -121,7 +121,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('You successfully accepted invitation'),
|
message: this.$t('you_accepted_invitation'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -132,7 +132,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('You successfully decline invitation'),
|
message: this.$t('you_decline_invitation'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -11,27 +11,27 @@
|
|||||||
|
|
||||||
<!--Title-->
|
<!--Title-->
|
||||||
<b class="dark:text-gray-200 text-xl font-extrabold px-2.5 mb-2.5 block">
|
<b class="dark:text-gray-200 text-xl font-extrabold px-2.5 mb-2.5 block">
|
||||||
{{ $t('Notification Center') }}
|
{{ $t('notification_center') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<div class="px-2.5">
|
<div class="px-2.5">
|
||||||
<MobileActionButton v-if="readNotifications.length || unreadNotifications.length" @click.native="$store.dispatch('deleteAllNotifications')" icon="check-square" class="mb-2 dark:!bg-4x-dark-foreground">
|
<MobileActionButton v-if="readNotifications.length || unreadNotifications.length" @click.native="$store.dispatch('deleteAllNotifications')" icon="check-square" class="mb-2 dark:!bg-4x-dark-foreground">
|
||||||
{{ $t('Clear all') }}
|
{{ $t('clear_all') }}
|
||||||
</MobileActionButton>
|
</MobileActionButton>
|
||||||
|
|
||||||
<p v-if="!readNotifications.length && !unreadNotifications.length" class="text-sm mt-8">
|
<p v-if="!readNotifications.length && !unreadNotifications.length" class="text-sm mt-8">
|
||||||
{{ $t("There aren't any notifications.") }}
|
{{ $t("not_any_notifications") }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<b v-if="unreadNotifications.length" class="dark-text-theme mt-1.5 block px-2.5 mb-2.5 text-xs text-gray-400">
|
<b v-if="unreadNotifications.length" class="dark-text-theme mt-1.5 block px-2.5 mb-2.5 text-xs text-gray-400">
|
||||||
{{ $t('Unread') }}
|
{{ $t('unread') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<Notification :notification="notification" v-for="notification in unreadNotifications" :key="notification.id" />
|
<Notification :notification="notification" v-for="notification in unreadNotifications" :key="notification.id" />
|
||||||
|
|
||||||
<b v-if="readNotifications.length" class="dark-text-theme mt-2.5 block px-2.5 mb-2.5 text-xs text-gray-400">
|
<b v-if="readNotifications.length" class="dark-text-theme mt-2.5 block px-2.5 mb-2.5 text-xs text-gray-400">
|
||||||
{{ $t('Read') }}
|
{{ $t('read') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<Notification :notification="notification" v-for="notification in readNotifications" :key="notification.id" />
|
<Notification :notification="notification" v-for="notification in readNotifications" :key="notification.id" />
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="select-payment-method">
|
<PopupWrapper name="select-payment-method">
|
||||||
<PopupHeader :title="$t('Select Payment Method')" icon="credit-card" />
|
<PopupHeader :title="$t('select_payment_method')" icon="credit-card" />
|
||||||
|
|
||||||
<PopupContent style="padding: 0 20px">
|
<PopupContent style="padding: 0 20px">
|
||||||
<InfoBox v-if="!config.isPayPal && !config.isPaystack" class="!mb-0">
|
<InfoBox v-if="!config.isPayPal && !config.isPaystack" class="!mb-0">
|
||||||
<p>{{ $t("There isn't any payment method yet.") }}</p>
|
<p>{{ $t("not_any_payment_method") }}</p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
|
|
||||||
<!--PayPal implementation-->
|
<!--PayPal implementation-->
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
:class="{ 'opacity-0': paypal.isMethodLoading }"
|
:class="{ 'opacity-0': paypal.isMethodLoading }"
|
||||||
class="text-theme cursor-pointer text-sm font-bold"
|
class="text-theme cursor-pointer text-sm font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Select') }}
|
{{ $t('select') }}
|
||||||
</span>
|
</span>
|
||||||
</PaymentMethod>
|
</PaymentMethod>
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<PaymentMethod
|
<PaymentMethod
|
||||||
v-if="config.isPaystack"
|
v-if="config.isPaystack"
|
||||||
driver="paystack"
|
driver="paystack"
|
||||||
:description="$t('Available Bank Account, USSD, Mobile Money, Apple Pay')"
|
:description="$t(config.paystack_payment_description)"
|
||||||
>
|
>
|
||||||
<div v-if="paystack.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
<div v-if="paystack.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
@@ -49,14 +49,14 @@
|
|||||||
:class="{ 'opacity-0': paystack.isGettingCheckoutLink }"
|
:class="{ 'opacity-0': paystack.isGettingCheckoutLink }"
|
||||||
class="text-theme cursor-pointer text-sm font-bold"
|
class="text-theme cursor-pointer text-sm font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Select') }}
|
{{ $t('select') }}
|
||||||
</span>
|
</span>
|
||||||
</PaymentMethod>
|
</PaymentMethod>
|
||||||
</PopupContent>
|
</PopupContent>
|
||||||
|
|
||||||
<PopupActions>
|
<PopupActions>
|
||||||
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
||||||
{{ $t('Cancel Payment') }}
|
{{ $t('cancel_payment') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</PopupWrapper>
|
</PopupWrapper>
|
||||||
@@ -131,7 +131,7 @@ export default {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
message: this.$t('Failed to load the PayPal service'),
|
message: this.$t('failed_to_load_paypal'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your payment was successfully received.'),
|
message: this.$t('payment_was_successfully_received'),
|
||||||
})
|
})
|
||||||
|
|
||||||
// todo: temporary reload function
|
// todo: temporary reload function
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="confirm-password">
|
<PopupWrapper name="confirm-password">
|
||||||
<PopupHeader :title="$t('Confirm Password')" icon="edit" />
|
<PopupHeader :title="$t('confirm_password')" icon="edit" />
|
||||||
|
|
||||||
<PopupContent>
|
<PopupContent>
|
||||||
<ValidationObserver @submit.prevent="confirmPassword" ref="passwordForm" v-slot="{ invalid }" tag="form">
|
<ValidationObserver @submit.prevent="confirmPassword" ref="passwordForm" v-slot="{ invalid }" tag="form">
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Emoji as an Icon')"
|
:title="$t('emoji_as_an_icon')"
|
||||||
:description="$t('Replace folder icon with an Emoji')"
|
:description="$t('replace_icon_with_emoji')"
|
||||||
:is-last="!isEmoji"
|
:is-last="!isEmoji"
|
||||||
>
|
>
|
||||||
<SwitchInput v-model="isEmoji" :state="isEmoji" />
|
<SwitchInput v-model="isEmoji" :state="isEmoji" />
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="create-file-request">
|
<PopupWrapper name="create-file-request">
|
||||||
<!--Title-->
|
<!--Title-->
|
||||||
<PopupHeader :title="$t('Create File Request')" icon="upload" />
|
<PopupHeader :title="$t('create_file_request')" icon="upload" />
|
||||||
|
|
||||||
<!--Content-->
|
<!--Content-->
|
||||||
<PopupContent>
|
<PopupContent>
|
||||||
@@ -23,21 +23,21 @@
|
|||||||
name="Name"
|
name="Name"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText :title="$t('Folder Name (optional)')" :description="$t('Created folder with files will be named with your own name.')" :error="errors[0]">
|
<AppInputText :title="$t('folder_name_optional')" :description="$t('folder_name_optional_description')" :error="errors[0]">
|
||||||
<input
|
<input
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
type="text"
|
type="text"
|
||||||
ref="input"
|
ref="input"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
:placeholder="$t('Type name...')"
|
:placeholder="$t('type_name_')"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Set note-->
|
<!--Set note-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Note" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Note" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Message (optional)')" :description="$t('This message will be showed for your email recipient or in the upload page.')" :error="errors[0]">
|
<AppInputText :title="$t('message_optional')" :description="$t('message_optional_description')" :error="errors[0]">
|
||||||
<textarea
|
<textarea
|
||||||
v-model="form.notes"
|
v-model="form.notes"
|
||||||
rows="2"
|
rows="2"
|
||||||
@@ -45,15 +45,15 @@
|
|||||||
type="text"
|
type="text"
|
||||||
ref="input"
|
ref="input"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
:placeholder="$t('Type message for recipient...')"
|
:placeholder="$t('message_for_recipient')"
|
||||||
></textarea>
|
></textarea>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Send Request by Email-->
|
<!--Send Request by Email-->
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Send Request by Email')"
|
:title="$t('send_request_by_email')"
|
||||||
:description="$t('Send your file request on recipients email')"
|
:description="$t('send_request_by_email_description')"
|
||||||
:is-last="! shareViaEmail"
|
:is-last="! shareViaEmail"
|
||||||
>
|
>
|
||||||
<SwitchInput v-model="shareViaEmail" :state="shareViaEmail" />
|
<SwitchInput v-model="shareViaEmail" :state="shareViaEmail" />
|
||||||
@@ -75,14 +75,14 @@
|
|||||||
type="text"
|
type="text"
|
||||||
ref="input"
|
ref="input"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
:placeholder="$t('Type email...')"
|
:placeholder="$t('type_email_')"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
|
|
||||||
<!--Copy generated link-->
|
<!--Copy generated link-->
|
||||||
<AppInputText v-if="generatedUploadRequest" :title="$t('Copy your upload request link')" :is-last="true">
|
<AppInputText v-if="generatedUploadRequest" :title="$t('copy_upload_request_link')" :is-last="true">
|
||||||
<CopyInput :str="generatedUploadRequest.data.attributes.url" />
|
<CopyInput :str="generatedUploadRequest.data.attributes.url" />
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</PopupContent>
|
</PopupContent>
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
>{{ $t('cancel') }}
|
>{{ $t('cancel') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
<ButtonBase class="w-full" @click.native="createUploadRequest" :loading="isLoading" button-style="theme"
|
<ButtonBase class="w-full" @click.native="createUploadRequest" :loading="isLoading" button-style="theme"
|
||||||
>{{ $t('Create Request') }}
|
>{{ $t('create_request') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
v-model="query"
|
v-model="query"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
type="text"
|
type="text"
|
||||||
:placeholder="$t('Select or search emoji icon...')"
|
:placeholder="$t('select_or_search_emoji')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
<!-- Not found -->
|
<!-- Not found -->
|
||||||
<span class="ml-2 text-sm font-bold" v-if="filteredEmojis.length === 0 && query !== undefined">
|
<span class="ml-2 text-sm font-bold" v-if="filteredEmojis.length === 0 && query !== undefined">
|
||||||
{{ $t('There is nothing :(') }}
|
{{ $t('there_is_nothing_smile') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -127,7 +127,7 @@ export default {
|
|||||||
this.filteredEmojis = this.emojis.list.filter((emoji) => emoji.name.includes(val.toLowerCase()))
|
this.filteredEmojis = this.emojis.list.filter((emoji) => emoji.name.includes(val.toLowerCase()))
|
||||||
|
|
||||||
if (this.filteredEmojis.length === 0) {
|
if (this.filteredEmojis.length === 0) {
|
||||||
console.log('empty')
|
//
|
||||||
}
|
}
|
||||||
}, 200),
|
}, 200),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export default {
|
|||||||
// Update user avatar
|
// Update user avatar
|
||||||
this.$updateImage('/user/settings', 'avatar', event.target.files[0])
|
this.$updateImage('/user/settings', 'avatar', event.target.files[0])
|
||||||
} else {
|
} else {
|
||||||
alert(this.$t('validation_errors.wrong_image'))
|
alert(this.$t('wrong_image_error'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<camera-icon size="14" />
|
<camera-icon size="14" />
|
||||||
</div>
|
</div>
|
||||||
<span class="text-sm font-bold">
|
<span class="text-sm font-bold">
|
||||||
{{ $t('Get QR Code') }}
|
{{ $t('get_qr_code') }}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<li
|
||||||
@@ -126,7 +126,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your web insert code was copied'),
|
message: this.$t('web_code_copied'),
|
||||||
})
|
})
|
||||||
|
|
||||||
this.isOpenedMoreOptions = false
|
this.isOpenedMoreOptions = false
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
// Update user avatar
|
// Update user avatar
|
||||||
this.$emit('input', event.target.files[0])
|
this.$emit('input', event.target.files[0])
|
||||||
} else {
|
} else {
|
||||||
alert(this.$t('validation_errors.wrong_image'))
|
alert(this.$t('wrong_image_error'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -43,7 +43,9 @@
|
|||||||
<user-icon v-if="option.icon === 'user'" size="14" />
|
<user-icon v-if="option.icon === 'user'" size="14" />
|
||||||
<edit2-icon v-if="option.icon === 'user-edit'" size="14" />
|
<edit2-icon v-if="option.icon === 'user-edit'" size="14" />
|
||||||
</div>
|
</div>
|
||||||
<span class="option-value">{{ option.label }}</span>
|
<span class="option-value">
|
||||||
|
{{ $t(option.label) }}
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
>
|
>
|
||||||
<div class="rounded-lg bg-light-background px-3 py-1.5 dark:bg-4x-dark-foreground">
|
<div class="rounded-lg bg-light-background px-3 py-1.5 dark:bg-4x-dark-foreground">
|
||||||
<span class="text-sm font-semibold">
|
<span class="text-sm font-semibold">
|
||||||
{{ $t('Your current estimated usage:') }}
|
{{ $t('current_estimated_usage') }}
|
||||||
</span>
|
</span>
|
||||||
<span class="text-theme text-sm font-bold">
|
<span class="text-theme text-sm font-bold">
|
||||||
{{ user.data.meta.usages.costEstimate }}
|
{{ user.data.meta.usages.costEstimate }}
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
/>
|
/>
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
<OptionGroup v-if="!clickedSubmenu">
|
<OptionGroup v-if="!clickedSubmenu">
|
||||||
<Option @click.native="logOut" :title="$t('menu.logout')" icon="power" :is-hover-disabled="true" />
|
<Option @click.native="logOut" :title="$t('logout')" icon="power" :is-hover-disabled="true" />
|
||||||
</OptionGroup>
|
</OptionGroup>
|
||||||
|
|
||||||
<!--Submenu: User settings-->
|
<!--Submenu: User settings-->
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<Option
|
<Option
|
||||||
@click.native="goToRoute('Billing')"
|
@click.native="goToRoute('Billing')"
|
||||||
v-if="config.subscriptionType !== 'none'"
|
v-if="config.subscriptionType !== 'none'"
|
||||||
:title="$t('Billing')"
|
:title="$t('billing')"
|
||||||
icon="cloud"
|
icon="cloud"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
@@ -127,14 +127,14 @@
|
|||||||
<OptionGroup v-if="clickedSubmenu === 'admin' && config.subscriptionType !== 'none'">
|
<OptionGroup v-if="clickedSubmenu === 'admin' && config.subscriptionType !== 'none'">
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToRoute('AppPayments')"
|
@click.native="goToRoute('AppPayments')"
|
||||||
:title="$t('Payments')"
|
:title="$t('payments')"
|
||||||
icon="credit-card"
|
icon="credit-card"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToRoute('Subscriptions')"
|
@click.native="goToRoute('Subscriptions')"
|
||||||
v-if="config.subscriptionType === 'fixed'"
|
v-if="config.subscriptionType === 'fixed'"
|
||||||
:title="$t('Subscriptions')"
|
:title="$t('subscriptions')"
|
||||||
icon="credit-card"
|
icon="credit-card"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
/>
|
/>
|
||||||
<Option
|
<Option
|
||||||
@click.native="goToRoute('Invoices')"
|
@click.native="goToRoute('Invoices')"
|
||||||
:title="$t('Transactions')"
|
:title="$t('transactions')"
|
||||||
icon="file-text"
|
icon="file-text"
|
||||||
:is-hover-disabled="true"
|
:is-hover-disabled="true"
|
||||||
/>
|
/>
|
||||||
@@ -185,7 +185,7 @@ export default {
|
|||||||
admin: this.$t('administration'),
|
admin: this.$t('administration'),
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'Go back from ' + location[this.clickedSubmenu]
|
return this.$t('go_back_from_x', {location: location[this.clickedSubmenu]})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="notifications-mobile">
|
<PopupWrapper name="notifications-mobile">
|
||||||
<!--Title-->
|
<!--Title-->
|
||||||
<PopupHeader :title="$t('Notifications')" icon="bell" />
|
<PopupHeader :title="$t('notifications')" icon="bell" />
|
||||||
|
|
||||||
<!--Content-->
|
<!--Content-->
|
||||||
<PopupContent>
|
<PopupContent>
|
||||||
@@ -11,18 +11,18 @@
|
|||||||
icon="check-square"
|
icon="check-square"
|
||||||
class="mb-2 dark:!bg-4x-dark-foreground"
|
class="mb-2 dark:!bg-4x-dark-foreground"
|
||||||
>
|
>
|
||||||
{{ $t('Clear all') }}
|
{{ $t('clear_all') }}
|
||||||
</MobileActionButton>
|
</MobileActionButton>
|
||||||
|
|
||||||
<p v-if="!readNotifications.length && !unreadNotifications.length" class="text-sm text-gray-500">
|
<p v-if="!readNotifications.length && !unreadNotifications.length" class="text-sm text-gray-500">
|
||||||
{{ $t("There aren't any notifications.") }}
|
{{ $t("not_any_notifications") }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<b
|
<b
|
||||||
v-if="unreadNotifications.length"
|
v-if="unreadNotifications.length"
|
||||||
class="dark-text-theme mt-1.5 mb-2.5 block px-2.5 text-xs text-gray-400"
|
class="dark-text-theme mt-1.5 mb-2.5 block px-2.5 text-xs text-gray-400"
|
||||||
>
|
>
|
||||||
{{ $t('Unread') }}
|
{{ $t('unread') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<Notification
|
<Notification
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<b v-if="readNotifications.length" class="dark-text-theme mt-2.5 mb-2.5 block px-2.5 text-xs text-gray-400">
|
<b v-if="readNotifications.length" class="dark-text-theme mt-2.5 mb-2.5 block px-2.5 text-xs text-gray-400">
|
||||||
{{ $t('Read') }}
|
{{ $t('read') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<Notification
|
<Notification
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
<!--Actions-->
|
<!--Actions-->
|
||||||
<PopupActions>
|
<PopupActions>
|
||||||
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
||||||
{{ $t('Close') }}
|
{{ $t('close') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</PopupWrapper>
|
</PopupWrapper>
|
||||||
|
|||||||
@@ -36,8 +36,8 @@
|
|||||||
<!--Emoji-->
|
<!--Emoji-->
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
v-if="pickedItem.data.type === 'folder'"
|
v-if="pickedItem.data.type === 'folder'"
|
||||||
:title="$t('Emoji as an Icon')"
|
:title="$t('emoji_as_an_icon')"
|
||||||
:description="$t('Replace folder icon with an Emoji')"
|
:description="$t('replace_icon_with_emoji')"
|
||||||
:is-last="!isEmoji"
|
:is-last="!isEmoji"
|
||||||
>
|
>
|
||||||
<SwitchInput v-model="isEmoji" :state="isEmoji" />
|
<SwitchInput v-model="isEmoji" :state="isEmoji" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<PopupActions>
|
<PopupActions>
|
||||||
<ButtonBase class="w-full" @click.native="showSection(undefined)" button-style="secondary">
|
<ButtonBase class="w-full" @click.native="showSection(undefined)" button-style="secondary">
|
||||||
{{ $t('Show Details') }}
|
{{ $t('show_details') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="theme">
|
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="theme">
|
||||||
{{ $t('awesome_iam_done') }}
|
{{ $t('awesome_iam_done') }}
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
<PopupActions>
|
<PopupActions>
|
||||||
<ButtonBase class="w-full" @click.native="showSection(undefined)" button-style="secondary">
|
<ButtonBase class="w-full" @click.native="showSection(undefined)" button-style="secondary">
|
||||||
{{ $t('Show Details') }}
|
{{ $t('show_details') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
<ButtonBase
|
<ButtonBase
|
||||||
class="w-full"
|
class="w-full"
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
:loading="isLoading"
|
:loading="isLoading"
|
||||||
:disabled="isLoading"
|
:disabled="isLoading"
|
||||||
>
|
>
|
||||||
{{ $t('Send') }}
|
{{ $t('send') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</div>
|
</div>
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
:loading="isLoading"
|
:loading="isLoading"
|
||||||
:disabled="isLoading"
|
:disabled="isLoading"
|
||||||
>
|
>
|
||||||
{{ $t('Store Changes') }}
|
{{ $t('store_changes') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</div>
|
</div>
|
||||||
@@ -236,8 +236,8 @@ export default {
|
|||||||
popupTitle() {
|
popupTitle() {
|
||||||
return (
|
return (
|
||||||
{
|
{
|
||||||
'qr-code': this.$t('Get your QR code'),
|
'qr-code': this.$t('get_qr_code'),
|
||||||
'email-sharing': this.$t('Share on multiple emails'),
|
'email-sharing': this.$t('share_with_multiple_emails'),
|
||||||
}[this.activeSection] || this.$t('popup_share_edit.title')
|
}[this.activeSection] || this.$t('popup_share_edit.title')
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
v-if="!column.hidden"
|
v-if="!column.hidden"
|
||||||
>
|
>
|
||||||
<span class="text-xs text-gray-400 dark:text-gray-500">
|
<span class="text-xs text-gray-400 dark:text-gray-500">
|
||||||
{{ column.label }}
|
{{ $t(column.label) }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<chevron-up-icon
|
<chevron-up-icon
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<span class="text-xs text-gray-600 dark:text-gray-500">
|
<span class="text-xs text-gray-600 dark:text-gray-500">
|
||||||
Showing {{ data.meta.from }} - {{ data.meta.to }} from {{ data.meta.total }} records
|
{{ $t('paginator', {from: data.meta.from, to: data.meta.to, total: data.meta.total}) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
<!--Folder sub line-->
|
<!--Folder sub line-->
|
||||||
<small v-if="isFolder" class="block text-xs text-gray-500">
|
<small v-if="isFolder" class="block text-xs text-gray-500">
|
||||||
{{ folderItems === 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems) }},
|
{{ folderItems === 0 ? $t('empty') : $tc('folder.item_counts', folderItems) }},
|
||||||
{{ timeStamp }}
|
{{ timeStamp }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<div class="mt-auto text-center">
|
<div class="mt-auto text-center">
|
||||||
<div
|
<div
|
||||||
@click="$store.dispatch('logOut')"
|
@click="$store.dispatch('logOut')"
|
||||||
:title="$t('locations.logout')"
|
:title="$t('logout')"
|
||||||
class="button-icon inline-block cursor-pointer rounded-xl p-3 hover:bg-light-300 dark:hover:bg-4x-dark-foreground"
|
class="button-icon inline-block cursor-pointer rounded-xl p-3 hover:bg-light-300 dark:hover:bg-4x-dark-foreground"
|
||||||
>
|
>
|
||||||
<power-icon size="20" />
|
<power-icon size="20" />
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<ArrowDownIcon size="12" class="vue-feather text-gray-400" />
|
<ArrowDownIcon size="12" class="vue-feather text-gray-400" />
|
||||||
|
|
||||||
<span class="ml-1.5 text-xs text-gray-400">
|
<span class="ml-1.5 text-xs text-gray-400">
|
||||||
{{ $t('Navigate') }}
|
{{ $t('navigate') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<CornerDownLeftIcon size="12" class="vue-feather text-gray-400" />
|
<CornerDownLeftIcon size="12" class="vue-feather text-gray-400" />
|
||||||
|
|
||||||
<span class="ml-1.5 text-xs text-gray-400">
|
<span class="ml-1.5 text-xs text-gray-400">
|
||||||
{{ $t('Go') }}
|
{{ $t('go') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
@keyup.down="onPageDown"
|
@keyup.down="onPageDown"
|
||||||
@keyup.up="onPageUp"
|
@keyup.up="onPageUp"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Spotlight search..."
|
:placeholder="$t('spotlight_search')"
|
||||||
ref="searchInput"
|
ref="searchInput"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
class="relative z-50 px-4 pb-4"
|
class="relative z-50 px-4 pb-4"
|
||||||
>
|
>
|
||||||
<CategoryName>
|
<CategoryName>
|
||||||
{{ $t('Suggested Filters') }}
|
{{ $t('suggested_filters') }}
|
||||||
</CategoryName>
|
</CategoryName>
|
||||||
|
|
||||||
<FilterSuggestion
|
<FilterSuggestion
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<div v-if="isNotEmptyQuery" class="relative z-50 px-4 pb-4">
|
<div v-if="isNotEmptyQuery" class="relative z-50 px-4 pb-4">
|
||||||
<!--Show actions-->
|
<!--Show actions-->
|
||||||
<CategoryName v-if="actions.length !== 0">
|
<CategoryName v-if="actions.length !== 0">
|
||||||
{{ $t('Actions') }}
|
{{ $t('actions') }}
|
||||||
</CategoryName>
|
</CategoryName>
|
||||||
|
|
||||||
<div v-if="actions.length !== 0" class="mb-2">
|
<div v-if="actions.length !== 0" class="mb-2">
|
||||||
@@ -236,7 +236,7 @@
|
|||||||
|
|
||||||
<!--Show results-->
|
<!--Show results-->
|
||||||
<CategoryName v-if="!activeFilter && results.length !== 0">
|
<CategoryName v-if="!activeFilter && results.length !== 0">
|
||||||
{{ $t('Files & Folders') }}
|
{{ $t('files_and_folders') }}
|
||||||
</CategoryName>
|
</CategoryName>
|
||||||
|
|
||||||
<div v-if="results.length !== 0" v-for="(result, i) in results" :key="result.data.id" class="relative">
|
<div v-if="results.length !== 0" v-for="(result, i) in results" :key="result.data.id" class="relative">
|
||||||
@@ -377,56 +377,56 @@ export default {
|
|||||||
actionList() {
|
actionList() {
|
||||||
let adminLocations = [
|
let adminLocations = [
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Dashboard'),
|
title: this.$t('go_to_dashboard'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Dashboard',
|
value: 'Dashboard',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Settings'),
|
title: this.$t('go_to_settings'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'AppOthers',
|
value: 'AppOthers',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Payments'),
|
title: this.$t('go_to_payments'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'AppPayments',
|
value: 'AppPayments',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Pages'),
|
title: this.$t('go_to_pages'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Pages',
|
value: 'Pages',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Languages'),
|
title: this.$t('go_to_languages'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Language',
|
value: 'Language',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Show all Users'),
|
title: this.$t('show_all_users'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Users',
|
value: 'Users',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Show all Plans'),
|
title: this.$t('show_all_plans'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Plans',
|
value: 'Plans',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Show Transactions'),
|
title: this.$t('show_transactions'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Invoices',
|
value: 'Invoices',
|
||||||
@@ -436,42 +436,42 @@ export default {
|
|||||||
|
|
||||||
let fileLocations = [
|
let fileLocations = [
|
||||||
{
|
{
|
||||||
title: this.$t('Go Home'),
|
title: this.$t('go_home_spotlight'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Files',
|
value: 'Files',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Recent Uploads'),
|
title: this.$t('go_to_recent_uploads'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'RecentUploads',
|
value: 'RecentUploads',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Publicly Shared'),
|
title: this.$t('go_to_publicly_shared'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'MySharedItems',
|
value: 'MySharedItems',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Trash'),
|
title: this.$t('go_to_trash'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Trash',
|
value: 'Trash',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Team Folders'),
|
title: this.$t('go_to_team_folders'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'TeamFolders',
|
value: 'TeamFolders',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Go To Shared with Me'),
|
title: this.$t('go_to_shared_with_me'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'SharedWithMe',
|
value: 'SharedWithMe',
|
||||||
@@ -481,7 +481,7 @@ export default {
|
|||||||
|
|
||||||
let adminActions = [
|
let adminActions = [
|
||||||
{
|
{
|
||||||
title: this.$t('Create User'),
|
title: this.$t('create_user'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'UserCreate',
|
value: 'UserCreate',
|
||||||
@@ -491,42 +491,42 @@ export default {
|
|||||||
|
|
||||||
let userSettings = [
|
let userSettings = [
|
||||||
{
|
{
|
||||||
title: this.$t('Update Profile Settings'),
|
title: this.$t('update_profile_settings'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Profile',
|
value: 'Profile',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Update Security & API'),
|
title: this.$t('update_security_api'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Password',
|
value: 'Password',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Show Storage Details'),
|
title: this.$t('show_storage_details'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Storage',
|
value: 'Storage',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Show Billing'),
|
title: this.$t('show_billing'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Billing',
|
value: 'Billing',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Empty Your Trash'),
|
title: this.$t('empty_your_trash'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'empty-trash',
|
value: 'empty-trash',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Log Out'),
|
title: this.$t('logout'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'log-out',
|
value: 'log-out',
|
||||||
@@ -536,14 +536,14 @@ export default {
|
|||||||
|
|
||||||
let createList = [
|
let createList = [
|
||||||
{
|
{
|
||||||
title: this.$t('Create Team Folder'),
|
title: this.$t('create_team_folder'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'create-team-folder',
|
value: 'create-team-folder',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Create File Request'),
|
title: this.$t('create_file_request'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'create-file-request',
|
value: 'create-file-request',
|
||||||
@@ -553,21 +553,21 @@ export default {
|
|||||||
|
|
||||||
let functionList = [
|
let functionList = [
|
||||||
{
|
{
|
||||||
title: this.$t('Toggle Grid/List View'),
|
title: this.$t('toggle_grid_list_view'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'toggle-grid-list',
|
value: 'toggle-grid-list',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Toggle Dark/Light Mode'),
|
title: this.$t('toggle_dark_light_mode'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'dark-mode',
|
value: 'dark-mode',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Toggle Full-Screen Mode'),
|
title: this.$t('toggle_full_screen_mode'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'full-screen-mode',
|
value: 'full-screen-mode',
|
||||||
@@ -578,7 +578,7 @@ export default {
|
|||||||
// Available only for apple users
|
// Available only for apple users
|
||||||
if (this.$isApple()) {
|
if (this.$isApple()) {
|
||||||
functionList.push({
|
functionList.push({
|
||||||
title: this.$t('Toggle Emoji Type'),
|
title: this.$t('toggle_emoji_type'),
|
||||||
action: {
|
action: {
|
||||||
type: 'function',
|
type: 'function',
|
||||||
value: 'toggle-emoji',
|
value: 'toggle-emoji',
|
||||||
@@ -596,7 +596,7 @@ export default {
|
|||||||
// Available only for fixed subscription
|
// Available only for fixed subscription
|
||||||
if (this.config.subscriptionType === 'fixed') {
|
if (this.config.subscriptionType === 'fixed') {
|
||||||
adminLocations.push({
|
adminLocations.push({
|
||||||
title: this.$t('Show all Subscriptions'),
|
title: this.$t('show_all_subscriptions'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: 'Subscriptions',
|
value: 'Subscriptions',
|
||||||
@@ -610,7 +610,7 @@ export default {
|
|||||||
this.config.subscriptionType === 'fixed'
|
this.config.subscriptionType === 'fixed'
|
||||||
) {
|
) {
|
||||||
adminActions.push({
|
adminActions.push({
|
||||||
title: this.$t('Create Plan'),
|
title: this.$t('create_plan'),
|
||||||
action: {
|
action: {
|
||||||
type: 'route',
|
type: 'route',
|
||||||
value: this.config.subscriptionType === 'fixed' ? 'CreateFixedPlan' : 'CreateMeteredPlan',
|
value: this.config.subscriptionType === 'fixed' ? 'CreateFixedPlan' : 'CreateMeteredPlan',
|
||||||
@@ -657,7 +657,7 @@ export default {
|
|||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
keyword: 'u',
|
keyword: 'u',
|
||||||
description: this.$t('Search through your users...'),
|
description: this.$t('search_your_users'),
|
||||||
slug: 'users',
|
slug: 'users',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="change-plan-subscription">
|
<PopupWrapper name="change-plan-subscription">
|
||||||
<PopupHeader :title="$t('Change Your Plan')" icon="credit-card" />
|
<PopupHeader :title="$t('change_your_plan')" icon="credit-card" />
|
||||||
|
|
||||||
<!--Select Payment Plans-->
|
<!--Select Payment Plans-->
|
||||||
<PopupContent v-if="plans">
|
<PopupContent v-if="plans">
|
||||||
<InfoBox v-if="plans.data.length === 0" class="!mb-0">
|
<InfoBox v-if="plans.data.length === 0" class="!mb-0">
|
||||||
<p>{{ $t("There isn't any plan yet.") }}</p>
|
<p>{{ $t("not_any_plan") }}</p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
|
|
||||||
<!--Toggle yearly billing-->
|
<!--Toggle yearly billing-->
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
:button-style="buttonStyle"
|
:button-style="buttonStyle"
|
||||||
:loading="isLoading"
|
:loading="isLoading"
|
||||||
@click.native="proceedToPayment"
|
@click.native="proceedToPayment"
|
||||||
>{{ $t('Change Plan') }}
|
>{{ $t('change_plan') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</PopupWrapper>
|
</PopupWrapper>
|
||||||
@@ -152,7 +152,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your subscription was successfully changed.'),
|
message: this.$t('subscription_changed'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,12 +21,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
||||||
{{ $t('User was deleted') }}
|
{{ $t('user_was_deleted') }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel class="capitalize" :color="$getTransactionStatusColor(row.data.attributes.status)">
|
<ColorLabel class="capitalize" :color="$getTransactionStatusColor(row.data.attributes.status)">
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
|
|||||||
@@ -21,12 +21,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
<span v-if="!row.data.relationships.user" class="text-xs font-bold text-gray-500">
|
||||||
{{ $t('User was deleted') }}
|
{{ $t('user_was_deleted') }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel class="capitalize" :color="$getTransactionStatusColor(row.data.attributes.status)">
|
<ColorLabel class="capitalize" :color="$getTransactionStatusColor(row.data.attributes.status)">
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
{{ card.data.attributes.last4 }}
|
{{ card.data.attributes.last4 }}
|
||||||
</b>
|
</b>
|
||||||
</div>
|
</div>
|
||||||
<b class="text-sm font-bold leading-none"> {{ $t('Expires') }} {{ card.data.attributes.expiration }} </b>
|
<b class="text-sm font-bold leading-none"> {{ $t('expires') }} {{ card.data.attributes.expiration }} </b>
|
||||||
<Trash2Icon @click="deleteCreditCard(card.data.id)" size="15" class="cursor-pointer" />
|
<Trash2Icon @click="deleteCreditCard(card.data.id)" size="15" class="cursor-pointer" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -27,10 +27,8 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
deleteCreditCard(id) {
|
deleteCreditCard(id) {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: this.$t('Are you sure you want to delete your credit card?'),
|
title: this.$t('want_to_delete_card_title'),
|
||||||
message: this.$t(
|
message: this.$t('want_to_delete_card_description'),
|
||||||
'We will no longer settle your payments automatically and you will have to fund your account for the next payments.'
|
|
||||||
),
|
|
||||||
action: {
|
action: {
|
||||||
id: id,
|
id: id,
|
||||||
operation: 'delete-credit-card',
|
operation: 'delete-credit-card',
|
||||||
@@ -48,7 +46,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your credit card was deleted.'),
|
message: this.$t('credit_card_deleted'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => this.$isSomethingWrong())
|
.catch(() => this.$isSomethingWrong())
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
:class="{ 'text-gray-400': !isSelectedYearlyPlans }"
|
:class="{ 'text-gray-400': !isSelectedYearlyPlans }"
|
||||||
class="cursor-pointer text-xs font-bold"
|
class="cursor-pointer text-xs font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Billed Annually') }}
|
{{ $t('billed_annually') }}
|
||||||
</label>
|
</label>
|
||||||
<div class="relative inline-block w-12 select-none align-middle">
|
<div class="relative inline-block w-12 select-none align-middle">
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="$store.getters.isLimitedUser" class="bg-red-500 py-1 text-center">
|
<div v-if="$store.getters.isLimitedUser" class="bg-red-500 py-1 text-center">
|
||||||
<router-link :to="{ name: 'Billing' }" class="text-xs font-bold text-white">
|
<router-link :to="{ name: 'Billing' }" class="text-xs font-bold text-white">
|
||||||
{{ $t('Your functionality is restricted. Please review your billing settings.') }}
|
{{ $t('restricted_account_warning') }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="select-plan-subscription">
|
<PopupWrapper name="select-plan-subscription">
|
||||||
<PopupHeader :title="$t('Upgrade Your Account')" icon="credit-card" />
|
<PopupHeader :title="$t('upgrade_your_account')" icon="credit-card" />
|
||||||
|
|
||||||
<!--Payment Options-->
|
<!--Payment Options-->
|
||||||
<div v-if="isPaymentOptionPage">
|
<div v-if="isPaymentOptionPage">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<PaymentMethod
|
<PaymentMethod
|
||||||
v-if="config.isStripe"
|
v-if="config.isStripe"
|
||||||
driver="stripe"
|
driver="stripe"
|
||||||
:description="$t('Pay by your credit card or Apple Pay')"
|
:description="$t(config.stripe_payment_description)"
|
||||||
>
|
>
|
||||||
<div v-if="stripe.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
<div v-if="stripe.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
:class="{ 'opacity-0': stripe.isGettingCheckoutLink }"
|
:class="{ 'opacity-0': stripe.isGettingCheckoutLink }"
|
||||||
class="text-theme cursor-pointer text-sm font-bold"
|
class="text-theme cursor-pointer text-sm font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Select') }}
|
{{ $t('select') }}
|
||||||
</span>
|
</span>
|
||||||
</PaymentMethod>
|
</PaymentMethod>
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<PaymentMethod
|
<PaymentMethod
|
||||||
@click.native="payByPayPal"
|
@click.native="payByPayPal"
|
||||||
driver="paypal"
|
driver="paypal"
|
||||||
:description="$t('Available PayPal Credit, Debit or Credit Card.')"
|
:description="$t(config.paypal_payment_description)"
|
||||||
>
|
>
|
||||||
<div v-if="paypal.isMethodLoading" class="translate-y-3 scale-50 transform">
|
<div v-if="paypal.isMethodLoading" class="translate-y-3 scale-50 transform">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
:class="{ 'opacity-0': paypal.isMethodLoading }"
|
:class="{ 'opacity-0': paypal.isMethodLoading }"
|
||||||
class="text-theme cursor-pointer text-sm font-bold"
|
class="text-theme cursor-pointer text-sm font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Select') }}
|
{{ $t('select') }}
|
||||||
</span>
|
</span>
|
||||||
</PaymentMethod>
|
</PaymentMethod>
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
<PaymentMethod
|
<PaymentMethod
|
||||||
v-if="config.isPaystack"
|
v-if="config.isPaystack"
|
||||||
driver="paystack"
|
driver="paystack"
|
||||||
:description="$t('Available Bank Account, USSD, Mobile Money, Apple Pay')"
|
:description="$t(config.paystack_payment_description)"
|
||||||
>
|
>
|
||||||
<div v-if="paystack.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
<div v-if="paystack.isGettingCheckoutLink" class="translate-y-3 scale-50 transform">
|
||||||
<Spinner />
|
<Spinner />
|
||||||
@@ -65,14 +65,14 @@
|
|||||||
:class="{ 'opacity-0': paystack.isGettingCheckoutLink }"
|
:class="{ 'opacity-0': paystack.isGettingCheckoutLink }"
|
||||||
class="text-theme cursor-pointer text-sm font-bold"
|
class="text-theme cursor-pointer text-sm font-bold"
|
||||||
>
|
>
|
||||||
{{ $t('Select') }}
|
{{ $t('select') }}
|
||||||
</span>
|
</span>
|
||||||
</PaymentMethod>
|
</PaymentMethod>
|
||||||
</PopupContent>
|
</PopupContent>
|
||||||
|
|
||||||
<PopupActions>
|
<PopupActions>
|
||||||
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
<ButtonBase class="w-full" @click.native="$closePopup()" button-style="secondary">
|
||||||
{{ $t('Cancel Payment') }}
|
{{ $t('cancel_payment') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</div>
|
</div>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
v-if="plans && plans.data.length !== 0"
|
v-if="plans && plans.data.length !== 0"
|
||||||
:button-style="buttonStyle"
|
:button-style="buttonStyle"
|
||||||
@click.native="isPaymentOptionPage = true"
|
@click.native="isPaymentOptionPage = true"
|
||||||
>{{ $t('Upgrade Account') }}
|
>{{ $t('upgrade_account') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</div>
|
</div>
|
||||||
@@ -221,7 +221,7 @@ export default {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
message: this.$t('Failed to load the PayPal service'),
|
message: this.$t('failed_to_load_paypal'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your payment was successfully received.'),
|
message: this.$t('payment_was_successfully_received'),
|
||||||
})
|
})
|
||||||
|
|
||||||
// todo: temporary reload function
|
// todo: temporary reload function
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="!hasPaymentMethod" class="card shadow-card">
|
<div v-if="!hasPaymentMethod" class="card shadow-card">
|
||||||
<FormLabel icon="dollar">
|
<FormLabel icon="dollar">
|
||||||
{{ $t('Balance') }}
|
{{ $t('balance') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
>
|
>
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:description="
|
:description="
|
||||||
$t('The amount will be increased as soon as we register your charge from payment gateway.')
|
$t('amount_increase_description')
|
||||||
"
|
"
|
||||||
:error="errors[0]"
|
:error="errors[0]"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
||||||
<input
|
<input
|
||||||
v-model="chargeAmount"
|
v-model="chargeAmount"
|
||||||
:placeholder="$t('Fund Your Account Balance...')"
|
:placeholder="$t('fund_account_balance')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
/>
|
/>
|
||||||
<ButtonBase type="submit" button-style="theme" class="w-full sm:w-auto">
|
<ButtonBase type="submit" button-style="theme" class="w-full sm:w-auto">
|
||||||
{{ $t('Make a Payment') }}
|
{{ $t('make_payment') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="bell">
|
<FormLabel icon="bell">
|
||||||
{{ $t('Billing Alert') }}
|
{{ $t('billing_alert') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<div v-if="user.data.relationships.alert">
|
<div v-if="user.data.relationships.alert">
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="block text-sm dark:text-gray-500 text-gray-400">
|
<b class="block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ $t('Alert will be triggered after you reach the value above.') }}
|
{{ $t('billing_alert_description') }}
|
||||||
</b>
|
</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<AppInputText
|
<AppInputText
|
||||||
:description="
|
:description="
|
||||||
$t(
|
$t(
|
||||||
'You will receive an email whenever your monthly balance reaches the specified amount above.'
|
'billing_alert_notes'
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
:error="errors[0]"
|
:error="errors[0]"
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
||||||
<input
|
<input
|
||||||
v-model="billingAlertAmount"
|
v-model="billingAlertAmount"
|
||||||
:placeholder="$t('Alert Amount...')"
|
:placeholder="$t('alert_amount_')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
>
|
>
|
||||||
{{ $t('Update Alert') }}
|
{{ $t('update_alert') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<AppInputText
|
<AppInputText
|
||||||
:description="
|
:description="
|
||||||
$t(
|
$t(
|
||||||
'You will receive an email whenever your monthly balance reaches the specified amount above.'
|
'billing_alert_notes'
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
:error="errors[0]"
|
:error="errors[0]"
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
||||||
<input
|
<input
|
||||||
v-model="billingAlertAmount"
|
v-model="billingAlertAmount"
|
||||||
:placeholder="$t('Alert Amount...')"
|
:placeholder="$t('alert_amount_')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
>
|
>
|
||||||
{{ $t('Set Alert') }}
|
{{ $t('set_alert') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -162,7 +162,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your billing alert was updated successfully'),
|
message: this.$t('alert_updated'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@@ -192,7 +192,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your billing alert was set successfully'),
|
message: this.$t('alert_set_successfully'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@@ -207,9 +207,9 @@ export default {
|
|||||||
},
|
},
|
||||||
deleteBillingAlert() {
|
deleteBillingAlert() {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: this.$t('Are you sure you want to delete your alert?'),
|
title: this.$t('want_to_delete_alert'),
|
||||||
message: this.$t(
|
message: this.$t(
|
||||||
'You will no longer receive any notifications that your billing limit has been exceeded.'
|
'want_to_delete_alert_description'
|
||||||
),
|
),
|
||||||
action: {
|
action: {
|
||||||
id: this.user.data.relationships.alert.data.id,
|
id: this.user.data.relationships.alert.data.id,
|
||||||
@@ -231,7 +231,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your billing alert was deleted.'),
|
message: this.$t('deleted_alert'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => this.$isSomethingWrong())
|
.catch(() => this.$isSomethingWrong())
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="hasSubscription" class="card shadow-card">
|
<div v-if="hasSubscription" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Edit your Subscription') }}
|
{{ $t('edit_your_subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputButton
|
<AppInputButton
|
||||||
v-if="subscription.attributes.status !== 'cancelled'"
|
v-if="subscription.attributes.status !== 'cancelled'"
|
||||||
:title="$t('Cancel Subscription')"
|
:title="$t('cancel_subscription')"
|
||||||
:description="
|
:description="
|
||||||
$t(
|
$t(
|
||||||
'You can cancel your subscription now. You\'ll continue to have access to the features you\'ve paid for until the end of your billing cycle.'
|
'cancel_subscription_description'
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@@ -19,17 +19,17 @@
|
|||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
button-style="secondary"
|
button-style="secondary"
|
||||||
>
|
>
|
||||||
{{ $t('Cancel Now') }}
|
{{ $t('cancel_now') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</AppInputButton>
|
</AppInputButton>
|
||||||
|
|
||||||
<AppInputButton
|
<AppInputButton
|
||||||
:title="$t('Upgrade or Downgrade Plan')"
|
:title="$t('upgrade_downgrade_plan')"
|
||||||
:description="$t('You can upgrade your plan at any time you want.')"
|
:description="$t('upgrade_downgrade_plan_description')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<ButtonBase @click.native="$changeSubscriptionOptions" class="w-full sm:w-auto" button-style="secondary">
|
<ButtonBase @click.native="$changeSubscriptionOptions" class="w-full sm:w-auto" button-style="secondary">
|
||||||
{{ $t('Change Plan') }}
|
{{ $t('change_plan') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</AppInputButton>
|
</AppInputButton>
|
||||||
</div>
|
</div>
|
||||||
@@ -69,7 +69,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
cancelSubscriptionConfirmation() {
|
cancelSubscriptionConfirmation() {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: this.$t('Are you sure you want to cancel subscription?'),
|
title: this.$t('want_cancel_subscription'),
|
||||||
message: this.$t(
|
message: this.$t(
|
||||||
"popup_subscription_cancel.message"
|
"popup_subscription_cancel.message"
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="!hasSubscription" class="card shadow-card">
|
<div v-if="!hasSubscription" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Subscription') }}
|
{{ $t('subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
{{ $t('Free Plan') }}
|
{{ $t('free_plan') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b v-if="$store.getters.config.allowed_payments" class="mb-3 mb-8 block text-sm text-gray-400">
|
<b v-if="$store.getters.config.allowed_payments" class="mb-3 mb-8 block text-sm text-gray-400">
|
||||||
{{ $t('Upgrade your account to get more.') }}
|
{{ $t('upgrade_to_get_more') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<ButtonBase
|
<ButtonBase
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="mt-4 w-full"
|
class="mt-4 w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Upgrade Your Account') }}
|
{{ $t('upgrade_your_account') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
class="card shadow-card"
|
class="card shadow-card"
|
||||||
>
|
>
|
||||||
<FormLabel icon="frown">
|
<FormLabel icon="frown">
|
||||||
{{ $t('Failed Payments') }}
|
{{ $t('failed_payments') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<b class="mb-3 mb-5 block text-sm text-gray-400">
|
<b class="mb-3 mb-5 block text-sm text-gray-400">
|
||||||
{{
|
{{
|
||||||
$t(
|
$t(
|
||||||
"We are unable to charge your usage. Please register new credit card or fund your account with sufficient amount and we'll give it another try!"
|
"unable_to_charge"
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</b>
|
</b>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="hasSubscription" class="card shadow-card">
|
<div v-if="hasSubscription" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Subscription') }}
|
{{ $t('subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-xl font-extrabold sm:text-3xl">
|
||||||
@@ -50,12 +50,12 @@ export default {
|
|||||||
max_team_members: 'purple',
|
max_team_members: 'purple',
|
||||||
},
|
},
|
||||||
message: {
|
message: {
|
||||||
max_storage_amount: `Total ${item.use} of ${item.total} Used`,
|
max_storage_amount: this.$t('total_x_of_x_used', {use: item.use, total:item.total }),
|
||||||
max_team_members: `Total ${item.use} of ${item.total} Members`,
|
max_team_members: this.$t('total_x_of_x_members', {use: item.use, total:item.total }),
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
max_storage_amount: `Storage`,
|
max_storage_amount: this.$t('storage'),
|
||||||
max_team_members: `Team Members`,
|
max_team_members: this.$t('team_members'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,14 +75,14 @@ export default {
|
|||||||
},
|
},
|
||||||
status() {
|
status() {
|
||||||
return {
|
return {
|
||||||
active: `Active until ${this.subscription.data.attributes.renews_at}`,
|
active: this.$t('active_until', {date: this.subscription.data.attributes.renews_at}),
|
||||||
cancelled: `Ends at ${this.subscription.data.attributes.ends_at}`,
|
cancelled: this.$t('ends_at_date', {date: this.subscription.data.attributes.ends_at}),
|
||||||
}[this.subscription.data.attributes.status]
|
}[this.subscription.data.attributes.status]
|
||||||
},
|
},
|
||||||
price() {
|
price() {
|
||||||
return {
|
return {
|
||||||
month: `${this.subscription.data.relationships.plan.data.attributes.price} Per Month`,
|
month: this.$t('price_per_month', {price: this.subscription.data.relationships.plan.data.attributes.price}),
|
||||||
year: `${this.subscription.data.relationships.plan.data.attributes.price} Per Year`,
|
year: this.$t('price_per_year', {price: this.subscription.data.relationships.plan.data.attributes.price}),
|
||||||
}[this.subscription.data.relationships.plan.data.attributes.interval]
|
}[this.subscription.data.relationships.plan.data.attributes.interval]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="canShowForMeteredBilling || canShowForFixedBilling" class="card shadow-card">
|
<div v-if="canShowForMeteredBilling || canShowForFixedBilling" class="card shadow-card">
|
||||||
<FormLabel icon="credit-card">
|
<FormLabel icon="credit-card">
|
||||||
{{ $t('Payment Method') }}
|
{{ $t('payment_method') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!-- User has registered payment method -->
|
<!-- User has registered payment method -->
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<PaymentCard v-for="card in user.data.relationships.creditCards.data" :key="card.data.id" :card="card" />
|
<PaymentCard v-for="card in user.data.relationships.creditCards.data" :key="card.data.id" :card="card" />
|
||||||
|
|
||||||
<small class="hidden pt-3 text-xs leading-none dark:text-gray-500 text-gray-500 sm:block">
|
<small class="hidden pt-3 text-xs leading-none dark:text-gray-500 text-gray-500 sm:block">
|
||||||
{{ $t('We are settling your payment automatically via your saved credit card.') }}
|
{{ $t('auto_settled_credit_card') }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="mt-4 w-full"
|
class="mt-4 w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Add Payment Method') }}
|
{{ $t('add_payment_method') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
|
|
||||||
<!-- Store credit card form -->
|
<!-- Store credit card form -->
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="mt-4 w-full"
|
class="mt-4 w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store My Credit Card') }}
|
{{ $t('store_my_credit_card') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
<div id="error-message" class="pt-2 text-xs text-rose-600">
|
<div id="error-message" class="pt-2 text-xs text-rose-600">
|
||||||
<!-- Display error message to your customers here -->
|
<!-- Display error message to your customers here -->
|
||||||
@@ -124,7 +124,7 @@ export default {
|
|||||||
if (this.config.isDemo && this.user.data.attributes.email === 'ho**@hi5ve.digital') {
|
if (this.config.isDemo && this.user.data.attributes.email === 'ho**@hi5ve.digital') {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your credit card was stored successfully'),
|
message: this.$t('credit_card_stored'),
|
||||||
})
|
})
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -153,7 +153,7 @@ export default {
|
|||||||
// site first to authorize the payment, then redirected to the `return_url`.
|
// site first to authorize the payment, then redirected to the `return_url`.
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your credit card was stored successfully'),
|
message: this.$t('credit_card_stored'),
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO: L9 - load credit card after was stored in database
|
// TODO: L9 - load credit card after was stored in database
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="file-text">
|
<FormLabel icon="file-text">
|
||||||
{{ $t('Transactions') }}
|
{{ $t('transactions') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<DatatableWrapper
|
<DatatableWrapper
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="file-text">
|
<FormLabel icon="file-text">
|
||||||
{{ $t('Transactions') }}
|
{{ $t('transactions') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<DatatableWrapper class="overflow-x-auto" api="/api/user/transactions" :paginator="true" :columns="columns">
|
<DatatableWrapper class="overflow-x-auto" api="/api/user/transactions" :paginator="true" :columns="columns">
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="canShowForSubscription" class="card shadow-card">
|
<div v-if="canShowForSubscription" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Update Payments') }}
|
{{ $t('update_payments') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputButton
|
<AppInputButton
|
||||||
:title="$t('Update your Payment Method')"
|
:title="$t('update_payment_method')"
|
||||||
:description="$t('You will be redirected to your payment provider to edit your payment method.')"
|
:description="$t('payment_method_update_redirect_description')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<ButtonBase
|
<ButtonBase
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
button-style="theme"
|
button-style="theme"
|
||||||
>
|
>
|
||||||
{{ $t('Update Payments') }}
|
{{ $t('update_payments') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</AppInputButton>
|
</AppInputButton>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="bar-chart">
|
<FormLabel icon="bar-chart">
|
||||||
{{ $t('Usage Estimates') }}
|
{{ $t('usage_estimates') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ user.data.relationships.subscription.data.attributes.updated_at }}
|
{{ user.data.relationships.subscription.data.attributes.updated_at }}
|
||||||
{{ $t('till now') }}
|
{{ $t('till_now') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<small class="mt-6 block font-bold">
|
<small class="mt-6 block font-bold">
|
||||||
{{ $t('Records are updated on daily bases.') }}
|
{{ $t('records_updated_daily_bases') }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div @click="togglePermission" class="permission-toggle">
|
<div @click="togglePermission" class="permission-toggle">
|
||||||
<b class="privilege">{{ teamPermissions[permission] }}</b>
|
<b class="privilege">{{ $t(teamPermissions[permission]) }}</b>
|
||||||
<refresh-cw-icon size="14" />
|
<refresh-cw-icon size="14" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{{ teamFolder.data.attributes.name }}
|
{{ teamFolder.data.attributes.name }}
|
||||||
</b>
|
</b>
|
||||||
<span class="subtitle mb-2 block text-tiny text-gray-600 dark:text-gray-500">
|
<span class="subtitle mb-2 block text-tiny text-gray-600 dark:text-gray-500">
|
||||||
{{ $t('Created at') }} {{ teamFolder.data.attributes.created_at }}
|
{{ $t('created_at') }} {{ teamFolder.data.attributes.created_at }}
|
||||||
</span>
|
</span>
|
||||||
<TeamMembersPreview :folder="teamFolder" :avatar-size="32" class="members" />
|
<TeamMembersPreview :folder="teamFolder" :avatar-size="32" class="members" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
{{ entry.email }}
|
{{ entry.email }}
|
||||||
</b>
|
</b>
|
||||||
<span v-if="entry.id" class="block text-xs text-gray-600 dark:text-gray-500">
|
<span v-if="entry.id" class="block text-xs text-gray-600 dark:text-gray-500">
|
||||||
{{ $t('Waiting for accept invitation...') }}
|
{{ $t('waiting_for_accept_invitation') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="w-28">
|
<div class="w-28">
|
||||||
<div v-if="!teamFolder" class="text-right md:text-center">
|
<div v-if="!teamFolder" class="text-right md:text-center">
|
||||||
<span class="mr-3 align-middle text-tiny text-gray-600 dark:text-gray-500 md:mr-0.5">
|
<span class="mr-3 align-middle text-tiny text-gray-600 dark:text-gray-500 md:mr-0.5">
|
||||||
{{ $t('Not selected') }}
|
{{ $t('not_selected') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<TeamMembersPreview
|
<TeamMembersPreview
|
||||||
|
|||||||
@@ -33,14 +33,14 @@
|
|||||||
|
|
||||||
<!--Add Member-->
|
<!--Add Member-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Email" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Email" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Add Member')" :error="errors[0]">
|
<AppInputText :title="$t('add_member')" :error="errors[0]">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<span
|
<span
|
||||||
v-if="email"
|
v-if="email"
|
||||||
@click="addMember"
|
@click="addMember"
|
||||||
class="button-base theme absolute right-2 top-1/2 -translate-y-1/2 transform cursor-pointer rounded-lg px-3 py-2 text-sm font-bold"
|
class="button-base theme absolute right-2 top-1/2 -translate-y-1/2 transform cursor-pointer rounded-lg px-3 py-2 text-sm font-bold"
|
||||||
>
|
>
|
||||||
Add
|
{{ $t('add') }}
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input
|
||||||
@keypress.enter.stop.prevent="addMember"
|
@keypress.enter.stop.prevent="addMember"
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
type="email"
|
type="email"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
:placeholder="$t('Type member email...')"
|
:placeholder="$t('type_member_email_')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -57,15 +57,15 @@
|
|||||||
|
|
||||||
<!--Member list-->
|
<!--Member list-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Members" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Members" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Your Members')" :error="errors[0]" :is-last="true">
|
<AppInputText :title="$t('your_members')" :error="errors[0]" :is-last="true">
|
||||||
<span v-if="errors[0]" class="error-message" style="margin-top: -5px">
|
<span v-if="errors[0]" class="error-message" style="margin-top: -5px">
|
||||||
{{ $t('Please add at least one member.') }}
|
{{ $t('add_at_least_one_member') }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<TeamList v-model="invitations" />
|
<TeamList v-model="invitations" />
|
||||||
|
|
||||||
<p v-if="Object.values(invitations).length === 0" class="text-xs dark:text-gray-500">
|
<p v-if="Object.values(invitations).length === 0" class="text-xs dark:text-gray-500">
|
||||||
{{ $t('Please add at least one member into your Team Folders.') }}
|
{{ $t('add_at_least_one_member_into_team_folder') }}
|
||||||
</p>
|
</p>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
@@ -128,10 +128,10 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['user']),
|
...mapGetters(['user']),
|
||||||
popupTitle() {
|
popupTitle() {
|
||||||
return this.item ? this.$t('Convert as Team Folder') : this.$t('Create Team Folder')
|
return this.item ? this.$t('convert_as_team_folder') : this.$t('create_team_folder')
|
||||||
},
|
},
|
||||||
popupSubmit() {
|
popupSubmit() {
|
||||||
return this.item ? this.$t('Move & Invite Members') : this.$t('Create Team Folder')
|
return this.item ? this.$t('move_and_invite_members') : this.$t('create_team_folder')
|
||||||
},
|
},
|
||||||
isNewFolderTeamCreation() {
|
isNewFolderTeamCreation() {
|
||||||
return !this.item
|
return !this.item
|
||||||
@@ -187,8 +187,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let toasterMessage = this.isNewFolderTeamCreation
|
let toasterMessage = this.isNewFolderTeamCreation
|
||||||
? this.$t('Your Team was invited successfully.')
|
? this.$t('team_was_invited')
|
||||||
: this.$t('Your Team was invited and folder was moved into Team Folders section.')
|
: this.$t('team_was_invited_and_folder_moved')
|
||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
@@ -209,14 +209,14 @@ export default {
|
|||||||
addMember() {
|
addMember() {
|
||||||
if (this.$isInvalidEmail(this.email)) {
|
if (this.$isInvalidEmail(this.email)) {
|
||||||
this.$refs.teamFolderForm.setErrors({
|
this.$refs.teamFolderForm.setErrors({
|
||||||
Email: this.$t('You have to type valid email'),
|
Email: this.$t('type_valid_email'),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.$cantInviteMember(this.email, this.invitations)) {
|
if (this.$cantInviteMember(this.email, this.invitations)) {
|
||||||
this.$refs.teamFolderForm.setErrors({
|
this.$refs.teamFolderForm.setErrors({
|
||||||
Email: this.$t('You have to upgrade your account to add this new member.'),
|
Email: this.$t('upgrade_to_invite_members'),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<PopupWrapper name="update-team-folder">
|
<PopupWrapper name="update-team-folder">
|
||||||
<!--Title-->
|
<!--Title-->
|
||||||
<PopupHeader :title="$t('Edit Team Folder')" icon="user-plus" />
|
<PopupHeader :title="$t('edit_team_folder')" icon="user-plus" />
|
||||||
|
|
||||||
<!--Content-->
|
<!--Content-->
|
||||||
<PopupContent>
|
<PopupContent>
|
||||||
@@ -12,14 +12,14 @@
|
|||||||
<ValidationObserver @submit.prevent="updateTeamFolder" ref="teamFolderForm" v-slot="{ invalid }" tag="form">
|
<ValidationObserver @submit.prevent="updateTeamFolder" ref="teamFolderForm" v-slot="{ invalid }" tag="form">
|
||||||
<!--Add Member-->
|
<!--Add Member-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Email" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Email" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Add Member')" :error="errors[0]">
|
<AppInputText :title="$t('add_member')" :error="errors[0]">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<span
|
<span
|
||||||
v-if="email"
|
v-if="email"
|
||||||
@click="addMember"
|
@click="addMember"
|
||||||
class="button-base theme absolute right-2 top-1/2 -translate-y-1/2 transform cursor-pointer rounded-lg px-3 py-2 text-sm font-bold"
|
class="button-base theme absolute right-2 top-1/2 -translate-y-1/2 transform cursor-pointer rounded-lg px-3 py-2 text-sm font-bold"
|
||||||
>
|
>
|
||||||
Add
|
{{ $t('add') }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<!--TODO: Fix !pr-20 after JIT official release-->
|
<!--TODO: Fix !pr-20 after JIT official release-->
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
type="email"
|
type="email"
|
||||||
class="focus-border-theme input-dark !pr-20"
|
class="focus-border-theme input-dark !pr-20"
|
||||||
:placeholder="$t('Type member email...')"
|
:placeholder="$t('type_member_email_')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
|
|
||||||
<!--Member list-->
|
<!--Member list-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Members" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Members" v-slot="{ errors }">
|
||||||
<label class="input-label">{{ $t('Your Members') }}:</label>
|
<label class="input-label">{{ $t('your_members') }}:</label>
|
||||||
<span v-if="errors[0]" class="error-message" style="margin-top: -5px">{{
|
<span v-if="errors[0]" class="error-message" style="margin-top: -5px">{{
|
||||||
$t('Please add at least one member.')
|
$t('add_at_least_one_member')
|
||||||
}}</span>
|
}}</span>
|
||||||
<TeamList v-model="members" />
|
<TeamList v-model="members" />
|
||||||
<TeamList v-model="invitations" />
|
<TeamList v-model="invitations" />
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
v-if="Object.values(members).length === 0 && Object.values(invitations).length === 0"
|
v-if="Object.values(members).length === 0 && Object.values(invitations).length === 0"
|
||||||
class="text-xs dark:text-gray-500"
|
class="text-xs dark:text-gray-500"
|
||||||
>
|
>
|
||||||
{{ $t('Please add at least one member into your Team Folder.') }}
|
{{ $t('add_at_least_one_member_into_team_folder') }}
|
||||||
</p>
|
</p>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
:button-style="isDisabledSubmit ? 'secondary' : 'theme'"
|
:button-style="isDisabledSubmit ? 'secondary' : 'theme'"
|
||||||
:loading="isLoading"
|
:loading="isLoading"
|
||||||
:disabled="isLoading || isDisabledSubmit"
|
:disabled="isLoading || isDisabledSubmit"
|
||||||
>{{ $t('Update Team Folder') }}
|
>{{ $t('update_team_folder') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</PopupActions>
|
</PopupActions>
|
||||||
</PopupWrapper>
|
</PopupWrapper>
|
||||||
@@ -139,7 +139,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your team folder was updated'),
|
message: this.$t('team_folder_updated'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@@ -160,14 +160,14 @@ export default {
|
|||||||
addMember() {
|
addMember() {
|
||||||
if (this.$isInvalidEmail(this.email)) {
|
if (this.$isInvalidEmail(this.email)) {
|
||||||
this.$refs.teamFolderForm.setErrors({
|
this.$refs.teamFolderForm.setErrors({
|
||||||
Email: this.$t('You have to type valid email'),
|
Email: this.$t('type_valid_email'),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.$cantInviteMember(this.email, this.invitations)) {
|
if (this.$cantInviteMember(this.email, this.invitations)) {
|
||||||
this.$refs.teamFolderForm.setErrors({
|
this.$refs.teamFolderForm.setErrors({
|
||||||
Email: this.$t('You have to upgrade your account to add this new member.'),
|
Email: this.$t('upgrade_to_invite_members'),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
20
resources/js/helpers/AlertHelpers.js
vendored
20
resources/js/helpers/AlertHelpers.js
vendored
@@ -7,16 +7,16 @@ const AlertHelpers = {
|
|||||||
Vue.prototype.$temporarilyDisabledUpload = function () {
|
Vue.prototype.$temporarilyDisabledUpload = function () {
|
||||||
let messages = {
|
let messages = {
|
||||||
metered: {
|
metered: {
|
||||||
title: i18n.t('Upload is temporarily disabled'),
|
title: i18n.t('upload_temporarily_disabled'),
|
||||||
message: i18n.t('Please review your billing settings.'),
|
message: i18n.t('upload_temporarily_disabled_note'),
|
||||||
},
|
},
|
||||||
fixed: {
|
fixed: {
|
||||||
title: i18n.t('Upload is temporarily disabled'),
|
title: i18n.t('upload_temporarily_disabled'),
|
||||||
message: i18n.t('Please review your billing settings.'),
|
message: i18n.t('upload_temporarily_disabled_note'),
|
||||||
},
|
},
|
||||||
none: {
|
none: {
|
||||||
title: i18n.t('You exceeded your upload limit'),
|
title: i18n.t('exceed_upload_limit'),
|
||||||
message: i18n.t('Unfortunately, you can not upload your file.'),
|
message: i18n.t('exceed_upload_limit_description'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,15 +28,15 @@ const AlertHelpers = {
|
|||||||
|
|
||||||
Vue.prototype.$temporarilyDisabledFolderCreate = function () {
|
Vue.prototype.$temporarilyDisabledFolderCreate = function () {
|
||||||
events.$emit('alert:open', {
|
events.$emit('alert:open', {
|
||||||
title: i18n.t('Folder creation is temporarily disabled'),
|
title: i18n.t('create_folder_temporarily_disabled'),
|
||||||
message: i18n.t('Please review your billing settings.'),
|
message: i18n.t('create_folder_temporarily_disabled_desc'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.prototype.$temporarilyDisabledDownload = function () {
|
Vue.prototype.$temporarilyDisabledDownload = function () {
|
||||||
events.$emit('alert:open', {
|
events.$emit('alert:open', {
|
||||||
title: i18n.t('File download is temporarily disabled'),
|
title: i18n.t('download_temporarily_disabled'),
|
||||||
message: i18n.t('Please review your billing settings.'),
|
message: i18n.t('download_temporarily_disabled_desc'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
34
resources/js/helpers/functionHelpers.js
vendored
34
resources/js/helpers/functionHelpers.js
vendored
@@ -93,31 +93,31 @@ const FunctionHelpers = {
|
|||||||
progress: storage.data.meta.images.percentage,
|
progress: storage.data.meta.images.percentage,
|
||||||
color: 'success',
|
color: 'success',
|
||||||
value: storage.data.meta.images.used,
|
value: storage.data.meta.images.used,
|
||||||
title: 'Images',
|
title: i18n.t('images'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
progress: storage.data.meta.videos.percentage,
|
progress: storage.data.meta.videos.percentage,
|
||||||
color: 'danger',
|
color: 'danger',
|
||||||
value: storage.data.meta.videos.used,
|
value: storage.data.meta.videos.used,
|
||||||
title: 'Videos',
|
title: i18n.t('videos'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
progress: storage.data.meta.audios.percentage,
|
progress: storage.data.meta.audios.percentage,
|
||||||
color: 'warning',
|
color: 'warning',
|
||||||
value: storage.data.meta.audios.used,
|
value: storage.data.meta.audios.used,
|
||||||
title: 'Audios',
|
title: i18n.t('audios'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
progress: storage.data.meta.documents.percentage,
|
progress: storage.data.meta.documents.percentage,
|
||||||
color: 'info',
|
color: 'info',
|
||||||
value: storage.data.meta.documents.used,
|
value: storage.data.meta.documents.used,
|
||||||
title: 'Documents',
|
title: i18n.t('documents'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
progress: storage.data.meta.others.percentage,
|
progress: storage.data.meta.others.percentage,
|
||||||
color: 'purple',
|
color: 'purple',
|
||||||
value: storage.data.meta.others.used,
|
value: storage.data.meta.others.used,
|
||||||
title: 'Others',
|
title: i18n.t('others'),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ const FunctionHelpers = {
|
|||||||
progress: 100 - storage.data.attributes.percentage,
|
progress: 100 - storage.data.attributes.percentage,
|
||||||
color: 'secondary',
|
color: 'secondary',
|
||||||
value: storage.data.meta.others.used,
|
value: storage.data.meta.others.used,
|
||||||
title: 'Empty',
|
title: i18n.t('empty'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,27 +288,27 @@ const FunctionHelpers = {
|
|||||||
return store.getters.currentFolder.data.attributes.name
|
return store.getters.currentFolder.data.attributes.name
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
RequestUpload: this.$t('Home'),
|
RequestUpload: this.$t('home'),
|
||||||
RecentUploads: this.$t('Recent Uploads'),
|
RecentUploads: this.$t('menu.latest'),
|
||||||
MySharedItems: this.$t('publicly_shared'),
|
MySharedItems: this.$t('publicly_shared'),
|
||||||
Trash: this.$t('Trash'),
|
Trash: this.$t('trash'),
|
||||||
Public: this.$t('Files'),
|
Public: this.$t('menu.files'),
|
||||||
Files: this.$t('sidebar.home'),
|
Files: this.$t('sidebar.home'),
|
||||||
TeamFolders: this.$t('Team Folders'),
|
TeamFolders: this.$t('team_folders'),
|
||||||
SharedWithMe: this.$t('Shared With Me'),
|
SharedWithMe: this.$t('shared_with_me'),
|
||||||
}[this.$route.name]
|
}[this.$route.name]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.prototype.$getCurrentSectionName = function () {
|
Vue.prototype.$getCurrentSectionName = function () {
|
||||||
return {
|
return {
|
||||||
RecentUploads: this.$t('Recent Uploads'),
|
RecentUploads: this.$t('menu.latest'),
|
||||||
MySharedItems: this.$t('publicly_shared'),
|
MySharedItems: this.$t('publicly_shared'),
|
||||||
Trash: this.$t('Trash'),
|
Trash: this.$t('trash'),
|
||||||
Public: this.$t('Files'),
|
Public: this.$t('menu.files'),
|
||||||
Files: this.$t('sidebar.home'),
|
Files: this.$t('sidebar.home'),
|
||||||
TeamFolders: this.$t('Team Folders'),
|
TeamFolders: this.$t('team_folders'),
|
||||||
SharedWithMe: this.$t('Shared With Me'),
|
SharedWithMe: this.$t('shared_with_me'),
|
||||||
}[this.$route.name]
|
}[this.$route.name]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
8
resources/js/helpers/itemHelpers.js
vendored
8
resources/js/helpers/itemHelpers.js
vendored
@@ -101,9 +101,9 @@ const itemHelpers = {
|
|||||||
|
|
||||||
Vue.prototype.$dissolveTeamFolder = function (folder) {
|
Vue.prototype.$dissolveTeamFolder = function (folder) {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: i18n.t('Are you sure you want to dissolve this team?'),
|
title: i18n.t('really_dissolve_team'),
|
||||||
message: i18n.t(
|
message: i18n.t(
|
||||||
'All team members will lose access to your files and existing folder will be moved into your "Files" section.'
|
'really_dissolve_team_desc'
|
||||||
),
|
),
|
||||||
action: {
|
action: {
|
||||||
id: folder.data.id,
|
id: folder.data.id,
|
||||||
@@ -114,9 +114,9 @@ const itemHelpers = {
|
|||||||
|
|
||||||
Vue.prototype.$detachMeFromTeamFolder = function (folder) {
|
Vue.prototype.$detachMeFromTeamFolder = function (folder) {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: i18n.t('Are you sure you want to leave this team folder?'),
|
title: i18n.t('really_leave_team'),
|
||||||
message: i18n.t(
|
message: i18n.t(
|
||||||
"You will don't have access to the files and all your previously uploaded content will be part of this Team Folder you are leaving."
|
"really_leave_team_desc"
|
||||||
),
|
),
|
||||||
action: {
|
action: {
|
||||||
id: folder.data.id,
|
id: folder.data.id,
|
||||||
|
|||||||
24
resources/js/store/modules/lists.js
vendored
24
resources/js/store/modules/lists.js
vendored
@@ -35,42 +35,42 @@ const defaultState = {
|
|||||||
],
|
],
|
||||||
transactionColumns: [
|
transactionColumns: [
|
||||||
{
|
{
|
||||||
label: i18n.t('Note'),
|
label: 'note',
|
||||||
field: 'note',
|
field: 'note',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('User'),
|
label: 'user',
|
||||||
field: 'user_id',
|
field: 'user_id',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Status'),
|
label: 'status',
|
||||||
field: 'status',
|
field: 'status',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Type'),
|
label: 'type',
|
||||||
field: 'type',
|
field: 'type',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Total'),
|
label: 'total',
|
||||||
field: 'amount',
|
field: 'amount',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Payed At'),
|
label: 'payed_at',
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Service'),
|
label: 'service',
|
||||||
field: 'driver',
|
field: 'driver',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: i18n.t('Actions'),
|
label: 'actions',
|
||||||
field: 'actions',
|
field: 'actions',
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
@@ -100,8 +100,8 @@ const defaultState = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
teamPermissions: {
|
teamPermissions: {
|
||||||
'can-edit': 'Can Edit',
|
'can-edit': 'can_edit',
|
||||||
'can-view': 'Can View',
|
'can-view': 'can_view',
|
||||||
},
|
},
|
||||||
countries: [
|
countries: [
|
||||||
{ label: 'Czech Republic', value: 'CZ' },
|
{ label: 'Czech Republic', value: 'CZ' },
|
||||||
@@ -380,11 +380,11 @@ const defaultState = {
|
|||||||
],
|
],
|
||||||
intervalList: [
|
intervalList: [
|
||||||
{
|
{
|
||||||
label: 'Monthly',
|
label: 'monthly',
|
||||||
value: 'month',
|
value: 'month',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Annually',
|
label: 'yearly',
|
||||||
value: 'year',
|
value: 'year',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ export default {
|
|||||||
let subscriptionLinks = {
|
let subscriptionLinks = {
|
||||||
metered: [
|
metered: [
|
||||||
{
|
{
|
||||||
title: this.$t('Payments'),
|
title: this.$t('payments'),
|
||||||
route: 'PaymentSettings',
|
route: 'PaymentSettings',
|
||||||
icon: 'card',
|
icon: 'card',
|
||||||
},
|
},
|
||||||
@@ -104,19 +104,19 @@ export default {
|
|||||||
linkActivation: ['plans', 'plan'],
|
linkActivation: ['plans', 'plan'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Transactions'),
|
title: this.$t('transactions'),
|
||||||
route: 'Invoices',
|
route: 'Invoices',
|
||||||
icon: 'file-text',
|
icon: 'file-text',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
fixed: [
|
fixed: [
|
||||||
{
|
{
|
||||||
title: this.$t('Payments'),
|
title: this.$t('payments'),
|
||||||
route: 'PaymentSettings',
|
route: 'PaymentSettings',
|
||||||
icon: 'card',
|
icon: 'card',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Subscriptions'),
|
title: this.$t('subscriptions'),
|
||||||
route: 'Subscriptions',
|
route: 'Subscriptions',
|
||||||
icon: 'dollar',
|
icon: 'dollar',
|
||||||
},
|
},
|
||||||
@@ -127,7 +127,7 @@ export default {
|
|||||||
linkActivation: ['plans', 'plan'],
|
linkActivation: ['plans', 'plan'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Transactions'),
|
title: this.$t('transactions'),
|
||||||
route: 'Invoices',
|
route: 'Invoices',
|
||||||
icon: 'file-text',
|
icon: 'file-text',
|
||||||
},
|
},
|
||||||
@@ -159,7 +159,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
groupCollapsable: false,
|
groupCollapsable: false,
|
||||||
groupTitle: this.$t('Content'),
|
groupTitle: this.$t('content'),
|
||||||
groupLinks: [
|
groupLinks: [
|
||||||
{
|
{
|
||||||
title: this.$t('pages'),
|
title: this.$t('pages'),
|
||||||
@@ -179,7 +179,7 @@ export default {
|
|||||||
if (this.config.subscriptionType !== 'none') {
|
if (this.config.subscriptionType !== 'none') {
|
||||||
sections.push({
|
sections.push({
|
||||||
groupCollapsable: false,
|
groupCollapsable: false,
|
||||||
groupTitle: this.$t('Subscription'),
|
groupTitle: this.$t('subscription'),
|
||||||
groupLinks: subscriptionLinks,
|
groupLinks: subscriptionLinks,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export default {
|
|||||||
route: 'AppOthers',
|
route: 'AppOthers',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Login & Registration'),
|
title: this.$t('login_and_registration'),
|
||||||
route: 'AppSignInUp',
|
route: 'AppSignInUp',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -38,15 +38,15 @@ export default {
|
|||||||
route: 'AppAdsense',
|
route: 'AppAdsense',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Homepage'),
|
title: this.$t('homepage'),
|
||||||
route: 'AppIndex',
|
route: 'AppIndex',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Environment'),
|
title: this.$t('environment'),
|
||||||
route: 'AppEnvironment',
|
route: 'AppEnvironment',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Server'),
|
title: this.$t('server'),
|
||||||
route: 'AppServer',
|
route: 'AppServer',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="app" class="card shadow-card">
|
<div v-if="app" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Branding') }}
|
{{ $t('branding') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputText :title="$t('admin_settings.appearance.logo')">
|
<AppInputText :title="$t('admin_settings.appearance.logo')">
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
|
|
||||||
<AppInputText :title="$t('App Logo Dark Mode (optional)')">
|
<AppInputText :title="$t('app_logo_dark_mode')">
|
||||||
<ImageInput
|
<ImageInput
|
||||||
@input="$updateImage('/admin/settings', 'app_logo_dark', app.logo_dark)"
|
@input="$updateImage('/admin/settings', 'app_logo_dark', app.logo_dark)"
|
||||||
:image="$getImage(app.logo_dark)"
|
:image="$getImage(app.logo_dark)"
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
|
|
||||||
<AppInputText :title="$t('App Logo Horizontal Dark Mode (optional)')">
|
<AppInputText :title="$t('app_logo_horizontal_dark_mode')">
|
||||||
<ImageInput
|
<ImageInput
|
||||||
@input="$updateImage('/admin/settings', 'app_logo_horizontal_dark', app.logo_horizontal_dark)"
|
@input="$updateImage('/admin/settings', 'app_logo_horizontal_dark', app.logo_horizontal_dark)"
|
||||||
:image="$getImage(app.logo_horizontal_dark)"
|
:image="$getImage(app.logo_horizontal_dark)"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
class="card shadow-card"
|
class="card shadow-card"
|
||||||
>
|
>
|
||||||
<FormLabel icon="wifi">
|
<FormLabel icon="wifi">
|
||||||
{{ $t('Broadcasting') }}
|
{{ $t('broadcasting') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<ValidationProvider tag="div" mode="passive" name="Broadcast Driver" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Broadcast Driver" rules="required" v-slot="{ errors }">
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
>
|
>
|
||||||
{{ $t('Save Broadcast Settings') }}
|
{{ $t('save_broadcast_settings') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
|
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
class="card shadow-card"
|
class="card shadow-card"
|
||||||
>
|
>
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Storage Driver') }}
|
{{ $t('storage_driver') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
button-style="theme"
|
button-style="theme"
|
||||||
class="w-full sm:w-auto"
|
class="w-full sm:w-auto"
|
||||||
>
|
>
|
||||||
{{ $t('Save Storage Settings') }}
|
{{ $t('save_storage_settings') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@
|
|||||||
tag="form"
|
tag="form"
|
||||||
class="card shadow-card"
|
class="card shadow-card"
|
||||||
>
|
>
|
||||||
<FormLabel icon="mail">{{ $t('Mail Driver') }}</FormLabel>
|
<FormLabel icon="mail">{{ $t('mail_driver') }}</FormLabel>
|
||||||
|
|
||||||
<ValidationProvider tag="div" mode="passive" name="Mail Driver" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Mail Driver" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText title="Mail Driver" :error="errors[0]">
|
<AppInputText title="Mail Driver" :error="errors[0]">
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
v-model="mailDriver"
|
v-model="mailDriver"
|
||||||
:default="mailDriver"
|
:default="mailDriver"
|
||||||
:options="mailDriverList"
|
:options="mailDriverList"
|
||||||
placeholder="Select your mail driver"
|
:placeholder="$t('select_mail_driver')"
|
||||||
:isError="errors[0]"
|
:isError="errors[0]"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -846,7 +846,7 @@ export default {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your broadcast driver was updated.'),
|
message: this.$t('broadcast_driver_updated'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@@ -885,7 +885,7 @@ export default {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('Your storage driver was updated.'),
|
message: this.$t('storage_driver_updated'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<div class="form block-form">
|
<div class="form block-form">
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Homepage') }}
|
{{ $t('homepage') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow Homepage')"
|
:title="$t('allow_homepage')"
|
||||||
:description="$t('When this is turned on, your visitors can visit your default homepage.')"
|
:description="$t('allow_homepage_note')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<!--Store & Upload-->
|
<!--Store & Upload-->
|
||||||
<div v-if="app" class="card shadow-card">
|
<div v-if="app" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Storage & Upload') }}
|
{{ $t('storage_upload') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Available only when is not metered billing-->
|
<!--Available only when is not metered billing-->
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow ReCaptcha')"
|
:title="$t('allow_recaptcha')"
|
||||||
:description="$t('ReCaptcha will be allowed on Registration and Contact Us forms.')"
|
:description="$t('allow_recaptcha_note')"
|
||||||
:is-last="!recaptcha.allowedService"
|
:is-last="!recaptcha.allowedService"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
:class="{ 'mb-4': recaptcha.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': recaptcha.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
||||||
<b class="text-xs">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-xs">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Set up recaptcha credentials-->
|
<!--Set up recaptcha credentials-->
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
class="rounded-xl p-5 shadow-lg"
|
class="rounded-xl p-5 shadow-lg"
|
||||||
>
|
>
|
||||||
<FormLabel v-if="!config.isRecaptchaConfigured" icon="shield">
|
<FormLabel v-if="!config.isRecaptchaConfigured" icon="shield">
|
||||||
{{ $t('Configure Credentials') }}
|
{{ $t('configure_your_credentials') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<ValidationProvider tag="div" mode="passive" name="Site Key" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Site Key" rules="required" v-slot="{ errors }">
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -145,12 +145,12 @@
|
|||||||
<!--Other Settings-->
|
<!--Other Settings-->
|
||||||
<div v-if="app" class="card shadow-card">
|
<div v-if="app" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Application') }}
|
{{ $t('application') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputButton
|
<AppInputButton
|
||||||
:title="$t('Cache')"
|
:title="$t('cache')"
|
||||||
:description="$t('Did you change anything in your .env file? Then clear your cache.')"
|
:description="$t('cache_note')"
|
||||||
>
|
>
|
||||||
<ButtonBase
|
<ButtonBase
|
||||||
@click.native="flushCache"
|
@click.native="flushCache"
|
||||||
@@ -187,15 +187,15 @@
|
|||||||
<!-- Subscription -->
|
<!-- Subscription -->
|
||||||
<div v-if="app" class="card shadow-card">
|
<div v-if="app" class="card shadow-card">
|
||||||
<FormLabel icon="credit-card">
|
<FormLabel icon="credit-card">
|
||||||
{{ $t('Subscription') }}
|
{{ $t('subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputText :title="$t('Subscription Type')" :description="$t('Please do not change in production environment.')" :is-last="true">
|
<AppInputText :title="$t('subscription_type')" :description="$t('subscription_type_note')" :is-last="true">
|
||||||
<SelectInput
|
<SelectInput
|
||||||
@change="subscriptionTypeChange"
|
@change="subscriptionTypeChange"
|
||||||
:default="app.subscriptionType"
|
:default="app.subscriptionType"
|
||||||
:options="subscriptionTypes"
|
:options="subscriptionTypes"
|
||||||
:placeholder="$t('Select your subscription type')"
|
:placeholder="$t('select_subscription_type')"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</div>
|
</div>
|
||||||
@@ -255,9 +255,9 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
subscriptionTypeChange(type) {
|
subscriptionTypeChange(type) {
|
||||||
events.$emit('confirm:open', {
|
events.$emit('confirm:open', {
|
||||||
title: this.$t('Are you sure you want to change subscription type?'),
|
title: this.$t(''),
|
||||||
message: this.$t(
|
message: this.$t(
|
||||||
'We strongly do not recommend change this value if there is any subscribed user to prevent any failures. You can operate only with one type of subscription and you can not change it on the fly!'
|
'subscription_type_change_warn_description'
|
||||||
),
|
),
|
||||||
action: {
|
action: {
|
||||||
type: type,
|
type: type,
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<FormLabel icon="list">Latest Server Logs</FormLabel>
|
<FormLabel icon="list">Latest Server Logs</FormLabel>
|
||||||
|
|
||||||
<InfoBox v-if="!logs.length" class="!mb-0">
|
<InfoBox v-if="!logs.length" class="!mb-0">
|
||||||
<p v-html="$t('There is not any server log.')"></p>
|
<p v-html="$t('there_is_not_log')"></p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -58,11 +58,11 @@
|
|||||||
<FormLabel icon="database"> Latest Database Backups </FormLabel>
|
<FormLabel icon="database"> Latest Database Backups </FormLabel>
|
||||||
|
|
||||||
<InfoBox v-if="!backups.length" class="!mb-0">
|
<InfoBox v-if="!backups.length" class="!mb-0">
|
||||||
<p v-html="$t('There is not any database backup stored.')"></p>
|
<p v-html="$t('there_is_not_database_backup')"></p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
|
|
||||||
<InfoBox v-if="backups.length" class="!mb-3">
|
<InfoBox v-if="backups.length" class="!mb-3">
|
||||||
<p v-html="$t('You can find your backups in <b>/storage/app/app-backups</b>.')"></p>
|
<p v-html="$t('backup_path')"></p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -19,8 +19,8 @@
|
|||||||
</AppInputSwitch>
|
</AppInputSwitch>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Require Email Verification')"
|
:title="$t('require_email_verification')"
|
||||||
:description="$t('admin_settings.others.allow_user_verification_help')"
|
:description="$t('require_email_verification_note')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
:class="{ 'mb-4': facebook.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': facebook.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
||||||
<b class="text-xs">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-xs">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Set up facebook credentials-->
|
<!--Set up facebook credentials-->
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
:class="{ 'mb-4': google.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': google.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
||||||
<b class="text-xs">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-xs">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Set up Google credentials-->
|
<!--Set up Google credentials-->
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -234,7 +234,7 @@
|
|||||||
:class="{ 'mb-4': github.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': github.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
<edit2-icon size="12" class="vue-feather text-theme mr-2" />
|
||||||
<b class="text-xs">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-xs">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Set up github credentials-->
|
<!--Set up github credentials-->
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</a>
|
</a>
|
||||||
<b v-if="data.app.license === 'extended'" class="mr-4 inline-block">
|
<b v-if="data.app.license === 'extended'" class="mr-4 inline-block">
|
||||||
<span class="text-sm font-bold"> {{ $t('Subscription') }}: </span>
|
<span class="text-sm font-bold"> {{ $t('subscription') }}: </span>
|
||||||
<ColorLabel color="purple">
|
<ColorLabel color="purple">
|
||||||
{{ config.subscriptionType }}
|
{{ config.subscriptionType }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
>
|
>
|
||||||
<thumbs-up-icon size="15" class="vue-feather text-theme mr-2.5" />
|
<thumbs-up-icon size="15" class="vue-feather text-theme mr-2.5" />
|
||||||
<span class="text-theme text-sm font-bold">
|
<span class="text-theme text-sm font-bold">
|
||||||
{{ $t('Write a Feedback') }}
|
{{ $t('write_feedback') }}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
<div class="mb-2 md:mb-6 md:flex md:space-x-6">
|
<div class="mb-2 md:mb-6 md:flex md:space-x-6">
|
||||||
<div class="card mb-4 w-full shadow-card md:mb-0">
|
<div class="card mb-4 w-full shadow-card md:mb-0">
|
||||||
<FormLabel icon="users">
|
<FormLabel icon="users">
|
||||||
{{ $t('Total Users') }}
|
{{ $t('total_users') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card mb-4 w-full shadow-card md:mb-0">
|
<div class="card mb-4 w-full shadow-card md:mb-0">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Total Storage') }}
|
{{ $t('total_storage') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-if="config.subscriptionType !== 'none'" class="card mb-4 w-full shadow-card md:mb-0">
|
<div v-if="config.subscriptionType !== 'none'" class="card mb-4 w-full shadow-card md:mb-0">
|
||||||
<FormLabel icon="dollar">
|
<FormLabel icon="dollar">
|
||||||
{{ $t('Earnings') }}
|
{{ $t('earnings') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
|
|
||||||
<router-link :to="{ name: 'Invoices' }" class="mt-6 flex items-center">
|
<router-link :to="{ name: 'Invoices' }" class="mt-6 flex items-center">
|
||||||
<span class="mr-2 whitespace-nowrap text-xs font-bold">
|
<span class="mr-2 whitespace-nowrap text-xs font-bold">
|
||||||
{{ $t('Show all transactions') }}
|
{{ $t('show_all_transactions') }}
|
||||||
</span>
|
</span>
|
||||||
<chevron-right-icon size="16" class="text-theme vue-feather" />
|
<chevron-right-icon size="16" class="text-theme vue-feather" />
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
<!--Upload bandwidth widgets-->
|
<!--Upload bandwidth widgets-->
|
||||||
<div class="card mb-4 shadow-card md:mb-6">
|
<div class="card mb-4 shadow-card md:mb-6">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Upload') }}
|
{{ $t('upload') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="mb-3 mb-2 block text-sm dark:text-gray-500 text-gray-400">
|
<b class="mb-3 mb-2 block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ $t('In last 45 days') }}
|
{{ $t('in_last_x_days') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<BarChart :data="data.disk.upload.records" />
|
<BarChart :data="data.disk.upload.records" />
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
<!--Download bandwidth widgets-->
|
<!--Download bandwidth widgets-->
|
||||||
<div class="card mb-4 shadow-card md:mb-6">
|
<div class="card mb-4 shadow-card md:mb-6">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Download') }}
|
{{ $t('download') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ $t('In last 45 days') }}
|
{{ $t('in_last_x_days') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<BarChart :data="data.disk.download.records" />
|
<BarChart :data="data.disk.download.records" />
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
<!--Latest registration widgets-->
|
<!--Latest registration widgets-->
|
||||||
<div class="card mb-4 shadow-card md:mb-6">
|
<div class="card mb-4 shadow-card md:mb-6">
|
||||||
<FormLabel icon="users">
|
<FormLabel icon="users">
|
||||||
{{ $t('Latest Registrations') }}
|
{{ $t('latest_registrations') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<WidgetLatestRegistrations />
|
<WidgetLatestRegistrations />
|
||||||
@@ -182,14 +182,14 @@
|
|||||||
class="card mb-4 shadow-card md:mb-6"
|
class="card mb-4 shadow-card md:mb-6"
|
||||||
>
|
>
|
||||||
<FormLabel icon="dollar">
|
<FormLabel icon="dollar">
|
||||||
{{ $t('Latest Transactions') }}
|
{{ $t('latest_transactions') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<WidgetLatestTransactions />
|
<WidgetLatestTransactions />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="loader" v-if="isLoading">
|
<div id="loader" v-if="isLoading">
|
||||||
<Spinner></Spinner>
|
<Spinner />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -36,10 +36,10 @@
|
|||||||
alt="transaction"
|
alt="transaction"
|
||||||
/>
|
/>
|
||||||
<h1 class="mb-1 text-2xl font-bold">
|
<h1 class="mb-1 text-2xl font-bold">
|
||||||
{{ $t('There is Nothing') }}
|
{{ $t('there_is_nothing') }}
|
||||||
</h1>
|
</h1>
|
||||||
<p class="text-sm text-gray-600">
|
<p class="text-sm text-gray-600">
|
||||||
{{ $t('All your transactions will be visible here') }}
|
{{ $t('transaction_will_be_here') }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
:title="$t('set_as_default_language')"
|
:title="$t('set_as_default_language')"
|
||||||
:description="
|
:description="
|
||||||
$t(
|
$t(
|
||||||
'If this language is set as default, app will appear in this language for all users.'
|
'default_language_disclaimer'
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
pages: [
|
pages: [
|
||||||
{
|
{
|
||||||
title: this.$t('admin_settings.tabs.payments'),
|
title: this.$t('payments'),
|
||||||
route: 'AppPayments',
|
route: 'AppPayments',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
<!--Global payment settings-->
|
<!--Global payment settings-->
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="dollar">
|
<FormLabel icon="dollar">
|
||||||
{{ $t('Subscription Payments') }}
|
{{ $t('subscription_payments') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow Subscription Payments')"
|
:title="$t('allow_subscription_payments')"
|
||||||
:description="$t('User can subscribe to fixed or metered plan')"
|
:description="$t('allow_subscription_payments_description')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -22,12 +22,12 @@
|
|||||||
<!--Metered settings-->
|
<!--Metered settings-->
|
||||||
<div v-if="config.subscriptionType === 'metered' && allowedPayments" class="card shadow-card">
|
<div v-if="config.subscriptionType === 'metered' && allowedPayments" class="card shadow-card">
|
||||||
<FormLabel icon="bar-chart">
|
<FormLabel icon="bar-chart">
|
||||||
{{ $t('Metered Billing Settings') }}
|
{{ $t('metered_billing_settings') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow Registration Bonus')"
|
:title="$t('allow_registration_bonus')"
|
||||||
:description="$t('Credit user automatically bonus to his balance after registration.')"
|
:description="$t('allow_registration_bonus_description')"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@input="$updateText('/admin/settings', 'allowed_registration_bonus', allowedRegistrationBonus)"
|
@input="$updateText('/admin/settings', 'allowed_registration_bonus', allowedRegistrationBonus)"
|
||||||
@@ -38,21 +38,21 @@
|
|||||||
|
|
||||||
<AppInputText
|
<AppInputText
|
||||||
v-if="allowedRegistrationBonus"
|
v-if="allowedRegistrationBonus"
|
||||||
:title="$t('The Amount of Registration Bonus')"
|
:title="$t('registration_bonus_amount')"
|
||||||
:description="$t('This bonus will be automatically added when user successfully register his account.')"
|
:description="$t('registration_bonus_amount_description')"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
@input="$updateText('/admin/settings', 'registration_bonus_amount', registrationBonusAmount)"
|
@input="$updateText('/admin/settings', 'registration_bonus_amount', registrationBonusAmount)"
|
||||||
v-model="registrationBonusAmount"
|
v-model="registrationBonusAmount"
|
||||||
:placeholder="$t('Type registration bonus amount...')"
|
:placeholder="$t('registration_bonus_amount_')"
|
||||||
type="number"
|
type="number"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
|
|
||||||
<AppInputButton
|
<AppInputButton
|
||||||
:title="$t('Metered Plan')"
|
:title="$t('metered_plan')"
|
||||||
:description="$t('Your price set up for billing multiple features by user usage.')"
|
:description="$t('metered_plan_description')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<router-link
|
<router-link
|
||||||
@@ -63,13 +63,13 @@
|
|||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<ButtonBase v-if="config.isCreatedMeteredPlan" class="w-full sm:w-auto" button-style="theme">
|
<ButtonBase v-if="config.isCreatedMeteredPlan" class="w-full sm:w-auto" button-style="theme">
|
||||||
{{ $t('Plan Details') }}
|
{{ $t('plan_details') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<router-link v-if="!config.isCreatedMeteredPlan" :to="{ name: 'CreateMeteredPlan' }">
|
<router-link v-if="!config.isCreatedMeteredPlan" :to="{ name: 'CreateMeteredPlan' }">
|
||||||
<ButtonBase class="w-full sm:w-auto" button-style="theme-solid">
|
<ButtonBase class="w-full sm:w-auto" button-style="theme-solid">
|
||||||
{{ $t('Create Plan') }}
|
{{ $t('create_plan') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</router-link>
|
</router-link>
|
||||||
</AppInputButton>
|
</AppInputButton>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow Stripe Service')"
|
:title="$t('Allow Stripe Service')"
|
||||||
:description="$t('Allow your users pay by their credit card')"
|
:description="$t('allow_pay_by_card')"
|
||||||
:is-last="!stripe.allowedService"
|
:is-last="!stripe.allowedService"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -94,8 +94,8 @@
|
|||||||
<!--Stripe credentials are set up-->
|
<!--Stripe credentials are set up-->
|
||||||
<div v-if="stripe.allowedService">
|
<div v-if="stripe.allowedService">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:title="$t('Your Webhook URL')"
|
:title="$t('webhook_url')"
|
||||||
:description="$t('Please copy your url and paste it to the service webhook setup.')"
|
:description="$t('copy_webhook_note')"
|
||||||
>
|
>
|
||||||
<CopyInput size="small" :str="getWebhookEndpoint('stripe')" />
|
<CopyInput size="small" :str="getWebhookEndpoint('stripe')" />
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -103,8 +103,8 @@
|
|||||||
<div v-if="stripe.isConfigured">
|
<div v-if="stripe.isConfigured">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
@input="$updateText('/admin/settings', 'stripe_payment_description', stripe.paymentDescription)"
|
@input="$updateText('/admin/settings', 'stripe_payment_description', stripe.paymentDescription)"
|
||||||
:title="$t('Payment Description')"
|
:title="$t('payment_description')"
|
||||||
:description="$t('The description showed below user payment method selection.')"
|
:description="$t('payment_description_note')"
|
||||||
>
|
>
|
||||||
<textarea
|
<textarea
|
||||||
rows="2"
|
rows="2"
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
"
|
"
|
||||||
v-model="stripe.paymentDescription"
|
v-model="stripe.paymentDescription"
|
||||||
:placeholder="
|
:placeholder="
|
||||||
$t('Describe in short which methods user can pay with this payment method...')
|
$t('additional_info_about_payment_method_')
|
||||||
"
|
"
|
||||||
type="text"
|
type="text"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
:class="{ 'mb-4': stripe.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': stripe.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
||||||
<b class="text-sm">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-sm">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
class="rounded-xl p-5 shadow-lg"
|
class="rounded-xl p-5 shadow-lg"
|
||||||
>
|
>
|
||||||
<FormLabel v-if="!stripe.isConfigured" icon="shield">
|
<FormLabel v-if="!stripe.isConfigured" icon="shield">
|
||||||
{{ $t('Configure Your Credentials') }}
|
{{ $t('configure_your_credentials') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
tag="div"
|
tag="div"
|
||||||
@@ -185,7 +185,7 @@
|
|||||||
<AppInputText :title="$t('Webhook Secret')" :error="errors[0]">
|
<AppInputText :title="$t('Webhook Secret')" :error="errors[0]">
|
||||||
<input
|
<input
|
||||||
v-model="stripe.credentials.webhook"
|
v-model="stripe.credentials.webhook"
|
||||||
:placeholder="$t('Paste your webhook secret')"
|
:placeholder="$t('paste_webhook_secret')"
|
||||||
type="text"
|
type="text"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow Paystack Service')"
|
:title="$t('Allow Paystack Service')"
|
||||||
:description="$t('Allow your users pay by their credit card')"
|
:description="$t('allow_pay_by_card')"
|
||||||
:is-last="!paystack.allowedService"
|
:is-last="!paystack.allowedService"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -225,8 +225,8 @@
|
|||||||
<!--Paystack credentials are set up-->
|
<!--Paystack credentials are set up-->
|
||||||
<div v-if="paystack.allowedService">
|
<div v-if="paystack.allowedService">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:title="$t('Your Webhook URL')"
|
:title="$t('webhook_url')"
|
||||||
:description="$t('Please copy your url and paste it to the service webhook setup.')"
|
:description="$t('copy_webhook_note')"
|
||||||
>
|
>
|
||||||
<CopyInput size="small" :str="getWebhookEndpoint('paystack')" />
|
<CopyInput size="small" :str="getWebhookEndpoint('paystack')" />
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -236,8 +236,8 @@
|
|||||||
@input="
|
@input="
|
||||||
$updateText('/admin/settings', 'paystack_payment_description', paystack.paymentDescription)
|
$updateText('/admin/settings', 'paystack_payment_description', paystack.paymentDescription)
|
||||||
"
|
"
|
||||||
:title="$t('Payment Description')"
|
:title="$t('payment_description')"
|
||||||
:description="$t('The description showed below user payment method selection.')"
|
:description="$t('payment_description_note')"
|
||||||
>
|
>
|
||||||
<textarea
|
<textarea
|
||||||
rows="2"
|
rows="2"
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
"
|
"
|
||||||
v-model="paystack.paymentDescription"
|
v-model="paystack.paymentDescription"
|
||||||
:placeholder="
|
:placeholder="
|
||||||
$t('Describe in short which methods user can pay with this payment method...')
|
$t('additional_info_about_payment_method_')
|
||||||
"
|
"
|
||||||
type="text"
|
type="text"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
:class="{ 'mb-4': paystack.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': paystack.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
||||||
<b class="text-sm">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-sm">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
class="rounded-xl p-5 shadow-lg"
|
class="rounded-xl p-5 shadow-lg"
|
||||||
>
|
>
|
||||||
<FormLabel v-if="!paystack.isConfigured" icon="shield">
|
<FormLabel v-if="!paystack.isConfigured" icon="shield">
|
||||||
{{ $t('Configure Your Credentials') }}
|
{{ $t('configure_your_credentials') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
tag="div"
|
tag="div"
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -328,7 +328,7 @@
|
|||||||
|
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Allow PayPal Service')"
|
:title="$t('Allow PayPal Service')"
|
||||||
:description="$t('Allow your users pay by their credit card')"
|
:description="$t('allow_pay_by_card')"
|
||||||
:is-last="!paypal.allowedService"
|
:is-last="!paypal.allowedService"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
@@ -341,8 +341,8 @@
|
|||||||
<!--Stripe credentials are set up-->
|
<!--Stripe credentials are set up-->
|
||||||
<div v-if="paypal.allowedService">
|
<div v-if="paypal.allowedService">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:title="$t('Your Webhook URL')"
|
:title="$t('webhook_url')"
|
||||||
:description="$t('Please copy your url and paste it to the service webhook setup.')"
|
:description="$t('copy_webhook_note')"
|
||||||
>
|
>
|
||||||
<CopyInput size="small" :str="getWebhookEndpoint('paypal')" />
|
<CopyInput size="small" :str="getWebhookEndpoint('paypal')" />
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -358,8 +358,8 @@
|
|||||||
|
|
||||||
<AppInputText
|
<AppInputText
|
||||||
@input="$updateText('/admin/settings', 'paypal_payment_description', paypal.paymentDescription)"
|
@input="$updateText('/admin/settings', 'paypal_payment_description', paypal.paymentDescription)"
|
||||||
:title="$t('Payment Description')"
|
:title="$t('payment_description')"
|
||||||
:description="$t('The description showed below user payment method selection.')"
|
:description="$t('payment_description_note')"
|
||||||
>
|
>
|
||||||
<textarea
|
<textarea
|
||||||
rows="2"
|
rows="2"
|
||||||
@@ -373,7 +373,7 @@
|
|||||||
"
|
"
|
||||||
v-model="paypal.paymentDescription"
|
v-model="paypal.paymentDescription"
|
||||||
:placeholder="
|
:placeholder="
|
||||||
$t('Describe in short which methods user can pay with this payment method...')
|
$t('additional_info_about_payment_method_')
|
||||||
"
|
"
|
||||||
type="text"
|
type="text"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
:class="{ 'mb-4': paypal.isVisibleCredentialsForm }"
|
:class="{ 'mb-4': paypal.isVisibleCredentialsForm }"
|
||||||
>
|
>
|
||||||
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
<edit2-icon size="14" class="vue-feather text-theme mr-2.5" />
|
||||||
<b class="text-sm">{{ $t('Update Your Credentials') }}</b>
|
<b class="text-sm">{{ $t('update_your_credentials') }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@
|
|||||||
class="rounded-xl p-5 shadow-lg"
|
class="rounded-xl p-5 shadow-lg"
|
||||||
>
|
>
|
||||||
<FormLabel v-if="!paypal.isConfigured" icon="shield">
|
<FormLabel v-if="!paypal.isConfigured" icon="shield">
|
||||||
{{ $t('Configure Your Credentials') }}
|
{{ $t('configure_your_credentials') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
tag="div"
|
tag="div"
|
||||||
@@ -449,7 +449,7 @@
|
|||||||
type="submit"
|
type="submit"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
{{ $t('Store Credentials') }}
|
{{ $t('store_credentials') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</ValidationObserver>
|
</ValidationObserver>
|
||||||
</div>
|
</div>
|
||||||
@@ -549,17 +549,17 @@ export default {
|
|||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
label: this.$t('Name'),
|
label: this.$t('name'),
|
||||||
field: 'name',
|
field: 'name',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Currency'),
|
label: this.$t('currency'),
|
||||||
field: 'currency',
|
field: 'currency',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Interval'),
|
label: this.$t('interval'),
|
||||||
field: 'interval',
|
field: 'interval',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getPlanStatusColor(row.data.attributes.status)">
|
<ColorLabel :color="$getPlanStatusColor(row.data.attributes.status)">
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<span class="text-sm font-bold capitalize">
|
<span class="text-sm font-bold capitalize">
|
||||||
{{ row.data.attributes.interval }}
|
{{ $t(row.data.attributes.interval) }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<span class="text-sm font-bold capitalize">
|
<span class="text-sm font-bold capitalize">
|
||||||
{{ row.data.attributes.interval }}
|
{{ $t(row.data.attributes.interval) }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -170,16 +170,16 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<h1 class="mb-1 text-2xl font-bold">
|
<h1 class="mb-1 text-2xl font-bold">
|
||||||
{{ $t('There is Nothing') }}
|
{{ $t('there_is_nothing') }}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p class="text-sm text-gray-600">
|
<p class="text-sm text-gray-600">
|
||||||
{{ $t('All your plans will be visible here') }}
|
{{ $t('all_visible_plans_here') }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<router-link :to="{ name: createPlanRoute }" class="mt-6 inline-block">
|
<router-link :to="{ name: createPlanRoute }" class="mt-6 inline-block">
|
||||||
<ButtonBase class="action-confirm" button-style="theme">
|
<ButtonBase class="action-confirm" button-style="theme">
|
||||||
{{ $t('Create First Plan') }}
|
{{ $t('create_first_plan') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
@@ -219,22 +219,22 @@ export default {
|
|||||||
return {
|
return {
|
||||||
metered: [
|
metered: [
|
||||||
{
|
{
|
||||||
label: this.$t('Name'),
|
label: this.$t('name'),
|
||||||
field: 'name',
|
field: 'name',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Status'),
|
label: this.$t('status'),
|
||||||
field: 'status',
|
field: 'status',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Currency'),
|
label: this.$t('currency'),
|
||||||
field: 'currency',
|
field: 'currency',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Interval'),
|
label: this.$t('interval'),
|
||||||
field: 'interval',
|
field: 'interval',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -249,22 +249,22 @@ export default {
|
|||||||
],
|
],
|
||||||
fixed: [
|
fixed: [
|
||||||
{
|
{
|
||||||
label: this.$t('Visibility'),
|
label: this.$t('visibility'),
|
||||||
field: 'visible',
|
field: 'visible',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Name'),
|
label: this.$t('name'),
|
||||||
field: 'name',
|
field: 'name',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Price'),
|
label: this.$t('price'),
|
||||||
field: 'amount',
|
field: 'amount',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Interval'),
|
label: this.$t('interval'),
|
||||||
field: 'interval',
|
field: 'interval',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -273,7 +273,7 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Storage'),
|
label: this.$t('storage'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<ValidationObserver @submit.prevent="createPlan" ref="createPlan" v-slot="{ invalid }" tag="form">
|
<ValidationObserver @submit.prevent="createPlan" ref="createPlan" v-slot="{ invalid }" tag="form">
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Details') }}
|
{{ $t('details') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Name-->
|
<!--Name-->
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Pricing') }}
|
{{ $t('pricing') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<div class="justify-items md:flex md:space-x-4">
|
<div class="justify-items md:flex md:space-x-4">
|
||||||
@@ -47,10 +47,10 @@
|
|||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<AppInputText :title="$t('admin_page_plans.form.price')" class="w-full">
|
<AppInputText :title="$t('plan_price')" class="w-full">
|
||||||
<input
|
<input
|
||||||
v-model="plan.amount"
|
v-model="plan.amount"
|
||||||
:placeholder="$t('admin_page_plans.form.price_plac')"
|
:placeholder="$t('plan_price')"
|
||||||
type="number"
|
type="number"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="1"
|
min="1"
|
||||||
@@ -70,11 +70,11 @@
|
|||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<AppInputText :title="$t('Currency')" class="w-full">
|
<AppInputText :title="$t('currency')" class="w-full">
|
||||||
<SelectInput
|
<SelectInput
|
||||||
v-model="plan.currency"
|
v-model="plan.currency"
|
||||||
:options="currencyList"
|
:options="currencyList"
|
||||||
:placeholder="$t('Select plan currency')"
|
:placeholder="$t('select_plan_currency')"
|
||||||
:isError="errors[0]"
|
:isError="errors[0]"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -83,11 +83,11 @@
|
|||||||
|
|
||||||
<!--Interval-->
|
<!--Interval-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Interval" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Interval" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Interval')" :is-last="true">
|
<AppInputText :title="$t('interval')" :is-last="true">
|
||||||
<SelectInput
|
<SelectInput
|
||||||
v-model="plan.interval"
|
v-model="plan.interval"
|
||||||
:options="intervalList"
|
:options="intervalList"
|
||||||
:placeholder="$t('Select billing interval')"
|
:placeholder="$t('select_billing_interval')"
|
||||||
:isError="errors[0]"
|
:isError="errors[0]"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Features') }}
|
{{ $t('features') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Storage Capacity-->
|
<!--Storage Capacity-->
|
||||||
@@ -126,13 +126,13 @@
|
|||||||
<!--Team Members-->
|
<!--Team Members-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Max Team Members" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Max Team Members" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:title="$t('Team Members')"
|
:title="$t('team_members')"
|
||||||
:description="$t('Type -1 to set unlimited team members.')"
|
:description="$t('zero_for_unlimited_members')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
v-model="plan.features.max_team_members"
|
v-model="plan.features.max_team_members"
|
||||||
:placeholder="$t('Add max team members in number')"
|
:placeholder="$t('add_max_team_members')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
|
|||||||
@@ -2,197 +2,197 @@
|
|||||||
<ValidationObserver @submit.prevent="createPlan" ref="createPlan" v-slot="{ invalid }" tag="form">
|
<ValidationObserver @submit.prevent="createPlan" ref="createPlan" v-slot="{ invalid }" tag="form">
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Details') }}
|
{{ $t('details') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Name-->
|
<!--Name-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Name" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Name" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('name')">
|
<AppInputText :title="$t('name')">
|
||||||
<input
|
<input
|
||||||
v-model="plan.name"
|
v-model="plan.name"
|
||||||
:placeholder="$t('plan_name')"
|
:placeholder="$t('plan_name')"
|
||||||
type="text"
|
type="text"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Description-->
|
<!--Description-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Description" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Description" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('description_optional')">
|
<AppInputText :title="$t('description_optional')">
|
||||||
<textarea
|
<textarea
|
||||||
v-model="plan.description"
|
v-model="plan.description"
|
||||||
:placeholder="$t('plan_description')"
|
:placeholder="$t('plan_description')"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
></textarea>
|
></textarea>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Currency-->
|
<!--Currency-->
|
||||||
<ValidationProvider tag="div" mode="passive" name="Currency" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Currency" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText :title="$t('Currency')" class="w-full" :is-last="true">
|
<AppInputText :title="$t('currency')" class="w-full" :is-last="true">
|
||||||
<SelectInput
|
<SelectInput
|
||||||
v-model="plan.currency"
|
v-model="plan.currency"
|
||||||
:options="currencyList"
|
:options="currencyList"
|
||||||
:placeholder="$t('Select plan currency')"
|
:placeholder="$t('select_plan_currency')"
|
||||||
:isError="errors[0]"
|
:isError="errors[0]"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Charged Features') }}
|
{{ $t('charged_features') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Bandwidth-->
|
<!--Bandwidth-->
|
||||||
<div>
|
<div>
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Bandwidth Price per 1GB')"
|
:title="$t('bandwidth_per_gb')"
|
||||||
:description="$t('Charge your user by the amount of data he upload or download.')"
|
:description="$t('bandwidth_per_gb_note')"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
v-model="plan.features.bandwidth.active"
|
v-model="plan.features.bandwidth.active"
|
||||||
class="switch"
|
class="switch"
|
||||||
:state="plan.features.bandwidth.active"
|
:state="plan.features.bandwidth.active"
|
||||||
/>
|
/>
|
||||||
</AppInputSwitch>
|
</AppInputSwitch>
|
||||||
|
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
v-if="plan.features.bandwidth.active"
|
v-if="plan.features.bandwidth.active"
|
||||||
class="-mt-3"
|
class="-mt-3"
|
||||||
tag="div"
|
tag="div"
|
||||||
mode="passive"
|
mode="passive"
|
||||||
name="Bandwidth Price"
|
name="Bandwidth Price"
|
||||||
rules="required"
|
rules="required"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText class="w-full">
|
<AppInputText class="w-full">
|
||||||
<input
|
<input
|
||||||
v-model="plan.features.bandwidth.per_unit"
|
v-model="plan.features.bandwidth.per_unit"
|
||||||
:placeholder="$t('Type the price per 1GB...')"
|
:placeholder="$t('type_bandwidth_price')"
|
||||||
type="number"
|
type="number"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="0.01"
|
min="0.01"
|
||||||
max="999999999999"
|
max="999999999999"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Storage-->
|
<!--Storage-->
|
||||||
<div>
|
<div>
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Storage Price per 1GB')"
|
:title="$t('storage_per_gb')"
|
||||||
:description="$t('Charge your user by the amount of data he has stored on the disk per 1GB.')"
|
:description="$t('storage_per_gb_note')"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
v-model="plan.features.storage.active"
|
v-model="plan.features.storage.active"
|
||||||
class="switch"
|
class="switch"
|
||||||
:state="plan.features.storage.active"
|
:state="plan.features.storage.active"
|
||||||
/>
|
/>
|
||||||
</AppInputSwitch>
|
</AppInputSwitch>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
v-if="plan.features.storage.active"
|
v-if="plan.features.storage.active"
|
||||||
class="-mt-3"
|
class="-mt-3"
|
||||||
tag="div"
|
tag="div"
|
||||||
mode="passive"
|
mode="passive"
|
||||||
name="Storage Price"
|
name="Storage Price"
|
||||||
rules="required"
|
rules="required"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText class="w-full">
|
<AppInputText class="w-full">
|
||||||
<input
|
<input
|
||||||
v-model="plan.features.storage.per_unit"
|
v-model="plan.features.storage.per_unit"
|
||||||
:placeholder="$t('Type the price per 1GB...')"
|
:placeholder="$t('type_storage_price')"
|
||||||
type="number"
|
type="number"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="0.01"
|
min="0.01"
|
||||||
max="999999999999"
|
max="999999999999"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Member-->
|
<!--Member-->
|
||||||
<div>
|
<div>
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Price per 1 Member')"
|
:title="$t('member_per_unit')"
|
||||||
:description="$t('Charge your user by the total members he use in his Team Folders.')"
|
:description="$t('member_per_unit_note')"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
v-model="plan.features.member.active"
|
v-model="plan.features.member.active"
|
||||||
class="switch"
|
class="switch"
|
||||||
:state="plan.features.member.active"
|
:state="plan.features.member.active"
|
||||||
/>
|
/>
|
||||||
</AppInputSwitch>
|
</AppInputSwitch>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
v-if="plan.features.member.active"
|
v-if="plan.features.member.active"
|
||||||
class="-mt-3"
|
class="-mt-3"
|
||||||
tag="div"
|
tag="div"
|
||||||
mode="passive"
|
mode="passive"
|
||||||
name="Member Price"
|
name="Member Price"
|
||||||
rules="required"
|
rules="required"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText class="w-full">
|
<AppInputText class="w-full">
|
||||||
<input
|
<input
|
||||||
v-model="plan.features.member.per_unit"
|
v-model="plan.features.member.per_unit"
|
||||||
:placeholder="$t('Type the price per 1 member...')"
|
:placeholder="$t('type_member_price')"
|
||||||
type="number"
|
type="number"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="0.01"
|
min="0.01"
|
||||||
max="999999999999"
|
max="999999999999"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<!--Flat Fee-->
|
<!--Flat Fee-->
|
||||||
<div>
|
<div>
|
||||||
<AppInputSwitch
|
<AppInputSwitch
|
||||||
:title="$t('Flat Fee per Cycle')"
|
:title="$t('flat_fee_unit_gb')"
|
||||||
:description="$t('Charge monthly flat fee.')"
|
:description="$t('flat_fee_unit_gb_note')"
|
||||||
:is-last="!plan.features.flatFee.active"
|
:is-last="!plan.features.flatFee.active"
|
||||||
>
|
>
|
||||||
<SwitchInput
|
<SwitchInput
|
||||||
v-model="plan.features.flatFee.active"
|
v-model="plan.features.flatFee.active"
|
||||||
class="switch"
|
class="switch"
|
||||||
:state="plan.features.flatFee.active"
|
:state="plan.features.flatFee.active"
|
||||||
/>
|
/>
|
||||||
</AppInputSwitch>
|
</AppInputSwitch>
|
||||||
|
|
||||||
<ValidationProvider
|
<ValidationProvider
|
||||||
v-if="plan.features.flatFee.active"
|
v-if="plan.features.flatFee.active"
|
||||||
class="-mt-3"
|
class="-mt-3"
|
||||||
tag="div"
|
tag="div"
|
||||||
mode="passive"
|
mode="passive"
|
||||||
name="FlatFee Price"
|
name="FlatFee Price"
|
||||||
rules="required"
|
rules="required"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText class="w-full" :is-last="true">
|
<AppInputText class="w-full" :is-last="true">
|
||||||
<input
|
<input
|
||||||
v-model="plan.features.flatFee.per_unit"
|
v-model="plan.features.flatFee.per_unit"
|
||||||
:placeholder="$t('Type the price...')"
|
:placeholder="$t('type_flat_fee_price')"
|
||||||
type="number"
|
type="number"
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="0.01"
|
min="0.01"
|
||||||
max="999999999999"
|
max="999999999999"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
import SwitchInput from '../../../../components/Others/Forms/SwitchInput'
|
import SwitchInput from '../../../../components/Others/Forms/SwitchInput'
|
||||||
import AppInputSwitch from '../../../../components/Admin/AppInputSwitch'
|
import AppInputSwitch from '../../../../components/Admin/AppInputSwitch'
|
||||||
import AppInputText from '../../../../components/Admin/AppInputText'
|
import AppInputText from '../../../../components/Admin/AppInputText'
|
||||||
import { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full'
|
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
|
||||||
import SelectInput from '../../../../components/Others/Forms/SelectInput'
|
import SelectInput from '../../../../components/Others/Forms/SelectInput'
|
||||||
import ImageInput from '../../../../components/Others/Forms/ImageInput'
|
import ImageInput from '../../../../components/Others/Forms/ImageInput'
|
||||||
import MobileHeader from '../../../../components/Mobile/MobileHeader'
|
import MobileHeader from '../../../../components/Mobile/MobileHeader'
|
||||||
@@ -217,137 +217,137 @@ import SectionTitle from '../../../../components/Others/SectionTitle'
|
|||||||
import ButtonBase from '../../../../components/FilesView/ButtonBase'
|
import ButtonBase from '../../../../components/FilesView/ButtonBase'
|
||||||
import PageHeader from '../../../../components/Others/PageHeader'
|
import PageHeader from '../../../../components/Others/PageHeader'
|
||||||
import InfoBox from '../../../../components/Others/Forms/InfoBox'
|
import InfoBox from '../../../../components/Others/Forms/InfoBox'
|
||||||
import { required } from 'vee-validate/dist/rules'
|
import {required} from 'vee-validate/dist/rules'
|
||||||
import { mapGetters } from 'vuex'
|
import {mapGetters} from 'vuex'
|
||||||
import { events } from '../../../../bus'
|
import {events} from '../../../../bus'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CreateMeteredPlan',
|
name: 'CreateMeteredPlan',
|
||||||
components: {
|
components: {
|
||||||
ValidationProvider,
|
ValidationProvider,
|
||||||
ValidationObserver,
|
ValidationObserver,
|
||||||
AppInputSwitch,
|
AppInputSwitch,
|
||||||
SwitchInput,
|
SwitchInput,
|
||||||
SectionTitle,
|
SectionTitle,
|
||||||
AppInputText,
|
AppInputText,
|
||||||
MobileHeader,
|
MobileHeader,
|
||||||
SelectInput,
|
SelectInput,
|
||||||
ButtonBase,
|
ButtonBase,
|
||||||
ImageInput,
|
ImageInput,
|
||||||
PageHeader,
|
PageHeader,
|
||||||
FormLabel,
|
FormLabel,
|
||||||
required,
|
required,
|
||||||
InfoBox,
|
InfoBox,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['currencyList', 'intervalList', 'config']),
|
...mapGetters(['currencyList', 'intervalList', 'config']),
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
errorMessage: undefined,
|
errorMessage: undefined,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
isError: false,
|
isError: false,
|
||||||
plan: {
|
plan: {
|
||||||
type: 'fixed',
|
type: 'fixed',
|
||||||
name: undefined,
|
name: undefined,
|
||||||
description: undefined,
|
description: undefined,
|
||||||
currency: undefined,
|
currency: undefined,
|
||||||
features: {
|
features: {
|
||||||
bandwidth: {
|
bandwidth: {
|
||||||
active: false,
|
active: false,
|
||||||
per_unit: undefined,
|
per_unit: undefined,
|
||||||
first_unit: 1,
|
first_unit: 1,
|
||||||
aggregate_strategy: 'sum_of_usage',
|
aggregate_strategy: 'sum_of_usage',
|
||||||
},
|
},
|
||||||
storage: {
|
storage: {
|
||||||
active: false,
|
active: false,
|
||||||
per_unit: undefined,
|
per_unit: undefined,
|
||||||
first_unit: 1,
|
first_unit: 1,
|
||||||
aggregate_strategy: 'maximum_usage',
|
aggregate_strategy: 'maximum_usage',
|
||||||
},
|
},
|
||||||
member: {
|
member: {
|
||||||
active: false,
|
active: false,
|
||||||
per_unit: undefined,
|
per_unit: undefined,
|
||||||
first_unit: 1,
|
first_unit: 1,
|
||||||
aggregate_strategy: 'maximum_usage',
|
aggregate_strategy: 'maximum_usage',
|
||||||
},
|
},
|
||||||
flatFee: {
|
flatFee: {
|
||||||
active: false,
|
active: false,
|
||||||
per_unit: undefined,
|
per_unit: undefined,
|
||||||
aggregate_strategy: 'maximum_usage',
|
aggregate_strategy: 'maximum_usage',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async createPlan() {
|
async createPlan() {
|
||||||
let tiers = []
|
let tiers = []
|
||||||
|
|
||||||
Object.entries(this.plan.features).forEach(([key, feature]) => {
|
Object.entries(this.plan.features).forEach(([key, feature]) => {
|
||||||
if (feature.active) {
|
if (feature.active) {
|
||||||
tiers.push({
|
tiers.push({
|
||||||
aggregate_strategy: feature.aggregate_strategy,
|
aggregate_strategy: feature.aggregate_strategy,
|
||||||
key: key,
|
key: key,
|
||||||
tiers: [
|
tiers: [
|
||||||
{
|
{
|
||||||
per_unit: feature.per_unit,
|
per_unit: feature.per_unit,
|
||||||
first_unit: 1,
|
first_unit: 1,
|
||||||
flat_fee: null,
|
flat_fee: null,
|
||||||
last_unit: null,
|
last_unit: null,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// Validate fields
|
// Validate fields
|
||||||
const isValid = await this.$refs.createPlan.validate()
|
const isValid = await this.$refs.createPlan.validate()
|
||||||
|
|
||||||
if (!isValid) return
|
if (!isValid) return
|
||||||
|
|
||||||
// Start loading
|
// Start loading
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.post('/api/subscriptions/admin/plans', {
|
.post('/api/subscriptions/admin/plans', {
|
||||||
type: 'metered',
|
type: 'metered',
|
||||||
name: this.plan.name,
|
name: this.plan.name,
|
||||||
description: this.plan.description,
|
description: this.plan.description,
|
||||||
currency: this.plan.currency,
|
currency: this.plan.currency,
|
||||||
meters: tiers,
|
meters: tiers,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('toaster.plan_created'),
|
message: this.$t('toaster.plan_created'),
|
||||||
})
|
})
|
||||||
|
|
||||||
// Go to plan page
|
// Go to plan page
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: 'PlanMeteredSettings',
|
name: 'PlanMeteredSettings',
|
||||||
params: { id: response.data.data.id },
|
params: {id: response.data.data.id},
|
||||||
})
|
})
|
||||||
|
|
||||||
// Set default state {isEmptyPlans} to false
|
// Set default state {isEmptyPlans} to false
|
||||||
if (this.config.isEmptyPlans) {
|
if (this.config.isEmptyPlans) {
|
||||||
this.$store.commit('REPLACE_CONFIG_VALUE', {
|
this.$store.commit('REPLACE_CONFIG_VALUE', {
|
||||||
key: 'isEmptyPlans',
|
key: 'isEmptyPlans',
|
||||||
value: false,
|
value: false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'danger',
|
type: 'danger',
|
||||||
message: this.$t('popup_error.title'),
|
message: this.$t('popup_error.title'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<router-view v-if="!isLoading" :plan="plan" />
|
<router-view v-if="!isLoading" :plan="plan" />
|
||||||
|
|
||||||
<div id="loader" v-if="isLoading">
|
<div id="loader" v-if="isLoading">
|
||||||
<Spinner></Spinner>
|
<Spinner />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{{ plan.attributes.name }}
|
{{ plan.attributes.name }}
|
||||||
</h1>
|
</h1>
|
||||||
<small class="text-xs font-bold dark:text-gray-500 text-gray-500 sm:text-sm">
|
<small class="text-xs font-bold dark:text-gray-500 text-gray-500 sm:text-sm">
|
||||||
{{ $t('30 Days intervals') }}
|
{{ $t('x_days_intervals') }}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Details') }}
|
{{ $t('details') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Visible-->
|
<!--Visible-->
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<p>
|
<p>
|
||||||
{{
|
{{
|
||||||
$t(
|
$t(
|
||||||
'Price change is not possible. If you would like to change your price or currency, please feel free to create a new plan.'
|
'price_change_not_possible_create_new'
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Features') }}
|
{{ $t('features') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Storage Capacity-->
|
<!--Storage Capacity-->
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
</AppInputText>
|
</AppInputText>
|
||||||
|
|
||||||
<!--Team Members-->
|
<!--Team Members-->
|
||||||
<AppInputText :title="$t('Max Team Members')" :description="$t('Type -1 to set unlimited team members.')" is-last="true">
|
<AppInputText :title="$t('max_team_members')" :description="$t('zero_for_unlimited_members')" is-last="true">
|
||||||
<input
|
<input
|
||||||
@input="
|
@input="
|
||||||
$updateInput(
|
$updateInput(
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
)
|
)
|
||||||
"
|
"
|
||||||
v-model="plan.attributes.features.max_team_members"
|
v-model="plan.attributes.features.max_team_members"
|
||||||
:placeholder="$t('Add max team members in number')"
|
:placeholder="$t('add_max_team_members')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Details') }}
|
{{ $t('details') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Name-->
|
<!--Name-->
|
||||||
@@ -36,14 +36,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Charged Features') }}
|
{{ $t('charged_features') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<!--Bandwidth-->
|
<!--Bandwidth-->
|
||||||
<AppInputText
|
<AppInputText
|
||||||
v-if="plan.attributes.features.bandwidth"
|
v-if="plan.attributes.features.bandwidth"
|
||||||
:title="$t('Bandwidth Price per 1GB')"
|
:title="$t('bandwidth_per_gb')"
|
||||||
:description="$t('Charge your user by the amount of data he upload or download.')"
|
:description="$t('bandwidth_per_gb_note')"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
@@ -59,8 +59,8 @@
|
|||||||
<!--Storage-->
|
<!--Storage-->
|
||||||
<AppInputText
|
<AppInputText
|
||||||
v-if="plan.attributes.features.storage"
|
v-if="plan.attributes.features.storage"
|
||||||
:title="$t('Storage Price per 1GB')"
|
:title="$t('storage_per_gb')"
|
||||||
:description="$t('Charge your user by the amount of data he has stored on the disk per 1GB.')"
|
:description="$t('storage_per_gb_note')"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
@@ -76,8 +76,8 @@
|
|||||||
<!--Member-->
|
<!--Member-->
|
||||||
<AppInputText
|
<AppInputText
|
||||||
v-if="plan.attributes.features.member"
|
v-if="plan.attributes.features.member"
|
||||||
:title="$t('Price per 1 Member')"
|
:title="$t('member_per_unit')"
|
||||||
:description="$t('Charge your user by the total members he use in his Team Folders.')"
|
:description="$t('member_per_unit_note')"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
@@ -91,8 +91,8 @@
|
|||||||
<!--Flat Fee-->
|
<!--Flat Fee-->
|
||||||
<AppInputText
|
<AppInputText
|
||||||
v-if="plan.attributes.features.flatFee"
|
v-if="plan.attributes.features.flatFee"
|
||||||
:title="$t('Flat Fee per Cycle')"
|
:title="$t('flat_fee_unit_gb')"
|
||||||
:description="$t('Charge monthly flat fee.')"
|
:description="$t('flat_fee_unit_gb_note')"
|
||||||
class="w-full"
|
class="w-full"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
<p>
|
<p>
|
||||||
{{
|
{{
|
||||||
$t(
|
$t(
|
||||||
'Price change is not possible. If you would like to change your price or currency, please feel free to create a new plan.'
|
'price_change_not_possible_create_new'
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getSubscriptionStatusColor(row.data.attributes.status)">
|
<ColorLabel :color="$getSubscriptionStatusColor(row.data.attributes.status)">
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -160,12 +160,12 @@ export default {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Renews At'),
|
label: this.$t('renews_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Service'),
|
label: this.$t('service'),
|
||||||
field: 'driver',
|
field: 'driver',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -177,27 +177,27 @@ export default {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Status'),
|
label: this.$t('status'),
|
||||||
field: 'status',
|
field: 'status',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Note'),
|
label: this.$t('note'),
|
||||||
field: 'plan.name',
|
field: 'plan.name',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Renews At'),
|
label: this.$t('renews_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Ends At'),
|
label: this.$t('ends_at'),
|
||||||
field: 'ends_at',
|
field: 'ends_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Service'),
|
label: this.$t('service'),
|
||||||
field: 'driver',
|
field: 'driver',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getSubscriptionStatusColor(row.data.attributes.status)">
|
<ColorLabel :color="$getSubscriptionStatusColor(row.data.attributes.status)">
|
||||||
{{ row.data.attributes.status }}
|
{{ $t(row.data.attributes.status) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -87,11 +87,11 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<h1 class="mb-1 text-2xl font-bold">
|
<h1 class="mb-1 text-2xl font-bold">
|
||||||
{{ $t('There is Nothing') }}
|
{{ $t('there_is_nothing') }}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p class="text-sm text-gray-600">
|
<p class="text-sm text-gray-600">
|
||||||
{{ $t('All your subscriptions will be visible here') }}
|
{{ $t('all_visible_subscriptions_here') }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -124,27 +124,27 @@ export default {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Status'),
|
label: this.$t('status'),
|
||||||
field: 'status',
|
field: 'status',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Note'),
|
label: this.$t('note'),
|
||||||
field: 'plan.name',
|
field: 'plan.name',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Renews At'),
|
label: this.$t('renews_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Ends At'),
|
label: this.$t('ends_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Service'),
|
label: this.$t('service'),
|
||||||
field: 'driver.driver',
|
field: 'driver.driver',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<MobileActionButton @click.native="$openSpotlight('users')" icon="search">
|
<MobileActionButton @click.native="$openSpotlight('users')" icon="search">
|
||||||
{{ $t('Search') }}
|
{{ $t('search') }}
|
||||||
</MobileActionButton>
|
</MobileActionButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
<ColorLabel :color="$getUserRoleColor(row.data.attributes.role)">
|
||||||
{{ row.data.attributes.role }}
|
{{ $t(row.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-3 md:px-1">
|
<td class="px-3 md:px-1">
|
||||||
@@ -318,11 +318,11 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Billing Est.'),
|
label: this.$t('billing_est.'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -343,7 +343,7 @@ export default {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Account'),
|
label: this.$t('account'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -351,12 +351,12 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Max Storage'),
|
label: this.$t('max_storage'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
hidden: !this.config.storageLimit,
|
hidden: !this.config.storageLimit,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
@@ -381,12 +381,12 @@ export default {
|
|||||||
sortable: false,
|
sortable: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('Max Storage'),
|
label: this.$t('max_storage'),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
hidden: !this.config.storageLimit,
|
hidden: !this.config.storageLimit,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('admin_page_user.table.created_at'),
|
label: this.$t('created_at'),
|
||||||
field: 'created_at',
|
field: 'created_at',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
{{ user.data.relationships.settings.data.attributes.last_name }}
|
{{ user.data.relationships.settings.data.attributes.last_name }}
|
||||||
|
|
||||||
<ColorLabel color="purple">
|
<ColorLabel color="purple">
|
||||||
{{ user.data.attributes.role }}
|
{{ $t(user.data.attributes.role) }}
|
||||||
</ColorLabel>
|
</ColorLabel>
|
||||||
</b>
|
</b>
|
||||||
<small class="block text-xs text-gray-600 sm:text-sm">
|
<small class="block text-xs text-gray-600 sm:text-sm">
|
||||||
@@ -84,7 +84,7 @@ export default {
|
|||||||
route: 'UserDetail',
|
route: 'UserDetail',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Storage'),
|
title: this.$t('storage'),
|
||||||
route: 'UserStorage',
|
route: 'UserStorage',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -92,7 +92,7 @@ export default {
|
|||||||
route: 'UserPassword',
|
route: 'UserPassword',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Delete Account'),
|
title: this.$t('delete_account'),
|
||||||
route: 'UserDelete',
|
route: 'UserDelete',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@@ -104,11 +104,11 @@ export default {
|
|||||||
route: 'UserDetail',
|
route: 'UserDetail',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Storage'),
|
title: this.$t('storage'),
|
||||||
route: 'UserStorage',
|
route: 'UserStorage',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Billing'),
|
title: this.$t('billing'),
|
||||||
route: 'UserSubscription',
|
route: 'UserSubscription',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -116,7 +116,7 @@ export default {
|
|||||||
route: 'UserPassword',
|
route: 'UserPassword',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('Delete Account'),
|
title: this.$t('delete_account'),
|
||||||
route: 'UserDelete',
|
route: 'UserDelete',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
v-model="user.password_confirmation"
|
v-model="user.password_confirmation"
|
||||||
:placeholder="$t('admin_page_user.create_user.label_conf_pass')"
|
:placeholder="$t('confirm_password')"
|
||||||
type="password"
|
type="password"
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
<!--Name-->
|
<!--Name-->
|
||||||
<div class="justify-items md:flex md:space-x-4">
|
<div class="justify-items md:flex md:space-x-4">
|
||||||
<AppInputText :title="$t('First Name')" class="w-full">
|
<AppInputText :title="$t('first_name')" class="w-full">
|
||||||
<input
|
<input
|
||||||
disabled
|
disabled
|
||||||
:value="user.data.relationships.settings.data.attributes.first_name"
|
:value="user.data.relationships.settings.data.attributes.first_name"
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
class="focus-border-theme input-dark disabled:text-gray-900 disabled:opacity-100"
|
class="focus-border-theme input-dark disabled:text-gray-900 disabled:opacity-100"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
<AppInputText :title="$t('Last Name')" class="w-full">
|
<AppInputText :title="$t('last_name')" class="w-full">
|
||||||
<input
|
<input
|
||||||
disabled
|
disabled
|
||||||
:value="user.data.relationships.settings.data.attributes.last_name"
|
:value="user.data.relationships.settings.data.attributes.last_name"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Subscription') }}
|
{{ $t('subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-xl font-extrabold sm:text-3xl">
|
||||||
@@ -36,14 +36,14 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
status() {
|
status() {
|
||||||
return {
|
return {
|
||||||
active: `Active until ${this.subscription.attributes.renews_at}`,
|
active: this.$t('active_until', {date: this.subscription.attributes.renews_at}),
|
||||||
cancelled: `Active until ${this.subscription.attributes.ends_at}`,
|
cancelled: this.$t('ends_at_date', {date: this.subscription.attributes.ends_at}),
|
||||||
}[this.subscription.attributes.status]
|
}[this.subscription.attributes.status]
|
||||||
},
|
},
|
||||||
price() {
|
price() {
|
||||||
return {
|
return {
|
||||||
month: `${this.subscription.relationships.plan.data.attributes.price} Per Month`,
|
month: this.$t('price_per_month', {price: this.subscription.relationships.plan.data.attributes.price}),
|
||||||
year: `${this.subscription.relationships.plan.data.attributes.price} Per Year`,
|
year: this.$t('price_per_year', {price: this.subscription.relationships.plan.data.attributes.price}),
|
||||||
}[this.subscription.relationships.plan.data.attributes.interval]
|
}[this.subscription.relationships.plan.data.attributes.interval]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -60,12 +60,12 @@ export default {
|
|||||||
max_team_members: 'purple',
|
max_team_members: 'purple',
|
||||||
},
|
},
|
||||||
message: {
|
message: {
|
||||||
max_storage_amount: `Total ${item.use} of ${item.total} Used`,
|
max_storage_amount: this.$t('total_x_of_x_used', {use: item.use, total:item.total }),
|
||||||
max_team_members: `Total ${item.use} of ${item.total} Members`,
|
max_team_members: this.$t('total_x_of_x_members', {use: item.use, total:item.total }),
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
max_storage_amount: `Storage`,
|
max_storage_amount: this.$t('storage'),
|
||||||
max_team_members: `Team Members`,
|
max_team_members: this.$t('team_members'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<!--Balance-->
|
<!--Balance-->
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Balance') }}
|
{{ $t('balance') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -19,14 +19,14 @@
|
|||||||
>
|
>
|
||||||
<ValidationProvider tag="div" v-slot="{ errors }" mode="passive" name="Balance Amount" rules="required">
|
<ValidationProvider tag="div" v-slot="{ errors }" mode="passive" name="Balance Amount" rules="required">
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:description="$t('User balance will be increased for the amount above.')"
|
:description="$t('balance_will_be_increased')"
|
||||||
:error="errors[0]"
|
:error="errors[0]"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
<div class="space-y-4 sm:flex sm:space-x-4 sm:space-y-0">
|
||||||
<input
|
<input
|
||||||
v-model="balanceAmount"
|
v-model="balanceAmount"
|
||||||
:placeholder="$t('Increase user balance for...')"
|
:placeholder="$t('increase_for')"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="999999999"
|
max="999999999"
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
:loading="isUpdatingBalanceAmount"
|
:loading="isUpdatingBalanceAmount"
|
||||||
:disabled="isUpdatingBalanceAmount"
|
:disabled="isUpdatingBalanceAmount"
|
||||||
>
|
>
|
||||||
{{ $t('Increase Balance') }}
|
{{ $t('increase_balance') }}
|
||||||
</ButtonBase>
|
</ButtonBase>
|
||||||
</div>
|
</div>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
<!--Usage Estimates-->
|
<!--Usage Estimates-->
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Usage Estimates') }}
|
{{ $t('usage_estimates') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
<b class="mb-3 mb-5 block text-sm text-gray-400">
|
<b class="mb-3 mb-5 block text-sm text-gray-400">
|
||||||
{{ user.data.relationships.subscription.data.attributes.updated_at }}
|
{{ user.data.relationships.subscription.data.attributes.updated_at }}
|
||||||
{{ $t('till now') }}
|
{{ $t('till_now') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@@ -142,7 +142,7 @@ export default {
|
|||||||
|
|
||||||
events.$emit('toaster', {
|
events.$emit('toaster', {
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: this.$t('User balance was successfully increased'),
|
message: this.$t('balance_was_increased'),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<AppInputText
|
<AppInputText
|
||||||
:title="$t('Reset User Password')"
|
:title="$t('reset_user_password')"
|
||||||
:description="$t('user_box_password.description')"
|
:description="$t('user_box_password.description')"
|
||||||
:is-last="true"
|
:is-last="true"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<!--Storage Usage-->
|
<!--Storage Usage-->
|
||||||
<div v-if="distribution" class="card shadow-card">
|
<div v-if="distribution" class="card shadow-card">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Storage Usage') }}
|
{{ $t('storage_usage') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
"
|
"
|
||||||
class="mt-0.5 block text-sm dark:text-gray-500 text-gray-400"
|
class="mt-0.5 block text-sm dark:text-gray-500 text-gray-400"
|
||||||
>
|
>
|
||||||
{{ $t('Total of') }} {{ storage.data.attributes.capacity }}
|
{{ $t('total_of', {capacity: storage.data.attributes.capacity}) }}
|
||||||
{{ $t('Used') }}
|
{{ $t('used') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<ProgressLine v-if="storage.data.attributes.used !== '0B'" :data="distribution" class="mt-5" />
|
<ProgressLine v-if="storage.data.attributes.used !== '0B'" :data="distribution" class="mt-5" />
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<!--Upload-->
|
<!--Upload-->
|
||||||
<div v-if="distribution" class="card shadow-card">
|
<div v-if="distribution" class="card shadow-card">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Upload') }}
|
{{ $t('upload') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ $t('In last 45 days') }}
|
{{ $t('in_last_x_days') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<BarChart :data="storage.data.meta.traffic.chart.upload" color="#FFBD2D" />
|
<BarChart :data="storage.data.meta.traffic.chart.upload" color="#FFBD2D" />
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
<!--Download-->
|
<!--Download-->
|
||||||
<div v-if="distribution" class="card shadow-card">
|
<div v-if="distribution" class="card shadow-card">
|
||||||
<FormLabel icon="hard-drive">
|
<FormLabel icon="hard-drive">
|
||||||
{{ $t('Download') }}
|
{{ $t('download') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
<b class="mb-3 mb-5 block text-sm dark:text-gray-500 text-gray-400">
|
||||||
{{ $t('In last 45 days') }}
|
{{ $t('in_last_x_days') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<BarChart :data="storage.data.meta.traffic.chart.download" color="#9d66fe" />
|
<BarChart :data="storage.data.meta.traffic.chart.download" color="#9d66fe" />
|
||||||
|
|||||||
@@ -15,22 +15,22 @@
|
|||||||
<!--Free Plan-->
|
<!--Free Plan-->
|
||||||
<div v-if="!subscription && config.subscriptionType === 'fixed'" class="card shadow-card">
|
<div v-if="!subscription && config.subscriptionType === 'fixed'" class="card shadow-card">
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
{{ $t('Subscription') }}
|
{{ $t('subscription') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
<b class="-mt-3 mb-0.5 block text-2xl font-extrabold sm:text-3xl">
|
||||||
{{ $t('Free Plan') }}
|
{{ $t('free_plan') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<b class="block text-sm text-gray-400">
|
<b class="block text-sm text-gray-400">
|
||||||
{{ $t('1GB Free storage space with 5 Team members') }}
|
{{ $t('free_plan_parameters', {storage: config.storageDefaultSpaceFormatted, members: config.teamsDefaultMembers}) }}
|
||||||
</b>
|
</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--Transactions-->
|
<!--Transactions-->
|
||||||
<div class="card shadow-card">
|
<div class="card shadow-card">
|
||||||
<FormLabel icon="file-text">
|
<FormLabel icon="file-text">
|
||||||
{{ $t('Transactions') }}
|
{{ $t('transactions') }}
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
|
|
||||||
<DatatableWrapper
|
<DatatableWrapper
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<template v-slot:empty-page>
|
<template v-slot:empty-page>
|
||||||
<InfoBox style="margin-bottom: 0">
|
<InfoBox style="margin-bottom: 0">
|
||||||
<p>
|
<p>
|
||||||
{{ $t("User doesn't have any transactions yet.") }}
|
{{ $t("user_dont_have_transactions") }}
|
||||||
</p>
|
</p>
|
||||||
</InfoBox>
|
</InfoBox>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<div class="mb-auto">
|
<div class="mb-auto">
|
||||||
<!--Locations-->
|
<!--Locations-->
|
||||||
<ContentGroup :title="$t('Base')">
|
<ContentGroup :title="$t('base')">
|
||||||
<b
|
<b
|
||||||
@click="goHome"
|
@click="goHome"
|
||||||
class="flex cursor-pointer items-center py-2.5"
|
class="flex cursor-pointer items-center py-2.5"
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
>
|
>
|
||||||
<home-icon size="17" class="vue-feather icon-active mr-2.5" />
|
<home-icon size="17" class="vue-feather icon-active mr-2.5" />
|
||||||
<small class="text-active text-xs font-bold">
|
<small class="text-active text-xs font-bold">
|
||||||
{{ $t('Home') }}
|
{{ $t('home') }}
|
||||||
</small>
|
</small>
|
||||||
</b>
|
</b>
|
||||||
</ContentGroup>
|
</ContentGroup>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user