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