/** * Dark Slim theme for elFinder 2.1.54 or newer. * Not supported MS IE! * * @author John Fort * @date 01.01.2021 * @link https://github.com/johnfort/elFinder.themes **/ /*************************************/ /* MAIN */ /*************************************/ /* Hard reset main rules */ div.elfinder{ font-size: 19px; } .elfinder-mobile{ font-size: 18px; } div.elfinder, .elfinder *{ font-family: 'Trebuchet MS', 'Tahoma', 'Arial', 'Verdana', 'Helvetica', 'sans-serif'; outline: 0 !important; border: 0 !important; -webkit-border-radius: 0.001px !important; -moz-border-radius: 0 !important; border-radius: 0.001px !important; /* Fix (must be > 0) for 'select' elem in 'Opera' browser */ } .elfinder *{ -webkit-box-shadow: none !important; -moz-box-shadow: none !important; box-shadow: none !important; } .elfinder .elfinder-button-menu, .elfinder .elfinder-button-search-menu, .elfinder .elfinder-contextmenu, .elfinder .elfinder-contextmenu-sub, .elfinder-dialog, .elfinder .elfinder-quicklook{ -webkit-box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important; -moz-box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important; box-shadow: 0 5px 20px 2px rgba(0, 0, 0, .14), 0 6px 26px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4) !important; } .elfinder .ui-icon, .elfinder .elfinder-toolbar *, .elfinder .elfinder-navbar *, .elfinder .elfinder-contextmenu *, .elfinder .elfinder-table-header-sticky *, .elfinder .elfinder-dialog-resize .elfinder-resize-handle *{ background-image: none !important; } .elfinder .ui-icon-gripsmall-diagonal-se{ font-size: initial; opacity: .6; } .elfinder a, .elfinder a:link, .elfinder a:visited{ color: #999; text-decoration: underline; } .elfinder a:hover, .elfinder a:focus, .elfinder a:active{ color: #ccc; text-decoration: underline; } /* Reset jquery-ui rules in elfinder container */ div.elfinder, .elfinder .ui-widget, .elfinder .ui-widget-header, .elfinder .ui-widget-content, .elfinder .ui-state-default{ color: #999; } div.elfinder, .elfinder .ui-widget, .elfinder .ui-widget-header{ background: #1d1d1d; } .elfinder .ui-widget-header{ padding: .4em .2em .4em .7em; font-weight: normal; } .elfinder-rtl .ui-widget-header{ padding: .4em .7em .4em .2em; } .elfinder .ui-widget-content{ background: #292929; } .elfinder .ui-state-default{ background: none; } .elfinder .ui-state-hover, .elfinder .ui-state-hover:hover, .elfinder .ui-state-hover:focus, .elfinder .ui-state-focus, .elfinder .ui-state-focus:hover, .elfinder .ui-state-focus:focus, .elfinder .ui-state-active, .elfinder .ui-state-active:hover, .elfinder .ui-state-active:focus{ color: #ccc; background: #4e4e4e; } .ui-selectable-helper{ border: 1px dashed #666; background: rgba(255, 255, 255, .05); } .elfinder .ui-tabs-nav{ padding: 0; } .elfinder-rtl .ui-tabs-nav li{ float: right; } .elfinder .ui-tabs-nav li.ui-state-default{ margin: 0; padding: 0; font-weight: normal; background: #222; } .elfinder .ui-tabs-nav li.ui-state-default a{ padding: 6px 10px !important; color: #666; text-decoration: underline; } .elfinder .ui-tabs-nav li.ui-state-hover a{ color: #999; } .elfinder .ui-tabs-nav li.ui-state-active{ background: #292929; } .elfinder .ui-tabs-nav li.ui-state-active a{ color: #999; text-decoration: none; cursor: default !important; } .elfinder .ui-tabs .ui-tabs-panel{ padding: 10px; } .elfinder .ui-checkboxradio-label{ background: #444 !important; } .elfinder-rtl .ui-checkboxradio-label .ui-widget{ float: right; } .elfinder .ui-checkboxradio-label.ui-state-active, .elfinder .ui-checkboxradio-label.ui-controlgroup-item:hover, .elfinder .ui-checkboxradio-label.ui-checkboxradio-radio-label:hover{ background: #333 !important; } .elfinder .ui-slider-horizontal.ui-widget.ui-widget-content{ margin: 0 8px; padding: 0; background: #3e3e3e; } .elfinder .ui-slider-horizontal .ui-slider-handle{ top: -.22em; background: #4e4e4e; } /* Reset form elements with jquery-ui */ .elfinder legend, .elfinder label{ font-weight: normal; } .elfinder label.ui-state-hover, .elfinder label.ui-state-hover:hover{ background: none; } .elfinder fieldset{ margin: 0 !important; padding: 2px 10px 10px !important; border: 1px solid #444 !important; border-radius: 8px !important; background: transparent !important; } .elfinder legend{ margin: 0 auto !important; padding: 2px 4px 2px !important; } .elfinder input, .elfinder button, .elfinder select, .elfinder textarea, .elfinder .elfinder-dialog-upload .ui-button, .elfinder .elfinder-resize-preset-container .ui-button{ -moz-appearance: none !important; -webkit-appearance: none !important; appearance: none !important; display: inline-block; margin: 0 !important; padding: 2px 3px !important; /* input, select, textarea */ vertical-align: middle; font-size: 13px !important; font-weight: normal !important; color: #999 !important; /* input, select, textarea */ background: #3e3e3e !important; /* input, select, textarea */ box-sizing: border-box !important; } .elfinder input, .elfinder .elfinder-dialog-upload .ui-button, .elfinder .elfinder-resize-preset-container .ui-button{ height: 28px !important; } .elfinder button, .elfinder input[type="button"], .elfinder input[type="reset"], .elfinder input[type="submit"], .elfinder .elfinder-dialog-upload .ui-button, .elfinder .elfinder-resize-preset-container .ui-button{ padding: 4px 12px !important; height: 28px !important; color: #999 !important; background: #444 !important; text-align: center !important; -webkit-user-select: none !important; -moz-user-select: none !important; user-select: none !important; } .elfinder select{ -moz-appearance: menulist !important; -webkit-appearance: menulist !important; appearance: menulist !important; height: 28px !important; } .elfinder textarea{ overflow: auto; } .elfinder input[type="radio"], .elfinder input[type="checkbox"]{ margin: 2px !important; width: 16px !important; height: 16px !important; vertical-align: middle !important; cursor: pointer !important; } .elfinder input[type="checkbox"]{ position: relative; } input[type="radio"]{ border-radius: 50% !important; } .elfinder input[disabled], .elfinder button[disabled], .elfinder select[disabled], .elfinder textarea[disabled], .elfinder input[readonly], .elfinder textarea[readonly]{ pointer-events: none; cursor: not-allowed !important; color: #888; -webkit-box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1); -moz-box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1); box-shadow: inset 1px 2px 3px rgba(0, 0, 0, .1); opacity: .4; } .elfinder button:hover, .elfinder input[type="button"]:hover, .elfinder input[type="reset"]:hover, .elfinder input[type="submit"]:hover, .elfinder .elfinder-dialog-upload .ui-button:hover, .elfinder .elfinder-resize-preset-container .ui-button:hover, .elfinder button:focus, .elfinder input[type="button"]:focus, .elfinder input[type="reset"]:focus, .elfinder input[type="submit"]:focus, .elfinder .elfinder-dialog-upload .ui-button:focus, .elfinder .elfinder-resize-preset-container .ui-button:focus{ background: #333 !important; } .elfinder button[disabled]:hover, .elfinder input[disabled][type="button"]:hover, .elfinder input[disabled][type="reset"]:hover, .elfinder input[disabled][type="submit"]:hover{ background: #444 !important; } .elfinder input:focus, .elfinder select:focus, .elfinder textarea:focus{ background: #4e4e4e !important; } .elfinder button:active, .elfinder input[type="button"]:active, .elfinder input[type="reset"]:active, .elfinder input[type="submit"]:active, .elfinder input[type="checkbox"]:active, .elfinder input[type="radio"]:active, .elfinder .elfinder-dialog-upload .ui-button:active, .elfinder .elfinder-resize-preset-container .ui-button:active{ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important; -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important; box-shadow: inset 0 2px 4px rgba(0, 0, 0, .2) !important; } .elfinder input[type="radio"]:checked{ border: 4px solid #3e3e3e !important; background: #888 !important; } .elfinder input[type="checkbox"]:checked:before{ content: ''; position: absolute; top: -5px; left: 7px; display: table; width: 5px; height: 14px; border: 2px solid #999; border-top: 0; border-left: 0; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); transform: rotate(45deg); } .elfinder button::-moz-focus-inner, .elfinder input::-moz-focus-inner{ padding: 0; } .elfinder input:-moz-placeholder, .elfinder textarea:-moz-placeholder, .elfinder input::-webkit-input-placeholder, .elfinder textarea::-webkit-input-placeholder{ color: #333 !important; } /* Effects */ @-moz-keyframes blink{ 0%{opacity: 1;} 50%{opacity: .2;} 100%{opacity: .8;} } @-webkit-keyframes blink{ 0%{opacity: 1;} 50%{opacity: .2;} 100%{opacity: .8;} } @keyframes blink{ 0%{opacity: 1;} 50%{opacity: .2;} 100%{opacity: .8;} } @-moz-keyframes spin{ 0%{-moz-transform: rotate(0deg);} 100%{-moz-transform: rotate(359deg);} } @-webkit-keyframes spin{ 0%{-webkit-transform: rotate(0deg);} 100%{-webkit-transform: rotate(359deg);} } @keyframes spin{ 0%{transform: rotate(0deg);} 100%{transform: rotate(359deg);} } /*************************************/ /* TOOLBAR */ /*************************************/ .elfinder .elfinder-toolbar{ padding: 4px 0; } .elfinder .elfinder-toolbar .elfinder-buttonset{ margin: 1px 5px; background: transparent; } .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button.ui-state-hover{ background: none; } .elfinder .elfinder-toolbar .elfinder-button{ cursor: pointer; } .elfinder .elfinder-toolbar .elfinder-button-text{ margin: 0 0 0 4px; } .elfinder-rtl.elfinder-touch .elfinder-toolbar .elfinder-button-text{ margin: 0 4px 0 0; } .elfinder .elfinder-toolbar .elfinder-button-menu.elfinder-button-search-menu{ background: #292929; } .elfinder .elfinder-toolbar .elfinder-button-search{ margin: 1px 5px; min-height: 24px; background: transparent; } .elfinder .elfinder-toolbar .elfinder-button-search input{ height: 24px !important; padding: 0 22px !important; color: #999 !important; background: #292929 !important; font-size: 14px !important; -webkit-border-radius: 2px !important; -moz-border-radius: 2px !important; border-radius: 2px !important; box-shadow: inset 0px 0px 8px rgba(0, 0, 0, .2) !important; } .elfinder-touch .elfinder-toolbar .elfinder-button-search input{ padding: 0 24px !important; height: 28px !important; } .elfinder-toolbar-swipe-handle{ height: 40px; background: linear-gradient(to top, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%); } /*************************************/ /* STATUSBAR */ /*************************************/ .elfinder .elfinder-statusbar{ padding: 3px; padding-right: 18px; background: #292929; color: #666; } /*************************************/ /* WORKZONE */ /*************************************/ .elfinder .elfinder-workzone{ background: #333; } .elfinder .elfinder-workzone *{ font-family: 'Verdana', 'Tahoma', 'Arial'; } .elfinder .elfinder-workzone .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board{ /* Trash */ background-image: linear-gradient(45deg, #00000008 25%, transparent 25%, transparent 75%, #00000008 75%, #00000008), linear-gradient(45deg, #00000008 25%, transparent 25%, transparent 75%, #00000008 75%, #00000008); background-size: 20px 20px; background-position: 0 0, 10px 10px; } .elfinder-cwd-wrapper{ color: #bbb; } .elfinder .elfinder-cwd-file.ui-state-hover, .elfinder .elfinder-cwd-file.ui-state-hover .ui-state-hover, .elfinder .elfinder-cwd-file.ui-state-hover .ui-state-active, .elfinder .elfinder-cwd-file.ui-selected, .elfinder .elfinder-cwd-file.ui-selected .ui-state-hover, .elfinder .elfinder-cwd-file.elfinder-droppable-active{ color: #f3f3f3; } .elfinder .elfinder-cwd-file.ui-state-hover, .elfinder .elfinder-cwd-file .ui-state-hover, .elfinder .elfinder-cwd-file.elfinder-droppable-active{ background: #444; } .elfinder .elfinder-cwd-file .elfinder-cwd-icon{ float: none; } .elfinder .elfinder-ui-progressbar{ background: #00821a; filter: none; } /* path in workzone (case of swipe to navbar close) */ .elfinder .elfinder-workzone-path{ padding: 3px; background: #252525; color: #666; } .elfinder .elfinder-workzone-path .elfinder-path-roots, .elfinder .elfinder-workzone-path .elfinder-path{ display: inline-block; position: relative; margin: 0; } /* view "icons" */ .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file{ margin: 2px; } .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover{ background: transparent; } .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover .elfinder-cwd-file-wrapper, .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-state-hover .elfinder-cwd-filename, .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected .elfinder-cwd-file-wrapper, .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.ui-selected .elfinder-cwd-filename, .elfinder .elfinder-cwd-view-icons .elfinder-cwd-file.elfinder-droppable-active{ -webkit-border-radius: 3px !important; -moz-border-radius: 3px !important; border-radius: 3px !important; background: #444; } /* list view */ .elfinder .elfinder-cwd-wrapper-list{ padding-bottom: 1px; } .elfinder .elfinder-cwd table{ margin: 0; padding: 0; color: #bbb; } /* list view: header */ .elfinder .elfinder-cwd table thead tr{ background: #292929; vertical-align: top; } .elfinder .elfinder-cwd table thead td .ui-resizable-e, .elfinder .elfinder-cwd table thead td .ui-resizable-w{ top: 10%; margin: 0; width: 3px; height: 80%; } .elfinder .elfinder-cwd table thead td .ui-resizable-e{ right: 0; border-right: 1px dashed #444 !important; } .elfinder .elfinder-cwd table thead td .ui-resizable-w{ left: 0; border-left: 1px dashed #444 !important; } .elfinder-touch .elfinder-cwd table thead td .ui-resizable-e, .elfinder-touch .elfinder-cwd table thead td .ui-resizable-w{ border-width: 2px !important; } .elfinder .elfinder-cwd table thead td{ color: #666; } .elfinder .elfinder-cwd table thead td.ui-state-active{ color: #bbb; background: #333; } .elfinder .elfinder-cwd table thead td.ui-state-hover{ background: #2f2f2f; } .elfinder .elfinder-droppable-active .elfinder-table-header-sticky table{ border: 1px solid transparent !important; border-bottom: 0 !important; } /* list view: markers files */ .elfinder .elfinder-cwd-view-list .elfinder-perms, .elfinder .elfinder-cwd-view-list .elfinder-lock, .elfinder .elfinder-cwd-view-list .elfinder-symlink{ opacity: .9; transform: scale(0.6); } .elfinder-cwd-view-list .elfinder-perms, .elfinder-cwd-view-list .elfinder-symlink{ bottom: 0; } .elfinder-cwd-view-list .elfinder-lock{ top: 4px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-perms{ right: 8px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-lock{ right: -10px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink{ right: -7px; } /* droppable */ .elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{ outline: 1px dashed #666 !important; outline-offset: -1px; } /* in lazy execution status */ .elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after{ background: #666; -moz-animation: blink 1s infinite linear; -webkit-animation: blink 1s infinite linear; animation: blink 1s infinite linear; } /*************************************/ /* NAVIGATION PANEL */ /*************************************/ .elfinder .elfinder-navbar{ padding: 5px 3px; background: #252525; } .elfinder-ltr .elfinder-navbar{ padding-right: 10px; } .elfinder-rtl .elfinder-navbar{ padding-left: 10px; } .elfinder .elfinder-navbar .ui-resizable-handle{ width: 10px; background: none; } .elfinder .elfinder-navbar .ui-resizable-handle:before{ content: ''; position: absolute; top: 50%; right: 1px; width: 2px; height: 20px; margin-top: -10px; border: 1px solid #444; border-top: 0; border-bottom: 0; } .elfinder .elfinder-navbar .elfinder-tree{ margin: 0; } .elfinder-navbar-dir{ padding: 4px 12px; } .elfinder .elfinder-navbar .ui-state-hover, .elfinder .elfinder-navbar .ui-state-active{ background: #1f1f1f; } .elfinder .elfinder-navbar .elfinder-perms, .elfinder .elfinder-navbar .elfinder-lock, .elfinder .elfinder-navbar .elfinder-symlink{ opacity: 1; transform: scale(0.5); } .elfinder-touch .elfinder-navbar .elfinder-perms{ bottom: 6px; } .elfinder-ltr .elfinder-navbar-swipe-handle{ background: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%); } .elfinder-rtl .elfinder-navbar-swipe-handle{ background: linear-gradient(to left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, 0) 100%); } /*************************************/ /* NAVIGATION DOCK */ /*************************************/ .elfinder .elfinder-navdock .ui-resizable-n{ top: -7px; height: 14px; } .elfinder .elfinder-navdock .elfinder-quicklook{ padding-top: 32px; background: #272727; } .elfinder .elfinder-navdock .elfinder-quicklook-titlebar{ position: absolute; background: #1d1d1d; z-index: 1; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook-title{ text-align: left; } .elfinder-rtl .elfinder-navdock .elfinder-quicklook-title{ text-align: right; } .elfinder .elfinder-navdock .elfinder-quicklook-preview{ height: 100%; background: #272727; } /*************************************/ /* CONTEXTMENU */ /*************************************/ .elfinder .elfinder-contextmenu-header{ font-size: 0.8em; } .elfinder .elfinder-contextmenu-header span{ font-weight: normal; font-size: inherit; } .elfinder .elfinder-contextmenu, .elfinder .elfinder-contextmenu-sub{ color: #999; background: #3e3e3e; } .elfinder .elfinder-contextmenu-item{ padding: 5px 30px; } .elfinder-touch .elfinder-contextmenu-item{ padding: 8px 30px; } .elfinder .elfinder-contextmenu-separator{ height: 0; border-top: 1px solid rgba(153, 153, 153, .1) !important; } .elfinder .elfinder-contextmenu-extra-icon a, .elfinder .elfinder-contextmenu-extra-icon span{ position: absolute; z-index: 1; } /*************************************/ /* BUTTON MENU */ /*************************************/ .elfinder .elfinder-button-menu{ background: #3e3e3e; } .elfinder .elfinder-button-menu-item-separated{ border-top: 1px solid rgba(153, 153, 153, .1) !important; } /*************************************/ /* DIALOGS */ /*************************************/ .dialogelfinder .dialogelfinder-drag{ font-size: 15px; font-weight: bold; } .dialogelfinder .dialogelfinder-drag-close{ position: relative; top: 6px; right: 6px; float: right; margin: 0; font-size: 16px; } .elfinder .elfinder-dialog{ background: #333; } .elfinder .elfinder-dialog .elfinder-dialog-title{ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .elfinder-touch .elfinder-dialog .ui-dialog-titlebar span.elfinder-dialog-title{ padding: 0; } .elfinder .elfinder-dialog .ui-resizable-se{ opacity: 0; } /* title buttons */ .elfinder .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button, .elfinder .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{ float: right; left: auto; right: 6px; top: 6px; height: auto; width: auto; margin: 0; padding: 0; padding-left: 5px; } .elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button, .elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{ float: left; right: auto; left: 5px; padding: 0; padding-right: 5px; } .elfinder .elfinder-dialog .elfinder-titlebar-button .ui-icon{ height: 16px; width: 16px; opacity: 1; } .elfinder .elfinder-dialog .elfinder-titlebar-button:hover{ color: #ccc; } .dialogelfinder .dialogelfinder-drag-close:hover, .elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover{ color: #c32020; } /* contents */ .elfinder .elfinder-dialog .ui-widget-content{ padding: 10px; } .elfinder .elfinder-dialog.elfinder-dialog-help > .ui-widget-content, .elfinder .elfinder-dialog.elfinder-dialog-help > .ui-widget-content > .ui-widget-content, .elfinder .elfinder-dialog.elfinder-dialog-preference > .ui-widget-content, .elfinder .elfinder-dialog.elfinder-dialog-preference > .ui-widget-content > .ui-widget-content{ padding: 0; } /* bottom buttons */ .elfinder .elfinder-dialog .ui-dialog-buttonpane{ padding: .5em; border-top: 1px solid #3e3e3e !important; } .elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{ margin: 0 0 0 .4em !important; } .elfinder-rtl .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{ float: left; } .elfinder-rtl .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{ margin: 0 .4em 0 0 !important; } .elfinder .elfinder-dialog .ui-dialog-buttonpane button span{ padding: 0; } .elfinder .elfinder-dialog .ui-dialog-buttonpane button span.ui-icon{ padding: 0; } /* dialog: help/preference */ .elfinder .elfinder-dialog .elfinder-help{ margin: 0; } .elfinder .elfinder-dialog .elfinder-help .elfinder-help-logo{ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABgCAMAAADcrSdwAAACNFBMVEVHcEwjHhspIh4mIyMnIR4nIh4dGhgqJyEiGxYnJyclIh8oIh0hHRsnIiEkIB8iHx4eGBogICEhICALAAAjHhwjIB4jIB8lHx4iICEfHyEiIB4kHx0iHx4jHx4jICAhHh4mISAfFxIgGRQeFRElIR4jIB8gICH///8pIh7u7u3n5+bq6unl5eW60+vt7ezs7Ovv7+/o6Ojw8PAgICIXFxceHiDz8/IrJCAZGRoUFBXx8vEfFxIiIyUbGhwXFRUSERO2zeGoxd/L2uQODA20zeHI2eWQt9wdHB2qxuAaGBf39/fE1uMkHBdbV1UhGRX19fVBSFCTud4eHR50c3InJyn+/v67urrO3umryOOxyuDA2vLW1tWWu94mHxoJCAg1ODteXFsdFA+fnp2mxOD6+vrb29q50eScvt9VUlGtyeBqaGjFxcWiwt/BwMDMzMs9RExNV2ErLC7h4eFCPz0vMDPQ0M/JyMeesMCKiIeWveOamJepqKcvKSWysrFIRkU1LyudweNwbm04NDLE2OiTkpJIUFeEg4I+ODWko6JLTE5/fXw2PUMnIR1gdIaixOSPjo2+0uJ6eHhPSkd3g4+cu9fe3t2Upreov9PA1ea3t7awzOZkYmFofpOMobW60uevrq1VZna9z9yCn7qGpsV6mLWls719j6COsNKJmKSnuci+vb1NWmdXYGe+1++0ydlwi6ZsdoCzwsx+ipRha3JzfYdASlSVrMKWoqxteodlcn7J0NUhHh67pT+nAAAAJnRSTlMAuPMaZncKEPMTVXHSO6abBfjeAciASykw8SOSwehBsF/p3fiJazBiy+cAABBySURBVGjezZoHVxrbFsc1xhK7xhJji5oMIgQcZigDjuTaCIoQEUskCHIlEogaBY3dYOya2GKLGpOb3ttNW+/LvXNmQGcQk2feu2u9HVcWjMvzY//3Ofvssw9BQUe24PSTQf+0hWQeC/nHIWekx0JOR0ZGpsT/g5Ds/GMnjkvnTfmn/jfjnYhNOfDsdBoFGRyURnqfhKWc+C8Yp5Ow6HD/h+cwCtKzOhrlfZJsyj2b+ruMrEREhSX7PTyZQUM6eK5070fJqfaM5mWnhP1WgNPEYrM+zU/51ASEgvTK7dn0k1hpR2XPgksbHXVkzMlkTK//9NGsCmZPolDMC6l0RFPLJSZvVifXVfJ3l01H1SwsDiMN3xoaXsiQM6xfJPkgrZO58JPHZ0zZdHK5XNLqiT6iJyHBGG5+2lBSUvIGT9xbemGnY6ISEPE8DRnIywKjnlEMVMohZHUq7miMU9FY8aWPkFHysUtM/XF4Vmh2YhqCIUjREA1xSvNyg5NzlwvkImC6elPkkRgpmUjxm0cUo6ThE56QFZYSl4hgAABMVm2PgBCdvHdgyT7aMlgJGaLKvogjJZtzCWLZhyqaUVJSNSFLjEZoADSldYuGiHSVOoFxk3ZELqjO8KbNE3FRv0TEp2Mq5FPJnjU8LRLvIxCxYdXihcCxJTqKIZIYR5N9UmtMv6KcyMZkXd+8bjQ0gBcNfxfvMxB8q656H7JnOquCzkBncsZ2a7VRv8okcFqVl5eUA8i3lZcN5SWPOsl9iHKXEwgiGTflgsCHpSvsPa08z08pWYlY8cxHyKgCg3+WKbsAsOGbWOxj6N0FASEiebtdGxcTrFni60QS9GeUM2nUtCovryopb/g4QQB1ZqoA8fOeYISHQ8vVUSkXFTJMpEMXpHlDVrkcvJGjnvmok4dlEjitSsqrqsqrGp6acThq8QoQ7KPZJxixSUHOSQeN3VydTs7AyHWb9nodTdYZRxPDDskkYsOncgpRUv7CIKP1KXpaUgWzC2XkmJCChEpNQ1PVs8M2iY7hj4TnhYoKaw9ZmvHZGP65oQpaedXfpB5MV5yEgi0C7hucdmSJ44Xkz5s0Cu2Yp17IwPhe6Qa0yYclrESx4WY5RflAgFCTBssMCQUrryp/2aWnIK/2IJSZFBr7MFdSyDZdvTT4sALgZFaCrPMdpHw0gCH1Xb2cygUcCgYon6ArpEvOhgDTaLd6JFymSYyu3J+kmGSs+DNU6yUGHFECaThctx7BJx5VVT2aUINHfZwDkPx8xWi9nMEQ8bciYn6WUoIR8gVwZXECp/XnCACEFuxmkRghrYOzA5X+kPzScR0DIp9tCf35gs9UuV/eXrx9s0gP5HLW6fqgSnrD09tVtz8UI5hYqezg+EE0pgVeIRNSPxTrWyOBIxOJQXEWb8N8RRZVj9DrQz3xaKPq3RwJV7zQD6Kd2pSI2DEZ1x6nJlJKelJgn9Kx4r9vL248ugRCIJb51mDxCnDvmx5OuXYaotWa5gFivsVi1HEFLCvkWXJSY0KDc7RjU5kBS7KwDDG25hVs36Bgixswu5CuV3a44j2eEZPCpDX1oXKBv0mcQxEK6fLsrm3YdPwQwci59Q1aMEaGn3i0uLEOswtJSo+Fg9yl47fXTlVvygsFB03eV23tQCUSecFyUnzgdQ+S5OLi4jso2L5Rgr2gvJs/lnoOQArlom6BRBDIuKhQJ4cigqUfaDZnwV1Q9mxjcWOtSMwS7ObtjZdmFfUmM/Nf490SkaDQLxpyn3Rc7y9ExrFANUw2hKgMNwHlO0sw9cTNz10ARuI4TooRmXnSKPFntDv9AySfDVBfgCqUCsGld4tX33XKmBQxgpME0TVi2aoeMRAEqXQP8ERshnSol02RC/s07O0rPiQ1Nd1bMxT/eHB1Yw1jCobolV1L9XwdSCy61WFHEUESWzbGmKLVEY22GmV4JxLVV5uSmEE5dTY6DcPEXtOrXmxc2PjAFIxEJlc5+2b04KRyxsigeBQgj03vTYVCSY8nP5NZhYfEJSAkri/aM7H55VWWYITLyWFaXd1uF0nM2ERC7+IY0MIcM9Ltg6wujOalh7ALCBkysbJ2k2HrFy482BeMmOmGQ1f2TE8u9Q0a6+CbnjEZscUTCKGBgJiolDwop94XGl152axjR2SaWD2xVvbgKtMuAHvgEwwf4YNRW3dnZM3QEEs7RQG+DFCDckFA6FRmEQroB65g9tpI0yN/X35woeyAXfAKpjf0gDFRh7LU/eb7yocbhmZ8EswAzrCMdBsLoSMLLXS+nJd2iChXuI7oePa2iz17UBbQrq4ZoGDKcTAif6bZsLL+tqmp6fz6D3GpA84zD6GchK4IqrW+LWxAQus3nneasevGYuSnQxhAwRsgu5BmAYejszTP3Wx6ex7a26YdQ+ksCIyxiByzAX3kkwpf6ndwaciwhnF0jknA35SVXYZWdvUyy66tv7hRBJY35Yi11P2y6bzPmnbEOIhLnYMgYKgLO4bmvbWFq5sKSmGvJjc4PTQy5jQ8QMeKu14CRtnlsrK1zxOXmNbZhSuVZlCoGMFub1Y+22cAyo9SSyuHs0kQtSIeTyi0aPaCwuUBE6zWbi1PDZkUEYmhQSFp+A/agbIVsbKUbYTBPm0cw0eA/Julc2UMxvm36wY9YHd34TMFQh5P3ufTS1MPoeBHIOTbOuqnJ4cyglIQ/dp9yLi/o5IZJofrmdbb3cox6gkHUGu2+TvTEUC50TwNFs4I7rYJAGTaBwErhWJA9wRckc42GhwUqzevX7527drlstfFBvaips0JJhAQ31L6gg1p+t5MPScMPQAi2vVNrxarnMcwgRFAEsnOiwBx7fL6nHIrAINTTygXwDq0E2t+kE/NteDXDqKoFwRBNKzxQQZEByCZFOTatcb1OcJeFwDSTsCarq5aueMHWWmeBb/eIoo6BCxIAE8yVHPrEHLt/pticlx+ENJBEvAT1zav+MXkc/MA8HAG7zJCyOCeXNNMiEAEY3IOKfp6n4LsYCTuctQybWlhk8/vwu1grk43T7AZl81EL4fDc+Mj3XB2jbf4ZtewVy5w/oLza3AoOOhUQvHK/YvQ7j8zFPvP4VLC7XCTBpCBuw0kKyhNz5RwZjtxwiGAn9jh9WQ+3ymgGN3WhSVqpUjjguKTVHPXGylK49cfr2+w7FKXGsfBih+k5nDn5beMZeIuBTOYM6lUDohQVGibMnlX/JRNiAITdGjycqKD48CaD4NdMnybduVi4/1Gll38496zCVAGyaBeBebS12U+X5rWO0urgSPoGAlmMIoWDuytxWqUByGFm5rjJ/bycHi02LBz/4+LgeyPxvvfYflFDIMP3WsovfT1fFMTyMMPdsylLrgZLyiBWmBIoWUv7n0iyEBFA3mp7JrR/LXxj4DWuENVX6QLhcvS3Cy+8Wzt69rKF7x5xgZ3LQOJtHPBkNwlX9xNr7gURODJZbUW4zC1eScw5XonVUeKCUcl3FGWipqbCZmyudm9IALvhTMy5RJ0BBX2jtIx0Sx3Uwxe9wh7ZwwLxkjD9r3Gxj/9rfGOr15RLkEKxzbgmBmZ8QzCzZgjsBAyFx1mlGul9WoZL6TeC3uGckJZp+zwbEyvntv+eu860wBjZ7+2Jzw8enG26lrpFzY7QXa10+KAj14LQ28aM9JQtOBVtSY6ktkxiD+bgKnwornO/a3k9b0//7zHLLoJ12YrIxFIpt04aRguRH2Q1WUtDLsPinL50y5FMKvezspOwBC9SkXSJit+1nh9Xyy6usOrdwvo7Na6ah0hSMJcvzckiLRzyKRxGXn7T7g2/9Ir6NS5uNjYDN955OGf1+/usA5CiJrECbdldtw6vmQ3KGUy2VaPAGUY16pQDHKZT3jcDsf8wRNdSBr9oedAeO6xTyiqG3NqUg/2Y6WSkIlx0r6L8lC2jQ/4P5H35QVo6cfBiltc9Nfd63fZYqkvtd179kWFILAhgukdm3wu6m8Cgd8Dns0VHKBbdAqeHdR37rbd/Yt9aoTc6xMkIhsZS4g8K3WCdS0QCngFaCADtStNndYGbOTEYoj6y0GxiiF3Ww2aqQJLRNgZqVMutFkdfUZBQQATWCedq+AToPzq3IAdqRhMb3gMBryDs2ZWJ+A+BsWRcphD9bvGrbUurbZlaliAHmDwesZapCO1gz28V/mBu0Ugx2wfEAsGqa0NFpNKK32OB30omEc08318nh8DRT15Z0IzcrSjFnvE6UCM45j6RltbGyWWTKnUM8R6D1sHpNnJ6kjMK8BE9hNrUHOWbkhER8QGbKCnqdzPb7XdgjNLZp8ed5NesdrantNHXxIDbXRmb0U7Nczyhdc7luTNv/GpgRoSYUmI6j1gQLHIGZBoX+lpscCzh96JAC8EWF0ik2mQx9831NNy/KddItBZeQjEuvLF19zSwSZE8R3AeIL4Dl35/pCWASG/YO8f6pxK/FnbHrY8nrddaXsMT3Gglw0yLTieqDsr2toqvB1oUinLPxbOgMy3jE0XFDA84QuGD+8Owm6XGHty6wqA0Nthn7HXLgNigWe36OUvJkbGncsR+xCTYmgWBJ7P8ITPFy5ozx56+wP2rjuAAexhMaQQRaQMLv9bV9r+gl1JRI8MgOqv2guZ1yg0rskOsOT8rIDv0EYe2oFE9Nv9FKTiIUlFHDa4OiuuXKmBHUhErIf1BA3RKjSjy0u7NiYC5BHvC+NIZuphdzOYWH8HjFhTc6V/u0jlXYZP+mv6t6mZRU0FjgDIFSWdnd7s6ObxmMEQdtR2CL0vXw0lhR16yyRWP6yAlJr+J25qYPWd/porj92QqB8DG3Cd1ZwP+11OkZ9MKDo41TLyiqIUoH35sfGH35eBbtDzforyGBYq6s7n4OVrikfV3btKkoK0+0WC11Nrig7NHLICyQrQSW1s2M9u/sC4j2nK89fqYgMU672KWiLKaXhMwZFAkALrWF76iaDUJM3SKq9gUhP70+vA0ARM7X7SXwGspuL9nSdXKmqez6l89zMcuYvcg3Tz93/QpRbqPjI8TmHv7dPG/uLKMTINFGHvKUpFf38N+M+XT0AChqc3tifeyKP1895cci5iND/2l9eaMYmYCtmuqfBazRPfxRl1PnWKiXkvBGyAvNUePuUJ3+bK9v19dOx/cHV6OgPTkw8rfJgv6rSMBHjJqDfA8tdpGaIhqx2b1qXl0Ve0SwWOHF/pG/YffeUgHG7Br59TFLBEsKigU6EZCbCIhNVdnT0CQrgD8yZFTlLEFp/yhWdVZB3tWjb+LJi8Xx4DSs3jLjG9rEA+QIiFuj1IYV9eVExIULKGzvOocyj5qDflx8Ekm/sLhP+1OiHGe4zBQH702Ki0AiCC2hwIP5G7bKOCwrcnHfmbJiDHkF3v+9+TWLovoLDuIwwOq4uKCc9C97POaMeBKzx++3Lg/fxXN9kqw/acKtG3g55MScNgslfSs6t7mT5/xCeN9XBtgxZpRPZvfB8D5Bg9qccYd/4x0Ri9M0KIzde7ztJ4Flya3LO/9w0TmGOwbKbQJ0ITMQyTHgsDCbJjyFdJx85rk47//rdKQrE0v20hPCU5Njsq6Jy0fnfvJvH02az/6ss4Zw65wj0nHR3Nj/mnv0+UmZmZER70f2X/Bu5wnCihP08lAAAAAElFTkSuQmCC') center center no-repeat; } .elfinder .elfinder-dialog .elfinder-help .elfinder-help-team{ border-bottom: .5px solid #404040 !important; } .elfinder .elfinder-dialog .elfinder-help .elfinder-help-shortcuts{ background: none; color: #999; } .elfinder .elfinder-dialog .elfinder-preference dl{ margin: 0; } .elfinder .elfinder-preference dd label{ margin: 3px; } /* dialog: notify/error/confirm */ .elfinder .elfinder-dialog-notify .ui-dialog-titlebar{ padding: 0; height: 20px; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar{ height: 30px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button{ top: auto; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button{ top: auto; bottom: -.8em; } .elfinder .elfinder-dialog-notify .elfinder-notify{ padding: .5em 32px; border-bottom: .5px solid #3e3e3e !important; } .elfinder .elfinder-dialog-notify .elfinder-notify:last-child{ border: 0 !important; } .elfinder .elfinder-dialog-notify .elfinder-notify .elfinder-notify-progressbar{ background: #3e3e3e; } .elfinder .elfinder-dialog-notify .elfinder-notify .elfinder-notify-progressbar .elfinder-notify-progress{ background: #00821a; } .elfinder .elfinder-dialog-notify .elfinder-notify-cancel{ position: absolute; top: 50%; right: 0; margin-top: -8px; } .elfinder-rtl .elfinder-dialog-notify .elfinder-notify-cancel{ left: 0; right: auto; } .elfinder .elfinder-dialog-notify .elfinder-notify-cancel:hover{ color: #c32020; } .elfinder .elfinder-dialog-confirm .ui-dialog-content, .elfinder .elfinder-dialog-error .ui-dialog-content{ min-height: 52px; } .elfinder-ltr .elfinder-dialog-confirm .ui-dialog-content, .elfinder-ltr .elfinder-dialog-error .ui-dialog-content{ padding-right: 46px; } .elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content, .elfinder-rtl .elfinder-dialog-error .ui-dialog-content{ padding-left: 46px; } .elfinder .elfinder-dialog-confirm .elfinder-dialog-icon, .elfinder .elfinder-dialog-error .elfinder-dialog-icon{ top: 26px; left: auto; right: 10px; } .elfinder-rtl .elfinder-dialog-confirm .elfinder-dialog-icon, .elfinder-rtl .elfinder-dialog-error .elfinder-dialog-icon{ left: 10px; right: auto; } .elfinder .elfinder-dialog-confirm .elfinder-dialog-confirm-encoding{ padding: 0 0 .5em 0; } /* dialog: info/delete */ .elfinder .elfinder-dialog .elfinder-info-title .elfinder-cwd-icon, .elfinder .elfinder-dialog .elfinder-rm-title .elfinder-cwd-icon{ position: relative; } .elfinder .elfinder-dialog .elfinder-info-tb{ margin: 0; } .elfinder .elfinder-dialog .elfinder-info-tb span{ /* md5/sha256: Calculate */ float: none; } /* upload */ .elfinder .elfinder-dialog-upload .elfinder-upload-dropbox{ border: 2px dashed #555 !important; } /* file-edit */ .elfinder .elfinder-dialog-edit .elfinder-edit-editor{ padding: 0 .5em; background: #333; } .elfinder .elfinder-dialog-edit .elfinder-edit-editor .elfinder-file-edit{ height: 100%; color: #999 !important; background: #444 !important; } .elfinder .elfinder-dialog-edit .elfinder-edit-extras{ margin: 0; } .elfinder-rtl .elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-edit-extras{ float: right; } /* batch rename */ .elfinder .elfinder-rename-batch-preview{ min-height: unset; } /* chmod */ .elfinder .elfinder-dialog-chmod table{ margin-bottom: 10px; } /* quicklook */ .elfinder .elfinder-quicklook{ padding: 0; background: #1d1d1d; } .elfinder .elfinder-quicklook-titlebar{ position: relative; padding: .4em .4em .4em .7em; height: auto; font-size: .82em; background: none; box-sizing: border-box; } .elfinder .elfinder-quicklook-titlebar-icon{ top: 0; left: auto; right: 0; bottom: 0; height: auto; margin: 0; } .elfinder-rtl .elfinder-quicklook-titlebar-icon{ left: 0; right: auto; } .elfinder .elfinder-quicklook .elfinder-quicklook-titlebar-icon .ui-icon{ float: right; margin: 0; padding: 0 .4em 0 0; height: 100%; opacity: 1; } .elfinder-rtl .elfinder-quicklook .elfinder-quicklook-titlebar-icon .ui-icon{ float: left; padding: 0 0 0 .4em; } .elfinder .elfinder-quicklook-titlebar-icon .ui-icon:hover{ color: #ccc; } .elfinder .elfinder-quicklook-titlebar-icon .elfinder-icon-close:hover{ color: #c32020; } .elfinder .elfinder-quicklook-title{ display: inherit; font-size: inherit; line-height: 1.3; text-overflow: ellipsis; } .elfinder-touch .elfinder-quicklook-title{ padding: 4px 0; } .elfinder .elfinder-quicklook-preview{ height: calc(100% - 72px); background: #333; } .elfinder-touch .elfinder-quicklook-preview{ height: calc(100% - 80px); } .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-text-wrapper, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-text-wrapper pre.elfinder-quicklook-preview-text, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-text-wrapper pre.elfinder-quicklook-preview-text.prettyprint, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-archive-wrapper, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-html, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-pdf, .elfinder .elfinder-quicklook-preview .elfinder-quicklook-preview-iframe{ background: none; color: inherit; font-size: inherit; } .elfinder .elfinder-quicklook-navbar{ width: auto; font-size: 140%; } .elfinder .elfinder-quicklook .ui-resizable-se{ right: 1px; bottom: 1px; width: 16px; height: 16px; } .elfinder .elfinder-quicklook-fullscreen{ z-index: 1002; } .elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-preview{ height: 100%; } .elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{ bottom: 0; } /* resize */ .elfinder .elfinder-resize-container{ margin: 0; } .elfinder .elfinder-resize-container fieldset .ui-button{ width: 49%; } .elfinder .elfinder-resize-container .elfinder-resize-rotate-slider{ width: 204px; } .elfinder .elfinder-resize-preview{ padding: 5px; background: linear-gradient(#ffffff1a 1px, transparent 1px), linear-gradient(90deg, #ffffff1a 1px, transparent 1px); background-size: 16px 16px; background-position: center; } .elfinder .elfinder-resize-loading{ background: transparent; -moz-animation: blink 1s infinite linear; -webkit-animation: blink 1s infinite linear; animation: blink 1s infinite linear; } .elfinder .elfinder-resize-preview img{ padding: 1px; background-color: rgba(255, 255, 255, .05); } .elfinder .elfinder-resize-preview .elfinder-resize-handle.ui-draggable{ box-sizing: border-box; border: 1px dashed #000 !important; } .elfinder .elfinder-resize-handle-point{ background: rgba(255, 255, 255, .7); border: 1px solid #111 !important; } .elfinder .elfinder-dialog-resize .ui-draggable-handle{ background: none !important; } /*************************************/ /* OVERLAYS */ /*************************************/ .elfinder-overlay{ background: #000; opacity: .5; } /*************************************/ /* TOAST */ /*************************************/ .elfinder .elfinder-toast{ top: 66px; } .elfinder-rtl .elfinder-toast{ right: auto; left: 12px; } .elfinder .elfinder-toast > div{ padding: 10px 10px 10px 44px; float: right; clear: both; -moz-border-radius: 2px !important; -webkit-border-radius: 2px !important; border-radius: 2px !important; } .elfinder-rtl .elfinder-toast > div{ padding: 10px 44px 10px 10px; float: left; } .elfinder .elfinder-toast > div > div{ display: none; } .elfinder .elfinder-toast > div > div.elfinder-toast-msg{ display: block; } .elfinder .elfinder-toast > .toast-info{ color: #ddf6ff; background: #1384a5 !important; } .elfinder .elfinder-toast > .toast-warning{ color: #fff1dd; background: #d07a00 !important; } .elfinder .elfinder-toast > .toast-success{ color: #ddffdd; background: #278827 !important; } .elfinder .elfinder-toast > .toast-error{ color: #ffdfdd; background: #a91811 !important; } /*************************************/ /* ICONS */ /*************************************/ @font-face{ font-family: 'elfinder'; font-style: normal; font-weight: normal; src: url('../img/elfinder.woff2') format('woff2'), url('../img/elfinder.woff') format('woff'), url('../img/elfinder.svg') format('svg'), url('../img/elfinder.ttf') format('truetype'), url('../img/elfinder.eot') format('embedded-opentype'); } .elfinder .ui-icon, .elfinder .elfinder-button-icon, .elfinder .elfinder-navbar-icon, .elfinder .elfinder-navbar-arrow, .elfinder .elfinder-spinner, .elfinder .elfinder-dialog-icon, .elfinder .elfinder-notify-cancel button, .elfinder .elfinder-symlink, .elfinder .elfinder-perms, .elfinder .elfinder-lock, .elfinder .elfinder-drag-helper-icon-status, .elfinder .elfinder-contextmenu .elfinder-contextmenu-item .ui-icon, .elfinder .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon, .elfinder .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextmenu-arrow, .elfinder .elfinder-cwd-icon, .elfinder-quicklook-navbar-icon{ display: flex; justify-content: center; align-items: center; min-width: 16px; background: none; text-indent: 0; } .elfinder .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon{ float: left; } .elfinder-rtl .elfinder-toolbar .elfinder-buttonset .elfinder-button-icon{ float: right; } .elfinder .elfinder-toolbar .elfinder-button-search .ui-icon{ margin: -9px 4px 0 4px; color: #999; opacity: 1; } .elfinder .elfinder-toolbar .elfinder-button-search .ui-icon:hover{ color: #ccc; } .elfinder-ltr.elfinder-touch .elfinder-toolbar .elfinder-button-search .ui-icon, .elfinder-touch .elfinder-toolbar .elfinder-button-search .ui-icon-close{ transform: scale(1.25); } .elfinder-rtl.elfinder-touch .elfinder-toolbar .elfinder-button-search .ui-icon-search{ transform: scale(-1.25, 1.25); } .elfinder-rtl .elfinder-button-menu-item .ui-icon{ left: auto; right: 2px; } .elfinder-button-menu-item .ui-icon, .elfinder .ui-checkboxradio-icon, .elfinder .elfinder-quicklook-navbar .elfinder-quicklook-navbar-icon-close, .elfinder .ui-resizable-disabled .ui-resizable-handle, .elfinder .ui-resizable-autohide .ui-resizable-handle{ display: none; } .elfinder-button-menu-item-selected .ui-icon, .elfinder .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close{ display: flex; } .elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n, .elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s{ display: none; } .elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon{ transform: scale(1.25); } .elfinder .elfinder-navbar .elfinder-tree .elfinder-spinner{ margin: -10px 0 0; } .elfinder-ltr .elfinder-navbar-icon{ left: 15px; } .elfinder-rtl .elfinder-navbar-icon{ right: 15px; } .elfinder .elfinder-spinner{ display: inline-block; float: none; vertical-align: text-top; } .elfinder .elfinder-dialog-icon{ /* error, confirm */ font-size: 30px; } .elfinder .elfinder-dialog-notify .elfinder-dialog-icon{ left: 0; font-size: 18px; -moz-animation: blink 2s infinite linear; -webkit-animation: blink 2s infinite linear; animation: blink 2s infinite linear; } .elfinder-rtl .elfinder-dialog-notify .elfinder-dialog-icon{ left: auto; right: 0; } .elfinder .elfinder-perms{ font-size: 20px; border-radius: 50% !important; background: #fff; } .elfinder .elfinder-cwd-view-list .elfinder-cwd-icon{ background: none !important; } .elfinder .elfinder-quicklook-navbar-icon:hover{ color: #ccc; } /* Add elements of icons (before/after) */ .ui-icon:before, /* jquery-ui, use anywhere */ .elfinder-button-icon:before, /* use in toolbar, contextmenu */ .elfinder-navbar-icon:before, /* use in navbar */ .elfinder-navbar-arrow:before, /* use in navbar */ .elfinder-spinner:before, /* use in navbar, dialogs (info, confirm, upload, edit, quicklook) and may be other places */ .elfinder-symlink:before, /* use in workzone */ .elfinder-lock:before, /* use in workzone */ .elfinder-perms:before, /* use in navbar, workzone */ .elfinder-drag-helper-icon-status:before, /* use when drag files */ .elfinder-contextmenu-arrow:before, /* use in contextmenu */ .elfinder-cwd-icon:after, /* use in workzone */ .elfinder-dialog-icon:before, /* use in dialogs: confirm, error, notify */ .elfinder-notify-cancel button:before, /* use in dialogs: notify */ .elfinder-quicklook-navbar-icon:before, /* use in dialogs: quicklook */ .elfinder .elfinder-toast > div:before /* use in toasts */ { /* content: '\e000'; */ /* for debug */ display: inline-block; background: none; font-family: 'elfinder'; font-style: normal; font-weight: normal; line-height: 16px; text-align: center; text-decoration: none; /* For safety - reset parent styles, that can break glyph codes */ font-variant: normal; text-transform: none; /* Font smoothing. That was taken from TWBS */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Superstructure elements */ .elfinder-button-icon-spinner:before, .elfinder-spinner:before{ -moz-animation: spin 1.5s infinite linear; -webkit-animation: spin 1.5s infinite linear; animation: spin 1.5s infinite linear; } .elfinder .elfinder-cwd-icon:before{/* type lable cwd-icon */ top: 2px; left: -4px; padding: 2px 4px; font-family: 'Trebuchet MS'; font-weight: bold; color: #999; background-color: #202020; box-shadow: 1px 1px 1px rgba(255, 255, 255, .5); z-index: 1; } .elfinder .elfinder-info-title .elfinder-cwd-icon:before, .elfinder .elfinder-rm-title .elfinder-cwd-icon:before, .elfinder .elfinder-quicklook .elfinder-cwd-icon:before{/* cwd-icon lable type */ left: -4px; right: auto; } .elfinder .elfinder-toast > div:before{ position: absolute; left: 10px; top: 11px; font-size: 160%; } .elfinder-rtl .elfinder-toast > div:before{ left: auto; right: 10px; } /* Contents of news elements */ /* jquery-ui icons */ .elfinder .ui-icon-close:before{ content: '\e84c'; } .elfinder .ui-icon-closethick:before, .elfinder .elfinder-notify-cancel .elfinder-notify-button:before{ content: '\e81b'; } .elfinder .ui-icon-check:before{ content: '\e80f'; font-size: 110%; } .elfinder .ui-icon-caret-1-n:before{ content: '\e837'; } .elfinder .ui-icon-caret-1-s:before{ content: '\e836'; } .elfinder .ui-icon-search:before{ content: '\e81a'; } .elfinder .ui-icon-triangle-1-n:before, .elfinder .ui-icon-arrowthick-1-n:before{ content: '\f176'; } .elfinder .ui-icon-triangle-1-s:before, .elfinder .ui-icon-arrowthick-1-s:before{ content: '\f175'; } .elfinder .ui-icon-gripsmall-diagonal-se:before{ content: '\e803'; } .elfinder .ui-icon-plusthick:before{ content: '\e802'; } .elfinder .ui-icon-arrowreturnthick-1-s:before{ content: '\e806'; } .elfinder .ui-icon-minusthick:before{ content: '\e81e'; } .elfinder .ui-icon-pin-s:before{ content: '\e811'; } .elfinder .ui-icon-arrowrefresh-1-n:before{ content: '\e81f'; } .elfinder .ui-icon-unlocked:before{ content: '\e854'; } .elfinder .ui-icon-locked:before{ content: '\f13e'; } /* main icons */ .elfinder-button-icon-accept:before{ content: '\e810'; } .elfinder-button-icon-archive:before{ content: '\e827'; font-size: 110%; margin-left: -2px; } .elfinder-button-icon-back:before{ content: '\f007'; } .elfinder-button-icon-chmod:before{ content: '\e846'; } .elfinder-button-icon-copy:before{ content: '\e807'; } .elfinder-button-icon-colwidth:before{ content: '\f0db'; } .elfinder-button-icon-cut:before{ content: '\e801'; } .elfinder-button-icon-dir:before{ content: '\f114'; } .elfinder-button-icon-download:before{ content: '\e809'; } .elfinder-button-icon-duplicate:before{ content: '\e822'; } .elfinder-button-icon-edit:before{ content: '\e81c'; } .elfinder-button-icon-empty:before{ content: '\e829'; } .elfinder-button-icon-extract:before{ content: '\e825'; font-size: 110%; margin-left: -2px; } .elfinder-button-icon-forward:before{ content: '\f006'; } .elfinder-button-icon-fullscreen:before{ content: '\e802'; } .elfinder-button-icon-getfile:before{ content: '\f245'; } .elfinder-button-icon-help:before{ content: '\e80b'; } .elfinder-button-icon-home:before{ content: '\e800'; } .elfinder-button-icon-hide:before{ content: '\e80c'; } .elfinder-button-icon-info:before{ content: '\f086'; } .elfinder-button-icon-link:before{ content: '\f08e'; } .elfinder-button-icon-mkdir:before{ content: '\f114'; } .elfinder-button-icon-mkdirin:before{ content: '\e828'; } .elfinder-button-icon-mkfile:before{ content: '\f0f6'; font-size: 85%; } .elfinder-button-icon-menu:before{ content: '\e819'; } .elfinder-button-icon-netmount:before{ content: '\f0a0'; font-size: 110%; } .elfinder-button-icon-netunmount:before{ content: '\e818'; font-size: 85%; } .elfinder-button-icon-open:before{ content: '\f115'; } .elfinder-button-icon-opendir:before{ content: '\f115'; } .elfinder-button-icon-opennew:before{ content: '\e824'; } .elfinder-button-icon-paste:before{ content: '\f0ea'; } .elfinder-button-icon-places:before{ content: '\e81d'; } .elfinder-button-icon-preference:before{ content: '\f1de'; } .elfinder-button-icon-quicklook:before{ content: '\e812'; } .elfinder-button-icon-redo:before{ content: '\e814'; } .elfinder-button-icon-reload:before{ content: '\e805'; } .elfinder-button-icon-rename:before{ content: '\f246'; font-size: 85%; } .elfinder-button-icon-restore:before{ content: '\e81f'; } .elfinder-button-icon-resize:before{ content: '\e82d'; } .elfinder-button-icon-rotate-r:before{ content: '\e857'; } .elfinder-button-icon-rotate-l:before{ content: '\e856'; } .elfinder-button-icon-rm:before{ content: '\f12d'; } .elfinder-button-icon-search:before{ content: '\e81a'; } .elfinder-button-icon-selectall:before{ content: '\f247'; font-size: 90%; } .elfinder-button-icon-selectnone:before{ content: '\e823'; font-size: 90%; } .elfinder-button-icon-selectinvert:before{ content: '\f248'; font-size: 85%; margin-left: -1px; } .elfinder-button-icon-sort:before{ content: '\f15d'; font-size: 90%; } .elfinder-button-icon-text:before{ content: '\e804'; } .elfinder-button-icon-trash:before{ content: '\e80a'; font-size: 110%; } .elfinder-button-icon-undo:before{ content: '\e813'; } .elfinder-button-icon-unfullscreen:before{ content: '\e806'; } .elfinder-button-icon-up:before{ content: '\f005'; } .elfinder-button-icon-upload:before{ content: '\e808'; } .elfinder-button-icon-view:before{ content: '\e815'; font-size: 110%; } .elfinder-button-icon-view-list:before{ content: '\e816'; font-size: 110%; } .elfinder-button-icon-spinner:before, .elfinder-spinner:before{ content: '\e831'; } .elfinder-path-roots .elfinder-button-icon-menu:before{ content: '\e836'; } /* permissions, dragable icons (workzone/toolbar/on the screen) */ .elfinder-symlink:before{ content: '\e835'; } .elfinder-lock:before{ content: '\e82b'; font-size: 85%; } .elfinder-group .elfinder-perms:before{ content: '\e800'; } .elfinder-ro .elfinder-perms:before{ content: '\e80e'; color: #f3b80b; } .elfinder-wo .elfinder-perms:before{ content: '\e80d'; color: #0272bf; } .elfinder-na .elfinder-perms:before, .elfinder-drag-helper-icon-status:before{ content: '\e817'; color: #d00000; } .elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{ content: '\e843'; color: #0272bf; } .elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{ content: '\e844'; color: #00ab07; } /* arrows icons (navbar/contextmenu) */ .elfinder-navbar-arrow:before{ content: none; } .elfinder-navbar-icon:before{ content: '\e820'; } .ui-state-hover .elfinder-navbar-icon:before, .ui-state-active .elfinder-navbar-icon:before, .elfinder-droppable-active .elfinder-navbar-icon:before{ content: '\e82e'; } .elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before, .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow:before{ content: '\e839'; } .elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before, .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow:before{ content: '\e838'; } .elfinder .elfinder-navbar-collapsed.elfinder-navbar-expanded .elfinder-navbar-arrow:before{ content: '\e836'; } /* cmd icons (dialogs) */ .elfinder-dialog-icon:before{ content: '\e83a'; } /* default icon (info icon) */ .elfinder-dialog-icon-confirm:before{ content: '\e83b'; color: #f3b80b; } .elfinder-rtl .elfinder-dialog-icon-confirm:before{ content: '\e851'; color: #f3b80b; } .elfinder-dialog-icon-error:before{ content: '\e83c'; color: #c32020; } .elfinder-dialog-icon-open:before, .elfinder-dialog-icon-readdir:before, .elfinder-dialog-icon-file:before{ content: '\e82e'; } .elfinder-dialog-icon-reload:before{ content: '\e841'; } .elfinder-dialog-icon-mkdir:before{ content: '\e820'; } .elfinder-dialog-icon-mkfile:before{ content: '\f15c'; } .elfinder-dialog-icon-copy:before{ content: '\e844'; } .elfinder-dialog-icon-prepare:before{ content: '\e831'; } .elfinder-dialog-icon-move:before{ content: '\e843'; } .elfinder-dialog-icon-save:before, .elfinder-dialog-icon-upload:before, .elfinder-dialog-icon-chunkmerge:before{ content: '\e83d'; } .elfinder-dialog-icon-rm:before{ content: '\f1f8'; } .elfinder-dialog-icon-download:before{ content: '\e83e'; } .elfinder-dialog-icon-rename:before, .elfinder-dialog-icon-chkcontent:before{ content: '\e83f'; } .elfinder-dialog-icon-zipdl:before, .elfinder-dialog-icon-archive:before, .elfinder-dialog-icon-extract:before{ content: '\e840'; } .elfinder-dialog-icon-search:before{ content: '\f1e5'; } .elfinder-dialog-icon-chmod:before{ content: '\e845'; } /* toasts */ .elfinder .elfinder-toast > .toast-info:before{ content: '\e83a'; } .elfinder .elfinder-toast > .toast-warning:before{ content: '\e83c'; } .elfinder .elfinder-toast > .toast-success:before{ content: '\e810'; } .elfinder .elfinder-toast > .toast-error:before{ content: '\e817'; } /* icons files (workzone/dialogs) */ .elfinder .elfinder-cwd-icon:after{ content: '\e84d'; font-size: 50px; color: #999; } .elfinder .elfinder-cwd-view-list table .elfinder-cwd-icon:after{ font-size: 16px; top: auto; right: auto; left: auto; width: auto; height: auto; opacity: 1; -webkit-transform: none; -moz-transform: none; transform: none; } .elfinder .elfinder-cwd-bgurl{ -moz-background-size: cover; background-size: cover; } .elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after, .elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after{ display: none; } /* icons roots (navbar/workzone/dialogs/contextmenu) */ .elfinder [class^='elfinder-navbar-root-'] .elfinder-cwd-icon:after, .elfinder [class*=' elfinder-navbar-root-'] .elfinder-cwd-icon:after{ font-size: 53px; } .elfinder .elfinder-navbar-root-sql .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-dropbox .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-network .elfinder-cwd-icon:after{ font-size: 46px; } /* roots icons: navbar - .elfinder-navbar-root-[..] .elfinder-navbar-icon, workzone - .elfinder-navbar-root-[..] .elfinder-cwd-icon, contextmenu - .elfinder-navbar-root-[..].elfinder-contextmenu-icon */ .elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{ content: '\e821'; } .elfinder .elfinder-navbar-root-local .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-local .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-local.elfinder-contextmenu-icon:before{ content: '\e82f'; color: #999; } .elfinder .elfinder-navbar-root-trash .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-trash .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-trash.elfinder-contextmenu-icon:before{ content: '\f1f8'; color: #999; } .elfinder .elfinder-navbar-root-ftp .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-ftp .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-ftp.elfinder-contextmenu-icon:before{ content: '\f0a0'; color: #999; } .elfinder .elfinder-navbar-root-sql .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-sql .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-sql.elfinder-contextmenu-icon:before{ content: '\f1c0'; color: #999; } .elfinder .elfinder-navbar-root-dropbox .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-dropbox .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-dropbox.elfinder-contextmenu-icon:before{ content: '\e832'; color: #999; } .elfinder .elfinder-navbar-root-googledrive .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-googledrive .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-googledrive.elfinder-contextmenu-icon:before{ content: '\e826'; color: #999; } .elfinder .elfinder-navbar-root-onedrive .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-onedrive .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-onedrive.elfinder-contextmenu-icon:before{ content: '\e833'; color: #999; } .elfinder .elfinder-navbar-root-box .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-box .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-box.elfinder-contextmenu-icon:before{ content: '\e834'; color: #999; } .elfinder .elfinder-navbar-root-network .elfinder-navbar-icon:before, .elfinder .elfinder-navbar-root-network .elfinder-cwd-icon:after, .elfinder .elfinder-navbar-root-network.elfinder-contextmenu-icon:before{ content: '\e830'; color: #999; } /* icons files (workzone/dialogs) */ .elfinder .elfinder-cwd-icon-directory:after{ content: '\e820'; color: #c3a530; } .elfinder .elfinder-cwd-icon-zip:after, .elfinder .elfinder-cwd-icon-x-zip:after, .elfinder .elfinder-cwd-icon-x-xz:after, .elfinder .elfinder-cwd-icon-x-7z-compressed:after, .elfinder .elfinder-cwd-icon-x-gzip:after, .elfinder .elfinder-cwd-icon-x-tar:after, .elfinder .elfinder-cwd-icon-x-bzip:after, .elfinder .elfinder-cwd-icon-x-bzip2:after, .elfinder .elfinder-cwd-icon-x-rar:after, .elfinder .elfinder-cwd-icon-x-rar-compressed:after{ content: '\e840'; color: #b3791e; } .elfinder .elfinder-cwd-icon-text:after, .elfinder .elfinder-cwd-icon-plain:after, .elfinder .elfinder-cwd-icon-x-empty:after{ content: '\e849'; color: #ddd; } .elfinder .elfinder-cwd-icon-image:after{ content: '\e84a'; color: #9e2974; } .elfinder .elfinder-cwd-icon-audio:after{ content: '\e84f'; color: #278a00; } .elfinder .elfinder-cwd-icon-video:after{ content: '\e84e'; color: #29629e; } .elfinder .elfinder-cwd-icon-html:after{ content: '\e82a'; color: #bd4c4c; } .elfinder .elfinder-cwd-icon-postscript:after, .elfinder .elfinder-cwd-icon-css:after, .elfinder .elfinder-cwd-icon-javascript:after, .elfinder .elfinder-cwd-icon-x-javascript:after, .elfinder .elfinder-cwd-icon-x-perl:after, .elfinder .elfinder-cwd-icon-x-python:after, .elfinder .elfinder-cwd-icon-x-ruby:after, .elfinder .elfinder-cwd-icon-x-sh:after, .elfinder .elfinder-cwd-icon-x-shellscript:after, .elfinder .elfinder-cwd-icon-x-c:after, .elfinder .elfinder-cwd-icon-x-csrc:after, .elfinder .elfinder-cwd-icon-x-chdr:after, .elfinder .elfinder-cwd-icon-x-c--:after, .elfinder .elfinder-cwd-icon-x-c--src:after, .elfinder .elfinder-cwd-icon-x-c--hdr:after, .elfinder .elfinder-cwd-icon-x-java:after, .elfinder .elfinder-cwd-icon-x-java-source:after, .elfinder .elfinder-cwd-icon-x-php:after, .elfinder .elfinder-cwd-icon-xml:after{ content: '\e84b'; color: #6e73b1; } .elfinder .elfinder-cwd-icon-group:after{ content: '\e842'; } /* workzone: parent rewrited */ .elfinder .elfinder-cwd-parent .elfinder-lock, .elfinder .elfinder-cwd-parent .elfinder-perms{ display: none; } .elfinder .elfinder-cwd-wrapper .elfinder-cwd-parent .elfinder-cwd-icon:after{ content: '\e847'; color: #999; } /* quicklook */ .elfinder-quicklook-navbar-icon-prev:before{ content: '\e850'; } .elfinder-quicklook-navbar-icon-next:before{ content: '\e82c'; } .elfinder-quicklook-navbar-icon-fullscreen:before{ content: '\e802'; } .elfinder-quicklook-navbar-icon-fullscreen-off:before{ content: '\e806'; } .elfinder-quicklook-navbar-icon-close:before{ content: '\e81b'; font-size: 85%; }(function(editors, elFinder) { if (typeof define === 'function' && define.amd) { define(['elfinder'], editors); } else if (elFinder) { var optEditors = elFinder.prototype._options.commandsOptions.edit.editors; elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder)); } }(function(elFinder) { "use strict"; var apps = {}, // get query of getfile getfile = window.location.search.match(/getfile=([a-z]+)/), useRequire = elFinder.prototype.hasRequire, ext2mime = { bmp: 'image/x-ms-bmp', dng: 'image/x-adobe-dng', gif: 'image/gif', jpeg: 'image/jpeg', jpg: 'image/jpeg', pdf: 'application/pdf', png: 'image/png', ppm: 'image/x-portable-pixmap', psd: 'image/vnd.adobe.photoshop', pxd: 'image/x-pixlr-data', svg: 'image/svg+xml', tiff: 'image/tiff', webp: 'image/webp', xcf: 'image/x-xcf', sketch: 'application/x-sketch', ico: 'image/x-icon', dds: 'image/vnd-ms.dds', emf: 'application/x-msmetafile' }, mime2ext, getExtention = function(mime, fm, jpeg) { if (!mime2ext) { mime2ext = fm.arrayFlip(ext2mime); } var ext = mime2ext[mime] || fm.mimeTypes[mime]; if (!jpeg) { if (ext === 'jpeg') { ext = 'jpg'; } } else { if (ext === 'jpg') { ext = 'jpeg'; } } return ext; }, changeImageType = function(src, toMime) { var dfd = $.Deferred(); try { var canvas = document.createElement('canvas'), ctx = canvas.getContext('2d'), img = new Image(), conv = function() { var url = canvas.toDataURL(toMime), mime, m; if (m = url.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i)) { mime = m[1]; } else { mime = ''; } if (mime.toLowerCase() === toMime.toLowerCase()) { dfd.resolve(canvas.toDataURL(toMime), canvas); } else { dfd.reject(); } }; img.src = src; $(img).on('load', function() { try { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); conv(); } catch(e) { dfd.reject(); } }).on('error', function () { dfd.reject(); }); return dfd; } catch(e) { return dfd.reject(); } }, initImgTag = function(id, file, content, fm) { var node = $(this).children('img:first').data('ext', getExtention(file.mime, fm)), spnr = $('
') .html('' + fm.i18n('ntfloadimg') + '') .hide() .appendTo(this), setup = function() { node.attr('id', id+'-img') .attr('src', url || content) .css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'}) .data('loading', function(done) { var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button'); btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled'); node.css('opacity', done? '' : '0.3'); spnr[done? 'hide' : 'show'](); return node; }); }, url; if (!content.match(/^data:/)) { fm.openUrl(file.hash, false, function(v) { url = v; node.attr('_src', content); setup(); }); } else { setup(); } }, imgBase64 = function(node, mime) { var style = node.attr('style'), img, canvas, ctx, data; try { // reset css for getting image size node.attr('style', ''); // img node img = node.get(0); // New Canvas canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; // restore css node.attr('style', style); // Draw Image canvas.getContext('2d').drawImage(img, 0, 0); // To Base64 data = canvas.toDataURL(mime); } catch(e) { data = node.attr('src'); } return data; }, iframeClose = function(ifm) { var $ifm = $(ifm), dfd = $.Deferred().always(function() { $ifm.off('load', load); }), ab = 'about:blank', chk = function() { tm = setTimeout(function() { var src; try { src = base.contentWindow.location.href; } catch(e) { src = null; } if (src === ab) { dfd.resolve(); } else if (--cnt > 0){ chk(); } else { dfd.reject(); } }, 500); }, load = function() { tm && clearTimeout(tm); dfd.resolve(); }, cnt = 20, // 500ms * 20 = 10sec wait tm; $ifm.one('load', load); ifm.src = ab; chk(); return dfd; }; // check getfile callback function if (getfile) { getfile = getfile[1]; if (getfile === 'ckeditor') { elFinder.prototype._options.getFileCallback = function(file, fm) { window.opener.CKEDITOR.tools.callFunction((function() { var reParam = new RegExp('(?:[?&]|&)CKEditorFuncNum=([^&]+)', 'i'), match = window.location.search.match(reParam); return (match && match.length > 1) ? match[1] : ''; })(), fm.convAbsUrl(file.url)); fm.destroy(); window.close(); }; } } // return editors Array return [ { // tui.image-editor - https://github.com/nhnent/tui.image-editor info : { id: 'tuiimgedit', name: 'TUI Image Editor', iconImg: 'img/editor-icons.png 0 -48', dataScheme: true, schemeContent: true, openMaximized: true, canMakeEmpty: false, integrate: { title: 'TOAST UI Image Editor', link: 'http://ui.toast.com/tui-image-editor/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || fm.UA.Mobile) { this.disabled = true; } else { this.opts = Object.assign({ version: 'v3.15.3' }, opts.extraOptions.tuiImgEditOpts || {}, { iconsPath : fm.baseUrl + 'img/tui-', theme : {} }); if (!fm.isSameOrigin(this.opts.iconsPath)) { this.disabled = true; fm.debug('warning', 'Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.'); } } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { this.data('url', content); }, load : function(base) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdns = fm.options.cdns, ver = self.confObj.opts.version, init = function(editor) { var $base = $(base), bParent = $base.parent(), opts = self.confObj.opts, iconsPath = opts.iconsPath, tmpContainer = $('
').appendTo(bParent), tmpDiv = [ $('
').appendTo(tmpContainer), $('
').appendTo(tmpContainer) ], iEditor = new editor(base, { includeUI: { loadImage: { path: $base.data('url'), name: self.file.name }, theme: opts.theme, initMenu: 'filter', menuBarPosition: 'bottom' }, cssMaxWidth: Math.max(300, bParent.width()), cssMaxHeight: Math.max(200, bParent.height() - (tmpDiv[0].height() + tmpDiv[1].height() + 3 /*margin*/)), usageStatistics: false }), canvas = $base.find('canvas:first').get(0), zoom = function(v) { if (typeof v !== 'undefined') { var c = $(canvas), w = parseInt(c.attr('width')), h = parseInt(c.attr('height')), a = w / h, z, mw, mh; if (v === 0) { mw = w; mh = h; } else { mw = parseInt(c.css('max-width')) + Number(v); mh = mw / a; if (mw > w && mh > h) { mw = w; mh = h; } } z = Math.round(mw / w * 100); // Control zoom button of TUI Image Editor if (z < 100) { iEditor.resetZoom(); iEditor.stopDrawingMode(); tuiZoomCtrls.hide(); } else { tuiZoomCtrls.show(); } per.text(z + '%'); iEditor.resizeCanvasDimension({width: mw, height: mh}); // continually change more if (zoomMore) { setTimeout(function() { zoomMore && zoom(v); }, 50); } } }, zup = $('').data('val', 10), zdown = $('').data('val', -10), per = $('').css('width', '4em').text('%').attr('title', '100%').data('val', 0), tuiZoomCtrls, quty, qutyTm, zoomTm, zoomMore; tmpContainer.remove(); $base.removeData('url').data('mime', self.file.mime); // jpeg quality controls if (self.file.mime === 'image/jpeg') { $base.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); $base.data('quality', q); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); }); }) .val($base.data('quality')); $('
') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); } else if (self.file.mime === 'image/svg+xml') { $base.closest('.ui-dialog').trigger('changeType', { extention: 'png', mime : 'image/png', keepEditor: true }); } // zoom scale controls $('
') .append( zdown, per, zup ) .attr('title', fm.i18n('scale')) .on('click', 'span,button', function() { zoom($(this).data('val')); }) .on('mousedown mouseup mouseleave', 'span', function(e) { zoomMore = false; zoomTm && clearTimeout(zoomTm); if (e.type === 'mousedown') { zoomTm = setTimeout(function() { zoomMore = true; zoom($(e.target).data('val')); }, 500); } }) .prependTo($base.parent().next()); // wait canvas ready setTimeout(function() { dfrd.resolve(iEditor); if (quty) { quty.trigger('change'); iEditor.on('redoStackChanged undoStackChanged', function() { quty.trigger('change'); }); } // ZOOM controls of TUI Image Editor tuiZoomCtrls = $base.find('.tie-btn-zoomIn,.tie-btn-zoomOut,.tie-btn-hand'); // show initial scale zoom(null); }, 100); // show color slider (maybe TUI-Image-Editor's bug) // see https://github.com/nhn/tui.image-editor/issues/153 $base.find('.tui-colorpicker-palette-container').on('click', '.tui-colorpicker-palette-preview', function() { $(this).closest('.color-picker-control').height('auto').find('.tui-colorpicker-slider-container').toggle(); }); $base.on('click', function() { $base.find('.tui-colorpicker-slider-container').hide(); }); }, loader; if (!self.confObj.editor) { loader = $.Deferred(); fm.loadCss([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.css', cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.css' ]); if (fm.hasRequire) { require.config({ paths : { 'fabric/dist/fabric.require' : cdns.fabric + '/fabric.require.min', // for fabric < 2.0.1 'fabric' : cdns.fabric + '/fabric.min', // for fabric >= 2.0.1 'tui-code-snippet' : cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min', 'tui-color-picker' : cdns.tui + '/tui-color-picker/latest/tui-color-picker.min', 'tui-image-editor' : cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min' } }); require(['tui-image-editor'], function(ImageEditor) { loader.resolve(ImageEditor); }); } else { fm.loadScript([ cdns.fabric + '/fabric.min.js', cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min.js' ], function() { loader.resolve(window.tui.ImageEditor); }, { loadType: 'tag' }); }, { loadType: 'tag' }); }, { loadType: 'tag' }); } loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function(base) { var editor = this.editor, fm = editor.fm, $base = $(base), quality = $base.data('quality'); if (editor.instance) { if ($base.data('mime') === 'image/jpeg') { quality = quality || fm.storage('jpgQuality') || fm.option('jpgQuality'); quality = Math.max(0.1, Math.min(1, quality / 100)); } return editor.instance.toDataURL({ format: getExtention($base.data('mime'), fm, true), quality: quality }); } }, save : function(base) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; this.instance.deactivateAll(); if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } } }, { // Photopea advanced image editor info : { id : 'photopea', name : 'Photopea', iconImg : 'img/editor-icons.png 0 -160', single: true, noContent: true, arrayBufferContent: true, openMaximized: true, // Disable file types that cannot be saved on Photopea. canMakeEmpty: ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', /*'image/x-adobe-dng',*/ 'image/webp', /*'image/x-xcf',*/ 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', /*'application/x-msmetafile'*/], integrate: { title: 'Photopea', link: 'https://www.photopea.com/learn/' } }, mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', 'image/x-adobe-dng', 'image/webp', 'image/x-xcf', 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', 'application/x-msmetafile'], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.IE || fm.UA.Mobile) { this.disabled = true; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var orig = 'https://www.photopea.com', ifm = $(this).hide() //.css('box-sizing', 'border-box') .on('load', function() { //spnr.remove(); ifm.show(); }) .on('error', function() { spnr.remove(); ifm.show(); }), editor = this.editor, confObj = editor.confObj, spnr = $('
') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), saveMimes = fm.arrayFlip(confObj.info.canMakeEmpty), getType = function(mime) { var ext = getExtention(mime, fm), extmime = ext2mime[ext]; if (!confObj.mimesFlip[extmime]) { ext = ''; } else if (ext === 'jpeg') { ext = 'jpg'; } if (!ext || !saveMimes[extmime]) { ext = 'psd'; extmime = ext2mime[ext]; ifm.closest('.ui-dialog').trigger('changeType', { extention: ext, mime : extmime, keepEditor: true }); } return ext; }, mime = file.mime, liveMsg, type, quty; if (!confObj.mimesFlip) { confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true); } if (!confObj.liveMsg) { confObj.liveMsg = function(ifm, spnr, file) { var wnd = ifm.get(0).contentWindow, phase = 0, data = null, dfdIni = $.Deferred().done(function() { spnr.remove(); phase = 1; wnd.postMessage(data, orig); }), dfdGet; this.load = function() { return fm.getContents(file.hash, 'arraybuffer').done(function(d) { data = d; }); }; this.receive = function(e) { var ev = e.originalEvent, state; if (ev.origin === orig && ev.source === wnd) { if (ev.data === 'done') { if (phase === 0) { dfdIni.resolve(); } else if (phase === 1) { phase = 2; ifm.trigger('contentsloaded'); } else { if (dfdGet && dfdGet.state() === 'pending') { dfdGet.reject('errDataEmpty'); } } } else if (ev.data === 'Save') { editor.doSave(); } else { if (dfdGet && dfdGet.state() === 'pending') { if (typeof ev.data === 'object') { dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(ev.data)); } else { dfdGet.reject('errDataEmpty'); } } } } }; this.getContent = function() { var type, q; if (phase > 1) { dfdGet && dfdGet.state() === 'pending' && dfdGet.reject(); dfdGet = null; dfdGet = $.Deferred(); if (phase === 2) { phase = 3; dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(data)); data = null; return dfdGet; } if (ifm.data('mime')) { mime = ifm.data('mime'); type = getType(mime); } if (q = ifm.data('quality')) { type += ':' + (q / 100); } wnd.postMessage('app.activeDocument.saveToOE("' + type + '")', orig); return dfdGet; } }; }; } ifm.parent().css('padding', 0); type = getType(file.mime); liveMsg = editor.liveMsg = new confObj.liveMsg(ifm, spnr, file); $(window).on('message.' + fm.namespace, liveMsg.receive); liveMsg.load().done(function() { var d = JSON.stringify({ files : [], environment : { lang: fm.lang.replace(/_/g, '-'), customIO: {"save": "app.echoToOE(\"Save\");"} } }); ifm.attr('src', orig + '/#' + encodeURI(d)); }).fail(function(err) { err && fm.error(err); editor.initFail = true; }); // jpeg quality controls if (file.mime === 'image/jpeg' || file.mime === 'image/webp') { ifm.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); ifm.data('quality', q); }) .val(ifm.data('quality')); $('
') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo(ifm.parent().next()); } }, load : function(base) { var dfd = $.Deferred(), self = this, fm = this.fm, $base = $(base); if (self.initFail) { dfd.reject(); } else { $base.on('contentsloaded', function() { dfd.resolve(self.liveMsg); }); } return dfd; }, getContent : function() { return this.editor.liveMsg? this.editor.liveMsg.getContent() : void(0); }, save : function(base, liveMsg) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } else { $base.removeData('mime'); } }, // On dialog closed close : function(base, liveMsg) { $(base).attr('src', ''); liveMsg && $(window).off('message.' + this.fm.namespace, liveMsg.receive); } }, { // Pixo is cross-platform image editor info : { id : 'pixo', name : 'Pixo Editor', iconImg : 'img/editor-icons.png 0 -208', dataScheme: true, schemeContent: true, single: true, canMakeEmpty: false, integrate: { title: 'Pixo Editor', link: 'https://pixoeditor.com/privacy-policy/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.pixo || !opts.extraOptions.pixo.apikey) { this.disabled = true; } else { this.editorOpts = opts.extraOptions.pixo; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { initImgTag.call(this, id, file, content, fm); }, // Get data uri scheme (this: this editors HTML node) getContent : function() { return $(this).children('img:first').attr('src'); }, // Launch Pixo editor when dialog open load : function(base) { var self = this, fm = this.fm, $base = $(base), node = $base.children('img:first'), dialog = $base.closest('.ui-dialog'), elfNode = fm.getUI(), dfrd = $.Deferred(), container = $('#elfinder-pixo-container'), init = function(onload) { var opts; if (!container.length) { container = $('
').css({ position: 'fixed', top: 0, right: 0, width: '100%', height: $(window).height(), overflow: 'hidden' }).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body'); // bind switch fullscreen event elfNode.on('resize.'+fm.namespace, function(e, data) { e.preventDefault(); e.stopPropagation(); data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body'); }); fm.bind('destroy', function() { editor && editor.cancelEditing(); container.remove(); }); } else { // always moves to last container.appendTo(container.parent()); } node.on('click', launch); // Constructor options opts = Object.assign({ type: 'child', parent: container.get(0), output: {format: 'png'}, onSave: function(arg) { // Check current file.hash, all callbacks are called on multiple instances var mime = arg.toBlob().type, ext = getExtention(mime, fm), draw = function(url) { node.one('load error', function() { node.data('loading') && node.data('loading')(true); }) .attr('crossorigin', 'anonymous') .attr('src', url); }, url = arg.toDataURL(); node.data('loading')(); delete base._canvas; if (node.data('ext') !== ext) { changeImageType(url, self.file.mime).done(function(res, cv) { if (cv) { base._canvas = canvas = cv; quty.trigger('change'); qBase && qBase.show(); } draw(res); }).fail(function() { dialog.trigger('changeType', { extention: ext, mime : mime }); draw(url); }); } else { draw(url); } }, onClose: function() { dialog.removeClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, false); container.hide(); fm.toFront(dialog); } }, self.confObj.editorOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: base, editorObj: Pixo, instance: void(0), opts: opts }); // make editor instance editor = new Pixo.Bridge(opts); dfrd.resolve(editor); $base.on('saveAsFail', launch); if (onload) { onload(); } }, launch = function() { dialog.addClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, true); fm.toFront(container); container.show().data('curhash', self.file.hash); editor.edit(node.get(0)); node.data('loading')(true); }, qBase, quty, qutyTm, canvas, editor; node.data('loading')(); // jpeg quality controls if (self.file.mime === 'image/jpeg') { quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { if (canvas) { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); } }); }) .val(fm.storage('jpgQuality') || fm.option('jpgQuality')); qBase = $('
') .hide() .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); $base.data('quty', quty); } // load script then init if (typeof Pixo === 'undefined') { fm.loadScript(['https://pixoeditor.com:8443/editor/scripts/bridge.m.js'], function() { init(launch); }, {loadType: 'tag'}); } else { init(); launch(); } return dfrd; }, // Convert content url to data uri scheme to save content save : function(base) { var self = this, $base = $(base), node = $base.children('img:first'), q; if (base._canvas) { if ($base.data('quty')) { q = $base.data('quty').val(); q && this.fm.storage('jpgQuality', q); } node.attr('src', base._canvas.toDataURL(self.file.mime, q? Math.max(Math.min(q, 100), 1) / 100 : void(0))); } else if (node.attr('src').substr(0, 5) !== 'data:') { node.attr('src', imgBase64(node, this.file.mime)); } }, close : function(base, editor) { editor && editor.destroy(); } }, { // ACE Editor // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !fm.options.cdns.ace) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'aceeditor', name : 'ACE Editor', iconImg : 'img/editor-icons.png 0 -96' }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdn = fm.options.cdns.ace, start = function() { var editor, editorBase, mode, ta = $(textarea), taBase = ta.parent(), dialog = taBase.parent(), id = textarea.id + '_ace', ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(), // MIME/mode map mimeMode = { 'text/x-php' : 'php', 'application/x-php' : 'php', 'text/html' : 'html', 'application/xhtml+xml' : 'html', 'text/javascript' : 'javascript', 'application/javascript' : 'javascript', 'text/css' : 'css', 'text/x-c' : 'c_cpp', 'text/x-csrc' : 'c_cpp', 'text/x-chdr' : 'c_cpp', 'text/x-c++' : 'c_cpp', 'text/x-c++src' : 'c_cpp', 'text/x-c++hdr' : 'c_cpp', 'text/x-shellscript' : 'sh', 'application/x-csh' : 'sh', 'text/x-python' : 'python', 'text/x-java' : 'java', 'text/x-java-source' : 'java', 'text/x-ruby' : 'ruby', 'text/x-perl' : 'perl', 'application/x-perl' : 'perl', 'text/x-sql' : 'sql', 'text/xml' : 'xml', 'application/docbook+xml' : 'xml', 'application/xml' : 'xml' }; // set base height taBase.height(taBase.height()); // set basePath of ace ace.config.set('basePath', cdn); // Base node of Ace editor editorBase = $('
').text(ta.val()).insertBefore(ta.hide()); // Editor flag ta.data('ace', true); // Aceeditor instance editor = ace.edit(id); // Ace editor configure editor.$blockScrolling = Infinity; editor.setOptions({ theme: 'ace/theme/monokai', fontSize: '14px', wrap: true, }); ace.config.loadModule('ace/ext/modelist', function() { // detect mode mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name; if (mode === 'text') { if (mimeMode[self.file.mime]) { mode = mimeMode[self.file.mime]; } } // show MIME:mode in title bar taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')'); editor.setOptions({ mode: 'ace/mode/' + mode }); if (dfrd.state() === 'resolved') { dialog.trigger('resize'); } }); ace.config.loadModule('ace/ext/language_tools', function() { ace.require('ace/ext/language_tools'); editor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: false }); }); ace.config.loadModule('ace/ext/settings_menu', function() { ace.require('ace/ext/settings_menu').init(editor); }); // Short cuts editor.commands.addCommand({ name : "saveFile", bindKey: { win : 'Ctrl-s', mac : 'Command-s' }, exec: function(editor) { self.doSave(); } }); editor.commands.addCommand({ name : "closeEditor", bindKey: { win : 'Ctrl-w|Ctrl-q', mac : 'Command-w|Command-q' }, exec: function(editor) { self.doCancel(); } }); editor.resize(); // TextArea button and Setting button $('
').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('ace')) { ta.removeData('ace'); editorBase.hide(); ta.val(editor.session.getValue()).show().trigger('focus'); $(this).text('AceEditor'); } else { ta.data('ace', true); editorBase.show(); editor.setValue(ta.hide().val(), -1); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .append( $('') .button({ icons: { primary: 'ui-icon-gear', secondary: 'ui-icon-triangle-1-e' }, text: false }) .on('click', function(){ editor.showSettingsMenu(); $('#ace_settingsmenu') .css('font-size', '80%') .find('div[contains="setOptions"]').hide().end() .parent().appendTo($('#elfinder')); }) ) .prependTo(taBase.next()); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: ace, instance: editor, opts: {} }); //dialog.trigger('resize'); dfrd.resolve(editor); }; // check ace & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([ cdn+'/ace.js' ], function() { self.confObj.loader.resolve(); }, void 0, {obj: window, name: 'ace'}); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && $(textarea).data('ace') && (textarea.value = instance.session.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('ace') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.resize(); } }, { // CodeMirror // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.codemirror) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'codemirror', name : 'CodeMirror', iconImg : 'img/editor-icons.png 0 -176' }, load : function(textarea) { var fm = this.fm, cmUrl = fm.convAbsUrl(fm.options.cdns.codemirror), dfrd = $.Deferred(), self = this, start = function(CodeMirror) { var ta = $(textarea), base = ta.parent(), editor, editorBase, opts; // set base height base.height(base.height()); // CodeMirror configure options opts = { lineNumbers: true, lineWrapping: true, extraKeys : { 'Ctrl-S': function() { self.doSave(); }, 'Ctrl-Q': function() { self.doCancel(); }, 'Ctrl-W': function() { self.doCancel(); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CodeMirror, instance: void(0), opts: opts }); // CodeMirror configure editor = CodeMirror.fromTextArea(textarea, opts); // return editor instance dfrd.resolve(editor); // Auto mode set var info, m, mode, spec; if (! info) { info = CodeMirror.findModeByMIME(self.file.mime); } if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) { info = CodeMirror.findModeByExtension(m[1]); } if (info) { CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js'; mode = info.mode; spec = info.mime; editor.setOption('mode', spec); CodeMirror.autoLoadMode(editor, mode); // show MIME:mode in title bar base.prev().children('.elfinder-dialog-title').append(' (' + spec + (mode != 'null'? ' : ' + mode : '') + ')'); } // editor base node editorBase = $(editor.getWrapperElement()).css({ // fix CSS conflict to SimpleMDE padding: 0, border: 'none' }); ta.data('cm', true); // fit height to base editorBase.height('100%'); // TextArea button and Setting button $('
').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('cm')) { ta.removeData('cm'); editorBase.hide(); ta.val(editor.getValue()).show().trigger('focus'); $(this).text('CodeMirror'); } else { ta.data('cm', true); editorBase.show(); editor.setValue(ta.hide().val()); editor.refresh(); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .prependTo(base.next()); }; // load script then start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); if (useRequire) { require.config({ packages: [{ name: 'codemirror', location: cmUrl, main: 'codemirror.min' }], map: { 'codemirror': { 'codemirror/lib/codemirror': 'codemirror' } } }); require([ 'codemirror', 'codemirror/addon/mode/loadmode.min', 'codemirror/mode/meta.min' ], function(CodeMirror) { self.confObj.loader.resolve(CodeMirror); }); } else { self.fm.loadScript([ cmUrl + '/codemirror.min.js' ], function() { self.fm.loadScript([ cmUrl + '/addon/mode/loadmode.min.js', cmUrl + '/mode/meta.min.js' ], function() { self.confObj.loader.resolve(CodeMirror); }); }, {loadType: 'tag'}); } self.fm.loadCss(cmUrl + '/codemirror.css'); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); }, save : function(textarea, instance) { instance && $(textarea).data('cm') && (textarea.value = instance.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('cm') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.refresh(); } }, { // SimpleMDE // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.simplemde) { this.disabled = true; } }, info : { id : 'simplemde', name : 'SimpleMDE', iconImg : 'img/editor-icons.png 0 -80' }, exts : ['md'], load : function(textarea) { var self = this, fm = this.fm, base = $(textarea).parent(), dfrd = $.Deferred(), cdn = fm.options.cdns.simplemde, start = function(SimpleMDE) { var h = base.height(), delta = base.outerHeight(true) - h + 14, editor, editorBase, opts; // fit height function textarea._setHeight = function(height) { var h = height || base.height(), ctrH = 0, areaH; base.children('.editor-toolbar,.editor-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; editorBase.height(areaH); editor.codemirror.refresh(); return areaH; }; // set base height base.height(h); opts = { element: textarea, autofocus: true }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: SimpleMDE, instance: void(0), opts: opts }); // make editor editor = new SimpleMDE(opts); dfrd.resolve(editor); // editor base node editorBase = $(editor.codemirror.getWrapperElement()); // fit height to base editorBase.css('min-height', '50px') .children('.CodeMirror-scroll').css('min-height', '50px'); textarea._setHeight(h); }; // check SimpleMDE & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadCss(cdn+'/simplemde.min.css'); if (useRequire) { require([ cdn+'/simplemde.min.js' ], function(SimpleMDE) { self.confObj.loader.resolve(SimpleMDE); }); } else { self.fm.loadScript([cdn+'/simplemde.min.js'], function() { self.confObj.loader.resolve(SimpleMDE); }, {loadType: 'tag'}); } } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); instance = null; }, save : function(textarea, instance) { instance && (textarea.value = instance.value()); }, focus : function(textarea, instance) { instance && instance.codemirror.focus(); }, resize : function(textarea, instance, e, data) { instance && textarea._setHeight(); } }, { // CKEditor for html file info : { id : 'ckeditor', name : 'CKEditor', iconImg : 'img/editor-icons.png 0 0' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.ckeditor) { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor || {}); if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), reg = /([&?]getfile=)[^&]+/, loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''), name = 'ckeditor', opts; // make manager location if (reg.test(loc)) { loc = loc.replace(reg, '$1' + name); } else { loc += '?getfile=' + name; } // set base height base.height(h); // CKEditor configure options opts = { startupFocus : true, fullPage: true, allowedContent: true, filebrowserBrowseUrl : loc, toolbarCanCollapse: true, toolbarStartupExpanded: !fm.UA.Mobile, removePlugins: 'resize', extraPlugins: 'colorbutton,justify,docprops', on: { 'instanceReady' : function(e) { var editor = e.editor; editor.resize('100%', h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { editor.destroy(); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(e.editor); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CKEDITOR, instance: void(0), opts: opts }); // CKEditor configure CKEDITOR.replace(textarea.id, Object.assign(opts, self.confObj.ckeOpts)); CKEDITOR.on('dialogDefinition', function(e) { var dlg = e.data.definition.dialog; dlg.on('show', function(e) { fm.getUI().append($('.cke_dialog_background_cover')).append(this.getElement().$); }); dlg.on('hide', function(e) { $('body:first').append($('.cke_dialog_background_cover')).append(this.getElement().$); }); }); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); window.CKEDITOR_BASEPATH = fm.options.cdns.ckeditor + '/'; $.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() { self.confObj.loader.resolve(); }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && (textarea.value = instance.getData()); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { var self; if (instance) { if (instance.status === 'ready') { instance.resize('100%', $(textarea).parent().height()); } } } }, { // CKEditor5 balloon mode for html file info : { id : 'ckeditor5', name : 'CKEditor5', iconImg : 'img/editor-icons.png 0 -16' }, exts : ['htm', 'html', 'xhtml'], html : '
', setup : function(opts, fm) { var confObj = this; // check cdn and ES6 support if (!fm.options.cdns.ckeditor5 || typeof window.Symbol !== 'function' || typeof Symbol() !== 'symbol') { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { // @deprecated option extraOptions.ckeditor5Mode if (opts.extraOptions.ckeditor5Mode) { confObj.ckeditor5Mode = opts.extraOptions.ckeditor5Mode; } confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor5 || {}); if (confObj.ckeOpts.mode) { confObj.ckeditor5Mode = confObj.ckeOpts.mode; delete confObj.ckeOpts.mode; } if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } fm.bind('destroy', function() { confObj.editor = null; }); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { $(base).height(base.editor.fm.getUI().height() - 100); }, init : function(id, file, data, fm) { var m = data.match(/^([\s\S]*]*>)([\s\S]+)(<\/body>[\s\S]*)$/i), header = '', body = '', footer =''; this.css({ width: '100%', height: '100%', 'box-sizing': 'border-box' }); if (m) { header = m[1]; body = m[2]; footer = m[3]; } else { body = data; } this.data('data', { header: header, body: body, footer: footer }); this._setupSelEncoding(data); }, load : function(editnode) { var self = this, fm = this.fm, dfrd = $.Deferred(), mode = self.confObj.ckeditor5Mode || 'decoupled-document', lang = (function() { var l = fm.lang.toLowerCase().replace('_', '-'); if (l.substr(0, 2) === 'zh' && l !== 'zh-cn') { l = 'zh'; } return l; })(), init = function(cEditor) { var base = $(editnode).parent(), opts; // set base height base.height(fm.getUI().height() - 100); // CKEditor5 configure options opts = Object.assign({ toolbar: ["heading", "|", "fontSize", "fontFamily", "|", "bold", "italic", "underline", "strikethrough", "highlight", "|", "alignment", "|", "numberedList", "bulletedList", "blockQuote", "indent", "outdent", "|", "ckfinder", "link", "imageUpload", "insertTable", "mediaEmbed", "|", "undo", "redo"], language: lang }, self.confObj.ckeOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: editnode, editorObj: cEditor, instance: void(0), opts: opts }); cEditor .create(editnode, opts) .then(function(editor) { var ckf = editor.commands.get('ckfinder'), fileRepo = editor.plugins.get('FileRepository'), prevVars = {}, isImage, insertImages; if (editor.ui.view.toolbar && (mode === 'classic' || mode === 'decoupled-document')) { $(editnode).closest('.elfinder-dialog').children('.ui-widget-header').append($(editor.ui.view.toolbar.element).css({marginRight:'-1em',marginLeft:'-1em'})); } if (mode === 'classic') { $(editnode).closest('.elfinder-edit-editor').css('overflow', 'auto'); } // Set up this elFinder instead of CKFinder if (ckf) { isImage = function(f) { return f && f.mime.match(/^image\//i); }; insertImages = function(urls) { var imgCmd = editor.commands.get('imageUpload'); if (!imgCmd.isEnabled) { var ntf = editor.plugins.get('Notification'), i18 = editor.locale.t; ntf.showWarning(i18('Could not insert image at the current position.'), { title: i18('Inserting image failed'), namespace: 'ckfinder' }); return; } editor.execute('imageInsert', { source: urls }); }; // Take over ckfinder execute() ckf.execute = function() { var dlg = base.closest('.elfinder-dialog'), gf = fm.getCommand('getfile'), rever = function() { if (prevVars.hasVar) { dlg.off('resize close', rever); gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } }; dlg.trigger('togleminimize').one('resize close', rever); prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(files) { var imgs = []; if (files.length === 1 && files[0].mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(files[0].hash); return; } fm.getUI('cwd').trigger('unselectall'); $.each(files, function(i, f) { if (isImage(f)) { imgs.push(fm.convAbsUrl(f.url)); } else { editor.execute('link', fm.convAbsUrl(f.url)); } }); if (imgs.length) { insertImages(imgs); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = true; fm.commandMap.open = 'getfile'; fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); }; } // Set up image uploader fileRepo.createUploadAdapter = function(loader) { return new uploder(loader); }; editor.setData($(editnode).data('data').body); // move .ck-body to elFinder node for fullscreen mode fm.getUI().append($('body > div.ck-body')); $('div.ck-balloon-panel').css({ 'z-index': fm.getMaximizeCss().zIndex + 1 }); dfrd.resolve(editor); /*fm.log({ defaultConfig: cEditor.defaultConfig, plugins: cEditor.builtinPlugins.map(function(p) { return p.pluginName; }), toolbars: Array.from(editor.ui.componentFactory.names()) });*/ }) ['catch'](function(error) { // ['cache'] instead .cache for fix error on ie8 fm.error(error); }); }, uploder = function(loader) { var upload = function(file, resolve, reject) { fm.exec('upload', {files: [file]}, void(0), fm.cwd().hash) .done(function(data){ if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { resolve({ 'default': fm.convAbsUrl(url) }); }).fail(function() { reject('errFileNotFound'); }); } else { reject(fm.i18n(data.error? data.error : 'errUpload')); } }) .fail(function(err) { var error = fm.parseError(err); reject(fm.i18n(error? (error === 'userabort'? 'errAbort' : error) : 'errUploadNoFiles')); }) .progress(function(data) { loader.uploadTotal = data.total; loader.uploaded = data.progress; }); }; this.upload = function() { return new Promise(function(resolve, reject) { if (loader.file instanceof Promise || (loader.file && typeof loader.file.then === 'function')) { loader.file.then(function(file) { upload(file, resolve, reject); }); } else { upload(loader.file, resolve, reject); } }); }; this.abort = function() { fm.getUI().trigger('uploadabort'); }; }, loader; if (!self.confObj.editor) { loader = $.Deferred(); self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/ckeditor.js' ], function(editor) { if (!editor) { editor = window.BalloonEditor || window.InlineEditor || window.ClassicEditor || window.DecoupledEditor; } if (fm.lang !== 'en') { self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/translations/' + lang + '.js' ], function(obj) { loader.resolve(editor); }, { tryRequire: true, loadType: 'tag', error: function(obj) { lang = 'en'; loader.resolve(editor); } }); } else { loader.resolve(editor); } }, { tryRequire: true, loadType: 'tag' }); loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function() { var data = $(this).data('data'); return data.header + data.body + data.footer; }, close : function(editnode, instance) { instance && instance.destroy(); }, save : function(editnode, instance) { var elm = $(editnode), data = elm.data('data'); if (instance) { data.body = instance.getData(); elm.data('data', data); } }, focus : function(editnode, instance) { $(editnode).trigger('focus'); } }, { // TinyMCE for html file info : { id : 'tinymce', name : 'TinyMCE', iconImg : 'img/editor-icons.png 0 -64' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.tinymce) { confObj.disabled = true; } else { confObj.mceOpts = {}; if (opts.extraOptions) { confObj.uploadOpts = Object.assign({}, opts.extraOptions.uploadOpts || {}); confObj.mceOpts = Object.assign({}, opts.extraOptions.tinymce || {}); } else { confObj.uploadOpts = {}; } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).show().parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), delta = base.outerHeight(true) - h, // hide MCE dialog and modal block hideMceDlg = function() { var mceW; if (tinymce.activeEditor.windowManager.windows) { mceW = tinymce.activeEditor.windowManager.windows[0]; mceDlg = $(mceW? mceW.getEl() : void(0)).hide(); mceCv = $('#mce-modal-block').hide(); } else { mceDlg = $('.tox-dialog-wrap').hide(); } }, // Show MCE dialog and modal block showMceDlg = function() { mceCv && mceCv.show(); mceDlg && mceDlg.show(); }, tVer = tinymce.majorVersion, opts, mceDlg, mceCv; // set base height base.height(h); // fit height function textarea._setHeight = function(height) { if (tVer < 5) { var base = $(this).parent(), h = height || base.innerHeight(), ctrH = 0, areaH; base.find('.mce-container-body:first').children('.mce-top-part,.mce-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; base.find('.mce-edit-area iframe:first').height(areaH); } }; // TinyMCE configure options opts = { selector: '#' + textarea.id, resize: false, plugins: 'preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help', toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat', image_advtab: true, init_instance_callback : function(editor) { // fit height on init textarea._setHeight(h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { tinymce.execCommand('mceRemoveEditor', false, textarea.id); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(editor); }, file_picker_callback : function (callback, value, meta) { var gf = fm.getCommand('getfile'), revar = function() { if (prevVars.hasVar) { gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } dlg.off('resize close', revar); showMceDlg(); }, prevVars = {}; prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(file) { var url, info; if (file.mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(file.hash); return; } // URL normalization url = fm.convAbsUrl(file.url); // Make file info info = file.name + ' (' + fm.formatSize(file.size) + ')'; // Provide file and text for the link dialog if (meta.filetype == 'file') { callback(url, {text: info, title: info}); } // Provide image and alt text for the image dialog if (meta.filetype == 'image') { callback(url, {alt: info}); } // Provide alternative source and posted for the media dialog if (meta.filetype == 'media') { callback(url); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = false; fm.commandMap.open = 'getfile'; hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revar); fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); return false; }, images_upload_handler : function (blobInfo, success, failure) { var file = blobInfo.blob(), err = function(e) { var dlg = e.data.dialog || {}; if (dlg.hasClass('elfinder-dialog-error') || dlg.hasClass('elfinder-confirm-upload')) { hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revert); fm.unbind('dialogopened', err); } }, revert = function() { dlg.off('resize close', revert); showMceDlg(); }, clipdata = true; // check file object if (file.name) { // file blob of client side file object clipdata = void(0); } fm.bind('dialogopened', err).exec('upload', Object.assign({ files: [file], clipdata: clipdata // to get unique name on connector }, self.confObj.uploadOpts), void(0), fm.cwd().hash).done(function(data) { if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { showMceDlg(); success(fm.convAbsUrl(url)); }).fail(function() { failure(fm.i18n('errFileNotFound')); }); } else { failure(fm.i18n(data.error? data.error : 'errUpload')); } }).fail(function(err) { var error = fm.parseError(err); if (error) { if (error === 'errUnknownCmd') { error = 'errPerm'; } else if (error === 'userabort') { error = 'errAbort'; } } failure(fm.i18n(error? error : 'errUploadNoFiles')); }); } }; // TinyMCE 5 supports "height: 100%" if (tVer >= 5) { opts.height = '100%'; } // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: tinymce, instance: void(0), opts: opts }); // TinyMCE configure tinymce.init(Object.assign(opts, self.confObj.mceOpts)); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([fm.options.cdns.tinymce + (fm.options.cdns.tinymce.match(/\.js/)? '' : '/tinymce.min.js')], function() { self.confObj.loader.resolve(); }, { loadType: 'tag' }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id); }, save : function(textarea, instance) { instance && instance.save(); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { // fit height to base node on dialog resize instance && textarea._setHeight(); } }, { info : { id : 'zohoeditor', name : 'Zoho Editor', iconImg : 'img/editor-icons.png 0 -32', cmdCheck : 'ZohoOffice', preventGet: true, hideButtons: true, syncInterval : 15000, canMakeEmpty: true, integrate: { title: 'Zoho Office API', link: 'https://www.zoho.com/officeapi/' } }, mimes : [ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', //'application/pdf', 'application/vnd.oasis.opendocument.text', 'application/rtf', 'text/html', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.sun.xml.calc', 'text/csv', 'text/tab-separated-values', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.impress' ], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.Mobile || fm.UA.ltIE8) { this.disabled = true; } }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, ifm = $(this).hide(), uiToast = fm.getUI('toast'), spnr = $('
') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), cdata = function() { var data = ''; $.each(fm.customData, function(key, val) { data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); return data; }; $(ta).data('xhr', fm.request({ data: { cmd: 'editor', name: ta.editor.confObj.info.cmdCheck, method: 'init', 'args[target]': file.hash, 'args[lang]' : fm.lang, 'args[cdata]' : cdata() }, preventDefault : true }).done(function(data) { var opts; if (data.zohourl) { opts = { css: { height: '100%' } }; // trigger event 'editEditorPrepare' ta.editor.trigger('Prepare', { node: ta, editorObj: void(0), instance: ifm, opts: opts }); ifm.attr('src', data.zohourl).show().css(opts.css); if (data.warning) { uiToast.appendTo(ta.closest('.ui-dialog')); fm.toast({ msg: fm.i18n(data.warning), mode: 'warning', timeOut: 0, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); }, button: { text: 'btnYes' } }); } } else { data.error && fm.error(data.error); ta.elfinderdialog('destroy'); } }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.remove(); })); }, load : function() {}, getContent : function() {}, save : function() {}, // Before dialog close beforeclose : iframeClose, // On dialog closed close : function(ta) { var fm = this.fm, xhr = $(ta).data('xhr'); if (xhr.state() === 'pending') { xhr.reject(); } } }, { // Zip Archive with FlySystem info : { id : 'ziparchive', name : 'btnMount', iconImg : 'img/toolbar.png 0 -416', cmdCheck : 'ZipArchive', edit : function(file, editor) { var fm = this, dfrd = $.Deferred(); fm.request({ data:{ cmd: 'netmount', protocol: 'ziparchive', host: file.hash, path: file.phash }, preventFail: true, notify : {type : 'netmount', cnt : 1, hideCnt : true} }).done(function(data) { var pdir; if (data.added && data.added.length) { if (data.added[0].phash) { if (pdir = fm.file(data.added[0].phash)) { if (! pdir.dirs) { pdir.dirs = 1; fm.change({ changed: [ pdir ] }); } } } fm.one('netmountdone', function() { fm.exec('open', data.added[0].hash); fm.one('opendone', function() { data.toast && fm.toast(data.toast); }); }); } dfrd.resolve(); }) .fail(function(error) { dfrd.reject(error); }); return dfrd; } }, mimes : ['application/zip'], load : function() {}, save : function(){} }, { // Simple Text (basic textarea editor) info : { id : 'textarea', name : 'TextArea', useTextAreaEvent : true }, load : function(textarea) { // trigger event 'editEditorPrepare' this.trigger('Prepare', { node: textarea, editorObj: void(0), instance: void(0), opts: {} }); textarea.setSelectionRange && textarea.setSelectionRange(0, 0); $(textarea).trigger('focus').show(); }, save : function(){} }, { // File converter with online-convert.com info : { id : 'onlineconvert', name : 'Online Convert', iconImg : 'img/editor-icons.png 0 -144', cmdCheck : 'OnlineConvert', preventGet: true, hideButtons: true, single: true, converter: true, canMakeEmpty: false, integrate: { title: 'ONLINE-CONVERT.COM', link: 'https://online-convert.com' } }, mimes : ['*'], html : '
', // setup on elFinder bootup setup : function(opts, fm) { var mOpts = opts.extraOptions.onlineConvert || {maxSize:100,showLink:true}; if (mOpts.maxSize) { this.info.maxSize = mOpts.maxSize * 1048576; } this.set = Object.assign({ url : 'https://%s.online-convert.com%s?external_url=', conv : { Archive: {'7Z':{}, 'BZ2':{ext:'bz'}, 'GZ':{}, 'ZIP':{}}, Audio: {'MP3':{}, 'OGG':{ext:'oga'}, 'WAV':{}, 'WMA':{}, 'AAC':{}, 'AIFF':{ext:'aif'}, 'FLAC':{}, 'M4A':{}, 'MMF':{}, 'OPUS':{ext:'oga'}}, Document: {'DOC':{}, 'DOCX':{}, 'HTML':{}, 'ODT':{}, 'PDF':{}, 'PPT':{}, 'PPTX':{}, 'RTF':{}, 'SWF':{}, 'TXT':{}}, eBook: {'AZW3':{ext:'azw'}, 'ePub':{}, 'FB2':{ext:'xml'}, 'LIT':{}, 'LRF':{}, 'MOBI':{}, 'PDB':{}, 'PDF':{},'PDF-eBook':{ext:'pdf'}, 'TCR':{}}, Hash: {'Adler32':{}, 'Apache-htpasswd':{}, 'Blowfish':{}, 'CRC32':{}, 'CRC32B':{}, 'Gost':{}, 'Haval128':{},'MD4':{}, 'MD5':{}, 'RIPEMD128':{}, 'RIPEMD160':{}, 'SHA1':{}, 'SHA256':{}, 'SHA384':{}, 'SHA512':{}, 'Snefru':{}, 'Std-DES':{}, 'Tiger128':{}, 'Tiger128-calculator':{}, 'Tiger128-converter':{}, 'Tiger160':{}, 'Tiger192':{}, 'Whirlpool':{}}, Image: {'BMP':{}, 'EPS':{ext:'ai'}, 'GIF':{}, 'EXR':{}, 'ICO':{}, 'JPG':{}, 'PNG':{}, 'SVG':{}, 'TGA':{}, 'TIFF':{ext:'tif'}, 'WBMP':{}, 'WebP':{}}, Video: {'3G2':{}, '3GP':{}, 'AVI':{}, 'FLV':{}, 'HLS':{ext:'m3u8'}, 'MKV':{}, 'MOV':{}, 'MP4':{}, 'MPEG-1':{ext:'mpeg'}, 'MPEG-2':{ext:'mpeg'}, 'OGG':{ext:'ogv'}, 'OGV':{}, 'WebM':{}, 'WMV':{}, 'Android':{link:'/convert-video-for-%s',ext:'mp4'}, 'Blackberry':{link:'/convert-video-for-%s',ext:'mp4'}, 'DPG':{link:'/convert-video-for-%s',ext:'avi'}, 'iPad':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPhone':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPod':{link:'/convert-video-for-%s',ext:'mp4'}, 'Nintendo-3DS':{link:'/convert-video-for-%s',ext:'avi'}, 'Nintendo-DS':{link:'/convert-video-for-%s',ext:'avi'}, 'PS3':{link:'/convert-video-for-%s',ext:'mp4'}, 'Wii':{link:'/convert-video-for-%s',ext:'avi'}, 'Xbox':{link:'/convert-video-for-%s',ext:'wmv'}} }, catExts : { Hash: 'txt' }, link : '', useTabs : ($.fn.tabs && !fm.UA.iOS)? true : false // Can't work on iOS, I don't know why. }, mOpts); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, confObj = ta.editor.confObj, set = confObj.set, uiToast = fm.getUI('toast'), idxs = {}, allowZip = fm.uploadMimeCheck('application/zip', file.phash), selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '', getExt = function(cat, con) { var c; if (set.catExts[cat]) { return set.catExts[cat]; } if (set.conv[cat] && (c = set.conv[cat][con])) { return (c.ext || con).toLowerCase(); } return con.toLowerCase(); }, setOptions = function(cat, done) { var type, dfdInit, dfd; if (typeof confObj.api === 'undefined') { dfdInit = fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'init' }, preventDefault : true }); } else { dfdInit = $.Deferred().resolve({api: confObj.api}); } cat = cat.toLowerCase(); dfdInit.done(function(data) { confObj.api = data.api; if (confObj.api) { if (cat) { type = '?category=' + cat; } else { type = ''; cat = 'all'; } if (!confObj.conversions) { confObj.conversions = {}; } if (!confObj.conversions[cat]) { dfd = $.getJSON('https://api2.online-convert.com/conversions' + type); } else { dfd = $.Deferred().resolve(confObj.conversions[cat]); } dfd.done(function(d) { confObj.conversions[cat] = d; $.each(d, function(i, o) { btns[set.useTabs? 'children' : 'find']('.onlineconvert-category-' + o.category).children('.onlineconvert-' + o.target).trigger('makeoption', o); }); done && done(); }); } }); }, btns = (function() { var btns = $('
').on('click', 'button', function() { var b = $(this), opts = b.data('opts') || null, cat = b.closest('.onlineconvert-category').data('cname'), con = b.data('conv'); if (confObj.api === true) { api({ category: cat, convert: con, options: opts }); } }).on('change', function(e) { var t = $(e.target), p = t.parent(), b = t.closest('.elfinder-edit-onlineconvert-button').children('button:first'), o = b.data('opts') || {}, v = p.data('type') === 'boolean'? t.is(':checked') : t.val(); e.stopPropagation(); if (v) { if (p.data('type') === 'integer') { v = parseInt(v); } if (p.data('pattern')) { var reg = new RegExp(p.data('pattern')); if (!reg.test(v)) { requestAnimationFrame(function() { fm.error('"' + fm.escape(v) + '" is not match to "/' + fm.escape(p.data('pattern')) + '/"'); }); v = null; } } } if (v) { o[t.parent().data('optkey')] = v; } else { delete o[p.data('optkey')]; } b.data('opts', o); }), ul = $('
    '), oform = function(n, o) { var f = $('

    ').data('optkey', n).data('type', o.type), checked = '', disabled = '', nozip = false, opts, btn, elm; if (o.description) { f.attr('title', fm.i18n(o.description)); } if (o.pattern) { f.data('pattern', o.pattern); } f.append($('').text(fm.i18n(n) + ' : ')); if (o.type === 'boolean') { if (o['default'] || (nozip = (n === 'allow_multiple_outputs' && !allowZip))) { checked = ' checked'; if (nozip) { disabled = ' disabled'; } btn = this.children('button:first'); opts = btn.data('opts') || {}; opts[n] = true; btn.data('opts', opts); } f.append($('')); } else if (o['enum']){ elm = $('').append($('').text('Select...')); $.each(o['enum'], function(i, v) { elm.append($('').text(v)); }); f.append(elm); } else { f.append($('')); } return f; }, makeOption = function(o) { var elm = this, b = $('').on('click', function() { f.toggle(); }), f = $('
    ').hide(); if (o.options) { $.each(o.options, function(k, v) { k !== 'download_password' && f.append(oform.call(elm, k, v)); }); } elm.append(b, f); }, ts = (+new Date()), i = 0; if (!confObj.ext2mime) { confObj.ext2mime = Object.assign(fm.arrayFlip(fm.mimeTypes), ext2mime); } $.each(set.conv, function(t, c) { var cname = t.toLowerCase(), id = 'elfinder-edit-onlineconvert-' + cname + ts, type = $('
    ').data('cname', t), cext; $.each(c, function(n, o) { var nl = n.toLowerCase(), ext = getExt(t, n); if (!confObj.ext2mime[ext]) { if (cname === 'audio' || cname === 'image' || cname === 'video') { confObj.ext2mime[ext] = cname + '/x-' + nl; } else { confObj.ext2mime[ext] = 'application/octet-stream'; } } if (fm.uploadMimeCheck(confObj.ext2mime[ext], file.phash)) { type.append($('
    ').on('makeoption', function(e, data) { var elm = $(this); if (!elm.children('.elfinder-button-icon-preference').length) { makeOption.call(elm, data); } }).append($('').text(n).data('conv', n))); } }); if (type.children().length) { ul.append($('
  • ').append($('').attr('href', selfUrl + '#' + id).text(t))); btns.append(type); idxs[cname] = i++; } }); if (set.useTabs) { btns.prepend(ul).tabs({ beforeActivate: function(e, ui) { setOptions(ui.newPanel.data('cname')); } }); } else { $.each(set.conv, function(t) { var tl = t.toLowerCase(); btns.append($('
    ').append($('').text(t)).append(btns.children('.onlineconvert-category-' + tl))); }); } return btns; })(), select = $(this) .append( btns, (set.showLink? $(set.link) : null) ), spnr = $('
    ') .hide() .html('' + fm.i18n('nowLoading') + '') .appendTo(select.parent()), prog = $('
    ').appendTo(spnr), _url = null, url = function() { var onetime; if (_url) { return $.Deferred().resolve(_url); } else { spnr.show(); return fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { _url = url; }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.hide(); }); } }, api = function(opts) { $(ta).data('dfrd', url().done(function(url) { select.fadeOut(); setStatus({info: 'Start conversion request.'}); fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[category]' : opts.category.toLowerCase(), 'args[convert]' : opts.convert.toLowerCase(), 'args[options]' : JSON.stringify(opts.options), 'args[source]' : fm.convAbsUrl(url), 'args[filename]' : fm.splitFileExtention(file.name)[0] + '.' + getExt(opts.category, opts.convert), 'args[mime]' : file.mime }, preventDefault : true }).done(function(data) { checkRes(data.apires, opts.category, opts.convert); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); })); }, checkRes = function(res, cat, con) { var status, err = []; if (res && res.id) { status = res.status; if (status.code === 'failed') { spnr.hide(); if (res.errors && res.errors.length) { $.each(res.errors, function(i, o) { o.message && err.push(o.message); }); } fm.error(err.length? err : status.info); select.fadeIn(); } else if (status.code === 'completed') { upload(res); } else { setStatus(status); setTimeout(function() { polling(res.id); }, 1000); } } else { uiToast.appendTo(ta.closest('.ui-dialog')); if (res.message) { fm.toast({ msg: fm.i18n(res.message), mode: 'error', timeOut: 5000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); } fm.toast({ msg: fm.i18n('editorConvNoApi'), mode: 'error', timeOut: 3000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); spnr.hide(); select.show(); } }, setStatus = function(status) { spnr.show().children('.elfinder-spinner-text').text(status.info); }, polling = function(jobid) { fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[jobid]': jobid }, preventDefault : true }).done(function(data) { checkRes(data.apires); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); }, upload = function(res) { var output = res.output, id = res.id, url = ''; spnr.hide(); if (output && output.length) { ta.elfinderdialog('destroy'); $.each(output, function(i, o) { if (o.uri) { url += o.uri + '\n'; } }); fm.upload({ target: file.phash, files: [url], type: 'text', extraData: { contentSaveId: 'OnlineConvert-' + res.id } }); } }, mode = 'document', cl, m; select.parent().css({overflow: 'auto'}).addClass('overflow-scrolling-touch'); if (m = file.mime.match(/^(audio|image|video)/)) { mode = m[1]; } if (set.useTabs) { if (idxs[mode]) { btns.tabs('option', 'active', idxs[mode]); } } else { cl = Object.keys(set.conv).length; $.each(set.conv, function(t) { if (t.toLowerCase() === mode) { setOptions(t, function() { $.each(set.conv, function(t0) { t0.toLowerCase() !== mode && setOptions(t0); }); }); return false; } cl--; }); if (!cl) { $.each(set.conv, function(t) { setOptions(t); }); } select.parent().scrollTop(btns.children('.onlineconvert-fieldset-' + mode).offset().top); } }, load : function() {}, getContent : function() {}, save : function() {}, // On dialog closed close : function(ta) { var fm = this.fm, dfrd = $(ta).data('dfrd'); if (dfrd && dfrd.state() === 'pending') { dfrd.reject(); } } } ]; }, window.elFinder)); /** * German Translation / Deutsche Übersetzung * @author JPG & Mace * @author tora60 from pragmaMx.org * @author Timo-Linde * @author OSWorX * @author Maximilian Schwarz * @author SF Webdesign * @version 2019-12-13 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.de = { translator : 'JPG & Mace <dev@flying-datacenter.de>, tora60 from pragmaMx.org, Timo-Linde <info@timo-linde.de>, OSWorX <info@osworx.net>, Maximilian Schwarz <info@deefuse.de>, SF Webdesign <webdesign@stephan-frank.de>', language : 'Deutsch', direction : 'ltr', dateFormat : 'j. F Y H:i', // 3. März 2020 14:58 fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Fehler', 'errUnknown' : 'Unbekannter Fehler.', 'errUnknownCmd' : 'Unbekannter Befehl.', 'errJqui' : 'Ungültige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable müssen inkludiert sein.', 'errNode' : 'Für elFinder muss das DOM-Element erstellt werden.', 'errURL' : 'Ungültige elFinder-Konfiguration! Die URL-Option ist nicht gesetzt.', 'errAccess' : 'Zugriff verweigert.', 'errConnect' : 'Verbindung zum Backend fehlgeschlagen.', 'errAbort' : 'Verbindung abgebrochen.', 'errTimeout' : 'Zeitüberschreitung der Verbindung.', 'errNotFound' : 'Backend nicht gefunden.', 'errResponse' : 'Ungültige Backend-Antwort.', 'errConf' : 'Ungültige Backend-Konfiguration.', 'errJSON' : 'PHP JSON-Modul nicht vorhanden.', 'errNoVolumes' : 'Keine lesbaren Laufwerke vorhanden.', 'errCmdParams' : 'Ungültige Parameter für Befehl: "$1".', 'errDataNotJSON' : 'Daten nicht im JSON-Format.', 'errDataEmpty' : 'Daten sind leer.', 'errCmdReq' : 'Backend-Anfrage benötigt Befehl.', 'errOpen' : 'Kann "$1" nicht öffnen.', 'errNotFolder' : 'Objekt ist kein Ordner.', 'errNotFile' : 'Objekt ist keine Datei.', 'errRead' : 'Kann "$1" nicht öffnen.', 'errWrite' : 'Kann nicht in "$1" schreiben.', 'errPerm' : 'Zugriff verweigert.', 'errLocked' : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelöscht werden.', 'errExists' : 'Die Datei "$1" existiert bereits.', 'errInvName' : 'Ungültiger Dateiname.', 'errInvDirname' : 'Ungültiger Ordnername.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Ordner nicht gefunden.', 'errFileNotFound' : 'Datei nicht gefunden.', 'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.', 'errPopup' : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu öffnen, Pop-Ups in den Browsereinstellungen aktivieren.', 'errMkdir' : 'Kann Ordner "$1" nicht erstellen.', 'errMkfile' : 'Kann Datei "$1" nicht erstellen.', 'errRename' : 'Kann "$1" nicht umbenennen.', 'errCopyFrom' : 'Kopieren von Dateien von "$1" nicht erlaubt.', 'errCopyTo' : 'Kopieren von Dateien nach "$1" nicht erlaubt.', 'errMkOutLink' : 'Der Link kann nicht außerhalb der Partition führen.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload-Fehler.', // old name - errUploadCommon 'errUploadFile' : 'Kann "$1" nicht hochladen.', // old name - errUpload 'errUploadNoFiles' : 'Keine Dateien zum Hochladen gefunden.', 'errUploadTotalSize' : 'Gesamtgröße überschreitet die Maximalgröße.', // old name - errMaxSize 'errUploadFileSize' : 'Die Datei überschreitet die Maximalgröße.', // old name - errFileMaxSize 'errUploadMime' : 'Dateiart (mime) nicht zulässig.', 'errUploadTransfer' : '"$1" Übertragungsfehler.', 'errUploadTemp' : 'Kann temporäre Datei nicht erstellen.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new 'errReplace' : 'Kann "$1" nicht ersetzen.', 'errSave' : 'Kann "$1" nicht speichern.', 'errCopy' : 'Kann "$1" nicht kopieren.', 'errMove' : 'Kann "$1" nicht verschieben.', 'errCopyInItself' : '"$1" kann sich nicht in sich selbst kopieren.', 'errRm' : 'Kann "$1" nicht entfernen.', 'errTrash' : 'Kann Objekt nicht in Mülleimer legen.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kann Quelldatei(en) nicht entfernen.', 'errExtract' : 'Kann "$1" nicht entpacken.', 'errArchive' : 'Archiv konnte nicht erstellt werden.', 'errArcType' : 'Archivtyp nicht untersützt.', 'errNoArchive' : 'Bei der Datei handelt es sich nicht um ein Archiv, oder die Archivart wird nicht unterstützt.', 'errCmdNoSupport' : 'Das Backend unterstützt diesen Befehl nicht.', 'errReplByChild' : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthält.', 'errArcSymlinks' : 'Aus Sicherheitsgründen ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012 'errArcMaxSize' : 'Die Archivdateien übersteigen die maximal erlaubte Größe.', 'errResize' : 'Größe von "$1" kann nicht geändert werden.', 'errResizeDegree' : 'Ungültiger Rotationswert.', // added 7.3.2013 'errResizeRotate' : 'Bild konnte nicht gedreht werden.', // added 7.3.2013 'errResizeSize' : 'Ungültige Bildgröße.', // added 7.3.2013 'errResizeNoChange' : 'Bildmaße nicht geändert.', // added 7.3.2013 'errUsupportType' : 'Nicht unterstützte Dateiart.', 'errNotUTF8Content' : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht bearbeitet werden.', // added 9.11.2011 'errNetMount' : 'Verbindung mit "$1" nicht möglich.', // added 17.04.2012 'errNetMountNoDriver' : 'Nicht unterstütztes Protokoll.', // added 17.04.2012 'errNetMountFailed' : 'Verbindung fehlgeschlagen.', // added 17.04.2012 'errNetMountHostReq' : 'Host benötigt.', // added 18.04.2012 'errSessionExpires' : 'Diese Sitzung ist aufgrund von Inaktivität abgelaufen.', 'errCreatingTempDir' : 'Erstellung des temporären Ordners nicht möglich: "$1"', 'errFtpDownloadFile' : 'Download der Datei über FTP nicht möglich: "$1"', 'errFtpUploadFile' : 'Upload der Datei zu FTP nicht möglich: "$1"', 'errFtpMkdir' : 'Erstellung des Remote-Ordners mit FTP nicht möglich: "$1"', 'errArchiveExec' : 'Fehler beim Archivieren der Dateien: "$1"', 'errExtractExec' : 'Fehler beim Extrahieren der Dateien: "$1"', 'errNetUnMount' : 'Kann nicht ausgehängt werden.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Ordner kann nich hochladen werden, eventuell mit Google Chrome versuchen.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Zeitüberschreitung während der Suche nach "$1". Suchergebnis ist unvollständig.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Die maximale Anzahl auswählbarer Elemente ist $1', // from v2.1.17 added 17.10.2016 'errRestore' : 'Datei konnte nicht aus Mülleimer wieder hergestellt werden bzw. Ziel für Wiederherstellung nicht gefunden.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Kein Editor für diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ein serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Es sind noch $1 weitere Fehler.', // from v2.1.44 added 13.12.2019 /******************************* commands names ********************************/ 'cmdarchive' : 'Archiv erstellen', 'cmdback' : 'Zurück', 'cmdcopy' : 'Kopieren', 'cmdcut' : 'Ausschneiden', 'cmddownload' : 'Herunterladen', 'cmdduplicate' : 'Duplizieren', 'cmdedit' : 'Datei bearbeiten', 'cmdextract' : 'Archiv entpacken', 'cmdforward' : 'Vorwärts', 'cmdgetfile' : 'Datei auswählen', 'cmdhelp' : 'Über diese Software', 'cmdhome' : 'Startordner', 'cmdinfo' : 'Informationen', 'cmdmkdir' : 'Neuer Ordner', 'cmdmkdirin' : 'In neuen Ordner', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Neuer Datei', 'cmdopen' : 'Öffnen', 'cmdpaste' : 'Einfügen', 'cmdquicklook' : 'Vorschau', 'cmdreload' : 'Aktualisieren', 'cmdrename' : 'Umbenennen', 'cmdrm' : 'Löschen', 'cmdtrash' : 'In den Mülleimer legen', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Wiederherstellen', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Suchen', 'cmdup' : 'In übergeordneten Ordner wechseln', 'cmdupload' : 'Datei hochladen', 'cmdview' : 'Ansehen', 'cmdresize' : 'Größe ändern & drehen', 'cmdsort' : 'Sortieren', 'cmdnetmount' : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012 'cmdnetunmount': 'Abhängen', // from v2.1 added 30.04.2012 'cmdplaces' : 'Favoriten', // added 28.12.2014 'cmdchmod' : 'Berechtigung ändern', // from v2.1 added 20.6.2015 'cmdopendir' : 'Einen Ordner öffnen', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Spaltenbreite zurücksetzen', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Verschieben', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Ordner Leeren', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Rückgängig', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Wiederholen', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Alle auswählen', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Keine auswählen', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Auswahl rückgängig machen', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'In neuem Fenster öffnen', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Verstecken', // from v2.1.41 added 13.12.2019 /*********************************** buttons ***********************************/ 'btnClose' : 'Schließen', 'btnSave' : 'Speichern', 'btnRm' : 'Entfernen', 'btnApply' : 'Anwenden', 'btnCancel' : 'Abbrechen', 'btnNo' : 'Nein', 'btnYes' : 'Ja', 'btnDiscard': 'Änderungen verwerfen', 'btnMount' : 'Verbinden', // added 18.04.2012 'btnApprove': 'Gehe zu $1 und genehmige', // from v2.1 added 26.04.2012 'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012 'btnConv' : 'Konvertieren', // from v2.1 added 08.04.2014 'btnCwd' : 'Arbeitspfad', // from v2.1 added 22.5.2015 'btnVolume' : 'Partition', // from v2.1 added 22.5.2015 'btnAll' : 'Alle', // from v2.1 added 22.5.2015 'btnMime' : 'MIME-Typ', // from v2.1 added 22.5.2015 'btnFileName':'Dateiname', // from v2.1 added 22.5.2015 'btnSaveClose': 'Speichern & Schließen', // from v2.1 added 12.6.2015 'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015 'btnRename' : 'Umbenennen', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Zurück ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Speichern als', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Öffne Ordner', 'ntffile' : 'Öffne Datei', 'ntfreload' : 'Ordnerinhalt neu', 'ntfmkdir' : 'Erstelle Ordner', 'ntfmkfile' : 'Erstelle Dateien', 'ntfrm' : 'Lösche Dateien', 'ntfcopy' : 'Kopiere Dateien', 'ntfmove' : 'Verschiebe Dateien', 'ntfprepare' : 'Kopiervorgang initialisieren', 'ntfrename' : 'Benenne Dateien um', 'ntfupload' : 'Dateien hochladen', 'ntfdownload' : 'Dateien herunterladen', 'ntfsave' : 'Speichere Datei', 'ntfarchive' : 'Erstelle Archiv', 'ntfextract' : 'Entpacke Dateien', 'ntfsearch' : 'Suche', 'ntfresize' : 'Bildgrößen ändern', 'ntfsmth' : 'Bin beschäftigt ..', 'ntfloadimg' : 'Lade Bild ..', 'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012 'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012 'ntfdim' : 'Bildgröße erfassen', // added 20.05.2013 'ntfreaddir' : 'Lese Ordnerinformationen', // from v2.1 added 01.07.2013 'ntfurl' : 'Hole URL von Link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Ändere Dateiberechtigungen', // from v2.1 added 20.6.2015 'ntfpreupload': 'Upload-Dateinamen überprüfen', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Upload läuft', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Bewege in den Mülleimer', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Wiederherstellung aus Mülleimer', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Prüfe Zielordner', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Vorherige Operation rückgängig machen', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Wiederherstellen', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Überprüfe Inhalte', // from v2.1.41 added 13.12.2019 /*********************************** volumes *********************************/ 'volume_Trash' : 'Mülleimer', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unbekannt', 'Today' : 'Heute', 'Yesterday' : 'Gestern', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mär', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dez', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'März', 'April' : 'April', 'May' : 'Mai', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'Dezember', 'Sunday' : 'Sonntag', 'Monday' : 'Montag', 'Tuesday' : 'Dienstag', 'Wednesday' : 'Mittwoch', 'Thursday' : 'Donnerstag', 'Friday' : 'Freitag', 'Saturday' : 'Samstag', 'Sun' : 'So', 'Mon' : 'Mo', 'Tue' : 'Di', 'Wed' : 'Mi', 'Thu' : 'Do', 'Fri' : 'Fr', 'Sat' : 'Sa', /******************************** sort variants ********************************/ 'sortname' : 'nach Name', 'sortkind' : 'nach Art', 'sortsize' : 'nach Größe', 'sortdate' : 'nach Datum', 'sortFoldersFirst' : 'Ordner zuerst', 'sortperm' : 'nach Berechtigung', // from v2.1.13 added 13.06.2016 'sortmode' : 'nach Modus', // from v2.1.13 added 13.06.2016 'sortowner' : 'nach Besitzer', // from v2.1.13 added 13.06.2016 'sortgroup' : 'nach Gruppe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'auch Baumansicht', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'Neues Textdokument (.txt)', // added 10.11.2015 'untitled folder' : 'Neuer Ordner', // added 10.11.2015 'Archive' : 'Neues Archiv', // from v2.1 added 10.11.2015 'untitled file' : 'Neue Datei $1', // from v2.1.41 added 13.12.2019 'extentionfile' : '$1: Datei', // from v2.1.41 added 13.12.2019 'extentiontype' : '$1: $2', // from v2.1.43 added 13.12.2018 /********************************** messages **********************************/ 'confirmReq' : 'Bestätigung benötigt', 'confirmRm' : 'Sollen die Dateien gelöscht werden?
    Vorgang ist endgültig!', 'confirmRepl' : 'Datei ersetzen?', 'confirmRest' : 'Vorhandenes Element durch das Element aus Mülleimer ersetzen?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nicht UTF-8 kodiert
    Zu UTF-8 konvertieren?
    Inhalte werden zu UTF-8 konvertiert bei Speicherung.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorübergehend in UTF-8 zur Bearbeitung konvertiert werden.
    Bitte eine Zeichenkodierung dieser Datei auswählen.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Die Datei wurde geändert.
    Änderungen gehen verloren, wenn nicht gespeichert wird.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Sicher diese Elemente in den Mülleimer verschieben?', // from v2.1.24 added 29.4.2017 'confirmMove' : 'Sicher alle Elemente nach "$1" verschieben?', // from v2.1.50 added 13.12.2019 'apllyAll' : 'Alles bestätigen', 'name' : 'Name', 'size' : 'Größe', 'perms' : 'Berechtigungen', 'modify' : 'Geändert', 'kind' : 'Typ', 'read' : 'Lesen', 'write' : 'Schreiben', 'noaccess' : 'Kein Zugriff', 'and' : 'und', 'unknown' : 'unbekannt', 'selectall' : 'Alle Dateien auswählen', 'selectfiles' : 'Dateien auswählen', 'selectffile' : 'Erste Datei auswählen', 'selectlfile' : 'Letzte Datei auswählen', 'viewlist' : 'Spaltenansicht', 'viewicons' : 'Symbolansicht', 'viewSmall' : 'Kleine Icons', // from v2.1.39 added 13.12.2019 'viewMedium' : 'Medium Icons', // from v2.1.39 added 13.12.2019 'viewLarge' : 'Große Icons', // from v2.1.39 added 13.12.2019 'viewExtraLarge' : 'Extragroße Icons', // from v2.1.39 added 13.12.2019 'places' : 'Favoriten', 'calc' : 'Berechne', 'path' : 'Pfad', 'aliasfor' : 'Verknüpfung zu', 'locked' : 'Gesperrt', 'dim' : 'Bildgröße', 'files' : 'Dateien', 'folders' : 'Ordner', 'items' : 'Objekte', 'yes' : 'ja', 'no' : 'nein', 'link' : 'Link', 'searcresult' : 'Suchergebnisse', 'selected' : 'Objekte ausgewählt', 'about' : 'Über', 'shortcuts' : 'Tastenkombinationen', 'help' : 'Hilfe', 'webfm' : 'Web-Dateiverwaltung', 'ver' : 'Version', 'protocolver' : 'Protokoll-Version', 'homepage' : 'Projekt-Webseite', 'docs' : 'Dokumentation', 'github' : 'Forke uns auf Github', 'twitter' : 'Folge uns auf twitter', 'facebook' : 'Begleite uns auf facebook', 'team' : 'Team', 'chiefdev' : 'Chefentwickler', 'developer' : 'Entwickler', 'contributor' : 'Unterstützer', 'maintainer' : 'Maintainer', 'translator' : 'Übersetzer', 'icons' : 'Icons', 'dontforget' : 'und vergiss nicht .. morgen ist auch noch ein Tag ..', 'shortcutsof' : 'Tastenkombinationen deaktiviert', 'dropFiles' : 'Dateien hier ablegen', 'or' : 'oder', 'selectForUpload' : 'Dateien zum Upload auswählen', 'moveFiles' : 'Dateien verschieben', 'copyFiles' : 'Dateien kopieren', 'restoreFiles' : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Lösche von Favoriten', 'aspectRatio' : 'Seitenverhältnis', 'scale' : 'Maßstab', 'width' : 'Breite', 'height' : 'Höhe', 'resize' : 'Größe ändern', 'crop' : 'Zuschneiden', 'rotate' : 'Drehen', 'rotate-cw' : 'Drehe 90° im Uhrzeigersinn', 'rotate-ccw' : 'Drehe 90° gegen Uhrzeigersinn', 'degree' : '°', 'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012 'protocol' : 'Protokoll', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Benutzer', // added 18.04.2012 'pass' : 'Passwort', // added 18.04.2012 'confirmUnmount' : 'Soll "$1" ausgehängt werden', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Dateien in den Browser ziehen', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Dateien hier loslassen', // from v2.1 added 07.04.2014 'encoding' : 'Kodierung', // from v2.1 added 19.12.2014 'locale' : 'Lokal', // from v2.1 added 19.12.2014 'searchTarget' : 'Ziel: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015 'owner' : 'Besitzer', // from v2.1 added 20.6.2015 'group' : 'Gruppe', // from v2.1 added 20.6.2015 'other' : 'Andere', // from v2.1 added 20.6.2015 'execute' : 'Ausführen', // from v2.1 added 20.6.2015 'perm' : 'Berechtigung', // from v2.1 added 20.6.2015 'mode' : 'Modus', // from v2.1 added 20.6.2015 'emptyFolder' : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Der Ordner ist leer\\A Elemente durch Ziehen hinzufügen', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Der Ordner ist leer\\A Elemente durch langes Tippen hinzufügen', // from v2.1.6 added 30.12.2015 'quality' : 'Qualität', // from v2.1.6 added 5.1.2016 'autoSync' : 'Automatische Synchronisation', // from v2.1.6 added 10.1.2016 'moveUp' : 'Nach oben bewegen', // from v2.1.6 added 18.1.2016 'getLink' : 'URL-Link holen', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Ausgewählte Objekte ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Ordner-ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016 'reAuth' : 'Erneut anmelden', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Wird geladen...', // from v2.1.12 added 4.26.2016 'openMulti' : 'mehrere Dateien öffnen', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Es wird versucht die $1 Dateien zu öffnen .. sicher im Browser öffnen?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Kein Suchergebnis', // from v2.1.12 added 5.16.2016 'editingFile' : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 Objekt(e) ausgewählt.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Wiederherstellen', // from v2.1.15 added 3.8.2016 'complete' : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontextmenü', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Seite umblättern', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016 'reset' : 'Neustart', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Farbauswahl', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Raster', // from v2.1.16 added 4.10.2016 'enabled' : 'Ein', // from v2.1.16 added 4.10.2016 'disabled' : 'Aus', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Die Ergebnisse der ersten Buchstabensuche sind in der aktuellen Ansicht leer.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text Bezeichnung', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 Minuten übrig', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Wiedereröffnen mit ausgewählter Codierung', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Speichern mit der gewählten Kodierung', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Verzeichnis auswählen', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017 'presets' : 'Voreinstellungen', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Zu viele Elemente auf einmal für den Mülleimer.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textbereich', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Leere Ordner "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Es befinden sich keine Elemente im Ordner "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Einstellungen', // from v2.1.26 added 28.6.2017 'language' : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbareinstellung', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 Zeichen übrig', // from v2.1.29 added 30.8.2017 'sum' : 'Summe', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Ungefähre Dateigröße', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fokussierung auf das Element Dialog mit Mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Auswählen', // from v2.1.30 added 23.11.2017 'selectAction' : 'Aktion bei der Auswahl der Datei', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Öffnen mit dem zuletzt verwendeten Editor', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Auswahl umkehren', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Sicher $1 ausgewählte Elemente in $2 umbenennen?
    Rückgängig nicht möglich!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Stapelumbenennung', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nummer', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Vorzeichen hinzufügen', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Nachzeichen hinzufügen', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Erweiterung ändern', // from v2.1.31 added 8.12.2017 'columnPref' : 'Spalteneinstellungen (Listenansicht)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Alle Änderungen werden sofort im Archiv angewendet.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Alle Änderungen werden nicht angewendet bis dieses Volume entfernt wird.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Die folgenden Datenträger, die auf diesem Datenträger eingehängt sind, werden ebenfalls ausgehängt. Sicher dass alle aushängt werden sollen?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Auswahl Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Datei-Hash-Algorithmen', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info-Elemente (Auswahl-Info-Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Drücken Sie erneut, um zu beenden.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Symbolleiste', // from v2.1.38 added 4.4.2018 'workspace' : 'Arbeitsplatz', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Alle', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icongröße (Symbolansicht)', // form v2.1.39 added 7.5.2018 'editorMaximized' : 'Öffne Editorfenster in voller Größe', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Aktuell keine API zur Bearbeitung verfügbar, bitte auf Webseite bearbeiten', //from v2.1.40 added 13.12.2019 'editorConvNeedUpload' : 'Um zu speichern nach der Bearbeitung Element entweder mit URL hochladen oder mit herunter geladener Datei', // from v2.1.40 added 13.12.2019 'convertOn' : 'Bearbeiten auf Seite $1', // from v2.1.40 added 13.12.2019 'integrations' : 'Integrationen', // from v2.1.40 added 13.12.2019 'integrationWith' : 'Diese Software hat folgende externe Dienste integriert. Vor Anwendung bitte die jeweiligen Nutzungsbedingungen usw. beachten', // from v2.1.40 added 13.12.2019 'showHidden' : 'Zeige versteckte Elemente', // from v2.1.41 added 13.12.2019 'hideHidden' : 'Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'toggleHidden' : 'Zeige/Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'makefileTypes' : 'Dateiarten bei "Neue Datei" aktivieren', // from v2.1.41 added 13.12.2019 'typeOfTextfile' : 'Art der Textdatei', // from v2.1.41 added 13.12.2019 'add' : 'Neu', // from v2.1.41 added 13.12.2019 'theme' : 'Thema', // from v2.1.43 added 13.12.2019 'default' : 'Standard', // from v2.1.43 added 13.12.2019 'description' : 'Beschreibung', // from v2.1.43 added 13.12.2019 'website' : 'Webseite', // from v2.1.43 added 13.12.2019 'author' : 'Autor', // from v2.1.43 added 13.12.2019 'email' : 'Email', // from v2.1.43 added 13.12.2019 'license' : 'Lizenz', // from v2.1.43 added 13.12.2019 'exportToSave' : 'Dieses Element kann nicht gespeichert werden. Um Änderungen nicht zu verlieren, muss es auf den lokalen PC exportiert werden', // from v2.1.44 added 13.12.2019 'dblclickToSelect': 'Doppelt auf Datei klicken um auszuwählen', // from v2.1.47 added 13.12.2019 'useFullscreen' : 'Gesamter Bildschirm', // from v2.1.47 added 13.12.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unbekannt', 'kindRoot' : 'Stammverzeichnis', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Ordner', 'kindSelects' : 'Auswahlkriterien', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Verknüpfung', 'kindAliasBroken' : 'Defekte Verknüpfung', // applications 'kindApp' : 'Programm', 'kindPostscript' : 'Postscript-Dokument', 'kindMsOffice' : 'MS Office-Dokument', 'kindMsWord' : 'MS Word-Dokument', 'kindMsExcel' : 'MS Excel-Dokument', 'kindMsPP' : 'MS Powerpoint-Präsentation', 'kindOO' : 'Open Office-Dokument', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portables Dokumentenformat (PDF)', 'kindTorrent' : 'Bittorrent-Datei', 'kind7z' : '7z-Archiv', 'kindTAR' : 'TAR-Archiv', 'kindGZIP' : 'GZIP-Archiv', 'kindBZIP' : 'BZIP-Archiv', 'kindXZ' : 'XZ-Archiv', 'kindZIP' : 'ZIP-Archiv', 'kindRAR' : 'RAR-Archiv', 'kindJAR' : 'Java JAR-Datei', 'kindTTF' : 'True Type-Schrift', 'kindOTF' : 'Open Type-Schrift', 'kindRPM' : 'RPM-Paket', // fonts 'kindFont' : 'Schriftart', 'kindSFNT' : 'SFNT-Schrift', 'kindEOT' : 'Embedded-Open-Type-Schrift', 'kindWOFF' : 'Web-Open-Font-Format-Schrift', 'kindWOFF2' : 'Web-Open-Font-Format-2-Schrift', // texts 'kindText' : 'Text-Dokument', 'kindTextPlain' : 'Text-Dokument', 'kindPHP' : 'PHP-Quelltext', 'kindCSS' : 'CSS Stilvorlage', 'kindHTML' : 'HTML-Dokument', 'kindJS' : 'Javascript-Quelltext', 'kindRTF' : 'Formatierte Textdatei', 'kindC' : 'C-Quelltext', 'kindCHeader' : 'C Header-Quelltext', 'kindCPP' : 'C++ Quelltext', 'kindCPPHeader' : 'C++ Header-Quelltext', 'kindShell' : 'Unix-Shell-Skript', 'kindPython' : 'Python-Quelltext', 'kindJava' : 'Java-Quelltext', 'kindRuby' : 'Ruby-Quelltext', 'kindPerl' : 'Perl Script', 'kindSQL' : 'SQL-Quelltext', 'kindXML' : 'XML-Dokument', 'kindAWK' : 'AWK-Quelltext', 'kindCSV' : 'Kommagetrennte Daten', 'kindDOCBOOK' : 'Docbook XML-Dokument', 'kindMarkdown' : 'Markdown-Text', // added 20.7.2015 // images 'kindImage' : 'Bild', 'kindBMP' : 'Bitmap-Bild', 'kindJPEG' : 'JPEG-Bild', 'kindGIF' : 'GIF-Bild', 'kindPNG' : 'PNG-Bild', 'kindTIFF' : 'TIFF-Bild', 'kindTGA' : 'TGA-Bild', 'kindPSD' : 'Adobe Photoshop-Dokument', 'kindXBITMAP' : 'X Bitmap-Bild', 'kindPXM' : 'Pixelmator-Bild', // media 'kindAudio' : 'Audiodatei', 'kindAudioMPEG' : 'MPEG Audio', 'kindAudioMPEG4' : 'MPEG-4 Audio', 'kindAudioMIDI' : 'MIDI Audio', 'kindAudioOGG' : 'Ogg Vorbis Audio', 'kindAudioWAV' : 'WAV Audio', 'AudioPlaylist' : 'MP3-Playlist', 'kindVideo' : 'Videodatei', 'kindVideoDV' : 'DV Film', 'kindVideoMPEG' : 'MPEG Film', 'kindVideoMPEG4' : 'MPEG4 Film', 'kindVideoAVI' : 'AVI Film', 'kindVideoMOV' : 'QuickTime Film', 'kindVideoWM' : 'Windows Media Film', 'kindVideoFlash' : 'Flash Film', 'kindVideoMKV' : 'Matroska Film', 'kindVideoOGG' : 'Ogg Film' } }; })); /** * Greek translation * @author yawd , Romanos * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.el = { translator : 'yawd <ingo@yawd.eu>', language : 'Ελληνικά', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Πρόβλημα', 'errUnknown' : 'Άγνωστο πρόβλημα.', 'errUnknownCmd' : 'Άγνωστη εντολή.', 'errJqui' : 'Μη έγκυρη ρύθμιση του jQuery UI. Τα components "selectable", "draggable" και "droppable" πρέπει να περιληφούν.', 'errNode' : 'το elFinder χρειάζεται να έχει δημιουργηθεί το DOM Element.', 'errURL' : 'Μη έγκυρες ρυθμίσεις για το elFinder! η επιλογή URL δεν έχει οριστεί.', 'errAccess' : 'Απαγορεύεται η πρόσβαση.', 'errConnect' : 'Δεν ήταν δυνατή η σύνδεση με το backend.', 'errAbort' : 'Η σύνδεση εγκαταλείφθηκε.', 'errTimeout' : 'Η σύνδεση έληξε.', 'errNotFound' : 'Δε βρέθηκε το backend.', 'errResponse' : 'Μή έγκυρη απάντηση από το backend.', 'errConf' : 'Μη έγκυρες ρυθμίσεις για το backend.', 'errJSON' : 'Το PHP JSON module δεν είναι εγκατεστημένο.', 'errNoVolumes' : 'Δεν βρέθηκαν αναγνώσιμα volumes.', 'errCmdParams' : 'Μη έγκυρες παράμετροι για την εντολή "$1".', 'errDataNotJSON' : 'Τα δεδομένα δεν είναι JSON.', 'errDataEmpty' : 'Τα δεδομένα είναι άδεια.', 'errCmdReq' : 'Το Backend request χρειάζεται όνομα εντολής.', 'errOpen' : 'Δεν ήταν δυνατό να ανοίξει το "$1".', 'errNotFolder' : 'Το αντικείμενο δεν είναι φάκελος.', 'errNotFile' : 'Το αντικείμενο δεν είναι αρχείο.', 'errRead' : 'Δεν ήταν δυνατόν να διαβαστεί το "$1".', 'errWrite' : 'Δεν ήταν δυνατή η εγγραφή στο "$1".', 'errPerm' : 'Απαγορεύεται η πρόσβαση.', 'errLocked' : '"$1" είναι κλειδωμένο και δεν μπορεί να μετονομαστεί, μετακινηθεί ή διαγραφεί.', 'errExists' : 'Το αρχείο με όνομα "$1" υπάρχει ήδη.', 'errInvName' : 'Μη έγκυρο όνομα αρχείου.', 'errFolderNotFound' : 'Ο φάκελος δε βρέθηκε.', 'errFileNotFound' : 'Το αρχείο δε βρέθηκε.', 'errTrgFolderNotFound' : 'Ο φάκελος "$1" δε βρέθηκε.', 'errPopup' : 'Το πρόγραμμα πλήγησης εμπόδισε το άνοιγμα αναδυόμενου παραθύρου. Για ανοίξετε το αρχείο ενεργοποιήστε το στις επιλογές του περιηγητή.', 'errMkdir' : 'Η δυμιουργία του φακέλου "$1" δεν ήταν δυνατή.', 'errMkfile' : 'Η δημιουργία του αρχείου "$1" δεν ήταν δυνατή.', 'errRename' : 'Η μετονομασία του αρχείου "$1" δεν ήταν δυνατή.', 'errCopyFrom' : 'Δεν επιτρέπεται η αντιγραφή αρχείων από το volume "$1".', 'errCopyTo' : 'Δεν επιτρέπεται η αντιγραφή αρχείων στο volume "$1".', 'errUpload' : 'Πρόβλημα κατά το upload.', 'errUploadFile' : 'Το αρχείο "$1" δεν μπόρεσε να γίνει upload.', 'errUploadNoFiles' : 'Δεν βρέθηκαν αρχεία για upload.', 'errUploadTotalSize' : 'Τα δεδομένα υπερβαίνουν το επιτρεπόμενο μέγιστο μέγεθος δεδομένων.', 'errUploadFileSize' : 'Το αρχείο υπερβαίνει το επιτρεπόμενο μέγιστο μέγεθος.', 'errUploadMime' : 'Ο τύπος αρχείου δεν επιτρέπεται.', 'errUploadTransfer' : 'Πρόβλημα μεταφοράς για το "$1".', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Το "$1" δεν ήταν δυνατόν να αποθηκευτεί.', 'errCopy' : 'Δεν ήταν δυνατή η αντιγραφή του "$1".', 'errMove' : 'Δεν ήταν δυνατή η μετακίνηση του "$1".', 'errCopyInItself' : 'Δεν είναι δυνατή η αντιγραφή του "$1" στον εαυτό του.', 'errRm' : 'Δεν ήταν δυνατή η αφαίρεση του "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Δεν ήταν δυνατή η ανάγνωση των αρχείων από "$1".', 'errArchive' : 'Δεν ήταν δυνατή η δημιουργία του αρχείου.', 'errArcType' : 'Ο τύπος αρχείου δεν υποστηρίζεται.', 'errNoArchive' : 'Το αρχείο δεν είναι έγκυρο ή δεν υποστηρίζεται ο τύπος του.', 'errCmdNoSupport' : 'Το backend δεν υποστηρίζει αυτή την εντολή.', 'errReplByChild' : 'Ο φάκελος “$1” δεν μπορεί να αντικατασταθεί από οποιοδήποτε αρχείο περιέχεται σε αυτόν.', 'errArcSymlinks' : 'Για λόγους ασφαλείας δεν είναι δυνατόν να διαβαστούν αρχεία που περιέχουν symlinks orη αρχεία με μη επιτρεπτά ονόματα.', // edited 24.06.2012 'errArcMaxSize' : 'Το μέγεθος του αρχείου υπερβαίνει το μέγιστο επιτρεπτό όριο.', 'errResize' : 'Δεν ήταν δυνατή η αλλαγή μεγέθους του "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Ο τύπος αρχείου δεν υποστηρίζεται.', 'errNotUTF8Content' : 'Το αρχείο "$1" δεν είναι UTF-8 και δεν μπορεί να επεξεργασθεί.', // added 9.11.2011 'errNetMount' : 'Δεν ήταν δυνατή η φόρτωση του "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Μη υποστηριζόμενο πρωτόκολο.', // added 17.04.2012 'errNetMountFailed' : 'Η φόρτωση απέτυχε.', // added 17.04.2012 'errNetMountHostReq' : 'Απαιτείται host εξυπηρετητής.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Δημιουργία archive αρχείου', 'cmdback' : 'Πίσω', 'cmdcopy' : 'Αντιγραφή', 'cmdcut' : 'Αφαίρεση', 'cmddownload' : 'Μεταφόρτωση', 'cmdduplicate' : 'Αντίγραφο', 'cmdedit' : 'Επεξεργασία αρχείου', 'cmdextract' : 'Εξαγωγή αρχείων από archive', 'cmdforward' : 'Προώθηση', 'cmdgetfile' : 'Επιλέξτε αρχεία', 'cmdhelp' : 'Σχετικά με αυτό το λογισμικό', 'cmdhome' : 'Home', 'cmdinfo' : 'Πληροφορίες', 'cmdmkdir' : 'Νέος φάκελος', 'cmdmkfile' : 'Νέος αρχείο', 'cmdopen' : 'Άνοιγμα', 'cmdpaste' : 'Επικόλληση', 'cmdquicklook' : 'Προεπισκόπηση', 'cmdreload' : 'Ανανέωση', 'cmdrename' : 'Μετονομασία', 'cmdrm' : 'Διαγραφή', 'cmdsearch' : 'Έυρεση αρχείων', 'cmdup' : 'Μετάβαση στο γονικό φάκελο', 'cmdupload' : 'Ανέβασμα αρχείων', 'cmdview' : 'Προβολή', 'cmdresize' : 'Αλλαγή μεγέθους εικόνας', 'cmdsort' : 'Ταξινόμηση', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Κλείσιμο', 'btnSave' : 'Αποθήκευση', 'btnRm' : 'Αφαίρεση', 'btnApply' : 'Εφαρμογή', 'btnCancel' : 'Ακύρωση', 'btnNo' : 'Όχι', 'btnYes' : 'Ναι', 'btnDiscard': 'Discard changes', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Άνοιγμα φακέλου', 'ntffile' : 'Άνοιγμα αρχείου', 'ntfreload' : 'Ανανέωση περιεχομένων φακέλου', 'ntfmkdir' : 'Δημιουργία φακέλου', 'ntfmkfile' : 'Δημιουργία αρχείων', 'ntfrm' : 'Διαγραφή αρχείων', 'ntfcopy' : 'Αντιγραφή αρχείων', 'ntfmove' : 'Μετακίνηση αρχείων', 'ntfprepare' : 'Προετοιμασία αντιγραφής αρχείων', 'ntfrename' : 'Μετονομασία αρχείων', 'ntfupload' : 'Ανέβασμα αρχείων', 'ntfdownload' : 'Μεταφόρτωση αρχείων', 'ntfsave' : 'Αποθήκευση αρχείων', 'ntfarchive' : 'Δημιουργία αρχείου', 'ntfextract' : 'Εξαγωγή αρχείων από το archive', 'ntfsearch' : 'Αναζήτηση αρχείων', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Σύστημα απασχολημένο>_<', 'ntfloadimg' : 'Φόρτωση εικόνας', 'ntfnetmount' : 'Φόρτωση δικτυακού δίσκου', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'άγνωστο', 'Today' : 'Σήμερα', 'Yesterday' : 'Χθές', 'msJan' : 'Ιαν', 'msFeb' : 'Φεβ', 'msMar' : 'Μαρ', 'msApr' : 'Απρ', 'msMay' : 'Μαϊ', 'msJun' : 'Ιουν', 'msJul' : 'Ιουλ', 'msAug' : 'Αυγ', 'msSep' : 'Σεπ', 'msOct' : 'Οκτ', 'msNov' : 'Νοεμ', 'msDec' : 'Δεκ', 'January' : 'Ιανουάριος', 'February' : 'Φεβρουάριος', 'March' : 'Μάρτιος', 'April' : 'Απρίλιος', 'May' : 'Μάϊος', 'June' : 'Ιούνιος', 'July' : 'Ιούλιος', 'August' : 'Αύγουστος', 'September' : 'Σεπτέμβριος', 'October' : 'Οκτώβριος', 'November' : 'Νοέμβριος', 'December' : 'Δεκέμβριος', 'Sunday' : 'Κυριακή', 'Monday' : 'Δευτέρα', 'Tuesday' : 'Τρίτη', 'Wednesday' : 'Τετάρτη', 'Thursday' : 'Πέμπτη', 'Friday' : 'Παρασκευή', 'Saturday' : 'Σάββατο', 'Sun' : 'Κυρ', 'Mon' : 'Δευ', 'Tue' : 'Τρ', 'Wed' : 'Τετ', 'Thu' : 'Πεμ', 'Fri' : 'Παρ', 'Sat' : 'Σαβ', /******************************** sort variants ********************************/ 'sortname' : 'κατά όνομα', 'sortkind' : 'κατά είδος', 'sortsize' : 'κατά μέγεθος', 'sortdate' : 'κατά ημερομηνία', 'sortFoldersFirst' : 'Πρώτα οι φάκελοι', // added 22.06.2012 /********************************** messages **********************************/ 'confirmReq' : 'Απαιτείται επιβεβαίωση', 'confirmRm' : 'Είστε σίγουροι πως θέλετε να διαγράψετε τα αρχεία?
    Οι αλλαγές θα είναι μόνιμες!', 'confirmRepl' : 'Αντικατάσταση του παλιού αρχείου με το νέο?', 'apllyAll' : 'Εφαρμογή σε όλα', 'name' : 'Όνομα', 'size' : 'Μέγεθος', 'perms' : 'Δικαιώματα', 'modify' : 'Τροποποιήθηκε', 'kind' : 'Είδος', 'read' : 'ανάγνωση', 'write' : 'εγγραφή', 'noaccess' : 'δεν υπάρχει πρόσβαση', 'and' : 'και', 'unknown' : 'άγνωστο', 'selectall' : 'Επιλογή όλων', 'selectfiles' : 'Επιλογή αρχείων', 'selectffile' : 'Επιλογή πρώτου αρχείου', 'selectlfile' : 'Επιλογή τελευταίου αρχείου', 'viewlist' : 'Προβολή λίστας', 'viewicons' : 'Προβολή εικονιδίων', 'places' : 'Τοποθεσίες', 'calc' : 'Υπολογισμός', 'path' : 'Διαδρομή', 'aliasfor' : 'Ψευδώνυμο για', 'locked' : 'Κλειδωμένο', 'dim' : 'Διαστάσεις', 'files' : 'Αρχεία', 'folders' : 'Φάκελοι', 'items' : 'Αντικείμενα', 'yes' : 'ναι', 'no' : 'όχι', 'link' : 'Σύνδεσμος', 'searcresult' : 'Αποτελέσματα αναζήτησης', 'selected' : 'επιλεγμένα αντικείμενα', 'about' : 'Σχετικά', 'shortcuts' : 'Συντομεύσεις', 'help' : 'Βοήθεια', 'webfm' : 'εργαλείο διαχείρισης αρχείων από το web', 'ver' : 'Έκδοση', 'protocolver' : 'έκδοση πρωτοκόλλου', 'homepage' : 'Σελίδα του project', 'docs' : 'Τεκμηρίωση (documentation)', 'github' : 'Κάντε μας fork στο Github', 'twitter' : 'Ακολουθήστε μας στο twitter', 'facebook' : 'Βρείτε μας στο facebook', 'team' : 'Ομάδα', 'chiefdev' : 'κύριος προγραμματιστής', 'developer' : 'προγραμματιστής', 'contributor' : 'συνεισφορά', 'maintainer' : 'συντηρητής', 'translator' : 'μεταφραστής', 'icons' : 'Εικονίδια', 'dontforget' : 'και μην ξεχάσεις την πετσέτα σου!', 'shortcutsof' : 'Οι συντομεύσεις είναι απενεργοποιημένες', 'dropFiles' : 'Κάντε drop τα αρχεία εδώ', 'or' : 'ή', 'selectForUpload' : 'Επιλογή αρχείων για ανέβασμα', 'moveFiles' : 'Μετακίνηση αρχείων', 'copyFiles' : 'Αντιγραφή αρχείων', 'rmFromPlaces' : 'Αντιγραφή από τοποθεσίες', 'aspectRatio' : 'Αναλογία διαστάσεων', 'scale' : 'Κλίμακα', 'width' : 'Πλάτος', 'height' : 'Ύψος', 'resize' : 'Αλλαγή μεγέθους', 'crop' : 'Crop', 'rotate' : 'Περιστροφή', 'rotate-cw' : 'Περιστροφή κατά 90 βαθμούς CW', 'rotate-ccw' : 'Περιστροφή κατά 90 βαθμούς CCW', 'degree' : 'Βαθμός', 'netMountDialogTitle' : 'Φορτώστε δικτυακό δίσκο', // added 18.04.2012 'protocol' : 'Πρωτόκολλο', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Χρήστης', // added 18.04.2012 'pass' : 'Κωδικός', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Άγνωστο', 'kindFolder' : 'Φάκελος', 'kindAlias' : 'Ψευδώνυμο (alias)', 'kindAliasBroken' : 'Μη έγκυρο ψευδώνυμο', // applications 'kindApp' : 'Εφαρμογή', 'kindPostscript' : 'Έγγραφο Postscript', 'kindMsOffice' : 'Έγγραφο Microsoft Office', 'kindMsWord' : 'Έγγραφο Microsoft Word', 'kindMsExcel' : 'Έγγραφο Microsoft Excel', 'kindMsPP' : 'Παρουσίαση Microsoft Powerpoint', 'kindOO' : 'Έγγραφο Open Office', 'kindAppFlash' : 'Εφαρμογή Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Αρχείο Bittorrent', 'kind7z' : 'Αρχείο 7z', 'kindTAR' : 'Αρχείο TAR', 'kindGZIP' : 'Αρχείο GZIP', 'kindBZIP' : 'Αρχείο BZIP', 'kindXZ' : 'Αρχείο XZ', 'kindZIP' : 'Αρχείο ZIP', 'kindRAR' : 'Αρχείο RAR', 'kindJAR' : 'Αρχείο Java JAR', 'kindTTF' : 'Γραμματοσειρά True Type', 'kindOTF' : 'Γραμματοσειρά Open Type', 'kindRPM' : 'Πακέτο RPM', // fonts 'kindFont' : 'Γραμματοσειρά', 'kindSFNT' : 'Γραμματοσειρά SFNT', 'kindEOT' : 'Γραμματοσειρά Embedded Open Type', 'kindWOFF' : 'Γραμματοσειρά Web Open Font Format', 'kindWOFF2' : 'Γραμματοσειρά Web Open Font Format 2', // texts 'kindText' : 'Έγγραφο κειμένου', 'kindTextPlain' : 'Απλό κείμενο', 'kindPHP' : 'Κώδικας PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'Έγγραφο HTML', 'kindJS' : 'Κώδικας Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Κώδικας C', 'kindCHeader' : 'Κώδικας κεφαλίδας C', 'kindCPP' : 'Κώδικας C++', 'kindCPPHeader' : 'Κώδικας κεφαλίδας C++', 'kindShell' : 'Unix shell script', 'kindPython' : 'Κώδικας Python', 'kindJava' : 'Κώδικας Java', 'kindRuby' : 'Κώδικας Ruby', 'kindPerl' : 'Perl script', 'kindSQL' : 'Κώδικας SQL', 'kindXML' : 'Έγγραφο XML', 'kindAWK' : 'Κώδικας AWK', 'kindCSV' : 'Τιμές χωρισμένες με κόμμα', 'kindDOCBOOK' : 'Έγγραφο Docbook XML', // images 'kindImage' : 'Εικόνα', 'kindBMP' : 'Εικόνα BMP', 'kindJPEG' : 'Εικόνα JPEG', 'kindGIF' : 'Εικόνα GIF', 'kindPNG' : 'Εικόνα PNG', 'kindTIFF' : 'Εικόνα TIFF', 'kindTGA' : 'Εικόνα TGA', 'kindPSD' : 'Εικόνα Adobe Photoshop', 'kindXBITMAP' : 'Εικόνα X bitmap', 'kindPXM' : 'Εικόνα Pixelmator', // media 'kindAudio' : 'Αρχεία ήχου', 'kindAudioMPEG' : 'Ήχος MPEG', 'kindAudioMPEG4' : 'Εικόνα MPEG-4', 'kindAudioMIDI' : 'Εικόνα MIDI', 'kindAudioOGG' : 'Εικόνα Ogg Vorbis', 'kindAudioWAV' : 'Εικόνα WAV', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Αρχεία media', 'kindVideoDV' : 'Ταινία DV', 'kindVideoMPEG' : 'Ταινία MPEG', 'kindVideoMPEG4' : 'Ταινία MPEG-4', 'kindVideoAVI' : 'Ταινία AVI', 'kindVideoMOV' : 'Ταινία Quick Time', 'kindVideoWM' : 'Ταινία Windows Media', 'kindVideoFlash' : 'Ταινία flash', 'kindVideoMKV' : 'Ταινία matroska', 'kindVideoOGG' : 'Ταινία ogg' } }; })); Tierphysio Deutschland http://tierphysio-deutschland.de Eine andere WordPress-Site. Fri, 18 Sep 2026 15:17:04 +0000 de hourly 1 https://wordpress.org/?v=7.1.1 5 rzeczy które wiem o Mafia Casino po latach pracy w iGaming http://tierphysio-deutschland.de/mafia-casino/5-rzeczy-ktore-wiem-o-mafia-casino-po-latach-pracy-w-igaming/ Fri, 18 Sep 2026 15:11:06 +0000 http://tierphysio-deutschland.de/?p=45 Wstęp do kulis branży iGaming

    Pracowałem w tej branży wystarczająco długo, aby widzieć setki marek przechodzących przez cykl życia operatora. Niektóre znikają po sześciu miesiącach, inne budują trwałą pozycję na rynku. Mafia Casino przyciąga uwagę graczy oraz analityków od samego początku swojej działalności. Co tak naprawdę kryje się pod tą tematyczną oprawą graficzną? Sprawdziłem ich zaplecze, limity, oferty oraz strukturę płatności, aby dać Ci rzetelny obraz sytuacji. gry kasynowe online

    Estetyka mafijna nie jest tutaj tylko pustym sloganem marketingowym, ale spójnym elementem wizualnym, który przewija się przez wszystkie sekcje specjalne oraz bannery promocyjne. Jeśli szukasz rzetelnej oceny opartej na twardych danych, dobrze trafiłeś. Znajdziesz tu analizę oferty, w której gry kasynowe online stanowią tylko jeden z wielu elementów dobrze naoliwionej machiny hazardowej.

    Mafia Casino pod lupą gracza po 40 spinach i wypłata 1200 zł

    Struktura bonusów i promocji

    Operatorzy często kuszą graczy wielkimi liczbami, ale to regulamin pokazuje prawdę. Główny bonus powitalny na stronie głównej oferuje 100% up to €500 + 200 free spins. Ta sama propozycja widnieje na dedykowanej podstronie z promocjami jako Welcome Bonus – 100% up to €500 + 200 FS. Fani zakładów sportowych również znajdą coś dla siebie, ponieważ First Deposit Bonus wynosi 100% up to €100.

    Sekcja stałych promocji robi wrażenie swoją różnorodnością. Weekly Reload daje graczom 50 free spins, natomiast Weekly Reload Bonus dostarcza 50% up to €500. Weekendowy zastrzyk gotówki to aż €700 + 50 free spins. Cashback rozbity jest na kilka poziomów: standardowy Cashback Bonus to 10% up to €500, Daily Cashback oferuje 15% up to €400, a Live Cashback sięga 25% up to €200. Dla graczy sportowych przygotowano Accumulator Boost do €100,000, Early Payout do €50,000 oraz Bet Builder z premią 50% bonus value up to €50.

    Turnieje sieciowe potrafią zmienić dynamikę gry. Widziałem już wiele akcji, ale Spinoleague z pulą €12,000,000 oraz rywalizacja z nagrodami do €350,000 to solidne liczby, które przyciągają łowców wysokich wygranych. Do tego dochodzi wyzwanie Amusnet – Cash Bomb, które regularnie podkręca emocje na slotach.

    5 liczb o Mafia Casino, które zmieniają sposób oceny kasyna

    Katalog gier i oferta bukmacherska

    Biblioteka tytułów to serce każdego kasyna internetowego. Główna nawigacja dzieli się na Casino, Live Casino oraz Jackpots. Dolne menu rozszerza ten wybór o kategorie takie jak Top, New, Popular, Provider of the Week, Superstars, Streamers’ Choice, Exclusive, Bonus Buys, Megaways, Live Games, Slots, Table Games oraz All Jackpots. Karuzela z najpopularniejszymi tytułami w Niemczech pokazuje hity takie jak Thunder Step: Hold and Win, 40 Power Hot Triple Bonus Hold and Win Golden Coins, Gates of Olympus 1000, Piggy Banker Vault Smash, Bonanza Billion, Divine, Silly Chili, Vortex Pulse, Mighty Crown: Empire of Gold, De Pat, Legacy of Dead oraz 3 Fire. Warto zauważyć, że niektóre kafelki posiadają oznaczenie Demo, co pozwala na bez ryzyka testowanie mechanik.

    Sekcja Live Casino oferuje dedykowane stoły dla miłośników gatunku. Kategorie obejmują Top Live Casino, Roulette, Blackjack, International Tables, Game Shows, Baccarat & Dice oraz Poker. Z kolei sekcja jackpotów kusi nagrodami w podziałach na Hot Jackpots, Lucky Jackpots, New Jackpots, Daily Jackpots oraz Jackpot Play.

    Zakłady sportowe są w pełni zintegrowane z platformą kasynową. W menu znajdziesz Sports, Live Betting oraz Virtual Sports. Oferta pokrywa dyscypliny takie jak Football, Tennis, Basketball, Table Tennis, Ice Hockey, American Football, Baseball, a także niszowe sporty. Kursy na mecze takie jak Torino kontra AS Roma czy Besiktas kontra Marsylia pokazują konkurencyjność marży bukmachera. Funkcje takie jak Boosted Odds, Prebuilds, In Play, Bet Slip oraz opcja Rebet dają graczom zaawansowane narzędzia do zarządzania kuponami.

    System płatności i limity transakcyjne

    Płynność finansowa to wskaźnik stabilności każdego operatora. Strona płatności pozwala na filtrowanie metod według kraju i waluty, na przykład Austria i Euro, z osobnymi zakładkami na Deposit oraz Withdrawal. Dolna stopka pokazuje logotypy Visa, Mastercard, Skrill oraz opcję More. Prawdziwą siłę widać jednak w listach limitów dla poszczególnych metod wpłat i wypłat.

    Tradycyjne metody i e-portfele mają ściśle określone progi. EPS obsługuje transakcje od €15 do €900. Pay by Card pozwala operować kwotami od €10 do €2,000. Revolut oraz Bank Transfer obsługują przedział od €10 do €5,000. Mifinity oferuje limity od €10 do €2,500.

    Kryptowaluty dominuje w nowoczesnych kasynach ze względu na szybkość realizacji. USDT w wersjach ERC20, Solana, BEP20 i TRC20 pozwala na operacje od €10 do €5,000. Bitcoin wymaga minimum €30, a górny limit wynosi €5,000. Pozostałe waluty cyfrowe, takie jak Ethereum, Litecoin, TRX, USDC, BNB, DOGE, Solana, USDC Solana oraz Cardano, utrzymują standardowy przedział od €10 do €5,000. E-portfele i kryptowaluty gwarantują natychmiastowe przetwarzanie wypłat, podczas gdy karty kredytowe zależą od procedur bankowych.

    Program lojalnościowy i wyzwania

    Zatrzymanie gracza na dłużej wymaga czegoś więcej niż jednorazowy bonus. Mafia Casino stawia na grywalizację poprzez dedykowane sekcje VIP Levels oraz Challenges w głównym menu. Specjalny komunikat informuje graczy, że mogą podjąć wyzwania i zarobić aż 15,000 coins.

    Zgromadzone monety można wydać w zintegrowanym sklepie. Sklep dostępny jest bezpośrednio z paska bocznego oraz promocji w stopce. System wymiany pozwala na konwersję punktów na realne nagrody finansowe, co potwierdza komunikat o wymianie monet na nagrody o wartości do €1,000. Dodatkowym elementem angażującym użytkownika jest Koło Fortuny, które pojawia się jako wyróżniona funkcja boczna z oznaczeniem New.

    Bezpieczeństwo, wsparcie i zaplecze techniczne

    Zaplecze operacyjne i zgodność z przepisami to fundament, na którym opiera się ta marka. Opcje kontaktu obejmują Help Centre, Live Chat oraz bezpośredni adres e-mail support@mafiacasino.com. Strona informacyjna About Us opisuje platformę jako nowoczesny serwis bukmacherski i kasynowy, który dba o procedury bezpieczeństwa.

    Warto zwrócić uwagę na politykę przeciwdziałania praniu pieniędzy. Kasyno otwarcie deklaruje przestrzeganie wymogów AML oraz zgodność z unijną dyrektywą znaną jako 5th AML Amendment. Standardowa weryfikacja tożsamości, czyli Customer DueDiligence, jest integralną częścią procedur bezpieczeństwa. Odpowiedzialna gra również ma swoje miejsce, co potwierdza wymóg wiekowy 18+ oraz komunikat zachęcający do kontrolowania czasu spędzonego na rozrywce.

    ]]>
    Mafia Casino Review Met Focus Op De Strenge Inzetvereisten En Bonuswaardes http://tierphysio-deutschland.de/mafia-casino/mafia-casino-review-met-focus-op-de-strenge-inzetvereisten-en-bonuswaardes/ Fri, 18 Sep 2026 14:20:03 +0000 http://tierphysio-deutschland.de/?p=42 Navigeren door het spelaanbod en de jackpotcategorieën

    Open de hoofdpagina en bekijk de categorieën in het navigatiemenu. Je vindt hier de secties Casino, Live Casino en Bekijk het hier om direct te starten. Scroll omlaag naar de voettekst voor specifieke spelindelingen zoals Top, New, Popular, Provider of the Week, Superstars, Streamers’ Choice, Exclusive, Bonus Buys en Megaways. Je ziet ook directe opties voor Slots en Table Games. Bekijk het hier

    Klik op de carrousel met Top games in Germany voor populaire titels. Je ziet daar spellen zoals Thunder Step: Hold and Win, 40 Power Hot Triple Bonus Hold and Win Golden Coins, Gates of Olympus 1000, Piggy Banker Vault Smash, Bonanza Billion, Divine, Silly Chili, Vortex Pulse, Mighty Crown: Empire of Gold, De Pat, Legacy of Dead en 3 Fire. Herken de oefenmodus aan de speltegel met het label Demo.

    Bekijk de jackpotsectie voor specifieke prijzenpotten. Kies uit Hot Jackpots, Lucky Jackpots, New Jackpots, Daily Jackpots, Jackpot Play en All Jackpots. Gebruik de zoekbalk met de tekst “Games, Categories, Providers” om snel jouw favoriet te vinden. Direct na het aanklikken van een titel laadt het spel binnen enkele seconden op je scherm.

    Hoe Mafia Casino zich aanpast aan nieuwe Europese regels

    Het activeren van de casino en sportsbonussen

    Claim de Casino welcome bonus shown on the homepage hero: 100% up to €500 + 200 free spins direct na je registratie. Controleer de promotiepagina waar dezelfde actie vermeld staat als “Welcome Bonus – 100% up to €500 + 200 FS”. Liefhebbers van sport weddenschappen kiezen voor de First Deposit Bonus – 100% up to €100.

    Profiteer door de weeks van doorlopende promoties. Activeer de Weekly Reload van 50 free spins of kies de Weekly Reload Bonus van 50% up to €500. Voor het weekend gebruik je de Weekend Reload Bonus bestaande uit €700 + 50 free spins. Vraag daarnaast de reguliere Cashback Bonus van 10% up to €500 aan. Actieve spelers ontvangen ook de Daily Cashback van 15% up to €400 of de Live Cashback van 25% up to €200.

    Mis je de juiste promotiecode bij je storting, dan activeert de bonus simpelweg niet. Er is geen achteraf herstel mogelijk voor vergeten codes. Na een correcte storting verschijnt het bonusbedrag direct in je accountsaldo.

    Is Mafia Casino betrouwbaar voor jouw geld

    Stortingslimieten en betalingsmethoden selecteren

    Open de betaalpagina en filter op jouw land en valuta, zoals Austria / Euro. Klik op de tabbladen voor Deposit en Withdrawal om de juiste betaalweg te kiezen. Bekijk de logo’s van Visa, Mastercard en Skrill onderaan de pagina.

    Stort direct via traditionele opties of e-wallets. Gebruik EPS met limieten van €15 – €900. Kies Pay by Card voor bedragen tussen €10 – €2,000. Selecteer Revolut of Bank Transfer voor transacties van €10 – €5,000. Stort via Mifinity met een limiet van €10 – €2,500.

    Cryptocurrency liefhebbers gebruiken diverse netwerken. Stort via USDT ERC20, BitcoinCash, USDT Solana, USDT BEP20 of USDT TRC20 met limieten van €10 – €5,000. Gebruik Bitcoin voor bedragen van €30 – €5,000. Kies Ethereum, Litecoin, TRX, USDC, BNB, DOGE, Solana, USDC Solana of Cardano met limieten van €10 – €5,000. E-wallet stortingen en uitbetalingen verlopen snel, terwijl creditcardtransacties door je bank worden verwerkt.

    Mijn ervaring met de bonusvoorwaarden van Mafia Casino

    De functionaliteit van het sportweddenschappen platform

    Klik in het hoofdmenu op Sports, Live Betting of Virtual Sports. Scroll naar de voettekst voor categorieën zoals Sportsbook, Live Betting, Virtual Sports, Football, Tennis, Basketball, Table Tennis, Ice Hockey, American Football, Baseball, All Sports. Plaats weddenschappen op grote competities zoals de UEFA Champions League, UEFA Europa League, UEFA Conference League, Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLB en NFL.

    Gebruik de handige tijdfiliters: All, 1h, 8h, Today, 48h. Sla wedstrijden op onder Favorites, bekijk Boosted Odds, gebruik Prebuilds, open In Play, controleer Popular Bets, bekijk Upcoming, vul je Bet Slip in, gebruik Insert Booking Code, selecteer Top Bets of kies Rebet. Wed op sporten als Football, Basketball, Tennis, Table Tennis, Ice Hockey, Volleyball, Handball, Baseball, American Football, Cricket, Snooker, Darts, Rugby Union en Rugby League.

    Bekijk actuele markten zoals Torino vs AS Roma met noteringen 1 6.00, X 4.15, 2 1.55. Speel op doelsaldo’s 2.5 met Over 1.75 en Under 2.10, of beide teams scoren met Yes 1.85 en No 1.90. Analyseer Besiktas vs Marseille met 1 1.80, X 3.90, 4.00 voor 2. Bekijk verhoogde odds zoals 3.84 → 4.00, 3.21 → 3.48 en 2.87 → 3.32. Je selectie verschijnt direct op de virtuele wedbrief.

    VIP niveaus, uitdagingen en beloningen in de shop

    Open de navigatie en klik op de sectie VIP Levels. Bekijk de afzonderlijke VIP promotiekaart in de Specials en klik op de knop “Get Started”. Bezoek ook de sectie Challenges in het hoofdmenu en voltooi de taak uit de promo “Take on challenges and earn 15,000 coins!”.

    Verzamel munten en open de Shop via de zijbalk of promoties in de voettekst. Ruil je munten in via de actie “Exchange your coins for €1,000 rewards!”. Probeer direct je geluk met de Wheel of Fortune, die als uitgelichte zijbalkfunctie is gemarkeerd met het label New.

    Neem deel aan de competitie via de banner “Join the competition – win €350,000!”. Bekijk daarnaast het netwerkevenement Spinoleague – €12,000,000 of het spelgebonden toernooi Amusnet – Cash Bomb. Je beloningen en munten worden na voltooiing direct bijgeschreven in je accountoverzicht.

    Klantenservice bereiken en beveiligingsinstellingen controleren

    Open de klantenservice via het Help Centre of start direct de Live Chat voor directe vragen. Stuur een e-mail naar het adres support@mafiacasino.com dat vermeld staat op de over-pagina. Lees op dezelfde pagina de beschrijving van het platform als online sportsbook and casino met de focus op pre-match and live sporting events van top providers.

    Maak eenvoudig een personal list aan van je favoriete spellen en bekijk alle actieve bonuses and promotions. Controleer de naleving van anti-witwasbeleid door de verwijzing naar de 5th AML Amendment en doorloop de standaard Customer Due Diligence verificatieprocedures. Bekijk de juridische documenten in de voettekst, waaronder de Privacy Notice, Responsible Gaming, Cookie Notice en Terms and Conditions.

    Sluit af met de handige links zoals About Us, Help Centre, Create Shortcut en Sitemap. Klik op het Telegram icoon in de voettekst om lid te worden van de community. Speel bewust volgens de mededeling 18+ en de richtlijn “Enjoy your gaming experience responsibly.” Je ontvangt direct antwoord op al je vragen via de live chat.

    ]]>
    Mafia Casino Voegt Vijfhonderd Nieuwe Spellen Toe Aan Het Spelaanbod http://tierphysio-deutschland.de/mafia-casino/mafia-casino-voegt-vijfhonderd-nieuwe-spellen-toe-aan-het-spelaanbod/ Fri, 18 Sep 2026 13:30:16 +0000 http://tierphysio-deutschland.de/?p=39 Uitbreiding van het spelaanbod en de lobby

    De digitale speelomgeving blijft zich continu ontwikkelen. Recente updates tonen aan dat het platform zijn catalogus flink heeft verbreed. Spelers vinden er nu een gevarieerde mix van titels, waaronder populaire gokkasten zoals Gates of Olympus 1000, Legacy of Dead, en Bonanza Billion. Wie de Mafia Casino België speelervaring onder de loep neemt, merkt direct dat de interface overzichtelijk is ingedeeld met categorieën als Top, New, Popular en Bonus Buys. Zoekopdrachten uitvoeren gaat eenvoudig via de zoekbalk die zoekt op games, categorieën en providers. Mafia Casino België speelervaring

    Nieuwe content brengt echter ook risico’s met zich mee voor impulsief gokgedrag. Set your limit before you start. Not after. Je kunt gebruikmaken van ingebouwde tools zoals deposit caps en session timers om de controle te behouden. Vraag jezelf af: waarom speel je eigenlijk? Is het pure entertainment of zoek je een snelle ontsnapping? Organisaties zoals GambleAware en BeGambleAware bieden nuttige ondersteuning voor wie merkt dat het spelgedrag verandert. Bescherm je eigen budget en speel altijd binnen je financiële grenzen.

    Mafia Casino Review Waarom Deze GOKSITE Uw Tijd Waard Is

    Promoties, bonussen en de bijbehorende regels

    Promoties zijn prominent aanwezig in de navigatie en op de startpagina. De hoofdpagina toont een welkomstbonus van 100% up to €500 + 200 free spins, terwijl sportliefhebbers kunnen kiezen voor een eerste stortingsbonus van 100% up to €100. Daarnaast zijn er doorlopende acties zoals wekelijkse reloads en cashback-opties. Toch moet je kritisch kijken naar de voorwaarden. High wagering en een korte expiry zorgen vaak voor onnodige druk om verliezen te gaan achternajagen.

    Gebruik altijd reality checks om je speeltijd nauwkeurig in de gaten te houden. Een cooling-off periode instellen kan helpen als je merkt dat de spanning te hoog opliep. NCPG en vergelijkbare instanties raden aan om nooit te wedden met geld dat je eigenlijk nodig hebt voor vaste lasten. Controleer de regels grondig voordat je ingaat op bonussen zoals de Spinoleague van €12,000,000 of de Amusnet – Cash Bomb.

    Betaalmethoden en transactiesnelheden

    Snelle betalingen zijn cruciaal voor een moderne iGaming-ervaring. Het platform ondersteunt diverse opties voor zowel stortingen als opnames. Je kiest eenvoudig je regio en valuta, zoals Oostenrijk en de Euro. Populaire betaalmethodes variëren van traditionele opties zoals EPS en Pay by Card met limieten tot €2,000, tot moderne cryptovaluta zoals USDT TRC20 en Bitcoin met limieten tot €5,000. E-wallet transacties via diensten als Mifinity verlopen doorgaans snel, terwijl creditcardtransacties direct via je eigen bank worden verwerkt.

    Het handhaven van strikte regels rondom witwassen, waaronder de naleving van de 5th AML Amendment en standaard Customer Due Diligence, hoort bij een veilige omgeving. Toch blijft financieel beheer jouw eigen verantwoordelijkheid. Gebruik de beschikbare tools voor zelfexclusie als je merkt dat het storten uit de hand loopt. Enjoy your gaming experience responsibly, en onthoud dat gokken nooit een vaste inkomstenbron mag worden. Neem bij twijfels altijd contact op met de hulpdiensten via de Help Centre of bekijk de pagina over Responsible Gaming.

    ]]>
    M88 casino review: Tốp độ rút tiền ấn tượng và tính năng bảo mật http://tierphysio-deutschland.de/public/m88-casino-review-top-do-rut-tien-an-tuong-va-tinh-nang-bao-mat/ Fri, 18 Sep 2026 12:05:36 +0000 http://tierphysio-deutschland.de/?p=37

    M88 là một trong những nền tảng cá cược trực tuyến phổ biến nhất tại Việt Nam, chuyên cung cấp dịch vụ cá cược thể thao và trò chơi casino. Với tốc độ rút tiền nhanh chóng và tính năng bảo mật cao, nhiều người chơi thường tìm đến m88 – m sports để trải nghiệm những dịch vụ tốt nhất. Trong bài viết này, chúng ta sẽ khám phá những điểm nổi bật của M88, cách thức hoạt động và những lợi ích mà người dùng có thể nhận được khi tham gia.

    How M88 fits real player needs

    M88 được thiết kế để đáp ứng nhu cầu của người chơi hiện đại, với nhiều trò chơi phong phú và dịch vụ cá cược đa dạng. Nền tảng này không chỉ cung cấp các trò chơi casino như blackjack, roulette hay slot machine, mà còn bổ sung các dịch vụ cá cược thể thao với nhiều môn thể thao khác nhau. Người chơi có thể tham gia vào các sự kiện lớn, cược trực tiếp hoặc theo dõi kết quả trong thời gian thực. Với những tính năng này, M88 tạo ra một trải nghiệm cá cược hấp dẫn và tiện lợi cho người chơi.

    Thêm vào đó, M88 cũng chú trọng đến việc nâng cao trải nghiệm người dùng thông qua giao diện thân thiện và dễ sử dụng, hỗ trợ tối ưu cho cả phiên bản di động và máy tính. Điều này giúp người chơi có thể dễ dàng truy cập và tham gia vào mọi trò chơi chỉ với một vài cú nhấp chuột.

    Cách bắt đầu với M88

    Để tham gia vào M88, người chơi cần thực hiện một số bước đơn giản để tạo tài khoản và bắt đầu chơi. Dưới đây là quy trình từng bước để bạn có thể bắt đầu trải nghiệm cá cược thú vị tại M88:

    1. Tạo tài khoản: Truy cập trang web của M88 và điền vào mẫu đăng ký với thông tin cần thiết.
    2. Verify Your Details: Sau khi đăng ký, bạn cần xác nhận thông tin cá nhân để đảm bảo tính chính xác và an toàn.
    3. Thực hiện nạp tiền: Chọn phương thức nạp tiền phù hợp và thực hiện giao dịch để có số dư cho việc chơi cá cược.
    4. Chọn trò chơi: Truy cập vào danh sách các trò chơi casino hoặc sự kiện thể thao và chọn trò chơi mà bạn muốn tham gia.
    5. Bắt đầu chơi: Tham gia vào trò chơi yêu thích của bạn và trải nghiệm những khoảnh khắc thú vị.
    • Tiện lợi trong việc tạo tài khoản trực tuyến
    • Quy trình nạp tiền nhanh chóng và đa dạng phương thức
    • Có nhiều lựa chọn trò chơi và sự kiện cá cược

    Chi tiết thực tiễn của M88

    M88 không ngừng cải tiến để mang đến trải nghiệm cá cược tốt nhất cho người dùng. Nền tảng này cung cấp một loạt các trò chơi casino bao gồm cả các trò chơi truyền thống và hiện đại, như baccarat, poker và nhiều trò chơi slot hấp dẫn. Đặc biệt, các trò chơi này đều được cung cấp bởi những nhà phát triển phần mềm hàng đầu trong ngành, đảm bảo chất lượng và tính công bằng.

    Về mặt giao dịch, M88 nổi bật với tốc độ rút tiền ấn tượng, chỉ mất khoảng từ 30 đến 60 phút để hoàn tất giao dịch. Điều này giúp người chơi có thể nhanh chóng tiếp cận với tiền thắng của mình mà không phải chờ đợi lâu. Hệ thống hỗ trợ khách hàng cũng hoạt động 24/7, sẵn sàng giải đáp mọi thắc mắc của người chơi ngay lập tức.

    • Hỗ trợ đa ngôn ngữ để phục vụ người chơi quốc tế
    • Mobile version được tối ưu hóa cho kết nối 4G
    • Các chương trình khuyến mãi hấp dẫn cho người mới và khách hàng thường xuyên

    Những chi tiết này không chỉ giúp người chơi tiết kiệm thời gian mà còn nâng cao trải nghiệm cá cược tổng thể tại M88, khẳng định vị thế của nó trong ngành công nghiệp cá cược trực tuyến.

    Các lợi ích chính khi chọn M88

    Khi tham gia vào M88, người chơi sẽ được hưởng nhiều lợi ích khác nhau, từ tính năng bảo mật đến sự đa dạng trong trò chơi. M88 cam kết mang đến cho người chơi một môi trường cá cược an toàn và dễ dàng tiếp cận. Dưới đây là một số lợi ích nổi bật mà bạn có thể nhận được:

    • Khuyến mãi chào mừng hấp dẫn lên đến 125% cho lần nạp đầu tiên, tối đa 4,288,000 VND
    • Tốc độ rút tiền nhanh chóng, chỉ từ 30 đến 60 phút
    • Giao diện thân thiện, dễ sử dụng cho cả phiên bản máy tính và di động
    • Hệ thống hỗ trợ khách hàng 24/7 qua trò chuyện trực tuyến

    Những lợi ích này không chỉ giúp người chơi có cảm giác thoải mái khi tham gia mà còn tạo động lực để họ quay trở lại với M88 nhiều lần trong tương lai.

    Tin cậy và bảo mật tại M88

    M88 cam kết bảo mật thông tin và tài khoản của người chơi. Với giấy phép hoạt động từ Vanuatu (IGL-04/2021), nền tảng này thực hiện nghiêm ngặt các quy định về an toàn và bảo mật. Mọi thông tin cá nhân của người chơi đều được mã hóa và lưu trữ an toàn, ngăn chặn truy cập trái phép.

    Chương trình bảo mật của M88 cũng bao gồm các phương pháp bảo vệ tiên tiến để đảm bảo không có trường hợp gian lận xảy ra. Điều này giúp người chơi hoàn toàn yên tâm khi tham gia chơi cá cược, biết rằng tiền và thông tin cá nhân của họ luôn được bảo vệ.

    Tại sao nên chọn M88?

    Bằng cách cung cấp một nền tảng cá cược đa dạng và toàn diện, M88 thực sự là một trong những lựa chọn hàng đầu cho những ai yêu thích trò chơi casino và cá cược thể thao. Từ tốc độ rút tiền nhanh chóng cho đến các tính năng bảo mật hàng đầu, M88 đáp ứng mọi nhu cầu và mong đợi của người chơi.

    Khuyến mãi hấp dẫn cùng với dịch vụ khách hàng tận tình càng làm tăng thêm giá trị cho trải nghiệm của người chơi tại M88. Nếu bạn đang tìm kiếm một nền tảng cá cược an toàn và đáng tin cậy, M88 chính là lựa chọn không thể bỏ qua.

    ]]>
    Безпечні виплати в BC game казино: як швидко отримати виграші http://tierphysio-deutschland.de/public/safe-payouts-bc-game-casino-quick-win-retrieval-2026/ Tue, 15 Sep 2026 14:45:12 +0000 http://tierphysio-deutschland.de/?p=35

    З кожним роком онлайн-казино стають все більш популярними, і BC Game казино не є винятком. Це сучасна крипто-ігрова платформа, яка пропонує величезний вибір ігор, включаючи слоти та покер, з акцентом на швидкі виплати. У цій статті ми детально розглянемо, як забезпечити безпечні виплати в bcgame-casino.live казино та отримати свої виграші швидше.

    Чому швидкі виплати важливі в казино

    Швидкість виплат є критично важливою для будь-якого гравця в онлайн-казино. Коли ви виграєте, ваше бажання отримати виграш якомога швидше є абсолютно зрозумілим. BC Game казино забезпечує високий рівень обслуговування клієнтів, що дозволяє користувачам отримувати свої виграші без затримок. Прозорість і швидкість у процесі виплат не лише підвищують задоволення користувачів, але й сприяють довірі до платформи. Чим швидше ви отримуєте свої виграші, тим більше задоволення від ігрового процесу.

    Важливо також зазначити, що швидкі виплати можуть суттєво вплинути на вибір казино. Гравці схильні обирати платформи, які гарантують безпеку та швидкість у фінансових операціях. В BC Game казино процес виведення коштів спрощений, що дозволяє користувачам зосередитися на грі, а не на очікуванні своїх виграшів.

    Як почати грати та отримувати виграші

    Щоб насолоджуватися чудовими можливостями BC Game казино, виконайте кілька простих кроків, щоб швидко і безпечно отримати свої виграші:

    1. Створіть обліковий запис: зареєструйтеся на платформі, щоб отримати доступ до всіх ігор та функцій.
    2. Верифікуйте свої дані: підтвердження особистої інформації допоможе швидше обробляти виплати.
    3. Зробіть депозит: використовуйте різні методи оплати, такі як BTC або Visa, для поповнення свого рахунку.
    4. Оберіть гру: виберіть з тисяч ігор, включаючи слоти та покер, щоб почати грати.
    5. Розпочніть гру: насолоджуйтесь іграми та намагайтеся виграти великі суми!
    • Легкий процес реєстрації
    • Широкий вибір методів оплати
    • Швидка обробка запитів на виплату

    Практичні деталі BC Game казино

    BC Game казино пропонує своїм користувачам безліч можливостей для виграшу, а також інтуїтивно зрозумілий інтерфейс. Користувачі можуть грати в величезну кількість ігор, і кожна з них пройшла тестування на чесність, що підтверджує їхню надійність. Платформа підтримує різні криптовалюти, такі як BTC, ETH, BNB та інші, що робить її доступною для широкого кола гравців.

    Крім того, BC Game казино пропонує вітальний бонус у розмірі 300% на перший депозит, що робить його ще більш привабливим для нових користувачів. Це означає, що ви можете отримати більше коштів для гри, що, в свою чергу, підвищує ймовірність виграшу.

    • Вітальний бонус на перший депозит
    • Величезний вибір ігор
    • Надійна підтримка клієнтів

    Завдяки цим особливостям, BC Game казино стає відмінним вибором для всіх любителів онлайн-ігор.

    Ключові переваги BC Game казино

    BC Game казино має багато переваг, які роблять його привабливим для гравців:

    • Швидкі виплати – користувачі отримують виграші без затримок.
    • Крипто-ігри – можливість грати з використанням популярних криптовалют.
    • Чесність та прозорість – всі ігри проходять перевірку на справедливість.
    • 300% бонус на перший депозит – вигідна пропозиція для нових користувачів.

    Ці переваги роблять BC Game казино ідеальним місцем для гравців, які шукають надійність і вигоди.

    Довіра та безпека

    BC Game казино має ліцензію уряду Автономного острова Анжуан, що свідчить про його легальність та безпеку. Гравці можуть бути впевнені, що їхні дані та фінанси під надійним захистом. Платформа використовує сучасні технології шифрування для захисту особистої інформації, що робить її безпечною для користувачів.

    Крім того, BC Game казино регулярно проходить аудит, що підтверджує чесність і справедливість усіх ігор. Це додає ще одну ланку у забезпечення довіри між казино та його гравцями.

    Чому варто обрати BC Game казино

    BC Game казино пропонує не лише широкий вибір ігор, але й швидкі та безпечні виплати, що робить його однією з найкращих платформ для гравців у 2026 році. З вітальним бонусом у 300% на перший депозит, можливо, ви знайдете саме те, що шукали. Ця платформа ідеально підходить для всіх, хто хоче насолоджуватися іграми без зайвих затримок у виплатах.

    Отже, приєднуйтесь до BC Game казино сьогодні та отримайте виграші за своїми правилами! Не пропустіть можливість виграти та насолоджуватися азартом гри з безпекою та надійністю.

    ]]>
    Die neuesten Promotions im Online Casino ohne LUGAS 2026: Was deutsche Spieler wissen sollten http://tierphysio-deutschland.de/public/die-neuesten-promotions-im-online-casino-ohne-lugas-2026-was-deutsche-spieler-wissen-sollten/ Mon, 14 Sep 2026 15:55:25 +0000 http://tierphysio-deutschland.de/?p=33

    Online Casinos bieten Spielern die Möglichkeit, von zu Hause aus an aufregenden Spielen teilzunehmen und attraktive Boni zu nutzen. Im Jahr 2026 ist es für deutsche Spieler besonders wichtig, die beste online casino ohne lugas zu kennen, die nicht nur Sicherheit und schnelle Auszahlungen gewährleisten, sondern auch eine große Auswahl an Spielen und verlockenden Promotions bieten.

    Warum Geschwindigkeit, Sicherheit und Wert im Casino wichtig sind

    Bei der Auswahl eines Online Casinos sind Geschwindigkeit, Sicherheit und Wert entscheidend. Spieler suchen nach Plattformen, die schnelle Ein- und Auszahlungen ermöglichen, um ihre Gewinne zeitnah zu genießen. Sicherheit ist ebenso wichtig, da Spieler ihren persönlichen und finanziellen Informationen vertrauen müssen. Der Wert, insbesondere in Form von Bonusangeboten, kann darüber entscheiden, wo ein Spieler sein Geld investiert.

    In der heutigen digitalen Welt, in der viele Spieler aus Deutschland online spielen, ist die Auswahl an Casinos groß, aber nicht alle bieten die gleichen Bedingungen. Das Verständnis für diese Schlüsselbereiche hilft Spielern, bessere Entscheidungen zu treffen.

    Wie man startet

    Der Einstieg in die Welt der Online Casinos ist einfach, wenn man die richtigen Schritte befolgt. Hier sind die wesentlichen Schritte, um erfolgreich zu starten:

    1. Konto erstellen: Melden Sie sich auf der Plattform Ihrer Wahl an und geben Sie die erforderlichen Daten ein.
    2. Details verifizieren: Überprüfen Sie Ihre E-Mail-Adresse und andere Angaben, um Ihr Konto zu aktivieren.
    3. Einzahlung tätigen: Wählen Sie eine sichere Zahlungsmethode und zahlen Sie Geld auf Ihr Konto ein.
    4. Spiel auswählen: Durchstöbern Sie die Spielbibliothek und wählen Sie ein Spiel aus, das Ihnen gefällt.
    5. Spielen und Gewinne: Beginnen Sie mit dem Spiel und genießen Sie die Unterhaltung und die Möglichkeit, Gewinne zu erzielen.
    • Ein einfacher Registrierungsprozess sorgt für einen schnellen Einstieg.
    • Verifizierungsprozesse gewährleisten die Sicherheit Ihrer Daten.
    • Vielfältige Zahlungsmethoden bieten Flexibilität bei Einzahlungen.

    Praktische Details für deutsche Spieler

    Für deutsche Spieler ist es wichtig, ein Casino zu wählen, das auf ihre Bedürfnisse zugeschnitten ist. Die besten Online Casinos ohne LUGAS bieten nicht nur spannende Spiele an, sondern auch eine Vielzahl von Boni. Beispielsweise gibt es im Jahr 2026 attraktive Willkommensboni wie 100% bis zu 4000 € plus 150 Freispiele oder sogar bis zu 15.000 € plus 300 Freispiele. Solche Angebote können den Unterschied im Spielvergnügen ausmachen und die Gewinnchancen erheblich erhöhen.

    • Top Casinos wie Luckywave, Winhero und SpinSamurai bieten exzellente Spielauswahlen.
    • Die schnelle Auszahlung von Gewinnen ist ein weiteres Plus dieser Plattformen.
    • Ein umfassendes Kundenservice-Team steht für alle Fragen zur Verfügung.

    Diese Aspekte tragen dazu bei, dass Spieler sich in einem sicheren Umfeld wohlfühlen, während sie die aufregenden Spiele genießen.

    Wesentliche Vorteile

    Die Wahl eines Online Casinos ohne LUGAS bietet zahlreiche Vorteile für Spieler. Diese Vorteile tragen nicht nur zur Sicherheit, sondern auch zur allgemeinen Spielerfahrung bei.

    • Sichere Zahlungsmethoden: Schutz Ihrer finanziellen Daten durch fortschrittliche Verschlüsselungstechnologien.
    • Vielfältige Spielauswahl: Zugang zu Hunderten von Spielen, von Slots über Tischspiele bis hin zu Live-Dealer-Optionen.
    • Attraktive Boni: Nutzen Sie großzügige Willkommensboni und regelmäßige Promotions.
    • Schnelle Auszahlungen: Gewinnen werden in der Regel schneller ausgezahlt als bei vielen Offline-Casinos.

    Mit diesen Vorteilen können deutsche Spieler die Welt der Online Casinos optimal nutzen.

    Vertrauen und Sicherheit

    Vertrauen ist ein zentrales Element bei Online Casinos. Die besten Plattformen sind lizenziert und reguliert, was bedeutet, dass sie strengen Sicherheitsstandards entsprechen. Dies schützt nicht nur die persönlichen Daten der Spieler, sondern sorgt auch für faire Spielbedingungen. Spieler sollten darauf achten, dass das Casino, für das sie sich entscheiden, von einer anerkannten Behörde lizenziert ist.

    Zusätzlich zu den Lizenzen investieren viele Casinos in moderne Sicherheitsprotokolle, um die Daten ihrer Nutzer zu schützen. Regelmäßige Audits und Transparenz in den Spielmethoden bieten ein zusätzliches Maß an Sicherheit für die Spieler.

    Warum die Wahl eines Online Casinos ohne LUGAS wichtig ist

    Die Entscheidung für ein Online Casino ohne LUGAS ist für deutsche Spieler von entscheidender Bedeutung. Diese Casinos bieten nicht nur Sicherheit und attraktive Boni, sondern auch eine benutzerfreundliche Plattform, die die Spielbarkeit und das Nutzererlebnis verbessert. Mit einer großen Auswahl an Spielen und schnellen Auszahlungen ist es einfach, Spaß zu haben und dabei auch noch Gewinne zu erzielen.

    Indem Sie sich für eine Plattform entscheiden, die auf die Bedürfnisse deutscher Spieler zugeschnitten ist, stellen Sie sicher, dass Sie eine höchst zufriedenstellende Spielerfahrung genießen können.

    ]]>
    Spinboss casino — complete guide http://tierphysio-deutschland.de/uncategorized/spinboss-casino-complete-guide/ Mon, 14 Sep 2026 13:00:13 +0000 http://tierphysio-deutschland.de/?p=30 Discover the Excitement of Spinboss Casino

    What Makes Spinboss Casino Unique?

    Spinboss Casino stands out in the crowded online gambling market due to its user-friendly interface and an extensive selection of games. Players can enjoy everything from classic slots to table games, providing an experience that caters to all types of gamblers. The platform frequently updates its game library, ensuring that players always have access to the latest titles.

    Understanding Game Variety

    One of the significant advantages of spinboss casino is its rich variety of games. Not only does it offer numerous slot machines featuring vibrant graphics and engaging storylines, but it also includes live casino tables where players can interact with real dealers. This diverse range makes it an attractive choice for those who enjoy variety in their gaming experience.

    Bonuses and Promotions

    Spinboss Casino is well-known for its generous bonuses and promotions, which enhance the gaming experience for both new and existing players. New members often receive welcome bonuses that can significantly boost their initial bankroll, while returning players can benefit from regular promotions including free spins and loyalty rewards. This strategic approach to rewards helps to engage players and incentivizes them to keep playing.

    Security and Fair Play

    Another critical aspect to consider when choosing an online casino is security. Spinboss Casino takes player security seriously, using advanced encryption technology to protect personal and financial information. Additionally, all games are regularly tested for fairness, giving players peace of mind that they are participating in a legitimate and fair gaming environment.

    Conclusion

    In conclusion, Spinboss Casino offers an impressive blend of game variety, attractive bonuses, and a secure gaming environment. Whether you are a seasoned gambler or new to online casinos, it provides an exhilarating experience. Explore the excitement today and see why Spinboss Casino is a top choice for online gaming enthusiasts.

    ]]>
    Everything about spinboss casino http://tierphysio-deutschland.de/uncategorized/everything-about-spinboss-casino/ Mon, 14 Sep 2026 13:00:13 +0000 http://tierphysio-deutschland.de/?p=29 spinboss casino: A Comprehensive Guide to Online Gambling

    Understanding the Spinboss Casino Platform

    spinboss casino stands out in the crowded online gambling industry thanks to its user-friendly interface and a diverse array of games. Whether you’re a fan of classic table games or the latest video slots, this platform offers something for everyone. Players can easily navigate through the site, explore various categories, and find their favorite games within just a few clicks.

    The Game Selection at Spinboss Casino

    One of the highlights of spinboss casino is its extensive game library. The casino features a wide range of options, from traditional games like blackjack and roulette to innovative slot machines with exciting themes and features. This ensures that every type of player can find entertainment that suits their tastes. The inclusion of live dealer games also adds an immersive experience, allowing players to enjoy the thrill of a physical casino from the comfort of their homes.

    Bonuses and Promotions

    In the competitive landscape of online gambling, attractive bonuses and promotions play a significant role in attracting new players and retaining existing ones. spinboss casino offers various bonuses, including welcome packages, free spins, and seasonal promotions. These incentives not only enhance the gaming experience but also provide additional chances to win, making it essential for players to stay informed about the latest offerings. Understanding the terms and conditions associated with these bonuses can significantly impact your gaming strategy.

    Security and Fair Play

    When engaging in online gambling, security is a top concern for many players. spinboss casino prioritizes the safety of its users by implementing robust security measures. This includes encryption protocols to protect personal and financial information, as well as regular audits to ensure fair play across all games. Players can enjoy peace of mind knowing that their gaming experience is both secure and regulated by industry standards.

    ]]>
    Pin Up O’zbekistonda mobil ilova: oson kirish va o’yin tajribasi http://tierphysio-deutschland.de/public/pin-up-o-zbekistonda-mobil-ilova-oson-kirish-va-o-yin-tajribasi/ Mon, 14 Sep 2026 11:51:26 +0000 http://tierphysio-deutschland.de/?p=27

    O’zbekistonda onlayn kazino o’yinlari va sport tikish xizmatlarini taqdim etish bo’yicha kuchli raqobat mavjud. Pin Up platformasi, zamonaviy va foydalanuvchi do’st interfeysi bilan ta’minlangan holda, mahalliy auditoriyani o’ziga jalb etishga muvaffaq bo’ldi. Ushbu maqolada, Pin Up O’zbekistondagi onlayn kazino tajribasi haqida to’liq ma’lumot beramiz, shuningdek, https://pin-up-kazino-uz.com eng yaxshi bonuslar va imkoniyatlar haqida qiziqarli faktlarni keltiramiz.

    Pin Up O’zbekistonda kazino xizmatlarini baholashning oson yo’llari

    Pin Up O’zbekistonda onlayn kazino o’yinlari, sport tikish va raqamli ko’ngilochar xizmatlar bilan jamlangan. Ushbu platforma, foydalanuvchilarga tez va oson kirish imkoniyatlarini taqdim etadi. O’yinlar keng ko’lamda mavjud: slotlar, jonli dilerlik stol o’yinlari va kartalarning turli xil turlari. O’zbekiston bozoriga moslashtirilgan xizmatlar yordamida, bu platforma o’z foydalanuvchilarini qoniqtirishga intiladi.

    Shuningdek, Pin Up platformasi oson ro’yxatdan o’tish jarayonini ta’minlaydi, bu esa foydalanuvchilar uchun tezda o’yin tajribasidan bahramand bo’lish imkonini beradi.

    Boshqa yo’sinlarni tanlash

    1. Ro’yxatdan o’tish: Foydalanuvchi haqiqiy ma’lumotlar bilan tezda ro’yxatdan o’tishi mumkin.
    2. Ma’lumotlarni tasdiqlash: hisobni tasdiqlash jarayoni juda oson va tez. Bu xavfsizlik uchun muhimdir.
    3. Depozit qo’yish: Mahalliy banklar orqali xavfsiz operatsiyalar bilan tezkor depozitlar amalga oshiriladi.
    4. O’yin tanlash: Pin Up platformasida 100+ turli xil o’yinlar mavjud, shuning uchun har bir kishi o’ziga mos keladiganini topadi.
    5. O’yin o’ynash: Tezkor tajriba bilan o’yin o’ynash imkoniyatlari juda ko’p.
    • Birinchi qadam bilan foydalanuvchilar uchun yangi imkoniyatlar ochiladi.
    • Tez va oson depozitlar, vaqtni tejaydi.
    • O’yinlar ko’p turlari, har bir foydalanuvchi uchun tanlov mavjud.

    Pin Up O’zbekistonda amaliy tafsilotlar

    Pin Up o’zbekistonlik foydalanuvchilar uchun eng qulay sharoitlarni taqdim etadi. O’yinlar tezkor aylanish va strategik formatlar bilan o’ynaladi, bu esa o’yinchilarni qiziqtiradi. Ularning platformasi foydalanuvchi interfeysi intuitiv bo’lib, har bir foydalanuvchi o’z istaklariga ko’ra o’yin tanlashda qiyinchilik chekmaydi.

    Mahalliy auditoriyaning ehtiyojlarini hisobga olgan holda, Pin Up o’z xizmatlarini doimiy ravishda yangilab turadi. Bu nafaqat o’yinlarni yangilash, balki bonuslar va aktsiyalar taklif qilishda ham o’z aksini topmoqda. Foydalanuvchilar joriy aktsiyalar orqali har doim foyda ko’rish imkoniyatiga ega.

    • Yangi o’yinlarning muntazam qo’shilishi.
    • Tezkor ro’yxatdan o’tish jarayoni.
    • Yuqori darajadagi xizmat ko’rsatish.

    Bu tafsilotlar foydalanuvchilarga zamonaviy o’yin muhitida o’z vaqtini maroqli o’tkazish imkonini beradi.

    Asosiy afzalliklar

    Pin Up O’zbekistonda onlayn kazino o’yinlari uchun bir qancha asosiy afzalliklarni taqdim etadi. Foydalanuvchilar uchun yuqori darajadagi qulaylik va imkoniyatlar yaratilgan bo’lib, bu platformani tanlashda muhim omil hisoblanadi.

    • Tezkor va oson ro’yxatdan o’tish jarayoni.
    • Muhim xavfsizlik va maxfiylik darajasi.
    • Mahalliy banklar bilan oson tranzaksiyalar.
    • Keng ko’lamdagi o’yin tanlovlari.
    • Innovatsion ish stollari va mobil ilova orqali o’yin o’ynash imkoniyati.

    Bu afzalliklar Pin Up ni o’zbek foydalanuvchilari o’rtasida mashhur va qiziqarli platforma sifatida ajratib turadi.

    Xavfsizlik va ishonch

    Pin Up O’zbekistonda o’yin o’ynash jarayonida xavfsizlikka katta e’tibor qaratadi. Har bir foydalanuvchi o’z profili xavfsizligidan ishonch hosil qilishi mumkin. Foydalanuvchi ma’lumotlari shifrlangan bo’lib, bu ularning maxfiyligini ta’minlaydi. Shuningdek, platforma 18+ yoshda bo’lishni talab qiladi, bu esa har bir foydalanuvchi uchun xavfsiz muhit yaratadi.

    Bundan tashqari, Pin Up foydalanuvchilarga mas’uliyatli o’yinlarni taqdim etish bilan ham shug’ullanadi. Bu platforma orqali foydalanuvchilar o’z nazoratini saqlab, o’z xarajatlarini belgilash imkoniyatiga ega bo’lishadi.

    Nima uchun Pin Up O’zbekistonda tanlash kerak?

    Pin Up O’zbekistonda kazino o’yinlari va sport tikish imkoniyatlari bilan birga, foydalanuvchilar uchun keng ko’lamli raqamli ko’ngilochar xizmatlar taqdim etadi. O’zbekiston bozoriga moslashtirilgan xususiyatlar, tezkor va oson kirish imkoniyatlari, shuningdek, yuqori darajadagi xavfsizlik va maxfiylik bilan, bu platforma har bir o’yinchi uchun idealdir.

    Shunday qilib, agar siz o’z vaqtingizni maroqli o’tkazmoqchi bo’lsangiz va yangi o’yin tajribasini qidirsangiz, Pin Up O’zbekistonda eng yaxshi tanlov bo’ladi. O’z o’yinlaringizni hozirga keltiring va o’yin dunyosiga qadam qo’ying!

    ]]>
    Coronavirus disease 2019 http://tierphysio-deutschland.de/public/coronavirus-disease-2019/ Fri, 11 Sep 2026 11:17:32 +0000 http://tierphysio-deutschland.de/?p=24 COVID-19 is a contagious disease caused by the coronavirus SARS-CoV-2. In January 2020, the disease spread worldwide, resulting in the COVID-19 pandemic.

    The symptoms of COVID‑19 can vary but often include fever,[7] fatigue, cough, breathing difficulties, loss of smell, and loss of taste.[8][9][10] Symptoms may begin one to fourteen days after exposure to the virus. At least a third of people who are infected do not develop noticeable symptoms.[11][12] Of those who develop symptoms noticeable enough to be classified as patients, most (81%) develop mild to moderate symptoms (up to mild pneumonia), while 14% develop severe symptoms (dyspnea, hypoxia, or more than 50% lung involvement on imaging), and 5% develop critical symptoms (respiratory failure, shock, or multiorgan dysfunction).[13] Older people have a higher risk of developing severe symptoms. Some complications result in death. Some people continue to experience a range of effects (long COVID) for months or years after infection, and damage to organs has been observed.[14] Multi-year studies on the long-term effects are ongoing.[15]

    COVID‑19 transmission occurs when infectious particles are breathed in or come into contact with the eyes, nose, or mouth. The risk is highest when people are in close proximity, but small airborne particles containing the virus can remain suspended in the air and travel over longer distances, particularly indoors. Transmission can also occur when people touch their eyes, nose, or mouth after touching surfaces or objects that have been contaminated by the virus. People remain contagious for up to 20 days and can spread the virus even if they do not develop symptoms.[16]

    Testing methods for COVID-19 to detect the virus’s nucleic acid include real-time reverse transcription polymerase chain reaction (RT‑PCR),[17][18] transcription-mediated amplification,[17][18][19] and reverse transcription loop-mediated isothermal amplification (RT‑LAMP)[17][18] from a nasopharyngeal swab.[20]

    Several COVID-19 vaccines have been approved and distributed in various countries, many of which have initiated mass vaccination campaigns. Other preventive measures include physical or social distancing, quarantining, ventilation of indoor spaces, use of face masks or coverings in public, covering coughs and sneezes, hand washing, and keeping unwashed hands away from the face. While drugs have been developed to inhibit the virus, the primary treatment is still symptomatic, managing the disease through supportive care, isolation, and experimental measures.

    ]]>