]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - Plugson/www/plugson_image_list.html
1. Fix the blank item in the last of Language select menu
[Ventoy.git] / Plugson / www / plugson_image_list.html
1 <div class="box box-primary" id="control">
2 <div class="box-header">
3 <div class="col-sm-9" style="padding-top:8px;">
4 <i class="fa fa-list-alt">&nbsp;&nbsp;</i>
5 <h1 class="box-title" style="font-weight:bold;" id="id_h1_page_title"></h1>
6 </div>
7 <div class="col-sm-1" style="padding-top:2px;">
8 <button id="id_btn_reset" class="btn btn-sm btn-danger btn-del"><i class="fa fa-trash"></i><span id="id_btn_span_reset">Reset</span></button>
9 </div>
10 <div class="col-sm-2" style="font-size:16px;padding-top:8px;">
11 <a id="id_a_official_doc" target="_blank" href="https://www.ventoy.net/en/plugin_imagelist.html"><span class="fa fa-link"></span><span id="id_span_official_doc">官网文档</span></a>
12 </div>
13 </div>
14 <legend></legend>
15
16 <div class="box-body">
17 <div class="nav-tabs-custom">
18 <ul class="nav nav-tabs" id="id_tab_image_list">
19 <li class=""><a href="#tab_0" data-toggle="tab" aria-expanded="false" style="font-weight:bold" >image_list</a></li>
20 <li class=""><a href="#tab_1" data-toggle="tab" aria-expanded="false" style="font-weight:bold">image_list_legacy</a></li>
21 <li class=""><a href="#tab_2" data-toggle="tab" aria-expanded="false" style="font-weight:bold">image_list_uefi</a></li>
22 <li class=""><a href="#tab_3" data-toggle="tab" aria-expanded="false" style="font-weight:bold">image_list_ia32</a></li>
23 <li class=""><a href="#tab_4" data-toggle="tab" aria-expanded="false" style="font-weight:bold">image_list_aa64</a></li>
24 <li class=""><a href="#tab_5" data-toggle="tab" aria-expanded="false" style="font-weight:bold">image_list_mips</a></li>
25 </ul>
26 </div>
27
28
29 <div class="box box-primary box-solid">
30 <div class="box-header with-border">
31 <h3 id="id_image_list_mode" class="box-title" style="font-size: 14px;font-weight: bold;">Mode</h3>
32 <div class="box-tools pull-right">
33 <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
34 </div><!-- /.box-tools -->
35 </div><!-- /.box-header -->
36 <div class="box-body no-padding">
37 <table class="table table-bordered no-padding">
38 <tr style="font-weight:bold;">
39 <td class="td_ctrl_col" id="td_title_setting">选项设置</td>
40 <td>
41 <label class="radio-inline">
42 <input type="radio" id="id_image_list_type0" name="id_image_list_type" data-type="0" value="0">
43 <span id="id_span_image_list_permit" style="font-weight:bold;">0</span>
44 </label>
45 <label class="radio-inline">
46 <input type="radio" id="id_image_list_type1" name="id_image_list_type" data-type="1" value="1">
47 <span id="id_span_image_list_deny" style="font-weight:bold;">1</span>
48 </label>
49 </td>
50 </tr>
51 <tr id="tr_title_desc_cn">
52 <td class="td_ctrl_col" id="td_title_desc">选项说明</td>
53 <td>
54 <span style="font-weight: bold;">白名单模式</span><br/>
55 由用户自己列出文件列表,Ventoy 不再搜索而是直接使用你给出的文件列表。 同时 Ventoy 也不再对文件进行排序,而是直接按照列表给出的文件顺序来显示启动菜单。<br/>
56 <span style="font-weight: bold;">黑名单模式</span><br/>
57 Ventoy 首先还是像原来一样搜索,最后再从搜索结果中剔除这个列表中的文件。<br/>
58 </td>
59 </tr>
60 <tr id="tr_title_desc_en">
61 <td class="td_ctrl_col">Option Description</td>
62 <td>
63 <span style="font-weight: bold;">Permit Mode</span><br/>
64 Ventoy will no longer search for the files but just use your file list. Also, Ventoy will NOT sort these files anymore, but directly display the boot menu according to the order given in the list.<br/>
65 <span style="font-weight: bold;">Deny Mode</span><br/>
66 Firstly, Ventoy will search as normal. And then remove the files in the blacklist from the search result.<br/>
67 </td>
68 </tr>
69 </table>
70 </div><!-- /.box-body -->
71 </div><!-- /.box -->
72
73
74 <div class="box box-primary box-solid">
75 <div class="box-header with-border">
76 <h3 id="id_image_list_list" class="box-title" style="font-size: 14px;font-weight: bold;">List</h3>
77 <div class="box-tools pull-right">
78 <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
79 </div><!-- /.box-tools -->
80 </div><!-- /.box-header -->
81 <div class="box-body no-padding">
82 <table id="id_image_list_tbl" class="table table-bordered">
83 <thead>
84 <tr>
85 <th style="width: 5%;">#</th>
86 <th id="id_th_imglist_path" style="width: 60%;"></th>
87 <th id="id_th_status" style="width: 10%;"></th>
88 <th id="id_th_operation" style="width: 10%;"></th>
89 </tr>
90 </thead>
91 <tbody>
92 </tbody>
93 </table>
94 </div><!-- /.box-body -->
95 </div><!-- /.box -->
96
97
98 </div>
99 </div>
100 <script type="text/javascript">
101
102 function VtoyPageLanguageChange(newlang) {
103 VtoyCommonChangeLanguage(newlang);
104 $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_IMAGELIST);
105
106 $("span[id=id_span_file_exist]").each(function(){
107 $(this).text(g_vtoy_cur_language.STR_FILE_EXIST);
108 });
109 $("span[id=id_span_file_nonexist]").each(function(){
110 $(this).text(g_vtoy_cur_language.STR_FILE_NONEXIST);
111 });
112 $("span[id=id_span_file_fuzzy]").each(function(){
113 $(this).text(g_vtoy_cur_language.STR_FILE_FUZZY);
114 });
115
116 if (newlang === 'en') {
117 $('h3[id=id_image_list_mode]').text('Mode');
118 $('h3[id=id_image_list_list]').text('List');
119 $('#id_th_imglist_path').text('Absolute Path');
120 $('span[id=id_span_image_list_permit]').text('Permit');
121 $('span[id=id_span_image_list_deny]').text('Deny');
122 } else {
123 $('h3[id=id_image_list_mode]').text('模式');
124 $('h3[id=id_image_list_list]').text('列表');
125 $('#id_th_imglist_path').text('绝对路径');
126 $('span[id=id_span_image_list_permit]').text('白名单模式');
127 $('span[id=id_span_image_list_deny]').text('黑名单模式');
128 }
129 }
130
131 function FillImageListTable(data) {
132 var fileexist = ventoy_get_status_line(0, 1);
133 var filenonexist = ventoy_get_status_line(0, 0);
134 var filenfuzzy = ventoy_get_status_line(0, -1);
135
136 var addbtn = ventoy_get_xslg_addbtn('ImageListAddBtn');
137 var delbtn = ventoy_get_xslg_delbtn('ImageListDelBtn');
138
139 var td1, td2, td3, td4;
140 var $tbl = $("#id_image_list_tbl tbody");
141 $tbl.empty();
142
143 for (var i = 0; i < data.length; i++) {
144 var $tr;
145 td1 = '<td>' + (i + 1) + '</td>';
146 td2 = '<td>' + data[i].path + '</td>';
147 td3 = '<td>' + ventoy_get_status_line(0, data[i].valid) + '</td>';
148 td4 = '<td>' + delbtn + '</td>';
149
150 $tr = $('<tr>' + td1 + td2 + td3 + td4 + '</tr>');
151
152 $tr.data('path', data[i].path);
153 $tr.data('index', i);
154 $tbl.append($tr);
155 }
156
157 $tbl.append('<tr><td></td><td></td><td></td><td>' + addbtn + '</td></tr>');
158 }
159
160 function VtoyFillCurrentPageItem(data) {
161 $('input:radio[name=id_image_list_type]')[data.type].checked = true;
162 FillImageListTable(data.list);
163 }
164
165 function VtoySaveCurrentPage() {
166 var data = m_data_imagelist[current_tab_index];
167
168 data.type = parseInt($('input:radio[name=id_image_list_type]:checked').val());
169
170 callVtoy({
171 method : 'save_image_list',
172 index: current_tab_index,
173 type: data.type
174 }, function(e) {
175 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
176 });
177 }
178
179 $('input[type=radio]').each(function(){
180 var id = $(this).attr('id');
181 if (typeof(id) != 'undefined' && id.startsWith('id_image_list_type')) {
182 $(this).change(VtoySaveCurrentPage);
183 }
184 });
185
186 function OnClickMultiModeTab() {
187 var href = $(this).attr('href');
188 var index = parseInt(href.substr(5, 1));
189
190 if (index < 0 || index >= g_vtoy_data_default_index || current_tab_index === index) {
191 return;
192 }
193
194 current_tab_index = index;
195 VtoyFillCurrentPageItem(m_data_imagelist[index]);
196 }
197
198 //Main process
199 var m_data_imagelist;
200 var current_tab_index = 0;
201 callVtoySync({method : 'get_image_list'}, function(data) {
202 m_data_imagelist = data;
203 });
204
205 function OnAddImageList(root, valid, extra) {
206 var list = m_data_imagelist[current_tab_index].list;
207 var data = {
208 "path": root.substr(g_current_dir.length),
209 "valid": valid
210 };
211
212 for (var i = 0; i < list.length; i++) {
213 if (list[i].path === data.path) {
214 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
215 return;
216 }
217 }
218
219 callVtoy({
220 method : 'image_list_add',
221 index: current_tab_index,
222 path: data.path,
223 }, function(e) {
224 if (e.result === 'success') {
225 list.push(data);
226 FillImageListTable(list);
227 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
228 } else if (e.result === 'duplicate') {
229 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
230 }
231 });
232 }
233
234 $("#id_image_list_tbl").on('click', '.ImageListAddBtn', function() {
235 var tip1 = (g_current_os === 'windows') ? '\\ISO\\Windows11.iso' : "/ISO/Ubuntu-20.04-desktop-amd64.iso";
236 var tip2 = (g_current_os === 'windows') ? '\\ISO\\Windows**.iso' : "/ISO/Ubuntu-*****-desktop-amd64.iso";
237 var para = {
238 "title": g_vtoy_cur_language.STR_ADD_FILE_TO_LIST,
239 "fuzzy": 1,
240 "tip1": g_current_dir + tip1,
241 "tip2": g_current_dir + tip2,
242 "tip3": '',
243 "extra": false,
244 "extra_title": ''
245 };
246 VtoySelectFilePath(OnAddImageList, para);
247 });
248
249 $("#id_image_list_tbl").on('click', '.ImageListDelBtn', function() {
250 var $tr = $(this).closest('tr');
251 var path = $tr.data('path');
252 var index = $tr.data('index');
253
254 callVtoySync({
255 method : 'image_list_del',
256 index: current_tab_index,
257 path: path
258 }, function(data) {
259 m_data_imagelist[current_tab_index].list.splice(index, 1);
260 FillImageListTable(m_data_imagelist[current_tab_index].list);
261 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
262 });
263 });
264
265 $('#id_tab_image_list a[href="#tab_0"]').click(OnClickMultiModeTab);
266 $('#id_tab_image_list a[href="#tab_1"]').click(OnClickMultiModeTab);
267 $('#id_tab_image_list a[href="#tab_2"]').click(OnClickMultiModeTab);
268 $('#id_tab_image_list a[href="#tab_3"]').click(OnClickMultiModeTab);
269 $('#id_tab_image_list a[href="#tab_4"]').click(OnClickMultiModeTab);
270 $('#id_tab_image_list a[href="#tab_5"]').click(OnClickMultiModeTab);
271 function UpdateTabTitleIcon(data) {
272 CommonUpdateTabTitleIcon(data.exist_image_list, '#id_tab_image_list a[href="#tab_', 'image_list');
273 }
274 $('#id_btn_reset').click(function() {
275 Modal.confirm({msg:GetResetTabConfigTipMsg(current_tab_index, 'image_list')}).on(function(e) {
276 if (e) {
277 callVtoySync({
278 method : 'image_list_del',
279 index: current_tab_index,
280 path: g_del_all_path
281 }, function(data) {
282
283 });
284
285 m_data_imagelist[current_tab_index].list.length = 0;
286 VtoyFillCurrentPageItem(m_data_imagelist[g_vtoy_data_default_index]);
287 VtoySaveCurrentPage();
288 }
289 });
290 });
291
292 $('#id_tab_image_list a[href="#tab_0"]').tab('show');
293 VtoyFillCurrentPageItem(m_data_imagelist[0]);
294 VtoyPageLanguageChange(g_current_language);
295
296 </script>