/[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.4 - (hide annotations)
Wed Apr 9 04:10:57 2025 UTC (11 months, 1 week ago) by sysadm
Branch: MAIN
Changes since 1.3: +95 -1 lines
Add section master operation

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 sysadm 1.2 sid: <? echo $result_set["data"]["sid"]; ?>,
53 sysadm 1.1 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 sysadm 1.2 sid: <? echo $result_set["data"]["sid"]; ?>,
96 sysadm 1.1 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 sysadm 1.3 if (op != 0)
108     {
109     errorFieldMap.set("err_msg_current_dir", "操作成功");
110     }
111 sysadm 1.1 refresh_err_msg(errorFieldMap);
112     refresh_ex_dir(f.current_dir, ret.return.data.ex_dir);
113     break;
114     case -1: // Input validation failed
115     ret.return.errorFields.forEach(field => {
116     errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />");
117     });
118     refresh_err_msg(errorFieldMap);
119     break;
120     case -2: // Internal error
121     console.log(ret.return.message);
122     errorFieldMap.set("err_msg_current_dir", "内部错误");
123     refresh_err_msg(errorFieldMap);
124     break;
125     default:
126     console.log(ret.return.code);
127     break;
128     }
129     })
130     .catch(function (error) {
131     console.log(error);
132     });
133    
134     return false;
135     }
136    
137 sysadm 1.4 function master_op(f, op, username)
138     {
139     instance.post('section_master_service.php', {
140     sid: <? echo $result_set["data"]["sid"]; ?>,
141     op: op,
142     username: (username != null ? username : f.master_username.value),
143     type: f.master_type.value,
144     })
145     .then(function (response) {
146     var ret = response.data;
147     var errorFieldMap = new Map();
148     switch (ret.return.code)
149     {
150     case 0: // OK
151     refresh_err_msg(errorFieldMap);
152     document.location = "section_setting.php?sid=<? echo $result_set["data"]["sid"]; ?>&ts=" + Date.now();
153     break;
154     case -1: // Input validation failed
155     ret.return.errorFields.forEach(field => {
156     errorFieldMap.set("err_msg_" + field.id, field.errMsg + "<br />");
157     });
158     refresh_err_msg(errorFieldMap);
159     break;
160     case -2: // Internal error
161     console.log(ret.return.message);
162     errorFieldMap.set("err_msg_master", "内部错误");
163     refresh_err_msg(errorFieldMap);
164     break;
165     default:
166     console.log(ret.return.code);
167     break;
168     }
169     })
170     .catch(function (error) {
171     console.log(error);
172     });
173    
174     return false;
175     }
176    
177 sysadm 1.1 const instance = axios.create({
178     withCredentials: true,
179     timeout: 3000,
180     baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/',
181     });
182    
183     window.addEventListener("load", () => {
184     var f = document.getElementById("section_setting");
185 sysadm 1.2 ex_dir_op(f, 0); // Load dir list
186 sysadm 1.1 f.addEventListener("submit", (e) => {
187     e.preventDefault();
188     switch(e.submitter.name)
189     {
190     case "submit":
191     section_setting(f);
192     break;
193 sysadm 1.4 case "master_appoint":
194     master_op(f, 1, null);
195     break;
196 sysadm 1.1 case "dir_create":
197     ex_dir_op(f, 1);
198     break;
199     case "dir_update":
200     ex_dir_op(f, 2);
201     break;
202     case "dir_delete":
203     ex_dir_op(f, 3);
204     break;
205     default:
206     console.log(e.submitter.name);
207     break;
208     }
209     });
210 sysadm 1.2
211     var s = document.getElementById("section_switch");
212     s.addEventListener("change", (e) => {
213     if (s.value != 0)
214     {
215     document.location = "section_setting.php?sid=" + s.value + "&ts=" + Date.now();
216     }
217     });
218 sysadm 1.1 });
219    
220     </script>
221     </head>
222     <body>
223     <center>
224     <p style="FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: red; FONT-FAMILY: 楷体">版块设定</p>
225     <p><span id="err_msg_prompt" name="err_msg" style="color: red"></span></p>
226     <form method="post" action="#" id="section_setting" name="section_setting" >
227     <table border="1" cellpadding="10" cellspacing="0" width="90%" bgcolor="#ffdead">
228     <tr>
229     <td width="30%" align="right">
230     版块名称
231     </td>
232     <td width="70%">
233 sysadm 1.2 <select id="section_switch" name="section_switch" size="1">
234     <?
235     foreach ($result_set["data"]["section_hierachy"] as $c_index => $section_class)
236     {
237     ?>
238     <option value="0">==<? echo $section_class["title"]; ?>==</option>
239     <?
240     foreach ($section_class["sections"] as $s_index => $section)
241     {
242     ?>
243     <option value="<? echo $section["sid"]; ?>" <? echo ($section["sid"] == $result_set["data"]["sid"] ? "selected" : ""); ?>>&nbsp;&nbsp;├<? echo $section["title"]; ?></option>
244     <?
245     }
246     }
247     ?>
248     </select>
249 sysadm 1.1 </td>
250     </tr>
251     <tr>
252     <td align="right">
253     版块介绍
254     </td>
255     <td>
256 sysadm 1.2 <span id="err_msg_comment" name="err_msg" style="color: red;"></span>
257     <textarea id="textarea_comment" name="textarea" cols="80" rows="5"><? echo htmlspecialchars($result_set["data"]["comment"], ENT_HTML401, 'UTF-8'); ?></textarea>
258 sysadm 1.1 限3行80列以内
259     </td>
260     </tr>
261     <tr>
262     <td align="right">
263     版块公告
264     </td>
265     <td>
266     <span id="err_msg_announcement" name="err_msg" style="color: red;"></span>
267 sysadm 1.2 <textarea id="textarea_announcement" name="textarea" cols="80" rows="5"><? echo htmlspecialchars($result_set["data"]["announcement"], ENT_HTML401, 'UTF-8'); ?></textarea>
268     限3行以内,每行不超过150字符
269 sysadm 1.1 </td>
270     </tr>
271 sysadm 1.4 <?
272     if ($_SESSION["BBS_priv"]->checkpriv($sid, S_MAN_M))
273     {
274     ?>
275     <tr>
276     <td align="right">
277     版主任命
278     </td>
279     <td>
280     <p><span id="err_msg_master" name="err_msg" style="color: red;"></span></p>
281     <?
282     $has_major = false;
283     foreach ($result_set["data"]["masters"] as $m_index => $section_master)
284     {
285     if (!$has_major && $section_master["major"])
286     {
287     $has_major = true;
288     }
289     ?>
290     <p>
291     <? echo ($section_master["major"] ? "正版主" : "副版主"); ?>&nbsp;&nbsp;
292     <a class="s3" href="show_profile.php?uid=<? echo $section_master['uid']; ?>" target=_blank><? echo $section_master["username"]; ?></a>&nbsp;&nbsp;
293     <? echo (new DateTimeImmutable($section_master["begin_dt"]))->setTimezone($_SESSION["BBS_user_tz"])->format("y年m月d日"); ?>--<? echo (new DateTimeImmutable($section_master["end_dt"]))->setTimezone($_SESSION["BBS_user_tz"])->format("y年m月d日"); ?>&nbsp;&nbsp;
294     <?
295     if ($section_master["username"] != $_SESSION["BBS_username"] &&
296     ($_SESSION["BBS_priv"]->checkpriv($sid, S_ADMIN) ||
297     ($section_master["major"] == 0 && $_SESSION["BBS_priv"]->checkpriv($sid, S_MAN_M))))
298     {
299     ?>
300     <a class="s2" href="#" onclick="return master_op(section_setting, 2, '<? echo $section_master["username"]; ?>');">撤销</a>&nbsp;&nbsp;
301     <a class="s2" href="#" onclick="return master_op(section_setting, 3, '<? echo $section_master["username"]; ?>');">延期</a>&nbsp;&nbsp;
302     <?
303     }
304     ?>
305     </p>
306     <?
307     }
308     ?>
309     <p>
310     用户名:
311     <input type="text" id="master_username" name="master_username" size="20">
312     <input type="radio" id="master_major" name="master_type" value="1" <? echo ($has_major ? "disabled" : "checked"); ?>>正版主
313     <input type="radio" id="master_minor" name="master_type" value="0" <? echo ($has_major ? "checked" : ""); ?>>副版主&nbsp;&nbsp;
314     <input type="submit" name="master_appoint" value="任命">&nbsp;&nbsp;
315     <span id="err_msg_username" name="err_msg" style="color: red;"></span>
316     </p>
317     </td>
318     </tr>
319     <?
320     }
321     ?>
322 sysadm 1.1 <tr>
323     <td align="right">
324     精华更新
325     </td>
326     <td>
327     <span id="err_msg_ex_update" name="err_msg" style="color: red;"></span>
328 sysadm 1.2 <input type="checkbox" name="ex_update" <? echo ($result_set["data"]["ex_update"] ? "checked" : ""); ?>>申请更新
329 sysadm 1.1 </td>
330     </tr>
331     <tr>
332     <td align="right">
333     目录管理
334     </td>
335     <td>
336 sysadm 1.4 <p><span id="err_msg_current_dir" name="err_msg" style="color: red;"></span></p>
337 sysadm 1.1 <p>位置:<select id="current_dir" name="current_dir" size="1">
338     </select></p>
339     <p><span id="err_msg_dir" name="err_msg" style="color: red;"></span>
340     目录:<input id="dir" name="dir" value="" size="50">
341     大小写英文字母、数字和下划线的组合,长度不超过20</p>
342     <p><span id="err_msg_dir_name" name="err_msg" style="color: red;"></span>
343     名称:<input id="dir_name" name="dir_name" value="" size="50">
344     长度不超过15个全角字符</p>
345     <p><span id="err_msg_dir_op" name="err_msg" style="color: red;"></span>&nbsp;&nbsp;&nbsp;&nbsp;
346     <input type="submit" name="dir_create" value="新增">&nbsp;&nbsp;&nbsp;&nbsp;
347     <input type="submit" name="dir_update" value="改名">&nbsp;&nbsp;&nbsp;&nbsp;
348     <input type="submit" name="dir_delete" value="删除">
349     </p>
350     </td>
351     </tr>
352     </table>
353     <p align="center">
354     <input type="submit" value="提交" name="submit">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
355     <input type="reset" value="重填" name="reset">
356     </p>
357     </form>
358     </center>
359     </body>
360     </html>

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