Merge pull request #327 from 1day2die/localization

Localization and multilanguage Support (German included)
This commit is contained in:
Dennis 2021-12-14 18:45:31 +01:00 committed by GitHub
commit 64d8283799
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
73 changed files with 2028 additions and 987 deletions

View file

@ -5,6 +5,8 @@ APP_DEBUG=false
APP_URL=http://localhost
#list with timezones https://www.php.net/manual/en/timezones.php
APP_TIMEZONE=UTC
LOCALE=en
DATATABLE_LOCALE=en-gb
DB_CONNECTION=mysql
DB_HOST=127.0.0.1

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2021 Arno VIsker
Copyright (c) 2021 ControlPanel.gg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -52,7 +52,7 @@ class ApplicationApiController extends Controller
'memo' => $request->input('memo')
]);
return redirect()->route('admin.api.index')->with('success', 'api key created!');
return redirect()->route('admin.api.index')->with('success', __('api key created!'));
}
/**
@ -94,7 +94,7 @@ class ApplicationApiController extends Controller
$applicationApi->update($request->all());
return redirect()->route('admin.api.index')->with('success', 'api key updated!');
return redirect()->route('admin.api.index')->with('success', __('api key updated!'));
}
/**
@ -106,7 +106,7 @@ class ApplicationApiController extends Controller
public function destroy(ApplicationApi $applicationApi)
{
$applicationApi->delete();
return redirect()->back()->with('success', 'api key has been removed!');
return redirect()->back()->with('success', __('api key has been removed!'));
}
/**
@ -121,11 +121,11 @@ class ApplicationApiController extends Controller
return datatables($query)
->addColumn('actions', function (ApplicationApi $apiKey) {
return '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.api.edit', $apiKey->token) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.api.edit', $apiKey->token) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.api.destroy', $apiKey->token) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -92,7 +92,7 @@ class ConfigurationController extends Controller
$configuration->update($request->all());
return redirect()->route('admin.configurations.index')->with('success', 'configuration has been updated!');
return redirect()->route('admin.configurations.index')->with('success', __('configuration has been updated!'));
}
/**
@ -112,7 +112,7 @@ class ConfigurationController extends Controller
return datatables($query)
->addColumn('actions', function (Configuration $configuration) {
return '<button data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" onclick="configuration.parse(\'' . $configuration->key . '\',\'' . $configuration->value . '\',\'' . $configuration->type . '\')" data-content="Edit" data-trigger="hover" data-toggle="tooltip" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></button> ';
return '<button data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" onclick="configuration.parse(\'' . $configuration->key . '\',\'' . $configuration->value . '\',\'' . $configuration->type . '\')" data-content="Edit" data-trigger="hover" data-toggle="tooltip" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></button> ';
})
->editColumn('created_at', function (Configuration $configuration) {
return $configuration->created_at ? $configuration->created_at->diffForHumans() : '';

View file

@ -93,7 +93,7 @@ class PaymentController extends Controller
'shipping_preference' => 'NO_SHIPPING'
]
];
@ -164,7 +164,7 @@ class PaymentController extends Controller
$user->update(['server_limit' => Configuration::getValueByKey('SERVER_LIMIT_AFTER_IRL_PURCHASE')]);
}
}
//update role
if ($user->role == 'member') {
$user->update(['role' => 'client']);
@ -192,7 +192,7 @@ class PaymentController extends Controller
event(new UserUpdateCreditsEvent($user));
//redirect back to home
return redirect()->route('home')->with('success', 'Your credit balance has been increased!');
return redirect()->route('home')->with('success', __('Your credit balance has been increased!'));
}
// If call returns body in response, you can get the deserialized version from the result attribute of the response
@ -220,7 +220,7 @@ class PaymentController extends Controller
*/
public function cancel(Request $request)
{
return redirect()->route('store.index')->with('success', 'Payment was Canceled');
return redirect()->route('store.index')->with('success', __('Payment was Canceled'));
}

View file

@ -62,7 +62,7 @@ class PaypalProductController extends Controller
$disabled = !is_null($request->input('disabled'));
PaypalProduct::create(array_merge($request->all(), ['disabled' => $disabled]));
return redirect()->route('admin.store.index')->with('success', 'Store item has been created!');
return redirect()->route('admin.store.index')->with('success', __('Store item has been created!'));
}
/**
@ -112,7 +112,7 @@ class PaypalProductController extends Controller
$disabled = !is_null($request->input('disabled'));
$paypalProduct->update(array_merge($request->all(), ['disabled' => $disabled]));
return redirect()->route('admin.store.index')->with('success', 'Store item has been updated!');
return redirect()->route('admin.store.index')->with('success', __('Store item has been updated!'));
}
/**
@ -124,7 +124,7 @@ class PaypalProductController extends Controller
{
$paypalProduct->update(['disabled' => !$paypalProduct->disabled]);
return redirect()->route('admin.store.index')->with('success', 'Product has been updated!');
return redirect()->route('admin.store.index')->with('success', __('Product has been updated!'));
}
/**
@ -136,7 +136,7 @@ class PaypalProductController extends Controller
public function destroy(PaypalProduct $paypalProduct)
{
$paypalProduct->delete();
return redirect()->back()->with('success', 'Store item has been removed!');
return redirect()->back()->with('success', __('Store item has been removed!'));
}
@ -147,12 +147,12 @@ class PaypalProductController extends Controller
return datatables($query)
->addColumn('actions', function (PaypalProduct $paypalProduct) {
return '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.store.edit', $paypalProduct->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.store.edit', $paypalProduct->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.store.destroy', $paypalProduct->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -84,7 +84,7 @@ class ProductController extends Controller
$product->eggs()->attach($request->input('eggs'));
$product->nodes()->attach($request->input('nodes'));
return redirect()->route('admin.products.index')->with('success', 'Product has been created!');
return redirect()->route('admin.products.index')->with('success', __('Product has been created!'));
}
/**
@ -152,7 +152,7 @@ class ProductController extends Controller
$product->eggs()->attach($request->input('eggs'));
$product->nodes()->attach($request->input('nodes'));
return redirect()->route('admin.products.index')->with('success', 'Product has been updated!');
return redirect()->route('admin.products.index')->with('success', __('Product has been updated!'));
}
/**
@ -181,7 +181,7 @@ class ProductController extends Controller
}
$product->delete();
return redirect()->back()->with('success', 'Product has been removed!');
return redirect()->back()->with('success', __('Product has been removed!'));
}
@ -196,14 +196,14 @@ class ProductController extends Controller
return datatables($query)
->addColumn('actions', function (Product $product) {
return '
<a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="Clone" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.clone', $product->id) . '" class="btn btn-sm text-white btn-primary mr-1"><i class="fas fa-clone"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Show").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="'.__("Clone").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.clone', $product->id) . '" class="btn btn-sm text-white btn-primary mr-1"><i class="fas fa-clone"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.products.destroy', $product->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -92,9 +92,9 @@ class ServerController extends Controller
{
try {
$server->delete();
return redirect()->route('admin.servers.index')->with('success', 'Server removed');
return redirect()->route('admin.servers.index')->with('success', __('Server removed'));
} catch (Exception $e) {
return redirect()->route('admin.servers.index')->with('error', 'An exception has occurred while trying to remove a resource "' . $e->getMessage() . '"');
return redirect()->route('admin.servers.index')->with('error', __('An exception has occurred while trying to remove a resource "') . $e->getMessage() . '"');
}
}
@ -109,7 +109,7 @@ class ServerController extends Controller
return redirect()->back()->with('error', $exception->getMessage());
}
return redirect()->back()->with('success', 'Server has been updated!');
return redirect()->back()->with('success', __('Server has been updated!'));
}
/**
@ -134,7 +134,7 @@ class ServerController extends Controller
->addColumn('actions', function (Server $server) {
$suspendColor = $server->isSuspended() ? "btn-success" : "btn-warning";
$suspendIcon = $server->isSuspended() ? "fa-play-circle" : "fa-pause-circle";
$suspendText = $server->isSuspended() ? "Unsuspend" : "Suspend";
$suspendText = $server->isSuspended() ? __("Unsuspend") : __("Suspend");
return '
<form class="d-inline" method="post" action="' . route('admin.servers.togglesuspend', $server->id) . '">
@ -145,7 +145,7 @@ class ServerController extends Controller
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.servers.destroy', $server->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';

View file

@ -36,7 +36,7 @@ class SettingsController extends Controller
$request->file('favicon')->storeAs('public', 'favicon.ico');
}
return redirect()->route('admin.settings.index')->with('success', 'Icons updated!');
return redirect()->route('admin.settings.index')->with('success', __('Icons updated!'));
}
}

View file

@ -50,7 +50,7 @@ class UsefulLinkController extends Controller
]);
UsefulLink::create($request->all());
return redirect()->route('admin.usefullinks.index')->with('success', 'link has been created!');
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been created!'));
}
/**
@ -94,7 +94,7 @@ class UsefulLinkController extends Controller
]);
$usefullink->update($request->all());
return redirect()->route('admin.usefullinks.index')->with('success', 'link has been updated!');
return redirect()->route('admin.usefullinks.index')->with('success', __('link has been updated!'));
}
/**
@ -106,7 +106,7 @@ class UsefulLinkController extends Controller
public function destroy(UsefulLink $usefullink)
{
$usefullink->delete();
return redirect()->back()->with('success', 'product has been removed!');
return redirect()->back()->with('success', __('product has been removed!'));
}
public function dataTable()
@ -116,12 +116,12 @@ class UsefulLinkController extends Controller
return datatables($query)
->addColumn('actions', function (UsefulLink $link) {
return '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.usefullinks.edit', $link->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.usefullinks.edit', $link->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.usefullinks.destroy', $link->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -115,7 +115,7 @@ class UserController extends Controller
if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) {
throw ValidationException::withMessages([
'pterodactyl_id' => ["User does not exists on pterodactyl's panel"]
'pterodactyl_id' => [__("User does not exists on pterodactyl's panel")]
]);
}
@ -145,7 +145,7 @@ class UserController extends Controller
public function destroy(User $user)
{
$user->delete();
return redirect()->back()->with('success', 'user has been removed!');
return redirect()->back()->with('success', __('user has been removed!'));
}
/**
@ -218,7 +218,7 @@ class UserController extends Controller
$all = $data["all"] ?? false;
$users = $all ? User::all() : User::whereIn("id", $data["users"])->get();
Notification::send($users, new DynamicNotification($data["via"], $database, $mail));
return redirect()->route('admin.users.notifications')->with('success', 'Notification sent!');
return redirect()->route('admin.users.notifications')->with('success', __('Notification sent!'));
}
/**
@ -232,7 +232,7 @@ class UserController extends Controller
return redirect()->back()->with('error', $exception->getMessage());
}
return redirect()->back()->with('success', 'User has been updated!');
return redirect()->back()->with('success', __('User has been updated!'));
}
/**
@ -265,11 +265,11 @@ class UserController extends Controller
->addColumn('actions', function (User $user) {
$suspendColor = $user->isSuspended() ? "btn-success" : "btn-warning";
$suspendIcon = $user->isSuspended() ? "fa-play-circle" : "fa-pause-circle";
$suspendText = $user->isSuspended() ? "Unsuspend" : "Suspend";
$suspendText = $user->isSuspended() ? __("Unsuspend") : __("Suspend");
return '
<a data-content="Login as user" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-sign-in-alt"></i></a>
<a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Login as User").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-sign-in-alt"></i></a>
<a data-content="'.__("Show").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" method="post" action="' . route('admin.users.togglesuspend', $user->id) . '">
' . csrf_field() . '
<button data-content="'.$suspendText.'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm '.$suspendColor.' text-white mr-1"><i class="far '.$suspendIcon.'"></i></button>
@ -277,7 +277,7 @@ class UserController extends Controller
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.users.destroy', $user->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -55,7 +55,7 @@ class VoucherController extends Controller
Voucher::create($request->except('_token'));
return redirect()->route('admin.vouchers.index')->with('success', 'voucher has been created!');
return redirect()->route('admin.vouchers.index')->with('success', __('voucher has been created!'));
}
/**
@ -101,7 +101,7 @@ class VoucherController extends Controller
$voucher->update($request->except('_token'));
return redirect()->route('admin.vouchers.index')->with('success', 'voucher has been updated!');
return redirect()->route('admin.vouchers.index')->with('success', __('voucher has been updated!'));
}
/**
@ -113,7 +113,7 @@ class VoucherController extends Controller
public function destroy(Voucher $voucher)
{
$voucher->delete();
return redirect()->back()->with('success', 'voucher has been removed!');
return redirect()->back()->with('success', __('voucher has been removed!'));
}
public function users(Voucher $voucher)
@ -140,19 +140,19 @@ class VoucherController extends Controller
#extra validations
if ($voucher->getStatus() == 'USES_LIMIT_REACHED') throw ValidationException::withMessages([
'code' => 'This voucher has reached the maximum amount of uses'
'code' => __('This voucher has reached the maximum amount of uses')
]);
if ($voucher->getStatus() == 'EXPIRED') throw ValidationException::withMessages([
'code' => 'This voucher has expired'
'code' => __('This voucher has expired')
]);
if (!$request->user()->vouchers()->where('id', '=', $voucher->id)->get()->isEmpty()) throw ValidationException::withMessages([
'code' => 'You already redeemed this voucher code'
'code' => __('You already redeemed this voucher code')
]);
if ($request->user()->credits + $voucher->credits >= 99999999) throw ValidationException::withMessages([
'code' => "You can't redeem this voucher because you would exceed the " . CREDITS_DISPLAY_NAME . " limit"
'code' => "You can't redeem this voucher because you would exceed the limit of " . CREDITS_DISPLAY_NAME
]);
#redeem voucher
@ -161,7 +161,7 @@ class VoucherController extends Controller
event(new UserUpdateCreditsEvent($request->user()));
return response()->json([
'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME . " have been added to your balance!"
'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME ." ". __("have been added to your balance!")
]);
}
@ -189,19 +189,19 @@ class VoucherController extends Controller
return datatables($query)
->addColumn('actions', function (Voucher $voucher) {
return '
<a data-content="Users" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.users', $voucher->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-users"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.edit', $voucher->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Users").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.users', $voucher->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-users"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.edit', $voucher->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.vouchers.destroy', $voucher->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})
->addColumn('status', function (Voucher $voucher) {
$color = 'success';
if ($voucher->getStatus() != 'VALID') $color = 'danger';
if ($voucher->getStatus() != __('VALID')) $color = 'danger';
return '<span class="badge badge-' . $color . '">' . $voucher->getStatus() . '</span>';
})
->editColumn('uses', function (Voucher $voucher) {

View file

@ -15,7 +15,6 @@ class HomeController extends Controller
const TIME_LEFT_BG_SUCCESS = "bg-success";
const TIME_LEFT_BG_WARNING = "bg-warning";
const TIME_LEFT_BG_DANGER = "bg-danger";
const TIME_LEFT_OUT_OF_CREDITS_TEXT = "You ran out of Credits";
public function __construct()
{
@ -51,8 +50,8 @@ class HomeController extends Controller
*/
public function getTimeLeftBoxUnit(float $daysLeft, float $hoursLeft)
{
if ($daysLeft > 1) return 'days';
return $hoursLeft < 1 ? null : "hours";
if ($daysLeft > 1) return __('days');
return $hoursLeft < 1 ? null : __("hours");
}
/**
@ -66,7 +65,7 @@ class HomeController extends Controller
public function getTimeLeftBoxText(float $daysLeft, float $hoursLeft)
{
if ($daysLeft > 1) return strval(number_format($daysLeft, 0));
return ($hoursLeft < 1 ? $this::TIME_LEFT_OUT_OF_CREDITS_TEXT : strval($hoursLeft));
return ($hoursLeft < 1 ? __("You ran out of Credits") : strval($hoursLeft));
}
/** Show the application dashboard. */
@ -85,7 +84,7 @@ class HomeController extends Controller
$bg = $this->getTimeLeftBoxBackground($daysLeft);
$boxText = $this->getTimeLeftBoxText($daysLeft, $hoursLeft);
$unit = $daysLeft < 1 ? ($hoursLeft < 1 ? null : "hours") : "days";
$unit = $daysLeft < 1 ? ($hoursLeft < 1 ? null : __("hours")) : __("days");
}

View file

@ -86,6 +86,6 @@ class ProfileController extends Controller
'email' => $request->input('email'),
]);
return redirect()->route('profile.index')->with('success' , 'Profile updated');
return redirect()->route('profile.index')->with('success' , __('Profile updated'));
}
}

View file

@ -71,7 +71,7 @@ class ServerController extends Controller
{
//limit validation
if (Auth::user()->servers()->count() >= Auth::user()->server_limit) {
return redirect()->route('servers.index')->with('error', 'Server limit reached!');
return redirect()->route('servers.index')->with('error', __('Server limit reached!'));
}
// minimum credits
@ -89,12 +89,12 @@ class ServerController extends Controller
//Required Verification for creating an server
if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', 'false') === 'true' && !Auth::user()->hasVerifiedEmail()) {
return redirect()->route('profile.index')->with('error', "You are required to verify your email address before you can create a server.");
return redirect()->route('profile.index')->with('error', __("You are required to verify your email address before you can create a server."));
}
//Required Verification for creating an server
if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', 'false') === 'true' && !Auth::user()->discordUser) {
return redirect()->route('profile.index')->with('error', "You are required to link your discord account before you can create a server.");
return redirect()->route('profile.index')->with('error', __("You are required to link your discord account before you can create a server."));
}
return null;
@ -146,7 +146,7 @@ class ServerController extends Controller
}
}
return redirect()->route('servers.index')->with('success', 'Server created');
return redirect()->route('servers.index')->with('success', __('Server created'));
}
/**
@ -159,7 +159,7 @@ class ServerController extends Controller
$server->delete();
Auth::user()->notify(new ServerCreationError($server));
return redirect()->route('servers.index')->with('error', 'No allocations satisfying the requirements for automatic deployment on this node were found.');
return redirect()->route('servers.index')->with('error', __('No allocations satisfying the requirements for automatic deployment on this node were found.'));
}
/**
@ -180,9 +180,9 @@ class ServerController extends Controller
{
try {
$server->delete();
return redirect()->route('servers.index')->with('success', 'Server removed');
return redirect()->route('servers.index')->with('success', __('Server removed'));
} catch (Exception $e) {
return redirect()->route('servers.index')->with('error', 'An exception has occurred while trying to remove a resource "' . $e->getMessage() . '"');
return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to remove a resource "') . $e->getMessage() . '"');
}
}
}

View file

@ -18,12 +18,12 @@ class StoreController extends Controller
//Required Verification for creating an server
if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', false) === 'true' && !Auth::user()->hasVerifiedEmail()) {
return redirect()->route('profile.index')->with('error', "You are required to verify your email address before you can purchase credits.");
return redirect()->route('profile.index')->with('error', __("You are required to verify your email address before you can purchase credits."));
}
//Required Verification for creating an server
if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', false) === 'true' && !Auth::user()->discordUser) {
return redirect()->route('profile.index')->with('error', "You are required to link your discord account before you can purchase ".CREDITS_DISPLAY_NAME.".");
return redirect()->route('profile.index')->with('error', __("You are required to link your discord account before you can purchase Credits"));
}
return view('store.index')->with([

View file

@ -86,10 +86,10 @@ class Voucher extends Model
{
if ($this->users()->count() >= $this->uses) return 'USES_LIMIT_REACHED';
if (!is_null($this->expires_at)) {
if ($this->expires_at->isPast()) return 'EXPIRED';
if ($this->expires_at->isPast()) return __('EXPIRED');
}
return 'VALID';
return __('VALID');
}
/**

View file

@ -44,7 +44,7 @@ class ConfirmPaymentNotification extends Notification implements ShouldQueue
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Payment Confirmation')
->subject(__('Payment Confirmation'))
->markdown('mail.payment.confirmed' , ['payment' => $this->payment]);
}
@ -57,8 +57,8 @@ class ConfirmPaymentNotification extends Notification implements ShouldQueue
public function toArray($notifiable)
{
return [
'title' => "Payment Confirmed!",
'content' => "Payment Confirmed!",
'title' => __("Payment Confirmed!"),
'content' => __("Payment Confirmed!"),
];
}
}

View file

@ -46,7 +46,7 @@ class ServerCreationError extends Notification
public function toArray($notifiable)
{
return [
'title' => "Server Creation Error",
'title' => __("Server Creation Error"),
'content' => "
<p>Hello <strong>{$this->server->User->name}</strong>, An unexpected error has occurred...</p>
<p>There was a problem creating your server on our pterodactyl panel. There are likely no allocations or rooms left on the selected node. Please contact one of our support members through our discord server to get this resolved asap!</p>

View file

@ -42,11 +42,11 @@ class ServersSuspendedNotification extends Notification implements ShouldQueue
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Your servers have been suspended!')
->greeting('Your servers have been suspended!')
->line("To automatically re-enable your server/s, you need to purchase more credits.")
->action('Purchase credits', route('store.index'))
->line('If you have any questions please let us know.');
->subject(__('Your servers have been suspended!'))
->greeting(__('Your servers have been suspended!'))
->line(__("To automatically re-enable your server/s, you need to purchase more credits."))
->action(__('Purchase credits'), route('store.index'))
->line(__('If you have any questions please let us know.'));
}
/**
@ -58,12 +58,12 @@ class ServersSuspendedNotification extends Notification implements ShouldQueue
public function toArray($notifiable)
{
return [
'title' => "Servers suspended!",
'title' => __('Your servers have been suspended!'),
'content' => "
<h5>Your servers have been suspended!</h5>
<p>To automatically re-enable your server/s, you need to purchase more credits.</p>
<p>If you have any questions please let us know.</p>
<p>Regards,<br />" . config('app.name', 'Laravel') . "</p>
<h5>". __('Your servers have been suspended!')."</h5>
<p>". __("To automatically re-enable your server/s, you need to purchase more credits.")."</p>
<p>". __('If you have any questions please let us know.')."</p>
<p>". __('Regards').",<br />" . config('app.name', 'Laravel') . "</p>
",
];
}

View file

@ -66,7 +66,7 @@ class WelcomeMessage extends Notification implements ShouldQueue
public function toArray($notifiable)
{
return [
'title' => "Getting started!",
'title' => __("Getting started!"),
'content' => "
<p>Hello <strong>{$this->user->name}</strong>, Welcome to our dashboard!</p>
<h5>Verification</h5>

View file

@ -81,7 +81,20 @@ return [
|
*/
'locale' => 'en',
'locale' => env('LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Datatable Language Setting
|--------------------------------------------------------------------------
|
| This is the Language-Code used on the Datatables.
| You can grab the Language-Codes from this Website
| https://datatables.net/plug-ins/i18n/
|
*/
'datatable_locale' => env('DATATABLE_LOCALE', 'en-gb'),
/*
|--------------------------------------------------------------------------

361
resources/lang/de.json Normal file
View file

@ -0,0 +1,361 @@
{
"Activity Logs": "Aktivitäts logs",
"No recent activity from cronjobs": "Keine neuen aktivitäten von Cronjobs",
"Check the docs for it here": "Zur Dokumentation",
"Are cronjobs running?": "Sind die Cronjobs gestartet?",
"Causer": "Verursacher",
"Description": "Beschreibung",
"Created at": "Erstellt am",
"Edit Configuration": "Einstellungen bearbeiten",
"Text Field": "Textfeld",
"Cancel": "Abbrechen",
"Close": "Schließen",
"Save": "Speichern",
"true": "wahr",
"false": "falsch",
"Configurations": "Einstellungen",
"Dashboard": "Dashboard",
"Key": "Schlüssel",
"Value": "Wert",
"Type": "Typ",
"Admin Overview": "Admin Übersicht",
"Support server": "Discord Server",
"Documentation": "Dokumentation",
"Github": "Github",
"Support ControlPanel": "Unterstütze Controlpanel.gg",
"Servers": "Server",
"Users": "Benutzer",
"Total": "Gesamt",
"Payments": "Zahlungen",
"Pterodactyl": "Pterodactyl",
"Sync": "Sync",
"Resources": "Ressourcen",
"Count": "Anzahl",
"Locations": "Standorte",
"Node": "Node",
"Nodes": "Nodes",
"Nests": "Nests",
"Eggs": "Eggs",
"Last updated :date": "Zuletzt aktualisiert :date",
"ID": "ID",
"User": "Benutzer",
"Amount": "Anzahl",
"Product Price": "Produktpreis",
"Tax": "Steuer",
"Total Price": "Gesamtpreis",
"Payment_ID": "Zahlungs-ID",
"Payer_ID": "Käufer-ID",
"Product": "Produkt",
"Products": "Produkte",
"Create": "Erstellen",
"Product Details": "Produktdetails",
"Server Details": "Serverdetails",
"Product Linking": "Produktbeziehungen",
"Name": "Name",
"Price in": "Preis in ",
"Memory": "Arbeitsspeicher",
"Cpu": "Prozessorleistung",
"Swap": "Swap",
"Disk": "Festplatte",
"Minimum": "Mindest",
"IO": "IO",
"Databases": "Datenbanken",
"Database": "Datenbank",
"Backups": "Backups",
"Allocations": "Port Zuweisungen",
"Disabled": "Deaktiviert",
"Submit": "Abschicken",
"This product will only be available for these nodes": "Dieses Produkt wurd nur für die ausgewählten Nodes verfügbar sein",
"This product will only be available for these eggs": "Dieses Produkt wurd nur für die ausgewählten Eggs verfügbar sein",
"Will hide this option from being selected": "Wird dieses Produkt nicht zum Kauf zur Verfügung stellen",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Verbinde deine Produkte mit Nodes und Eggs um ein dynamisches Preismodell zu erstellen",
"Setting to -1 will use the value from configuration.": "Benutzt den Standard, wenn der Wert auf -1 gesetzt wird",
"This is what the users sees": "Das wird der Benutzer sehen",
"Edit": "Bearbeiten",
"Price": "Preis",
"Are you sure you wish to delete?": "Sicher, dass du dies löschen möchtest?",
"Create new": "Neu erstellen",
"Show": "Zeige",
"Updated at": "Aktualisiert",
"Suspended at": "Suspendiert",
"Settings": "Einstellungen",
"Dashboard icons": "Dashboard Icons",
"Select panel icon": "Icon auswählen",
"Select panel favicon": "Favicon auswählen",
"Token": "Token",
"Last used": "Zuletzt benutzt",
"Store": "Laden",
"Currency code": "Währungscode",
"Checkout the paypal docs to select the appropriate code": "Siehe Paypal für die entsprechenden Codes",
"Quantity": "Menge",
"Amount given to the user after purchasing": "Anzahl, die der User nach dem Kauf bekommt",
"Display": "Anzeigename",
"This is what the user sees at store and checkout": "Dies ist die 'Anzahl' welche der User beim Kaufen sieht",
"This is what the user sees at checkout": "Dies ist die Beschreibung auf der Rechnung und was der Kunde beim kauf sieht",
"Adds 1000 credits to your account": "Fügt deinem Account 1000 Credits hinzu",
"Active": "Aktiv",
"Paypal is not configured.": "Paypal ist nicht konfiguriert!",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "Um Paypal zu konfigurieren, füge deine Paypal client ID und Secretkey in deine .env-Datei hinzu",
"Useful Links": "Nützliche Links",
"Icon class name": "Icon Klassen-Name",
"You can find available free icons": "Hier gibt es kostenlose Icons",
"Title": "Titel",
"Link": "Link",
"Username": "Username",
"Email": "E-Mail",
"Pterodactly ID": "Pterodactyl ID",
"Server Limit": "Serverlimit",
"Role": "Rolle",
"Administrator": "Administrator",
"Client": "Client",
"Member": "Member",
"New Password": "Neues Passwort",
"Confirm Password": "Passwort bestätigen",
"This ID refers to the user account created on pterodactyls panel.": "Die ist die Pterodactyl-ID des Users",
"Only edit this if you know what youre doing :)": "Bearbeite dies nur, wenn du weißt, was du tust :)",
"Verified": "Verifiziert",
"Last seen": "Zuletzt online",
"Notify": "Benachrichtigen",
"All": "Alle",
"Send via": "Senden via",
"Content": "Inhalt",
"Notifications": "Benachrichtigungen",
"Usage": "Nutzung",
"Config": "Konfiguration",
"Vouchers": "Gutscheine",
"Voucher details": "Gutschein details",
"Memo": "Name",
"Code": "Code",
"Uses": "Benutzungen",
"Expires at": "Läuft ab am",
"Max": "Max",
"Random": "Zufällig",
"Status": "Status",
"Used / Uses": "Benutzungen",
"Expires": "Ablauf",
"Please confirm your password before continuing.": "Bitte bestätige dein Passwort bevor du fortfährst",
"Password": "Passwort",
"Forgot Your Password?": "Passwort vergessen?",
"Sign in to start your session": "Melde dich an um das Dashboard zu benutzen",
"Remember Me": "Login Speichern",
"Sign In": "Anmelden",
"Register a new membership": "Neuen Account registrieren",
"You forgot your password? Here you can easily retrieve a new password.": "Passwort vergessen? Hier kannst du ganz leicht ein neues anfordern",
"Request new password": "Neues Passwort anfordern",
"Login": "Anmelden",
"You are only one step a way from your new password, recover your password now.":"Du bist nurnoch einen Schritt von deinem Passwort entfernt.",
"Retype password": "Passwort bestätigen",
"Change password": "Passwort ändern",
"I already have a membership": "Ich habe bereits einen Account",
"Register": "Registrieren",
"Verify Your Email Address": "Bestätige deine E-Mail Adresse",
"A fresh verification link has been sent to your email address.": "Dir wurde ein neuer Verifizierungslink zugeschickt",
"Before proceeding, please check your email for a verification link.": "Bitte überprüfe dein E-Mail Postfach nach einem Verifizierungslink",
"If you did not receive the email": "Solltest du keine E-Mail erhalten haben",
"click here to request another": "Klicke hier um eine neue zu erhalten",
"Home": "Startseite",
"See all Notifications": "Alle Nachrichten anzeigen",
"Profile": "Profil",
"Log back in": "Zurück anmelden",
"Logout": "Abmelden",
"Administration": "Administration",
"Overview": "Übersicht",
"Application API": "API",
"Management": "Management",
"Other": "Anderes",
"Logs": "Logs",
"Redeem code": "Code einlösen",
"You have not yet verified your email address": "Deine E-Mail Adresse ist nicht bestätigt",
"Click here to resend verification email": "Klicke hier, um eine neue Bestätigungsmail zu senden",
"Please contact support If you didnt receive your verification email.": "Wende dich an den Kundensupport wenn du keine E-Mail erhalten hast",
"Thank you for your purchase!": "Vielen Dank für deinen Einkauf!",
"Your payment has been confirmed; Your credit balance has been updated.": "Deine Zahlung wurde bestätigt und deine Credits angepasst",
"Payment ID": "Zahlungs-ID",
"Balance": "Stand",
"User ID": "User-ID",
"Thanks": "Vielen Dank",
"Redeem voucher code": "Gutscheincode einlösen",
"Redeem": "Einlösen",
"All notifications": "Alle Nachrichten",
"Required Email verification!": "E-Mail verifizierung nötig!",
"Required Discord verification!": "Discord verifizierung nötig!",
"You have not yet verified your discord account": "Du hast deinen Discord Account noch nicht bestätigt",
"Login with discord": "Mit discord anmelden",
"Please contact support If you face any issues.": "Melde dich beim Support, solltest du Probleme haben",
"Due to system settings you are required to verify your discord account!": "Um das System zu benutzten, musst du deinen Discord Account bestätigen",
"It looks like this hasnt been set-up correctly! Please contact support.": "Es scheint so, als wäre dies nicht richtig Konfiguriert. Bitte melde dich beim Support",
"Change Password": "Passwort ändern",
"Current Password": "Momentanes Passwort",
"Save Changes": "Änderungen speichern",
"Re-Sync Discord": "Resync Discord",
"You are verified!": "Du bist verifiziert!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "Wenn du deinen Discordaccount verifizierst, bekommst du extra Credits und ein erhöhtes Server Limit",
"Server configuration": "Server Konfiguration",
"Error!": "Fehler!",
"Make sure to link your products to nodes and eggs.": "Stelle sicher, dass deine Produkte mit Nodes und Eggs verknüpft sind",
"There has to be at least 1 valid product for server creation": "Es muss mindestens 1 aktives Produkt erstellt sein, bevor ein Server erstellt wird",
"No products available!": "Keine Produkte verfügbar!",
"No nodes have been linked!": "Es wurde keine Nodes verknüpft",
"No nests available!": "Keine Nests verfügbar",
"No eggs have been linked!": "Es wurde keine Eggs verknüpft",
"Software / Games": "Software / Spiele",
"Please select software ...": "Bitte Software auswählen",
"Specification": "Spezifikationen",
"No selection": "Keine Auswahl",
"per month": "pro Monat",
"Not enough credits!": "Nicht genug Credits!",
"Please select a configuration ...": "Konfiguration Auswählen!",
"No resources found matching current configuration": "Keine Ressource passt zur momentanen Konfiguration",
"No nodes found matching current configuration": "Kein Node passt zur momentanen Konfiguration",
"Please select a node ...": "Bitte Node auswählen",
"Create server": "Server erstellen",
"Use your servers on our": "Verwalte deine Server mit unserem",
"pterodactyl panel": "Server panel",
"Server limit reached!": "Server Limit erreicht!",
"Create Server": "Server erstellen",
"Manage": "Verwalten",
"Delete server": "Server löschen",
"Price per Hour": "Preis pro Stunde",
"Price per Month": "Preis pro Monat",
"Date": "Datum",
"To": "Zu",
"From": "Von",
"Pending": "Wartend",
"Subtotal": "Zwischensumme",
"Submit Payment": "Zahlung bestätigen",
"Payment Methods": "Zahlungsmethoden",
"By purchasing this product you agree and accept our terms of service": "Mit dem kauf akzeptierst du unsere TOS",
"There are no store products!": "Es gibt keine Produkte",
"The store is not correctly configured!": "Der Laden wurde nicht richtig konfiguriert",
"Out of Credits in": "Keine :credits mehr in",
"days": "Tage",
"hours": "Stunden",
"You ran out of Credits": "Keine Credits übrig!",
"Profile updated": "Profile updated",
"You are required to verify your email address before you can create a server.": "Du musst deine E-Mail verifizieren bevor du einen Server erstellen kannst",
"You are required to link your discord account before you can create a server.": "Du musst dein Discord verifizieren bevor du einen Server erstellen kannst",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "Keine automatischen Portzuweisungen für dieses Node vorhanden",
"Server removed": "Server gelöscht",
"Server created": "Server erstellt!",
"An exception has occurred while trying to remove a resource \"": "Folgender Fehler ist aufgetreten: ",
"You are required to verify your email address before you can purchase credits.": "Vor dem Kauf musst du deine E-Mail verifizieren",
"You are required to link your discord account before you can purchase ": "Vor dem Kauf musst du dein Discord verlinken!",
"Warning!": "Warnung!",
"api key created!": "API Key erstellt",
"api key updated!": "API Key updated",
"api key has been removed!": "API Key gelöscht",
"configuration has been updated!": "Konfig updated",
"Pterodactyl synced": "Pterodactyl synced",
"Your credit balance has been increased!": "Dein Kontostand wurde updated",
"Payment was Canceled": "Zahlung abgebrochen",
"Store item has been created!": "Item wurde erstellt!",
"Store item has been updated!": "Item updated",
"Product has been updated!": "Product updated",
"Store item has been removed!":"Item gelöscht",
"Product has been created!": "Produkt erstellt",
"Product has been removed!": "Produkt gelöscht",
"Server has been updated!": "Server updated",
"Icons updated!": "Icons Updated",
"link has been created!": "Link erstellt!",
"link has been updated!": "Link updated!",
"user has been removed!": "User gelöscht",
"Notification sent!": "Nachricht gesendet",
"User has been updated!": "User updated!",
"User does not exists on pterodactyl's panel": "User existiert nicht in Pterodactyl",
"voucher has been created!": "Gutschein erstellt",
"voucher has been updated!": "Gutschein Updated",
"voucher has been removed!": "Gutschein gelöscht",
"This voucher has reached the maximum amount of uses": "Maximale Anzahl an Einlösungen erreicht",
"This voucher has expired": "Gutschein abgelaufen",
"You already redeemed this voucher code": "Du hast diesen Gutschein bereits eingelöst",
"You can't redeem this voucher because you would exceed the limit of ": "Du kannst diesen Gutschein nicht einlösen sonst hast du zu viele ",
"have been added to your balance!": "wurden deinem Konto hinzugefügt",
"Invoice": "Rechnung",
"Serial No.": "Rechnungsnr.",
"Invoice date": "Rechnungsdatum",
"Seller": "Verkäufer",
"Buyer": "Käufer",
"Address": "Adresse",
"VAT code": "Steuerid",
"Phone": "Telefon",
"Units": "Einheiten",
"Qty": "Menge",
"Discount": "Rabatt",
"Sub total": "Zwischensumme",
"Total discount": "Gesamtrabatt",
"Taxable amount": "Steuerbetrag",
"Total taxes": "Steuerngesamt",
"Tax rate": "Steuerrate",
"Total amount": "Gesamtbetrag",
"Please pay until": "Zahlbar bis",
"Amount in words": "Betrag in Worten",
"Notes": "Notizen",
"Shipping": "Lieferbedingung",
"Paid": "Bezahlt",
"Due:": "Fällig",
"Invoice Settings":"Rechnungsoptionen",
"Download all Invoices":"Alle Rechnungen runterladen",
"Enter your companys name":"Firmenname",
"Enter your companys adress":"Firmenadresse",
"Enter your companys phone number":"Telefonnummer",
"Enter your companys VAT id":"SteuerID Nummer",
"Enter your companys email adress":"Firmen E-Mail",
"Enter your companys website":"Firmenwebsite",
"Enter your custom invoice prefix":"Rechnungsprefix",
"Select Invoice Logo":"Firmenlogo auswählen",
"Payment Confirmation": "Zahlungsbestätigung",
"Payment Confirmed!": "Zahlung bestätigt!",
"Server Creation Error": "Fehler beim erstellen des Servers",
"Your servers have been suspended!": "Deine Server wurden pausiert",
"To automatically re-enable your server/s, you need to purchase more credits.": "Um deine Server zu reaktivieren, musst du mehr Credits kaufen!",
"Purchase credits": "Credits kaufen",
"If you have any questions please let us know.": "Solltest du weiter fragen haben, melde dich gerne beim Support!",
"Regards": "mit freundlichen Grüßen",
"Getting started!": "Den Anfang machen!",
"EXPIRED": "ABGELAUFEN",
"VALID": "GÜLTIG",
"Unsuspend": "Reaktivieren",
"Suspend": "Deaktivieren",
"Delete": "Löschen",
"Login as User": "Als User anmelden",
"Clone": "Klonen"
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.',
'password' => 'Das eingegebene Passwort ist nicht korrekt.',
'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Weiter &raquo;',
'previous' => '&laquo; Zurück',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Das Passwort wurde zurückgesetzt!',
'sent' => 'Passworterinnerung wurde gesendet!',
'throttled' => 'Bitte warten Sie, bevor Sie es erneut versuchen.',
'token' => 'Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.',
'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':attribute muss akzeptiert werden.',
'accepted_if' => ':attribute muss akzeptiert werden, wenn :other :value ist.',
'active_url' => ':attribute ist keine gültige Internet-Adresse.',
'after' => ':attribute muss ein Datum nach :date sein.',
'after_or_equal' => ':attribute muss ein Datum nach :date oder gleich :date sein.',
'alpha' => ':attribute darf nur aus Buchstaben bestehen.',
'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.',
'alpha_num' => ':attribute darf nur aus Buchstaben und Zahlen bestehen.',
'array' => ':attribute muss ein Array sein.',
'attached' => ':attribute ist bereits angehängt.',
'before' => ':attribute muss ein Datum vor :date sein.',
'before_or_equal' => ':attribute muss ein Datum vor :date oder gleich :date sein.',
'between' => [
'array' => ':attribute muss zwischen :min & :max Elemente haben.',
'file' => ':attribute muss zwischen :min & :max Kilobytes groß sein.',
'numeric' => ':attribute muss zwischen :min & :max liegen.',
'string' => ':attribute muss zwischen :min & :max Zeichen lang sein.',
],
'boolean' => ':attribute muss entweder \'true\' oder \'false\' sein.',
'confirmed' => ':attribute stimmt nicht mit der Bestätigung überein.',
'current_password' => 'Das Passwort ist falsch.',
'date' => ':attribute muss ein gültiges Datum sein.',
'date_equals' => ':attribute muss ein Datum gleich :date sein.',
'date_format' => ':attribute entspricht nicht dem gültigen Format für :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => ':attribute und :other müssen sich unterscheiden.',
'digits' => ':attribute muss :digits Stellen haben.',
'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.',
'dimensions' => ':attribute hat ungültige Bildabmessungen.',
'distinct' => ':attribute beinhaltet einen bereits vorhandenen Wert.',
'email' => ':attribute muss eine gültige E-Mail-Adresse sein.',
'ends_with' => ':attribute muss eine der folgenden Endungen aufweisen: :values',
'exists' => 'Der gewählte Wert für :attribute ist ungültig.',
'file' => ':attribute muss eine Datei sein.',
'filled' => ':attribute muss ausgefüllt sein.',
'gt' => [
'array' => ':attribute muss mehr als :value Elemente haben.',
'file' => ':attribute muss größer als :value Kilobytes sein.',
'numeric' => ':attribute muss größer als :value sein.',
'string' => ':attribute muss länger als :value Zeichen sein.',
],
'gte' => [
'array' => ':attribute muss mindestens :value Elemente haben.',
'file' => ':attribute muss größer oder gleich :value Kilobytes sein.',
'numeric' => ':attribute muss größer oder gleich :value sein.',
'string' => ':attribute muss mindestens :value Zeichen lang sein.',
],
'image' => ':attribute muss ein Bild sein.',
'in' => 'Der gewählte Wert für :attribute ist ungültig.',
'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.',
'integer' => ':attribute muss eine ganze Zahl sein.',
'ip' => ':attribute muss eine gültige IP-Adresse sein.',
'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.',
'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.',
'json' => ':attribute muss ein gültiger JSON-String sein.',
'lt' => [
'array' => ':attribute muss weniger als :value Elemente haben.',
'file' => ':attribute muss kleiner als :value Kilobytes sein.',
'numeric' => ':attribute muss kleiner als :value sein.',
'string' => ':attribute muss kürzer als :value Zeichen sein.',
],
'lte' => [
'array' => ':attribute darf maximal :value Elemente haben.',
'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.',
'numeric' => ':attribute muss kleiner oder gleich :value sein.',
'string' => ':attribute darf maximal :value Zeichen lang sein.',
],
'max' => [
'array' => ':attribute darf maximal :max Elemente haben.',
'file' => ':attribute darf maximal :max Kilobytes groß sein.',
'numeric' => ':attribute darf maximal :max sein.',
'string' => ':attribute darf maximal :max Zeichen haben.',
],
'mimes' => ':attribute muss den Dateityp :values haben.',
'mimetypes' => ':attribute muss den Dateityp :values haben.',
'min' => [
'array' => ':attribute muss mindestens :min Elemente haben.',
'file' => ':attribute muss mindestens :min Kilobytes groß sein.',
'numeric' => ':attribute muss mindestens :min sein.',
'string' => ':attribute muss mindestens :min Zeichen lang sein.',
],
'multiple_of' => ':attribute muss ein Vielfaches von :value sein.',
'not_in' => 'Der gewählte Wert für :attribute ist ungültig.',
'not_regex' => ':attribute hat ein ungültiges Format.',
'numeric' => ':attribute muss eine Zahl sein.',
'password' => 'Das Passwort ist falsch.',
'present' => ':attribute muss vorhanden sein.',
'prohibited' => ':attribute ist unzulässig.',
'prohibited_if' => ':attribute ist unzulässig, wenn :other :value ist.',
'prohibited_unless' => ':attribute ist unzulässig, wenn :other nicht :values ist.',
'prohibits' => ':attribute verbietet die Angabe von :other.',
'regex' => ':attribute Format ist ungültig.',
'relatable' => ':attribute kann nicht mit dieser Ressource verbunden werden.',
'required' => ':attribute muss ausgefüllt werden.',
'required_if' => ':attribute muss ausgefüllt werden, wenn :other den Wert :value hat.',
'required_unless' => ':attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.',
'required_with' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.',
'required_with_all' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.',
'required_without' => ':attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.',
'required_without_all' => ':attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.',
'same' => ':attribute und :other müssen übereinstimmen.',
'size' => [
'array' => ':attribute muss genau :size Elemente haben.',
'file' => ':attribute muss :size Kilobyte groß sein.',
'numeric' => ':attribute muss gleich :size sein.',
'string' => ':attribute muss :size Zeichen lang sein.',
],
'starts_with' => ':attribute muss mit einem der folgenden Anfänge aufweisen: :values',
'string' => ':attribute muss ein String sein.',
'timezone' => ':attribute muss eine gültige Zeitzone sein.',
'unique' => ':attribute ist bereits vergeben.',
'uploaded' => ':attribute konnte nicht hochgeladen werden.',
'url' => ':attribute muss eine URL sein.',
'uuid' => ':attribute muss ein UUID sein.',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

361
resources/lang/en.json Normal file
View file

@ -0,0 +1,361 @@
{
"Activity Logs": "Activity Logs",
"No recent activity from cronjobs": "No recent activity from cronjobs",
"Check the docs for it here": "Check the docs for it here",
"Are cronjobs running?": "Are cronjobs running?",
"Causer": "Causer",
"Description": "Description",
"Created at": "Created at",
"Edit Configuration": "Edit Configuration",
"Text Field": "Text Field",
"Cancel": "Cancel",
"Close": "Close",
"Save": "Save",
"true": "true",
"false": "false",
"Configurations": "Configurations",
"Dashboard": "Dashboard",
"Key": "Key",
"Value": "Value",
"Type": "Type",
"Admin Overview": "Admin Overview",
"Support server": "Support server",
"Documentation": "Documentation",
"Github": "Github",
"Support ControlPanel": "Support ControlPanel",
"Servers": "Servers",
"Users": "Users",
"Total": "Total",
"Payments": "Payments",
"Pterodactyl": "Pterodactyl",
"Sync": "Sync",
"Resources": "Resources",
"Count": "Count",
"Locations": "Locations",
"Node": "Node",
"Nodes": "Nodes",
"Nests": "Nests",
"Eggs": "Eggs",
"Last updated :date": "Last updated :date",
"ID": "ID",
"User": "User",
"Amount": "Amount",
"Product Price": "Product Price",
"Tax": "Tax",
"Total Price": "Total Price",
"Payment_ID": "Payment_ID",
"Payer_ID": "Payer_ID",
"Product": "Product",
"Products": "Products",
"Create": "Create",
"Product Details": "Product Details",
"Server Details": "Server Details",
"Product Linking": "Product Linking",
"Name": "Name",
"Price in": "Price in",
"Memory": "Memory",
"Cpu": "Cpu",
"Swap": "Swap",
"Disk": "Disk",
"Minimum": "Minimum",
"IO": "IO",
"Databases": "Databases",
"Database": "Database",
"Backups": "Backups",
"Allocations": "Allocations",
"Disabled": "Disabled",
"Submit": "Submit",
"This product will only be available for these nodes": "This product will only be available for these nodes",
"This product will only be available for these eggs": "This product will only be available for these eggs",
"Will hide this option from being selected": "Will hide this option from being selected",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Link your products to nodes and eggs to create dynamic pricing for each option",
"Setting to -1 will use the value from configuration.": "Setting to -1 will use the value from configuration.",
"This is what the users sees": "This is what the users sees",
"Edit": "Edit",
"Price": "Price",
"Are you sure you wish to delete?": "Are you sure you wish to delete?",
"Create new": "Create new",
"Show": "Show",
"Updated at": "Updated at",
"Suspended at": "Suspended at",
"Settings": "Settings",
"Dashboard icons": "Dashboard icons",
"Select panel icon": "Select panel icon",
"Select panel favicon": "Select panel favicon",
"Token": "Token",
"Last used": "Last used",
"Store": "Store",
"Currency code": "Currency code",
"Checkout the paypal docs to select the appropriate code": "Checkout the paypal docs to select the appropriate code",
"Quantity": "Quantity",
"Amount given to the user after purchasing": "Amount given to the user after purchasing",
"Display": "Display",
"This is what the user sees at store and checkout": "This is what the user sees at store and checkout",
"This is what the user sees at checkout": "This is what the user sees at checkout",
"Adds 1000 credits to your account": "Adds 1000 credits to your account",
"Active": "Active",
"Paypal is not configured.": "Paypal is not configured.",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "To configure PayPal, head to the .env and add your PayPals client id and secret.",
"Useful Links": "Useful Links",
"Icon class name": "Icon class name",
"You can find available free icons": "You can find available free icons",
"Title": "Title",
"Link": "Link",
"Username": "Username",
"Email": "Email",
"Pterodactly ID": "Pterodactly ID",
"Server Limit": "Server Limit",
"Role": "Role",
"Administrator": "Administrator",
"Client": "Client",
"Member": "Member",
"New Password": "New Password",
"Confirm Password": "Confirm Password",
"This ID refers to the user account created on pterodactyls panel.": "This ID refers to the user account created on pterodactyls panel.",
"Only edit this if you know what youre doing :)": "Only edit this if you know what youre doing :)",
"Verified": "Verified",
"Last seen": "Last seen",
"Notify": "Notify",
"All": "All",
"Send via": "Send via",
"Content": "Content",
"Notifications": "Notifications",
"Usage": "Usage",
"Config": "Config",
"Vouchers": "Vouchers",
"Voucher details": "Voucher details",
"Memo": "Memo",
"Code": "Code",
"Uses": "Uses",
"Expires at": "Expires at",
"Max": "Max",
"Random": "Random",
"Status": "Status",
"Used / Uses": "Used / Uses",
"Expires": "Expires",
"Please confirm your password before continuing.": "Please confirm your password before continuing.",
"Password": "Password",
"Forgot Your Password?": "Forgot Your Password?",
"Sign in to start your session": "Sign in to start your session",
"Remember Me": "Remember Me",
"Sign In": "Sign In",
"Register a new membership": "Register a new membership",
"You forgot your password? Here you can easily retrieve a new password.": "You forgot your password? Here you can easily retrieve a new password.",
"Request new password": "Request new password",
"Login": "Login",
"You are only one step a way from your new password, recover your password now.":"Du bist nurnoch einen Schritt von deinem Passwort entfernt.",
"Retype password": "Retype password",
"Change password": "Change password",
"I already have a membership": "I already have a membership",
"Register": "Register",
"Verify Your Email Address": "Verify Your Email Address",
"A fresh verification link has been sent to your email address.": "A fresh verification link has been sent to your email address.",
"Before proceeding, please check your email for a verification link.": "Before proceeding, please check your email for a verification link.",
"If you did not receive the email": "If you did not receive the email",
"click here to request another": "click here to request another",
"Home": "Home",
"See all Notifications": "See all Notifications",
"Profile": "Profile",
"Log back in": "Log back in",
"Logout": "Logout",
"Administration": "Administration",
"Overview": "Overview",
"Application API": "Application API",
"Management": "Management",
"Other": "Other",
"Logs": "Logs",
"Redeem code": "Redeem code",
"You have not yet verified your email address": "You have not yet verified your email address",
"Click here to resend verification email": "Click here to resend verification email",
"Please contact support If you didnt receive your verification email.": "Please contact support If you didnt receive your verification email.",
"Thank you for your purchase!": "Thank you for your purchase!",
"Your payment has been confirmed; Your credit balance has been updated.": "Your payment has been confirmed; Your credit balance has been updated.",
"Payment ID": "Payment ID",
"Balance": "Balance",
"User ID": "User ID",
"Thanks": "Thanks",
"Redeem voucher code": "Redeem voucher code",
"Redeem": "Redeem",
"All notifications": "All notifications",
"Required Email verification!": "Required Email verification!",
"Required Discord verification!": "Required Discord verification!",
"You have not yet verified your discord account": "You have not yet verified your discord account",
"Login with discord": "Login with discord",
"Please contact support If you face any issues.": "Please contact support If you face any issues.",
"Due to system settings you are required to verify your discord account!": "Due to system settings you are required to verify your discord account!",
"It looks like this hasnt been set-up correctly! Please contact support.": "It looks like this hasnt been set-up correctly! Please contact support.",
"Change Password": "Change Password",
"Current Password": "Current Password",
"Save Changes": "Save Changes",
"Re-Sync Discord": "Re-Sync Discord",
"You are verified!": "You are verified!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "By verifying your discord account, you receive extra Credits and increased Server amounts",
"Server configuration": "Server configuration",
"Error!": "Error!",
"Make sure to link your products to nodes and eggs.": "Make sure to link your products to nodes and eggs.",
"There has to be at least 1 valid product for server creation": "There has to be at least 1 valid product for server creation",
"No products available!": "No products available!",
"No nodes have been linked!": "No nodes have been linked!",
"No nests available!": "No nests available!",
"No eggs have been linked!": "No eggs have been linked!",
"Software / Games": "Software / Games",
"Please select software ...": "Please select software ...",
"Specification": "Specification",
"No selection": "No selection",
"per month": "per month",
"Not enough credits!": "Not enough credits!",
"Please select a configuration ...": "Please select a configuration ...",
"No resources found matching current configuration": "No resources found matching current configuration",
"No nodes found matching current configuration": "No nodes found matching current configuration",
"Please select a node ...": "Please select a node ...",
"Create server": "Create server",
"Use your servers on our": "Use your servers on our",
"pterodactyl panel": "pterodactyl panel",
"Server limit reached!": "Server limit reached!",
"Create Server": "Create Server",
"Manage": "Manage",
"Delete server": "Delete server",
"Price per Hour": "Price per Hour",
"Price per Month": "Price per Month",
"Date": "Date",
"To": "To",
"From": "From",
"Pending": "Pending",
"Subtotal": "Subtotal",
"Submit Payment": "Submit Payment",
"Payment Methods": "Payment Methods",
"By purchasing this product you agree and accept our terms of service": "By purchasing this product you agree and accept our terms of service",
"There are no store products!": "There are no store products!",
"The store is not correctly configured!": "The store is not correctly configured!",
"Out of Credits in": "Out of Credits in",
"days": "days",
"hours": "hours",
"You ran out of Credits": "You ran out of Credits",
"Profile updated": "Profile updated",
"You are required to verify your email address before you can create a server.": "You are required to verify your email address before you can create a server.",
"You are required to link your discord account before you can create a server.": "You are required to link your discord account before you can create a server.",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "No allocations satisfying the requirements for automatic deployment on this node were found.",
"Server removed": "Server removed",
"Server created": "Server created",
"An exception has occurred while trying to remove a resource \"": "An exception has occurred while trying to remove a resource \"",
"You are required to verify your email address before you can purchase credits.": "You are required to verify your email address before you can purchase credits.",
"You are required to link your discord account before you can purchase ": "You are required to link your discord account before you can purchase ",
"Warning!": "Warning!",
"api key created!": "api key created!",
"api key updated!": "api key updated!",
"api key has been removed!": "api key has been removed!",
"configuration has been updated!": "configuration has been updated!",
"Pterodactyl synced": "Pterodactyl synced",
"Your credit balance has been increased!": "Your credit balance has been increased!",
"Payment was Canceled": "Payment was Canceled",
"Store item has been created!": "Store item has been created!",
"Store item has been updated!": "Store item has been updated!",
"Product has been updated!": "Product has been updated!",
"Store item has been removed!": "Store item has been removed!",
"Product has been created!": "Product has been created!",
"Product has been removed!": "Product has been removed!",
"Server has been updated!": "Server has been updated!",
"Icons updated!": "Icons updated!",
"link has been created!": "link has been created!",
"link has been updated!": "link has been updated!",
"user has been removed!": "user has been removed!",
"Notification sent!": "Notification sent!",
"User has been updated!": "User has been updated!",
"User does not exists on pterodactyl's panel": "User does not exists on pterodactyl's panel",
"voucher has been created!": "voucher has been created!",
"voucher has been updated!": "voucher has been updated!",
"voucher has been removed!": "voucher has been removed!",
"This voucher has reached the maximum amount of uses": "This voucher has reached the maximum amount of uses",
"This voucher has expired": "This voucher has expired",
"You already redeemed this voucher code": "You already redeemed this voucher code",
"You can't redeem this voucher because you would exceed the limit of ": "You can't redeem this voucher because you would exceed the limit of ",
"have been added to your balance!": "have been added to your balance!",
"Invoice": "Invoice",
"Serial No.": "Serial No.",
"Invoice date": "Invoice date",
"Seller": "Seller",
"Buyer": "Buyer",
"Address": "Address",
"VAT code": "VAT code",
"Phone": "Phone",
"Units": "Units",
"Qty": "Qty",
"Discount": "Discount",
"Sub total": "Sub total",
"Total discount": "Total discount",
"Taxable amount": "Taxable amount",
"Total taxes": "Total taxes",
"Tax rate": "Tax rate",
"Total amount": "Total amount",
"Please pay until": "Please pay until",
"Amount in words": "Amount in words",
"Notes": "Notes",
"Shipping": "Shipping",
"Paid": "Paid",
"Due:": "Due:",
"Invoice Settings": "Invoice Settings",
"Download all Invoices": "Download all Invoices",
"Enter your companys name": "Enter your companys name",
"Enter your companys adress": "Enter your companys adress",
"Enter your companys phone number": "Enter your companys phone number",
"Enter your companys VAT id": "Enter your companys VAT id",
"Enter your companys email adress": "Enter your companys email adress",
"Enter your companys website": "Enter your companys website",
"Enter your custom invoice prefix": "Enter your custom invoice prefix",
"Select Invoice Logo": "Select Invoice Logo",
"Payment Confirmation": "Payment Confirmation",
"Payment Confirmed!": "Payment Confirmed!",
"Server Creation Error": "Server Creation Error",
"Your servers have been suspended!": "Your servers have been suspended!",
"To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.",
"Purchase credits": "Purchase credits",
"If you have any questions please let us know.": "If you have any questions please let us know.",
"Regards": "Regards",
"Getting started!": "Getting started!",
"EXPIRED": "EXPIRED",
"VALID": "VALID",
"Unsuspend": "Unsuspend",
"Suspend": "Suspend",
"Delete": "Delete",
"Login as User": "Login as User",
"Clone": "Clone"
}

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Activity Logs</h1>
<h1>{{ __('Activity Logs')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.activitylogs.index')}}">Activity Logs</a>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.activitylogs.index')}}">{{ __('Activity Logs')}}</a>
</li>
</ol>
</div>
@ -32,8 +32,8 @@
</div>
@else
<div class="callout callout-danger">
<h4>No recent activity from cronjobs</h4>
<p>Are cronjobs running? <a class="text-primary" target="_blank" href="https://github.com/ControlPanel-gg/dashboard/wiki/Installation#crontab-configuration">Check the docs for it here</a></p>
<h4>{{ __('No recent activity from cronjobs')}}</h4>
<p>{{ __('Are cronjobs running?')}} <a class="text-primary" target="_blank" href="https://github.com/ControlPanel-gg/dashboard/wiki/Installation#crontab-configuration">{{ __('Check the docs for it here')}}</a></p>
</div>
@endif
@ -42,7 +42,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-history mr-2"></i>Activity Logs</h5>
<h5 class="card-title"><i class="fas fa-history mr-2"></i>{{ __('Activity Logs')}}</h5>
</div>
<div class="card-body table-responsive">
@ -63,16 +63,16 @@
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Causer</th>
<th>Description</th>
<th>Created At</th>
<th>{{ __('Causer') }}</th>
<th>{{ __('Description') }}</th>
<th>{{ __('Created at') }}</th>
</tr>
</thead>
<tbody>
@foreach($logs as $log)
<tr>
<td> @if($log->causer) <a href='/admin/users/{{$log->causer_id}}'> {{json_decode($log->causer)->name}}
@else
<td> @if($log->causer) <a href='/admin/users/{{$log->causer_id}}'> {{json_decode($log->causer)->name}}
@else
System
@endif</td>
<td>

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">{{__('Application API')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.api.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -33,7 +35,7 @@
@csrf
<div class="form-group">
<label for="memo">Memo</label>
<label for="memo">{{__('Memo')}}</label>
<input value="{{old('memo')}}" id="memo" name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
@ -45,7 +47,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.edit' , $applicationApi->token)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">{{__('Application API')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.api.edit' , $applicationApi->token)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,7 +36,7 @@
@method('PATCH')
<div class="form-group">
<label for="memo">Memo</label>
<label for="memo">{{__('Memo')}}</label>
<input value="{{$applicationApi->memo}}" id="memo" name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
@ -46,7 +48,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.index')}}">{{__('Application API')}}</a></li>
</ol>
</div>
</div>
@ -27,9 +27,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fa fa-gamepad mr-2"></i>Application API</h5>
<h5 class="card-title"><i class="fa fa-gamepad mr-2"></i>{{__('Application API')}}</h5>
<a href="{{route('admin.api.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -38,9 +38,9 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Token</th>
<th>Memo</th>
<th>Last used</th>
<th>{{__('Token')}}</th>
<th>{{__('Memo')}}</th>
<th>{{__('Last used')}}</th>
<th></th>
</tr>
</thead>
@ -59,11 +59,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -8,14 +8,14 @@
@method('PATCH')
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Edit Configuration</h4>
<h4 class="modal-title">{{__('Edit Configuration')}}</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<div class="form-group">
<label id="keyLabel" for="value">Text Field</label>
<label id="keyLabel" for="value">{{__('Text Field')}}</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
@ -32,8 +32,8 @@
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">{{__('Cancel')}}</button>
<button type="submit" class="btn btn-primary">{{__('Save')}}</button>
</div>
</form>
</div>

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Configurations</h1>
<h1>{{__('Configurations')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}"{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.configurations.index')}}">Configurations</a></li>
href="{{route('admin.configurations.index')}}">{{__('Configurations')}}</a></li>
</ol>
</div>
</div>
@ -28,7 +28,7 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-cog mr-2"></i>Configurations</h5>
<h5 class="card-title"><i class="fas fa-cog mr-2"></i>{{__('Configurations')}}</h5>
</div>
</div>
@ -37,11 +37,11 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Key</th>
<th>Value</th>
<th>Type</th>
<th width="600">Description</th>
<th>Created at</th>
<th>{{__('Key')}}</th>
<th>{{__('Value')}}</th>
<th>{{__('Type')}}</th>
<th width="600">{{__('Description')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -64,6 +64,9 @@
<script>
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -1,3 +1,8 @@
<!--
THIS FILE IS DEPRECATED
-->
@extends('layouts.main')
@section('content')
@ -69,6 +74,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -1,3 +1,8 @@
<!--
THIS FILE IS DEPRECATED
-->
@extends('layouts.main')
@section('content')
@ -69,6 +74,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Admin Overview</h1>
<h1>{{__('Admin Overview')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.overview.index')}}">Admin Overview</a></li>
href="{{route('admin.overview.index')}}">{{__('Admin Overview')}}</a></li>
</ol>
</div>
</div>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Payments</h1>
<h1>{{__('Payments')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.payments.index')}}">Payments</a>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.payments.index')}}">{{__('Payments')}}</a>
</li>
</ol>
</div>
@ -26,24 +26,24 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-money-bill-wave mr-2"></i>Payments</h5>
<h5 class="card-title"><i class="fas fa-money-bill-wave mr-2"></i>{{__('Payments')}}</h5>
</div>
<div class="card-body table-responsive">
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>User</th>
<th>Type</th>
<th>Amount</th>
<th>Product Price</th>
<th>Tax</th>
<th>Tax(%)</th>
<th>Total Price</th>
<th>Payment_ID</th>
<th>Payer_ID</th>
<th>Created at</th>
<th>{{__('ID')}}</th>
<th>{{__('User')}}</th>
<th>{{__('Type')}}</th>
<th>{{__('Amount')}}</th>
<th>{{__('Product Price')}}</th>
<th>{{__('Tax')}}</th>
<th>{{__('Tax')}}(%)</th>
<th>{{__('Total Price')}}</th>
<th>{{__('Payment_ID')}}</th>
<th>{{__('Payer_ID')}}</th>
<th>{{__('Created at')}}</th>
</tr>
</thead>
<tbody>
@ -61,6 +61,9 @@
<script>
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,14 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.products.index') }}">Products</a></li>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.products.index') }}">{{__('Products')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('admin.products.create') }}">Create</a>
href="{{ route('admin.products.create') }}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -31,7 +32,7 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Details</h5>
<h5 class="card-title">{{__('Product Details')}}</h5>
</div>
<div class="card-body">
@ -39,9 +40,9 @@
<div class="custom-control custom-switch">
<input type="checkbox" name="disabled"
class="custom-control-input custom-control-input-danger" id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover" data-trigger="hover"
data-content="Will hide this option from being selected"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
@ -49,7 +50,7 @@
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label for="name">Name</label>
<label for="name">{{__('Name')}}</label>
<input value="{{$product->name ?? old('name')}}" id="name" name="name"
type="text"
class="form-control @error('name') is-invalid @enderror"
@ -62,7 +63,7 @@
</div>
<div class="form-group">
<label for="price">Price in credits</label>
<label for="price">{{__('Price in')}}{{CREDITS_DISPLAY_NAME}}</label>
<input value="{{$product->price ?? old('price')}}" id="price" name="price"
type="number"
class="form-control @error('price') is-invalid @enderror"
@ -76,7 +77,7 @@
<div class="form-group">
<label for="memory">Memory</label>
<label for="memory">{{__('Memory')}}</label>
<input value="{{$product->memory ?? old('memory')}}" id="memory"
name="memory"
type="number"
@ -90,7 +91,7 @@
</div>
<div class="form-group">
<label for="cpu">Cpu</label>
<label for="cpu">{{__('Cpu')}}</label>
<input value="{{$product->cpu ?? old('cpu')}}" id="cpu" name="cpu"
type="number"
class="form-control @error('cpu') is-invalid @enderror"
@ -103,7 +104,7 @@
</div>
<div class="form-group">
<label for="swap">Swap</label>
<label for="swap">{{__('Swap')}}</label>
<input value="{{$product->swap ?? old('swap')}}" id="swap" name="swap"
type="number"
class="form-control @error('swap') is-invalid @enderror"
@ -116,10 +117,10 @@
</div>
<div class="form-group">
<label for="description">Description <i data-toggle="popover"
data-trigger="hover"
data-content="This is what the users sees"
class="fas fa-info-circle"></i></label>
<label for="description">{{__('Description')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('This is what the users sees')}}"
class="fas fa-info-circle"></i></label>
<textarea id="description" name="description"
type="text"
class="form-control @error('description') is-invalid @enderror"
@ -134,7 +135,7 @@
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="disk">Disk</label>
<label for="disk">{{__('Disk')}}</label>
<input value="{{$product->disk ?? old('disk') ?? 1000}}" id="disk"
name="disk"
type="number"
@ -148,14 +149,16 @@
</div>
<div class="form-group">
<label for="minimum_credits">Minimum {{ CREDITS_DISPLAY_NAME }} <i
<label for="minimum_credits">{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }} <i
data-toggle="popover" data-trigger="hover"
data-content="Setting to -1 will use the value from configuration."
data-content="{{__('Setting to -1 will use the value from configuration.')}}"
class="fas fa-info-circle"></i></label>
<input value="{{ $product->minimum_credits ?? old('minimum_credits') ?? -1 }}" id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
<input
value="{{ $product->minimum_credits ?? old('minimum_credits') ?? -1 }}"
id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
@error('minimum_credits')
<div class="invalid-feedback">
{{ $message }}
@ -164,7 +167,7 @@
</div>
<div class="form-group">
<label for="io">IO</label>
<label for="io">{{__('IO')}}</label>
<input value="{{$product->io ?? old('io') ?? 500}}" id="io" name="io"
type="number"
class="form-control @error('io') is-invalid @enderror"
@ -176,7 +179,7 @@
@enderror
</div>
<div class="form-group">
<label for="databases">Databases</label>
<label for="databases">{{__('Databases')}}</label>
<input value="{{$product->databases ?? old('databases') ?? 1}}"
id="databases"
name="databases"
@ -190,7 +193,7 @@
@enderror
</div>
<div class="form-group">
<label for="backups">Backups</label>
<label for="backups">{{__('Backups')}}</label>
<input value="{{$product->backups ?? old('backups') ?? 1}}" id="backups"
name="backups"
type="number"
@ -203,7 +206,7 @@
@enderror
</div>
<div class="form-group">
<label for="allocations">Allocations</label>
<label for="allocations">{{__('Allocations')}}</label>
<input value="{{$product->allocations ?? old('allocations') ?? 0}}"
id="allocations" name="allocations"
type="number"
@ -220,7 +223,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
@ -231,16 +234,16 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Linking
<h5 class="card-title">{{__('Product Linking')}}
<i data-toggle="popover"
data-trigger="hover"
data-content="Link your products to nodes and eggs to create dynamic pricing for each option"
data-content="{{__('Link your products to nodes and eggs to create dynamic pricing for each option')}}"
class="fas fa-info-circle"></i></h5>
</div>
<div class="card-body">
<div class="form-group">
<label for="nodes">Nodes</label>
<label for="nodes">{{__('Nodes')}}</label>
<select id="nodes" style="width:100%"
class="custom-select @error('nodes') is-invalid @enderror"
name="nodes[]" multiple="multiple" autocomplete="off">
@ -260,13 +263,13 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these nodes
{{__('This product will only be available for these nodes')}}
</div>
</div>
<div class="form-group">
<label for="eggs">Eggs</label>
<label for="eggs">{{__('Eggs')}}</label>
<select id="eggs" style="width:100%"
class="custom-select @error('eggs') is-invalid @enderror"
name="eggs[]" multiple="multiple" autocomplete="off">
@ -286,7 +289,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these eggs
{{__('This product will only be available for these eggs')}}
</div>
</div>

View file

@ -6,14 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.products.index')}}">Products</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.products.index')}}">{{__('Products')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.edit' , $product->id)}}">Edit</a>
href="{{route('admin.products.edit' , $product->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,16 +35,16 @@
@if($product->servers()->count() > 0)
<div class="callout callout-danger">
<h4>Editing the resource options will not automatically update the servers on
pterodactyl's side!</h4>
<p class="text-muted">Automatically updating resource options on pterodactyl side is on
my todo list :)</p>
<h4>{{__('Editing the resource options will not automatically update the servers on
pterodactyls side!')}}'</h4>
<p class="text-muted">{{__('Automatically updating resource options on pterodactyl side is on
my todo list :)')}}</p>
</div>
@endif
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Details</h5>
<h5 class="card-title">{{__('Product Details')}}</h5>
</div>
<div class="card-body">
@ -51,9 +52,9 @@
<div class="custom-control custom-switch">
<input type="checkbox" @if($product->disabled) checked @endif name="disabled"
class="custom-control-input custom-control-input-danger" id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover" data-trigger="hover"
data-content="Will hide this option from being selected"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
@ -62,150 +63,155 @@
<div class="col-lg-6">
<div class="form-group">
<label for="name">Name</label>
<label for="name">{{__('Name')}}</label>
<input value="{{ $product->name }}" id="name" name="name" type="text"
class="form-control @error('name') is-invalid @enderror"
required="required">
class="form-control @error('name') is-invalid @enderror"
required="required">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="price">Price in {{ CREDITS_DISPLAY_NAME }}</label>
<label for="price">{{__('Price in')}} {{ CREDITS_DISPLAY_NAME }}</label>
<input value="{{ $product->price }}" id="price" name="price" type="number"
class="form-control @error('price') is-invalid @enderror"
required="required">
class="form-control @error('price') is-invalid @enderror"
required="required">
@error('price')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="memory">Memory</label>
<input value="{{ $product->memory }}" id="memory" name="memory" type="number"
class="form-control @error('memory') is-invalid @enderror"
required="required">
<label for="memory">{{__('Memory')}}</label>
<input value="{{ $product->memory }}" id="memory" name="memory"
type="number"
class="form-control @error('memory') is-invalid @enderror"
required="required">
@error('memory')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="cpu">Cpu</label>
<label for="cpu">{{__('Cpu')}}</label>
<input value="{{ $product->cpu }}" id="cpu" name="cpu" type="number"
class="form-control @error('cpu') is-invalid @enderror" required="required">
class="form-control @error('cpu') is-invalid @enderror"
required="required">
@error('cpu')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="swap">Swap</label>
<label for="swap">{{__('Swap')}}</label>
<input value="{{ $product->swap }}" id="swap" name="swap" type="number"
class="form-control @error('swap') is-invalid @enderror"
required="required">
class="form-control @error('swap') is-invalid @enderror"
required="required">
@error('swap')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="description">Description <i data-toggle="popover"
data-trigger="hover"
data-content="This is what the users sees"
class="fas fa-info-circle"></i></label>
<label for="description">{{__('Description')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('This is what the users sees')}}"
class="fas fa-info-circle"></i></label>
<textarea id="description" name="description"
type="text"
class="form-control @error('description') is-invalid @enderror"
required="required">{{$product->description}}</textarea>
@error('description')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="disk">Disk</label>
<label for="disk">{{__('Disk')}}</label>
<input value="{{ $product->disk }}" id="disk" name="disk" type="number"
class="form-control @error('disk') is-invalid @enderror"
required="required">
class="form-control @error('disk') is-invalid @enderror"
required="required">
@error('disk')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="minimum_credits">Minimum {{ CREDITS_DISPLAY_NAME }} <i
<label for="minimum_credits">{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }} <i
data-toggle="popover" data-trigger="hover"
data-content="Setting to -1 will use the value from configuration."
data-content="{{__('Setting to -1 will use the value from configuration.')}}"
class="fas fa-info-circle"></i></label>
<input value="{{ $product->minimum_credits }}" id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
@error('minimum_credits')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="io">IO</label>
<label for="io">{{__('IO')}}</label>
<input value="{{ $product->io }}" id="io" name="io" type="number"
class="form-control @error('io') is-invalid @enderror" required="required">
class="form-control @error('io') is-invalid @enderror"
required="required">
@error('io')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="databases">Databases</label>
<label for="databases">{{__('Databases')}}</label>
<input value="{{ $product->databases }}" id="databases" name="databases"
type="number" class="form-control @error('databases') is-invalid @enderror"
required="required">
type="number"
class="form-control @error('databases') is-invalid @enderror"
required="required">
@error('databases')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="backups">Backups</label>
<label for="backups">{{__('Backups')}}</label>
<input value="{{ $product->backups }}" id="backups" name="backups"
type="number" class="form-control @error('backups') is-invalid @enderror"
required="required">
type="number"
class="form-control @error('backups') is-invalid @enderror"
required="required">
@error('backups')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="allocations">Allocations</label>
<label for="allocations">{{__('Allocations')}}</label>
<input value="{{ $product->allocations }}" id="allocations"
name="allocations" type="number"
class="form-control @error('allocations') is-invalid @enderror"
required="required">
name="allocations" type="number"
class="form-control @error('allocations') is-invalid @enderror"
required="required">
@error('allocations')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
@ -213,7 +219,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
@ -224,16 +230,16 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Linking
<h5 class="card-title">{{__('Product Linking')}}
<i data-toggle="popover"
data-trigger="hover"
data-content="Link your products to nodes and eggs to create dynamic pricing for each option"
data-content="{{__('Link your products to nodes and eggs to create dynamic pricing for each option')}}"
class="fas fa-info-circle"></i></h5>
</div>
<div class="card-body">
<div class="form-group">
<label for="nodes">Nodes</label>
<label for="nodes">{{__('Nodes')}}</label>
<select id="nodes" style="width:100%"
class="custom-select @error('nodes') is-invalid @enderror" name="nodes[]"
multiple="multiple" autocomplete="off">
@ -252,7 +258,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these nodes
{{__('This product will only be available for these nodes')}}
</div>
</div>
@ -276,7 +282,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these eggs
{{__('This product will only be available for these eggs')}}
</div>
</div>
@ -296,7 +302,7 @@
})
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('DOMContentLoaded', function () {
$('[data-toggle="popover"]').popover();
});
</script>

View file

@ -6,12 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{ route('admin.products.index') }}">Products</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.index')}}">{{__('Products')}}</a>
</li>
</ol>
</div>
</div>
@ -27,8 +29,10 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Products</h5>
<a href="{{ route('admin.products.create') }}" class="btn btn-sm btn-primary"><i class="fas fa-plus mr-1"></i>Create new</a>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Products')}}</h5>
<a href="{{route('admin.products.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -37,19 +41,19 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Active</th>
<th>Name</th>
<th>Price</th>
<th>Memory</th>
<th>Cpu</th>
<th>Swap</th>
<th>Disk</th>
<th>Databases</th>
<th>Backups</th>
<th>Nodes</th>
<th>Eggs</th>
<th>Servers</th>
<th>Created at</th>
<th>{{__('Active')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Price')}}</th>
<th>{{__('Memory')}}</th>
<th>{{__('Cpu')}}</th>
<th>{{__('Swap')}}</th>
<th>{{__('Disk')}}</th>
<th>{{__('Databases')}}</th>
<th>{{__('Backups')}}</th>
<th>{{__('Nodes')}}</th>
<th>{{__('Eggs')}}</th>
<th>{{__('Servers')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -68,16 +72,19 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$("#datatable").DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,
order: [
[ 2, "asc" ]
[2, "asc"]
],
ajax: "{{ route('admin.products.datatable') }}",
columns: [

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">Products</a></li>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">{{__('Products')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('admin.products.show', $product->id) }}">Show</a>
href="{{ route('admin.products.show', $product->id) }}">{{__('Show')}}</a>
</li>
</ol>
</div>
@ -28,7 +28,7 @@
<div class="card">
<div class="card-header d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Product</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Product')}}</h5>
<div class="ml-auto">
<a data-content="Edit" data-trigger="hover" data-toggle="tooltip"
href="{{ route('admin.products.edit', $product->id) }}" class="btn btn-sm btn-info mr-1"><i
@ -48,7 +48,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>ID</label>
<label>{{__('ID')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -61,7 +61,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Name</label>
<label>{{__('Name')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -74,7 +74,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Price</label>
<label>{{__('Price')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -87,7 +87,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Minimum {{ CREDITS_DISPLAY_NAME }}</label>
<label>{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -105,7 +105,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Memory</label>
<label>{{__('Memory')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -118,7 +118,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>CPU</label>
<label>{{__('CPU')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -131,7 +131,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Swap</label>
<label>{{__('Swap')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -144,7 +144,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Disk</label>
<label>{{__('Disk')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -157,7 +157,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>IO</label>
<label>{{__('IO')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -170,7 +170,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Databases</label>
<label>{{__('Databases')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -183,7 +183,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Allocations</label>
<label>{{__('Allocations')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -196,7 +196,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Created At</label>
<label>{{__('Created at')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -210,7 +210,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Description</label>
<label>{{__('Description')}}</label>
</div>
<div class="col-lg-8">
<span class="d-inline-block text-truncate">
@ -224,7 +224,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Updated At</label>
<label>{{__('Updated at')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -240,7 +240,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-server mr-2"></i>Servers</h5>
<h5 class="card-title"><i class="fas fa-server mr-2"></i>{{__('Servers')}}</h5>
</div>
<div class="card-body table-responsive">

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Servers</h1>
<h1>{{__('Servers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.servers.index')}}">Servers</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.servers.index')}}">{{__('Servers')}}</a></li>
</ol>
</div>
</div>
@ -25,7 +25,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-server mr-2"></i>Servers</h5>
<h5 class="card-title"><i class="fas fa-server mr-2"></i>{{__('Servers')}}</h5>
</div>
<div class="card-body table-responsive">

View file

@ -2,11 +2,11 @@
<thead>
<tr>
<th width="20"></th>
<th>Name</th>
<th>User</th>
<th>Config</th>
<th>Suspended At</th>
<th>Created At</th>
<th>{{__('Name')}}</th>
<th>{{__('User')}}</th>
<th>{{__('Config')}}</th>
<th>{{__('Suspended at')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -16,11 +16,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Settings</h1>
<h1>{{__('Settings')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.settings.index')}}">Settings</a></li>
href="{{route('admin.settings.index')}}">{{__('Settings')}}</a></li>
</ol>
</div>
</div>
@ -28,7 +28,7 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-tools mr-2"></i>Settings</h5>
<h5 class="card-title"><i class="fas fa-tools mr-2"></i>{{__('Settings')}}</h5>
</div>
</div>
@ -37,7 +37,7 @@
<!-- Nav pills -->
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#dashboard-icons">Dashboard icons</a>
<a class="nav-link active" data-toggle="pill" href="#dashboard-icons">{{__('Dashboard icons')}}</a>
</li>
</ul>
@ -81,7 +81,7 @@
</div>
</div>
<button class="btn btn-primary">Submit</button>
<button class="btn btn-primary">{{__('Submit')}}</button>
</form>
<p class="text-muted">Images and Icons may be cached, use <code>CNTRL + F5</code><sup>(google

View file

@ -6,13 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.store.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -33,19 +34,22 @@
@csrf
<div class="d-flex flex-row-reverse">
<div class="custom-control custom-switch">
<input type="checkbox" name="disabled" class="custom-control-input custom-control-input-danger"
<input type="checkbox" name="disabled"
class="custom-control-input custom-control-input-danger"
id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i data-toggle="popover"
data-trigger="hover"
data-content="Will hide this option from being selected"
class="fas fa-info-circle"></i></label>
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
<div class="form-group">
<label for="type">Type</label>
<select required name="type" id="type" class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">Credits</option>
<label for="type">{{__('Type')}}</label>
<select required name="type" id="type"
class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">{{CREDITS_DISPLAY_NAME}}</option>
</select>
@error('name')
<div class="text-danger">
@ -55,10 +59,12 @@
</div>
<div class="form-group">
<label for="currency_code">Currency code</label>
<select required name="currency_code" id="currency_code" class="custom-select @error('name') is-invalid @enderror">
<label for="currency_code">{{__('Currency code')}}</label>
<select required name="currency_code" id="currency_code"
class="custom-select @error('name') is-invalid @enderror">
@foreach($currencyCodes as $code)
<option @if($code == 'EUR') selected @endif value="{{$code}}">{{$code}}</option>
<option @if($code == 'EUR') selected
@endif value="{{$code}}">{{$code}}</option>
@endforeach
</select>
@error('currency_code')
@ -67,12 +73,14 @@
</div>
@enderror
<div class="text-muted">
Checkout the paypal docs to select the appropriate code <a target="_blank" href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
{{__('Checkout the paypal docs to select the appropriate code')}} <a
target="_blank"
href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
</div>
</div>
<div class="form-group">
<label for="price">Price</label>
<label for="price">{{__('Price')}}</label>
<input value="{{old('price')}}" id="price" name="price"
type="number"
placeholder="10.00"
@ -87,7 +95,7 @@
</div>
<div class="form-group">
<label for="quantity">Quantity</label>
<label for="quantity">{{__('Quantity')}}</label>
<input value="{{old('quantity')}}" id="quantity" name="quantity"
type="number"
placeholder="1000"
@ -99,12 +107,12 @@
</div>
@enderror
<div class="text-muted">
Amount given to the user after purchasing
{{__('Amount given to the user after purchasing')}}
</div>
</div>
<div class="form-group">
<label for="display">Display</label>
<label for="display">{{__('Display')}}</label>
<input value="{{old('display')}}" id="display" name="display"
type="text"
placeholder="750 + 250"
@ -116,15 +124,15 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at store and checkout
{{__('This is what the user sees at store and checkout')}}
</div>
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<input value="{{old('description')}}" id="description" name="description"
type="text"
placeholder="Adds 1000 credits to your account"
placeholder="{{__('Adds 1000 credits to your account')}}"
class="form-control @error('description') is-invalid @enderror"
required="required">
@error('description')
@ -133,15 +141,14 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at checkout
{{__('This is what the user sees at checkout')}}
</div>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.store.edit' , $paypalProduct->id)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.edit' , $paypalProduct->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,19 +35,23 @@
@method('PATCH')
<div class="d-flex flex-row-reverse">
<div class="custom-control custom-switch">
<input type="checkbox" @if($paypalProduct->disabled) checked @endif name="disabled" class="custom-control-input custom-control-input-danger"
<input type="checkbox" @if($paypalProduct->disabled) checked
@endif name="disabled"
class="custom-control-input custom-control-input-danger"
id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i data-toggle="popover"
data-trigger="hover"
data-content="Will hide this option from being selected"
class="fas fa-info-circle"></i></label>
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
<div class="form-group">
<label for="type">Type</label>
<select required name="type" id="type" class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">Credits</option>
<label for="type">{{__('Type')}}</label>
<select required name="type" id="type"
class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">{{CREDITS_DISPLAY_NAME}}</option>
</select>
@error('name')
<div class="text-danger">
@ -56,10 +61,12 @@
</div>
<div class="form-group">
<label for="currency_code">Currency code</label>
<select required name="currency_code" id="currency_code" class="custom-select @error('name') is-invalid @enderror">
<label for="currency_code">{{__('Currency code')}}</label>
<select required name="currency_code" id="currency_code"
class="custom-select @error('name') is-invalid @enderror">
@foreach($currencyCodes as $code)
<option @if($paypalProduct->currency_code == $code) selected @endif value="{{$code}}">{{$code}}</option>
<option @if($paypalProduct->currency_code == $code) selected
@endif value="{{$code}}">{{$code}}</option>
@endforeach
</select>
@error('currency_code')
@ -68,12 +75,14 @@
</div>
@enderror
<div class="text-muted">
Checkout the paypal docs to select the appropriate code <a target="_blank" href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
{{__('Checkout the paypal docs to select the appropriate code')}} <a
target="_blank"
href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
</div>
</div>
<div class="form-group">
<label for="price">Price</label>
<label for="price">{{__('Price')}}</label>
<input value="{{$paypalProduct->price}}" id="price" name="price"
type="number"
placeholder="10.00"
@ -88,7 +97,7 @@
</div>
<div class="form-group">
<label for="quantity">Quantity</label>
<label for="quantity">{{__('Quantity')}}</label>
<input value="{{$paypalProduct->quantity}}" id="quantity" name="quantity"
type="number"
placeholder="1000"
@ -100,12 +109,12 @@
</div>
@enderror
<div class="text-muted">
Amount given to the user after purchasing
{{__('Amount given to the user after purchasing')}}
</div>
</div>
<div class="form-group">
<label for="display">Display</label>
<label for="display">{{__('Display')}}</label>
<input value="{{$paypalProduct->display}}" id="display" name="display"
type="text"
placeholder="750 + 250"
@ -117,15 +126,15 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at store and checkout
{{__('This is what the user sees at store and checkout')}}
</div>
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<input value="{{$paypalProduct->description}}" id="description" name="description"
type="text"
placeholder="Adds 1000 credits to your account"
placeholder="{{__('Adds 1000 credits to your account')}}"
class="form-control @error('description') is-invalid @enderror"
required="required">
@error('description')
@ -134,15 +143,14 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at checkout
{{__('This is what the user sees at checkout')}}
</div>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.index')}}">Store</a></li>
href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
</ol>
</div>
</div>
@ -28,8 +28,8 @@
<div class="col-lg-4">
@if($isPaypalSetup == false)
<div class="callout callout-danger">
<h4>Paypal is not configured.</h4>
<p>To configure PayPal, head to the .env and add your PayPals client id and secret.</p>
<h4>{{__('Paypal is not configured.')}}</h4>
<p>{{__('To configure PayPal, head to the .env and add your PayPals client id and secret.')}}</p>
</div>
@endif
</div>
@ -39,9 +39,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Store</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Store')}}</h5>
<a href="{{route('admin.store.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -50,12 +50,12 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Active</th>
<th>Type</th>
<th>Price</th>
<th>Display</th>
<th>Description</th>
<th>Created at</th>
<th>{{__('Active')}}</th>
<th>{{__('Type')}}</th>
<th>{{__('Price')}}</th>
<th>{{__('Display')}}</th>
<th>{{__('Description')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -80,6 +80,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -34,15 +36,15 @@
<div class="form-group">
<label for="icon">Icon class name</label>
<label for="icon">{{__('Icon class name')}}</label>
<input value="{{old('icon')}}" id="icon" name="icon"
type="text"
placeholder="fas fa-user"
class="form-control @error('icon') is-invalid @enderror"
required="required">
<div class="text-muted">
You can find available free icons <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
{{__('You can find available free icons')}} <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
</div>
@error('icon')
<div class="invalid-feedback">
@ -52,7 +54,7 @@
</div>
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{__('Title')}}</label>
<input value="{{old('title')}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror"
@ -65,7 +67,7 @@
</div>
<div class="form-group">
<label for="link">Link</label>
<label for="link">{{__('Link')}}</label>
<input value="{{old('link')}}" id="link" name="link"
type="text"
class="form-control @error('link') is-invalid @enderror"
@ -78,7 +80,7 @@
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<textarea id="description"
name="description"
type="text"
@ -95,7 +97,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>
@ -109,19 +111,19 @@
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
// Summernote
// Summernote
$('#description').summernote({
height: 100,
toolbar: [
[ 'style', [ 'style' ] ],
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
[ 'fontname', [ 'fontname' ] ],
[ 'fontsize', [ 'fontsize' ] ],
[ 'color', [ 'color' ] ],
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
[ 'table', [ 'table' ] ],
[ 'insert', [ 'link'] ],
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
['fontname', ['fontname']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ol', 'ul', 'paragraph', 'height']],
['table', ['table']],
['insert', ['link']],
['view', ['undo', 'redo', 'fullscreen', 'codeview', 'help']]
]
})
})

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.edit' , $link->id)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.edit' , $link->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -35,15 +37,15 @@
<div class="form-group">
<label for="icon">Icon class name</label>
<label for="icon">{{__('Icon class name')}}</label>
<input value="{{$link->icon}}" id="icon" name="icon"
type="text"
placeholder="fas fa-user"
class="form-control @error('icon') is-invalid @enderror"
required="required">
<div class="text-muted">
You can find available free icons <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
{{__('You can find available free icons')}} <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
</div>
@error('icon')
<div class="invalid-feedback">
@ -53,7 +55,7 @@
</div>
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{__('Title')}}</label>
<input value="{{$link->title}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror"
@ -66,7 +68,7 @@
</div>
<div class="form-group">
<label for="link">Link</label>
<label for="link">{{__('Link')}}</label>
<input value="{{$link->link}}" id="link" name="link"
type="text"
class="form-control @error('link') is-invalid @enderror"
@ -79,7 +81,7 @@
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<textarea id="description"
name="description"
type="text"
@ -94,10 +96,9 @@
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>
@ -112,19 +113,19 @@
<script>
document.addEventListener('DOMContentLoaded', (event) => {
// Summernote
// Summernote
$('#description').summernote({
height: 100,
toolbar: [
[ 'style', [ 'style' ] ],
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
[ 'fontname', [ 'fontname' ] ],
[ 'fontsize', [ 'fontsize' ] ],
[ 'color', [ 'color' ] ],
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
[ 'table', [ 'table' ] ],
[ 'insert', [ 'link'] ],
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
['fontname', ['fontname']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ol', 'ul', 'paragraph', 'height']],
['table', ['table']],
['insert', ['link']],
['view', ['undo', 'redo', 'fullscreen', 'codeview', 'help']]
]
})
})

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
</ol>
</div>
</div>
@ -27,9 +27,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Useful Links</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Useful Links')}}</h5>
<a href="{{route('admin.usefullinks.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -37,11 +37,11 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>description</th>
<th width="50">Icon</th>
<th>Title</th>
<th>Link</th>
<th>Created at</th>
<th>{{__('description')}}</th>
<th width="50">{{__('Icon')}}</th>
<th>{{__('Title')}}</th>
<th>{{__('Link')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -61,11 +61,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Users</h1>
<h1>{{__('Users')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">Users</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.users.edit' , $user->id)}}">Edit</a></li>
href="{{route('admin.users.edit' , $user->id)}}">{{__('Edit')}}</a></li>
</ol>
</div>
</div>
@ -33,7 +33,7 @@
@csrf
@method('PATCH')
<div class="form-group">
<label for="name">Username</label>
<label for="name">{{__('Username')}}</label>
<input value="{{$user->name}}" id="name" name="name" type="text"
class="form-control @error('name') is-invalid @enderror" required="required">
@error('name')
@ -43,7 +43,7 @@
@enderror
</div>
<div class="form-group">
<label for="email">Email</label>
<label for="email">{{__('Email')}}</label>
<input value="{{$user->email}}" id="email" name="email" type="text"
class="form-control @error('email') is-invalid @enderror"
required="required">
@ -54,7 +54,7 @@
@enderror
</div>
<div class="form-group">
<label for="pterodactyl_id">Pterodactyl ID</label>
<label for="pterodactyl_id">{{__('Pterodactyl ID')}}</label>
<input value="{{$user->pterodactyl_id}}" id="pterodactyl_id" name="pterodactyl_id"
type="number"
class="form-control @error('pterodactyl_id') is-invalid @enderror"
@ -65,8 +65,8 @@
</div>
@enderror
<div class="text-muted">
This ID refers to the user account created on pterodactyl's panel. <br>
<small>Only edit this if you know what you're doing :)</small>
{{__('This ID refers to the user account created on pterodactyls panel.')}} <br>
<small>{{__('Only edit this if you know what youre doing :)')}}</small>
</div>
</div>
<div class="form-group">
@ -82,7 +82,7 @@
@enderror
</div>
<div class="form-group">
<label for="server_limit">Server Limit</label>
<label for="server_limit">{{__('Server Limit')}}</label>
<input value="{{$user->server_limit}}" id="server_limit" name="server_limit" min="0"
max="1000000"
type="number"
@ -95,33 +95,33 @@
@enderror
</div>
<div class="form-group">
<label for="role">Role</label>
<label for="role">{{__('Role')}}</label>
<div>
<select id="role" name="role"
class="custom-select @error('role') is-invalid @enderror"
required="required">
<option @if($user->role == 'admin') selected @endif class="text-danger"
value="admin">
Administrator
</option>
<option @if($user->role == 'client') selected @endif class="text-success"
value="client">
Client
</option>
<option @if($user->role == 'member') selected @endif class="text-secondary"
value="member">
Member
</option>
</select>
</div>
@error('role')
<div class="text-danger">
{{$message}}
{{__(' Administrator')}}
</option>
<option @if($user->role == 'client') selected @endif class="text-success"
value="client">
{{__('Client')}}
</option>
<option @if($user->role == 'member') selected @endif class="text-secondary"
value="member">
{{__('Member')}}
</option>
</select>
</div>
@error('role')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" class="btn btn-primary">{{__('Submit')}}</button>
</div>
</div>
</div>
@ -130,7 +130,7 @@
<div class="card">
<div class="card-body">
<div class="col">
<div class="form-group"><label>New Password</label> <input
<div class="form-group"><label>{{__('New Password')}}</label> <input
class="form-control @error('new_password') is-invalid @enderror"
name="new_password" type="password" placeholder="••••••">
@ -142,7 +142,7 @@
</div>
</div>
<div class="col">
<div class="form-group"><label>Confirm Password</label>
<div class="form-group"><label>{{__('Confirm Password')}}</label>
<input
class="form-control @error('new_password_confirmation') is-invalid @enderror"
name="new_password_confirmation" type="password"

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Users</h1>
<h1>{{__('Users')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.users.index')}}">Users</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
</ol>
</div>
</div>
@ -27,9 +27,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-users mr-2"></i>Users</h5>
<h5 class="card-title"><i class="fas fa-users mr-2"></i>{{__('Users')}}</h5>
<a href="{{route('admin.users.notifications')}}" class="btn btn-sm btn-primary"><i
class="fas fa-paper-plane mr-1"></i>Notify</a>
class="fas fa-paper-plane mr-1"></i>{{__('Notify')}}</a>
</div>
</div>
@ -41,14 +41,14 @@
<th>discordId</th>
<th>ip</th>
<th>pterodactyl_id</th>
<th>Avatar</th>
<th>Name</th>
<th>Role</th>
<th>Email</th>
<th>{{__('Avatar')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Role')}}</th>
<th>{{__('Email')}}</th>
<th>{{CREDITS_DISPLAY_NAME}}</th>
<th>Servers</th>
<th>Verified</th>
<th>Last seen</th>
<th>{{__('Servers')}}</th>
<th>{{__('Verified')}}</th>
<th>{{__('Last seen')}}</th>
<th></th>
</tr>
</thead>
@ -67,11 +67,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -5,14 +5,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Users</h1>
<h1>{{__('Users')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">Users</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.users.notifications')}}">Notifications</a></li>
href="{{route('admin.users.notifications')}}">{{__('Notifications')}}</a></li>
</ol>
</div>
</div>
@ -33,11 +33,11 @@
@method('POST')
<div class="form-group">
<label>Users</label><br>
<label>{{__('Users')}}</label><br>
<input id="all" name="all"
type="checkbox" value="1"
onchange="toggleClass('users-form', 'd-none')">
<label for="all">All</label>
<label for="all">{{__('All')}}</label>
<div id="users-form">
<select id="users" name="users[]" class="form-control" multiple></select>
</div>
@ -54,14 +54,14 @@
</div>
<div class="form-group">
<label>Send via</label><br>
<label>{{__('Send via')}}</label><br>
<input value="database" id="database" name="via[]"
type="checkbox">
<label for="database">Database</label>
<label for="database">{{__('Database')}}</label>
<br>
<input value="mail" id="mail" name="via[]"
type="checkbox">
<label for="mail">Mail</label>
<label for="mail">{{__('Email')}}</label>
@error('via')
<div class="invalid-feedback d-block">
{{$message}}
@ -70,7 +70,7 @@
</div>
<div class="form-group" >
<label for="title">Title</label>
<label for="title">{{__('Title')}}</label>
<input value="{{old('title')}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror">
@ -81,7 +81,7 @@
@enderror
</div>
<div class="form-group">
<label for="content">Content</label>
<label for="content">{{__('Content')}}</label>
<textarea id="content"
name="content"
type="content"
@ -95,7 +95,7 @@
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" class="btn btn-primary">{{__('Submit')}}</button>
</div>
</form>
</div>
@ -162,7 +162,7 @@
$container.find(".select2-result-users__username").text(data.name);
$container.find(".select2-result-users__email").text(data.email);
return $container;
return $container;
},
templateSelection: function (data) {
$container = $('<div> \
@ -172,7 +172,7 @@
<span class="select2-selection-users__username" style="padding-left:10px;padding-right:10px;"></span> \
</div>');
$container.find(".select2-selection-users__username").text(data.name);
return $container;
return $container;
}
})
}

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Users</h1>
<h1{{__('Users')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">Users</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.users.show' , $user->id)}}">Show</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.users.show' , $user->id)}}">{{__('Show')}}</a></li>
</ol>
</div>
</div>
@ -47,7 +47,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-users mr-2"></i>Users</h5>
<h5 class="card-title"><i class="fas fa-users mr-2"></i>{{__('Users')}}</h5>
</div>
<div class="card-body">
<div class="row">
@ -55,7 +55,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>ID</label>
<label>{{__('ID')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -68,7 +68,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Role</label>
<label>{{__('Role')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;"
@ -82,7 +82,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Pterodactyl ID</label>
<label>{{__('Pterodactyl ID')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -95,7 +95,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Email</label>
<label>{{__('Email')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -109,7 +109,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Server limit</label>
<label>{{__('Server limit')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -122,7 +122,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Name</label>
<label>{{__('Name')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -135,7 +135,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Verified Email</label>
<label>{{__('Verified')}} {{__('Email')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -161,7 +161,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Verified Discord</label>
<label>{{__('Verified')}} {{__('Discord')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -174,7 +174,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Usage</label>
<label>{{__('Usage')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -188,7 +188,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>IP</label>
<label>{{__('IP')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -201,7 +201,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Created At</label>
<label>{{__('Created at')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -217,7 +217,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Last seen</label>
<label>{{__('Last seen')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -237,7 +237,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-server mr-2"></i>Servers</h5>
<h5 class="card-title"><i class="fas fa-server mr-2"></i>{{__('Servers')}}</h5>
</div>
<div class="card-body table-responsive">

View file

@ -1,170 +1,192 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Vouchers</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.vouchers.index')}}">Vouchers</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.products.create')}}">Create</a>
</li>
</ol>
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Vouchers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.vouchers.index')}}">{{__('Vouchers')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-money-check-alt mr-2"></i>Voucher details
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.vouchers.store')}}" method="POST">
@csrf
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-money-check-alt mr-2"></i>{{__('Voucher details')}}
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.vouchers.store')}}" method="POST">
@csrf
<div class="form-group">
<label for="memo">Memo <i data-toggle="popover" data-trigger="hover" data-content="Only admins can see this" class="fas fa-info-circle"></i></label>
<input value="{{old('memo')}}" placeholder="Summer break voucher" id="memo" name="memo" type="text" class="form-control @error('memo') is-invalid @enderror">
@error('memo')
<div class="text-danger">
{{$message}}
<div class="form-group">
<label for="memo">{{__('Memo')}} <i data-toggle="popover" data-trigger="hover"
data-content="Only admins can see this"
class="fas fa-info-circle"></i></label>
<input value="{{old('memo')}}" placeholder="{{__('Summer break voucher')}}" id="memo"
name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@enderror
</div>
<div class="form-group">
<label for="credits">* {{CREDITS_DISPLAY_NAME}}</label>
<input value="{{old('credits')}}" placeholder="500" id="credits" name="credits" type="number" step="any" min="0" max="99999999" class="form-control @error('credits') is-invalid @enderror">
@error('credits')
<div class="text-danger">
{{$message}}
<div class="form-group">
<label for="credits">* {{CREDITS_DISPLAY_NAME}}</label>
<input value="{{old('credits')}}" placeholder="500" id="credits" name="credits"
type="number" step="any" min="0" max="99999999"
class="form-control @error('credits') is-invalid @enderror">
@error('credits')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@enderror
</div>
<div class="form-group">
<label for="code">* Code</label>
<div class="input-group">
<input value="{{old('code')}}" placeholder="SUMMER" id="code" name="code" type="text" class="form-control @error('code') is-invalid @enderror" required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setRandomCode()" type="button">
Random
<div class="form-group">
<label for="code">* {{__('Code')}}</label>
<div class="input-group">
<input value="{{old('code')}}" placeholder="SUMMER" id="code" name="code"
type="text" class="form-control @error('code') is-invalid @enderror"
required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setRandomCode()" type="button">
{{__('Random')}}
</button>
</div>
</div>
@error('code')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="uses">* Uses <i data-toggle="popover" data-trigger="hover" data-content="A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher." class="fas fa-info-circle"></i></label>
<div class="input-group">
<input value="{{old('uses') ?? 1}}" id="uses" min="1" max="2147483647" name="uses" type="number" class="form-control @error('uses') is-invalid @enderror" required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setMaxUses()" type="button">Max
</button>
</div>
@enderror
</div>
@error('uses')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group mb-3">
<label for="expires_at">Expires at <i data-toggle="popover" data-trigger="hover" data-content="Timezone: {{ Config::get('app.timezone') }}" class="fas fa-info-circle"></i></label>
<div class="input-group date" id="expires_at" data-target-input="nearest">
<input value="{{old('expires_at')}}" name="expires_at" placeholder="dd-mm-yyyy hh:mm:ss" type="text" class="form-control @error('expires_at') is-invalid @enderror datetimepicker-input" data-target="#expires_at" />
<div class="input-group-append" data-target="#expires_at" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
<div class="form-group">
<label for="uses">* {{__('Uses')}} <i data-toggle="popover" data-trigger="hover"
data-content="{{__('A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.')}}"
class="fas fa-info-circle"></i></label>
<div class="input-group">
<input value="{{old('uses') ?? 1}}" id="uses" min="1" max="2147483647"
name="uses" type="number"
class="form-control @error('uses') is-invalid @enderror"
required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setMaxUses()" type="button">{{__('Max')}}
</button>
</div>
</div>
@error('uses')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@error('expires_at')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
</button>
</div>
</form>
<div class="form-group mb-3">
<label for="expires_at">{{__('Expires at')}} <i data-toggle="popover"
data-trigger="hover"
data-content="Timezone: {{ Config::get('app.timezone') }}"
class="fas fa-info-circle"></i></label>
<div class="input-group date" id="expires_at" data-target-input="nearest">
<input value="{{old('expires_at')}}" name="expires_at"
placeholder="dd-mm-yyyy hh:mm:ss" type="text"
class="form-control @error('expires_at') is-invalid @enderror datetimepicker-input"
data-target="#expires_at"/>
<div class="input-group-append" data-target="#expires_at"
data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
@error('expires_at')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
{{__('Submit')}}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<i class="fas"></i>
</div>
<i class="fas"></i>
</div>
</section>
<!-- END CONTENT -->
</section>
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
function setMaxUses() {
let element = document.getElementById('uses')
element.value = element.max;
console.log(element.max)
}
function setRandomCode() {
let element = document.getElementById('code')
element.value = getRandomCode(36)
}
function getRandomCode(length) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-';
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
function setMaxUses() {
let element = document.getElementById('uses')
element.value = element.max;
console.log(element.max)
}
return result;
}
</script>
function setRandomCode() {
let element = document.getElementById('code')
element.value = getRandomCode(36)
}
function getRandomCode(length) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-';
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
}
return result;
}
</script>
@endsection

View file

@ -1,170 +1,193 @@
@extends('layouts.main')
@section('content')
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Vouchers</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.vouchers.index')}}">Vouchers</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.products.edit' , $voucher->id)}}">Edit</a>
</li>
</ol>
<!-- CONTENT HEADER -->
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{__('Vouchers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.vouchers.index')}}">{{__('Vouchers')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.edit' , $voucher->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
</div>
</div>
</div>
</section>
<!-- END CONTENT HEADER -->
</section>
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<!-- MAIN CONTENT -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-money-check-alt mr-2"></i>Voucher details
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.vouchers.update' , $voucher->id)}}" method="POST">
@csrf
@method('PATCH')
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">
<i class="fas fa-money-check-alt mr-2"></i>{{__('Voucher details')}}
</h5>
</div>
<div class="card-body">
<form action="{{route('admin.vouchers.update' , $voucher->id)}}" method="POST">
@csrf
@method('PATCH')
<div class="form-group">
<label for="memo">Memo <i data-toggle="popover" data-trigger="hover" data-content="Only admins can see this" class="fas fa-info-circle"></i></label>
<input value="{{ $voucher->memo }}" placeholder="Summer break voucher" id="memo" name="memo" type="text" class="form-control @error('memo') is-invalid @enderror">
@error('memo')
<div class="text-danger">
{{$message}}
<div class="form-group">
<label for="memo">{{__('Memo')}} <i data-toggle="popover" data-trigger="hover"
data-content="Only admins can see this"
class="fas fa-info-circle"></i></label>
<input value="{{ $voucher->memo }}" placeholder="{{__('Summer break voucher')}}"
id="memo" name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@enderror
</div>
<div class="form-group">
<label for="credits">{{CREDITS_DISPLAY_NAME}} *</label>
<input value="{{$voucher->credits}}" placeholder="500" id="credits" name="credits" type="number" step="any" min="0" max="99999999" class="form-control @error('credits') is-invalid @enderror">
@error('credits')
<div class="text-danger">
{{$message}}
<div class="form-group">
<label for="credits">{{CREDITS_DISPLAY_NAME}} *</label>
<input value="{{$voucher->credits}}" placeholder="500" id="credits" name="credits"
type="number" step="any" min="0" max="99999999"
class="form-control @error('credits') is-invalid @enderror">
@error('credits')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@enderror
</div>
<div class="form-group">
<label for="code">Code *</label>
<div class="input-group">
<input value="{{$voucher->code}}" placeholder="SUMMER" id="code" name="code" type="text" class="form-control @error('code') is-invalid @enderror" required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setRandomCode()" type="button">
Random
<div class="form-group">
<label for="code">{{__('Code')}} *</label>
<div class="input-group">
<input value="{{$voucher->code}}" placeholder="SUMMER" id="code" name="code"
type="text" class="form-control @error('code') is-invalid @enderror"
required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setRandomCode()" type="button">
{{__('Random')}}
</button>
</div>
</div>
@error('code')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group">
<label for="uses">Uses * <i data-toggle="popover" data-trigger="hover" data-content="A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher." class="fas fa-info-circle"></i></label>
<div class="input-group">
<input value="{{$voucher->uses}}" id="uses" min="1" max="2147483647" name="uses" type="number" class="form-control @error('uses') is-invalid @enderror" required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setMaxUses()" type="button">Max
</button>
</div>
@enderror
</div>
@error('uses')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group mb-3">
<label for="expires_at">Expires at <i data-toggle="popover" data-trigger="hover" data-content="Timezone: {{ Config::get('app.timezone') }}" class="fas fa-info-circle"></i></label>
<div class="input-group date" id="expires_at" data-target-input="nearest">
<input value="{{$voucher->expires_at ? $voucher->expires_at->format('d-m-Y H:i:s') : ''}}" name="expires_at" placeholder="dd-mm-yyyy hh:mm:ss" type="text" class="form-control @error('expires_at') is-invalid @enderror datetimepicker-input" data-target="#expires_at" />
<div class="input-group-append" data-target="#expires_at" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
<div class="form-group">
<label for="uses">{{__('Uses')}} * <i data-toggle="popover" data-trigger="hover"
data-content="{{__('A voucher can only be used one time per user. Uses specifies the number of different users that can use this voucher.')}}"
class="fas fa-info-circle"></i></label>
<div class="input-group">
<input value="{{$voucher->uses}}" id="uses" min="1" max="2147483647" name="uses"
type="number" class="form-control @error('uses') is-invalid @enderror"
required="required">
<div class="input-group-append">
<button class="btn btn-info" onclick="setMaxUses()"
type="button">{{__('Max')}}
</button>
</div>
</div>
@error('uses')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@error('expires_at')
<div class="text-danger">
{{$message}}
<div class="form-group mb-3">
<label for="expires_at">{{__('Expires at')}} <i data-toggle="popover"
data-trigger="hover"
data-content="Timezone: {{ Config::get('app.timezone') }}"
class="fas fa-info-circle"></i></label>
<div class="input-group date" id="expires_at" data-target-input="nearest">
<input
value="{{$voucher->expires_at ? $voucher->expires_at->format('d-m-Y H:i:s') : ''}}"
name="expires_at" placeholder="dd-mm-yyyy hh:mm:ss" type="text"
class="form-control @error('expires_at') is-invalid @enderror datetimepicker-input"
data-target="#expires_at"/>
<div class="input-group-append" data-target="#expires_at"
data-toggle="datetimepicker">
<div class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
@error('expires_at')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
</button>
</div>
</form>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
{{__('Submit')}}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- END CONTENT -->
</section>
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
<script>
document.addEventListener('DOMContentLoaded', (event) => {
$('#expires_at').datetimepicker({
format: 'DD-MM-yyyy HH:mm:ss',
icons: {
time: 'far fa-clock',
date: 'far fa-calendar',
up: 'fas fa-arrow-up',
down: 'fas fa-arrow-down',
previous: 'fas fa-chevron-left',
next: 'fas fa-chevron-right',
today: 'fas fa-calendar-check',
clear: 'far fa-trash-alt',
close: 'far fa-times-circle'
}
});
})
function setMaxUses() {
let element = document.getElementById('uses')
element.value = element.max;
console.log(element.max)
}
function setRandomCode() {
let element = document.getElementById('code')
element.value = getRandomCode(36)
}
function getRandomCode(length) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-';
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
function setMaxUses() {
let element = document.getElementById('uses')
element.value = element.max;
console.log(element.max)
}
return result;
}
</script>
function setRandomCode() {
let element = document.getElementById('code')
element.value = getRandomCode(36)
}
function getRandomCode(length) {
let result = '';
let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-';
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
}
return result;
}
</script>
@endsection

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Vouchers</h1>
<h1>{{__('Vouchers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.vouchers.index')}}">Vouchers</a></li>
href="{{route('admin.vouchers.index')}}">{{__('Vouchers')}}</a></li>
</ol>
</div>
</div>
@ -28,9 +28,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-money-check-alt mr-2"></i>Vouchers</h5>
<h5 class="card-title"><i class="fas fa-money-check-alt mr-2"></i>{{__('Vouchers')}}</h5>
<a href="{{route('admin.vouchers.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -39,12 +39,12 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Status</th>
<th>Code</th>
<th>Memo</th>
<th>{{__('Status')}}</th>
<th>{{__('Code')}}</th>
<th>{{__('Memo')}}</th>
<th>{{CREDITS_DISPLAY_NAME}}</th>
<th>Used / Uses</th>
<th>Expires</th>
<th>{{__('Used / Uses')}}</th>
<th>{{__('Expires')}}</th>
<th></th>
</tr>
</thead>
@ -64,11 +64,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Vouchers</h1>
<h1>{{__('Vouchers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.vouchers.index') }}">Vouchers</a></li>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.vouchers.index') }}">{{__('Vouchers')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('admin.vouchers.users', $voucher->id) }}">Users</a>
href="{{ route('admin.vouchers.users', $voucher->id) }}">{{__('Users')}}</a>
</ol>
</div>
</div>
@ -29,7 +29,7 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-users mr-2"></i>Users</h5>
<h5 class="card-title"><i class="fas fa-users mr-2"></i>{{__('Users')}}</h5>
</div>
</div>
@ -38,11 +38,11 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>{{__('ID')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Email')}}</th>
<th>{{ CREDITS_DISPLAY_NAME }}</th>
<th>Last Seen</th>
<th>{{__('Last seen')}}</th>
</tr>
</thead>
<tbody>
@ -62,6 +62,9 @@
<script>
document.addEventListener("DOMContentLoaded", function() {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -9,7 +9,7 @@
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
</div>
<div class="card-body">
<p class="login-box-msg">Sign in to start your session</p>
<p class="login-box-msg">{{__('Sign in to start your session')}}</p>
@if (session('message'))
<div class="alert alert-danger">{{ session('message') }}</div>
@ -25,7 +25,7 @@
<div class="form-group">
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="Email">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
@ -43,7 +43,7 @@
<div class="form-group">
<div class="input-group mb-3">
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror"
placeholder="Password">
placeholder="{{__('Password')}}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
@ -72,13 +72,13 @@
<div class="icheck-primary">
<input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label for="remember">
Remember Me
{{__('Remember Me')}}
</label>
</div>
</div>
<!-- /.col -->
<div class="col-4">
<button type="submit" class="btn btn-primary btn-block">Sign In</button>
<button type="submit" class="btn btn-primary btn-block">{{__('Sign In')}}</button>
</div>
<!-- /.col -->
</div>
@ -102,7 +102,7 @@
@endif
</p>
<p class="mb-0">
<a href="{{route('register')}}" class="text-center">Register a new membership</a>
<a href="{{route('register')}}" class="text-center">{{__('Register a new membership')}}</a>
</p>
</div>
<!-- /.card-body -->

View file

@ -13,12 +13,12 @@
{{ session('status') }}
</div>
@endif
<p class="login-box-msg">You forgot your password? Here you can easily retrieve a new password.</p>
<p class="login-box-msg">{{__('You forgot your password? Here you can easily retrieve a new password.')}}</p>
<form method="POST" action="{{ route('password.email') }}">
@csrf
<div class="input-group mb-3">
<input type="email" class="form-control @error('email') is-invalid @enderror" placeholder="Email" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
<input type="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
@ -34,13 +34,13 @@
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-primary btn-block">Request new password</button>
<button type="submit" class="btn btn-primary btn-block">{{__('Request new password')}}</button>
</div>
<!-- /.col -->
</div>
</form>
<p class="mt-3 mb-1">
<a href="{{route('login')}}">Login</a>
<a href="{{route('login')}}">{{__('Login')}}</a>
</p>
</div>
<!-- /.login-card-body -->

View file

@ -8,7 +8,7 @@
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
</div>
<div class="card-body">
<p class="login-box-msg">You are only one step a way from your new password, recover your password now.</p>
<p class="login-box-msg">{{__('You are only one step a way from your new password, recover your password now.')}}</p>
<form method="POST" action="{{ route('password.update') }}">
@csrf
@ -16,7 +16,7 @@
<input type="hidden" name="token" value="{{ $token }}">
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="Email">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
@ -31,7 +31,7 @@
<div class="input-group mb-3">
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="Password" name="password" required autocomplete="new-password">
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{__('Password')}}" name="password" required autocomplete="new-password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
@ -45,7 +45,7 @@
</div>
<div class="input-group mb-3">
<input type="password" class="form-control" name="password_confirmation" placeholder="Retype password" required autocomplete="new-password">
<input type="password" class="form-control" name="password_confirmation" placeholder="{{__('Retype password')}}" required autocomplete="new-password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
@ -56,7 +56,7 @@
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-primary btn-block">Change password</button>
<button type="submit" class="btn btn-primary btn-block">{{__('Change password')}}</button>
</div>
<!-- /.col -->
</div>

View file

@ -8,7 +8,7 @@
<a href="{{route('welcome')}}" class="h1"><b class="mr-1">{{config('app.name', 'Laravel')}}</b></a>
</div>
<div class="card-body">
<p class="login-box-msg">Register a new membership</p>
<p class="login-box-msg">{{__('Register a new membership')}}</p>
<form method="POST" action="{{ route('register') }}">
@ -28,7 +28,7 @@
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}"
placeholder="Username" required autocomplete="name" autofocus>
placeholder="{{__('Username')}}" required autocomplete="name" autofocus>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-user"></span>
@ -45,7 +45,7 @@
<div class="form-group">
<div class="input-group mb-3">
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="Email"
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{__('Email')}}"
value="{{ old('email') }}" required autocomplete="email">
<div class="input-group-append">
<div class="input-group-text">
@ -62,7 +62,7 @@
<div class="form-group">
<div class="input-group mb-3">
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="Password" name="password" required autocomplete="new-password">
<input type="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{__('Password')}}" name="password" required autocomplete="new-password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
@ -77,7 +77,7 @@
</div>
<div class="input-group mb-3">
<input type="password" class="form-control" name="password_confirmation" placeholder="Retype password" required autocomplete="new-password">
<input type="password" class="form-control" name="password_confirmation" placeholder="{{__('Retype password')}}" required autocomplete="new-password">
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
@ -105,7 +105,7 @@
</div>
<!-- /.col -->
<div class="col-4">
<button type="submit" class="btn btn-primary btn-block">Register</button>
<button type="submit" class="btn btn-primary">{{__('Register')}}</button>
</div>
<!-- /.col -->
</div>
@ -122,7 +122,7 @@
{{-- </a>--}}
{{-- </div>--}}
<a href="{{route('login')}}" class="text-center">I already have a membership</a>
<a href="{{route('login')}}" class="text-center">{{__('I already have a membership')}}</a>
</div>
<!-- /.form-box -->
</div><!-- /.card -->

View file

@ -6,11 +6,11 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Dashboard</h1>
<h1>{{__('Dashboard')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a class="text-muted" href="">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="">{{__('Dashboard')}}</a></li>
</ol>
</div>
</div>
@ -28,7 +28,7 @@
<span class="info-box-icon bg-info elevation-1"><i class="fas fa-server"></i></span>
<div class="info-box-content">
<span class="info-box-text">Servers</span>
<span class="info-box-text">{{__('Servers')}}</span>
<span class="info-box-number">{{Auth::user()->servers()->count()}}</span>
</div>
<!-- /.info-box-content -->
@ -58,8 +58,8 @@
<span class="info-box-icon bg-warning elevation-1"><i class="fas fa-chart-line"></i></span>
<div class="info-box-content">
<span class="info-box-text">{{CREDITS_DISPLAY_NAME}} usage</span>
<span class="info-box-number">{{number_format($useage, 2, '.', '')}} <sup>per month</sup></span>
<span class="info-box-text">{{CREDITS_DISPLAY_NAME}} {{__('Usage')}}</span>
<span class="info-box-number">{{number_format($useage, 2, '.', '')}} <sup>{{__('per month')}}</sup></span>
</div>
<!-- /.info-box-content -->
</div>
@ -73,7 +73,7 @@
<span class="info-box-icon {{$bg}} elevation-1">
<i class="fas fa-hourglass-half"></i></span>
<div class="info-box-content">
<span class="info-box-text">Out of {{CREDITS_DISPLAY_NAME}} in </span>
<span class="info-box-text">{{__('Out of Credits in',["credits"=>CREDITS_DISPLAY_NAME])}} </span>
<span class="info-box-number">{{$boxText}}<sup>{{$unit}}</sup></span>
</div>
</div>
@ -93,7 +93,7 @@
<div class="card-header">
<h3 class="card-title">
<i class="fas fa-link mr-2"></i>
Useful Links
{{__('Useful Links')}}
</h3>
</div>
<!-- /.card-header -->
@ -121,7 +121,7 @@
<div class="card-header">
<h3 class="card-title">
<i class="fas fa-history mr-2"></i>
Activity Log
{{__('Activity Logs')}}
</h3>
</div>
<!-- /.card-header -->

View file

@ -41,10 +41,10 @@
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="{{route('home')}}" class="nav-link">Home</a>
<a href="{{route('home')}}" class="nav-link">{{__('Home')}}</a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="{{env('DISCORD_INVITE_URL')}}" class="nav-link" target="__blank">Discord</a>
<a href="{{env('DISCORD_INVITE_URL')}}" class="nav-link" target="__blank">{{__('Discord')}}</a>
</li>
</ul>
@ -60,7 +60,7 @@
@endif
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
<span class="dropdown-item dropdown-header">{{Auth::user()->unreadNotifications->count()}} Notifications</span>
<span class="dropdown-item dropdown-header">{{Auth::user()->unreadNotifications->count()}} {{__('Notifications')}}</span>
<div class="dropdown-divider"></div>
@foreach(Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
@ -73,8 +73,7 @@
@endforeach
<div class="dropdown-divider"></div>
<a href="{{route('notifications.index')}}" class="dropdown-item dropdown-footer">See All
Notifications</a>
<a href="{{route('notifications.index')}}" class="dropdown-item dropdown-footer">{{__('See all Notifications')}}</a>
</div>
</li>
@ -113,7 +112,7 @@
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
<a class="dropdown-item" href="{{route('profile.index')}}">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Profile
{{__('Profile')}}
</a>
{{-- <a class="dropdown-item" href="#">--}}
{{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i>--}}
@ -123,7 +122,7 @@
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('users.logbackin')}}">
<i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
Log back in
{{__('Log back in')}}
</a>
@endif
<div class="dropdown-divider"></div>
@ -131,7 +130,7 @@
@csrf
<button class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
Logout
{{__('Logout')}}
</button>
</form>
</div>
@ -161,7 +160,7 @@
<li class="nav-item">
<a href="{{route('home')}}" class="nav-link @if(Request::routeIs('home')) active @endif">
<i class="nav-icon fa fa-home"></i>
<p>Dashboard</p>
<p>{{__('Dashboard')}}</p>
</a>
</li>
@ -169,7 +168,7 @@
<a href="{{route('servers.index')}}"
class="nav-link @if(Request::routeIs('servers.*')) active @endif">
<i class="nav-icon fa fa-server"></i>
<p>Servers
<p>{{__('Servers')}}
<span
class="badge badge-info right">{{Auth::user()->servers()->count()}} / {{Auth::user()->server_limit}}</span>
</p>
@ -181,20 +180,20 @@
<a href="{{route('store.index')}}"
class="nav-link @if(Request::routeIs('store.*') || Request::routeIs('checkout')) active @endif">
<i class="nav-icon fa fa-coins"></i>
<p>Store</p>
<p>{{__('Store')}}</p>
</a>
</li>
@endif
@if(Auth::user()->role == 'admin')
<li class="nav-header">Administration</li>
<li class="nav-header">{{__('Administration')}}</li>
<li class="nav-item">
<a href="{{route('admin.overview.index')}}"
class="nav-link @if(Request::routeIs('admin.overview.*')) active @endif">
<i class="nav-icon fa fa-home"></i>
<p>Overview</p>
<p>{{__('Overview')}}</p>
</a>
</li>
@ -202,7 +201,7 @@
<a href="{{route('admin.configurations.index')}}"
class="nav-link @if(Request::routeIs('admin.configurations.*')) active @endif">
<i class="nav-icon fas fa-cogs"></i>
<p>Configurations</p>
<p>{{__('Configurations')}}</p>
</a>
</li>
@ -210,7 +209,7 @@
<a href="{{route('admin.settings.index')}}"
class="nav-link @if(Request::routeIs('admin.settings.*')) active @endif">
<i class="nav-icon fas fa-tools"></i>
<p>Settings</p>
<p>{{__('Settings')}}</p>
</a>
</li>
@ -218,17 +217,17 @@
<a href="{{route('admin.api.index')}}"
class="nav-link @if(Request::routeIs('admin.api.*')) active @endif">
<i class="nav-icon fa fa-gamepad"></i>
<p>Application API</p>
<p>{{__('Application API')}}</p>
</a>
</li>
<li class="nav-header">Management</li>
<li class="nav-header">{{__('Management')}}</li>
<li class="nav-item">
<a href="{{route('admin.users.index')}}"
class="nav-link @if(Request::routeIs('admin.users.*')) active @endif">
<i class="nav-icon fas fa-users"></i>
<p>Users</p>
<p>{{__('Users')}}</p>
</a>
</li>
@ -236,7 +235,7 @@
<a href="{{route('admin.servers.index')}}"
class="nav-link @if(Request::routeIs('admin.servers.*')) active @endif">
<i class="nav-icon fas fa-server"></i>
<p>Servers</p>
<p>{{__('Servers')}}</p>
</a>
</li>
@ -244,7 +243,7 @@
<a href="{{route('admin.products.index')}}"
class="nav-link @if(Request::routeIs('admin.products.*')) active @endif">
<i class="nav-icon fas fa-sliders-h"></i>
<p>Products</p>
<p>{{__('Products')}}</p>
</a>
</li>
@ -252,7 +251,7 @@
<a href="{{route('admin.store.index')}}"
class="nav-link @if(Request::routeIs('admin.store.*')) active @endif">
<i class="nav-icon fas fa-shopping-basket"></i>
<p>Store</p>
<p>{{__('Store')}}</p>
</a>
</li>
@ -260,7 +259,7 @@
<a href="{{route('admin.vouchers.index')}}"
class="nav-link @if(Request::routeIs('admin.vouchers.*')) active @endif">
<i class="nav-icon fas fa-money-check-alt"></i>
<p>Vouchers</p>
<p>{{__('Vouchers')}}</p>
</a>
</li>
@ -283,23 +282,23 @@
{{-- </li>--}}
<li class="nav-header">Other</li>
<li class="nav-header">{{__('Other')}}</li>
<li class="nav-item">
<a href="{{route('admin.usefullinks.index')}}"
class="nav-link @if(Request::routeIs('admin.usefullinks.*')) active @endif">
<i class="nav-icon fas fa-link"></i>
<p>Useful Links</p>
<p>{{__('Useful Links')}}</p>
</a>
</li>
<li class="nav-header">Logs</li>
<li class="nav-header">{{__('Logs')}}</li>
<li class="nav-item">
<a href="{{route('admin.payments.index')}}"
class="nav-link @if(Request::routeIs('admin.payments.*')) active @endif">
<i class="nav-icon fas fa-money-bill-wave"></i>
<p>Payments
<p>{{__('Payments')}}
<span class="badge badge-success right">{{\App\Models\Payment::count()}}</span>
</p>
</a>
@ -309,7 +308,7 @@
<a href="{{route('admin.activitylogs.index')}}"
class="nav-link @if(Request::routeIs('admin.activitylogs.*')) active @endif">
<i class="nav-icon fas fa-clipboard-list"></i>
<p>Activity Logs</p>
<p>{{__('Activity Logs')}}</p>
</a>
</li>
@ -329,12 +328,9 @@
@if(!Auth::user()->hasVerifiedEmail())
@if(Auth::user()->created_at->diffInHours(now(), false) > 1)
<div class="alert alert-warning p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i> Warning!</h5>
You have not yet verified your email address <a class="text-primary"
href="{{route('verification.send')}}">Click here to
resend
verification email</a> <br>
Please contact support If you didn't receive your verification email.
<h5><i class="icon fas fa-exclamation-circle"></i> {{__('Warning!')}}</h5>
{{__('You have not yet verified your email address')}} <a class="text-primary" href="{{route('verification.send')}}">{{__('Click here to resend verification email')}}</a> <br>
{{__('Please contact support If you didnt receive your verification email.')}}
</div>
@endif
@endif

View file

@ -1,18 +1,18 @@
@component('mail::message')
# Thank you for your purchase!
Your payment has been confirmed; Your credit balance has been updated.<br>
# {{__('Thank you for your purchase!')}}
{{__('Your payment has been confirmed; Your credit balance has been updated.')}}'<br>
# Details
___
### Payment ID: **{{$payment->id}}**<br>
### Status: **{{$payment->status}}**<br>
### Price: **{{$payment->formatToCurrency($payment->total_price)}}**<br>
### Type: **{{$payment->type}}**<br>
### Amount: **{{$payment->amount}}**<br>
### Balance: **{{$payment->user->credits}}**<br>
### User ID: **{{$payment->user_id}}**<br>
### {{__('Payment ID')}}': **{{$payment->id}}**<br>
### {{__('Status')}}': **{{$payment->status}}**<br>
### {{__('Price')}}': **{{$payment->formatToCurrency($payment->total_price)}}**<br>
### {{__('Type')}}': **{{$payment->type}}**<br>
### {{__('Amount')}}': **{{$payment->amount}}**<br>
### {{__('Balance')}}': **{{$payment->user->credits}}**<br>
### {{__('User ID')}}': **{{$payment->user_id}}**<br>
<br>
Thanks,<br>
{{__('Thanks')}},<br>
{{ config('app.name') }}
@endcomponent

View file

@ -5,7 +5,8 @@
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Redeem voucher code</h4>
<h4 class="modal-title">{{__('Redeem voucher code')}}</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
@ -13,7 +14,7 @@
<div class="modal-body">
<form id="redeemVoucherForm" onsubmit="return false" method="post" action="{{route('voucher.redeem')}}">
<div class="form-group">
<label for="redeemVoucherCode">Code</label>
<label for="redeemVoucherCode">{{__('Code')}}</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
@ -31,9 +32,9 @@
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">{{__('Close')}}</button>
<button name="submit" id="redeemVoucherSubmit" onclick="redeemVoucherCode()" type="button"
class="btn btn-primary">Redeem
class="btn btn-primary">{{__('Redeem')}}
</button>
</div>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Notifications</h1>
<h1>{{__('Notifications')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('notifications.index')}}">Notifications</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('notifications.index')}}">{{__('Notifications')}}</a>
</li>
</ol>
</div>
@ -27,7 +27,7 @@
<!-- CUSTOM CONTENT -->
<div class="row justify-content-center">
<div class="col-md-8">
<p>All notifications</p>
<p>{{__('All notifications')}}</p>
</div>
@foreach($notifications as $notification)
<div class="col-md-8">

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Profile</h1>
<h1>{{__('Profile')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('profile.index')}}">Profile</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('profile.index')}}">{{__('Profile')}}</a>
</li>
</ol>
</div>
@ -28,27 +28,26 @@
<div class="col-lg-12 px-0">
@if(!Auth::user()->hasVerifiedEmail() && strtolower($force_email_verification) == 'true')
<div class="alert alert-warning p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i>Required Email verification!</h5>
You have not yet verified your email address
<a class="text-primary" href="{{route('verification.send')}}">Click here to resend
verification email</a> <br>
Please contact support If you didn't receive your verification email.
<h5><i class="icon fas fa-exclamation-circle"></i>{{__('Required Email verification!')}}</h5>
{{__('You have not yet verified your email address')}}
<a class="text-primary" href="{{route('verification.send')}}">{{__('Click here to resend verification email')}}</a> <br>
{{__('Please contact support If you didnt receive your verification email.')}}
</div>
@endif
@if(is_null(Auth::user()->discordUser) && strtolower($force_discord_verification) == 'true')
@if(!empty(env('DISCORD_CLIENT_ID')) && !empty(env('DISCORD_CLIENT_SECRET')))
<div class="alert alert-warning p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i>Required Discord verification!</h5>
You have not yet verified your discord account
<a class="text-primary" href="{{route('auth.redirect')}}">Login with discord</a> <br>
Please contact support If you face any issues.
<h5><i class="icon fas fa-exclamation-circle"></i>{{__('Required Discord verification!')}}</h5>
{{__('You have not yet verified your discord account')}}
<a class="text-primary" href="{{route('auth.redirect')}}">{{__('Login with discord')}}</a> <br>
{{__('Please contact support If you face any issues.')}}
</div>
@else
<div class="alert alert-danger p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i>Required Discord verification!</h5>
Due to system settings you are required to verify your discord account! <br>
It looks like this hasn't been set-up correctly! Please contact support.
<h5><i class="icon fas fa-exclamation-circle"></i>{{__('Required Discord verification!')}}</h5>
{{__('Due to system settings you are required to verify your discord account!')}} <br>
{{__('It looks like this hasnt been set-up correctly! Please contact support.')}}'
</div>
@endif
@endif
@ -100,7 +99,7 @@
</div>
</div>
<ul class="nav nav-tabs">
<li class="nav-item"><a href="javasript:void(0)" class="active nav-link">Settings</a>
<li class="nav-item"><a href="javasript:void(0)" class="active nav-link">{{__('Settings')}}</a>
</li>
</ul>
<div class="tab-content pt-3">
@ -109,7 +108,7 @@
<div class="col">
<div class="row">
<div class="col">
<div class="form-group"><label>Name</label> <input
<div class="form-group"><label>{{__('Name')}}</label> <input
class="form-control @error('name') is-invalid @enderror"
type="text" name="name"
placeholder="{{$user->name}}" value="{{$user->name}}">
@ -124,7 +123,7 @@
</div>
<div class="row">
<div class="col">
<div class="form-group"><label>Email</label> <input
<div class="form-group"><label>{{__('Email')}}</label> <input
class="form-control @error('email') is-invalid @enderror"
type="text"
placeholder="{{$user->email}}" name="email"
@ -142,10 +141,10 @@
</div>
<div class="row">
<div class="col-12 col-sm-6 mb-3">
<div class="mb-3"><b>Change Password</b></div>
<div class="mb-3"><b>{{__('Change Password')}}</b></div>
<div class="row">
<div class="col">
<div class="form-group"><label>Current Password</label> <input
<div class="form-group"><label>{{__('Current Password')}}</label> <input
class="form-control @error('current_password') is-invalid @enderror"
name="current_password" type="password"
placeholder="••••••">
@ -160,7 +159,7 @@
</div>
<div class="row">
<div class="col">
<div class="form-group"><label>New Password</label> <input
<div class="form-group"><label>{{__('New Password')}}</label> <input
class="form-control @error('new_password') is-invalid @enderror"
name="new_password" type="password" placeholder="••••••">
@ -174,8 +173,7 @@
</div>
<div class="row">
<div class="col">
<div class="form-group"><label>Confirm <span
class="d-none d-xl-inline">Password</span></label>
<div class="form-group"><label>{{__('Confirm Password')}}</span></label>
<input
class="form-control @error('new_password_confirmation') is-invalid @enderror"
name="new_password_confirmation" type="password"
@ -193,28 +191,23 @@
@if(!empty(env('DISCORD_CLIENT_ID')) && !empty(env('DISCORD_CLIENT_SECRET')))
<div class="col-12 col-sm-5 offset-sm-1 mb-3">
@if(is_null(Auth::user()->discordUser))
<b>Link your discord account!</b>
<b>{{__('Link your discord account!')}}</b>
<div class="verify-discord">
<div class="mb-3">
@if($credits_reward_after_verify_discord)
<p>By verifying your discord account, you receive an
extra
<b><i
class="fa fa-coins mx-1"></i>{{$credits_reward_after_verify_discord}}
</b> {{CREDITS_DISPLAY_NAME}} and increased server
limit
<p>{{__('By verifying your discord account, you receive extra Credits and increased Server amounts')}}
</p>
@endif
</div>
</div>
<a class="btn btn-light" href="{{route('auth.redirect')}}">
<i class="fab fa-discord mr-2"></i>Login with Discord
<i class="fab fa-discord mr-2"></i>{{__('Login with Discord')}}
</a>
@else
<div class="verified-discord">
<div class="my-3 callout callout-info">
<p>You are verified!</p>
<p>{{__('You are verified!')}}</p>
</div>
</div>
<div class="row pl-2">
@ -233,7 +226,7 @@
</div>
<div class="small-box-footer">
<a href="{{route('auth.redirect')}}">
<i class="fab fa-discord mr-1"></i>Re-Sync Discord
<i class="fab fa-discord mr-1"></i>{{__('Re-Sync Discord')}}
</a>
</div>
</div>
@ -245,7 +238,7 @@
</div>
<div class="row">
<div class="col d-flex justify-content-end">
<button class="btn btn-primary" type="submit">Save Changes</button>
<button class="btn btn-primary" type="submit">{{__('Save Changes')}}</button>
</div>
</div>

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Servers</h1>
<h1>{{__('Servers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('servers.index') }}">Servers</a>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('servers.index') }}">{{__('Servers')}}</a>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('servers.create') }}">Create</a>
href="{{ route('servers.create') }}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -114,7 +114,7 @@
<div class="col-md-6">
<div class="form-group">
<label for="egg">{{__('Specification ')}}</label>
<label for="egg">{{__('Specification')}}</label>
<div>
<select id="egg"
required
@ -194,7 +194,7 @@
<div class="card">
<div class="card-header">
<div class="card-title">
<i class="fas fa-list mr-2"></i>{{__('Server details')}}
<i class="fas fa-list mr-2"></i>{{__('Server Details')}}
</div>
</div>
<div class="card-body">
@ -233,7 +233,7 @@
<template x-if="selectedProductObject?.name">
<ul class="pl-0">
<li class="d-flex justify-content-between">
<small class="text-muted d-inline-block">{{__('CPU')}}</small>
<small class="text-muted d-inline-block">{{__('Cpu')}}</small>
<small class="text-muted d-inline-block"
x-text="selectedProductObject.cpu + ' %'"></small>
</li>
@ -258,7 +258,7 @@
x-text="selectedProductObject.backups"></small>
</div>
<div class="d-flex justify-content-between">
<small class="text-muted d-inline-block">{{__('Allocations')}} ({{__('ports')}})</small>
<small class="text-muted d-inline-block">{{__('Allocations')}}</small>
<small class="text-muted d-inline-block" x-text="selectedProductObject.allocations"></small>
</div>
</ul>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Servers</h1>
<h1>{{__('Servers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('servers.index')}}">Servers</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('servers.index')}}">{{__('Servers')}}</a>
</li>
</ol>
</div>
@ -26,9 +26,8 @@
<!-- CUSTOM CONTENT -->
<div class="d-flex justify-content-between mb-3">
<p>Use your servers on our <a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}">pterodactyl panel</a></p>
<a @if(Auth::user()->Servers->count() >= Auth::user()->server_limit) disabled="disabled" title="Server limit reached!" @endif href="{{route('servers.create')}}" class="btn @if(Auth::user()->Servers->count() >= Auth::user()->server_limit) disabled @endif btn-primary"><i class="fa fa-plus mr-2"></i>Create
Server</a>
<p>{{__('Use your servers on our')}} <a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}">{{__('pterodactyl panel')}}</a></p>
<a @if(Auth::user()->Servers->count() >= Auth::user()->server_limit) disabled="disabled" title="{{__('Server limit reached!')}}" @endif href="{{route('servers.create')}}" class="btn @if(Auth::user()->Servers->count() >= Auth::user()->server_limit) disabled @endif btn-primary"><i class="fa fa-plus mr-2"></i>{{__('Create Server')}}</a>
</div>
<div class="row">
@ -44,14 +43,14 @@
<i class="fas fa-ellipsis-v fa-sm fa-fw text-white-50"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}/server/{{$server->identifier}}" target="__blank" class="dropdown-item text-info"><i title="manage" class="fas fa-tasks mr-2"></i><span>Manage</span></a>
<a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}/server/{{$server->identifier}}" target="__blank" class="dropdown-item text-info"><i title="manage" class="fas fa-tasks mr-2"></i><span>{{__('Manage')}}</span></a>
@if(!empty(env('PHPMYADMIN_URL')))
<a href="{{env('PHPMYADMIN_URL' , 'http://localhost')}}" class="dropdown-item text-info" target="__blank"><i title="manage" class="fas fa-database mr-2"></i><span>Database</span></a>
<a href="{{env('PHPMYADMIN_URL' , 'http://localhost')}}" class="dropdown-item text-info" target="__blank"><i title="manage" class="fas fa-database mr-2"></i><span>{{__('Database')}}</span></a>
@endif
<form method="post" onsubmit="return submitResult();" action="{{route('servers.destroy' , $server->id)}}">
@csrf
@method('DELETE')
<button class="dropdown-item text-danger"><i title="delete" class="fas fa-trash mr-2"></i><span>Delete server</span></button>
<button class="dropdown-item text-danger"><i title="delete" class="fas fa-trash mr-2"></i><span>{{__('Delete server')}}</span></button>
</form>
<div class="dropdown-divider"></div>
<span class="dropdown-item"><i title="Created at" class="fas fa-sync-alt mr-2"></i><span>{{$server->created_at->isoFormat('LL')}}</span></span>
@ -61,34 +60,34 @@
</div>
</div>
<div class="card-body">
<span class="text-muted">Server details</span>
<span class="text-muted">{{__('Server Details')}}</span>
<table class="table">
<tr>
<td>CPU</td>
<td>{{__('Cpu')}}</td>
<td>{{$server->product->cpu}} %</td>
</tr>
<tr>
<td>RAM</td>
<td>{{__('Memory')}}</td>
<td>{{$server->product->memory}} MB</td>
</tr>
<tr>
<td>Disk</td>
<td>{{__('Disk')}}</td>
<td>{{$server->product->disk}} MB</td>
</tr>
<tr>
<td>Databases</td>
<td>{{__('Databases')}}</td>
<td>{{$server->product->databases}} MySQL</td>
</tr>
<tr>
<td>Backups</td>
<td>{{__('Backups')}}</td>
<td>{{$server->product->backups}}</td>
</tr>
<tr>
<td>Price per Hour</td>
<td>{{__('Price per Hour')}}</td>
<td>{{number_format($server->product->getHourlyPrice(),2,".", "")}} {{CREDITS_DISPLAY_NAME}}</td>
</tr>
<tr>
<td>Price per Month</td>
<td>{{__('Price per Month')}}</td>
<td>{{$server->product->getHourlyPrice()*24*30}} {{CREDITS_DISPLAY_NAME}}</td>
</tr>
</table>
@ -96,9 +95,9 @@
<div class="card-footer d-flex justify-content-between">
<a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}/server/{{$server->identifier}}" target="__blank" class="btn btn-info mx-3 w-100"><i class="fas fa-tasks mr-2"></i>Manage</a>
<a href="{{env('PTERODACTYL_URL' , 'http://localhost')}}/server/{{$server->identifier}}" target="__blank" class="btn btn-info mx-3 w-100"><i class="fas fa-tasks mr-2"></i>{{__('Manage')}}</a>
@if(!empty(env('PHPMYADMIN_URL')))
<a href="{{env('PHPMYADMIN_URL' , 'http://localhost')}}" target="__blank" class="btn btn-info mx-3 w-100" ><i class="fas fa-database mr-2"></i>Database</a>
<a href="{{env('PHPMYADMIN_URL' , 'http://localhost')}}" target="__blank" class="btn btn-info mx-3 w-100" ><i class="fas fa-database mr-2"></i>{{__('Database')}}</a>
@endif
</div>
@ -115,7 +114,7 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
</script>
@endsection

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a class="" href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="" href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('store.index')}}">{{__('Store')}}</a></li>
</ol>
</div>
</div>
@ -34,7 +34,7 @@
<div class="col-12">
<h4>
<i class="fas fa-globe"></i> {{ config('app.name', 'Laravel') }}
<small class="float-right">Date: {{Carbon\Carbon::now()->isoFormat('LL')}}</small>
<small class="float-right">{{__('Date')}}: {{Carbon\Carbon::now()->isoFormat('LL')}}</small>
</h4>
</div>
<!-- /.col -->
@ -42,24 +42,24 @@
<!-- info row -->
<div class="row invoice-info">
<div class="col-sm-4 invoice-col">
To
{{__('To')}}
<address>
<strong>{{config('app.name' , 'Laravel')}}</strong><br>
Email: {{env('PAYPAL_EMAIL' , env('MAIL_FROM_NAME'))}}
{{__('Email')}}: {{env('PAYPAL_EMAIL' , env('MAIL_FROM_NAME'))}}
</address>
</div>
<!-- /.col -->
<div class="col-sm-4 invoice-col">
From
{{__('From')}}
<address>
<strong>{{Auth::user()->name}}</strong><br>
Email: {{Auth::user()->email}}
{{__('Email')}}: {{Auth::user()->email}}
</address>
</div>
<!-- /.col -->
<div class="col-sm-4 invoice-col">
<b>Status</b><br>
<span class="badge badge-warning">Pending</span><br>
<b>{{__('Status')}}</b><br>
<span class="badge badge-warning">{{__('Pending')}}</span><br>
{{-- <b>Order ID:</b> 4F3S8J<br>--}}
</div>
<!-- /.col -->
@ -72,10 +72,10 @@
<table class="table table-striped">
<thead>
<tr>
<th>Quantity</th>
<th>Product</th>
<th>Description</th>
<th>Subtotal</th>
<th>{{__('Quantity')}}</th>
<th>{{__('Product')}}</th>
<th>{{__('Description')}}</th>
<th>{{__('Subtotal')}}</th>
</tr>
</thead>
<tbody>
@ -95,34 +95,34 @@
<div class="row">
<!-- accepted payments column -->
<div class="col-6">
<p class="lead">Payment Methods:</p>
<p class="lead">{{__('Payment Methods')}}:</p>
<img src="https://www.paypalobjects.com/digitalassets/c/website/logo/full-text/pp_fc_hl.svg" alt="Paypal">
<p class="text-muted well well-sm shadow-none" style="margin-top: 10px;">
By purchasing this product you agree and accept our terms of service</a>
{{__('By purchasing this product you agree and accept our terms of service')}}</a>
</p>
</div>
<!-- /.col -->
<div class="col-6">
<p class="lead">Amount Due {{Carbon\Carbon::now()->isoFormat('LL')}}</p>
<p class="lead">{{__('Amount Due')}} {{Carbon\Carbon::now()->isoFormat('LL')}}</p>
<div class="table-responsive">
<table class="table">
<tr>
<th style="width:50%">Subtotal:</th>
<th style="width:50%">{{__('Subtotal')}}:</th>
<td>{{$product->formatToCurrency($product->price)}}</td>
</tr>
<tr>
<th>Tax ({{$taxpercent}}%)</th>
<th>{{__('Tax')}} ({{$taxpercent}}%)</th>
<td>{{$product->formatToCurrency($taxvalue)}}</td>
</tr>
<tr>
<th>Quantity:</th>
<th>{{__('Quantity')}}:</th>
<td>1</td>
</tr>
<tr>
<th>Total:</th>
<th>{{__('Total')}}:</th>
<td>{{$product->formatToCurrency($total)}}</td>
</tr>
</table>
@ -135,8 +135,8 @@
<!-- this row will not appear when printing -->
<div class="row no-print">
<div class="col-12">
<a href="{{route('payment.pay' , $product->id)}}" type="button" class="btn btn-success float-right"><i class="far fa-credit-card mr-2"></i> Submit
Payment
<a href="{{route('payment.pay' , $product->id)}}" type="button" class="btn btn-success float-right"><i class="far fa-credit-card mr-2"></i> {{__('Submit
Payment')}}
</a>
</div>
</div>

View file

@ -7,12 +7,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a class="" href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="" href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('store.index')}}">{{__('Store')}}</a></li>
</ol>
</div>
</div>
@ -26,7 +26,7 @@
<div class="text-right mb-3">
<button type="button" data-toggle="modal" data-target="#redeemVoucherModal" class="btn btn-primary">
<i class="fas fa-money-check-alt mr-2"></i>Redeem code
<i class="fas fa-money-check-alt mr-2"></i>{{__('Redeem code')}}
</button>
</div>
@ -40,9 +40,9 @@
<table class="table table-striped table-responsive-sm">
<thead>
<tr>
<th>Price</th>
<th>Type</th>
<th>Description</th>
<th>{{__('Price')}}</th>
<th>{{__('Type')}}</th>
<th>{{__('Description')}}</th>
<th></th>
</tr>
</thead>
@ -65,7 +65,7 @@
@else
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4><i class="icon fa fa-ban"></i> @if($products->count() == 0) There are no store products! @else The store is not correctly configured! @endif
<h4><i class="icon fa fa-ban"></i> @if($products->count() == 0) {{__('There are no store products!')}} @else {{__('The store is not correctly configured!')}} @endif
</h4>
</div>