From fc90b895efbc6900d43a680ab5d5ed6231d7c1b4 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 20 Jun 2015 16:56:53 -0700 Subject: [PATCH] Add option to set captcha language. --- package.json | 2 +- src/General/Config.coffee | 2 ++ src/General/Main.coffee | 5 +++++ src/General/Settings.coffee | 10 +++++----- src/General/html/Settings/Advanced.html | 6 ++++++ src/Miscellaneous/Report.coffee | 1 + src/Posting/Captcha.language.coffee | 17 +++++++++++++++++ src/Posting/Captcha.v2.coffee | 13 +++++++++---- 8 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 src/Posting/Captcha.language.coffee diff --git a/package.json b/package.json index 9e8997215..b8833f0f8 100755 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "*://www.4chan.org/feedback", "https://www.google.com/recaptcha/api2/anchor?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc*", "https://www.google.com/recaptcha/api2/frame?*&k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc*", - "*://www.google.com/recaptcha/api/fallback?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc" + "*://www.google.com/recaptcha/api/fallback?k=6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc*" ], "suffix": { "stable": "", diff --git a/src/General/Config.coffee b/src/General/Config.coffee index ab0677396..83a62e196 100755 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -741,6 +741,8 @@ Config = #options:"sage";boards:jp;always """ + captchaLanguage: '' + time: '%m/%d/%y(%a)%H:%M:%S' backlink: '>>%id' diff --git a/src/General/Main.coffee b/src/General/Main.coffee index f9d849fe6..48d079995 100755 --- a/src/General/Main.coffee +++ b/src/General/Main.coffee @@ -10,6 +10,10 @@ Main = if location.hostname is 'www.4chan.org' $.onExists d.documentElement, 'body', false, -> $.addStyle Main.cssWWW + Conf = {'captchaLanguage': Config.captchaLanguage} + $.get Conf, (items) -> + $.extend Conf, items + Captcha.language.fixPage() return g.threads = new SimpleDict() @@ -310,6 +314,7 @@ Main = features: [ ['Polyfill', Polyfill] + ['Captcha Language', Captcha.language] ['Redirect', Redirect] ['Header', Header] ['Catalog Links', CatalogLinks] diff --git a/src/General/Settings.coffee b/src/General/Settings.coffee index 98e0571c6..09d8a652c 100755 --- a/src/General/Settings.coffee +++ b/src/General/Settings.coffee @@ -315,7 +315,7 @@ Settings = items = {} inputs = {} - for name in ['boardnav', 'time', 'backlink', 'fileInfo', 'favicon', 'usercss', 'customCooldown'] + for name in ['captchaLanguage', 'boardnav', 'time', 'backlink', 'fileInfo', 'favicon', 'usercss', 'customCooldown'] input = $ "[name='#{name}']", section items[name] = Conf[name] inputs[name] = input @@ -324,9 +324,9 @@ Settings = else if name is 'favicon' $.on input, 'change', $.cb.value $.on input, 'change', Settings[name] - else + else $.on input, 'input', $.cb.value - $.on input, 'input', Settings[name] + $.on input, 'input', Settings[name] if name of Settings # Quick Reply Personas ta = $ '.personafield', section @@ -339,8 +339,8 @@ Settings = for key, val of items input = inputs[key] input.value = val - continue if key in ['usercss', 'customCooldown'] - Settings[key].call input + if key of Settings and key isnt 'usercss' + Settings[key].call input return interval = $ 'input[name="Interval"]', section diff --git a/src/General/html/Settings/Advanced.html b/src/General/html/Settings/Advanced.html index 8d5d60063..478bfde5d 100755 --- a/src/General/html/Settings/Advanced.html +++ b/src/General/html/Settings/Advanced.html @@ -12,6 +12,12 @@ +
+ Captcha Language +
Choose from list of language codes. Leave blank to autoselect.
+
+
+
Custom Board Navigation
diff --git a/src/Miscellaneous/Report.coffee b/src/Miscellaneous/Report.coffee index 04154baed..d2b5cdcff 100755 --- a/src/Miscellaneous/Report.coffee +++ b/src/Miscellaneous/Report.coffee @@ -3,6 +3,7 @@ Report = init: -> return unless /\bmode=report\b/.test(location.search) and match = location.search.match /\bno=(\d+)/ + Captcha.language.fixPage() @postID = +match[1] $.ready @ready diff --git a/src/Posting/Captcha.language.coffee b/src/Posting/Captcha.language.coffee new file mode 100644 index 000000000..bd63efb72 --- /dev/null +++ b/src/Posting/Captcha.language.coffee @@ -0,0 +1,17 @@ +Captcha.language = + init: -> + return unless Conf['captchaLanguage'].trim() and d.cookie.indexOf('pass_enabled=1') < 0 and !Conf['Hide Original Post Form'] + $.onExists doc, '#captchaFormPart', true, (node) -> + $.onExists node, 'iframe', true, Captcha.language.fixIframe + + fixPage: -> + return unless Conf['captchaLanguage'].trim() and d.cookie.indexOf('pass_enabled=1') < 0 + $.onExists doc, 'iframe', true, Captcha.language.fixIframe + + fixIframe: (el) -> + return unless lang = Conf['captchaLanguage'].trim() + src = if /[?&]hl=/.test el.src + el.src.replace(/([?&]hl=)[^&]*/, '$1' + encodeURIComponent lang) + else + el.src + "&hl=#{encodeURIComponent lang}" + el.src = src unless el.src is src diff --git a/src/Posting/Captcha.v2.coffee b/src/Posting/Captcha.v2.coffee index ea5c489c9..242157665 100644 --- a/src/Posting/Captcha.v2.coffee +++ b/src/Posting/Captcha.v2.coffee @@ -1,6 +1,5 @@ Captcha.v2 = lifetime: 2 * $.MINUTE - noscriptURL: '//www.google.com/recaptcha/api/fallback?k=<%= meta.recaptchaKey %>' init: -> return if d.cookie.indexOf('pass_enabled=1') >= 0 @@ -34,6 +33,12 @@ Captcha.v2 = timeouts: {} postsCount: 0 + noscriptURL: -> + url = '//www.google.com/recaptcha/api/fallback?k=<%= meta.recaptchaKey %>' + if lang = Conf['captchaLanguage'].trim() + url += "&hl=#{encodeURIComponent lang}" + url + needed: -> captchaCount = @captchas.length captchaCount++ if QR.req @@ -83,7 +88,7 @@ Captcha.v2 = setupNoscript: -> iframe = $.el 'iframe', id: 'qr-captcha-iframe' - src: @noscriptURL + src: @noscriptURL() $.add @nodes.container, iframe @conn.target = iframe.contentWindow @@ -120,7 +125,7 @@ Captcha.v2 = return setupIFrame: (iframe) -> - @setupTime = Date.now() + Captcha.language.fixIframe iframe $.addClass QR.nodes.el, 'captcha-open' if QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight QR.nodes.el.style.top = null @@ -202,7 +207,7 @@ Captcha.v2 = reload: -> if @noscript - $('iframe', @nodes.container).src = @noscriptURL + $('iframe', @nodes.container).src = @noscriptURL() else $.globalEval ''' (function() {