##// END OF EJS Templates
Ability to switch file source field in posting form
neko259 -
r1461:0a26ae7c default
parent child Browse files
Show More
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -1,535 +1,538 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 "Details"
146 msgid "Details"
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
161 #: templates/boards/all_threads.html:76
162 #, python-format
162 #, python-format
163 msgid "%(count)s thread in bumplimit"
163 msgid "%(count)s thread in bumplimit"
164 msgid_plural "%(count)s threads in bumplimit"
164 msgid_plural "%(count)s threads in bumplimit"
165 msgstr[0] "%(count)s тема в бамплимите"
165 msgstr[0] "%(count)s тема в бамплимите"
166 msgstr[1] "%(count)s темы в бамплимите"
166 msgstr[1] "%(count)s темы в бамплимите"
167 msgstr[2] "%(count)s тем в бамплимите"
167 msgstr[2] "%(count)s тем в бамплимите"
168
168
169 #: templates/boards/all_threads.html:77
169 #: templates/boards/all_threads.html:77
170 #, python-format
170 #, python-format
171 msgid "%(count)s archived thread"
171 msgid "%(count)s archived thread"
172 msgid_plural "%(count)s archived thread"
172 msgid_plural "%(count)s archived thread"
173 msgstr[0] "%(count)s архивная тема"
173 msgstr[0] "%(count)s архивная тема"
174 msgstr[1] "%(count)s архивные темы"
174 msgstr[1] "%(count)s архивные темы"
175 msgstr[2] "%(count)s архивных тем"
175 msgstr[2] "%(count)s архивных тем"
176
176
177 #: templates/boards/all_threads.html:78 templates/boards/post.html:102
177 #: templates/boards/all_threads.html:78 templates/boards/post.html:102
178 #, python-format
178 #, python-format
179 #| msgid "%(count)s message"
179 #| msgid "%(count)s message"
180 #| msgid_plural "%(count)s messages"
180 #| msgid_plural "%(count)s messages"
181 msgid "%(count)s message"
181 msgid "%(count)s message"
182 msgid_plural "%(count)s messages"
182 msgid_plural "%(count)s messages"
183 msgstr[0] "%(count)s сообщение"
183 msgstr[0] "%(count)s сообщение"
184 msgstr[1] "%(count)s сообщения"
184 msgstr[1] "%(count)s сообщения"
185 msgstr[2] "%(count)s сообщений"
185 msgstr[2] "%(count)s сообщений"
186
186
187 #: templates/boards/all_threads.html:95 templates/boards/feed.html:30
187 #: templates/boards/all_threads.html:95 templates/boards/feed.html:30
188 #: templates/boards/notifications.html:17 templates/search/search.html:26
188 #: templates/boards/notifications.html:17 templates/search/search.html:26
189 msgid "Previous page"
189 msgid "Previous page"
190 msgstr "Предыдущая страница"
190 msgstr "Предыдущая страница"
191
191
192 #: templates/boards/all_threads.html:109
192 #: templates/boards/all_threads.html:109
193 #, python-format
193 #, python-format
194 msgid "Skipped %(count)s reply. Open thread to see all replies."
194 msgid "Skipped %(count)s reply. Open thread to see all replies."
195 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."
196 msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы."
196 msgstr[0] "Пропущен %(count)s ответ. Откройте тред, чтобы увидеть все ответы."
197 msgstr[1] ""
197 msgstr[1] ""
198 "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы."
198 "Пропущено %(count)s ответа. Откройте тред, чтобы увидеть все ответы."
199 msgstr[2] ""
199 msgstr[2] ""
200 "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы."
200 "Пропущено %(count)s ответов. Откройте тред, чтобы увидеть все ответы."
201
201
202 #: templates/boards/all_threads.html:127 templates/boards/feed.html:40
202 #: templates/boards/all_threads.html:127 templates/boards/feed.html:40
203 #: templates/boards/notifications.html:27 templates/search/search.html:37
203 #: templates/boards/notifications.html:27 templates/search/search.html:37
204 msgid "Next page"
204 msgid "Next page"
205 msgstr "Следующая страница"
205 msgstr "Следующая страница"
206
206
207 #: templates/boards/all_threads.html:132
207 #: templates/boards/all_threads.html:132
208 msgid "No threads exist. Create the first one!"
208 msgid "No threads exist. Create the first one!"
209 msgstr "Нет тем. Создайте первую!"
209 msgstr "Нет тем. Создайте первую!"
210
210
211 #: templates/boards/all_threads.html:138
211 #: templates/boards/all_threads.html:138
212 msgid "Create new thread"
212 msgid "Create new thread"
213 msgstr "Создать новую тему"
213 msgstr "Создать новую тему"
214
214
215 #: templates/boards/all_threads.html:143 templates/boards/preview.html:16
215 #: templates/boards/all_threads.html:143 templates/boards/preview.html:16
216 #: templates/boards/thread_normal.html:51
216 #: templates/boards/thread_normal.html:51
217 msgid "Post"
217 msgid "Post"
218 msgstr "Отправить"
218 msgstr "Отправить"
219
219
220 #: templates/boards/all_threads.html:144 templates/boards/preview.html:6
220 #: templates/boards/all_threads.html:144 templates/boards/preview.html:6
221 #: templates/boards/staticpages/help.html:21
221 #: templates/boards/staticpages/help.html:21
222 #: templates/boards/thread_normal.html:52
222 #: templates/boards/thread_normal.html:52
223 msgid "Preview"
223 msgid "Preview"
224 msgstr "Предпросмотр"
224 msgstr "Предпросмотр"
225
225
226 #: templates/boards/all_threads.html:149
226 #: templates/boards/all_threads.html:149
227 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."
228 msgstr ""
228 msgstr ""
229 "Метки должны быть разделены пробелами. Текст или изображение обязательны."
229 "Метки должны быть разделены пробелами. Текст или изображение обязательны."
230
230
231 #: 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
232 msgid "Text syntax"
232 msgid "Text syntax"
233 msgstr "Синтаксис текста"
233 msgstr "Синтаксис текста"
234
234
235 #: templates/boards/all_threads.html:166 templates/boards/feed.html:53
235 #: templates/boards/all_threads.html:166 templates/boards/feed.html:53
236 msgid "Pages:"
236 msgid "Pages:"
237 msgstr "Страницы: "
237 msgstr "Страницы: "
238
238
239 #: templates/boards/authors.html:6 templates/boards/authors.html.py:12
239 #: templates/boards/authors.html:6 templates/boards/authors.html.py:12
240 msgid "Authors"
240 msgid "Authors"
241 msgstr "Авторы"
241 msgstr "Авторы"
242
242
243 #: templates/boards/authors.html:26
243 #: templates/boards/authors.html:26
244 msgid "Distributed under the"
244 msgid "Distributed under the"
245 msgstr "Распространяется под"
245 msgstr "Распространяется под"
246
246
247 #: templates/boards/authors.html:28
247 #: templates/boards/authors.html:28
248 msgid "license"
248 msgid "license"
249 msgstr "лицензией"
249 msgstr "лицензией"
250
250
251 #: templates/boards/authors.html:30
251 #: templates/boards/authors.html:30
252 msgid "Repository"
252 msgid "Repository"
253 msgstr "Репозиторий"
253 msgstr "Репозиторий"
254
254
255 #: templates/boards/base.html:14 templates/boards/base.html.py:41
255 #: templates/boards/base.html:14 templates/boards/base.html.py:41
256 msgid "Feed"
256 msgid "Feed"
257 msgstr "Лента"
257 msgstr "Лента"
258
258
259 #: templates/boards/base.html:31
259 #: templates/boards/base.html:31
260 msgid "All threads"
260 msgid "All threads"
261 msgstr "Все темы"
261 msgstr "Все темы"
262
262
263 #: templates/boards/base.html:37
263 #: templates/boards/base.html:37
264 msgid "Add tags"
264 msgid "Add tags"
265 msgstr "Добавить метки"
265 msgstr "Добавить метки"
266
266
267 #: templates/boards/base.html:39
267 #: templates/boards/base.html:39
268 msgid "Tag management"
268 msgid "Tag management"
269 msgstr "Управление метками"
269 msgstr "Управление метками"
270
270
271 #: templates/boards/base.html:39
271 #: templates/boards/base.html:39
272 msgid "tags"
272 msgid "tags"
273 msgstr "метки"
273 msgstr "метки"
274
274
275 #: templates/boards/base.html:40
275 #: templates/boards/base.html:40
276 msgid "search"
276 msgid "search"
277 msgstr "поиск"
277 msgstr "поиск"
278
278
279 #: templates/boards/base.html:41 templates/boards/feed.html:11
279 #: templates/boards/base.html:41 templates/boards/feed.html:11
280 msgid "feed"
280 msgid "feed"
281 msgstr "лента"
281 msgstr "лента"
282
282
283 #: templates/boards/base.html:42 templates/boards/random.html:6
283 #: templates/boards/base.html:42 templates/boards/random.html:6
284 msgid "Random images"
284 msgid "Random images"
285 msgstr "Случайные изображения"
285 msgstr "Случайные изображения"
286
286
287 #: templates/boards/base.html:42
287 #: templates/boards/base.html:42
288 msgid "random"
288 msgid "random"
289 msgstr "случайные"
289 msgstr "случайные"
290
290
291 #: templates/boards/base.html:44
291 #: templates/boards/base.html:44
292 msgid "favorites"
292 msgid "favorites"
293 msgstr "избранное"
293 msgstr "избранное"
294
294
295 #: templates/boards/base.html:48 templates/boards/base.html.py:49
295 #: templates/boards/base.html:48 templates/boards/base.html.py:49
296 #: templates/boards/notifications.html:8
296 #: templates/boards/notifications.html:8
297 msgid "Notifications"
297 msgid "Notifications"
298 msgstr "Уведомления"
298 msgstr "Уведомления"
299
299
300 #: templates/boards/base.html:56 templates/boards/settings.html:8
300 #: templates/boards/base.html:56 templates/boards/settings.html:8
301 msgid "Settings"
301 msgid "Settings"
302 msgstr "Настройки"
302 msgstr "Настройки"
303
303
304 #: templates/boards/base.html:59
304 #: templates/boards/base.html:59
305 msgid "Loading..."
305 msgid "Loading..."
306 msgstr "Загрузка..."
306 msgstr "Загрузка..."
307
307
308 #: templates/boards/base.html:71
308 #: templates/boards/base.html:71
309 msgid "Admin"
309 msgid "Admin"
310 msgstr "Администрирование"
310 msgstr "Администрирование"
311
311
312 #: templates/boards/base.html:73
312 #: templates/boards/base.html:73
313 #, python-format
313 #, python-format
314 msgid "Speed: %(ppd)s posts per day"
314 msgid "Speed: %(ppd)s posts per day"
315 msgstr "Скорость: %(ppd)s сообщений в день"
315 msgstr "Скорость: %(ppd)s сообщений в день"
316
316
317 #: templates/boards/base.html:75
317 #: templates/boards/base.html:75
318 msgid "Up"
318 msgid "Up"
319 msgstr "Вверх"
319 msgstr "Вверх"
320
320
321 #: templates/boards/feed.html:45
321 #: templates/boards/feed.html:45
322 msgid "No posts exist. Create the first one!"
322 msgid "No posts exist. Create the first one!"
323 msgstr "Нет сообщений. Создайте первое!"
323 msgstr "Нет сообщений. Создайте первое!"
324
324
325 #: templates/boards/post.html:33
325 #: templates/boards/post.html:33
326 msgid "Open"
326 msgid "Open"
327 msgstr "Открыть"
327 msgstr "Открыть"
328
328
329 #: templates/boards/post.html:35 templates/boards/post.html.py:46
329 #: templates/boards/post.html:35 templates/boards/post.html.py:46
330 msgid "Reply"
330 msgid "Reply"
331 msgstr "Ответить"
331 msgstr "Ответить"
332
332
333 #: templates/boards/post.html:41
333 #: templates/boards/post.html:41
334 msgid " in "
334 msgid " in "
335 msgstr " в "
335 msgstr " в "
336
336
337 #: templates/boards/post.html:51
337 #: templates/boards/post.html:51
338 msgid "Edit"
338 msgid "Edit"
339 msgstr "Изменить"
339 msgstr "Изменить"
340
340
341 #: templates/boards/post.html:53
341 #: templates/boards/post.html:53
342 msgid "Edit thread"
342 msgid "Edit thread"
343 msgstr "Изменить тему"
343 msgstr "Изменить тему"
344
344
345 #: templates/boards/post.html:91
345 #: templates/boards/post.html:91
346 msgid "Replies"
346 msgid "Replies"
347 msgstr "Ответы"
347 msgstr "Ответы"
348
348
349 #: templates/boards/post.html:103
349 #: templates/boards/post.html:103
350 #, python-format
350 #, python-format
351 msgid "%(count)s image"
351 msgid "%(count)s image"
352 msgid_plural "%(count)s images"
352 msgid_plural "%(count)s images"
353 msgstr[0] "%(count)s изображение"
353 msgstr[0] "%(count)s изображение"
354 msgstr[1] "%(count)s изображения"
354 msgstr[1] "%(count)s изображения"
355 msgstr[2] "%(count)s изображений"
355 msgstr[2] "%(count)s изображений"
356
356
357 #: templates/boards/rss/post.html:5
357 #: templates/boards/rss/post.html:5
358 msgid "Post image"
358 msgid "Post image"
359 msgstr "Изображение сообщения"
359 msgstr "Изображение сообщения"
360
360
361 #: templates/boards/settings.html:15
361 #: templates/boards/settings.html:15
362 msgid "You are moderator."
362 msgid "You are moderator."
363 msgstr "Вы модератор."
363 msgstr "Вы модератор."
364
364
365 #: templates/boards/settings.html:19
365 #: templates/boards/settings.html:19
366 msgid "Hidden tags:"
366 msgid "Hidden tags:"
367 msgstr "Скрытые метки:"
367 msgstr "Скрытые метки:"
368
368
369 #: templates/boards/settings.html:25
369 #: templates/boards/settings.html:25
370 msgid "No hidden tags."
370 msgid "No hidden tags."
371 msgstr "Нет скрытых меток."
371 msgstr "Нет скрытых меток."
372
372
373 #: templates/boards/settings.html:34
373 #: templates/boards/settings.html:34
374 msgid "Save"
374 msgid "Save"
375 msgstr "Сохранить"
375 msgstr "Сохранить"
376
376
377 #: templates/boards/staticpages/banned.html:6
377 #: templates/boards/staticpages/banned.html:6
378 msgid "Banned"
378 msgid "Banned"
379 msgstr "Заблокирован"
379 msgstr "Заблокирован"
380
380
381 #: templates/boards/staticpages/banned.html:11
381 #: templates/boards/staticpages/banned.html:11
382 msgid "Your IP address has been banned. Contact the administrator"
382 msgid "Your IP address has been banned. Contact the administrator"
383 msgstr "Ваш IP адрес был заблокирован. Свяжитесь с администратором"
383 msgstr "Ваш IP адрес был заблокирован. Свяжитесь с администратором"
384
384
385 #: templates/boards/staticpages/help.html:6
385 #: templates/boards/staticpages/help.html:6
386 #: templates/boards/staticpages/help.html:10
386 #: templates/boards/staticpages/help.html:10
387 msgid "Syntax"
387 msgid "Syntax"
388 msgstr "Синтаксис"
388 msgstr "Синтаксис"
389
389
390 #: templates/boards/staticpages/help.html:11
390 #: templates/boards/staticpages/help.html:11
391 msgid "Italic text"
391 msgid "Italic text"
392 msgstr "Курсивный текст"
392 msgstr "Курсивный текст"
393
393
394 #: templates/boards/staticpages/help.html:12
394 #: templates/boards/staticpages/help.html:12
395 msgid "Bold text"
395 msgid "Bold text"
396 msgstr "Полужирный текст"
396 msgstr "Полужирный текст"
397
397
398 #: templates/boards/staticpages/help.html:13
398 #: templates/boards/staticpages/help.html:13
399 msgid "Spoiler"
399 msgid "Spoiler"
400 msgstr "Спойлер"
400 msgstr "Спойлер"
401
401
402 #: templates/boards/staticpages/help.html:14
402 #: templates/boards/staticpages/help.html:14
403 msgid "Link to a post"
403 msgid "Link to a post"
404 msgstr "Ссылка на сообщение"
404 msgstr "Ссылка на сообщение"
405
405
406 #: templates/boards/staticpages/help.html:15
406 #: templates/boards/staticpages/help.html:15
407 msgid "Strikethrough text"
407 msgid "Strikethrough text"
408 msgstr "Зачеркнутый текст"
408 msgstr "Зачеркнутый текст"
409
409
410 #: templates/boards/staticpages/help.html:16
410 #: templates/boards/staticpages/help.html:16
411 msgid "Comment"
411 msgid "Comment"
412 msgstr "Комментарий"
412 msgstr "Комментарий"
413
413
414 #: templates/boards/staticpages/help.html:17
414 #: templates/boards/staticpages/help.html:17
415 #: templates/boards/staticpages/help.html:18
415 #: templates/boards/staticpages/help.html:18
416 msgid "Quote"
416 msgid "Quote"
417 msgstr "Цитата"
417 msgstr "Цитата"
418
418
419 #: templates/boards/staticpages/help.html:21
419 #: templates/boards/staticpages/help.html:21
420 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:"
421 msgstr "Вы можете попробовать вставить текст и проверить результат здесь:"
421 msgstr "Вы можете попробовать вставить текст и проверить результат здесь:"
422
422
423 #: templates/boards/tags.html:17
423 #: templates/boards/tags.html:17
424 msgid "Sections:"
424 msgid "Sections:"
425 msgstr "Разделы:"
425 msgstr "Разделы:"
426
426
427 #: templates/boards/tags.html:30
427 #: templates/boards/tags.html:30
428 msgid "Other tags:"
428 msgid "Other tags:"
429 msgstr "Другие метки:"
429 msgstr "Другие метки:"
430
430
431 #: templates/boards/tags.html:43
431 #: templates/boards/tags.html:43
432 msgid "All tags..."
432 msgid "All tags..."
433 msgstr "Все метки..."
433 msgstr "Все метки..."
434
434
435 #: templates/boards/thread.html:14
435 #: templates/boards/thread.html:14
436 msgid "Normal"
436 msgid "Normal"
437 msgstr "Нормальный"
437 msgstr "Нормальный"
438
438
439 #: templates/boards/thread.html:15
439 #: templates/boards/thread.html:15
440 msgid "Gallery"
440 msgid "Gallery"
441 msgstr "Галерея"
441 msgstr "Галерея"
442
442
443 #: templates/boards/thread.html:16
443 #: templates/boards/thread.html:16
444 msgid "Tree"
444 msgid "Tree"
445 msgstr "Дерево"
445 msgstr "Дерево"
446
446
447 #: templates/boards/thread.html:35
447 #: templates/boards/thread.html:35
448 msgid "message"
448 msgid "message"
449 msgid_plural "messages"
449 msgid_plural "messages"
450 msgstr[0] "сообщение"
450 msgstr[0] "сообщение"
451 msgstr[1] "сообщения"
451 msgstr[1] "сообщения"
452 msgstr[2] "сообщений"
452 msgstr[2] "сообщений"
453
453
454 #: templates/boards/thread.html:38
454 #: templates/boards/thread.html:38
455 msgid "image"
455 msgid "image"
456 msgid_plural "images"
456 msgid_plural "images"
457 msgstr[0] "изображение"
457 msgstr[0] "изображение"
458 msgstr[1] "изображения"
458 msgstr[1] "изображения"
459 msgstr[2] "изображений"
459 msgstr[2] "изображений"
460
460
461 #: templates/boards/thread.html:40
461 #: templates/boards/thread.html:40
462 msgid "Last update: "
462 msgid "Last update: "
463 msgstr "Последнее обновление: "
463 msgstr "Последнее обновление: "
464
464
465 #: templates/boards/thread_gallery.html:36
465 #: templates/boards/thread_gallery.html:36
466 msgid "No images."
466 msgid "No images."
467 msgstr "Нет изображений."
467 msgstr "Нет изображений."
468
468
469 #: templates/boards/thread_normal.html:30
469 #: templates/boards/thread_normal.html:30
470 msgid "posts to bumplimit"
470 msgid "posts to bumplimit"
471 msgstr "сообщений до бамплимита"
471 msgstr "сообщений до бамплимита"
472
472
473 #: templates/boards/thread_normal.html:44
473 #: templates/boards/thread_normal.html:44
474 msgid "Reply to thread"
474 msgid "Reply to thread"
475 msgstr "Ответить в тему"
475 msgstr "Ответить в тему"
476
476
477 #: templates/boards/thread_normal.html:44
477 #: templates/boards/thread_normal.html:44
478 msgid "to message "
478 msgid "to message "
479 msgstr "на сообщение"
479 msgstr "на сообщение"
480
480
481 #: templates/boards/thread_normal.html:59
481 #: templates/boards/thread_normal.html:59
482 msgid "Close form"
482 msgid "Close form"
483 msgstr "Закрыть форму"
483 msgstr "Закрыть форму"
484
484
485 #: templates/search/search.html:17
485 #: templates/search/search.html:17
486 msgid "Ok"
486 msgid "Ok"
487 msgstr "Ок"
487 msgstr "Ок"
488
488
489 #: utils.py:120
489 #: utils.py:120
490 #, python-format
490 #, python-format
491 msgid "File must be less than %s but is %s."
491 msgid "File must be less than %s but is %s."
492 msgstr "Файл должен быть менее %s, но его размер %s."
492 msgstr "Файл должен быть менее %s, но его размер %s."
493
493
494 msgid "Please wait %(delay)d second before sending message"
494 msgid "Please wait %(delay)d second before sending message"
495 msgid_plural "Please wait %(delay)d seconds before sending message"
495 msgid_plural "Please wait %(delay)d seconds before sending message"
496 msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения"
496 msgstr[0] "Пожалуйста подождите %(delay)d секунду перед отправкой сообщения"
497 msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения"
497 msgstr[1] "Пожалуйста подождите %(delay)d секунды перед отправкой сообщения"
498 msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения"
498 msgstr[2] "Пожалуйста подождите %(delay)d секунд перед отправкой сообщения"
499
499
500 msgid "New threads"
500 msgid "New threads"
501 msgstr "Новые темы"
501 msgstr "Новые темы"
502
502
503 #, python-format
503 #, python-format
504 msgid "Max file size is %(size)s."
504 msgid "Max file size is %(size)s."
505 msgstr "Максимальный размер файла %(size)s."
505 msgstr "Максимальный размер файла %(size)s."
506
506
507 msgid "Size of media:"
507 msgid "Size of media:"
508 msgstr "Размер медиа:"
508 msgstr "Размер медиа:"
509
509
510 msgid "Statistics"
510 msgid "Statistics"
511 msgstr "Статистика"
511 msgstr "Статистика"
512
512
513 msgid "Invalid PoW."
513 msgid "Invalid PoW."
514 msgstr "Неверный PoW."
514 msgstr "Неверный PoW."
515
515
516 msgid "Stale PoW."
516 msgid "Stale PoW."
517 msgstr "PoW устарел."
517 msgstr "PoW устарел."
518
518
519 msgid "Show"
519 msgid "Show"
520 msgstr "Показывать"
520 msgstr "Показывать"
521
521
522 msgid "Hide"
522 msgid "Hide"
523 msgstr "Скрывать"
523 msgstr "Скрывать"
524
524
525 msgid "Add to favorites"
525 msgid "Add to favorites"
526 msgstr "Добавить в избранное"
526 msgstr "Добавить в избранное"
527
527
528 msgid "Remove from favorites"
528 msgid "Remove from favorites"
529 msgstr "Убрать из избранного"
529 msgstr "Убрать из избранного"
530
530
531 msgid "Monochrome"
531 msgid "Monochrome"
532 msgstr "Монохромный"
532 msgstr "Монохромный"
533
533
534 msgid "Subsections: "
534 msgid "Subsections: "
535 msgstr "Подразделы: "
535 msgstr "Подразделы: "
536
537 msgid "Change file source"
538 msgstr "Изменить источник файла"
@@ -1,155 +1,156 b''
1 .ui-button {
1 .ui-button {
2 display: none;
2 display: none;
3 }
3 }
4
4
5 .ui-dialog-content {
5 .ui-dialog-content {
6 padding: 0;
6 padding: 0;
7 min-height: 0;
7 min-height: 0;
8 }
8 }
9
9
10 .mark_btn {
10 .mark_btn {
11 cursor: pointer;
11 cursor: pointer;
12 }
12 }
13
13
14 .img-full {
14 .img-full {
15 position: fixed;
15 position: fixed;
16 background-color: #CCC;
16 background-color: #CCC;
17 border: 1px solid #000;
17 border: 1px solid #000;
18 cursor: pointer;
18 cursor: pointer;
19 }
19 }
20
20
21 .strikethrough {
21 .strikethrough {
22 text-decoration: line-through;
22 text-decoration: line-through;
23 }
23 }
24
24
25 .post_preview {
25 .post_preview {
26 z-index: 300;
26 z-index: 300;
27 position:absolute;
27 position:absolute;
28 }
28 }
29
29
30 .gallery_image {
30 .gallery_image {
31 display: inline-block;
31 display: inline-block;
32 }
32 }
33
33
34 @media print {
34 @media print {
35 .post-form-w {
35 .post-form-w {
36 display: none;
36 display: none;
37 }
37 }
38 }
38 }
39
39
40 input[name="image"] {
40 input[name="image"] {
41 display: block;
41 display: block;
42 width: 100px;
42 width: 100px;
43 height: 100px;
43 height: 100px;
44 cursor: pointer;
44 cursor: pointer;
45 position: absolute;
45 position: absolute;
46 opacity: 0;
46 opacity: 0;
47 z-index: 1;
47 z-index: 1;
48 }
48 }
49
49
50 .file_wrap {
50 .file_wrap {
51 width: 100px;
51 width: 100px;
52 height: 100px;
52 height: 100px;
53 border: solid 1px white;
53 border: solid 1px white;
54 display: inline-block;
54 display: inline-block;
55 }
55 }
56
56
57 form > .file_wrap {
57 form > .file_wrap {
58 float: left;
58 float: left;
59 }
59 }
60
60
61 .file-thumb {
61 .file-thumb {
62 width: 100px;
62 width: 100px;
63 height: 100px;
63 height: 100px;
64 background-size: cover;
64 background-size: cover;
65 background-position: center;
65 background-position: center;
66 }
66 }
67
67
68 .compact-form-text {
68 .compact-form-text {
69 margin-left:110px;
69 margin-left:110px;
70 }
70 }
71
71
72 textarea, input {
72 textarea, input {
73 -moz-box-sizing: border-box;
73 -moz-box-sizing: border-box;
74 -webkit-box-sizing: border-box;
74 -webkit-box-sizing: border-box;
75 box-sizing: border-box;
75 box-sizing: border-box;
76 }
76 }
77
77
78 .compact-form-text > textarea {
78 .compact-form-text > textarea {
79 height: 100px;
79 height: 100px;
80 width: 100%;
80 width: 100%;
81 }
81 }
82
82
83 .post-button-form {
83 .post-button-form {
84 display: inline;
84 display: inline;
85 }
85 }
86
86
87 .post-button-form > button, #autoupdate {
87 .post-button-form > button, #autoupdate {
88 border: none;
88 border: none;
89 margin: inherit;
89 margin: inherit;
90 padding: inherit;
90 padding: inherit;
91 background: none;
91 background: none;
92 font-size: inherit;
92 font-size: inherit;
93 cursor: pointer;
93 cursor: pointer;
94 }
94 }
95
95
96 #form-close-button {
96 #form-close-button {
97 display: none;
97 display: none;
98 }
98 }
99
99
100 .post-image-full {
100 .post-image-full {
101 width: 100%;
101 width: 100%;
102 height: auto;
102 height: auto;
103 }
103 }
104
104
105 #preview-text {
105 #preview-text {
106 display: none;
106 display: none;
107 }
107 }
108
108
109 .random-images-table {
109 .random-images-table {
110 text-align: center;
110 text-align: center;
111 width: 100%;
111 width: 100%;
112 }
112 }
113
113
114 .random-images-table > div {
114 .random-images-table > div {
115 margin-left: auto;
115 margin-left: auto;
116 margin-right: auto;
116 margin-right: auto;
117 }
117 }
118
118
119 .tag-image, .tag-text-data {
119 .tag-image, .tag-text-data {
120 display: inline-block;
120 display: inline-block;
121 }
121 }
122
122
123 .tag-text-data > h2 {
123 .tag-text-data > h2 {
124 margin: 0;
124 margin: 0;
125 }
125 }
126
126
127 .tag-image {
127 .tag-image {
128 margin-right: 5px;
128 margin-right: 5px;
129 }
129 }
130
130
131 .reply-to-message {
131 .reply-to-message {
132 display: none;
132 display: none;
133 }
133 }
134
134
135 .tripcode {
135 .tripcode {
136 padding: 2px;
136 padding: 2px;
137 }
137 }
138
138
139 #fav-panel {
139 #fav-panel {
140 display: none;
140 display: none;
141 margin: 1ex;
141 margin: 1ex;
142 }
142 }
143
143
144 .hidden_post {
144 .hidden_post {
145 opacity: 0.2;
145 opacity: 0.2;
146 }
146 }
147
147
148 .hidden_post:hover {
148 .hidden_post:hover {
149 opacity: 1;
149 opacity: 1;
150 }
150 }
151
151
152 .monochrome > .image > .thumb > img {
152 .monochrome > .image > .thumb > img {
153 filter: grayscale(100%);
153 filter: grayscale(100%);
154 -webkit-filter: grayscale(100%);
154 -webkit-filter: grayscale(100%);
155 }
155 }
156
@@ -1,95 +1,132 b''
1 var ITEM_FILE_SOURCE = 'fileSource';
2
1 $('input[name=image]').wrap($('<div class="file_wrap"></div>'));
3 $('input[name=image]').wrap($('<div class="file_wrap"></div>'));
2
4
3 $('body').on('change', 'input[name=image]', function(event) {
5 $('body').on('change', 'input[name=image]', function(event) {
4 var file = event.target.files[0];
6 var file = event.target.files[0];
5
7
6 if(file.type.match('image.*')) {
8 if(file.type.match('image.*')) {
7 var fileReader = new FileReader();
9 var fileReader = new FileReader();
8
10
9 fileReader.addEventListener("load", function(event) {
11 fileReader.addEventListener("load", function(event) {
10 var wrapper = $('.file_wrap');
12 var wrapper = $('.file_wrap');
11
13
12 wrapper.find('.file-thumb').remove();
14 wrapper.find('.file-thumb').remove();
13 wrapper.append(
15 wrapper.append(
14 $('<div class="file-thumb" style="background-image: url('+event.target.result+')"></div>')
16 $('<div class="file-thumb" style="background-image: url('+event.target.result+')"></div>')
15 );
17 );
16 });
18 });
17
19
18 fileReader.readAsDataURL(file);
20 fileReader.readAsDataURL(file);
19 }
21 }
20 });
22 });
21
23
22 var form = $('#form');
24 var form = $('#form');
23 $('textarea').keypress(function(event) {
25 $('textarea').keypress(function(event) {
24 if (event.which == 13 && event.ctrlKey) {
26 if (event.which == 13 && event.ctrlKey) {
25 form.find('input[type=submit]').click();
27 form.find('input[type=submit]').click();
26 }
28 }
27 });
29 });
28
30
29 $('#preview-button').click(function() {
31 $('#preview-button').click(function() {
30 var data = {
32 var data = {
31 raw_text: $('textarea').val()
33 raw_text: $('textarea').val()
32 }
34 }
33
35
34 var diffUrl = '/api/preview/';
36 var diffUrl = '/api/preview/';
35
37
36 $.post(diffUrl,
38 $.post(diffUrl,
37 data,
39 data,
38 function(data) {
40 function(data) {
39 var previewTextBlock = $('#preview-text');
41 var previewTextBlock = $('#preview-text');
40 previewTextBlock.html(data);
42 previewTextBlock.html(data);
41 previewTextBlock.show();
43 previewTextBlock.show();
42 })
44 })
43 });
45 });
44
46
45 /**
47 /**
46 * Show text in the errors row of the form.
48 * Show text in the errors row of the form.
47 * @param form
49 * @param form
48 * @param text
50 * @param text
49 */
51 */
50 function showAsErrors(form, text) {
52 function showAsErrors(form, text) {
51 form.children('.form-errors').remove();
53 form.children('.form-errors').remove();
52
54
53 if (text.length > 0) {
55 if (text.length > 0) {
54 var errorList = $('<div class="form-errors">' + text + '<div>');
56 var errorList = $('<div class="form-errors">' + text + '<div>');
55 errorList.appendTo(form);
57 errorList.appendTo(form);
56 }
58 }
57 }
59 }
58
60
59 function addHiddenInput(form, name, value) {
61 function addHiddenInput(form, name, value) {
60 form.find('input[name=' + name + ']').val(value);
62 form.find('input[name=' + name + ']').val(value);
61 }
63 }
62
64
65 function selectFileChoice() {
66 var file_input = $('#id_file');
67 var url_input = $('#id_file_url');
68
69 var file_input_row = file_input.parent().parent();
70 var url_input_row = url_input.parent().parent();
71
72 file_input_row.toggle();
73 url_input_row.toggle();
74 url_input.val('');
75 file_input.val('');
76
77 var source;
78 if (file_input_row.is(':visible')) {
79 source = 'file';
80 } else {
81 source = 'url';
82 }
83 localStorage.setItem(ITEM_FILE_SOURCE, source);
84 }
85
63 $(document).ready(function() {
86 $(document).ready(function() {
64 var powDifficulty = parseInt($('body').attr('data-pow-difficulty'));
87 var powDifficulty = parseInt($('body').attr('data-pow-difficulty'));
65 if (powDifficulty > 0) {
88 if (powDifficulty > 0) {
66 var worker = new Worker($('#powScript').attr('src'));
89 var worker = new Worker($('#powScript').attr('src'));
67 worker.onmessage = function(e) {
90 worker.onmessage = function(e) {
68 var form = $('#form');
91 var form = $('#form');
69 addHiddenInput(form, 'timestamp', e.data.timestamp);
92 addHiddenInput(form, 'timestamp', e.data.timestamp);
70 addHiddenInput(form, 'iteration', e.data.iteration);
93 addHiddenInput(form, 'iteration', e.data.iteration);
71 addHiddenInput(form, 'guess', e.data.guess);
94 addHiddenInput(form, 'guess', e.data.guess);
72
95
73 form.submit();
96 form.submit();
74 $('.post-form-w').unblock();
97 $('.post-form-w').unblock();
75 };
98 };
76
99
77 var form = $('#form');
100 var form = $('#form');
78 var submitButton = form.find('input[type=submit]');
101 var submitButton = form.find('input[type=submit]');
79 submitButton.click(function() {
102 submitButton.click(function() {
80 showAsErrors(form, gettext('Computing PoW...'));
103 showAsErrors(form, gettext('Computing PoW...'));
81 $('.post-form-w').block({ message: gettext('Computing PoW...') })
104 $('.post-form-w').block({ message: gettext('Computing PoW...') })
82
105
83 var msg = $('textarea').val().trim();
106 var msg = $('textarea').val().trim();
84
107
85 var data = {
108 var data = {
86 msg: msg,
109 msg: msg,
87 difficulty: parseInt($('body').attr('data-pow-difficulty')),
110 difficulty: parseInt($('body').attr('data-pow-difficulty')),
88 hasher: $('#sha256Script').attr('src')
111 hasher: $('#sha256Script').attr('src')
89 };
112 };
90 worker.postMessage(data);
113 worker.postMessage(data);
91
114
92 return false;
115 return false;
93 });
116 });
94 }
117 }
118
119 var source = localStorage.getItem(ITEM_FILE_SOURCE);
120 if (source == null) {
121 source = 'file';
122 }
123 if (source == 'file') {
124 $('#id_file_url').parent().parent().hide();
125 } else {
126 $('#id_file').parent().parent().hide();
127 }
128
129 $('#file-source-button').click(function() {
130 selectFileChoice();
131 });
95 });
132 });
@@ -1,210 +1,211 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.get_text|safe }}</div>
34 <div>{{ banner.get_text|safe }}</div>
35 <div>{% trans 'Details' %}: <a href="{{ banner.post.get_absolute_url }}">>>{{ banner.post.id }}</a></div>
35 <div>{% trans 'Details' %}: <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 }}"
47 height="{{ image.pre_height }}"
48 alt="{{ random_image_post.id }}"/></a>
48 alt="{{ random_image_post.id }}"/></a>
49 {% endwith %}
49 {% endwith %}
50 </div>
50 </div>
51 {% endif %}
51 {% endif %}
52 <div class="tag-text-data">
52 <div class="tag-text-data">
53 <h2>
53 <h2>
54 /{{ tag.get_view|safe }}/
54 /{{ tag.get_view|safe }}/
55 {% if perms.change_tag %}
55 {% if perms.change_tag %}
56 <span class="moderator_info">| <a href="{% url 'admin:boards_tag_change' tag.id %}">{% trans 'Edit tag' %}</a></span>
56 <span class="moderator_info">| <a href="{% url 'admin:boards_tag_change' tag.id %}">{% trans 'Edit tag' %}</a></span>
57 {% endif %}
57 {% endif %}
58 </h2>
58 </h2>
59 <p>
59 <p>
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_favorite %}
61 {% if is_favorite %}
62 <button name="method" value="unsubscribe" class="fav">★ {% trans "Remove from favorites" %}</button>
62 <button name="method" value="unsubscribe" class="fav">★ {% trans "Remove from favorites" %}</button>
63 {% else %}
63 {% else %}
64 <button name="method" value="subscribe" class="not_fav">★ {% trans "Add to favorites" %}</button>
64 <button name="method" value="subscribe" class="not_fav">★ {% trans "Add to favorites" %}</button>
65 {% endif %}
65 {% endif %}
66 </form>
66 </form>
67 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
67 <form action="{% url 'tag' tag.name %}" method="post" class="post-button-form">
68 {% if is_hidden %}
68 {% if is_hidden %}
69 <button name="method" value="unhide" class="fav">{% trans "Show" %}</button>
69 <button name="method" value="unhide" class="fav">{% trans "Show" %}</button>
70 {% else %}
70 {% else %}
71 <button name="method" value="hide" class="not_fav">{% trans "Hide" %}</button>
71 <button name="method" value="hide" class="not_fav">{% trans "Hide" %}</button>
72 {% endif %}
72 {% endif %}
73 </form>
73 </form>
74 <a href="{% url 'tag_gallery' tag.name %}">{% trans 'Gallery' %}</a>
74 <a href="{% url 'tag_gallery' tag.name %}">{% trans 'Gallery' %}</a>
75 </p>
75 </p>
76 {% if tag.get_description %}
76 {% if tag.get_description %}
77 <p>{{ tag.get_description|safe }}</p>
77 <p>{{ tag.get_description|safe }}</p>
78 {% endif %}
78 {% endif %}
79 <p>
79 <p>
80 {% with active_count=tag.get_active_thread_count bumplimit_count=tag.get_bumplimit_thread_count archived_count=tag.get_archived_thread_count %}
80 {% with active_count=tag.get_active_thread_count bumplimit_count=tag.get_bumplimit_thread_count archived_count=tag.get_archived_thread_count %}
81 {% if active_count %}
81 {% if active_count %}
82 {% blocktrans count count=active_count %}{{ count }} active thread{% plural %}active threads{% endblocktrans %},
82 {% blocktrans count count=active_count %}{{ count }} active thread{% plural %}active threads{% endblocktrans %},
83 {% endif %}
83 {% endif %}
84 {% if bumplimit_count %}
84 {% if bumplimit_count %}
85 {% blocktrans count count=bumplimit_count %}{{ count }} thread in bumplimit{% plural %} threads in bumplimit{% endblocktrans %},
85 {% blocktrans count count=bumplimit_count %}{{ count }} thread in bumplimit{% plural %} threads in bumplimit{% endblocktrans %},
86 {% endif %}
86 {% endif %}
87 {% if archived_count %}
87 {% if archived_count %}
88 {% blocktrans count count=archived_count %}{{ count }} archived thread{% plural %}archived threads{% endblocktrans %},
88 {% blocktrans count count=archived_count %}{{ count }} archived thread{% plural %}archived threads{% endblocktrans %},
89 {% endif %}
89 {% endif %}
90 {% endwith %}
90 {% endwith %}
91 {% blocktrans count count=tag.get_post_count %}{{ count }} message{% plural %}messages{% endblocktrans %}.
91 {% blocktrans count count=tag.get_post_count %}{{ count }} message{% plural %}messages{% endblocktrans %}.
92 </p>
92 </p>
93 {% if tag.get_all_parents %}
93 {% if tag.get_all_parents %}
94 <p>
94 <p>
95 {% for parent in tag.get_all_parents %}
95 {% for parent in tag.get_all_parents %}
96 {{ parent.get_view|safe }} &gt;
96 {{ parent.get_view|safe }} &gt;
97 {% endfor %}
97 {% endfor %}
98 {{ tag.get_view|safe }}
98 {{ tag.get_view|safe }}
99 </p>
99 </p>
100 {% endif %}
100 {% endif %}
101 {% if tag.get_children.all %}
101 {% if tag.get_children.all %}
102 <p>
102 <p>
103 {% trans "Subsections: " %}
103 {% trans "Subsections: " %}
104 {% for child in tag.get_children.all %}
104 {% for child in tag.get_children.all %}
105 {{ child.get_view|safe }}{% if not forloop.last%}, {% endif %}
105 {{ child.get_view|safe }}{% if not forloop.last%}, {% endif %}
106 {% endfor %}
106 {% endfor %}
107 </p>
107 </p>
108 {% endif %}
108 {% endif %}
109 </div>
109 </div>
110 </div>
110 </div>
111 {% endif %}
111 {% endif %}
112
112
113 {% if threads %}
113 {% if threads %}
114 {% if prev_page_link %}
114 {% if prev_page_link %}
115 <div class="page_link">
115 <div class="page_link">
116 <a href="{{ prev_page_link }}">{% trans "Previous page" %}</a>
116 <a href="{{ prev_page_link }}">{% trans "Previous page" %}</a>
117 </div>
117 </div>
118 {% endif %}
118 {% endif %}
119
119
120 {% for thread in threads %}
120 {% for thread in threads %}
121 <div class="thread">
121 <div class="thread">
122 {% post_view thread.get_opening_post thread=thread truncated=True need_open_link=True %}
122 {% post_view thread.get_opening_post thread=thread truncated=True need_open_link=True %}
123 {% if not thread.archived %}
123 {% if not thread.archived %}
124 {% with last_replies=thread.get_last_replies %}
124 {% with last_replies=thread.get_last_replies %}
125 {% if last_replies %}
125 {% if last_replies %}
126 {% with skipped_replies_count=thread.get_skipped_replies_count %}
126 {% with skipped_replies_count=thread.get_skipped_replies_count %}
127 {% if skipped_replies_count %}
127 {% if skipped_replies_count %}
128 <div class="skipped_replies">
128 <div class="skipped_replies">
129 <a href="{% url 'thread' thread.get_opening_post_id %}">
129 <a href="{% url 'thread' thread.get_opening_post_id %}">
130 {% 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 %}
130 {% 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 %}
131 </a>
131 </a>
132 </div>
132 </div>
133 {% endif %}
133 {% endif %}
134 {% endwith %}
134 {% endwith %}
135 <div class="last-replies">
135 <div class="last-replies">
136 {% for post in last_replies %}
136 {% for post in last_replies %}
137 {% post_view post truncated=True %}
137 {% post_view post truncated=True %}
138 {% endfor %}
138 {% endfor %}
139 </div>
139 </div>
140 {% endif %}
140 {% endif %}
141 {% endwith %}
141 {% endwith %}
142 {% endif %}
142 {% endif %}
143 </div>
143 </div>
144 {% endfor %}
144 {% endfor %}
145
145
146 {% if next_page_link %}
146 {% if next_page_link %}
147 <div class="page_link">
147 <div class="page_link">
148 <a href="{{ next_page_link }}">{% trans "Next page" %}</a>
148 <a href="{{ next_page_link }}">{% trans "Next page" %}</a>
149 </div>
149 </div>
150 {% endif %}
150 {% endif %}
151 {% else %}
151 {% else %}
152 <div class="post">
152 <div class="post">
153 {% trans 'No threads exist. Create the first one!' %}</div>
153 {% trans 'No threads exist. Create the first one!' %}</div>
154 {% endif %}
154 {% endif %}
155
155
156 <div class="post-form-w">
156 <div class="post-form-w">
157 <script src="{% static 'js/panel.js' %}"></script>
157 <script src="{% static 'js/panel.js' %}"></script>
158 <div class="post-form">
158 <div class="post-form">
159 <div class="form-title">{% trans "Create new thread" %}</div>
159 <div class="form-title">{% trans "Create new thread" %}</div>
160 <div class="swappable-form-full">
160 <div class="swappable-form-full">
161 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
161 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
162 {{ form.as_div }}
162 {{ form.as_div }}
163 <div class="form-submit">
163 <div class="form-submit">
164 <input type="submit" value="{% trans "Post" %}"/>
164 <input type="submit" value="{% trans "Post" %}"/>
165 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
165 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
166 <button id="file-source-button" onclick="return false;">{% trans 'Change file source' %}</button>
166 </div>
167 </div>
167 </form>
168 </form>
168 </div>
169 </div>
169 <div>
170 <div>
170 {% trans 'Tags must be delimited by spaces. Text or image is required.' %}
171 {% trans 'Tags must be delimited by spaces. Text or image is required.' %}
171 {% with size=max_file_size|filesizeformat %}
172 {% with size=max_file_size|filesizeformat %}
172 {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %}
173 {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %}
173 {% endwith %}
174 {% endwith %}
174 </div>
175 </div>
175 <div id="preview-text"></div>
176 <div id="preview-text"></div>
176 <div><a href="{% url "staticpage" name="help" %}">{% trans 'Text syntax' %}</a></div>
177 <div><a href="{% url "staticpage" name="help" %}">{% trans 'Text syntax' %}</a></div>
177 <div><a href="{% url "tags" "required" %}">{% trans 'Tags' %}</a></div>
178 <div><a href="{% url "tags" "required" %}">{% trans 'Tags' %}</a></div>
178 </div>
179 </div>
179 </div>
180 </div>
180
181
181 <script src="{% static 'js/form.js' %}"></script>
182 <script src="{% static 'js/form.js' %}"></script>
182 <script id="sha256Script" src="{% static 'js/3party/sha256.js' %}"></script>
183 <script id="sha256Script" src="{% static 'js/3party/sha256.js' %}"></script>
183 <script id="powScript" src="{% static 'js/proof_of_work.js' %}"></script>
184 <script id="powScript" src="{% static 'js/proof_of_work.js' %}"></script>
184 <script src="{% static 'js/3party/jquery.blockUI.js' %}"></script>
185 <script src="{% static 'js/3party/jquery.blockUI.js' %}"></script>
185 <script src="{% static 'js/thread_create.js' %}"></script>
186 <script src="{% static 'js/thread_create.js' %}"></script>
186
187
187 {% endblock %}
188 {% endblock %}
188
189
189 {% block metapanel %}
190 {% block metapanel %}
190
191
191 <span class="metapanel">
192 <span class="metapanel">
192 <b><a href="{% url "authors" %}">{{ site_name }}</a> {{ version }}</b>
193 <b><a href="{% url "authors" %}">{{ site_name }}</a> {{ version }}</b>
193 {% trans "Pages:" %}
194 {% trans "Pages:" %}
194 [
195 [
195 {% with dividers=paginator.get_dividers %}
196 {% with dividers=paginator.get_dividers %}
196 {% for page in paginator.get_divided_range %}
197 {% for page in paginator.get_divided_range %}
197 {% if page in dividers %}
198 {% if page in dividers %}
198 …,
199 …,
199 {% endif %}
200 {% endif %}
200 <a
201 <a
201 {% ifequal page current_page.number %}
202 {% ifequal page current_page.number %}
202 class="current_page"
203 class="current_page"
203 {% endifequal %}
204 {% endifequal %}
204 href="{% page_url paginator page %}">{{ page }}</a>{% if not forloop.last %},{% endif %}
205 href="{% page_url paginator page %}">{{ page }}</a>{% if not forloop.last %},{% endif %}
205 {% endfor %}
206 {% endfor %}
206 {% endwith %}
207 {% endwith %}
207 ]
208 ]
208 </span>
209 </span>
209
210
210 {% endblock %}
211 {% endblock %}
@@ -1,79 +1,80 b''
1 {% extends "boards/thread.html" %}
1 {% extends "boards/thread.html" %}
2
2
3 {% load i18n %}
3 {% load i18n %}
4 {% load static from staticfiles %}
4 {% load static from staticfiles %}
5 {% load board %}
5 {% load board %}
6 {% load tz %}
6 {% load tz %}
7
7
8 {% block thread_content %}
8 {% block thread_content %}
9 {% get_current_language as LANGUAGE_CODE %}
9 {% get_current_language as LANGUAGE_CODE %}
10 {% get_current_timezone as TIME_ZONE %}
10 {% get_current_timezone as TIME_ZONE %}
11
11
12 <div class="tag_info">
12 <div class="tag_info">
13 <h2>
13 <h2>
14 <form action="{% url 'thread' opening_post.id %}" method="post" class="post-button-form">
14 <form action="{% url 'thread' opening_post.id %}" method="post" class="post-button-form">
15 {% csrf_token %}
15 {% csrf_token %}
16 {% if is_favorite %}
16 {% if is_favorite %}
17 <button name="method" value="unsubscribe" class="fav"></button>
17 <button name="method" value="unsubscribe" class="fav"></button>
18 {% else %}
18 {% else %}
19 <button name="method" value="subscribe" class="not_fav"></button>
19 <button name="method" value="subscribe" class="not_fav"></button>
20 {% endif %}
20 {% endif %}
21 </form>
21 </form>
22 {{ opening_post.get_title_or_text }}
22 {{ opening_post.get_title_or_text }}
23 </h2>
23 </h2>
24 </div>
24 </div>
25
25
26 {% if bumpable and thread.has_post_limit %}
26 {% if bumpable and thread.has_post_limit %}
27 <div class="bar-bg">
27 <div class="bar-bg">
28 <div class="bar-value" style="width:{{ bumplimit_progress }}%" id="bumplimit_progress">
28 <div class="bar-value" style="width:{{ bumplimit_progress }}%" id="bumplimit_progress">
29 </div>
29 </div>
30 <div class="bar-text">
30 <div class="bar-text">
31 <span id="left_to_limit">{{ posts_left }}</span> {% trans 'posts to bumplimit' %}
31 <span id="left_to_limit">{{ posts_left }}</span> {% trans 'posts to bumplimit' %}
32 </div>
32 </div>
33 </div>
33 </div>
34 {% endif %}
34 {% endif %}
35
35
36 <div class="thread">
36 <div class="thread">
37 {% for post in thread.get_replies %}
37 {% for post in thread.get_replies %}
38 {% post_view post reply_link=True %}
38 {% post_view post reply_link=True %}
39 {% endfor %}
39 {% endfor %}
40 </div>
40 </div>
41
41
42 {% if not thread.is_archived %}
42 {% if not thread.is_archived %}
43 <div class="post-form-w">
43 <div class="post-form-w">
44 <script src="{% static 'js/panel.js' %}"></script>
44 <script src="{% static 'js/panel.js' %}"></script>
45 <div class="form-title">{% trans "Reply to thread" %} #{{ opening_post.id }}<span class="reply-to-message"> {% trans "to message " %} #<span id="reply-to-message-id"></span></span></div>
45 <div class="form-title">{% trans "Reply to thread" %} #{{ opening_post.id }}<span class="reply-to-message"> {% trans "to message " %} #<span id="reply-to-message-id"></span></span></div>
46 <div class="post-form" id="compact-form">
46 <div class="post-form" id="compact-form">
47 <div class="swappable-form-full">
47 <div class="swappable-form-full">
48 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
48 <form enctype="multipart/form-data" method="post" id="form">{% csrf_token %}
49 <div class="compact-form-text"></div>
49 <div class="compact-form-text"></div>
50 {{ form.as_div }}
50 {{ form.as_div }}
51 <div class="form-submit">
51 <div class="form-submit">
52 <input type="submit" value="{% trans "Post" %}"/>
52 <input type="submit" value="{% trans "Post" %}"/>
53 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
53 <button id="preview-button" onclick="return false;">{% trans 'Preview' %}</button>
54 <button id="file-source-button" onclick="return false;">{% trans 'Change file source' %}</button>
54 </div>
55 </div>
55 </form>
56 </form>
56 </div>
57 </div>
57 <div id="preview-text"></div>
58 <div id="preview-text"></div>
58 <div>
59 <div>
59 {% with size=max_file_size|filesizeformat %}
60 {% with size=max_file_size|filesizeformat %}
60 {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %}
61 {% blocktrans %}Max file size is {{ size }}.{% endblocktrans %}
61 {% endwith %}
62 {% endwith %}
62 </div>
63 </div>
63 <div><a href="{% url "staticpage" name="help" %}">
64 <div><a href="{% url "staticpage" name="help" %}">
64 {% trans 'Text syntax' %}</a></div>
65 {% trans 'Text syntax' %}</a></div>
65 <div><a id="form-close-button" href="#" onClick="resetFormPosition(); return false;">{% trans 'Close form' %}</a></div>
66 <div><a id="form-close-button" href="#" onClick="resetFormPosition(); return false;">{% trans 'Close form' %}</a></div>
66 </div>
67 </div>
67 </div>
68 </div>
68
69
69 <script src="{% static 'js/form.js' %}"></script>
70 <script src="{% static 'js/form.js' %}"></script>
70 <script src="{% static 'js/jquery.form.min.js' %}"></script>
71 <script src="{% static 'js/jquery.form.min.js' %}"></script>
71 <script id="sha256Script" src="{% static 'js/3party/sha256.js' %}"></script>
72 <script id="sha256Script" src="{% static 'js/3party/sha256.js' %}"></script>
72 <script id="powScript" src="{% static 'js/proof_of_work.js' %}"></script>
73 <script id="powScript" src="{% static 'js/proof_of_work.js' %}"></script>
73 <script src="{% static 'js/3party/jquery.blockUI.js' %}"></script>
74 <script src="{% static 'js/3party/jquery.blockUI.js' %}"></script>
74 <script src="{% static 'js/thread.js' %}"></script>
75 <script src="{% static 'js/thread.js' %}"></script>
75 <script src="{% static 'js/thread_update.js' %}"></script>
76 <script src="{% static 'js/thread_update.js' %}"></script>
76 {% endif %}
77 {% endif %}
77
78
78 <script src="{% static 'js/3party/centrifuge.js' %}"></script>
79 <script src="{% static 'js/3party/centrifuge.js' %}"></script>
79 {% endblock %}
80 {% endblock %}
General Comments 0
You need to be logged in to leave comments. Login now