summaryrefslogtreecommitdiff
path: root/js/quick-reply.js
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-09-16 08:11:54 +1000
committerMichael Foster <savetheinternet@tinyboard.org>2013-09-16 08:11:54 +1000
commite175082fd6361e37d076e757c7b85571580dccd2 (patch)
treed6965aeef869dd733ed01e95add8968b59d7b114 /js/quick-reply.js
parent7d3b249fee718c87afc5b4e1e40810a16c70bd3a (diff)
recaptcha support
Diffstat (limited to 'js/quick-reply.js')
-rw-r--r--js/quick-reply.js84
1 files changed, 74 insertions, 10 deletions
diff --git a/js/quick-reply.js b/js/quick-reply.js
index 28e24d3d..0e5954f6 100644
--- a/js/quick-reply.js
+++ b/js/quick-reply.js
@@ -31,7 +31,7 @@ var do_css = function() {
float: right;\
display: block;\
padding: 0 0 0 0;\
- width: 350px;\
+ width: 300px;\
}\
#quick-reply table {\
border-collapse: collapse;\
@@ -61,9 +61,7 @@ var do_css = function() {
}\
#quick-reply th .handle {\
float: left;\
- position: absolute;\
- left: 0;\
- right: 30px;\
+ width: 100%;\
display: inline-block;\
}\
#quick-reply th .close-btn {\
@@ -98,6 +96,20 @@ var do_css = function() {
#quick-reply td.submit {\
width: 1%;\
}\
+ #quick-reply td.recaptcha {\
+ text-align: center;\
+ padding: 0 0 1px 0;\
+ }\
+ #quick-reply td.recaptcha span {\
+ display: inline-block;\
+ width: 100%;\
+ background: white;\
+ border: 1px solid #ccc;\
+ cursor: pointer;\
+ }\
+ #quick-reply td.recaptcha-response {\
+ padding: 0 0 1px 0;\
+ }\
@media screen and (max-width: 800px) {\
#quick-reply {\
display: none !important;\
@@ -151,12 +163,58 @@ var show_quick_reply = function(){
$('<td class="submit"></td>').append($td.find('input[type="submit"]')).insertAfter($td);
}
+ // reCAPTCHA
+ if ($td.find('#recaptcha_widget_div').length) {
+ // Just show the image, and have it interact with the real form.
+ var $captchaimg = $td.find('#recaptcha_image img');
+
+ $captchaimg
+ .removeAttr('id')
+ .removeAttr('style')
+ .addClass('recaptcha_image')
+ .click(function() {
+ $('#recaptcha_reload').click();
+ });
+
+ // When we get a new captcha...
+ $('#recaptcha_response_field').focus(function() {
+ if ($captchaimg.attr('src') != $('#recaptcha_image img').attr('src')) {
+ $captchaimg.attr('src', $('#recaptcha_image img').attr('src'));
+ $postForm.find('input[name="recaptcha_challenge_field"]').val($('#recaptcha_challenge_field').val());
+ $postForm.find('input[name="recaptcha_response_field"]').val('').focus();
+ }
+ });
+
+ $postForm.submit(function() {
+ setTimeout(function() {
+ $('#recaptcha_reload').click();
+ }, 200);
+ });
+
+ // Make a new row for the response text
+ var $newRow = $('<tr><td class="recaptcha-response" colspan="2"></td></tr>');
+ $newRow.children().first().append(
+ $td.find('input').removeAttr('style')
+ );
+ $newRow.find('#recaptcha_response_field')
+ .removeAttr('id')
+ .addClass('recaptcha_response_field')
+ .attr('placeholder', $('#recaptcha_response_field').attr('placeholder'));
+
+ $('#recaptcha_response_field').addClass('recaptcha_response_field')
+
+ $td.replaceWith($('<td class="recaptcha" colspan="2"></td>').append($('<span></span>').append($captchaimg)));
+
+ $newRow.insertAfter(this);
+ }
+
+ // Upload section
if ($td.find('input[type="file"]').length) {
if ($td.find('input[name="file_url"]').length) {
$file_url = $td.find('input[name="file_url"]');
// Make a new row for it
- $newRow = $('<tr><td colspan="2"></td></tr>');
+ var $newRow = $('<tr><td colspan="2"></td></tr>');
$file_url.clone().attr('placeholder', _('Upload URL')).appendTo($newRow.find('td'));
$file_url.parent().remove();
@@ -195,12 +253,14 @@ var show_quick_reply = function(){
$postForm.find('textarea[name="body"]').removeAttr('id').removeAttr('cols').attr('placeholder', _('Comment'));
- $postForm.find('textarea:not([name="body"]),input[type="hidden"]').appendTo($dummyStuff);
+ $postForm.find('textarea:not([name="body"]),input[type="hidden"]').removeAttr('id').appendTo($dummyStuff);
$postForm.find('br').remove();
$postForm.find('table').prepend('<tr><th colspan="2">\
- <span class="handle">' + _('Quick Reply') + '</span>\
- <a class="close-btn" href="javascript:void(0)">X</a>\
+ <span class="handle">\
+ <a class="close-btn" href="javascript:void(0)">X</a>\
+ ' + _('Quick Reply') + '\
+ </span>\
</th></tr>');
$postForm.attr('id', 'quick-reply');
@@ -262,8 +322,12 @@ var show_quick_reply = function(){
$origPostForm.find('textarea[name="body"]').attr('id', 'body');
$postForm.remove();
});
-
- // $postForm.show();
+
+ // Fix bug when table gets too big for form. Shouldn't exist, but crappy CSS etc.
+ $postForm.show();
+ $postForm.width($postForm.find('table').width());
+ $postForm.hide();
+
$(window).trigger('quick-reply');
$(window).ready(function() {