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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide 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 sysadm 1.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