فهرست منبع

many many fixes

ok236449 2 سال پیش
والد
کامیت
7ca842e712

+ 1 - 0
app/Classes/Settings/System.php

@@ -72,6 +72,7 @@ public function checkPteroClientkey(){
             "SETTINGS::SYSTEM:SERVER_CREATE_CHARGE_FIRST_HOUR" => "server-create-charge-first-hour",
             "SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME" => "credits-display-name",
             "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_EMAIL_VERIFICATION" => "force-email-verification",
             "SETTINGS::USER:INITIAL_CREDITS" => "initial-credits",

+ 3 - 2
app/Http/Controllers/Admin/PaymentController.php

@@ -673,7 +673,7 @@ class PaymentController extends Controller
         $query = Payment::with('user');
 
         return datatables($query)
-            ->editColumn('user', function (Payment $payment) {
+            ->addColumn('user', function (Payment $payment) {
                 return 
                 ($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) {
-                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) {
                 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>';

+ 3 - 0
app/Http/Controllers/Admin/ProductController.php

@@ -228,6 +228,9 @@ class ProductController extends Controller
                        </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) {
                 return $product->created_at ? $product->created_at->diffForHumans() : '';
             })

+ 6 - 2
app/Http/Controllers/Moderation/TicketsController.php

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

+ 10 - 0
app/Http/Controllers/TicketsController.php

@@ -92,6 +92,13 @@ class TicketsController extends Controller
         Notification::send($admin, new AdminReplyNotification($ticket, $user, $newmessage));
         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()
     {
@@ -122,6 +129,9 @@ class TicketsController extends Controller
 
                 return '<span class="badge ' . $badgeColor . '">' . $tickets->status . '</span>';
             })
+            ->editColumn('priority', function (Ticket $tickets) {
+                return __($tickets->priority);
+            })
             ->editColumn('updated_at', function (Ticket $tickets) {
                 return $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '';
             })

+ 16 - 2
database/seeders/Seeds/SettingsSeeder.php

@@ -118,6 +118,13 @@ class SettingsSeeder extends Seeder
             '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!'
         ]);
+        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
         Settings::firstOrCreate([
@@ -546,16 +553,23 @@ class SettingsSeeder extends Seeder
         Settings::firstOrCreate([
             'key'   => 'SETTINGS::SYSTEM:SHOW_IMPRINT',
         ], [
-            'value' => "true",
+            'value' => "false",
             'type'  => 'boolean',
             'description'  => 'Enable/disable imprint in footer'
         ]);
         Settings::firstOrCreate([
             'key'   => 'SETTINGS::SYSTEM:SHOW_PRIVACY',
         ], [
-            'value' => "true",
+            'value' => "false",
             'type'  => 'boolean',
             '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',
+        ]);
     }
 }

+ 10 - 2
resources/views/admin/partners/create.blade.php

@@ -56,7 +56,11 @@
                                 </div>
 
                                 <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"
                                            type="number" step="any" min="0" max="100"
                                            class="form-control @error('partner_discount') is-invalid @enderror">
@@ -69,7 +73,11 @@
 
 
                                 <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">
                                         <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"

+ 10 - 2
resources/views/admin/partners/edit.blade.php

@@ -58,7 +58,11 @@
                                 </div>
 
                                 <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"
                                            type="number" step="any" min="0" max="100"
                                            class="form-control @error('partner_discount') is-invalid @enderror">
@@ -71,7 +75,11 @@
 
 
                                 <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">
                                         <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"

+ 3 - 5
resources/views/admin/payments/index.blade.php

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

+ 2 - 0
resources/views/admin/products/index.blade.php

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

+ 4 - 4
resources/views/admin/settings/tabs/misc.blade.php

@@ -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>
                         </label>
                         <input x-model="referral_percentage" id="referral_percentage" name="referral_percentage"
-                               type="number" value="{{ config('SETTINGS::REFERRAL:PERCENTAGE') }}"
-                               class="form-control @error('referral_percentage') is-invalid @enderror">
+                            type="number" min="0" max="99999999" value="{{ config('SETTINGS::REFERRAL:PERCENTAGE') }}"
+                            class="form-control @error('referral_percentage') is-invalid @enderror">
                     </div>
                 </div>
                 <div class="form-group mb-3">
                     <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>
                         <input x-model="referral_reward" id="referral_reward" name="referral_reward"
-                               type="number" value="{{ config('SETTINGS::REFERRAL::REWARD') }}"
-                               class="form-control @error('referral_reward') is-invalid @enderror">
+                            type="number" min="0" max="99999999" value="{{ config('SETTINGS::REFERRAL::REWARD') }}"
+                            class="form-control @error('referral_reward') is-invalid @enderror">
                     </div>
                 </div>
                 <div class="custom-control mb-3 p-0">

+ 1 - 1
resources/views/admin/settings/tabs/payment.blade.php

@@ -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%)"
                                 class="fas fa-info-circle"></i>
                         </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') }}"
                             class="form-control @error('sales-tax') is-invalid @enderror">
                     </div>

+ 22 - 11
resources/views/admin/settings/tabs/system.blade.php

@@ -113,7 +113,7 @@
                     <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="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.') }}"
                                 class="fas fa-info-circle"></i>
                         </div>
@@ -189,20 +189,20 @@
 
                     <div class="custom-control mb-3 p-0">
                         <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') }}"
                             class="form-control @error('initial-credits') is-invalid @enderror" required>
                     </div>
                     <div class="custom-control mb-3 p-0">
                         <label for="initial-server-limit">{{ __('Initial Server Limit') }}</label>
-                        <input x-model="initial-server-limit" id="initial-server-limit" name="initial-server-limit"
-                            type="number" value="{{ config('SETTINGS::USER:INITIAL_SERVER_LIMIT') }}"
+                        <input x-model="initial-server-limit" id="initial-server-limit" name="initial-server-limit" type="number" min="0" max="99999999" 
+                            value="{{ config('SETTINGS::USER:INITIAL_SERVER_LIMIT') }}"
                             class="form-control @error('initial-server-limit') is-invalid @enderror" required>
                     </div>
                     <div class="custom-control mb-3 p-0">
                         <label for="credits-reward-amount-discord">{{ __('Credits Reward Amount - Discord') }}</label>
                         <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') }}"
                             class="form-control @error('credits-reward-amount-discord') is-invalid @enderror" required>
                     </div>
@@ -210,28 +210,28 @@
                     <div class="custom-control mb-3 p-0">
                         <label for="credits-reward-amount-email">{{ __('Credits Reward Amount - E-Mail') }}</label>
                         <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') }}"
                             class="form-control @error('credits-reward-amount-email') is-invalid @enderror" required>
                     </div>
                     <div class="custom-control mb-3 p-0">
                         <label for="server-limit-discord">{{ __('Server Limit Increase - Discord') }}</label>
                         <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') }}"
                             class="form-control @error('server-limit-discord') is-invalid @enderror" required>
                     </div>
                     <div class="custom-control mb-3 p-0">
                         <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"
-                            type="number"
+                            type="number" min="0" max="99999999"
                             value="{{ config('SETTINGS::USER:SERVER_LIMIT_REWARD_AFTER_VERIFY_EMAIL') }}"
                             class="form-control @error('server-limit-email') is-invalid @enderror" required>
                     </div>
                     <div class="custom-control mb-3 p-0">
                         <label for="server-limit-purchase">{{ __('Server Limit after Credits Purchase') }}</label>
                         <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') }}"
                             class="form-control @error('server-limit-purchase') is-invalid @enderror" required>
                     </div>
@@ -278,15 +278,26 @@
                 <div class="form-group">
                     <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="initial-credits">{{ __('Server Allocation Limit') }}</label>
+                            <label for="allocation-limit">{{ __('Server Allocation Limit') }}</label>
                             <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!') }}"
                                 class="fas fa-info-circle"></i>
                         </div>
                         <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>
                     </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>
 

+ 1 - 1
resources/views/information/imprint-content.blade.php

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

+ 4 - 1
resources/views/moderator/ticket/index.blade.php

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

+ 4 - 5
resources/views/profile/index.blade.php

@@ -312,15 +312,14 @@
         </section>
         <!-- END CONTENT -->
     <script>
-
         document.getElementById("confirmDeleteButton").onclick=async ()=>{
                 const {value: enterConfirm} = await Swal.fire({
                     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',
-                    inputPlaceholder: 'delete my account',
+                    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')}}",
                     showCancelButton: true
                 })
-                if (enterConfirm === "delete my account") {
+                if (enterConfirm === "{{__('Delete my account')}}") {
                     Swal.fire("{{__('Account has been destroyed')}}", '', 'error')
                     $.ajax({
                         type: "POST",
@@ -336,7 +335,7 @@
                     location.reload();
 
                 } else {
-                    Swal.fire("{{__('Account has not been destroyed')}}", '', 'info')
+                    Swal.fire("{{__('Account was NOT deleted.')}}", '', 'info')
 
                 }
 

+ 7 - 19
resources/views/servers/index.blade.php

@@ -36,6 +36,13 @@
                         class="fa fa-plus mr-2"></i>
                     {{ __('Create Server') }}
                 </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 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">
                                     <h5 class="card-title mt-1">{{ $server->name }}
                                     </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 class="card-body">

+ 2 - 1
resources/views/servers/settings.blade.php

@@ -113,7 +113,8 @@
                 </div>
             </div>
             <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>
                 </div>
                 <div class="card-body">

+ 4 - 2
resources/views/ticket/index.blade.php

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

+ 11 - 0
resources/views/ticket/show.blade.php

@@ -51,6 +51,17 @@
                                     @endif
                                 </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>

+ 1 - 0
routes/web.php

@@ -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::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/close/{ticket_id}', [TicketsController::class, 'close'])->name('ticket.close');
     }
 
     #admin