]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - Plugson/www/plugson_menu_class.html
1.1.05
[Ventoy.git] / Plugson / www / plugson_menu_class.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-ul">&nbsp;&nbsp;</i>
5 <h1 class="box-title" style="font-weight:bold;" id="id_h1_page_title">xx</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_menuclass.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_menu_class">
19 <li class=""><a href="#tab_0" data-toggle="tab" aria-expanded="false" style="font-weight:bold" >menu_class</a></li>
20 <li class=""><a href="#tab_1" data-toggle="tab" aria-expanded="false" style="font-weight:bold">menu_class_legacy</a></li>
21 <li class=""><a href="#tab_2" data-toggle="tab" aria-expanded="false" style="font-weight:bold">menu_class_uefi</a></li>
22 <li class=""><a href="#tab_3" data-toggle="tab" aria-expanded="false" style="font-weight:bold">menu_class_ia32</a></li>
23 <li class=""><a href="#tab_4" data-toggle="tab" aria-expanded="false" style="font-weight:bold">menu_class_aa64</a></li>
24 <li class=""><a href="#tab_5" data-toggle="tab" aria-expanded="false" style="font-weight:bold">menu_class_mips</a></li>
25 </ul>
26 </div>
27
28 <table id="id_class_tbl" class="table table-bordered">
29 <thead>
30 <tr>
31 <th style="width: 2%;">#</th>
32 <th id="id_th_class_type" style="width: 5%;"></th>
33 <th id="id_th_class_path" style="width: 35%;"></th>
34 <th id="id_th_status" style="width: 5%;"></th>
35 <th id="id_th_class_class" style="width: 40%;"></th>
36 <th id="id_th_operation" style="width: 5%;"></th>
37 </tr>
38 </thead>
39 <tbody>
40 </tbody>
41 </table>
42 </div>
43 </div>
44 <script type="text/javascript">
45
46 function VtoyPageLanguageChange(newlang) {
47 VtoyCommonChangeLanguage(newlang);
48 $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_CLASS);
49
50 $("span[id=id_span_file_exist]").each(function(){
51 $(this).text(g_vtoy_cur_language.STR_FILE_EXIST);
52 });
53 $("span[id=id_span_file_nonexist]").each(function(){
54 $(this).text(g_vtoy_cur_language.STR_FILE_NONEXIST);
55 });
56 $("span[id=id_span_file_fuzzy]").each(function(){
57 $(this).text(g_vtoy_cur_language.STR_FILE_FUZZY);
58 });
59
60 $("span[id=id_span_dir_exist]").each(function(){
61 $(this).text(g_vtoy_cur_language.STR_DIR_EXIST);
62 });
63
64 $("span[id=id_span_dir_nonexist]").each(function(){
65 $(this).text(g_vtoy_cur_language.STR_DIR_NONEXIST);
66 });
67
68 if (newlang === 'en') {
69 $('#id_th_class_path').text('Key/Absolute Path');
70 $('#id_th_class_class').text('Menu Class');
71 $('#id_th_class_type').text('Type');
72 } else {
73 $('#id_th_class_path').text('关键字/绝对路径');
74 $('#id_th_class_class').text('菜单类型');
75 $('#id_th_class_type').text('类型');
76
77 }
78 }
79
80 function FillClassTable(data) {
81
82 var direxist = ventoy_get_status_line(1, 1);
83 var dirnonexist = ventoy_get_status_line(1, 0);
84
85 var addbtn = ventoy_get_xslg_addbtn('ClassAddBtn');
86 var delbtn = ventoy_get_xslg_delbtn('ClassDelBtn');
87
88 var td1, td2, td3, td4, td5, td6;
89 var $tbl = $("#id_class_tbl tbody");
90 $tbl.empty();
91
92 for (var i = 0; i < data.length; i++) {
93 var $tr;
94 td1 = '<td>' + (i + 1) + '</td>';
95
96 td3 = '<td>' + data[i].path + '</td>';
97 if (data[i].type === 0) {
98 td2 = '<td>key</td>';
99 td4 = '<td></td>';
100 } else {
101 if (data[i].type === 1) {
102 td2 = '<td>dir</td>';
103 } else {
104 td2 = '<td>parent</td>';
105 }
106
107 if (data[i].valid === 0) {
108 td4 = '<td>' + dirnonexist + '</td>';
109 } else {
110 td4 = '<td>' + direxist + '</td>';
111 }
112 }
113
114 td5 = '<td>' + data[i].class + '</td>';
115 td6 = '<td>' + delbtn + '</td>';
116
117 $tr = $('<tr>' + td1 + td2 + td3 + td4 + td5 + td6 + '</tr>');
118
119 $tr.data('path', data[i].path);
120 $tr.data('index', i);
121 $tbl.append($tr);
122 }
123
124 $tbl.append('<tr><td></td><td></td><td></td><td></td><td></td><td>' + addbtn + '</td></tr>');
125 }
126
127 function VtoyFillCurrentPageItem(data) {
128 FillClassTable(data);
129 }
130
131
132 function OnClickMultiModeTab() {
133 var href = $(this).attr('href');
134 var index = parseInt(href.substr(5, 1));
135
136 if (index < 0 || index >= g_vtoy_data_default_index || current_tab_index === index) {
137 return;
138 }
139
140 current_tab_index = index;
141 VtoyFillCurrentPageItem(m_data_class[index]);
142 }
143
144 //Main process
145 var m_data_class;
146 var current_tab_index = 0;
147 callVtoySync({method : 'get_class'}, function(data) {
148 m_data_class = data;
149 });
150
151
152 function AddClassEntry(root, type, valid, extra) {
153 var list = m_data_class[current_tab_index];
154 var data = {
155 "path": '',
156 "class": extra,
157 "type": type,
158 "valid": valid
159 };
160
161 if (type === 0) {
162 data.path = root;
163 } else {
164 data.path = root.substr(g_current_dir.length);
165 }
166
167 for (var i = 0; i < list.length; i++) {
168 if (list[i].path === data.path) {
169 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
170 return;
171 }
172 }
173
174 callVtoy({
175 method : 'class_add',
176 index: current_tab_index,
177 path: data.path,
178 class: data.class,
179 type: type
180 }, function(e) {
181 if (e.result === 'success') {
182 list.push(data);
183 FillClassTable(list);
184 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
185 } else if (e.result === 'duplicate') {
186 Message.error(g_vtoy_cur_language.STR_DUPLICATE_PATH);
187 }
188 });
189 }
190
191 function OnAddKeyClass(key, value) {
192 if (!ventoy_check_file_name_char(key)) {
193 Message.error(g_current_language === 'en' ? "As part of file name, key can not include invalid characters!" : "作为文件名的一部分,key 中不能包含特殊的符号!");
194 return;
195 }
196
197 AddClassEntry(key, 0, 1, value);
198 }
199
200 function OnAddDirClassDir(root, extra) {
201 AddClassEntry(root, 1, 1, extra);
202 }
203 function OnAddDirClassParent(root, extra) {
204 AddClassEntry(root, 2, 1, extra);
205 }
206
207 function OnAddClassBtnClick(sel) {
208 if (sel === 0) {
209 var para = {
210 "title": g_vtoy_cur_language.STR_SET_CLASS,
211 "title1": "Key",
212 "title2": g_vtoy_cur_language.STR_CLASS
213 };
214
215 VtoySetKey(OnAddKeyClass, para);
216 } else {
217 var tip = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux";
218 var para = {
219 "title": g_vtoy_cur_language.STR_SET_CLASS,
220 "tip": g_current_dir + tip,
221 "tip3": '',
222 "extra": true,
223 "extra_title": g_vtoy_cur_language.STR_CLASS
224 };
225
226 if (sel === 1) {
227 VtoySelectDirPath(OnAddDirClassDir, para);
228 } else {
229 VtoySelectDirPath(OnAddDirClassParent, para);
230 }
231
232 }
233 }
234
235 $("#id_class_tbl").on('click', '.ClassAddBtn', function() {
236 var para = [
237 {
238 "selected": true,
239 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_KEY
240 },
241 {
242 "selected": false,
243 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_DIR
244 },
245 {
246 "selected": false,
247 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_PARENT
248 }
249 ];
250
251 VtoySelectType(OnAddClassBtnClick, para);
252 });
253
254 $("#id_class_tbl").on('click', '.ClassDelBtn', function() {
255 var $tr = $(this).closest('tr');
256 var path = $tr.data('path');
257 var index = $tr.data('index');
258
259 callVtoySync({
260 method : 'class_del',
261 index: current_tab_index,
262 path: path
263 }, function(data) {
264 m_data_class[current_tab_index].splice(index, 1);
265 FillClassTable(m_data_class[current_tab_index]);
266 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
267 });
268 });
269
270
271
272
273 $('#id_tab_menu_class a[href="#tab_0"]').click(OnClickMultiModeTab);
274 $('#id_tab_menu_class a[href="#tab_1"]').click(OnClickMultiModeTab);
275 $('#id_tab_menu_class a[href="#tab_2"]').click(OnClickMultiModeTab);
276 $('#id_tab_menu_class a[href="#tab_3"]').click(OnClickMultiModeTab);
277 $('#id_tab_menu_class a[href="#tab_4"]').click(OnClickMultiModeTab);
278 $('#id_tab_menu_class a[href="#tab_5"]').click(OnClickMultiModeTab);
279 function UpdateTabTitleIcon(data) {
280 CommonUpdateTabTitleIcon(data.exist_menu_class, '#id_tab_menu_class a[href="#tab_', 'menu_class');
281 }
282 $('#id_btn_reset').click(function() {
283 Modal.confirm({msg:GetResetTabConfigTipMsg(current_tab_index, 'menu_class')}).on(function(e) {
284 if (e) {
285 callVtoySync({
286 method : 'class_del',
287 index: current_tab_index,
288 path: g_del_all_path
289 }, function(data) {
290
291 });
292
293 m_data_class[current_tab_index].length = 0;
294 VtoyFillCurrentPageItem(m_data_class[g_vtoy_data_default_index]);
295 Message.success(g_vtoy_cur_language.STR_SAVE_SUCCESS);
296 }
297 });
298 });
299
300 $('#id_tab_menu_class a[href="#tab_0"]').tab('show');
301 VtoyFillCurrentPageItem(m_data_class[0]);
302 VtoyPageLanguageChange(g_current_language);
303
304 </script>