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"> </i>
5 <h1 class=
"box-title" style=
"font-weight:bold;" id=
"id_h1_page_title">xx
</h1>
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>
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>
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>
28 <table id=
"id_class_tbl" class=
"table table-bordered">
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>
44 <script type=
"text/javascript">
46 function VtoyPageLanguageChange(newlang) {
47 VtoyCommonChangeLanguage(newlang);
48 $('h1[id=id_h1_page_title]').text(g_vtoy_cur_language.STR_PLUG_CLASS);
50 $("span[id=id_span_file_exist]").each(function(){
51 $(this).text(g_vtoy_cur_language.STR_FILE_EXIST);
53 $("span[id=id_span_file_nonexist]").each(function(){
54 $(this).text(g_vtoy_cur_language.STR_FILE_NONEXIST);
56 $("span[id=id_span_file_fuzzy]").each(function(){
57 $(this).text(g_vtoy_cur_language.STR_FILE_FUZZY);
60 $("span[id=id_span_dir_exist]").each(function(){
61 $(this).text(g_vtoy_cur_language.STR_DIR_EXIST);
64 $("span[id=id_span_dir_nonexist]").each(function(){
65 $(this).text(g_vtoy_cur_language.STR_DIR_NONEXIST);
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');
73 $('#id_th_class_path').text('关键字/绝对路径');
74 $('#id_th_class_class').text('菜单类型');
75 $('#id_th_class_type').text('类型');
80 function FillClassTable(data) {
82 var direxist = ventoy_get_status_line(
1,
1);
83 var dirnonexist = ventoy_get_status_line(
1,
0);
85 var addbtn = ventoy_get_xslg_addbtn('ClassAddBtn');
86 var delbtn = ventoy_get_xslg_delbtn('ClassDelBtn');
88 var td1, td2, td3, td4, td5, td6;
89 var $tbl = $("#id_class_tbl tbody");
92 for (var i =
0; i < data.length; i++) {
94 td1 = '
<td>' + (i +
1) + '
</td>';
96 td3 = '
<td>' + data[i].path + '
</td>';
97 if (data[i].type ===
0) {
101 if (data[i].type ===
1) {
102 td2 = '
<td>dir
</td>';
104 td2 = '
<td>parent
</td>';
107 if (data[i].valid ===
0) {
108 td4 = '
<td>' + dirnonexist + '
</td>';
110 td4 = '
<td>' + direxist + '
</td>';
114 td5 = '
<td>' + data[i].class + '
</td>';
115 td6 = '
<td>' + delbtn + '
</td>';
117 $tr = $('
<tr>' + td1 + td2 + td3 + td4 + td5 + td6 + '
</tr>');
119 $tr.data('path', data[i].path);
120 $tr.data('index', i);
124 $tbl.append('
<tr><td></td><td></td><td></td><td></td><td></td><td>' + addbtn + '
</td></tr>');
127 function VtoyFillCurrentPageItem(data) {
128 FillClassTable(data);
132 function OnClickMultiModeTab() {
133 var href = $(this).attr('href');
134 var index = parseInt(href.substr(
5,
1));
136 if (index <
0 || index
>= g_vtoy_data_default_index || current_tab_index === index) {
140 current_tab_index = index;
141 VtoyFillCurrentPageItem(m_data_class[index]);
146 var current_tab_index =
0;
147 callVtoySync({method : 'get_class'}, function(data) {
152 function AddClassEntry(root, type, valid, extra) {
153 var list = m_data_class[current_tab_index];
164 data.path = root.substr(g_current_dir.length);
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);
175 method : 'class_add',
176 index: current_tab_index,
181 if (e.result === 'success') {
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);
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 中不能包含特殊的符号!");
197 AddClassEntry(key,
0,
1, value);
200 function OnAddDirClassDir(root, extra) {
201 AddClassEntry(root,
1,
1, extra);
203 function OnAddDirClassParent(root, extra) {
204 AddClassEntry(root,
2,
1, extra);
207 function OnAddClassBtnClick(sel) {
210 "title": g_vtoy_cur_language.STR_SET_CLASS,
212 "title2": g_vtoy_cur_language.STR_CLASS
215 VtoySetKey(OnAddKeyClass, para);
217 var tip = (g_current_os === 'windows') ? '\\ISO\\Windows' : "/ISO/Linux";
219 "title": g_vtoy_cur_language.STR_SET_CLASS,
220 "tip": g_current_dir + tip,
223 "extra_title": g_vtoy_cur_language.STR_CLASS
227 VtoySelectDirPath(OnAddDirClassDir, para);
229 VtoySelectDirPath(OnAddDirClassParent, para);
235 $("#id_class_tbl").on('click', '.ClassAddBtn', function() {
239 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_KEY
243 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_DIR
247 "tip": g_vtoy_cur_language.STR_SET_CLASS_BY_PARENT
251 VtoySelectType(OnAddClassBtnClick, para);
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');
260 method : 'class_del',
261 index: current_tab_index,
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);
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');
282 $('#id_btn_reset').click(function() {
283 Modal.confirm({msg:GetResetTabConfigTipMsg(current_tab_index, 'menu_class')}).on(function(e) {
286 method : 'class_del',
287 index: current_tab_index,
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);
300 $('#id_tab_menu_class a[
href="#tab_0"]').tab('show');
301 VtoyFillCurrentPageItem(m_data_class[
0]);
302 VtoyPageLanguageChange(g_current_language);