1 <div class=
"box box-primary" id=
"control">
2 <div class=
"box-header">
3 <div class=
"col-sm-10" style=
"padding-top:8px;">
4 <i class=
"fa fa-desktop"> </i>
5 <h1 class=
"box-title" style=
"font-weight:bold;" id=
"id_h1_page_title">x
</h1>
8 <div class=
"col-sm-2" style=
"font-size:16px;padding-top:8px;">
9 <a id=
"id_a_official_doc" target=
"_blank" href=
"https://www.ventoy.net/en/plugin_autoinstall.html"><span class=
"fa fa-link"></span><span id=
"id_span_official_doc">官网文档
</span></a>
14 <div class=
"box-body">
15 <div class=
"nav-tabs-custom">
16 <ul class=
"nav nav-tabs" id=
"id_tab_autoins">
17 <li class=
""><a href=
"#tab_0" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold" >auto_install
</a></li>
18 <li class=
""><a href=
"#tab_1" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold">auto_install_legacy
</a></li>
19 <li class=
""><a href=
"#tab_2" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold">auto_install_uefi
</a></li>
20 <li class=
""><a href=
"#tab_3" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold">auto_install_ia32
</a></li>
21 <li class=
""><a href=
"#tab_4" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold">auto_install_aa64
</a></li>
22 <li class=
""><a href=
"#tab_5" data-toggle=
"tab" aria-expanded=
"false" style=
"font-weight:bold">auto_install_mips
</a></li>
26 <table id=
"id_autoins_tbl" class=
"table table-bordered" >
29 <th style=
"width: 5%;">#
</th>
30 <th id=
"id_th_autoins_set" style=
"width: 80%;"></th>
31 <th id=
"id_th_operation" style=
"width: 10%;"></th>
39 <script type=
"text/javascript">
41 function VtoyPageLanguageChange(newlang) {
42 VtoyCommonChangeLanguage(newlang);
43 $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_AUTO_INSTALL);
45 $("span[id=id_span_file_exist]").each(function(){
46 $(this).text(g_vtoy_cur_language.STR_FILE_EXIST);
48 $("span[id=id_span_file_nonexist]").each(function(){
49 $(this).text(g_vtoy_cur_language.STR_FILE_NONEXIST);
51 $("span[id=id_span_file_fuzzy]").each(function(){
52 $(this).text(g_vtoy_cur_language.STR_FILE_FUZZY);
55 $("span[id=id_span_dir_exist]").each(function(){
56 $(this).text(g_vtoy_cur_language.STR_DIR_EXIST);
59 $("span[id=id_span_dir_nonexist]").each(function(){
60 $(this).text(g_vtoy_cur_language.STR_DIR_NONEXIST);
63 $("th[id=id_th_template]").each(function(){
64 $(this).text(g_vtoy_cur_language.STR_AUTO_TEMPLATE);
67 if (newlang === 'en') {
68 $('#id_th_autoins_path').text('Absolute Path');
69 $('#id_th_autoins_set').text('Setting');
71 $('#id_th_autoins_path').text('绝对路径');
72 $('#id_th_autoins_set').text('设置');
77 function VtoySaveCurrentPage(index) {
82 var timeouten = $('#id_timeout_en_' + index).is(':checked');
83 var autoselen = $('#id_autosel_en_' + index).is(':checked');
86 timeoutval = parseInt($('#id_text_timeout_' + index).val());
90 autoselval = parseInt($('#id_text_autosel_' + index).val());
94 method : 'save_auto_install',
95 index: current_tab_index,
102 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
106 function OnInputTextChange() {
107 var id = $(this).attr('id');
108 var value = $(this).val();
111 if (id.length <=
16) {
115 var index = parseInt(id.substr(
16));
116 var data = m_data_autoins[current_tab_index][index];
118 if (/^[
0-
9][
0-
9]*$/.test(value)) {
119 intval = parseInt(value);
121 if (id.startsWith('id_text_autosel_')) {
122 var list = m_data_autoins[current_tab_index][index].list;
123 if (intval
> list.length) {
124 Message.error(g_vtoy_cur_language.STR_INVALID_AUTOSEL);
125 $(this).val(data.autosel);
130 VtoySaveCurrentPage(index);
132 Message.error(g_vtoy_cur_language.STR_INVALID_NUMBER);
134 if (id.startsWith('id_text_timeout_')) {
135 $(this).val(data.timeout);
137 $(this).val(data.autosel);
142 function OnCheckBoxChange() {
146 var id = $(this).attr('id');
147 var checked = $(this).is(':checked');
149 if (id.length <=
14) {
153 index = parseInt(id.substr(
14));
154 var data = m_data_autoins[current_tab_index][index];
156 if (id.startsWith('id_timeout_en_')) {
157 textid = 'input[id=id_text_timeout_' + index + ']';
158 value = data.timeout;
159 data.timeouten = checked;
161 textid = 'input[id=id_text_autosel_' + index + ']';
162 value = data.autosel;
163 data.autoselen = checked;
167 $(textid).attr("disabled", false);
168 $(textid).val(value);
170 $(textid).attr("disabled", true);
174 VtoySaveCurrentPage(index);
178 function FillAutoInsInnerTable(i, data) {
179 var td1, td2, td3, td4;
180 var inner = data.list;
181 var tabid = '#tbl_inner_' + (i +
1);
182 var $inner_tbl = $(tabid + ' tbody');
184 var inaddbtn = ventoy_get_xslg_addbtn('AutoInsInnerAddBtn');
185 var indelbtn = ventoy_get_xslg_delbtn('AutoInsInnerDelBtn');
189 for (var j =
0; j < inner.length; j++) {
191 td1 = '
<td style=
"width: 5%;">'+(j+
1)+'
</td>';
192 td2 = '
<td>'+inner[j].path+'
</td>';
193 td3 = '
<td style=
"width: 10%;">'+ventoy_get_status_line(
0, inner[j].valid)+'
</td>';
194 td4 = '
<td style=
"width: 10%;">' + indelbtn + '
</td>';
196 $tr = $('
<tr>' + td1 + td2 + td3 + td4 + '
</tr>');
197 $tr.data('path', inner[j].path);
198 $tr.data('index', j);
199 $tr.data('outpath', data.path);
200 $tr.data('outindex', i);
202 $inner_tbl.append($tr);
205 $tr = $('
<tr><td></td><td></td><td></td><td>'+inaddbtn+'
</td></tr>');
206 $tr.data('outpath', data.path);
207 $tr.data('outindex', i);
209 $inner_tbl.append($tr);
212 function FillAutoInsTable(data) {
213 var td1, td2, td3, td4, td5;
214 var addbtn = ventoy_get_addbtn('AutoInsAddBtn');
215 var delbtn = ventoy_get_delbtn('AutoInsDelBtn');
217 var $tbl = $("#id_autoins_tbl tbody");
220 for (var i =
0; i < data.length; i++) {
223 var tdtimeout, timeoutdisable, timeoutval;
224 var tdautosel, autoseldisable, autoselval;
225 if (data[i].timeouten) {
226 tdtimeout = '
<th style=
"width:10%;"><input id=
"id_timeout_en_'+i+'" checked=
"checked" type=
"checkbox"/> timeout
</th>';
227 timeoutval = data[i].timeout;
230 tdtimeout = '
<th style=
"width:10%;"><input id=
"id_timeout_en_'+i+'" type=
"checkbox"/> timeout
</th>';
232 timeoutdisable='
disabled="disabled"';
234 if (data[i].autoselen) {
235 tdautosel = '
<th style=
"width:10%;"><input id=
"id_autosel_en_'+i+'" checked=
"checked" type=
"checkbox"/> autosel
</th>';
236 autoselval = data[i].autosel;
239 tdautosel = '
<th style=
"width:10%;"><input id=
"id_autosel_en_'+i+'" type=
"checkbox"/> autosel
</th>';
241 autoseldisable='
disabled="disabled"';
245 var tdtype = (data[i].type ===
0) ? "image" : "parent";
246 var tdtbl1 ='
<table class=
"table table-condensed">'+
249 '
<th>'+tdtype+'
</th>'+
250 '
<th style=
"width:10%;">Status
</th>'+
256 '
<td style=
"width:70%;vertical-align: middle;">' + data[i].path + '
</td>' +
257 '
<td style=
"vertical-align: middle;">' + ventoy_get_status_line(data[i].type, data[i].valid) + '
</td>' +
258 '
<td><div style=
"padding-left:0;" class=
"col-sm-8"><input type=
"text" '+timeoutdisable+'
value=
"'+timeoutval+'" class=
"form-control" id=
"id_text_timeout_'+i+'"/></div></td>'+
259 '
<td><div style=
"padding-left:0;" class=
"col-sm-8"><input type=
"text" '+autoseldisable+'
value=
"'+autoselval+'" class=
"form-control" id=
"id_text_autosel_'+i+'"/></div></td></tr>'+
261 '
<tr><td></td><td></td><td></td><td></td></tr>'+
265 var tdtbl2 = '
<table class=
"table table-bordered" id=
"tbl_inner_' + (i+1) + '">'+
266 '
<thead><tr><th>#
</th><th id=
"id_th_template">'+g_vtoy_cur_language.STR_AUTO_TEMPLATE+'
</th><th id=
"id_th_status">'+g_vtoy_cur_language.STR_STATUS+'
</th><th id=
"id_th_operation">'+g_vtoy_cur_language.STR_OPERATION+'
</th></tr></thead><tbody></tbody></table>';
268 td1 = '
<td style=
"vertical-align: middle;">' + (i +
1) + '
</td>';
269 td2 = '
<td>' + tdtbl1 + tdtbl2 + '
</td>';
270 td3 = '
<td style=
"vertical-align: middle;text-align: center;">' + delbtn + '
</td>';
271 $tr = $('
<tr>' + td1 + td2 + td3 + '
</tr>');
273 $tr.data('path', data[i].path);
274 $tr.data('index', i);
278 $tbl.append('
<tr><td></td><td></td><td style=
"vertical-align: middle;text-align: center;">' + addbtn + '
</td></tr>');
280 $('input[type=text]').each(function (){
281 var id = $(this).attr('id');
283 if (id.startsWith('id_text_timeout_') || id.startsWith('id_text_autosel_')) {
284 $(this).change(OnInputTextChange);
288 $('input[type=checkbox]').each(function (){
289 var id = $(this).attr('id');
290 if (id.startsWith('id_timeout_en_') || id.startsWith('id_autosel_en_')) {
291 $(this).click(OnCheckBoxChange);
295 for (var i =
0; i < data.length; i++) {
296 FillAutoInsInnerTable(i, data[i]);
300 function VtoyFillCurrentPageItem(data) {
301 FillAutoInsTable(data);
305 function OnClickMultiModeTab() {
306 var href = $(this).attr('href');
307 var index = parseInt(href.substr(
5,
1));
309 if (index <
0 || index
>= g_vtoy_data_default_index || current_tab_index === index) {
313 current_tab_index = index;
314 VtoyFillCurrentPageItem(m_data_autoins[index]);
317 function AddAutoInstallEntry(type, exist1, path1, path2) {
318 var list = m_data_autoins[current_tab_index];
329 call_array[
0] = path2.substr(g_current_dir.length);
330 data_array[
0].path = path2.substr(g_current_dir.length);
333 "path": path1.substr(g_current_dir.length),
341 for (var i =
0; i < list.length; i++) {
342 if (list[i].path === data.path) {
343 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
349 method : 'auto_install_add',
350 index: current_tab_index,
352 template: call_array,
356 FillAutoInsTable(list);
357 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
361 function OnAddImageAutoInstall(exist1, path1, path2) {
362 AddAutoInstallEntry(
0, exist1, path1, path2);
365 function OnAddDirAutoInstall(path1, path2) {
366 AddAutoInstallEntry(
1,
1, path1, path2);
369 function OnAddAutoInsBtnClick(sel) {
371 var tip1 = (g_current_os === 'windows') ? '\\ISO\\Windows11.iso' : "/ISO/CentOS-
7-x86_64-DVD-
1908.iso";
372 var tip2 = (g_current_os === 'windows') ? '\\ISO\\Windows**.iso' : "/ISO/CentOS-
7-x86_64-DVD-****.iso";
373 var tip3 = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
375 "title": g_vtoy_cur_language.STR_SET_AUTO_INS,
376 "label1": g_vtoy_cur_language.STR_FILE_PATH,
377 "label2": g_vtoy_cur_language.STR_SET_AUTO_TEMPLATE,
378 "tip1": g_current_dir + tip1,
379 "tip2": g_current_dir + tip2,
380 "tip3": g_current_dir + tip3
383 VtoySetFileFile(OnAddImageAutoInstall, para);
385 var tip1 = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux";
386 var tip2 = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
388 "title": g_vtoy_cur_language.STR_SET_AUTO_INS,
389 "label1": g_vtoy_cur_language.STR_DIR_PATH,
390 "label2": g_vtoy_cur_language.STR_SET_AUTO_TEMPLATE,
391 "tip1": g_current_dir + tip1,
392 "tip2": g_current_dir + tip2
394 VtoySetDirFile(OnAddDirAutoInstall, para);
398 function OnAutoInstallAddClick() {
402 "tip": g_vtoy_cur_language.STR_SET_AUTO_INSTALL_FOR_FILE
406 "tip": g_vtoy_cur_language.STR_SET_AUTO_INSTALL_FOR_DIR
410 VtoySelectType(OnAddAutoInsBtnClick, para);
413 function AutoInstallDelEntry(path, index) {
415 method : 'auto_install_del',
416 index: current_tab_index,
419 m_data_autoins[current_tab_index].splice(index,
1);
420 FillAutoInsTable(m_data_autoins[current_tab_index]);
421 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
425 function OnAutoInstallDelClick() {
426 var $tr = $(this).closest('tr');
427 var path = $tr.data('path');
428 var index = $tr.data('index');
430 AutoInstallDelEntry(path, index);
436 function OnAddAutoTemplateScript(root, valid, extra) {
437 var path = root.substr(g_current_dir.length);
438 var data = m_data_autoins[current_tab_index][m_out_index];
440 for (var i =
0; i < data.list.length; i++) {
441 if (data.list[i].path === path) {
442 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
448 method : 'auto_install_add_inner',
449 index: current_tab_index,
459 data.list.push(node);
460 FillAutoInsInnerTable(m_out_index, data);
461 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
466 function OnAutoInstallInnerAddClick() {
467 var $tr = $(this).closest('tr');
468 var outpath = $tr.data('outpath');
469 var outindex = $tr.data('outindex');
471 var tip = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
473 "title": g_vtoy_cur_language.STR_ADD_AUTO_TEMPLATE,
475 "tip1": g_current_dir + tip,
482 m_out_index = outindex;
483 m_out_path = outpath;
484 VtoySelectFilePath(OnAddAutoTemplateScript, para);
487 function AutoInstallDelInnerEntry(outpath, outindex, path, index) {
489 method : 'auto_install_del_inner',
490 index: current_tab_index,
494 var data = m_data_autoins[current_tab_index][outindex];
496 data.list.splice(index,
1);
497 FillAutoInsInnerTable(outindex, m_data_autoins[current_tab_index][outindex]);
498 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
502 function OnAutoInstallInnerDelClick() {
503 var $tr = $(this).closest('tr');
505 var path = $tr.data('path');
506 var index = $tr.data('index');
507 var outpath = $tr.data('outpath');
508 var outindex = $tr.data('outindex');
510 var list = m_data_autoins[current_tab_index][outindex].list;
512 if (list.length ===
1) {
513 ventoy_confirm(g_vtoy_cur_language.STR_DEL_LAST, AutoInstallDelEntry, outpath, outindex);
515 AutoInstallDelInnerEntry(outpath, outindex, path, index);
525 var current_tab_index =
0;
526 callVtoySync({method : 'get_auto_install'}, function(data) {
527 m_data_autoins = data;
530 $("#id_autoins_tbl").on('click', '.AutoInsAddBtn', OnAutoInstallAddClick);
531 $("#id_autoins_tbl").on('click', '.AutoInsDelBtn', OnAutoInstallDelClick);
532 $("#id_autoins_tbl").on('click', '.AutoInsInnerAddBtn', OnAutoInstallInnerAddClick);
533 $("#id_autoins_tbl").on('click', '.AutoInsInnerDelBtn', OnAutoInstallInnerDelClick);
535 $('#id_tab_autoins a[
href="#tab_0"]').click(OnClickMultiModeTab);
536 $('#id_tab_autoins a[
href="#tab_1"]').click(OnClickMultiModeTab);
537 $('#id_tab_autoins a[
href="#tab_2"]').click(OnClickMultiModeTab);
538 $('#id_tab_autoins a[
href="#tab_3"]').click(OnClickMultiModeTab);
539 $('#id_tab_autoins a[
href="#tab_4"]').click(OnClickMultiModeTab);
540 $('#id_tab_autoins a[
href="#tab_5"]').click(OnClickMultiModeTab);
542 $('#id_tab_autoins a[
href="#tab_0"]').tab('show');
543 VtoyFillCurrentPageItem(m_data_autoins[
0]);
544 VtoyPageLanguageChange(g_current_language);