2022-02-10 18:20:36 -05:00
{% extends ../base.html %}
{% block title %}Crafty Controller - {{ translate('serverWizard', 'newServer', data['lang']) }}{% end %}
{% block content %}
2024-06-21 13:25:07 -04:00
< link rel = "stylesheet" href = "../../static/assets/css/vendors/bootstrap-select-1.13.18.css" >
2022-02-10 18:20:36 -05:00
< div class = "content-wrapper" >
2023-09-25 20:15:17 +02:00
< ul class = "nav nav-pills tab-simple-styled" >
2022-09-04 18:01:00 -04:00
< li class = "nav-item term-nav-item" >
< a class = "nav-link active" href = "/server/step1" role = "tab" aria-selected = "false" >
< i class = "fas fa-file-signature" > < / i > Minecraft-Java< / a >
< / li >
< li class = "nav-item term-nav-item" >
< a class = "nav-link" href = "/server/bedrock_step1" role = "tab" aria-selected = "false" >
< i class = "fas fa-file-signature" > < / i > Minecraft-Bedrock< / a >
< / li >
< / ul >
< div class = "d-none" id = "overlay" onclick = "hide(event)" > < / div >
< div class = "row" >
< div class = "col-sm-6 grid-margin stretch-card" >
2023-05-14 13:59:47 -04:00
< div class = "card" id = "creation_wizard" >
2022-09-04 18:01:00 -04:00
< div class = "card-body" >
2022-02-10 18:20:36 -05:00
2022-09-04 18:01:00 -04:00
< h4 > {{ translate('serverWizard', 'newServer', data['lang']) }}< / h4 >
< br / >
< p class = "card-description" >
2022-02-10 18:20:36 -05:00
2023-08-17 15:11:29 -04:00
< form method = "post" id = "download_jar" >
2023-05-17 12:51:45 -04:00
{% if data["server_api"] and data["online"] %}
2023-05-14 13:59:47 -04:00
< fieldset >
2023-05-18 09:53:23 +02:00
{% else %}
< fieldset disabled = "disabled" >
< style >
#creation_wizard {
-webkit-filter: grayscale(1);
}
.api-alert {
position: absolute;
top: -5px;
left: 0;
font-size: 50px !important;
color: #fff;
background: rgb(0, 170, 170);
opacity: .4;
width: 100%;
height: 100%;
z-index: 100;
}
.api-alert p {
margin: 0;
position: absolute;
top: 50%;
left: 50%;
text-align: center;
font-size: 20px;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
< / style >
{% end %}
{% raw xsrf_form_html() %}
< div class = "row" >
2024-05-04 15:55:52 -04:00
2023-05-18 09:53:23 +02:00
< div class = "col-sm-12" >
< div class = "form-group" >
2024-05-05 09:44:17 -04:00
< label for = "server_jar" > {{ translate('serverWizard', 'serverType', data['lang']) }}< / label >
2023-05-18 09:53:23 +02:00
< div class = "input-group" >
2024-07-28 18:51:12 +02:00
< select required class = "form-control form-control-lg select-css" id = "server_jar" name = "type" onchange = "serverJarChange(this)" >
2024-05-04 15:55:52 -04:00
< option value = "" > {{ translate('serverWizard', 'selectServer', data['lang']) }}< / option >
2023-05-18 09:53:23 +02:00
{% for s in data['server_types'] %}
2024-05-07 19:34:44 -04:00
{% if data['server_types'][s].get("enabled", False) %}
< option value = "{{ s }}" > {{ data["server_types"][s].get("friendly_name", s).capitalize() }}
{% end %}
< / option >
2023-05-18 09:53:23 +02:00
{% end %}
< / select >
{% if data['super_user'] %}
< div class = "input-group-append" >
2024-07-28 18:51:12 +02:00
< button class = "btn custom-picker" type = "button" onclick = "refreshCache()" > < i id = "refresh-cache" class = "refresh-class fas fa-sync" > < / i > < / button >
2023-05-18 09:53:23 +02:00
< / div >
2023-02-02 23:47:54 +01:00
{% end %}
< / div >
2023-05-18 09:53:23 +02:00
< / div >
2023-02-02 23:47:54 +01:00
< / div >
2022-02-10 18:20:36 -05:00
2024-05-05 09:44:17 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_type" > {{ translate('serverWizard', 'serverSelect', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< select required class = "form-control form-control-lg select-css" id = "server_type" name = "type" onchange = "serverTypeChange(this)" >
2024-05-05 09:44:17 -04:00
< option value = "" > {{ translate('serverWizard', 'selectServer', data['lang']) }}< / option >
< / select >
< / div >
< / div >
2023-05-18 09:53:23 +02:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_version" > {{ translate('serverWizard', 'serverVersion', data['lang']) }}< / label >
2023-08-17 15:11:29 -04:00
< select required class = "form-control form-control-lg select-css" id = "server" name = "version" >
2023-05-18 09:53:23 +02:00
< option value = "" > {{ translate('serverWizard', 'selectVersion', data['lang']) }}< / option >
< / select >
< / div >
< / div >
2024-07-28 18:51:12 +02:00
< span data-html = "true" class = "version-hint text-center" data-content = "⚠️ {{ translate('serverWizard', 'unsupported', data['lang']) }} ⚠️" , data-placement = "right" > < / span >
2023-05-18 09:53:23 +02:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_name" > {{ translate('serverWizard', 'serverName', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_name" name = "name" placeholder = "{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required >
2023-05-18 09:53:23 +02:00
< / div >
< / div >
2022-09-04 18:01:00 -04:00
2022-03-27 18:09:49 -04:00
< / div >
2023-05-18 09:53:23 +02:00
< br / >
2024-07-28 18:51:12 +02:00
< h4 class = "card-title" > {{ translate('serverWizard', 'quickSettings', data['lang']) }} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'quickSettingsDescription', data['lang']) }}< / small > < / h4 >
2023-05-18 09:53:23 +02:00
< hr >
< div class = "row" >
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "min_memory1" > {{ translate('serverWizard', 'minMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "min_memory1" name = "mem_min" value = "1" step = "0.5" min = "0.5" required >
2023-05-18 09:53:23 +02:00
< / div >
< / div >
2022-02-10 18:20:36 -05:00
2023-05-18 09:53:23 +02:00
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "max_memory1" > {{ translate('serverWizard', 'maxMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "max_memory1" name = "mem_max" value = "2" step = "0.5" min = "0.5" required >
2023-05-18 09:53:23 +02:00
< / div >
< / div >
2022-02-10 18:20:36 -05:00
2023-05-18 09:53:23 +02:00
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "port1" > {{ translate('serverWizard', 'serverPort', data['lang']) }} < small > - {{
translate('serverWizard', 'defaultPort', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "port1" name = "port" value = "25565" step = "1" min = "1" max = "65535 " required >
2023-05-18 09:53:23 +02:00
< / div >
< / div >
< div class = "col-sm-12" >
< div class = "form-group" >
< div id = "accordion-1" >
< div class = "card" >
< div class = "card-header p-2" id = "Role-1" >
2024-08-03 22:44:06 +02:00
< p class = "mb-0 p-0" data-toggle = "collapse" data-target = "#collapseRole-1"
aria-expanded="true" aria-controls="collapseRole-1">
2023-09-04 19:22:11 -04:00
< i class = "fas fa-chevron-down" > < / i > {{ translate('serverWizard', 'addRole', data['lang'])
}}
2023-05-18 09:53:23 +02:00
< small style = "text-transform: none;" > - {{ translate('serverWizard', 'autoCreate',
data['lang']) }}< / small >
< / p >
< / div >
< div id = "collapseRole-1" class = "collapse" aria-labelledby = "Role-1" data-parent = "" >
< div class = "card-body scroll" >
< div class = "form-group" >
2024-08-03 22:44:06 +02:00
< select data-container = "body"
data-none-selected-text="{{ translate('serverWizard', 'noneRoles', data['lang']) }}"
data-none-results-text="{{ translate('serverWizard', 'noRole', data['lang']) }} {0}"
class="selectpicker form-control form-control-lg select-css roles_select"
data-styleBase="form-control" data-style="form-control" data-live-search="true"
name="server_roles" multiple>
{% for r in data['roles'] %}
< option class = "roles" type = "checkbox" value = "{{ r['role_id'] }}" >
{{ r['role_name'].capitalize()
}}
< / option >
{% end %}
< / select >
2023-05-18 09:53:23 +02:00
< / div >
< / div >
2022-02-10 18:20:36 -05:00
< / div >
< / div >
< / div >
< / div >
< / div >
2023-05-18 09:53:23 +02:00
2022-02-10 18:20:36 -05:00
< / div >
2023-05-18 09:53:23 +02:00
< button type = "submit" class = "btn btn-primary mr-2" > {{ translate('serverWizard', 'buildServer',
data['lang']) }}< / button >
< button type = "reset" class = "btn btn-danger mr-2" > {{ translate('serverWizard', 'resetForm', data['lang'])
}}< / button >
< / fieldset >
2022-02-10 18:20:36 -05:00
< / div >
2023-09-04 19:22:11 -04:00
< / fieldset >
{% if not data["server_api"] and data["online"] %}
< div class = "api-alert" style = "position: absolute; top: -5px; z-index: 100; opacity: .99;" >
< p style = "color: white !important;" > < i class = "fas fa-exclamation-triangle" style = "color: red;" > < / i > {{
2024-07-28 18:51:12 +02:00
translate('error', 'bigBucket1', data['lang']) }}< a style = "color: red;" ; href = "https://status.craftycontrol.com/status/craftycontrol" target = "_blank" rel = "noopener" > {{
2024-05-04 15:55:52 -04:00
translate('error',
2023-09-04 19:22:11 -04:00
'craftyStatus', data['lang']) }}< / a >
2024-05-05 10:11:43 -04:00
{{ translate('error', 'bigBucket2', data['lang']) }}< / br > < / br > < small > {{ translate('error', 'selfHost',
data['lang'])}}< / small > < / p >
2023-09-04 19:22:11 -04:00
< / div >
{% end %}
{% if not data["online"] %}
< div class = "api-alert" style = "position: absolute; top: -5px; z-index: 100; opacity: .99;" >
< p style = "color: white !important;" > < i class = "fas fa-exclamation-triangle" style = "color: red;" > < / i > {{
translate('error', 'noInternet', data['lang']) }}< / p >
< / div >
{% end %}
< / div >
2023-05-14 14:23:06 -04:00
< / form >
2022-09-04 18:01:00 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2023-02-02 23:47:54 +01:00
<!-- Import an Existing Server -->
< div class = "col-md-6 grid-margin stretch-card" >
2022-09-04 18:01:00 -04:00
< div class = "card" >
< div class = "card-body" >
< h4 > {{ translate('serverWizard', 'importServer', data['lang']) }}< / h4 >
< br / >
< p class = "card-description" >
2023-09-03 13:23:18 -04:00
< form class = "server-wizard" id = "import-jar" >
2022-09-04 18:01:00 -04:00
{% raw xsrf_form_html() %}
< input type = "hidden" value = "import_jar" name = "create_type" >
< div class = "row" >
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_name" > {{ translate('serverWizard', 'serverName', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_name" name = "name" value = "" placeholder = "{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server" > {{ translate('serverWizard', 'serverPath', data['lang']) }} < small > {{
translate('serverWizard', 'absoluteServerPath', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_path" name = "server_path" placeholder = "/var/opt/server" required >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_jar" > {{ translate('serverWizard', 'serverJar', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_jar" name = "server_jar" value = "" placeholder = "paper.jar" required >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:01:00 -04:00
< / div >
2022-02-10 18:20:36 -05:00
< br / >
2024-07-28 18:51:12 +02:00
< h4 class = "card-title" > {{ translate('serverWizard', 'quickSettings', data['lang']) }} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'quickSettingsDescription',
2022-09-04 18:01:00 -04:00
data['lang']) }}< / small > < / h4 >
< hr >
< div class = "row" >
2022-02-10 18:20:36 -05:00
2022-09-04 18:01:00 -04:00
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "min_memory2" > {{ translate('serverWizard', 'minMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "min_memory2" name = "mem_min" value = "1" step = "0.5" min = "0.5" required >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:01:00 -04:00
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "max_memory2" > {{ translate('serverWizard', 'maxMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "max_memory2" name = "mem_max" value = "2" step = "0.5" min = "0.5" required >
2022-03-27 18:09:49 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:01:00 -04:00
< div class = "col-sm-4" >
< div class = "form-group" >
< label for = "port2" > {{ translate('serverWizard', 'serverPort', data['lang']) }} < small > - {{
translate('serverWizard', 'defaultPort', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "port2" name = "port" value = "25565" step = "1" min = "1" max = "65535" required >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
< div class = "col-sm-12" >
< div class = "form-group" >
< div id = "accordion-2" >
< div class = "card" >
< div class = "card-header p-2" id = "Role-2" >
2024-08-03 22:44:06 +02:00
< p class = "mb-0 p-0" data-toggle = "collapse" data-target = "#collapseRole-2" aria-expanded = "true"
aria-controls="collapseRole-2">
2022-09-04 18:01:00 -04:00
< i class = "fas fa-chevron-down" > < / i > {{ translate('serverWizard', 'addRole', data['lang']) }}
< small style = "text-transform: none;" > - {{ translate('serverWizard', 'autoCreate',
data['lang']) }}< / small >
< / p >
< / div >
< div id = "collapseRole-2" class = "collapse" aria-labelledby = "Role-2" data-parent = "" >
< div class = "card-body scroll" >
< div class = "form-group" >
2024-08-03 22:44:06 +02:00
< select data-container = "body"
data-none-selected-text="{{ translate('serverWizard', 'noneRoles', data['lang']) }}"
data-none-results-text="{{ translate('serverWizard', 'noRole', data['lang']) }} {0}"
class="selectpicker form-control form-control-lg select-css roles_select"
data-styleBase="form-control" data-style="form-control" data-live-search="true"
name="server_roles" multiple>
{% for r in data['roles'] %}
< option class = "roles" type = "checkbox" value = "{{ r['role_id'] }}" >
{{ r['role_name'].capitalize()
}}
< / option >
{% end %}
< / select >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
< / div >
< / div >
2022-02-10 18:20:36 -05:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / div >
< / div >
< button type = "submit" class = "btn btn-primary mr-2" > {{ translate('serverWizard', 'importServerButton',
data['lang']) }}< / button >
< button type = "reset" class = "btn btn-danger mr-2" > {{ translate('serverWizard', 'resetForm', data['lang'])
}}< / button >
< / form >
< / p >
< / div >
< / div >
< / div >
2023-02-02 23:47:54 +01:00
<!-- Import from a Zip File -->
< div class = "col-md-6 grid-margin stretch-card" >
2022-09-04 18:27:45 -04:00
< div class = "card" >
< div class = "card-body" >
2022-09-04 18:01:00 -04:00
2022-09-04 18:27:45 -04:00
< h4 > {{ translate('serverWizard', 'importZip', data['lang']) }}< / h4 >
< br / >
< p class = "card-description" >
2022-09-04 18:01:00 -04:00
2023-08-17 16:46:35 -04:00
< form name = "zip" id = "import-zip" class = "server-wizard" >
2022-09-04 18:27:45 -04:00
{% raw xsrf_form_html() %}
< input type = "hidden" value = "import_zip" name = "create_type" >
2022-09-04 18:01:00 -04:00
2022-09-04 18:27:45 -04:00
< div class = "row" >
2022-09-04 18:01:00 -04:00
< div class = "col-sm-12" >
2022-09-04 18:27:45 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_name" > {{ translate('serverWizard', 'serverName', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_name" name = "name" value = "" placeholder = "{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required >
2022-09-04 18:27:45 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:27:45 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server" > {{ translate('serverWizard', 'zipPath', data['lang']) }} < small > {{
translate('serverWizard', 'absoluteZipPath', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "zip_server_path" name = "server_path" placeholder = "/var/opt/server.zip" required >
2022-09-04 18:27:45 -04:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:27:45 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server" > {{ translate('serverWizard', 'selectRoot', data['lang']) }} < small > {{
translate('serverWizard', 'explainRoot', data['lang']) }}< / small > < / label >
< br >
< button class = "btn btn-primary mr-2" id = "root_files_button" type = "button" > {{
translate('serverWizard', 'clickRoot', data['lang']) }}< / button >
< / div >
2022-09-04 18:01:00 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2022-09-04 18:27:45 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
< label for = "server_jar" > {{ translate('serverWizard', 'serverJar', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_jar" name = "server_jar" value = "" placeholder = "paper.jar" required >
2022-09-04 18:27:45 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / div >
2022-09-04 18:27:45 -04:00
< div class = "col-sm-12" >
2024-07-28 18:51:12 +02:00
< h4 class = "card-title" > {{ translate('serverWizard', 'quickSettings', data['lang']) }} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'quickSettingsDescription',
2022-03-27 18:09:49 -04:00
data['lang']) }}< / small > < / h4 >
< hr >
< div class = "row" >
2023-02-02 23:47:54 +01:00
< div class = "col-sm-4" >
2022-03-27 18:09:49 -04:00
< div class = "form-group" >
2022-09-04 18:01:00 -04:00
< label for = "min_memory3" > {{ translate('serverWizard', 'minMem', data['lang']) }} < small > - {{
2022-03-27 18:09:49 -04:00
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "min_memory3" name = "mem_min" value = "1" step = "0.5" min = "0.5" required >
2022-02-10 18:20:36 -05:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2023-02-02 23:47:54 +01:00
< div class = "col-sm-4" >
2022-03-27 18:09:49 -04:00
< div class = "form-group" >
2022-09-04 18:01:00 -04:00
< label for = "max_memory3" > {{ translate('serverWizard', 'maxMem', data['lang']) }} < small > - {{
2022-03-27 18:09:49 -04:00
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "max_memory3" name = "mem_max" value = "2" step = "0.5" min = "0.5" required >
2022-02-10 18:20:36 -05:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-02-10 18:20:36 -05:00
2023-02-02 23:47:54 +01:00
< div class = "col-sm-4" >
2022-03-27 18:09:49 -04:00
< div class = "form-group" >
2022-09-04 18:01:00 -04:00
< label for = "port3" > {{ translate('serverWizard', 'serverPort', data['lang']) }} < small > - {{
2022-03-27 18:09:49 -04:00
translate('serverWizard', 'defaultPort', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "port3" name = "port" value = "25565" step = "1" min = "1" max = "65535" required >
2022-02-10 18:20:36 -05:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2022-09-04 18:01:00 -04:00
2022-03-27 18:09:49 -04:00
< div class = "col-sm-12" >
< div class = "form-group" >
2022-09-04 18:01:00 -04:00
< div id = "accordion-3" >
2022-03-27 18:09:49 -04:00
< div class = "card" >
2022-09-04 18:01:00 -04:00
< div class = "card-header p-2" id = "Role-3" >
2024-08-03 22:44:06 +02:00
< p class = "mb-0 p-0" data-toggle = "collapse" data-target = "#collapseRole-3" aria-expanded = "true"
aria-controls="collapseRole-3">
2022-09-04 18:01:00 -04:00
< i class = "fas fa-chevron-down" > < / i > {{ translate('serverWizard', 'addRole', data['lang'])
}} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'autoCreate',
2022-03-27 18:09:49 -04:00
data['lang']) }}< / small >
< / p >
< / div >
2022-09-04 18:01:00 -04:00
< div id = "collapseRole-3" class = "collapse" aria-labelledby = "Role-3" data-parent = "" >
2022-03-27 18:09:49 -04:00
< div class = "card-body scroll" >
< div class = "form-group" >
2024-08-03 22:44:06 +02:00
< select data-container = "body"
data-none-selected-text="{{ translate('serverWizard', 'noneRoles', data['lang']) }}"
data-none-results-text="{{ translate('serverWizard', 'noRole', data['lang']) }} {0}"
class="selectpicker form-control form-control-lg select-css roles_select"
data-styleBase="form-control" data-style="form-control" data-live-search="true"
name="server_roles" multiple>
{% for r in data['roles'] %}
< option class = "roles" type = "checkbox" value = "{{ r['role_id'] }}" >
{{ r['role_name'].capitalize()
}}
< / option >
{% end %}
< / select >
2022-02-10 18:20:36 -05:00
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
2024-07-28 18:51:12 +02:00
< div class = "modal fade" id = "dir_select" tabindex = "-1" role = "dialog" aria-labelledby = "dir_select" aria-hidden = "true" >
2022-09-04 18:01:00 -04:00
< div class = "modal-dialog" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "exampleModalLongTitle" > {{ translate('serverWizard',
'selectZipDir', data['lang']) }}< / h5 >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
2022-02-10 18:20:36 -05:00
< / div >
2022-09-04 18:01:00 -04:00
< div class = "modal-body" >
2024-07-28 18:51:12 +02:00
< div class = "tree-ctx-item" id = "main-tree-div" data-path = "" style = "overflow: scroll; max-height:75%;" >
2023-09-03 13:23:18 -04:00
< input type = "radio" class = "root-input" id = "main-tree-input" name = "root_path" value = "" checked >
2022-09-04 18:01:00 -04:00
< span id = "main-tree" class = "files-tree-title tree-caret-down root-dir" data-path = "" >
< i class = "far fa-folder" > < / i >
< i class = "far fa-folder-open" > < / i >
{{ translate('serverFiles', 'files', data['lang']) }}
< / span >
< / input >
2022-03-27 18:09:49 -04:00
< / div >
2022-02-10 18:20:36 -05:00
< / div >
2022-09-04 18:01:00 -04:00
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > {{
translate('serverWizard', 'close', data['lang']) }}< / button >
< button type = "button" id = "modal-okay" data-dismiss = "modal" class = "btn btn-primary" > {{
translate('serverWizard', 'save', data['lang']) }}< / button >
< / div >
2022-02-10 18:20:36 -05:00
< / div >
< / div >
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2024-07-28 18:51:12 +02:00
< button id = "zip_submit" type = "submit" title = "You must select server root dir first" disabled class = "btn btn-primary mr-2" > {{ translate('serverWizard', 'importServerButton', data['lang'])
2022-09-04 18:01:00 -04:00
}}< / button >
2022-10-02 15:54:13 -04:00
< button type = "button" class = "btn btn-danger mr-2 tree-reset" > {{ translate('serverWizard', 'resetForm',
data['lang'])
2022-09-04 18:01:00 -04:00
}}< / button >
2022-03-27 18:09:49 -04:00
< / div >
2022-09-04 18:27:45 -04:00
< / div >
2022-09-04 18:01:00 -04:00
< / form >
< / p >
2022-02-10 18:20:36 -05:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2023-02-02 23:47:54 +01:00
<!-- Upload Zip File For Server Import -->
< div class = "col-md-6 grid-margin stretch-card" >
2022-09-27 22:06:22 -04:00
< div class = "card" >
< div class = "card-body" >
< h4 > {{ translate('serverWizard', 'uploadZip', data['lang']) }}< / h4 >
< br / >
< p class = "card-description" >
2023-08-17 16:46:35 -04:00
< form name = "zip" id = "import-upload" class = "server-wizard" >
2022-09-27 22:06:22 -04:00
{% raw xsrf_form_html() %}
< input type = "hidden" value = "import_zip" name = "create_type" >
2023-02-02 23:47:54 +01:00
< div class = "form-group" >
< label for = "server_name" > {{ translate('serverWizard', 'serverName', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_name" name = "name" value = "" placeholder = "{{ translate('serverWizard', 'myNewServer', data['lang']) }}" required >
2023-02-02 23:47:54 +01:00
< / div >
< div class = "form-group" >
2023-03-12 10:43:50 +01:00
< label for = "server" > {{ translate('serverWizard', 'serverUpload', data['lang']) }}< / label >
2023-02-02 23:47:54 +01:00
< div id = "upload_input" class = "input-group" >
< div class = "custom-file" >
< input type = "file" multiple = "false" class = "custom-file-input" id = "file" name = "file" required >
2023-09-04 19:22:11 -04:00
< label id = "fileLabel" class = "custom-file-label" for = "file" > {{ translate('serverWizard',
'labelZipFile', data['lang']) }}< / label >
2022-09-27 22:06:22 -04:00
< / div >
2023-02-02 23:47:54 +01:00
< div class = "input-group-append" >
2024-07-28 18:51:12 +02:00
< button type = "button" class = "btn btn-info upload-button" id = "upload-button" onclick = "uploadFile('import')" disabled > {{ translate('serverWizard',
2023-03-12 10:43:50 +01:00
'uploadButton', data['lang']) }}< / button >
2022-09-27 22:06:22 -04:00
< / div >
< / div >
2023-02-02 23:47:54 +01:00
< / div >
2022-09-27 22:06:22 -04:00
2023-02-02 23:47:54 +01:00
< div id = "lower_half" style = "visibility: hidden;" hidden >
< div class = "form-group" >
< label for = "server" > {{ translate('serverWizard', 'selectRoot', data['lang']) }} < small > {{
translate('serverWizard', 'explainRoot', data['lang']) }}< / small > < / label >
< br >
< button class = "btn btn-primary mr-2" id = "root_upload_button" type = "button" > {{
translate('serverWizard', 'clickRoot', data['lang']) }}< / button >
< / div >
2022-09-27 22:06:22 -04:00
2023-02-02 23:47:54 +01:00
< div class = "form-group" >
< label for = "server_jar" > {{ translate('serverWizard', 'serverJar', data['lang']) }}< / label >
2024-07-28 18:51:12 +02:00
< input type = "text" class = "form-control" id = "server_jar" name = "server_jar" value = "" placeholder = "paper.jar" required >
2023-02-02 23:47:54 +01:00
< / div >
2022-09-27 22:06:22 -04:00
2024-07-28 18:51:12 +02:00
< h4 class = "card-title" > {{ translate('serverWizard', 'quickSettings', data['lang']) }} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'quickSettingsDescription',
2023-02-02 23:47:54 +01:00
data['lang']) }}< / small > < / h4 >
< hr >
2022-09-27 22:06:22 -04:00
2023-02-02 23:47:54 +01:00
< div class = "form-group" >
< label for = "min_memory3" > {{ translate('serverWizard', 'minMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "min_memory3" name = "mem_min" value = "1" step = "0.5" min = "0.5" required >
2023-02-02 23:47:54 +01:00
< / div >
2022-09-27 22:06:22 -04:00
2023-02-02 23:47:54 +01:00
< div class = "form-group" >
< label for = "max_memory3" > {{ translate('serverWizard', 'maxMem', data['lang']) }} < small > - {{
translate('serverWizard', 'sizeInGB', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "max_memory3" name = "mem_max" value = "2" step = "0.5" min = "0.5" required >
2023-02-02 23:47:54 +01:00
< / div >
2022-09-27 22:06:22 -04:00
2023-02-02 23:47:54 +01:00
< div class = "form-group" >
< label for = "port3" > {{ translate('serverWizard', 'serverPort', data['lang']) }} < small > - {{
translate('serverWizard', 'defaultPort', data['lang']) }}< / small > < / label >
2024-07-28 18:51:12 +02:00
< input type = "number" class = "form-control" id = "port3" name = "port" value = "25565" step = "1" min = "1" max = "65535" required >
2023-02-02 23:47:54 +01:00
< / div >
2023-09-04 19:22:11 -04:00
< div class = "form-group" >
< div id = "accordion-3" >
< div class = "card" >
< div class = "card-header p-2" id = "Role-3" >
2024-08-03 22:44:06 +02:00
< p class = "mb-0 p-0" data-toggle = "collapse" data-target = "#collapseRole-3" aria-expanded = "true"
aria-controls="collapseRole-3">
2023-09-04 19:22:11 -04:00
< i class = "fas fa-chevron-down" > < / i > {{ translate('serverWizard', 'addRole',
data['lang'])
}} < small style = "text-transform: none;" > - {{ translate('serverWizard', 'autoCreate',
data['lang']) }}< / small >
< / p >
< / div >
< div id = "collapseRole-3" class = "collapse" aria-labelledby = "Role-3" data-parent = "" >
< div class = "card-body scroll" >
< div class = "form-group" >
2024-08-03 22:44:06 +02:00
< select data-container = "body"
data-none-selected-text="{{ translate('serverWizard', 'noneRoles', data['lang']) }}"
data-none-results-text="{{ translate('serverWizard', 'noRole', data['lang']) }} {0}"
class="selectpicker form-control form-control-lg select-css roles_select"
data-styleBase="form-control" data-style="form-control" data-live-search="true"
name="server_roles" multiple>
{% for r in data['roles'] %}
< option class = "roles" type = "checkbox" value = "{{ r['role_id'] }}" >
{{ r['role_name'].capitalize()
}}
< / option >
{% end %}
< / select >
2022-09-27 22:06:22 -04:00
< / div >
< / div >
< / div >
2023-02-02 23:47:54 +01:00
< / div >
< / div >
2023-09-04 19:22:11 -04:00
< / div >
2024-07-28 18:51:12 +02:00
< div class = "modal fade" id = "dir_upload_select" tabindex = "-1" role = "dialog" aria-labelledby = "dir_select" aria-hidden = "true" >
2023-09-03 13:23:18 -04:00
< div class = "modal-dialog" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "exampleModalLongTitle" > {{ translate('serverWizard',
'selectZipDir', data['lang']) }}< / h5 >
< button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >
< span aria-hidden = "true" > × < / span >
< / button >
< / div >
< div class = "modal-body" >
2024-07-28 18:51:12 +02:00
< div class = "tree-ctx-item" id = "main-tree-div-upload" data-path = "" style = "overflow: scroll; max-height:75%;" >
< input type = "radio" class = "root-input" id = "main-tree-input-upload" name = "root_path" value = "" checked >
2023-09-03 13:23:18 -04:00
< span id = "main-tree" class = "files-tree-title tree-caret-down root-dir" data-path = "" >
< i class = "far fa-folder" > < / i >
< i class = "far fa-folder-open" > < / i >
{{ translate('serverFiles', 'files', data['lang']) }}
< / span >
< / input >
2023-02-02 23:47:54 +01:00
< / div >
2022-09-27 22:06:22 -04:00
< / div >
2023-09-03 13:23:18 -04:00
< div class = "modal-footer" >
< button type = "button" class = "btn btn-secondary" data-dismiss = "modal" > {{
translate('serverWizard', 'close', data['lang']) }}< / button >
< button type = "button" id = "modal-okay" data-dismiss = "modal" class = "btn btn-primary" > {{
translate('serverWizard', 'save', data['lang']) }}< / button >
< / div >
2022-09-27 22:06:22 -04:00
< / div >
< / div >
< / div >
2023-09-03 13:23:18 -04:00
< / div >
2024-07-28 18:51:12 +02:00
< button id = "upload_submit" type = "submit" title = "You must select server root dir first" disabled class = "btn btn-primary mr-2" > {{ translate('serverWizard', 'importServerButton', data['lang'])
2023-09-03 13:23:18 -04:00
}}< / button >
< button type = "button" class = "btn btn-danger mr-2 tree-reset" > {{ translate('serverWizard', 'resetForm',
data['lang'])
}}< / button >
2022-09-27 22:06:22 -04:00
< / div >
2023-09-04 19:22:11 -04:00
< / form >
< / p >
2022-09-27 22:06:22 -04:00
< / div >
2022-09-04 18:27:45 -04:00
< / div >
2022-03-27 18:09:49 -04:00
< / div >
2023-09-04 19:22:11 -04:00
< / div >
2023-02-02 23:47:54 +01:00
< style >
button>i.refresh-class {
margin: 0px;
}
< / style >
2022-09-04 18:27:45 -04:00
< style >
.refresh-class:hover {
cursor: grab;
}
.scroll {
max-height: 12em;
overflow-y: auto;
}
.menu-btn {
font-size: 0.9em;
padding: 2px 10px;
}
.menu {
padding-top: 10px;
z-index: 200;
margin-top: 4px;
position: absolute;
2022-09-25 17:52:01 -04:00
background-color: var(--card-banner-bg);
2022-09-04 18:27:45 -04:00
}
.menu-option {
padding: 6px 20px 6px;
color: white;
}
#overlay {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 100;
}
< / style >
< style >
/* Remove default bullets */
.tree-view,
.tree-nested {
list-style-type: none;
margin: 0;
padding: 0;
margin-left: 10px;
}
/* Style the items */
.tree-item,
.files-tree-title {
cursor: pointer;
user-select: none;
/* Prevent text selection */
}
/* Create the caret/arrow with a unicode, and style it */
.tree-caret .fa-folder {
display: inline-block;
}
.tree-caret .fa-folder-open {
display: none;
}
/* Rotate the caret/arrow icon when clicked on (using JavaScript) */
.tree-caret-down .fa-folder {
display: none;
}
.tree-caret-down .fa-folder-open {
display: inline-block;
}
/* Hide the nested list */
.tree-nested {
display: none;
}
#op_logo {
position: relative;
top: 50%;
transform: translateY(-50%);
}
< / style >
2022-10-03 15:38:45 -04:00
< style >
.scroll {
max - height: 12em;
overflow - y: auto;
}
.menu - btn {
font - size: 0.9em;
padding: 2px 10px;
}
.menu {
padding - top: 10px;
z - index: 200;
margin - top: 4px;
position: absolute;
background - color: #2a2c44;
}
.menu - option {
padding: 6px 20px 6px;
color: white;
}
#overlay {
position: absolute;
top: 0px;
left: 0px;
width: 100 %;
height: 100 %;
z - index: 100;
}
< / style >
< style >
/* Remove default bullets */
.tree-view,
.tree-nested {
list - style - type: none;
margin: 0;
padding: 0;
margin-left: 10px;
}
/* Style the items */
.tree-item,
.files-tree-title {
cursor: pointer;
user-select: none;
/* Prevent text selection */
}
/* Create the caret/arrow with a unicode, and style it */
.tree-caret .fa-folder {
display: inline-block;
}
.tree-caret .fa-folder-open {
display: none;
}
/* Rotate the caret/arrow icon when clicked on (using JavaScript) */
.tree-caret-down .fa-folder {
display: none;
}
.tree-caret-down .fa-folder-open {
display: inline-block;
}
/* Hide the nested list */
.tree-nested {
display: none;
}
#op_logo {
position: relative;
top: 50%;
transform: translateY(-50%);
}
< / style >
< / style >
2022-09-04 18:27:45 -04:00
{% end %}
2023-08-17 15:11:29 -04:00
{% block js %}
2024-05-26 23:31:06 -04:00
< script src = "../../static/assets/js/shared/upload.js" > < / script >
2022-09-04 18:27:45 -04:00
< script >
2023-09-04 19:22:11 -04:00
document.getElementById("root_files_button").addEventListener("click", function (event) {
2022-09-04 18:27:45 -04:00
if (document.forms["zip"]["server_path"].value != "") {
if (document.getElementById('root_files_button').classList.contains('clicked')) {
2023-09-03 13:23:18 -04:00
show_file_tree();
return;
2022-09-04 18:27:45 -04:00
} else {
document.getElementById('root_files_button').classList.add('clicked')
}
2023-09-04 20:05:25 -04:00
bootbox.dialog({
2022-09-04 18:27:45 -04:00
message: '< p class = "text-center mb-0" > < i class = "fa fa-spin fa-cog" > < / i > Please wait while we gather your files...< / p > ',
closeButton: false
});
2024-05-04 15:55:52 -04:00
setTimeout(function () {
2023-10-06 13:33:56 -04:00
getDirView();
}, 2000);
2022-09-04 18:27:45 -04:00
} else {
bootbox.alert("You must input a path before selecting this button");
2022-08-03 15:38:44 -04:00
}
2023-09-03 13:23:18 -04:00
});
document.getElementById("root_upload_button").addEventListener("click", function (event) {
2023-09-04 19:22:11 -04:00
if (document.getElementById('root_upload_button').classList.contains('clicked')) {
show_file_tree();
return;
} else {
document.getElementById('root_upload_button').classList.add('clicked')
}
2023-09-04 20:05:25 -04:00
bootbox.dialog({
2023-09-04 19:22:11 -04:00
message: '< p class = "text-center mb-0" > < i class = "fa fa-spin fa-cog" > < / i > Please wait while we gather your files...< / p > ',
closeButton: false
});
2024-05-04 15:55:52 -04:00
setTimeout(function () {
getDirView();
}, 2000);
2023-09-03 13:23:18 -04:00
});
2023-09-04 19:22:11 -04:00
var upload = false;
var file;
2024-05-26 23:08:43 -04:00
2022-10-02 15:54:13 -04:00
< / script >
2023-09-03 13:23:18 -04:00
< script type = "text/javascript" src = "../../static/assets/js/shared/root-dir.js" > < / script >
2022-03-27 18:09:49 -04:00
2023-08-17 15:11:29 -04:00
< script >
2023-09-04 19:22:11 -04:00
function replacer(key, value) {
if (key === "roles") {
return value
}
if (key != "ignored_exits") {
if (typeof value == "boolean" || key === "host" || key === "version") {
return value
} else {
return (isNaN(value) ? value : +value);
2023-08-17 17:14:51 -04:00
}
2023-09-04 19:22:11 -04:00
} else {
return value;
}
}
function calcRoles() {
2024-06-21 13:25:07 -04:00
var combinedValues = [];
$('.roles_select').each(function () {
var selectedValues = $(this).val();
console.log(selectedValues)
if (selectedValues) {
combinedValues = combinedValues.concat(selectedValues);
2023-08-17 16:46:35 -04:00
}
2024-06-21 13:25:07 -04:00
});
return combinedValues;
2023-09-04 19:22:11 -04:00
}
async function send_server(data) {
2023-09-04 19:22:32 -04:00
let token = getCookie("_xsrf")
2023-09-04 19:22:11 -04:00
let res = await fetch(`/api/v2/servers/`, {
method: 'POST',
headers: {
'X-XSRFToken': token
},
body: data,
});
let responseData = await res.json();
if (responseData.status === "ok") {
window.location.href = '/panel/dashboard';
} else {
2023-08-17 15:11:29 -04:00
2023-09-04 19:22:11 -04:00
bootbox.alert({
title: responseData.error,
message: responseData.error_data
});
}
}
$(document).ready(function () {
$("#download_jar").on("submit", async function (e) {
wait_msg();
2023-08-17 15:11:29 -04:00
e.preventDefault();
let jarForm = document.getElementById("download_jar");
let formData = new FormData(jarForm);
//Create an object from the form data entries
let formDataObject = Object.fromEntries(formData.entries());
console.log(formDataObject);
let send_data = {
2023-08-17 17:14:51 -04:00
"name": formDataObject.name,
2023-09-04 19:22:11 -04:00
"roles": calcRoles(),
"monitoring_type": "minecraft_java",
2023-08-17 15:11:29 -04:00
"minecraft_java_monitoring_data": {
"host": "127.0.0.1",
"port": formDataObject.port
},
"create_type": "minecraft_java",
"minecraft_java_create_data": {
2023-09-04 19:22:11 -04:00
"create_type": "download_jar",
"download_jar_create_data": {
2024-05-05 09:44:17 -04:00
"category": formDataObject.version.split("|")[0],
"type": formDataObject.version.split("|")[1],
"version": formDataObject.version.split("|")[2],
2023-09-04 19:22:11 -04:00
"mem_min": formDataObject.mem_min,
"mem_max": formDataObject.mem_max,
"server_properties_port": formDataObject.port
}
2023-08-17 15:11:29 -04:00
}
}
console.log(send_data);
// Format the plain form data as JSON
let formDataJsonString = JSON.stringify(send_data, replacer);
console.log(formDataJsonString);
2023-08-17 16:46:35 -04:00
send_server(formDataJsonString);
2023-08-17 15:11:29 -04:00
});
2023-09-04 19:22:11 -04:00
$("#import-jar").on("submit", async function (e) {
wait_msg(true);
2023-08-17 15:11:29 -04:00
e.preventDefault();
let jarForm = document.getElementById("import-jar");
let formData = new FormData(jarForm);
//Create an object from the form data entries
let formDataObject = Object.fromEntries(formData.entries());
console.log(formDataObject);
let send_data = {
2023-08-17 17:14:51 -04:00
"name": formDataObject.name,
"roles": calcRoles(),
2023-09-04 19:22:11 -04:00
"monitoring_type": "minecraft_java",
2023-08-17 15:11:29 -04:00
"minecraft_java_monitoring_data": {
"host": "127.0.0.1",
"port": formDataObject.port
},
"create_type": "minecraft_java",
"minecraft_java_create_data": {
2023-09-04 19:22:11 -04:00
"create_type": "import_server",
"import_server_create_data": {
"existing_server_path": formDataObject.server_path,
"jarfile": formDataObject.server_jar,
"mem_min": formDataObject.mem_min,
"mem_max": formDataObject.mem_max,
"server_properties_port": formDataObject.port
}
2023-08-17 15:11:29 -04:00
}
}
console.log(send_data);
// Format the plain form data as JSON
let formDataJsonString = JSON.stringify(send_data, replacer);
2023-08-17 16:46:35 -04:00
send_server(formDataJsonString);
});
2023-09-04 19:22:11 -04:00
$("#import-zip").on("submit", async function (e) {
wait_msg(true);
2023-08-17 16:46:35 -04:00
e.preventDefault();
let jarForm = document.getElementById("import-zip");
let formData = new FormData(jarForm);
//Create an object from the form data entries
let formDataObject = Object.fromEntries(formData.entries());
console.log(formDataObject);
2024-05-28 19:30:12 -04:00
var checkedRadio = $('.root-input:checked');
let zip_root_path = ""
if (checkedRadio.length > 0) {
// Get the value of the checked radio button
var checkedValue = checkedRadio.val();
zip_root_path = checkedValue; // Return the checked value if needed
}
2023-08-17 16:46:35 -04:00
let send_data = {
2023-08-17 17:14:51 -04:00
"name": formDataObject.name,
2023-09-04 19:22:11 -04:00
"roles": calcRoles(),
"monitoring_type": "minecraft_java",
2023-08-17 16:46:35 -04:00
"minecraft_java_monitoring_data": {
"host": "127.0.0.1",
"port": formDataObject.port
2023-08-17 15:11:29 -04:00
},
2023-08-17 16:46:35 -04:00
"create_type": "minecraft_java",
"minecraft_java_create_data": {
2023-09-04 19:22:11 -04:00
"create_type": "import_server",
"import_server_create_data": {
2024-05-28 19:30:12 -04:00
"existing_server_path": zip_root_path,
2023-09-04 19:22:11 -04:00
"jarfile": formDataObject.server_jar,
"mem_min": formDataObject.mem_min,
"mem_max": formDataObject.mem_max,
"server_properties_port": formDataObject.port
}
2023-08-17 16:46:35 -04:00
}
}
console.log(send_data);
// Format the plain form data as JSON
let formDataJsonString = JSON.stringify(send_data, replacer);
2023-08-17 15:11:29 -04:00
2023-08-17 16:46:35 -04:00
send_server(formDataJsonString);
});
$("#import-upload").on("submit", async function (e) {
2023-09-04 19:22:11 -04:00
wait_msg(true);
2023-08-17 16:46:35 -04:00
e.preventDefault();
let jarForm = document.getElementById("import-upload");
let formData = new FormData(jarForm);
//Create an object from the form data entries
let formDataObject = Object.fromEntries(formData.entries());
console.log(formDataObject);
2024-05-28 19:30:12 -04:00
var checkedRadio = $('.root-input:checked');
let zip_root_path = ""
if (checkedRadio.length > 0) {
// Get the value of the checked radio button
var checkedValue = checkedRadio.val();
zip_root_path = checkedValue; // Return the checked value if needed
}
2023-08-17 16:46:35 -04:00
let send_data = {
2023-08-17 17:14:51 -04:00
"name": formDataObject.name,
"roles": calcRoles(),
2023-09-04 19:22:11 -04:00
"monitoring_type": "minecraft_java",
2023-08-17 16:46:35 -04:00
"minecraft_java_monitoring_data": {
"host": "127.0.0.1",
"port": formDataObject.port
},
"create_type": "minecraft_java",
"minecraft_java_create_data": {
2023-09-04 19:22:11 -04:00
"create_type": "import_server",
"import_server_create_data": {
2024-05-28 19:30:12 -04:00
"existing_server_path": zip_root_path,
2023-09-04 19:22:11 -04:00
"jarfile": formDataObject.server_jar,
"mem_min": formDataObject.mem_min,
"mem_max": formDataObject.mem_max,
"server_properties_port": formDataObject.port
}
2023-08-17 16:46:35 -04:00
}
2023-08-17 15:11:29 -04:00
}
2023-08-17 16:46:35 -04:00
console.log(send_data);
// Format the plain form data as JSON
let formDataJsonString = JSON.stringify(send_data, replacer);
send_server(formDataJsonString);
2023-08-17 15:11:29 -04:00
});
2023-08-17 16:46:35 -04:00
2023-08-17 15:11:29 -04:00
});
< / script >
2022-10-02 15:54:13 -04:00
< script >
2023-09-04 19:22:11 -04:00
$(".tree-reset").on("click", function () {
location.href = "/server/step1";
});
$(document).ready(function () {
console.log('ready');
2023-09-04 20:05:25 -04:00
let forms = $('form.server-wizard');
2023-09-04 19:22:11 -04:00
forms.each(function (i, formEl) {
2023-09-04 20:05:25 -04:00
let form = $(formEl);
let min = form.find('[name=min_memory]');
let max = form.find('[name=max_memory]');
2023-09-04 19:22:11 -04:00
console.log(form, min, max)
min.change(function () {
check_sizes(max, min, 'min');
});
max.change(function () {
check_sizes(max, min, 'max');
});
2022-10-03 15:38:45 -04:00
});
2023-09-04 19:22:11 -04:00
});
2022-06-03 19:49:51 +01:00
2023-09-04 19:22:11 -04:00
function wait_msg(importing) {
bootbox.alert({
title: importing ? '{% raw translate("serverWizard", "importing", data["lang"]) %}' : '{% raw translate("serverWizard", "downloading", data["lang"]) %}',
2024-05-04 20:29:11 -04:00
message: importing ? '< i class = "fas fa-cloud-download" > < / i > {% raw translate("serverWizard", "bePatient", data["lang"]) %}' : '< i class = "fas fa-cloud-download" > < / i > {% raw translate("serverWizard", "bePatient", data["lang"]) %}',
2023-09-04 19:22:11 -04:00
});
}
2022-09-27 22:06:22 -04:00
2023-09-04 19:22:11 -04:00
function check_sizes(a, b, changed) {
2023-09-04 20:05:25 -04:00
let max_mem = parseFloat(a.val());
let min_mem = parseFloat(b.val());
2023-09-04 19:22:11 -04:00
if (max_mem < min_mem & & changed = == ' min ' ) {
a.val(min_mem)
}
if (max_mem < min_mem & & changed = == ' max ' ) {
b.val(max_mem)
2022-09-27 22:06:22 -04:00
}
2023-09-04 19:22:11 -04:00
}
2022-09-27 22:06:22 -04:00
2023-09-04 19:22:11 -04:00
async function refreshCache() {
document.getElementById("refresh-cache").classList.add("fa-spin")
2023-09-04 19:22:32 -04:00
let token = getCookie("_xsrf")
2023-09-08 20:27:47 -04:00
let res = await fetch(`/api/v2/crafty/JarCache`, {
2023-09-04 19:22:11 -04:00
method: 'GET',
headers: {
'X-XSRFToken': token
},
2022-09-27 22:06:22 -04:00
});
2023-09-04 19:22:11 -04:00
let responseData = await res.json();
if (responseData.status === "ok") {
document.getElementById("refresh-cache").classList.remove("fa-sync");
document.getElementById("refresh-cache").classList.remove("fa-spin");
document.getElementById("refresh-cache").classList.add("fa-check");
setTimeout(() => {
location.reload();
}, 2000);
} else {
2022-06-03 19:49:51 +01:00
2022-10-03 15:38:45 -04:00
bootbox.alert({
2023-09-04 19:22:11 -04:00
title: responseData.error,
message: responseData.error
2022-10-03 15:38:45 -04:00
});
2022-09-27 22:06:22 -04:00
}
2023-09-04 19:22:11 -04:00
}
2022-02-10 18:20:36 -05:00
2023-09-04 19:22:11 -04:00
$('#file').change(function () {
console.log("File changed");
if ($('#file').val()) {
$('#upload-button').prop("disabled", false);
document.getElementById("fileLabel").innerHTML = $('#file').val().split('\\').pop().split('/').pop();
console.log("File changed good");
2022-09-27 22:06:22 -04:00
}
2023-09-04 19:22:11 -04:00
});
2023-02-02 23:47:54 +01:00
2022-10-02 15:54:13 -04:00
< / script >
< script type = "text/javascript" >
2023-09-04 20:05:25 -04:00
const text = '{% raw data["js_server_types"] %}';
const serverTypesLists = JSON.parse(text);
2023-09-04 19:22:11 -04:00
/* CountryChange() is called from the onchange event of a select element.
* param selectObj - the select object which fired the on change event.
*/
function serverTypeChange(selectObj) {
// get the index of the selected option
2024-05-04 15:55:52 -04:00
let idx = document.getElementById('server_type').value;
2024-05-05 09:44:17 -04:00
let idx_list = idx.split("|");
2023-09-04 19:22:11 -04:00
// get the value of the selected option
2023-09-04 20:05:25 -04:00
let cSelect = document.getElementById("server");
2023-09-04 21:14:03 -04:00
let which = {};
2023-09-04 19:22:11 -04:00
try {
2024-05-07 19:34:44 -04:00
versions = Object.keys(serverTypesLists[idx_list[0]]["types"][idx_list[1]]["versions"]);
2023-09-04 19:22:11 -04:00
} catch {
2022-09-27 22:06:22 -04:00
while (cSelect.options.length > 0) {
cSelect.remove(0);
2022-08-03 12:26:59 -04:00
}
2023-09-04 19:22:11 -04:00
return;
2022-09-27 22:06:22 -04:00
}
2024-05-04 15:55:52 -04:00
2024-05-04 20:00:34 -04:00
$("#server option").each(function () {
$(this).remove()
})
2023-09-04 19:22:11 -04:00
// create new options ordered by ascending
2024-05-04 15:55:52 -04:00
versions.forEach(type => {
2023-09-04 19:22:11 -04:00
newOption = document.createElement("option");
2024-05-04 15:55:52 -04:00
newOption.value = idx + "|" + type; // assumes option string and value are the same
2023-09-04 19:22:11 -04:00
newOption.text = type;
// add the new option
try {
cSelect.add(newOption); // this will fail in DOM browsers but is needed for IE
2022-09-27 22:06:22 -04:00
}
2023-09-04 19:22:11 -04:00
catch (e) {
cSelect.appendChild(newOption);
}
})
}
2024-05-04 15:55:52 -04:00
$("#server").change(function () {
2024-01-28 18:22:41 -05:00
let selected_version = $("#server :selected").text().split(".");
2024-05-04 15:55:52 -04:00
if (parseInt(selected_version[0]) === 1 & & parseInt(selected_version[1]) < 8 ) {
2024-01-28 17:57:05 -05:00
$('[data-toggle="popover"]').popover();
2024-05-04 15:55:52 -04:00
if ($(window).width() < 1000 ) {
$('.version-hint').attr("data-placement", "top")
} else {
$('.version-hint').attr("data-placement", "right")
}
$('.version-hint').popover("show");
2024-01-28 17:57:05 -05:00
} else {
$('.version-hint').popover("hide");
}
});
2024-05-05 09:44:17 -04:00
function serverJarChange(selectObj) {
const type_select = document.getElementById('server_jar')
const tidx = type_select.selectedIndex;
const val = type_select.options[tidx].value;
2024-05-07 19:34:44 -04:00
if (!val) {
$("#server_type option").each(function () {
$(this).remove()
})
$("#server option").each(function () {
$(this).remove()
})
return;
}
2024-05-05 09:44:17 -04:00
let jcSelect = {};
if (val == 'None') {
jcSelect = document.getElementById("server_type");
while (jcSelect.options.length > 0) {
jcSelect.remove(0);
}
serverTypeChange(selectObj);
return;
}
// get the index of the selected option
let jidx = selectObj.selectedIndex;
// get the value of the selected option
let jwhich = selectObj.options[jidx].value;
// use the selected option value to retrieve the list of items from the serverTypesLists array
2024-05-07 19:34:44 -04:00
let jcList = Object.keys(serverTypesLists[jwhich]["types"]);
2024-05-05 09:44:17 -04:00
// get the country select element via its known id
jcSelect = document.getElementById("server_type");
// remove the current options from the country select
while (jcSelect.options.length > 0) {
jcSelect.remove(0);
}
let jnewOption;
// create new options ordered by ascending
jcList.forEach(type => {
jnewOption = document.createElement("option");
jnewOption.value = jwhich + "|" + type; // assumes option string and value are the same
jnewOption.text = type;
// add the new option
try {
jcSelect.add(jnewOption); // this will fail in DOM browsers but is needed for IE
}
catch (e) {
jcSelect.appendChild(jnewOption);
}
})
serverTypeChange(selectObj);
}
2022-10-02 15:54:13 -04:00
< / script >
2024-06-21 13:25:07 -04:00
< script src = "../../static/assets/js/shared/bootstrap-select-1.13.18.js" > < / script >
2022-10-02 15:54:13 -04:00
{% end %}