##// END OF EJS Templates
Ban user without removing a post
neko259 -
r1904:b612804b default
parent child Browse files
Show More
1 NO CONTENT: modified file, binary diff hidden
@@ -1,598 +1,601 b''
1 1 # SOME DESCRIPTIVE TITLE.
2 2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 3 # This file is distributed under the same license as the PACKAGE package.
4 4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 5 #
6 6 msgid ""
7 7 msgstr ""
8 8 "Project-Id-Version: PACKAGE VERSION\n"
9 9 "Report-Msgid-Bugs-To: \n"
10 10 "POT-Creation-Date: 2015-10-09 23:21+0300\n"
11 11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 14 "Language: ru\n"
15 15 "MIME-Version: 1.0\n"
16 16 "Content-Type: text/plain; charset=UTF-8\n"
17 17 "Content-Transfer-Encoding: 8bit\n"
18 18 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
19 19 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
20 20
21 21 #: admin.py:22
22 22 msgid "{} posters were banned"
23 23 msgstr ""
24 24
25 25 #: authors.py:9
26 26 msgid "author"
27 27 msgstr "автор"
28 28
29 29 #: authors.py:10
30 30 msgid "developer"
31 31 msgstr "разработчик"
32 32
33 33 #: authors.py:11
34 34 msgid "javascript developer"
35 35 msgstr "разработчик javascript"
36 36
37 37 #: authors.py:12
38 38 msgid "designer"
39 39 msgstr "дизайнер"
40 40
41 41 #: forms.py:30
42 42 msgid "Type message here. Use formatting panel for more advanced usage."
43 43 msgstr ""
44 44 "Вводите сообщение сюда. Используйте панель для более сложного форматирования."
45 45
46 46 #: forms.py:31
47 47 msgid "music images i_dont_like_tags"
48 48 msgstr "музыка картинки теги_не_нужны"
49 49
50 50 #: forms.py:33
51 51 msgid "Title"
52 52 msgstr "Заголовок"
53 53
54 54 #: forms.py:34
55 55 msgid "Text"
56 56 msgstr "Текст"
57 57
58 58 #: forms.py:35
59 59 msgid "Tag"
60 60 msgstr "Метка"
61 61
62 62 #: forms.py:36 templates/boards/base.html:40 templates/search/search.html:7
63 63 msgid "Search"
64 64 msgstr "Поиск"
65 65
66 66 #: forms.py:48
67 67 msgid "File 1"
68 68 msgstr "Файл 1"
69 69
70 70 #: forms.py:48
71 71 msgid "File 2"
72 72 msgstr "Файл 2"
73 73
74 74 #: forms.py:142
75 75 msgid "File URL"
76 76 msgstr "URL файла"
77 77
78 78 #: forms.py:148
79 79 msgid "e-mail"
80 80 msgstr ""
81 81
82 82 #: forms.py:151
83 83 msgid "Additional threads"
84 84 msgstr "Дополнительные темы"
85 85
86 86 #: forms.py:162
87 87 #, python-format
88 88 msgid "Title must have less than %s characters"
89 89 msgstr "Заголовок должен иметь меньше %s символов"
90 90
91 91 #: forms.py:172
92 92 #, python-format
93 93 msgid "Text must have less than %s characters"
94 94 msgstr "Текст должен быть короче %s символов"
95 95
96 96 #: forms.py:192
97 97 msgid "Invalid URL"
98 98 msgstr "Неверный URL"
99 99
100 100 #: forms.py:213
101 101 msgid "Invalid additional thread list"
102 102 msgstr "Неверный список дополнительных тем"
103 103
104 104 #: forms.py:258
105 105 msgid "Either text or file must be entered."
106 106 msgstr "Текст или файл должны быть введены."
107 107
108 108 #: forms.py:317 templates/boards/all_threads.html:153
109 109 #: templates/boards/rss/post.html:10 templates/boards/tags.html:6
110 110 msgid "Tags"
111 111 msgstr "Метки"
112 112
113 113 #: forms.py:324
114 114 msgid "Inappropriate characters in tags."
115 115 msgstr "Недопустимые символы в метках."
116 116
117 117 #: forms.py:344
118 118 msgid "Need at least one section."
119 119 msgstr "Нужен хотя бы один раздел."
120 120
121 121 #: forms.py:356
122 122 msgid "Theme"
123 123 msgstr "Тема"
124 124
125 125 #: forms.py:357
126 126 msgid "Image view mode"
127 127 msgstr "Режим просмотра изображений"
128 128
129 129 #: forms.py:358
130 130 msgid "User name"
131 131 msgstr "Имя пользователя"
132 132
133 133 #: forms.py:359
134 134 msgid "Time zone"
135 135 msgstr "Часовой пояс"
136 136
137 137 #: forms.py:365
138 138 msgid "Inappropriate characters."
139 139 msgstr "Недопустимые символы."
140 140
141 141 #: templates/boards/404.html:6
142 142 msgid "Not found"
143 143 msgstr "Не найдено"
144 144
145 145 #: templates/boards/404.html:12
146 146 msgid "This page does not exist"
147 147 msgstr "Этой страницы не существует"
148 148
149 149 #: templates/boards/all_threads.html:35
150 150 msgid "Details"
151 151 msgstr "Подробности"
152 152
153 153 #: templates/boards/all_threads.html:69
154 154 msgid "Edit tag"
155 155 msgstr "Изменить метку"
156 156
157 157 #: templates/boards/all_threads.html:76
158 158 #, python-format
159 159 msgid "%(count)s active thread"
160 160 msgid_plural "%(count)s active threads"
161 161 msgstr[0] "%(count)s активная тема"
162 162 msgstr[1] "%(count)s активные темы"
163 163 msgstr[2] "%(count)s активных тем"
164 164
165 165 #: templates/boards/all_threads.html:76
166 166 #, python-format
167 167 msgid "%(count)s thread in bumplimit"
168 168 msgid_plural "%(count)s threads in bumplimit"
169 169 msgstr[0] "%(count)s тема в бамплимите"
170 170 msgstr[1] "%(count)s темы в бамплимите"
171 171 msgstr[2] "%(count)s тем в бамплимите"
172 172
173 173 #: templates/boards/all_threads.html:77
174 174 #, python-format
175 175 msgid "%(count)s archived thread"
176 176 msgid_plural "%(count)s archived thread"
177 177 msgstr[0] "%(count)s архивная тема"
178 178 msgstr[1] "%(count)s архивные темы"
179 179 msgstr[2] "%(count)s архивных тем"
180 180
181 181 #: templates/boards/all_threads.html:78 templates/boards/post.html:102
182 182 #, python-format
183 183 #| msgid "%(count)s message"
184 184 #| msgid_plural "%(count)s messages"
185 185 msgid "%(count)s message"
186 186 msgid_plural "%(count)s messages"
187 187 msgstr[0] "%(count)s сообщение"
188 188 msgstr[1] "%(count)s сообщения"
189 189 msgstr[2] "%(count)s сообщений"
190 190
191 191 #: templates/boards/all_threads.html:95 templates/boards/feed.html:30
192 192 #: templates/boards/notifications.html:17 templates/search/search.html:26
193 193 msgid "Previous page"
194 194 msgstr "Предыдущая страница"
195 195
196 196 #: templates/boards/all_threads.html:109
197 197 #, python-format
198 198 msgid "Skipped %(count)s reply. Open thread to see all replies."
199 199 msgid_plural "Skipped %(count)s replies. Open thread to see all replies."
200 200 msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы."
201 201 msgstr[1] ""
202 202 "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы."
203 203 msgstr[2] ""
204 204 "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы."
205 205
206 206 #: templates/boards/all_threads.html:127 templates/boards/feed.html:40
207 207 #: templates/boards/notifications.html:27 templates/search/search.html:37
208 208 msgid "Next page"
209 209 msgstr "Следующая страница"
210 210
211 211 #: templates/boards/all_threads.html:132
212 212 msgid "No threads exist. Create the first one!"
213 213 msgstr "Нет тем. Создайте первую!"
214 214
215 215 #: templates/boards/all_threads.html:138
216 216 msgid "Create new thread"
217 217 msgstr "Создать новую тему"
218 218
219 219 #: templates/boards/all_threads.html:143 templates/boards/preview.html:16
220 220 #: templates/boards/thread_normal.html:51
221 221 msgid "Post"
222 222 msgstr "Отправить"
223 223
224 224 #: templates/boards/all_threads.html:144 templates/boards/preview.html:6
225 225 #: templates/boards/staticpages/help.html:21
226 226 #: templates/boards/thread_normal.html:52
227 227 msgid "Preview"
228 228 msgstr "Предпросмотр"
229 229
230 230 #: templates/boards/all_threads.html:149
231 231 msgid "Tags must be delimited by spaces. Text or image is required."
232 232 msgstr ""
233 233 "Метки должны быть разделены пробелами. Текст или изображение обязательны."
234 234
235 235 #: templates/boards/all_threads.html:152 templates/boards/thread_normal.html:58
236 236 msgid "Text syntax"
237 237 msgstr "Синтаксис текста"
238 238
239 239 #: templates/boards/all_threads.html:166 templates/boards/feed.html:53
240 240 msgid "Pages:"
241 241 msgstr "Страницы: "
242 242
243 243 #: templates/boards/authors.html:6 templates/boards/authors.html.py:12
244 244 msgid "Authors"
245 245 msgstr "Авторы"
246 246
247 247 #: templates/boards/authors.html:26
248 248 msgid "Distributed under the"
249 249 msgstr "Распространяется под"
250 250
251 251 #: templates/boards/authors.html:28
252 252 msgid "license"
253 253 msgstr "лицензией"
254 254
255 255 #: templates/boards/authors.html:30
256 256 msgid "Repository"
257 257 msgstr "Репозиторий"
258 258
259 259 #: templates/boards/base.html:14 templates/boards/base.html.py:41
260 260 msgid "Feed"
261 261 msgstr "Лента"
262 262
263 263 #: templates/boards/base.html:31
264 264 msgid "All threads"
265 265 msgstr "Все темы"
266 266
267 267 #: templates/boards/base.html:37
268 268 msgid "Add tags"
269 269 msgstr "Добавить метки"
270 270
271 271 #: templates/boards/base.html:39
272 272 msgid "Tag management"
273 273 msgstr "Управление метками"
274 274
275 275 #: templates/boards/base.html:39
276 276 msgid "tags"
277 277 msgstr "метки"
278 278
279 279 #: templates/boards/base.html:40
280 280 msgid "search"
281 281 msgstr "поиск"
282 282
283 283 #: templates/boards/base.html:41 templates/boards/feed.html:11
284 284 msgid "feed"
285 285 msgstr "лента"
286 286
287 287 #: templates/boards/base.html:42 templates/boards/random.html:6
288 288 msgid "Random images"
289 289 msgstr "Случайные изображения"
290 290
291 291 #: templates/boards/base.html:42
292 292 msgid "random"
293 293 msgstr "случайные"
294 294
295 295 #: templates/boards/base.html:44
296 296 msgid "favorites"
297 297 msgstr "избранное"
298 298
299 299 #: templates/boards/base.html:48 templates/boards/base.html.py:49
300 300 #: templates/boards/notifications.html:8
301 301 msgid "Notifications"
302 302 msgstr "Уведомления"
303 303
304 304 #: templates/boards/base.html:56 templates/boards/settings.html:8
305 305 msgid "Settings"
306 306 msgstr "Настройки"
307 307
308 308 #: templates/boards/base.html:59
309 309 msgid "Loading..."
310 310 msgstr "Загрузка..."
311 311
312 312 #: templates/boards/base.html:71
313 313 msgid "Admin"
314 314 msgstr "Администрирование"
315 315
316 316 #: templates/boards/base.html:73
317 317 #, python-format
318 318 msgid "Speed: %(ppd)s posts per day"
319 319 msgstr "Скорость: %(ppd)s сообщений в день"
320 320
321 321 #: templates/boards/base.html:75
322 322 msgid "Up"
323 323 msgstr "Вверх"
324 324
325 325 #: templates/boards/feed.html:45
326 326 msgid "No posts exist. Create the first one!"
327 327 msgstr "Нет сообщений. Создайте первое!"
328 328
329 329 #: templates/boards/post.html:33
330 330 msgid "Open"
331 331 msgstr "Открыть"
332 332
333 333 #: templates/boards/post.html:35 templates/boards/post.html.py:46
334 334 msgid "Reply"
335 335 msgstr "Ответить"
336 336
337 337 #: templates/boards/post.html:41
338 338 msgid " in "
339 339 msgstr " в "
340 340
341 341 #: templates/boards/post.html:51
342 342 msgid "Edit"
343 343 msgstr "Изменить"
344 344
345 345 #: templates/boards/post.html:53
346 346 msgid "Edit thread"
347 347 msgstr "Изменить тему"
348 348
349 349 #: templates/boards/post.html:91
350 350 msgid "Replies"
351 351 msgstr "Ответы"
352 352
353 353 #: templates/boards/post.html:103
354 354 #, python-format
355 355 msgid "%(count)s image"
356 356 msgid_plural "%(count)s images"
357 357 msgstr[0] "%(count)s изображение"
358 358 msgstr[1] "%(count)s изображения"
359 359 msgstr[2] "%(count)s изображений"
360 360
361 361 #: templates/boards/rss/post.html:5
362 362 msgid "Post image"
363 363 msgstr "Изображение сообщения"
364 364
365 365 #: templates/boards/settings.html:15
366 366 msgid "You are moderator."
367 367 msgstr "Вы модератор."
368 368
369 369 #: templates/boards/settings.html:19
370 370 msgid "Hidden tags:"
371 371 msgstr "Скрытые метки:"
372 372
373 373 #: templates/boards/settings.html:25
374 374 msgid "No hidden tags."
375 375 msgstr "Нет скрытых меток."
376 376
377 377 #: templates/boards/settings.html:34
378 378 msgid "Save"
379 379 msgstr "Сохранить"
380 380
381 381 #: templates/boards/staticpages/banned.html:6
382 382 msgid "Banned"
383 383 msgstr "Заблокирован"
384 384
385 385 #: templates/boards/staticpages/banned.html:11
386 386 msgid "Your IP address has been banned. Contact the administrator"
387 387 msgstr "Ваш IP адрес был заблокирован. Свяжитесь с администратором"
388 388
389 389 #: templates/boards/staticpages/help.html:6
390 390 #: templates/boards/staticpages/help.html:10
391 391 msgid "Syntax"
392 392 msgstr "Синтаксис"
393 393
394 394 #: templates/boards/staticpages/help.html:11
395 395 msgid "Italic text"
396 396 msgstr "Курсивный текст"
397 397
398 398 #: templates/boards/staticpages/help.html:12
399 399 msgid "Bold text"
400 400 msgstr "Полужирный текст"
401 401
402 402 #: templates/boards/staticpages/help.html:13
403 403 msgid "Spoiler"
404 404 msgstr "Спойлер"
405 405
406 406 #: templates/boards/staticpages/help.html:14
407 407 msgid "Link to a post"
408 408 msgstr "Ссылка на сообщение"
409 409
410 410 #: templates/boards/staticpages/help.html:15
411 411 msgid "Strikethrough text"
412 412 msgstr "Зачеркнутый текст"
413 413
414 414 #: templates/boards/staticpages/help.html:16
415 415 msgid "Comment"
416 416 msgstr "Комментарий"
417 417
418 418 #: templates/boards/staticpages/help.html:17
419 419 #: templates/boards/staticpages/help.html:18
420 420 msgid "Quote"
421 421 msgstr "Цитата"
422 422
423 423 #: templates/boards/staticpages/help.html:21
424 424 msgid "You can try pasting the text and previewing the result here:"
425 425 msgstr "Вы можете попробовать вставить текст и проверить результат здесь:"
426 426
427 427 #: templates/boards/tags.html:17
428 428 msgid "Sections:"
429 429 msgstr "Разделы:"
430 430
431 431 #: templates/boards/tags.html:30
432 432 msgid "Other tags:"
433 433 msgstr "Другие метки:"
434 434
435 435 #: templates/boards/tags.html:43
436 436 msgid "All tags..."
437 437 msgstr "Все метки..."
438 438
439 439 #: templates/boards/thread.html:14
440 440 msgid "Normal"
441 441 msgstr "Нормальный"
442 442
443 443 #: templates/boards/thread.html:15
444 444 msgid "Gallery"
445 445 msgstr "Галерея"
446 446
447 447 #: templates/boards/thread.html:16
448 448 msgid "Tree"
449 449 msgstr "Дерево"
450 450
451 451 #: templates/boards/thread.html:35
452 452 msgid "message"
453 453 msgid_plural "messages"
454 454 msgstr[0] "сообщение"
455 455 msgstr[1] "сообщения"
456 456 msgstr[2] "сообщений"
457 457
458 458 #: templates/boards/thread.html:38
459 459 msgid "image"
460 460 msgid_plural "images"
461 461 msgstr[0] "изображение"
462 462 msgstr[1] "изображения"
463 463 msgstr[2] "изображений"
464 464
465 465 #: templates/boards/thread.html:40
466 466 msgid "Last update: "
467 467 msgstr "Последнее обновление: "
468 468
469 469 #: templates/boards/thread_gallery.html:36
470 470 msgid "No images."
471 471 msgstr "Нет изображений."
472 472
473 473 #: templates/boards/thread_normal.html:30
474 474 msgid "posts to bumplimit"
475 475 msgstr "сообщений до бамплимита"
476 476
477 477 #: templates/boards/thread_normal.html:44
478 478 msgid "Reply to thread"
479 479 msgstr "Ответить в тему"
480 480
481 481 #: templates/boards/thread_normal.html:44
482 482 msgid "to message "
483 483 msgstr "на сообщение"
484 484
485 485 #: templates/boards/thread_normal.html:59
486 486 msgid "Reset form"
487 487 msgstr "Сбросить форму"
488 488
489 489 #: templates/search/search.html:17
490 490 msgid "Ok"
491 491 msgstr "Ок"
492 492
493 493 #: utils.py:120
494 494 #, python-format
495 495 msgid "File must be less than %s but is %s."
496 496 msgstr "Файл должен быть менее %s, но его размер %s."
497 497
498 498 msgid "Please wait %(delay)d second before sending message"
499 499 msgid_plural "Please wait %(delay)d seconds before sending message"
500 500 msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения"
501 501 msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения"
502 502 msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения"
503 503
504 504 msgid "New threads"
505 505 msgstr "Новые темы"
506 506
507 507 #, python-format
508 508 msgid "Max file size is %(size)s."
509 509 msgstr "Максимальный размер файла %(size)s."
510 510
511 511 msgid "Size of media:"
512 512 msgstr "Размер медиа:"
513 513
514 514 msgid "Statistics"
515 515 msgstr "Статистика"
516 516
517 517 msgid "Invalid PoW."
518 518 msgstr "Неверный PoW."
519 519
520 520 msgid "Stale PoW."
521 521 msgstr "PoW устарел."
522 522
523 523 msgid "Show"
524 524 msgstr "Показывать"
525 525
526 526 msgid "Hide"
527 527 msgstr "Скрывать"
528 528
529 529 msgid "Add to favorites"
530 530 msgstr "Добавить в избранное"
531 531
532 532 msgid "Remove from favorites"
533 533 msgstr "Убрать из избранного"
534 534
535 535 msgid "Monochrome"
536 536 msgstr "Монохромный"
537 537
538 538 msgid "Subsections: "
539 539 msgstr "Подразделы: "
540 540
541 541 msgid "Change file source"
542 542 msgstr "Изменить источник файла"
543 543
544 544 msgid "interesting"
545 545 msgstr "интересное"
546 546
547 547 msgid "images"
548 548 msgstr "изображения"
549 549
550 550 msgid "Delete post"
551 551 msgstr "Удалить пост"
552 552
553 553 msgid "Delete thread"
554 554 msgstr "Удалить тему"
555 555
556 556 msgid "Messages per day/week/month:"
557 557 msgstr "Сообщений за день/неделю/месяц:"
558 558
559 559 msgid "Subscribe to thread"
560 560 msgstr "Подписаться на тему"
561 561
562 562 msgid "Active threads:"
563 563 msgstr "Активные темы:"
564 564
565 565 msgid "No active threads today."
566 566 msgstr "Сегодня нет активных тем."
567 567
568 568 msgid "Insert URLs on separate lines."
569 569 msgstr "Вставляйте ссылки на отдельных строках."
570 570
571 571 msgid "You can post no more than %(files)d file."
572 572 msgid_plural "You can post no more than %(files)d files."
573 573 msgstr[0] "Вы можете отправить не более %(files)d файла."
574 574 msgstr[1] "Вы можете отправить не более %(files)d файлов."
575 575 msgstr[2] "Вы можете отправить не более %(files)d файлов."
576 576
577 577 #, python-format
578 578 msgid "Max file number is %(max_files)s."
579 579 msgstr "Максимальное количество файлов %(max_files)s."
580 580
581 581 msgid "Moderation"
582 582 msgstr "Модерация"
583 583
584 584 msgid "Check for duplicates"
585 585 msgstr "Проверять на дубликаты"
586 586
587 587 msgid "Some files are already present on the board."
588 588 msgstr "Некоторые файлы уже присутствуют на борде."
589 589
590 590 msgid "Do not download URLs"
591 591 msgstr "Не загружать ссылки"
592 592
593 593 msgid "Ban and delete"
594 594 msgstr "Забанить и удалить"
595 595
596 596 msgid "Are you sure?"
597 597 msgstr "Вы уверены?"
598 598
599 msgid "Ban"
600 msgstr "Забанить"
601
@@ -1,159 +1,168 b''
1 1 {% load i18n %}
2 2 {% load board %}
3 3
4 4 {% get_current_language as LANGUAGE_CODE %}
5 5
6 6 <div class="{{ css_class }}" id="{{ post.id }}" data-uid="{{ post.uid }}" {% if tree_depth %}style="margin-left: {{ tree_depth }}em;"{% endif %}>
7 7 <div class="post-info">
8 8 <a class="post_id" href="{{ post.get_absolute_url }}">#{{ post.id }}</a>
9 9 <span class="title">{{ post.title }}</span>
10 10 {% if perms.boards.change_post and post.has_ip %}
11 11 <span class="pub_time" style="border-bottom: solid 2px #{{ post.get_ip_color }};" title="{{ post.poster_ip }}">
12 12 {% else %}
13 13 <span class="pub_time">
14 14 {% endif %}
15 15 <time datetime="{{ post.pub_time|date:'c' }}">{{ post.pub_time }}</time></span>
16 16 {% if post.tripcode %}
17 17 /
18 18 {% with tripcode=post.get_tripcode %}
19 19 <a href="{% url 'feed' %}?tripcode={{ tripcode.get_full_text }}"
20 20 class="tripcode" title="{{ tripcode.get_full_text }}"
21 21 style="border: solid 2px #{{ tripcode.get_color }}; border-left: solid 1ex #{{ tripcode.get_color }};">{{ tripcode.get_short_text }}</a>
22 22 {% endwith %}
23 23 {% endif %}
24 24 {% comment %}
25 25 Thread death time needs to be shown only if the thread is alredy archived
26 26 and this is an opening post (thread death time) or a post for popup
27 27 (we don't see OP here so we show the death time in the post itself).
28 28 {% endcomment %}
29 29 {% if is_opening and thread.is_archived %}
30 30 <time datetime="{{ thread.bump_time|date:'c' }}">{{ thread.bump_time }}</time>
31 31 {% endif %}
32 32 {% if is_opening %}
33 33 {% if need_open_link %}
34 34 {% if thread.is_archived %}
35 35 <a class="link" href="{% url 'thread' post.id %}">{% trans "Open" %}</a>
36 36 {% else %}
37 37 <a class="link" href="{% url 'thread' post.id %}#form">{% trans "Reply" %}</a>
38 38 {% endif %}
39 39 {% endif %}
40 40 {% else %}
41 41 {% if need_op_data %}
42 42 {% with thread.get_opening_post as op %}
43 43 {% trans " in " %}{{ op.get_link_view|safe }} <span class="title">{{ op.get_title_or_text }}</span>
44 44 {% endwith %}
45 45 {% endif %}
46 46 {% endif %}
47 47 {% if reply_link and not thread.is_archived %}
48 48 <a href="#form" onclick="addQuickReply('{{ post.id }}'); return false;">{% trans 'Reply' %}</a>
49 49 {% endif %}
50 50
51 51 {% if perms.boards.change_post or perms.boards.delete_post or perms.boards.change_thread or perms_boards.delete_thread %}
52 52 <a class="moderation-menu" href="#">🔒</a>
53 53 <script>
54 54 $.contextMenu({
55 55 selector: '#{{ post.id }} .moderation-menu',
56 56 trigger: 'left',
57 57 build: function($trigger, e) {
58 58 return {
59 59 items: {
60 60 edit: {
61 61 name: '{% trans "Edit" %}',
62 62 callback: function(key, opt) {
63 63 window.location = '{% url 'admin:boards_post_change' post.id %}';
64 64 },
65 65 visible: {% if perms.boards.change_post %}true{% else %}false{% endif %}
66 66 },
67 67 deletePost: {
68 68 name: '{% trans "Delete post" %}',
69 69 callback: function(key, opt) {
70 70 window.location = '{% url 'admin:boards_post_delete' post.id %}';
71 71 },
72 72 visible: {% if not is_opening and perms.boards.delete_post %}true{% else %}false{% endif %}
73 73 },
74 74 editThread: {
75 75 name: '{% trans "Edit thread" %}',
76 76 callback: function(key, opt) {
77 77 window.location = '{% url 'admin:boards_thread_change' thread.id %}';
78 78 },
79 79 visible: {% if is_opening and perms.boards.change_thread %}true{% else %}false{% endif %}
80 80 },
81 81 deleteThread: {
82 82 name: '{% trans "Delete thread" %}',
83 83 callback: function(key, opt) {
84 84 window.location = '{% url 'admin:boards_thread_delete' thread.id %}';
85 85 },
86 86 visible: {% if is_opening and perms.boards.delete_thread %}true{% else %}false{% endif %}
87 87 },
88 88 findByIp: {
89 89 name: 'IP = {{ post.poster_ip }}',
90 90 callback: function(key, opt) {
91 91 window.location = '{% url "feed" %}?ip={{ post.poster_ip }}';
92 92 },
93 93 visible: {% if post.has_ip %}true{% else %}false{% endif %}
94 94 },
95 95 raw: {
96 96 name: 'RAW',
97 97 callback: function(key, opt) {
98 98 window.location = '{% url 'post_sync_data' post.id %}';
99 99 },
100 100 visible: {% if post.global_id_id %}true{% else %}false{% endif %}
101 101 },
102 ban: {
103 name: '{% trans "Ban" %}',
104 callback: function(key, opt) {
105 if (confirm('{% trans "Are you sure?" %}')) {
106 window.location = '{% url 'utils' %}?method=ban&post_id={{ post.id }}';
107 }
108 },
109 visible: {% if post.has_ip %}true{% else %}false{% endif %}
110 },
102 111 banAndDelete: {
103 112 name: '{% trans "Ban and delete" %}',
104 113 callback: function(key, opt) {
105 114 if (confirm('{% trans "Are you sure?" %}')) {
106 115 window.location = '{% url 'utils' %}?method=ban_and_delete&post_id={{ post.id }}';
107 116 }
108 117 },
109 118 visible: {% if post.has_ip %}true{% else %}false{% endif %}
110 119 }
111 120 }
112 121 };
113 122 }
114 123 });
115 124 </script>
116 125 {% endif %}
117 126 </div>
118 127 {% comment %}
119 128 Post images. Currently only 1 image can be posted and shown, but post model
120 129 supports multiple.
121 130 {% endcomment %}
122 131 {% for image in post.images.all %}
123 132 {{ image.get_view|safe }}
124 133 {% endfor %}
125 134 {% for file in post.attachments.all %}
126 135 {{ file.get_view|safe }}
127 136 {% endfor %}
128 137 {% comment %}
129 138 Post message (text)
130 139 {% endcomment %}
131 140 <div class="message">
132 141 {% if truncated %}
133 142 {{ post.get_text|truncatewords_html:50|truncatenewlines_html:3|safe }}
134 143 {% else %}
135 144 {{ post.get_text|safe }}
136 145 {% endif %}
137 146 </div>
138 147 {% if post.is_referenced and not mode_tree %}
139 148 <div class="refmap">
140 149 {% trans "Replies" %}: {{ post.refmap|safe }}
141 150 </div>
142 151 {% endif %}
143 152 {% comment %}
144 153 Thread metadata: counters, tags etc
145 154 {% endcomment %}
146 155 {% if is_opening %}
147 156 <div class="metadata">
148 157 {% if need_open_link %}
149 158 ♥ {{ thread.get_reply_count }}
150 159 ❄ {{ thread.get_images_count }}
151 160 <a href="{% url 'thread_gallery' post.id %}">G</a>
152 161 <a href="{% url 'thread_tree' post.id %}">T</a>
153 162 {% endif %}
154 163 <span class="tags">
155 164 {{ thread.get_tag_url_list|safe }}
156 165 </span>
157 166 </div>
158 167 {% endif %}
159 168 </div>
@@ -1,26 +1,31 b''
1 1 from django.shortcuts import redirect
2 2 from django.utils.decorators import method_decorator
3 3 from django.views.decorators.csrf import csrf_protect
4 4 from django.contrib.auth.decorators import permission_required
5 5
6 6 from boards.views.base import BaseBoardView, CONTEXT_FORM
7 7 from boards.views.mixins import DispatcherMixin, PARAMETER_METHOD
8 8 from boards.models import Post, Ban
9 9
10 10
11 11 class UtilsView(BaseBoardView, DispatcherMixin):
12 12 @method_decorator(csrf_protect)
13 13 def get(self, request):
14 14 self.dispatch_method(request)
15 15
16 16 return redirect('index')
17 17
18 18 @permission_required('boards.delete_post')
19 19 def ban_and_delete(self, request):
20 20 post = Post.objects.get(id=request.GET['post_id'])
21 21 Ban.objects.get_or_create(ip=post.poster_ip)
22 22 if post.is_opening():
23 23 post.get_thread().delete()
24 24 else:
25 25 post.delete()
26 26
27 @permission_required('boards.add_ban')
28 def ban(self, request):
29 post = Post.objects.get(id=request.GET['post_id'])
30 Ban.objects.get_or_create(ip=post.poster_ip)
31
General Comments 0
You need to be logged in to leave comments. Login now