/[LeafOK_CVS]/fenglin/bbs/themes/default/section_setting.view.php
ViewVC logotype

Contents of /fenglin/bbs/themes/default/section_setting.view.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Tue Apr 8 09:29:17 2025 UTC (11 months, 1 week ago) by sysadm
Branch: MAIN
Refact set_section with theme and AJAX support

1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>版块设定</title>
5 <link rel="stylesheet" href="<? echo get_theme_file('css/default'); ?>" type="text/css">
6 <script src="../js/polyfill.min.js"></script>
7 <script src="../js/axios.min.js"></script>
8 <script type="text/javascript">
9 function refresh_ex_dir(s, dirList)
10 {
11 for (i = dirList.length - s.options.length; i > 0 ; i--)
12 {
13 s.options.add(new Option());
14 }
15
16 i = 0;
17 for (var dirItem of dirList)
18 {
19 s.options[i].value = dirItem.dir;
20 s.options[i].text = dirItem.dir + '(' + dirItem.name + ')';
21 i++;
22 }
23
24 for (j = s.options.length; j >= i ; j--)
25 {
26 s.options.remove(j);
27 }
28
29 return false;
30 }
31
32 function refresh_err_msg(errorFieldMap)
33 {
34 document.getElementsByName("err_msg").forEach(element => {
35 element.innerHTML = (errorFieldMap.has(element.id) ? errorFieldMap.get(element.id) : "");
36 });
37 }
38
39 function refresh_textarea(updateFieldMap)
40 {
41 document.getElementsByName("textarea").forEach(element => {
42 if (updateFieldMap.has(element.id))
43 {
44 element.value = updateFieldMap.get(element.id);
45 }
46 });
47 }
48
49 function section_setting(f)
50 {
51 instance.post('section_setting_service.php', {
52 sid: <? echo $result_set["return"]["data"]["sid"]; ?>,
53 comment: f.textarea_comment.value,
54 announcement: f.textarea_announcement.value,
55 ex_update: (f.ex_update.checked ? "1" : "0"),
56 })
57 .then(function (response) {
58 var ret = response.data;
59 var errorFieldMap = new Map();
60 var updateFieldMap = new Map();
61 switch (ret.return.code)
62 {
63 case 0: // OK
64 errorFieldMap.set("err_msg_prompt", "更新成功");
65 refresh_err_msg(errorFieldMap);
66 break;
67 case -1: // Input validation failed
68 ret.return.errorFields.forEach(field => {
69 errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />");
70 updateFieldMap.set("textarea_" + field.id, field.updateValue);
71 });
72 refresh_err_msg(errorFieldMap);
73 refresh_textarea(updateFieldMap);
74 break;
75 case -2: // Internal error
76 console.log(ret.return.message);
77 errorFieldMap.set("err_msg_prompt", "内部错误");
78 refresh_err_msg(errorFieldMap);
79 break;
80 default:
81 console.log(ret.return.code);
82 break;
83 }
84 })
85 .catch(function (error) {
86 console.log(error);
87 });
88
89 return false;
90 }
91
92 function ex_dir_op(f, op)
93 {
94 instance.post('ex_dir_service.php', {
95 sid: <? echo $result_set["return"]["data"]["sid"]; ?>,
96 current_dir: f.current_dir.value,
97 dir: f.dir.value,
98 dir_name: f.dir_name.value,
99 dir_op: op,
100 })
101 .then(function (response) {
102 var ret = response.data;
103 var errorFieldMap = new Map();
104 switch (ret.return.code)
105 {
106 case 0: // OK
107 errorFieldMap.set("err_msg_current_dir", "操作成功");
108 refresh_err_msg(errorFieldMap);
109 refresh_ex_dir(f.current_dir, ret.return.data.ex_dir);
110 break;
111 case -1: // Input validation failed
112 ret.return.errorFields.forEach(field => {
113 errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />");
114 });
115 refresh_err_msg(errorFieldMap);
116 break;
117 case -2: // Internal error
118 console.log(ret.return.message);
119 errorFieldMap.set("err_msg_current_dir", "内部错误");
120 refresh_err_msg(errorFieldMap);
121 break;
122 default:
123 console.log(ret.return.code);
124 break;
125 }
126 })
127 .catch(function (error) {
128 console.log(error);
129 });
130
131 return false;
132 }
133
134 const instance = axios.create({
135 withCredentials: true,
136 timeout: 3000,
137 baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/',
138 });
139
140 window.addEventListener("load", () => {
141 var f = document.getElementById("section_setting");
142 f.addEventListener("submit", (e) => {
143 e.preventDefault();
144 switch(e.submitter.name)
145 {
146 case "submit":
147 section_setting(f);
148 break;
149 case "dir_create":
150 ex_dir_op(f, 1);
151 break;
152 case "dir_update":
153 ex_dir_op(f, 2);
154 break;
155 case "dir_delete":
156 ex_dir_op(f, 3);
157 break;
158 default:
159 console.log(e.submitter.name);
160 break;
161 }
162 });
163 });
164
165 </script>
166 </head>
167 <body>
168 <center>
169 <p style="FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: red; FONT-FAMILY: 楷体">版块设定</p>
170 <p><span id="err_msg_prompt" name="err_msg" style="color: red"></span></p>
171 <form method="post" action="#" id="section_setting" name="section_setting" >
172 <table border="1" cellpadding="10" cellspacing="0" width="90%" bgcolor="#ffdead">
173 <tr>
174 <td width="30%" align="right">
175 版块名称
176 </td>
177 <td width="70%">
178 [<? echo $result_set["return"]["data"]["sname"]; ?>]&nbsp;<? echo $result_set["return"]["data"]["s_title"]; ?>
179 </td>
180 </tr>
181 <tr>
182 <td align="right">
183 版块介绍
184 </td>
185 <td>
186 <span id="err_msg_introduction" name="err_msg" style="color: red;"></span>
187 <textarea id="textarea_comment" name="textarea" cols="80" rows="5"><? echo htmlspecialchars($result_set["return"]["data"]["comment"], ENT_HTML401, 'UTF-8'); ?></textarea>
188 限3行80列以内
189 </td>
190 </tr>
191 <tr>
192 <td align="right">
193 版块公告
194 </td>
195 <td>
196 <span id="err_msg_announcement" name="err_msg" style="color: red;"></span>
197 <textarea id="textarea_announcement" name="textarea" cols="80" rows="5"><? echo htmlspecialchars($result_set["return"]["data"]["announcement"], ENT_HTML401, 'UTF-8'); ?></textarea>
198 限3行80列以内
199 </td>
200 </tr>
201 <tr>
202 <td align="right">
203 精华更新
204 </td>
205 <td>
206 <span id="err_msg_ex_update" name="err_msg" style="color: red;"></span>
207 <input type="checkbox" name="ex_update" <? echo ($result_set["return"]["data"]["ex_update"] ? "checked" : ""); ?>>申请更新
208 </td>
209 </tr>
210 <tr>
211 <td align="right">
212 目录管理
213 </td>
214 <td>
215 <span id="err_msg_current_dir" name="err_msg" style="color: red;"></span>
216 <p>位置:<select id="current_dir" name="current_dir" size="1">
217 <?
218 foreach ($result_set["return"]["data"]["ex_dir"] as $ex_dir)
219 {
220 ?>
221 <option value="<? echo $ex_dir["dir"]; ?>"><? echo $ex_dir["dir"]; ?>(<? echo $ex_dir["name"]; ?>)</option>
222 <?
223 }
224 ?>
225 </select></p>
226 <p><span id="err_msg_dir" name="err_msg" style="color: red;"></span>
227 目录:<input id="dir" name="dir" value="" size="50">
228 大小写英文字母、数字和下划线的组合,长度不超过20</p>
229 <p><span id="err_msg_dir_name" name="err_msg" style="color: red;"></span>
230 名称:<input id="dir_name" name="dir_name" value="" size="50">
231 长度不超过15个全角字符</p>
232 <p><span id="err_msg_dir_op" name="err_msg" style="color: red;"></span>&nbsp;&nbsp;&nbsp;&nbsp;
233 <input type="submit" name="dir_create" value="新增">&nbsp;&nbsp;&nbsp;&nbsp;
234 <input type="submit" name="dir_update" value="改名">&nbsp;&nbsp;&nbsp;&nbsp;
235 <input type="submit" name="dir_delete" value="删除">
236 </p>
237 </td>
238 </tr>
239 </table>
240 <p align="center">
241 <input type="submit" value="提交" name="submit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
242 <input type="reset" value="重填" name="reset">
243 </p>
244 </form>
245 </center>
246 </body>
247 </html>

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1