anonymous group photoblog software
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2716 lines
138 KiB

  1. #
  2. # Wakaba Mod Page Templates for (Rough) Futaba-Like Layout
  3. #
  4. use strict;
  5. BEGIN { require "wakautils.pl" }
  6. #
  7. # Page Headers
  8. #
  9. use constant NORMAL_HEAD_INCLUDE => q{
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  12. <head>
  13. <meta http-equiv="expires" content="Wed, 03 Nov 1999 12:21:14 GMT" />
  14. <meta http-equiv="Pragma" content="no-cache" />
  15. <meta http-equiv="Cache-Control" content="no-cache" />
  16. <title><if $title><var $title> - </if><var $board-\>option('TITLE')></title>
  17. <meta http-equiv="Content-Type" content="text/html;charset=<const CHARSET>" />
  18. <link rel="shortcut icon" href="<var expand_filename($board-\>option('FAVICON'))>" />
  19. <style type="text/css">
  20. #adv { background: url('/include/common/unblockad.png') center no-repeat;padding: 0px;margin: 0px auto;text-align:center;width:750px;height:107px;}
  21. body { margin: 0; padding: 8px; margin-bottom: auto; }
  22. blockquote blockquote { margin-left: 0em }
  23. form { margin-bottom: 0px }
  24. form .trap { display:none }
  25. .postarea { text-align: center }
  26. .postarea table { margin: 0px auto; text-align: left }
  27. .thumb { border: none; float: left; margin: 2px 20px }
  28. .nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; }
  29. .reply blockquote, blockquote :last-child { margin-bottom: 0em }
  30. .reflink a { color: inherit; text-decoration: none }
  31. .reply .filesize { margin-left: 20px }
  32. .userdelete { float: right; text-align: center; white-space: nowrap }
  33. .replypage .replylink { display: none }
  34. .oekinfo { font-size: small }
  35. .hidden { display: none }
  36. .inline { display: inline }
  37. </style>
  38. <loop $stylesheets>
  39. <link rel="<if !$default>alternate </if>stylesheet" type="text/css" href="<var $filename>" title="<var $title>" />
  40. </loop>
  41. <script type="text/javascript">var style_cookie="<var $board-\>option('STYLE_COOKIE')>"; var thread_cookie = "<var $board-\>path()>_hidden_threads"; var lastopenfield = 0;</script>
  42. <script type="text/javascript" src="<var root_path_to_filename(JS_FILE)>"></script>
  43. </head>
  44. <if $thread><body class="replypage"></if>
  45. <if !$thread><body></if>
  46. }.include("/home/desuchan/public_html/desuchan.net/htdocs/include/boards/header.html").q{
  47. <div class="adminbar">
  48. <loop $stylesheets>
  49. [<a href="javascript:set_stylesheet('<var $title>')"><var $title></a>]
  50. </loop>
  51. -
  52. [<a href="<var expand_filename(HOME)>" target="_top"><const S_HOME></a>]
  53. [<a href="<var expand_filename("board.rss",1)>" title="Local RSS Feed for This Board"><img src="<var expand_filename("../rss.png")>" style="border:0" alt="RSS" /> Live Feed</a>]
  54. [<a href="<var get_secure_script_name()>?task=loginpanel&amp;board=<var $board-\>path()>"><const S_ADMIN></a>]
  55. </div>
  56. <div class="logo">
  57. <if $board-\>option('SHOWTITLEIMG')==1><img src="<var expand_filename($board-\>option('TITLEIMG'))>" alt="<var $title>" /></if>
  58. <if $board-\>option('SHOWTITLEIMG')==2><img src="<var expand_filename($board-\>option('TITLEIMG'))>" onclick="this.src=this.src;" alt="<var $board-\>option('TITLE')>" /></if>
  59. <if $board-\>option('SHOWTITLEIMG') and $board-\>option('SHOWTITLETXT')><br /></if>
  60. <if $board-\>option('SHOWTITLETXT')><var $board-\>option('TITLE')></if>
  61. </div><hr />
  62. };
  63. use constant MINI_HEAD_INCLUDE => q{
  64. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">}."\n\n".q{
  65. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  66. <head>
  67. <title><var $board-\>path()> - <var $board-\>option('TITLE')></title>
  68. <meta http-equiv="Content-Type" content="text/html;charset=<const CHARSET>" />
  69. <link rel="shortcut icon" href="<var expand_filename($board-\>option('FAVICON'))>" />
  70. <style type="text/css">
  71. #adv { background: url('/include/common/unblockad.png') center no-repeat;padding: 0px;margin: 0px auto;text-align:center;width:750px;height:107px;}
  72. body { margin: 0; padding: 8px; margin-bottom: auto; }
  73. blockquote blockquote { margin-left: 0em }
  74. form { margin-bottom: 0px }
  75. form .trap { display:none }
  76. .postarea { text-align: center }
  77. .postarea table { margin: 0px auto; text-align: left }
  78. .thumb { border: none; float: left; margin: 2px 20px }
  79. .nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; }
  80. .reply blockquote, blockquote :last-child { margin-bottom: 0em }
  81. .reflink a { color: inherit; text-decoration: none }
  82. .reply .filesize { margin-left: 20px }
  83. .userdelete { float: right; text-align: center; white-space: nowrap }
  84. .replypage .replylink { display: none }
  85. </style>
  86. <loop $stylesheets>
  87. <link rel="<if !$default>alternate </if>stylesheet" type="text/css" href="<var $filename>" title="<var $title>" />
  88. </loop>
  89. <script type="text/javascript">var style_cookie="<var $board-\>option('STYLE_COOKIE')>"; var thread_cookie = "<var $board-\>path()>_hidden_threads"; var lastopenfield = 0;</script>
  90. <script type="text/javascript" src="<var root_path_to_filename(JS_FILE)>"></script>
  91. </head>
  92. <body>
  93. };
  94. use constant MINI_HEAD_REFRESH_INCLUDE => q{
  95. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">}."\n\n".q{
  96. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  97. <head>
  98. <title><if $title><var $title> - </if><var $board-\>option('TITLE')></title>
  99. <meta http-equiv="Content-Type" content="text/html;charset=<const CHARSET>" />
  100. <link rel="shortcut icon" href="<var expand_filename($board-\>option('FAVICON'))>" />
  101. <style type="text/css">
  102. #adv { background: url('/include/common/unblockad.png') center no-repeat; padding: 0px; margin: 0px auto; text-align: center; }
  103. body { margin: 0; padding: 8px; margin-bottom: auto; }
  104. blockquote blockquote { margin-left: 0em }
  105. form { margin-bottom: 0px }
  106. form .trap { display:none }
  107. .postarea { text-align: center }
  108. .postarea table { margin: 0px auto; text-align: left }
  109. .thumb { border: none; float: left; margin: 2px 20px }
  110. .nothumb { float: left; background: #eee; border: 2px dashed #aaa; text-align: center; margin: 2px 20px; padding: 1em 0.5em 1em 0.5em; }
  111. .reply blockquote, blockquote :last-child { margin-bottom: 0em }
  112. .reflink a { color: inherit; text-decoration: none }
  113. .reply .filesize { margin-left: 20px }
  114. .userdelete { float: right; text-align: center; white-space: nowrap }
  115. .replypage .replylink { display: none }
  116. </style>
  117. <loop $stylesheets>
  118. <link rel="<if !$default>alternate </if>stylesheet" type="text/css" href="<var $filename>" title="<var $title>" />
  119. </loop>
  120. <script type="text/javascript">var style_cookie="<var $board-\>option('STYLE_COOKIE')>";</script>
  121. <script type="text/javascript" src="<var root_path_to_filename(JS_FILE)>"></script>
  122. </head>
  123. <body onload="window.opener.location.reload()">
  124. };
  125. use constant NORMAL_FOOT_INCLUDE => include("/home/desuchan/public_html/desuchan.net/htdocs/include/boards/footer.html").q{
  126. </body></html>
  127. };
  128. use constant MINI_FOOT_INCLUDE => q{
  129. </body></html>
  130. };
  131. use constant PAGINATION_SECTION => q{
  132. <div align="center">
  133. There were <strong><var $rowcount></strong> entries found. Showing <var $perpage> per page.
  134. <br />
  135. <span>
  136. <if $page != 1 && $number_of_pages><a href="<var $rooturl>&amp;page=1&amp;perpage=<var $perpage>"></if>
  137. &lt;&lt;<if $page != 1 && $number_of_pages></a></if>
  138. </span>
  139. <span style="padding-left:1em">
  140. <if $page != 1 && $number_of_pages><a href="<var $rooturl>&amp;page=<var $page-1>&amp;perpage=<var $perpage>"></if>
  141. &lt;<if $page != 1 && $number_of_pages></a></if>
  142. </span>
  143. <span style="padding-left:2em;padding-right:2em">Page <var $page> of <var $number_of_pages></span>
  144. <span style="padding-right:1em">
  145. <if $page != $number_of_pages><a href="<var $rooturl>&amp;page=<var $page+1>&amp;perpage=<var $perpage>"></if>
  146. &gt;<if $page != $number_of_pages></a></if>
  147. </span>
  148. <if $page != $number_of_pages><a href="<var $rooturl>&amp;page=<var $number_of_pages>&amp;perpage=<var $perpage>"></if>
  149. &gt;&gt;<if $page != $number_of_pages></a></if>
  150. </div>
  151. <br />
  152. <div align="center">
  153. <form action="<var $self>" method="get" style="display:inline;padding-right:5em"><loop $inputs><input type="hidden" name="<var $name>" value="<var $value>" /></loop>Show <select name="perpage"><option value="25">25</option><option value="50">50</option><option value="100">100</option><option value="200">200</option></select> per page. <input type="submit" value="Change" /></form>
  154. <form action="<var $self>" method="get" style="display:inline"><loop $inputs><input type="hidden" name="<var $name>" value="<var $value>" /></loop>Jump to page: <input type="text" name="page" value="" size="2" /> <input type="submit" value="Jump" /><input type="hidden" name="task" value="stafflog" /></form>
  155. </div>
  156. <br />
  157. };
  158. #
  159. # Board Pages
  160. #
  161. use constant PAGE_TEMPLATE => compile_template(NORMAL_HEAD_INCLUDE.q{
  162. <if $lockedthread ne 'yes'>
  163. <if $thread>
  164. [<a href="<var expand_filename($board-\>option('HTML_SELF'))>"><const S_RETURN></a>]
  165. <if !$omit>
  166. <div class="theader"><const S_POSTING></div>
  167. </if>
  168. <if $omit>
  169. <div class="theader">Posting Mode: Reply (Abbreviated Thread View)</div>
  170. </if>
  171. </if>
  172. <div class="globalannounce">}.include("/home/desuchan/public_html/desuchan.net/htdocs/include/boards/announcements_global.html").q{</div>
  173. <div class="announcements"><var encode_string((compile_template(include($board-\>path().'/'."include/announcements.html")))-\>(board=\>$board))></div>
  174. <if $board-\>option('ENABLE_OEKAKI')>
  175. <if $thread><hr /></if>
  176. <div align="center">
  177. <form action="<var $self>" method="get">
  178. <input type="hidden" name="task" value="paint" />
  179. <input type="hidden" name="board" value="<var $board-\>path>" />
  180. <if $thread><input type="hidden" name="oek_parent" value="<var $thread>" /></if>
  181. <const S_OEKPAINT>
  182. <select name="oek_painter">
  183. <loop S_OEKPAINTERS>
  184. <if $painter eq $board-\>option('OEKAKI_DEFAULT_PAINTER')>
  185. <option value="<var $painter>" selected="selected"><var $name></option>
  186. </if>
  187. <if $painter ne $board-\>option('OEKAKI_DEFAULT_PAINTER')>
  188. <option value="<var $painter>"><var $name></option>
  189. </if>
  190. </loop>
  191. </select>
  192. <const S_OEKX><input type="text" name="oek_x" size="3" value="<var $board-\>option('OEKAKI_DEFAULT_X')>" />
  193. <const S_OEKY><input type="text" name="oek_y" size="3" value="<var $board-\>option('OEKAKI_DEFAULT_Y')>" />
  194. <if $thread><input type="hidden" name="dummy" value="<var $dummy>" /></if>
  195. <if $board-\>option('OEKAKI_ENABLE_MODIFY') and $thread>
  196. <const S_OEKSOURCE>
  197. <select name="oek_src">
  198. <option value=""><const S_OEKNEW></option>
  199. <loop $threads>
  200. <loop $posts>
  201. <if $image>
  202. <option value="<var $image>"><var sprintf S_OEKMODIFY,$num></option>
  203. </if>
  204. </loop>
  205. </loop>
  206. </select>
  207. </if>
  208. <input type="submit" value="<const S_OEKSUBMIT>" />
  209. </form>
  210. </div><hr />
  211. </if>
  212. <if $postform>
  213. <div class="postarea">
  214. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  215. <input type="hidden" name="board" value="<var $board-\>path>" />
  216. <input type="hidden" name="task" value="post" />
  217. <if $thread><input type="hidden" name="parent" value="<var $thread>" /></if>
  218. <if !$image_inp and !$thread and $board-\>option('ALLOW_TEXTONLY')>
  219. <input type="hidden" name="nofile" value="1" />
  220. </if>
  221. <if $board-\>option('FORCED_ANON')><input type="hidden" name="name" /></if>
  222. <if $board-\>option('SPAM_TRAP')><div class="trap"><const S_SPAMTRAP><input type="text" name="name" size="28" /><input type="text" name="link" size="28" /></div></if>
  223. <table><tbody>
  224. <if !($board-\>option('FORCED_ANON'))><tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" size="28" /></td></tr></if>
  225. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" /></td></tr>
  226. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" />
  227. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  228. <tr><td class="postblock"><const S_COMMENT></td><td><textarea name="comment" cols="48" rows="4"></textarea></td></tr>
  229. <if $image_inp>
  230. <tr><td class="postblock"><const S_UPLOADFILE></td><td><input type="file" name="file" size="35" />
  231. <if $textonly_inp>[<label><input type="checkbox" name="nofile" value="on" /><const S_NOFILE> ]</label></if>
  232. </td></tr>
  233. </if>
  234. <if $board-\>option('ENABLE_CAPTCHA')>
  235. <tr><td class="postblock"><const S_CAPTCHA></td><td><input type="text" name="captcha" size="10" />
  236. <img alt="" src="<var expand_filename($board-\>option('CAPTCHA_SCRIPT'))>?key=<var get_captcha_key($thread)>&amp;dummy=<var $dummy>" />
  237. </td></tr>
  238. </if>
  239. <tr><td class="postblock"><const S_DELPASS></td><td><input type="password" name="password" size="8" /> <const S_DELEXPL></td></tr>
  240. <tr><td colspan="2">
  241. <div class="rules"><var encode_string((compile_template(include($board-\>path().'/'."../include/boards/rules.html")))-\>(board=\>$board))></div></td></tr>
  242. </tbody></table></form></div>
  243. <script type="text/javascript">set_inputs("postform",false)</script>
  244. </if>
  245. </if>
  246. <if $lockedthread eq 'yes'>
  247. [<a href="<var expand_filename($board-\>option('HTML_SELF'))>"><const S_RETURN></a>]
  248. <p style="font-weight:bold;font-size:1.2em"><const S_LOCKEDANNOUNCE></p>
  249. </if>
  250. <hr />
  251. <if !$thread>
  252. <script type="text/javascript">
  253. var hiddenThreads=get_cookie(thread_cookie);
  254. </script>
  255. </if>
  256. <form id="delform" action="<var $self>" method="post">
  257. <loop $threads>
  258. <loop $posts>
  259. <if !$parent>
  260. <div id="t<var $num>_info" style="float:left"></div>
  261. <if !$thread><span id="t<var $num>_display" style="float:right"><a href="javascript:threadHide('t<var $num>')" id="togglet<var $num>">Hide Thread (&minus;)</a><ins><noscript><br/>(Javascript Required.)</noscript></ins></span></if>
  262. <div id="t<var $num>">
  263. <if $image>
  264. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  265. -(<em><if ( $size <= 10240 ) ><var $size> B</if><if ( $size \> 10240 && $size < 1048576 ) ><var round_decimal($size/1024, 1)> KiB</if><if ( $size \>= 1048576 )><var round_decimal($size/1048576, 1)> MiB</if>, <var $width>x<var $height></em>)</span>
  266. <span class="thumbnailmsg"><const S_THUMB></span><br />
  267. <if $thumbnail>
  268. <a target="_blank" href="<var expand_image_filename($image)>" >
  269. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" /></a>
  270. </if>
  271. <if !$thumbnail>
  272. <if $board-\>option('DELETED_THUMBNAIL')>
  273. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  274. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  275. </if>
  276. <if !($board-\>option('DELETED_THUMBNAIL'))>
  277. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  278. </if>
  279. </if>
  280. </if>
  281. <a name="<var $num>"></a>
  282. <label><input type="checkbox" name="num" value="<var $num>" />
  283. <span class="filetitle"><var $subject></span>
  284. <if $email><span class="postername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  285. <if !$email><span class="postername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  286. <if $stickied> <img src="<var expand_filename('/include/boards/sticky.gif')>" alt="<const S_STICKIEDALT>" title="<const S_STICKIED>" /> </if>
  287. <if $locked eq 'yes'> <img src="<var expand_filename('/include/boards/locked.gif')>" alt="<const S_LOCKEDALT>" title="<const S_LOCKED>" /> </if>
  288. <var $date></label>
  289. <span class="reflink">
  290. <if !$thread><span><a href="<var get_reply_link($num,0)>#<var $num>">No.</a><a href="<var get_reply_link($num,0)>#i<var $num>"><var $num></a></span></if>
  291. <if $thread><span><a href="#<var $num>">No.</a><a href="javascript:insert('&gt;&gt;<var $num>')"><var $num></a></span></if>
  292. </span>&nbsp;
  293. <span class="deletelink" id="deletelink<var $num>">
  294. [<a href="<var $self>?task=delpostwindow&amp;num=<var $num>&amp;board=<var $board-\>path()>" target="_blank" onclick="passfield('<var $num>',false); return false">Delete</a>]
  295. <span id="delpostcontent<var $num>" style="display:inline"></span>
  296. </span>&nbsp;
  297. [<a href="<var $self>?task=edit&amp;board=<var $board-\>path>&amp;num=<var $num><if $admin_post eq 'yes'>&amp;admin_post=1</if>" target="_blank" onclick="popUpPost('<var $self>?task=edit&amp;board=<var $board-\>path>&amp;num=<var $num><if $admin_post eq 'yes'>&amp;admin_post=1</if>'); return false">Edit</a>]&nbsp;
  298. <if !$thread>
  299. <if $locked ne 'yes'>[<a href="<var get_reply_link($num,0)>"><const S_REPLY></a><if ENABLE_ABBREVIATED_THREAD_PAGES && $omit && $omit + $board-\>option("REPLIES_PER_THREAD") \> POSTS_IN_ABBREVIATED_THREAD_PAGES>/<a href="<var get_reply_link($num,0,1)>">Last <const POSTS_IN_ABBREVIATED_THREAD_PAGES></a></if>]</if>
  300. <if $locked eq 'yes'>[<a href="<var get_reply_link($num,0)>"><const S_VIEW></a>]</if>
  301. </if>
  302. <blockquote>
  303. <var $comment>
  304. <if $abbrev><div class="abbrev"><var sprintf(S_ABBRTEXT,(ENABLE_ABBREVIATED_THREAD_PAGES && $omit && $omit + $board-\>option("REPLIES_PER_THREAD") \> POSTS_IN_ABBREVIATED_THREAD_PAGES) ? get_reply_link($num,$parent,1) : get_reply_link($num,$parent))></div></if>
  305. <if $lastedit><p style="font-size: small; font-style: italic"><const S_LASTEDITED><if $admin_post eq 'yes'> <const S_BYMOD></if> <var $lastedit>.</p></if>
  306. </blockquote>
  307. <if !$thread && $omit>
  308. <span class="omittedposts">
  309. <if $omitimages && !$locked><var sprintf S_ABBRIMG,$omit,$omitimages></if>
  310. <if $omitimages && $locked><var sprintf S_ABBRIMG_LOCK, $omit, $omitimages></if>
  311. <if !$omitimages && !$locked><var sprintf S_ABBR,$omit></if>
  312. <if !$omitimages && $locked><var sprintf S_ABBR_LOCK,$omit></if>
  313. </span>
  314. </if>
  315. <if $thread && $omit>
  316. <span class="omittedposts">
  317. This page shows only the latest <const POSTS_IN_ABBREVIATED_THREAD_PAGES> replies to this thread.
  318. For the other <var $omit>, refer to <a href="<var get_reply_link($thread,0)>">the full thread page</a>.
  319. </span>
  320. </if>
  321. <if !$thread>
  322. <script type="text/javascript">
  323. if (hiddenThreads.indexOf('t<var $num>,') != -1)
  324. {
  325. toggleHidden('t<var $num>');
  326. }
  327. </script>
  328. </if>
  329. </if>
  330. <if $parent>
  331. <table><tbody><tr><td class="doubledash">&gt;&gt;</td>
  332. <td class="reply" id="reply<var $num>">
  333. <a name="<var $num>"></a>
  334. <label><input type="checkbox" name="num" value="<var $num>" />
  335. <span class="replytitle"><var $subject></span>
  336. <if $email><span class="commentpostername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  337. <if !$email><span class="commentpostername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  338. <var $date></label>
  339. <span class="reflink">
  340. <if !$thread><span><a href="<var get_reply_link($parent,0)>#<var $num>">No.</a><a href="<var get_reply_link($parent,0)>#i<var $num>"><var $num></a></span></if>
  341. <if $thread><span><a href="#<var $num>">No.</a><a href="javascript:insert('&gt;&gt;<var $num>')"><var $num></a></span></if>
  342. </span>&nbsp;
  343. <span class="deletelink" id="deletelink<var $num>">
  344. [<a href="<var $self>?task=delpostwindow&amp;num=<var $num>&amp;board=<var $board-\>path>" target="_blank" onclick="passfield('<var $num>', false); return false">Delete</a>]
  345. <span id="delpostcontent<var $num>" style="display:inline"></span>
  346. </span>&nbsp;
  347. [<a href="<var $self>?task=edit&amp;board=<var $board-\>path>&amp;num=<var $num><if $admin_post eq 'yes'>&amp;admin_post=1</if>" target="_blank" onclick="popUpPost('<var $self>?task=edit&amp;board=<var $board-\>path>&amp;num=<var $num><if $admin_post eq 'yes'>&amp;admin_post=1</if>'); return false">Edit</a>]
  348. <if $image>
  349. <br />
  350. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  351. -(<em><if ( $size <= 10240 ) ><var $size> B</if><if ( $size \> 10240 && $size < 1048576 ) ><var round_decimal($size/1024, 1)> KiB</if><if ( $size \>= 1048576 )><var round_decimal($size/1048576, 1)> MiB</if>, <var $width>x<var $height></em>)</span>
  352. <span class="thumbnailmsg"><const S_THUMB></span><br />
  353. <if $thumbnail>
  354. <a target="_blank" href="<var expand_image_filename($image)>">
  355. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  356. </if>
  357. <if !$thumbnail>
  358. <if $board-\>option('DELETED_THUMBNAIL')>
  359. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  360. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  361. </if>
  362. <if !($board-\>option('DELETED_THUMBNAIL'))>
  363. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  364. </if>
  365. </if>
  366. </if>
  367. <blockquote>
  368. <var $comment>
  369. <if $abbrev><div class="abbrev"><var sprintf(S_ABBRTEXT,((ENABLE_ABBREVIATED_THREAD_PAGES && $omit && $omit + $board-\>option("REPLIES_PER_THREAD") \> POSTS_IN_ABBREVIATED_THREAD_PAGES) ? get_reply_link($num,$parent,1) : get_reply_link($num,$parent)))></div></if>
  370. <if $lastedit><p style="font-size: small; font-style: italic">Last edited<if $admin_post eq 'yes'> by moderator</if> <var $lastedit>.</p></if>
  371. </blockquote>
  372. </td></tr></tbody></table>
  373. </if>
  374. </loop>
  375. </div>
  376. <br clear="left" /><hr />
  377. </loop>
  378. <table class="userdelete"><tbody><tr><td>
  379. <input type="hidden" name="board" value="<var $board-\>path>" />
  380. <const S_REPDEL>[<label><input type="checkbox" name="fileonly" value="on" /><const S_DELPICONLY></label>]
  381. <const S_DELKEY><input type="password" name="password" size="8" />
  382. <input value="<const S_DELETE>" name="task" type="submit" />
  383. </td></tr>
  384. <tr><td>Report Post(s) to Staff <input value="Report" name="task" type="submit" /></td></tr>
  385. </tbody></table>
  386. </form>
  387. <script type="text/javascript">set_delpass("delform")</script>
  388. <if !$thread>
  389. <table border="1"><tbody><tr><td>
  390. <if $prevpage><form method="get" action="<var $prevpage>"><input value="<const S_PREV>" type="submit" /></form></if>
  391. <if !$prevpage><const S_FIRSTPG></if>
  392. </td><td>
  393. <loop $pages>
  394. <if !$current>[<a href="<var $filename>"><var $page></a>]</if>
  395. <if $current>[<var $page>]</if>
  396. </loop>
  397. </td><td>
  398. <if $nextpage><form method="get" action="<var $nextpage>"><input value="<const S_NEXT>" type="submit" /></form></if>
  399. <if !$nextpage><const S_LASTPG></if>
  400. </td></tr></tbody></table>
  401. </if>
  402. <br clear="all" />
  403. }.NORMAL_FOOT_INCLUDE);
  404. #
  405. # Editing and Deletion Pages
  406. #
  407. use constant PASSWORD => compile_template (MINI_HEAD_INCLUDE. q{
  408. <h1 style="text-align:center;font-size:1em">Now Editing Post No.<var $num></h1>
  409. <if !$admin_post>
  410. <form action="<var $self>?board=<var $board-\>path>" method="post" id="delform">
  411. <input type="hidden" name="task" value="editpostwindow" />
  412. <input type="hidden" name="board" value="<var $board-\>path()>" />
  413. <input type="hidden" name="num" value="<var $num>" />
  414. <p style="text-align:center">
  415. <const S_PROMPTPASSWORD>
  416. <input type="password" name="password" size="8" />
  417. <input value="Edit" type="submit" />
  418. </p>
  419. <script type="text/javascript">set_delpass("delform")</script>
  420. </form>
  421. </if>
  422. <if $admin_post>
  423. <p style="text-align:center"><const S_PROMPTPASSWORDADMIN></p>
  424. </if>
  425. }.MINI_FOOT_INCLUDE);
  426. use constant DELPASSWORD => compile_template (MINI_HEAD_INCLUDE. q{
  427. <h1 style="text-align:center;font-size:1em">Deleting Post No.<var $num></h1>
  428. <form action="<var $self>" method="post" id="delform">
  429. <input type="hidden" name="board" value="<var $board-\>path()>" />
  430. <input type="hidden" name="task" value="delete" />
  431. <input type="hidden" name="num" value="<var $num>" />
  432. <input type="hidden" name="fromwindow" value="1" />
  433. <p style="text-align:center">
  434. <const S_PROMPTPASSWORD><input type="password" name="password" size="8"/>
  435. <br />
  436. [<label><input type="checkbox" name="fileonly" value="on" /><const S_DELPICONLY></label>]
  437. <input value="Delete" type="submit" />
  438. </p>
  439. <script type="text/javascript">set_delpass("delform")</script>
  440. </form>
  441. }.MINI_FOOT_INCLUDE);
  442. use constant POST_EDIT_TEMPLATE => compile_template (MINI_HEAD_INCLUDE.q{
  443. <loop $loop>
  444. <h1 style="text-align:center;font-size:1em">Now Editing Post No.<var $num></h1>
  445. <if $admin><div align="center"><em><const S_NOTAGS></em></div></if>
  446. <div class="postarea">
  447. <if !$admin && $board-\>option('ENABLE_OEKAKI')>
  448. <form action="<var $self>" method="get">
  449. <input type="hidden" name="task" value="paint" />
  450. <input type="hidden" name="board" value="<var $board-\>path()>" />
  451. <hr />
  452. <const S_OEKPAINT>
  453. <select name="oek_painter">
  454. <loop S_OEKPAINTERS>
  455. <if $painter eq $board-\>option('OEKAKI_DEFAULT_PAINTER')>
  456. <option value="<var $painter>" selected="selected"><var $name></option>
  457. </if>
  458. <if $painter ne $board-\>option('OEKAKI_DEFAULT_PAINTER')>
  459. <option value="<var $painter>"><var $name></option>
  460. </if>
  461. </loop>
  462. </select>
  463. <const S_OEKX><input type="text" name="oek_x" size="3" value="<var $width>" />
  464. <const S_OEKY><input type="text" name="oek_y" size="3" value="<var $height>" />
  465. <input type="hidden" name="oek_src" value="<var $image>" />
  466. <input type="hidden" name="num" value="<var $num>" />
  467. <input type="hidden" name="oek_parent" value="<var $parent>" />
  468. <input type="submit" value="Oekaki Edit" name="oek_editing" />
  469. <input type="hidden" name="password" value="<var $password>" />
  470. <input type="hidden" name="num" value="<var $num>" />
  471. <hr />
  472. </form>
  473. </if>
  474. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  475. <input type="hidden" name="num" value="<var $num>" />
  476. <input type="hidden" name="password" value="<var $password>" />
  477. <input type="hidden" name="task" value="editpost" />
  478. <input type="hidden" name="board" value="<var $board-\>path()>" />
  479. <if $admin>
  480. <input type="hidden" name="adminedit" value="1" />
  481. <input type="hidden" name="no_captcha" value="1" />
  482. <input type="hidden" name="no_format" value="1" />
  483. </if>
  484. <if $parent><input type="hidden" name="parent" value="<var $parent>" /></if>
  485. <if $board-\>option('FORCED_ANON')><input type="hidden" name="name" /></if>
  486. <if $board-\>option('SPAM_TRAP')><div class="trap"><const S_SPAMTRAP><input type="text" name="name" size="28" /><input type="text" name="link" size="28" /></div></if>
  487. <table><tbody>
  488. <if !($board-\>option('FORCED_ANON'))><tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" value="<var $name>" size="28" /><if $trip> <var $trip><br />(Enter new tripcode above to change.)<br />[<label><input type="checkbox" value="1" name="killtrip" /> Remove Tripcode?</label>]</if></td></tr></if>
  489. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" value="<var $email>" /></td></tr>
  490. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" value="<var $subject>" />
  491. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  492. <tr><td class="postblock"><const S_COMMENT></td><td>
  493. <textarea name="comment" cols="48" rows="4"><if $admin><var clean_string($comment)></if><if !$admin><var tag_killa($comment)></if></textarea></td></tr>
  494. <if $board-\>option('ALLOW_IMAGE_REPLIES') || !$parent>
  495. <tr><td class="postblock"><const S_NEWFILE></td><td><input type="file" name="file" size="35" />
  496. <br />(Keep this field blank to leave the file unchanged.)
  497. </td></tr>
  498. </if>
  499. <if $board-\>option('ENABLE_CAPTCHA')>
  500. <tr><td class="postblock"><const S_CAPTCHA></td><td><input type="text" name="captcha" size="10" />
  501. <img alt="" src="<var expand_filename($board-\>option('CAPTCHA_SCRIPT'))>?key=<var get_captcha_key($parent)>&amp;dummy=<var $num>" />
  502. </td></tr>
  503. </if>
  504. </tbody></table></form></div>
  505. </loop>
  506. }.MINI_FOOT_INCLUDE);
  507. #
  508. # Error Pages
  509. #
  510. use constant ERROR_TEMPLATE => compile_template(NORMAL_HEAD_INCLUDE.q{
  511. <h1 style="text-align: center"><var $error><br /><br />
  512. <a href="<var escamp($ENV{HTTP_REFERER})>"><const S_RETURN></a><br /><br />
  513. </h1>
  514. }.NORMAL_FOOT_INCLUDE);
  515. use constant ERROR_TEMPLATE_MINI => compile_template(MINI_HEAD_INCLUDE.q{
  516. <h1 style="text-align:center"><var $error><br /><br />
  517. <a href="<var escamp($ENV{HTTP_REFERER})>"><const S_RETURN></a><br /><br />
  518. </h1>
  519. }.MINI_FOOT_INCLUDE);
  520. #
  521. # !!! Customized Ban Template !!!
  522. #
  523. use constant BAN_TEMPLATE => compile_template(q{
  524. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  525. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  526. <head>
  527. <link rel="stylesheet" type="text/css" href="/site.css" />
  528. <title><const S_BADHOST> - Cirnochan</title>
  529. </head>
  530. <body class="content">
  531. <div class="top">
  532. <div class="wrapper">
  533. <h1>
  534. <img border="0" src="desubanner.png" width="800" height="128" alt="The mother fucking banner goes here" />
  535. </h1>
  536. <div class="bodywrapper">
  537. <div class="subheader">
  538. Back to the Internet desu~
  539. </div>
  540. <div id="bannotice" class="contentbody">
  541. <div class="item">
  542. <div class="itemheader">
  543. <h3><const S_BADHOST></h3>
  544. </div>
  545. <div class="itemcontent">
  546. <p style="text-align:center"><img src="<var expand_filename('/include/boards/ban_images/randimg.php')>" alt="Ban Image" /></p>
  547. <p><em><const S_BAN_WHY></em></p>
  548. <p><const S_BAN_REASON>: <strong><var $comment></strong></p>
  549. <p><const S_CURRENT_IP> <strong><var $numip></strong></p>
  550. <p><if $expiration><const S_BAN_WILL_EXPIRE> <strong><var $expiration></strong>.</if>
  551. <if !$expiration><const S_BAN_WILL_NOT_EXPIRE></if></p>
  552. </div>
  553. </div>
  554. <div class="item">
  555. <div class="itemheader">
  556. <h3><const S_BAN_APPEAL_HEADER></h3>
  557. </div>
  558. <div class="itemcontent">
  559. <p><var $appeal></p>
  560. <!-- Temporary Notice -->
  561. <p><em>(Due to changing its software base from Kareha to our global Wakaba script, you will have to post from another computer. Sorry. This will be addressed soon. &mdash;(K.) Anonymous)</em></p>
  562. </div>
  563. </div>
  564. <div class="footertext">Template Updated: 19 July 2008</div>
  565. </div>
  566. </div>
  567. </div>
  568. </div>
  569. </body>
  570. </html>
  571. });
  572. #
  573. # Admin Pages
  574. #
  575. use constant MANAGER_HEAD_INCLUDE => NORMAL_HEAD_INCLUDE.q{
  576. <span style="float:left">[<a href="<var expand_filename($board-\>option('HTML_SELF'),1)>"><const S_MANARET></a>]</span>
  577. <if $admin>
  578. <div style="float:right;font-size:85%;padding-left:2em">
  579. <span style="float:left">[<a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>"><const S_MANAPANEL></a>] </span>
  580. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=reports&amp;board=<var $board-\>path()>">Reports</a>] </span>
  581. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=postbackups&amp;board=<var $board-\>path()>">Trash Bin</a>] </span>
  582. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=bans&amp;board=<var $board-\>path()>"><const S_MANABANS></a>] </span>
  583. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=proxy&amp;board=<var $board-\>path()>"><const S_MANAPROXY></a>] </span>
  584. <if $type eq 'admin'>
  585. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=spam&amp;board=<var $board-\>path()>"><const S_MANASPAM></a>] </span>
  586. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=sqldump&amp;board=<var $board-\>path()>"><const S_MANASQLDUMP></a>] </span>
  587. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=sql&amp;board=<var $board-\>path()>"><const S_MANASQLINT></a>] </span>
  588. </if>
  589. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=rebuild&amp;board=<var $board-\>path()>"><const S_MANAREBUILD></a>] </span>
  590. <if $type eq 'admin'>
  591. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=staff&amp;board=<var $board-\>path()>">Staff Management</a>] </span>
  592. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>">Staff Activity</a>] </span>
  593. <span style="float:left;padding-left:0.2em">[<a href="<var $self>?task=security&amp;board=<var $board-\>path()>">Script Security</a>] </span>
  594. </if>
  595. </div>
  596. </if>
  597. <div class="passvalid" style="clear:both"><strong><const S_MANAMODE></strong></div>
  598. <if $admin><div style="margin-top:0;float:left;font-size:120%;font-weight:bold">&rarr; </div><div style="margin-top:0;margin-left:0.2em;float:left">Logged in as <span class="postername"><var $username></span> (<if $type eq 'admin'>Administrator</if><if $type eq 'mod'>Moderator</if><if $type eq 'globmod'>Global Moderator</if>). [<a href="<var $self>?task=edituserwindow&amp;username=<var $username>&amp;board=<var $board-\>path()>">Options</a>] [<a href="<var $self>?task=logout&amp;board=<var $board-\>path()>"><const S_MANALOGOUT></a>] <form action="wakaba.pl" id="boardselect" method="get" style="display:block"><input type="hidden" name="task" value="admin" /><label>Switch to board: <select name="board"><loop $boards_select><option value="<var $board_entry>"><var $board_entry></option></loop></select></label> <input type="submit" name="switchboard" value="Go" /></form></div>
  599. <if $type ne 'mod'><div style="margin-top:0;float:right"><strong>Global Options:</strong> [<a href="<var $self>?task=rebuildglobal&amp;board=<var $board-\>path()>">Rebuild Cache</a>]<if $type eq 'admin'>&nbsp;[<a href="<var $self>?task=restart&amp;board=<var $board-\>path()>">Restart Script</a>]</if></div></if></if>
  600. <br clear="all"/>
  601. };
  602. use constant FIRST_TIME_SETUP => compile_template(NORMAL_HEAD_INCLUDE.q{
  603. <div align="center">
  604. <h2>First Time Setup</h2>
  605. <form action="<var $self>" method="post">
  606. <input type="hidden" name="board" value="<var $board-\>path()>" />
  607. <input type="hidden" name="task" value="entersetup" />
  608. <p>Staff accounts have not yet been set up.</p>
  609. <const S_ADMINPASS>
  610. <input type="password" name="berra" size="8" value="" />
  611. <input type="submit" value="<const S_MANASUB>" />
  612. </form></div>
  613. }.NORMAL_FOOT_INCLUDE);
  614. use constant ACCOUNT_SETUP => compile_template(NORMAL_HEAD_INCLUDE.q{
  615. <div align="center">
  616. <h2>First Time Setup</h2>
  617. <form action="<var $self>" method="post">
  618. <input type="hidden" name="board" value="<var $board-\>path()>" />
  619. <p>Administrator, please enter your desired login username and password.</p>
  620. <input type="hidden" name="admin" value="<var $admin>" />
  621. <input type="hidden" name="task" value="setup" />
  622. Username:
  623. <input type="text" name="username" size="8" value="" />
  624. <br />
  625. Password:
  626. <input type="password" name="password" size="8" value="" />
  627. <br />
  628. <input type="submit" value="<const S_MANASUB>" />
  629. </form></div>
  630. }.NORMAL_FOOT_INCLUDE);
  631. use constant ADMIN_LOGIN_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  632. <div align="center"><form action="<var $self>" method="post">
  633. <input type="hidden" name="board" value="<var $board-\>path()>" />
  634. <input type="hidden" name="task" value="admin" />
  635. Username:
  636. <input type="text" name="desu" size="16" value="" />
  637. <br />
  638. Password:
  639. <input type="password" name="berra" size="16" value="" />
  640. <br />
  641. <label><input type="checkbox" name="savelogin" /> <const S_MANASAVE></label>
  642. <br />
  643. <select name="nexttask">
  644. <option value="mpanel" <if $login_task eq "mpanel" || !$login_task>selected="selected"</if>><const S_MANAPANEL></option>
  645. <option value="bans" <if $login_task eq "bans">selected="selected"</if>><const S_MANABANS></option>
  646. <option value="proxy" <if $login_task eq "proxy">selected="selected"</if>><const S_MANAPROXY></option>
  647. <option value="spam" <if $login_task eq "spam">selected="selected"</if>><const S_MANASPAM></option>
  648. <option value="sqldump" <if $login_task eq "sqldump">selected="selected"</if>><const S_MANASQLDUMP></option>
  649. <option value="sql" <if $login_task eq "sql">selected="selected"</if>><const S_MANASQLINT></option>
  650. <option value="mpost" <if $login_task eq "mpost">selected="selected"</if>><const S_MANAPOST></option>
  651. <option value="rebuild" <if $login_task eq "rebuild">selected="selected"</if>><const S_MANAREBUILD></option>
  652. <option value="reports" <if $login_task eq "reports">selected="selected"</if>>Reports</option>
  653. <option value="staff" <if $login_task eq "staff">selected="selected"</if>>Staff Management</option>
  654. <option value="staff" <if $login_task eq "stafflog">selected="selected"</if>>Staff Activity</option>
  655. <option value=""></option>
  656. <option value="nuke" <if $login_task eq "nuke">selected="selected"</if>><const S_MANANUKE></option>
  657. </select>
  658. <input type="submit" value="<const S_MANASUB>" />
  659. <p><em>Cookies required for login.</em></p>
  660. </form></div>
  661. }.NORMAL_FOOT_INCLUDE);
  662. use constant POST_PANEL_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  663. <div class="dellist"><h2><const S_MANAPANEL></h2></div>
  664. <!-- User Reports -->
  665. <div class="dellist"><h3>Reported Posts for /<var $board-\>path()>/</h3></div>
  666. <form action="<var $self>" method="post" id="reportedposts">
  667. <input type="hidden" name="task" value="resolve" />
  668. <input type="hidden" name="board" value="<var $board-\>path()>" />
  669. <table align="center"><tbody>
  670. <tr class="managehead"><th>Post</th><th>Date</th><th>Comment</th><th>Poster IP</th><th>Reporting IP</th></tr>
  671. <loop $reportedposts>
  672. <tr class="row<var $rowtype>">
  673. <td>
  674. <table>
  675. <tbody>
  676. <tr>
  677. <td>
  678. <label><input type="checkbox" name="num" value="<var $board-\>path()>-<var $postnum>" /><big><b><var $postnum></b></big>&nbsp;&nbsp;</label>
  679. </td>
  680. <td>
  681. <big><strong><a href="<var $self>?task=searchposts&amp;board=<var $board-\>path()>&amp;idview=1&amp;id=<var $postnum>&amp;caller=field" target="_blank" onclick="popUpPost('<var $self>?task=searchposts&amp;board=<var $board-\>path()>&amp;idview=1&amp;id=<var $postnum>&amp;caller=field');return false">View post</a></strong></big><br />
  682. [<a href="<var $self>?task=editpostwindow&amp;board=<var $board-\>path()>&amp;num=<var $postnum>&amp;admineditmode=1" target="_blank" onclick="popUpPost('<var $self>?task=editpostwindow&amp;board=<var $board-\>path()>&amp;admineditmode=1&amp;num=<var $num>'); return false">Edit</a>]
  683. </td>
  684. </tr>
  685. </tbody>
  686. </table>
  687. </td>
  688. <td><var $date></td>
  689. <td><var $comment></td>
  690. <td><var dec_to_dot($offender)>
  691. [<a href="<var $self>?task=deleteall_confirm&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($offender)>"><const S_MPDELETEALL></a>]
  692. [<a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($offender)>" target="_blank" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($offender)>');return false"><const S_MPBAN></a>]
  693. </td>
  694. <td><var dec_to_dot($reporter)> [<a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($reporter)>" target="_blank" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($reporter)>');return false"><const S_MPBAN></a>]</td>
  695. </tr>
  696. </loop>
  697. </tbody></table>
  698. <br />
  699. <div class="delbuttons">
  700. <input type="hidden" name="caller" value="board" />
  701. <input type="submit" name="delete" value="Delete and Mark Resolved" /> <input type="submit" value="Mark Resolved (Do not Delete)" />
  702. </div>
  703. </form>
  704. <p align="center"><a href="<var $self>?task=reports&amp;board=<var $board-\>path()>">View All Available Reports</a></p>
  705. <!-- END User Reports -->
  706. <hr />
  707. <!-- Search -->
  708. <div class="postarea">
  709. <div class="dellist"><h3>Quick Search</h3></div>
  710. <form action="<var $self>" method="get">
  711. <input type="hidden" name="task" value="searchposts" />
  712. <input type="hidden" name="caller" value="board" />
  713. <input type="hidden" name="board" value="<var $board-\>path()>" />
  714. <table><tbody>
  715. <tr>
  716. <td><input type="text" name="id" size="24" /></td>
  717. <td><input type="submit" name="idsearch" value="Search Posts by ID" /></td>
  718. </tr>
  719. </tbody></table>
  720. </form>
  721. <form action="<var $self>" method="get">
  722. <input type="hidden" name="task" value="searchposts" />
  723. <input type="hidden" name="caller" value="board" />
  724. <input type="hidden" name="board" value="<var $board-\>path()>" />
  725. <table><tbody>
  726. <tr>
  727. <td><input type="text" name="ip" size="24" /></td>
  728. <td><input type="submit" name="ipsearch" value="Search Posts by IP Address" /></td>
  729. </tr>
  730. </tbody></table>
  731. </form>
  732. </div><br />
  733. <!-- END Search -->
  734. <hr />
  735. <!-- Manager Post Area -->
  736. <div class="dellist"><h3><const S_MANAPOST></h3></div>
  737. <br />
  738. <div class="postarea">
  739. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  740. <input type="hidden" name="task" value="post" />
  741. <input type="hidden" name="board" value="<var $board-\>path()>" />
  742. <input type="hidden" name="adminpost" value="1" />
  743. <input type="hidden" name="no_captcha" value="1" />
  744. <if $thread><input type="hidden" name="parent" value="<var $thread>" /></if>
  745. <table><tbody>
  746. <tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" size="28" /></td></tr>
  747. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" /></td></tr>
  748. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" />
  749. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  750. <tr><td class="postblock"><const S_COMMENT></td><td><textarea name="comment" cols="48" rows="4"></textarea></td></tr>
  751. <tr><td class="postblock"><const S_UPLOADFILE></td><td><input type="file" name="file" size="35" />
  752. [<label><input type="checkbox" name="nofile" value="on" /><const S_NOFILE></label>]
  753. </td></tr>
  754. <if !$thread><tr><td class="postblock"><const S_PARENT></td><td><input type="text" name="parent" size="8" /></td></tr></if>
  755. <tr><td class="postblock">Posting Mode</td>
  756. <td>
  757. <label><input type="radio" name="no_format" value="0" checked="checked" /><strong> User Friendly:</strong> Posts will be formatted with board settings.</label>
  758. <br />
  759. <label><input type="radio" name="no_format" value="1" /><strong> Advanced:</strong> <const S_NOTAGS></label>
  760. </td>
  761. </tr>
  762. <tr><td class="postblock">Other Options</td><td>[<label><input type="checkbox" name="sticky" value="1" /> Sticky Thread After Posting</label>]<br />[<label><input type="checkbox" name="lock" value="1" /> Lock Thread After Posting</label>]</td></tr>
  763. </tbody></table></form></div>
  764. <script type="text/javascript">set_inputs("postform",true)</script>
  765. <!-- END Manager Post Area -->
  766. <hr />
  767. <if !$thread>
  768. <table border="1" style="float:left"><tbody><tr><td>
  769. <if $prevpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="mpanel" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $prevpage>" /><input value="<const S_PREV>" type="submit" /></form></if>
  770. <if $prevpage eq 'none'><const S_FIRSTPG></if>
  771. </td><td>
  772. <loop $pages>
  773. <if !$current>[<a href="<var $filename>"><var $page></a>]</if>
  774. <if $current>[<var $page>]</if>
  775. </loop>
  776. </td><td>
  777. <if $nextpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="mpanel" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $nextpage>" /><input value="<const S_NEXT>" type="submit" /></form></if>
  778. <if $nextpage eq 'none'><const S_LASTPG></if>
  779. </td></tr></tbody></table>
  780. </if>
  781. <if $thread>
  782. <span style="float:left">[<a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>">Return to Panel</a>]</span>
  783. </if>
  784. <form action="<var $self>" method="post" id="delform">
  785. <input type="hidden" name="board" value="<var $board-\>path>" />
  786. <input type="hidden" name="admindelete" value="1" />
  787. <div class="delbuttons" style="float:right">
  788. <input type="hidden" name="caller" value="board" />
  789. <input type="submit" name="task" value="<const S_MPDELETE>" />
  790. <input type="submit" name="task" value="<const S_MPARCHIVE>" />
  791. <input type="reset" value="<const S_MPRESET>" />
  792. [<label><input type="checkbox" name="fileonly" value="on" /><const S_MPONLYPIC></label>]
  793. </div>
  794. <br clear="all" />
  795. <hr />
  796. <loop $threads>
  797. <loop $posts>
  798. <if !$parent>
  799. <div id="t<var $num>">
  800. <if $image>
  801. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  802. -(<em><var $size> B, <var $width>x<var $height></em>)</span>
  803. <span class="thumbnailmsg"><const S_THUMB></span><br />
  804. <if $thumbnail>
  805. <a target="_blank" href="<var expand_image_filename($image)>" >
  806. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  807. </if>
  808. <if !$thumbnail>
  809. <if $board-\>option('DELETED_THUMBNAIL')>
  810. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  811. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  812. </if>
  813. <if !($board-\>option('DELETED_THUMBNAIL'))>
  814. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  815. </if>
  816. </if>
  817. </if>
  818. <a name="<var $num>"></a>
  819. <label><input type="checkbox" name="num" value="<var $num>" />
  820. <span class="filetitle"><var $subject></span>
  821. <if $email><span class="postername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  822. <if !$email><span class="postername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  823. <span class="ipaddr">(IP: <var dec_to_dot($ip)><if $admin_post eq 'yes'>; <if !$lastedit><strong>Moderator Post</strong></if><if $lastedit><strong>Moderator Edit</strong></if></if>)</span>
  824. <if $stickied> <img src="<var expand_filename('/include/boards/sticky.gif')>" alt="<const S_STICKIEDALT>" title="<const S_STICKIED>" /> </if>
  825. <if $locked eq 'yes'> <img src="<var expand_filename('/include/boards/locked.gif')>" alt="<const S_LOCKEDALT>" title="<const S_LOCKED>" /> </if>
  826. <var $date></label>
  827. <span class="reflink">
  828. <if !$thread><span><a href="<var get_reply_link($num,0)>#<var $num>">No.</a><a href="<var get_reply_link($num,0)>#i<var $num>"><var $num></a></span></if>
  829. <if $thread><span><a href="#<var $num>">No.</a><a href="javascript:insert('&gt;&gt;<var $num>')"><var $num></a></span></if>
  830. </span>&nbsp;
  831. <span class="deletelink" id="deletelink<var $num>">
  832. [<a href="<var $self>?task=delpostwindow&amp;num=<var $num>" target="_blank" onclick="passfield('<var $num>',true); return false">Delete</a>
  833. <span id="delpostcontent<var $num>" style="display:inline"></span>
  834. </span>
  835. <a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>');return false">&amp;</a>
  836. <a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>');return false"><const S_MPBAN></a>]&nbsp;
  837. [<a href="<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1" target="_blank" onclick="popUpPost('<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1'); return false">Edit</a>]&nbsp;
  838. <if !$thread>
  839. [<a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>&amp;page=t<var $num>"><const S_REPLY></a>]
  840. </if>
  841. <br />
  842. <span class="threadopts" style="padding-left:2em;font-size:small"><strong>Thread Options:</strong> [<if !$stickied><a href="<var $self>?task=sticky&amp;thread=<var $num>&amp;board=<var $board-\>path()>">Sticky</a></if><if $stickied><a href="<var $self>?task=unsticky&amp;thread=<var $num>&amp;board=<var $board-\>path()>">Unsticky</a></if>] [<if $locked ne 'yes'><a href="<var $self>?task=lock&amp;thread=<var $num>&amp;board=<var $board-\>path()>">Lock</a></if><if $locked eq 'yes'><a href="<var $self>?task=unlock&amp;thread=<var $num>&amp;board=<var $board-\>path()>">Unlock</a></if>] [<a href="<var $self>?task=banthread&amp;board=<var $board-\>path()>&amp;num=<var $num>" onclick="popUpPost('<var $self>?task=banthread&amp;board=<var $board-\>path()>&amp;num=<var $num>');return false">Ban Thread</a>] <span id="movelink<var $num>">[<a href="#" onclick="move_thread_field(<var $num>); return false">Move</a>]<span id="movethreadcontent<var $num>"></span></span></span>
  843. <blockquote>
  844. <var $comment>
  845. <if $abbrev><div class="abbrev">}.sprintf(S_ABBRTEXT,'<var $self>?task=mpanel&amp;board=<var $board-\>path>&amp;page=t<var $num>').q{</div></if>
  846. <if $lastedit><p style="font-size: small; font-style: italic"><const S_LASTEDITED><if $admin_post eq 'yes'> <const S_BYMOD></if> <var $lastedit>. (IP: <var dec_to_dot($lastedit_ip)>)</p></if>
  847. </blockquote>
  848. <if $omit>
  849. <span class="omittedposts">
  850. <if $omitimages><var sprintf S_ABBRIMG,$omit,$omitimages></if>
  851. <if !$omitimages><var sprintf S_ABBR,$omit></if>
  852. </span>
  853. </if>
  854. </if>
  855. <if $parent>
  856. <table><tbody><tr><td class="doubledash">&gt;&gt;</td>
  857. <td class="reply" id="reply<var $num>">
  858. <a name="<var $num>"></a>
  859. <label><input type="checkbox" name="num" value="<var $num>" />
  860. <span class="replytitle"><var $subject></span>
  861. <if $email><span class="commentpostername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  862. <if !$email><span class="commentpostername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  863. <span class="ipaddr">(IP: <var dec_to_dot($ip)><if $admin_post eq 'yes'>; <if !$lastedit><strong>Moderator Post</strong></if><if $lastedit><strong>Moderator Edit</strong></if></if>)</span>
  864. <var $date></label>
  865. <span class="reflink">
  866. <if !$thread><span><a href="<var get_reply_link($parent,0)>#<var $num>">No.</a><a href="<var get_reply_link($parent,0)>#i<var $num>"><var $num></a></span></if>
  867. <if $thread><span><a href="#<var $num>">No.</a><a href="javascript:insert('&gt;&gt;<var $num>')"><var $num></a></span></if>
  868. </span>&nbsp;
  869. <span class="deletelink" id="deletelink<var $num>">
  870. [<a href="#" target="_blank" onclick="passfield('<var $num>',true); return false">Delete</a>
  871. <span id="delpostcontent<var $num>" style="display:inline"></span>
  872. </span>
  873. <a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>');return false">&amp;</a>
  874. <a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>');return false"><const S_MPBAN></a>]&nbsp;
  875. [<a href="<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1" target="_blank" onclick="popUpPost('<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1'); return false">Edit</a>]
  876. <if $image>
  877. <br />
  878. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  879. -(<em><var $size> B, <var $width>x<var $height></em>)</span>
  880. <span class="thumbnailmsg"><const S_THUMB></span><br />
  881. <if $thumbnail>
  882. <a target="_blank" href="<var expand_image_filename($image)>">
  883. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  884. </if>
  885. <if !$thumbnail>
  886. <if $board-\>option('DELETED_THUMBNAIL')>
  887. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  888. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  889. </if>
  890. <if !($board-\>option('DELETED_THUMBNAIL'))>
  891. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  892. </if>
  893. </if>
  894. </if>
  895. <blockquote>
  896. <var $comment>
  897. <if $abbrev><div class="abbrev">}.sprintf(S_ABBRTEXT,"<var \$self>?task=mpanel&amp;board=<var \$board-\\>path()>&amp;page=t<var \$parent>#<var \$num>").q{</div></if>
  898. <if $lastedit><p style="font-size: small; font-style: italic">Last edited<if $admin_post eq 'yes'> by moderator</if> <var $lastedit>. (IP: <var dec_to_dot($lastedit_ip)>)</p></if>
  899. </blockquote>
  900. </td></tr></tbody></table>
  901. </if>
  902. </loop>
  903. </div>
  904. <br clear="left" /><hr />
  905. </loop>
  906. <div class="delbuttons" style="float:right">
  907. <input type="submit" name="task" value="<const S_MPDELETE>" />
  908. <input type="submit" name="task" value="<const S_MPARCHIVE>" />
  909. [<label><input type="checkbox" name="fileonly" value="on" /><const S_MPONLYPIC></label>]
  910. <input type="reset" value="<const S_MPRESET>" />
  911. </div>
  912. </form>
  913. <if !$thread>
  914. <table border="1" style="float:left"><tbody><tr><td>
  915. <if $prevpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="mpanel" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $prevpage>" /><input value="<const S_PREV>" type="submit" /></form></if>
  916. <if $prevpage eq 'none'><const S_FIRSTPG></if>
  917. </td><td>
  918. <loop $pages>
  919. <if !$current>[<a href="<var $filename>"><var $page></a>]</if>
  920. <if $current>[<var $page>]</if>
  921. </loop>
  922. </td><td>
  923. <if $nextpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="mpanel" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $nextpage>" /><input value="<const S_NEXT>" type="submit" /></form></if>
  924. <if $nextpage eq 'none'><const S_LASTPG></if>
  925. </td></tr></tbody></table>
  926. </if>
  927. <br clear="all" />
  928. <hr />
  929. <div class="dellist"><h3>Nuke Spam by IP</h3></div>
  930. <div class="postarea">
  931. <form action="<var $self>" method="post">
  932. <input type="hidden" name="task" value="deleteall_confirm" />
  933. <input type="hidden" name="board" value="<var $board-\>path()>" />
  934. <table><tbody>
  935. <tr><td class="postblock"><const S_BANIPLABEL></td><td><input type="text" name="ip" size="24" /></td></tr>
  936. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="mask" size="24" value="255.255.255.255" />
  937. <label> [ <input type="checkbox" name="global" value="1" /> <if $type eq "mod">All controlled boards</if><if $type ne "mod">Global</if> ]</label>
  938. <input type="submit" value="<const S_MPDELETEIP>" /></td></tr>
  939. </tbody></table></form>
  940. </div>
  941. <br clear="all" />
  942. }.NORMAL_FOOT_INCLUDE);
  943. use constant REPORT_PANEL_TEMPLATE => compile_template (MANAGER_HEAD_INCLUDE.q{
  944. <div class="dellist"><h2><if !$resolved_posts_only>Reported Posts</if><if $resolved_posts_only>Resolved Reports</if></h2></div>
  945. }.PAGINATION_SECTION.q{
  946. <if !$resolved_posts_only && $type eq 'admin'><div class="dellist"><a href="<var $self>?task=resolvedreports&amp;board=<var $board-\>path()>">View Resolved</a></div><br /></if>
  947. <form action="<var $self>" method="post" id="reportedposts">
  948. <input type="hidden" name="task" value="resolve" />
  949. <input type="hidden" name="board" value="<var $board-\>path()>" />
  950. <table align="center"><tbody>
  951. <tr class="managehead"><th>Post</th><th>Board</th><th>Date</th><th>Comment</th><th>Posting IP</th><th>Reporting IP</th><if $type eq 'admin' && $resolved_posts_only><th>Involved Moderator</th></if></tr>
  952. <loop $reports>
  953. <tr class="row<var $rowtype>">
  954. <td>
  955. <table>
  956. <tbody>
  957. <tr>
  958. <td>
  959. <label><input type="checkbox" name="num" value="<var $board_name>-<var $postnum>" /><big><b><var $postnum></b></big>&nbsp;&nbsp;</label>
  960. </td>
  961. <td>
  962. <big><strong><a href="<var $self>?task=searchposts&amp;board=<var $board_name>&amp;idview=1&amp;id=<var $postnum>&amp;caller=field" target="_blank" onclick="popUpPost('<var $self>?task=searchposts&amp;board=<var $board_name>&amp;idview=1&amp;id=<var $postnum>&amp;caller=field');return false">View post</a></strong></big><br />
  963. [<a href="<var $self>?task=editpostwindow&amp;board=<var $board_name>&amp;num=<var $postnum>&amp;admineditmode=1" target="_blank" onclick="popUpPost('<var $self>?task=editpostwindow&amp;board=<var $board_name>&amp;admineditmode=1&amp;num=<var $num>'); return false">Edit</a>]
  964. </td>
  965. </tr>
  966. </tbody>
  967. </table>
  968. </td>
  969. <td><strong><var $board_name></strong></td>
  970. <td><var $date></td>
  971. <td><var $comment></td>
  972. <td><var dec_to_dot($offender)> [<a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($offender)>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($offender)>');return false"><const S_MPBAN></a>]</td>
  973. <td><var dec_to_dot($reporter)> [<a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($reporter)>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($reporter)>');return false"><const S_MPBAN></a>]</td>
  974. <if $type eq 'admin' && $resolved_posts_only><td><var $username></td></if>
  975. </tr>
  976. </loop>
  977. </tbody></table>
  978. <br />
  979. <div class="delbuttons">
  980. <input type="hidden" name="caller" value="board" />
  981. <input type="submit" name="delete" value="Delete and Mark Resolved" /> <input type="submit" value="Mark Resolved (Do not Delete)" />
  982. </div>
  983. </form>
  984. }.NORMAL_FOOT_INCLUDE);
  985. #
  986. # Post Searching
  987. #
  988. use constant POST_SEARCH => compile_template(q{<if $popup>}.MINI_HEAD_INCLUDE.q{</if><if !$popup>}.MANAGER_HEAD_INCLUDE.q{</if>
  989. <if $search eq 'ip'>
  990. <div class="dellist"><h2>Searching By IP <var $addr></h2></div>
  991. }.PAGINATION_SECTION.q{
  992. </if>
  993. <if $search ne 'ip'><if $popup><h1 style="text-align:center;font-size:1em"></if><if !$popup><div class="dellist"><h2></if>Showing Post No.<var $num><if $popup></h1></if><if !$popup></h2></div></if></if>
  994. <if !$popup><hr /></if>
  995. <form action="<var $self>" id="delform">
  996. <input type="hidden" name="board" value="<var $board-\>path()>" />
  997. <loop $posts>
  998. <table><tbody><tr><td class="doubledash"><if $search eq 'ip'><span style="font-size:200%;font-weight:bold;padding-right:0.5em"><em><var $post_number></em></span></if><if $search ne 'ip'>&gt;&gt;</if></td>
  999. <td class="reply" id="reply<var $num>">
  1000. <a name="<var $num>"></a>
  1001. <label><input type="checkbox" name="num" value="<var $num>" />
  1002. <span class="replytitle"><var $subject></span>
  1003. <if $email><span class="commentpostername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  1004. <if !$email><span class="commentpostername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  1005. <span class="ipaddr">(IP: <var dec_to_dot($ip)>)</span>
  1006. <var $date></label>
  1007. <span class="reflink">No.<var $num></span>&nbsp;
  1008. <span><em><if $parent><a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>&amp;page=t<var $parent>#<var $num>">Response to Thread No.<var $parent></a></if><if !$parent><a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>&amp;page=t<var $num>">Thread Opener</a></if></em></span>&nbsp;
  1009. <span class="deletelink" id="deletelink<var $num>">
  1010. [<a href="#" target="_blank" onclick="passfield('<var $num>',true); return false">Delete</a>
  1011. <span id="delpostcontent<var $num>" style="display:inline"></span>
  1012. </span>
  1013. <a href="<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>" onclick="popUpPost('<var $self>?task=banpopup&amp;board=<var $board-\>path()>&amp;ip=<var dec_to_dot($ip)>&amp;delete=<var $num>');return false">&amp;</a>
  1014. <a href="<var $self>?task=bans&amp;board=<var $board-\>path()>&amp;ip=<var $ip>"><const S_MPBAN></a>]&nbsp;
  1015. [<a href="<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1" target="_blank" onclick="popUpPost('<var $self>?task=editpostwindow&amp;board=<var $board-\>path>&amp;num=<var $num>&amp;admineditmode=1'); return false">Edit</a>]
  1016. <if $image>
  1017. <br />
  1018. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  1019. -(<em><var $size> B, <var $width>x<var $height></em>)</span>
  1020. <span class="thumbnailmsg"><const S_THUMB></span><br />
  1021. <if $thumbnail>
  1022. <a target="_blank" href="<var expand_image_filename($image)>">
  1023. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  1024. </if>
  1025. <if !$thumbnail>
  1026. <if $board-\>option('DELETED_THUMBNAIL')>
  1027. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  1028. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  1029. </if>
  1030. <if !($board-\>option('DELETED_THUMBNAIL'))>
  1031. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  1032. </if>
  1033. </if>
  1034. </if>
  1035. <blockquote>
  1036. <var $comment>
  1037. <if $lastedit><p style="font-size: small; font-style: italic">Last edited<if $admin_post eq 'yes'> by moderator</if> <var $lastedit>.</p></if>
  1038. </blockquote>
  1039. </td></tr></tbody></table>
  1040. <if !$popup><hr /></if>
  1041. </loop>
  1042. <if !$popup>
  1043. <div class="delbuttons" style="float:right">
  1044. <input type="hidden" name="caller" value="board" />
  1045. <input type="submit" value="<const S_MPDELETE>" />
  1046. <input type="submit" name="archive" value="<const S_MPARCHIVE>" />
  1047. <input type="reset" value="<const S_MPRESET>" />
  1048. [<label><input type="checkbox" name="fileonly" value="on" /><const S_MPONLYPIC></label>]
  1049. </div>
  1050. </if>
  1051. </form>
  1052. <br clear="all" />
  1053. <if !$popup><p style="text-align:center;font-size:1.3em"><a href="<var $self>?task=mpanel&amp;board=<var $board-\>path()>">Return to Panel</a></p></if>
  1054. <if $popup>}.MINI_FOOT_INCLUDE.q{</if><if !$popup>}.NORMAL_FOOT_INCLUDE.q{</if>});
  1055. use constant DELETE_CRAP_CONFIRM => compile_template(MANAGER_HEAD_INCLUDE.q{
  1056. <div class="dellist"><h2>Delete All Posts Confirmation</h2></div>
  1057. <p align="center">Are you sure you want to delete all <strong><var $post_count></strong> posts by IP <var $ip>?</p>
  1058. <form id="confirm" action="<var $self>" method="post">
  1059. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1060. <input type="hidden" name="task" value="deleteall" />
  1061. <input type="hidden" name="ip" value="<var $ip>" />
  1062. <input type="hidden" name="mask" value="<var $mask>" />
  1063. <input type="hidden" name="global" value="<var $global>" />
  1064. <p align="center"><input type="submit" value="Yes" /></p>
  1065. </form>
  1066. }.NORMAL_FOOT_INCLUDE);
  1067. #
  1068. # Staff
  1069. #
  1070. use constant STAFF_MANAGEMENT => compile_template(MANAGER_HEAD_INCLUDE.q{
  1071. <div class="dellist"><h2>Staff Management</h2></div>
  1072. <table align="center" style="white-space: nowrap">
  1073. <tbody>
  1074. <tr class="managehead">
  1075. <th>User</th>
  1076. <th>Class</th>
  1077. <th width="30%">Boards Moderated</th>
  1078. <th>Latest Activity</th>
  1079. <th>Options</th>
  1080. </tr>
  1081. <loop $users>
  1082. <tr class="row<var $rowtype>">
  1083. <td><strong><var $username></strong></td>
  1084. <td><if $account eq 'admin'>Administrator</if>
  1085. <if $account eq 'mod'>Moderator</if>
  1086. <if $account eq 'globmod'>Global Moderator</if></td>
  1087. <td><if $account ne 'mod'><em>All</em></if><if $account eq 'mod'><var $reign></if></td>
  1088. <td><if $action><var get_action_name($action)> on <var $actiondate> [<a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=user&amp;usertoview=<var $username>">View All</a>]</if><if !$action><em>None</em></if></td>
  1089. <td>[<a href="<var $self>?task=edituserwindow&amp;board=<var $board-\>path()>&amp;username=<var $username>">Edit</a>] [<if $disabled><a href="<var $self>?task=enableuserwindow&amp;board=<var $board-\>path()>&amp;username=<var $username>">Enable</a></if><if !$disabled><a href="<var $self>?task=disableuserwindow&amp;board=<var $board-\>path()>&amp;username=<var $username>">Disable</a></if>] [<a href="<var $self>?task=deleteuserwindow&amp;board=<var $board-\>path()>&amp;username=<var $username>">Remove</a>]</td>
  1090. </tr>
  1091. </loop>
  1092. </tbody>
  1093. </table>
  1094. <br />
  1095. <div class="dellist"><h3>Create User</h3></div>
  1096. <form action="<var $self>" method="post">
  1097. <input type="hidden" name="task" value="createuser" />
  1098. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1099. <p align="center"><em>The management password is necessary only for creating administrator accounts.<br />Global moderators oversee all boards.</em></p>
  1100. <table align="center">
  1101. <tbody>
  1102. <tr><td class="postblock">Username</td><td><input type="text" name="usertocreate" size="16" value="" /><br /><em>Usernames must be 4-30 characters, A-Za-z0-9^._, and spaces</em></td></tr>
  1103. <tr><td class="postblock">Password</td><td><input type="password" name="passtocreate" size="16" value="" /><br /><em>Passwords must be 8-30 characters, A-Za-z0-9^._</em></td></tr>
  1104. <tr><td class="postblock">Account Type</td><td><select name="account" onchange="if (this.form.account.value=='mod'){document.getElementById('boardselect').style.display='';} else {document.getElementById('boardselect').style.display='none';} if (this.form.account.value=='admin') {document.getElementById('managepass').style.display='';} else {document.getElementById('managepass').style.display='none';}"><option value="mod">Moderator</option><option value="globmod" selected="selected">Global Moderator</option><option value="admin">Administrator</option></select> <input type="submit" value="Create User" /></td></tr>
  1105. <tr id="boardselect"><td class="postblock">Controlled Boards</td>
  1106. <td><loop $boards><label><input type="checkbox" name="reign" value="<var $board_entry>" /> <var $board_entry></label><br /></loop></td></tr>
  1107. <tr id="managepass"><td class="postblock">Management Password</td><td><input type="password" name="mpass" size="10" value="" /></td></tr>
  1108. </tbody>
  1109. </table>
  1110. </form>
  1111. }.NORMAL_FOOT_INCLUDE);
  1112. use constant STAFF_DELETE_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1113. <div class="dellist"><h2>User Deletion Confirmation</h2></div>
  1114. <p align="center">Are you sure you want to delete user <strong><var $user_to_delete></strong>?</p>
  1115. <form id="confirm" action="<var $self>" method="post">
  1116. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1117. <input type="hidden" name="task" value="deleteuser" />
  1118. <input type="hidden" name="username" value="<var $user_to_delete>" />
  1119. <if $account eq "admin"><p align="center">Manager password required. <input type="password" name="mpass" value="" /></p></if>
  1120. <p align="center"><input type="submit" value="Yes" /></p>
  1121. </form>
  1122. }.NORMAL_FOOT_INCLUDE);
  1123. use constant STAFF_DISABLE_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1124. <div class="dellist"><h2>User Disable Confirmation</h2></div>
  1125. <p align="center">Are you sure you want to disable user <strong><var $user_to_disable></strong>?</p>
  1126. <form id="confirm" action="<var $self>" method="post">
  1127. <input type="hidden" name="task" value="disableuser" />
  1128. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1129. <input type="hidden" name="username" value="<var $user_to_disable>" />
  1130. <if $account eq "admin"><p align="center">Manager password required. <input type="password" name="mpass" value="" /></p></if>
  1131. <p align="center"><input type="submit" value="Yes" /></p>
  1132. </form>
  1133. }.NORMAL_FOOT_INCLUDE);
  1134. use constant STAFF_ENABLE_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1135. <div class="dellist"><h2>User Enable Confirmation</h2></div>
  1136. <p align="center">Are you sure you want to re-enable user <strong><var $user_to_enable></strong>?</p>
  1137. <form id="confirm" action="<var $self>" method="post">
  1138. <input type="hidden" name="task" value="enableuser" />
  1139. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1140. <input type="hidden" name="username" value="<var $user_to_enable>" />
  1141. <if $account eq "admin"><p align="center">Manager password required. <input type="password" name="mpass" value="" /></p></if>
  1142. <p align="center"><input type="submit" value="Yes" /></p>
  1143. </form>
  1144. }.NORMAL_FOOT_INCLUDE);
  1145. use constant STAFF_EDIT_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1146. <div class="dellist"><h2><if $user_to_edit ne $username>Editing Details for User <var $user_to_edit></if><if $user_to_edit eq $username>Editing Profile</if></h2></div>
  1147. <form id="user_editing" action="<var $self>" method="post">
  1148. <input type="hidden" name="task" value="edituser" />
  1149. <input type="hidden" name="usernametoedit" value="<var $user_to_edit>" />
  1150. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1151. <if $user_to_edit ne $username><p align="center"><em>The management password is required only for promoting staff members to the Administrator class or editing an existing Administrator account.</em></p></if>
  1152. <table align="center">
  1153. <tbody>
  1154. <tr><td class="postblock">New Password</td><td><input type="password" name="newpassword" size="10" value="" /></td></tr>
  1155. <if $user_to_edit eq $username>
  1156. <tr><td class="postblock">Confirm Original Password</td><td><input type="password" name="originalpassword" size="10" value="" /> <input type="submit" value="Submit" /></td></tr>
  1157. </if>
  1158. <if $user_to_edit ne $username>
  1159. <tr><td class="postblock">New Account Type</td><td><select name="newclass"><option value="mod" <if $account eq 'mod'>selected="selected"</if>>Moderator</option><option value="globmod" <if $account eq 'admin'>selected="selected"</if>>Global Moderator</option><option value="admin" <if $account eq 'admin'>selected="selected"</if>>Administrator</option></select></td></tr>
  1160. <tr><td class="postblock">Jurisdiction</td><td><loop $boards><label><input name="reign" type="checkbox" value="<var $board_entry>" <if $underpower>checked="checked"</if> /> <var $board_entry></label><br /></loop></td></tr>
  1161. <tr><td class="postblock">Management Password</td><td><input type="password" name="mpass" size="10" value="" /> <input type="submit" value="Submit" /></td></tr>
  1162. </if>
  1163. </tbody>
  1164. </table>
  1165. </form>
  1166. }.NORMAL_FOOT_INCLUDE);
  1167. use constant STAFF_ACTIVITY_HEAD => q{
  1168. <table align="center">
  1169. <tbody>
  1170. <tr>
  1171. <td style="padding:0.3em 1em 0.3em 0.3em">
  1172. <form action="<var $self>" method="get">
  1173. <input type="hidden" name="task" value="stafflog" />
  1174. <input type="hidden" name="view" value="user" />
  1175. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1176. <input type="hidden" name="perpage" value="<var $perpage>" />
  1177. View Staff:
  1178. <select name="usertoview">
  1179. <option value="" selected="selected">Select</option>
  1180. <loop $staff><option value="<var $username>"><var $username></option></loop>
  1181. </select>
  1182. <input type="submit" value="View" />
  1183. </form>
  1184. </td>
  1185. <td style="padding:0.3em">
  1186. <form action="<var $self>" method="get">
  1187. <input type="hidden" name="task" value="stafflog" />
  1188. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1189. <input type="hidden" name="view" value="action" />
  1190. <input type="hidden" name="perpage" value="<var $perpage>" />
  1191. View Action:
  1192. <select name="actiontoview">
  1193. <option value="">Select</option>
  1194. <option value="admin_edit">Administrative Edits</option>
  1195. <option value="admin_post">Manager Posts</option>
  1196. <option value="admin_delete">Administrative Deletions</option>
  1197. <option value="ipban">IP Bans</option>
  1198. <option value="ipban_edit">IP Ban Edits</option>
  1199. <option value="ipban_remove">IP Ban Removals</option>
  1200. <option value="wordban">Word Bans</option>
  1201. <option value="wordban_edit">Word Ban Edits</option>
  1202. <option value="wordban_remove">Word Ban Removals</option>
  1203. <option value="whitelist">IP Whitelist</option>
  1204. <option value="whitelist_edit">IP Whitelist Edits</option>
  1205. <option value="whitelist_remove">IP Whitelist Removals</option>
  1206. <option value="trust">Captcha Exemptions</option>
  1207. <option value="trust_edit">Revised Captcha Exemptions</option>
  1208. <option value="trust_remove">Removed Captcha Exemptions</option>
  1209. <option value="thread_sticky">Thread Stickies</option>
  1210. <option value="thread_unsticky">Thread Unstickies</option>
  1211. <option value="thread_lock">Thread Locks</option>
  1212. <option value="thread_unlock">Thread Unlocks</option>
  1213. <option value="report_resolve">Report Resolutions</option>
  1214. </select>
  1215. <input type="submit" value="View" />
  1216. </form>
  1217. </td>
  1218. </tr>
  1219. <tr>
  1220. <td style="padding:0.3em 1em 0.3em 0.3em">
  1221. <form action="<var $self>" method="get">
  1222. <input type="hidden" name="task" value="stafflog" />
  1223. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1224. <input type="hidden" name="view" value="ip" />
  1225. <input type="hidden" name="perpage" value="<var $perpage>" />
  1226. View Affected IP Address:
  1227. <input type="text" name="iptoview" value="" size="15" />
  1228. <input type="submit" value="View" />
  1229. </form>
  1230. </td>
  1231. <td style="padding:0.3em">
  1232. <form action="<var $self>" method="get">
  1233. <input type="hidden" name="task" value="stafflog" />
  1234. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1235. <input type="hidden" name="view" value="post" />
  1236. <input type="hidden" name="perpage" value="<var $perpage>" />
  1237. View Affected Post:
  1238. <input type="text" name="posttoview" value="" size="15" />
  1239. <input type="submit" value="View" />
  1240. </form>
  1241. </td>
  1242. </tr>
  1243. </tbody>
  1244. </table>
  1245. };
  1246. use constant STAFF_ACTIVITY_UNFILTERED => compile_template(MANAGER_HEAD_INCLUDE.q{
  1247. <div class="dellist"><h2>Staff Activity</h2></div>
  1248. }.STAFF_ACTIVITY_HEAD.q{
  1249. <!-- Admin w/ management pass may clean up -->
  1250. <div class="dellist"><h3>Viewing Full Log</h3></div>
  1251. }.PAGINATION_SECTION.q{
  1252. <table align="center" style="white-space: nowrap">
  1253. <tbody>
  1254. <tr class="managehead">
  1255. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=username&amp;order=<if $order =~ /^asc/ || $sortby ne 'username'>desc</if><if $order !~ /^asc/i && $sortby eq 'username'>asc</if>">User<if $sortby eq 'username'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1256. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=account&amp;order=<if $order =~ /^asc/ || $sortby ne 'account'>desc</if><if $order !~ /^asc/i && $sortby eq 'account'>asc</if>">Class<if $sortby eq 'account'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1257. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=action&amp;order=<if $order =~ /^asc/ || $sortby ne 'action'>desc</if><if $order !~ /^asc/i && $sortby eq 'action'>asc</if>">Action<if $sortby eq 'action'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1258. <th>Information</th>
  1259. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=date&amp;order=<if $order =~ /^asc/ || $sortby ne 'date'>desc</if><if $order !~ /^asc/ && $sortby eq 'date'>asc</if>">Date<if $sortby eq 'date'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1260. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>">IP Address</a></th>
  1261. </tr>
  1262. <loop $entries>
  1263. <tr class="row<var $rowtype>">
  1264. <td><if $disabled><span style="color:#555555"></if><strong><var $username></strong><if $disabled></span></if></td>
  1265. <td><if $account eq 'admin'>Administrator</if>
  1266. <if $account eq 'mod'>Moderator</if>
  1267. <if $account eq 'globmod'>Global Moderator</if></td>
  1268. <td><var get_action_name($action)></td>
  1269. <td><var get_action_name($action,2)>: <var $info></td>
  1270. <td><var $date></td>
  1271. <td><var dec_to_dot($ip)></td>
  1272. </tr>
  1273. </loop>
  1274. </tbody>
  1275. </table>
  1276. }.NORMAL_FOOT_INCLUDE);
  1277. use constant STAFF_ACTIVITY_BY_USER => compile_template(MANAGER_HEAD_INCLUDE.q{
  1278. <div class="dellist"><h2>Staff Activity</h2></div>
  1279. }.STAFF_ACTIVITY_HEAD.q{
  1280. <p align="center" style="margin-top:0.2em"><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;perpage=<var $perpage>">Show All</a></p>
  1281. <h3 style="text-align:center">Actions by <var $user_to_view></h3>
  1282. }.PAGINATION_SECTION.q{
  1283. <table align="center" style="white-space: nowrap">
  1284. <tbody>
  1285. <tr class="managehead">
  1286. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=user&amp;usertoview=<var $user_to_view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=action&amp;order=<if $order =~ /^asc/ || $sortby ne 'action'>desc</if><if $order !~ /^asc/i && $sortby eq 'action'>asc</if>">Action<if $sortby eq 'action'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1287. <th>Info</th>
  1288. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=user&amp;usertoview=<var $user_to_view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=date&amp;order=<if $order =~ /^asc/ || $sortby ne 'date'>desc</if><if $order !~ /^asc/ && $sortby eq 'date'>asc</if>">Date<if $sortby eq 'date'> <if $order =~ /^asc/i>&#9660;</if><if $order !~ /^asc/>&#9650;</if></if></a></th>
  1289. <th>IP Address</th>
  1290. </tr>
  1291. <loop $entries>
  1292. <tr class="row<var $rowtype>">
  1293. <td><var get_action_name($action)></td>
  1294. <td><var get_action_name($action,2)>: <var $info></td>
  1295. <td><var $date></td>
  1296. <td><var dec_to_dot($ip)></td>
  1297. </tr>
  1298. </loop>
  1299. </tbody>
  1300. </table>
  1301. }.NORMAL_FOOT_INCLUDE);
  1302. use constant STAFF_ACTIVITY_BY_ACTIONS => compile_template(MANAGER_HEAD_INCLUDE.q{
  1303. <div class="dellist"><h2>Staff Activity</h2></div>
  1304. }.STAFF_ACTIVITY_HEAD.q{
  1305. <p align="center" style="margin-top:0.2em"><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;perpage=<var $perpage>">Show All</a></p>
  1306. <div class="dellist"><h3 align="center">Viewing Action: <var $action_name></h3></div>
  1307. }.PAGINATION_SECTION.q{
  1308. <table align="center" style="white-space: nowrap">
  1309. <tbody>
  1310. <tr class="managehead">
  1311. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=username&amp;order=<if $order =~ /^asc/ || $sortby ne 'username'>desc</if><if $order !~ /^asc/i && $sortby eq 'username'>asc</if>">User<if $sortby eq 'username'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1312. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=account&amp;order=<if $order =~ /^asc/ || $sortby ne 'account'>desc</if><if $order !~ /^asc/i && $sortby eq 'account'>asc</if>">Class<if $sortby eq 'account'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1313. <th><var $content_name></th>
  1314. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=date&amp;order=<if $order =~ /^asc/ || $sortby ne 'date'>desc</if><if $order !~ /^asc/ && $sortby eq 'date'>asc</if>">Date<if $sortby eq 'date'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1315. <th>IP Address</th>
  1316. </tr>
  1317. <loop $entries>
  1318. <tr class="row<var $rowtype>">
  1319. <td><if $disabled><span style="color:#555555"></if><strong><var $username></strong><if $disabled></span></if></td>
  1320. <td><if $account eq 'admin'>Administrator</if>
  1321. <if $account eq 'mod'>Moderator</if>
  1322. <if $account eq 'globmod'>Global Moderator</if></td>
  1323. <td><var $info></td>
  1324. <td><var $date></td>
  1325. <td><var dec_to_dot($ip)></td>
  1326. </tr>
  1327. </loop>
  1328. </tbody>
  1329. </table>
  1330. }.NORMAL_FOOT_INCLUDE);
  1331. use constant STAFF_ACTIVITY_BY_IP_ADDRESS => compile_template(MANAGER_HEAD_INCLUDE.q{
  1332. <div class="dellist"><h2>Staff Activity</h2></div>
  1333. }.STAFF_ACTIVITY_HEAD.q{
  1334. <p align="center" style="margin-top:0.2em"><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;perpage=<var $perpage>">Show All</a></p>
  1335. <div class="dellist"><h3>Showing Activity on IP Address <var $ip_to_view></h3></div>
  1336. }.PAGINATION_SECTION.q{
  1337. <table align="center" style="white-space: nowrap">
  1338. <tbody>
  1339. <tr class="managehead">
  1340. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=username&amp;order=<if $order =~ /^asc/ || $sortby ne 'username'>desc</if><if $order !~ /^asc/i && $sortby eq 'username'>asc</if>">User<if $sortby eq 'username'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1341. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=account&amp;order=<if $order =~ /^asc/ || $sortby ne 'account'>desc</if><if $order !~ /^asc/i && $sortby eq 'account'>asc</if>">Class<if $sortby eq 'account'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1342. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=action&amp;order=<if $order =~ /^asc/ || $sortby ne 'action'>desc</if><if $order !~ /^asc/i && $sortby eq 'action'>asc</if>">Action<if $sortby eq 'action'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1343. <th>Information</th>
  1344. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=date&amp;order=<if $order =~ /^asc/ || $sortby ne 'date'>desc</if><if $order !~ /^asc/ && $sortby eq 'date'>asc</if>">Date<if $sortby eq 'date'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1345. <th>IP Address</th>
  1346. </tr>
  1347. <loop $entries>
  1348. <tr class="row<var $rowtype>">
  1349. <td><if $disabled><span style="color:#555555"></if><strong><var $username></strong><if $disabled></span></if></td>
  1350. <td><if $account eq 'admin'>Administrator</if>
  1351. <if $account eq 'mod'>Moderator</if></td>
  1352. <td><var get_action_name($action)></td>
  1353. <td><var get_action_name($action,2)>: <var $info></td>
  1354. <td><var $date></td>
  1355. <td><var dec_to_dot($ip)></td>
  1356. </tr>
  1357. </loop>
  1358. </tbody>
  1359. </table>
  1360. }.NORMAL_FOOT_INCLUDE);
  1361. use constant STAFF_ACTIVITY_BY_POST => compile_template(MANAGER_HEAD_INCLUDE.q{
  1362. <div class="dellist"><h2>Staff Activity</h2></div>
  1363. }.STAFF_ACTIVITY_HEAD.q{
  1364. <p align="center" style="margin-top:0.2em"><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;perpage=<var $perpage>">Show All</a></p>
  1365. <div class="dellist"><h3>Showing Activity on Post <var $post_to_view></h3></div>
  1366. }.PAGINATION_SECTION.q{
  1367. <table align="center" style="white-space: nowrap">
  1368. <tbody>
  1369. <tr class="managehead">
  1370. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=username&amp;order=<if $order =~ /^asc/ || $sortby ne 'username'>desc</if><if $order !~ /^asc/i && $sortby eq 'username'>asc</if>">User<if $sortby eq 'username'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1371. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=account&amp;order=<if $order =~ /^asc/ || $sortby ne 'account'>desc</if><if $order !~ /^asc/i && $sortby eq 'account'>asc</if>">Class<if $sortby eq 'account'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1372. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=action&amp;order=<if $order =~ /^asc/ || $sortby ne 'action'>desc</if><if $order !~ /^asc/i && $sortby eq 'action'>asc</if>">Action<if $sortby eq 'action'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1373. <th><a href="<var $self>?task=stafflog&amp;board=<var $board-\>path()>&amp;view=<var $view>&amp;page=<var $page>&amp;perpage=<var $perpage>&amp;sortby=date&amp;order=<if $order =~ /^asc/ || $sortby ne 'date'>desc</if><if $order !~ /^asc/ && $sortby eq 'date'>asc</if>">Date<if $sortby eq 'date'> <if $order =~ /^asc/i>&dtrif;</if><if $order !~ /^asc/>&utrif;</if></if></a></th>
  1374. <th>IP Address</th>
  1375. </tr>
  1376. <loop $entries>
  1377. <tr class="row<var $rowtype>">
  1378. <td><if $disabled><span style="color:#555555"></if><strong><var $username></strong><if $disabled></span></if></td>
  1379. <td><if $account eq 'admin'>Administrator</if>
  1380. <if $account eq 'mod'>Moderator</if></td>
  1381. <td><var get_action_name($action)></td>
  1382. <td><var $date></td>
  1383. <td><var dec_to_dot($ip)></td>
  1384. </tr>
  1385. </loop>
  1386. </tbody>
  1387. </table>
  1388. }.NORMAL_FOOT_INCLUDE);
  1389. use constant STAFF_EDIT_HISTORY => compile_template(MINI_HEAD_INCLUDE.q{
  1390. <h1 style="font-size: 1em; text-align: center; font-weight: bold">Staff Editing History for Post <var $num></h1>
  1391. <ul>
  1392. <loop $edits>
  1393. <li><span class="postername"><var $username></span> on <strong><var $date></strong>.</li>
  1394. </loop>
  1395. </ul>
  1396. }.MINI_FOOT_INCLUDE);
  1397. use constant EDIT_SUCCESSFUL => compile_template(MINI_HEAD_REFRESH_INCLUDE.q{
  1398. <p style="font-size: 1em; text-align: center; font-weight: bold">Update Successful!</p>
  1399. }.MINI_FOOT_INCLUDE);
  1400. use constant BAN_PANEL_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1401. <div class="dellist"><h2><const S_MANABANS></h2></div>
  1402. <div class="postarea">
  1403. <table><tbody><tr><td valign="middle">
  1404. <form action="<var $self>" method="post">
  1405. <input type="hidden" name="task" value="addip" />
  1406. <input type="hidden" name="type" value="ipban" />
  1407. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1408. <table><tbody>
  1409. <tr><td class="postblock"><const S_BANIPLABEL></td><td><input type="text" name="ip" size="24" value="<var dec_to_dot($ip)>" /></td></tr>
  1410. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="mask" size="24" /></td></tr>
  1411. <tr><td class="postblock"><const S_BANEXPIRE></td><td><input type="text" name="expiration" size="16" /><br/>
  1412. <select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;">
  1413. <option value="" selected="selected">Presets</option>
  1414. <option value="300">5 minutes</option>
  1415. <option value="900">15 minutes</option>
  1416. <option value="1800">30 minutes</option>
  1417. <option value="3600">1 hour</option>
  1418. <option value="7200">2 hours</option>
  1419. <option value="43200">12 hours</option>
  1420. <option value="86400">1 day</option>
  1421. <option value="172800">2 days</option>
  1422. <option value="604800">1 week</option>
  1423. <option value="1209600">2 weeks</option>
  1424. <option value="2419200">~1 month</option>
  1425. <option value="4838400">~2 months</option>
  1426. <option value="15768000">6 months</option>
  1427. <option value="31536000">1 year</option>
  1428. <option value="0">Eternity</option>
  1429. </select> (Javascript)
  1430. </td></tr>
  1431. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="24" /></td></tr>
  1432. <tr><td class="postblock"><const S_TOTALBAN></td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="<const S_BANIP>" style="float: right; clear: none"/></td></tr>
  1433. </tbody></table></form>
  1434. </td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="middle">
  1435. <form action="<var $self>" method="post">
  1436. <input type="hidden" name="task" value="addip" />
  1437. <input type="hidden" name="type" value="whitelist" />
  1438. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1439. <table><tbody>
  1440. <tr><td class="postblock"><const S_BANIPLABEL></td><td><input type="text" name="ip" size="24" /></td></tr>
  1441. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="mask" size="24" /></td></tr>
  1442. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" />
  1443. <input type="submit" value="<const S_BANWHITELIST>" /></td></tr>
  1444. </tbody></table></form>
  1445. </td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td valign="bottom">
  1446. <form action="<var $self>" method="post">
  1447. <input type="hidden" name="task" value="addstring" />
  1448. <input type="hidden" name="type" value="wordban" />
  1449. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1450. <table><tbody>
  1451. <tr><td class="postblock"><const S_BANWORDLABEL></td><td><input type="text" name="string" size="24" /></td></tr>
  1452. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" />
  1453. <input type="submit" value="<const S_BANWORD>" /></td></tr>
  1454. </tbody></table></form>
  1455. </td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign="bottom">
  1456. <form action="<var $self>" method="post">
  1457. <input type="hidden" name="task" value="addstring" />
  1458. <input type="hidden" name="type" value="trust" />
  1459. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1460. <table><tbody>
  1461. <tr><td class="postblock"><const S_BANTRUSTTRIP></td><td><input type="text" name="string" size="24" /></td></tr>
  1462. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" />
  1463. <input type="submit" value="<const S_BANTRUST>" /></td></tr>
  1464. </tbody></table></form>
  1465. </td></tr></tbody></table>
  1466. </div><br />
  1467. <table align="center"><tbody>
  1468. <tr class="managehead"><const S_BANTABLE></tr>
  1469. <loop $bans>
  1470. <if $divider><tr class="managehead"><th colspan="7"></th></tr></if>
  1471. <tr class="row<var $rowtype>">
  1472. <if $type eq 'ipban'>
  1473. <td>IP</td>
  1474. <td><var dec_to_dot($ival1)>/<var dec_to_dot($ival2)></td>
  1475. </if>
  1476. <if $type eq 'wordban'>
  1477. <td>Word</td>
  1478. <td><var clean_string($sval1)></td>
  1479. </if>
  1480. <if $type eq 'trust'>
  1481. <td>NoCap</td>
  1482. <td><var $sval1></td>
  1483. </if>
  1484. <if $type eq 'whitelist'>
  1485. <td>Whitelist</td>
  1486. <td><var dec_to_dot($ival1)>/<var dec_to_dot($ival2)></td>
  1487. </if>
  1488. <td><var clean_string($comment)></td>
  1489. <td><var $expirehuman></td>
  1490. <td style="text-align: center"><if $type eq 'ipban'><var $browsingban></if><if $type ne 'ipban'>--</if></td>
  1491. <td><var $username></td>
  1492. <td>[<a href="<var $self>?board=<var $board-\>path()>&amp;task=removeban&amp;num=<var $num>"><const S_BANREMOVE></a>]
  1493. [<a href="<var $self>?board=<var $board-\>path()>&amp;task=baneditwindow&amp;num=<var $num>" target="_blank" onclick="popUp('<var $self>?board=<var $board-\>path()>&amp;task=baneditwindow&amp;num=<var $num>'); return false"><const S_BANEDIT></a>]</td>
  1494. </tr>
  1495. </loop>
  1496. </tbody></table><br />
  1497. }.NORMAL_FOOT_INCLUDE);
  1498. use constant BAN_WINDOW => compile_template(MINI_HEAD_INCLUDE.q{
  1499. <h1 style="text-align: center; font-size: 1em"><if $delete>Banning IP Address <var $ip> and Deleting Post <var $delete></if><if !$delete>Banning IP Address <var $ip></if></h1>
  1500. <form action="<var $self>" method="post">
  1501. <input type="hidden" name="ip" value="<var $ip>" />
  1502. <input type="hidden" name="task" value="addipfrompopup" />
  1503. <input type="hidden" name="delete" value="<var $delete>" />
  1504. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1505. <table align="center"><tbody>
  1506. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="mask" value="255.255.255.255" size="24" /></td></tr>
  1507. <tr><td class="postblock"><const S_BANEXPIRE></td><td><input type="text" name="expiration" size="16" /><br/>
  1508. <select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;">
  1509. <option value="" selected="selected">Presets</option>
  1510. <option value="300">5 minutes</option>
  1511. <option value="900">15 minutes</option>
  1512. <option value="1800">30 minutes</option>
  1513. <option value="3600">1 hour</option>
  1514. <option value="7200">2 hours</option>
  1515. <option value="43200">12 hours</option>
  1516. <option value="86400">1 day</option>
  1517. <option value="172800">2 days</option>
  1518. <option value="604800">1 week</option>
  1519. <option value="1209600">2 weeks</option>
  1520. <option value="2419200">~1 month</option>
  1521. <option value="4838400">~2 months</option>
  1522. <option value="15768000">6 months</option>
  1523. <option value="31536000">1 year</option>
  1524. <option value="0">Eternity</option>
  1525. </select> (Javascript)
  1526. </td></tr>
  1527. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="24" /></td></tr>
  1528. <tr><td class="postblock"><const S_TOTALBAN></td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="<const S_BANIP>" style="float: right; clear: none"/></td></tr>
  1529. </tbody></table>
  1530. <if $delete><p align="center">[<label><input type="checkbox" name="deleteall_confirm" value="1" /> Delete <strong>All</strong> Posts From IP/Mask (<var $count> for default mask)?</label>]</p></if>
  1531. </form>
  1532. }.MINI_FOOT_INCLUDE);
  1533. use constant EDIT_WINDOW => compile_template(MINI_HEAD_INCLUDE.q{
  1534. <h1 style="text-align: center; font-size: 1em">Editing Admin Entry</h1>
  1535. <div class="postarea">
  1536. <loop $hash>
  1537. <if $type eq 'ipban'>
  1538. <form action="<var $self>" method="post">
  1539. <input type="hidden" name="task" value="adminedit" />
  1540. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1541. <input type="hidden" name="type" value="ipban" />
  1542. <input type="hidden" name="num" value="<var $num>" />
  1543. <table><tbody>
  1544. <tr><td class="postblock"><const S_BANIPLABEL></td><td><input type="text" name="ival1" size="24" value="<var dec_to_dot($ival1)>" /></td></tr>
  1545. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="ival2" size="24" value="<var dec_to_dot($ival2)>" /></td></tr>
  1546. <tr><td class="postblock"><const S_BANEXPIRE_EDIT></td><td>
  1547. <select name="day">
  1548. <option value="1"<if $day == 1> selected="selected"</if>>1</option>
  1549. <option value="2"<if $day == 2> selected="selected"</if>>2</option>
  1550. <option value="3"<if $day == 3> selected="selected"</if>>3</option>
  1551. <option value="4"<if $day == 4> selected="selected"</if>>4</option>
  1552. <option value="5"<if $day == 5> selected="selected"</if>>5</option>
  1553. <option value="6"<if $day == 6> selected="selected"</if>>6</option>
  1554. <option value="7"<if $day == 7> selected="selected"</if>>7</option>
  1555. <option value="8"<if $day == 8> selected="selected"</if>>8</option>
  1556. <option value="9"<if $day == 9> selected="selected"</if>>9</option>
  1557. <option value="10"<if $day == 10> selected="selected"</if>>10</option>
  1558. <option value="11"<if $day == 11> selected="selected"</if>>11</option>
  1559. <option value="12"<if $day == 12> selected="selected"</if>>12</option>
  1560. <option value="13"<if $day == 13> selected="selected"</if>>13</option>
  1561. <option value="14"<if $day == 14> selected="selected"</if>>14</option>
  1562. <option value="15"<if $day == 15> selected="selected"</if>>15</option>
  1563. <option value="16"<if $day == 16> selected="selected"</if>>16</option>
  1564. <option value="17"<if $day == 17> selected="selected"</if>>17</option>
  1565. <option value="18"<if $day == 18> selected="selected"</if>>18</option>
  1566. <option value="19"<if $day == 19> selected="selected"</if>>19</option>
  1567. <option value="20"<if $day == 20> selected="selected"</if>>20</option>
  1568. <option value="21"<if $day == 21> selected="selected"</if>>21</option>
  1569. <option value="22"<if $day == 22> selected="selected"</if>>22</option>
  1570. <option value="23"<if $day == 23> selected="selected"</if>>23</option>
  1571. <option value="24"<if $day == 24> selected="selected"</if>>24</option>
  1572. <option value="25"<if $day == 25> selected="selected"</if>>25</option>
  1573. <option value="26"<if $day == 26> selected="selected"</if>>26</option>
  1574. <option value="27"<if $day == 27> selected="selected"</if>>27</option>
  1575. <option value="28"<if $day == 28> selected="selected"</if>>28</option>
  1576. <option value="29"<if $day == 29> selected="selected"</if>>29</option>
  1577. <option value="30"<if $day == 30> selected="selected"</if>>30</option>
  1578. <option value="31"<if $day == 31> selected="selected"</if>>31</option>
  1579. </select>
  1580. <select name="month">
  1581. <option value="1" <if $month == 0>selected="selected"</if>>January</option>
  1582. <option value="2" <if $month == 1>selected="selected"</if>>February</option>
  1583. <option value="3" <if $month == 2>selected="selected"</if>>March</option>
  1584. <option value="4" <if $month == 3>selected="selected"</if>>April</option>
  1585. <option value="5" <if $month == 4>selected="selected"</if>>May</option>
  1586. <option value="6" <if $month == 5>selected="selected"</if>>June</option>
  1587. <option value="7" <if $month == 6>selected="selected"</if>>July</option>
  1588. <option value="8" <if $month == 7>selected="selected"</if>>August</option>
  1589. <option value="9" <if $month == 8>selected="selected"</if>>September</option>
  1590. <option value="10" <if $month == 9>selected="selected"</if>>October</option>
  1591. <option value="11" <if $month == 10>selected="selected"</if>>November</option>
  1592. <option value="12" <if $month == 11>selected="selected"</if>>December</option>
  1593. </select>
  1594. <input type="text" name="year" value="<var $year>" size="5" />
  1595. <br />
  1596. <select name="hour">
  1597. <option value="0" <if $hour == 0 >selected="selected"</if>>00</option>
  1598. <option value="1" <if $hour == 1 >selected="selected"</if>>01</option>
  1599. <option value="2" <if $hour == 2 >selected="selected"</if>>02</option>
  1600. <option value="3" <if $hour == 3 >selected="selected"</if>>03</option>
  1601. <option value="4" <if $hour == 4 >selected="selected"</if>>04</option>
  1602. <option value="5" <if $hour == 5 >selected="selected"</if>>05</option>
  1603. <option value="6" <if $hour == 6 >selected="selected"</if>>06</option>
  1604. <option value="7" <if $hour == 7 >selected="selected"</if>>07</option>
  1605. <option value="8" <if $hour == 8 >selected="selected"</if>>08</option>
  1606. <option value="9" <if $hour == 9 >selected="selected"</if>>09</option>
  1607. <option value="10" <if $hour == 10>selected="selected"</if>>10</option>
  1608. <option value="11" <if $hour == 11>selected="selected"</if>>11</option>
  1609. <option value="12" <if $hour == 12>selected="selected"</if>>12</option>
  1610. <option value="13" <if $hour == 13>selected="selected"</if>>13</option>
  1611. <option value="14" <if $hour == 14>selected="selected"</if>>14</option>
  1612. <option value="15" <if $hour == 15>selected="selected"</if>>15</option>
  1613. <option value="16" <if $hour == 16>selected="selected"</if>>16</option>
  1614. <option value="17" <if $hour == 17>selected="selected"</if>>17</option>
  1615. <option value="18" <if $hour == 18>selected="selected"</if>>18</option>
  1616. <option value="19" <if $hour == 19>selected="selected"</if>>19</option>
  1617. <option value="20" <if $hour == 20>selected="selected"</if>>20</option>
  1618. <option value="21" <if $hour == 21>selected="selected"</if>>21</option>
  1619. <option value="22" <if $hour == 22>selected="selected"</if>>22</option>
  1620. <option value="23" <if $hour == 23>selected="selected"</if>>23</option>
  1621. </select> :
  1622. <select name="min">
  1623. <option value="0" <if $min == 0 >selected="selected"</if>>00</option>
  1624. <option value="1" <if $min == 1 >selected="selected"</if>>01</option>
  1625. <option value="2" <if $min == 2 >selected="selected"</if>>02</option>
  1626. <option value="3" <if $min == 3 >selected="selected"</if>>03</option>
  1627. <option value="4" <if $min == 4 >selected="selected"</if>>04</option>
  1628. <option value="5" <if $min == 5 >selected="selected"</if>>05</option>
  1629. <option value="6" <if $min == 6 >selected="selected"</if>>06</option>
  1630. <option value="7" <if $min == 7 >selected="selected"</if>>07</option>
  1631. <option value="8" <if $min == 8 >selected="selected"</if>>08</option>
  1632. <option value="9" <if $min == 9 >selected="selected"</if>>09</option>
  1633. <option value="10" <if $min == 10>selected="selected"</if>>10</option>
  1634. <option value="11" <if $min == 11>selected="selected"</if>>11</option>
  1635. <option value="12" <if $min == 12>selected="selected"</if>>12</option>
  1636. <option value="13" <if $min == 13>selected="selected"</if>>13</option>
  1637. <option value="14" <if $min == 14>selected="selected"</if>>14</option>
  1638. <option value="15" <if $min == 15>selected="selected"</if>>15</option>
  1639. <option value="16" <if $min == 16>selected="selected"</if>>16</option>
  1640. <option value="17" <if $min == 17>selected="selected"</if>>17</option>
  1641. <option value="18" <if $min == 18>selected="selected"</if>>18</option>
  1642. <option value="19" <if $min == 19>selected="selected"</if>>19</option>
  1643. <option value="20" <if $min == 20>selected="selected"</if>>20</option>
  1644. <option value="21" <if $min == 21>selected="selected"</if>>21</option>
  1645. <option value="22" <if $min == 22>selected="selected"</if>>22</option>
  1646. <option value="23" <if $min == 23>selected="selected"</if>>23</option>
  1647. <option value="24" <if $min == 24>selected="selected"</if>>24</option>
  1648. <option value="25" <if $min == 25>selected="selected"</if>>25</option>
  1649. <option value="26" <if $min == 26>selected="selected"</if>>26</option>
  1650. <option value="27" <if $min == 27>selected="selected"</if>>27</option>
  1651. <option value="28" <if $min == 28>selected="selected"</if>>28</option>
  1652. <option value="29" <if $min == 29>selected="selected"</if>>29</option>
  1653. <option value="30" <if $min == 30>selected="selected"</if>>30</option>
  1654. <option value="31" <if $min == 31>selected="selected"</if>>31</option>
  1655. <option value="32" <if $min == 32>selected="selected"</if>>32</option>
  1656. <option value="33" <if $min == 33>selected="selected"</if>>33</option>
  1657. <option value="34" <if $min == 34>selected="selected"</if>>34</option>
  1658. <option value="35" <if $min == 35>selected="selected"</if>>35</option>
  1659. <option value="36" <if $min == 36>selected="selected"</if>>36</option>
  1660. <option value="37" <if $min == 37>selected="selected"</if>>37</option>
  1661. <option value="38" <if $min == 38>selected="selected"</if>>38</option>
  1662. <option value="39" <if $min == 39>selected="selected"</if>>39</option>
  1663. <option value="40" <if $min == 40>selected="selected"</if>>40</option>
  1664. <option value="41" <if $min == 41>selected="selected"</if>>41</option>
  1665. <option value="42" <if $min == 42>selected="selected"</if>>42</option>
  1666. <option value="43" <if $min == 43>selected="selected"</if>>43</option>
  1667. <option value="44" <if $min == 44>selected="selected"</if>>44</option>
  1668. <option value="45" <if $min == 45>selected="selected"</if>>45</option>
  1669. <option value="46" <if $min == 46>selected="selected"</if>>46</option>
  1670. <option value="47" <if $min == 47>selected="selected"</if>>47</option>
  1671. <option value="48" <if $min == 48>selected="selected"</if>>48</option>
  1672. <option value="49" <if $min == 49>selected="selected"</if>>49</option>
  1673. <option value="50" <if $min == 50>selected="selected"</if>>50</option>
  1674. <option value="51" <if $min == 51>selected="selected"</if>>51</option>
  1675. <option value="52" <if $min == 52>selected="selected"</if>>52</option>
  1676. <option value="53" <if $min == 53>selected="selected"</if>>53</option>
  1677. <option value="54" <if $min == 54>selected="selected"</if>>54</option>
  1678. <option value="55" <if $min == 55>selected="selected"</if>>55</option>
  1679. <option value="56" <if $min == 56>selected="selected"</if>>56</option>
  1680. <option value="57" <if $min == 57>selected="selected"</if>>57</option>
  1681. <option value="58" <if $min == 58>selected="selected"</if>>58</option>
  1682. <option value="59" <if $min == 59>selected="selected"</if>>59</option>
  1683. <option value="60" <if $min == 60>selected="selected"</if>>60</option>
  1684. </select> :
  1685. <select name="sec">
  1686. <option value="0" <if $sec == 0 >selected="selected"</if>>00</option>
  1687. <option value="1" <if $sec == 1 >selected="selected"</if>>01</option>
  1688. <option value="2" <if $sec == 2 >selected="selected"</if>>02</option>
  1689. <option value="3" <if $sec == 3 >selected="selected"</if>>03</option>
  1690. <option value="4" <if $sec == 4 >selected="selected"</if>>04</option>
  1691. <option value="5" <if $sec == 5 >selected="selected"</if>>05</option>
  1692. <option value="6" <if $sec == 6 >selected="selected"</if>>06</option>
  1693. <option value="7" <if $sec == 7 >selected="selected"</if>>07</option>
  1694. <option value="8" <if $sec == 8 >selected="selected"</if>>08</option>
  1695. <option value="9" <if $sec == 9 >selected="selected"</if>>09</option>
  1696. <option value="10" <if $sec == 10 >selected="selected"</if>>10</option>
  1697. <option value="11" <if $sec == 11>selected="selected"</if>>11</option>
  1698. <option value="12" <if $sec == 12>selected="selected"</if>>12</option>
  1699. <option value="13" <if $sec == 13>selected="selected"</if>>13</option>
  1700. <option value="14" <if $sec == 14>selected="selected"</if>>14</option>
  1701. <option value="15" <if $sec == 15>selected="selected"</if>>15</option>
  1702. <option value="16" <if $sec == 16>selected="selected"</if>>16</option>
  1703. <option value="17" <if $sec == 17>selected="selected"</if>>17</option>
  1704. <option value="18" <if $sec == 18>selected="selected"</if>>18</option>
  1705. <option value="19" <if $sec == 19>selected="selected"</if>>19</option>
  1706. <option value="20" <if $sec == 20>selected="selected"</if>>20</option>
  1707. <option value="21" <if $sec == 21>selected="selected"</if>>21</option>
  1708. <option value="22" <if $sec == 22>selected="selected"</if>>22</option>
  1709. <option value="23" <if $sec == 23>selected="selected"</if>>23</option>
  1710. <option value="24" <if $sec == 24>selected="selected"</if>>24</option>
  1711. <option value="25" <if $sec == 25>selected="selected"</if>>25</option>
  1712. <option value="26" <if $sec == 26>selected="selected"</if>>26</option>
  1713. <option value="27" <if $sec == 27>selected="selected"</if>>27</option>
  1714. <option value="28" <if $sec == 28>selected="selected"</if>>28</option>
  1715. <option value="29" <if $sec == 29>selected="selected"</if>>29</option>
  1716. <option value="30" <if $sec == 30>selected="selected"</if>>30</option>
  1717. <option value="31" <if $sec == 31>selected="selected"</if>>31</option>
  1718. <option value="32" <if $sec == 32>selected="selected"</if>>32</option>
  1719. <option value="33" <if $sec == 33>selected="selected"</if>>33</option>
  1720. <option value="34" <if $sec == 34>selected="selected"</if>>34</option>
  1721. <option value="35" <if $sec == 35>selected="selected"</if>>35</option>
  1722. <option value="36" <if $sec == 36>selected="selected"</if>>36</option>
  1723. <option value="37" <if $sec == 37>selected="selected"</if>>37</option>
  1724. <option value="38" <if $sec == 38>selected="selected"</if>>38</option>
  1725. <option value="39" <if $sec == 39>selected="selected"</if>>39</option>
  1726. <option value="40" <if $sec == 40>selected="selected"</if>>40</option>
  1727. <option value="41" <if $sec == 41>selected="selected"</if>>41</option>
  1728. <option value="42" <if $sec == 42>selected="selected"</if>>42</option>
  1729. <option value="43" <if $sec == 43>selected="selected"</if>>43</option>
  1730. <option value="44" <if $sec == 44>selected="selected"</if>>44</option>
  1731. <option value="45" <if $sec == 45>selected="selected"</if>>45</option>
  1732. <option value="46" <if $sec == 46>selected="selected"</if>>46</option>
  1733. <option value="47" <if $sec == 47>selected="selected"</if>>47</option>
  1734. <option value="48" <if $sec == 48>selected="selected"</if>>48</option>
  1735. <option value="49" <if $sec == 49>selected="selected"</if>>49</option>
  1736. <option value="50" <if $sec == 50>selected="selected"</if>>50</option>
  1737. <option value="51" <if $sec == 51>selected="selected"</if>>51</option>
  1738. <option value="52" <if $sec == 52>selected="selected"</if>>52</option>
  1739. <option value="53" <if $sec == 53>selected="selected"</if>>53</option>
  1740. <option value="54" <if $sec == 54>selected="selected"</if>>54</option>
  1741. <option value="55" <if $sec == 55>selected="selected"</if>>55</option>
  1742. <option value="56" <if $sec == 56>selected="selected"</if>>56</option>
  1743. <option value="57" <if $sec == 57>selected="selected"</if>>57</option>
  1744. <option value="58" <if $sec == 58>selected="selected"</if>>58</option>
  1745. <option value="59" <if $sec == 59>selected="selected"</if>>59</option>
  1746. <option value="60" <if $sec == 60>selected="selected"</if>>60</option>
  1747. </select> UTC<br />
  1748. <input type="checkbox" name="noexpire" value="noexpire"<if $expiration==0> checked="checked"</if> /> <const S_SETNOEXPIRE>
  1749. </td></tr>
  1750. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" value="<var $comment>" /></td></tr>
  1751. <tr><td class="postblock"><const S_TOTALBAN></td><td><input type="checkbox" name="total" value="yes"<if $total eq 'yes'> checked="checked"</if> style="float:left; clear:none" />
  1752. <input type="submit" value="<const S_UPDATE>" style="float: right; clear:none"/></td></tr>
  1753. </tbody></table></form></if>
  1754. <if $type eq 'whitelist'>
  1755. <form action="<var $self>?board=<var $board-\>path()>" method="post">
  1756. <input type="hidden" name="task" value="adminedit" />
  1757. <input type="hidden" name="type" value="whitelist" />
  1758. <input type="hidden" name="num" value="<var $num>" />
  1759. <table><tbody>
  1760. <tr><td class="postblock"><const S_BANIPLABEL></td><td><input type="text" name="ival1" size="24" value="<var dec_to_dot($ival1)>" /></td></tr>
  1761. <tr><td class="postblock"><const S_BANMASKLABEL></td><td><input type="text" name="ival2" size="24" value="<var dec_to_dot($ival2)>"/></td></tr>
  1762. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" value="<var $comment>" />
  1763. <input type="submit" value="<const S_UPDATE>" /></td></tr>
  1764. </tbody></table></form>
  1765. </if>
  1766. <if $type eq 'trust'>
  1767. <form action="<var $self>?board=<var $board-\>path()>" method="post">
  1768. <input type="hidden" name="task" value="adminedit" />
  1769. <input type="hidden" name="type" value="trust" />
  1770. <input type="hidden" name="num" value="<var $num>" />
  1771. <table><tbody>
  1772. <tr><td class="postblock"><const S_BANTRUSTTRIP></td><td><input type="text" name="sval1" size="24" value="<var $sval1>" /></td></tr>
  1773. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" value="<var $comment>" />
  1774. <input type="submit" value="<const S_UPDATE>" /></td></tr>
  1775. </tbody></table></form>
  1776. </if>
  1777. <if $type eq 'wordban'>
  1778. <form action="<var $self>?board=<var $board-\>path()>" method="post">
  1779. <input type="hidden" name="task" value="adminedit" />
  1780. <input type="hidden" name="type" value="wordban" />
  1781. <input type="hidden" name="num" value="<var $num>" />
  1782. <table><tbody>
  1783. <tr><td class="postblock"><const S_BANWORDLABEL></td><td><input type="text" name="sval1" size="24" value="<var $sval1>"/></td></tr>
  1784. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="16" value="<var $comment>" />
  1785. <input type="submit" value="<const S_UPDATE>" /></td></tr>
  1786. </tbody></table></form>
  1787. </if>
  1788. </loop>
  1789. </div>
  1790. }.MINI_FOOT_INCLUDE);
  1791. use constant PROXY_PANEL_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1792. <div class="dellist"><h2><const S_MANAPROXY></h2></div>
  1793. <div class="postarea">
  1794. <table><tbody><tr><td valign="bottom">
  1795. <if !($board-\>option('ENABLE_PROXY_CHECK'))>
  1796. <div class="dellist"><const S_PROXYDISABLED></div>
  1797. <br />
  1798. </if> </td></tr></tbody></table>
  1799. <form action="<var $self>?board=<var $board-\>path()>" method="post">
  1800. <input type="hidden" name="task" value="addproxy" />
  1801. <input type="hidden" name="type" value="white" />
  1802. <table><tbody>
  1803. <tr><td class="postblock"><const S_PROXYIPLABEL></td><td><input type="text" name="ip" size="24" /></td></tr>
  1804. <tr><td class="postblock"><const S_PROXYTIMELABEL></td><td><input type="text" name="timestamp" size="24" />
  1805. <input type="submit" value="<const S_PROXYWHITELIST>" /></td></tr>
  1806. </tbody></table></form>
  1807. </div><br />
  1808. <table align="center"><tbody>
  1809. <tr class="managehead"><const S_PROXYTABLE></tr>
  1810. <loop $scanned>
  1811. <if $divider><tr class="managehead"><th colspan="6"></th></tr></if>
  1812. <tr class="row<var $rowtype>">
  1813. <if $type eq 'white'>
  1814. <td>White</td>
  1815. <td><var $ip></td>
  1816. <td><var $timestamp+PROXY_WHITE_AGE-time()></td>
  1817. </if>
  1818. <if $type eq 'black'>
  1819. <td>Black</td>
  1820. <td><var $ip></td>
  1821. <td><var $timestamp+PROXY_BLACK_AGE-time()></td>
  1822. </if>
  1823. <td><var $date></td>
  1824. <td><a href="<var $self>?task=removeproxy&amp;board=<var $board-\>path()>&amp;num=<var $num>"><const S_PROXYREMOVEBLACK></a></td>
  1825. </tr>
  1826. </loop>
  1827. </tbody></table><br />
  1828. }.NORMAL_FOOT_INCLUDE);
  1829. use constant SPAM_PANEL_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1830. <div align="center">
  1831. <div class="dellist"><h2><const S_MANASPAM></h2></div>
  1832. <p><const S_SPAMEXPL></p>
  1833. <form action="<var $self>" method="post">
  1834. <input type="hidden" name="task" value="updatespam" />
  1835. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1836. <div class="buttons">
  1837. <input type="submit" value="<const S_SPAMSUBMIT>" />
  1838. <input type="button" value="<const S_SPAMCLEAR>" onclick="document.forms[0].spam.value=''" />
  1839. <input type="reset" value="<const S_SPAMRESET>" />
  1840. </div>
  1841. <textarea name="spam" rows="<var $spamlines>" cols="79"><var $spam></textarea>
  1842. <div class="buttons">
  1843. <input type="submit" value="<const S_SPAMSUBMIT>" />
  1844. <input type="button" value="<const S_SPAMCLEAR>" onclick="document.forms[0].spam.value=''" />
  1845. <input type="reset" value="<const S_SPAMRESET>" />
  1846. </div>
  1847. </form>
  1848. </div>
  1849. }.NORMAL_FOOT_INCLUDE);
  1850. use constant SQL_DUMP_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1851. <div class="dellist"><h2><const S_MANASQLDUMP></h2></div>
  1852. <pre><code><var $database></code></pre>
  1853. }.NORMAL_FOOT_INCLUDE);
  1854. use constant SQL_INTERFACE_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1855. <div class="dellist"><const S_MANASQLINT></div>
  1856. <div align="center">
  1857. <form action="<var $self>?board=<var $board-\>path()>" method="post">
  1858. <input type="hidden" name="task" value="sql" />
  1859. <textarea name="sql" rows="10" cols="60"></textarea>
  1860. <div class="delbuttons"><const S_SQLNUKE>
  1861. <input type="password" name="nuke" value="<var $nuke>" />
  1862. <input type="submit" value="<const S_SQLEXECUTE>" />
  1863. </div>
  1864. </form>
  1865. </div>
  1866. <pre><code><var $results></code></pre>
  1867. }.NORMAL_FOOT_INCLUDE);
  1868. use constant BAN_THREAD_TEMPLATE => compile_template(MINI_HEAD_INCLUDE.q{
  1869. <h1 style="text-align: center; font-size: 1em;color: red">Banning All Users in Thread No.<var $num></h1>
  1870. <p align="center"><em>Careful!</em></p>
  1871. <form action="<var $self>" method="post">
  1872. <input type="hidden" name="task" value="banthreadconfirm" />
  1873. <input type="hidden" name="num" value="<var $num>" />
  1874. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1875. <table align="center"><tbody>
  1876. <tr><td class="postblock"><const S_BANEXPIRE></td><td><input type="text" name="expiration" size="16" /><br/>
  1877. <select name="expirepresets" onchange="this.form.expiration.value = this.form.expirepresets.options[this.form.expirepresets.selectedIndex].value;">
  1878. <option value="" selected="selected">Presets</option>
  1879. <option value="300">5 minutes</option>
  1880. <option value="900">15 minutes</option>
  1881. <option value="1800">30 minutes</option>
  1882. <option value="3600">1 hour</option>
  1883. <option value="7200">2 hours</option>
  1884. <option value="43200">12 hours</option>
  1885. <option value="86400">1 day</option>
  1886. <option value="172800">2 days</option>
  1887. <option value="604800">1 week</option>
  1888. <option value="1209600">2 weeks</option>
  1889. <option value="2419200">~1 month</option>
  1890. <option value="4838400">~2 months</option>
  1891. <option value="15768000">6 months</option>
  1892. <option value="31536000">1 year</option>
  1893. <option value="0">Eternity</option>
  1894. </select> (Javascript)
  1895. </td></tr>
  1896. <tr><td class="postblock"><const S_BANCOMMENTLABEL></td><td><input type="text" name="comment" size="24" /></td></tr>
  1897. <tr><td class="postblock"><const S_TOTALBAN></td><td><input type="checkbox" name="total" value="yes" style="float:left; clear:none" /> <input type="submit" value="<const S_BANIP>" style="float: right; clear: none"/></td></tr>
  1898. </tbody></table>
  1899. <p align="center">[<label><input type="checkbox" name="delete" value="yes" /> Delete Thread?</label>]</p>
  1900. </form>
  1901. }.MINI_FOOT_INCLUDE);
  1902. use constant SCRIPT_SECURITY_PANEL => compile_template(MANAGER_HEAD_INCLUDE.q{
  1903. <div class="dellist"><h2>Script Security</h2></div>
  1904. <table align="center">
  1905. <tbody>
  1906. <tr>
  1907. <th>ID</th>
  1908. <th>IP Address</th>
  1909. <th>Task</th>
  1910. <th>Board</th>
  1911. <th>Post</th>
  1912. <th>Expiration</th>
  1913. <th>Failure?</th>
  1914. </tr>
  1915. <loop $entries>
  1916. <tr>
  1917. <td><var $id></td>
  1918. <td><var $host></td>
  1919. <td><var $task></td>
  1920. <td><var $boardname></td>
  1921. <td><if $post><var $post></if><if !$post>N/A</if></td>
  1922. <td><var $expiration></td>
  1923. <td><if $passfail>Yes</if><if !$passfail>No</if></td>
  1924. </tr>
  1925. </loop>
  1926. </tbody>
  1927. </table>
  1928. <div align="center">
  1929. <h3>Unban Host From Script Access</h3>
  1930. <form action="<var $self>" method="get">
  1931. <input type="hidden" name="task" value="unbanhost" />
  1932. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1933. <label>IP Address: <input type="text" name="ip" /></label> <input type="submit" value="Forgive" />
  1934. </form>
  1935. </div>
  1936. }.NORMAL_FOOT_INCLUDE);
  1937. #
  1938. # Post Reporting
  1939. #
  1940. use constant POST_REPORT_WINDOW => compile_template(NORMAL_HEAD_INCLUDE.q{
  1941. <div class="dellist"><h2>Reporting Post(s) <var $num></h2></div>
  1942. <form action="<var $self>" method="post">
  1943. <input type="hidden" name="task" value="confirmreport" />
  1944. <input type="hidden" name="referer" value="<var $referer>" />
  1945. <input type="hidden" name="board" value="<var $board-\>path()>" />
  1946. <input type="hidden" name="num" value="<var $num>" />
  1947. <if $referer><input type="hidden" name="referer" value="<var $referer>" /></if>
  1948. <table align="center">
  1949. <tbody>
  1950. <tr>
  1951. <td class="postblock">Reason</td>
  1952. <td><textarea name="comment" cols="48" rows="2"></textarea></td>
  1953. </tr>
  1954. <tr>
  1955. <td colspan="2"><input type="submit" value="Submit" /></td>
  1956. </tr>
  1957. </tbody>
  1958. </table>
  1959. </form>
  1960. }.NORMAL_FOOT_INCLUDE);
  1961. use constant REPORT_SUBMITTED => compile_template(NORMAL_HEAD_INCLUDE.q{
  1962. <div class="dellist"><h2>Report Submitted</h2></div>
  1963. <if $error_occurred>
  1964. <p style="text-align:center">There were errors.</p>
  1965. <ul>
  1966. <loop $errors>
  1967. <li><var $error></li>
  1968. </loop>
  1969. </ul>
  1970. </if>
  1971. <if $referer><p style="text-align:center; font-size: 2em"><a href="<var $referer>">Return</a></p></if>
  1972. }.NORMAL_FOOT_INCLUDE);
  1973. use constant REPORT_RESOLVED => compile_template(MANAGER_HEAD_INCLUDE.q{
  1974. <div class="dellist"><h2>Report Resolved</h2></div>
  1975. <if $error_occurred>
  1976. <p>There were errors.</p>
  1977. <ul>
  1978. <loop $errors>
  1979. <li><var $error></li>
  1980. </loop>
  1981. </ul>
  1982. </if>
  1983. <if $referer><p align="center" style="font-size:2em"><a href="<var escamp($referer)>">Return</a></p></if>
  1984. }.NORMAL_FOOT_INCLUDE);
  1985. use constant BACKUP_PANEL_TEMPLATE => compile_template(MANAGER_HEAD_INCLUDE.q{
  1986. <div class="dellist"><h2>Trash Bin</h2></div>
  1987. <if !POST_BACKUP><p align="center"><em>Wakaba is not set to backup deletions/edits at this time.</em></p></if>
  1988. <if POST_BACKUP>
  1989. <p align="center"><em>Wakaba is currently set to purge all posts older than <var &POST_BACKUP_EXPIRE/24/3600> day(s) old.</em></p>
  1990. <hr />
  1991. <if !$thread>
  1992. <table border="1" style="float:left"><tbody><tr><td>
  1993. <if $prevpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $prevpage>" /><input value="<const S_PREV>" type="submit" /></form></if>
  1994. <if $prevpage eq 'none'><const S_FIRSTPG></if>
  1995. </td><td>
  1996. <loop $pages>
  1997. <if !$current>[<a href="<var $filename>"><var $page></a>]</if>
  1998. <if $current>[<var $page>]</if>
  1999. </loop>
  2000. </td><td>
  2001. <if $nextpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $nextpage>" /><input value="<const S_NEXT>" type="submit" /></form></if>
  2002. <if $nextpage eq 'none'><const S_LASTPG></if>
  2003. </td></tr></tbody></table>
  2004. </if>
  2005. <if $thread>
  2006. <span style="float:left">[<a href="<var $self>?task=postbackups&amp;board=<var $board-\>path()>">Return to Panel</a>]</span>
  2007. </if>
  2008. <form action="<var $self>" method="post" id="delform">
  2009. <input type="hidden" name="board" value="<var $board-\>path>" />
  2010. <input type="hidden" name="admindelete" value="1" />
  2011. <input type="hidden" name="task" value="restorebackups" />
  2012. <div class="delbuttons" style="float:right">
  2013. <input type="submit" name="handle" value="Restore" />
  2014. <input type="submit" name="handle" value="<const S_MPDELETE>" />
  2015. <input type="reset" value="<const S_MPRESET>" />
  2016. </div>
  2017. <br clear="all" />
  2018. <hr />
  2019. <loop $threads>
  2020. <loop $posts>
  2021. <if !$parent || $standalone>
  2022. <if $image>
  2023. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  2024. -(<em><var $size> B, <var $width>x<var $height></em>)</span>
  2025. <span class="thumbnailmsg"><const S_THUMB></span><br />
  2026. <if $thumbnail>
  2027. <a target="_blank" href="<var expand_image_filename($image)>" >
  2028. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  2029. </if>
  2030. <if !$thumbnail>
  2031. <if $board-\>option('DELETED_THUMBNAIL')>
  2032. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  2033. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  2034. </if>
  2035. <if !($board-\>option('DELETED_THUMBNAIL'))>
  2036. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  2037. </if>
  2038. </if>
  2039. </if>
  2040. <a name="<var $postnum>"></a>
  2041. <label><input type="checkbox" name="num" value="<var $postnum>" />
  2042. <span class="filetitle"><var $subject></span>
  2043. <if $email><span class="postername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  2044. <if !$email><span class="postername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  2045. <span class="ipaddr">(IP: <var dec_to_dot($ip)><if $admin_post eq 'yes'>; <if !$lastedit><strong>Moderator Post</strong></if><if $lastedit><strong>Moderator Edit</strong></if></if>)</span>
  2046. <if !$parent>
  2047. <if $stickied> <img src="<var expand_filename('/include/boards/sticky.gif')>" alt="<const S_STICKIEDALT>" title="<const S_STICKIED>" /> </if>
  2048. <if $locked eq 'yes'> <img src="<var expand_filename('/include/boards/locked.gif')>" alt="<const S_LOCKEDALT>" title="<const S_LOCKED>" /> </if>
  2049. </if>
  2050. <var $date></label>
  2051. <span class="reflink">
  2052. No.<var $postnum>
  2053. </span>&nbsp;
  2054. <if $standalone><span><em>(Orphaned From Parent: <a href="<var get_reply_link($parent)>"><var $parent></a> )</em></span></if>
  2055. <if !$thread>
  2056. [<a href="<var $self>?task=postbackups&amp;board=<var $board-\>path()>&amp;page=t<var $postnum>">View</a>]
  2057. </if>
  2058. <br />
  2059. <blockquote>
  2060. <var $comment>
  2061. <if $abbrev><div class="abbrev">}.sprintf(S_ABBRTEXT,'<var $self>?task=postbackups&amp;board=<var $board-\>path>&amp;page=t<var $postnum>').q{</div></if>
  2062. <if $lastedit><p style="font-size: small; font-style: italic"><const S_LASTEDITED><if $admin_post eq 'yes'> <const S_BYMOD></if> <var $lastedit>. (IP: <var dec_to_dot($lastedit_ip)>)</p></if>
  2063. </blockquote>
  2064. <if $omit>
  2065. <span class="omittedposts">
  2066. <if $omitimages><var sprintf S_ABBRIMG,$omit,$omitimages></if>
  2067. <if !$omitimages><var sprintf S_ABBR,$omit></if>
  2068. </span>
  2069. </if>
  2070. </if>
  2071. <if $parent && !$standalone>
  2072. <table><tbody><tr><td class="doubledash">&gt;&gt;</td>
  2073. <td class="reply" id="reply<var $postnum>">
  2074. <a name="<var $postnum>"></a>
  2075. <label><input type="checkbox" name="num" value="<var $postnum>" />
  2076. <span class="replytitle"><var $subject></span>
  2077. <if $email><span class="commentpostername"><a href="<var $email>"><var $name></a></span><if $trip><span class="postertrip"><a href="<var $email>"><var $trip></a></span></if></if>
  2078. <if !$email><span class="commentpostername"><var $name></span><if $trip><span class="postertrip"><var $trip></span></if></if>
  2079. <span class="ipaddr">(IP: <var dec_to_dot($ip)><if $admin_post eq 'yes'>; <if !$lastedit><strong>Moderator Post</strong></if><if $lastedit><strong>Moderator Edit</strong></if></if>)</span>
  2080. <var $date></label>
  2081. <span class="reflink">
  2082. No.<var $postnum>
  2083. </span>&nbsp;
  2084. <if $image>
  2085. <br />
  2086. <span class="filesize"><const S_PICNAME><a target="_blank" href="<var expand_image_filename($image)>"><var get_filename($image)></a>
  2087. -(<em><var $size> B, <var $width>x<var $height></em>)</span>
  2088. <span class="thumbnailmsg"><const S_THUMB></span><br />
  2089. <if $thumbnail>
  2090. <a target="_blank" href="<var expand_image_filename($image)>">
  2091. <img src="<var expand_filename($thumbnail)>" width="<var $tn_width>" height="<var $tn_height>" alt="<var $size>" class="thumb" id="img<var get_filename($image)>" /></a>
  2092. </if>
  2093. <if !$thumbnail>
  2094. <if $board-\>option('DELETED_THUMBNAIL')>
  2095. <a target="_blank" href="<var expand_image_filename($board-\>option('DELETED_IMAGE'))>">
  2096. <img src="<var expand_filename($board-\>option('DELETED_THUMBNAIL'))>" width="<var $tn_width>" height="<var $tn_height>" alt="" class="thumb" /></a>
  2097. </if>
  2098. <if !($board-\>option('DELETED_THUMBNAIL'))>
  2099. <div class="nothumb"><a target="_blank" href="<var expand_image_filename($image)>"><const S_NOTHUMB></a></div>
  2100. </if>
  2101. </if>
  2102. </if>
  2103. <blockquote>
  2104. <var $comment>
  2105. <if $abbrev><div class="abbrev">}.sprintf(S_ABBRTEXT,"<var \$self>?task=postbackups&amp;board=<var \$board-\\>path()>&amp;page=t<var \$parent>#<var \$postnum>").q{</div></if>
  2106. <if $lastedit><p style="font-size: small; font-style: italic">Last edited<if $admin_post eq 'yes'> by moderator</if> <var $lastedit>. (IP: <var dec_to_dot($lastedit_ip)>)</p></if>
  2107. </blockquote>
  2108. </td></tr></tbody></table>
  2109. </if>
  2110. </loop>
  2111. <br clear="left" /><hr />
  2112. </loop>
  2113. <div class="delbuttons" style="float:right">
  2114. <input type="submit" name="handle" value="Restore" />
  2115. <input type="submit" name="handle" value="<const S_MPDELETE>" />
  2116. <input type="reset" value="<const S_MPRESET>" />
  2117. </div>
  2118. </form>
  2119. <if !$thread>
  2120. <table border="1" style="float:left"><tbody><tr><td>
  2121. <if $prevpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $prevpage>" /><input value="<const S_PREV>" type="submit" /></form></if>
  2122. <if $prevpage eq 'none'><const S_FIRSTPG></if>
  2123. </td><td>
  2124. <loop $pages>
  2125. <if !$current>[<a href="<var $filename>"><var $page></a>]</if>
  2126. <if $current>[<var $page>]</if>
  2127. </loop>
  2128. </td><td>
  2129. <if $nextpage ne 'none'><form method="get" action="<var $self>"><input type="hidden" name="task" value="postbackups" /><input type="hidden" name="board" value="<var $board-\>path()>" /><input type="hidden" name="page" value="<var $nextpage>" /><input value="<const S_NEXT>" type="submit" /></form></if>
  2130. <if $nextpage eq 'none'><const S_LASTPG></if>
  2131. </td></tr></tbody></table>
  2132. </if>
  2133. <br clear="all" />
  2134. </if>
  2135. }.NORMAL_FOOT_INCLUDE);
  2136. #
  2137. # Oekaki
  2138. #
  2139. # terrible quirks mode code
  2140. use constant OEKAKI_PAINT_TEMPLATE => compile_template(q{
  2141. <html>
  2142. <head>
  2143. <style type="text/css">
  2144. body { background: #9999BB; font-family: sans-serif; }
  2145. input,textarea { background-color:#CFCFFF; font-size: small; }
  2146. table.nospace { border-collapse:collapse; }
  2147. table.nospace tr td { margin:0px; }
  2148. .menu { background-color:#CFCFFF; border: 1px solid #666666; padding: 2px; margin-bottom: 2px; }
  2149. </style>
  2150. </head><body>
  2151. <script type="text/javascript" src="palette_selfy.js"></script>
  2152. <table class="nospace" width="100%" height="100%"><tbody><tr>
  2153. <td width="100%">
  2154. <applet code="c.ShiPainter.class" name="paintbbs" archive="spainter_all.jar" width="100%" height="100%">
  2155. <param name="image_width" value="<var $oek_x>" />
  2156. <param name="image_height" value="<var $oek_y>" />
  2157. <if $oek_src && !$oek_pch><param name="image_canvas" value="<var $oek_src>" /></if>
  2158. <if $oek_pch><param name="pch_file" value="<var $oek_pch>" /></if>
  2159. <param name="dir_resource" value="./" />
  2160. <param name="tt.zip" value="tt_def.zip" />
  2161. <param name="res.zip" value="res.zip" />
  2162. <param name="tools" value="<var $mode>" />
  2163. <param name="layer_count" value="3" />
  2164. <param name="thumbnail_type" value="animation" />
  2165. <param name="url_save" value="<var expand_filename($tmp_dir.'getpic.pl')>" />
  2166. <param name="url_exit" value="<var $self>?task=finishpaint&amp;board=<var $board-\>path()>&amp;oek_parent=<var $oek_parent>&amp;oek_ip=<var $ip>&amp;<if $oek_editing>oek_editing=1&amp;password=<var $password>&amp;num=<var $num>&amp;</if>dummy=<var $dummy>&amp;srcinfo=<var $time>,<var $oek_painter>,<var $oek_src>" />
  2167. <param name="send_header" value="<var $ip>" />
  2168. </applet>
  2169. </td>
  2170. <if $selfy>
  2171. <td valign="top">
  2172. <script>palette_selfy();</script>
  2173. </td>
  2174. </if>
  2175. </tr></tbody></table>
  2176. </body>
  2177. </html>
  2178. });
  2179. use constant OEKAKI_ANIMATION_TEMPLATE => compile_template(q{
  2180. <html>
  2181. <head>
  2182. <title>Oekaki Animation</title>
  2183. <style type="text/css">
  2184. body { background: #9999BB; font-family: sans-serif; }
  2185. input,textarea { background-color:#CFCFFF; font-size: small; }
  2186. table.nospace { border-collapse:collapse; }
  2187. table.nospace tr td { margin:0px; }
  2188. .menu { background-color:#CFCFFF; border: 1px solid #666666; padding: 2px; margin-bottom: 2px; }
  2189. </style>
  2190. </head>
  2191. <body>
  2192. <table class="nospace" width="100%" height="100%"><tbody><tr>
  2193. <td width="100%">
  2194. <applet name="pch" code="pch2.PCHViewer.class" codebase="./" archive="PCHViewer.jar" width="100%" height="100%">
  2195. <param name="pch_file" value="<var $pch_file>" />
  2196. <param name="tt.zip" value="tt_def.zip" />
  2197. <param name="res.zip" value="res.zip" />
  2198. <param name="speed" value="0" />
  2199. <param name="buffer_canvas" value="true" />
  2200. <param name="buffer_progress" value="true" />
  2201. </applet>
  2202. </td>
  2203. </tr>
  2204. </tbody>
  2205. </table>
  2206. </body>
  2207. </html>
  2208. });
  2209. use constant OEKAKI_INFO_TEMPLATE => compile_template(q{
  2210. <p class="oekinfo">
  2211. <strong>Oekaki Post</strong>
  2212. (Time: <var $time>, Painter: <var $painter><if $source>, Source: <a href="<var $source>"><var $source></a></if><if $animation>, Animation: [<a href="<var $self>?task=oekakianimation&amp;board=<var $board-\>path()>&amp;pchfile=<var $animation>" target="_blank">View</a>]</if>)
  2213. </p>
  2214. });
  2215. use constant OEKAKI_EDIT_INFO_TEMPLATE => compile_template(q{
  2216. <p class="oekinfo"><strong>
  2217. Edited in Oekaki</strong> (Time: <var $time>, Painter: <var $painter>)
  2218. </p>
  2219. });
  2220. use constant OEKAKI_FINISH_TEMPLATE => compile_template(NORMAL_HEAD_INCLUDE.q{
  2221. [<a href="<var expand_filename($board-\>option('HTML_SELF'))>"><const S_RETURN></a>]
  2222. <if $oek_parent><div class="theader"><const S_POSTING></div></if>
  2223. <div class="postarea">
  2224. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  2225. <input type="hidden" name="task" value="oekakipost" />
  2226. <input type="hidden" name="board" value="<var $board-\>path()>" />
  2227. <input type="hidden" name="oek_ip" value="<var $oek_ip>" />
  2228. <input type="hidden" name="srcinfo" value="<var $srcinfo>" />
  2229. <table><tbody>
  2230. <if !($board-\>option('FORCED_ANON'))><tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" value="<var $name>" size="28" /><if $trip> <var $trip><br />(Enter new tripcode above to change.)<br />[<label><input type="checkbox" value="1" name="killtrip" /> Remove Tripcode?</label>]</if></td></tr></if>
  2231. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" /></td></tr>
  2232. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" />
  2233. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  2234. <tr><td class="postblock"><const S_COMMENT></td><td><textarea name="comment" cols="48" rows="4"></textarea></td></tr>
  2235. <if $image_inp>
  2236. <tr><td class="postblock"><const S_UPLOADFILE></td><td><input type="file" name="file" size="35" />
  2237. <if $textonly_inp>[<label><input type="checkbox" name="nofile" value="on" /><const S_NOFILE></label></if>
  2238. </td></tr>
  2239. </if>
  2240. <if $board-\>option('ENABLE_CAPTCHA')>
  2241. <tr><td class="postblock"><const S_CAPTCHA></td><td><input type="text" name="captcha" size="10" />
  2242. <img alt="" src="<var expand_filename($board-\>option('ENABLE_CAPTCHA'))>?key=<if $oek_parent>res<var $oek_parent></if><if !$oek_parent>mainpage</if>&amp;dummy=<var $dummy>" />
  2243. </td></tr>
  2244. </if>
  2245. <tr><td class="postblock"><const S_DELPASS></td><td><input type="password" name="password" size="8" /> <const S_DELEXPL></td></tr>
  2246. <if $oek_parent>
  2247. <input type="hidden" name="parent" value="<var $oek_parent>" />
  2248. <tr><td class="postblock"><const S_OEKIMGREPLY></td>
  2249. <td><var sprintf(S_OEKREPEXPL,expand_filename($board-\>option('RES_DIR').$oek_parent.PAGE_EXT),$oek_parent)></td></tr>
  2250. </if>
  2251. <tr><td colspan="2">
  2252. <div class="rules"><var encode_string((compile_template(include($board-\>path().'/'."../include/boards/rules.html")))-\>(board=\>$board))></div></td></tr>
  2253. </tbody></table></form></div>
  2254. <script type="text/javascript">set_inputs("postform",false)</script>
  2255. <hr />
  2256. <div align="center">
  2257. <img src="<var expand_filename($tmpname)>" />
  2258. <var $decodedinfo>
  2259. </div>
  2260. <hr />
  2261. }.NORMAL_FOOT_INCLUDE);
  2262. use constant OEKAKI_FINISH_EDIT_TEMPLATE => compile_template(MINI_HEAD_INCLUDE.q{
  2263. <h1 style="text-align:center;font-size:1em">Now Editing Post No.<var $num></h1>
  2264. <div class="postarea">
  2265. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  2266. <input type="hidden" name="task" value="oekakiedit" />
  2267. <input type="hidden" name="board" value="<var $board-\>path()>" />
  2268. <input type="hidden" name="oek_ip" value="<var $oek_ip>" />
  2269. <input type="hidden" name="srcinfo" value="<var $srcinfo>" />
  2270. <input type="hidden" name="num" value="<var $num>" />
  2271. <table><tbody>
  2272. <tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" size="28" value="<var $name>" /></td></tr>
  2273. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" value="<var $email>" /></td></tr>
  2274. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" value="<var $subject>" />
  2275. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  2276. <tr><td class="postblock"><const S_COMMENT></td><td><textarea name="comment" cols="48" rows="4"><var $comment></textarea></td></tr>
  2277. <if $image_inp>
  2278. <tr><td class="postblock"><const S_UPLOADFILE></td><td><input type="file" name="file" size="35" />
  2279. <if $textonly_inp>[<label><input type="checkbox" name="nofile" value="on" /><const S_NOFILE></label></if>
  2280. </td></tr>
  2281. </if>
  2282. <if $enable_captcha and !$admin>
  2283. <tr><td class="postblock"><const S_CAPTCHA></td><td><input type="text" name="captcha" size="10" />
  2284. <img alt="" src="<var expand_filename($captcha_script)>?key=<if $oek_parent>res<var $oek_parent></if><if !$oek_parent>mainpage</if>&amp;dummy=<var $num>" />
  2285. </td></tr>
  2286. </if>
  2287. <input type="hidden" name="password" value="<var $password>" />
  2288. </tbody></table></form></div>
  2289. <hr />
  2290. <div align="center">
  2291. <img src="<var expand_filename($tmpname)>" />
  2292. <var $decodedinfo>
  2293. </div>
  2294. <hr />
  2295. }.NORMAL_FOOT_INCLUDE);
  2296. use constant OEKAKI_POST_EDIT_TEMPLATE => compile_template(MINI_HEAD_INCLUDE.q{
  2297. <loop $loop>
  2298. <h1 style="text-align:center;font-size:1em">Now Editing Post No.<var $num></h1>
  2299. <if $admin><div align="center"><em><const S_NOTAGS></em></div></if>
  2300. <div class="postarea">
  2301. <if !$admin>
  2302. <form action="<var expand_filename('paint.pl')>" method="get">
  2303. <hr />
  2304. <const S_OEKPAINT>
  2305. <select name="oek_painter">
  2306. <loop S_OEKPAINTERS>
  2307. <if $painter eq OEKAKI_DEFAULT_PAINTER>
  2308. <option value="<var $painter>" selected="selected"><var $name></option>
  2309. </if>
  2310. <if $painter ne OEKAKI_DEFAULT_PAINTER>
  2311. <option value="<var $painter>"><var $name></option>
  2312. </if>
  2313. </loop>
  2314. </select>
  2315. <const S_OEKX><input type="text" name="oek_x" size="3" value="<var $width>" />
  2316. <const S_OEKY><input type="text" name="oek_y" size="3" value="<var $height>" />
  2317. <input type="hidden" name="oek_src" value="<var $image>" />
  2318. <input type="hidden" name="num" value="<var $num>" />
  2319. <input type="hidden" name="oek_parent" value="<var $parent>" />
  2320. <input type="submit" value="Oekaki Edit" name="oek_editing" />
  2321. <input type="hidden" name="password" value="<var $password>" />
  2322. <input type="hidden" name="num" value="<var $num>" />
  2323. <hr />
  2324. </form>
  2325. </if>
  2326. <form id="postform" action="<var $self>" method="post" enctype="multipart/form-data">
  2327. <input type="hidden" name="num" value="<var $num>" />
  2328. <input type="hidden" name="password" value="<var $password>" />
  2329. <input type="hidden" name="task" value="editpost" />
  2330. <if $admin>
  2331. <input type="hidden" name="no_captcha" value="1" />
  2332. <input type="hidden" name="no_format" value="1" /></if>
  2333. <if $parent><input type="hidden" name="parent" value="<var $parent>" /></if>
  2334. <if $board-\>option('FORCED_ANON')><input type="hidden" name="name" /></if>
  2335. <if $board-\>option('SPAM_TRAP')><div class="trap"><const S_SPAMTRAP><input type="text" name="name" size="28" /><input type="text" name="link" size="28" /></div></if>
  2336. <table><tbody>
  2337. <if !($board-\>option('FORCED_ANON'))><tr><td class="postblock"><const S_NAME></td><td><input type="text" name="field1" value="<var $name>" size="28" /><if $trip> # <var $trip><br />(Enter new tripcode above to change.)<br />[<label><input type="checkbox" value="1" name="killtrip" /> Remove Tripcode?</label>]</if></td></tr></if>
  2338. <tr><td class="postblock"><const S_EMAIL></td><td><input type="text" name="email" size="28" value="<var $email>" /></td></tr>
  2339. <tr><td class="postblock"><const S_SUBJECT></td><td><input type="text" name="subject" size="35" value="<var $subject>" />
  2340. <input type="submit" value="<const S_SUBMIT>" /></td></tr>
  2341. <tr><td class="postblock"><const S_COMMENT></td><td>
  2342. <textarea name="comment" cols="48" rows="4"><if $admin><var clean_string($comment)></if><if !$admin><var tag_killa($comment)></if></textarea></td></tr>
  2343. <if $board-\>option('ALLOW_IMAGE_REPLIES') || !$parent>
  2344. <tr><td class="postblock"><const S_NEWFILE></td><td><input type="file" name="file" size="35" />
  2345. <br />(Keep this field blank to leave the file unchanged.)
  2346. </td></tr>
  2347. </if>
  2348. <if $board-\>option('ENABLE_OEKAKI') && !$admin>
  2349. <tr><td class="postblock"><const S_CAPTCHA></td><td><input type="text" name="captcha" size="10" />
  2350. <img alt="" src="<var expand_filename($board-\>option('OEKAKI_SCRIPT'))>?key=<var get_captcha_key($parent)>&amp;dummy=<var $num>" />
  2351. </td></tr>
  2352. </if>
  2353. </tbody></table></form></div>
  2354. </loop>
  2355. }.MINI_FOOT_INCLUDE);
  2356. #
  2357. # RSS
  2358. #
  2359. use constant RSS_TEMPLATE => compile_template("".q{
  2360. <?xml version="1.0"?>
  2361. <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  2362. <channel>
  2363. <atom:link href="<var expand_filename("board.rss", 1)>" rel="self" type="application/rss+xml" />
  2364. <title><var $board-\>option("TITLE")>: Latest Posts</title>
  2365. <link><var expand_filename("", 1)></link>
  2366. <description>The latest threads and replies in <var $board-\>option("TITLE")> at <var $ENV{SERVER_NAME}>, updated in realtime.</description>
  2367. <pubDate><var $pub_date></pubDate>
  2368. <lastBuildDate><var $pub_date></lastBuildDate>
  2369. <generator>Wakaba + desuchan</generator>
  2370. <if RSS_WEBMASTER><webMaster><const RSS_WEBMASTER></webMaster></if>
  2371. <docs>http://validator.w3.org/feed/docs/rss2.html</docs>
  2372. <loop $items>
  2373. <item>
  2374. <title>
  2375. Post #<var $num><if !$parent> (New Topic)</if><if $subject>: <var $subject></if>
  2376. </title>
  2377. <if $email && $email =~ /\@/><author><var $email><if $name || $trip> (<var $name><var $trip>)</if><if !$name && !$trip> (<var $board-\>option("S_ANONAME")>)</if></author></if>
  2378. <if !$email || $email !~ /\@/><dc:creator><if $name || $trip><var $name><var $trip></if><if !$name && !$trip><var $board-\>option("S_ANONAME")></if></dc:creator></if>
  2379. <if $comment>
  2380. <description><![CDATA[<var $comment>]]></description>
  2381. </if>
  2382. <if $image>
  2383. <enclosure url="<var expand_filename($image, 1)>" length="<var $size>" type="<var $mime_type>" />
  2384. </if>
  2385. <pubDate><var make_date($timestamp, "http")></pubDate>
  2386. <link><var get_reply_link($num, $parent, 0, 1)></link>
  2387. <guid><var get_reply_link($num, $parent, 0, 1)></guid>
  2388. </item>
  2389. </loop>
  2390. </channel>
  2391. </rss>
  2392. });
  2393. #
  2394. # Template-Specific Functions
  2395. #
  2396. sub get_filename($) { my $path=shift; $path=~m!([^/]+)$!; clean_string($1); }
  2397. sub round_decimal($$)
  2398. {
  2399. my ($number, $places_behind_decimal) = @_;
  2400. return (int ($number * 10**$places_behind_decimal + 0.5)) / (10**$places_behind_decimal);
  2401. }
  2402. 1;