Files
wordpress-theme-aksrt/assets/js/runtime/slidercaptcha.min.js
T
kate522 9375b1c30c refactor(assets): vendor 资产迁入标准目录并全仓去除 zibll 标识
- assets/vendor 全量迁移: fontawesome5→assets/fontawesome5, css→assets/css,
  js→assets/js/runtime(避开 14 个同名自有文件), img 合并去重→assets/img,
  fonts→assets/fonts; 删除 assets/vendor
- libs 五个与 widgets/third-party 字节相同的库不重复入库, loader paths 改指向
- 运行时切换: _win.uri=assets 根, loader baseUrl=/js/runtime, enlighter 注入
  路径同步; PHP 7 个引用文件切换并改名 $zibll_*→$runtime_*
- 去品牌: Qinver 头注释/品牌 console.log/演示链接清除, 默认文案中性化
- 功能标识符改名: zib__→aksrt__, zib_ajax→aksrt_ajax, window.zib→
  window.aksrtLegacy, zibllblock/*→aksrtblock/*, .zib-widget→.aksrt-panel,
  .zib-slider→.aksrt-slider, zib_menu_options meta 键等
- 自有 CSS 改名: legacy-utilities/compat-vars/footer shell
- admin SPA 重建; 契约测试同步(路径/断言/文件更名)
- 例外保留: tests/visual 对照环境与 fixtures 前缀(外部 Zibll 产品引用)

验证: php -l 133 个改动文件通过; runtime 86 个 JS node --check 通过;
契约测试 68/70(2 个失败经 stash 对照确认为存量问题)
2026-08-22 16:16:30 +08:00

1 line
8.5 KiB
JavaScript

function SliderCaptchaModal(t,e){function i(t){var e=n(11,40),i=n(11,40);return e+""+a(e)+t+a(i)+i}function n(t,e){return Math.round(Math.random()*(t-e)+e)}function a(t){for(var e="",i=0;i<t;i++)e+=String.fromCharCode(Math.floor(26*Math.random())+"a".charCodeAt(0));return e}function s(){$("#"+r).removeClass("in"),setTimeout(function(){$("#"+r).hide()},300)}function o(){$("#"+r).show(),setTimeout(function(){$("#"+r).addClass("in"),$("#"+r+" .slidercaptcha").sliderCaptcha({onSuccess:function(t){var e=captcha.token,a=captcha.rand_str;if(delete captcha.rand_str,delete captcha.token,!e||!a)return notyf(aksrt__("captcha_data_failed"),"danger");var o=n(1,9),r=n(15,25),c=~~e.substring(0,2),l=~~e.substring(e.length-2,e.length);e.substring(c+2,e.length-l-2);captcha.ticket=i(t.distance),captcha.randstr=o+""+a.substring(o,r)+r,captcha.spliced=t.spliced,captcha.trail=JSON.stringify(t.trail),setTimeout(function(){return s(),captcha._this.click(),!1},200)},setSrc:function(){return _win.uri+"/img/captcha/"+Math.round(20*Math.random())+".jpg"},getX:function(t,e){var a=n(t,e);return captcha.ticket=0,captcha.randstr=0,captcha.spliced=0,$.ajax({url:_win.uri+"/action/captcha.php",data:{type:"slider",randstr:i(a)}}).done(function(t){captcha.token=t.token,captcha.rand_str=t.rand_str,captcha.check=t.check}),a}})},30)}var r="SliderCaptcha";if(captcha._this=e,!$("#"+r).length){var c='<div id="'+r+'" class="modal flex jc fade" tabindex="-1" role="dialog" aria-hidden="false" style="display: none;user-select: none;z-index: 100000000;background:rgba(0,0,0,.5);"><div class="modal-mini modal-dialog" style="width: 340px;"> <div class="modal-content"><div class="modal-body"><div class="modal-colorful-header colorful-bg c-yellow" style="height: 100px;"><button class="close" data-dismiss="modal"><svg class="ic-close" aria-hidden="true"><use xlink:href="#icon-close"></use></svg></button><div class="colorful-make"></div><div class="text-center"><div class="em2x"><i class="fa fas fa-shield-alt"></i></div><div class="mt6 em12">'+aksrt__("captcha_verify_title")+'</div></div></div><div style="padding: 10px 0;margin-top: 100px;"><div class="slidercaptcha"></div></div></div></div></div></div>';$("body").append(c),$("#"+r+' [data-dismiss="modal"]').on("click",s)}"show"===t&&o(),"hide"===t&&s()}(function(t){"use strict";function e(e){return this.each(function(){var n=t(this),a=n.data("lgb.SliderCaptcha"),s="object"==typeof e&&e;a&&!/reset/.test(e)&&t(a.refreshIcon).click(),a||n.data("lgb.SliderCaptcha",a=new i(this,s)),"string"==typeof e&&a[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$element.css({position:"relative",width:this.options.width+"px",margin:"0 auto"}),this.init()};i.DEFAULTS={width:280,height:170,PI:Math.PI,sliderL:42,sliderR:9,offset:8,loadingText:'<i class="loading mr6"></i>'+aksrt__("loading"),failedText:aksrt__("captcha_retry"),barText:aksrt__("captcha_slide_hint"),repeatIcon:"fa fas fa-sync-alt",maxLoadCount:3,onFail:function(){},onSuccess:function(){},setSrc:function(){return""},getX:null},t.fn.sliderCaptcha=e,t.fn.sliderCaptcha.Constructor=i;var n=i.prototype;n.init=function(){this.initDOM(),this.initImg(),this.bindEvents()},n.initDOM=function(){var e=function(t,e){var i=document.createElement(t);return i.className=e,i},i=function(t,e){var i=document.createElement("canvas");return i.width=t,i.height=e,i},n=i(this.options.width-2,this.options.height),a=n.cloneNode(!0),s=e("div","sliderContainer"),o=e("botton","refreshIcon "+this.options.repeatIcon),r=e("div","sliderMask"),c=e("div","captcha-slider"),l=e("i","fa fas fa-chevron-right sliderIcon"),d=e("span","sliderText");n.className="captcha-body-bg placeholder",a.className="captcha-body-bar",d.innerHTML=this.options.barText;var h=this.$element;h.html(t(n)),h.append(t(o)),h.append(t(a)),c.appendChild(l),s.appendChild(r),s.appendChild(c),s.appendChild(d),h.append(t(s));var p={canvas:n,block:a,sliderContainer:t(s),refreshIcon:o,slider:c,sliderMask:r,sliderIcon:l,text:t(d),canvasCtx:n.getContext("2d"),blockCtx:a.getContext("2d")};t.isFunction(Object.assign)?Object.assign(this,p):t.extend(this,p)},n.initImg=function(){var e=this,i=window.navigator.userAgent.indexOf("Trident")>-1,n=this.options.sliderL+2*this.options.sliderR+3,a=function(t,n){var a=e.options.sliderL,s=e.options.sliderR,o=e.options.PI,r=e.x,c=e.y;t.beginPath(),t.moveTo(r,c),t.arc(r+a/2,c-s+2,s,.72*o,2.26*o),t.lineTo(r+a,c),t.arc(r+a+s-2,c+a/2,s,1.21*o,2.78*o),t.lineTo(r+a,c+a),t.lineTo(r,c+a),t.arc(r+s-2,c+a/2,s+.4,2.76*o,1.24*o,!0),t.lineTo(r,c),t.lineWidth=2,t.fillStyle="rgba(100, 100, 100, 0.7)",t.strokeStyle="rgba(255, 255, 255, 0.5)",t.stroke(),t[n](),t.globalCompositeOperation=i?"xor":"destination-over"},s=function(t,e){return Math.round(Math.random()*(e-t)+t)},o=function(i,n){return t.isFunction(e.options.getX)?e.options.getX(i,n):s(i,n)},r=new Image;r.crossOrigin="Anonymous";var c=0;r.onload=function(){e.x=o(n+10,e.options.width-(n+10)),e.y=s(10+2*e.options.sliderR,e.options.height-(n+10)),a(e.canvasCtx,"fill"),a(e.blockCtx,"clip"),e.canvasCtx.drawImage(r,0,0,e.options.width-2,e.options.height),e.blockCtx.drawImage(r,0,0,e.options.width-2,e.options.height);var t=e.y-2*e.options.sliderR-1,i=e.blockCtx.getImageData(e.x-3,t,n,n);e.block.width=n,e.blockCtx.putImageData(i,0,t+1),e.text.text(e.text.attr("data-text"))},r.onerror=function(t){if(c++,c>=e.options.maxLoadCount)return e.text.text(aksrt__("captcha_load_failed")).addClass("text-danger c-red"),void e.canvas.removeClass("placeholder");r.localImages()},r.setSrc=function(){if(c=0,e.text.removeClass("text-danger"),t.isFunction(e.options.setSrc)){var i=e.options.setSrc();i?r.src=e.options.setSrc():r.localImages()}},r.localImages=function(){e.text.removeClass("text-danger");var t="https://picsum.photos/"+e.options.width+"/"+e.options.height+"/?image="+Math.round(20*Math.random());if(i){var n=new XMLHttpRequest;n.onloadend=function(t){var e=new FileReader;e.readAsDataURL(t.target.response),e.onloadend=function(t){r.src=t.target.result}},n.open("GET",t),n.responseType="blob",n.send()}else r.src=t},r.setSrc(),this.text.attr("data-text",this.options.barText),this.text.html(this.options.loadingText),this.img=r},n.clean=function(){this.canvasCtx.clearRect(0,0,this.options.width,this.options.height),this.blockCtx.clearRect(0,0,this.options.width,this.options.height),this.block.width=this.options.width},n.bindEvents=function(){var e=this;this.$element.on("selectstart",function(){return!1}),t(this.refreshIcon).on("click",function(){e.text.text(e.options.barText),e.reset(),t.isFunction(e.options.onRefresh)&&e.options.onRefresh.call(e.$element)});var i,n,a,s,o=[],r=!1;this.$element.on("touchstart pointerdown MSPointerDown",".captcha-slider",function(t){e.text.hasClass("text-danger")||(i=t.originalEvent.pageX||t.originalEvent.touches[0].pageX,n=t.originalEvent.pageY||t.originalEvent.touches[0].pageY,r=!0)}).on("touchmove pointermove MSPointerMove",function(t){if(r){var c=t.originalEvent.pageX||t.originalEvent.touches[0].pageX,l=t.originalEvent.pageY||t.originalEvent.touches[0].pageY;if(a=c-i,s=l-n,a>=0&&a+40<=e.options.width){t.preventDefault?t.preventDefault():t.returnValue=!1,e.slider.style.left=a-1+"px";var d=(e.options.width-40-20)/(e.options.width-40)*a;e.block.style.left=d+"px",e.sliderContainer.addClass("sliderContainer_active"),e.sliderMask.style.width=a+4+"px",o.push(Math.round(s))}}}).on("touchend touchcancel pointerup MSPointerUp",function(){if(r&&a>=0){e.sliderContainer.removeClass("sliderContainer_active"),e.trail=o;var i=e.verify();i.spliced&&i.verified?(e.sliderContainer.addClass("sliderContainer_success"),setTimeout(function(){e.slider.style.left=0,e.block.style.left=0,e.sliderMask.style.width=0,e.sliderContainer.removeClass("sliderContainer_fail sliderContainer_success")},500),t.isFunction(e.options.onSuccess)&&e.options.onSuccess.call(e.$element,i)):(e.sliderContainer.addClass("sliderContainer_fail"),t.isFunction(e.options.onFail)&&e.options.onFail.call(e.$element),setTimeout(function(){e.text.text(e.options.failedText),e.reset()},500))}a=0,s=0,r=!1})},n.verify=function(){var t=this.trail,e=parseInt(this.block.style.left),i=!1,n=function(t,e){return t+e},a=function(t){return t*t},s=t.reduce(n)/t.length,o=t.map(function(t){return t-s}),r=Math.sqrt(o.map(a).reduce(n)/t.length);return i=0!==r,{spliced:Math.abs(e-this.x)<this.options.offset,trail:t,verified:i,distance:e}},n.reset=function(){this.sliderContainer.removeClass("sliderContainer_fail sliderContainer_success"),this.slider.style.left=0,this.block.style.left=0,this.sliderMask.style.width=0,this.clean(),this.text.attr("data-text",this.text.text()),this.text.html(this.options.loadingText),this.img.setSrc()}})(jQuery);