fully translateable backend

This commit is contained in:
1Day 2021-12-13 10:12:32 +01:00
parent 88eafb72c5
commit 70828b6d48
12 changed files with 507 additions and 414 deletions

View file

@ -61,6 +61,7 @@
"Minimum": "Mindest", "Minimum": "Mindest",
"IO": "IO", "IO": "IO",
"Databases": "Datenbanken", "Databases": "Datenbanken",
"Database": "Datenbank",
"Backups": "Backups", "Backups": "Backups",
"Allocations": "Port Zuweisungen", "Allocations": "Port Zuweisungen",
"Disabled": "Deaktiviert", "Disabled": "Deaktiviert",
@ -97,8 +98,52 @@
"Active": "Aktiv", "Active": "Aktiv",
"Paypal is not configured.": "Paypal ist nicht konfiguriert!", "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" "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"
} }

View file

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

View file

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

View file

@ -6,13 +6,13 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Useful Links</h1> <h1>{{__('Useful Links')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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" <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> </ol>
</div> </div>
</div> </div>
@ -27,9 +27,9 @@
<div class="card-header"> <div class="card-header">
<div class="d-flex justify-content-between"> <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 <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>
</div> </div>
@ -37,11 +37,11 @@
<table id="datatable" class="table table-striped"> <table id="datatable" class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>description</th> <th>{{__('description')}}</th>
<th width="50">Icon</th> <th width="50">{{__('Icon')}}</th>
<th>Title</th> <th>{{__('Title')}}</th>
<th>Link</th> <th>{{__('Link')}}</th>
<th>Created at</th> <th>{{__('Created at')}}</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
@ -61,7 +61,7 @@
<script> <script>
function submitResult() { 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 () { document.addEventListener("DOMContentLoaded", function () {

View file

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

View file

@ -6,12 +6,12 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Users</h1> <h1>{{__('Users')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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.users.index')}}">Users</a></li> <li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
</ol> </ol>
</div> </div>
</div> </div>
@ -27,9 +27,9 @@
<div class="card-header"> <div class="card-header">
<div class="d-flex justify-content-between"> <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 <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>
</div> </div>
@ -41,14 +41,14 @@
<th>discordId</th> <th>discordId</th>
<th>ip</th> <th>ip</th>
<th>pterodactyl_id</th> <th>pterodactyl_id</th>
<th>Avatar</th> <th>{{__('Avatar')}}</th>
<th>Name</th> <th>{{__('Name')}}</th>
<th>Role</th> <th>{{__('Role')}}</th>
<th>Email</th> <th>{{__('Email')}}</th>
<th>{{CREDITS_DISPLAY_NAME}}</th> <th>{{CREDITS_DISPLAY_NAME}}</th>
<th>Servers</th> <th>{{__('Servers')}}</th>
<th>Verified</th> <th>{{__('Verified')}}</th>
<th>Last seen</th> <th>{{__('Last seen')}}</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>

View file

@ -5,14 +5,14 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Users</h1> <h1>{{__('Users')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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 href="{{route('admin.users.index')}}">Users</a></li> <li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" <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> </ol>
</div> </div>
</div> </div>
@ -33,11 +33,11 @@
@method('POST') @method('POST')
<div class="form-group"> <div class="form-group">
<label>Users</label><br> <label>{{__('Users')}}</label><br>
<input id="all" name="all" <input id="all" name="all"
type="checkbox" value="1" type="checkbox" value="1"
onchange="toggleClass('users-form', 'd-none')"> onchange="toggleClass('users-form', 'd-none')">
<label for="all">All</label> <label for="all">{{__('All')}}</label>
<div id="users-form"> <div id="users-form">
<select id="users" name="users[]" class="form-control" multiple></select> <select id="users" name="users[]" class="form-control" multiple></select>
</div> </div>
@ -54,14 +54,14 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Send via</label><br> <label>{{__('Send via')}}</label><br>
<input value="database" id="database" name="via[]" <input value="database" id="database" name="via[]"
type="checkbox"> type="checkbox">
<label for="database">Database</label> <label for="database">{{__('Database')}}</label>
<br> <br>
<input value="mail" id="mail" name="via[]" <input value="mail" id="mail" name="via[]"
type="checkbox"> type="checkbox">
<label for="mail">Mail</label> <label for="mail">{{__('Email')}}</label>
@error('via') @error('via')
<div class="invalid-feedback d-block"> <div class="invalid-feedback d-block">
{{$message}} {{$message}}
@ -70,7 +70,7 @@
</div> </div>
<div class="form-group" > <div class="form-group" >
<label for="title">Title</label> <label for="title">{{__('Title')}}</label>
<input value="{{old('title')}}" id="title" name="title" <input value="{{old('title')}}" id="title" name="title"
type="text" type="text"
class="form-control @error('title') is-invalid @enderror"> class="form-control @error('title') is-invalid @enderror">
@ -81,7 +81,7 @@
@enderror @enderror
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="content">Content</label> <label for="content">{{__('Content')}}</label>
<textarea id="content" <textarea id="content"
name="content" name="content"
type="content" type="content"
@ -95,7 +95,7 @@
@enderror @enderror
</div> </div>
<div class="form-group text-right"> <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>
</form> </form>
</div> </div>
@ -162,7 +162,7 @@
$container.find(".select2-result-users__username").text(data.name); $container.find(".select2-result-users__username").text(data.name);
$container.find(".select2-result-users__email").text(data.email); $container.find(".select2-result-users__email").text(data.email);
return $container; return $container;
}, },
templateSelection: function (data) { templateSelection: function (data) {
$container = $('<div> \ $container = $('<div> \
@ -172,7 +172,7 @@
<span class="select2-selection-users__username" style="padding-left:10px;padding-right:10px;"></span> \ <span class="select2-selection-users__username" style="padding-left:10px;padding-right:10px;"></span> \
</div>'); </div>');
$container.find(".select2-selection-users__username").text(data.name); $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="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Users</h1> <h1{{__('Users')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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 href="{{route('admin.users.index')}}">Users</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 class="text-muted" href="{{route('admin.users.show' , $user->id)}}">{{__('Show')}}</a></li>
</ol> </ol>
</div> </div>
</div> </div>
@ -47,7 +47,7 @@
<div class="card"> <div class="card">
<div class="card-header"> <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>
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
@ -55,7 +55,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>ID</label> <label>{{__('ID')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -68,7 +68,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Role</label> <label>{{__('Role')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" <span style="max-width: 250px;"
@ -82,7 +82,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Pterodactyl ID</label> <label>{{__('Pterodactyl ID')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -95,7 +95,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Email</label> <label>{{__('Email')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -109,7 +109,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Server limit</label> <label>{{__('Server limit')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -122,7 +122,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Name</label> <label>{{__('Name')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -135,7 +135,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Verified Email</label> <label>{{__('Verified')}} {{__('Email')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -161,7 +161,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Verified Discord</label> <label>{{__('Verified')}} {{__('Discord')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -174,7 +174,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Usage</label> <label>{{__('Usage')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -188,7 +188,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>IP</label> <label>{{__('IP')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -201,7 +201,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Created At</label> <label>{{__('Created at')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -217,7 +217,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<label>Last seen</label> <label>{{__('Last seen')}}</label>
</div> </div>
<div class="col-lg-8"> <div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate"> <span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -237,7 +237,7 @@
<div class="card"> <div class="card">
<div class="card-header"> <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>
<div class="card-body table-responsive"> <div class="card-body table-responsive">

View file

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

View file

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

View file

@ -6,13 +6,13 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Vouchers</h1> <h1>{{__('Vouchers')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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" <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> </ol>
</div> </div>
</div> </div>
@ -28,9 +28,9 @@
<div class="card-header"> <div class="card-header">
<div class="d-flex justify-content-between"> <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 <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>
</div> </div>
@ -39,12 +39,12 @@
<table id="datatable" class="table table-striped"> <table id="datatable" class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>Status</th> <th>{{__('Status')}}</th>
<th>Code</th> <th>{{__('Code')}}</th>
<th>Memo</th> <th>{{__('Memo')}}</th>
<th>{{CREDITS_DISPLAY_NAME}}</th> <th>{{CREDITS_DISPLAY_NAME}}</th>
<th>Used / Uses</th> <th>{{__('Used / Uses')}}</th>
<th>Expires</th> <th>{{__('Expires')}}</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
@ -64,7 +64,7 @@
<script> <script>
function submitResult() { 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 () { document.addEventListener("DOMContentLoaded", function () {

View file

@ -6,14 +6,14 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1>Vouchers</h1> <h1>{{__('Vouchers')}}</h1>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<ol class="breadcrumb float-sm-right"> <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 href="{{ route('admin.vouchers.index') }}">Vouchers</a></li> <li class="breadcrumb-item"><a href="{{ route('admin.vouchers.index') }}">{{__('Vouchers')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" <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> </ol>
</div> </div>
</div> </div>
@ -29,7 +29,7 @@
<div class="card-header"> <div class="card-header">
<div class="d-flex justify-content-between"> <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>
</div> </div>
@ -38,11 +38,11 @@
<table id="datatable" class="table table-striped"> <table id="datatable" class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>{{__('ID')}}</th>
<th>Name</th> <th>{{__('Name')}}</th>
<th>Email</th> <th>{{__('Email')}}</th>
<th>{{ CREDITS_DISPLAY_NAME }}</th> <th>{{ CREDITS_DISPLAY_NAME }}</th>
<th>Last Seen</th> <th>{{__('Last seen')}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>