Own script

Always the best

  1. // ==UserScript==
  2. // @name Own script
  3. // @namespace https://forum.blackrussia.online
  4. // @version 2.4
  5. // @author Kostya Vagner
  6. // @description Always the best
  7. // @match https://forum.blackrussia.online/*
  8. // @include https://forum.blackrussia.online/
  9. // @grant none
  10. // @license MIT
  11. // @icon https://i.yapx.ru/RMTMT.png
  12. // @updateURL
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. 'use strict';
  17. const FAIL_PREFIX = 4;
  18. const OKAY_PREFIX = 8;
  19. const WAIT_PREFIX = 2;
  20. const TECH_PREFIX = 13;
  21. const WATCH_PREFIX = 9;
  22. const CLOSE_PREFIX = 7;
  23. const GA_PREFIX = 12;
  24. const SA_PREFIX = 11;
  25. const CP_PREFIX = 10;
  26.  
  27. const START_DECOR = `<div style="text-align: center"><span style="font-family: 'Courier New'">`
  28. const END_DECOR = `</span></div>`
  29. const COLOR = 'ff1212'
  30.  
  31. const buttons = [
  32. {
  33. title: 'Приветствие',
  34. content:
  35. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br><br><br>Закрыто.${END_DECOR}`
  36. },
  37. {
  38. title: 'Рассмотрение',
  39. content:
  40. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  41. "Ваша тема взята на рассмотрение. Пожалуйста, не создавайте её копии.<br><br>" +
  42. `Ожидайте ответа.${END_DECOR}`,
  43. prefix: WAIT_PREFIX,
  44. status: true,
  45. },
  46. {
  47. title: 'Никнейм',
  48. content:
  49. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  50. "Аккаунт разблокирован, у вас есть 24 часа на смену игрового никнейма.<br><br>" +
  51. `Ожидайте ответа.${END_DECOR}`,
  52. prefix: WAIT_PREFIX,
  53. status: true,
  54. },
  55. {
  56. title: 'Нрп обман (закреп)',
  57. content:
  58. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  59. "Аккаунт разблокирован, у вас есть 24 часа на возмещение полного объёма ущерба обманутой стороне.<br><br>" +
  60. `Ожидайте ответа.${END_DECOR}`,
  61. prefix: WAIT_PREFIX,
  62. status: true,
  63. },
  64. {
  65. title: 'Нрп обман (отказ)',
  66. content:
  67. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  68. "Для разблокировки аккаунта необходимо полностью возместить ущерб, нанесённый игроку. Для этого вы должны связаться с обманутой стороной на форуме в его профиле. Под вашим сообщением этот человек должен оставить комментарий о том, что согласен на возмещение ущерба.<br><br>" +
  69. `Закрыто.${END_DECOR}`,
  70. prefix: CLOSE_PREFIX,
  71. status: false,
  72. },
  73. {
  74. title: 'Отказано',
  75. content:
  76. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  77. "В обжаловании отказано.<br><br>" +
  78. `Закрыто.${END_DECOR}`,
  79. prefix: CLOSE_PREFIX,
  80. status: false,
  81. },
  82. {
  83. title: 'Не подлежит',
  84. content:
  85. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  86. "Ваше наказание обжалованию не подлежит.<br><br>" +
  87. `Закрыто.${END_DECOR}`,
  88. prefix: CLOSE_PREFIX,
  89. status: false,
  90. },
  91. {
  92. title: 'Грубое нарушение',
  93. content:
  94. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  95. "Вы совершили грубое нарушение правил проекта, в обжаловании отказано.<br><br>" +
  96. `Закрыто.${END_DECOR}`,
  97. prefix: CLOSE_PREFIX,
  98. status: false,
  99. },
  100. {
  101. title: 'Не осознал',
  102. content:
  103. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  104. "В данный момент я не уверен, что вы полностью осознали свой поступок.<br><br>" +
  105. `Закрыто.${END_DECOR}`,
  106. prefix: CLOSE_PREFIX,
  107. status: false,
  108. },
  109. {
  110. title: 'Передать ГА',
  111. content:
  112. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  113. "Ваша тема передана на рассмотрение Главному Администратору.<br><br>" +
  114. `Ожидайте ответа.${END_DECOR}`,
  115. prefix: GA_PREFIX,
  116. status: true,
  117. },
  118. {
  119. title: 'Передать СА',
  120. content:
  121. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  122. "Ваша тема передана на рассмотрение специальной администрации.<br><br>" +
  123. `Ожидайте ответа.${END_DECOR}`,
  124. prefix: SA_PREFIX,
  125. status: true,
  126. },
  127. {
  128. title: 'Выдано верно',
  129. content:
  130. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  131. "После проверки доказательств администратора было принято решение, что наказание выдано верно.<br><br>" +
  132. `Закрыто.${END_DECOR}`,
  133. prefix: CLOSE_PREFIX,
  134. status: false,
  135. },
  136. {
  137. title: 'ЖБ Не по форме',
  138. content:
  139. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  140. "Ваша жалоба составлена не по форме, ознакомьтесь с правилами подачи жалоб → *[URL='https://forum.blackrussia.online/index.php?threads/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D0%BE%D0%B4%D0%B0%D1%87%D0%B8-%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1-%D0%BD%D0%B0-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8E.3429349/']Кликабельно[/URL]*<br><br>" +
  141. `Закрыто.${END_DECOR}`,
  142. prefix: CLOSE_PREFIX,
  143. status: false,
  144. },
  145. {
  146. title: 'ОБЖ Не по форме',
  147. content:
  148. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  149. "Ваше обжалование составлено не по форме, ознакомьтесь с правилами подачи обжалований → *[URL='https://forum.blackrussia.online/threads/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D0%BE%D0%B4%D0%B0%D1%87%D0%B8-%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B8-%D0%BD%D0%B0-%D0%BE%D0%B1%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D1%8F.3429398/']Кликабельно[/URL]*<br><br>" +
  150. `Закрыто.${END_DECOR}`,
  151. prefix: CLOSE_PREFIX,
  152. status: false,
  153. },
  154. {
  155. title: '48 часов',
  156. content:
  157. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  158. "С момента выдачи наказания прошло более 48-ми часов.<br><br>" +
  159. `Закрыто.${END_DECOR}`,
  160. prefix: CLOSE_PREFIX,
  161. status: false,
  162. },
  163. {
  164. title: '48 часов ОБЖ',
  165. content:
  166. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  167. "Если вы не согласны с наказанием, его можно оспорить в разделе жалоб на администрацию в течение 48-ми часов.<br><br>" +
  168. `Закрыто.${END_DECOR}`,
  169. prefix: CLOSE_PREFIX,
  170. status: false,
  171. },
  172. {
  173. title: 'Истёк срок',
  174. content:
  175. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  176. "Срок истёк. Аккаунт заблокирован навсегда без возможности обжалования.<br><br>" +
  177. `Закрыто.${END_DECOR}`,
  178. prefix: CLOSE_PREFIX,
  179. status: false,
  180. },
  181. {
  182. title: 'Нет нарушений',
  183. content:
  184. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  185. "Со стороны администратора нет нарушений.<br><br>" +
  186. `Закрыто.${END_DECOR}`,
  187. prefix: CLOSE_PREFIX,
  188. status: false,
  189. },
  190. {
  191. title: 'Недостаточно док-в',
  192. content:
  193. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  194. "В вашей теме не предоставлено достаточного объёма доказательств нарушений.<br><br>" +
  195. `Закрыто.${END_DECOR}`,
  196. prefix: CLOSE_PREFIX,
  197. status: false,
  198. },
  199. {
  200. title: 'Нет доказательств',
  201. content:
  202. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  203. "В вашей теме отсутствуют доказательства.<br><br>" +
  204. `Закрыто.${END_DECOR}`,
  205. prefix: CLOSE_PREFIX,
  206. status: false,
  207. },
  208. {
  209. title: 'Ссылка не работает',
  210. content:
  211. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  212. "Ссылка на ваши доказательства не работает, либо к доказательствам по ссылке закрыт доступ.<br><br>" +
  213. `Закрыто.${END_DECOR}`,
  214. prefix: CLOSE_PREFIX,
  215. status: false,
  216. },
  217. {
  218. title: 'Загрузка док-в',
  219. content:
  220. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  221. "Загрузите доказательства на любой фото/видео хостинг, например Imgur, Yapx, Youtube, и оставьте полученную ссылку в новой теме.<br><br>" +
  222. `Закрыто.${END_DECOR}`,
  223. prefix: CLOSE_PREFIX,
  224. status: false,
  225. },
  226. {
  227. title: 'Док-ва в соц сетях',
  228. content:
  229. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  230. "Загрузка доказательств в соц. сети (ВКонтакте, instagram) запрещается, доказательства должны быть загружены на фото/видео хостинги (YouTube, Япикс, Imgur).<br><br>" +
  231. `Закрыто.${END_DECOR}`,
  232. prefix: CLOSE_PREFIX,
  233. status: false,
  234. },
  235. {
  236. title: 'Прикрепить ВК',
  237. content:
  238. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  239. "Пересоздайте тему, указав ссылку на ваш профиль ВКонтакте.<br><br>" +
  240. `Закрыто.${END_DECOR}`,
  241. prefix: CLOSE_PREFIX,
  242. status: false,
  243. },
  244. {
  245. title: 'Бан IP',
  246. content:
  247. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  248. "IP адрес был заблокирован не вам, вы случайно попали на заблокированный IP, перезагрузите роутер, либо же смените способ подключения к интернету.<br><br>" +
  249. `Закрыто.${END_DECOR}`,
  250. prefix: CLOSE_PREFIX,
  251. status: false,
  252. },
  253. {
  254. title: 'Жалобы на техов',
  255. content:
  256. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  257. "Пересоздайте тему в разделе жалоб на технических специалистов → *[URL='https://forum.blackrussia.online/index.php?forums/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%E2%84%961-red.1182/']Кликабельно[/URL]*<br><br>" +
  258. `Закрыто.${END_DECOR}`,
  259. prefix: CLOSE_PREFIX,
  260. status: false,
  261. },
  262. {
  263. title: 'Жалобы на игроков',
  264. content:
  265. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  266. "Обратитесь в раздел жалоб на игроков → *[URL='https://forum.blackrussia.online/index.php?forums/%D0%96%D0%B0%D0%BB%D0%BE%D0%B1%D1%8B-%D0%BD%D0%B0-%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%BE%D0%B2.88/']Кликабельно[/URL]*<br><br>" +
  267. `Закрыто.${END_DECOR}`,
  268. prefix: CLOSE_PREFIX,
  269. status: false,
  270. },
  271. {
  272. title: 'Жалобы на хелперов',
  273. content:
  274. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  275. "Обратитесь в раздел жалоб на агентов поддержки → *[URL='https://forum.blackrussia.online/forums/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB-%D0%B4%D0%BB%D1%8F-%D1%85%D0%B5%D0%BB%D0%BF%D0%B5%D1%80%D0%BE%D0%B2-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0.166/']Кликабельно[/URL]*<br><br>" +
  276. `Закрыто.${END_DECOR}`,
  277. prefix: CLOSE_PREFIX,
  278. status: false,
  279. },
  280. {
  281. title: 'Жалобы на админов',
  282. content:
  283. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  284. "Обратитесь в раздел жалоб на администрацию → *[URL='https://forum.blackrussia.online/forums/%D0%96%D0%B0%D0%BB%D0%BE%D0%B1%D1%8B-%D0%BD%D0%B0-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8E.86/']Кликабельно[/URL]*<br><br>" +
  285. `Закрыто.${END_DECOR}`,
  286. prefix: CLOSE_PREFIX,
  287. status: false,
  288. },
  289. {
  290. title: 'В обжалования',
  291. content:
  292. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  293. "Обратитесь в раздел обжалований наказаний → *[URL='https://forum.blackrussia.online/index.php?forums/%D0%9E%D0%B1%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D0%B9.89/']Кликабельно[/URL]*<br><br>" +
  294. `Закрыто.${END_DECOR}`,
  295. prefix: CLOSE_PREFIX,
  296. status: false,
  297. },
  298. {
  299. title: 'Жалобы дискорда',
  300. content:
  301. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  302. "Жалобы на модерацию дискорда подаются в самом дискорде.<br><br>" +
  303. `Закрыто.${END_DECOR}`,
  304. prefix: CLOSE_PREFIX,
  305. status: false,
  306. },
  307. {
  308. title: 'Не по теме',
  309. content:
  310. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  311. "Ваше обращение не относится к теме данного раздела.<br><br>" +
  312. `Закрыто.${END_DECOR}`,
  313. prefix: CLOSE_PREFIX,
  314. status: false,
  315. },
  316. {
  317. title: 'Ошиблись сервером',
  318. content:
  319. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  320. "Пересоздайте тему в разделе нужного вам сервера → *[URL='https://forum.blackrussia.online/index.php#igrovye-servera.12']Кликабельно[/URL]*<br><br>" +
  321. `Закрыто.${END_DECOR}`,
  322. prefix: CLOSE_PREFIX,
  323. status: false,
  324. },
  325. {
  326. title: 'Ответ ранее',
  327. content:
  328. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  329. "Ответ вы получили в одной из предыдущих тем.<br><br>" +
  330. `Закрыто.${END_DECOR}`,
  331. prefix: CLOSE_PREFIX,
  332. status: false,
  333. },
  334. {
  335. title: 'Было снято',
  336. content:
  337. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  338. "Ваше наказание уже было снято.<br><br>" +
  339. `Закрыто.${END_DECOR}`,
  340. prefix: CLOSE_PREFIX,
  341. status: false,
  342. },
  343. {
  344. title: 'Будет снято',
  345. content:
  346. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  347. "Ваше наказание будет снято в ближайшее время.<br><br>" +
  348. `Закрыто.${END_DECOR}`,
  349. prefix: CLOSE_PREFIX,
  350. status: false,
  351. },
  352. {
  353. title: 'Закрыто',
  354. content:
  355. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  356. "Будут приняты необходимые меры.<br><br>" +
  357. `Закрыто.${END_DECOR}`,
  358. prefix: CLOSE_PREFIX,
  359. status: false,
  360. },
  361. {
  362. title: 'ЖБ Одобрена',
  363. content:
  364. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  365. "Будут приняты необходимые меры.<br><br>" +
  366. `Одобрено.${END_DECOR}`,
  367. prefix: OKAY_PREFIX,
  368. status: false,
  369. },
  370. {
  371. title: 'ОБЖ Одобрено',
  372. content:
  373. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  374. "Ваше обжалование одобрено, наказание будет полностью снято.<br><br>" +
  375. `Одобрено.${END_DECOR}`,
  376. prefix: OKAY_PREFIX,
  377. status: false,
  378. },
  379. {
  380. title: 'Перебан 30',
  381. content:
  382. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  383. "Блокировка на вашем аккаунте будет снижена до 30-ти суток.<br><br>" +
  384. `Одобрено.${END_DECOR}`,
  385. prefix: OKAY_PREFIX,
  386. status: false,
  387. },
  388. {
  389. title: 'Перебан 15',
  390. content:
  391. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  392. "Блокировка на вашем аккаунте будет снижена до 15-ти суток.<br><br>" +
  393. `Одобрено.${END_DECOR}`,
  394. prefix: OKAY_PREFIX,
  395. status: false,
  396. },
  397. {
  398. title: 'Жб будет пересмотрена',
  399. content:
  400. `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
  401. "Жалоба будет пересмотрена в ближайшее время.<br><br>" +
  402. `Закрыто.${END_DECOR}`,
  403. prefix: CLOSE_PREFIX,
  404. status: false,
  405. },
  406.  
  407. ];
  408.  
  409. $(document).ready(() => {
  410. // Загрузка скрипта для обработки шаблонов
  411. $('body').append('<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>');
  412.  
  413. // Добавление кнопок при загрузке страницы
  414. addButton('', 'deny', 'fa-times', COLOR);
  415. addButton('', 'lvlup', 'fa-level-up');
  416. addButton('', 'ras', 'fa-thumbtack');
  417. addButton('', 'approved', 'fa-check');
  418. addButton('', 'closed', 'fa-times');
  419. addButton('', 'selectAnswer', 'fa-home', COLOR);
  420.  
  421.  
  422. // Поиск информации о теме
  423. const threadData = getThreadData();
  424.  
  425. $('button#ras').click(() => pasteContent(1, threadData, true));
  426. $('button#deny').click(() => pasteContent(5, threadData, true));
  427. $('button#lvlup').click(() => pasteContent(9, threadData, true));
  428. $('button#time').click(() => pasteContent(14, threadData, true));
  429. $('button#closed').click(() => editThreadData(CLOSE_PREFIX, false));
  430. $('button#approved').click(() => editThreadData(OKAY_PREFIX, false));
  431.  
  432. $(`button#selectAnswer`).click(() => {
  433. XF.alert(buttonsMarkup(buttons), null, `<i class="fas fa-home-alt">`);
  434. buttons.forEach((btn, id) => {
  435. if(id > 0) {
  436. $(`button#answers-${id}`).click(() => pasteContent(id, threadData, true));
  437. } else {
  438. $(`button#answers-${id}`).click(() => pasteContent(id, threadData, false));
  439. }
  440. });
  441. });
  442.  
  443. });
  444.  
  445. function addButton(name, id, icon = '', color = '252525') {
  446. let margin = '10'
  447.  
  448. if (name == 'Menu') { margin = '12' };
  449. if (icon) {
  450. icon = `<i class="fas ${icon}""></i>`
  451. };
  452.  
  453. $('.button--icon--reply').before(
  454. `<button type="button" class="button rippleButton" id="${id}" style="margin-right: ${margin}px; margin-bottom: 8px; border-radius: 25px; width: 50px; background: #${color}">` +
  455. `<span class="button-text">${icon}${name}</span></button>`,
  456. );
  457. }
  458.  
  459. function buttonsMarkup(buttons) {
  460. return `<div class="select_answer">${
  461. buttons.map(
  462. (btn, i) =>
  463. `<button id="answers-${i}" class="button--primary button ` +
  464. `rippleButton" style="margin: 5px; border-radius: 8px; background: #${btn.color || '202020'};"><span class="button-text">${btn.title}</span></button>`,
  465. ).join('')}</div>`;
  466. }
  467.  
  468. (function loadTopBar() {
  469. $('.uix_adminTrigger').after('<a href="https://forum.blackrussia.online/forums/%D0%9E%D0%B1%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D0%B9.89/" class="p-staffBar-link">Обжалования</a>' +
  470. '<a href="https://forum.blackrussia.online/forums/%D0%9E%D0%B1%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%B8%D0%B9.89/?prefix_id=14&last_days=90&order=last_post_date&direction=asc" class="p-staffBar-link">С фильтром</a>' +
  471. '<a href="https://forum.blackrussia.online/forums/%D0%9E%D0%B1%D1%89%D0%B8%D0%B5-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%B2.51/" class="p-staffBar-link">Правила серверов</a>' +
  472. '<a href="https://forum.blackrussia.online/admin.php?moderators/add" class="p-staffBar-link" target="_blank">Добавить модератора</a>'
  473. );
  474. $('[href="/approval-queue/"]').remove();
  475. $('[data-navigation-id="admins"]').after(`<li class="p-nav-el">
  476. <a href="/admin.php?moderators/add">Добавить модератора</a>
  477. </li>`);
  478. })();
  479.  
  480. function pasteContent(id, data = {}, send = false) {
  481. const template = Handlebars.compile(buttons[id].content);
  482. if ($('.fr-element.fr-view p').text() === '') $('.fr-element.fr-view p').empty();
  483.  
  484. $('span.fr-placeholder').empty();
  485. $('div.fr-element.fr-view p').append(template(data));
  486. $('a.overlay-titleCloser').trigger('click');
  487.  
  488. if(send == true){
  489. editThreadData(buttons[id].prefix, buttons[id].status);
  490. $('.button--icon.button--icon--reply.rippleButton').trigger('click');
  491. }
  492. }
  493.  
  494. function getThreadData() {
  495. const authorID = $('a.username')[0].attributes['data-user-id'].nodeValue;
  496. const authorName = $('a.username').html();
  497. const hours = new Date().getHours();
  498. return {
  499. user: {
  500. id: authorID,
  501. name: authorName,
  502. mention: `[USER=${authorID}]${authorName}[/USER]`,
  503. },
  504. greeting: () =>
  505. 4 < hours && hours <= 11
  506. ? 'Доброе утро'
  507. : 11 < hours && hours <= 15
  508. ? 'Добрый день'
  509. : 15 < hours && hours <= 21
  510. ? 'Добрый вечер'
  511. : 'Доброй ночи',
  512. };
  513. }
  514.  
  515. function editThreadData(prefix, pin = false) {
  516. // Получаем заголовок темы, так как он необходим при запросе
  517. const threadTitle = $('.p-title-value')[0].lastChild.textContent;
  518.  
  519. if(pin == false){
  520. fetch(`${document.URL}edit`, {
  521. method: 'POST',
  522. body: getFormData({
  523. prefix_id: prefix,
  524. title: threadTitle,
  525. _xfToken: XF.config.csrf,
  526. _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
  527. _xfWithData: 1,
  528. _xfResponseType: 'json',
  529. }),
  530. }).then(() => location.reload());
  531. }
  532.  
  533. if(pin == true){
  534. fetch(`${document.URL}edit`, {
  535. method: 'POST',
  536. body: getFormData({
  537. prefix_id: prefix,
  538. title: threadTitle,
  539. sticky: 1,
  540. _xfToken: XF.config.csrf,
  541. _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
  542. _xfWithData: 1,
  543. _xfResponseType: 'json',
  544. }),
  545. }).then(() => location.reload());
  546. }
  547.  
  548. }
  549.  
  550. function moveThread(prefix, target) {
  551. // Функция перемещения тем
  552. const threadTitle = $('.p-title-value')[0].lastChild.textContent;
  553.  
  554. fetch(`${document.URL}move`, {
  555. method: 'POST',
  556. body: getFormData({
  557. prefix_id: prefix,
  558. title: threadTitle,
  559. target_node_id: target,
  560. redirect_type: 'none',
  561. notify_watchers: 1,
  562. starter_alert: 1,
  563. starter_alert_reason: "",
  564. _xfToken: XF.config.csrf,
  565. _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
  566. _xfWithData: 1,
  567. _xfResponseType: 'json',
  568. }),
  569. }).then(() => location.reload());
  570. }
  571.  
  572. function getFormData(data) {
  573. const formData = new FormData();
  574. Object.entries(data).forEach(i => formData.append(i[0], i[1]));
  575. return formData;
  576. }
  577. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址