many many fixes

This commit is contained in:
ok236449 2023-01-06 00:01:23 +01:00
parent db828e7285
commit 7ca842e712
21 changed files with 126 additions and 61 deletions

View file

@ -72,6 +72,7 @@ public function checkPteroClientkey(){
"SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR" => "server-create-charge-first-hour", "SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR" => "server-create-charge-first-hour",
"SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME" => "credits-display-name", "SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME" => "credits-display-name",
"SETTINGS::SERVER:ALLOCATION_LIMIT" => "allocation-limit", "SETTINGS::SERVER:ALLOCATION_LIMIT" => "allocation-limit",
"SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER" => "minimum-credits",
"SETTINGS::USER:FORCE_DISCORD_VERIFICATION" => "force-discord-verification", "SETTINGS::USER:FORCE_DISCORD_VERIFICATION" => "force-discord-verification",
"SETTINGS::USER:FORCE_EMAIL_VERIFICATION" => "force-email-verification", "SETTINGS::USER:FORCE_EMAIL_VERIFICATION" => "force-email-verification",
"SETTINGS::USER:INITIAL_CREDITS" => "initial-credits", "SETTINGS::USER:INITIAL_CREDITS" => "initial-credits",

View file

@ -673,7 +673,7 @@ class PaymentController extends Controller
$query = Payment::with('user'); $query = Payment::with('user');
return datatables($query) return datatables($query)
->editColumn('user', function (Payment $payment) { ->addColumn('user', function (Payment $payment) {
return return
($payment->user)?'<a href="'.route('admin.users.show', $payment->user->id).'">'.$payment->user->name.'</a>':__('Unknown user'); ($payment->user)?'<a href="'.route('admin.users.show', $payment->user->id).'">'.$payment->user->name.'</a>':__('Unknown user');
}) })
@ -691,7 +691,8 @@ class PaymentController extends Controller
}) })
->editColumn('created_at', function (Payment $payment) { ->editColumn('created_at', function (Payment $payment) {
return $payment->created_at ? $payment->created_at->diffForHumans() : ''; return ['display' => $payment->created_at ? $payment->created_at->diffForHumans() : '',
'raw' => $payment->created_at ? strtotime($payment->created_at) : ''];
}) })
->addColumn('actions', function (Payment $payment) { ->addColumn('actions', function (Payment $payment) {
return '<a data-content="' . __("Download") . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.invoices.downloadSingleInvoice', "id=" . $payment->payment_id) . '" class="btn btn-sm text-white btn-info mr-1"><i class="fas fa-file-download"></i></a>'; return '<a data-content="' . __("Download") . '" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.invoices.downloadSingleInvoice', "id=" . $payment->payment_id) . '" class="btn btn-sm text-white btn-info mr-1"><i class="fas fa-file-download"></i></a>';

View file

@ -228,6 +228,9 @@ class ProductController extends Controller
</form> </form>
'; ';
}) })
->editColumn('minimum_credits', function (Product $product) {
return $product->minimum_credits==-1 ? config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER') : $product->minimum_credits;
})
->editColumn('created_at', function (Product $product) { ->editColumn('created_at', function (Product $product) {
return $product->created_at ? $product->created_at->diffForHumans() : ''; return $product->created_at ? $product->created_at->diffForHumans() : '';
}) })

View file

@ -109,10 +109,14 @@ class TicketsController extends Controller
return '<span class="badge ' . $badgeColor . '">' . $tickets->status . '</span>'; return '<span class="badge ' . $badgeColor . '">' . $tickets->status . '</span>';
}) })
->editColumn('updated_at', function (Ticket $tickets) { ->editColumn('priority', function (Ticket $tickets) {
return $tickets->updated_at ? $tickets->updated_at->diffForHumans() : ''; return __($tickets->priority);
}) })
->rawColumns(['category', 'title', 'user_id', 'status', 'updated_at', 'actions']) ->editColumn('updated_at', function (Ticket $tickets) {
return ['display' => $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '',
'raw' => $tickets->updated_at ? strtotime($tickets->updated_at) : ''];
})
->rawColumns(['category', 'title', 'user_id', 'status', 'priority', 'updated_at', 'actions'])
->make(true); ->make(true);
} }

View file

@ -92,6 +92,13 @@ class TicketsController extends Controller
Notification::send($admin, new AdminReplyNotification($ticket, $user, $newmessage)); Notification::send($admin, new AdminReplyNotification($ticket, $user, $newmessage));
return redirect()->back()->with('success', __('Your comment has been submitted')); return redirect()->back()->with('success', __('Your comment has been submitted'));
} }
public function close($ticket_id)
{
$ticket = Ticket::where('user_id', Auth::user()->id)->where("ticket_id", $ticket_id)->firstOrFail();
$ticket->status = "Closed";
$ticket->save();
return redirect()->back()->with('success', __('A ticket has been closed, ID: #') . $ticket->ticket_id);
}
public function dataTable() public function dataTable()
{ {
@ -122,6 +129,9 @@ class TicketsController extends Controller
return '<span class="badge ' . $badgeColor . '">' . $tickets->status . '</span>'; return '<span class="badge ' . $badgeColor . '">' . $tickets->status . '</span>';
}) })
->editColumn('priority', function (Ticket $tickets) {
return __($tickets->priority);
})
->editColumn('updated_at', function (Ticket $tickets) { ->editColumn('updated_at', function (Ticket $tickets) {
return $tickets->updated_at ? $tickets->updated_at->diffForHumans() : ''; return $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '';
}) })

View file

@ -118,6 +118,13 @@ class SettingsSeeder extends Seeder
'type' => 'integer', 'type' => 'integer',
'description' => 'The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!' 'description' => 'The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!'
]); ]);
Settings::firstOrCreate([
'key' => 'SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER',
], [
'value' => '0',
'type' => 'integer',
'description' => 'The minimum amount of credits user has to have to create a server. Can be overridden by package limits.'
]);
//credits display name //credits display name
Settings::firstOrCreate([ Settings::firstOrCreate([
@ -546,16 +553,23 @@ class SettingsSeeder extends Seeder
Settings::firstOrCreate([ Settings::firstOrCreate([
'key' => 'SETTINGS::SYSTEM:SHOW_IMPRINT', 'key' => 'SETTINGS::SYSTEM:SHOW_IMPRINT',
], [ ], [
'value' => "true", 'value' => "false",
'type' => 'boolean', 'type' => 'boolean',
'description' => 'Enable/disable imprint in footer' 'description' => 'Enable/disable imprint in footer'
]); ]);
Settings::firstOrCreate([ Settings::firstOrCreate([
'key' => 'SETTINGS::SYSTEM:SHOW_PRIVACY', 'key' => 'SETTINGS::SYSTEM:SHOW_PRIVACY',
], [ ], [
'value' => "true", 'value' => "false",
'type' => 'boolean', 'type' => 'boolean',
'description' => 'Enable/disable privacy policy in footer' 'description' => 'Enable/disable privacy policy in footer'
]); ]);
Settings::firstOrCreate([
'key' => 'SETTINGS::SYSTEM:SHOW_TOS',
], [
'value' => 'false',
'type' => 'boolean',
'description' => 'Enable/disable Terms of Service in footer',
]);
} }
} }

View file

@ -56,7 +56,11 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="partner_discount">{{__('Partner discount')}}</label> <label for="partner_discount">{{__('Partner discount')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('The discount in percent given to the partner at checkout.')}}"
class="fas fa-info-circle"></i>
</label>
<input value="{{old('partner_discount')}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount" <input value="{{old('partner_discount')}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount"
type="number" step="any" min="0" max="100" type="number" step="any" min="0" max="100"
class="form-control @error('partner_discount') is-invalid @enderror"> class="form-control @error('partner_discount') is-invalid @enderror">
@ -69,7 +73,11 @@
<div class="form-group"> <div class="form-group">
<label for="registered_user_discount">{{__('Registered user discount')}}</label> <label for="registered_user_discount">{{__('Registered user discount')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('The discount in percent given to all users registered using the partners referral link.')}}"
class="fas fa-info-circle"></i>
</label>
<div class="input-group"> <div class="input-group">
<input value="{{old('registered_user_discount')}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount" <input value="{{old('registered_user_discount')}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount"
type="number" class="form-control @error('registered_user_discount') is-invalid @enderror" type="number" class="form-control @error('registered_user_discount') is-invalid @enderror"

View file

@ -58,7 +58,11 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="partner_discount">{{__('Partner discount')}}</label> <label for="partner_discount">{{__('Partner discount')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('The discount in percent given to the partner at checkout.')}}"
class="fas fa-info-circle"></i>
</label>
<input value="{{$partner->partner_discount}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount" <input value="{{$partner->partner_discount}}" placeholder="{{__('Discount in percent')}}" id="partner_discount" name="partner_discount"
type="number" step="any" min="0" max="100" type="number" step="any" min="0" max="100"
class="form-control @error('partner_discount') is-invalid @enderror"> class="form-control @error('partner_discount') is-invalid @enderror">
@ -71,7 +75,11 @@
<div class="form-group"> <div class="form-group">
<label for="registered_user_discount">{{__('Registered user discount')}}</label> <label for="registered_user_discount">{{__('Registered user discount')}}
<i data-toggle="popover" data-trigger="hover"
data-content="{{__('The discount in percent given to all users registered using the partners referral link.')}}"
class="fas fa-info-circle"></i>
</label>
<div class="input-group"> <div class="input-group">
<input value="{{$partner->registered_user_discount}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount" <input value="{{$partner->registered_user_discount}}" placeholder="Discount in percent" id="registered_user_discount" name="registered_user_discount"
type="number" class="form-control @error('registered_user_discount') is-invalid @enderror" type="number" class="form-control @error('registered_user_discount') is-invalid @enderror"

View file

@ -45,7 +45,6 @@
<th>{{ __('Tax Value') }}</th> <th>{{ __('Tax Value') }}</th>
<th>{{ __('Tax Percentage') }}</th> <th>{{ __('Tax Percentage') }}</th>
<th>{{ __('Total Price') }}</th> <th>{{ __('Total Price') }}</th>
<th>{{ __('User') }}</th>
<th>{{ __('Payment ID') }}</th> <th>{{ __('Payment ID') }}</th>
<th>{{ __('Payment Method') }}</th> <th>{{ __('Payment Method') }}</th>
<th>{{ __('Created at') }}</th> <th>{{ __('Created at') }}</th>
@ -74,20 +73,19 @@
serverSide: true, serverSide: true,
stateSave: true, stateSave: true,
ajax: "{{ route('admin.payments.datatable') }}", ajax: "{{ route('admin.payments.datatable') }}",
order: [[ 9, "desc" ]], order: [[ 10, "desc" ]],
columns: [ columns: [
{data: 'id',name: 'payments.id'}, {data: 'id',name: 'payments.id'},
{data: 'type'}, {data: 'type'},
{data: 'user', sortable: false}, {data: 'user'},
{data: 'amount'}, {data: 'amount'},
{data: 'price'}, {data: 'price'},
{data: 'tax_value'}, {data: 'tax_value'},
{data: 'tax_percent'}, {data: 'tax_percent'},
{data: 'total_price'}, {data: 'total_price'},
{data: 'user'},
{data: 'payment_id'}, {data: 'payment_id'},
{data: 'payment_method'}, {data: 'payment_method'},
{data: 'created_at'}, {data: 'created_at', type: 'num', render: {_: 'display', sort: 'raw'}},
{data: 'actions' , sortable : false}, {data: 'actions' , sortable : false},
], ],
fnDrawCallback: function(oSettings) { fnDrawCallback: function(oSettings) {

View file

@ -52,6 +52,7 @@
<th>{{__('Backups')}}</th> <th>{{__('Backups')}}</th>
<th>{{__('Nodes')}}</th> <th>{{__('Nodes')}}</th>
<th>{{__('Eggs')}}</th> <th>{{__('Eggs')}}</th>
<th>{{__('Min Credits')}}</th>
<th>{{__('Servers')}}</th> <th>{{__('Servers')}}</th>
<th>{{__('Created at')}}</th> <th>{{__('Created at')}}</th>
<th></th> <th></th>
@ -99,6 +100,7 @@
{data: "backups"}, {data: "backups"},
{data: "nodes", sortable: false}, {data: "nodes", sortable: false},
{data: "eggs", sortable: false}, {data: "eggs", sortable: false},
{data: "minimum_credits"},
{data: "servers", sortable: false}, {data: "servers", sortable: false},
{data: "created_at"}, {data: "created_at"},
{data: "actions", sortable: false} {data: "actions", sortable: false}

View file

@ -258,16 +258,16 @@
data-content="{{ __('If a referred user buys credits, the referral-user will get x% of the Credits the referred user bought') }}" class="fas fa-info-circle"></i> data-content="{{ __('If a referred user buys credits, the referral-user will get x% of the Credits the referred user bought') }}" class="fas fa-info-circle"></i>
</label> </label>
<input x-model="referral_percentage" id="referral_percentage" name="referral_percentage" <input x-model="referral_percentage" id="referral_percentage" name="referral_percentage"
type="number" value="{{ config('SETTINGS::REFERRAL:PERCENTAGE') }}" type="number" min="0" max="99999999" value="{{ config('SETTINGS::REFERRAL:PERCENTAGE') }}"
class="form-control @error('referral_percentage') is-invalid @enderror"> class="form-control @error('referral_percentage') is-invalid @enderror">
</div> </div>
</div> </div>
<div class="form-group mb-3"> <div class="form-group mb-3">
<div class="custom-control p-0"> <div class="custom-control p-0">
<label for="referral_reward">{{ __('Referral reward in') }} {{ config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME', 'Credits') }} {{__("(only for sign-up-mode)")}}:</label> <label for="referral_reward">{{ __('Referral reward in') }} {{ config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME', 'Credits') }} {{__("(only for sign-up-mode)")}}:</label>
<input x-model="referral_reward" id="referral_reward" name="referral_reward" <input x-model="referral_reward" id="referral_reward" name="referral_reward"
type="number" value="{{ config('SETTINGS::REFERRAL::REWARD') }}" type="number" min="0" max="99999999" value="{{ config('SETTINGS::REFERRAL::REWARD') }}"
class="form-control @error('referral_reward') is-invalid @enderror"> class="form-control @error('referral_reward') is-invalid @enderror">
</div> </div>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">

View file

@ -130,7 +130,7 @@
data-content="Tax Value that will be added to the total price of the order. <br><br> Example: 19 results in (19%)" data-content="Tax Value that will be added to the total price of the order. <br><br> Example: 19 results in (19%)"
class="fas fa-info-circle"></i> class="fas fa-info-circle"></i>
</div> </div>
<input x-model="sales-tax" id="sales-tax" name="sales-tax" type="number" step=".01" <input x-model="sales-tax" id="sales-tax" name="sales-tax" type="number" step="0.01" min="0" max="99999999"
value="{{ config('SETTINGS::PAYMENTS:SALES_TAX') }}" value="{{ config('SETTINGS::PAYMENTS:SALES_TAX') }}"
class="form-control @error('sales-tax') is-invalid @enderror"> class="form-control @error('sales-tax') is-invalid @enderror">
</div> </div>

View file

@ -113,7 +113,7 @@
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<div class="col m-0 p-0 d-flex justify-content-between align-items-center"> <div class="col m-0 p-0 d-flex justify-content-between align-items-center">
<label for="per-page-limit">{{ __('Pterodactyl API perPage limit') }}</label> <label for="per-page-limit">{{ __('Pterodactyl API perPage limit') }}</label>
<i data-toggle="popover" data-trigger="hover" data-html="true" <i data-toggle="popover" data-trigger="hover" data-html="true" type="number" min="0" max="99999999"
data-content="{{ __('The Pterodactyl API perPage limit. It is necessary to set it higher than your server count.') }}" data-content="{{ __('The Pterodactyl API perPage limit. It is necessary to set it higher than your server count.') }}"
class="fas fa-info-circle"></i> class="fas fa-info-circle"></i>
</div> </div>
@ -189,20 +189,20 @@
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="initial-credits">{{ __('Initial Credits') }}</label> <label for="initial-credits">{{ __('Initial Credits') }}</label>
<input x-model="initial-credits" id="initial-credits" name="initial-credits" type="number" <input x-model="initial-credits" id="initial-credits" name="initial-credits" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:INITIAL_CREDITS') }}" value="{{ config('SETTINGS::USER:INITIAL_CREDITS') }}"
class="form-control @error('initial-credits') is-invalid @enderror" required> class="form-control @error('initial-credits') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="initial-server-limit">{{ __('Initial Server Limit') }}</label> <label for="initial-server-limit">{{ __('Initial Server Limit') }}</label>
<input x-model="initial-server-limit" id="initial-server-limit" name="initial-server-limit" <input x-model="initial-server-limit" id="initial-server-limit" name="initial-server-limit" type="number" min="0" max="99999999"
type="number" value="{{ config('SETTINGS::USER:INITIAL_SERVER_LIMIT') }}" value="{{ config('SETTINGS::USER:INITIAL_SERVER_LIMIT') }}"
class="form-control @error('initial-server-limit') is-invalid @enderror" required> class="form-control @error('initial-server-limit') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="credits-reward-amount-discord">{{ __('Credits Reward Amount - Discord') }}</label> <label for="credits-reward-amount-discord">{{ __('Credits Reward Amount - Discord') }}</label>
<input x-model="credits-reward-amount-discord" id="credits-reward-amount-discord" <input x-model="credits-reward-amount-discord" id="credits-reward-amount-discord"
name="credits-reward-amount-discord" type="number" name="credits-reward-amount-discord" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD') }}" value="{{ config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_DISCORD') }}"
class="form-control @error('credits-reward-amount-discord') is-invalid @enderror" required> class="form-control @error('credits-reward-amount-discord') is-invalid @enderror" required>
</div> </div>
@ -210,28 +210,28 @@
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="credits-reward-amount-email">{{ __('Credits Reward Amount - E-Mail') }}</label> <label for="credits-reward-amount-email">{{ __('Credits Reward Amount - E-Mail') }}</label>
<input x-model="credits-reward-amount-email" id="credits-reward-amount-email" <input x-model="credits-reward-amount-email" id="credits-reward-amount-email"
name="credits-reward-amount-email" type="number" name="credits-reward-amount-email" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL') }}" value="{{ config('SETTINGS::USER:CREDITS_REWARD_AFTER_VERIFY_EMAIL') }}"
class="form-control @error('credits-reward-amount-email') is-invalid @enderror" required> class="form-control @error('credits-reward-amount-email') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="server-limit-discord">{{ __('Server Limit Increase - Discord') }}</label> <label for="server-limit-discord">{{ __('Server Limit Increase - Discord') }}</label>
<input x-model="server-limit-discord" id="server-limit-discord" name="server-limit-discord" <input x-model="server-limit-discord" id="server-limit-discord" name="server-limit-discord"
type="number" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD') }}" value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_DISCORD') }}"
class="form-control @error('server-limit-discord') is-invalid @enderror" required> class="form-control @error('server-limit-discord') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="server-limit-email">{{ __('Server Limit Increase - E-Mail') }}</label> <label for="server-limit-email">{{ __('Server Limit Increase - E-Mail') }}</label>
<input x-model="server-limit-email" id="server-limit-email" name="server-limit-email" <input x-model="server-limit-email" id="server-limit-email" name="server-limit-email"
type="number" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL') }}" value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL') }}"
class="form-control @error('server-limit-email') is-invalid @enderror" required> class="form-control @error('server-limit-email') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<label for="server-limit-purchase">{{ __('Server Limit after Credits Purchase') }}</label> <label for="server-limit-purchase">{{ __('Server Limit after Credits Purchase') }}</label>
<input x-model="server-limit-purchase" id="server-limit-purchase" <input x-model="server-limit-purchase" id="server-limit-purchase"
name="server-limit-purchase" type="number" name="server-limit-purchase" type="number" min="0" max="99999999"
value="{{ config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') }}" value="{{ config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') }}"
class="form-control @error('server-limit-purchase') is-invalid @enderror" required> class="form-control @error('server-limit-purchase') is-invalid @enderror" required>
</div> </div>
@ -278,15 +278,26 @@
<div class="form-group"> <div class="form-group">
<div class="custom-control mb-3 p-0"> <div class="custom-control mb-3 p-0">
<div class="col m-0 p-0 d-flex justify-content-between align-items-center"> <div class="col m-0 p-0 d-flex justify-content-between align-items-center">
<label for="initial-credits">{{ __('Server Allocation Limit') }}</label> <label for="allocation-limit">{{ __('Server Allocation Limit') }}</label>
<i data-toggle="popover" data-trigger="hover" data-html="true" <i data-toggle="popover" data-trigger="hover" data-html="true"
data-content="{{ __('The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!') }}" data-content="{{ __('The maximum amount of allocations to pull per node for automatic deployment, if more allocations are being used than this limit is set to, no new servers can be created!') }}"
class="fas fa-info-circle"></i> class="fas fa-info-circle"></i>
</div> </div>
<input x-model="allocation-limit" id="allocation-limit" name="allocation-limit" <input x-model="allocation-limit" id="allocation-limit" name="allocation-limit"
type="number" value="{{ config('SETTINGS::SERVER:ALLOCATION_LIMIT') }}" type="number" min="0" max="99999999" value="{{ config('SETTINGS::SERVER:ALLOCATION_LIMIT') }}"
class="form-control @error('allocation-limit') is-invalid @enderror" required> class="form-control @error('allocation-limit') is-invalid @enderror" required>
</div> </div>
<div class="custom-control mb-3 p-0">
<div class="col m-0 p-0 d-flex justify-content-between align-items-center">
<label for="minimum-credits">{{ __('Minimum credits') }}</label>
<i data-toggle="popover" data-trigger="hover" data-html="true"
data-content="{{ __('The minimum amount of credits user has to have to create a server. Can be overridden by package limits.') }}"
class="fas fa-info-circle"></i>
</div>
<input x-model="minimum-credits" id="minimum-credits" name="minimum-credits"
type="number" min="0" max="99999999" value="{{ config('SETTINGS::USER:MINIMUM_REQUIRED_CREDITS_TO_MAKE_SERVER') }}"
class="form-control @error('minimum-credits') is-invalid @enderror" required>
</div>
</div> </div>
</div> </div>

View file

@ -8,7 +8,7 @@
City<br> City<br>
Country<br> Country<br>
Phone: +00 000 000 000<br> Phone: +00 000 000 000<br>
Email: <a href="mailto">[email protected]</a> Email: PUT YOUR EMAIL HERE</a>
</p> </p>
<p> <p>

View file

@ -40,6 +40,7 @@
<th>{{__('Category')}}</th> <th>{{__('Category')}}</th>
<th>{{__('Title')}}</th> <th>{{__('Title')}}</th>
<th>{{__('User')}}</th> <th>{{__('User')}}</th>
<th>{{__('Priority')}}</th>
<th>{{__('Status')}}</th> <th>{{__('Status')}}</th>
<th>{{__('Last Updated')}}</th> <th>{{__('Last Updated')}}</th>
<th>{{__('Actions')}}</th> <th>{{__('Actions')}}</th>
@ -69,12 +70,14 @@
serverSide: true, serverSide: true,
stateSave: true, stateSave: true,
ajax: "{{route('moderator.ticket.datatable')}}", ajax: "{{route('moderator.ticket.datatable')}}",
order: [[ 4, "desc" ]],
columns: [ columns: [
{data: 'category'}, {data: 'category'},
{data: 'title'}, {data: 'title'},
{data: 'user_id'}, {data: 'user_id'},
{data: 'priority'},
{data: 'status'}, {data: 'status'},
{data: 'updated_at'}, {data: 'updated_at', type: 'num', render: {_: 'display', sort: 'raw'}},
{data: 'actions', sortable: false}, {data: 'actions', sortable: false},
], ],
fnDrawCallback: function( oSettings ) { fnDrawCallback: function( oSettings ) {

View file

@ -312,15 +312,14 @@
</section> </section>
<!-- END CONTENT --> <!-- END CONTENT -->
<script> <script>
document.getElementById("confirmDeleteButton").onclick=async ()=>{ document.getElementById("confirmDeleteButton").onclick=async ()=>{
const {value: enterConfirm} = await Swal.fire({ const {value: enterConfirm} = await Swal.fire({
input: 'text', input: 'text',
inputLabel: '{{__("Are you sure you want to permanently delete your account and all of your servers?")}} \n Type "delete my account" in the Box below', inputLabel: '{{__("Are you sure you want to permanently delete your account and all of your servers?")}} \n Type "{{__('Delete my account')}}" in the Box below',
inputPlaceholder: 'delete my account', inputPlaceholder: "{{__('Delete my account')}}",
showCancelButton: true showCancelButton: true
}) })
if (enterConfirm === "delete my account") { if (enterConfirm === "{{__('Delete my account')}}") {
Swal.fire("{{__('Account has been destroyed')}}", '', 'error') Swal.fire("{{__('Account has been destroyed')}}", '', 'error')
$.ajax({ $.ajax({
type: "POST", type: "POST",
@ -336,7 +335,7 @@
location.reload(); location.reload();
} else { } else {
Swal.fire("{{__('Account has not been destroyed')}}", '', 'info') Swal.fire("{{__('Account was NOT deleted.')}}", '', 'info')
} }

View file

@ -36,6 +36,13 @@
class="fa fa-plus mr-2"></i> class="fa fa-plus mr-2"></i>
{{ __('Create Server') }} {{ __('Create Server') }}
</a> </a>
@if (Auth::user()->Servers->count() > 0&&!empty(config('SETTINGS::MISC:PHPMYADMIN:URL')))
<a
href="{{ config('SETTINGS::MISC:PHPMYADMIN:URL') }}" target="_blank"
class="btn btn-secondary ml-2"><i title="manage"
class="fas fa-database mr-2"></i><span>{{ __('Database') }}</span>
</a>
@endif
</div> </div>
<div class="row d-flex flex-row justify-content-center justify-content-md-start"> <div class="row d-flex flex-row justify-content-center justify-content-md-start">
@ -47,25 +54,6 @@
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<h5 class="card-title mt-1">{{ $server->name }} <h5 class="card-title mt-1">{{ $server->name }}
</h5> </h5>
<div class="card-tools mt-1">
<div class="dropdown no-arrow">
<a href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<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">
@if (!empty(config('SETTINGS::MISC:PHPMYADMIN:URL')))
<a href="{{ config('SETTINGS::MISC:PHPMYADMIN:URL') }}"
class="dropdown-item text-info" target="__blank"><i title="manage"
class="fas fa-database mr-2"></i><span>{{ __('Database') }}</span></a>
@endif
<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>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View file

@ -113,7 +113,8 @@
</div> </div>
</div> </div>
<div class="card"> <div class="card">
<div class="card-header d-flex justify-content-between"> <div class="card-header">
<h5 class="card-title float-right"><i title="Created at" class="fas fa-calendar-alt mr-2"></i><span>{{ $server->created_at->isoFormat('LL') }}</span></h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Server Information')}}</h5> <h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Server Information')}}</h5>
</div> </div>
<div class="card-body"> <div class="card-body">

View file

@ -41,6 +41,7 @@
<tr> <tr>
<th>{{__('Category')}}</th> <th>{{__('Category')}}</th>
<th>{{__('Title')}}</th> <th>{{__('Title')}}</th>
<th>{{__('Priority')}}</th>
<th>{{__('Status')}}</th> <th>{{__('Status')}}</th>
<th>{{__('Last Updated')}}</th> <th>{{__('Last Updated')}}</th>
</tr> </tr>
@ -61,8 +62,8 @@
class="fas fa-info-circle"></i></h5> class="fas fa-info-circle"></i></h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<p>Can't start your server? Need an additional port? Do you have any other questions? Let us know by <p>{{__("Can't start your server? Need an additional port? Do you have any other questions? Let us know by
opening a ticket.</p> opening a ticket.")}}</p>
</div> </div>
</div> </div>
@ -84,6 +85,7 @@
columns: [ columns: [
{data: 'category'}, {data: 'category'},
{data: 'title'}, {data: 'title'},
{data: 'priority'},
{data: 'status'}, {data: 'status'},
{data: 'updated_at', sortable: false}, {data: 'updated_at', sortable: false},
], ],

View file

@ -51,6 +51,17 @@
@endif @endif
</p> </p>
<p><b>Created on:</b> {{ $ticket->created_at->diffForHumans() }}</p> <p><b>Created on:</b> {{ $ticket->created_at->diffForHumans() }}</p>
@if($ticket->status!='Closed')
<form class="d-inline" method="post"
action="{{route('ticket.close', ['ticket_id' => $ticket->ticket_id ])}}">
{{csrf_field()}}
{{method_field("POST") }}
<button data-content="{{__("Close")}}" data-toggle="popover"
data-trigger="hover" data-placement="top"
class="btn btn-sm text-white btn-warning mr-1"><i
class="fas fa-times"></i>{{__("Close")}}</button>
</form>
@endif
</div> </div>
</div> </div>
</div> </div>

View file

@ -111,6 +111,7 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
Route::post('ticket/new', [TicketsController::class, 'store'])->middleware(['throttle:ticket-new'])->name('ticket.new.store'); Route::post('ticket/new', [TicketsController::class, 'store'])->middleware(['throttle:ticket-new'])->name('ticket.new.store');
Route::get('ticket/show/{ticket_id}', [TicketsController::class, 'show'])->name('ticket.show'); Route::get('ticket/show/{ticket_id}', [TicketsController::class, 'show'])->name('ticket.show');
Route::post('ticket/reply', [TicketsController::class, 'reply'])->middleware(['throttle:ticket-reply'])->name('ticket.reply'); Route::post('ticket/reply', [TicketsController::class, 'reply'])->middleware(['throttle:ticket-reply'])->name('ticket.reply');
Route::post('ticket/close/{ticket_id}', [TicketsController::class, 'close'])->name('ticket.close');
} }
#admin #admin