BioTorrents.de’s version of Gazelle
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.

newthread.php 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. #declare(strict_types = 1);
  3. /*
  4. New post page
  5. This is the page that's loaded if someone wants to make a new topic.
  6. Information to be expected in $_GET:
  7. forumid: The ID of the forum that it's being posted in
  8. */
  9. $ForumID = $_GET['forumid'];
  10. if (!is_number($ForumID)) {
  11. error(404);
  12. }
  13. $Forum = Forums::get_forum_info($ForumID);
  14. if ((bool) $Forum === false) {
  15. error(404);
  16. }
  17. if (!Forums::check_forumperm($ForumID, 'Write') || !Forums::check_forumperm($ForumID, 'Create')) {
  18. error(403);
  19. }
  20. $ENV = ENV::go();
  21. View::show_header(
  22. "Forums $ENV->CRUMB ".$Forum['Name']." $ENV->CRUMB New Topic",
  23. 'comments,bbcode,vendor/jquery.validate.min,form_validate,vendor/easymde.min',
  24. 'vendor/easymde.min'
  25. );
  26. ?>
  27. <div>
  28. <h2>
  29. <a href="forums.php">Forums</a>
  30. <?=$ENV->CRUMB?>
  31. <a href="forums.php?action=viewforum&amp;forumid=<?=$ForumID?>">
  32. <?=$Forum['Name']?></a>
  33. <?=$ENV->CRUMB?>
  34. <span id="newthreadtitle">
  35. New Topic
  36. </span>
  37. </h2>
  38. <div class="hidden" id="newthreadpreview">
  39. <div class="linkbox">
  40. <div class="center">
  41. <a href="#" onclick="return false;" class="brackets">Report thread</a>
  42. <a href="#" onclick="return false;" class="brackets"><?=!empty($HeavyInfo['AutoSubscribe']) ? 'Unsubscribe' : 'Subscribe'?></a>
  43. </div>
  44. </div>
  45. <?php if (check_perms('forums_polls_create')) { ?>
  46. <div class="box thin clear hidden" id="pollpreview">
  47. <div class="head colhead_dark"><strong>Poll</strong> <a data-toggle-target="#threadpoll" class="brackets">View</a>
  48. </div>
  49. <div class="pad" id="threadpoll">
  50. <p><strong id="pollquestion"></strong></p>
  51. <div id="pollanswers"></div>
  52. <br /><input type="radio" name="vote" id="answer_0" value="0" /> <label
  53. for="answer_0">Blank&#8202;&mdash;&#8202;Show the results!</label><br /><br />
  54. <input type="button" class="float_left" value="Vote" />
  55. </div>
  56. </div>
  57. <?php } ?>
  58. <table class="forum_post box vertical_margin" style="text-align: left;">
  59. <colgroup>
  60. <?php if (Users::has_avatars_enabled()) { ?>
  61. <col class="col_avatar" />
  62. <?php } ?>
  63. <col class="col_post_body" />
  64. </colgroup>
  65. <tr class="colhead_dark">
  66. <td colspan="<?=Users::has_avatars_enabled() ? 2 : 1 ?>">
  67. <span class="float_left"><a href="#newthreadpreview">#XXXXXX</a>
  68. by <strong><?=Users::format_username($LoggedUser['ID'], true, true, true, true, true)?></strong>
  69. Just now
  70. </span>
  71. <span id="barpreview" class="float_right">
  72. <a href="#newthreadpreview" class="brackets">Report</a>
  73. &nbsp;
  74. <a href="#">&uarr;</a>
  75. </span>
  76. </td>
  77. </tr>
  78. <tr>
  79. <?php if (Users::has_avatars_enabled()) { ?>
  80. <td class="avatar" valign="top">
  81. <?=Users::show_avatar($LoggedUser['Avatar'], $LoggedUser['ID'], $LoggedUser['Username'], $HeavyInfo['DisableAvatars'])?>
  82. </td>
  83. <?php } ?>
  84. <td class="body" valign="top">
  85. <div id="contentpreview" style="text-align: left;"></div>
  86. </td>
  87. </tr>
  88. </table>
  89. </div>
  90. <div class="box pad">
  91. <form class="create_form" name="forum_thread" action="" id="newthreadform" method="post">
  92. <input type="hidden" name="action" value="new" />
  93. <input type="hidden" name="auth"
  94. value="<?=$LoggedUser['AuthKey']?>" />
  95. <input type="hidden" name="forum" value="<?=$ForumID?>" />
  96. <table id="newthreadtext" class="layout new_thread">
  97. <tr>
  98. <td class="label">Title</td>
  99. <td><input id="title" class="required" type="text" name="title" style="width: 98%;" /></td>
  100. </tr>
  101. <tr>
  102. <td class="label">Body</td>
  103. <td>
  104. <?php
  105. new TEXTAREA_PREVIEW(
  106. $Name = 'body',
  107. $ID = 'posttext',
  108. ); ?>
  109. </td>
  110. </tr>
  111. <tr>
  112. <td></td>
  113. <td>
  114. <input id="subscribebox" type="checkbox" name="subscribe" <?=!empty($HeavyInfo['AutoSubscribe']) ? ' checked="checked"' : ''?>
  115. onchange="$('#subscribeboxpreview').raw().checked=this.checked;" />
  116. <label for="subscribebox">Subscribe to topic</label>
  117. </td>
  118. </tr>
  119. <?php
  120. if (check_perms('forums_polls_create')) {
  121. ?>
  122. <script type="text/javascript">
  123. //<![CDATA[
  124. var AnswerCount = 1;
  125. function AddAnswerField() {
  126. if (AnswerCount >= 25) {
  127. return;
  128. }
  129. var AnswerField = document.createElement("input");
  130. AnswerField.type = "text";
  131. AnswerField.id = "answer_" + AnswerCount;
  132. AnswerField.className = "required";
  133. AnswerField.name = "answers[]";
  134. AnswerField.style.width = "90%";
  135. var x = $('#answer_block').raw();
  136. x.appendChild(document.createElement("br"));
  137. x.appendChild(AnswerField);
  138. AnswerCount++;
  139. }
  140. function RemoveAnswerField() {
  141. if (AnswerCount == 1) {
  142. return;
  143. }
  144. var x = $('#answer_block').raw();
  145. for (i = 0; i < 2; i++) {
  146. x.removeChild(x.lastChild);
  147. }
  148. AnswerCount--;
  149. }
  150. //]]>
  151. </script>
  152. <tr>
  153. <td colspan="2" class="center">
  154. <strong>Poll Settings</strong>
  155. <a data-toggle-target="#poll_question, #poll_answers" class="brackets">View</a>
  156. </td>
  157. </tr>
  158. <tr id="poll_question" class="hidden">
  159. <td class="label">Question</td>
  160. <td><input type="text" name="question" id="pollquestionfield" class="required" style="width: 98%;" /></td>
  161. </tr>
  162. <tr id="poll_answers" class="hidden">
  163. <td class="label">Answers</td>
  164. <td id="answer_block">
  165. <input type="text" name="answers[]" class="required" style="width: 90%;" />
  166. <a href="#" onclick="AddAnswerField();return false;" class="brackets">+</a>
  167. <a href="#" onclick="RemoveAnswerField();return false;" class="brackets">&minus;</a>
  168. </td>
  169. </tr>
  170. <?php
  171. } ?>
  172. </table>
  173. <div id="subscribediv" class="hidden">
  174. <input id="subscribeboxpreview" type="checkbox" name="subscribe" <?=!empty($HeavyInfo['AutoSubscribe']) ? ' checked="checked"' : '' ?>
  175. />
  176. <label for="subscribebox">Subscribe to topic</label>
  177. </div>
  178. <div id="buttons" class="center">
  179. <input type="button" value="Preview" onclick="Newthread_Preview(1);" id="newthreadpreviewbutton" />
  180. <input type="button" value="Editor" onclick="Newthread_Preview(0);" id="newthreadeditbutton" class="hidden" />
  181. <input type="submit" class="submit button-primary" id="submit_button" value="Create" />
  182. </div>
  183. </form>
  184. </div>
  185. </div>
  186. <?php View::show_footer();