From 5d56b54549877a08404548453891a9d3d101e583 Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Wed, 3 Oct 2018 15:17:37 +0300 Subject: [PATCH] Add support for creating symbolic links in File Manager https://github.com/authentic-theme/authentic-theme/issues/629#issuecomment-426615864 --- extensions/file-manager/create_symlink.cgi | 34 +++++++++++++++++++++ extensions/file-manager/file-manager.min.js | 12 ++++---- lang/ca.UTF-8 | 2 ++ lang/cz.UTF-8 | 2 ++ lang/da.UTF-8 | 2 ++ lang/de.UTF-8 | 2 ++ lang/en.UTF-8 | 2 ++ lang/es.UTF-8 | 2 ++ lang/fr.UTF-8 | 2 ++ lang/id.UTF-8 | 2 ++ lang/it.UTF-8 | 2 ++ lang/ja_JP.UTF-8 | 2 ++ lang/nl.UTF-8 | 2 ++ lang/no.UTF-8 | 2 ++ lang/pl.UTF-8 | 2 ++ lang/pt.UTF-8 | 2 ++ lang/ro_RO.UTF-8 | 2 ++ lang/ru.UTF-8 | 2 ++ lang/sq.UTF-8 | 2 ++ lang/sv.UTF-8 | 2 ++ lang/zh_CN.UTF-8 | 2 ++ theme.info | 2 +- unauthenticated/css/bundle.min.css | 4 +-- 23 files changed, 81 insertions(+), 9 deletions(-) create mode 100755 extensions/file-manager/create_symlink.cgi diff --git a/extensions/file-manager/create_symlink.cgi b/extensions/file-manager/create_symlink.cgi new file mode 100755 index 000000000..3e3b5df83 --- /dev/null +++ b/extensions/file-manager/create_symlink.cgi @@ -0,0 +1,34 @@ +#!/usr/bin/perl + +# +# Authentic Theme (https://github.com/authentic-theme/authentic-theme) +# Copyright Ilia Rostovtsev +# Licensed under MIT (https://github.com/authentic-theme/authentic-theme/blob/master/LICENSE) +# +use strict; + +use File::Basename; + +our (%in, %text, $cwd, $path); + +require(dirname(__FILE__) . '/file-manager-lib.pm'); + +my $path_urlized = urlize($path); + +if (!$in{'name'}) { + redirect("list.cgi?path=$path_urlized&module=$in{'module'}"); +} + +my $is_symlink = (-l "$cwd/$in{'name'}_symlink"); +if ($is_symlink || -d "$cwd/$in{'name'}_symlink" || -e "$cwd/$in{'name'}_symlink" || -d "$cwd/$in{'name'}_symlink") { + print_error( + ( + text('filemanager_create_object_exists', + html_escape("$in{'name'}_symlink"), + html_escape($path), ($is_symlink ? $text{'theme_xhred_global_symbolic'} : $text{'theme_xhred_global_target'}) + ) + )); +} else { + symlink_file("$cwd/$in{'name'}", "$cwd/$in{'name'}_symlink"); + redirect("list.cgi?path=$path_urlized&module=$in{'module'}"); +} diff --git a/extensions/file-manager/file-manager.min.js b/extensions/file-manager/file-manager.min.js index e1dbcffc3..819f6ddff 100644 --- a/extensions/file-manager/file-manager.min.js +++ b/extensions/file-manager/file-manager.min.js @@ -3,10 +3,10 @@ * Copyright Ilia Rostovtsev * Licensed under MIT (https://github.com/authentic-theme/authentic-theme/blob/master/LICENSE) */ -function __f___globals(){$____loader_block__=1,$____loader_block__manual=0,$g__v__home_base=Math.random(),$v__fm__container_fluid=".container-fluid",$v__fm__container_fluid_form=".container-fluid #list_form",$v__fm__container_fluid_modal_in=".container-fluid .modal.in",$v__fm__global_error=0,$v__fm__global_last_row=0,$v__fm__tree_node_prog=0,$v__fm__tree_node_sp=1,$v__fm__tree=0,$($v__fm__container_fluid).addClass("fmx"),$v__fm__container_fluid+=".fmx","undefined"==typeof __f___cas_jp_rev&&(__f___cas_jp_rev=0),tab___to______create=1}function uriEncodeParam(e,a){var t=URI.parseQuery(URI(e).query())[a];return t&&(e=e.replace(t,Convert.uriEncodeComponent(t)),e=e.replace("//","/")),e}function _f__table(){var e=$(".container-fluid .tab-pane.active").attr("id");if(e&&e.length){var a=parseInt(e.replace(/^\D+/g,""));return window["_f__table"+a]}return!1}function __f__refresh__dir_and_tree(){var e=$($v__fm__container_fluid+" #path").val();__f____r("get","index.cgi?path="+(e?Convert.uriEncodeComponent(e):""),!1,0),!config_portable_module_filemanager_hide_tree_view&&tree_update_node()}function __f__state__changed(){$(".paginate_button:visible").length||$(".jsPanel").length||$(".modal.in").length||$(".__o__f_m-search-results-data").length||"config.cgi"==v___location_file||__f__refresh__dir_and_tree()}function __f__cnt___selected(){var e=_f__table();if(e)var a=e.dataTable().$("tr.hl-aw",{filter:"applied"}).length;return a}function __r____changed(){if($("body").attr("class")&&$("body").attr("class").indexOf(v___module_file_manager)>-1){$(".total_size_data").parent("span").addClass("hidden");var e=_f__table();if(e)var a=e.dataTable().$("tr.hl-aw",{filter:"applied"}).length;a?__f___ub():__f___lb(),$(".total_selected").html(1==a?theme_language("theme_xhred_filemanager_selected_entry").replace("%value","1"):theme_language("theme_xhred_filemanager_selected_entries").replace("%value",""+a+""))}}function f__ck_init_err(e){var a=!$($v__fm__container_fluid_form).length&&$('a.page_footer_submit[href*="index.cgi?path="]').length,t=$(".container-fluid-loading").find(".cspinner-icon").length;if(e)return a;a&&($v__fm__global_error=1,$(".data-content-container, .panel-heading .header .btn-group, .panel-heading .header .favorites").addClass("hidden"),t&&page.handle.content.preloader(),__f_____undel())}function __f___b_dr(e){var a="";a=$($v__fm__container_fluid+" .breadcrumb li:first-child a i").hasClass("fa-search")?"index.cgi?path="+Convert.uriEncodeComponent($('#list_form > input[type="hidden"][name="path"]').val()):$($v__fm__container_fluid+" .breadcrumb > li:eq(-2) > a").attr("href"),a||(a="index.cgi?path="),__f____r("get",a,!1,0,!1,void 0!==e.originalEvent),$($v__fm__container_fluid_form).find(".cspinner").remove(),$($v__fm__container_fluid+" .active i.fa-folder-btl").after('')}function __f___o_dr(e,a,t,_){t&&($($v__fm__container_fluid_form).find(".cspinner").remove(),e.first().find("img").before(''),__f____r("get","index.cgi?path="+Convert.uriEncodeComponent(Convert.htmlUnEscape(a))+"/"+Convert.uriEncodeComponent(Convert.htmlUnEscape(t)),!1,0,!1,_))}function __f___mn(){return v___module}function f__insert_dir_up(){var e=$("#path").val();e&&"/"!=e&&"%2F"!=e&&!$($v__fm__container_fluid+" .active table tbody tr.directory_go_up").length&&$($v__fm__container_fluid+" .active table tbody").prepend('  ..')}function __f___um(){var e=localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode");return e?"&username="+e:""}function f__chk_loading(){if(f__ck_init_err(1))return void f__ck_init_err();if($("[data-tab-path]").find(".cspinner-icon").length)setTimeout(f__chk_loading,1200);else{setTimeout(function(){page.handle.content.preloader(),tree_view_get()},1e3);var e=$($v__fm__container_fluid+" #path").val();$t_uri_virtualmin||e&&"/"!=e&&"%2F"!=e||$($v__fm__container_fluid+' a[href="#tab-1"] i.fa-close-box').trigger("click"),setTimeout(function(){$.getScript(v___server_extensions_path+"/file-manager/file-manager-reinit."+v___source_type+".js?"+v___theme_version_plain)},400)}}function __f___gd(){var e=$(_f__table().fnGetNodes()).find("input").add($($v__fm__container_fluid+" .active form > input:not([name='path'])")).serialize();return e=e+"&path="+$($v__fm__container_fluid+" #path").val()}function _f__gr(e){return e?$(_f__table().fnGetNodes()).find("input:checked"):$(_f__table().fnGetNodes()).find("input")}function __f__ld__sh(){}function __f__ld__bg(){theme_modal_dismiss(),__f_____ul()}function __f__upd_____tl(e){var a=$($v__fm__container_fluid+" div.total").children().clone();$($v__fm__container_fluid+" div.total").empty().html(e+". ").append(a)}function __f__ck_lock(){return $("body.file-manager").find($v__fm__container_fluid_form+" table tbody").hasClass("o__f_m-updating")}function __f___ub(){$($v__fm__container_fluid+" div button.o__f_m-button-delete").removeClass("disabled").attr("onclick","removeDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chmod").removeClass("disabled").find("a").attr("onclick","chmodDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chown").removeClass("disabled").find("a").attr("onclick","chownDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chattr").removeClass("disabled").find("a").attr("onclick","chattrDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chcon").removeClass("disabled").find("a").attr("onclick","chconDialog()"),$($v__fm__container_fluid+" .o__f_m-button-compress").removeClass("disabled").find("a").attr("onclick","compressDialog()"),$($v__fm__container_fluid+" .o__f_m-button-copy").removeClass("disabled"),$($v__fm__container_fluid+" .o__f_m-button-cut").removeClass("disabled")}function __f___lb(){$($v__fm__container_fluid+" div button.o__f_m-button-delete").addClass("disabled").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chmod").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chown").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chattr").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chcon").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-compress").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-copy").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-cut").addClass("disabled").find("a").removeAttr("onclick")}function __f_____sl(){}function __f_____hl(){}function __f_____hl_(){setTimeout(function(){},750)}function __f_____undel(){var e=$("body"),a='.breadcrumb:visible [data-toggle="popover-path"]';e.undelegate(a,"inserted.bs.popover shown.bs.popover hide.bs.popover");var a=$v__fm__container_fluid+' [data-toggle="popover-path"]';e.undelegate(a,"hide.bs.popover");var a=$v__fm__container_fluid+' a[data-toggle="tab"]';e.undelegate(a,"hide.bs.tab show.bs.tab shown.bs.tab");var a="click.fm contextmenu.fm submit.fm change.fm mouseleave.fm mouseenter.fm mouseup.fm mouseout.fm mouseover.fm mousemove.fm input.fm keyup.fm keydown.fm keypress.fm sortupdate.fm resize.fm";e.off(a),$("body *").undelegate(a).unbind(a).off(a)}function __f___es_adj(e,a){var t=e.find("option:selected").text(),_=$("\'>'),1!=config_portable_module_filemanager_hide_toolbar&&($($v__fm__container_fluid+" .fa.fa-keyboard-o.popover-path").detach().appendTo(".breadcrumb li:last-child"),$($v__fm__container_fluid+" .fa.fa-keyboard-o.popover-path").css("margin-left","2px")),$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover()):(t.find(".breadcrumb li a").removeAttr("href").replaceTagName("span"),t.find(".breadcrumb li:last-child span").after($(a[0])),t.find(".breadcrumb li:first-child").replaceWith('
  • '),$($v__fm__container_fluid+" div.total").html(a[1]))})}function __f___upd___tb(e,a){var t=e.replace(/\/$/,"").split("/").slice(-1)[0];t=t?t:"/",a?($($v__fm__container_fluid+' li a[href="#tab-'+a+'"] span[data-tab-path]').text(t).attr("data-original-title",e?Convert.htmlEscape(e):"/"),$("#file-manager-new-instance").removeClass("disabled").find("span.cspinner").parent("span").replaceWith('')):$($v__fm__container_fluid+" li.active a span[data-tab-path]").text(t).attr("data-original-title",e?Convert.htmlEscape(e):"/")}function __f___up__tb_store(){if(!page.handle.content.preloader(-1)){var e=[],a=v___server_username;$t_uri_virtualmin&&(a+="_"+$('[name="dom"]').val()),$($v__fm__container_fluid+" .nav.nav-tabs li a span[data-original-title]").each(function(a,t){var _=$(t).attr("data-original-title").replace(/\/$/,"");e.push(_)}).promise().done(function(){var t={};t[a]=e;var _=JSON.parse(localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs"));$.isEmptyObject(_)||delete _[a];var n=$.extend({},t,_);localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs",JSON.stringify(n))})}}function __f___ld__tb_stored_chk(){var e=JSON.parse(localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs")),a=v___server_username;return $t_uri_virtualmin&&(a+="_"+$('[name="dom"]').val()),!$.isEmptyObject(e)&&e[a]}function __f___ld__tb_stored(){var e=__f___ld__tb_stored_chk();$.isArray(e)&&$.each($(e),function(e,a){__f___nt(a,!1,e)})}function __f___up__tb_vis(){1===$($v__fm__container_fluid+" .nav.nav-tabs li").length?$($v__fm__container_fluid+" .nav.nav-tabs li:first-child").addClass("hidden"):$($v__fm__container_fluid+" .nav.nav-tabs li:first-child").removeClass("hidden")}function __f___up__d(e,a,t){var _=Convert.htmlUnEscape(Convert.uriDecodeComponent(e)).replace("//","/").replace("index.cgi?path=",""),n=_.split("/");$("body.file-manager");$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover("hide"),$($v__fm__container_fluid+" .popover-path-button").find("i").removeClass("invisible").parent().find(".cspinner").addClass("hidden"),__f___upd___cr(n,t),__f___upd___tb(_,a),_?$($v__fm__container_fluid+' #headln2l > div.btn-group > a[href*="'+v___module_file_manager+'"][href*="index.cgi"]').removeClass("hidden"):$($v__fm__container_fluid+' #headln2l > div.btn-group > a[href*="'+v___module_file_manager+'"][href*="index.cgi"]').addClass("hidden"),$.each($($v__fm__container_fluid+' .modal .modal-body form input[name="path"]'),function(){$(this).val(_)}),$($v__fm__container_fluid+' ul li a[href^="bookmark.cgi?path="]').attr("href","bookmark.cgi?path="+Convert.htmlEscape(_)),f_m__bm__c(),favorites_detect(),setTimeout(function(){theme_title_generate(),__r____changed(1),__f___up__tb_vis(),__f___up__tb_store()},0)}function __f___nt(e,a,t){var _=Convert.uriEncodeComponent(Convert.htmlUnEscape(e)),t=void 0!==t&&0===t;$this=$("#file-manager-new-instance"),$this.blur(),$($v__fm__container_fluid+" .nav.nav-tabs li").addClass("disabled"),tab___to______create+=1,$($v__fm__container_fluid+" .tabs-top > .nav.nav-tabs").append('
  •  
  • '),$($v__fm__container_fluid+" .tabs-top > .tab-content").append('
    \t \t\t
    \t \t\t\t
    \t \t\t\t\t \t\t
    \t
    ');var n=$($v__fm__container_fluid+" .active table thead").clone();n.removeClass("hidden"),n.prependTo("#list_form_AuthenticThemeTmp"+tab___to______create+" table"),__f____r("get","index.cgi?path="+_,!1,0,[tab___to______create,a,t]),setTimeout(function(){},0),tab___is______new=!0}function __f____r(e,a,t,_,n,i){if(f__ck_init_err(1))return void f__ck_init_err();if(void 0===i&&(i=!1),"object"==typeof n)var o=n[2],r=n[1],n=n[0];else var r=!0;a&&!$.isArray(a)&&(a=uriEncodeParam(a,"path"));var l=Convert.htmlUnEscape(URI.parseQuery(URI(a).query()).path.replace("//","/"));if(void 0===n&&(n=!1),"get"===e){if("undefined"!=typeof getflist&&i&&(getflist.abort(),__f_____ul()),__f__ck_lock()&&r)return;__f_____lo(!0,!0),l=encodeURIComponent(l),getflist=$.ajax({xhr:function(){return new window.XMLHttpRequest},type:"POST",url:v___server_extensions_path+"/file-manager/list.cgi?path="+l+"&module="+v___module_file_manager,data:!1,dataType:"html",success:function(t){if(Test.strContains(t,v___page_signin_form))return void(v___available_session=0);if(theme_message_dismiss("refreshDir_info"),j=$.parseHTML(t),!$(j[1]).find("table").length)return $(j[10]).is("h3")&&3==get_access_level()?theme_messenger(''+$(j[10]).text().replace(" :",":").replace(" ,",","),15,"error","getPath_error"):theme_messenger(''+t,15,"error","getPath_error"),__f_____ul(),$($v__fm__container_fluid+" .active table .cspinner").remove(),void(n&&($($v__fm__container_fluid+' a[href="#tab-'+n+'"]').parent("li").remove(),$($v__fm__container_fluid+' .tab-content .tab-pane[id="tab-'+n+'"]').remove()));$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover("hide");var i=Convert.uriEncodeComponent(Convert.htmlUnEscape(Convert.uriDecodeComponent(a)).replace("//","/").replace("index.cgi?path=",""));!n&&$($v__fm__container_fluid_form+' > input[type="hidden"][name="path"]').val(i),r&&$($v__fm__container_fluid+" div.total").append(__f___tl_v());var s=$(j[0]).append(__f___tl_v()).html();r&&$($v__fm__container_fluid+" .total").html(s),n?$($v__fm__container_fluid+' .tab-pane[id="tab-'+n+'"]').data("totalValue",s):$($v__fm__container_fluid+" .tab-pane.active form table").data("totalValue",s),__f___u("upd",$(j[1]).find("table").find(".ui_checked_columns"),_,!1,[n,r,Convert.uriDecodeComponent(l),s,o],$(e[0]).text()),$("._select-unselect_").parent(".awcheckbox").remove(),$("#__f__c__m").css("display","none"),setTimeout(function(){__f___us_a(),"function"==typeof sortable&&sortable($($v__fm__container_fluid+" .tabs-top > ul.nav"))},10)},error:function(){}})}}function __f___us_a(){if(0==get_access_level()&&1==config_portable_module_filemanager_switch_user){var e=$($v__fm__container_fluid+" #path").val();e&&e.indexOf($g__v__home_base)>-1&&e!=$g__v__home_base?$.ajax({type:"POST",url:v___server_extensions_path+"/file-manager/fetcher.cgi?module="+v___module+"&list_users=1",data:!1,dataType:"JSON",success:function(a){if(Test.strContains(a,v___page_signin_form))return void(v___available_session=0);$.each(Convert.arrFlip(a),function(a,t){var _=Convert.uriEncodeComponent(a.split(":")[2]);(e==_||e.startsWith(_+"%2F"))&&localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode",t),__f___us_tl()})},error:function(e){}}):(__f___us_m_def(),__f___us_tl())}}function __f___us_m_def(){localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode","")}function __f___us_tl(){var e=localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode"),a=theme_language("theme_xhred_filemanager_user_switch")+"

    "+theme_language("theme_xhred_filemanager_user_switch_current_user")+": "+(e?e:v___server_username)+"",t="#file-manager-switch-user";$(t).attr("data-original-title",a),e?$(t).addClass("btn-warning"):$(t).removeClass("btn-warning")}function __f___tl_v(){return'. '+theme_language("theme_xhred_filemanager_selected_entries").replace("%value","0")+' '}function ___f__tw(){function e(e){void 0===e&&(e=$('input[name="config_portable_module_filemanager_hide_toolbar"]:checked'));var a=["config_portable_module_filemanager_hovered_toolbar"];"true"==e.val()?$.each(a,function(e,a){$('input[name="'+a+'"], select[name="'+a+'"]').prop("disabled",!0),$('input[name="'+a+'"], select[name="'+a+'"]').parent(".aradio").addClass("disabled")}):$.each(a,function(e,a){$('input[name="'+a+'"], select[name="'+a+'"]').prop("disabled",!1),$('input[name="'+a+'"], select[name="'+a+'"]').parent(".aradio").removeClass("disabled")})}function a(){$.ajax({type:"POST",url:v___location_prefix+"/index.cgi/?xhr-get_command_exists=1&xhr-get_command_exists_name=zip",data:!1,dataType:"text",success:function(e){if(Test.strContains(e,v___page_signin_form))return void(v___available_session=0);e?$($v__fm__container_fluid+' select[name="method"] option[value="zip"]').prop("disabled",!1):($($v__fm__container_fluid+' select[name="method"]').val("tar"),$($v__fm__container_fluid+' select[name="method"] option[value="zip"]').prop("disabled",!0),theme_messenger(''+theme_language("theme_xhred_global_no_such_command").replace("%cmd","zip"),15,"error"))},error:function(e){}})}__f___globals(),__f_____undel();var t=config_portable_module_filemanager_hide_tree_view?' class="hidden"':"",_=config_portable_module_filemanager_hide_tree_view?" hidden":"";if($("body.file-manager").attr("class")&&$("body.file-manager").attr("class").indexOf(v___module_file_manager)>-1){if($__f__rf_s="fa-refresh","object"!=typeof jsPanel&&$.getScript(v___location_prefix+"/unauthenticated/js/jquery.jspanel."+v___source_type+".js?"+v___theme_version_plain,function(e,a,t){$('head link[rel="stylesheet"]:first').before('')}),setTimeout(function(){$($v__fm__container_fluid+" #upload-form").removeAttr("onsubmit"),$($v__fm__container_fluid+" #upload-form").append("

    "+theme_language("theme_xhred_upload_initial_info")+"

    "),$($v__fm__container_fluid+' #upload-form input[name="upfiles"]').removeClass("heighter-28"),$($v__fm__container_fluid+" #readyForUploadDialog .modal-footer").prepend('"),$($v__fm__container_fluid+' #readyForUploadDialog button[onclick="uploadFiles()"]').addClass("disabled").html(' '+theme_language("theme_xhred_global_upload")),$($v__fm__container_fluid+" #readyForUploadDialog #readyForUploadList").remove()},100),"config.cgi"==v___location_file){$('input[name="per_page"], input[name="disable_pagination"], input[name="menu_style"]').parents("td.col_value").parent("tr").addClass("hidden"),$("#columns_size").parent(".awobject").remove(),$('input[value="size"]').parent(".awcheckbox").addClass("hidden");var n=$('input[name="columns"]:visible');$('form[action="save_config.cgi"]').append('');var o=$(".table-subtable .sub_table_container.table-hardcoded").find("tbody") +function __f___globals(){$____loader_block__=1,$____loader_block__manual=0,$g__v__home_base=Math.random(),$v__fm__container_fluid=".container-fluid",$v__fm__container_fluid_form=".container-fluid #list_form",$v__fm__container_fluid_modal_in=".container-fluid .modal.in",$v__fm__global_error=0,$v__fm__global_last_row=0,$v__fm__tree_node_prog=0,$v__fm__tree_node_sp=1,$v__fm__tree=0,$($v__fm__container_fluid).addClass("fmx"),$v__fm__container_fluid+=".fmx","undefined"==typeof __f___cas_jp_rev&&(__f___cas_jp_rev=0),tab___to______create=1}function uriEncodeParam(e,a){var t=URI.parseQuery(URI(e).query())[a];return t&&(e=e.replace(t,Convert.uriEncodeComponent(t)),e=e.replace("//","/")),e}function _f__table(){var e=$(".container-fluid .tab-pane.active").attr("id");if(e&&e.length){var a=parseInt(e.replace(/^\D+/g,""));return window["_f__table"+a]}return!1}function __f__refresh__dir_and_tree(){var e=$($v__fm__container_fluid+" #path").val();__f____r("get","index.cgi?path="+(e?Convert.uriEncodeComponent(e):""),!1,0),!config_portable_module_filemanager_hide_tree_view&&tree_update_node()}function __f__state__changed(){$(".paginate_button:visible").length||$(".jsPanel").length||$(".modal.in").length||$(".__o__f_m-search-results-data").length||"config.cgi"==v___location_file||__f__refresh__dir_and_tree()}function __f__cnt___selected(){var e=_f__table();if(e)var a=e.dataTable().$("tr.hl-aw",{filter:"applied"}).length;return a}function __f__get___selected(){var e,a=_f__table();return a&&(e=a.dataTable().$("tr.hl-aw",{filter:"applied"})),e}function __r____changed(){if($("body").attr("class")&&$("body").attr("class").indexOf(v___module_file_manager)>-1){$(".total_size_data").parent("span").addClass("hidden");var e=_f__table();if(e)var a=e.dataTable().$("tr.hl-aw",{filter:"applied"}).length;a?__f___ub():__f___lb(),$(".total_selected").html(1==a?theme_language("theme_xhred_filemanager_selected_entry").replace("%value","1"):theme_language("theme_xhred_filemanager_selected_entries").replace("%value",""+a+""))}}function f__ck_init_err(e){var a=!$($v__fm__container_fluid_form).length&&$('a.page_footer_submit[href*="index.cgi?path="]').length,t=$(".container-fluid-loading").find(".cspinner-icon").length;if(e)return a;a&&($v__fm__global_error=1,$(".data-content-container, .panel-heading .header .btn-group, .panel-heading .header .favorites").addClass("hidden"),t&&page.handle.content.preloader(),__f_____undel())}function __f___b_dr(e){var a="";a=$($v__fm__container_fluid+" .breadcrumb li:first-child a i").hasClass("fa-search")?"index.cgi?path="+Convert.uriEncodeComponent($('#list_form > input[type="hidden"][name="path"]').val()):$($v__fm__container_fluid+" .breadcrumb > li:eq(-2) > a").attr("href"),a||(a="index.cgi?path="),__f____r("get",a,!1,0,!1,void 0!==e.originalEvent),$($v__fm__container_fluid_form).find(".cspinner").remove(),$($v__fm__container_fluid+" .active i.fa-folder-btl").after('')}function __f___o_dr(e,a,t,_){t&&($($v__fm__container_fluid_form).find(".cspinner").remove(),e.first().find("img").before(''),__f____r("get","index.cgi?path="+Convert.uriEncodeComponent(Convert.htmlUnEscape(a))+"/"+Convert.uriEncodeComponent(Convert.htmlUnEscape(t)),!1,0,!1,_))}function __f___mn(){return v___module}function f__insert_dir_up(){var e=$("#path").val();e&&"/"!=e&&"%2F"!=e&&!$($v__fm__container_fluid+" .active table tbody tr.directory_go_up").length&&$($v__fm__container_fluid+" .active table tbody").prepend('  ..')}function __f___um(){var e=localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode");return e?"&username="+e:""}function f__chk_loading(){if(f__ck_init_err(1))return void f__ck_init_err();if($("[data-tab-path]").find(".cspinner-icon").length)setTimeout(f__chk_loading,1200);else{setTimeout(function(){page.handle.content.preloader(),tree_view_get()},1e3);var e=$($v__fm__container_fluid+" #path").val();$t_uri_virtualmin||e&&"/"!=e&&"%2F"!=e||$($v__fm__container_fluid+' a[href="#tab-1"] i.fa-close-box').trigger("click"),setTimeout(function(){$.getScript(v___server_extensions_path+"/file-manager/file-manager-reinit."+v___source_type+".js?"+v___theme_version_plain)},400)}}function __f___gd(){var e=$(_f__table().fnGetNodes()).find("input").add($($v__fm__container_fluid+" .active form > input:not([name='path'])")).serialize();return e=e+"&path="+$($v__fm__container_fluid+" #path").val()}function _f__gr(e){return e?$(_f__table().fnGetNodes()).find("input:checked"):$(_f__table().fnGetNodes()).find("input")}function __f__ld__sh(){}function __f__ld__bg(){theme_modal_dismiss(),__f_____ul()}function __f__upd_____tl(e){var a=$($v__fm__container_fluid+" div.total").children().clone();$($v__fm__container_fluid+" div.total").empty().html(e+". ").append(a)}function __f__ck_lock(){return $("body.file-manager").find($v__fm__container_fluid_form+" table tbody").hasClass("o__f_m-updating")}function __f___ub(){$($v__fm__container_fluid+" div button.o__f_m-button-delete").removeClass("disabled").attr("onclick","removeDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chmod").removeClass("disabled").find("a").attr("onclick","chmodDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chown").removeClass("disabled").find("a").attr("onclick","chownDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chattr").removeClass("disabled").find("a").attr("onclick","chattrDialog()"),$($v__fm__container_fluid+" .o__f_m-button-chcon").removeClass("disabled").find("a").attr("onclick","chconDialog()"),$($v__fm__container_fluid+" .o__f_m-button-compress").removeClass("disabled").find("a").attr("onclick","compressDialog()"),$($v__fm__container_fluid+" .o__f_m-button-copy").removeClass("disabled"),$($v__fm__container_fluid+" .o__f_m-button-cut").removeClass("disabled"),__f__cond_l()}function __f___lb(){$($v__fm__container_fluid+" div button.o__f_m-button-delete").addClass("disabled").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chmod").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chown").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chattr").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-chcon").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-compress").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-copy").addClass("disabled").find("a").removeAttr("onclick"),$($v__fm__container_fluid+" .o__f_m-button-cut").addClass("disabled").find("a").removeAttr("onclick"),__f__cond_l()}function __f__cond_l(){var e=__f__get___selected(),a=e&&e.length?e.length:0,t=$($v__fm__container_fluid+" .o__f_m-button-symlink");1===a?t.removeClass("disabled"):t.addClass("disabled")}function __f_____sl(){}function __f_____hl(){}function __f_____hl_(){setTimeout(function(){},750)}function __f_____undel(){var e=$("body"),a='.breadcrumb:visible [data-toggle="popover-path"]';e.undelegate(a,"inserted.bs.popover shown.bs.popover hide.bs.popover");var a=$v__fm__container_fluid+' [data-toggle="popover-path"]';e.undelegate(a,"hide.bs.popover");var a=$v__fm__container_fluid+' a[data-toggle="tab"]';e.undelegate(a,"hide.bs.tab show.bs.tab shown.bs.tab");var a="click.fm contextmenu.fm submit.fm change.fm mouseleave.fm mouseenter.fm mouseup.fm mouseout.fm mouseover.fm mousemove.fm input.fm keyup.fm keydown.fm keypress.fm sortupdate.fm resize.fm";e.off(a),$("body *").undelegate(a).unbind(a).off(a)}function __f___es_adj(e,a){var t=e.find("option:selected").text(),_=$("\'>'),1!=config_portable_module_filemanager_hide_toolbar&&($($v__fm__container_fluid+" .fa.fa-keyboard-o.popover-path").detach().appendTo(".breadcrumb li:last-child"),$($v__fm__container_fluid+" .fa.fa-keyboard-o.popover-path").css("margin-left","2px")),$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover()):(t.find(".breadcrumb li a").removeAttr("href").replaceTagName("span"),t.find(".breadcrumb li:last-child span").after($(a[0])),t.find(".breadcrumb li:first-child").replaceWith('
  • '),$($v__fm__container_fluid+" div.total").html(a[1]))})}function __f___upd___tb(e,a){var t=e.replace(/\/$/,"").split("/").slice(-1)[0];t=t?t:"/",a?($($v__fm__container_fluid+' li a[href="#tab-'+a+'"] span[data-tab-path]').text(t).attr("data-original-title",e?Convert.htmlEscape(e):"/"),$("#file-manager-new-instance").removeClass("disabled").find("span.cspinner").parent("span").replaceWith('')):$($v__fm__container_fluid+" li.active a span[data-tab-path]").text(t).attr("data-original-title",e?Convert.htmlEscape(e):"/")}function __f___up__tb_store(){if(!page.handle.content.preloader(-1)){var e=[],a=v___server_username;$t_uri_virtualmin&&(a+="_"+$('[name="dom"]').val()),$($v__fm__container_fluid+" .nav.nav-tabs li a span[data-original-title]").each(function(a,t){var _=$(t).attr("data-original-title").replace(/\/$/,"");e.push(_)}).promise().done(function(){var t={};t[a]=e;var _=JSON.parse(localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs"));$.isEmptyObject(_)||delete _[a];var n=$.extend({},t,_);localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs",JSON.stringify(n))})}}function __f___ld__tb_stored_chk(){var e=JSON.parse(localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_remembered_tabs")),a=v___server_username;return $t_uri_virtualmin&&(a+="_"+$('[name="dom"]').val()),!$.isEmptyObject(e)&&e[a]}function __f___ld__tb_stored(){var e=__f___ld__tb_stored_chk();$.isArray(e)&&$.each($(e),function(e,a){__f___nt(a,!1,e)})}function __f___up__tb_vis(){1===$($v__fm__container_fluid+" .nav.nav-tabs li").length?$($v__fm__container_fluid+" .nav.nav-tabs li:first-child").addClass("hidden"):$($v__fm__container_fluid+" .nav.nav-tabs li:first-child").removeClass("hidden")}function __f___up__d(e,a,t){var _=Convert.htmlUnEscape(Convert.uriDecodeComponent(e)).replace("//","/").replace("index.cgi?path=",""),n=_.split("/");$("body.file-manager");$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover("hide"),$($v__fm__container_fluid+" .popover-path-button").find("i").removeClass("invisible").parent().find(".cspinner").addClass("hidden"),__f___upd___cr(n,t),__f___upd___tb(_,a),_?$($v__fm__container_fluid+' #headln2l > div.btn-group > a[href*="'+v___module_file_manager+'"][href*="index.cgi"]').removeClass("hidden"):$($v__fm__container_fluid+' #headln2l > div.btn-group > a[href*="'+v___module_file_manager+'"][href*="index.cgi"]').addClass("hidden"),$.each($($v__fm__container_fluid+' .modal .modal-body form input[name="path"]'),function(){$(this).val(_)}),$($v__fm__container_fluid+' ul li a[href^="bookmark.cgi?path="]').attr("href","bookmark.cgi?path="+Convert.htmlEscape(_)),f_m__bm__c(),favorites_detect(),setTimeout(function(){theme_title_generate(),__r____changed(1),__f___up__tb_vis(),__f___up__tb_store()},0)}function __f___new_symlink(e,a){$.ajax({type:"POST",url:v___server_extensions_path+"/file-manager/create_symlink.cgi?module="+v___module+__f___um()+"&path="+e+"&name="+a,data:!1,dataType:"text",success:function(a){if(Test.strContains(a,v___page_signin_form))return void(v___available_session=0);if(g=$.parseHTML(a),!$(g[1]).find("table.ui_columns").length)return theme_messenger(''+a,10,"error",t+"_error"),void __f_____ul();var t=Convert.htmlUnEscape(Convert.uriDecodeComponent(e)).replace("//","/").replace("index.cgi?path=","");__f___u("upd",$(g[1]).find("table.ui_columns").find(".ui_checked_columns"),1,t,!1,$(g[0]).text())},error:function(e){}})}function __f___nt(e,a,t){var _=Convert.uriEncodeComponent(Convert.htmlUnEscape(e)),t=void 0!==t&&0===t;$this=$("#file-manager-new-instance"),$this.blur(),$($v__fm__container_fluid+" .nav.nav-tabs li").addClass("disabled"),tab___to______create+=1,$($v__fm__container_fluid+" .tabs-top > .nav.nav-tabs").append('
  •  
  • '),$($v__fm__container_fluid+" .tabs-top > .tab-content").append('
    \t \t\t
    \t \t\t\t
    \t \t\t\t\t \t\t
    \t
    ');var n=$($v__fm__container_fluid+" .active table thead").clone();n.removeClass("hidden"),n.prependTo("#list_form_AuthenticThemeTmp"+tab___to______create+" table"),__f____r("get","index.cgi?path="+_,!1,0,[tab___to______create,a,t]),setTimeout(function(){},0),tab___is______new=!0}function __f____r(e,a,t,_,n,i){if(f__ck_init_err(1))return void f__ck_init_err();if(void 0===i&&(i=!1),"object"==typeof n)var o=n[2],r=n[1],n=n[0];else var r=!0;a&&!$.isArray(a)&&(a=uriEncodeParam(a,"path"));var l=Convert.htmlUnEscape(URI.parseQuery(URI(a).query()).path.replace("//","/"));if(void 0===n&&(n=!1),"get"===e){if("undefined"!=typeof getflist&&i&&(getflist.abort(),__f_____ul()),__f__ck_lock()&&r)return;__f_____lo(!0,!0),l=encodeURIComponent(l),getflist=$.ajax({xhr:function(){return new window.XMLHttpRequest},type:"POST",url:v___server_extensions_path+"/file-manager/list.cgi?path="+l+"&module="+v___module_file_manager,data:!1,dataType:"html",success:function(t){if(Test.strContains(t,v___page_signin_form))return void(v___available_session=0);if(theme_message_dismiss("refreshDir_info"),j=$.parseHTML(t),!$(j[1]).find("table").length)return $(j[10]).is("h3")&&3==get_access_level()?theme_messenger(''+$(j[10]).text().replace(" :",":").replace(" ,",","),15,"error","getPath_error"):theme_messenger(''+t,15,"error","getPath_error"),__f_____ul(),$($v__fm__container_fluid+" .active table .cspinner").remove(),void(n&&($($v__fm__container_fluid+' a[href="#tab-'+n+'"]').parent("li").remove(),$($v__fm__container_fluid+' .tab-content .tab-pane[id="tab-'+n+'"]').remove()));$($v__fm__container_fluid+' [data-toggle="popover-path"]').popover("hide");var i=Convert.uriEncodeComponent(Convert.htmlUnEscape(Convert.uriDecodeComponent(a)).replace("//","/").replace("index.cgi?path=",""));!n&&$($v__fm__container_fluid_form+' > input[type="hidden"][name="path"]').val(i),r&&$($v__fm__container_fluid+" div.total").append(__f___tl_v());var s=$(j[0]).append(__f___tl_v()).html();r&&$($v__fm__container_fluid+" .total").html(s),n?$($v__fm__container_fluid+' .tab-pane[id="tab-'+n+'"]').data("totalValue",s):$($v__fm__container_fluid+" .tab-pane.active form table").data("totalValue",s),__f___u("upd",$(j[1]).find("table").find(".ui_checked_columns"),_,!1,[n,r,Convert.uriDecodeComponent(l),s,o],$(e[0]).text()),$("._select-unselect_").parent(".awcheckbox").remove(),$("#__f__c__m").css("display","none"),setTimeout(function(){__f___us_a(),"function"==typeof sortable&&sortable($($v__fm__container_fluid+" .tabs-top > ul.nav"))},10)},error:function(){}})}}function __f___us_a(){if(0==get_access_level()&&1==config_portable_module_filemanager_switch_user){var e=$($v__fm__container_fluid+" #path").val();e&&e.indexOf($g__v__home_base)>-1&&e!=$g__v__home_base?$.ajax({type:"POST",url:v___server_extensions_path+"/file-manager/fetcher.cgi?module="+v___module+"&list_users=1",data:!1,dataType:"JSON",success:function(a){if(Test.strContains(a,v___page_signin_form))return void(v___available_session=0);$.each(Convert.arrFlip(a),function(a,t){var _=Convert.uriEncodeComponent(a.split(":")[2]);(e==_||e.startsWith(_+"%2F"))&&localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode",t),__f___us_tl()})},error:function(e){}}):(__f___us_m_def(),__f___us_tl())}}function __f___us_m_def(){localStorage.setItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode","")}function __f___us_tl(){var e=localStorage.getItem(v___server_hostname+"-settings_thirdparty_filemanager_usermode"),a=theme_language("theme_xhred_filemanager_user_switch")+"

    "+theme_language("theme_xhred_filemanager_user_switch_current_user")+": "+(e?e:v___server_username)+"",t="#file-manager-switch-user";$(t).attr("data-original-title",a),e?$(t).addClass("btn-warning"):$(t).removeClass("btn-warning")}function __f___tl_v(){return'. '+theme_language("theme_xhred_filemanager_selected_entries").replace("%value","0")+' '}function ___f__tw(){function e(e){void 0===e&&(e=$('input[name="config_portable_module_filemanager_hide_toolbar"]:checked'));var a=["config_portable_module_filemanager_hovered_toolbar"];"true"==e.val()?$.each(a,function(e,a){$('input[name="'+a+'"], select[name="'+a+'"]').prop("disabled",!0),$('input[name="'+a+'"], select[name="'+a+'"]').parent(".aradio").addClass("disabled")}):$.each(a,function(e,a){$('input[name="'+a+'"], select[name="'+a+'"]').prop("disabled",!1),$('input[name="'+a+'"], select[name="'+a+'"]').parent(".aradio").removeClass("disabled")})}function a(){$.ajax({type:"POST",url:v___location_prefix+"/index.cgi/?xhr-get_command_exists=1&xhr-get_command_exists_name=zip",data:!1,dataType:"text",success:function(e){if(Test.strContains(e,v___page_signin_form))return void(v___available_session=0);e?$($v__fm__container_fluid+' select[name="method"] option[value="zip"]').prop("disabled",!1):($($v__fm__container_fluid+' select[name="method"]').val("tar"),$($v__fm__container_fluid+' select[name="method"] option[value="zip"]').prop("disabled",!0),theme_messenger(''+theme_language("theme_xhred_global_no_such_command").replace("%cmd","zip"),15,"error"))},error:function(e){}})}__f___globals(),__f_____undel();var t=config_portable_module_filemanager_hide_tree_view?' class="hidden"':"",_=config_portable_module_filemanager_hide_tree_view?" hidden":"";if($("body.file-manager").attr("class")&&$("body.file-manager").attr("class").indexOf(v___module_file_manager)>-1){if($__f__rf_s="fa-refresh","object"!=typeof jsPanel&&$.getScript(v___location_prefix+"/unauthenticated/js/jquery.jspanel."+v___source_type+".js?"+v___theme_version_plain,function(e,a,t){$('head link[rel="stylesheet"]:first').before('')}),setTimeout(function(){$($v__fm__container_fluid+" #upload-form").removeAttr("onsubmit"),$($v__fm__container_fluid+" #upload-form").append("

    "+theme_language("theme_xhred_upload_initial_info")+"

    "),$($v__fm__container_fluid+' #upload-form input[name="upfiles"]').removeClass("heighter-28"),$($v__fm__container_fluid+" #readyForUploadDialog .modal-footer").prepend('"),$($v__fm__container_fluid+' #readyForUploadDialog button[onclick="uploadFiles()"]').addClass("disabled").html(' '+theme_language("theme_xhred_global_upload")),$($v__fm__container_fluid+" #readyForUploadDialog #readyForUploadList").remove()},100),"config.cgi"==v___location_file){$('input[name="per_page"], input[name="disable_pagination"], input[name="menu_style"]').parents("td.col_value").parent("tr").addClass("hidden"),$("#columns_size").parent(".awobject").remove(),$('input[value="size"]').parent(".awcheckbox").addClass("hidden");var n=$('input[name="columns"]:visible');$('form[action="save_config.cgi"]').append('');var o=$(".table-subtable .sub_table_container.table-hardcoded").find("tbody") ;o.append(' '+theme_language("theme_xhred_filemanager_records_per_page")+' '+theme_language("theme_xhred_filemanager_sorting")+' '+theme_language("theme_xhred_filemanager_hide_tree_view")+'   '+theme_language("theme_xhred_filemanager_tree_expand_search")+'   '+theme_language("theme_xhred_filemanager_tree_view_depth")+' \t\t\t\t\t\t\t\t\t  '+theme_language("theme_xhred_filemanager_tree_exclude_on_first_load")+' \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t \t\t\t\t\t'+theme_language("theme_xhred_filemanager_hide_toolbar")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t \t\t\t\t\t'+theme_language("theme_xhred_filemanager_hovered_toolbar")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'+theme_language("theme_xhred_filemanager_hide_actions")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'+theme_language("theme_xhred_filemanager_settings_tabs_remember_state")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'+theme_language("theme_xhred_filemanager_context_calculate_size")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t'+theme_language("theme_xhred_filemanager_settings_force_tar_download")+'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t