]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - Plugson/www/plugson_auto_install.html
Update languages.json (#1435)
[Ventoy.git] / Plugson / www / plugson_auto_install.html
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">&nbsp;&nbsp;</i>
5 <h1 class="box-title" style="font-weight:bold;" id="id_h1_page_title">x</h1>
6 </div>
7
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>
10 </div>
11 </div>
12 <legend></legend>
13
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>
23 </ul>
24 </div>
25
26 <table id="id_autoins_tbl" class="table table-bordered" >
27 <thead>
28 <tr>
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>
32 </tr>
33 </thead>
34 <tbody>
35 </tbody>
36 </table>
37 </div>
38 </div>
39 <script type="text/javascript">
40
41 function VtoyPageLanguageChange(newlang) {
42 VtoyCommonChangeLanguage(newlang);
43 $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_AUTO_INSTALL);
44
45 $("span[id=id_span_file_exist]").each(function(){
46 $(this).text(g_vtoy_cur_language.STR_FILE_EXIST);
47 });
48 $("span[id=id_span_file_nonexist]").each(function(){
49 $(this).text(g_vtoy_cur_language.STR_FILE_NONEXIST);
50 });
51 $("span[id=id_span_file_fuzzy]").each(function(){
52 $(this).text(g_vtoy_cur_language.STR_FILE_FUZZY);
53 });
54
55 $("span[id=id_span_dir_exist]").each(function(){
56 $(this).text(g_vtoy_cur_language.STR_DIR_EXIST);
57 });
58
59 $("span[id=id_span_dir_nonexist]").each(function(){
60 $(this).text(g_vtoy_cur_language.STR_DIR_NONEXIST);
61 });
62
63 $("th[id=id_th_template]").each(function(){
64 $(this).text(g_vtoy_cur_language.STR_AUTO_TEMPLATE);
65 });
66
67 if (newlang === 'en') {
68 $('#id_th_autoins_path').text('Absolute Path');
69 $('#id_th_autoins_set').text('Setting');
70 } else {
71 $('#id_th_autoins_path').text('绝对路径');
72 $('#id_th_autoins_set').text('设置');
73
74 }
75 }
76
77 function VtoySaveCurrentPage(index) {
78
79 var timeoutval = 0;
80 var autoselval = 1;
81
82 var timeouten = $('#id_timeout_en_' + index).is(':checked');
83 var autoselen = $('#id_autosel_en_' + index).is(':checked');
84
85 if (timeouten) {
86 timeoutval = parseInt($('#id_text_timeout_' + index).val());
87 }
88
89 if (autoselen) {
90 autoselval = parseInt($('#id_text_autosel_' + index).val());
91 }
92
93 callVtoy({
94 method : 'save_auto_install',
95 index: current_tab_index,
96 id: index,
97 timeout: timeoutval,
98 autosel: autoselval,
99 timeouten: timeouten,
100 autoselen: autoselen
101 }, function(e) {
102 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
103 });
104 }
105
106 function OnInputTextChange() {
107 var id = $(this).attr('id');
108 var value = $(this).val();
109 var intval;
110
111 if (typeof(id) == 'undefined' || id.length <= 16) {
112 return;
113 }
114
115 var index = parseInt(id.substr(16));
116 var data = m_data_autoins[current_tab_index][index];
117
118 if (/^[0-9][0-9]*$/.test(value)) {
119 intval = parseInt(value);
120
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);
126 return;
127 }
128 }
129
130 VtoySaveCurrentPage(index);
131 } else {
132 Message.error(g_vtoy_cur_language.STR_INVALID_NUMBER);
133
134 if (id.startsWith('id_text_timeout_')) {
135 $(this).val(data.timeout);
136 } else {
137 $(this).val(data.autosel);
138 }
139 }
140 }
141
142 function OnCheckBoxChange() {
143 var index;
144 var textid;
145 var value;
146 var id = $(this).attr('id');
147 var checked = $(this).is(':checked');
148
149 if (typeof(id) == 'undefined' || id.length <= 14) {
150 return;
151 }
152
153 index = parseInt(id.substr(14));
154 var data = m_data_autoins[current_tab_index][index];
155
156 if (id.startsWith('id_timeout_en_')) {
157 textid = 'input[id=id_text_timeout_' + index + ']';
158 value = data.timeout;
159 data.timeouten = checked;
160 } else {
161 textid = 'input[id=id_text_autosel_' + index + ']';
162 value = data.autosel;
163 data.autoselen = checked;
164 }
165
166 if (checked) {
167 $(textid).attr("disabled", false);
168 $(textid).val(value);
169 } else {
170 $(textid).attr("disabled", true);
171 $(textid).val('');
172 }
173
174 VtoySaveCurrentPage(index);
175 }
176
177
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');
183
184 var inaddbtn = ventoy_get_xslg_addbtn('AutoInsInnerAddBtn');
185 var indelbtn = ventoy_get_xslg_delbtn('AutoInsInnerDelBtn');
186
187 $inner_tbl.empty();
188
189 for (var j = 0; j < inner.length; j++) {
190 var $tr;
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>';
195
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);
201
202 $inner_tbl.append($tr);
203 }
204
205 $tr = $('<tr><td></td><td></td><td></td><td>'+inaddbtn+'</td></tr>');
206 $tr.data('outpath', data.path);
207 $tr.data('outindex', i);
208
209 $inner_tbl.append($tr);
210 }
211
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');
216
217 var $tbl = $("#id_autoins_tbl tbody");
218 $tbl.empty();
219
220 for (var i = 0; i < data.length; i++) {
221 var $tr;
222
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;
228 timeoutdisable='';
229 } else {
230 tdtimeout = '<th style="width:10%;"><input id="id_timeout_en_'+i+'" type="checkbox"/> timeout</th>';
231 timeoutval='';
232 timeoutdisable='disabled="disabled"';
233 }
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;
237 autoseldisable='';
238 } else {
239 tdautosel = '<th style="width:10%;"><input id="id_autosel_en_'+i+'" type="checkbox"/> autosel</th>';
240 autoselval='';
241 autoseldisable='disabled="disabled"';
242 }
243
244
245 var tdtype = (data[i].type === 0) ? "image" : "parent";
246 var tdtbl1 ='<table class="table table-condensed">'+
247
248 '<thead><tr>' +
249 '<th>'+tdtype+'</th>'+
250 '<th style="width:10%;">Status</th>'+
251 tdtimeout +
252 tdautosel +
253 '</tr></thread>' +
254
255 '<tbody><tr>'+
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>'+
260
261 '<tr><td></td><td></td><td></td><td></td></tr>'+
262
263 '</tbody></table>';
264
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>';
267
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>');
272
273 $tr.data('path', data[i].path);
274 $tr.data('index', i);
275 $tbl.append($tr);
276 }
277
278 $tbl.append('<tr><td></td><td></td><td style="vertical-align: middle;text-align: center;">' + addbtn + '</td></tr>');
279
280 $('input[type=text]').each(function (){
281 var id = $(this).attr('id');
282 if (typeof(id) == 'undefined') {
283 return;
284 }
285 if (id.startsWith('id_text_timeout_') || id.startsWith('id_text_autosel_')) {
286 $(this).change(OnInputTextChange);
287 }
288 });
289
290 $('input[type=checkbox]').each(function (){
291 var id = $(this).attr('id');
292 if (typeof(id) == 'undefined') {
293 return;
294 }
295 if (id.startsWith('id_timeout_en_') || id.startsWith('id_autosel_en_')) {
296 $(this).click(OnCheckBoxChange);
297 }
298 });
299
300 for (var i = 0; i < data.length; i++) {
301 FillAutoInsInnerTable(i, data[i]);
302 }
303 }
304
305 function VtoyFillCurrentPageItem(data) {
306 FillAutoInsTable(data);
307 }
308
309
310 function OnClickMultiModeTab() {
311 var href = $(this).attr('href');
312 var index = parseInt(href.substr(5, 1));
313
314 if (index < 0 || index >= g_vtoy_data_default_index || current_tab_index === index) {
315 return;
316 }
317
318 current_tab_index = index;
319 VtoyFillCurrentPageItem(m_data_autoins[index]);
320 }
321
322 function AddAutoInstallEntry(type, exist1, path1, path2) {
323 var list = m_data_autoins[current_tab_index];
324 var data_array = [
325 {
326 "path": "",
327 "valid": 1
328 }
329 ];
330 var call_array = [
331 ""
332 ];
333
334 call_array[0] = path2.substr(g_current_dir.length);
335 data_array[0].path = path2.substr(g_current_dir.length);
336
337 var data = {
338 "path": path1.substr(g_current_dir.length),
339 "list": data_array,
340 "type": type,
341 "valid": exist1,
342 "autosel": 1,
343 "timeout": 0
344 };
345
346 for (var i = 0; i < list.length; i++) {
347 if (list[i].path === data.path) {
348 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
349 return;
350 }
351 }
352
353 callVtoy({
354 method : 'auto_install_add',
355 index: current_tab_index,
356 path: data.path,
357 template: call_array,
358 type: type
359 }, function(e) {
360 list.push(data);
361 FillAutoInsTable(list);
362 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
363 });
364 }
365
366 function OnAddImageAutoInstall(exist1, path1, path2) {
367 AddAutoInstallEntry(0, exist1, path1, path2);
368 }
369
370 function OnAddDirAutoInstall(path1, path2) {
371 AddAutoInstallEntry(1, 1, path1, path2);
372 }
373
374 function OnAddAutoInsBtnClick(sel) {
375 if (sel === 0) {
376 var tip1 = (g_current_os === 'windows') ? '\\ISO\\Windows11.iso' : "/ISO/CentOS-7-x86_64-DVD-1908.iso";
377 var tip2 = (g_current_os === 'windows') ? '\\ISO\\Windows**.iso' : "/ISO/CentOS-7-x86_64-DVD-****.iso";
378 var tip3 = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
379 var para = {
380 "title": g_vtoy_cur_language.STR_SET_AUTO_INS,
381 "label1": g_vtoy_cur_language.STR_FILE_PATH,
382 "label2": g_vtoy_cur_language.STR_SET_AUTO_TEMPLATE,
383 "tip1": g_current_dir + tip1,
384 "tip2": g_current_dir + tip2,
385 "tip3": g_current_dir + tip3
386 };
387
388 VtoySetFileFile(OnAddImageAutoInstall, para);
389 } else {
390 var tip1 = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux";
391 var tip2 = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
392 var para = {
393 "title": g_vtoy_cur_language.STR_SET_AUTO_INS,
394 "label1": g_vtoy_cur_language.STR_DIR_PATH,
395 "label2": g_vtoy_cur_language.STR_SET_AUTO_TEMPLATE,
396 "tip1": g_current_dir + tip1,
397 "tip2": g_current_dir + tip2
398 };
399 VtoySetDirFile(OnAddDirAutoInstall, para);
400 }
401 }
402
403 function OnAutoInstallAddClick() {
404 var para = [
405 {
406 "selected": true,
407 "tip": g_vtoy_cur_language.STR_SET_AUTO_INSTALL_FOR_FILE
408 },
409 {
410 "selected": false,
411 "tip": g_vtoy_cur_language.STR_SET_AUTO_INSTALL_FOR_DIR
412 }
413 ];
414
415 VtoySelectType(OnAddAutoInsBtnClick, para);
416 }
417
418 function AutoInstallDelEntry(path, index) {
419 callVtoySync({
420 method : 'auto_install_del',
421 index: current_tab_index,
422 path: path
423 }, function(data) {
424 m_data_autoins[current_tab_index].splice(index, 1);
425 FillAutoInsTable(m_data_autoins[current_tab_index]);
426 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
427 });
428 }
429
430 function OnAutoInstallDelClick() {
431 var $tr = $(this).closest('tr');
432 var path = $tr.data('path');
433 var index = $tr.data('index');
434
435 AutoInstallDelEntry(path, index);
436 }
437
438
439 var m_out_index;
440 var m_out_path;
441 function OnAddAutoTemplateScript(root, valid, extra) {
442 var path = root.substr(g_current_dir.length);
443 var data = m_data_autoins[current_tab_index][m_out_index];
444
445 for (var i = 0; i < data.list.length; i++) {
446 if (data.list[i].path === path) {
447 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
448 return;
449 }
450 }
451
452 callVtoy({
453 method : 'auto_install_add_inner',
454 index: current_tab_index,
455 outpath: m_out_path,
456 path: path
457 }, function(e) {
458
459 var node = {
460 "path": path,
461 "valid": 1
462 };
463
464 data.list.push(node);
465 FillAutoInsInnerTable(m_out_index, data);
466 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
467 });
468
469 }
470
471 function OnAutoInstallInnerAddClick() {
472 var $tr = $(this).closest('tr');
473 var outpath = $tr.data('outpath');
474 var outindex = $tr.data('outindex');
475
476 var tip = (g_current_os === 'windows') ? '\\script\\Windows_unattend.xml' : "/script/centos.ks";
477 var para = {
478 "title": g_vtoy_cur_language.STR_ADD_AUTO_TEMPLATE,
479 "fuzzy": 0,
480 "tip1": g_current_dir + tip,
481 "tip2": '',
482 "tip3": '',
483 "extra": false,
484 "extra_title": ''
485 };
486
487 m_out_index = outindex;
488 m_out_path = outpath;
489 VtoySelectFilePath(OnAddAutoTemplateScript, para);
490 }
491
492 function AutoInstallDelInnerEntry(outpath, outindex, path, index) {
493 callVtoy({
494 method : 'auto_install_del_inner',
495 index: current_tab_index,
496 outpath: outpath,
497 path: path
498 }, function(e) {
499 var data = m_data_autoins[current_tab_index][outindex];
500
501 data.list.splice(index, 1);
502 FillAutoInsInnerTable(outindex, m_data_autoins[current_tab_index][outindex]);
503 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
504 });
505 }
506
507 function OnAutoInstallInnerDelClick() {
508 var $tr = $(this).closest('tr');
509
510 var path = $tr.data('path');
511 var index = $tr.data('index');
512 var outpath = $tr.data('outpath');
513 var outindex = $tr.data('outindex');
514
515 var list = m_data_autoins[current_tab_index][outindex].list;
516
517 if (list.length === 1) {
518 ventoy_confirm(g_vtoy_cur_language.STR_DEL_LAST, AutoInstallDelEntry, outpath, outindex);
519 } else {
520 AutoInstallDelInnerEntry(outpath, outindex, path, index);
521 }
522 }
523
524
525
526
527
528 //Main process
529 var m_data_autoins;
530 var current_tab_index = 0;
531 callVtoySync({method : 'get_auto_install'}, function(data) {
532 m_data_autoins = data;
533 });
534
535 $("#id_autoins_tbl").on('click', '.AutoInsAddBtn', OnAutoInstallAddClick);
536 $("#id_autoins_tbl").on('click', '.AutoInsDelBtn', OnAutoInstallDelClick);
537 $("#id_autoins_tbl").on('click', '.AutoInsInnerAddBtn', OnAutoInstallInnerAddClick);
538 $("#id_autoins_tbl").on('click', '.AutoInsInnerDelBtn', OnAutoInstallInnerDelClick);
539
540 $('#id_tab_autoins a[href="#tab_0"]').click(OnClickMultiModeTab);
541 $('#id_tab_autoins a[href="#tab_1"]').click(OnClickMultiModeTab);
542 $('#id_tab_autoins a[href="#tab_2"]').click(OnClickMultiModeTab);
543 $('#id_tab_autoins a[href="#tab_3"]').click(OnClickMultiModeTab);
544 $('#id_tab_autoins a[href="#tab_4"]').click(OnClickMultiModeTab);
545 $('#id_tab_autoins a[href="#tab_5"]').click(OnClickMultiModeTab);
546
547 $('#id_tab_autoins a[href="#tab_0"]').tab('show');
548 VtoyFillCurrentPageItem(m_data_autoins[0]);
549 VtoyPageLanguageChange(g_current_language);
550
551 </script>