diff --git a/boards/forms.py b/boards/forms.py --- a/boards/forms.py +++ b/boards/forms.py @@ -193,7 +193,8 @@ class PostForm(NeboardForm): else: posting_delay = settings.POSTING_DELAY - if LAST_POST_TIME in self.session: + if board_settings.LIMIT_POSTING_SPEED and LAST_POST_TIME in \ + self.session: now = time.time() last_post_time = self.session[LAST_POST_TIME] diff --git a/boards/locale/ru/LC_MESSAGES/djangojs.mo b/boards/locale/ru/LC_MESSAGES/djangojs.mo index 5a71c8cdbcca6cf836cb63bc08bd7f181f42260d..58d209b02d15ab1f664e6f18e0dbda7ae067c0d4 GIT binary patch literal 694 zc$`&{O>fgM7{{|QE;(=*R}K#cDyGTBX(yPnW-PSns7TtXO(%i4gx1S~TDv4J0;z`q zC&XbV#BCDapuAMPNQ|%Gd;vZSPtu|aTR%UK?f>6?oc!6`c&}mGK&~MbTu3+; z6F$(ojAuJAVo4H&ELX(hDeFtp7?2|tCz0SLwC(Bx`_O?Sr_*h;ntF$gMJ$PzgwcT9 zn}iARg$a7Q<&$d60*NM43nVk4M2#In?+{u7qimLLZ__fRC?p;BJW5u&hmPGLUW?Rh zxZg6p#`dFD)6v}^k;IP!o(uyiViW2;*M+9-IZ$ytyWt+#wOYsNcK1=r!wEit_$(Ni z;M&c@URH9&bq|J7QN-a&gQa>6&sn|CC{n#DxMUo!dpSmdWH02c@i2(^9`sLwIAPN2 z`E|0p(q&~GvzR!%FS3tl!tRqu>h0kq4u+&I;!$D(ALrA=D(}G}wQlko2DK~$3I)hg zdfhS%xC<1_e7=0P8Sx`&@J>B=qYXO>6-eWX6j3Nn!Zur)K4|b z{-pY-F0g+}->SL#rM{~\n" "Language-Team: LANGUAGE \n" @@ -19,25 +19,14 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: static/js/refpopup.js:57 +#: static/js/refpopup.js:58 msgid "Loading..." msgstr "Загрузка..." -#: static/js/refpopup.js:76 +#: static/js/refpopup.js:77 msgid "Post not found" msgstr "Сообщение не найдено" -#: static/js/thread.js:32 -msgid "Normal" -msgstr "Нормальный" - -#: static/js/thread.js:33 -msgid "Gallery" -msgstr "Галерея" - -#: static/js/thread_update.js:177 -msgid "[new posts]" -msgstr "[новые посты]" - -#~ msgid "Replies" -#~ msgstr "Ответы" +#: static/js/thread_update.js:279 +msgid "Sending message..." +msgstr "Отправка сообщения..." \ No newline at end of file diff --git a/boards/settings.py b/boards/settings.py --- a/boards/settings.py +++ b/boards/settings.py @@ -15,4 +15,6 @@ DEFAULT_THEME = 'md' LAST_REPLIES_COUNT = 3 # Enable archiving threads instead of deletion when the thread limit is reached -ARCHIVE_THREADS = True \ No newline at end of file +ARCHIVE_THREADS = True +# Limit posting speed +LIMIT_POSTING_SPEED = False \ No newline at end of file diff --git a/boards/static/js/thread_update.js b/boards/static/js/thread_update.js --- a/boards/static/js/thread_update.js +++ b/boards/static/js/thread_update.js @@ -27,7 +27,7 @@ var THREAD_UPDATE_DELAY = 10000; var loading = false; var lastUpdateTime = null; -var unreadPosts = 0 +var unreadPosts = 0; function blink(node) { var blinkCount = 2; @@ -226,7 +226,7 @@ function updateOnPost(response, statusTe var json = $.parseJSON(response); var status = json.status; - form.children('.form-errors').remove(); + showAsErrors(form, ''); if (status === 'ok') { resetForm(form); @@ -238,14 +238,27 @@ function updateOnPost(response, statusTe var error = fieldErrors.errors; - var errorList = $('
' + error - + '
'); - errorList.appendTo(form); + showAsErrors(form, error); } } } /** + * Show text in the errors row of the form. + * @param form + * @param text + */ +function showAsErrors(form, text) { + form.children('.form-errors').remove(); + + if (text.length > 0) { + var errorList = $('
' + text + + '
'); + errorList.appendTo(form); + } +} + +/** * Run js methods that are usually run on the document, on the new post */ function processNewPost(post) { @@ -257,11 +270,14 @@ function processNewPost(post) { initAutoupdate(); // Post form data over AJAX - var threadId = $('div.thread').children('.post').first().attr('id');; + var threadId = $('div.thread').children('.post').first().attr('id'); var form = $('#form'); var options = { + beforeSubmit: function(arr, $form, options) { + showAsErrors($('form'), gettext('Sending message...')); + }, success: updateOnPost, url: '/api/add_post/' + threadId + '/' };