VentoyPlugson Update

- Add missing option (VTOY_WIN_UEFI_RES_LOCK)
 - Add new option (VTOY_SECURE_BOOT_POLICY)
 - Remove deprecated option (VTOY_LINUX_REMOUNT)
This commit is contained in:
longpanda
2026-06-24 16:43:10 +08:00
parent 0f59e92a01
commit 536545cd39
8 changed files with 814 additions and 786 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -7,12 +7,12 @@
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of the * published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but * This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of * WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. * General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>. * along with this program; if not, see <http://www.gnu.org/licenses/>.
* *
@@ -37,7 +37,7 @@ typedef enum bios_mode
bios_ia32, bios_ia32,
bios_aa64, bios_aa64,
bios_mips, bios_mips,
bios_max bios_max
}bios_mode; }bios_mode;
@@ -81,6 +81,8 @@ typedef struct data_control
int linux_remount; int linux_remount;
int secondary_menu; int secondary_menu;
int password_asterisk; int password_asterisk;
int uefi_res_lock;
int uefi_sb_policy;
char default_search_root[MAX_PATH]; char default_search_root[MAX_PATH];
char default_image[MAX_PATH]; char default_image[MAX_PATH];
char default_kbd_layout[32]; char default_kbd_layout[32];
@@ -110,7 +112,7 @@ typedef struct data_theme
char ventoy_top[32]; char ventoy_top[32];
char ventoy_color[32]; char ventoy_color[32];
char serial_param[256]; char serial_param[256];
path_node *fontslist; path_node *fontslist;
}data_theme; }data_theme;
@@ -411,6 +413,9 @@ else\
#define CONTROL_PARSE_INT_DEF_1(node, val) \ #define CONTROL_PARSE_INT_DEF_1(node, val) \
if (node->unData.pcStrVal[0] == '0') val = 0 if (node->unData.pcStrVal[0] == '0') val = 0
#define CONTROL_PARSE_INT_DEF_3(node, val) \
if (node->unData.pcStrVal[0] == '3') val = 3
#define VTOY_JSON_INT(key, val) vtoy_json_get_int(json, key, &val) #define VTOY_JSON_INT(key, val) vtoy_json_get_int(json, key, &val)
#define VTOY_JSON_STR(key, buf) vtoy_json_get_string(json, key, sizeof(buf), buf) #define VTOY_JSON_STR(key, buf) vtoy_json_get_string(json, key, sizeof(buf), buf)
#define VTOY_JSON_STR_EX(key) vtoy_json_get_string_ex(json, key) #define VTOY_JSON_STR_EX(key) vtoy_json_get_string_ex(json, key)

View File

@@ -1 +1 @@
20231014 18:52:12 20260624 16:39:09

View File

@@ -1 +1 @@
ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsr_RSta_INtr_TRuk_UAzh_CNzh_TW ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfa_IRfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRlg_UGpl_PLpt_BRpt_PTru_RUsl_SIsr_RSta_INtr_TRuk_UAvi_VNzh_CNzh_TW

View File

@@ -2,10 +2,10 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- HTTP 1.1 --> <!-- HTTP 1.1 -->
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="pragma" content="no-cache">
<!-- HTTP 1.0 --> <!-- HTTP 1.0 -->
<meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="cache-control" content="no-cache">
<title>Ventoy Plugson</title> <title>Ventoy Plugson</title>
<!-- Tell the browser to be responsive to screen width --> <!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
@@ -22,7 +22,7 @@
<link rel="stylesheet" href="static/AdminLTE/css/skins/skin-blue.min.css"> <link rel="stylesheet" href="static/AdminLTE/css/skins/skin-blue.min.css">
<link rel="stylesheet" href="static/datatables/dataTables.bootstrap.css"> <link rel="stylesheet" href="static/datatables/dataTables.bootstrap.css">
<link rel="stylesheet" href="static/css/vtoy.css"> <link rel="stylesheet" href="static/css/vtoy.css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
@@ -39,6 +39,9 @@
.treeview-menu a { .treeview-menu a {
margin-left: 20px; margin-left: 20px;
} }
.label-rt {
margin-left: 20px !important;
}
</style> </style>
</head> </head>
@@ -48,13 +51,13 @@
<header class="main-header" style="position: fixed; right: 0; left: 0;"> <header class="main-header" style="position: fixed; right: 0; left: 0;">
<!-- Logo --> <!-- Logo -->
<a href="." class="logo"> <a href="." class="logo">
<!-- logo for regular state and mobile devices --> <!-- logo for regular state and mobile devices -->
<span class="logo-lg" > <img src="/static/img/logo_32.png" > &nbsp;Ventoy Plugson</span> <span class="logo-lg" > <img src="/static/img/logo_32.png" > &nbsp;Ventoy Plugson</span>
</a> </a>
<!-- Header Navbar: style can be found in header.less --> <!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top" role="navigation"> <nav class="navbar navbar-static-top" role="navigation">
<!-- Navbar Right Menu --> <!-- Navbar Right Menu -->
<div class="navbar-custom-menu"> <div class="navbar-custom-menu">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li class="dropdown user user-menu"> <li class="dropdown user user-menu">
@@ -62,22 +65,22 @@
<span class="fa fa-file-code-o"></span>&nbsp;&nbsp; <span class="fa fa-file-code-o"></span>&nbsp;&nbsp;
<span id="id_span_preview" class="hidden-xs">Preview</span> <span id="id_span_preview" class="hidden-xs">Preview</span>
<span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span> <span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span>
</a> </a>
</li> </li>
<li class="dropdown user user-menu"> <li class="dropdown user user-menu">
<a href="javascript:void(0)" id="id_a_language"> <a href="javascript:void(0)" id="id_a_language">
<span class="fa fa-language"></span>&nbsp;&nbsp; <span class="fa fa-language"></span>&nbsp;&nbsp;
<span id="id_span_language" class="hidden-xs">English</span> <span id="id_span_language" class="hidden-xs">English</span>
<span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span> <span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span>
</a> </a>
</li> </li>
<li class="dropdown user user-menu"> <li class="dropdown user user-menu">
<a id="id_top_donation" href="#plugson_donation" data-href="#plugson_donation"> <a id="id_top_donation" href="#plugson_donation" data-href="#plugson_donation">
<span class="fa fa-paypal"></span>&nbsp; <span class="fa fa-paypal"></span>&nbsp;
<span id="id_span_donation" class="hidden-xs">捐助</span> <span id="id_span_donation" class="hidden-xs">捐助</span>
</a> </a>
</li> </li>
<!-- User Account: style can be found in dropdown.less --> <!-- User Account: style can be found in dropdown.less -->
@@ -85,12 +88,12 @@
<a href="https://www.ventoy.net" target="_blank" > <a href="https://www.ventoy.net" target="_blank" >
<span class="fa fa-link"></span>&nbsp; <span class="fa fa-link"></span>&nbsp;
<span class="hidden-xs">Ventoy</span> <span class="hidden-xs">Ventoy</span>
</a> </a>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
</header> </header>
<!-- Left side column. contains the logo and sidebar --> <!-- Left side column. contains the logo and sidebar -->
@@ -108,7 +111,7 @@
<a href="#plugson_control" data-href="#plugson_control"> <a href="#plugson_control" data-href="#plugson_control">
<i class="fa fa-wrench"></i> <span id="id_span_menu_control">全局控制插件</span> <i class="fa fa-wrench"></i> <span id="id_span_menu_control">全局控制插件</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#plugson_theme" data-href="#plugson_theme"> <a href="#plugson_theme" data-href="#plugson_theme">
<i class="fa fa-file-image-o"></i> <span id="id_span_menu_theme">主题插件</span> <i class="fa fa-file-image-o"></i> <span id="id_span_menu_theme">主题插件</span>
@@ -154,13 +157,13 @@
<i class="glyphicon glyphicon-lock"></i> <span id="id_span_menu_password">密码插件</span> <i class="glyphicon glyphicon-lock"></i> <span id="id_span_menu_password">密码插件</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#plugson_image_list" data-href="#plugson_image_list"> <a href="#plugson_image_list" data-href="#plugson_image_list">
<i class="fa fa-list-alt"></i> <span id="id_span_menu_imagelist">文件列表插件</span> <i class="fa fa-list-alt"></i> <span id="id_span_menu_imagelist">文件列表插件</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#plugson_auto_memdisk" data-href="#plugson_auto_memdisk"> <a href="#plugson_auto_memdisk" data-href="#plugson_auto_memdisk">
<i class="fa fa-floppy-o"></i> <span id="id_span_menu_auto_memdisk">自动 Memdisk 插件</span> <i class="fa fa-floppy-o"></i> <span id="id_span_menu_auto_memdisk">自动 Memdisk 插件</span>
@@ -196,13 +199,13 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="PwdPath" name="PwdPath" /> <input type="text" class="form-control" id="PwdPath" name="PwdPath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_pwdfile_cn"> <div class="form-group" id="id_note_pwdfile_cn">
<div class="col-sm-3"></div> <div class="col-sm-3"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_pwdfile_tip1" style="color:red;"></span><br/> <span id="id_span_pwdfile_tip1" style="color:red;"></span><br/>
<span id="id_span_pwdfile_tip2" style="color:red;"></span> <span id="id_span_pwdfile_tip2" style="color:red;"></span>
</div> </div>
@@ -210,7 +213,7 @@
<div class="form-group" id="id_note_pwdfile_en"> <div class="form-group" id="id_note_pwdfile_en">
<div class="col-sm-3"></div> <div class="col-sm-3"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_pwdfile_tip1" style="color:red;"></span><br/> <span id="id_span_pwdfile_tip1" style="color:red;"></span><br/>
<span id="id_span_pwdfile_tip2" style="color:red;"></span><br/> <span id="id_span_pwdfile_tip2" style="color:red;"></span><br/>
</div> </div>
@@ -284,22 +287,22 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="FilePath" name="FilePath" /> <input type="text" class="form-control" id="FilePath" name="FilePath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_setfile_cn"> <div class="form-group" id="id_note_setfile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_filepath_tip1" style="color:red;"></span><br/> <span id="id_span_filepath_tip1" style="color:red;"></span><br/>
<span id="id_span_filepath_tip2" style="color:red;"></span> <span id="id_span_filepath_tip2" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_setfile_en"> <div class="form-group" id="id_note_setfile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_filepath_tip1" style="color:red;"></span><br/> <span id="id_span_filepath_tip1" style="color:red;"></span><br/>
<span id="id_span_filepath_tip2" style="color:red;"></span><br/> <span id="id_span_filepath_tip2" style="color:red;"></span><br/>
</div> </div>
@@ -317,18 +320,18 @@
<div class="form-group" id="id_note_tip3_cn"> <div class="form-group" id="id_note_tip3_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_filepath_tip3" style="color:red;"></span><br/> <span id="id_span_filepath_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_tip3_en"> <div class="form-group" id="id_note_tip3_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_filepath_tip3" style="color:red;"></span><br/> <span id="id_span_filepath_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button id="SetFileForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button> <button id="SetFileForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button>
@@ -357,22 +360,22 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="FileFilePath1" name="FileFilePath1" /> <input type="text" class="form-control" id="FileFilePath1" name="FileFilePath1" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_filefile_cn"> <div class="form-group" id="id_note_filefile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_filefile_tip1" style="color:red;"></span><br/> <span id="id_span_filefile_tip1" style="color:red;"></span><br/>
<span id="id_span_filefile_tip2" style="color:red;"></span> <span id="id_span_filefile_tip2" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_filefile_en"> <div class="form-group" id="id_note_filefile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_filefile_tip1" style="color:red;"></span><br/> <span id="id_span_filefile_tip1" style="color:red;"></span><br/>
<span id="id_span_filefile_tip2" style="color:red;"></span><br/> <span id="id_span_filefile_tip2" style="color:red;"></span><br/>
</div> </div>
@@ -390,18 +393,18 @@
<div class="form-group" id="id_note_filefile_cn"> <div class="form-group" id="id_note_filefile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_filefile_tip3" style="color:red;"></span><br/> <span id="id_span_filefile_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_filefile_en"> <div class="form-group" id="id_note_filefile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_filefile_tip3" style="color:red;"></span><br/> <span id="id_span_filefile_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button id="SetFileFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button> <button id="SetFileFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
@@ -430,21 +433,21 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="DirFilePath1" name="DirFilePath1" /> <input type="text" class="form-control" id="DirFilePath1" name="DirFilePath1" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_dirfile_cn"> <div class="form-group" id="id_note_dirfile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入对应目录在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入对应目录在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_dirfile_tip1" style="color:red;"></span><br/> <span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_dirfile_en"> <div class="form-group" id="id_note_dirfile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute directory path. For example:<br/> Please input the full absolute directory path. For example:<br/>
<span id="id_span_dirfile_tip1" style="color:red;"></span><br/> <span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
</div> </div>
</div> </div>
@@ -461,18 +464,18 @@
<div class="form-group" id="id_note_dirfile_cn"> <div class="form-group" id="id_note_dirfile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_dirfile_tip2" style="color:red;"></span><br/> <span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_dirfile_en"> <div class="form-group" id="id_note_dirfile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_dirfile_tip2" style="color:red;"></span><br/> <span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button id="SetDirFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button> <button id="SetDirFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
@@ -502,22 +505,22 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="IsoPath" name="IsoPath" /> <input type="text" class="form-control" id="IsoPath" name="IsoPath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_conf_cn"> <div class="form-group" id="id_note_conf_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_conf_tip1" style="color:red;"></span><br/> <span id="id_span_conf_tip1" style="color:red;"></span><br/>
<span id="id_span_conf_tip2" style="color:red;"></span> <span id="id_span_conf_tip2" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_conf_en"> <div class="form-group" id="id_note_conf_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_conf_tip1" style="color:red;"></span><br/> <span id="id_span_conf_tip1" style="color:red;"></span><br/>
<span id="id_span_conf_tip2" style="color:red;"></span> <span id="id_span_conf_tip2" style="color:red;"></span>
</div> </div>
@@ -529,7 +532,7 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="OrgPath" name="OrgPath" /> <input type="text" class="form-control" id="OrgPath" name="OrgPath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_conf_cn"> <div class="form-group" id="id_note_conf_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
@@ -552,19 +555,19 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="NewPath" name="NewPath" /> <input type="text" class="form-control" id="NewPath" name="NewPath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_conf_cn"> <div class="form-group" id="id_note_conf_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
新文件在当前系统中的全路径(注意是完整的绝对路径)例如:<br/> 新文件在当前系统中的全路径(注意是完整的绝对路径)例如:<br/>
<span id="id_span_conf_tip3" style="color:red;"></span> <span id="id_span_conf_tip3" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_conf_en"> <div class="form-group" id="id_note_conf_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_conf_tip3" style="color:red;"></span> <span id="id_span_conf_tip3" style="color:red;"></span>
</div> </div>
</div> </div>
@@ -579,7 +582,7 @@
</div> </div>
</div> </div>
<div class="modal" id="SetDirModal"> <div class="modal" id="SetDirModal">
<div class="modal-dialog" style="width: 800px;"> <div class="modal-dialog" style="width: 800px;">
<div class="modal-content"> <div class="modal-content">
@@ -597,9 +600,9 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="DirPath" name="DirPath" /> <input type="text" class="form-control" id="DirPath" name="DirPath" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_setfile_cn"> <div class="form-group" id="id_note_setfile_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -607,7 +610,7 @@
<span id="id_span_dirpath_tip" style="color:red;"></span> <span id="id_span_dirpath_tip" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_setfile_en"> <div class="form-group" id="id_note_setfile_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -615,27 +618,27 @@
<span id="id_span_dirpath_tip" style="color:red;"></span> <span id="id_span_dirpath_tip" style="color:red;"></span>
</div> </div>
</div> </div>
<div class="form-group" id="id_div_dir_extra"> <div class="form-group" id="id_div_dir_extra">
<div class="col-sm-2"> <div class="col-sm-2">
<label id="SetDirForm_extra" class="control-label">xx</label> <label id="SetDirForm_extra" class="control-label">xx</label>
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="DirExtra" name="DirExtra" /> <input type="text" class="form-control" id="DirExtra" name="DirExtra" />
</div> </div>
</div> </div>
<div class="form-group" id="id_note_tip3_cn"> <div class="form-group" id="id_note_tip3_cn">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/> 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
<span id="id_span_dirpath_tip3" style="color:red;"></span><br/> <span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
<div class="form-group" id="id_note_tip3_en"> <div class="form-group" id="id_note_tip3_en">
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-9"> <div class="col-sm-9">
Please input the full absolute file path. For example:<br/> Please input the full absolute file path. For example:<br/>
<span id="id_span_dirpath_tip3" style="color:red;"></span><br/> <span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
</div> </div>
</div> </div>
@@ -676,7 +679,7 @@
</div> </div>
<div class="col-sm-9"> <div class="col-sm-9">
<input type="text" class="form-control" id="SetKeyValue" name="SetKeyValue" /> <input type="text" class="form-control" id="SetKeyValue" name="SetKeyValue" />
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@@ -718,12 +721,12 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal" id="JsonPreviewModal"> <div class="modal" id="JsonPreviewModal">
<div class="modal-dialog" style="width: 80%;"> <div class="modal-dialog" style="width: 80%;">
<div class="modal-content"> <div class="modal-content">
<form id="JsonPeviewForm" class="form-horizontal"> <form id="JsonPeviewForm" class="form-horizontal">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
@@ -732,7 +735,7 @@
<b id="JsonPreviewForm_lang_1">JSON</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b id="JsonPreviewForm_lang_1">JSON</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<button type="button" id="id_btn_json_copy" class="btn btn-primary"><span class="fa fa-copy">&nbsp;&nbsp;</span><span id="id_span_copy">Copy</span></button> <button type="button" id="id_btn_json_copy" class="btn btn-primary"><span class="fa fa-copy">&nbsp;&nbsp;</span><span id="id_span_copy">Copy</span></button>
</h4> </h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace" spellcheck="false"></textarea> <textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace" spellcheck="false"></textarea>
@@ -742,7 +745,7 @@
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
@@ -757,7 +760,7 @@
<footer class="main-footer"> <footer class="main-footer">
<div class="pull-right hidden-xs"> <div class="pull-right hidden-xs">
<b id="plugson_build_date">20231014 18:52:12</b> <b id="plugson_build_date">20260624 16:39:09</b>
</div> </div>
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong> <strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
</footer> </footer>
@@ -771,16 +774,16 @@
</div> </div>
<!-- ./wrapper --> <!-- ./wrapper -->
<!-- jQuery 2.1.4 --> <!-- jQuery 2.1.4 -->
<script src="/static/js/jQuery-2.1.4.min.js"></script> <script src="/static/js/jQuery-2.1.4.min.js"></script>
<!-- jquery validate --> <!-- jquery validate -->
<script src="/static/js/jquery.validate.min.js"></script> <script src="/static/js/jquery.validate.min.js"></script>
<script src="/static/js/jquery.validate.vtoymethods.js?v=253"></script> <script src="/static/js/jquery.validate.vtoymethods.js?v=317"></script>
<script src="/static/js/jquery.vtoy.alert.js?v=253"></script> <script src="/static/js/jquery.vtoy.alert.js?v=317"></script>
<script src="/static/js/vtoy.js?v=253"></script> <script src="/static/js/vtoy.js?v=317"></script>
<script src="/static/js/md5.min.js"></script> <script src="/static/js/md5.min.js"></script>
<!-- Bootstrap 3.3.5 --> <!-- Bootstrap 3.3.5 -->
@@ -788,10 +791,10 @@
<!-- AdminLTE App --> <!-- AdminLTE App -->
<script src="/static/AdminLTE/js/app.min.js"></script> <script src="/static/AdminLTE/js/app.min.js"></script>
<script src="/static/AdminLTE/plugins/chartjs/Chart.min.js"></script> <script src="/static/AdminLTE/plugins/chartjs/Chart.min.js"></script>
<script src="/static/datatables/jquery.dataTables.min.js"></script> <script src="/static/datatables/jquery.dataTables.min.js"></script>
<script src="/static/datatables/dataTables.bootstrap.min.js"></script> <script src="/static/datatables/dataTables.bootstrap.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
function VtoyJsonCopyClick() { function VtoyJsonCopyClick() {
@@ -818,15 +821,15 @@
}, function(data) { }, function(data) {
$('#JsonPeviewForm #JsonPreviewForm_lang_1').text(g_vtoy_cur_language.STR_JSON_PREVIEW); $('#JsonPeviewForm #JsonPreviewForm_lang_1').text(g_vtoy_cur_language.STR_JSON_PREVIEW);
$('#JsonPeviewForm #PrewForm_lang_2').text(g_vtoy_cur_language.STR_BTN_OK); $('#JsonPeviewForm #PrewForm_lang_2').text(g_vtoy_cur_language.STR_BTN_OK);
$('#pre_json_preview').text(VtoyUTF16HexToAscii(data.json)); $('#pre_json_preview').text(VtoyUTF16HexToAscii(data.json));
$("#JsonPreviewModal").modal(); $("#JsonPreviewModal").modal();
}); });
} }
function VtoyLanguageClick() { function VtoyLanguageClick() {
var defaultPage = window.location.hash; var defaultPage = window.location.hash;
if (g_current_language === 'cn') { if (g_current_language === 'cn') {
g_current_language = 'en'; g_current_language = 'en';
} else { } else {
@@ -851,14 +854,14 @@
m_syntax_error = data.syntax_error; m_syntax_error = data.syntax_error;
m_invalid_config = data.invalid_config; m_invalid_config = data.invalid_config;
}); });
$('#id_btn_json_copy').click(VtoyJsonCopyClick); $('#id_btn_json_copy').click(VtoyJsonCopyClick);
$('#id_a_preview').click(VtoyPreviewClick); $('#id_a_preview').click(VtoyPreviewClick);
$('#id_a_language').click(VtoyLanguageClick); $('#id_a_language').click(VtoyLanguageClick);
$("#plugson-menu a").click(function() { $("#plugson-menu a").click(function() {
var href = $(this).data("href"); var href = $(this).data("href");
if (href && href !== '#') { if (href && href !== '#') {
@@ -872,7 +875,7 @@
loadContent(href.substring(1)); loadContent(href.substring(1));
} }
}); });
(function openDefaultPage() { (function openDefaultPage() {
var defaultPage = window.location.hash; var defaultPage = window.location.hash;
if (defaultPage) { if (defaultPage) {
@@ -881,14 +884,14 @@
defaultPage = defaultPage || 'plugson_main'; defaultPage = defaultPage || 'plugson_main';
loadContent(defaultPage); loadContent(defaultPage);
})(); })();
(function ventoy_handshake() { (function ventoy_handshake() {
callVtoyCatchErr({ callVtoyCatchErr({
method : 'handshake' method : 'handshake'
}, },
function(data) { function(data) {
if (m_syntax_error === 1 && typeof(Modal) === 'object') { if (m_syntax_error === 1 && typeof(Modal) === 'object') {
var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO; var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO;
var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_SYNTAX_ERROR_TIP : g_vtoy_cur_language_cn.STR_SYNTAX_ERROR_TIP; var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_SYNTAX_ERROR_TIP : g_vtoy_cur_language_cn.STR_SYNTAX_ERROR_TIP;
@@ -896,7 +899,7 @@
}); });
m_syntax_error = 0; m_syntax_error = 0;
} }
if (m_invalid_config === 1 && typeof(Modal) === 'object') { if (m_invalid_config === 1 && typeof(Modal) === 'object') {
var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO; var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO;
var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INVALID_CONFIG_TIP : g_vtoy_cur_language_cn.STR_INVALID_CONFIG_TIP; var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INVALID_CONFIG_TIP : g_vtoy_cur_language_cn.STR_INVALID_CONFIG_TIP;
@@ -928,7 +931,7 @@
} }
else if(undefined === errorThrown.length) else if(undefined === errorThrown.length)
{ {
} }
else if('' == errorThrown.trim()) else if('' == errorThrown.trim())
{ {

View File

@@ -1 +1 @@
ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRpl_PLpt_BRpt_PTru_RUsl_sisr_RSta_INtr_TRuk_UAzh_CNzh_TW ar_ARbn_BNcs_CZde_DEel_GRen_USes_ESfa_IRfr_FRhi_HIhr_HRhu_HUid_IDit_ITja_JPka_GEko_KRlg_UGpl_PLpt_BRpt_PTru_RUsl_SIsr_RSta_INtr_TRuk_UAvi_VNzh_CNzh_TW

View File

@@ -4,7 +4,7 @@
<i class="fa fa-wrench">&nbsp;&nbsp;</i> <i class="fa fa-wrench">&nbsp;&nbsp;</i>
<h1 class="box-title" style="font-weight:bold;" id="id_h1_page_title">全局控制插件</h1> <h1 class="box-title" style="font-weight:bold;" id="id_h1_page_title">全局控制插件</h1>
</div> </div>
<div class="col-sm-2" style="padding-top:2px;"> <div class="col-sm-2" style="padding-top:2px;">
<button id="id_btn_collapse" class="btn btn-sm btn-primary"><i style="font-size: 14px;" class="fa fa-minus"></i></button> <button id="id_btn_collapse" class="btn btn-sm btn-primary"><i style="font-size: 14px;" class="fa fa-minus"></i></button>
<button id="id_btn_expand" class="btn btn-sm btn-primary"><i style="font-size: 14px;" class="fa fa-plus"></i></button> <button id="id_btn_expand" class="btn btn-sm btn-primary"><i style="font-size: 14px;" class="fa fa-plus"></i></button>
@@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<legend></legend> <legend></legend>
<div class="box-body"> <div class="box-body">
<div class="nav-tabs-custom"> <div class="nav-tabs-custom">
<ul class="nav nav-tabs" id="id_tab_control"> <ul class="nav nav-tabs" id="id_tab_control">
@@ -47,7 +47,7 @@
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<select id="id_ctrl_sel_menu_lang" name="name_ctrl_sel_menu_lang" class="form-control"> <select id="id_ctrl_sel_menu_lang" name="name_ctrl_sel_menu_lang" class="form-control">
</select> </select>
</td> </td>
</tr> </tr>
@@ -60,7 +60,7 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td> <td class="td_ctrl_col">Option Description</td>
<td> <td>
Ventoy menu language. Default is "en_US", Ventoy menu language. Default is "en_US",
</td> </td>
</tr> </tr>
</table> </table>
@@ -68,7 +68,7 @@
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_SEARCH_ROOT <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_SEARCH_ROOT
@@ -78,7 +78,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -108,8 +108,8 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td> <td class="td_ctrl_col">Option Description</td>
<td> <td>
The root path where to search the image files. By default, Ventoy will search all the directories and subdirectories in the USB. This will be very slow when you have huge number of files in the USB. The root path where to search the image files. By default, Ventoy will search all the directories and subdirectories in the USB. This will be very slow when you have huge number of files in the USB.
In this case, you can put all the image files in one subdirectory and use this to specify the search path. In this case, you can put all the image files in one subdirectory and use this to specify the search path.
After that Ventoy will only search this directory and its subdirectories for image files.<br/> After that Ventoy will only search this directory and its subdirectories for image files.<br/>
Note: the path must not be the mountpoint of the first partition, but a subdirectory. Note: the path must not be the mountpoint of the first partition, but a subdirectory.
</td> </td>
@@ -117,7 +117,80 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_SECURE_BOOT_POLICY
<span id="id_span_desc_cn"> —— UEFI 安全启动策略</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<label class="radio-inline">
<input type="radio" id="id_ctrl_uefi_sb_policy_radio0" name="id_ctrl_uefi_sb_policy_radio" data-type="0" value="0"/>
<span id="id_span_desc_cn">绕过安全启动检查</span>
<span id="id_span_desc_en">ByPass Secure Boot</span>
</label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_uefi_sb_policy_radio1" name="id_ctrl_uefi_sb_policy_radio" data-type="1" value="1"/>
<span id="id_span_desc_cn">遵循UEFI安全启动检查规则</span>
<span id="id_span_desc_en">Follow UEFI Secure Boot Check</span>
</label>
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_WIN_UEFI_RES_LOCK
<span id="id_span_desc_cn"> —— UEFI 分辨率锁定</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<label class="radio-inline">
<input type="radio" id="id_ctrl_uefi_res_lock_radio0" name="id_ctrl_uefi_res_lock_radio" data-type="0" value="0"/>
<span id="id_span_desc_cn">不锁定</span>
<span id="id_span_desc_en">None</span>
</label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_uefi_res_lock_radio1" name="id_ctrl_uefi_res_lock_radio" data-type="1" value="1"/>
<span id="id_span_desc_cn">锁定最高分辨率</span>
<span id="id_span_desc_en">Highest</span>
</label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_uefi_res_lock_radio2" name="id_ctrl_uefi_res_lock_radio" data-type="1" value="2"/>
<span id="id_span_desc_cn">锁定 1024x768</span>
<span id="id_span_desc_en">Fixed 1024x768</span>
</label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_uefi_res_lock_radio3" name="id_ctrl_uefi_res_lock_radio" data-type="1" value="3"/>
<span id="id_span_desc_cn">锁定 1024x768及以上</span>
<span id="id_span_desc_en">At least 1024x768</span>
</label>
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
@@ -133,18 +206,20 @@
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" id="id_ctrl_bypass_win11_radio0" name="id_ctrl_bypass_win11_radio" data-type="0" value="0"/> <span style="font-weight:bold;">0</span> <input type="radio" id="id_ctrl_bypass_win11_radio0" name="id_ctrl_bypass_win11_radio" data-type="0" value="0"/>
</label>&nbsp;&nbsp;&nbsp;&nbsp; <span id="id_span_desc_cn">不绕过Windows 11安装时的硬件检查</span>
<label class="radio-inline"> <span id="id_span_desc_en">Do not bypass Windows 11 hardware check</span>
<input type="radio" id="id_ctrl_bypass_win11_radio1" name="id_ctrl_bypass_win11_radio" data-type="1" value="1"/> <span style="font-weight:bold;">1</span> </label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_bypass_win11_radio1" name="id_ctrl_bypass_win11_radio" data-type="1" value="1"/>
<span id="id_span_desc_cn">绕过Windows 11安装时的硬件检查</span>
<span id="id_span_desc_en">Bypass Windows 11 hardware check</span>
</label> </label>
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不绕过Windows 11安装时的硬件检查。<br/>
<code style="font-weight: bold;">1</code> 绕过Windows 11安装时的硬件检查。<br/><br/>
该选项只对标准Windows 11 ISO文件有效对于其他镜像文件无效。 该选项只对标准Windows 11 ISO文件有效对于其他镜像文件无效。
当设置为1时Ventoy 会在安装时创建以下几个注册表项用来绕过 Windows 11 安装程序的硬件检查。<br/> 当设置为1时Ventoy 会在安装时创建以下几个注册表项用来绕过 Windows 11 安装程序的硬件检查。<br/>
<code>HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig\BypassRAMCheck</code><br/> <code>HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig\BypassRAMCheck</code><br/>
@@ -156,8 +231,6 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td> <td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td> <td>
<code style="font-weight: bold;">0</code> Do not bypass Windows 11 hardware check.<br/>
<code style="font-weight: bold;">1</code> Bypass Windows 11 hardware check. <br/><br/>
This option only avaliable for standard Windows 11 ISO files. This option only avaliable for standard Windows 11 ISO files.
When set to 1, Ventoy will create the following registries to bypass Windows 11 hardware check when install. <br/> When set to 1, Ventoy will create the following registries to bypass Windows 11 hardware check when install. <br/>
<code>HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig\BypassRAMCheck</code><br/> <code>HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig\BypassRAMCheck</code><br/>
@@ -170,9 +243,9 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_WIN11_BYPASS_NRO <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_WIN11_BYPASS_NRO
@@ -187,28 +260,28 @@
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" id="id_ctrl_bypass_nro_radio0" name="id_ctrl_bypass_nro_radio" data-type="0" value="0"/> <span style="font-weight:bold;">0</span> <input type="radio" id="id_ctrl_bypass_nro_radio0" name="id_ctrl_bypass_nro_radio" data-type="0" value="0"/>
</label>&nbsp;&nbsp;&nbsp;&nbsp; <span id="id_span_desc_cn">不绕过Windows 11安装时的在线账户需求</span>
<label class="radio-inline"> <span id="id_span_desc_en">Do not bypass Windows 11 online account requirement</span>
<input type="radio" id="id_ctrl_bypass_nro_radio1" name="id_ctrl_bypass_nro_radio" data-type="1" value="1"/> <span style="font-weight:bold;">1</span> </label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_bypass_nro_radio1" name="id_ctrl_bypass_nro_radio" data-type="1" value="1"/>
<span id="id_span_desc_cn">绕过Windows 11安装时的在线账户需求</span>
<span id="id_span_desc_en">Bypass Windows 11 online account requirement</span>
</label> </label>
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不绕过Windows 11安装时的在线账户需求。<br/>
<code style="font-weight: bold;">1</code> 绕过Windows 11安装时的在线账户需求。<br/><br/>
该选项只对标准Windows 11 ISO文件有效对于其他镜像文件无效。 该选项只对标准Windows 11 ISO文件有效对于其他镜像文件无效。
当设置为1时Ventoy 会在安装时创建以下注册表项用来绕过 Windows 11 安装时对在线账户的需求。<br/> 当设置为1时Ventoy 会在安装时创建以下注册表项用来绕过 Windows 11 安装时对在线账户的需求。<br/>
<code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code><br/> <code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code><br/>
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td> <td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td> <td>
<code style="font-weight: bold;">0</code> Do not bypass Windows 11 online account requirement.<br/>
<code style="font-weight: bold;">1</code> Bypass Windows 11 online account requirement. <br/><br/>
This option only avaliable for standard Windows 11 ISO files. This option only avaliable for standard Windows 11 ISO files.
When set to 1, Ventoy will create the following registry to bypass Windows 11 online account requirement when install. <br/> When set to 1, Ventoy will create the following registry to bypass Windows 11 online account requirement when install. <br/>
<code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code> <code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE\BypassNRO</code>
@@ -217,9 +290,9 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
@@ -237,25 +310,15 @@
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" id="id_ctrl_radio_menu_mode0" name="id_ctrl_radio_menu_mode" data-type="0" value="0"> <span style="font-weight:bold;">0</span> <input type="radio" id="id_ctrl_radio_menu_mode0" name="id_ctrl_radio_menu_mode" data-type="0" value="0">
</label>&nbsp;&nbsp;&nbsp;&nbsp; <span id="id_span_desc_cn">文件列表模式</span>
<label class="radio-inline"> <span id="id_span_desc_en">ListView Mode</span>
<input type="radio" id="id_ctrl_radio_menu_mode1" name="id_ctrl_radio_menu_mode" data-type="1" value="1"> <span style="font-weight:bold;">1</span> </label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_radio_menu_mode1" name="id_ctrl_radio_menu_mode" data-type="1" value="1">
<span id="id_span_desc_cn">目录树模式</span>
<span id="id_span_desc_en">TreeView Mode</span>
</label> </label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>启动菜单默认显示模式,
<code style="font-weight: bold;">0</code> 列表模式 &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> TreeView目录树 模式</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td>
<td>
Default boot menu display mode.
<code style="font-weight: bold;">0</code> ListView Mode &nbsp;&nbsp
<code style="font-weight: bold;">1</code> TreeView Mode
</td> </td>
</tr> </tr>
</table> </table>
@@ -267,7 +330,7 @@
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_MENU_TIMEOUT <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_MENU_TIMEOUT
@@ -283,7 +346,7 @@
<td> <td>
<div class="col-sm-9" style="padding-left:0px;"> <div class="col-sm-9" style="padding-left:0px;">
<input type="text" class="form-control" id="id_ctrl_text_timeout" name="name_ctrl_text_timeout"/> <input type="text" class="form-control" id="id_ctrl_text_timeout" name="name_ctrl_text_timeout"/>
</div> </div>
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
@@ -303,9 +366,9 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_IMAGE <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_IMAGE
@@ -352,14 +415,14 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_MAX_SEARCH_LEVEL <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_MAX_SEARCH_LEVEL
@@ -369,7 +432,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -392,7 +455,7 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col">选项说明</td> <td class="td_ctrl_col">选项说明</td>
<td> <td>
最大搜索子目录的层数,取值为:<code>max</code> <code>0</code> <code>1</code> <code>2</code> <code>3</code> <code>...</code> 最大搜索子目录的层数,取值为:<code>max</code> <code>0</code> <code>1</code> <code>2</code> <code>3</code> <code>...</code>
&nbsp;&nbsp;&nbsp;默认值为:<code>max</code><br/> &nbsp;&nbsp;&nbsp;默认值为:<code>max</code><br/>
默认Ventoy会递归搜索磁盘上的所有目录和子目录不管目录结构有多深都会搜索到底。你可以通过这个参数来控制搜索时的路径深度。<br/><br/> 默认Ventoy会递归搜索磁盘上的所有目录和子目录不管目录结构有多深都会搜索到底。你可以通过这个参数来控制搜索时的路径深度。<br/><br/>
<code>max</code> : 最大层数,也就是搜索所有子目录的意思。这也是 Ventoy 的默认值。<br/> <code>max</code> : 最大层数,也就是搜索所有子目录的意思。这也是 Ventoy 的默认值。<br/>
@@ -407,7 +470,7 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col">Option Description</td> <td class="td_ctrl_col">Option Description</td>
<td> <td>
Max subdirectory level when search for image files. It's value can be: <code>max</code> <code>0</code> <code>1</code> <code>2</code> <code>3</code> <code>...</code> Max subdirectory level when search for image files. It's value can be: <code>max</code> <code>0</code> <code>1</code> <code>2</code> <code>3</code> <code>...</code>
&nbsp;&nbsp;&nbsp;default is : <code>max</code><br/> &nbsp;&nbsp;&nbsp;default is : <code>max</code><br/>
By default, Ventoy will search all the directories and sub directories recursively no matter how deep the directory level is.<br/> By default, Ventoy will search all the directories and sub directories recursively no matter how deep the directory level is.<br/>
You can use this parameter to set a max-depth for the search path.<br/><br/> You can use this parameter to set a max-depth for the search path.<br/><br/>
@@ -423,57 +486,6 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid">
<div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_LINUX_REMOUNT
<span id="id_span_desc_cn"> —— Linux 启动后继续访问ISO文件所在分区</span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box-tools -->
</div><!-- /.box-header -->
<div class="box-body no-padding">
<table class="table table-bordered no-padding">
<tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td>
<label class="radio-inline">
<input type="radio" id="id_ctrl_linux_remount_radio0" name="id_ctrl_linux_remount_radio" data-type="0" value="0"/> <span style="font-weight:bold;">0</span>
</label>&nbsp;&nbsp;&nbsp;&nbsp;
<label class="radio-inline">
<input type="radio" id="id_ctrl_linux_remount_radio1" name="id_ctrl_linux_remount_radio" data-type="1" value="1"/> <span style="font-weight:bold;">1</span>
</label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>
<code style="font-weight: bold;">0</code> Linux启动后不需要继续访问ISO文件所在的分区。<br/>
<code style="font-weight: bold;">1</code> Linux启动后需要继续访问ISO文件所在的分区。<br/><br/>
该选项只对 Linux 系统镜像有效。<br/>
默认情况下受Linux内核相关功能的限制对于Linux系统在启动后无法继续访问ISO文件所在的分区。在mount的时候会提示 device busy。<br/>
如果这里选择 1则 Ventoy 会尝试通过一些特殊的手段绕过内核的这个限制,但是这个功能是实验性质的,没有经过大规模和长时间的验证。
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td>
<code style="font-weight: bold;">0</code> I don't need to access the image partition after boot.<br/>
<code style="font-weight: bold;">1</code> I need to access the image partition after boot. <br/><br/>
This option is only avaliable for Linux distro image files. <br/>
By default, the image partition where the ISO files locate can not be accessed after boot. When you try to mount it you will get device busy error.
This is due to linux kernel restriction (device-mapper module).<br/>
If you select 1 here, Ventoy will try to bypass the restriction with some special mechanism.<br/>
But it should be noted that, this is an experimental feature and is not fully tested.
</td>
</tr>
</table>
</div><!-- /.box-body -->
</div><!-- /.box -->
@@ -486,38 +498,27 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" id="id_ctrl_secondary_radio0" name="id_ctrl_secondary_radio" data-type="0" value="0"> <span style="font-weight:bold;">0</span> <input type="radio" id="id_ctrl_secondary_radio0" name="id_ctrl_secondary_radio" data-type="0" value="0">
</label>&nbsp;&nbsp;&nbsp;&nbsp; <span id="id_span_desc_cn">不显示二级启动菜单</span>
<label class="radio-inline"> <span id="id_span_desc_en">Don't show secondary boot menu</span>
<input type="radio" id="id_ctrl_secondary_radio1" name="id_ctrl_secondary_radio" data-type="1" value="1"> <span style="font-weight:bold;">1</span> </label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_secondary_radio1" name="id_ctrl_secondary_radio" data-type="1" value="1">
<span id="id_span_desc_cn">显示二级启动菜单</span>
<span id="id_span_desc_en">Show show secondary boot menu</span>
</label> </label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>二级启动菜单控制开关
<code style="font-weight: bold;">0</code> 不显示 &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 显示
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td>
Secondary boot menu display option
<code style="font-weight: bold;">0</code> Don't display &nbsp;&nbsp;&nbsp;
<code style="font-weight: bold;">1</code> Display
</td> </td>
</tr> </tr>
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_SHOW_PASSWORD_ASTERISK <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_SHOW_PASSWORD_ASTERISK
@@ -527,39 +528,28 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" id="id_ctrl_asterisk_radio0" name="id_ctrl_asterisk_radio" data-type="0" value="0"> <span style="font-weight:bold;">0</span> <input type="radio" id="id_ctrl_asterisk_radio0" name="id_ctrl_asterisk_radio" data-type="0" value="0">
</label>&nbsp;&nbsp;&nbsp;&nbsp; <span id="id_span_desc_cn">隐藏</span>
<label class="radio-inline"> <span id="id_span_desc_en">Hide</span>
<input type="radio" id="id_ctrl_asterisk_radio1" name="id_ctrl_asterisk_radio" data-type="1" value="1"> <span style="font-weight:bold;">1</span> </label>
<label class="radio-inline label-rt">
<input type="radio" id="id_ctrl_asterisk_radio1" name="id_ctrl_asterisk_radio" data-type="1" value="1">
<span id="id_span_desc_cn">显示</span>
<span id="id_span_desc_en">Show</span>
</label> </label>
</td>
</tr>
<tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>输入密码时是否显示星号
<code style="font-weight: bold;">0</code> 不显示 &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 显示
</td>
</tr>
<tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td>
Display asterisk when typing password
<code style="font-weight: bold;">0</code> Don't display &nbsp;&nbsp;&nbsp;
<code style="font-weight: bold;">1</code> Display
</td> </td>
</tr> </tr>
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_SECONDARY_TIMEOUT <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_SECONDARY_TIMEOUT
@@ -575,7 +565,7 @@
<td> <td>
<div class="col-sm-9" style="padding-left:0px;"> <div class="col-sm-9" style="padding-left:0px;">
<input type="text" class="form-control" id="id_ctrl_text_secondary_timeout" name="name_ctrl_text_secondary_timeout"/> <input type="text" class="form-control" id="id_ctrl_text_secondary_timeout" name="name_ctrl_text_secondary_timeout"/>
</div> </div>
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
@@ -596,10 +586,10 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_KBD_LAYOUT <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_DEFAULT_KBD_LAYOUT
@@ -609,7 +599,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -652,10 +642,10 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_TREE_VIEW_MENU_STYLE <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_TREE_VIEW_MENU_STYLE
@@ -687,7 +677,7 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td> <td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td> <td>
Menu style in TreeView mode. Menu style in TreeView mode.
<code style="font-weight: bold;">0</code> with DIR and file size prefix &nbsp;&nbsp;&nbsp; <code style="font-weight: bold;">0</code> with DIR and file size prefix &nbsp;&nbsp;&nbsp;
<code style="font-weight: bold;">1</code> No DIR and file size. Default is 0. <code style="font-weight: bold;">1</code> No DIR and file size. Default is 0.
</td> </td>
@@ -696,7 +686,7 @@
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_FILT_DOT_UNDERSCORE_FILE <h3 class="box-title" style="font-size: 14px;font-weight: bold;">VTOY_FILT_DOT_UNDERSCORE_FILE
@@ -706,7 +696,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -721,14 +711,14 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td>过滤以 ._ 开头的文件。当使用苹果系统时,有时拷贝文件会产生一些 ._ 开头的文件,可以通过此选项过滤掉。 <td>过滤以 ._ 开头的文件。当使用苹果系统时,有时拷贝文件会产生一些 ._ 开头的文件,可以通过此选项过滤掉。
<code style="font-weight: bold;">0</code> 不过滤 &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤 <code style="font-weight: bold;">1</code> 过滤
</td> </td>
</tr> </tr>
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td> <td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td> <td>
Filter for files with prefix ._ in name. This will be useful when you use macOS (a lot of ._xxx file generated when you copy files). Filter for files with prefix ._ in name. This will be useful when you use macOS (a lot of ._xxx file generated when you copy files).
<code style="font-weight: bold;">0</code> Don't filt &nbsp;&nbsp;&nbsp; <code style="font-weight: bold;">0</code> Don't filt &nbsp;&nbsp;&nbsp;
<code style="font-weight: bold;">1</code> Filt <code style="font-weight: bold;">1</code> Filt
</td> </td>
@@ -736,7 +726,7 @@
</table> </table>
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
@@ -769,7 +759,7 @@
<tr id="tr_title_desc_en"> <tr id="tr_title_desc_en">
<td class="td_ctrl_col" id="td_title_desc">Option Description</td> <td class="td_ctrl_col" id="td_title_desc">Option Description</td>
<td> <td>
Case sensitive when sort the ISO files or directories. &nbsp;&nbsp;&nbsp; Case sensitive when sort the ISO files or directories. &nbsp;&nbsp;&nbsp;
<code style="font-weight: bold;">0</code> case insensitive &nbsp;&nbsp;&nbsp;<code style="font-weight: bold;">1</code> case sensitive <code style="font-weight: bold;">0</code> case insensitive &nbsp;&nbsp;&nbsp;<code style="font-weight: bold;">1</code> case sensitive
</td> </td>
</tr> </tr>
@@ -819,7 +809,7 @@
<div class="box box-primary box-solid"> <div class="box box-primary box-solid">
@@ -831,7 +821,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -846,8 +836,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .iso 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .iso 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .iso 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .iso 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .iso 文件就不会显示在启动菜单中。 过滤之后 .iso 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -873,7 +863,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -888,8 +878,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .wim 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .wim 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .wim 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .wim 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .wim 文件就不会显示在启动菜单中。 过滤之后 .wim 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -916,7 +906,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -931,8 +921,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .efi 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .efi 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .efi 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .efi 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .efi 文件就不会显示在启动菜单中。 过滤之后 .efi 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -959,7 +949,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -974,8 +964,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .img 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .img 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .img 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .img 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .img 文件就不会显示在启动菜单中。 过滤之后 .img 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -1002,7 +992,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -1017,8 +1007,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .vhd(x) 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .vhd(x) 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .vhd(x) 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .vhd(x) 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .vhd(x) 文件就不会显示在启动菜单中。 过滤之后 .vhd(x) 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -1045,7 +1035,7 @@
</div><!-- /.box-tools --> </div><!-- /.box-tools -->
</div><!-- /.box-header --> </div><!-- /.box-header -->
<div class="box-body no-padding"> <div class="box-body no-padding">
<table class="table table-bordered no-padding"> <table class="table table-bordered no-padding">
<tr style="font-weight:bold;"> <tr style="font-weight:bold;">
<td class="td_ctrl_col" id="td_title_setting">选项设置</td> <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
<td> <td>
@@ -1060,8 +1050,8 @@
<tr id="tr_title_desc_cn"> <tr id="tr_title_desc_cn">
<td class="td_ctrl_col" id="td_title_desc">选项说明</td> <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
<td> <td>
<code style="font-weight: bold;">0</code> 不过滤 .vtoy 文件 &nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">0</code> 不过滤 .vtoy 文件 &nbsp;&nbsp; &nbsp;&nbsp;
<code style="font-weight: bold;">1</code> 过滤掉 .vtoy 文件。&nbsp;&nbsp; &nbsp;&nbsp; <code style="font-weight: bold;">1</code> 过滤掉 .vtoy 文件。&nbsp;&nbsp; &nbsp;&nbsp;
过滤之后 .vtoy 文件就不会显示在启动菜单中。 过滤之后 .vtoy 文件就不会显示在启动菜单中。
</td> </td>
</tr> </tr>
@@ -1077,18 +1067,18 @@
</div><!-- /.box-body --> </div><!-- /.box-body -->
</div><!-- /.box --> </div><!-- /.box -->
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
function VtoyPageLanguageChange(newlang) { function VtoyPageLanguageChange(newlang) {
VtoyCommonChangeLanguage(newlang); VtoyCommonChangeLanguage(newlang);
$('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_CONTROL); $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_CONTROL);
$('#id_ctrl_span_search_root_valid').text(g_vtoy_cur_language.STR_VALID); $('#id_ctrl_span_search_root_valid').text(g_vtoy_cur_language.STR_VALID);
$('#id_ctrl_span_search_root_invalid').text(g_vtoy_cur_language.STR_INVALID); $('#id_ctrl_span_search_root_invalid').text(g_vtoy_cur_language.STR_INVALID);
$('#id_ctrl_span_img_valid').text(g_vtoy_cur_language.STR_VALID); $('#id_ctrl_span_img_valid').text(g_vtoy_cur_language.STR_VALID);
$('#id_ctrl_span_img_invalid').text(g_vtoy_cur_language.STR_INVALID); $('#id_ctrl_span_img_invalid').text(g_vtoy_cur_language.STR_INVALID);
@@ -1107,21 +1097,23 @@
data.win11_bypass_check = parseInt($('input:radio[name=id_ctrl_bypass_win11_radio]:checked').val()); data.win11_bypass_check = parseInt($('input:radio[name=id_ctrl_bypass_win11_radio]:checked').val());
data.win11_bypass_nro = parseInt($('input:radio[name=id_ctrl_bypass_nro_radio]:checked').val()); data.win11_bypass_nro = parseInt($('input:radio[name=id_ctrl_bypass_nro_radio]:checked').val());
data.linux_remount = parseInt($('input:radio[name=id_ctrl_linux_remount_radio]:checked').val()); data.linux_remount = 0;
data.secondary_menu = parseInt($('input:radio[name=id_ctrl_secondary_radio]:checked').val()); data.secondary_menu = parseInt($('input:radio[name=id_ctrl_secondary_radio]:checked').val());
data.uefi_res_lock = parseInt($('input:radio[name=id_ctrl_uefi_res_lock_radio]:checked').val());
data.uefi_sb_policy = parseInt($('input:radio[name=id_ctrl_uefi_sb_policy_radio]:checked').val());
data.password_asterisk = parseInt($('input:radio[name=id_ctrl_asterisk_radio]:checked').val()); data.password_asterisk = parseInt($('input:radio[name=id_ctrl_asterisk_radio]:checked').val());
data.default_search_root = $('input:text[id=id_ctrl_text_search_root]').val(); data.default_search_root = $('input:text[id=id_ctrl_text_search_root]').val();
data.menu_timeout = parseInt($('input:text[id=id_ctrl_text_timeout]').val()); data.menu_timeout = parseInt($('input:text[id=id_ctrl_text_timeout]').val());
data.secondary_menu_timeout = parseInt($('input:text[id=id_ctrl_text_secondary_timeout]').val()); data.secondary_menu_timeout = parseInt($('input:text[id=id_ctrl_text_secondary_timeout]').val());
data.default_image = $('input:text[id=id_ctrl_text_default_img]').val(); data.default_image = $('input:text[id=id_ctrl_text_default_img]').val();
level = $('select[id=id_ctrl_sel_max_depth').val(); level = $('select[id=id_ctrl_sel_max_depth').val();
if (level === 'max') { if (level === 'max') {
data.max_search_level = -1; data.max_search_level = -1;
} else { } else {
data.max_search_level = parseInt(level); data.max_search_level = parseInt(level);
} }
data.default_kbd_layout = $('select[id=id_ctrl_sel_kbd').val(); data.default_kbd_layout = $('select[id=id_ctrl_sel_kbd').val();
data.default_menu_mode = parseInt($('input:radio[name=id_ctrl_radio_menu_mode]:checked').val()); data.default_menu_mode = parseInt($('input:radio[name=id_ctrl_radio_menu_mode]:checked').val());
data.treeview_style = parseInt($('input:radio[name=id_ctrl_radio_treestyle]:checked').val()); data.treeview_style = parseInt($('input:radio[name=id_ctrl_radio_treestyle]:checked').val());
@@ -1145,8 +1137,9 @@
$('input:radio[name=id_ctrl_bypass_win11_radio]')[data.win11_bypass_check].checked = true; $('input:radio[name=id_ctrl_bypass_win11_radio]')[data.win11_bypass_check].checked = true;
//VTOY_WIN11_BYPASS_NRO //VTOY_WIN11_BYPASS_NRO
$('input:radio[name=id_ctrl_bypass_nro_radio]')[data.win11_bypass_nro].checked = true; $('input:radio[name=id_ctrl_bypass_nro_radio]')[data.win11_bypass_nro].checked = true;
$('input:radio[name=id_ctrl_linux_remount_radio]')[data.linux_remount].checked = true;
$('input:radio[name=id_ctrl_secondary_radio]')[data.secondary_menu].checked = true; $('input:radio[name=id_ctrl_secondary_radio]')[data.secondary_menu].checked = true;
$('input:radio[name=id_ctrl_uefi_res_lock_radio]')[data.uefi_res_lock].checked = true;
$('input:radio[name=id_ctrl_uefi_sb_policy_radio]')[data.uefi_sb_policy].checked = true;
$('input:radio[name=id_ctrl_asterisk_radio]')[data.password_asterisk].checked = true; $('input:radio[name=id_ctrl_asterisk_radio]')[data.password_asterisk].checked = true;
//VTOY_DEFAULT_SEARCH_ROOT //VTOY_DEFAULT_SEARCH_ROOT
@@ -1166,7 +1159,7 @@
//VTOY_MENU_TIMEOUT //VTOY_MENU_TIMEOUT
$('input:text[id=id_ctrl_text_timeout]').val(data.menu_timeout); $('input:text[id=id_ctrl_text_timeout]').val(data.menu_timeout);
//VTOY_SECONDARY_TIMEOUT //VTOY_SECONDARY_TIMEOUT
$('input:text[id=id_ctrl_text_secondary_timeout]').val(data.secondary_menu_timeout); $('input:text[id=id_ctrl_text_secondary_timeout]').val(data.secondary_menu_timeout);
@@ -1253,6 +1246,8 @@
win11_bypass_check: data.win11_bypass_check, win11_bypass_check: data.win11_bypass_check,
win11_bypass_nro: data.win11_bypass_nro, win11_bypass_nro: data.win11_bypass_nro,
linux_remount:data.linux_remount, linux_remount:data.linux_remount,
uefi_res_lock:data.uefi_res_lock,
uefi_sb_policy:data.uefi_sb_policy,
secondary_menu:data.secondary_menu, secondary_menu:data.secondary_menu,
password_asterisk:data.password_asterisk, password_asterisk:data.password_asterisk,
default_search_root: data.default_search_root, default_search_root: data.default_search_root,
@@ -1285,7 +1280,7 @@
if (index < 0 || index >= g_vtoy_data_default_index || current_tab_index === index) { if (index < 0 || index >= g_vtoy_data_default_index || current_tab_index === index) {
return; return;
} }
current_tab_index = index; current_tab_index = index;
VtoyFillCurrentPageItem(m_data_control[index]); VtoyFillCurrentPageItem(m_data_control[index]);
} }
@@ -1307,7 +1302,7 @@
var path = root.substr(g_current_dir.length); var path = root.substr(g_current_dir.length);
$('input:text[id=id_ctrl_text_default_img]').val(path); $('input:text[id=id_ctrl_text_default_img]').val(path);
if (path.length === 0) { if (path.length === 0) {
$('div[id=id_ctrl_div_img_status]').hide(); $('div[id=id_ctrl_div_img_status]').hide();
} else { } else {
$('div[id=id_ctrl_div_img_status]').show(); $('div[id=id_ctrl_div_img_status]').show();
$('span[id=id_ctrl_span_img_valid]').show(); $('span[id=id_ctrl_span_img_valid]').show();
@@ -1323,7 +1318,7 @@
callVtoySync({method : 'get_control'}, function(data) { callVtoySync({method : 'get_control'}, function(data) {
m_data_control = data; m_data_control = data;
}); });
$('#id_ctrl_btn_sel_root').click(function() { $('#id_ctrl_btn_sel_root').click(function() {
var tip = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux"; var tip = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux";
var para = { var para = {
@@ -1335,7 +1330,7 @@
}; };
VtoySelectDirPath(OnSelectSearchRoot, para); VtoySelectDirPath(OnSelectSearchRoot, para);
}); });
$('#id_ctrl_btn_clr_root').click(function() { $('#id_ctrl_btn_clr_root').click(function() {
var old = $('input:text[id=id_ctrl_text_search_root]').val(); var old = $('input:text[id=id_ctrl_text_search_root]').val();
if (old.length != 0) { if (old.length != 0) {
@@ -1344,7 +1339,7 @@
VtoySaveCurrentPage(); VtoySaveCurrentPage();
} }
}); });
$('#id_ctrl_btn_default_img').click(function() { $('#id_ctrl_btn_default_img').click(function() {
var tip = (g_current_os === 'windows') ? '\\ISO\\Windows10_en.iso' : "/ISO/Windows10_en.iso"; var tip = (g_current_os === 'windows') ? '\\ISO\\Windows10_en.iso' : "/ISO/Windows10_en.iso";
var para = { var para = {
@@ -1402,13 +1397,13 @@
$('#id_tab_control a[href="#tab_3"]').click(OnClickMultiModeTab); $('#id_tab_control a[href="#tab_3"]').click(OnClickMultiModeTab);
$('#id_tab_control a[href="#tab_4"]').click(OnClickMultiModeTab); $('#id_tab_control a[href="#tab_4"]').click(OnClickMultiModeTab);
$('#id_tab_control a[href="#tab_5"]').click(OnClickMultiModeTab); $('#id_tab_control a[href="#tab_5"]').click(OnClickMultiModeTab);
function UpdateTabTitleIcon(data) { function UpdateTabTitleIcon(data) {
CommonUpdateTabTitleIcon(data.exist_control, '#id_tab_control a[href="#tab_', 'control'); CommonUpdateTabTitleIcon(data.exist_control, '#id_tab_control a[href="#tab_', 'control');
} }
$('#id_btn_reset').click(function() { $('#id_btn_reset').click(function() {
Modal.confirm({msg:GetResetTabConfigTipMsg(current_tab_index, 'control')}).on(function(e) { Modal.confirm({msg:GetResetTabConfigTipMsg(current_tab_index, 'control')}).on(function(e) {
if (e) { if (e) {
VtoyFillCurrentPageItem(m_data_control[g_vtoy_data_default_index]); VtoyFillCurrentPageItem(m_data_control[g_vtoy_data_default_index]);
VtoySaveCurrentPage(); VtoySaveCurrentPage();
} }

View File

@@ -1,40 +1,40 @@
function VtoyUTF16HexToAscii(hex) { function VtoyUTF16HexToAscii(hex) {
var str = ""; var str = "";
for (var i = 0; i < hex.length; i += 4) { for (var i = 0; i < hex.length; i += 4) {
str += String.fromCharCode(parseInt(hex.substring(i, i + 4), 16)); str += String.fromCharCode(parseInt(hex.substring(i, i + 4), 16));
} }
return str; return str;
} }
function ventoy_replace_slash(str) { function ventoy_replace_slash(str) {
var str1 = str.replace(/\\/g, '/'); var str1 = str.replace(/\\/g, '/');
var str2 = str1.replace(/\/\//g, '/'); var str2 = str1.replace(/\/\//g, '/');
if (str2 && str2.length > 0) { if (str2 && str2.length > 0) {
if (str2.substr(-1) === "/") { if (str2.substr(-1) === "/") {
return str2.substr(0, str2.length - 1); return str2.substr(0, str2.length - 1);
} }
} }
return str2; return str2;
} }
function ventoy_get_ulen(str) { function ventoy_get_ulen(str) {
var c, b = 0, l = str.length; var c, b = 0, l = str.length;
while(l) { while(l) {
c = str.charCodeAt(--l); c = str.charCodeAt(--l);
b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4)); b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4));
}; };
return b; return b;
} }
function ventoy_common_check_path(path) { function ventoy_common_check_path(path) {
var curdir var curdir
if (path.indexOf('//') >= 0) { if (path.indexOf('//') >= 0) {
return false; return false;
} }
@@ -43,11 +43,11 @@ function ventoy_common_check_path(path) {
return false; return false;
} }
curdir = path.substr(0, g_current_dir.length); curdir = path.substr(0, g_current_dir.length);
if (curdir.match("^[a-z]:$")) { if (curdir.match("^[a-z]:$")) {
curdir = curdir.toUpperCase(); curdir = curdir.toUpperCase();
} }
if (curdir != g_current_dir) { if (curdir != g_current_dir) {
return false; return false;
} }
@@ -135,7 +135,7 @@ function callVtoy(p1, p2, p3) {
} }
else if(undefined === errorThrown.length) else if(undefined === errorThrown.length)
{ {
} }
else if('' == errorThrown.trim()) else if('' == errorThrown.trim())
{ {
@@ -184,11 +184,11 @@ function callVtoyASyncTimeout(time, data, func) {
success: func, success: func,
error: function(xmlHttpRequest, textStatus, errorThrown) { error: function(xmlHttpRequest, textStatus, errorThrown) {
if(undefined === errorThrown) if(undefined === errorThrown)
{ {
} }
else if(undefined === errorThrown.length) else if(undefined === errorThrown.length)
{ {
} }
else if('' == errorThrown.trim()) else if('' == errorThrown.trim())
{ {
@@ -232,11 +232,11 @@ function callVtoySync(data, func) {
dataType: 'json', dataType: 'json',
async: false, async: false,
data: JSON.stringify(data), data: JSON.stringify(data),
success: function VtoyCallFuncWrapper(data) { success: function VtoyCallFuncWrapper(data) {
if (data.result === 'busy') { if (data.result === 'busy') {
var titlestr = '<span class="fa fa-check-circle" style="color:green; font-weight:bold;"> ' + g_vtoy_cur_language.STR_INFO + '</span>'; var titlestr = '<span class="fa fa-check-circle" style="color:green; font-weight:bold;"> ' + g_vtoy_cur_language.STR_INFO + '</span>';
var msgstr = '<span style="font-size:14px; font-weight:bold;"> ' + g_vtoy_cur_language.STR_WEB_SERVICE_BUSY + '</span>'; var msgstr = '<span style="font-size:14px; font-weight:bold;"> ' + g_vtoy_cur_language.STR_WEB_SERVICE_BUSY + '</span>';
Modal.alert({title:titlestr, msg:msgstr, btnok:g_vtoy_cur_language.STR_BTN_OK }); Modal.alert({title:titlestr, msg:msgstr, btnok:g_vtoy_cur_language.STR_BTN_OK });
}else { }else {
func(data); func(data);
} }
@@ -248,7 +248,7 @@ function callVtoySync(data, func) {
} }
else if(undefined === errorThrown.length) else if(undefined === errorThrown.length)
{ {
} }
else if('' == errorThrown.trim()) else if('' == errorThrown.trim())
{ {
@@ -285,16 +285,16 @@ function callVtoySync(data, func) {
}); });
} }
var vtoy = { var vtoy = {
baseurl : '', baseurl : '',
status: '', status: '',
scan: { scan: {
time: 3, time: 3,
ret: [] ret: []
} }
} }
// //
String.prototype.endsWith = function(str) { String.prototype.endsWith = function(str) {
if (str == null || str == "" || this.length == 0 || str.length > this.length) if (str == null || str == "" || this.length == 0 || str.length > this.length)
return false; return false;
@@ -305,7 +305,7 @@ String.prototype.endsWith = function(str) {
} }
var g_vtoy_cur_language_en = var g_vtoy_cur_language_en =
{ {
"STR_INFO": "Info", "STR_INFO": "Info",
"STR_BTN_OK": "OK", "STR_BTN_OK": "OK",
@@ -390,8 +390,8 @@ var g_vtoy_cur_language_en =
"STR_PATH_TOO_LONG": "The path exceeds the maximum supported length, please check!", "STR_PATH_TOO_LONG": "The path exceeds the maximum supported length, please check!",
"STR_INPUT_TOO_LONG": "The string exceeds the maximum supported length, please check!", "STR_INPUT_TOO_LONG": "The string exceeds the maximum supported length, please check!",
"STR_INVALID_FILE_PATH": "Invalid or nonexist full file path, please check!", "STR_INVALID_FILE_PATH": "Invalid or nonexist full file path, please check!",
"STR_INVALID_FILE_PATH1": "The 1st file path is invalid or nonexist!", "STR_INVALID_FILE_PATH1": "The 1st file path is invalid or nonexist!",
"STR_INVALID_FILE_PATH2": "The 2nd file path is invalid or nonexist!", "STR_INVALID_FILE_PATH2": "The 2nd file path is invalid or nonexist!",
"STR_INVALID_NEW_FILE_PATH": "The full file path of new is invalid or nonexist, please check!", "STR_INVALID_NEW_FILE_PATH": "The full file path of new is invalid or nonexist, please check!",
"STR_INVALID_DIR_PATH": "Invalid directory path, please check!", "STR_INVALID_DIR_PATH": "Invalid directory path, please check!",
"STR_INVALID_NUMBER": "Please input valid non-negative integer!", "STR_INVALID_NUMBER": "Please input valid non-negative integer!",
@@ -418,7 +418,7 @@ var g_vtoy_cur_language_en =
"STR_SET_IMAGE_PWD": "[file] Set Password For A File", "STR_SET_IMAGE_PWD": "[file] Set Password For A File",
"STR_SET_PARENT_PWD": "[parent] Set the same password for all the files under a directory.", "STR_SET_PARENT_PWD": "[parent] Set the same password for all the files under a directory.",
"STR_SET_SEARCH_ROOT": "Set Search Root", "STR_SET_SEARCH_ROOT": "Set Search Root",
"STR_SET_DEFAULT_IMAGE": "Set Default Image", "STR_SET_DEFAULT_IMAGE": "Set Default Image",
"STR_ADD_THEME": "Add Theme", "STR_ADD_THEME": "Add Theme",
"STR_ADD_FONT": "Set Font", "STR_ADD_FONT": "Set Font",
@@ -426,7 +426,7 @@ var g_vtoy_cur_language_en =
"STR_DEFAULT_SELECT": " Default", "STR_DEFAULT_SELECT": " Default",
"STR_AUTO_TEMPLATE": "Auto Install Template", "STR_AUTO_TEMPLATE": "Auto Install Template",
"STR_ADD_AUTO_TEMPLATE": "Add Auto Install Template", "STR_ADD_AUTO_TEMPLATE": "Add Auto Install Template",
"STR_PERSISTENCE_DAT": "Persistence Dat File", "STR_PERSISTENCE_DAT": "Persistence Dat File",
"STR_ADD_PERSISTENCE_DAT": "Add Persistence Dat File", "STR_ADD_PERSISTENCE_DAT": "Add Persistence Dat File",
@@ -449,7 +449,7 @@ var g_vtoy_cur_language_en =
"STR_XXX": "xxx" "STR_XXX": "xxx"
}; };
var g_vtoy_cur_language_cn = var g_vtoy_cur_language_cn =
{ {
"STR_INFO": "提醒", "STR_INFO": "提醒",
"STR_BTN_OK": "确定", "STR_BTN_OK": "确定",
@@ -486,7 +486,7 @@ var g_vtoy_cur_language_cn =
"STR_DELETE_CONFIRM": "确定要删除吗?", "STR_DELETE_CONFIRM": "确定要删除吗?",
"STR_FILE_PATH": "文件路径", "STR_FILE_PATH": "文件路径",
"STR_DIR_PATH": "目录路径", "STR_DIR_PATH": "目录路径",
"STR_SET_ALIAS": "设置菜单别名", "STR_SET_ALIAS": "设置菜单别名",
"STR_ALIAS": "别名", "STR_ALIAS": "别名",
"STR_SET_TIP": "设置菜单提示", "STR_SET_TIP": "设置菜单提示",
@@ -531,10 +531,10 @@ var g_vtoy_cur_language_cn =
"STR_PATH_TOO_LONG": "路径超过最大支持长度,请检查!", "STR_PATH_TOO_LONG": "路径超过最大支持长度,请检查!",
"STR_INPUT_TOO_LONG": "字符串超过最大支持长度,请检查!", "STR_INPUT_TOO_LONG": "字符串超过最大支持长度,请检查!",
"STR_INVALID_FILE_PATH": "文件路径不合法或不存在,请检查!", "STR_INVALID_FILE_PATH": "文件路径不合法或不存在,请检查!",
"STR_INVALID_FILE_PATH1": "第1个文件路径不合法或不存在请检查", "STR_INVALID_FILE_PATH1": "第1个文件路径不合法或不存在请检查",
"STR_INVALID_FILE_PATH2": "第2个文件路径不合法或不存在请检查", "STR_INVALID_FILE_PATH2": "第2个文件路径不合法或不存在请检查",
"STR_INVALID_NEW_FILE_PATH": "new 文件路径不合法或不存在,请检查!", "STR_INVALID_NEW_FILE_PATH": "new 文件路径不合法或不存在,请检查!",
"STR_INVALID_DIR_PATH": "文件夹路径不合法,请检查!", "STR_INVALID_DIR_PATH": "文件夹路径不合法,请检查!",
"STR_INVALID_NUMBER": "请输入合法的非负整数!", "STR_INVALID_NUMBER": "请输入合法的非负整数!",
"STR_INVALID_AUTOSEL": "autosel 的值超过了列表实际长度!", "STR_INVALID_AUTOSEL": "autosel 的值超过了列表实际长度!",
@@ -562,7 +562,7 @@ var g_vtoy_cur_language_cn =
"STR_SET_PARENT_PWD": "[parent] 为某个目录下的所有文件设置相同的密码", "STR_SET_PARENT_PWD": "[parent] 为某个目录下的所有文件设置相同的密码",
"STR_SET_SEARCH_ROOT": "设置搜索目录", "STR_SET_SEARCH_ROOT": "设置搜索目录",
"STR_SET_DEFAULT_IMAGE": "设置默认镜像文件", "STR_SET_DEFAULT_IMAGE": "设置默认镜像文件",
"STR_ADD_THEME": "添加主题", "STR_ADD_THEME": "添加主题",
@@ -607,13 +607,13 @@ var g_dir_modal_callback;
function GetResetTabConfigTipMsg(index, name) { function GetResetTabConfigTipMsg(index, name) {
var msgstr; var msgstr;
if (g_current_language === 'en') { if (g_current_language === 'en') {
msgstr = 'Are you sure to reset all the configurations on the <code>' + name + g_bios_postfix[index] + '</code> tab ?'; msgstr = 'Are you sure to reset all the configurations on the <code>' + name + g_bios_postfix[index] + '</code> tab ?';
} else { } else {
msgstr = '确认要重置 <code>' + name + g_bios_postfix[index] + '</code> 标签页下的所有配置?'; msgstr = '确认要重置 <code>' + name + g_bios_postfix[index] + '</code> 标签页下的所有配置?';
} }
return msgstr; return msgstr;
} }
@@ -629,7 +629,7 @@ function CommonUpdateTabTitleIcon(exists, id, name) {
} else { } else {
newhtml = name + g_bios_postfix[i]; newhtml = name + g_bios_postfix[i];
} }
if (newhtml != oldhtml) { if (newhtml != oldhtml) {
$(fid).html(newhtml); $(fid).html(newhtml);
} }
@@ -661,7 +661,7 @@ function ventoy_file_submit(form, extra) {
callVtoySync({ callVtoySync({
method : 'check_fuzzy', method : 'check_fuzzy',
path: filepath path: filepath
}, function(data) { }, function(data) {
if (data.exist != 0) { if (data.exist != 0) {
if (typeof(g_file_modal_callback) === 'function') { if (typeof(g_file_modal_callback) === 'function') {
g_file_modal_callback(filepath, -1, fileextra); g_file_modal_callback(filepath, -1, fileextra);
@@ -676,7 +676,7 @@ function ventoy_file_submit(form, extra) {
method : 'check_path', method : 'check_path',
dir: 0, dir: 0,
path: filepath path: filepath
}, function(data) { }, function(data) {
if (data.exist === 1) { if (data.exist === 1) {
if (typeof(g_file_modal_callback) === 'function') { if (typeof(g_file_modal_callback) === 'function') {
g_file_modal_callback(filepath, 1, fileextra); g_file_modal_callback(filepath, 1, fileextra);
@@ -691,7 +691,7 @@ function ventoy_file_submit(form, extra) {
var g_filepath_validator = $("#SetFileForm").validate({ var g_filepath_validator = $("#SetFileForm").validate({
rules: { rules: {
FilePath : { FilePath : {
required: true, required: true,
utfmaxlen: true, utfmaxlen: true,
@@ -708,7 +708,7 @@ var g_filepath_validator = $("#SetFileForm").validate({
}); });
var g_dirpath_validator = $("#SetDirForm").validate({ var g_dirpath_validator = $("#SetDirForm").validate({
rules: { rules: {
DirPath : { DirPath : {
required: true, required: true,
utfmaxlen: true, utfmaxlen: true,
@@ -722,7 +722,7 @@ var g_dirpath_validator = $("#SetDirForm").validate({
submitHandler: function(form) { submitHandler: function(form) {
var dirpath = $("#DirPath").val(); var dirpath = $("#DirPath").val();
var dirextra = $("#DirExtra").val(); var dirextra = $("#DirExtra").val();
if (!dirpath) { if (!dirpath) {
return; return;
} }
@@ -747,8 +747,8 @@ var g_dirpath_validator = $("#SetDirForm").validate({
callVtoySync({ callVtoySync({
method : 'check_path', method : 'check_path',
dir: 1, dir: 1,
path: dirpath path: dirpath
}, function(data) { }, function(data) {
if (data.exist === 1) { if (data.exist === 1) {
if (typeof(g_dir_modal_callback) === 'function') { if (typeof(g_dir_modal_callback) === 'function') {
g_dir_modal_callback(dirpath, dirextra); g_dir_modal_callback(dirpath, dirextra);
@@ -763,7 +763,7 @@ var g_dirpath_validator = $("#SetDirForm").validate({
function VtoySelectFilePath(cb, para) { function VtoySelectFilePath(cb, para) {
g_file_fuzzy_match = para.fuzzy; g_file_fuzzy_match = para.fuzzy;
if (para.extra) { if (para.extra) {
$('div[id=id_div_file_extra]').show(); $('div[id=id_div_file_extra]').show();
$('#SetFileForm_extra').text(para.extra_title); $('#SetFileForm_extra').text(para.extra_title);
@@ -787,7 +787,7 @@ function VtoySelectFilePath(cb, para) {
} else { } else {
$('#SetFileForm #SetFileForm_lang_1').text(para.title); $('#SetFileForm #SetFileForm_lang_1').text(para.title);
} }
$('#SetFileForm #SetFileForm_lang_2').text("File Path"); $('#SetFileForm #SetFileForm_lang_2').text("File Path");
$('#SetFileForm #SetFileForm_lang_3').text(" OK"); $('#SetFileForm #SetFileForm_lang_3').text(" OK");
$('#SetFileForm #SetFileForm_lang_4').text("Cancel"); $('#SetFileForm #SetFileForm_lang_4').text("Cancel");
@@ -823,7 +823,7 @@ function VtoySelectFilePath(cb, para) {
g_file_with_extra = para.extra; g_file_with_extra = para.extra;
g_filepath_validator.settings.rules.FileExtra.required = g_file_with_extra; g_filepath_validator.settings.rules.FileExtra.required = g_file_with_extra;
g_filepath_validator.resetForm(); g_filepath_validator.resetForm();
$("#SetFileModal").modal(); $("#SetFileModal").modal();
} }
@@ -882,8 +882,8 @@ function VtoySelectDirPath(cb, para) {
g_dir_modal_callback = cb; g_dir_modal_callback = cb;
g_dir_with_extra = para.extra; g_dir_with_extra = para.extra;
g_dirpath_validator.settings.rules.DirExtra.required = g_dir_with_extra; g_dirpath_validator.settings.rules.DirExtra.required = g_dir_with_extra;
g_dirpath_validator.resetForm(); g_dirpath_validator.resetForm();
$("#SetDirModal").modal(); $("#SetDirModal").modal();
} }
function VtoyCommonChangeLanguage(newlang) { function VtoyCommonChangeLanguage(newlang) {
@@ -891,7 +891,7 @@ function VtoyCommonChangeLanguage(newlang) {
g_vtoy_cur_language = g_vtoy_cur_language_en; g_vtoy_cur_language = g_vtoy_cur_language_en;
;$.extend($.validator.messages, { ;$.extend($.validator.messages, {
required: "This field is required", required: "This field is required",
remote: "Please modify this field", remote: "Please modify this field",
maxlength: $.validator.format("You can enter up to {0} characters"), maxlength: $.validator.format("You can enter up to {0} characters"),
minlength: $.validator.format("Must enter at least {0} characters"), minlength: $.validator.format("Must enter at least {0} characters"),
rangelength: $.validator.format("Please input {0} to {1} characters"), rangelength: $.validator.format("Please input {0} to {1} characters"),
@@ -910,23 +910,23 @@ function VtoyCommonChangeLanguage(newlang) {
var newlink = oldlink.replace("/cn/", "/en/"); var newlink = oldlink.replace("/cn/", "/en/");
$(this).attr('href', newlink); $(this).attr('href', newlink);
}); });
$("span[id=id_span_official_doc]").each(function(){ $("span[id=id_span_official_doc]").each(function(){
$(this).text(" Plugin Official Document"); $(this).text(" Plugin Official Document");
}); });
$('#id_span_copy').text("Copy"); $('#id_span_copy').text("Copy");
$('#id_span_preview').text("Preview"); $('#id_span_preview').text("Preview");
$('#id_span_language').text("中文"); $('#id_span_language').text("中文");
$("tr[id=tr_title_desc_cn]").each(function(){ $("tr[id=tr_title_desc_cn]").each(function(){
$(this).hide(); $(this).hide();
}); });
$("tr[id=tr_title_desc_en]").each(function(){ $("tr[id=tr_title_desc_en]").each(function(){
$(this).show(); $(this).show();
}); });
$("th[id=id_th_file_path]").each(function(){ $("th[id=id_th_file_path]").each(function(){
$(this).text("Full File Path"); $(this).text("Full File Path");
}); });
@@ -934,12 +934,15 @@ function VtoyCommonChangeLanguage(newlang) {
$("span[id=id_span_desc_cn]").each(function(){ $("span[id=id_span_desc_cn]").each(function(){
$(this).hide(); $(this).hide();
}); });
$("span[id=id_span_desc_en]").each(function(){
$(this).show();
});
} else { } else {
g_vtoy_cur_language = g_vtoy_cur_language_cn; g_vtoy_cur_language = g_vtoy_cur_language_cn;
;$.extend($.validator.messages, { ;$.extend($.validator.messages, {
required: "这是必填字段", required: "这是必填字段",
remote: "请修正此字段", remote: "请修正此字段",
maxlength: $.validator.format("最多可以输入 {0} 个字符"), maxlength: $.validator.format("最多可以输入 {0} 个字符"),
minlength: $.validator.format("最少要输入 {0} 个字符"), minlength: $.validator.format("最少要输入 {0} 个字符"),
rangelength: $.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"), rangelength: $.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"),
@@ -952,29 +955,29 @@ function VtoyCommonChangeLanguage(newlang) {
filenamepart:$.validator.format("作为文件名的一部分,不能包含特殊的符号"), filenamepart:$.validator.format("作为文件名的一部分,不能包含特殊的符号"),
printascii: $.validator.format("不能包含中文或其他非 ascii 字符。") printascii: $.validator.format("不能包含中文或其他非 ascii 字符。")
}); });
$("a[id=id_a_official_doc]").each(function(){ $("a[id=id_a_official_doc]").each(function(){
var oldlink = $(this).attr('href'); var oldlink = $(this).attr('href');
var newlink = oldlink.replace("/en/", "/cn/"); var newlink = oldlink.replace("/en/", "/cn/");
$(this).attr('href', newlink); $(this).attr('href', newlink);
}); });
$("span[id=id_span_official_doc]").each(function(){ $("span[id=id_span_official_doc]").each(function(){
$(this).text(" 插件官网文档"); $(this).text(" 插件官网文档");
}); });
$('#id_span_copy').text("复制"); $('#id_span_copy').text("复制");
$('#id_span_preview').text("预览"); $('#id_span_preview').text("预览");
$('#id_span_language').text("English"); $('#id_span_language').text("English");
$("tr[id=tr_title_desc_cn]").each(function(){ $("tr[id=tr_title_desc_cn]").each(function(){
$(this).show(); $(this).show();
}); });
$("tr[id=tr_title_desc_en]").each(function(){ $("tr[id=tr_title_desc_en]").each(function(){
$(this).hide(); $(this).hide();
}); });
$("th[id=id_th_file_path]").each(function(){ $("th[id=id_th_file_path]").each(function(){
$(this).text("文件路径"); $(this).text("文件路径");
}); });
@@ -982,6 +985,10 @@ function VtoyCommonChangeLanguage(newlang) {
$("span[id=id_span_desc_cn]").each(function(){ $("span[id=id_span_desc_cn]").each(function(){
$(this).show(); $(this).show();
}); });
$("span[id=id_span_desc_en]").each(function(){
$(this).hide();
});
} }
$("span[id=id_span_menu_device]").text(g_vtoy_cur_language.STR_PLUG_DEVICE); $("span[id=id_span_menu_device]").text(g_vtoy_cur_language.STR_PLUG_DEVICE);
@@ -1001,7 +1008,7 @@ function VtoyCommonChangeLanguage(newlang) {
$('#id_span_save').text(g_vtoy_cur_language.STR_SAVE); $('#id_span_save').text(g_vtoy_cur_language.STR_SAVE);
$('#id_span_reset').text(g_vtoy_cur_language.STR_RESET); $('#id_span_reset').text(g_vtoy_cur_language.STR_RESET);
$('#id_span_donation').text(g_vtoy_cur_language.STR_PLUG_DONATION); $('#id_span_donation').text(g_vtoy_cur_language.STR_PLUG_DONATION);
$('span[id=id_btn_span_reset]').each(function(){ $('span[id=id_btn_span_reset]').each(function(){
$(this).text(' ' + g_vtoy_cur_language.STR_RESET); $(this).text(' ' + g_vtoy_cur_language.STR_RESET);
}); });
@@ -1033,13 +1040,13 @@ function VtoyCommonChangeLanguage(newlang) {
$("td[id=td_title_desc]").each(function(){ $("td[id=td_title_desc]").each(function(){
$(this).text(g_vtoy_cur_language.STR_OPT_DESC); $(this).text(g_vtoy_cur_language.STR_OPT_DESC);
}); });
$("td[id=td_title_setting]").each(function(){ $("td[id=td_title_setting]").each(function(){
$(this).text(g_vtoy_cur_language.STR_OPT_SETTING); $(this).text(g_vtoy_cur_language.STR_OPT_SETTING);
}); });
} }
function ventoy_get_status_line(dir, exist) { function ventoy_get_status_line(dir, exist) {
if (dir) { if (dir) {
if (exist === 0) { if (exist === 0) {
@@ -1062,7 +1069,7 @@ function ventoy_get_status_line(dir, exist) {
var g_type_select_callback; var g_type_select_callback;
var g_type_select_validator = $("#TypeSelectForm").validate({ var g_type_select_validator = $("#TypeSelectForm").validate({
submitHandler: function(form) { submitHandler: function(form) {
var sel = parseInt($('input:radio[name=name_select_type_radio]:checked').val()); var sel = parseInt($('input:radio[name=name_select_type_radio]:checked').val());
if (typeof(g_type_select_callback) === 'function') { if (typeof(g_type_select_callback) === 'function') {
@@ -1076,7 +1083,7 @@ var g_type_select_validator = $("#TypeSelectForm").validate({
function VtoySelectType(cb, para) { function VtoySelectType(cb, para) {
$('#TypeSelectForm #TypeSelForm_lang_1').text(g_vtoy_cur_language.STR_SELECT); $('#TypeSelectForm #TypeSelForm_lang_1').text(g_vtoy_cur_language.STR_SELECT);
if (g_current_language === 'en') { if (g_current_language === 'en') {
$('#TypeSelectForm #TypeSelForm_lang_2').text(" OK"); $('#TypeSelectForm #TypeSelForm_lang_2').text(" OK");
$('#TypeSelectForm #TypeSelForm_lang_3').text("Cancel"); $('#TypeSelectForm #TypeSelForm_lang_3').text("Cancel");
@@ -1084,7 +1091,7 @@ function VtoySelectType(cb, para) {
$('#TypeSelectForm #TypeSelForm_lang_2').text("确定"); $('#TypeSelectForm #TypeSelForm_lang_2').text("确定");
$('#TypeSelectForm #TypeSelForm_lang_3').text("取消"); $('#TypeSelectForm #TypeSelForm_lang_3').text("取消");
} }
var $tbl = $("#id_type_select_table tbody"); var $tbl = $("#id_type_select_table tbody");
$tbl.empty(); $tbl.empty();
@@ -1101,23 +1108,23 @@ function VtoySelectType(cb, para) {
} }
g_type_select_callback = cb; g_type_select_callback = cb;
g_type_select_validator.resetForm(); g_type_select_validator.resetForm();
$("#TypeSelectModal").modal(); $("#TypeSelectModal").modal();
} }
var g_set_key_callback; var g_set_key_callback;
var g_set_key_validator = $("#SetKeyForm").validate({ var g_set_key_validator = $("#SetKeyForm").validate({
rules: { rules: {
SetKeyKey : { SetKeyKey : {
required: true, required: true,
utfmaxlen: true utfmaxlen: true
}, },
SetKeyValue : { SetKeyValue : {
required: true, required: true,
utfmaxlen: true, utfmaxlen: true,
filenamepart: true filenamepart: true
} }
}, },
@@ -1151,10 +1158,10 @@ function VtoySetKey(cb, para) {
$('#SetKeyForm #SetKeyForm_lang_4').text("确定"); $('#SetKeyForm #SetKeyForm_lang_4').text("确定");
$('#SetKeyForm #SetKeyForm_lang_5').text("取消"); $('#SetKeyForm #SetKeyForm_lang_5').text("取消");
} }
g_set_key_callback = cb; g_set_key_callback = cb;
g_set_key_validator.resetForm(); g_set_key_validator.resetForm();
$("#SetKeyModal").modal(); $("#SetKeyModal").modal();
} }
var g_valid_color_name = [ var g_valid_color_name = [
@@ -1204,7 +1211,7 @@ function ventoy_check_file_path(isopath, fuzzy, cb) {
callVtoySync({ callVtoySync({
method : 'check_fuzzy', method : 'check_fuzzy',
path: isopath path: isopath
}, function(data) { }, function(data) {
if (data.exist != 0) { if (data.exist != 0) {
if (typeof(cb) === 'function') { if (typeof(cb) === 'function') {
cb(data.exist); cb(data.exist);
@@ -1218,7 +1225,7 @@ function ventoy_check_file_path(isopath, fuzzy, cb) {
method : 'check_path', method : 'check_path',
dir: 0, dir: 0,
path: isopath path: isopath
}, function(data) { }, function(data) {
if (data.exist === 1) { if (data.exist === 1) {
if (typeof(cb) === 'function') { if (typeof(cb) === 'function') {
cb(data.exist); cb(data.exist);
@@ -1230,7 +1237,7 @@ function ventoy_check_file_path(isopath, fuzzy, cb) {
} }
} }
function ventoy_random_string(e) {  function ventoy_random_string(e) { 
var t = "abcdefhijkmnprstwxyz2345678"; var t = "abcdefhijkmnprstwxyz2345678";
var a = t.length; var a = t.length;
var n = ""; var n = "";
@@ -1243,15 +1250,15 @@ function ventoy_random_string(e) { 
var g_set_filefile_callback; var g_set_filefile_callback;
var g_set_filefile_validator = $("#SetFileFileForm").validate({ var g_set_filefile_validator = $("#SetFileFileForm").validate({
rules: { rules: {
FileFilePath1 : { FileFilePath1 : {
required: true, required: true,
utfmaxlen: true utfmaxlen: true
}, },
FileFilePath2 : { FileFilePath2 : {
required: true, required: true,
utfmaxlen: true utfmaxlen: true
} }
}, },
@@ -1332,24 +1339,24 @@ function VtoySetFileFile(cb, para) {
$('span[id=id_span_filefile_tip3]').each(function(){ $('span[id=id_span_filefile_tip3]').each(function(){
$(this).text(para.tip3); $(this).text(para.tip3);
}); });
g_set_filefile_callback = cb; g_set_filefile_callback = cb;
g_set_filefile_validator.resetForm(); g_set_filefile_validator.resetForm();
$("#SetFileFileModal").modal(); $("#SetFileFileModal").modal();
} }
var g_set_dirfile_callback; var g_set_dirfile_callback;
var g_set_dirfile_validator = $("#SetDirFileForm").validate({ var g_set_dirfile_validator = $("#SetDirFileForm").validate({
rules: { rules: {
DirFilePath1 : { DirFilePath1 : {
required: true, required: true,
utfmaxlen: true utfmaxlen: true
}, },
DirFilePath2 : { DirFilePath2 : {
required: true, required: true,
utfmaxlen: true utfmaxlen: true
} }
}, },
@@ -1427,9 +1434,9 @@ function VtoySetDirFile(cb, para) {
$('span[id=id_span_dirfile_tip2]').each(function(){ $('span[id=id_span_dirfile_tip2]').each(function(){
$(this).text(para.tip2); $(this).text(para.tip2);
}); });
g_set_dirfile_callback = cb; g_set_dirfile_callback = cb;
g_set_dirfile_validator.resetForm(); g_set_dirfile_validator.resetForm();
$("#SetDirFileModal").modal(); $("#SetDirFileModal").modal();
} }