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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.21 - (show annotations)
Fri Oct 31 06:22:33 2025 UTC (4 months, 2 weeks ago) by sysadm
Branch: MAIN
Changes since 1.20: +1 -1 lines
Adopt new LML() with html_trans and new str_length() with skip_ctrl_seq

1 <?php
2 // Prevent load standalone
3 if (!isset($result_set))
4 {
5 exit();
6 }
7 ?>
8 <html>
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
11 <title>发表文章</title>
12 <link rel="stylesheet" href="<?= get_theme_file('css/default'); ?>" type="text/css">
13 <script type="text/javascript" src="<?= get_theme_file('js/lml_assistant'); ?>"></script>
14 <script src="../js/polyfill.min.js"></script>
15 <script src="../js/axios.min.js"></script>
16 <script type="text/javascript">
17 function refresh_err_msg(errorFieldMap)
18 {
19 document.getElementsByName("err_msg").forEach(element => {
20 element.innerHTML = (errorFieldMap.has(element.id) ? errorFieldMap.get(element.id) : "");
21 });
22 }
23
24 function refresh_textarea(updateFieldMap)
25 {
26 document.getElementsByName("textarea").forEach(element => {
27 if (updateFieldMap.has(element.id))
28 {
29 element.value = updateFieldMap.get(element.id);
30 }
31 });
32 }
33
34 function post_article(f)
35 {
36 instance.post('article_service_post.php', {
37 id: <?= $result_set["data"]["id"]; ?>,
38 reply_id: <?= $result_set["data"]["reply_id"]; ?>,
39 sid: <?= $result_set["data"]["sid"]; ?>,
40 title: f.textarea_title.value,
41 transship: (f.transship != null && f.transship.checked ? "1" : "0"),
42 content: f.textarea_content.value,
43 emoji: f.emoji.value,
44 sign_id: f.sign_id.value,
45 reply_note: (f.reply_note.checked ? "1" : "0"),
46 attachment: f.attachment.files,
47 }, {
48 headers: {
49 'Content-Type': 'multipart/form-data',
50 }
51 })
52 .then(function (response) {
53 var ret = response.data;
54 var errorFieldMap = new Map();
55 var updateFieldMap = new Map();
56 switch (ret.return.code)
57 {
58 case 0: // OK
59 var returnPath = "view_article.php?id=" + ret.return.aid + "#" + ret.return.aid;
60 document.location = returnPath;
61 refresh_err_msg(errorFieldMap);
62 break;
63 case -1: // Input validation failed
64 ret.return.errorFields.forEach(field => {
65 errorFieldMap.set("err_msg_" + field.id, "<br />" + field.errMsg);
66 updateFieldMap.set("textarea_" + field.id, field.updateValue);
67 });
68 refresh_err_msg(errorFieldMap);
69 refresh_textarea(updateFieldMap);
70 break;
71 case -2: // Internal error
72 console.log(ret.return.message);
73 errorFieldMap.set("err_msg_prompt", "内部错误");
74 refresh_err_msg(errorFieldMap);
75 break;
76 default:
77 console.log(ret.return.code);
78 break;
79 }
80 })
81 .catch(function (error) {
82 console.log(error);
83 });
84
85 return false;
86 }
87
88 function upload_del(id)
89 {
90 if (window.confirm('真的要删除吗?') == false)
91 {
92 return false;
93 }
94
95 instance.post('upload_service_del.php', {
96 aid: id
97 })
98 .then(function (response) {
99 var ret = response.data;
100 var errorFieldMap = new Map();
101 switch (ret.return.code)
102 {
103 case 0: // OK
104 case 1: // Already deleted
105 document.getElementById("attachment_" + id).style.display = "none";
106 refresh_err_msg(errorFieldMap);
107 break;
108 case -1: // Input validation failed
109 errorFieldMap.set("err_msg_attachment", "<br />" + ret.return.message);
110 refresh_err_msg(errorFieldMap);
111 break;
112 case -2: // Internal error
113 console.log(ret.return.message);
114 errorFieldMap.set("err_msg_prompt", "内部错误");
115 refresh_err_msg(errorFieldMap);
116 break;
117 default:
118 console.log(ret.return.code);
119 break;
120 }
121 })
122 .catch(function (error) {
123 console.log(error);
124 });
125
126 return false;
127 }
128
129 const instance = axios.create({
130 withCredentials: true,
131 timeout: 3000,
132 baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/',
133 });
134
135 window.addEventListener("load", () => {
136 var f = document.getElementById("post_form");
137 f.addEventListener("submit", (e) => {
138 e.preventDefault();
139 post_article(f);
140 });
141 });
142
143 </script>
144 </head>
145 <body>
146 <center>
147 <table border="0" cellpadding="1" cellspacing="0" width="1050">
148 <tr>
149 <td>
150 <a class="s2" href="main.php?sid=<?= $result_set["data"]["sid"]; ?>"><?= $BBS_name; ?></a>&gt;&gt;<a class="s2" href="list.php?sid=<?= $result_set["data"]["sid"]; ?>"><?= $result_set["data"]["section_title"]; ?></a>&gt;&gt;<?php
151 if ($result_set["data"]["id"] == 0)
152 {
153 if ($result_set["data"]["reply_id"] > 0)
154 {
155 ?><a class="s2" href="view_article.php?id=<?= $result_set["data"]["reply_id"] . "#" . $result_set["data"]["reply_id"]; ?>"><?= split_line(htmlspecialchars($result_set["data"]["title"], ENT_HTML401, 'UTF-8'), "", 65, 2, "<br />"); ?></a>&gt;&gt;<a class="s2" href="#" onclick="return false;">回复文章</a><?php
156 }
157 else
158 {
159 ?><a class="s2" href="#" onclick="return false;">发表新文章</a><?php
160 }
161 }
162 else
163 {
164 ?><a class="s2" href="view_article.php?id=<?= $result_set["data"]["id"] . "#" . $result_set["data"]["id"]; ?>"><?= split_line(htmlspecialchars($result_set["data"]["title"], ENT_HTML401, 'UTF-8'), "", 65, 2, "<br />"); ?></a>&gt;&gt;<a class="s2" href="#" onclick="return false;">修改文章</a><?php
165 }
166 ?>
167 </td>
168 </tr>
169 </table>
170 <form method="POST" ENCTYPE="multipart/form-data" id="post_form" name="post_form" action="#">
171 <table border="0" cellpadding="5" cellspacing="0" width="1050">
172 <tr>
173 <td colspan="2" align="center" style="color:red;">别忙着发贴,请先看一下<a class="s0" href="doc/management.xml" target=_blank>《论坛管理章程》</a>吧!<br>
174 (请对您的言论负责,遵守有关法律、法规,尊重网络道德)</td>
175 </tr>
176 <tr height="10">
177 <td colspan="2" align="center"><span id="err_msg_prompt" name="err_msg" style="color: red;"></span></td>
178 </tr>
179 <tr>
180 <td width="20%" align="right">标题<span id="err_msg_title" name="err_msg" style="color: red;"></span></td>
181 <td width="80%">
182 <input type="text" name="textarea" id="textarea_title" size="90" <?= ($result_set["data"]["id"] != 0 ? "readonly" : ""); ?> value="<?= ($result_set["data"]["reply_id"] > 0 ? split_line(htmlspecialchars($result_set["data"]["title"], ENT_QUOTES | ENT_HTML401, 'UTF-8'), "Re: ", 80, 1) : htmlspecialchars($result_set["data"]["title"], ENT_QUOTES | ENT_HTML401, 'UTF-8')); ?>">
183 <?php
184 if ($result_set["data"]["id"] == 0 && $result_set["data"]["reply_id"] == 0)
185 {
186 ?>
187 <input type="checkbox" name="transship">转载
188 <?php
189 }
190 ?></td>
191 </tr>
192 <tr>
193 <td align="right">正文<span id="err_msg_content" name="err_msg" style="color: red;"></span></td>
194 <td>
195 <textarea name="textarea" id="textarea_content" cols="90" rows="25"><?php
196 if ($result_set["data"]["reply_id"] == 0)
197 {
198 echo htmlspecialchars($result_set["data"]["content"], ENT_HTML401, 'UTF-8');
199 }
200 else if ($quote)
201 {
202 ?>
203
204
205
206 【 在 <?= htmlspecialchars($result_set["data"]["r_username"], ENT_HTML401, 'UTF-8'); ?> (<?= htmlspecialchars($result_set["data"]["r_nickname"], ENT_HTML401, 'UTF-8'); ?>) 的大作中提到: 】
207 <?php
208 echo split_line(LML($result_set["data"]["content"], true, 1024 - 3, true), ": ", 1024, 20);
209 }
210 ?></textarea>
211 </td>
212 </tr>
213 <tr>
214 <td align="right"><a class="s0" href="view_article.php?id=472081" target=_blank>LML</a>助手</td>
215 <td>
216 <INPUT type="button" value="B" onclick="b_bold(textarea_content)" style="font-weight:bold; width:25px;">
217 <INPUT type="button" value="I" onclick="b_italic(textarea_content)" style="font-style:italic; width:25px;">
218 <INPUT type="button" value="U" onclick="b_underline(textarea_content)" style="text-decoration:underline; width:25px;">
219 <INPUT type="button" value="[" onclick="b_left(textarea_content)" style="width:20px;">
220 <INPUT type="button" value="]" onclick="b_right(textarea_content)" style="width:20px;">
221 <INPUT type="button" value="Aa" onclick="b_size(textarea_content)" style="width:30px;">
222 <INPUT type="button" value="A" onclick="b_color(textarea_content)" style="font-weight:bold; color:red; width:25px;">
223 <INPUT type="button" value="@" onclick="b_email(textarea_content)" style="width:25px;">
224 <INPUT type="button" value="Link" onclick="b_link(textarea_content)" style="text-decoration:underline; color:blue; width:40px;">
225 <INPUT type="button" value="主题" onclick="b_article(textarea_content)" style="text-decoration:underline; color:green; width:40px;">
226 <INPUT type="button" value="图片" onclick="b_image(textarea_content)" style="width:40px;">
227 <INPUT type="button" value="字幕" onclick="b_marquee(textarea_content)" style="width:40px;">
228 </td>
229 </tr>
230 <tr>
231 <td align="right">上传附件<span id="err_msg_attachment" name="err_msg" style="color: red;"></span></td>
232 <td>
233 单个文件大小不能超过<?= $BBS_upload_size_limit; ?>M,
234 单次上传不超过<?= $BBS_upload_count_limit; ?>个文件<br />
235 文件类型限于BMP,GIF,JPEG,PNG,TIFF,TXT,ZIP,RAR<br />
236 <INPUT TYPE="file" size="40" name="attachment[]" id="attachment" multiple>
237 <?php
238 if ($result_set["data"]["id"] != 0) // Modify article
239 {
240 if (count($result_set["data"]["attachments"]) > 0)
241 {
242 ?>
243 <hr width="80%" align="left" />已上传附件<br />
244 <?php
245 }
246
247 foreach ($result_set["data"]["attachments"] as $aid => $attachment)
248 {
249 $filename = $attachment["filename"];
250 ?>
251 <span id="attachment_<?= $aid; ?>"><img src="images/closed.gif"><a class="s2" href="dl_file.php?aid=<?= $aid; ?>" target="_target"><?= $filename; ?></a> (<?= $attachment["size"]; ?>字节)
252 <?php
253 if ($attachment["check"] == 0)
254 {
255 ?><font color="red">未审核</font><?php
256 }
257 ?>
258 <a class="s2" href="#" onclick="return upload_del(<?= $aid; ?>);">删除</a>
259 <br /></span>
260 <?php
261 }
262 }
263 ?>
264 </td>
265 </tr>
266 <tr>
267 <td align="right">表情<span id="err_msg_emoji" name="err_msg" style="color: red;"></span></td>
268 <td><?php
269 for ($i = 1; $i <= $BBS_emoji_count; $i++)
270 {
271 ?><input type="radio" name="emoji" value="<?= $i; ?>" <?= ($i == $result_set["data"]["emoji"] ? "checked" : ""); ?>><img src="images/expression/<?= $i; ?>.gif" width="15" height="15" alt="<?= $i; ?>.gif"><?php
272 if (($i % 12)==0)
273 {
274 ?><br><?php
275 }
276 }
277 ?></td>
278 </tr>
279 <?php
280 if ($result_set["data"]["id"] == 0)
281 {
282 ?>
283 <tr>
284 <td align="right">签名<span id="err_msg_sign" name="err_msg" style="color: red;"></span></td>
285 <td>
286 <input type="radio" id="sign_id_0" name="sign_id" value="0" checked>不使用&nbsp;
287 <input type="radio" id="sign_id_1" name="sign_id" value="1">1&nbsp;
288 <input type="radio" id="sign_id_2" name="sign_id" value="2">2&nbsp;
289 <input type="radio" id="sign_id_3" name="sign_id" value="3">3&nbsp;
290 <a class="s0" href="update_pref.php" target=_blank>设置个人签名</a>
291 </td>
292 </tr>
293 <?php
294 }
295 else
296 {
297 ?>
298 <input type="hidden" id="sign_id_0" name="sign_id" value="0">
299 <?php
300 }
301 ?>
302 <tr>
303 <td align="right"></td>
304 <td><input type="checkbox" name="reply_note" id="reply_note" <?= ($result_set["data"]["reply_note"] ? "checked":""); ?>>有人回复该文章时通知我</td>
305 </tr>
306 </table>
307 <p><input type="submit" value="提交" name="submit">&nbsp;&nbsp;&nbsp;<input type="reset" value="重填" name="reset"></p>
308 </center>
309 </form>
310 <?php
311 include "./foot.inc.php";
312 ?>
313 </body>
314 </html>

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