chevereto-free/app/lib/chevereto.min.js

4 lines
98 KiB
JavaScript
Raw Normal View History

2020-08-26 00:24:23 +00:00
$(function(){function e(e){e=e.originalEvent;var t=!1;if(e.dataTransfer.types)for(var a=0;a<e.dataTransfer.types.length;a++)if("Files"==e.dataTransfer.types[a]){t=!0;break}return t}function t(){if(!PF.fn.isDevice(["phone","phablet"])){var e,t,a=$(".top-bar-notifications-list ul",".top-bar:visible");a.css("height",""),e=a.height(),a.data("height",e).css("height","auto"),t=a.height(),t>e&&(a.height(e),a.closest(".antiscroll-wrap").antiscroll())}}function a(e){e.addClass("list-item-play-gif--loading");var t=e.closest(".list-item"),a=$(".image-container",t),o=$("img",a),i=o.attr("src"),r=".md",n=i.lastIndexOf(r);if(-1==n)r=".th",n=i.lastIndexOf(r);var s=i.substr(0,n)+i.substr(n+r.length,i.length);a.append(a.html()),$load=t.find(".image-container img").eq(1).attr("src",s).addClass("hidden"),$load.imagesLoaded(function(){e.remove(),o.remove(),$(this.elements).removeClass("hidden")})}if($(window).on("resize",function(){CHV.fn.uploader.boxSizer(),"function"==typeof user_background_full_fix&&user_background_full_fix(),CHV.fn.bindSelectableItems(),CHV.fn.listingViewer.placeholderSizing()}),window.opener&&($(window).on("load",function(e){window.opener.postMessage({id:window.name,requestAction:"postSettings"},"*")}),$(window).on("message",function(e){var t=e.originalEvent.data;void 0!==t.id&&void 0!==t.settings&&window.name===t.id&&(CHV.obj.opener.uploadPlugin[t.id]=t.settings)})),$("#home-cover, #maintenance-wrapper, #login").exists()){var o=$("#maintenance-wrapper").exists()?$("#maintenance-wrapper").css("background-image").slice(4,-1).replace(/^\"|\"$/g,""):$(".home-cover-img","#home-cover-slideshow").first().attr("data-src");function i(){$("body").addClass("load"),$("#maintenance-wrapper").exists()||$(".home-cover-img","#home-cover-slideshow").first().css("background-image","url("+o+")").addClass("animate-in--alt").removeAttr("data-src"),setTimeout(function(){setTimeout(function(){$("body").addClass("loaded")},1200),setTimeout(function(){n()},7e3)},600)}var r=function(){setTimeout(function(){n()},8e3)};function n(){var e=$(".home-cover-img[data-src]","#home-cover-slideshow").first(),t=$(".home-cover-img","#home-cover-slideshow");if(0==e.length){if(1==t.length)return;t.first().removeClass("animate-in"),$("#home-cover-slideshow").append(t.first()),setTimeout(function(){$(".home-cover-img:last","#home-cover-slideshow").addClass("animate-in")},20),setTimeout(function(){$(".home-cover-img:not(:last)","#home-cover-slideshow").removeClass("animate-in")},4e3),r()}else{var a=e.attr("data-src");$("<img/>").attr("src",a).on("load error",function(){$(this).remove(),e.css("background-image","url("+a+")").addClass("animate-in").removeAttr("data-src"),setTimeout(function(){$(".home-cover-img:not(:last)","#home-cover-slideshow").removeClass("animate-end animate-in--alt")},2e3),r()})}}o?$("<img/>").attr("src",o).on("load error",function(){$(this).remove(),i()}):i()}var s=CHV.fn.uploader.selectors.root,l=CHV.fn.uploader.selectors.queue,d=$(s),c=$(l);$(document).on("click","[data-action=top-bar-upload]",function(e){$("body").is("#upload")||1==$(this).data("link")||CHV.fn.uploader.toggle()});var u={tones:{light:{html:"tone-light top-bar-white",top:"white"},dark:{html:"tone-dark top-bar-black",top:"black"}},isDark:function(){return $("html").hasClass("tone-dark")},toggle:function(){var e=this.isDark()?"light":"dark";$("html").removeClass(this.tones.light.html+" "+this.tones.dark.html).addClass(this.tones[e].html),$("body#index").exists()||$("#top-bar").removeClass(this.tones.light.top+" "+this.tones.dark.top).addClass(this.tones[e].top)},save:function(){$.ajax({type:"POST",data:{action:"toggleTone"},cache:!1}),u.aux=u.isDark()},timeout:{},aux:{}};if(u.aux=u.isDark(),$(document).on("click","[data-action=top-bar-tone]",function(e){e.isPropagationStopped()||($("[data-action=top-bar-menu-full]").is(":visible")&&PF.fn.topMenu.hide(),clearTimeout(u.timeout),u.toggle(),u.timeout=setTimeout(function(){u.aux!==u.isDark()&&u.save()},750))}),$("[data-action=close-upload]",d).click(function(){d.is(":animated")||$("[data-action=top-bar-upload]","#top-bar").clic
done:function(e){PF.fn.modal.close(function(){PF.fn.growl.expirable(PF.fn._s("Profile background image deleted."))})}},error:function(e){PF.fn.growl.expirable(PF.fn._s("Error deleting profile background image."))}}}},CHV.str.mainform="[data-content=main-form]",CHV.obj.timezone={selector:"[data-content=timezone]",input:"#timezone-region"},$(document).on("keyup change",CHV.str.mainform+" :input",function(){$(this).is("[name=username]")&&$("[data-text=username]").text($(this).val())}),$(document).on("change",CHV.obj.timezone.input,function(){var e=$(this).val(),t=$("#timezone-combo-"+e);t.find("option:first").prop("selected",!0),$(CHV.obj.timezone.selector).val(t.val()).change()}),$(document).on("change","[id^=timezone-combo-]",function(){var e=$(this).val();$(CHV.obj.timezone.selector).val(e).change()}),$(document).on("keyup change blur","[name^=new-password]",function(){var e=$("[name=new-password]"),t=$("[name=new-password-confirm]"),a=e.val()==t.val(),o=t.closest(".input-password").find(".input-warning");0==o.exists()&&(o=$("[data-message=new-password-confirm]")),$(this).is(t)&&t.data("touched",!0),t.data("touched")&&o.text(a?"":o.data("text"))[a?"addClass":"removeClass"]("hidden-visibility")}),$(document).on("submit",CHV.obj.mainform,function(){switch($(this).data("type")){case"password":var e=$("[name=new-password]",this),t=$("[name=new-password-confirm]",this);if((""!==e.val()||""!==t.val())&&e.val()!==t.val())return e.highlight(),t.highlight(),PF.fn.growl.expirable(PF.fn._s("Passwords don't match")),!1}}),$(document).on("click","[data-action=check-for-updates]",function(){PF.fn.loading.fullscreen(),CHV.fn.system.checkUpdates(function(e){if(PF.fn.loading.destroy("fullscreen"),200===e.status){var t=e.responseJSON.software;-1==PF.fn.versionCompare(CHV.obj.system_info.version,t.current_version)?PF.fn.modal.simple({title:PF.fn._s("Update available v%s",t.current_version),message:"<p>"+PF.fn._s("There is an update available for your system. You can automatic download and install this update or go to %s to proceed to download the file.",'<a href="'+CHEVERETO.source.url+'" target="_blank">'+CHEVERETO.source.label+"</a>")+"<p>"+PF.fn._s("The release notes for this update are:")+'</p><textarea class="r4 resize-vertical">'+t.release_notes+'</textarea><div class="btn-container margin-bottom-0"><a href="'+PF.obj.config.base_url+"/update/?auth_token="+PF.obj.config.auth_token+'" class="btn btn-input default">'+PF.fn._s("Update now")+'</a> <span class="btn-alt">'+PF.fn._s("or")+' <a data-action="cancel">'+PF.fn._s("cancel")+"</a></span></div>",html:!0}):PF.fn.growl.call(PF.fn._s("This website is running latest %s version",CHEVERETO.edition))}else PF.fn.growl.call(PF.fn._s("An error occurred. Please try again later."))})}),void 0!==PF.fn.get_url_var("checkUpdates")&&$("[data-action=check-for-updates]").click(),$("body#image").exists()&&window.scrollY>0&&$("#top-bar").removeClass("transparent"),$(document).on("click","[data-action=toggle-storage-https]",function(){CHV.fn.storage.toggleHttps($(this).closest("[data-content=storage]").data("storage-id"))}),$(document).on("click","[data-action=toggle-storage-active]",function(){CHV.fn.storage.toggleActive($(this).closest("[data-content=storage]").data("storage-id"))}),$(CHV.fn.uploader.selectors.root).exists()&&(CHV.fn.uploader.$pasteCatcher=$("<div />",{contenteditable:"true",id:CHV.fn.uploader.selectors.paste.replace(/#/,"")}),$("body").append(CHV.fn.uploader.$pasteCatcher),$(document).keydown(function(e){var t=e.keyCode,a=e.ctrlKey||e.metaKey;a&&86==t&&!$(e.target).is(":input")&&CHV.fn.uploader.$pasteCatcher.focus(e)}),window.addEventListener("paste",CHV.fn.uploader.pasteImageHandler)),$(document).on("click","[data-action=like]",function(){if(PF.fn.is_user_logged()){var e=$(this);if(!e.data("XHR")){e.data("XHR",!0);var t=$(this).is("[data-liked]")?$(this):$(this).closest("[data-liked]"),a=!t.closest("[data-list], .viewer").exists()&&void 0!==CHV.obj.resource,o=t.is("[data-liked=1]"),i=o?"dislike":"like",r={id:a?CHV.obj.resource.id:$(this).closest("[data-id]").attr("data-id"),type:a?
r.error.message=CHV.fn.uploader.files[t].name.truncate_middle()+" - "+r.error.message),CHV.fn.uploader.results[200==this.status?"success":"error"][t]=r,200!==this.status&&(i=!0)}catch(e){var n;i=!0,n=void 0===r?{status:500,statusText:"Internal server error"}:{status:400,statusText:r.error.message},r={status_code:n.status,error:{message:CHV.fn.uploader.files[t].name.truncate_middle()+" - Server error ("+n.statusText+")",code:n.status,context:"XMLHttpRequest"},status_txt:n.statusText};var s=Object.size(CHV.fn.uploader.results.error)+1;CHV.fn.uploader.results.error[s]=r}e.addClass(i?"failed":"completed"),void 0!==r.error&&void 0!==r.error.message&&(e.attr("rel","tooltip").data("tiptip","top").attr("title",r.error.message),PF.fn.bindtipTip(e)),o.uploadThreads<CHV.obj.config.upload.threads&&a&&(CHV.fn.uploader.upload(e.next()),$(CHV.fn.uploader.selectors.root).addClass("queueHasResults")),o.uploadProcessedIds.length==Object.size(o.files)&&CHV.fn.uploader.displayResults(),$(".done",e).fadeOut()}},this.files[t].xhr.open("POST",PF.obj.config.json_api,!0),this.files[t].xhr.setRequestHeader("Accept","application/json"),this.files[t].xhr.send(l)}else e.next().exists()&&this.upload(e.next())}}else e.next().exists()&&this.upload(e.next())},itemLoading:function(e){PF.fn.loading.inline($(".progress",e),{color:"#FFF",size:"normal",center:!0,position:"absolute",shadow:!0}),$("[data-action=cancel], [data-action=edit]",e).hide()},displayResults:function(){CHV.fn.uploader.isUploading=!1;for(var e="[data-group=upload-result][data-result=%RESULT%]",t=["error","mixed","success"],a={},o=0;o<t.length;o++)a[t[o]]=e.replace("%RESULT%",t[o]);if(Object.size(this.results.error)>0){var i=[];for(var o in this.results.error)"object"==typeof this.results.error[o]&&(i[o]=this.results.error[o].error.message);i.length>0&&$(this.selectors.failed_result).html("<li>"+i.join("</li><li>")+"</li>")}else $(a.error,this.selectors.root).hide();if(!window.opener&&CHV.obj.config.upload.redirect_single_upload&&1==Object.size(this.results.success)&&0==Object.size(this.results.error))return window.location.href=this.results.success[0].image.url_viewer,!1;if($("[data-text=queue-progress]",this.selectors.root).text(100),$("[data-group=uploading]",this.selectors.root).hide(),$(this.selectors.root).removeClass("queueUploading queueHasResults").addClass("queueCompleted"),$(this.selectors.queue).addClass(this.selectors.queue_complete.substring(1)),Object.size(this.results.success)>0&&$("[data-group=upload-result] textarea",this.selectors.root).exists()&&CHV.fn.fillEmbedCodes(this.results.success,CHV.fn.uploader.selectors.root,"val"),Object.size(this.results.success)>0&&Object.size(this.results.error)>0?$(a.mixed+", "+a.success,this.selectors.root).show():Object.size(this.results.success)>0?$(a.success,this.selectors.root).show():Object.size(this.results.error)>0&&$(a.error,this.selectors.root).show(),$(a.success,this.selectors.root).is(":visible")){$(a.success,this.selectors.root).find("[data-group^=user], [data-group=guest]").hide(),$(a.success,this.selectors.root).find("[data-group="+(PF.fn.is_user_logged()?"user":"guest")+"]").show();var r=Object.keys(this.results.success)[0];if(void 0!==this.results.success[r].image.album){var n=[];for(var s in this.results.success){var l=this.results.success[s].image;l.album&&l.album.id_encoded&&-1==n.indexOf(l.album.id_encoded)&&n.push(l.album.id_encoded)}var d={link:null,text:null};if(n.length<=1?(d.link=this.results.success[r].image.album.url,d.text=this.results.success[r].image.album.name):(d.link=this.results.success[r].image.user.url_albums,d.text=PF.fn._s("%s's Albums",this.results.success[r].image.user.name_short_html)),$("[data-text=upload-target]",this.selectors.root).text(d.text),$("[data-link=upload-target]",this.selectors.root).attr("href",d.link),PF.fn.is_user_logged()){var c=n.length>0?"album":"stream";$("[data-group=user-"+c+"]",this.selectors.root).show()}}}if(this.boxSizer(),this.queueStatus="done",window.opener&&void 0!==CHV.obj.opener.uploadPlugin[window.name]){if($('[data-action="copy"]',this.selectors.root).remove()
"working"!=a.import.status&&clearInterval(CHV.obj.import.working[e].interval)}})},updateStats:function(e){e=parseInt(e);"readyState"in CHV.obj.import.working[e].stats&&4!=CHV.obj.import.working[e].stats.readyState?console.log("Aborting stats timeout call (previous call is still not ready)"):(CHV.obj.import.working[e].stats=$.ajax({type:"POST",data:{action:"importStats",id:e}}),CHV.obj.import.working[e].stats.complete(function(t){var a=t.responseJSON;if(a){var o=CHV.fn.import.parseTemplate(a.import);$("[data-id="+a.import.id+"]",CHV.obj.import.sel.root).replaceWith(o),"working"!=a.import.status&&clearInterval(CHV.obj.import.working[e].interval)}}))},add:{submit:function(){var e=PF.obj.modal.selectors.root;return PF.obj.modal.form_data={action:"importAdd",path:$("[name=form-path]",e).val(),options:{root:$("[name=form-structure]",PF.obj.modal.selectors.root).val()}},!0},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.expirable(PF.fn._s("Import job ID %s added successfully, you can process the import now",t.import.id));var a=CHV.fn.import.parseTemplate(t.import);a.insertAfter(CHV.obj.import.sel.header,CHV.obj.import.sel.root),$(CHV.obj.import.sel.root).removeClass("hidden")},error:function(e){CHV.fn.import.errorHandler(e.responseJSON)}}},process:{abortAll:function(e){e=parseInt(e);if(e in CHV.obj.import.working){for(var t in CHV.obj.import.aborted.push(e),CHV.obj.import.working[e].threads)CHV.obj.import.working[e].threads[t].abort();PF.fn.growl.expirable("Aborted all threads for import job ID "+e+", changing status now"),"interval"in CHV.obj.import.working[e]&&(clearInterval(CHV.obj.import.working[e].interval),"abort"in CHV.obj.import.working[e].stats&&CHV.obj.import.working[e].stats.abort())}},xhr:function(e,t){e=parseInt(e);console.log("New XHR for thread #"+t+" for import job ID"),e in CHV.obj.import.working==0&&(CHV.obj.import.working[e]={threads:{},interval:{},stats:{}}),CHV.obj.import.working[e].threads[t]=$.ajax({type:"POST",data:{action:"importProcess",id:e,thread:t}}),CHV.obj.import.working[e].threads[t].complete(function(a){if(400!=a.status){$("[data-id="+e+"]",CHV.obj.import.sel.root).data("status");-1==$.inArray(e,CHV.obj.import.aborted)&&CHV.fn.import.process.xhr(e,t)}else CHV.fn.import.errorHandler(a.responseJSON)})},load:function(){return $("html").data("modal-form-values",""),!0},submit:function(e){var t=PF.obj.modal.selectors.root,a=$("[name=form-threads]",t).val();return 0==a?(PF.fn.growl.expirable(PF.fn._s("Select number of threads")),!1):(PF.obj.modal.form_data={action:"importEdit",id:e,threads:a,values:{status:"working"}},!0)},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.expirable(PF.fn._s("Import job ID %s is being processed now",t.import.id));var a=CHV.fn.import.parseTemplate(t.import);$("[data-id="+t.import.id+"]",CHV.obj.import.sel.root).replaceWith(a);for(var o=parseInt(t.request.threads),i=1;i<=o;i++)CHV.fn.import.process.xhr(t.import.id,i);CHV.obj.import.working[t.import.id].interval=setInterval(function(){CHV.fn.import.updateStats(t.import.id)},5e3)},error:function(e){var t=e.responseJSON;900==t.error.code?(console.log("Aborting current working process (status changed)"),CHV.fn.import.process.abortAll(t.id)):CHV.fn.import.errorHandler()}}},delete:{submit:function(e){return PF.obj.modal.form_data={action:"importDelete",id:e},!0},deferred:{success:function(e){var t=e.responseJSON;PF.fn.growl.call(PF.fn._s("Import ID %s removed",t.import.id)),$("[data-id="+t.import.id+"]",CHV.obj.import.sel.root).remove(),1==$("li",CHV.obj.import.sel.root).size()&&$(CHV.obj.import.sel.root).addClass("hidden")},error:function(e){CHV.fn.import.errorHandler(e.responseJSON)}}},parseTemplate:function(e,t){var a=CHV.obj.import.rowTpl;for(var o in CHV.obj.import.importTr)void 0!==e[o]&&(a=a.replaceAll("%"+o+"%",e[o]));a=a.replaceAll("%parse%",e.options.root),a=a.replaceAll("%shortParse%",e.options.root.charAt(0)),a=a.replaceAll("%displayStatus%",CHV.obj.import.statusesDisplay[e.status]);var i=$($.parseHTML(a)).attr("data-object",JSON.stringify(e));return i}};