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