##// END OF EJS Templates
Show bumplimit thread count in the tag page
neko259 -
r1383:679c05d2 default
parent child Browse files
Show More
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -1,493 +1,501 b''
1 # SOME DESCRIPTIVE TITLE.
1 # SOME DESCRIPTIVE TITLE.
2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 # This file is distributed under the same license as the PACKAGE package.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
5 #
6 msgid ""
6 msgid ""
7 msgstr ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2015-10-09 23:21+0300\n"
10 "POT-Creation-Date: 2015-10-09 23:21+0300\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: ru\n"
14 "Language: ru\n"
15 "MIME-Version: 1.0\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
18 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
19 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
20
20
21 #: admin.py:22
21 #: admin.py:22
22 msgid "{} posters were banned"
22 msgid "{} posters were banned"
23 msgstr ""
23 msgstr ""
24
24
25 #: authors.py:9
25 #: authors.py:9
26 msgid "author"
26 msgid "author"
27 msgstr "автор"
27 msgstr "автор"
28
28
29 #: authors.py:10
29 #: authors.py:10
30 msgid "developer"
30 msgid "developer"
31 msgstr "разработчик"
31 msgstr "разработчик"
32
32
33 #: authors.py:11
33 #: authors.py:11
34 msgid "javascript developer"
34 msgid "javascript developer"
35 msgstr "разработчик javascript"
35 msgstr "разработчик javascript"
36
36
37 #: authors.py:12
37 #: authors.py:12
38 msgid "designer"
38 msgid "designer"
39 msgstr "дизайнер"
39 msgstr "дизайнер"
40
40
41 #: forms.py:30
41 #: forms.py:30
42 msgid "Type message here. Use formatting panel for more advanced usage."
42 msgid "Type message here. Use formatting panel for more advanced usage."
43 msgstr ""
43 msgstr ""
44 "Вводите сообщение сюда. Используйте панель для более сложного форматирования."
44 "Вводите сообщение сюда. Используйте панель для более сложного форматирования."
45
45
46 #: forms.py:31
46 #: forms.py:31
47 msgid "music images i_dont_like_tags"
47 msgid "music images i_dont_like_tags"
48 msgstr "музыка картинки теги_не_нужны"
48 msgstr "музыка картинки теги_не_нужны"
49
49
50 #: forms.py:33
50 #: forms.py:33
51 msgid "Title"
51 msgid "Title"
52 msgstr "Заголовок"
52 msgstr "Заголовок"
53
53
54 #: forms.py:34
54 #: forms.py:34
55 msgid "Text"
55 msgid "Text"
56 msgstr "Текст"
56 msgstr "Текст"
57
57
58 #: forms.py:35
58 #: forms.py:35
59 msgid "Tag"
59 msgid "Tag"
60 msgstr "Метка"
60 msgstr "Метка"
61
61
62 #: forms.py:36 templates/boards/base.html:40 templates/search/search.html:7
62 #: forms.py:36 templates/boards/base.html:40 templates/search/search.html:7
63 msgid "Search"
63 msgid "Search"
64 msgstr "Поиск"
64 msgstr "Поиск"
65
65
66 #: forms.py:139
66 #: forms.py:139
67 msgid "File"
67 msgid "File"
68 msgstr "Файл"
68 msgstr "Файл"
69
69
70 #: forms.py:142
70 #: forms.py:142
71 msgid "File URL"
71 msgid "File URL"
72 msgstr "URL файла"
72 msgstr "URL файла"
73
73
74 #: forms.py:148
74 #: forms.py:148
75 msgid "e-mail"
75 msgid "e-mail"
76 msgstr ""
76 msgstr ""
77
77
78 #: forms.py:151
78 #: forms.py:151
79 msgid "Additional threads"
79 msgid "Additional threads"
80 msgstr "Дополнительные темы"
80 msgstr "Дополнительные темы"
81
81
82 #: forms.py:162
82 #: forms.py:162
83 #, python-format
83 #, python-format
84 msgid "Title must have less than %s characters"
84 msgid "Title must have less than %s characters"
85 msgstr "Заголовок должен иметь меньше %s символов"
85 msgstr "Заголовок должен иметь меньше %s символов"
86
86
87 #: forms.py:172
87 #: forms.py:172
88 #, python-format
88 #, python-format
89 msgid "Text must have less than %s characters"
89 msgid "Text must have less than %s characters"
90 msgstr "Текст должен быть короче %s символов"
90 msgstr "Текст должен быть короче %s символов"
91
91
92 #: forms.py:192
92 #: forms.py:192
93 msgid "Invalid URL"
93 msgid "Invalid URL"
94 msgstr "Неверный URL"
94 msgstr "Неверный URL"
95
95
96 #: forms.py:213
96 #: forms.py:213
97 msgid "Invalid additional thread list"
97 msgid "Invalid additional thread list"
98 msgstr "Неверный список дополнительных тем"
98 msgstr "Неверный список дополнительных тем"
99
99
100 #: forms.py:258
100 #: forms.py:258
101 msgid "Either text or file must be entered."
101 msgid "Either text or file must be entered."
102 msgstr "Текст или файл должны быть введены."
102 msgstr "Текст или файл должны быть введены."
103
103
104 #: forms.py:317 templates/boards/all_threads.html:153
104 #: forms.py:317 templates/boards/all_threads.html:153
105 #: templates/boards/rss/post.html:10 templates/boards/tags.html:6
105 #: templates/boards/rss/post.html:10 templates/boards/tags.html:6
106 msgid "Tags"
106 msgid "Tags"
107 msgstr "Метки"
107 msgstr "Метки"
108
108
109 #: forms.py:324
109 #: forms.py:324
110 msgid "Inappropriate characters in tags."
110 msgid "Inappropriate characters in tags."
111 msgstr "Недопустимые символы в метках."
111 msgstr "Недопустимые символы в метках."
112
112
113 #: forms.py:344
113 #: forms.py:344
114 msgid "Need at least one section."
114 msgid "Need at least one section."
115 msgstr "Нужен хотя бы один раздел."
115 msgstr "Нужен хотя бы один раздел."
116
116
117 #: forms.py:356
117 #: forms.py:356
118 msgid "Theme"
118 msgid "Theme"
119 msgstr "Тема"
119 msgstr "Тема"
120
120
121 #: forms.py:357
121 #: forms.py:357
122 msgid "Image view mode"
122 msgid "Image view mode"
123 msgstr "Режим просмотра изображений"
123 msgstr "Режим просмотра изображений"
124
124
125 #: forms.py:358
125 #: forms.py:358
126 msgid "User name"
126 msgid "User name"
127 msgstr "Имя пользователя"
127 msgstr "Имя пользователя"
128
128
129 #: forms.py:359
129 #: forms.py:359
130 msgid "Time zone"
130 msgid "Time zone"
131 msgstr "Часовой пояс"
131 msgstr "Часовой пояс"
132
132
133 #: forms.py:365
133 #: forms.py:365
134 msgid "Inappropriate characters."
134 msgid "Inappropriate characters."
135 msgstr "Недопустимые символы."
135 msgstr "Недопустимые символы."
136
136
137 #: templates/boards/404.html:6
137 #: templates/boards/404.html:6
138 msgid "Not found"
138 msgid "Not found"
139 msgstr "Не найдено"
139 msgstr "Не найдено"
140
140
141 #: templates/boards/404.html:12
141 #: templates/boards/404.html:12
142 msgid "This page does not exist"
142 msgid "This page does not exist"
143 msgstr "Этой страницы не существует"
143 msgstr "Этой страницы не существует"
144
144
145 #: templates/boards/all_threads.html:35
145 #: templates/boards/all_threads.html:35
146 msgid "Related message"
146 msgid "Related message"
147 msgstr "Связанное сообщение"
147 msgstr "Связанное сообщение"
148
148
149 #: templates/boards/all_threads.html:69
149 #: templates/boards/all_threads.html:69
150 msgid "Edit tag"
150 msgid "Edit tag"
151 msgstr "Изменить метку"
151 msgstr "Изменить метку"
152
152
153 #: templates/boards/all_threads.html:76
153 #: templates/boards/all_threads.html:76
154 #, python-format
154 #, python-format
155 msgid "%(count)s active thread"
155 msgid "%(count)s active thread"
156 msgid_plural "%(count)s active threads"
156 msgid_plural "%(count)s active threads"
157 msgstr[0] "%(count)s активная тема"
157 msgstr[0] "%(count)s активная тема"
158 msgstr[1] "%(count)s активные темы"
158 msgstr[1] "%(count)s активные темы"
159 msgstr[2] "%(count)s активных тем"
159 msgstr[2] "%(count)s активных тем"
160
160
161 #: templates/boards/all_threads.html:76
162 #, python-format
163 msgid "%(count)s thread in bumplimit"
164 msgid_plural "%(count)s threads in bumplimit"
165 msgstr[0] "%(count)s тема в бамплимите"
166 msgstr[1] "%(count)s темы в бамплимите"
167 msgstr[2] "%(count)s тем в бамплимите"
168
161 #: templates/boards/all_threads.html:77
169 #: templates/boards/all_threads.html:77
162 #, python-format
170 #, python-format
163 msgid "%(count)s archived thread"
171 msgid "%(count)s archived thread"
164 msgid_plural "%(count)s archived thread"
172 msgid_plural "%(count)s archived thread"
165 msgstr[0] "%(count)s архивная тема"
173 msgstr[0] "%(count)s архивная тема"
166 msgstr[1] "%(count)s архивные темы"
174 msgstr[1] "%(count)s архивные темы"
167 msgstr[2] "%(count)s архивных тем"
175 msgstr[2] "%(count)s архивных тем"
168
176
169 #: templates/boards/all_threads.html:78 templates/boards/post.html:102
177 #: templates/boards/all_threads.html:78 templates/boards/post.html:102
170 #, python-format
178 #, python-format
171 #| msgid "%(count)s message"
179 #| msgid "%(count)s message"
172 #| msgid_plural "%(count)s messages"
180 #| msgid_plural "%(count)s messages"
173 msgid "%(count)s message"
181 msgid "%(count)s message"
174 msgid_plural "%(count)s messages"
182 msgid_plural "%(count)s messages"
175 msgstr[0] "%(count)s сообщение"
183 msgstr[0] "%(count)s сообщение"
176 msgstr[1] "%(count)s сообщения"
184 msgstr[1] "%(count)s сообщения"
177 msgstr[2] "%(count)s сообщений"
185 msgstr[2] "%(count)s сообщений"
178
186
179 #: templates/boards/all_threads.html:95 templates/boards/feed.html:30
187 #: templates/boards/all_threads.html:95 templates/boards/feed.html:30
180 #: templates/boards/notifications.html:17 templates/search/search.html:26
188 #: templates/boards/notifications.html:17 templates/search/search.html:26
181 msgid "Previous page"
189 msgid "Previous page"
182 msgstr "Предыдущая страница"
190 msgstr "Предыдущая страница"
183
191
184 #: templates/boards/all_threads.html:109
192 #: templates/boards/all_threads.html:109
185 #, python-format
193 #, python-format
186 msgid "Skipped %(count)s reply. Open thread to see all replies."
194 msgid "Skipped %(count)s reply. Open thread to see all replies."
187 msgid_plural "Skipped %(count)s replies. Open thread to see all replies."
195 msgid_plural "Skipped %(count)s replies. Open thread to see all replies."
188 msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы."
196 msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы."
189 msgstr[1] ""
197 msgstr[1] ""
190 "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы."
198 "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы."
191 msgstr[2] ""
199 msgstr[2] ""
192 "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы."
200 "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы."
193
201
194 #: templates/boards/all_threads.html:127 templates/boards/feed.html:40
202 #: templates/boards/all_threads.html:127 templates/boards/feed.html:40
195 #: templates/boards/notifications.html:27 templates/search/search.html:37
203 #: templates/boards/notifications.html:27 templates/search/search.html:37
196 msgid "Next page"
204 msgid "Next page"
197 msgstr "Следующая страница"
205 msgstr "Следующая страница"
198
206
199 #: templates/boards/all_threads.html:132
207 #: templates/boards/all_threads.html:132
200 msgid "No threads exist. Create the first one!"
208 msgid "No threads exist. Create the first one!"
201 msgstr "Нет тем. Создайте первую!"
209 msgstr "Нет тем. Создайте первую!"
202
210
203 #: templates/boards/all_threads.html:138
211 #: templates/boards/all_threads.html:138
204 msgid "Create new thread"
212 msgid "Create new thread"
205 msgstr "Создать новую тему"
213 msgstr "Создать новую тему"
206
214
207 #: templates/boards/all_threads.html:143 templates/boards/preview.html:16
215 #: templates/boards/all_threads.html:143 templates/boards/preview.html:16
208 #: templates/boards/thread_normal.html:51
216 #: templates/boards/thread_normal.html:51
209 msgid "Post"
217 msgid "Post"
210 msgstr "Отправить"
218 msgstr "Отправить"
211
219
212 #: templates/boards/all_threads.html:144 templates/boards/preview.html:6
220 #: templates/boards/all_threads.html:144 templates/boards/preview.html:6
213 #: templates/boards/staticpages/help.html:21
221 #: templates/boards/staticpages/help.html:21
214 #: templates/boards/thread_normal.html:52
222 #: templates/boards/thread_normal.html:52
215 msgid "Preview"
223 msgid "Preview"
216 msgstr "Предпросмотр"
224 msgstr "Предпросмотр"
217
225
218 #: templates/boards/all_threads.html:149
226 #: templates/boards/all_threads.html:149
219 msgid "Tags must be delimited by spaces. Text or image is required."
227 msgid "Tags must be delimited by spaces. Text or image is required."
220 msgstr ""
228 msgstr ""
221 "Метки должны быть разделены пробелами. Текст или изображение обязательны."
229 "Метки должны быть разделены пробелами. Текст или изображение обязательны."
222
230
223 #: templates/boards/all_threads.html:152 templates/boards/thread_normal.html:58
231 #: templates/boards/all_threads.html:152 templates/boards/thread_normal.html:58
224 msgid "Text syntax"
232 msgid "Text syntax"
225 msgstr "Синтаксис текста"
233 msgstr "Синтаксис текста"
226
234
227 #: templates/boards/all_threads.html:166 templates/boards/feed.html:53
235 #: templates/boards/all_threads.html:166 templates/boards/feed.html:53
228 msgid "Pages:"
236 msgid "Pages:"
229 msgstr "Страницы: "
237 msgstr "Страницы: "
230
238
231 #: templates/boards/authors.html:6 templates/boards/authors.html.py:12
239 #: templates/boards/authors.html:6 templates/boards/authors.html.py:12
232 msgid "Authors"
240 msgid "Authors"
233 msgstr "Авторы"
241 msgstr "Авторы"
234
242
235 #: templates/boards/authors.html:26
243 #: templates/boards/authors.html:26
236 msgid "Distributed under the"
244 msgid "Distributed under the"
237 msgstr "Распространяется под"
245 msgstr "Распространяется под"
238
246
239 #: templates/boards/authors.html:28
247 #: templates/boards/authors.html:28
240 msgid "license"
248 msgid "license"
241 msgstr "лицензией"
249 msgstr "лицензией"
242
250
243 #: templates/boards/authors.html:30
251 #: templates/boards/authors.html:30
244 msgid "Repository"
252 msgid "Repository"
245 msgstr "Репозиторий"
253 msgstr "Репозиторий"
246
254
247 #: templates/boards/base.html:14 templates/boards/base.html.py:41
255 #: templates/boards/base.html:14 templates/boards/base.html.py:41
248 msgid "Feed"
256 msgid "Feed"
249 msgstr "Лента"
257 msgstr "Лента"
250
258
251 #: templates/boards/base.html:31
259 #: templates/boards/base.html:31
252 msgid "All threads"
260 msgid "All threads"
253 msgstr "Все темы"
261 msgstr "Все темы"
254
262
255 #: templates/boards/base.html:37
263 #: templates/boards/base.html:37
256 msgid "Add tags"
264 msgid "Add tags"
257 msgstr "Добавить метки"
265 msgstr "Добавить метки"
258
266
259 #: templates/boards/base.html:39
267 #: templates/boards/base.html:39
260 msgid "Tag management"
268 msgid "Tag management"
261 msgstr "Управление метками"
269 msgstr "Управление метками"
262
270
263 #: templates/boards/base.html:39
271 #: templates/boards/base.html:39
264 msgid "tags"
272 msgid "tags"
265 msgstr "метки"
273 msgstr "метки"
266
274
267 #: templates/boards/base.html:40
275 #: templates/boards/base.html:40
268 msgid "search"
276 msgid "search"
269 msgstr "поиск"
277 msgstr "поиск"
270
278
271 #: templates/boards/base.html:41 templates/boards/feed.html:11
279 #: templates/boards/base.html:41 templates/boards/feed.html:11
272 msgid "feed"
280 msgid "feed"
273 msgstr "лента"
281 msgstr "лента"
274
282
275 #: templates/boards/base.html:42 templates/boards/random.html:6
283 #: templates/boards/base.html:42 templates/boards/random.html:6
276 msgid "Random images"
284 msgid "Random images"
277 msgstr "Случайные изображения"
285 msgstr "Случайные изображения"
278
286
279 #: templates/boards/base.html:42
287 #: templates/boards/base.html:42
280 msgid "random"
288 msgid "random"
281 msgstr "случайные"
289 msgstr "случайные"
282
290
283 #: templates/boards/base.html:44
291 #: templates/boards/base.html:44
284 msgid "favorites"
292 msgid "favorites"
285 msgstr "избранное"
293 msgstr "избранное"
286
294
287 #: templates/boards/base.html:48 templates/boards/base.html.py:49
295 #: templates/boards/base.html:48 templates/boards/base.html.py:49
288 #: templates/boards/notifications.html:8
296 #: templates/boards/notifications.html:8
289 msgid "Notifications"
297 msgid "Notifications"
290 msgstr "Уведомления"
298 msgstr "Уведомления"
291
299
292 #: templates/boards/base.html:56 templates/boards/settings.html:8
300 #: templates/boards/base.html:56 templates/boards/settings.html:8
293 msgid "Settings"
301 msgid "Settings"
294 msgstr "Настройки"
302 msgstr "Настройки"
295
303
296 #: templates/boards/base.html:59
304 #: templates/boards/base.html:59
297 msgid "Loading..."
305 msgid "Loading..."
298 msgstr "Загрузка..."
306 msgstr "Загрузка..."
299
307
300 #: templates/boards/base.html:71
308 #: templates/boards/base.html:71
301 msgid "Admin"
309 msgid "Admin"
302 msgstr "Администрирование"
310 msgstr "Администрирование"
303
311
304 #: templates/boards/base.html:73
312 #: templates/boards/base.html:73
305 #, python-format
313 #, python-format
306 msgid "Speed: %(ppd)s posts per day"
314 msgid "Speed: %(ppd)s posts per day"
307 msgstr "Скорость: %(ppd)s сообщений в день"
315 msgstr "Скорость: %(ppd)s сообщений в день"
308
316
309 #: templates/boards/base.html:75
317 #: templates/boards/base.html:75
310 msgid "Up"
318 msgid "Up"
311 msgstr "Вверх"
319 msgstr "Вверх"
312
320
313 #: templates/boards/feed.html:45
321 #: templates/boards/feed.html:45
314 msgid "No posts exist. Create the first one!"
322 msgid "No posts exist. Create the first one!"
315 msgstr "Нет сообщений. Создайте первое!"
323 msgstr "Нет сообщений. Создайте первое!"
316
324
317 #: templates/boards/post.html:33
325 #: templates/boards/post.html:33
318 msgid "Open"
326 msgid "Open"
319 msgstr "Открыть"
327 msgstr "Открыть"
320
328
321 #: templates/boards/post.html:35 templates/boards/post.html.py:46
329 #: templates/boards/post.html:35 templates/boards/post.html.py:46
322 msgid "Reply"
330 msgid "Reply"
323 msgstr "Ответить"
331 msgstr "Ответить"
324
332
325 #: templates/boards/post.html:41
333 #: templates/boards/post.html:41
326 msgid " in "
334 msgid " in "
327 msgstr " в "
335 msgstr " в "
328
336
329 #: templates/boards/post.html:51
337 #: templates/boards/post.html:51
330 msgid "Edit"
338 msgid "Edit"
331 msgstr "Изменить"
339 msgstr "Изменить"
332
340
333 #: templates/boards/post.html:53
341 #: templates/boards/post.html:53
334 msgid "Edit thread"
342 msgid "Edit thread"
335 msgstr "Изменить тему"
343 msgstr "Изменить тему"
336
344
337 #: templates/boards/post.html:91
345 #: templates/boards/post.html:91
338 msgid "Replies"
346 msgid "Replies"
339 msgstr "Ответы"
347 msgstr "Ответы"
340
348
341 #: templates/boards/post.html:103
349 #: templates/boards/post.html:103
342 #, python-format
350 #, python-format
343 msgid "%(count)s image"
351 msgid "%(count)s image"
344 msgid_plural "%(count)s images"
352 msgid_plural "%(count)s images"
345 msgstr[0] "%(count)s изображение"
353 msgstr[0] "%(count)s изображение"
346 msgstr[1] "%(count)s изображения"
354 msgstr[1] "%(count)s изображения"
347 msgstr[2] "%(count)s изображений"
355 msgstr[2] "%(count)s изображений"
348
356
349 #: templates/boards/rss/post.html:5
357 #: templates/boards/rss/post.html:5
350 msgid "Post image"
358 msgid "Post image"
351 msgstr "Изображение сообщения"
359 msgstr "Изображение сообщения"
352
360
353 #: templates/boards/settings.html:15
361 #: templates/boards/settings.html:15
354 msgid "You are moderator."
362 msgid "You are moderator."
355 msgstr "Вы модератор."
363 msgstr "Вы модератор."
356
364
357 #: templates/boards/settings.html:19
365 #: templates/boards/settings.html:19
358 msgid "Hidden tags:"
366 msgid "Hidden tags:"
359 msgstr "Скрытые метки:"
367 msgstr "Скрытые метки:"
360
368
361 #: templates/boards/settings.html:25
369 #: templates/boards/settings.html:25
362 msgid "No hidden tags."
370 msgid "No hidden tags."
363 msgstr "Нет скрытых меток."
371 msgstr "Нет скрытых меток."
364
372
365 #: templates/boards/settings.html:34
373 #: templates/boards/settings.html:34
366 msgid "Save"
374 msgid "Save"
367 msgstr "Сохранить"
375 msgstr "Сохранить"
368
376
369 #: templates/boards/staticpages/banned.html:6
377 #: templates/boards/staticpages/banned.html:6
370 msgid "Banned"
378 msgid "Banned"
371 msgstr "Заблокирован"
379 msgstr "Заблокирован"
372
380
373 #: templates/boards/staticpages/banned.html:11
381 #: templates/boards/staticpages/banned.html:11
374 msgid "Your IP address has been banned. Contact the administrator"
382 msgid "Your IP address has been banned. Contact the administrator"
375 msgstr "Ваш IP адрес был заблокирован. Свяжитесь с администратором"
383 msgstr "Ваш IP адрес был заблокирован. Свяжитесь с администратором"
376
384
377 #: templates/boards/staticpages/help.html:6
385 #: templates/boards/staticpages/help.html:6
378 #: templates/boards/staticpages/help.html:10
386 #: templates/boards/staticpages/help.html:10
379 msgid "Syntax"
387 msgid "Syntax"
380 msgstr "Синтаксис"
388 msgstr "Синтаксис"
381
389
382 #: templates/boards/staticpages/help.html:11
390 #: templates/boards/staticpages/help.html:11
383 msgid "Italic text"
391 msgid "Italic text"
384 msgstr "Курсивный текст"
392 msgstr "Курсивный текст"
385
393
386 #: templates/boards/staticpages/help.html:12
394 #: templates/boards/staticpages/help.html:12
387 msgid "Bold text"
395 msgid "Bold text"
388 msgstr "Полужирный текст"
396 msgstr "Полужирный текст"
389
397
390 #: templates/boards/staticpages/help.html:13
398 #: templates/boards/staticpages/help.html:13
391 msgid "Spoiler"
399 msgid "Spoiler"
392 msgstr "Спойлер"
400 msgstr "Спойлер"
393
401
394 #: templates/boards/staticpages/help.html:14
402 #: templates/boards/staticpages/help.html:14
395 msgid "Link to a post"
403 msgid "Link to a post"
396 msgstr "Ссылка на сообщение"
404 msgstr "Ссылка на сообщение"
397
405
398 #: templates/boards/staticpages/help.html:15
406 #: templates/boards/staticpages/help.html:15
399 msgid "Strikethrough text"
407 msgid "Strikethrough text"
400 msgstr "Зачеркнутый текст"
408 msgstr "Зачеркнутый текст"
401
409
402 #: templates/boards/staticpages/help.html:16
410 #: templates/boards/staticpages/help.html:16
403 msgid "Comment"
411 msgid "Comment"
404 msgstr "Комментарий"
412 msgstr "Комментарий"
405
413
406 #: templates/boards/staticpages/help.html:17
414 #: templates/boards/staticpages/help.html:17
407 #: templates/boards/staticpages/help.html:18
415 #: templates/boards/staticpages/help.html:18
408 msgid "Quote"
416 msgid "Quote"
409 msgstr "Цитата"
417 msgstr "Цитата"
410
418
411 #: templates/boards/staticpages/help.html:21
419 #: templates/boards/staticpages/help.html:21
412 msgid "You can try pasting the text and previewing the result here:"
420 msgid "You can try pasting the text and previewing the result here:"
413 msgstr "Вы можете попробовать вставить текст и проверить результат здесь:"
421 msgstr "Вы можете попробовать вставить текст и проверить результат здесь:"
414
422
415 #: templates/boards/tags.html:17
423 #: templates/boards/tags.html:17
416 msgid "Sections:"
424 msgid "Sections:"
417 msgstr "Разделы:"
425 msgstr "Разделы:"
418
426
419 #: templates/boards/tags.html:30
427 #: templates/boards/tags.html:30
420 msgid "Other tags:"
428 msgid "Other tags:"
421 msgstr "Другие метки:"
429 msgstr "Другие метки:"
422
430
423 #: templates/boards/tags.html:43
431 #: templates/boards/tags.html:43
424 msgid "All tags..."
432 msgid "All tags..."
425 msgstr "Все метки..."
433 msgstr "Все метки..."
426
434
427 #: templates/boards/thread.html:14
435 #: templates/boards/thread.html:14
428 msgid "Normal"
436 msgid "Normal"
429 msgstr "Нормальный"
437 msgstr "Нормальный"
430
438
431 #: templates/boards/thread.html:15
439 #: templates/boards/thread.html:15
432 msgid "Gallery"
440 msgid "Gallery"
433 msgstr "Галерея"
441 msgstr "Галерея"
434
442
435 #: templates/boards/thread.html:16
443 #: templates/boards/thread.html:16
436 msgid "Tree"
444 msgid "Tree"
437 msgstr "Дерево"
445 msgstr "Дерево"
438
446
439 #: templates/boards/thread.html:35
447 #: templates/boards/thread.html:35
440 msgid "message"
448 msgid "message"
441 msgid_plural "messages"
449 msgid_plural "messages"
442 msgstr[0] "сообщение"
450 msgstr[0] "сообщение"
443 msgstr[1] "сообщения"
451 msgstr[1] "сообщения"
444 msgstr[2] "сообщений"
452 msgstr[2] "сообщений"
445
453
446 #: templates/boards/thread.html:38
454 #: templates/boards/thread.html:38
447 msgid "image"
455 msgid "image"
448 msgid_plural "images"
456 msgid_plural "images"
449 msgstr[0] "изображение"
457 msgstr[0] "изображение"
450 msgstr[1] "изображения"
458 msgstr[1] "изображения"
451 msgstr[2] "изображений"
459 msgstr[2] "изображений"
452
460
453 #: templates/boards/thread.html:40
461 #: templates/boards/thread.html:40
454 msgid "Last update: "
462 msgid "Last update: "
455 msgstr "Последнее обновление: "
463 msgstr "Последнее обновление: "
456
464
457 #: templates/boards/thread_gallery.html:36
465 #: templates/boards/thread_gallery.html:36
458 msgid "No images."
466 msgid "No images."
459 msgstr "Нет изображений."
467 msgstr "Нет изображений."
460
468
461 #: templates/boards/thread_normal.html:30
469 #: templates/boards/thread_normal.html:30
462 msgid "posts to bumplimit"
470 msgid "posts to bumplimit"
463 msgstr "сообщений до бамплимита"
471 msgstr "сообщений до бамплимита"
464
472
465 #: templates/boards/thread_normal.html:44
473 #: templates/boards/thread_normal.html:44
466 msgid "Reply to thread"
474 msgid "Reply to thread"
467 msgstr "Ответить в тему"
475 msgstr "Ответить в тему"
468
476
469 #: templates/boards/thread_normal.html:44
477 #: templates/boards/thread_normal.html:44
470 msgid "to message "
478 msgid "to message "
471 msgstr "на сообщение"
479 msgstr "на сообщение"
472
480
473 #: templates/boards/thread_normal.html:59
481 #: templates/boards/thread_normal.html:59
474 msgid "Close form"
482 msgid "Close form"
475 msgstr "Закрыть форму"
483 msgstr "Закрыть форму"
476
484
477 #: templates/search/search.html:17
485 #: templates/search/search.html:17
478 msgid "Ok"
486 msgid "Ok"
479 msgstr "Ок"
487 msgstr "Ок"
480
488
481 #: utils.py:120
489 #: utils.py:120
482 #, python-format
490 #, python-format
483 msgid "File must be less than %s bytes"
491 msgid "File must be less than %s bytes"
484 msgstr "Файл должен быть менее %s байт"
492 msgstr "Файл должен быть менее %s байт"
485
493
486 msgid "Please wait %(delay)d second before sending message"
494 msgid "Please wait %(delay)d second before sending message"
487 msgid_plural "Please wait %(delay)d seconds before sending message"
495 msgid_plural "Please wait %(delay)d seconds before sending message"
488 msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения"
496 msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения"
489 msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения"
497 msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения"
490 msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения"
498 msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения"
491
499
492 msgid "New threads"
500 msgid "New threads"
493 msgstr "Новые темы"
501 msgstr "Новые темы"
@@ -1,138 +1,143 b''
1 import hashlib
1 import hashlib
2 from django.template.loader import render_to_string
2 from django.template.loader import render_to_string
3 from django.db import models
3 from django.db import models
4 from django.db.models import Count
4 from django.db.models import Count
5 from django.core.urlresolvers import reverse
5 from django.core.urlresolvers import reverse
6
6
7 from boards.models.base import Viewable
7 from boards.models.base import Viewable
8 from boards.utils import cached_result
8 from boards.utils import cached_result
9 import boards
9 import boards
10
10
11 __author__ = 'neko259'
11 __author__ = 'neko259'
12
12
13
13
14 RELATED_TAGS_COUNT = 5
14 RELATED_TAGS_COUNT = 5
15
15
16
16
17 class TagManager(models.Manager):
17 class TagManager(models.Manager):
18
18
19 def get_not_empty_tags(self):
19 def get_not_empty_tags(self):
20 """
20 """
21 Gets tags that have non-archived threads.
21 Gets tags that have non-archived threads.
22 """
22 """
23
23
24 return self.annotate(num_threads=Count('thread_tags')).filter(num_threads__gt=0)\
24 return self.annotate(num_threads=Count('thread_tags')).filter(num_threads__gt=0)\
25 .order_by('-required', 'name')
25 .order_by('-required', 'name')
26
26
27 def get_tag_url_list(self, tags: list) -> str:
27 def get_tag_url_list(self, tags: list) -> str:
28 """
28 """
29 Gets a comma-separated list of tag links.
29 Gets a comma-separated list of tag links.
30 """
30 """
31
31
32 return ', '.join([tag.get_view() for tag in tags])
32 return ', '.join([tag.get_view() for tag in tags])
33
33
34
34
35 class Tag(models.Model, Viewable):
35 class Tag(models.Model, Viewable):
36 """
36 """
37 A tag is a text node assigned to the thread. The tag serves as a board
37 A tag is a text node assigned to the thread. The tag serves as a board
38 section. There can be multiple tags for each thread
38 section. There can be multiple tags for each thread
39 """
39 """
40
40
41 objects = TagManager()
41 objects = TagManager()
42
42
43 class Meta:
43 class Meta:
44 app_label = 'boards'
44 app_label = 'boards'
45 ordering = ('name',)
45 ordering = ('name',)
46
46
47 name = models.CharField(max_length=100, db_index=True, unique=True)
47 name = models.CharField(max_length=100, db_index=True, unique=True)
48 required = models.BooleanField(default=False, db_index=True)
48 required = models.BooleanField(default=False, db_index=True)
49 description = models.TextField(blank=True)
49 description = models.TextField(blank=True)
50
50
51 parent = models.ForeignKey('Tag', null=True, blank=True,
51 parent = models.ForeignKey('Tag', null=True, blank=True,
52 related_name='children')
52 related_name='children')
53
53
54 def __str__(self):
54 def __str__(self):
55 return self.name
55 return self.name
56
56
57 def is_empty(self) -> bool:
57 def is_empty(self) -> bool:
58 """
58 """
59 Checks if the tag has some threads.
59 Checks if the tag has some threads.
60 """
60 """
61
61
62 return self.get_thread_count() == 0
62 return self.get_thread_count() == 0
63
63
64 def get_thread_count(self, archived=None) -> int:
64 def get_thread_count(self, archived=None, bumpable=None) -> int:
65 threads = self.get_threads()
65 threads = self.get_threads()
66 if archived is not None:
66 if archived is not None:
67 threads = threads.filter(archived=archived)
67 threads = threads.filter(archived=archived)
68 if bumpable is not None:
69 threads = threads.filter(bumpable=bumpable)
68 return threads.count()
70 return threads.count()
69
71
70 def get_active_thread_count(self) -> int:
72 def get_active_thread_count(self) -> int:
71 return self.get_thread_count(archived=False)
73 return self.get_thread_count(archived=False, bumpable=True)
74
75 def get_bumplimit_thread_count(self) -> int:
76 return self.get_thread_count(archived=False, bumpable=False)
72
77
73 def get_archived_thread_count(self) -> int:
78 def get_archived_thread_count(self) -> int:
74 return self.get_thread_count(archived=True)
79 return self.get_thread_count(archived=True)
75
80
76 def get_absolute_url(self):
81 def get_absolute_url(self):
77 return reverse('tag', kwargs={'tag_name': self.name})
82 return reverse('tag', kwargs={'tag_name': self.name})
78
83
79 def get_threads(self):
84 def get_threads(self):
80 return self.thread_tags.order_by('-bump_time')
85 return self.thread_tags.order_by('-bump_time')
81
86
82 def is_required(self):
87 def is_required(self):
83 return self.required
88 return self.required
84
89
85 def get_view(self):
90 def get_view(self):
86 link = '<a class="tag" href="{}">{}</a>'.format(
91 link = '<a class="tag" href="{}">{}</a>'.format(
87 self.get_absolute_url(), self.name)
92 self.get_absolute_url(), self.name)
88 if self.is_required():
93 if self.is_required():
89 link = '<b>{}</b>'.format(link)
94 link = '<b>{}</b>'.format(link)
90 return link
95 return link
91
96
92 def get_search_view(self, *args, **kwargs):
97 def get_search_view(self, *args, **kwargs):
93 return render_to_string('boards/tag.html', {
98 return render_to_string('boards/tag.html', {
94 'tag': self,
99 'tag': self,
95 })
100 })
96
101
97 @cached_result()
102 @cached_result()
98 def get_post_count(self):
103 def get_post_count(self):
99 return self.get_threads().aggregate(num_posts=Count('multi_replies'))['num_posts']
104 return self.get_threads().aggregate(num_posts=Count('multi_replies'))['num_posts']
100
105
101 def get_description(self):
106 def get_description(self):
102 return self.description
107 return self.description
103
108
104 def get_random_image_post(self, archived=False):
109 def get_random_image_post(self, archived=False):
105 posts = boards.models.Post.objects.annotate(images_count=Count(
110 posts = boards.models.Post.objects.annotate(images_count=Count(
106 'images')).filter(images_count__gt=0, threads__tags__in=[self])
111 'images')).filter(images_count__gt=0, threads__tags__in=[self])
107 if archived is not None:
112 if archived is not None:
108 posts = posts.filter(thread__archived=archived)
113 posts = posts.filter(thread__archived=archived)
109 return posts.order_by('?').first()
114 return posts.order_by('?').first()
110
115
111 def get_first_letter(self):
116 def get_first_letter(self):
112 return self.name and self.name[0] or ''
117 return self.name and self.name[0] or ''
113
118
114 def get_related_tags(self):
119 def get_related_tags(self):
115 return set(Tag.objects.filter(thread_tags__in=self.get_threads()).exclude(
120 return set(Tag.objects.filter(thread_tags__in=self.get_threads()).exclude(
116 id=self.id).order_by('?')[:RELATED_TAGS_COUNT])
121 id=self.id).order_by('?')[:RELATED_TAGS_COUNT])
117
122
118 @cached_result()
123 @cached_result()
119 def get_color(self):
124 def get_color(self):
120 """
125 """
121 Gets color hashed from the tag name.
126 Gets color hashed from the tag name.
122 """
127 """
123 return hashlib.md5(self.name.encode()).hexdigest()[:6]
128 return hashlib.md5(self.name.encode()).hexdigest()[:6]
124
129
125 def get_parent(self):
130 def get_parent(self):
126 return self.parent
131 return self.parent
127
132
128 def get_all_parents(self):
133 def get_all_parents(self):
129 parents = list()
134 parents = list()
130 parent = self.get_parent()
135 parent = self.get_parent()
131 if parent and parent not in parents:
136 if parent and parent not in parents:
132 parents.insert(0, parent)
137 parents.insert(0, parent)
133 parents = parent.get_all_parents() + parents
138 parents = parent.get_all_parents() + parents
134
139
135 return parents
140 return parents
136
141
137 def get_children(self):
142 def get_children(self):
138 return self.children
143 return self.children
@@ -1,185 +1,186 b''
1 {% extends "boards/base.html" %}
1 {% extends "boards/base.html" %}
2
2
3 {% load i18n %}
3 {% load i18n %}
4 {% load board %}
4 {% load board %}
5 {% load static %}
5 {% load static %}
6 {% load tz %}
6 {% load tz %}
7
7
8 {% block head %}
8 {% block head %}
9 <meta name="robots" content="noindex">
9 <meta name="robots" content="noindex">
10
10
11 {% if tag %}
11 {% if tag %}
12 <title>{{ tag.name }} - {{ site_name }}</title>
12 <title>{{ tag.name }} - {{ site_name }}</title>
13 {% else %}
13 {% else %}
14 <title>{{ site_name }}</title>
14 <title>{{ site_name }}</title>
15 {% endif %}
15 {% endif %}
16
16
17 {% if prev_page_link %}
17 {% if prev_page_link %}
18 <link rel="prev" href="{{ prev_page_link }}" />
18 <link rel="prev" href="{{ prev_page_link }}" />
19 {% endif %}
19 {% endif %}
20 {% if next_page_link %}
20 {% if next_page_link %}
21 <link rel="next" href="{{ next_page_link }}" />
21 <link rel="next" href="{{ next_page_link }}" />
22 {% endif %}
22 {% endif %}
23
23
24 {% endblock %}
24 {% endblock %}
25
25
26 {% block content %}
26 {% block content %}
27
27
28 {% get_current_language as LANGUAGE_CODE %}
28 {% get_current_language as LANGUAGE_CODE %}
29 {% get_current_timezone as TIME_ZONE %}
29 {% get_current_timezone as TIME_ZONE %}
30
30
31 {% for banner in banners %}
31 {% for banner in banners %}
32 <div class="post">
32 <div class="post">
33 <div class="title">{{ banner.title }}</div>
33 <div class="title">{{ banner.title }}</div>
34 <div>{{ banner.text }}</div>
34 <div>{{ banner.text }}</div>
35 <div>{% trans 'Related message' %}: <a href="{{ banner.post.get_absolute_url }}">>>{{ banner.post.id }}</a></div>
35 <div>{% trans 'Related message' %}: <a href="{{ banner.post.get_absolute_url }}">>>{{ banner.post.id }}</a></div>
36 </div>
36 </div>
37 {% endfor %}
37 {% endfor %}
38
38
39 {% if tag %}
39 {% if tag %}
40 <div class="tag_info" style="border-bottom: solid .5ex #{{ tag.get_color }}">
40 <div class="tag_info" style="border-bottom: solid .5ex #{{ tag.get_color }}">
41 {% if random_image_post %}
41 {% if random_image_post %}
42 <div class="tag-image">
42 <div class="tag-image">
43 {% with image=random_image_post.images.first %}
43 {% with image=random_image_post.images.first %}
44 <a href="{{ random_image_post.get_absolute_url }}"><img
44 <a href="{{ random_image_post.get_absolute_url }}"><img
45 src="{{ image.image.url_200x150 }}"
45 src="{{ image.image.url_200x150 }}"
46 width="{{ image.pre_width }}"
46 width="{{ image.pre_width }}"
47 height="{{ image.pre_height }}"/></a>
47 height="{{ image.pre_height }}"/></a>
48 {% endwith %}
48 {% endwith %}
49 </div>
49 </div>
50 {% endif %}
50 {% endif %}
51 <div class="tag-text-data">
51 <div class="tag-text-data">
52 <h2>
52 <h2>
53 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
53 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
54 {% if is_favorite %}
54 {% if is_favorite %}
55 <button name="method" value="unsubscribe" class="fav"></button>
55 <button name="method" value="unsubscribe" class="fav"></button>
56 {% else %}
56 {% else %}
57 <button name="method" value="subscribe" class="not_fav"></button>
57 <button name="method" value="subscribe" class="not_fav"></button>
58 {% endif %}
58 {% endif %}
59 </form>
59 </form>
60 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
60 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
61 {% if is_hidden %}
61 {% if is_hidden %}
62 <button name="method" value="unhide" class="fav">H</button>
62 <button name="method" value="unhide" class="fav">H</button>
63 {% else %}
63 {% else %}
64 <button name="method" value="hide" class="not_fav">H</button>
64 <button name="method" value="hide" class="not_fav">H</button>
65 {% endif %}
65 {% endif %}
66 </form>
66 </form>
67 {{ tag.get_view|safe }}
67 {{ tag.get_view|safe }}
68 {% if moderator %}
68 {% if moderator %}
69 <span class="moderator_info">| <a href="{% url 'admin:boards_tag_change' tag.id %}">{% trans 'Edit tag' %}</a></span>
69 <span class="moderator_info">| <a href="{% url 'admin:boards_tag_change' tag.id %}">{% trans 'Edit tag' %}</a></span>
70 {% endif %}
70 {% endif %}
71 </h2>
71 </h2>
72 {% if tag.get_description %}
72 {% if tag.get_description %}
73 <p>{{ tag.get_description|safe }}</p>
73 <p>{{ tag.get_description|safe }}</p>
74 {% endif %}
74 {% endif %}
75 <p>
75 <p>
76 {% blocktrans count count=tag.get_active_thread_count %}{{ count }} active thread{% plural %}active threads{% endblocktrans %},
76 {% blocktrans count count=tag.get_active_thread_count %}{{ count }} active thread{% plural %}active threads{% endblocktrans %},
77 {% blocktrans count count=tag.get_bumplimit_thread_count %}{{ count }} thread in bumplimit{% plural %} threads in bumplimit{% endblocktrans %},
77 {% blocktrans count count=tag.get_archived_thread_count %}{{ count }} archived thread{% plural %}archived threads{% endblocktrans %},
78 {% blocktrans count count=tag.get_archived_thread_count %}{{ count }} archived thread{% plural %}archived threads{% endblocktrans %},
78 {% blocktrans count count=tag.get_post_count %}{{ count }} message{% plural %}messages{% endblocktrans %}.
79 {% blocktrans count count=tag.get_post_count %}{{ count }} message{% plural %}messages{% endblocktrans %}.
79 </p>
80 </p>
80 {% if tag.get_all_parents %}
81 {% if tag.get_all_parents %}
81 <p>
82 <p>
82 {% for parent in tag.get_all_parents %}
83 {% for parent in tag.get_all_parents %}
83 {{ parent.get_view|safe }} &gt;
84 {{ parent.get_view|safe }} &gt;
84 {% endfor %}
85 {% endfor %}
85 {{ tag.get_view|safe }}
86 {{ tag.get_view|safe }}
86 </p>
87 </p>
87 {% endif %}
88 {% endif %}
88 </div>
89 </div>
89 </div>
90 </div>
90 {% endif %}
91 {% endif %}
91
92
92 {% if threads %}
93 {% if threads %}
93 {% if prev_page_link %}
94 {% if prev_page_link %}
94 <div class="page_link">
95 <div class="page_link">
95 <a href="{{ prev_page_link }}">{% trans "Previous page" %}</a>
96 <a href="{{ prev_page_link }}">{% trans "Previous page" %}</a>
96 </div>
97 </div>
97 {% endif %}
98 {% endif %}
98
99
99 {% for thread in threads %}
100 {% for thread in threads %}
100 <div class="thread">
101 <div class="thread">
101 {% post_view thread.get_opening_post moderator=moderator thread=thread truncated=True need_open_link=True %}
102 {% post_view thread.get_opening_post moderator=moderator thread=thread truncated=True need_open_link=True %}
102 {% if not thread.archived %}
103 {% if not thread.archived %}
103 {% with last_replies=thread.get_last_replies %}
104 {% with last_replies=thread.get_last_replies %}
104 {% if last_replies %}
105 {% if last_replies %}
105 {% with skipped_replies_count=thread.get_skipped_replies_count %}
106 {% with skipped_replies_count=thread.get_skipped_replies_count %}
106 {% if skipped_replies_count %}
107 {% if skipped_replies_count %}
107 <div class="skipped_replies">
108 <div class="skipped_replies">
108 <a href="{% url 'thread' thread.get_opening_post_id %}">
109 <a href="{% url 'thread' thread.get_opening_post_id %}">
109 {% blocktrans count count=skipped_replies_count %}Skipped {{ count }} reply. Open thread to see all replies.{% plural %}Skipped {{ count }} replies. Open thread to see all replies.{% endblocktrans %}
110 {% blocktrans count count=skipped_replies_count %}Skipped {{ count }} reply. Open thread to see all replies.{% plural %}Skipped {{ count }} replies. Open thread to see all replies.{% endblocktrans %}
110 </a>
111 </a>
111 </div>
112 </div>
112 {% endif %}
113 {% endif %}
113 {% endwith %}
114 {% endwith %}
114 <div class="last-replies">
115 <div class="last-replies">
115 {% for post in last_replies %}
116 {% for post in last_replies %}
116 {% post_view post moderator=moderator truncated=True %}
117 {% post_view post moderator=moderator truncated=True %}
117 {% endfor %}
118 {% endfor %}
118 </div>
119 </div>
119 {% endif %}
120 {% endif %}
120 {% endwith %}
121 {% endwith %}
121 {% endif %}
122 {% endif %}
122 </div>
123 </div>
123 {% endfor %}
124 {% endfor %}
124
125
125 {% if next_page_link %}
126 {% if next_page_link %}
126 <div class="page_link">
127 <div class="page_link">
127 <a href="{{ next_page_link }}">{% trans "Next page" %}</a>
128 <a href="{{ next_page_link }}">{% trans "Next page" %}</a>
128 </div>
129 </div>
129 {% endif %}
130 {% endif %}
130 {% else %}
131 {% else %}
131 <div class="post">
132 <div class="post">
132 {% trans 'No threads exist. Create the first one!' %}</div>
133 {% trans 'No threads exist. Create the first one!' %}</div>
133 {% endif %}
134 {% endif %}
134
135
135 <div class="post-form-w">
136 <div class="post-form-w">
136 <script src="{% static 'js/panel.js' %}"></script>
137 <script src="{% static 'js/panel.js' %}"></script>
137 <div class="post-form">
138 <div class="post-form">
138 <div class="form-title">{% trans "Create new thread" %}</div>
139 <div class="form-title">{% trans "Create new thread" %}</div>
139 <div class="swappable-form-full">
140 <div class="swappable-form-full">
140 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
141 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
141 {{ form.as_div }}
142 {{ form.as_div }}
142 <div class="form-submit">
143 <div class="form-submit">
143 <input type="submit" value="{% trans "Post" %}"/>
144 <input type="submit" value="{% trans "Post" %}"/>
144 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
145 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
145 </div>
146 </div>
146 </form>
147 </form>
147 </div>
148 </div>
148 <div>
149 <div>
149 {% trans 'Tags must be delimited by spaces. Text or image is required.' %}
150 {% trans 'Tags must be delimited by spaces. Text or image is required.' %}
150 </div>
151 </div>
151 <div id="preview-text"></div>
152 <div id="preview-text"></div>
152 <div><a href="{% url "staticpage" name="help" %}">{% trans 'Text syntax' %}</a></div>
153 <div><a href="{% url "staticpage" name="help" %}">{% trans 'Text syntax' %}</a></div>
153 <div><a href="{% url "tags" "required" %}">{% trans 'Tags' %}</a></div>
154 <div><a href="{% url "tags" "required" %}">{% trans 'Tags' %}</a></div>
154 </div>
155 </div>
155 </div>
156 </div>
156
157
157 <script src="{% static 'js/form.js' %}"></script>
158 <script src="{% static 'js/form.js' %}"></script>
158 <script src="{% static 'js/thread_create.js' %}"></script>
159 <script src="{% static 'js/thread_create.js' %}"></script>
159
160
160 {% endblock %}
161 {% endblock %}
161
162
162 {% block metapanel %}
163 {% block metapanel %}
163
164
164 <span class="metapanel">
165 <span class="metapanel">
165 <b><a href="{% url "authors" %}">{{ site_name }}</a> {{ version }}</b>
166 <b><a href="{% url "authors" %}">{{ site_name }}</a> {{ version }}</b>
166 {% trans "Pages:" %}
167 {% trans "Pages:" %}
167 [
168 [
168 {% with dividers=paginator.get_dividers %}
169 {% with dividers=paginator.get_dividers %}
169 {% for page in paginator.get_divided_range %}
170 {% for page in paginator.get_divided_range %}
170 {% if page in dividers %}
171 {% if page in dividers %}
171 …,
172 …,
172 {% endif %}
173 {% endif %}
173 <a
174 <a
174 {% ifequal page current_page.number %}
175 {% ifequal page current_page.number %}
175 class="current_page"
176 class="current_page"
176 {% endifequal %}
177 {% endifequal %}
177 href="{% page_url paginator page %}">{{ page }}</a>
178 href="{% page_url paginator page %}">{{ page }}</a>
178 {% if not forloop.last %},{% endif %}
179 {% if not forloop.last %},{% endif %}
179 {% endfor %}
180 {% endfor %}
180 {% endwith %}
181 {% endwith %}
181 ]
182 ]
182 [<a href="rss/">RSS</a>]
183 [<a href="rss/">RSS</a>]
183 </span>
184 </span>
184
185
185 {% endblock %}
186 {% endblock %}
General Comments 0
You need to be logged in to leave comments. Login now