* Add feed widget * add feed render * Add CommentPage widget * New theme (#1390) * 调整忽略目录 * add theme * fix theme scss build Co-authored-by: fen <f3nb0x@gmail.com> * s/is_writeable/is_writable/g * New upgrade method * merge new fixes from master * add pgsql ssl mode support (ref #1600) (#1623) * Feat/code refactor (#1626) * remove all magic methods, add type for class properties * refactor codes * fix all * refactor code * fix type * fix all * fix request is method * fix all * fix router * fix get page * fix 1.3.0 upgrade * [feat] support high resolution avatar * fix types in i18n component * Implement Ctrl+S or Command+S for save draft (#1628) * Implement Ctrl+S or Command+S for save draft * rename * add Typecho.savePost * fix upload file size * add new uploader * replace new uploader * fix textarea change * fix preview * refactor post edit * fix issue * fix page edit --------- Co-authored-by: joyqi <joyqi@segmentfault.com> Co-authored-by: joyqi <magike.net@gmail.com> * fix #1632 * Add svg to image types * Feat/tree pages (#1646) * add tree trait * finish category tree trait * support select fields * fix select fields * refactor admin trait * fix draft status * Add new contents type "revision" * minor refactor * add more tree view abstracts * add tree trait to pages * get ready for tree view pages * improve page edit * fix revision * fix slug * add router params delegate * fix params delegate * fix * fix * fix all * fix all * fix tree * fix page link * fix feed * fix page * fix permalink * fix permalink input * fix offset query * Support IDN (#1629) * Support IDN * use js * Optimize code * Optimize code * fix URL script * remove unnecessary use --------- Co-authored-by: joyqi <joyqi@segmentfault.com> * fix input element * fix #1651, close #1653 * Use json instead of serialize (#1624) * Use json instead of serialize * Fix Upgrade code * add tree trait * finish category tree trait * support select fields * fix select fields * refactor admin trait * fix draft status * Add new contents type "revision" * minor refactor * add more tree view abstracts * add tree trait to pages * get ready for tree view pages * improve page edit * fix revision * fix slug * add router params delegate * fix params delegate * fix * fix * fix all * fix all * fix tree * fix page link * fix feed * fix page * fix permalink * fix permalink input * fix offset query * Fix typo * remove proxy methods * remove unnecessary useage --------- Co-authored-by: joyqi <joyqi@segmentfault.com> Co-authored-by: joyqi <magike.net@gmail.com> * Fix Prevent XSS vulnerability in default theme (#1654) * Fix Prevent XSS vulnerability in default theme * Update var/Typecho/Db/Adapter/Pdo.php * fix the getter --------- Co-authored-by: joyqi <joyqi@segmentfault.com> * add throwCallback to widget response * fix: cut down fields when selecting recent posts * fix typo errors * fix typo errors * fix http client cookie * add throw finish * fix theme lang * fix default theme * fix query * add open graph and twitter card support add canonical link * fix canonical link meta * fix theme classic-22 * remove unnecessary scss file when packaging * init plugin signal * improve: remove feather-icon js file * fix: typo * improve: post detail layout * fix tags saving * improve: nav search * fix: theme screenshot * fix: theme page layout * remove php 7.2/7.3 env --------- Co-authored-by: fen <f3nb0x@gmail.com> Co-authored-by: Lu Fei <52o@qq52o.cn>
1 line
8.0 KiB
JavaScript
1 line
8.0 KiB
JavaScript
!function(I){var o={method:"GET",contentType:"json",queryParam:"q",searchDelay:300,minChars:1,propertyToSearch:"name",jsonContainer:null,hintText:"Type in a search term",noResultsText:"No results",searchingText:"Searching...",deleteText:"×",animateDropdown:!0,tokenLimit:null,tokenDelimiter:",",preventDuplicates:!1,tokenValue:"id",prePopulate:null,processPrePopulate:!1,idPrefix:"token-input-",resultsFormatter:function(e){return"<li>"+e[this.propertyToSearch]+"</li>"},tokenFormatter:function(e){return"<li><p>"+e[this.propertyToSearch]+"</p></li>"},onResult:null,onAdd:null,onDelete:null,onReady:null},F={tokenList:"token-input-list",token:"token-input-token",tokenDelete:"token-input-delete-token",selectedToken:"token-input-selected-token",highlightedToken:"token-input-highlighted-token",dropdown:"token-input-dropdown",dropdownItem:"token-input-dropdown-item",dropdownItem2:"token-input-dropdown-item2",selectedDropdownItem:"token-input-selected-dropdown-item",inputToken:"token-input-input-token"},P=0,O=1,A=2,z=8,_=13,q=27,B=37,E=38,V=39,W=40,G=108,H=188,t={init:function(e,t){var n=I.extend({},o,t||{});return this.each(function(){I(this).data("tokenInputObject",new I.TokenList(this,e,n))})},clear:function(){return this.data("tokenInputObject").clear(),this},add:function(e){return this.data("tokenInputObject").add(e),this},remove:function(e){return this.data("tokenInputObject").remove(e),this},get:function(){return this.data("tokenInputObject").getTokens()}};I.fn.tokenInput=function(e){return t[e]?t[e].apply(this,Array.prototype.slice.call(arguments,1)):t.init.apply(this,arguments)},I.TokenList=function(e,t,r){"string"===I.type(t)||"function"===I.type(t)?(r.url=t,k=S(),void 0===r.crossDomain&&(-1===k.indexOf("://")?r.crossDomain=!1:r.crossDomain=location.href.split(/\/+/g)[1]!==k.split(/\/+/g)[1])):"object"==typeof t&&(r.local_data=t),r.classes?r.classes=I.extend({},F,r.classes):r.theme?(r.classes={},I.each(F,function(e,t){r.classes[e]=t+"-"+r.theme})):r.classes=F;var n,i=[],s=0,c=new I.TokenList.Cache,u=I('<input type="text" autocomplete="off">').css({outline:"none"}).attr("id",r.idPrefix+e.id).focus(function(){null!==r.tokenLimit&&r.tokenLimit===s||r.hintText&&(f.html("<p>"+r.hintText+"</p>"),D())}).blur(function(){x(),I(this).val("")}).keydown(function(e){var t,n;switch(e.keyCode){case B:case V:case E:case W:if(I(this).val())return n=null,(n=e.keyCode===W||e.keyCode===V?I(o).next():I(o).prev()).length&&j(n),!1;n=h.prev(),t=h.next(),n.length&&n.get(0)===p||t.length&&t.get(0)===p?e.keyCode===B||e.keyCode===E?y(I(p),P):y(I(p),O):e.keyCode!==B&&e.keyCode!==E||!n.length?e.keyCode!==V&&e.keyCode!==W||!t.length||T(I(t.get(0))):T(I(n.get(0)));break;case z:if(n=h.prev(),!I(this).val().length)return p?(C(I(p)),d.change()):n.length&&T(I(n.get(0))),!1;1===I(this).val().length?x():setTimeout(function(){R()},5);break;case _:case G:case H:return o?(v(I(o).data("tokeninput")),d.change()):v(null),!1;case q:return x(),!0;default:String.fromCharCode(e.which)&&setTimeout(function(){R()},5)}}),d=I(e).hide().val("").focus(function(){u.focus()}).blur(function(){u.blur()}),p=null,a=0,o=null,l=I("<ul />").addClass(r.classes.tokenList).click(function(e){var t,e=I(e.target).closest("li");e&&e.get(0)&&I.data(e.get(0),"tokeninput")?(e=e,(t=p)&&y(I(p),A),t===e.get(0)?y(e,A):T(e)):(p&&y(I(p),A),u.focus())}).mouseover(function(e){e=I(e.target).closest("li");e&&p!==this&&e.addClass(r.classes.highlightedToken)}).mouseout(function(e){e=I(e.target).closest("li");e&&p!==this&&e.removeClass(r.classes.highlightedToken)}).insertBefore(d),h=I("<li />").addClass(r.classes.inputToken).appendTo(l).append(u),f=I("<div>").addClass(r.classes.dropdown).appendTo("body").hide(),k=(I("<tester/>").insertAfter(u).css({position:"absolute",top:-9999,left:-9999,width:"auto",fontSize:u.css("fontSize"),fontFamily:u.css("fontFamily"),fontWeight:u.css("fontWeight"),letterSpacing:u.css("letterSpacing"),whiteSpace:"nowrap"}),d.val(""),r.prePopulate||d.data("pre"));function g(){null!==r.tokenLimit&&s>=r.tokenLimit&&(u.hide(),x())}function m(e){var t=r.tokenFormatter(e),t=I(t).addClass(r.classes.token).insertBefore(h),n=(I("<span>"+r.deleteText+"</span>").addClass(r.classes.tokenDelete).appendTo(t).click(function(){return C(I(this).parent()),d.change(),!1}),{id:e.id});n[r.propertyToSearch]=e[r.propertyToSearch],I.data(t.get(0),"tokeninput",e),i=i.slice(0,a).concat([n]).concat(i.slice(a)),a++,w(i,d),s+=1,null!==r.tokenLimit&&s>=r.tokenLimit&&(u.hide(),x())}function v(n){var e=r.onAdd;if(!n&&0<u.val().length&&((n={id:u.val()})[r.propertyToSearch]=u.val()),n){if(0<s&&r.preventDuplicates){var o=null;if(l.children().each(function(){var e=I(this),t=I.data(e.get(0),"tokeninput");if(t&&t.id===n.id)return o=e,!1}),o)return T(o),h.insertAfter(o),void u.focus()}(null==r.tokenLimit||s<r.tokenLimit)&&(m(n),g()),u.val(""),x(),I.isFunction(e)&&e.call(d,n)}}function T(e){e.addClass(r.classes.selectedToken),p=e.get(0),u.val(""),x()}function y(e,t){e.removeClass(r.classes.selectedToken),p=null,t===P?(h.insertBefore(e),a--):t===O?(h.insertAfter(e),a++):(h.appendTo(l),a=s),u.focus()}function C(e){var t=I.data(e.get(0),"tokeninput"),n=r.onDelete,o=e.prevAll().length;a<o&&o--,e.remove(),p=null,u.focus(),i=i.slice(0,o).concat(i.slice(o+1)),o<a&&a--,w(i,d),--s,null!==r.tokenLimit&&u.show().val("").focus(),I.isFunction(n)&&n.call(d,t)}function w(e,t){e=I.map(e,function(e){return e[r.tokenValue]});t.val(e.join(r.tokenDelimiter))}function x(){f.hide().empty(),o=null}function D(){f.css({position:"absolute",top:I(l).offset().top+I(l).outerHeight(),left:I(l).offset().left,zindex:999}).show()}function L(e,t,n){return e.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+t+")(?![^<>]*>)(?![^&;]+;)","g"),t.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+n+")(?![^<>]*>)(?![^&;]+;)","gi"),"<b>$1</b>"))}function b(o,e){var i;e&&e.length?(f.empty(),i=I("<ul>").appendTo(f).mouseover(function(e){j(I(e.target).closest("li"))}).mousedown(function(e){return v(I(e.target).closest("li").data("tokeninput")),d.change(),!1}).hide(),I.each(e,function(e,t){var n=L(n=r.resultsFormatter(t),t[r.propertyToSearch],o);n=I(n).appendTo(i),e%2?n.addClass(r.classes.dropdownItem):n.addClass(r.classes.dropdownItem2),0===e&&j(n),I.data(n.get(0),"tokeninput",t)}),D(),r.animateDropdown?i.slideDown("fast"):i.show()):r.noResultsText&&(f.html("<p>"+r.noResultsText+"</p>"),D())}function j(e){e&&(o&&(I(o).removeClass(r.classes.selectedDropdownItem),o=null),e.addClass(r.classes.selectedDropdownItem),o=e.get(0))}function R(){var a=u.val(),l=a.toLowerCase();l&&l.length&&(p&&y(I(p),O),l.length>=r.minChars?(r.searchingText&&(f.html("<p>"+r.searchingText+"</p>"),D()),clearTimeout(n),n=setTimeout(function(){var n,e,t=l,o=a,i=o+S(),s=c.get(i);s?b(t,s):r.url?(s=S(),n={data:{}},-1<s.indexOf("?")?(e=s.split("?"),n.url=e[0],e=e[1].split("&"),I.each(e,function(e,t){t=t.split("=");n.data[t[0]]=t[1]})):n.url=s,n.data[r.queryParam]=t,n.type=r.method,n.dataType=r.contentType,r.crossDomain&&(n.dataType="jsonp"),n.success=function(e){I.isFunction(r.onResult)&&(e=r.onResult.call(d,e,t,o)),c.add(i,r.jsonContainer?e[r.jsonContainer]:e),u.val().toLowerCase()===t&&b(t,r.jsonContainer?e[r.jsonContainer]:e)},I.ajax(n)):r.local_data&&(e=I.grep(r.local_data,function(e){return-1<e[r.propertyToSearch].toLowerCase().indexOf(t.toLowerCase())}),I.isFunction(r.onResult)&&(e=r.onResult.call(d,e,t,o)),c.add(i,e),b(t,e))},r.searchDelay)):x())}function S(){var e=r.url;return e="function"==typeof r.url?r.url.call():e}(k=r.processPrePopulate&&I.isFunction(r.onResult)?r.onResult.call(d,k):k)&&k.length&&I.each(k,function(e,t){m(t),g()}),I.isFunction(r.onReady)&&r.onReady.call(),this.clear=function(){l.children("li").each(function(){0===I(this).children("input").length&&C(I(this))})},this.add=function(e){v(e)},this.remove=function(o){l.children("li").each(function(){if(0===I(this).children("input").length){var e,t=I(this).data("tokeninput"),n=!0;for(e in o)if(o[e]!==t[e]){n=!1;break}n&&C(I(this))}})},this.getTokens=function(){return i}},I.TokenList.Cache=function(e){var n=I.extend({max_size:500},e),o={},i=0;this.add=function(e,t){i>n.max_size&&(o={},i=0),o[e]||(i+=1),o[e]=t},this.get=function(e){return o[e]}}}(jQuery); |