mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 02:33:48 +00:00
- language updates
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'version' => '2.0.6',
|
||||
'version' => '2.0.7',
|
||||
|
||||
'is_demo' => env('APP_DEMO', false),
|
||||
|
||||
|
||||
2
public/chunks/dashboard.js
vendored
2
public/chunks/dashboard.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/platform.js
vendored
2
public/chunks/platform.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/shared.js
vendored
2
public/chunks/shared.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/sign-in.js
vendored
2
public/chunks/sign-in.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/sign-up.js
vendored
2
public/chunks/sign-up.js
vendored
File diff suppressed because one or more lines are too long
2
public/css/tailwind.css
vendored
2
public/css/tailwind.css
vendored
File diff suppressed because one or more lines are too long
2
public/js/main.js
vendored
2
public/js/main.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,75 +1,75 @@
|
||||
{
|
||||
"/js/main.js": "/js/main.js",
|
||||
"/chunks/request.js": "/chunks/request.js?id=5b796b8410a96a49",
|
||||
"/chunks/request-upload.js": "/chunks/request-upload.js?id=b1aaf8357a30794a",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec",
|
||||
"/chunks/status-check.js": "/chunks/status-check.js?id=51a75f0b3b260189",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
|
||||
"/chunks/database.js": "/chunks/database.js?id=15cc488117dccf7b",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=e1ad83583367917a",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=288594cd7f628cf8",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=4b3807fb6a40bdee",
|
||||
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=3dc8fdb008b6ff5f",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=9ccb8bb19b95a23f",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=672e931a9fb0b672",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=9f6ce23ce5d969f1",
|
||||
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=f564565faa09d6d6",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=5220642a9e4d30d4",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=133a58e66dfd8072",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=1416cbf6d1a593ac",
|
||||
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=5bf6704f5b599f36",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=c8380d571e91e8be",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=fb3f9eda3dc1d15c",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=c8506e0e20966ef7",
|
||||
"/chunks/users.js": "/chunks/users.js?id=ec687ee365c4248a",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=8dd9d29f024132f5",
|
||||
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=b24d8dbe1f0f706f",
|
||||
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=d9f1bcb1fe44a6ae",
|
||||
"/chunks/user.js": "/chunks/user.js?id=c191b906a0496fe5",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=f9e17ff98354e984",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=a8e0bce4703232a0",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=bfe357e0ea955be0",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=23d3aee39f539a3c",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=827a05e01cbc657d",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=4b267375ea9f19b3",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=a956ceca6865c50c",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=715ee86991d5e4db",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=1ad77372d342326f",
|
||||
"/chunks/payments.js": "/chunks/payments.js?id=dc4586691c25de6f",
|
||||
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=dd6c9d6a29a47808",
|
||||
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=5b139952f337c83e",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=efdbfa062749ca00",
|
||||
"/chunks/app-environment.js": "/chunks/app-environment.js?id=9632034e8ded7d34",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=0f84e2ed1230558e",
|
||||
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a",
|
||||
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd",
|
||||
"/chunks/app-server.js": "/chunks/app-server.js?id=4510d63685353c68",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=7e5f3d5ec447e397",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=6c36b3e1f95c071d",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2504793131107b1f",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=2e0b16655d2d85d7",
|
||||
"/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=25b805ade5230382",
|
||||
"/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=f4562229776d9f56",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=0d48d229038a3a1e",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=bb92bad614e60d45",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=50a1bc5e4ed86ec9",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f652de052dba55c1",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=356111c5ced7b42b",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=7d3719710c55ceeb",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=11d4331650cac280",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=994b669a56fd417b",
|
||||
"/chunks/billing.js": "/chunks/billing.js?id=c00460dcfd3403a8",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=412bb89ebf742edb",
|
||||
"/chunks/files.js": "/chunks/files.js?id=060b1a34dfdbe97c",
|
||||
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=0f63bbc02ad8f3e1",
|
||||
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=0a06d32b4cf8b52c",
|
||||
"/chunks/trash.js": "/chunks/trash.js?id=ac5389500f8f7912",
|
||||
"/chunks/team-folders.js": "/chunks/team-folders.js?id=c0a03c6937856ca1",
|
||||
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=88fa008db0c6a4f6",
|
||||
"/chunks/invitation.js": "/chunks/invitation.js?id=9ed8456c9d6d5ce1",
|
||||
"/chunks/request.js": "/chunks/request.js?id=37e3e34fbcc98d4c",
|
||||
"/chunks/request-upload.js": "/chunks/request-upload.js?id=2a6d910114ffb8d2",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=3c2fc454c3fce8d2",
|
||||
"/chunks/status-check.js": "/chunks/status-check.js?id=ea0f79fc9a604cff",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=c1df85c34d7e9521",
|
||||
"/chunks/database.js": "/chunks/database.js?id=c686d46622194c7e",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=d045f6827f61ac9b",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=c37d19ccd20b6656",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=666e7ee49b02b57c",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=557e8a1b4256d65a",
|
||||
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=a9710655d75c8079",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=c013d98f7386c448",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=ca8cc89fe5982782",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=4cb8d3a7a2212c3c",
|
||||
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=c71981d946a9ca71",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=4c86279cd6e85aa5",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=98dade7f03d93826",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=70fb9a603be2f554",
|
||||
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=94e96e1bb505ae59",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=d1f5d211e9dfc4ae",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=c241f8733acb584f",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=f6e9d2f34fac6d79",
|
||||
"/chunks/users.js": "/chunks/users.js?id=651b8af7afecc88e",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=3b0c4a348a5b1857",
|
||||
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=81dcec66b3ab0f9c",
|
||||
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=e7d07663f1ec94fb",
|
||||
"/chunks/user.js": "/chunks/user.js?id=dae4ac26750f99d0",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=207de969e16d9284",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=d56b28f604b1d012",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=9268fd9b2f9229ed",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=be5d5cdf90f1e0de",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=ebcd6ef608eddc83",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=d8ffa85dc9b68966",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=3010ddb4ba7419e9",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=f41fe30f2273279c",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=bf5e732edaff3608",
|
||||
"/chunks/payments.js": "/chunks/payments.js?id=051e8246e2b5c9d0",
|
||||
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=893998fa7380c5a0",
|
||||
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=189bb7b91cd6a32a",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=692d3291fb9d2cf7",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=e8377974f2444a44",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=9aadc4841d83e821",
|
||||
"/chunks/app-environment.js": "/chunks/app-environment.js?id=637b39d290081e0d",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=ac2dccb4b4a87bfb",
|
||||
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=04fbf6846bbc6ade",
|
||||
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=18842ed46783ea39",
|
||||
"/chunks/app-server.js": "/chunks/app-server.js?id=6dbdc01c6b0e65b3",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=db16d24415743d42",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=dab18013ce4a716e",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=e110e8923b6ca22f",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=54d3469e6d46cef6",
|
||||
"/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=3153532f0d2273c8",
|
||||
"/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=d630ed9f6f558509",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=8cec25f9f11b217a",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=c1cadbfd4ac0df7b",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=9c62b8573fbdd567",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=926b35b6745d99ba",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=efd739cafc57e762",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=013b252e73d160d0",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=149343604362b7df",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=68765cac4e648e90",
|
||||
"/chunks/billing.js": "/chunks/billing.js?id=4f0ea0f3b2553535",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=1012744ef5111b58",
|
||||
"/chunks/files.js": "/chunks/files.js?id=5d6eb9b9f9ecd296",
|
||||
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=827d3a5dcce159b5",
|
||||
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=2a4e4e0db02cbcbb",
|
||||
"/chunks/trash.js": "/chunks/trash.js?id=8362aa0f91231350",
|
||||
"/chunks/team-folders.js": "/chunks/team-folders.js?id=0a46fecf35a23406",
|
||||
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=77a33583775c6d8f",
|
||||
"/chunks/invitation.js": "/chunks/invitation.js?id=64a211c90b505767",
|
||||
"/css/tailwind.css": "/css/tailwind.css",
|
||||
"/css/app.css": "/css/app.css"
|
||||
}
|
||||
|
||||
@@ -102,6 +102,11 @@ export default {
|
||||
SendIcon,
|
||||
DownloadIcon,
|
||||
},
|
||||
watch: {
|
||||
'item': function () {
|
||||
this.setClipboard()
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: 'link-input-' + Math.floor(Math.random() * 10000000),
|
||||
@@ -182,11 +187,13 @@ export default {
|
||||
this.isCopiedLink = false
|
||||
}, 1000)
|
||||
},
|
||||
setClipboard() {
|
||||
this.directLink = this.item.data.relationships.shared.data.attributes.link + '/direct'
|
||||
this.iframeCode = `<iframe src="${this.item.data.relationships.shared.data.attributes.link}" width="790" height="400" allowfullscreen frameborder="0"></iframe>`
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// Generate copied
|
||||
this.directLink = this.item.data.relationships.shared.data.attributes.link + '/direct'
|
||||
this.iframeCode = `<iframe src="${this.item.data.relationships.shared.data.attributes.link}" width="790" height="400" allowfullscreen frameborder="0"></iframe>`
|
||||
this.setClipboard()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -53,6 +53,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--New language strings alert-->
|
||||
<div
|
||||
v-if="data.app.shouldUpgradeTranslations"
|
||||
class="mb-6 flex items-center rounded-xl dark:bg-green-700/30 bg-green-200 p-5 shadow-card cursor-pointer"
|
||||
@click="upgradeTranslations"
|
||||
>
|
||||
<alert-octagon-icon size="18" class="vue-feather mr-4 shrink-0 dark:text-green-500 text-green-700" />
|
||||
<p class="text-sm dark:text-green-500 text-green-700">
|
||||
We detect new language strings. You should <b class="dark:text-green-500 text-green-600 text-sm font-bold underline">upgrade your translations</b>. After that, you can find new translations at the bottom page of your translations in language editor. Please click on this box.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!--Create metered plan alert-->
|
||||
<div
|
||||
v-if="config.subscriptionType === 'metered' && config.isEmptyPlans"
|
||||
@@ -206,6 +218,7 @@ import { mapGetters } from 'vuex'
|
||||
import axios from 'axios'
|
||||
import WidgetLatestTransactions from '../../components/Admin/WidgetLatestTransactions'
|
||||
import InfoBox from '../../components/Others/Forms/InfoBox'
|
||||
import {events} from "../../bus";
|
||||
|
||||
export default {
|
||||
name: 'Dashboard',
|
||||
@@ -231,6 +244,25 @@ export default {
|
||||
data: undefined,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
upgradeTranslations() {
|
||||
axios.get('/upgrade/translations')
|
||||
.then(() => {
|
||||
this.data.app.shouldUpgradeTranslations = false
|
||||
|
||||
events.$emit('toaster', {
|
||||
type: 'success',
|
||||
message: this.$t('Your translations was upgraded successfully.'),
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
message: this.$t('popup_error.message'),
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
axios
|
||||
.get('/api/admin/dashboard')
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Admin\Controllers\Dashboard;
|
||||
|
||||
use ByteUnits\Metric;
|
||||
@@ -14,6 +15,8 @@ class GetDashboardDataController extends Controller
|
||||
{
|
||||
public function __invoke(): Application|ResponseFactory|Response
|
||||
{
|
||||
list($originalTranslations, $activeTranslations) = $this->countTranslations();
|
||||
|
||||
// Get bandwidth data
|
||||
list($upload, $download, $uploadTotal, $downloadTotal, $storageUsage) = $this->getDiskData();
|
||||
|
||||
@@ -39,11 +42,12 @@ class GetDashboardDataController extends Controller
|
||||
'records' => $upload,
|
||||
],
|
||||
],
|
||||
'app' => [
|
||||
'isRunningCron' => isRunningCron(),
|
||||
'license' => get_settings('license'),
|
||||
'version' => config('vuefilemanager.version'),
|
||||
'earnings' => format_currency($totalEarnings, 'USD'), // todo: refactor currency to global setup or plan currency
|
||||
'app' => [
|
||||
'shouldUpgradeTranslations' => $activeTranslations !== $originalTranslations,
|
||||
'isRunningCron' => isRunningCron(),
|
||||
'license' => get_settings('license'),
|
||||
'version' => config('vuefilemanager.version'),
|
||||
'earnings' => format_currency($totalEarnings, 'USD'), // todo: refactor currency to global setup or plan currency
|
||||
],
|
||||
]);
|
||||
}
|
||||
@@ -64,18 +68,18 @@ class GetDashboardDataController extends Controller
|
||||
DB::raw('sum(download) as download'),
|
||||
DB::raw('sum(upload) as upload'),
|
||||
])
|
||||
->each(fn ($record) => $record->date = format_date($record->date, 'd. M. Y'))
|
||||
->each(fn($record) => $record->date = format_date($record->date, 'd. M. Y'))
|
||||
->keyBy('date');
|
||||
|
||||
$mappedTrafficRecords = mapTrafficRecords($trafficRecords);
|
||||
|
||||
$upload = $mappedTrafficRecords->map(fn ($record) => [
|
||||
$upload = $mappedTrafficRecords->map(fn($record) => [
|
||||
'created_at' => $record->date,
|
||||
'percentage' => intval($trafficRecords->max('upload')) !== 0 ? round(($record->upload / $trafficRecords->max('upload')) * 100, 2) : 0,
|
||||
'amount' => Metric::bytes($record->upload)->format(),
|
||||
]);
|
||||
|
||||
$download = $mappedTrafficRecords->map(fn ($record) => [
|
||||
$download = $mappedTrafficRecords->map(fn($record) => [
|
||||
'created_at' => $record->date,
|
||||
'percentage' => intval($trafficRecords->max('download')) !== 0 ? round(($record->download / $trafficRecords->max('download')) * 100, 2) : 0,
|
||||
'amount' => Metric::bytes($record->download)->format(),
|
||||
@@ -101,4 +105,29 @@ class GetDashboardDataController extends Controller
|
||||
|
||||
return [$upload, $download, $uploadTotal, $downloadTotal, $storageUsage];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function countTranslations(): array
|
||||
{
|
||||
$default_translations = [
|
||||
'extended' => collect([
|
||||
config('language-translations.extended'),
|
||||
config('language-translations.regular'),
|
||||
config('custom-language-translations'),
|
||||
])->collapse(),
|
||||
'regular' => collect([
|
||||
config('language-translations.regular'),
|
||||
config('custom-language-translations'),
|
||||
])->collapse(),
|
||||
];
|
||||
|
||||
$originalTranslationCount = count($default_translations[get_settings('license')]);
|
||||
|
||||
$activeTranslationsCount = DB::table('language_translations')
|
||||
->where('lang', 'en')
|
||||
->count();
|
||||
return array($originalTranslationCount, $activeTranslationsCount);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user