1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
define(["exports","./../emby-apiclient/connectionmanager.js","./../common/globalize.js","./../layoutmanager.js","./../focusmanager.js","./../loading/loading.js","./../emby-elements/emby-scroller/emby-scroller.js","./../emby-elements/emby-input/emby-input.js","./../listview/listview.js","./../emby-elements/emby-button/paper-icon-button-light.js","./../emby-elements/emby-button/emby-button.js","./../dialoghelper/dialoghelper.js","./../formhelper.js"],function(_exports,_connectionmanager,_globalize,_layoutmanager,_focusmanager,_loading,_embyScroller,_embyInput,_listview,_paperIconButtonLight,_embyButton,_dialoghelper,_formhelper){function showAlert(options){Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function onDialogClosed(){_loading.default.hide()}function refreshDirectoryBrowser(page,apiClient,path,fileOptions){if(path&&"string"!=typeof path)throw new Error("invalid path");_loading.default.show();var promises=[];"Network"===path?promises.push(apiClient.getNetworkDevices()):path?(promises.push(apiClient.getDirectoryContents(path,fileOptions)),promises.push(apiClient.getParentPath(path))):promises.push(apiClient.getDrives()),Promise.all(promises).then(function(responses){var folders=responses[0],responses=responses[1]||"",html=(page.querySelector(".txtDirectoryPickerPath").value=path||"","");path&&(html+=getItem("lnkPath lnkDirectory","",responses,"<b>. .</b>"));for(var i=0,length=folders.length;i<length;i++){var folder=folders[i];html+=getItem("File"===folder.Type?"lnkPath lnkFile":"lnkPath lnkDirectory",folder.Type,folder.Path,folder.Name)}path||(html+=getItem("lnkPath lnkDirectory","","Network",_globalize.default.translate("Network"))),page.querySelector(".results").innerHTML=html,setTimeout(function(){page.querySelector(".result-scroller").scrollToBeginning();var results2=page.querySelector(".results");0<results2.childElementCount&&(results2=results2.children[0],_focusmanager.default.focus(results2.firstElementChild))},50),_loading.default.hide()},function(err){_formhelper.default.handleErrorResponse(err),_loading.default.hide()})}function getItem(cssClass,type,path,name){var html="";return html+='<div class="listItem listItemCursor listItem-border '+cssClass+'" data-type="'+type+'" data-path="'+path+'"><div tabindex="0" class="listItem-inner focusable flex align-items-center" style="width:100%;">',"Directory"===type?html+='<i class="md-icon listItemIcon secondaryText">folder</i>':"File"===type?html+='<i class="md-icon listItemIcon">description</i>':"Network"===path&&(html+='<i class="md-icon listItemIcon">wifi</i>'),html=(html=(html=(html+='<div class="listItemBody" style="padding-top:.5em;padding-bottom:.5em;">')+'<div class="listItemBodyText">'+name)+"</div>"+"</div>")+'<i class="md-icon listItemIcon autortl"></i>'+"</div></div>"}function initEditor(content,options,apiClient,fileOptions){content.addEventListener("click",function(e){var path,e=e.target.closest(".lnkPath");e&&(path=e.getAttribute("data-path"),e.classList.contains("lnkFile")?(content.querySelector(".txtDirectoryPickerPath").value=path,content.querySelector(".txtDirectoryPickerPath").dispatchEvent(new CustomEvent("change",{bubbles:!0}))):refreshDirectoryBrowser(content,apiClient,path,fileOptions))}),content.addEventListener("keydown",function(e){var path;13!==e.keyCode&&32!==e.keyCode||(e=e.target.closest(".lnkPath"))&&(path=e.getAttribute("data-path"),e.classList.contains("lnkFile")?content.querySelector("#txtDirectoryPickerPath").value=path:refreshDirectoryBrowser(content,path,fileOptions,!0))});var btnRefreshDirectories=content.querySelector(".btnRefreshDirectories");function onPathTextChange(e){var value=this.value,value=value&&(value.startsWith("\\\\")||value.toLowerCase().startsWith("smb://")),fldUsername=content.querySelector(".fldUsername"),fldPassword=content.querySelector(".fldPassword");value?(fldUsername&&fldUsername.classList.remove("hide"),fldPassword&&fldPassword.classList.remove("hide")):(fldUsername&&fldUsername.classList.add("hide"),fldPassword&&fldPassword.classList.add("hide"))}btnRefreshDirectories&&btnRefreshDirectories.addEventListener("click",function(e){var path=content.querySelector(".txtDirectoryPickerPath").value;refreshDirectoryBrowser(content,apiClient,path,fileOptions)}),content.querySelector(".txtDirectoryPickerPath").addEventListener("change",onPathTextChange),content.querySelector(".txtDirectoryPickerPath").addEventListener("input",onPathTextChange),content.querySelector("form").addEventListener("submit",function(e){var _this$querySelector,path,username,password,networkSharePath;return options.callback&&(path=this.querySelector(".txtDirectoryPickerPath").value,username=(null==(_this$querySelector=this.querySelector(".txtUsername"))?void 0:_this$querySelector.value)||null,password=(null==(_this$querySelector=this.querySelector(".txtPassword"))?void 0:_this$querySelector.value)||null,networkSharePath=(null==(_this$querySelector=this.querySelector(".txtNetworkPath"))?void 0:_this$querySelector.value)||null,function(path,validateWriteable,username,password,apiClient){return apiClient.ajax({type:"POST",url:apiClient.getUrl("Environment/ValidatePath"),data:{ValidateWriteable:validateWriteable,Path:path,Username:username,Password:password}}).catch(function(response){if(response){if(404===response.status)return showAlert("The path could not be found. Please ensure the path is valid and try again."),Promise.reject();if(500===response.status)return showAlert(validateWriteable?"Emby Server requires write access to this folder. Please ensure write access and try again.":"The path could not be found. Please ensure the path is valid and try again."),Promise.reject()}return Promise.resolve()})}(path,options.validateWriteable,username,password,apiClient).then(function(){options.callback(path,networkSharePath,username,password)})),e.preventDefault(),e.stopPropagation(),!1})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["formDialogStyle"]),_exports.default=function(){var currentDialog;this.show=function(options){var fileOptions={includeDirectories:!0},apiClient=(null!=(options=options||{}).includeDirectories&&(fileOptions.includeDirectories=options.includeDirectories),null!=options.includeFiles&&(fileOptions.includeFiles=options.includeFiles),_connectionmanager.default.currentApiClient());Promise.all([apiClient.getSystemInfo(),function(options,apiClient){return options.path?Promise.resolve(options.path):apiClient.getJSON(apiClient.getUrl("Environment/DefaultDirectoryBrowser")).then(function(result){return result.Path||""},function(){return""})}(options,apiClient)]).then(function(responses){var systemInfo=responses[0],responses=responses[1],dlg=_dialoghelper.default.createDialog({size:_layoutmanager.default.tv?"fullscreen":"medium-tall",removeOnClose:!0,scrollY:!1}),html=(dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("directoryPicker"),dlg.classList.add("formDialog"),""),systemInfo=(html=(html=(html=(html=(html+='<div class="formDialogHeader">')+'<button is="paper-icon-button-light" class="btnCloseDialog hide-mouse-idle-tv" tabindex="-1"><i class="md-icon autortl"></i></button>'+'<h3 class="formDialogHeaderTitle">')+(options.header||_globalize.default.translate("HeaderSelectPath")))+"</h3>"+"</div>")+function(options,apiClient,systemInfo){var html="",labelKey=(html=html+'<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent">'+'<div class="scrollSlider dialogContentInner dialog-content-centered padded-left padded-right flex flex-direction-column">',options.pathReadOnly||(html=(html=html+'<div class="infoBanner" style="margin-bottom:1.5em;">'+(options.instruction?options.instruction+"<br/><br/>":""))+_globalize.default.translate("MessageDirectoryPickerInstruction").replace("{0}","<b>\\\\server</b>").replace("{1}","<b>\\\\192.168.1.101</b>"),"synology"===(systemInfo.PackageName||"").toLowerCase()?html=(html+="<br/><br/>")+'<a is="emby-linkbutton" class="button-link" href="https://github.com/MediaBrowser/Wiki/wiki/Synology-:-Setting-Up-Your-Media-Library-Share" target="_blank">'+_globalize.default.translate("LearnHowToCreateSynologyShares")+"</a>":"bsd"===systemInfo.OperatingSystem.toLowerCase()?html=(html=(html+="<br/><br/>")+_globalize.default.translate("MessageDirectoryPickerBSDInstruction")+"<br/>")+'<a is="emby-linkbutton" class="button-link" href="http://doc.freenas.org/9.3/freenas_jails.html#add-storage" target="_blank">'+_globalize.default.translate("LearnMore")+"</a>":"linux"===systemInfo.OperatingSystem.toLowerCase()&&(html=(html+="<br/><br/>")+_globalize.default.translate("MessageDirectoryPickerLinuxInstruction")+"<br/>"),html+="</div>"),!0!==options.includeFiles?"LabelFolder":"LabelPath"),readOnlyAttribute=options.pathReadOnly?" readonly":"",autoCompleteAttribute=_layoutmanager.default.tv?' autocomplete="off" ':"";return html=(html=(html+='<form style="margin:0;" class="flex-grow">')+'<div class="inputContainer flex align-items-center">'+'<div class="flex-grow">')+('<input is="emby-input" class="txtDirectoryPickerPath" type="text" required="required" '+readOnlyAttribute+autoCompleteAttribute+' label="'+_globalize.default.translate(labelKey)+'"/>')+"</div>",readOnlyAttribute||(html+='<button type="button" is="paper-icon-button-light" class="btnRefreshDirectories emby-input-iconbutton" title="'+_globalize.default.translate("Refresh")+'" aria-label="'+_globalize.default.translate("Refresh")+'"><i class="md-icon">refresh</i></button>'),html+="</div>",options.enableLoginCredentials&&"windows"!==systemInfo.OperatingSystem.toLowerCase()&&apiClient.isMinServerVersion("4.8.0.40")&&(html=(html=(html=(html=(html+='<div class="inputContainer fldUsername hide">')+'<input is="emby-input" class="txtUsername" type="text" label="'+_globalize.default.translate("LabelUsername")+'"/><div class="fieldDescription">')+_globalize.default.translate("UsernameForFolderHelp")+'</div></div><div class="inputContainer fldPassword hide">')+'<input is="emby-input" class="txtPassword" type="password" label="'+_globalize.default.translate("LabelPassword")+'"/><div class="fieldDescription">')+_globalize.default.translate("PasswordForFolderHelp")+"</div></div>"),readOnlyAttribute||(html+='<div is="emby-scroller" class="flex flex-direction-column scrollFrameY flex-grow result-scroller flex-grow" style="max-height: 20em;margin:2em 0;" data-mousewheel="true" data-horizontal="false" data-focusscroll="adaptive" data-adaptivestartthreshold="30"><div class="results listItems-border scrollSlider flex-grow flex-direction-column focuscontainer navout-up navout-down"></div></div>'),options.enableNetworkSharePath&&(html=(html=(html+='<div class="inputContainer">')+'<input is="emby-input" class="txtNetworkPath" type="text" '+readOnlyAttribute+autoCompleteAttribute+' label="'+_globalize.default.translate("LabelOptionalNetworkPath")+'"/><div class="fieldDescription">')+_globalize.default.translate("LabelOptionalNetworkPathHelp")+"</div></div>"),html=(html=(html=(html+='<div class="formDialogFooter">')+('<button is="emby-button" type="submit" style="margin-left:0 !important; margin-right:0 !important;" class="raised button-submit block formDialogFooterItem">'+_globalize.default.translate("ButtonOk")+"</button>")+"</div>")+"</form>"+"</div>")+"</div>"+"</div>"}(options,apiClient,systemInfo),dlg.innerHTML=html,initEditor(dlg,options,apiClient,fileOptions),dlg.addEventListener("close",onDialogClosed),_dialoghelper.default.open(dlg),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){_dialoghelper.default.close(dlg)}),(currentDialog=dlg).querySelector(".txtDirectoryPickerPath")),html=(systemInfo.value=responses,dlg.querySelector(".txtNetworkPath")),html=(html&&(html.value=options.networkSharePath||""),dlg.querySelector(".txtUsername")),html=(html&&(html.value=options.username||""),dlg.querySelector(".txtPassword"));html&&(html.value=options.password||""),systemInfo.dispatchEvent(new CustomEvent("change",{bubbles:!0})),options.pathReadOnly||refreshDirectoryBrowser(dlg,apiClient,responses,fileOptions)})},this.close=function(){currentDialog&&_dialoghelper.default.close(currentDialog)}}}); |