Merge branch 'develop' into feature/option-scripts
# Conflicts: # app/Http/Routes/AdminRoutes.php # app/Http/Routes/DaemonRoutes.php # app/Models/ServiceOption.php
This commit is contained in:
commit
8d24e5f168
683 changed files with 8854 additions and 12362 deletions
|
@ -11,10 +11,11 @@ return [
|
|||
'reset_password_text' => 'Reset your account password.',
|
||||
'reset_password' => 'Reset Account Password',
|
||||
'email_sent' => 'An email has been sent to you with further instructions for resetting your password.',
|
||||
'failed' => 'These credentials do not match our records.',
|
||||
'failed' => 'The credentials provided to not match those we have on record, or the 2FA token provided was invalid.',
|
||||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
|
||||
'password_requirements' => 'Passwords must contain at least one uppercase, lowecase, and numeric character and must be at least 8 characters in length.',
|
||||
'request_reset' => 'Locate Account',
|
||||
'2fa_required' => '2-Factor Authentication',
|
||||
'2fa_failed' => 'The 2FA token provided was invalid.',
|
||||
'totp_failed' => 'There was an error while attempting to validate TOTP.',
|
||||
];
|
||||
|
|
|
@ -46,118 +46,162 @@ return [
|
|||
'title' => 'Allowed IPs',
|
||||
'description' => 'Enter a line delimitated list of IPs that are allowed to access the API using this key. CIDR notation is allowed. Leave blank to allow any IP.',
|
||||
],
|
||||
'base' => [
|
||||
'title' => 'Base Information',
|
||||
'information' => [
|
||||
'title' => 'Base Information',
|
||||
'description' => 'Returns a listing of all servers that this account has access to.',
|
||||
],
|
||||
],
|
||||
'user_management' => [
|
||||
'title' => 'User Management',
|
||||
'list' => [
|
||||
'title' => 'List Users',
|
||||
'description' => 'Allows listing of all users currently on the system.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create User',
|
||||
'description' => 'Allows creating a new user on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'List Single User',
|
||||
'description' => 'Allows viewing details about a specific user including active services.',
|
||||
],
|
||||
'update' => [
|
||||
'title' => 'Update User',
|
||||
'description' => 'Allows modifying user details (email, password, TOTP information).',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete User',
|
||||
'description' => 'Allows deleting a user.',
|
||||
],
|
||||
],
|
||||
'node_management' => [
|
||||
'title' => 'Node Management',
|
||||
'list' => [
|
||||
'title' => 'List Nodes',
|
||||
'description' => 'Allows listing of all nodes currently on the system.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create Node',
|
||||
'description' => 'Allows creating a new node on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'List Single Node',
|
||||
'description' => 'Allows viewing details about a specific node including active services.',
|
||||
],
|
||||
'allocations' => [
|
||||
'title' => 'List Allocations',
|
||||
'description' => 'Allows viewing all allocations on the panel for all nodes.',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete Node',
|
||||
'description' => 'Allows deleting a node.',
|
||||
],
|
||||
],
|
||||
'server_management' => [
|
||||
'title' => 'Server Management',
|
||||
],
|
||||
'permissions' => [
|
||||
'user' => [
|
||||
'server_header' => 'User Server Permissions',
|
||||
'server' => [
|
||||
'title' => 'Server Info',
|
||||
'description' => 'Allows access to viewing information about a single server including current stats and allocations.',
|
||||
],
|
||||
'power' => [
|
||||
'title' => 'Server Power',
|
||||
'description' => 'Allows access to control server power status.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'Show Single Server',
|
||||
'description' => 'Allows viewing details about a specific server including the daemon_token as well as current process information.',
|
||||
],
|
||||
'list' => [
|
||||
'title' => 'List Servers',
|
||||
'description' => 'Allows listing of all servers currently on the system.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create Server',
|
||||
'description' => 'Allows creating a new server on the system.',
|
||||
],
|
||||
'config' => [
|
||||
'title' => 'Update Configuration',
|
||||
'description' => 'Allows modifying server config (name, owner, and access token).',
|
||||
],
|
||||
'build' => [
|
||||
'title' => 'Update Build',
|
||||
'description' => 'Allows modifying a server\'s build parameters such as memory, CPU, and disk space along with assigned and default IPs.',
|
||||
],
|
||||
'suspend' => [
|
||||
'title' => 'Suspend Server',
|
||||
'description' => 'Allows suspending a server instance.',
|
||||
],
|
||||
'unsuspend' => [
|
||||
'title' => 'Unsuspend Server',
|
||||
'description' => 'Allows unsuspending a server instance.',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete Server',
|
||||
'description' => 'Allows deleting a server.',
|
||||
'list' => [
|
||||
'title' => 'List Servers',
|
||||
'desc' => 'Allows listing of all servers a user owns or has access to as a subuser.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Server',
|
||||
'desc'=> 'Allows viewing of specific server user can access.',
|
||||
],
|
||||
'power' => [
|
||||
'title' => 'Toggle Power',
|
||||
'desc'=> 'Allow toggling of power status for a server.',
|
||||
],
|
||||
'command' => [
|
||||
'title' => 'Send Command',
|
||||
'desc'=> 'Allow sending of a command to a running server.',
|
||||
],
|
||||
],
|
||||
],
|
||||
'service_management' => [
|
||||
'title' => 'Service Management',
|
||||
'list' => [
|
||||
'title' => 'List Services',
|
||||
'description' => 'Allows listing of all services configured on the system.',
|
||||
'admin' => [
|
||||
'server_header' => 'Server Control',
|
||||
'server' => [
|
||||
'list' => [
|
||||
'title' => 'List Servers',
|
||||
'desc' => 'Allows listing of all servers currently on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Server',
|
||||
'desc' => 'Allows view of single server including service and details.',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete Server',
|
||||
'desc' => 'Allows deletion of a server from the system.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create Server',
|
||||
'desc' => 'Allows creation of a new server on the system.',
|
||||
],
|
||||
'edit-details' => [
|
||||
'title' => 'Edit Server Details',
|
||||
'desc' => 'Allows editing of server details such as name, owner, description, and secret key.',
|
||||
],
|
||||
'edit-container' => [
|
||||
'title' => 'Edit Server Container',
|
||||
'desc' => 'Allows for modification of the docker container the server runs in.',
|
||||
],
|
||||
'suspend' => [
|
||||
'title' => 'Suspend Server',
|
||||
'desc' => 'Allows for the suspension and unsuspension of a given server.',
|
||||
],
|
||||
'install' => [
|
||||
'title' => 'Toggle Install Status',
|
||||
'desc' => '',
|
||||
],
|
||||
'rebuild' => [
|
||||
'title' => 'Rebuild Server',
|
||||
'desc' => '',
|
||||
],
|
||||
'edit-build' => [
|
||||
'title' => 'Edit Server Build',
|
||||
'desc' => 'Allows editing of server build setting such as CPU and memory allocations.',
|
||||
],
|
||||
'edit-startup' => [
|
||||
'title' => 'Edit Server Startup',
|
||||
'desc' => 'Allows modification of server startup commands and parameters.',
|
||||
],
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'List Single Service',
|
||||
'description' => 'Allows listing details about each service on the system including service options and variables.',
|
||||
'location_header' => 'Location Control',
|
||||
'location' => [
|
||||
'list' => [
|
||||
'title' => 'List Locations',
|
||||
'desc' => 'Allows listing all locations and thier associated nodes.',
|
||||
],
|
||||
],
|
||||
],
|
||||
'location_management' => [
|
||||
'title' => 'Location Management',
|
||||
'list' => [
|
||||
'title' => 'List Locations',
|
||||
'description' => 'Allows listing all locations and thier associated nodes.',
|
||||
'node_header' => 'Node Control',
|
||||
'node' => [
|
||||
'list' => [
|
||||
'title' => 'List Nodes',
|
||||
'desc' => 'Allows listing of all nodes currently on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Node',
|
||||
'desc' => 'llows viewing details about a specific node including active services.',
|
||||
],
|
||||
'view-config' => [
|
||||
'title' => 'View Node Configuration',
|
||||
'desc' => 'Danger. This allows the viewing of the node configuration file used by the daemon, and exposes secret daemon tokens.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create Node',
|
||||
'desc' => 'Allows creating a new node on the system.',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete Node',
|
||||
'desc' => 'Allows deletion of a node from the system.',
|
||||
],
|
||||
],
|
||||
'user_header' => 'User Control',
|
||||
'user' => [
|
||||
'list' => [
|
||||
'title' => 'List Users',
|
||||
'desc' => 'Allows listing of all users currently on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View User',
|
||||
'desc' => 'Allows viewing details about a specific user including active services.',
|
||||
],
|
||||
'create' => [
|
||||
'title' => 'Create User',
|
||||
'desc' => 'Allows creating a new user on the system.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Update User',
|
||||
'desc' => 'Allows modification of user details.',
|
||||
],
|
||||
'delete' => [
|
||||
'title' => 'Delete User',
|
||||
'desc' => 'Allows deleting a user.',
|
||||
],
|
||||
],
|
||||
'service_header' => 'Service Control',
|
||||
'service' => [
|
||||
'list' => [
|
||||
'title' => 'List Services',
|
||||
'desc' => 'Allows listing of all services configured on the system.',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Service',
|
||||
'desc' => 'Allows listing details about each service on the system including service options and variables.',
|
||||
],
|
||||
],
|
||||
'option_header' => 'Option Control',
|
||||
'option' => [
|
||||
'list' => [
|
||||
'title' => 'List Options',
|
||||
'desc' => '',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Option',
|
||||
'desc' => '',
|
||||
],
|
||||
],
|
||||
'pack_header' => 'Pack Control',
|
||||
'pack' => [
|
||||
'list' => [
|
||||
'title' => 'List Packs',
|
||||
'desc' => '',
|
||||
],
|
||||
'view' => [
|
||||
'title' => 'View Pack',
|
||||
'desc' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
|
|
|
@ -12,6 +12,7 @@ return [
|
|||
'server' => [
|
||||
'header' => 'SERVER MANAGEMENT',
|
||||
'console' => 'Console',
|
||||
'console-pop' => 'Fullscreen Console',
|
||||
'file_management' => 'File Management',
|
||||
'file_browser' => 'File Browser',
|
||||
'create_file' => 'Create File',
|
||||
|
|
|
@ -59,24 +59,24 @@ return [
|
|||
'server_header' => 'Server Management',
|
||||
'task_header' => 'Task Management',
|
||||
'sftp_header' => 'SFTP Management',
|
||||
'db_header' => 'Database Management',
|
||||
'start' => [
|
||||
'database_header' => 'Database Management',
|
||||
'power_start' => [
|
||||
'title' => 'Start Server',
|
||||
'description' => 'Allows user to start the server.',
|
||||
],
|
||||
'stop' => [
|
||||
'power_stop' => [
|
||||
'title' => 'Stop Server',
|
||||
'description' => 'Allows user to stop the server.',
|
||||
],
|
||||
'restart' => [
|
||||
'power_restart' => [
|
||||
'title' => 'Restart Server',
|
||||
'description' => 'Allows user to restart the server.',
|
||||
],
|
||||
'kill' => [
|
||||
'power_kill' => [
|
||||
'title' => 'Kill Server',
|
||||
'description' => 'Allows user to kill the server process.',
|
||||
],
|
||||
'command' => [
|
||||
'send_command' => [
|
||||
'title' => 'Send Console Command',
|
||||
'description' => 'Allows sending a command from the console. If the user does not have stop or restart permissions they cannot send the application\'s stop command.',
|
||||
],
|
||||
|
|
|
@ -57,6 +57,7 @@ return [
|
|||
'queued' => 'Queued',
|
||||
'last_run' => 'Last Run',
|
||||
'next_run' => 'Next Run',
|
||||
'not_run_yet' => 'Not Run Yet',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'delete' => 'Delete',
|
||||
|
@ -69,4 +70,5 @@ return [
|
|||
'owner' => 'Owner',
|
||||
'admin' => 'Admin',
|
||||
'subuser' => 'Subuser',
|
||||
'captcha_invalid' => 'The provided captcha is invalid.',
|
||||
];
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">Host List</h3>
|
||||
<div class="box-tools">
|
||||
<button class="btn btn-sm btn-primary" data-toggle="modal" data-target="#newHostModal">Create New</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -70,9 +73,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button class="btn btn-sm btn-default pull-right" data-toggle="modal" data-target="#newHostModal">New Host</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<div class="col-xs-6 col-sm-3 text-center">
|
||||
<a href="https://docs.pterodactyl.io"><button class="btn btn-primary" style="width:100%;"><i class="fa fa-fw fa-link"></i> Documentation</button></a>
|
||||
</div>
|
||||
<div class="clearfix visible-xs-block"> </div>
|
||||
<div class="col-xs-6 col-sm-3 text-center">
|
||||
<a href="https://github.com/Pterodactyl/Panel"><button class="btn btn-primary" style="width:100%;"><i class="fa fa-fw fa-support"></i> Github</button></a>
|
||||
</div>
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">Location List</h3>
|
||||
<div class="box-tools">
|
||||
<button class="btn btn-sm btn-primary" data-toggle="modal" data-target="#newLocationModal">Create New</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -60,9 +63,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button class="btn btn-sm btn-default pull-right" data-toggle="modal" data-target="#newLocationModal">New Location</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -44,8 +44,8 @@
|
|||
<h3 class="box-title">Node List</h3>
|
||||
<div class="box-tools">
|
||||
<form action="{{ route('admin.nodes') }}" method="GET">
|
||||
<div class="input-group input-group-sm" style="width: 300px;">
|
||||
<input type="text" name="query" class="form-control pull-right" value="{{ request()->input('query') }}" placeholder="Search Nodes">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="query" class="form-control pull-right" style="width:30%;" value="{{ request()->input('query') }}" placeholder="Search Nodes">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
<a href="{{ route('admin.nodes.new') }}"><button type="button" class="btn btn-sm btn-primary" style="border-radius: 0 3px 3px 0;margin-left:-1px;">Create New</button></a>
|
||||
|
@ -82,9 +82,11 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $nodes->render() !!}</div>
|
||||
</div>
|
||||
@if($nodes->hasPages())
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $nodes->render() !!}</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,8 +39,8 @@
|
|||
<h3 class="box-title">Pack List</h3>
|
||||
<div class="box-tools">
|
||||
<form action="{{ route('admin.packs') }}" method="GET">
|
||||
<div class="input-group input-group-sm" style="width: 300px;">
|
||||
<input type="text" name="query" class="form-control pull-right" value="{{ request()->input('query') }}" placeholder="Search Packs">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="query" class="form-control pull-right" style="width:30%;" value="{{ request()->input('query') }}" placeholder="Search Packs">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
<a href="{{ route('admin.packs.new') }}"><button type="button" class="btn btn-sm btn-primary" style="border-radius: 0 3px 3px 0;margin-left:-1px;">Create New</button></a>
|
||||
|
|
|
@ -39,8 +39,8 @@
|
|||
<h3 class="box-title">Server List</h3>
|
||||
<div class="box-tools">
|
||||
<form action="{{ route('admin.servers') }}" method="GET">
|
||||
<div class="input-group input-group-sm" style="width: 300px;">
|
||||
<input type="text" name="query" class="form-control pull-right" value="{{ request()->input('query') }}" placeholder="Search Servers">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="query" class="form-control pull-right" style="width:30%;" value="{{ request()->input('query') }}" placeholder="Search Servers">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
<a href="{{ route('admin.servers.new') }}"><button type="button" class="btn btn-sm btn-primary" style="border-radius: 0 3px 3px 0;margin-left:-1px;">Create New</button></a>
|
||||
|
@ -56,6 +56,7 @@
|
|||
<th>ID</th>
|
||||
<th>Server Name</th>
|
||||
<th>Owner</th>
|
||||
<th>Username</th>
|
||||
<th>Node</th>
|
||||
<th>Connection</th>
|
||||
<th></th>
|
||||
|
@ -65,15 +66,14 @@
|
|||
<td><code>{{ $server->uuidShort }}</code></td>
|
||||
<td><a href="{{ route('admin.servers.view', $server->id) }}">{{ $server->name }}</a></td>
|
||||
<td><a href="{{ route('admin.users.view', $server->user->id) }}">{{ $server->user->username }}</a></td>
|
||||
<td>{{ $server->username }}</td>
|
||||
<td><a href="{{ route('admin.nodes.view', $server->node->id) }}">{{ $server->node->name }}</a></td>
|
||||
<td>
|
||||
<code>{{ $server->allocation->alias }}:{{ $server->allocation->port }}</code>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if($server->suspended && ! $server->trashed())
|
||||
@if($server->suspended)
|
||||
<span class="label bg-maroon">Suspended</span>
|
||||
@elseif($server->trashed())
|
||||
<span class="label label-danger">Pending Deletion</span>
|
||||
@elseif(! $server->installed)
|
||||
<span class="label label-warning">Installing</span>
|
||||
@else
|
||||
|
@ -85,9 +85,11 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $servers->render() !!}</div>
|
||||
</div>
|
||||
@if($servers->hasPages())
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $servers->render() !!}</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -41,14 +41,29 @@
|
|||
<h3 class="box-title">Core Details</h3>
|
||||
</div>
|
||||
<div class="box-body row">
|
||||
<div class="form-group col-sm-6">
|
||||
<label for="pName">Server Name</label>
|
||||
<input type="text" class="form-control" id="pName" name="name" value="{{ old('name') }}" placeholder="Server Name">
|
||||
<p class="small text-muted no-margin">Character limits: <code>a-z A-Z 0-9 _ - .</code> and <code>[Space]</code> (max 200 characters).</p>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="pName">Server Name</label>
|
||||
<input type="text" class="form-control" id="pName" name="name" value="{{ old('name') }}" placeholder="Server Name">
|
||||
<p class="small text-muted no-margin">Character limits: <code>a-z A-Z 0-9 _ - .</code> and <code>[Space]</code> (max 200 characters).</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="pUserId">Server Owner</label>
|
||||
<select class="form-control" style="padding-left:0;" name="user_id" id="pUserId"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<label for="pUserId">Server Owner</label>
|
||||
<select class="form-control" style="padding-left:0;" name="user_id" id="pUserId"></select>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="description" class="control-label">Server Description</label>
|
||||
<textarea name="description" rows="3" class="form-control">{{ old('description') }}</textarea>
|
||||
<p class="text-muted small">A brief description of this server.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox checkbox-primary no-margin-bottom">
|
||||
<input id="pStartOnCreation" name="start_on_completion" type="checkbox" value="1" checked />
|
||||
<label for="pStartOnCreation" class="strong">Start Server when Installed</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -93,7 +108,7 @@
|
|||
</div>
|
||||
<div class="box-footer">
|
||||
<p class="text-muted small no-margin">
|
||||
<input type="checkbox" name="auto_deploy" id="pAutoDeploy" @if(old('auto_deploy'))checked="checked"@endif/>
|
||||
<input type="checkbox" name="auto_deploy" value="yes" id="pAutoDeploy" @if(old('auto_deploy'))checked="checked"@endif/>
|
||||
<label for="pAutoDeploy">Check this box if you want the panel to automatically select a node and allocation for this server in the given location.</label>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -39,16 +39,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li class="active"><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -131,7 +130,7 @@
|
|||
<div>
|
||||
<select name="remove_allocations[]" class="form-control" multiple id="pRemoveAllocations">
|
||||
@foreach ($assigned as $assignment)
|
||||
<option value="{{ $assignment->id }}" @if($server->allocation_id === $assignment->id)disabled @endif>{{ $assignment->alias }}:{{ $assignment->port }}</option>
|
||||
<option value="{{ $assignment->id }}">{{ $assignment->alias }}:{{ $assignment->port }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -39,16 +39,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li class="active"><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,48 +39,20 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger active"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@if($server->trashed())
|
||||
<div class="col-xs-12">
|
||||
<div class="box box-danger">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">Marked for Deletion</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<p>This server is currently marked for deletion by the system <strong>{{ Carbon::parse($server->deleted_at)->addMinutes(env('APP_DELETE_MINUTES', 10))->diffForHumans() }}</strong>.</p>
|
||||
<p class="text-danger small">Deleting a server is an irreversible action. <strong>All server data</strong> (including files and users) will be removed from the system.</p>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<form action="{{ route('admin.servers.view.delete.cancel', $server->id) }}" method="POST" style="display:inline;">
|
||||
{!! csrf_field() !!}
|
||||
<button type="submit" class="btn btn-default btn-sm">Cancel Deletion Request</button>
|
||||
</form>
|
||||
<form data-action="delete" action="{{ route('admin.servers.view.delete.continue', ['id' => $server->id, 'force' => 'force']) }}" method="POST" style="display:inline;">
|
||||
{!! csrf_field() !!}
|
||||
<button type="submit" class="btn btn-danger btn-sm pull-right"><strong>Forcibly</strong> Delete Now</button>
|
||||
</form>
|
||||
<form data-action="delete" action="{{ route('admin.servers.view.delete.continue', $server->id) }}" method="POST" style="display:inline">
|
||||
{!! csrf_field() !!}
|
||||
<button type="submit" class="btn btn-danger btn-sm pull-right" style="margin-right:10px;">Safely Delete Now</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-xs-6">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
|
@ -93,7 +65,6 @@
|
|||
<div class="box-footer">
|
||||
<form action="{{ route('admin.servers.view.delete', $server->id) }}" method="POST">
|
||||
{!! csrf_field() !!}
|
||||
<input type="hidden" name="is_force" value="0" />
|
||||
<button type="submit" class="btn btn-danger">Safely Delete This Server</button>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -111,7 +82,7 @@
|
|||
<div class="box-footer">
|
||||
<form action="{{ route('admin.servers.view.delete', $server->id) }}" method="POST">
|
||||
{!! csrf_field() !!}
|
||||
<input type="hidden" name="is_force" value="1" />
|
||||
<input type="hidden" name="force_delete" value="1" />
|
||||
<button type="submit" class="btn btn-danger">Forcibly Delete This Server</button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -39,16 +39,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li class="active"><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -73,6 +72,11 @@
|
|||
</select>
|
||||
<p class="text-muted small">You can change the owner of this server by changing this field to an email matching another use on this system. If you do this a new daemon security token will be generated automatically.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="description" class="control-label">Server Description</label>
|
||||
<textarea name="description" rows="3" class="form-control">{{ old('description', $server->description) }}</textarea>
|
||||
<p class="text-muted small">A brief description of this server.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="name" class="control-label">Daemon Secret Token</label>
|
||||
<input type="text" disabled value="{{ $server->daemonSecret }}" class="form-control" />
|
||||
|
|
|
@ -38,16 +38,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -74,6 +73,10 @@
|
|||
<td>Docker User ID</td>
|
||||
<td data-attr="container-user"><i class="fa fa-fw fa-refresh fa-spin"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Docker Container Name</td>
|
||||
<td>{{ $server->username }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Service</td>
|
||||
<td>{{ $server->option->service->name }} :: {{ $server->option->name }}</td>
|
||||
|
|
|
@ -39,16 +39,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li class="active"><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li class="active"><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,16 +39,15 @@
|
|||
<div class="nav-tabs-custom nav-tabs-floating">
|
||||
<ul class="nav nav-tabs">
|
||||
<li><a href="{{ route('admin.servers.view', $server->id) }}">About</a></li>
|
||||
@if(! $server->trashed() && $server->installed === 1)
|
||||
@if($server->installed === 1)
|
||||
<li><a href="{{ route('admin.servers.view.details', $server->id) }}">Details</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.build', $server->id) }}">Build Configuration</a></li>
|
||||
<li class="active"><a href="{{ route('admin.servers.view.startup', $server->id) }}">Startup</a></li>
|
||||
<li><a href="{{ route('admin.servers.view.database', $server->id) }}">Database</a></li>
|
||||
@endif
|
||||
@if(! $server->trashed())
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
@endif
|
||||
<li><a href="{{ route('admin.servers.view.manage', $server->id) }}">Manage</a></li>
|
||||
<li class="tab-danger"><a href="{{ route('admin.servers.view.delete', $server->id) }}">Delete</a></li>
|
||||
<li class="tab-success"><a href="{{ route('server.index', $server->uuidShort) }}"><i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -68,8 +68,8 @@
|
|||
|
||||
@section('footer-scripts')
|
||||
@parent
|
||||
{!! Theme::js('js/vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('js/vendor/ace/ext-modelist.js') !!}
|
||||
{!! Theme::js('vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('vendor/ace/ext-modelist.js') !!}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
const Editor = ace.edit('editor_index');
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">Configured Services</h3>
|
||||
<div class="box-tools">
|
||||
<a href="{{ route('admin.services.new') }}"><button class="btn btn-primary btn-sm">Create New</button></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -58,9 +61,6 @@
|
|||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<a href="{{ route('admin.services.new') }}"><button class="btn btn-primary btn-sm pull-right">Create Service</button></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -69,23 +69,7 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="alert alert-info">In order to modify your SMTP settings for sending mail you will need to edit the <code>.env</code> file in this project's root folder.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-6">
|
||||
<label class="control-label">Send Emails From:</label>
|
||||
<div>
|
||||
<input type="text" class="form-control" name="email_from" value="{{ old('email_from', Settings::get('email_from', env('MAIL_FROM', 'you@example.com'))) }}" />
|
||||
<p class="text-muted"><small>The email address that panel emails will be sent from. Note that some SMTP services require this to match for a given API key.</small></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-6">
|
||||
<label class="control-label">Email Sender Name:</label>
|
||||
<div>
|
||||
<input type="text" class="form-control" name="email_sender_name" value="{{ old('email_sender_name', Settings::get('email_sender_name', env('MAIL_FROM_NAME', 'Pterodactyl Panel'))) }}" />
|
||||
<p class="text-muted"><small>The name that emails will appear to come from.</small></p>
|
||||
</div>
|
||||
<div class="alert alert-info">In order to modify your SMTP settings for sending mail you will need to run <code>php artisan pterodactyl:mail</code> in this project's root folder.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -39,8 +39,8 @@
|
|||
<h3 class="box-title">User List</h3>
|
||||
<div class="box-tools">
|
||||
<form action="{{ route('admin.users') }}" method="GET">
|
||||
<div class="input-group input-group-sm" style="width: 300px;">
|
||||
<input type="text" name="query" class="form-control pull-right" value="{{ request()->input('query') }}" placeholder="Search">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="query" class="form-control pull-right" style="width:30%;" value="{{ request()->input('query') }}" placeholder="Search">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
<a href="{{ route('admin.users.new') }}"><button type="button" class="btn btn-sm btn-primary" style="border-radius: 0 3px 3px 0;margin-left:-1px;">Create New</button></a>
|
||||
|
@ -57,7 +57,8 @@
|
|||
<th>Email</td>
|
||||
<th>Client Name</th>
|
||||
<th>Username</th>
|
||||
<th>Servers</th>
|
||||
<th class="text-center" data-toggle="tooltip" data-placement="top" title="Servers that this user is marked as the owner of.">Servers Owned</th>
|
||||
<th class="text-center" data-toggle="tooltip" data-placement="top" title="Servers that this user can access because they are marked as a subuser.">Can Access</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -68,16 +69,19 @@
|
|||
<td><a href="{{ route('admin.users.view', $user->id) }}">{{ $user->email }}</a></td>
|
||||
<td>{{ $user->name_last }}, {{ $user->name_first }}</td>
|
||||
<td>{{ $user->username }}</td>
|
||||
<td>{{ $user->servers_count }}</td>
|
||||
<td class="text-center">{{ $user->servers_count }}</td>
|
||||
<td class="text-center">{{ $user->subuser_of_count }}</td>
|
||||
<td class="text-center"><img src="https://www.gravatar.com/avatar/{{ md5(strtolower($user->email)) }}?s=20" class="img-circle" /></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $users->render() !!}</div>
|
||||
</div>
|
||||
@if($users->hasPages())
|
||||
<div class="box-footer with-border">
|
||||
<div class="col-md-12 text-center">{!! $users->render() !!}</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -107,9 +107,6 @@
|
|||
<input type="password" name="password" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button class="btn btn-default btn-sm" id="gen_pass_bttn" type="button">Generate Password</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -85,9 +85,6 @@
|
|||
<input type="password" id="password" name="password" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button class="btn btn-default btn-sm" id="gen_pass_bttn" type="button">Generate Password</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -123,16 +120,24 @@
|
|||
<th style="width:2%;"></th>
|
||||
<th>Identifier</th>
|
||||
<th>Server Name</th>
|
||||
<th>Access</th>
|
||||
<th>Node</th>
|
||||
<th style="width:10%;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($user->servers as $server)
|
||||
@foreach($user->access()->get() as $server)
|
||||
<tr>
|
||||
<td><a href="{{ route('server.index', $server->uuidShort) }}/"><i class="fa fa-tachometer"></i></a></td>
|
||||
<td><code>{{ $server->uuidShort }}</code></td>
|
||||
<td><a href="{{ route('admin.servers.view', $server->id) }}">{{ $server->name }}</a></td>
|
||||
<td>
|
||||
@if($server->owner_id === $user->id)
|
||||
<span class="label bg-purple">Owner</span>
|
||||
@else
|
||||
<span class="label bg-blue">Subuser</span>
|
||||
@endif
|
||||
</td>
|
||||
<td><a href="{{ route('admin.nodes.view', $server->node->id) }}">{{ $server->node->name }}</a></td>
|
||||
<td class="centered">@if($server->suspended === 0)<span class="label muted muted-hover label-success">Active</span>@else<span class="label label-warning">Suspended</span>@endif</td>
|
||||
</td>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
@endforeach
|
||||
@endforeach
|
||||
<p class="login-box-msg">@lang('auth.authentication_required')</p>
|
||||
<form action="{{ route('auth.login') }}" method="POST">
|
||||
<form id="loginForm" action="{{ route('auth.login') }}" method="POST">
|
||||
<div class="form-group has-feedback">
|
||||
<input name="user" class="form-control" value="{{ old('user') }}" placeholder="@lang('strings.user_identifier')">
|
||||
<span class="fa fa-envelope form-control-feedback"></span>
|
||||
|
@ -62,10 +62,22 @@
|
|||
</div>
|
||||
<div class="col-xs-4">
|
||||
{!! csrf_field() !!}
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat">@lang('auth.sign_in')</button>
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat g-recaptcha" @if(config('recaptcha.enabled')) data-sitekey="{{ config('recaptcha.website_key') }}" data-callback='onSubmit' @endif>@lang('auth.sign_in')</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<a href="{{ route('auth.password') }}">@lang('auth.forgot_password')</a><br>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
@parent
|
||||
@if(config('recaptcha.enabled'))
|
||||
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
document.getElementById("loginForm").submit();
|
||||
}
|
||||
</script>
|
||||
@endif
|
||||
@endsection
|
|
@ -25,13 +25,24 @@
|
|||
|
||||
@section('content')
|
||||
<div class="login-box-body">
|
||||
@if (count($errors) > 0)
|
||||
<div class="callout callout-danger">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
@lang('auth.auth_error')<br><br>
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
@if (session('status'))
|
||||
<div class="callout callout-success">
|
||||
@lang('auth.email_sent')
|
||||
</div>
|
||||
@endif
|
||||
<p class="login-box-msg">@lang('auth.request_reset_text')</p>
|
||||
<form action="{{ route('auth.password') }}" method="POST">
|
||||
<form id="resetForm" action="{{ route('auth.password') }}" method="POST">
|
||||
<div class="form-group has-feedback">
|
||||
<input type="email" name="email" class="form-control" value="{{ old('email') }}" autofocus placeholder="@lang('strings.email')">
|
||||
<span class="fa fa-envelope form-control-feedback"></span>
|
||||
|
@ -47,9 +58,21 @@
|
|||
</div>
|
||||
<div class="col-xs-8">
|
||||
{!! csrf_field() !!}
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat">@lang('auth.request_reset')</button>
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat g-recaptcha" @if(config('recaptcha.enabled')) data-sitekey="{{ config('recaptcha.website_key') }}" data-callback='onSubmit' @endif>@lang('auth.request_reset')</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
@parent
|
||||
@if(config('recaptcha.enabled'))
|
||||
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
document.getElementById("resetForm").submit();
|
||||
}
|
||||
</script>
|
||||
@endif
|
||||
@endsection
|
|
@ -131,7 +131,7 @@
|
|||
<div class="form-group">
|
||||
<label for="password" class="control-label">@lang('base.account.current_password')</label>
|
||||
<div>
|
||||
<input type="password" class="form-control" name="password" />
|
||||
<input type="password" class="form-control" name="current_password" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">@lang('base.api.index.list')</h3>
|
||||
<div class="box-tools">
|
||||
<a href="{{ route('account.api.new') }}"><button class="btn btn-primary btn-sm">Create New</button></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -70,11 +73,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<a href="{{ route('account.api.new') }}">
|
||||
<button class="btn btn-sm btn-success">@lang('base.api.index.create_new')</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<form action="{{ route('account.api.new') }}" method="POST" id="permsForm">
|
||||
<form action="{{ route('account.api.new') }}" method="POST">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
|
@ -75,311 +75,70 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
{!! csrf_field() !!}
|
||||
<button class="btn btn-success pull-right">@lang('strings.create') →</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-lg-6">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.base.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" value="user:*">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.base.information.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.base.information.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
@foreach($permissions['user'] as $block => $perms)
|
||||
<div class="col-sm-12">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('base.api.permissions.user.' . $block . '_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
@foreach($perms as $permission)
|
||||
<div class="form-group">
|
||||
<div class="checkbox checkbox-primary no-margin-bottom">
|
||||
<input id="{{ 'user.' . $block . '-' . $permission }}" name="permissions[]" type="checkbox" value="{{ $block . '-' . $permission }}"/>
|
||||
<label for="{{ 'user.' . $block . '-' . $permission }}" class="strong">
|
||||
@lang('base.api.permissions.user.' . $block . '.' . $permission . '.title')
|
||||
</label>
|
||||
</div>
|
||||
<p class="text-muted small">@lang('base.api.permissions.user.' . $block . '.' . $permission . '.desc')</p>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if(Auth::user()->isRootAdmin())
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.user_management.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:users.list">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.user_management.list.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.user_management.list.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:users.create">
|
||||
<span class="label label-default">POST</span>
|
||||
<strong>@lang('base.api.new.user_management.create.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.user_management.create.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:users.view">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.user_management.view.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.user_management.view.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:users.update">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.user_management.update.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.user_management.update.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:users.delete">
|
||||
<span class="label label-danger">DELETE</span>
|
||||
<strong>@lang('base.api.new.user_management.delete.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.user_management.delete.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.node_management.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:nodes.list">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.node_management.list.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.node_management.list.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:nodes.create">
|
||||
<span class="label label-default">POST</span>
|
||||
<strong>@lang('base.api.new.node_management.create.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.node_management.create.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:nodes.view">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.node_management.view.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.node_management.view.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:nodes.allocations">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.node_management.allocations.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.node_management.allocations.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:nodes.delete">
|
||||
<span class="label label-danger">DELETE</span>
|
||||
<strong>@lang('base.api.new.node_management.delete.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.node_management.delete.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if ($loop->iteration % 2 === 0)
|
||||
<div class="clearfix visible-lg-block visible-md-block visible-sm-block"></div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-xs-12 col-lg-6">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.server_management.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" value="user:server">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.server_management.server.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.server.description')
|
||||
</p>
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="row">
|
||||
@foreach($permissions['admin'] as $block => $perms)
|
||||
<div class="col-lg-4 col-sm-6">
|
||||
<div class="box box-danger">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('base.api.permissions.admin.' . $block . '_header')</h3>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" value="user:server.power">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.server_management.power.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.power.description')
|
||||
</p>
|
||||
</label>
|
||||
<div class="box-body">
|
||||
@foreach($perms as $permission)
|
||||
<div class="form-group">
|
||||
<div class="checkbox {{ $permission === 'delete' ? 'checkbox-danger' : 'checkbox-primary' }} no-margin-bottom">
|
||||
<input id="{{ $block . '-' . $permission }}" name="admin_permissions[]" type="checkbox" value="{{ $block . '-' . $permission }}"/>
|
||||
<label for="{{ $block . '-' . $permission }}" class="strong">
|
||||
@lang('base.api.permissions.admin.' . $block . '.' . $permission . '.title')
|
||||
</label>
|
||||
</div>
|
||||
<p class="text-muted small">@lang('base.api.permissions.admin.' . $block . '.' . $permission . '.desc')</p>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@if(Auth::user()->isRootAdmin())
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.view">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.server_management.view.title')</strong>
|
||||
<p class="text-muted small">
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
@lang('base.api.new.server_management.view.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.list">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.server_management.list.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.list.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.create">
|
||||
<span class="label label-default">POST</span>
|
||||
<strong>@lang('base.api.new.server_management.create.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.create.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.config">
|
||||
<span class="label label-default">PATCH</span>
|
||||
<strong>@lang('base.api.new.server_management.config.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.config.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.build">
|
||||
<span class="label label-default">PATCH</span>
|
||||
<strong>@lang('base.api.new.server_management.build.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.build.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.suspend">
|
||||
<span class="label label-default">POST</span>
|
||||
<strong>@lang('base.api.new.server_management.suspend.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.suspend.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.unsuspend">
|
||||
<span class="label label-default">POST</span>
|
||||
<strong>@lang('base.api.new.server_management.unsuspend.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.unsuspend.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:servers.delete">
|
||||
<span class="label label-danger">DELETE</span>
|
||||
<strong>@lang('base.api.new.server_management.delete.title')</strong>
|
||||
<p class="text-muted small">
|
||||
@lang('base.api.new.server_management.delete.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@if(Auth::user()->isRootAdmin())
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.service_management.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:services.list">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.service_management.list.title')</strong>
|
||||
<p class="text-muted small">
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
@lang('base.api.new.service_management.list.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:services.view">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.service_management.view.title')</strong>
|
||||
<p class="text-muted small">
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
@lang('base.api.new.service_management.view.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">@lang('base.api.new.location_management.title')</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="adminPermissions[]" type="checkbox" value="admin:locations.list">
|
||||
<span class="label label-default">GET</span>
|
||||
<strong>@lang('base.api.new.location_management.list.title')</strong>
|
||||
<p class="text-muted small">
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
@lang('base.api.new.location_management.list.description')
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if ($loop->iteration % 3 === 0)
|
||||
<div class="clearfix visible-lg-block"></div>
|
||||
@endif
|
||||
</div>
|
||||
{!! csrf_field() !!}
|
||||
</form>
|
||||
</div>
|
||||
@if ($loop->iteration % 2 === 0)
|
||||
<div class="clearfix visible-md-block visible-sm-block"></div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</form>
|
||||
@endsection
|
||||
|
|
|
@ -38,12 +38,14 @@
|
|||
<div class="box-header">
|
||||
<h3 class="box-title">@lang('base.index.list')</h3>
|
||||
<div class="box-tools">
|
||||
<div class="input-group input-group-sm" style="width: 150px;">
|
||||
<input type="text" name="table_search" class="form-control pull-right" placeholder="@lang('strings.search')">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
<form action="{{ route('index') }}" method="GET">
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="query" class="form-control pull-right" style="width:30%;" value="{{ request()->input('query') }}" placeholder="@lang('strings.search')">
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
|
@ -60,30 +62,35 @@
|
|||
<th class="text-center">@lang('strings.status')</th>
|
||||
</tr>
|
||||
@foreach($servers as $server)
|
||||
<tr class="dynamic-update" data-server="{{ $server->uuidShort }}">
|
||||
<td><code>{{ $server->uuidShort }}</code></td>
|
||||
<td><a href="{{ route('server.index', $server->uuidShort) }}">{{ $server->name }}</a></td>
|
||||
<td>{{ $server->node->name }}</td>
|
||||
<td><code>{{ $server->allocation->alias }}:{{ $server->allocation->port }}</code></td>
|
||||
<td class="text-center hidden-sm hidden-xs"><span data-action="memory">--</span> / {{ $server->memory === 0 ? '∞' : $server->memory }} MB</td>
|
||||
<td class="text-center hidden-sm hidden-xs"><span data-action="cpu" data-cpumax="{{ $server->cpu }}">--</span> %</td>
|
||||
<td class="text-center">
|
||||
@if($server->user->id === Auth::user()->id)
|
||||
<span class="label bg-purple">@lang('strings.owner')</span>
|
||||
@elseif(Auth::user()->isRootAdmin())
|
||||
<span class="label bg-maroon">@lang('strings.admin')</span>
|
||||
@else
|
||||
<span class="label bg-blue">@lang('strings.subuser')</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center" data-action="status">
|
||||
@if($server->suspended === 1)
|
||||
<span class="label label-warning">@lang('strings.suspended')</span>
|
||||
@else
|
||||
<span class="label label-default"><i class="fa fa-refresh fa-fw fa-spin"></i></span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr class=" {{$server->suspended ?: 'dynamic-update' }}" data-server="{{ $server->uuidShort }}">
|
||||
<td @if(! empty($server->description)) rowspan="2" @endif><code>{{ $server->uuidShort }}</code></td>
|
||||
<td><a href="{{ route('server.index', $server->uuidShort) }}">{{ $server->name }}</a></td>
|
||||
<td>{{ $server->node->name }}</td>
|
||||
<td><code>{{ $server->allocation->alias }}:{{ $server->allocation->port }}</code></td>
|
||||
<td class="text-center hidden-sm hidden-xs"><span data-action="memory">--</span> / {{ $server->memory === 0 ? '∞' : $server->memory }} MB</td>
|
||||
<td class="text-center hidden-sm hidden-xs"><span data-action="cpu" data-cpumax="{{ $server->cpu }}">--</span> %</td>
|
||||
<td class="text-center">
|
||||
@if($server->user->id === Auth::user()->id)
|
||||
<span class="label bg-purple">@lang('strings.owner')</span>
|
||||
@elseif(Auth::user()->isRootAdmin())
|
||||
<span class="label bg-maroon">@lang('strings.admin')</span>
|
||||
@else
|
||||
<span class="label bg-blue">@lang('strings.subuser')</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center" data-action="status">
|
||||
@if($server->suspended)
|
||||
<span class="label label-warning">@lang('strings.suspended')</span>
|
||||
@else
|
||||
<span class="label label-default"><i class="fa fa-refresh fa-fw fa-spin"></i></span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@if (! empty($server->description))
|
||||
<tr class="server-description">
|
||||
<td colspan="7"><p class="text-muted small no-margin">{{ str_limit($server->description, 400) }}</p></td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -100,5 +107,12 @@
|
|||
|
||||
@section('footer-scripts')
|
||||
@parent
|
||||
<script>
|
||||
$('tr.server-description').on('mouseenter mouseleave', function (event) {
|
||||
$(this).prev('tr').css({
|
||||
'background-color': (event.type === 'mouseenter') ? '#f5f5f5' : '',
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{!! Theme::js('js/frontend/serverlist.js') !!}
|
||||
@endsection
|
||||
|
|
|
@ -25,6 +25,18 @@
|
|||
<title>{{ Settings::get('company', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<meta name="_token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#367fa9">
|
||||
|
||||
@include('layouts.scripts')
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/select2/select2.min.css') !!}
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css') !!}
|
||||
|
@ -64,13 +76,10 @@
|
|||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-action="control-sidebar" data-toggle="tooltip" data-placement="bottom" title="Quick Access"><i class="fa fa-fighter-jet" style="margin-top:4px;padding-bottom:2px;"></i></a>
|
||||
<li><a href="{{ route('index') }}" data-toggle="tooltip" data-placement="bottom" title="Exit Admin Control"><i class="fa fa-server"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('index') }}" data-toggle="tooltip" data-placement="bottom" title="Exit Admin Control"><i class="fa fa-server" style="margin-top:4px;padding-bottom:2px;"></i></a></li>
|
||||
</li>
|
||||
<li>
|
||||
<li><a href="{{ route('auth.logout') }}" data-toggle="tooltip" data-placement="bottom" title="Logout"><i class="fa fa-power-off" style="margin-top:4px;padding-bottom:2px;"></i></a></li>
|
||||
<li><a href="{{ route('auth.logout') }}" data-toggle="tooltip" data-placement="bottom" title="Logout"><i class="fa fa-power-off"></i></a></li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -160,63 +169,24 @@
|
|||
</section>
|
||||
</div>
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right hidden-xs small text-gray">
|
||||
<strong>v</strong> {{ config('app.version') }}
|
||||
<div class="pull-right small text-gray" style="margin-right:10px;margin-top:-7px;">
|
||||
<strong><i class="fa fa-code-fork"></i></strong> {{ config('app.version') }} <br />
|
||||
<strong><i class="fa fa-clock-o"></i></strong> {{ round(microtime(true) - LARAVEL_START, 3) }}s
|
||||
</div>
|
||||
Copyright © 2015 - {{ date('Y') }} <a href="https://pterodactyl.io/">Pterodactyl Software</a>.
|
||||
</footer>
|
||||
<aside class="control-sidebar control-sidebar-dark">
|
||||
<ul class="nav nav-tabs nav-justified control-sidebar-tabs">
|
||||
<li class="active"><a href="#control-sidebar-servers-tab" data-toggle="tab"><i class="fa fa-server"></i></a></li>
|
||||
<li><a href="#control-sidebar-nodes-tab" data-toggle="tab"><i class="fa fa-sitemap"></i></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="control-sidebar-servers-tab">
|
||||
<ul class="control-sidebar-menu">
|
||||
@foreach (Pterodactyl\Models\Server::all() as $s)
|
||||
<li>
|
||||
<a href="{{ route('admin.servers.view', $s->id) }}">
|
||||
@if($s->owner_id === Auth::user()->id)
|
||||
<i class="menu-icon fa fa-user bg-blue"></i>
|
||||
@else
|
||||
<i class="menu-icon fa fa-user-o bg-gray"></i>
|
||||
@endif
|
||||
<div class="menu-info">
|
||||
<h4 class="control-sidebar-subheading">{{ $s->name }}</h4>
|
||||
<p>{{ $s->username }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-pane" id="control-sidebar-nodes-tab">
|
||||
<ul class="control-sidebar-menu">
|
||||
@foreach (Pterodactyl\Models\Node::with('location')->get() as $n)
|
||||
<li>
|
||||
<a href="{{ route('admin.nodes.view', $n->id) }}">
|
||||
<i class="menu-icon fa fa-codepen bg-gray"></i>
|
||||
<div class="menu-info">
|
||||
<h4 class="control-sidebar-subheading">{{ $n->name }}</h4>
|
||||
<p>{{ $n->location->short }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
<div class="control-sidebar-bg"></div>
|
||||
</div>
|
||||
@section('footer-scripts')
|
||||
{!! Theme::js('vendor/terminal/keyboard.polyfill.js') !!}
|
||||
<script>keyboardeventKeyPolyfill.polyfill();</script>
|
||||
|
||||
{!! Theme::js('js/laroute.js') !!}
|
||||
{!! Theme::js('js/vendor/jquery/jquery.min.js') !!}
|
||||
{!! Theme::js('vendor/jquery/jquery.min.js') !!}
|
||||
{!! Theme::js('vendor/sweetalert/sweetalert.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap/bootstrap.min.js') !!}
|
||||
{!! Theme::js('vendor/slimscroll/jquery.slimscroll.min.js') !!}
|
||||
{!! Theme::js('vendor/adminlte/app.min.js') !!}
|
||||
{!! Theme::js('js/vendor/socketio/socket.io.min.js') !!}
|
||||
{!! Theme::js('vendor/socketio/socket.io.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js') !!}
|
||||
{!! Theme::js('vendor/select2/select2.full.min.js') !!}
|
||||
{!! Theme::js('js/admin/functions.js') !!}
|
||||
|
|
|
@ -24,6 +24,16 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{{ Settings::get('company', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#367fa9">
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css') !!}
|
||||
{!! Theme::css('vendor/adminlte/admin.min.css') !!}
|
||||
|
@ -50,6 +60,6 @@
|
|||
{!! Theme::js('vendor/jquery/jquery.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap/bootstrap.min.js') !!}
|
||||
|
||||
@if(config('app.phrase_in_context')) {!! Theme::js('js/phraseapp.js') !!} @endif
|
||||
@if(config('pterodactyl.lang.in_context')) {!! Theme::js('vendor/phraseapp/phraseapp.js') !!} @endif
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -25,6 +25,16 @@
|
|||
<title>{{ Settings::get('company', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<meta name="_token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#367fa9">
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css') !!}
|
||||
{!! Theme::css('vendor/adminlte/admin.min.css') !!}
|
||||
|
|
|
@ -25,6 +25,18 @@
|
|||
<title>{{ Settings::get('company', 'Pterodactyl') }} - @yield('title')</title>
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
<meta name="_token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="/favicons/manifest.json">
|
||||
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#bc6e3c">
|
||||
<link rel="shortcut icon" href="/favicons/favicon.ico">
|
||||
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#367fa9">
|
||||
|
||||
@include('layouts.scripts')
|
||||
|
||||
@section('scripts')
|
||||
{!! Theme::css('vendor/bootstrap/bootstrap.min.css') !!}
|
||||
{!! Theme::css('vendor/adminlte/admin.min.css') !!}
|
||||
|
@ -63,15 +75,15 @@
|
|||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" data-action="control-sidebar" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.servers') }}"><i class="fa fa-server" style="margin-top:4px;padding-bottom:2px;"></i></a>
|
||||
<a href="#" data-action="control-sidebar" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.servers') }}"><i class="fa fa-server"></i></a>
|
||||
</li>
|
||||
@if(Auth::user()->isRootAdmin())
|
||||
<li>
|
||||
<li><a href="{{ route('admin.index') }}" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.admin_cp') }}"><i class="fa fa-gears" style="margin-top:4px;padding-bottom:2px;"></i></a></li>
|
||||
<li><a href="{{ route('admin.index') }}" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.admin_cp') }}"><i class="fa fa-gears"></i></a></li>
|
||||
</li>
|
||||
@endif
|
||||
<li>
|
||||
<li><a href="{{ route('auth.logout') }}" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.logout') }}"><i class="fa fa-power-off" style="margin-top:4px;padding-bottom:2px;"></i></a></li>
|
||||
<li><a href="{{ route('auth.logout') }}" data-toggle="tooltip" data-placement="bottom" title="{{ @trans('strings.logout') }}"><i class="fa fa-power-off"></i></a></li>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -114,27 +126,22 @@
|
|||
<li class="{{ Route::currentRouteName() !== 'server.index' ?: 'active' }}">
|
||||
<a href="{{ route('server.index', $server->uuidShort) }}">
|
||||
<i class="fa fa-terminal"></i> <span>@lang('navigation.server.console')</span>
|
||||
<span class="pull-right-container muted muted-hover" href="{{ route('server.console', $server->uuidShort) }}" id="console-popout">
|
||||
<span class="label label-default pull-right" style="padding: 3px 5px 2px 5px;">
|
||||
<i class="fa fa-external-link"></i>
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
@can('list-files', $server)
|
||||
<li class="treeview
|
||||
@if(in_array(Route::currentRouteName(), ['server.files.index', 'server.files.edit', 'server.files.add']))
|
||||
active
|
||||
<li
|
||||
@if(starts_with(Route::currentRouteName(), 'server.files'))
|
||||
class="active"
|
||||
@endif
|
||||
">
|
||||
<a href="#">
|
||||
<i class="fa fa-files-o"></i>
|
||||
<span>@lang('navigation.server.file_management')</span>
|
||||
<span class="pull-right-container">
|
||||
<i class="fa fa-angle-left pull-right"></i>
|
||||
</span>
|
||||
>
|
||||
<a href="{{ route('server.files.index', $server->uuidShort) }}">
|
||||
<i class="fa fa-files-o"></i> <span>@lang('navigation.server.file_management')</span>
|
||||
</a>
|
||||
<ul class="treeview-menu">
|
||||
<li class="{{ (Route::currentRouteName() !== 'server.files.index' && Route::currentRouteName() !== 'server.files.edit') ?: 'active' }}"><a href="{{ route('server.files.index', $server->uuidShort) }}"><i class="fa fa-angle-right"></i> @lang('navigation.server.file_browser')</a></li>
|
||||
@can('create-files', $server)
|
||||
<li class="{{ Route::currentRouteName() !== 'server.files.add' ?: 'active' }}"><a href="{{ route('server.files.add', $server->uuidShort) }}"><i class="fa fa-angle-right"></i> @lang('navigation.server.create_file')</a></li>
|
||||
@endcan
|
||||
</ul>
|
||||
</li>
|
||||
@endcan
|
||||
@can('list-subusers', $server)
|
||||
|
@ -144,7 +151,7 @@
|
|||
@endif
|
||||
>
|
||||
<a href="{{ route('server.subusers', $server->uuidShort)}}">
|
||||
<i class="fa fa-users"></i> <span>Subusers</span>
|
||||
<i class="fa fa-users"></i> <span>@lang('navigation.server.subusers')</span>
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
|
@ -157,7 +164,7 @@
|
|||
<a href="{{ route('server.tasks', $server->uuidShort)}}">
|
||||
<i class="fa fa-clock-o"></i> <span>@lang('navigation.server.task_management')</span>
|
||||
<span class="pull-right-container">
|
||||
<span class="label label-primary pull-right">{{ \Pterodactyl\Models\Task::select('id')->where('server', $server->id)->where('active', 1)->count() }}</span>
|
||||
<span class="label label-primary pull-right">{{ \Pterodactyl\Models\Task::select('id')->where('server_id', $server->id)->where('active', 1)->count() }}</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -225,56 +232,56 @@
|
|||
</section>
|
||||
</div>
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right hidden-xs small text-gray">
|
||||
<strong>v</strong> {{ config('app.version') }}
|
||||
<div class="pull-right small text-gray" style="margin-right:10px;margin-top:-7px;">
|
||||
<strong><i class="fa fa-code-fork"></i></strong> {{ config('app.version') }} <br />
|
||||
<strong><i class="fa fa-clock-o"></i></strong> {{ round(microtime(true) - LARAVEL_START, 3) }}s
|
||||
</div>
|
||||
Copyright © 2015 - {{ date('Y') }} <a href="https://pterodactyl.io/">Pterodactyl Software</a>.
|
||||
</footer>
|
||||
<aside class="control-sidebar control-sidebar-dark">
|
||||
<ul class="nav nav-tabs nav-justified control-sidebar-tabs">
|
||||
<li><a href="#control-sidebar-servers-tab" data-toggle="tab"><i class="fa fa-server"></i></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="control-sidebar-servers-tab">
|
||||
<ul class="control-sidebar-menu">
|
||||
@foreach (Auth::user()->serverAccessCollection(null, []) as $s)
|
||||
<li>
|
||||
<a
|
||||
@if(isset($server) && isset($node))
|
||||
@if($server->uuidShort === $s->uuidShort)
|
||||
class="active"
|
||||
@endif
|
||||
<ul class="control-sidebar-menu">
|
||||
@foreach (Auth::user()->access(null)->get() as $s)
|
||||
<li>
|
||||
<a
|
||||
@if(isset($server) && isset($node))
|
||||
@if($server->uuidShort === $s->uuidShort)
|
||||
class="active"
|
||||
@endif
|
||||
href="{{ route('server.index', $s->uuidShort) }}">
|
||||
@if($s->owner_id === Auth::user()->id)
|
||||
<i class="menu-icon fa fa-user bg-blue"></i>
|
||||
@else
|
||||
<i class="menu-icon fa fa-user-o bg-gray"></i>
|
||||
@endif
|
||||
<div class="menu-info">
|
||||
<h4 class="control-sidebar-subheading">{{ $s->name }}</h4>
|
||||
<p>{{ $s->username }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
href="{{ route('server.index', $s->uuidShort) }}">
|
||||
@if($s->owner_id === Auth::user()->id)
|
||||
<i class="menu-icon fa fa-user bg-blue"></i>
|
||||
@else
|
||||
<i class="menu-icon fa fa-user-o bg-gray"></i>
|
||||
@endif
|
||||
<div class="menu-info">
|
||||
<h4 class="control-sidebar-subheading">{{ $s->name }}</h4>
|
||||
<p>{{ $s->username }}</p>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
<div class="control-sidebar-bg"></div>
|
||||
</div>
|
||||
@section('footer-scripts')
|
||||
{!! Theme::js('vendor/terminal/keyboard.polyfill.js') !!}
|
||||
<script>keyboardeventKeyPolyfill.polyfill();</script>
|
||||
|
||||
{!! Theme::js('js/laroute.js') !!}
|
||||
{!! Theme::js('vendor/jquery/jquery.min.js') !!}
|
||||
{!! Theme::js('vendor/sweetalert/sweetalert.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap/bootstrap.min.js') !!}
|
||||
{!! Theme::js('vendor/slimscroll/jquery.slimscroll.min.js') !!}
|
||||
{!! Theme::js('vendor/adminlte/app.min.js') !!}
|
||||
{!! Theme::js('js/vendor/socketio/socket.io.min.js') !!}
|
||||
{!! Theme::js('vendor/socketio/socket.io.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js') !!}
|
||||
|
||||
@if(config('app.phrase_in_context')) {!! Theme::js('js/phraseapp.js') !!} @endif
|
||||
@if(config('pterodactyl.lang.in_context'))
|
||||
{!! Theme::js('vendor/phraseapp/phraseapp.js') !!}
|
||||
@endif
|
||||
@show
|
||||
</body>
|
||||
</html>
|
||||
|
|
1
resources/themes/pterodactyl/layouts/scripts.blade.php
Normal file
1
resources/themes/pterodactyl/layouts/scripts.blade.php
Normal file
|
@ -0,0 +1 @@
|
|||
{{-- Just here as a binder for dynamically rendered content. --}}
|
49
resources/themes/pterodactyl/server/console.blade.php
Normal file
49
resources/themes/pterodactyl/server/console.blade.php
Normal file
|
@ -0,0 +1,49 @@
|
|||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
||||
|
||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
||||
{{-- furnished to do so, subject to the following conditions: --}}
|
||||
|
||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
||||
{{-- copies or substantial portions of the Software. --}}
|
||||
|
||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
||||
{{-- SOFTWARE. --}}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{{ Settings::get('company', 'Pterodactyl') }} - Console → {{ $server->name }}</title>
|
||||
@include('layouts.scripts')
|
||||
{!! Theme::css('vendor/terminal/jquery.terminal.css') !!}
|
||||
</head>
|
||||
<body style="margin:0;width:100%;height:100%;">
|
||||
<div id="terminal" style="width:100%"></div>
|
||||
<div id="terminalNotify" class="terminal-notify hidden">
|
||||
<i class="fa fa-bell"></i>
|
||||
</div>
|
||||
</body>
|
||||
<script>window.SkipConsoleCharts = true</script>
|
||||
{!! Theme::js('js/laroute.js') !!}
|
||||
{!! Theme::js('vendor/jquery/jquery.min.js') !!}
|
||||
{!! Theme::js('vendor/socketio/socket.io.min.js') !!}
|
||||
{!! Theme::js('vendor/bootstrap-notify/bootstrap-notify.min.js') !!}
|
||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||
{!! Theme::js('vendor/mousewheel/jquery.mousewheel-min.js') !!}
|
||||
{!! Theme::js('vendor/terminal/jquery.terminal.min.js') !!}
|
||||
{!! Theme::js('vendor/terminal/unix_formatting.js') !!}
|
||||
{!! Theme::js('js/frontend/console.js') !!}
|
||||
<script>
|
||||
Terminal.resize($(window).innerWidth() - 20, $(window).innerHeight() - 20);
|
||||
$(window).on('resize', function () {
|
||||
Terminal.resize($(window).innerWidth() - 20, $(window).innerHeight() - 20);
|
||||
});
|
||||
</script>
|
||||
</html>
|
|
@ -70,18 +70,20 @@
|
|||
<option value="java">Java</option>
|
||||
<option value="javascript">JavaScript</option>
|
||||
<option value="json">JSON</option>
|
||||
<option value="kotlin">Kotlin</option>
|
||||
<option value="lua">Lua</option>
|
||||
<option value="markdown">Markdown</option>
|
||||
<option value="mysql">MySQL</option>
|
||||
<option value="objectivec">Objective-C</option>
|
||||
<option value="perl">Perl</option>
|
||||
<option value="php">PHP</option>
|
||||
<option value="plain_text" selected="selected">Plain Text</option>
|
||||
<option value="properties">Properties</option>
|
||||
<option value="python">Python</option>
|
||||
<option value="ruby">Ruby</option>
|
||||
<option value="rust">Rust</option>
|
||||
<option value="smarty">Smarty</option>
|
||||
<option value="textile" selected="selected">Plain Text</option>
|
||||
<option value="sql">SQL</option>
|
||||
<option value="xml">XML</option>
|
||||
<option value="yaml">YAML</option>
|
||||
</select>
|
||||
|
@ -97,9 +99,9 @@
|
|||
@parent
|
||||
{!! Theme::js('vendor/select2/select2.full.min.js') !!}
|
||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||
{!! Theme::js('js/vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('js/vendor/ace/ext-modelist.js') !!}
|
||||
{!! Theme::js('js/vendor/lodash/lodash.js') !!}
|
||||
{!! Theme::js('vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('vendor/ace/ext-modelist.js') !!}
|
||||
{!! Theme::js('vendor/lodash/lodash.js') !!}
|
||||
{!! Theme::js('js/frontend/files/editor.js') !!}
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
|
|
|
@ -44,7 +44,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="file" value="{{ $file }}" />
|
||||
<div class="box-body" style="height:500px;" id="editor">{{ $contents }}</div>
|
||||
<textarea id="editorSetContent" class="hidden">{{ $contents }}</textarea>
|
||||
<div class="overlay" id="editorLoadingOverlay"><i class="fa fa-refresh fa-spin"></i></div>
|
||||
<div class="box-body" style="height:500px;" id="editor"></div>
|
||||
<div class="box-footer with-border">
|
||||
<button class="btn btn-sm btn-primary" id="save_file"><i class="fa fa-fw fa-save"></i> @lang('server.files.edit.save')</button>
|
||||
<a href="/server/{{ $server->uuidShort }}/files#{{ rawurlencode($directory) }}" class="pull-right"><button class="btn btn-default btn-sm">{{ trans('server.files.edit.return') }}</button></a>
|
||||
|
@ -57,7 +59,14 @@
|
|||
@section('footer-scripts')
|
||||
@parent
|
||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||
{!! Theme::js('js/vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('js/vendor/ace/ext-modelist.js') !!}
|
||||
{!! Theme::js('vendor/ace/ace.js') !!}
|
||||
{!! Theme::js('vendor/ace/ext-modelist.js') !!}
|
||||
{!! Theme::js('vendor/ace/ext-whitespace.js') !!}
|
||||
{!! Theme::js('js/frontend/files/editor.js') !!}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
Editor.setValue($('#editorSetContent').val(), -1);
|
||||
$('#editorLoadingOverlay').hide();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
|
@ -54,8 +54,8 @@
|
|||
@section('footer-scripts')
|
||||
@parent
|
||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||
{!! Theme::js('js/vendor/async/async.min.js') !!}
|
||||
{!! Theme::js('js/vendor/lodash/lodash.js') !!}
|
||||
{!! Theme::js('vendor/async/async.min.js') !!}
|
||||
{!! Theme::js('vendor/lodash/lodash.js') !!}
|
||||
{!! Theme::js('vendor/siofu/client.min.js') !!}
|
||||
@if(App::environment('production'))
|
||||
{!! Theme::js('js/frontend/files/filemanager.min.js') !!}
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
</td>
|
||||
<td data-identifier="size" class="hidden-xs">{{ $folder['size'] }}</td>
|
||||
<td data-identifier="modified" class="hidden-xs">
|
||||
<?php $carbon = Carbon::createFromTimestamp($folder['date'])->timezone(env('APP_TIMEZONE', 'America/New_York')); ?>
|
||||
<?php $carbon = Carbon::createFromTimestamp($folder['date'])->timezone(config('app.timezone')); ?>
|
||||
@if($carbon->diffInMinutes(Carbon::now()) > 60)
|
||||
{{ $carbon->format('m/d/y H:i:s') }}
|
||||
@elseif($carbon->diffInSeconds(Carbon::now()) < 5 || $carbon->isFuture())
|
||||
|
@ -153,7 +153,7 @@
|
|||
</td>
|
||||
<td data-identifier="size" class="hidden-xs">{{ $file['size'] }}</td>
|
||||
<td data-identifier="modified" class="hidden-xs">
|
||||
<?php $carbon = Carbon::createFromTimestamp($file['date'])->timezone(env('APP_TIMEZONE', 'America/New_York')); ?>
|
||||
<?php $carbon = Carbon::createFromTimestamp($file['date'])->timezone(config('app.timezone')); ?>
|
||||
@if($carbon->diffInMinutes(Carbon::now()) > 60)
|
||||
{{ $carbon->format('m/d/y H:i:s') }}
|
||||
@elseif($carbon->diffInSeconds(Carbon::now()) < 5 || $carbon->isFuture())
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
@section('scripts')
|
||||
@parent
|
||||
{!! Theme::css('css/jquery.terminal.css') !!}
|
||||
{!! Theme::css('vendor/terminal/jquery.terminal.css') !!}
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
|
@ -82,13 +82,13 @@
|
|||
@section('footer-scripts')
|
||||
@parent
|
||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||
{!! Theme::js('js/jquery.mousewheel-min.js') !!}
|
||||
{!! Theme::js('js/jquery.terminal-0.11.23.min.js') !!}
|
||||
{!! Theme::js('js/unix_formatting.js') !!}
|
||||
{!! Theme::js('vendor/mousewheel/jquery.mousewheel-min.js') !!}
|
||||
{!! Theme::js('vendor/terminal/jquery.terminal.min.js') !!}
|
||||
{!! Theme::js('vendor/terminal/unix_formatting.js') !!}
|
||||
{!! Theme::js('js/frontend/console.js') !!}
|
||||
{!! Theme::js('js/vendor/chartjs/chart.min.js') !!}
|
||||
{!! Theme::js('js/vendor/jquery/jquery-dateFormat.min.js') !!}
|
||||
@if($server->service->file === 'minecraft')
|
||||
{!! Theme::js('vendor/chartjs/chart.min.js') !!}
|
||||
{!! Theme::js('vendor/jquery/date-format.min.js') !!}
|
||||
@if($server->service->folder === 'minecraft')
|
||||
{!! Theme::js('js/plugins/minecraft/eula.js') !!}
|
||||
@endif
|
||||
@endsection
|
||||
|
|
|
@ -71,18 +71,10 @@
|
|||
<h3 class="box-title">@lang('server.config.sftp.details')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
<div class="form-group col-md-8">
|
||||
<label for="new_email" class="control-label">@lang('server.config.sftp.conn_addr')</label>
|
||||
<div>
|
||||
<input type="text" class="form-control" readonly value="{{ $node->fqdn }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label for="new_email" class="control-label">@lang('strings.port')</label>
|
||||
<div>
|
||||
<input type="text" class="form-control" readonly value="{{ $node->daemonSFTP }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">@lang('server.config.sftp.conn_addr')</label>
|
||||
<div>
|
||||
<input type="text" class="form-control" readonly value="sftp://{{ $node->fqdn }}:{{ $node->daemonSFTP }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
|
@ -38,6 +38,9 @@
|
|||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.tasks.current')</h3>
|
||||
<div class="box-tools">
|
||||
<a href="{{ route('server.tasks.new', $server->uuidShort) }}"><button class="btn btn-primary btn-sm">Create New</button></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -52,7 +55,7 @@
|
|||
<th></th>
|
||||
</tr>
|
||||
@foreach($tasks as $task)
|
||||
<tr @if($task->active === 0)class="muted muted-hover"@endif>
|
||||
<tr @if(! $task->active)class="muted muted-hover"@endif>
|
||||
<td class="middle">{{ $actions[$task->action] }}</td>
|
||||
<td class="middle"><code>{{ $task->data }}</code></td>
|
||||
<td class="middle">
|
||||
|
@ -62,7 +65,13 @@
|
|||
<span class="label label-default">@lang('strings.no')</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="middle">{{ Carbon::parse($task->last_run)->toDayDateTimeString() }}<br /><span class="text-muted small">({{ Carbon::parse($task->last_run)->diffForHumans() }})</span></td>
|
||||
<td class="middle">
|
||||
@if($task->last_run)
|
||||
{{ Carbon::parse($task->last_run)->toDayDateTimeString() }}<br /><span class="text-muted small">({{ Carbon::parse($task->last_run)->diffForHumans() }})</span>
|
||||
@else
|
||||
@lang('strings.not_run_yet')
|
||||
@endif
|
||||
</td>
|
||||
<td class="middle">
|
||||
@if($task->active !== 0)
|
||||
{{ Carbon::parse($task->next_run)->toDayDateTimeString() }}<br /><span class="text-muted small">({{ Carbon::parse($task->next_run)->diffForHumans() }})</span>
|
||||
|
@ -82,11 +91,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<a href="{{ route('server.tasks.new', $server->uuidShort) }}">
|
||||
<button class="btn btn-sm btn-primary">@lang('server.tasks.new_task')</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -38,6 +38,11 @@
|
|||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.list')</h3>
|
||||
@can('create-subuser', $server)
|
||||
<div class="box-tools">
|
||||
<a href="{{ route('server.subusers.new', $server->uuidShort) }}"><button class="btn btn-primary btn-sm">Create New</button></a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
<div class="box-body table-responsive no-padding">
|
||||
<table class="table table-hover">
|
||||
|
@ -83,11 +88,6 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@can('create-subuser', $server)
|
||||
<div class="box-footer with-border">
|
||||
<a href="{{ route('server.subusers.new', $server->uuidShort) }}"><button class="btn btn-sm btn-success pull-right">@lang('server.users.add')</button></a>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -60,340 +60,31 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
{{-- Left Side --}}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.power_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['power-start']))checked="checked"@endif value="power-start" />
|
||||
<strong>@lang('server.users.new.start.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.start.description')</p>
|
||||
</label>
|
||||
@foreach($permissions as $block => $perms)
|
||||
<div class="col-sm-6">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.' . $block . '_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
@foreach($perms as $permission => $daemon)
|
||||
<div class="form-group">
|
||||
<div class="checkbox checkbox-primary no-margin-bottom">
|
||||
<input id="{{ $permission }}" name="permissions[]" type="checkbox" value="{{ $permission }}"/>
|
||||
<label for="{{ $permission }}" class="strong">
|
||||
@lang('server.users.new.' . str_replace('-', '_', $permission) . '.title')
|
||||
</label>
|
||||
</div>
|
||||
<p class="text-muted small">@lang('server.users.new.' . str_replace('-', '_', $permission) . '.description')</p>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['power-stop']))checked="checked"@endif value="power-stop" />
|
||||
<strong>@lang('server.users.new.stop.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.stop.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['power-restart']))checked="checked"@endif value="power-restart" />
|
||||
<strong>@lang('server.users.new.restart.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.restart.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['power-kill']))checked="checked"@endif value="power-kill" />
|
||||
<strong>@lang('server.users.new.kill.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.kill.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['send-command']))checked="checked"@endif value="send-command" />
|
||||
<strong>@lang('server.users.new.command.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.command.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.subuser_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['list-subusers']))checked="checked"@endif value="list-subusers" />
|
||||
<strong>@lang('server.users.new.list_subusers.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_subusers.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-subuser']))checked="checked"@endif value="view-subuser" />
|
||||
<strong>@lang('server.users.new.view_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_subuser.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['edit-subuser']))checked="checked"@endif value="edit-subuser" />
|
||||
<strong>@lang('server.users.new.edit_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_subuser.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['create-subuser']))checked="checked"@endif value="create-subuser" />
|
||||
<strong>@lang('server.users.new.create_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_subuser.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['delete-subuser']))checked="checked"@endif value="delete-subuser" />
|
||||
<strong>@lang('server.users.new.delete_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_subuser.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.server_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['set-connection']))checked="checked"@endif value="set-connection" />
|
||||
<strong>@lang('server.users.new.set_connection.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.set_connection.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-startup']))checked="checked"@endif value="view-startup" />
|
||||
<strong>@lang('server.users.new.view_startup.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_startup.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['edit-startup']))checked="checked"@endif value="edit-startup" />
|
||||
<strong>@lang('server.users.new.edit_startup.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_startup.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.sftp_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-sftp']))checked="checked"@endif value="view-sftp" />
|
||||
<strong>@lang('server.users.new.view_sftp.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_sftp.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-sftp-password']))checked="checked"@endif value="view-sftp-password" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.view_sftp_password.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_sftp_password.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['reset-sftp']))checked="checked"@endif value="reset-sftp" />
|
||||
<strong>@lang('server.users.new.reset_sftp.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.reset_sftp.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
{{-- Right Side --}}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.file_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['list-files']))checked="checked"@endif value="list-files" />
|
||||
<strong>@lang('server.users.new.list_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['edit-files']))checked="checked"@endif value="edit-files" />
|
||||
<strong>@lang('server.users.new.edit_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['save-files']))checked="checked"@endif value="save-files" />
|
||||
<strong>@lang('server.users.new.save_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.save_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['move-files']))checked="checked"@endif value="move-files" />
|
||||
<strong>@lang('server.users.new.move_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.move_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['copy-files']))checked="checked"@endif value="copy-files" />
|
||||
<strong>@lang('server.users.new.copy_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.copy_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['compress-files']))checked="checked"@endif value="compress-files" />
|
||||
<strong>@lang('server.users.new.compress_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.compress_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['decompress-files']))checked="checked"@endif value="decompress-files" />
|
||||
<strong>@lang('server.users.new.decompress_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.decompress_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['create-files']))checked="checked"@endif value="create-files" />
|
||||
<strong>@lang('server.users.new.create_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['upload-files']))checked="checked"@endif value="upload-files" />
|
||||
<strong>@lang('server.users.new.upload_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.upload_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['delete-files']))checked="checked"@endif value="delete-files" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.delete_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['download-files']))checked="checked"@endif value="download-files" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.download_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.download_files.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.task_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['list-tasks']))checked="checked"@endif value="list-tasks" />
|
||||
<strong>@lang('server.users.new.list_tasks.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_tasks.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-task']))checked="checked"@endif value="view-task" />
|
||||
<strong>@lang('server.users.new.view_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_task.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['toggle-task']))checked="checked"@endif value="toggle-task" />
|
||||
<strong>@lang('server.users.new.toggle_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.toggle_task.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['queue-task']))checked="checked"@endif value="queue-task" />
|
||||
<strong>@lang('server.users.new.queue_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.queue_task.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['create-task']))checked="checked"@endif value="create-task" />
|
||||
<strong>@lang('server.users.new.create_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_task.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['delete-task']))checked="checked"@endif value="delete-task" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.delete_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_task.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.db_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['view-databases']))checked="checked"@endif value="view-databases" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.view_databases.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_databases.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($oldInput['reset-db-password']))checked="checked"@endif value="reset-db-password" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.reset_db_password.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.reset_db_password.description')</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if ($loop->iteration % 2 === 0)
|
||||
<div class="clearfix visible-lg-block visible-md-block visible-sm-block"></div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
</form>
|
||||
@endsection
|
||||
|
|
|
@ -62,270 +62,31 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
{{-- Left Side --}}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.power_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['power-start']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="power-start" />
|
||||
<label class="form-label">@lang('server.users.new.start.title')</label>
|
||||
<p class="text-muted small">@lang('server.users.new.start.description')</p>
|
||||
@foreach($permlist as $block => $perms)
|
||||
<div class="col-sm-6">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.' . $block . '_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
@foreach($perms as $permission => $daemon)
|
||||
<div class="form-group">
|
||||
<div class="checkbox checkbox-primary no-margin-bottom">
|
||||
<input id="{{ $permission }}" name="permissions[]" type="checkbox" @if(isset($permissions[$permission]))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="{{ $permission }}"/>
|
||||
<label for="{{ $permission }}" class="strong">
|
||||
@lang('server.users.new.' . str_replace('-', '_', $permission) . '.title')
|
||||
</label>
|
||||
</div>
|
||||
<p class="text-muted small">@lang('server.users.new.' . str_replace('-', '_', $permission) . '.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['power-stop']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="power-stop" />
|
||||
<strong>@lang('server.users.new.stop.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.stop.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['power-restart']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="power-restart" />
|
||||
<strong>@lang('server.users.new.restart.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.restart.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['power-kill']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="power-kill" />
|
||||
<strong>@lang('server.users.new.kill.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.kill.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['send-command']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="send-command" />
|
||||
<strong>@lang('server.users.new.command.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.command.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.subuser_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['list-subusers']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="list-subusers" />
|
||||
<strong>@lang('server.users.new.list_subusers.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_subusers.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-subuser']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-subuser" />
|
||||
<strong>@lang('server.users.new.view_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_subuser.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['edit-subuser']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="edit-subuser" />
|
||||
<strong>@lang('server.users.new.edit_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_subuser.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['create-subuser']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="create-subuser" />
|
||||
<strong>@lang('server.users.new.create_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_subuser.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['delete-subuser']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="delete-subuser" />
|
||||
<strong>@lang('server.users.new.delete_subuser.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_subuser.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.server_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['set-connection']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="set-connection" />
|
||||
<strong>@lang('server.users.new.set_connection.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.set_connection.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-startup']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-startup" />
|
||||
<strong>@lang('server.users.new.view_startup.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_startup.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['edit-startup']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="edit-startup" />
|
||||
<strong>@lang('server.users.new.edit_startup.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_startup.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.sftp_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-sftp']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-sftp" />
|
||||
<strong>@lang('server.users.new.view_sftp.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_sftp.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-sftp-password']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-sftp-password" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.view_sftp_password.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_sftp_password.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['reset-sftp']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="reset-sftp" />
|
||||
<strong>@lang('server.users.new.reset_sftp.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.reset_sftp.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
{{-- Right Side --}}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.file_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['list-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="list-files" />
|
||||
<strong>@lang('server.users.new.list_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['edit-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="edit-files" />
|
||||
<strong>@lang('server.users.new.edit_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.edit_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['save-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="save-files" />
|
||||
<strong>@lang('server.users.new.save_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.save_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['move-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="move-files" />
|
||||
<strong>@lang('server.users.new.move_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.move_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['copy-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="copy-files" />
|
||||
<strong>@lang('server.users.new.copy_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.copy_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['compress-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="compress-files" />
|
||||
<strong>@lang('server.users.new.compress_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.compress_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['decompress-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="decompress-files" />
|
||||
<strong>@lang('server.users.new.decompress_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.decompress_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['create-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="create-files" />
|
||||
<strong>@lang('server.users.new.create_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['upload-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="upload-files" />
|
||||
<strong>@lang('server.users.new.upload_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.upload_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['delete-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="delete-files" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.delete_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_files.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['download-files']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="download-files" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.download_files.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.download_files.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.task_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['list-tasks']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="list-tasks" />
|
||||
<strong>@lang('server.users.new.list_tasks.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.list_tasks.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-task']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-task" />
|
||||
<strong>@lang('server.users.new.view_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_task.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['toggle-task']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="toggle-task" />
|
||||
<strong>@lang('server.users.new.toggle_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.toggle_task.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['queue-task']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="queue-task" />
|
||||
<strong>@lang('server.users.new.queue_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.queue_task.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['create-task']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="create-task" />
|
||||
<strong>@lang('server.users.new.create_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.create_task.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['delete-task']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="delete-task" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.delete_task.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.delete_task.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">@lang('server.users.new.db_header')</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['view-databases']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="view-databases" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.view_databases.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.view_databases.description')</p>
|
||||
</div>
|
||||
<div>
|
||||
<input name="permissions[]" type="checkbox" @if(isset($permissions['reset-db-password']))checked="checked"@endif @cannot('edit-subuser', $server)disabled="disabled"@endcannot value="reset-db-password" />
|
||||
<span class="label label-danger">@lang('strings.danger')</span>
|
||||
<strong>@lang('server.users.new.reset_db_password.title')</strong>
|
||||
<p class="text-muted small">@lang('server.users.new.reset_db_password.description')</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if ($loop->iteration % 2 === 0)
|
||||
<div class="clearfix visible-lg-block visible-md-block visible-sm-block"></div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@can('edit-subuser', $server)
|
||||
</form>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue