mirror of
https://github.com/ventoy/Ventoy.git
synced 2024-12-28 08:05:58 -05:00
3f09fb9a23
1. Add preview json feature 2. Add reset button 3. Add configuration active identifier for each tab 4. Bug fix
980 lines
51 KiB
HTML
980 lines
51 KiB
HTML
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<!-- HTTP 1.1 -->
|
|
<meta http-equiv="pragma" content="no-cache">
|
|
<!-- HTTP 1.0 -->
|
|
<meta http-equiv="cache-control" content="no-cache">
|
|
<title>Ventoy Plugson</title>
|
|
<!-- 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">
|
|
<!-- Bootstrap 3.3.5 -->
|
|
<link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css">
|
|
<!-- Font Awesome -->
|
|
<link rel="stylesheet" href="static/css/font-awesome.min.css">
|
|
<!-- Ionicons -->
|
|
<link rel="stylesheet" href="static/css/ionicons.min.css">
|
|
<!-- Theme style -->
|
|
<link rel="stylesheet" href="static/AdminLTE/css/AdminLTE.min.css">
|
|
<!-- AdminLTE Skins. Choose a skin from the css/skins
|
|
folder instead of downloading all of them to reduce the load. -->
|
|
<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/css/vtoy.css">
|
|
|
|
<!-- 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:// -->
|
|
<!--[if lt IE 9]>
|
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
<![endif]-->
|
|
<style type="text/css">
|
|
* {
|
|
font-family: 'Arial','Microsoft YaHei','黑体','宋体',sans-serif;
|
|
}
|
|
.modal {
|
|
padding-top: 80px;
|
|
}
|
|
.treeview-menu a {
|
|
margin-left: 20px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body class="sidebar-mini skin-blue">
|
|
<div class="wrapper">
|
|
|
|
<header class="main-header" style="position: fixed; right: 0; left: 0;">
|
|
<!-- Logo -->
|
|
<a href="." class="logo">
|
|
<!-- logo for regular state and mobile devices -->
|
|
<span class="logo-lg" > <img src="/static/img/logo_32.png" > Ventoy Plugson</span>
|
|
</a>
|
|
<!-- Header Navbar: style can be found in header.less -->
|
|
<nav class="navbar navbar-static-top" role="navigation">
|
|
<!-- Navbar Right Menu -->
|
|
|
|
<div class="navbar-custom-menu">
|
|
<ul class="nav navbar-nav">
|
|
<li class="dropdown user user-menu">
|
|
<a href="javascript:void(0)" id="id_a_preview">
|
|
<span class="fa fa-file-code-o"></span>
|
|
<span id="id_span_preview" class="hidden-xs">Preview</span>
|
|
<span class="hidden-xs"> </span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="dropdown user user-menu">
|
|
<a href="javascript:void(0)" id="id_a_language">
|
|
<span class="fa fa-language"></span>
|
|
<span id="id_span_language" class="hidden-xs">English</span>
|
|
<span class="hidden-xs"> </span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="dropdown user user-menu">
|
|
<a id="id_top_donation" href="#plugson_donation" data-href="#plugson_donation">
|
|
<span class="fa fa-paypal"></span>
|
|
<span id="id_span_donation" class="hidden-xs">捐助</span>
|
|
</a>
|
|
</li>
|
|
|
|
<!-- User Account: style can be found in dropdown.less -->
|
|
<li class="dropdown user user-menu">
|
|
<a href="https://www.ventoy.net" target="_blank" >
|
|
<span class="fa fa-link"></span>
|
|
<span class="hidden-xs">Ventoy</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
</header>
|
|
<!-- Left side column. contains the logo and sidebar -->
|
|
<aside class="main-sidebar" style="position:fixed;">
|
|
<!-- sidebar: style can be found in sidebar.less -->
|
|
<section class="sidebar" style="height: auto;" id="plugson-menu">
|
|
<!-- 菜单 -->
|
|
<ul class="sidebar-menu">
|
|
<li>
|
|
<a href="#plugson_main" data-href="#plugson_main">
|
|
<i class="fa fa-bank"></i> <span id="id_span_menu_device">设备信息</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_control" data-href="#plugson_control">
|
|
<i class="fa fa-wrench"></i> <span id="id_span_menu_control">全局控制插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_theme" data-href="#plugson_theme">
|
|
<i class="fa fa-file-image-o"></i> <span id="id_span_menu_theme">主题插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_menu_alias" data-href="#plugson_menu_alias">
|
|
<i class="fa fa-clone"></i> <span id="id_span_menu_alias">菜单别名插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_menu_tip" data-href="#plugson_menu_tip">
|
|
<i class="fa fa-commenting"></i> <span id="id_span_menu_tip">菜单提示插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_menu_class" data-href="#plugson_menu_class">
|
|
<i class="fa fa-list-ul"></i> <span id="id_span_menu_class">菜单类型插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_auto_install" data-href="#plugson_auto_install">
|
|
<i class="fa fa-desktop"></i> <span id="id_span_menu_auto_install">自动安装插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_persistence" data-href="#plugson_persistence">
|
|
<i class="fa fa-database"></i> <span id="id_span_menu_persistence">数据持久化插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_injection" data-href="#plugson_injection">
|
|
<i class="fa fa-plus-circle"></i> <span id="id_span_menu_injection">文件注入插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_conf_replace" data-href="#plugson_conf_replace">
|
|
<i class="fa fa-retweet"></i> <span id="id_span_menu_conf_replace">启动配置替换插件</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_password" data-href="#plugson_password">
|
|
<i class="glyphicon glyphicon-lock"></i> <span id="id_span_menu_password">密码插件</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="#plugson_image_list" data-href="#plugson_image_list">
|
|
<i class="fa fa-list-alt"></i> <span id="id_span_menu_imagelist">文件列表插件</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li>
|
|
<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>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="#plugson_dud" data-href="#plugson_dud">
|
|
<i class="glyphicon glyphicon-cd"></i> <span id="id_span_menu_dud">Driver Update Disk 插件</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
<!-- /.sidebar -->
|
|
</aside>
|
|
|
|
|
|
<div class="modal" id="SetPwdModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetPwdForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetPwdForm_title"></b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
|
|
<div id="id_div_pwd_path">
|
|
<div class="form-group">
|
|
<div class="col-sm-3">
|
|
<label id="SetPwdForm_path" class="control-label"></label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="PwdPath" name="PwdPath" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_pwdfile_cn">
|
|
<div class="col-sm-3"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_pwdfile_tip1" style="color:red;"></span><br/>
|
|
<span id="id_span_pwdfile_tip2" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_pwdfile_en">
|
|
<div class="col-sm-3"></div>
|
|
<div class="col-sm-9">
|
|
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_tip2" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_pwddir_cn">
|
|
<div class="col-sm-3"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件夹在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_pwddir_tip" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_pwddir_en">
|
|
<div class="col-sm-3"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute directory path. For example: <br/>
|
|
<span id="id_span_pwddir_tip" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-3">
|
|
<label id="SetPwdForm_pwd" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="PwdPwd" name="PwdPwd" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-3">
|
|
<label id="SetPwdForm_type" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<label class="radio-inline">
|
|
<input type="radio" id="id_radio_pwd_type0" name="id_radio_pwd_type" selected="selected" data-type="0" value="0"/> <span style="font-weight:bold;">TXT</span>
|
|
</label>
|
|
<label class="radio-inline">
|
|
<input type="radio" id="id_radio_pwd_type1" name="id_radio_pwd_type" data-type="1" value="1"/> <span style="font-weight:bold;">MD5</span>
|
|
</label>
|
|
<label class="radio-inline">
|
|
<input type="radio" id="id_radio_pwd_type2" name="id_radio_pwd_type" data-type="2" value="2"/> <span style="font-weight:bold;">Salt MD5</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetPwdForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetPwdForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="modal" id="SetFileModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetFileForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetFileForm_lang_1">设置文件路径</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetFileForm_lang_2" class="control-label">文件路径</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="FilePath" name="FilePath" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_setfile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_filepath_tip1" style="color:red;"></span><br/>
|
|
<span id="id_span_filepath_tip2" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_setfile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
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_tip2" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_div_file_extra">
|
|
<div class="col-sm-2">
|
|
<label id="SetFileForm_extra" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="FileExtra" name="FileExtra" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_tip3_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_filepath_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_tip3_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute file path. For example:<br/>
|
|
<span id="id_span_filepath_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetFileForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetFileForm_lang_4" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal" id="SetFileFileModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetFileFileForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetFileFileForm_title">x</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetFileFileForm_label1" class="control-label">x</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="FileFilePath1" name="FileFilePath1" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_filefile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_filefile_tip1" style="color:red;"></span><br/>
|
|
<span id="id_span_filefile_tip2" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_filefile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
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_tip2" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetFileFileForm_label2" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="FileFilePath2" name="FileFilePath2" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_filefile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_filefile_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_filefile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute file path. For example:<br/>
|
|
<span id="id_span_filefile_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetFileFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetFileFileForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal" id="SetDirFileModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetDirFileForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetDirFileForm_title">x</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetDirFileForm_label1" class="control-label">x</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="DirFilePath1" name="DirFilePath1" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_dirfile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入对应目录在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_dirfile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute directory path. For example:<br/>
|
|
<span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetDirFileForm_label2" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="DirFilePath2" name="DirFilePath2" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_dirfile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_dirfile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute file path. For example:<br/>
|
|
<span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetDirFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetDirFileForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="modal" id="ConfReplaceModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="ConfReplaceForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b>Boot Conf Replace</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="ConfReplaceForm_lang_1" class="control-label">文件路径</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="IsoPath" name="IsoPath" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_conf_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_conf_tip1" style="color:red;"></span><br/>
|
|
<span id="id_span_conf_tip2" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_conf_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
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_tip2" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label class="control-label">org</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="OrgPath" name="OrgPath" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_conf_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
要替换的文件在 ISO 内的路径(以 / 开头),例如:
|
|
<span style="color:red;">/boot/grub/grub.cfg</span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_conf_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
The original file path inside the ISO (start with /), for example:
|
|
<span style="color:red;">/boot/grub/grub.cfg</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label class="control-label">new</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="NewPath" name="NewPath" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_conf_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
新文件在当前系统中的全路径(注意是完整的绝对路径)例如:<br/>
|
|
<span id="id_span_conf_tip3" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_conf_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute file path. For example:<br/>
|
|
<span id="id_span_conf_tip3" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="ConfReplaceForm_lang_2" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="ConfReplaceForm_lang_3" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal" id="SetDirModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetDirForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetDirForm_lang_1">设置文件夹路径</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetDirForm_lang_2" class="control-label">文件夹路径</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="DirPath" name="DirPath" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_setfile_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入文件夹在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_dirpath_tip" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_setfile_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute directory path. For example: <br/>
|
|
<span id="id_span_dirpath_tip" style="color:red;"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_div_dir_extra">
|
|
<div class="col-sm-2">
|
|
<label id="SetDirForm_extra" class="control-label">xx</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="DirExtra" name="DirExtra" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" id="id_note_tip3_cn">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
|
|
<span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" id="id_note_tip3_en">
|
|
<div class="col-sm-2"></div>
|
|
<div class="col-sm-9">
|
|
Please input the full absolute file path. For example:<br/>
|
|
<span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetDirForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetDirForm_lang_4" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal" id="SetKeyModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="SetKeyForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="SetKeyForm_lang_1">xx</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetKeyForm_lang_2" class="control-label">关键字</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="SetKeyKey" name="SetKeyKey" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-2">
|
|
<label id="SetKeyForm_lang_3" class="control-label">菜单类型</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<input type="text" class="form-control" id="SetKeyValue" name="SetKeyValue" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="SetKeyForm_lang_4" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="SetKeyForm_lang_5" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal" id="TypeSelectModal">
|
|
<div class="modal-dialog" style="width: 800px;">
|
|
<div class="modal-content">
|
|
<form id="TypeSelectForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4><b id="TypeSelForm_lang_1">请选择</b> </h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="col-sm-1"></div>
|
|
<div class="col-sm-10">
|
|
<table id="id_type_select_table" class="table" rules=none>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="col-sm-1"></div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="TypeSelForm_lang_2" type="submit" class="btn btn-primary btn-flat">确定</button>
|
|
<button id="TypeSelForm_lang_3" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal" id="JsonPreviewModal">
|
|
<div class="modal-dialog" style="width: 80%;">
|
|
<div class="modal-content">
|
|
<form id="JsonPeviewForm" class="form-horizontal">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h4>
|
|
<b id="JsonPreviewForm_lang_1">JSON</b>
|
|
<button type="button" id="id_btn_json_copy" class="btn btn-primary"><span class="fa fa-copy"> </span><span id="id_span_copy">Copy</span></button>
|
|
</h4>
|
|
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button id="PrewForm_lang_2" type="button" class="btn btn-primary btn-flat" data-dismiss="modal">确定</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Content Wrapper. Contains page content -->
|
|
<div class="content-wrapper clearfix" style="min-height: 385px; margin-top: 50px;">
|
|
<!-- Main content -->
|
|
<section class="content" id="plugson-content">
|
|
</section>
|
|
<!-- /.content -->
|
|
</div>
|
|
<!-- /.content-wrapper -->
|
|
|
|
<footer class="main-footer">
|
|
<div class="pull-right hidden-xs">
|
|
<b id="plugson_build_date">20221021 14:42:35</b>
|
|
</div>
|
|
<strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
|
|
</footer>
|
|
|
|
<!-- Control Sidebar -->
|
|
<!-- /.control-sidebar -->
|
|
<!-- Add the sidebar's background. This div must be placed
|
|
immediately after the control sidebar -->
|
|
<div class="control-sidebar-bg" style="position: fixed; height: auto;"></div>
|
|
|
|
</div>
|
|
<!-- ./wrapper -->
|
|
|
|
|
|
|
|
<!-- jQuery 2.1.4 -->
|
|
<script src="/static/js/jQuery-2.1.4.min.js"></script>
|
|
<!-- jquery validate -->
|
|
<script src="/static/js/jquery.validate.min.js"></script>
|
|
<script src="/static/js/jquery.validate.vtoymethods.js?v=100"></script>
|
|
|
|
<script src="/static/js/jquery.vtoy.alert.js?v=100"></script>
|
|
<script src="/static/js/vtoy.js?v=100"></script>
|
|
<script src="/static/js/md5.min.js"></script>
|
|
|
|
<!-- Bootstrap 3.3.5 -->
|
|
<script src="/static/bootstrap/js/bootstrap.min.js"></script>
|
|
<!-- AdminLTE App -->
|
|
<script src="/static/AdminLTE/js/app.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/dataTables.bootstrap.min.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
function VtoyJsonCopyClick() {
|
|
var copyText = document.getElementById("pre_json_preview");
|
|
copyText.select();
|
|
copyText.setSelectionRange(0, 99999); // For mobile devices
|
|
|
|
try {
|
|
var successful = document.execCommand('copy');
|
|
copyText.setSelectionRange(0, 0);
|
|
if (successful) {
|
|
Message.success(g_vtoy_cur_language.STR_JSON_COPY_SUCCESS);
|
|
} else {
|
|
Message.error(g_vtoy_cur_language.STR_JSON_COPY_FAILED);
|
|
}
|
|
} catch (err) {
|
|
Message.error(g_vtoy_cur_language.STR_JSON_COPY_FAILED);
|
|
}
|
|
}
|
|
|
|
function VtoyPreviewClick() {
|
|
callVtoySync({
|
|
method : 'preview_json'
|
|
}, function(data) {
|
|
$('#JsonPeviewForm #JsonPreviewForm_lang_1').text(g_vtoy_cur_language.STR_JSON_PREVIEW);
|
|
$('#JsonPeviewForm #PrewForm_lang_2').text(g_vtoy_cur_language.STR_BTN_OK);
|
|
|
|
$('#pre_json_preview').text(atob(data.json));
|
|
$("#JsonPreviewModal").modal();
|
|
});
|
|
}
|
|
|
|
function VtoyLanguageClick() {
|
|
var defaultPage = window.location.hash;
|
|
|
|
if (g_current_language === 'cn') {
|
|
g_current_language = 'en';
|
|
} else {
|
|
g_current_language = 'cn';
|
|
}
|
|
|
|
if (typeof(VtoyPageLanguageChange)==='function') {
|
|
VtoyPageLanguageChange(g_current_language);
|
|
}
|
|
}
|
|
|
|
|
|
//Main process
|
|
var m_syntax_error;
|
|
var m_invalid_config;
|
|
callVtoySync({
|
|
method : 'sysinfo'
|
|
}, function(data) {
|
|
g_current_language = data.language;
|
|
g_current_dir = data.curdir;
|
|
g_current_os = data.os;
|
|
m_syntax_error = data.syntax_error;
|
|
m_invalid_config = data.invalid_config;
|
|
|
|
|
|
|
|
});
|
|
|
|
$('#id_btn_json_copy').click(VtoyJsonCopyClick);
|
|
$('#id_a_preview').click(VtoyPreviewClick);
|
|
$('#id_a_language').click(VtoyLanguageClick);
|
|
|
|
$("#plugson-menu a").click(function() {
|
|
var href = $(this).data("href");
|
|
if (href && href !== '#') {
|
|
loadContent(href.substring(1));
|
|
}
|
|
});
|
|
|
|
$('#id_top_donation').click(function() {
|
|
var href = $(this).data("href");
|
|
if (href && href !== '#') {
|
|
loadContent(href.substring(1));
|
|
}
|
|
});
|
|
|
|
(function openDefaultPage() {
|
|
var defaultPage = window.location.hash;
|
|
if (defaultPage) {
|
|
defaultPage = defaultPage.substring(1, defaultPage.length);
|
|
}
|
|
defaultPage = defaultPage || 'plugson_main';
|
|
loadContent(defaultPage);
|
|
})();
|
|
|
|
|
|
(function ventoy_handshake() {
|
|
callVtoyCatchErr({
|
|
method : 'handshake'
|
|
},
|
|
function(data) {
|
|
|
|
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 msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_SYNTAX_ERROR_TIP : g_vtoy_cur_language_cn.STR_SYNTAX_ERROR_TIP;
|
|
Modal.alert({title:title,msg:msg}).on(function(e) {
|
|
});
|
|
m_syntax_error = 0;
|
|
}
|
|
|
|
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 msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INVALID_CONFIG_TIP : g_vtoy_cur_language_cn.STR_INVALID_CONFIG_TIP;
|
|
Modal.alert({title:title,msg:msg}).on(function(e) {
|
|
});
|
|
m_invalid_config = 0;
|
|
}
|
|
|
|
if (data.save_error === 1) {
|
|
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_CONFIG_SAVE_ERROR_TIP : g_vtoy_cur_language_cn.STR_CONFIG_SAVE_ERROR_TIP;
|
|
Modal.alert({title:title,msg:msg}).on(function(e) {
|
|
});
|
|
}
|
|
|
|
if (typeof(UpdateTabTitleIcon)==='function') {
|
|
UpdateTabTitleIcon(data);
|
|
}
|
|
|
|
setTimeout(function() {
|
|
ventoy_handshake();
|
|
}, 200);
|
|
},
|
|
|
|
function(xmlHttpRequest, textStatus, errorThrown) {
|
|
if (undefined === errorThrown)
|
|
{
|
|
Message.error(g_vtoy_cur_language.STR_WEB_REMOTE_ABNORMAL);
|
|
}
|
|
else if(undefined === errorThrown.length)
|
|
{
|
|
|
|
}
|
|
else if('' == errorThrown.trim())
|
|
{
|
|
}
|
|
else
|
|
{
|
|
switch(errorThrown)
|
|
{
|
|
case 'timeout':
|
|
{
|
|
Message.error(g_vtoy_cur_language.STR_WEB_REQUEST_TIMEOUT);
|
|
break;
|
|
}
|
|
case 'Service Unavailable':
|
|
{
|
|
Message.error(g_vtoy_cur_language.STR_WEB_SERVICE_UNAVAILABLE);
|
|
break;
|
|
}
|
|
case 'abort':
|
|
{
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
Message.error(g_vtoy_cur_language.STR_WEB_COMMUNICATION_ERR + errorThrown);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
Modal.confirm({msg:g_vtoy_cur_language.STR_CLOSE_TIP}).on(function(e) {
|
|
if(navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1){
|
|
window.location.href = "about:blank";
|
|
window.close();
|
|
}else{
|
|
window.opener = null;
|
|
window.open("", "_self");
|
|
window.close();
|
|
}
|
|
});
|
|
});
|
|
})();
|
|
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|