]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - Plugson/www/index.html
Fix that bootpwd not working for VentoyPlugson. (#2584)
[Ventoy.git] / Plugson / www / index.html
1 <html>
2 <head>
3 <meta charset="utf-8">
4 <meta http-equiv="X-UA-Compatible" content="IE=edge">
5 <!-- HTTP 1.1 -->
6 <meta http-equiv="pragma" content="no-cache">
7 <!-- HTTP 1.0 -->
8 <meta http-equiv="cache-control" content="no-cache">
9 <title>Ventoy Plugson</title>
10 <!-- Tell the browser to be responsive to screen width -->
11 <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
12 <!-- Bootstrap 3.3.5 -->
13 <link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css">
14 <!-- Font Awesome -->
15 <link rel="stylesheet" href="static/css/font-awesome.min.css">
16 <!-- Ionicons -->
17 <link rel="stylesheet" href="static/css/ionicons.min.css">
18 <!-- Theme style -->
19 <link rel="stylesheet" href="static/AdminLTE/css/AdminLTE.min.css">
20 <!-- AdminLTE Skins. Choose a skin from the css/skins
21 folder instead of downloading all of them to reduce the load. -->
22 <link rel="stylesheet" href="static/AdminLTE/css/skins/skin-blue.min.css">
23 <link rel="stylesheet" href="static/datatables/dataTables.bootstrap.css">
24 <link rel="stylesheet" href="static/css/vtoy.css">
25
26 <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
27 <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
28 <!--[if lt IE 9]>
29 <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
30 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
31 <![endif]-->
32 <style type="text/css">
33 * {
34 font-family: 'Arial','Microsoft YaHei','黑体','宋体',sans-serif;
35 }
36 .modal {
37 padding-top: 80px;
38 }
39 .treeview-menu a {
40 margin-left: 20px;
41 }
42 </style>
43 </head>
44
45 <body class="sidebar-mini skin-blue">
46 <div class="wrapper">
47
48 <header class="main-header" style="position: fixed; right: 0; left: 0;">
49 <!-- Logo -->
50 <a href="." class="logo">
51 <!-- logo for regular state and mobile devices -->
52 <span class="logo-lg" > <img src="/static/img/logo_32.png" > &nbsp;Ventoy Plugson</span>
53 </a>
54 <!-- Header Navbar: style can be found in header.less -->
55 <nav class="navbar navbar-static-top" role="navigation">
56 <!-- Navbar Right Menu -->
57
58 <div class="navbar-custom-menu">
59 <ul class="nav navbar-nav">
60 <li class="dropdown user user-menu">
61 <a href="javascript:void(0)" id="id_a_preview">
62 <span class="fa fa-file-code-o"></span>&nbsp;&nbsp;
63 <span id="id_span_preview" class="hidden-xs">Preview</span>
64 <span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span>
65 </a>
66 </li>
67
68 <li class="dropdown user user-menu">
69 <a href="javascript:void(0)" id="id_a_language">
70 <span class="fa fa-language"></span>&nbsp;&nbsp;
71 <span id="id_span_language" class="hidden-xs">English</span>
72 <span class="hidden-xs">&nbsp;&nbsp;&nbsp;</span>
73 </a>
74 </li>
75
76 <li class="dropdown user user-menu">
77 <a id="id_top_donation" href="#plugson_donation" data-href="#plugson_donation">
78 <span class="fa fa-paypal"></span>&nbsp;
79 <span id="id_span_donation" class="hidden-xs">捐助</span>
80 </a>
81 </li>
82
83 <!-- User Account: style can be found in dropdown.less -->
84 <li class="dropdown user user-menu">
85 <a href="https://www.ventoy.net" target="_blank" >
86 <span class="fa fa-link"></span>&nbsp;
87 <span class="hidden-xs">Ventoy</span>
88 </a>
89 </li>
90 </ul>
91 </div>
92
93
94 </nav>
95 </header>
96 <!-- Left side column. contains the logo and sidebar -->
97 <aside class="main-sidebar" style="position:fixed;">
98 <!-- sidebar: style can be found in sidebar.less -->
99 <section class="sidebar" style="height: auto;" id="plugson-menu">
100 <!-- 菜单 -->
101 <ul class="sidebar-menu">
102 <li>
103 <a href="#plugson_main" data-href="#plugson_main">
104 <i class="fa fa-bank"></i> <span id="id_span_menu_device">设备信息</span>
105 </a>
106 </li>
107 <li>
108 <a href="#plugson_control" data-href="#plugson_control">
109 <i class="fa fa-wrench"></i> <span id="id_span_menu_control">全局控制插件</span>
110 </a>
111 </li>
112 <li>
113 <a href="#plugson_theme" data-href="#plugson_theme">
114 <i class="fa fa-file-image-o"></i> <span id="id_span_menu_theme">主题插件</span>
115 </a>
116 </li>
117 <li>
118 <a href="#plugson_menu_alias" data-href="#plugson_menu_alias">
119 <i class="fa fa-clone"></i> <span id="id_span_menu_alias">菜单别名插件</span>
120 </a>
121 </li>
122 <li>
123 <a href="#plugson_menu_tip" data-href="#plugson_menu_tip">
124 <i class="fa fa-commenting"></i> <span id="id_span_menu_tip">菜单提示插件</span>
125 </a>
126 </li>
127 <li>
128 <a href="#plugson_menu_class" data-href="#plugson_menu_class">
129 <i class="fa fa-list-ul"></i> <span id="id_span_menu_class">菜单类型插件</span>
130 </a>
131 </li>
132 <li>
133 <a href="#plugson_auto_install" data-href="#plugson_auto_install">
134 <i class="fa fa-desktop"></i> <span id="id_span_menu_auto_install">自动安装插件</span>
135 </a>
136 </li>
137 <li>
138 <a href="#plugson_persistence" data-href="#plugson_persistence">
139 <i class="fa fa-database"></i> <span id="id_span_menu_persistence">数据持久化插件</span>
140 </a>
141 </li>
142 <li>
143 <a href="#plugson_injection" data-href="#plugson_injection">
144 <i class="fa fa-plus-circle"></i> <span id="id_span_menu_injection">文件注入插件</span>
145 </a>
146 </li>
147 <li>
148 <a href="#plugson_conf_replace" data-href="#plugson_conf_replace">
149 <i class="fa fa-retweet"></i> <span id="id_span_menu_conf_replace">启动配置替换插件</span>
150 </a>
151 </li>
152 <li>
153 <a href="#plugson_password" data-href="#plugson_password">
154 <i class="glyphicon glyphicon-lock"></i> <span id="id_span_menu_password">密码插件</span>
155 </a>
156 </li>
157
158 <li>
159 <a href="#plugson_image_list" data-href="#plugson_image_list">
160 <i class="fa fa-list-alt"></i> <span id="id_span_menu_imagelist">文件列表插件</span>
161 </a>
162 </li>
163
164 <li>
165 <a href="#plugson_auto_memdisk" data-href="#plugson_auto_memdisk">
166 <i class="fa fa-floppy-o"></i> <span id="id_span_menu_auto_memdisk">自动 Memdisk 插件</span>
167 </a>
168 </li>
169 <li>
170 <a href="#plugson_dud" data-href="#plugson_dud">
171 <i class="glyphicon glyphicon-cd"></i> <span id="id_span_menu_dud">Driver Update Disk 插件</span>
172 </a>
173 </li>
174 </ul>
175 </section>
176 <!-- /.sidebar -->
177 </aside>
178
179
180 <div class="modal" id="SetPwdModal">
181 <div class="modal-dialog" style="width: 800px;">
182 <div class="modal-content">
183 <form id="SetPwdForm" class="form-horizontal">
184 <div class="modal-header">
185 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
186 <span aria-hidden="true">&times;</span>
187 </button>
188 <h4><b id="SetPwdForm_title"></b> </h4>
189 </div>
190 <div class="modal-body">
191
192 <div id="id_div_pwd_path">
193 <div class="form-group">
194 <div class="col-sm-3">
195 <label id="SetPwdForm_path" class="control-label"></label>
196 </div>
197 <div class="col-sm-9">
198 <input type="text" class="form-control" id="PwdPath" name="PwdPath" />
199 </div>
200 </div>
201
202 <div class="form-group" id="id_note_pwdfile_cn">
203 <div class="col-sm-3"></div>
204 <div class="col-sm-9">
205 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
206 <span id="id_span_pwdfile_tip1" style="color:red;"></span><br/>
207 <span id="id_span_pwdfile_tip2" style="color:red;"></span>
208 </div>
209 </div>
210 <div class="form-group" id="id_note_pwdfile_en">
211 <div class="col-sm-3"></div>
212 <div class="col-sm-9">
213 Please input the full absolute file path. For example:<br/>
214 <span id="id_span_pwdfile_tip1" style="color:red;"></span><br/>
215 <span id="id_span_pwdfile_tip2" style="color:red;"></span><br/>
216 </div>
217 </div>
218 <div class="form-group" id="id_note_pwddir_cn">
219 <div class="col-sm-3"></div>
220 <div class="col-sm-9">
221 请输入文件夹在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
222 <span id="id_span_pwddir_tip" style="color:red;"></span>
223 </div>
224 </div>
225 <div class="form-group" id="id_note_pwddir_en">
226 <div class="col-sm-3"></div>
227 <div class="col-sm-9">
228 Please input the full absolute directory path. For example: <br/>
229 <span id="id_span_pwddir_tip" style="color:red;"></span>
230 </div>
231 </div>
232 </div>
233 <div class="form-group">
234 <div class="col-sm-3">
235 <label id="SetPwdForm_pwd" class="control-label">xx</label>
236 </div>
237 <div class="col-sm-9">
238 <input type="text" class="form-control" id="PwdPwd" name="PwdPwd" />
239 </div>
240 </div>
241
242 <div class="form-group">
243 <div class="col-sm-3">
244 <label id="SetPwdForm_type" class="control-label">xx</label>
245 </div>
246 <div class="col-sm-9">
247 <label class="radio-inline">
248 <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>
249 </label>
250 <label class="radio-inline">
251 <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>
252 </label>
253 <label class="radio-inline">
254 <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>
255 </label>
256 </div>
257 </div>
258 </div>
259 <div class="modal-footer">
260 <button id="SetPwdForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
261 <button id="SetPwdForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
262 </div>
263 </form>
264 </div>
265 </div>
266 </div>
267
268
269
270 <div class="modal" id="SetFileModal">
271 <div class="modal-dialog" style="width: 800px;">
272 <div class="modal-content">
273 <form id="SetFileForm" class="form-horizontal">
274 <div class="modal-header">
275 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
276 <span aria-hidden="true">&times;</span>
277 </button>
278 <h4><b id="SetFileForm_lang_1">设置文件路径</b> </h4>
279 </div>
280 <div class="modal-body">
281 <div class="form-group">
282 <div class="col-sm-2">
283 <label id="SetFileForm_lang_2" class="control-label">文件路径</label>
284 </div>
285 <div class="col-sm-9">
286 <input type="text" class="form-control" id="FilePath" name="FilePath" />
287 </div>
288 </div>
289
290 <div class="form-group" id="id_note_setfile_cn">
291 <div class="col-sm-2"></div>
292 <div class="col-sm-9">
293 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
294 <span id="id_span_filepath_tip1" style="color:red;"></span><br/>
295 <span id="id_span_filepath_tip2" style="color:red;"></span>
296 </div>
297 </div>
298
299 <div class="form-group" id="id_note_setfile_en">
300 <div class="col-sm-2"></div>
301 <div class="col-sm-9">
302 Please input the full absolute file path. For example:<br/>
303 <span id="id_span_filepath_tip1" style="color:red;"></span><br/>
304 <span id="id_span_filepath_tip2" style="color:red;"></span><br/>
305 </div>
306 </div>
307
308 <div class="form-group" id="id_div_file_extra">
309 <div class="col-sm-2">
310 <label id="SetFileForm_extra" class="control-label">xx</label>
311 </div>
312 <div class="col-sm-9">
313 <input type="text" class="form-control" id="FileExtra" name="FileExtra" />
314 </div>
315 </div>
316
317 <div class="form-group" id="id_note_tip3_cn">
318 <div class="col-sm-2"></div>
319 <div class="col-sm-9">
320 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
321 <span id="id_span_filepath_tip3" style="color:red;"></span><br/>
322 </div>
323 </div>
324 <div class="form-group" id="id_note_tip3_en">
325 <div class="col-sm-2"></div>
326 <div class="col-sm-9">
327 Please input the full absolute file path. For example:<br/>
328 <span id="id_span_filepath_tip3" style="color:red;"></span><br/>
329 </div>
330 </div>
331
332 </div>
333 <div class="modal-footer">
334 <button id="SetFileForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button>
335 <button id="SetFileForm_lang_4" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
336 </div>
337 </form>
338 </div>
339 </div>
340 </div>
341
342
343 <div class="modal" id="SetFileFileModal">
344 <div class="modal-dialog" style="width: 800px;">
345 <div class="modal-content">
346 <form id="SetFileFileForm" class="form-horizontal">
347 <div class="modal-header">
348 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
349 <span aria-hidden="true">&times;</span>
350 </button>
351 <h4><b id="SetFileFileForm_title">x</b> </h4>
352 </div>
353 <div class="modal-body">
354 <div class="form-group">
355 <div class="col-sm-2">
356 <label id="SetFileFileForm_label1" class="control-label">x</label>
357 </div>
358 <div class="col-sm-9">
359 <input type="text" class="form-control" id="FileFilePath1" name="FileFilePath1" />
360 </div>
361 </div>
362
363 <div class="form-group" id="id_note_filefile_cn">
364 <div class="col-sm-2"></div>
365 <div class="col-sm-9">
366 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
367 <span id="id_span_filefile_tip1" style="color:red;"></span><br/>
368 <span id="id_span_filefile_tip2" style="color:red;"></span>
369 </div>
370 </div>
371
372 <div class="form-group" id="id_note_filefile_en">
373 <div class="col-sm-2"></div>
374 <div class="col-sm-9">
375 Please input the full absolute file path. For example:<br/>
376 <span id="id_span_filefile_tip1" style="color:red;"></span><br/>
377 <span id="id_span_filefile_tip2" style="color:red;"></span><br/>
378 </div>
379 </div>
380
381 <div class="form-group">
382 <div class="col-sm-2">
383 <label id="SetFileFileForm_label2" class="control-label">xx</label>
384 </div>
385 <div class="col-sm-9">
386 <input type="text" class="form-control" id="FileFilePath2" name="FileFilePath2" />
387 </div>
388 </div>
389
390 <div class="form-group" id="id_note_filefile_cn">
391 <div class="col-sm-2"></div>
392 <div class="col-sm-9">
393 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
394 <span id="id_span_filefile_tip3" style="color:red;"></span><br/>
395 </div>
396 </div>
397 <div class="form-group" id="id_note_filefile_en">
398 <div class="col-sm-2"></div>
399 <div class="col-sm-9">
400 Please input the full absolute file path. For example:<br/>
401 <span id="id_span_filefile_tip3" style="color:red;"></span><br/>
402 </div>
403 </div>
404
405 </div>
406 <div class="modal-footer">
407 <button id="SetFileFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
408 <button id="SetFileFileForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
409 </div>
410 </form>
411 </div>
412 </div>
413 </div>
414
415
416 <div class="modal" id="SetDirFileModal">
417 <div class="modal-dialog" style="width: 800px;">
418 <div class="modal-content">
419 <form id="SetDirFileForm" class="form-horizontal">
420 <div class="modal-header">
421 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
422 <span aria-hidden="true">&times;</span>
423 </button>
424 <h4><b id="SetDirFileForm_title">x</b> </h4>
425 </div>
426 <div class="modal-body">
427 <div class="form-group">
428 <div class="col-sm-2">
429 <label id="SetDirFileForm_label1" class="control-label">x</label>
430 </div>
431 <div class="col-sm-9">
432 <input type="text" class="form-control" id="DirFilePath1" name="DirFilePath1" />
433 </div>
434 </div>
435
436 <div class="form-group" id="id_note_dirfile_cn">
437 <div class="col-sm-2"></div>
438 <div class="col-sm-9">
439 请输入对应目录在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
440 <span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
441 </div>
442 </div>
443
444 <div class="form-group" id="id_note_dirfile_en">
445 <div class="col-sm-2"></div>
446 <div class="col-sm-9">
447 Please input the full absolute directory path. For example:<br/>
448 <span id="id_span_dirfile_tip1" style="color:red;"></span><br/>
449 </div>
450 </div>
451
452 <div class="form-group">
453 <div class="col-sm-2">
454 <label id="SetDirFileForm_label2" class="control-label">xx</label>
455 </div>
456 <div class="col-sm-9">
457 <input type="text" class="form-control" id="DirFilePath2" name="DirFilePath2" />
458 </div>
459 </div>
460
461 <div class="form-group" id="id_note_dirfile_cn">
462 <div class="col-sm-2"></div>
463 <div class="col-sm-9">
464 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
465 <span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
466 </div>
467 </div>
468 <div class="form-group" id="id_note_dirfile_en">
469 <div class="col-sm-2"></div>
470 <div class="col-sm-9">
471 Please input the full absolute file path. For example:<br/>
472 <span id="id_span_dirfile_tip2" style="color:red;"></span><br/>
473 </div>
474 </div>
475
476 </div>
477 <div class="modal-footer">
478 <button id="SetDirFileForm_ok" type="submit" class="btn btn-primary btn-flat">确定</button>
479 <button id="SetDirFileForm_cancel" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
480 </div>
481 </form>
482 </div>
483 </div>
484 </div>
485
486
487
488 <div class="modal" id="ConfReplaceModal">
489 <div class="modal-dialog" style="width: 800px;">
490 <div class="modal-content">
491 <form id="ConfReplaceForm" class="form-horizontal">
492 <div class="modal-header">
493 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
494 <span aria-hidden="true">&times;</span>
495 </button>
496 <h4><b>Boot Conf Replace</b> </h4>
497 </div>
498 <div class="modal-body">
499 <div class="form-group">
500 <div class="col-sm-2">
501 <label id="ConfReplaceForm_lang_1" class="control-label">文件路径</label>
502 </div>
503 <div class="col-sm-9">
504 <input type="text" class="form-control" id="IsoPath" name="IsoPath" />
505 </div>
506 </div>
507
508 <div class="form-group" id="id_note_conf_cn">
509 <div class="col-sm-2"></div>
510 <div class="col-sm-9">
511 请输入文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
512 <span id="id_span_conf_tip1" style="color:red;"></span><br/>
513 <span id="id_span_conf_tip2" style="color:red;"></span>
514 </div>
515 </div>
516
517 <div class="form-group" id="id_note_conf_en">
518 <div class="col-sm-2"></div>
519 <div class="col-sm-9">
520 Please input the full absolute file path. For example:<br/>
521 <span id="id_span_conf_tip1" style="color:red;"></span><br/>
522 <span id="id_span_conf_tip2" style="color:red;"></span>
523 </div>
524 </div>
525
526 <div class="form-group">
527 <div class="col-sm-2">
528 <label class="control-label">org</label>
529 </div>
530 <div class="col-sm-9">
531 <input type="text" class="form-control" id="OrgPath" name="OrgPath" />
532 </div>
533 </div>
534 <div class="form-group" id="id_note_conf_cn">
535 <div class="col-sm-2"></div>
536 <div class="col-sm-9">
537 要替换的文件在 ISO 内的路径(以 / 开头),例如:
538 <span style="color:red;">/boot/grub/grub.cfg</span>
539 </div>
540 </div>
541 <div class="form-group" id="id_note_conf_en">
542 <div class="col-sm-2"></div>
543 <div class="col-sm-9">
544 The original file path inside the ISO (start with /), for example:
545 <span style="color:red;">/boot/grub/grub.cfg</span>
546 </div>
547 </div>
548
549 <div class="form-group">
550 <div class="col-sm-2">
551 <label class="control-label">new</label>
552 </div>
553 <div class="col-sm-9">
554 <input type="text" class="form-control" id="NewPath" name="NewPath" />
555 </div>
556 </div>
557 <div class="form-group" id="id_note_conf_cn">
558 <div class="col-sm-2"></div>
559 <div class="col-sm-9">
560 新文件在当前系统中的全路径(注意是完整的绝对路径)例如:<br/>
561 <span id="id_span_conf_tip3" style="color:red;"></span>
562 </div>
563 </div>
564 <div class="form-group" id="id_note_conf_en">
565 <div class="col-sm-2"></div>
566 <div class="col-sm-9">
567 Please input the full absolute file path. For example:<br/>
568 <span id="id_span_conf_tip3" style="color:red;"></span>
569 </div>
570 </div>
571
572 </div>
573 <div class="modal-footer">
574 <button id="ConfReplaceForm_lang_2" type="submit" class="btn btn-primary btn-flat">确定</button>
575 <button id="ConfReplaceForm_lang_3" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
576 </div>
577 </form>
578 </div>
579 </div>
580 </div>
581
582
583 <div class="modal" id="SetDirModal">
584 <div class="modal-dialog" style="width: 800px;">
585 <div class="modal-content">
586 <form id="SetDirForm" class="form-horizontal">
587 <div class="modal-header">
588 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
589 <span aria-hidden="true">&times;</span>
590 </button>
591 <h4><b id="SetDirForm_lang_1">设置文件夹路径</b> </h4>
592 </div>
593 <div class="modal-body">
594 <div class="form-group">
595 <div class="col-sm-2">
596 <label id="SetDirForm_lang_2" class="control-label">文件夹路径</label>
597 </div>
598 <div class="col-sm-9">
599 <input type="text" class="form-control" id="DirPath" name="DirPath" />
600 </div>
601 </div>
602
603 <div class="form-group" id="id_note_setfile_cn">
604 <div class="col-sm-2"></div>
605 <div class="col-sm-9">
606 请输入文件夹在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
607 <span id="id_span_dirpath_tip" style="color:red;"></span>
608 </div>
609 </div>
610
611 <div class="form-group" id="id_note_setfile_en">
612 <div class="col-sm-2"></div>
613 <div class="col-sm-9">
614 Please input the full absolute directory path. For example: <br/>
615 <span id="id_span_dirpath_tip" style="color:red;"></span>
616 </div>
617 </div>
618
619 <div class="form-group" id="id_div_dir_extra">
620 <div class="col-sm-2">
621 <label id="SetDirForm_extra" class="control-label">xx</label>
622 </div>
623 <div class="col-sm-9">
624 <input type="text" class="form-control" id="DirExtra" name="DirExtra" />
625 </div>
626 </div>
627
628 <div class="form-group" id="id_note_tip3_cn">
629 <div class="col-sm-2"></div>
630 <div class="col-sm-9">
631 请输入对应文件在当前系统中的全路径(注意是完整的绝对路径),例如:<br/>
632 <span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
633 </div>
634 </div>
635 <div class="form-group" id="id_note_tip3_en">
636 <div class="col-sm-2"></div>
637 <div class="col-sm-9">
638 Please input the full absolute file path. For example:<br/>
639 <span id="id_span_dirpath_tip3" style="color:red;"></span><br/>
640 </div>
641 </div>
642
643 </div>
644 <div class="modal-footer">
645 <button id="SetDirForm_lang_3" type="submit" class="btn btn-primary btn-flat">确定</button>
646 <button id="SetDirForm_lang_4" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
647 </div>
648 </form>
649 </div>
650 </div>
651 </div>
652
653
654 <div class="modal" id="SetKeyModal">
655 <div class="modal-dialog" style="width: 800px;">
656 <div class="modal-content">
657 <form id="SetKeyForm" class="form-horizontal">
658 <div class="modal-header">
659 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
660 <span aria-hidden="true">&times;</span>
661 </button>
662 <h4><b id="SetKeyForm_lang_1">xx</b> </h4>
663 </div>
664 <div class="modal-body">
665 <div class="form-group">
666 <div class="col-sm-2">
667 <label id="SetKeyForm_lang_2" class="control-label">关键字</label>
668 </div>
669 <div class="col-sm-9">
670 <input type="text" class="form-control" id="SetKeyKey" name="SetKeyKey" />
671 </div>
672 </div>
673 <div class="form-group">
674 <div class="col-sm-2">
675 <label id="SetKeyForm_lang_3" class="control-label">菜单类型</label>
676 </div>
677 <div class="col-sm-9">
678 <input type="text" class="form-control" id="SetKeyValue" name="SetKeyValue" />
679 </div>
680 </div>
681 </div>
682 <div class="modal-footer">
683 <button id="SetKeyForm_lang_4" type="submit" class="btn btn-primary btn-flat">确定</button>
684 <button id="SetKeyForm_lang_5" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
685 </div>
686 </form>
687 </div>
688 </div>
689 </div>
690
691 <div class="modal" id="TypeSelectModal">
692 <div class="modal-dialog" style="width: 800px;">
693 <div class="modal-content">
694 <form id="TypeSelectForm" class="form-horizontal">
695 <div class="modal-header">
696 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
697 <span aria-hidden="true">&times;</span>
698 </button>
699 <h4><b id="TypeSelForm_lang_1">请选择</b> </h4>
700 </div>
701 <div class="modal-body">
702 <div class="form-group">
703 <div class="col-sm-1"></div>
704 <div class="col-sm-10">
705 <table id="id_type_select_table" class="table" rules=none>
706 <tbody>
707 </tbody>
708 </table>
709 </div>
710 <div class="col-sm-1"></div>
711 </div>
712 </div>
713 <div class="modal-footer">
714 <button id="TypeSelForm_lang_2" type="submit" class="btn btn-primary btn-flat">确定</button>
715 <button id="TypeSelForm_lang_3" type="button" class="btn btn-default btn-flat" data-dismiss="modal">取消</button>
716 </div>
717 </form>
718 </div>
719 </div>
720 </div>
721
722
723 <div class="modal" id="JsonPreviewModal">
724 <div class="modal-dialog" style="width: 80%;">
725 <div class="modal-content">
726 <form id="JsonPeviewForm" class="form-horizontal">
727 <div class="modal-header">
728 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
729 <span aria-hidden="true">&times;</span>
730 </button>
731 <h4>
732 <b id="JsonPreviewForm_lang_1">JSON</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
733 <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>
734 </h4>
735
736 </div>
737 <div class="modal-body">
738 <textarea id="pre_json_preview" class="form-control" rows="30" style="font-family:Menlo,Monaco,Consolas,'Courier New',monospace" spellcheck="false"></textarea>
739 </div>
740 <div class="modal-footer">
741 <button id="PrewForm_lang_2" type="button" class="btn btn-primary btn-flat" data-dismiss="modal">确定</button>
742 </div>
743 </form>
744 </div>
745 </div>
746 </div>
747
748
749 <!-- Content Wrapper. Contains page content -->
750 <div class="content-wrapper clearfix" style="min-height: 385px; margin-top: 50px;">
751 <!-- Main content -->
752 <section class="content" id="plugson-content">
753 </section>
754 <!-- /.content -->
755 </div>
756 <!-- /.content-wrapper -->
757
758 <footer class="main-footer">
759 <div class="pull-right hidden-xs">
760 <b id="plugson_build_date">20231003 23:36:44</b>
761 </div>
762 <strong><a href="https://www.ventoy.net" target="_blank">https://www.ventoy.net</a></strong>
763 </footer>
764
765 <!-- Control Sidebar -->
766 <!-- /.control-sidebar -->
767 <!-- Add the sidebar's background. This div must be placed
768 immediately after the control sidebar -->
769 <div class="control-sidebar-bg" style="position: fixed; height: auto;"></div>
770
771 </div>
772 <!-- ./wrapper -->
773
774
775
776 <!-- jQuery 2.1.4 -->
777 <script src="/static/js/jQuery-2.1.4.min.js"></script>
778 <!-- jquery validate -->
779 <script src="/static/js/jquery.validate.min.js"></script>
780 <script src="/static/js/jquery.validate.vtoymethods.js?v=189"></script>
781
782 <script src="/static/js/jquery.vtoy.alert.js?v=189"></script>
783 <script src="/static/js/vtoy.js?v=189"></script>
784 <script src="/static/js/md5.min.js"></script>
785
786 <!-- Bootstrap 3.3.5 -->
787 <script src="/static/bootstrap/js/bootstrap.min.js"></script>
788 <!-- AdminLTE App -->
789 <script src="/static/AdminLTE/js/app.min.js"></script>
790 <script src="/static/AdminLTE/plugins/chartjs/Chart.min.js"></script>
791
792 <script src="/static/datatables/jquery.dataTables.min.js"></script>
793 <script src="/static/datatables/dataTables.bootstrap.min.js"></script>
794
795 <script type="text/javascript">
796
797 function VtoyJsonCopyClick() {
798 var copyText = document.getElementById("pre_json_preview");
799 copyText.select();
800 copyText.setSelectionRange(0, 99999); // For mobile devices
801
802 try {
803 var successful = document.execCommand('copy');
804 copyText.setSelectionRange(0, 0);
805 if (successful) {
806 Message.success(g_vtoy_cur_language.STR_JSON_COPY_SUCCESS);
807 } else {
808 Message.error(g_vtoy_cur_language.STR_JSON_COPY_FAILED);
809 }
810 } catch (err) {
811 Message.error(g_vtoy_cur_language.STR_JSON_COPY_FAILED);
812 }
813 }
814
815 function VtoyPreviewClick() {
816 callVtoySync({
817 method : 'preview_json'
818 }, function(data) {
819 $('#JsonPeviewForm #JsonPreviewForm_lang_1').text(g_vtoy_cur_language.STR_JSON_PREVIEW);
820 $('#JsonPeviewForm #PrewForm_lang_2').text(g_vtoy_cur_language.STR_BTN_OK);
821
822 $('#pre_json_preview').text(VtoyUTF16HexToAscii(data.json));
823 $("#JsonPreviewModal").modal();
824 });
825 }
826
827 function VtoyLanguageClick() {
828 var defaultPage = window.location.hash;
829
830 if (g_current_language === 'cn') {
831 g_current_language = 'en';
832 } else {
833 g_current_language = 'cn';
834 }
835
836 if (typeof(VtoyPageLanguageChange)==='function') {
837 VtoyPageLanguageChange(g_current_language);
838 }
839 }
840
841
842 //Main process
843 var m_syntax_error;
844 var m_invalid_config;
845 callVtoySync({
846 method : 'sysinfo'
847 }, function(data) {
848 g_current_language = data.language;
849 g_current_dir = data.curdir;
850 g_current_os = data.os;
851 m_syntax_error = data.syntax_error;
852 m_invalid_config = data.invalid_config;
853
854
855
856 });
857
858 $('#id_btn_json_copy').click(VtoyJsonCopyClick);
859 $('#id_a_preview').click(VtoyPreviewClick);
860 $('#id_a_language').click(VtoyLanguageClick);
861
862 $("#plugson-menu a").click(function() {
863 var href = $(this).data("href");
864 if (href && href !== '#') {
865 loadContent(href.substring(1));
866 }
867 });
868
869 $('#id_top_donation').click(function() {
870 var href = $(this).data("href");
871 if (href && href !== '#') {
872 loadContent(href.substring(1));
873 }
874 });
875
876 (function openDefaultPage() {
877 var defaultPage = window.location.hash;
878 if (defaultPage) {
879 defaultPage = defaultPage.substring(1, defaultPage.length);
880 }
881 defaultPage = defaultPage || 'plugson_main';
882 loadContent(defaultPage);
883 })();
884
885
886 (function ventoy_handshake() {
887 callVtoyCatchErr({
888 method : 'handshake'
889 },
890 function(data) {
891
892 if (m_syntax_error === 1 && typeof(Modal) === 'object') {
893 var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO;
894 var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_SYNTAX_ERROR_TIP : g_vtoy_cur_language_cn.STR_SYNTAX_ERROR_TIP;
895 Modal.alert({title:title,msg:msg}).on(function(e) {
896 });
897 m_syntax_error = 0;
898 }
899
900 if (m_invalid_config === 1 && typeof(Modal) === 'object') {
901 var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO;
902 var msg = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INVALID_CONFIG_TIP : g_vtoy_cur_language_cn.STR_INVALID_CONFIG_TIP;
903 Modal.alert({title:title,msg:msg}).on(function(e) {
904 });
905 m_invalid_config = 0;
906 }
907
908 if (data.save_error === 1) {
909 var title = g_current_language == 'en' ? g_vtoy_cur_language_en.STR_INFO : g_vtoy_cur_language_cn.STR_INFO;
910 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;
911 Modal.alert({title:title,msg:msg}).on(function(e) {
912 });
913 }
914
915 if (typeof(UpdateTabTitleIcon)==='function') {
916 UpdateTabTitleIcon(data);
917 }
918
919 setTimeout(function() {
920 ventoy_handshake();
921 }, 200);
922 },
923
924 function(xmlHttpRequest, textStatus, errorThrown) {
925 if (undefined === errorThrown)
926 {
927 Message.error(g_vtoy_cur_language.STR_WEB_REMOTE_ABNORMAL);
928 }
929 else if(undefined === errorThrown.length)
930 {
931
932 }
933 else if('' == errorThrown.trim())
934 {
935 }
936 else
937 {
938 switch(errorThrown)
939 {
940 case 'timeout':
941 {
942 Message.error(g_vtoy_cur_language.STR_WEB_REQUEST_TIMEOUT);
943 break;
944 }
945 case 'Service Unavailable':
946 {
947 Message.error(g_vtoy_cur_language.STR_WEB_SERVICE_UNAVAILABLE);
948 break;
949 }
950 case 'abort':
951 {
952 break;
953 }
954 default:
955 {
956 Message.error(g_vtoy_cur_language.STR_WEB_COMMUNICATION_ERR + errorThrown);
957 break;
958 }
959 }
960 }
961
962 Modal.confirm({msg:g_vtoy_cur_language.STR_CLOSE_TIP}).on(function(e) {
963 if(navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1){
964 window.location.href = "about:blank";
965 window.close();
966 }else{
967 window.opener = null;
968 window.open("", "_self");
969 window.close();
970 }
971 });
972 });
973 })();
974
975
976 </script>
977 </body>
978
979 </html>