diff --git a/apps/static/js/socket.io.js b/apps/static/js/socket.io.js new file mode 100755 index 000000000..827407bd5 --- /dev/null +++ b/apps/static/js/socket.io.js @@ -0,0 +1,8 @@ +/*! + * Socket.IO v2.1.0 + * (c) 2014-2018 Guillermo Rauch + * Released under the MIT License. + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.io=e():t.io=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t,e){"object"===("undefined"==typeof t?"undefined":o(t))&&(e=t,t=void 0),e=e||{};var n,r=i(t),s=r.source,p=r.id,h=r.path,f=u[p]&&h in u[p].nsps,l=e.forceNew||e["force new connection"]||!1===e.multiplex||f;return l?(c("ignoring socket cache for %s",s),n=a(s,e)):(u[p]||(c("new io instance for %s",s),u[p]=a(s,e)),n=u[p]),r.query&&!e.query&&(e.query=r.query),n.socket(r.path,e)}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(1),s=n(7),a=n(12),c=n(3)("socket.io-client");t.exports=e=r;var u=e.managers={};e.protocol=s.protocol,e.connect=r,e.Manager=n(12),e.Socket=n(37)},function(t,e,n){(function(e){"use strict";function r(t,n){var r=t;n=n||e.location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(i("protocol-less url %s",t),t="undefined"!=typeof n?n.protocol+"//"+t:"https://"+t),i("parse %s",t),r=o(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var s=r.host.indexOf(":")!==-1,a=s?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+a+":"+r.port,r.href=r.protocol+"://"+a+(n&&n.port===r.port?"":":"+r.port),r}var o=n(2),i=n(3)("socket.io-client:url");t.exports=r}).call(e,function(){return this}())},function(t,e){var n=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,r=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.exports=function(t){var e=t,o=t.indexOf("["),i=t.indexOf("]");o!=-1&&i!=-1&&(t=t.substring(0,o)+t.substring(o,i).replace(/:/g,";")+t.substring(i,t.length));for(var s=n.exec(t||""),a={},c=14;c--;)a[r[c]]=s[c]||"";return o!=-1&&i!=-1&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a}},function(t,e,n){(function(r){function o(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),n){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var o=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(o++,"%c"===t&&(i=o))}),t.splice(i,0,r)}}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(n){}}function c(){var t;try{t=e.storage.debug}catch(n){}return!t&&"undefined"!=typeof r&&"env"in r&&(t=r.env.DEBUG),t}function u(){try{return window.localStorage}catch(t){}}e=t.exports=n(5),e.log=s,e.formatArgs=i,e.save=a,e.load=c,e.useColors=o,e.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},e.enable(c())}).call(e,n(4))},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(t){if(p===setTimeout)return setTimeout(t,0);if((p===n||!p)&&setTimeout)return p=setTimeout,setTimeout(t,0);try{return p(t,0)}catch(e){try{return p.call(null,t,0)}catch(e){return p.call(this,t,0)}}}function i(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){y&&l&&(y=!1,l.length?d=l.concat(d):m=-1,d.length&&a())}function a(){if(!y){var t=o(s);y=!0;for(var e=d.length;e;){for(l=d,d=[];++m1)for(var n=1;n100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*p;case"days":case"day":case"d":return n*u;case"hours":case"hour":case"hrs":case"hr":case"h":return n*c;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){return t>=u?Math.round(t/u)+"d":t>=c?Math.round(t/c)+"h":t>=a?Math.round(t/a)+"m":t>=s?Math.round(t/s)+"s":t+"ms"}function o(t){return i(t,u,"day")||i(t,c,"hour")||i(t,a,"minute")||i(t,s,"second")||t+" ms"}function i(t,e,n){if(!(t0)return n(t);if("number"===i&&isNaN(t)===!1)return e["long"]?o(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){function r(){}function o(t){var n=""+t.type;if(e.BINARY_EVENT!==t.type&&e.BINARY_ACK!==t.type||(n+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(n+=t.nsp+","),null!=t.id&&(n+=t.id),null!=t.data){var r=i(t.data);if(r===!1)return g;n+=r}return f("encoded %j as %s",t,n),n}function i(t){try{return JSON.stringify(t)}catch(e){return!1}}function s(t,e){function n(t){var n=d.deconstructPacket(t),r=o(n.packet),i=n.buffers;i.unshift(r),e(i)}d.removeBlobs(t,n)}function a(){this.reconstructor=null}function c(t){var n=0,r={type:Number(t.charAt(0))};if(null==e.types[r.type])return h("unknown packet type "+r.type);if(e.BINARY_EVENT===r.type||e.BINARY_ACK===r.type){for(var o="";"-"!==t.charAt(++n)&&(o+=t.charAt(n),n!=t.length););if(o!=Number(o)||"-"!==t.charAt(n))throw new Error("Illegal attachments");r.attachments=Number(o)}if("/"===t.charAt(n+1))for(r.nsp="";++n;){var i=t.charAt(n);if(","===i)break;if(r.nsp+=i,n===t.length)break}else r.nsp="/";var s=t.charAt(n+1);if(""!==s&&Number(s)==s){for(r.id="";++n;){var i=t.charAt(n);if(null==i||Number(i)!=i){--n;break}if(r.id+=t.charAt(n),n===t.length)break}r.id=Number(r.id)}if(t.charAt(++n)){var a=u(t.substr(n)),c=a!==!1&&(r.type===e.ERROR||y(a));if(!c)return h("invalid payload");r.data=a}return f("decoded %s as %j",t,r),r}function u(t){try{return JSON.parse(t)}catch(e){return!1}}function p(t){this.reconPack=t,this.buffers=[]}function h(t){return{type:e.ERROR,data:"parser error: "+t}}var f=n(3)("socket.io-parser"),l=n(8),d=n(9),y=n(10),m=n(11);e.protocol=4,e.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],e.CONNECT=0,e.DISCONNECT=1,e.EVENT=2,e.ACK=3,e.ERROR=4,e.BINARY_EVENT=5,e.BINARY_ACK=6,e.Encoder=r,e.Decoder=a;var g=e.ERROR+'"encode error"';r.prototype.encode=function(t,n){if(f("encoding packet %j",t),e.BINARY_EVENT===t.type||e.BINARY_ACK===t.type)s(t,n);else{var r=o(t);n([r])}},l(a.prototype),a.prototype.add=function(t){var n;if("string"==typeof t)n=c(t),e.BINARY_EVENT===n.type||e.BINARY_ACK===n.type?(this.reconstructor=new p(n),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",n)):this.emit("decoded",n);else{if(!m(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");n=this.reconstructor.takeBinaryData(t),n&&(this.reconstructor=null,this.emit("decoded",n))}},a.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},p.prototype.takeBinaryData=function(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){var e=d.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null},p.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},function(t,e,n){function r(t){if(t)return o(t)}function o(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r,o=0;o0&&!this.encoding){var t=this.packetBuffer.shift();this.packet(t)}},r.prototype.cleanup=function(){h("cleanup");for(var t=this.subs.length,e=0;e=this._reconnectionAttempts)h("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();h("will wait %dms before reconnect attempt",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(h("attempting reconnect"),t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(h("reconnect attempt error"),t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):(h("reconnect success"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,n){t.exports=n(14),t.exports.parser=n(21)},function(t,e,n){(function(e){function r(t,n){if(!(this instanceof r))return new r(t,n);n=n||{},t&&"object"==typeof t&&(n=t,t=null),t?(t=p(t),n.hostname=t.host,n.secure="https"===t.protocol||"wss"===t.protocol,n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=p(n.host).host),this.secure=null!=n.secure?n.secure:e.location&&"https:"===location.protocol,n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.agent=n.agent||!1,this.hostname=n.hostname||(e.location?location.hostname:"localhost"),this.port=n.port||(e.location&&location.port?location.port:this.secure?443:80),this.query=n.query||{},"string"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==n.upgrade,this.path=(n.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!n.forceJSONP,this.jsonp=!1!==n.jsonp,this.forceBase64=!!n.forceBase64,this.enablesXDR=!!n.enablesXDR,this.timestampParam=n.timestampParam||"t",this.timestampRequests=n.timestampRequests,this.transports=n.transports||["polling","websocket"],this.transportOptions=n.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=n.policyPort||843,this.rememberUpgrade=n.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=n.onlyBinaryUpgrades,this.perMessageDeflate=!1!==n.perMessageDeflate&&(n.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=n.pfx||null,this.key=n.key||null,this.passphrase=n.passphrase||null,this.cert=n.cert||null,this.ca=n.ca||null,this.ciphers=n.ciphers||null,this.rejectUnauthorized=void 0===n.rejectUnauthorized||n.rejectUnauthorized,this.forceNode=!!n.forceNode;var o="object"==typeof e&&e;o.global===o&&(n.extraHeaders&&Object.keys(n.extraHeaders).length>0&&(this.extraHeaders=n.extraHeaders),n.localAddress&&(this.localAddress=n.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var i=n(15),s=n(8),a=n(3)("engine.io-client:socket"),c=n(36),u=n(21),p=n(2),h=n(30);t.exports=r,r.priorWebsocketSuccess=!1,s(r.prototype),r.protocol=u.protocol,r.Socket=r,r.Transport=n(20),r.transports=n(15),r.parser=n(21),r.prototype.createTransport=function(t){a('creating transport "%s"',t);var e=o(this.query);e.EIO=u.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var r=new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0});return r},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(n){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a("setting transport %s",t.name);var e=this;this.transport&&(a("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},r.prototype.probe=function(t){function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.transport.supportsBinary;h=h||e}h||(a('probe transport "%s" opened',t),p.send([{type:"ping",data:"probe"}]),p.once("packet",function(e){if(!h)if("pong"===e.type&&"probe"===e.data){if(a('probe transport "%s" pong',t),f.upgrading=!0,f.emit("upgrading",p),!p)return;r.priorWebsocketSuccess="websocket"===p.name,a('pausing current transport "%s"',f.transport.name),f.transport.pause(function(){h||"closed"!==f.readyState&&(a("changing transport and sending upgrade packet"),u(),f.setTransport(p),p.send([{type:"upgrade"}]),f.emit("upgrade",p),p=null,f.upgrading=!1,f.flush())})}else{a('probe transport "%s" failed',t);var n=new Error("probe error");n.transport=p.name,f.emit("upgradeError",n)}}))}function n(){h||(h=!0,u(),p.close(),p=null)}function o(e){var r=new Error("probe error: "+e);r.transport=p.name,n(),a('probe transport "%s" failed because of error: %s',t,e),f.emit("upgradeError",r)}function i(){o("transport closed")}function s(){o("socket closed")}function c(t){p&&t.name!==p.name&&(a('"%s" works - aborting "%s"',t.name,p.name),n())}function u(){p.removeListener("open",e),p.removeListener("error",o),p.removeListener("close",i),f.removeListener("close",s),f.removeListener("upgrading",c)}a('probing transport "%s"',t);var p=this.createTransport(t,{probe:1}),h=!1,f=this;r.priorWebsocketSuccess=!1,p.once("open",e),p.once("error",o),p.once("close",i),this.once("close",s),this.once("upgrading",c),p.open()},r.prototype.onOpen=function(){if(a("socket open"),this.readyState="open",r.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){a("starting upgrade probes");for(var t=0,e=this.upgrades.length;t1?{type:b[o],data:t.substring(1)}:{type:b[o]}:w}var i=new Uint8Array(t),o=i[0],s=f(t,1);return k&&"blob"===n&&(s=new k([s])),{type:b[o],data:s}},e.decodeBase64Packet=function(t,e){var n=b[t.charAt(0)];if(!u)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=u.decode(t.substr(1));return"blob"===e&&k&&(r=new k([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){function o(t){return t.length+":"+t}function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}"function"==typeof n&&(r=n,n=null);var s=h(t);return n&&s?k&&!g?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void c(t,i,function(t,e){return r(e.join(""))}):r("0:")},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);"function"==typeof n&&(r=n,n=null);var o;if(""===t)return r(w,0,1);for(var i,s,a="",c=0,u=t.length;c0;){for(var s=new Uint8Array(o),a=0===s[0],c="",u=1;255!==s[u];u++){if(c.length>310)return r(w,0,1);c+=s[u]}o=f(o,2+c.length),c=parseInt(c);var p=f(o,0,c);if(a)try{p=String.fromCharCode.apply(null,new Uint8Array(p))}catch(h){var l=new Uint8Array(p);p="";for(var u=0;ur&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(n-e),s=e,a=0;s=55296&&e<=56319&&o65535&&(e-=65536,o+=w(e>>>10&1023|55296),e=56320|1023&e),o+=w(e);return o}function c(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function u(t,e){return w(t>>e&63|128)}function p(t,e){if(0==(4294967168&t))return w(t);var n="";return 0==(4294965248&t)?n=w(t>>6&31|192):0==(4294901760&t)?(c(t,e)||(t=65533),n=w(t>>12&15|224),n+=u(t,6)):0==(4292870144&t)&&(n=w(t>>18&7|240),n+=u(t,12),n+=u(t,6)),n+=w(63&t|128)}function h(t,e){e=e||{};for(var n,r=!1!==e.strict,o=s(t),i=o.length,a=-1,c="";++a=v)throw Error("Invalid byte index");var t=255&g[b];if(b++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function l(t){var e,n,r,o,i;if(b>v)throw Error("Invalid byte index");if(b==v)return!1;if(e=255&g[b],b++,0==(128&e))return e;if(192==(224&e)){if(n=f(),i=(31&e)<<6|n,i>=128)return i;throw Error("Invalid continuation byte")}if(224==(240&e)){if(n=f(),r=f(),i=(15&e)<<12|n<<6|r,i>=2048)return c(i,t)?i:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(n=f(),r=f(),o=f(),i=(7&e)<<18|n<<12|r<<6|o,i>=65536&&i<=1114111))return i;throw Error("Invalid UTF-8 detected")}function d(t,e){e=e||{};var n=!1!==e.strict;g=s(t),v=g.length,b=0;for(var r,o=[];(r=l(n))!==!1;)o.push(r);return a(o)}var y="object"==typeof e&&e,m=("object"==typeof t&&t&&t.exports==y&&t,"object"==typeof o&&o);m.global!==m&&m.window!==m||(i=m);var g,v,b,w=String.fromCharCode,k={version:"2.1.2",encode:h,decode:d};r=function(){return k}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))}(this)}).call(e,n(27)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3===2?i=i.substring(0,i.length-1)+"=":o%3===1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(t){var e,r,o,i,s,a=.75*t.length,c=t.length,u=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var p=new ArrayBuffer(a),h=new Uint8Array(p);for(e=0;e>4,h[u++]=(15&o)<<4|i>>2,h[u++]=(3&i)<<6|63&s;return p}}()},function(t,e){(function(e){function n(t){for(var e=0;e0);return e}function r(t){var e=0;for(p=0;p';i=document.createElement(e)}catch(t){i=document.createElement("iframe"),i.name=o.iframeId,i.src="javascript:0"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement("form"),a=document.createElement("textarea"),p=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=p,s.method="POST",s.setAttribute("accept-charset","utf-8"),a.name="d",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),r(),t=t.replace(u,"\\\n"),this.area.value=t.replace(c,"\\n");try{this.form.submit()}catch(h){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===o.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){(function(e){function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=h&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(l=o),i.call(this,t)}var o,i=n(20),s=n(21),a=n(30),c=n(31),u=n(32),p=n(3)("engine.io-client:websocket"),h=e.WebSocket||e.MozWebSocket;if("undefined"==typeof window)try{o=n(35)}catch(f){}var l=h;l||"undefined"!=typeof window||(l=o),t.exports=r,c(r,i),r.prototype.name="websocket",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket?e?new l(t,e):new l(t):new l(t,e,n)}catch(r){return this.emit("error",r)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},r.prototype.write=function(t){function n(){r.emit("flush"),setTimeout(function(){r.writable=!0,r.emit("drain")},0)}var r=this;this.writable=!1;for(var o=t.length,i=0,a=o;i0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])}); +//# sourceMappingURL=socket.io.js.map \ No newline at end of file diff --git a/apps/static/plugins/elfindler/css/elfinder-bootstrap-theme.png b/apps/static/plugins/elfindler/css/elfinder-bootstrap-theme.png new file mode 100755 index 000000000..327f0308b Binary files /dev/null and b/apps/static/plugins/elfindler/css/elfinder-bootstrap-theme.png differ diff --git a/apps/static/plugins/elfindler/css/elfinder.full.css b/apps/static/plugins/elfindler/css/elfinder.full.css new file mode 100755 index 000000000..b50658fa8 --- /dev/null +++ b/apps/static/plugins/elfindler/css/elfinder.full.css @@ -0,0 +1,4987 @@ +/*! + * elFinder - file manager for web + * Version 2.1.42 (2018-08-29) + * http://elfinder.org + * + * Copyright 2009-2018, Studio 42 + * Licensed under a 3-clauses BSD license + */ + +/* File: /css/commands.css */ +/******************************************************************/ +/* COMMANDS STYLES */ +/******************************************************************/ + +/********************** COMMAND "RESIZE" ****************************/ +.elfinder-dialog-resize { + margin-top: .3em; +} + +.elfinder-resize-type { + float: left; + margin-bottom: .4em; +} + +.elfinder-resize-control { + float: left; +} + +.elfinder-resize-control input[type=number] { + border: 1px solid #aaa; + text-align: right; + width: 4.5em; +} + +.elfinder-mobile .elfinder-resize-control input[type=number] { + width: 3.5em; +} + +.elfinder-resize-control input.elfinder-resize-bg { + text-align: center; + width: 5em; + direction: ltr; +} + +.elfinder-dialog-resize .elfinder-resize-control-panel { + margin-top: 10px; +} + +.elfinder-dialog-resize .elfinder-resize-imgrotate, +.elfinder-dialog-resize .elfinder-resize-pallet { + cursor: pointer; +} + +.elfinder-dialog-resize .elfinder-resize-picking { + cursor: crosshair; +} + +.elfinder-dialog-resize .elfinder-resize-grid8 + button { + padding-top: 2px; + padding-bottom: 2px; +} + +.elfinder-resize-preview { + width: 400px; + height: 400px; + padding: 10px; + background: #fff; + border: 1px solid #aaa; + float: right; + position: relative; + overflow: hidden; + text-align: left; + direction: ltr; +} + +.elfinder-resize-handle { + position: relative; +} + +.elfinder-resize-handle-hline, +.elfinder-resize-handle-vline { + position: absolute; + background-image: url("../img/crop.gif"); +} + +.elfinder-resize-handle-hline { + width: 100%; + height: 1px !important; + background-repeat: repeat-x; +} + +.elfinder-resize-handle-vline { + width: 1px !important; + height: 100%; + background-repeat: repeat-y; +} + +.elfinder-resize-handle-hline-top { + top: 0; + left: 0; +} + +.elfinder-resize-handle-hline-bottom { + bottom: 0; + left: 0; +} + +.elfinder-resize-handle-vline-left { + top: 0; + left: 0; +} + +.elfinder-resize-handle-vline-right { + top: 0; + right: 0; +} + +.elfinder-resize-handle-point { + position: absolute; + width: 8px; + height: 8px; + border: 1px solid #777; + background: transparent; +} + +.elfinder-resize-handle-point-n { + top: 0; + left: 50%; + margin-top: -5px; + margin-left: -5px; +} + +.elfinder-resize-handle-point-ne { + top: 0; + right: 0; + margin-top: -5px; + margin-right: -5px; +} + +.elfinder-resize-handle-point-e { + top: 50%; + right: 0; + margin-top: -5px; + margin-right: -5px; +} + +.elfinder-resize-handle-point-se { + bottom: 0; + right: 0; + margin-bottom: -5px; + margin-right: -5px; +} + +.elfinder-resize-handle-point-s { + bottom: 0; + left: 50%; + margin-bottom: -5px; + margin-left: -5px; +} + +.elfinder-resize-handle-point-sw { + bottom: 0; + left: 0; + margin-bottom: -5px; + margin-left: -5px; +} + +.elfinder-resize-handle-point-w { + top: 50%; + left: 0; + margin-top: -5px; + margin-left: -5px; +} + +.elfinder-resize-handle-point-nw { + top: 0; + left: 0; + margin-top: -5px; + margin-left: -5px; +} + +.elfinder-resize-spinner { + position: absolute; + width: 200px; + height: 30px; + top: 50%; + margin-top: -25px; + left: 50%; + margin-left: -100px; + text-align: center; + background: url(../img/progress.gif) center bottom repeat-x; +} + +.elfinder-resize-row { + margin-bottom: 9px; + position: relative; +} + +.elfinder-resize-label { + float: left; + width: 80px; + padding-top: 3px; +} + +.elfinder-resize-checkbox-label { + border: 1px solid transparent; +} + +.elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls { + margin: -20px 5px 0 5px; +} + +.elfinder-ltr .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls { + float: right; +} + +.elfinder-rtl .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls { + float: left; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e, +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w { + height: 100%; + width: 10px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s, +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n { + width: 100%; + height: 10px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e { + margin-right: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w { + margin-left: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s { + margin-bottom: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n { + margin-top: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se, +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw, +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne, +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw { + width: 10px; + height: 10px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se { + background: transparent; + bottom: 0; + right: 0; + margin-right: -7px; + margin-bottom: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw { + margin-left: -7px; + margin-bottom: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne { + margin-right: -7px; + margin-top: -7px; +} + +.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw { + margin-left: -7px; + margin-top: -7px; +} + +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-s, +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-n { + height: 20px; +} + +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-e, +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-w { + width: 20px; +} + +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-se, +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw, +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne, +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw { + width: 30px; + height: 30px; +} + +.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se { + width: 30px; + height: 30px; + margin: 0; +} + +.elfinder-dialog-resize .ui-icon-grip-solid-vertical { + position: absolute; + top: 50%; + right: 0; + margin-top: -8px; + margin-right: -11px; +} + +.elfinder-dialog-resize .ui-icon-grip-solid-horizontal { + position: absolute; + left: 50%; + bottom: 0; + margin-left: -8px; + margin-bottom: -11px;; +} + +.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset { + float: right; +} + +.elfinder-dialog-resize .elfinder-resize-degree input, +.elfinder-dialog-resize input.elfinder-resize-quality { + width: 3.5em; +} + +.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input, +.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality { + width: 2.5em; +} + +.elfinder-dialog-resize .elfinder-resize-degree button.ui-button { + padding: 6px 8px; +} + +.elfinder-dialog-resize button.ui-button span { + padding: 0; +} + +.elfinder-dialog-resize .elfinder-resize-jpgsize { + font-size: 90%; +} + +.ui-widget-content .elfinder-dialog-resize .elfinder-resize-rotate-slider { + width: 195px; + margin: 10px 7px; + background-color: #fafafa; +} + +.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon { + display: none; +} + +.elfinder-resize-preset-container { + box-sizing: border-box; + border-radius: 5px; +} + +/********************** COMMAND "EDIT" ****************************/ +/* edit text file textarea */ +.elfinder-file-edit { + width: 100%; + height: 99%; + margin: 0; + padding: 2px; + border: 1px solid #ccc; + box-sizing: border-box; + resize: none; +} + +.elfinder-touch .elfinder-file-edit { + font-size: 16px; +} + +/* edit area */ +.ui-dialog .ui-dialog-content.elfinder-edit-editor { + background-color: #fff; +} + +.ui-dialog .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor { + width: 100%; + height: 300px; + max-height: 100%; + text-align: center; +} + +.ui-dialog .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main { + top: 0; +} + +.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header { + display: none; +} + +/* bottom margen for softkeyboard on fullscreen mode */ +.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit { + padding-bottom: 20em; + margin-bottom: -20em; +} + +.std42-dialog .ui-dialog-titlebar select { + font-size: 12px; +} + +.std42-dialog .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding { + font-size: 12px; +} + +.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras { + margin: 0 1em 0 .2em; + float: left; +} + +.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality { + padding-top: 6px; +} + +.ui-dialog-buttonpane .ui-icon { + cursor: pointer; +} + +.elfinder-edit-onlineconvert-button { + display: inline-block; + width: 180px; + min-height: 30px; + vertical-align: top; +} +.elfinder-edit-onlineconvert-button button, +.elfinder-edit-onlineconvert-bottom-btn button { + cursor: pointer; +} +.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline { + -webkit-appearance: none; + border-radius: 16px; + color: #000; + text-align: center; + padding: 8px; + background-color: #eee; + background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); + background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); +} +.elfinder-edit-onlineconvert-button .elfinder-button-icon { + margin: 0 10px; + vertical-align: middle; + cursor: pointer; +} +.elfinder-edit-onlineconvert-bottom-btn { + text-align: center; + margin: 10px 0 0; +} + +.elfinder-edit-onlineconvert-link { + margin-top: 1em; + text-align: center; +} +.elfinder-edit-onlineconvert-link .elfinder-button-icon { + background-image: url("../img/editor-icons.png"); + background-repeat: no-repeat; + background-position: 0 -144px; + margin-bottom: -3px; +} +.elfinder-edit-onlineconvert-link a { + text-decoration: none; +} + +/********************** COMMAND "SORT" ****************************/ +/* for list table header sort triangle icon */ +div.elfinder-cwd-wrapper-list tr.ui-state-default td { + position: relative; +} + +div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { + position: absolute; + top: 4px; + left: 0; + right: 0; + margin: auto 0px auto auto; +} + +.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { + top: 7px; +} + +.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { + margin: auto auto auto 0px; +} + +/********************** COMMAND "HELP" ****************************/ +/* help dialog */ +.elfinder-help { + margin-bottom: .5em; + -webkit-overflow-scrolling: touch; +} + +/* fix tabs */ +.elfinder-help .ui-tabs-panel { + padding: .5em; + overflow: auto; + padding: 10px; +} + +.elfinder-dialog .ui-tabs .ui-tabs-nav li a { + padding: .2em .8em; + display: inline-block; +} + +.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a { + padding: .5em .5em; +} + +.elfinder-dialog .ui-tabs-selected a { + background: inherit; +} + +.elfinder-help-shortcuts { + height: auto; + padding: 10px; + margin: 0; + box-sizing: border-box; +} + +.elfinder-help-shortcut { + white-space: nowrap; + clear: both; +} + +.elfinder-help-shortcut-pattern { + float: left; + width: 160px; +} + +.elfinder-help-logo { + width: 100px; + height: 96px; + float: left; + margin-right: 1em; + background: url('../img/logo.png') center center no-repeat; +} + +.elfinder-help h3 { + font-size: 1.5em; + margin: .2em 0 .3em 0; +} + +.elfinder-help-separator { + clear: both; + padding: .5em; +} + +.elfinder-help-link { + display: inline-block; + margin-right: 12px; + padding: 2px 0; + white-space: nowrap; +} + +.elfinder-rtl .elfinder-help-link { + margin-right: 0; + margin-left: 12px; +} + +.elfinder-help .ui-priority-secondary { + font-size: .9em; +} + +.elfinder-help .ui-priority-primary { + margin-bottom: 7px; +} + +.elfinder-help-team { + clear: both; + text-align: right; + border-bottom: 1px solid #ccc; + margin: .5em 0; + font-size: .9em; +} + +.elfinder-help-team div { + float: left; +} + +.elfinder-help-license { + font-size: .9em; +} + +.elfinder-help-disabled { + font-weight: bold; + text-align: center; + margin: 90px 0; +} + +.elfinder-help .elfinder-dont-panic { + display: block; + border: 1px solid transparent; + width: 200px; + height: 200px; + margin: 30px auto; + text-decoration: none; + text-align: center; + position: relative; + background: #d90004; + -moz-box-shadow: 5px 5px 9px #111; + -webkit-box-shadow: 5px 5px 9px #111; + box-shadow: 5px 5px 9px #111; + background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%); + background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004)); + -moz-border-radius: 100px; + -webkit-border-radius: 100px; + border-radius: 100px; + outline: none; +} + +.elfinder-help .elfinder-dont-panic span { + font-size: 3em; + font-weight: bold; + text-align: center; + color: #fff; + position: absolute; + left: 0; + top: 45px; +} + +ul.elfinder-help-integrations ul { + margin-bottom: 1em; + padding: 0; + margin: 0 1em 1em; +} + +ul.elfinder-help-integrations a { + text-decoration: none; +} + +ul.elfinder-help-integrations a:hover { + text-decoration: underline; +} + +.elfinder-help-debug { + height: 100%; + padding: 0; + margin: 0; + overflow: none; + border: none; +} + +.elfinder-help-debug .ui-tabs-panel { + padding: 0; + margin: 0; + overflow: auto; +} + +.elfinder-help-debug fieldset { + margin-bottom: 10px; + border-color: #778899; + border-radius: 10px; +} + +.elfinder-help-debug legend { + font-size: 1.2em; + font-weight: bold; + color: #2e8b57; +} + +.elfinder-help-debug dl { + margin: 0; +} + +.elfinder-help-debug dt { + color: #778899; +} + +.elfinder-help-debug dt:before { + content: "["; +} + +.elfinder-help-debug dt:after { + content: "]"; +} + +.elfinder-help-debug dd { + margin-left: 1em; +} + +.elfinder-help-debug dd span { + /*font-size: 1.2em;*/ +} + +/********************** COMMAND "PREFERENCE" ****************************/ +/* fix tabs */ +.elfinder-preference .ui-tabs-panel { + padding: 10px 10px 0; + overflow: auto; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; +} + +.elfinder-preference a.ui-state-hover, +.elfinder-preference label.ui-state-hover { + border: none; +} + +.elfinder-preference dl { + width: 100%; + display: inline-block; + margin: .5em 0; +} + +.elfinder-preference dt { + display: block; + width: 200px; + clear: left; + float: left; + max-width: 50%; +} + +.elfinder-rtl .elfinder-preference dt { + clear: right; + float: right; +} + +.elfinder-preference dd { + margin-bottom: 1em; +} + +.elfinder-preference dt label { + cursor: pointer; +} + +.elfinder-preference dd label, +.elfinder-preference dd input[type=checkbox] { + white-space: nowrap; + display: inline-block; + cursor: pointer; +} + +.elfinder-preference dt.elfinder-preference-checkboxes { + width: 100%; + max-width: none; +} + +.elfinder-preference dd.elfinder-preference-checkboxes { + padding-top: 3ex; +} + +.elfinder-preference select { + max-width: 100%; +} + +.elfinder-preference dd.elfinder-preference-iconSize .ui-slider { + width: 50%; + max-width: 100px; + display: inline-block; + margin: 0 10px; +} + +.elfinder-preference button { + margin: 0 16px; +} + +.elfinder-preference button + button { + margin: 0 -10px; +} + +/********************** COMMAND "INFO" ****************************/ +.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before { + right: 33px; + left: auto; +} + +.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { + content: none; +} + +/********************** COMMAND "UPLOAD" ****************************/ +.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { + position: absolute; + bottom: 2px; + width: 16px; + height: 16px; + padding: 10px; + border: none; + overflow: hidden; + cursor: pointer; +} + +.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { + left: 2px; +} + +.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { + right: 2px; +} + +/********************** COMMAND "RM" ****************************/ +.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before { + left: 38px; +} + +.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before { + right: 86px; + left: auto; +} + +.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { + content: none; +} + +/********************** COMMAND "RENAME" ****************************/ +.elfinder-rename-batch div { + margin: 5px 8px; +} + +.elfinder-rename-batch .elfinder-rename-batch-name input { + width: 100%; + font-size: 1.6em; +} + +.elfinder-rename-batch-type { + text-align: center; +} + +.elfinder-rename-batch .elfinder-rename-batch-type label { + margin: 2px; + font-size: .9em; +} + +.elfinder-rename-batch-preview { + padding: 0 8px; + font-size: 1.1em; + min-height: 4ex; +} + + +/* File: /css/common.css */ +/*********************************************/ +/* COMMON ELFINDER STUFFS */ +/*********************************************/ + +/* for old jQuery UI */ +.ui-front { + z-index: 100; +} + +/* common container */ +.elfinder { + padding: 0; + position: relative; + display: block; + visibility: visible; + font-size: 18px; + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +/* prevent auto zoom on iOS */ +.elfinder-ios input, +.elfinder-ios select, +.elfinder-ios textarea { + font-size: 16px !important; +} + +/* full screen mode */ +.elfinder.elfinder-fullscreen > .ui-resizable-handle { + display: none; +} + +.elfinder-font-mono { + line-height: 2ex; +} + +/* in lazy execution status */ +.elfinder.elfinder-processing * { + cursor: progress !important +} + +.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after { + position: absolute; + top: 0; + width: 100%; + height: 3px; + content: ''; + left: 0; + background-image: url(../img/progress.gif); + opacity: .6; + pointer-events: none; +} + +/* for disable select of Touch devices */ +.elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]), +.elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + /*-webkit-touch-callout:none;*/ + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +.elfinder .overflow-scrolling-touch { + -webkit-overflow-scrolling: touch; +} + +/* right to left enviroment */ +.elfinder-rtl { + text-align: right; + direction: rtl; +} + +/* nav and cwd container */ +.elfinder-workzone { + padding: 0; + position: relative; + overflow: hidden; +} + +/* dir/file permissions and symlink markers */ +.elfinder-lock, +.elfinder-perms, +.elfinder-symlink { + position: absolute; + width: 16px; + height: 16px; + background-image: url(../img/toolbar.png); + background-repeat: no-repeat; + background-position: 0 -528px; +} + +.elfinder-symlink { +} + +/* noaccess */ +.elfinder-na .elfinder-perms { + background-position: 0 -96px; +} + +/* read only */ +.elfinder-ro .elfinder-perms { + background-position: 0 -64px; +} + +/* write only */ +.elfinder-wo .elfinder-perms { + background-position: 0 -80px; +} + +/* volume type group */ +.elfinder-group .elfinder-perms { + background-position: 0 0px; +} + +/* locked */ +.elfinder-lock { + background-position: 0 -656px; +} + +/* drag helper */ +.elfinder-drag-helper { + top: 0px; + left: 0px; + width: 70px; + height: 60px; + padding: 0 0 0 25px; + z-index: 100000; + will-change: left, top; +} + +.elfinder-drag-helper.html5-native { + position: absolute; + top: -1000px; + left: -1000px; +} + +/* drag helper status icon (default no-drop) */ +.elfinder-drag-helper-icon-status { + position: absolute; + width: 16px; + height: 16px; + left: 42px; + top: 60px; + background: url('../img/toolbar.png') 0 -96px no-repeat; + display: block; +} + +/* show "up-arrow" icon for move item */ +.elfinder-drag-helper-move .elfinder-drag-helper-icon-status { + background-position: 0 -720px; +} + +/* show "plus" icon when ctrl/shift pressed */ +.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { + background-position: 0 -544px; +} + +/* files num in drag helper */ +.elfinder-drag-num { + display: inline-box; + position: absolute; + top: 0; + left: 0; + width: auto; + height: 14px; + text-align: center; + padding: 1px 3px 1px 3px; + + font-weight: bold; + color: #fff; + background-color: red; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; +} + +/* icon in drag helper */ +.elfinder-drag-helper .elfinder-cwd-icon { + margin: 0 0 0 -24px; + float: left; +} + +/* transparent overlay */ +.elfinder-overlay { + position: absolute; + opacity: .2; + filter: Alpha(Opacity=20); +} + +/* panels under/below cwd (for search field etc) */ +.elfinder .elfinder-panel { + position: relative; + background-image: none; + padding: 7px 12px; +} + +/* for html5 drag and drop */ +[draggable=true] { + -khtml-user-drag: element; +} + +/* for place holder to content editable elements */ +.elfinder [contentEditable=true]:empty:not(:focus):before { + content: attr(data-ph); +} + +/* bottom tray */ +.elfinder div.elfinder-bottomtray { + position: fixed; + bottom: 0; + max-width: 100%; + opacity: .8; +} + +.elfinder.elfinder-ltr div.elfinder-bottomtray { + left: 0; +} + +.elfinder.elfinder-rtl div.elfinder-bottomtray { + right: 0; +} + +/* tooltip */ +.elfinder-ui-tooltip, +.elfinder .elfinder-ui-tooltip { + font-size: 14px; + padding: 2px 4px; +} + +/* File: /css/contextmenu.css */ +/* menu and submenu */ +.elfinder .elfinder-contextmenu, +.elfinder .elfinder-contextmenu-sub { + position: absolute; + border: 1px solid #aaa; + background: #fff; + color: #555; + padding: 4px 0; + top: 0; + left: 0; +} + +/* submenu */ +.elfinder .elfinder-contextmenu-sub { + top: 5px; +} + +/* submenu in rtl/ltr enviroment */ +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub { + margin-left: -5px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub { + margin-right: -5px; +} + +/* menu item */ +.elfinder .elfinder-contextmenu-header { + margin-top: -4px; + padding: 0 .5em .2ex; + border: none; + text-align: center; +} + +.elfinder .elfinder-contextmenu-header span { + font-weight: normal; + font-size: 0.8em; + font-weight: bolder; +} + +.elfinder .elfinder-contextmenu-item { + position: relative; + display: block; + padding: 4px 30px; + text-decoration: none; + white-space: nowrap; + cursor: default; +} + +.elfinder .elfinder-contextmenu-item.ui-state-active { + border: none; +} + +.elfinder .elfinder-contextmenu-item .ui-icon { + width: 16px; + height: 16px; + position: absolute; + left: auto; + right: auto; + top: 50%; + margin-top: -8px; +} + +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon { + left: 2px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon { + right: 2px; +} + +.elfinder-touch .elfinder-contextmenu-item { + padding: 12px 38px; +} + +/* root icon of each volume */ +.elfinder-navbar-root-local.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_local.svg"); + background-size: contain; +} + +.elfinder-navbar-root-trash.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_trash.svg"); + background-size: contain; +} + +.elfinder-navbar-root-ftp.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_ftp.svg"); + background-size: contain; +} + +.elfinder-navbar-root-sql.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_sql.svg"); + background-size: contain; +} + +.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_dropbox.svg"); + background-size: contain; +} + +.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_googledrive.svg"); + background-size: contain; +} + +.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_onedrive.svg"); + background-size: contain; +} + +.elfinder-navbar-root-box.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_box.svg"); + background-size: contain; +} + +.elfinder-navbar-root-zip.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_zip.svg"); + background-size: contain; +} + +.elfinder-navbar-root-network.elfinder-contextmenu-icon { + background-image: url("../img/volume_icon_network.svg"); + background-size: contain; +} + +/* text in item */ +.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span { + display: block; +} + +/* submenu item in rtl/ltr enviroment */ +.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item { + padding-left: 12px; + padding-right: 12px; +} + +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item { + text-align: left; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item { + text-align: right; +} + +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { + padding-left: 28px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { + padding-right: 28px; +} + +.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { + padding-left: 36px; +} + +.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { + padding-right: 36px; +} + +/* command/submenu icon */ +.elfinder .elfinder-contextmenu-extra-icon, +.elfinder .elfinder-contextmenu-arrow, +.elfinder .elfinder-contextmenu-icon { + position: absolute; + top: 50%; + margin-top: -8px; + overflow: hidden; +} + +/* command icon in rtl/ltr enviroment */ +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon { + left: 8px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon { + right: 8px; +} + +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon { + right: 8px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon { + left: 8px; +} + +/* arrow icon */ +.elfinder .elfinder-contextmenu-arrow { + width: 16px; + height: 16px; + background: url('../img/arrows-normal.png') 5px 4px no-repeat; +} + +/* arrow icon in rtl/ltr enviroment */ +.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow { + right: 5px; +} + +.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow { + left: 5px; + background-position: 0 -10px; +} + +/* command extra icon's , tag */ +.elfinder .elfinder-contextmenu-extra-icon a, +.elfinder .elfinder-contextmenu-extra-icon span { + display: inline-block; + width: 100%; + height: 100%; + padding: 20px; + margin: 0; + color: transparent !important; + text-decoration: none; + cursor: pointer; +} + +/* disable ui border/bg image on hover */ +.elfinder .elfinder-contextmenu .ui-state-hover { + border: 0 solid; + background-image: none; +} + +/* separator */ +.elfinder .elfinder-contextmenu-separator { + height: 0px; + border-top: 1px solid #ccc; + margin: 0 1px; +} + +/* for CSS style priority to ui-state-disabled - "background-image: none" */ +.elfinder .elfinder-button-icon.ui-state-disabled { + background-image: url('../img/toolbar.png') !important; +} + +/* File: /css/cwd.css */ +/******************************************************************/ +/* CURRENT DIRECTORY STYLES */ +/******************************************************************/ +/* cwd container to avoid selectable on scrollbar */ +.elfinder-cwd-wrapper { + overflow: auto; + position: relative; + padding: 2px; + margin: 0; +} + +.elfinder-cwd-wrapper-list { + padding: 0; +} + +/* container */ +.elfinder-cwd { + position: absolute; + top: 0; + cursor: default; + padding: 0; + margin: 0; + -ms-touch-action: auto; + touch-action: auto; + min-width: 100%; +} + +.elfinder-ltr .elfinder-cwd { + left: 0; +} + +.elfinder-rtl .elfinder-cwd { + right: 0; +} + +.elfinder-cwd.elfinder-table-header-sticky { + position: -webkit-sticky; + position: -ms-sticky; + position: sticky; + top: 0; + left: auto; + right: auto; + width: -webkit-max-content; + width: -moz-max-content; + width: -ms-max-content; + width: max-content; + height: 0; + overflow: visible; +} + +.elfinder-cwd.elfinder-table-header-sticky table { + border-top: 2px solid; + padding-top: 0; +} + +.elfinder-cwd.elfinder-table-header-sticky td { + display: inline-block; +} + +.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table { + border-top: 2px solid transparent; +} + +/* fixed table header container */ +.elfinder-cwd-fixheader .elfinder-cwd { + position: relative; +} + +/* container active on dropenter */ +.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active { + outline: 2px solid #8cafed; + outline-offset: -2px; +} + +.elfinder-cwd-wrapper-empty .elfinder-cwd:after { + display: block; + position: absolute; + top: 40%; + left: 0; + right: 0; + margin-top: -2em; + line-height: 1.5em; + text-align: center; + white-space: pre-wrap; + opacity: 0.6; + filter: Alpha(Opacity=60); + font-weight: bold; +} + +.elfinder-cwd-file .elfinder-cwd-select { + position: absolute; + top: 0px; + left: 0px; + background-color: transparent; + opacity: .4; + filter: Alpha(Opacity=40); +} + +.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select { + width: 30px; + height: 30px; +} + +.elfinder-cwd-file.ui-selected .elfinder-cwd-select { + opacity: .8; + filter: Alpha(Opacity=80); +} + +.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select { + left: auto; + right: 0px; +} + +.elfinder .elfinder-cwd-selectall { + position: absolute; + width: 30px; + height: 30px; + top: 0px; + opacity: .8; + filter: Alpha(Opacity=80); +} + +.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall { + display: none; +} + +/************************** ICONS VIEW ********************************/ + +.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall { + text-align: right; + right: 18px; + left: auto; +} + +.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall { + text-align: left; + right: auto; + left: 18px; +} + +.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { + right: 0px; +} + +.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { + left: 0px; +} + +.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover { + background-color: transparent; +} + +/* file container */ +.elfinder-cwd-view-icons .elfinder-cwd-file { + width: 120px; + height: 90px; + padding-bottom: 2px; + cursor: default; + border: none; + position: relative; +} + +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { + border: none; +} + +/* ltr/rtl enviroment */ +.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file { + float: left; + margin: 0 3px 2px 0; +} + +.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file { + float: right; + margin: 0 0 5px 3px; +} + +/* remove ui hover class border */ +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { + border: 0 solid; +} + +/* icon wrapper to create selected highlight around icon */ +.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { + width: 52px; + height: 52px; + margin: 1px auto 1px auto; + padding: 2px; + position: relative; +} + +/*** Custom Icon Size size1 - size3 ***/ +/* type badge */ +.elfinder-cwd-size1 .elfinder-cwd-icon:before, +.elfinder-cwd-size2 .elfinder-cwd-icon:before, +.elfinder-cwd-size3 .elfinder-cwd-icon:before { + top: 3px; + display: block; +} + +/* size1 */ +.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file { + width: 120px; + height: 112px; +} + +.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { + width: 74px; + height: 74px; +} + +.elfinder-cwd-size1 .elfinder-cwd-icon { + -ms-transform-origin: top center; + -ms-transform: scale(1.5); + -webkit-transform-origin: top center; + -webkit-transform: scale(1.5); + transform-origin: top center; + transform: scale(1.5); +} + +.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + -ms-transform-origin: top left; + -ms-transform: scale(1.35) translate(-4px, 15%); + -webkit-transform-origin: top left; + -webkit-transform: scale(1.35) translate(-4px, 15%); + transform-origin: top left; + transform: scale(1.35) translate(-4px, 15%); +} + +.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { + -ms-transform: scale(1) translate(10px, -5px); + -webkit-transform: scale(1) translate(10px, -5px); + transform: scale(1) translate(10px, -5px); +} + +.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl { + -ms-transform-origin: center center; + -ms-transform: scale(1); + -webkit-transform-origin: center center; + -webkit-transform: scale(1); + transform-origin: center center; + transform: scale(1); + width: 72px; + height: 72px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +/* size2 */ +.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file { + width: 140px; + height: 134px; +} + +.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { + width: 98px; + height: 98px; +} + +.elfinder-cwd-size2 .elfinder-cwd-icon { + -ms-transform-origin: top center; + -ms-transform: scale(2); + -webkit-transform-origin: top center; + -webkit-transform: scale(2); + transform-origin: top center; + transform: scale(2); +} + +.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + -ms-transform-origin: top left; + -ms-transform: scale(1.8) translate(-5px, 18%); + -webkit-transform-origin: top left; + -webkit-transform: scale(1.8) translate(-5px, 18%); + transform-origin: top left; + transform: scale(1.8) translate(-5px, 18%); +} + +.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { + -ms-transform: scale(1.1) translate(0px, 10px); + -webkit-transform: scale(1.1) translate(0px, 10px); + transform: scale(1.1) translate(0px, 10px); +} + +.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl { + -ms-transform-origin: center center; + -ms-transform: scale(1); + -webkit-transform-origin: center center; + -webkit-transform: scale(1); + transform-origin: center center; + transform: scale(1); + width: 96px; + height: 96px; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; +} + +/* size3 */ +.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file { + width: 174px; + height: 158px; +} + +.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { + width: 122px; + height: 122px; +} + +.elfinder-cwd-size3 .elfinder-cwd-icon { + -ms-transform-origin: top center; + -ms-transform: scale(2.5); + -webkit-transform-origin: top center; + -webkit-transform: scale(2.5); + transform-origin: top center; + transform: scale(2.5); +} + +.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + -ms-transform-origin: top left; + -ms-transform: scale(2.25) translate(-6px, 20%); + -webkit-transform-origin: top left; + -webkit-transform: scale(2.25) translate(-6px, 20%); + transform-origin: top left; + transform: scale(2.25) translate(-6px, 20%); +} + +.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { + -ms-transform: scale(1.2) translate(-9px, 22px); + -webkit-transform: scale(1.2) translate(-9px, 22px); + transform: scale(1.2) translate(-9px, 22px); +} + +.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl { + -ms-transform-origin: center center; + -ms-transform: scale(1); + -webkit-transform-origin: center center; + -webkit-transform: scale(1); + transform-origin: center center; + transform: scale(1); + width: 120px; + height: 120px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +/* file name place */ +.elfinder-cwd-view-icons .elfinder-cwd-filename { + text-align: center; + max-height: 2.4em; + line-height: 1.2em; + white-space: pre-line; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + margin: 3px 1px 0 1px; + padding: 1px; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + /* for webkit CSS3 */ + word-break: break-word; + overflow-wrap: break-word; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +/* permissions/symlink markers */ +.elfinder-cwd-view-icons .elfinder-perms { + bottom: 4px; + right: 2px; +} + +.elfinder-cwd-view-icons .elfinder-lock { + top: -3px; + right: -2px; +} + +.elfinder-cwd-view-icons .elfinder-symlink { + bottom: 6px; + left: 0px; +} + +/* icon/thumbnail */ +.elfinder-cwd-icon { + display: block; + width: 48px; + height: 48px; + margin: 0 auto; + background-image: url('../img/icons-big.svg'); + background-image: url('../img/icons-big.png') \9; + background-position: 0 0; + background-repeat: no-repeat; + -moz-background-clip: padding; + -webkit-background-clip: padding-box; + background-clip: padding-box; +} + +/* volume icon of root in folder */ +.elfinder-navbar-root-local .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_local.svg"); + background-image: url("../img/volume_icon_local.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-trash .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_trash.svg"); + background-image: url("../img/volume_icon_trash.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-ftp .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_ftp.svg"); + background-image: url("../img/volume_icon_ftp.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-sql .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_sql.svg"); + background-image: url("../img/volume_icon_sql.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-dropbox .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_dropbox.svg"); + background-image: url("../img/volume_icon_dropbox.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-googledrive .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_googledrive.svg"); + background-image: url("../img/volume_icon_googledrive.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-navbar-root-onedrive .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_onedrive.svg"); + background-image: url("../img/volume_icon_onedrive.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-navbar-root-box .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_box.svg"); + background-image: url("../img/volume_icon_box.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-navbar-root-zip .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_zip.svg"); + background-image: url("../img/volume_icon_zip.svg") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +.elfinder-navbar-root-network .elfinder-cwd-icon, +.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon { + background-image: url("../img/volume_icon_network.svg"); + background-image: url("../img/volume_icon_network.png") \9; + background-position: 0 0; + background-size: contain; +} + +.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon { + background-position: 1px -1px; +} + +/* type badge in "icons" view */ +.elfinder-cwd-icon:before { + content: none; + position: absolute; + left: 0px; + top: 5px; + min-width: 20px; + max-width: 84px; + text-align: center; + padding: 0px 4px 1px; + border-radius: 4px; + font-family: Verdana; + font-size: 10px; + -webkit-transform: scale(0.9); + -moz-transform: scale(0.9); + -ms-transform: scale(0.9); + -o-transform: scale(0.9); + transform: scale(0.9); +} + +.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + left: -10px; +} + +/* addtional type badge name */ +.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before { + content: 'ts' +} + +.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before { + content: 'dash' +} + +.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before { + content: 'hls' +} + +.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before { + content: 'c++' +} + +/* thumbnail image */ +.elfinder-cwd-icon.elfinder-cwd-bgurl { + background-position: center center; + background-repeat: no-repeat; + -moz-background-size: contain; + background-size: contain; +} + +/* thumbnail self */ +.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself { + -moz-background-size: cover; + background-size: cover; +} + +/* thumbnail crop*/ +.elfinder-cwd-icon.elfinder-cwd-bgurl { + -moz-background-size: cover; + background-size: cover; +} + +.elfinder-cwd-icon.elfinder-cwd-bgurl:after { + content: ' '; +} + +.elfinder-cwd-bgurl:after { + position: relative; + display: inline-block; + top: 36px; + left: -38px; + width: 48px; + height: 48px; + background-image: url('../img/icons-big.svg'); + background-image: url('../img/icons-big.png') \9; + background-repeat: no-repeat; + background-size: auto !important; + opacity: .8; + filter: Alpha(Opacity=60); + -webkit-transform-origin: 54px -24px; + -webkit-transform: scale(.6); + -moz-transform-origin: 54px -24px; + -moz-transform: scale(.6); + -ms-transform-origin: 54px -24px; + -ms-transform: scale(.6); + -o-transform-origin: 54px -24px; + -o-transform: scale(.6); + transform-origin: 54px -24px; + transform: scale(.6); +} + +/* thumbnail image and draging icon overlay none */ +.elfinder-cwd-icon.elfinder-cwd-icon-drag:before, +.elfinder-cwd-icon.elfinder-cwd-icon-drag:after, +.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after, +.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after { + content: none; +} + +/* "opened folder" icon on dragover */ +.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { + background-position: 0 -100px; +} + +.elfinder-cwd .elfinder-droppable-active { + outline: 2px solid #8cafed; + outline-offset: -2px; +} + +/* mimetypes icons */ +.elfinder-cwd-icon-directory { + background-position: 0 -50px; +} + +.elfinder-cwd-icon-application:after, +.elfinder-cwd-icon-application { + background-position: 0 -150px; +} + +.elfinder-cwd-icon-text:after, +.elfinder-cwd-icon-text { + background-position: 0 -1350px; +} + +.elfinder-cwd-icon-plain:after, +.elfinder-cwd-icon-plain, +.elfinder-cwd-icon-x-empty:after, +.elfinder-cwd-icon-x-empty { + background-position: 0 -200px; +} + +.elfinder-cwd-icon-image:after, +.elfinder-cwd-icon-vnd-adobe-photoshop:after, +.elfinder-cwd-icon-image, +.elfinder-cwd-icon-vnd-adobe-photoshop { + background-position: 0 -250px; +} + +.elfinder-cwd-icon-postscript:after, +.elfinder-cwd-icon-postscript { + background-position: 0 -1550px; +} + +.elfinder-cwd-icon-audio:after, +.elfinder-cwd-icon-audio { + background-position: 0 -300px; +} + +.elfinder-cwd-icon-video:after, +.elfinder-cwd-icon-video, +.elfinder-cwd-icon-flash-video, +.elfinder-cwd-icon-dash-xml, +.elfinder-cwd-icon-vnd-apple-mpegurl, +.elfinder-cwd-icon-x-mpegurl { + background-position: 0 -350px; +} + +.elfinder-cwd-icon-rtf:after, +.elfinder-cwd-icon-rtfd:after, +.elfinder-cwd-icon-rtf, +.elfinder-cwd-icon-rtfd { + background-position: 0 -400px; +} + +.elfinder-cwd-icon-pdf:after, +.elfinder-cwd-icon-pdf { + background-position: 0 -450px; +} + +.elfinder-cwd-icon-ms-excel, +.elfinder-cwd-icon-ms-excel:after, +.elfinder-cwd-icon-vnd-ms-excel, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-excel:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after { + background-position: 0 -1450px +} + +.elfinder-cwd-icon-vnd-ms-powerpoint, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-powerpoint:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after { + background-position: 0 -1400px +} + +.elfinder-cwd-icon-msword, +.elfinder-cwd-icon-msword:after, +.elfinder-cwd-icon-vnd-ms-word, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after, +.elfinder-cwd-icon-vnd-ms-word:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after { + background-position: 0 -1500px +} + +.elfinder-cwd-icon-vnd-ms-office, +.elfinder-cwd-icon-vnd-ms-office:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-chart, +.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-database, +.elfinder-cwd-icon-vnd-oasis-opendocument-database:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-formula, +.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-image, +.elfinder-cwd-icon-vnd-oasis-opendocument-image:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-text, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-master, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-web, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after, +.elfinder-cwd-icon-vnd-oasis-opendocument-text:after, +.elfinder-cwd-icon-vnd-openofficeorg-extension, +.elfinder-cwd-icon-vnd-openofficeorg-extension:after { + background-position: 0 -500px +} + +.elfinder-cwd-icon-html:after, +.elfinder-cwd-icon-html { + background-position: 0 -550px; +} + +.elfinder-cwd-icon-css:after, +.elfinder-cwd-icon-css { + background-position: 0 -600px; +} + +.elfinder-cwd-icon-javascript:after, +.elfinder-cwd-icon-x-javascript:after, +.elfinder-cwd-icon-javascript, +.elfinder-cwd-icon-x-javascript { + background-position: 0 -650px; +} + +.elfinder-cwd-icon-x-perl:after, +.elfinder-cwd-icon-x-perl { + background-position: 0 -700px; +} + +.elfinder-cwd-icon-x-python:after, +.elfinder-cwd-icon-x-python { + background-position: 0 -750px; +} + +.elfinder-cwd-icon-x-ruby:after, +.elfinder-cwd-icon-x-ruby { + background-position: 0 -800px; +} + +.elfinder-cwd-icon-x-sh:after, +.elfinder-cwd-icon-x-shellscript:after, +.elfinder-cwd-icon-x-sh, +.elfinder-cwd-icon-x-shellscript { + background-position: 0 -850px; +} + +.elfinder-cwd-icon-x-c:after, +.elfinder-cwd-icon-x-csrc:after, +.elfinder-cwd-icon-x-chdr:after, +.elfinder-cwd-icon-x-c--:after, +.elfinder-cwd-icon-x-c--src:after, +.elfinder-cwd-icon-x-c--hdr:after, +.elfinder-cwd-icon-x-java:after, +.elfinder-cwd-icon-x-java-source:after, +.elfinder-cwd-icon-x-c, +.elfinder-cwd-icon-x-csrc, +.elfinder-cwd-icon-x-chdr, +.elfinder-cwd-icon-x-c--, +.elfinder-cwd-icon-x-c--src, +.elfinder-cwd-icon-x-c--hdr, +.elfinder-cwd-icon-x-java, +.elfinder-cwd-icon-x-java-source { + background-position: 0 -900px; +} + +.elfinder-cwd-icon-x-php:after, +.elfinder-cwd-icon-x-php { + background-position: 0 -950px; +} + +.elfinder-cwd-icon-xml:after, +.elfinder-cwd-icon-xml { + background-position: 0 -1000px; +} + +.elfinder-cwd-icon-zip:after, +.elfinder-cwd-icon-x-zip:after, +.elfinder-cwd-icon-x-xz:after, +.elfinder-cwd-icon-x-7z-compressed:after, +.elfinder-cwd-icon-zip, +.elfinder-cwd-icon-x-zip, +.elfinder-cwd-icon-x-xz, +.elfinder-cwd-icon-x-7z-compressed { + background-position: 0 -1050px; +} + +.elfinder-cwd-icon-x-gzip:after, +.elfinder-cwd-icon-x-tar:after, +.elfinder-cwd-icon-x-gzip, +.elfinder-cwd-icon-x-tar { + background-position: 0 -1100px; +} + +.elfinder-cwd-icon-x-bzip:after, +.elfinder-cwd-icon-x-bzip2:after, +.elfinder-cwd-icon-x-bzip, +.elfinder-cwd-icon-x-bzip2 { + background-position: 0 -1150px; +} + +.elfinder-cwd-icon-x-rar:after, +.elfinder-cwd-icon-x-rar-compressed:after, +.elfinder-cwd-icon-x-rar, +.elfinder-cwd-icon-x-rar-compressed { + background-position: 0 -1200px; +} + +.elfinder-cwd-icon-x-shockwave-flash:after, +.elfinder-cwd-icon-x-shockwave-flash { + background-position: 0 -1250px; +} + +.elfinder-cwd-icon-group { + background-position: 0 -1300px; +} + +/* textfield inside icon */ +.elfinder-cwd-filename input { + width: 100%; + border: none; + margin: 0; + padding: 0; +} + +.elfinder-cwd-view-icons input { + text-align: center; +} + +.elfinder-cwd-view-icons textarea { + width: 100%; + border: 0px solid; + margin: 0; + padding: 0; + text-align: center; + overflow: hidden; + resize: none; +} + +.elfinder-cwd-view-icons { + text-align: center; +} + +/************************************ LIST VIEW ************************************/ + +/*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/ + +.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after { + display: none; +} + +.elfinder-cwd table { + width: 100%; + border-collapse: separate; + border: 0 solid; + margin: 0 0 10px 0; + border-spacing: 0; + box-sizing: padding-box; + padding: 2px; + position: relative; +} + +.elfinder-cwd table td { + /* fix conflict with Bootstrap CSS */ + box-sizing: content-box; +} + +.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader { + position: absolute; + overflow: hidden; +} + +.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { + content: ''; + position: absolute; + width: 100%; + top: 0; + height: 3px; + background-color: white; +} + +.elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { + background-color: #8cafed; +} + +.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table { + table-layout: fixed; +} + +.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader { + position: relative; +} + +.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall { + text-align: left; + right: auto; + left: 0px; + padding-top: 3px; +} + +.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall { + text-align: right; + right: 0px; + left: auto; + padding-top: 3px; +} + +.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall { + padding-top: 4px; +} + +.elfinder .elfinder-cwd table thead tr { + border-left: 0 solid; + border-top: 0 solid; + border-right: 0 solid; +} + +.elfinder .elfinder-cwd table thead td { + padding: 4px 14px; +} + +.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { + padding: 4px 14px 4px 22px; +} + +.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { + padding: 4px 22px 4px 14px; +} + +.elfinder-touch .elfinder-cwd table thead td, +.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { + padding-top: 8px; + padding-bottom: 8px; +} + +.elfinder .elfinder-cwd table thead td.ui-state-active { + background: #ebf1f6; + background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb)); + background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); + background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); + background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); + background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0); +} + +.elfinder .elfinder-cwd table td { + padding: 4px 12px; + white-space: pre; + overflow: hidden; + text-align: right; + cursor: default; + border: 0 solid; +} + +.elfinder .elfinder-cwd table tbody td:first-child { + position: relative +} + +.elfinder .elfinder-cwd table td div { + box-sizing: content-box; +} + +tr.elfinder-cwd-file td .elfinder-cwd-select { + padding-top: 3px; +} + +.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select { + width: 40px; +} + +.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select { + padding-top: 10px; +} + +.elfinder-touch .elfinder-cwd tr td { + padding: 10px 12px; +} + +.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td { + padding: 13px 12px; +} + +.elfinder-ltr .elfinder-cwd table td { + text-align: right; +} + +.elfinder-ltr .elfinder-cwd table td:first-child { + text-align: left; +} + +.elfinder-rtl .elfinder-cwd table td { + text-align: left; +} + +.elfinder-rtl .elfinder-cwd table td:first-child { + text-align: right; +} + +.elfinder-odd-row { + background: #eee; +} + +/* filename container */ +.elfinder-cwd-view-list .elfinder-cwd-file-wrapper { + width: 97%; + position: relative; +} + +/* filename container in ltr/rtl enviroment */ +.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { + margin-left: 8px; +} + +.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { + margin-right: 8px; +} + +.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename { + padding-left: 23px; +} + +.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename { + padding-right: 23px; +} + +/* premissions/symlink marker */ +.elfinder-cwd-view-list .elfinder-perms, +.elfinder-cwd-view-list .elfinder-lock, +.elfinder-cwd-view-list .elfinder-symlink { + margin-top: -6px; + opacity: .6; + filter: Alpha(Opacity=60); +} + +/* markers in ltr/rtl enviroment */ +.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms { + left: 8px; + bottom: -4px; +} + +.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock { + left: 10px; + top: 0px; +} + +.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink { + left: -7px; + bottom: -4px; +} + +/* file icon */ +.elfinder-cwd-view-list td .elfinder-cwd-icon { + width: 16px; + height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + background-image: url(../img/icons-small.png); +} + +/* icon in ltr/rtl enviroment */ +.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon { + left: 0; +} + +.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon { + right: 0; +} + +/* type badge, thumbnail image overlay */ +.elfinder-cwd-view-list .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-cwd-icon:after { + content: none; +} + +/* table header resize handle */ +.elfinder-cwd-view-list thead td .ui-resizable-handle { + height: 100%; + top: 6px; +} + +.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle { + top: -4px; + margin: 10px; +} + +.elfinder-cwd-view-list thead td .ui-resizable-e { + right: -7px; +} + +.elfinder-cwd-view-list thead td .ui-resizable-w { + left: -7px; +} + +.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e { + right: -16px; +} + +.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w { + left: -16px; +} + +/* empty message */ +.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after { + margin-top: 0; +} + +/* overlay message board */ +.elfinder-cwd-message-board { + position: absolute; + position: -webkit-sticky; + position: sticky; + width: 100%; + height: calc(100% - 0.01px); /* for Firefox scroll problem */ + top: 0; + left: 0; + margin: 0; + padding: 0; + pointer-events: none; + background-color: transparent; +} + +/* overlay message board for trash */ +.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board { + background-image: url(../img/trashmesh.png); +} + +.elfinder-cwd-message-board .elfinder-cwd-trash { + position: absolute; + bottom: 0; + font-size: 30px; + width: 100%; + text-align: right; + display: none; +} + +.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash { + text-align: left; +} + +.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash { + font-size: 20px; +} + +.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash { + display: block; + opacity: .3; +} + +/* overlay message board for expires */ +.elfinder-cwd-message-board .elfinder-cwd-expires { + position: absolute; + bottom: 0; + font-size: 24px; + width: 100%; + text-align: right; + opacity: .25; +} + +.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires { + text-align: left; +} + +.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires { + font-size: 20px; +} + +/* File: /css/dialog.css */ +/*********************************************/ +/* DIALOGS STYLES */ +/*********************************************/ + +/* common dialogs class */ +.std42-dialog { + padding: 0; + position: absolute; + left: auto; + right: auto; + box-sizing: border-box; +} + +.std42-dialog.elfinder-dialog-minimized { + overFlow: hidden; + position: relative; + float: left; + width: auto; + cursor: pointer; +} + +.elfinder-rtl .std42-dialog.elfinder-dialog-minimized { + float: right; +} + +.std42-dialog input { + border: 1px solid; +} + +/* titlebar */ +.std42-dialog .ui-dialog-titlebar { + border-left: 0 solid transparent; + border-top: 0 solid transparent; + border-right: 0 solid transparent; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + font-weight: normal; + padding: .2em 1em; +} + +.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { + padding: 0 .5em; + height: 20px; +} + +.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { + padding: .3em .5em; +} + +.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar { + cursor: default; +} + +.std42-dialog .ui-dialog-titlebar .ui-widget-header { + border: none; + cursor: pointer; +} + +.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { + display: inherit; + word-break: break-all; +} + +.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { + display: list-item; + display: -moz-inline-box; + white-space: nowrap; + word-break: normal; + overflow: hidden; + word-wrap: normal; + overflow-wrap: normal; + max-width: -webkit-calc(100% - 24px); + max-width: -moz-calc(100% - 24px); + max-width: calc(100% - 24px); +} + +.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { + padding-top: .15em; +} + +.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { + max-width: -webkit-calc(100% - 36px); + max-width: -moz-calc(100% - 36px); + max-width: calc(100% - 36px); +} + +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { + position: relative; + float: left; + top: 10px; + left: -10px; + right: 10px; + width: 20px; + height: 20px; + padding: 1px; + margin: -10px 1px 0 1px; + background-color: transparent; + background-image: none; +} + +.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { + -moz-transform: scale(1.2); + zoom: 1.2; + padding-left: 6px; + padding-right: 6px; + height: 24px; +} + +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right { + float: right; +} + +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right { + left: 10px; + right: -10px; +} + +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { + width: 17px; + height: 17px; + border-width: 1px; + opacity: .7; + filter: Alpha(Opacity=70); + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; +} + +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { + opacity: .5; + filter: Alpha(Opacity=50); +} + +.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { + opacity: 1; + filter: Alpha(Opacity=100); +} + +.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select { + display: none; +} + +.elfinder-spinner { + width: 14px; + height: 14px; + background: url("../img/spinner-mini.gif") center center no-repeat; + margin: 0 5px; + display: inline-block; + vertical-align: middle; +} + +/* resize handle for touch devices */ +.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se { + width: 12px; + height: 12px; + -moz-transform-origin: bottom right; + -moz-transform: scale(1.5); + zoom: 1.5; + right: -7px; + bottom: -7px; + margin: 3px 7px 7px 3px; + background-position: -64px -224px; +} + +.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar { + text-align: right; +} + +/* content */ +.std42-dialog .ui-dialog-content { + padding: .3em .5em; + box-sizing: border-box; +} + +.elfinder .std42-dialog .ui-dialog-content, +.elfinder .std42-dialog .ui-dialog-content * { + -webkit-user-select: auto; + -moz-user-select: text; + -khtml-user-select: text; + user-select: text; +} + +.elfinder .std42-dialog .ui-dialog-content label { + border: none; +} + +/* buttons */ +.std42-dialog .ui-dialog-buttonpane { + border: 0 solid; + margin: 0; + padding: .5em; + text-align: right; +} + +.elfinder-rtl .std42-dialog .ui-dialog-buttonpane { + text-align: left; +} + +.std42-dialog .ui-dialog-buttonpane button { + margin: .2em 0 0 .4em; + padding: .2em; + outline: 0px solid; +} + +.std42-dialog .ui-dialog-buttonpane button span { + padding: 2px 9px; +} + +.std42-dialog .ui-dialog-buttonpane button span.ui-icon { + padding: 2px; +} + +.elfinder-dialog .ui-resizable-e, +.elfinder-dialog .ui-resizable-s { + width: 0; + height: 0; +} + +.std42-dialog .ui-button input { + cursor: pointer; +} + +.std42-dialog select { + border: 1px solid #ccc; +} + +/* error/notify/confirm dialogs icon */ +.elfinder-dialog-icon { + position: absolute; + width: 32px; + height: 32px; + left: 10px; + top: 50%; + margin-top: -15px; + background: url("../img/dialogs.png") 0 0 no-repeat; +} + +.elfinder-rtl .elfinder-dialog-icon { + left: auto; + right: 10px; +} + +/*********************** ERROR DIALOG **************************/ + +.elfinder-dialog-error .ui-dialog-content, +.elfinder-dialog-confirm .ui-dialog-content { + padding-left: 56px; + min-height: 35px; +} + +.elfinder-rtl .elfinder-dialog-error .ui-dialog-content, +.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content { + padding-left: 0; + padding-right: 56px; +} + +/*********************** NOTIFY DIALOG **************************/ + +.elfinder-dialog-notify .ui-dialog-titlebar-close { + display: none; +} + +.elfinder-dialog-notify .ui-dialog-content { + padding: 0; +} + +/* one notification container */ +.elfinder-notify { + border-bottom: 1px solid #ccc; + position: relative; + padding: .5em; + + text-align: center; + overflow: hidden; +} + +.elfinder-ltr .elfinder-notify { + padding-left: 36px; +} + +.elfinder-rtl .elfinder-notify { + padding-right: 36px; +} + +.elfinder-notify:last-child { + border: 0 solid; +} + +/* progressbar */ +.elfinder-notify-progressbar { + width: 180px; + height: 8px; + border: 1px solid #aaa; + background: #f5f5f5; + margin: 5px auto; + overflow: hidden; +} + +.elfinder-notify-progress { + width: 100%; + height: 8px; + background: url(../img/progress.gif) center center repeat-x; +} + +.elfinder-notify-progressbar, .elfinder-notify-progress { + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} + +/* icons */ +.elfinder-dialog-icon-open, +.elfinder-dialog-icon-readdir, +.elfinder-dialog-icon-file { + background-position: 0 -225px; +} + +.elfinder-dialog-icon-reload { + background-position: 0 -225px; +} + +.elfinder-dialog-icon-mkdir { + background-position: 0 -64px; +} + +.elfinder-dialog-icon-mkfile { + background-position: 0 -96px; +} + +.elfinder-dialog-icon-copy, +.elfinder-dialog-icon-prepare, +.elfinder-dialog-icon-move { + background-position: 0 -128px; +} + +.elfinder-dialog-icon-upload { + background-position: 0 -160px; +} + +.elfinder-dialog-icon-chunkmerge { + background-position: 0 -160px; +} + +.elfinder-dialog-icon-rm { + background-position: 0 -192px; +} + +.elfinder-dialog-icon-download { + background-position: 0 -260px; +} + +.elfinder-dialog-icon-save { + background-position: 0 -295px; +} + +.elfinder-dialog-icon-rename, +.elfinder-dialog-icon-chkcontent { + background-position: 0 -330px; +} + +.elfinder-dialog-icon-zipdl, +.elfinder-dialog-icon-archive, +.elfinder-dialog-icon-extract { + background-position: 0 -365px; +} + +.elfinder-dialog-icon-search { + background-position: 0 -402px; +} + +.elfinder-dialog-icon-resize, +.elfinder-dialog-icon-loadimg, +.elfinder-dialog-icon-netmount, +.elfinder-dialog-icon-netunmount, +.elfinder-dialog-icon-chmod, +.elfinder-dialog-icon-preupload, +.elfinder-dialog-icon-url, +.elfinder-dialog-icon-dim { + background-position: 0 -434px; +} + +/*********************** CONFIRM DIALOG **************************/ + +.elfinder-dialog-confirm-applyall, +.elfinder-dialog-confirm-encoding { + padding: 0 1em; + margin: 0; +} + +.elfinder-ltr .elfinder-dialog-confirm-applyall, +.elfinder-ltr .elfinder-dialog-confirm-encoding { + text-align: left; +} + +.elfinder-rtl .elfinder-dialog-confirm-applyall, +.elfinder-rtl .elfinder-dialog-confirm-encoding { + text-align: right; +} + +.elfinder-dialog-confirm .elfinder-dialog-icon { + background-position: 0 -32px; +} + +.elfinder-dialog-confirm .ui-dialog-buttonset { + width: auto; +} + +/*********************** FILE INFO DIALOG **************************/ + +.elfinder-info-title .elfinder-cwd-icon { + float: left; + width: 48px; + height: 48px; + margin-right: 1em; +} + +.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon { + float: right; + margin-right: 0; + margin-left: 1em; +} + +.elfinder-info-title strong { + display: block; + padding: .3em 0 .5em 0; +} + +.elfinder-info-tb { + min-width: 200px; + border: 0 solid; + margin: 1em .2em 1em .2em; + width: 100%; +} + +.elfinder-info-tb td { + white-space: pre-wrap; + padding: 2px; +} + +.elfinder-info-tb td.elfinder-info-label { + white-space: nowrap; +} + +.elfinder-info-tb td.elfinder-info-hash { + word-break: break-word; + max-width: 32em; +} + +.elfinder-info-tb tr td:first-child { + text-align: right; +} + +.elfinder-info-tb span { + float: left; +} + +.elfinder-info-tb a { + outline: none; + text-decoration: underline; +} + +.elfinder-info-tb a:hover { + text-decoration: none; +} + +.elfinder-info-spinner { + width: 14px; + height: 14px; + float: left; + background: url("../img/spinner-mini.gif") center center no-repeat; + margin: 0 5px; +} + +.elfinder-netmount-tb { + margin: 0 auto; +} + +.elfinder-netmount-tb select, +.elfinder-netmount-tb .elfinder-button-icon { + cursor: pointer; +} + +button.elfinder-info-button { + margin: -3.5px 0; + cursor: pointer; +} + +/*********************** UPLOAD DIALOG **************************/ + +.elfinder-upload-dropbox { + display: table-cell; + text-align: center; + vertical-align: middle; + padding: 0.5em; + border: 3px dashed #aaa; + width: 9999px; + height: 80px; + overflow: hidden; + word-break: keep-all; +} + +.elfinder-upload-dropbox.ui-state-hover { + background: #dfdfdf; + border: 3px dashed #555; +} + +.elfinder-upload-dialog-or { + margin: .3em 0; + text-align: center; +} + +.elfinder-upload-dialog-wrapper { + text-align: center; +} + +.elfinder-upload-dialog-wrapper .ui-button { + position: relative; + overflow: hidden; +} + +.elfinder-upload-dialog-wrapper .ui-button form { + position: absolute; + right: 0; + top: 0; + width: 100%; + opacity: 0; + filter: Alpha(Opacity=0); +} + +.elfinder-upload-dialog-wrapper .ui-button form input { + padding: 50px 0 0; + font-size: 3em; + width: 100%; +} + +/* dialog for elFinder itself */ +.dialogelfinder .dialogelfinder-drag { + border-left: 0 solid; + border-top: 0 solid; + border-right: 0 solid; + font-weight: normal; + padding: 2px 12px; + cursor: move; + position: relative; + text-align: left; +} + +.elfinder-rtl .dialogelfinder-drag { + text-align: right; +} + +.dialogelfinder-drag-close { + position: absolute; + top: 50%; + margin-top: -8px; +} + +.elfinder-ltr .dialogelfinder-drag-close { + right: 12px; +} + +.elfinder-rtl .dialogelfinder-drag-close { + left: 12px; +} + +/*********************** RM CONFIRM **************************/ +.elfinder-rm-title { + margin-bottom: .5ex; +} + +.elfinder-rm-title .elfinder-cwd-icon { + float: left; + width: 48px; + height: 48px; + margin-right: 1em; +} + +.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon { + float: right; + margin-right: 0; + margin-left: 1em; +} + +.elfinder-rm-title strong { + display: block; + /*word-wrap: break-word;*/ + white-space: pre-wrap; + word-break: normal; + overflow: hidden; + text-overflow: ellipsis; +} + +.elfinder-rm-title + br { + display: none; +} + +/*********************** EDIT DIALOG **************************/ + +.ui-dialog-titlebar select.elfinder-edit-changed { + border-bottom: 1px solid #13ae10; +} + +/* File: /css/fonts.css */ +.elfinder-font-mono { + font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace; + font-size: 1.1em; +} + +.elfinder-contextmenu .elfinder-contextmenu-item span { + font-size: .72em; +} + +.elfinder-cwd-view-icons .elfinder-cwd-filename { + font-size: .7em; +} + +.elfinder-cwd-view-list td { + font-size: .7em; +} + +.std42-dialog .ui-dialog-titlebar { + font-size: .82em; +} + +.std42-dialog .ui-dialog-content { + font-size: .72em; +} + +.std42-dialog .ui-dialog-buttonpane { + font-size: .76em; +} + +.elfinder-info-tb { + font-size: .9em; +} + +.elfinder-upload-dropbox { + font-size: 1.2em; +} + +.elfinder-upload-dialog-or { + font-size: 1.2em; +} + +.dialogelfinder .dialogelfinder-drag { + font-size: .9em; +} + +.elfinder .elfinder-navbar { + font-size: .72em; +} + +.elfinder-place-drag .elfinder-navbar-dir { + font-size: .9em; +} + +.elfinder-quicklook-title { + font-size: .7em; +} + +.elfinder-quicklook-info-data { + font-size: .72em; +} + +.elfinder-quicklook-preview-text-wrapper { + font-size: .9em; +} + +.elfinder-button-menu-item { + font-size: .72em; +} + +.elfinder-button-search input { + font-size: .8em; +} + +.elfinder-statusbar div { + font-size: .7em; +} + +.elfinder-drag-num { + font-size: 12px; +} + +.elfinder-toast { + font-size: .76em; +} + + +/* File: /css/navbar.css */ +/*********************************************/ +/* NAVIGATION PANEL */ +/*********************************************/ + +/* container */ +.elfinder .elfinder-navbar { + width: 230px; + padding: 3px 5px; + background-image: none; + border-top: 0 solid; + border-bottom: 0 solid; + overflow: auto; + position: relative; +} + +.elfinder .elfinder-navdock { + box-sizing: border-box; + width: 230px; + height: auto; + position: absolute; + bottom: 0; + overflow: auto; +} + +.elfinder-navdock .ui-resizable-n { + top: 0; + height: 20px; +} + +/* ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar { + float: left; + border-left: 0 solid; +} + +.elfinder-rtl .elfinder-navbar { + float: right; + border-right: 0 solid; +} + +.elfinder-ltr .ui-resizable-e { + margin-left: 10px; +} + +/* folders tree container */ +.elfinder-tree { + display: table; + width: 100%; + margin: 0 0 .5em 0; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +/* one folder wrapper */ +.elfinder-navbar-wrapper, .elfinder-place-wrapper { +} + +/* folder */ +.elfinder-navbar-dir { + position: relative; + display: block; + white-space: nowrap; + padding: 3px 12px; + margin: 0; + outline: 0px solid; + border: 1px solid transparent; + cursor: default; +} + +.elfinder-touch .elfinder-navbar-dir { + padding: 12px 12px; +} + +/* ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar-dir { + padding-left: 35px; +} + +.elfinder-rtl .elfinder-navbar-dir { + padding-right: 35px; +} + +/* arrow before icon */ +.elfinder-navbar-arrow { + width: 12px; + height: 14px; + position: absolute; + display: none; + top: 50%; + margin-top: -8px; + background-image: url("../img/arrows-normal.png"); + background-repeat: no-repeat; + /* border:1px solid #111;*/ +} + +.elfinder-ltr .elfinder-navbar-arrow { + left: 0; +} + +.elfinder-rtl .elfinder-navbar-arrow { + right: 0; +} + +.elfinder-touch .elfinder-navbar-arrow { + -moz-transform-origin: top left; + -moz-transform: scale(1.4); + zoom: 1.4; + margin-bottom: 7px; +} + +.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow { + left: -3px; + margin-right: 20px; +} + +.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow { + right: -3px; + margin-left: 20px; +} + +.ui-state-active .elfinder-navbar-arrow { + background-image: url("../img/arrows-active.png"); +} + +/* collapsed/expanded arrow view */ +.elfinder-navbar-collapsed .elfinder-navbar-arrow { + display: block; +} + +.elfinder-subtree-chksubdir .elfinder-navbar-arrow { + opacity: .25; + filter: Alpha(Opacity=25); +} + +/* arrow ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow { + background-position: 0 4px; +} + +.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow { + background-position: 0 -10px; +} + +.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow, +.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow { + background-position: 0 -21px; +} + +/* folder icon */ +.elfinder-navbar-icon { + width: 16px; + height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + background-image: url("../img/toolbar.png"); + background-repeat: no-repeat; + background-position: 0 -16px; +} + +/* ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar-icon { + left: 14px; +} + +.elfinder-rtl .elfinder-navbar-icon { + right: 14px; +} + +/* places icon */ +.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon { + background-position: 0 -704px; +} + +/* root folder */ +.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon, +.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { + background-position: 0 0; + background-size: contain; +} + +/* root icon of each volume "\9" for IE8 trick */ +.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon { + background-image: url("../img/volume_icon_local.svg"); + background-image: url("../img/volume_icon_local.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon { + background-image: url("../img/volume_icon_trash.svg"); + background-image: url("../img/volume_icon_trash.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon { + background-image: url("../img/volume_icon_ftp.svg"); + background-image: url("../img/volume_icon_ftp.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon { + background-image: url("../img/volume_icon_sql.svg"); + background-image: url("../img/volume_icon_sql.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon { + background-image: url("../img/volume_icon_dropbox.svg"); + background-image: url("../img/volume_icon_dropbox.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon { + background-image: url("../img/volume_icon_googledrive.svg"); + background-image: url("../img/volume_icon_googledrive.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon { + background-image: url("../img/volume_icon_onedrive.svg"); + background-image: url("../img/volume_icon_onedrive.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon { + background-image: url("../img/volume_icon_box.svg"); + background-image: url("../img/volume_icon_box.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon { + background-image: url("../img/volume_icon_zip.svg"); + background-image: url("../img/volume_icon_zip.png") \9; +} + +.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { + background-image: url("../img/volume_icon_network.svg"); + background-image: url("../img/volume_icon_network.png") \9; +} + +/* icon in active/hove/dropactive state */ +.ui-state-active .elfinder-navbar-icon, +.elfinder-droppable-active .elfinder-navbar-icon, +.ui-state-hover .elfinder-navbar-icon { + background-position: 0 -32px; +} + +/* ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar-subtree { + margin-left: 12px; +} + +.elfinder-rtl .elfinder-navbar-subtree { + margin-right: 12px; +} + +/* spinner */ +.elfinder-navbar-spinner { + width: 14px; + height: 14px; + position: absolute; + display: block; + top: 50%; + margin-top: -7px; + background: url("../img/spinner-mini.gif") center center no-repeat; +} + +/* spinner ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar-spinner { + left: 0; + margin-left: -2px; +} + +.elfinder-rtl .elfinder-navbar-spinner { + right: 0; + margin-right: -2px; +} + +/* marker */ +.elfinder-navbar .elfinder-perms, +.elfinder-navbar .elfinder-lock, +.elfinder-navbar .elfinder-symlink { + opacity: .6; + filter: Alpha(Opacity=60); +} + +/* permissions marker */ +.elfinder-navbar .elfinder-perms { + bottom: -1px; + margin-top: -8px; +} + +/* locked marker */ +.elfinder-navbar .elfinder-lock { + top: -2px; +} + +/* permissions/symlink markers ltr/rtl enviroment */ +.elfinder-ltr .elfinder-navbar .elfinder-perms { + left: 20px; + transform: scale(0.8); +} + +.elfinder-rtl .elfinder-navbar .elfinder-perms { + right: 20px; + transform: scale(0.8); +} + +.elfinder-ltr .elfinder-navbar .elfinder-lock { + left: 20px; + transform: scale(0.8); +} + +.elfinder-rtl .elfinder-navbar .elfinder-lock { + right: 20px; + transform: scale(0.8); +} + +.elfinder-ltr .elfinder-navbar .elfinder-symlink { + left: 8px; + transform: scale(0.8); +} + +.elfinder-rtl .elfinder-navbar .elfinder-symlink { + right: 8px; + transform: scale(0.8); +} + +/* navbar input */ +.elfinder-navbar input { + width: 100%; + border: 0px solid; + margin: 0; + padding: 0; +} + +/* resizable */ +.elfinder-navbar .ui-resizable-handle { + width: 12px; + background: transparent url('../img/resize.png') center center no-repeat; +} + +.elfinder-nav-handle-icon { + position: absolute; + top: 50%; + margin: -8px 2px 0 2px; + opacity: .5; + filter: Alpha(Opacity=50); +} + +/* pager button */ +.elfinder-navbar-pager { + width: 100%; + box-sizing: border-box; + padding-top: 3px; + padding-bottom: 3px; +} + +.elfinder-touch .elfinder-navbar-pager { + padding-top: 10px; + padding-bottom: 10px; +} + +.elfinder-places { + border: none; + margin: 0; + padding: 0; +} + +.elfinder-places.elfinder-droppable-active { + /*border:1px solid #8cafed;*/ +} + +/* navbar swipe handle */ +.elfinder-navbar-swipe-handle { + position: absolute; + top: 0px; + height: 100%; + width: 50px; + pointer-events: none; +} + +.elfinder-ltr .elfinder-navbar-swipe-handle { + left: 0px; + background: linear-gradient(to right, + rgba(221, 228, 235, 1) 0, + rgba(221, 228, 235, 0.8) 5px, + rgba(216, 223, 230, 0.3) 8px, + rgba(0, 0, 0, 0.1) 95%, + rgba(0, 0, 0, 0) 100%); +} + +.elfinder-rtl .elfinder-navbar-swipe-handle { + right: 0px; + background: linear-gradient(to left, + rgba(221, 228, 235, 1) 0, + rgba(221, 228, 235, 0.8) 5px, + rgba(216, 223, 230, 0.3) 8px, + rgba(0, 0, 0, 0.1) 95%, + rgba(0, 0, 0, 0) 100%); +} + +/* File: /css/places.css */ +/*********************************************/ +/* PLACES STYLES */ +/*********************************************/ +/* root extra icon */ +.elfinder-navbar-root .elfinder-places-root-icon { + position: absolute; + top: 50%; + margin-top: -9px; + cursor: pointer; +} + +.elfinder-ltr .elfinder-places-root-icon { + right: 10px; +} + +.elfinder-rtl .elfinder-places-root-icon { + left: 10px; +} + +.elfinder-navbar-expanded .elfinder-places-root-icon { + display: block; +} + +/* dragging helper base */ +.elfinder-place-drag { + font-size: 0.8em; +} + +/* File: /css/quicklook.css */ +/* quicklook window */ +.elfinder-quicklook { + position: absolute; + background: url("../img/quicklook-bg.png"); + overflow: hidden; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; + border-radius: 7px; + padding: 20px 0 40px 0; +} + +.elfinder-navdock .elfinder-quicklook { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + font-size: 90%; + overflow: auto; +} + +.elfinder-quicklook.elfinder-touch { + padding: 30px 0 40px 0; +} + +.elfinder-quicklook .ui-resizable-se { + width: 14px; + height: 14px; + right: 5px; + bottom: 3px; + background: url("../img/toolbar.png") 0 -496px no-repeat; +} + +.elfinder-quicklook.elfinder-touch .ui-resizable-se { + -moz-transform-origin: bottom right; + -moz-transform: scale(1.5); + zoom: 1.5; +} + +/* quicklook fullscreen window */ +.elfinder-quicklook.elfinder-quicklook-fullscreen { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: 0; + box-sizing: border-box; + width: 100%; + height: 100%; + object-fit: contain; + border-radius: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + -webkit-background-clip: padding-box; + padding: 0; + background: #000; + display: block; +} + +/* hide titlebar in fullscreen mode */ +.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar, +.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle { + display: none; +} + +/* hide preview border in fullscreen mode */ +.elfinder-quicklook-fullscreen .elfinder-quicklook-preview { + border: 0 solid; +} + +/*.elfinder-quicklook-fullscreen iframe { + height: 100%; +}*/ + +.elfinder-quicklook-cover { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; +} + +.elfinder-quicklook-cover.elfinder-quicklook-coverbg { + /* background need to catch mouse event over browser plugin (eg PDF preview) */ + background-color: #fff; + opacity: 0.000001; + filter: Alpha(Opacity=0.0001); +} + +/* quicklook titlebar */ +.elfinder-quicklook-titlebar { + text-align: center; + background: #777; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 20px; + -moz-border-radius-topleft: 7px; + -webkit-border-top-left-radius: 7px; + border-top-left-radius: 7px; + -moz-border-radius-topright: 7px; + -webkit-border-top-right-radius: 7px; + border-top-right-radius: 7px; + cursor: move; +} + +.elfinder-navdock .elfinder-quicklook-titlebar { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + cursor: default; +} + +.elfinder-touch .elfinder-quicklook-titlebar { + height: 30px; +} + +/* window title */ +.elfinder-quicklook-title { + color: #fff; + white-space: nowrap; + overflow: hidden; + padding: 2px 0; +} + +.elfinder-touch .elfinder-quicklook-title { + padding: 8px 0; +} + +/* icon "close" in titlebar */ +.elfinder-quicklook-titlebar-icon { + position: absolute; + left: 4px; + top: 50%; + margin-top: -9px; + height: 16px; +} +.elfinder-touch .elfinder-quicklook-titlebar-icon { + height: 22px; +} + +.elfinder-quicklook-titlebar-icon .ui-icon { + position: relative; + margin: -9px 3px 0px 0px; + cursor: pointer; + border-radius: 10px; + border: 1px solid; + opacity: .7; + filter: Alpha(Opacity=70); +} + +.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick { + padding-left: 1px; +} + +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon { + opacity: .6; + filter: Alpha(Opacity=60); +} + +.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { + margin-top: -5px; +} + +.elfinder-quicklook-titlebar-icon.elfinder-platformWin { + left: auto; + right: 4px; + direction: rtl; +} + +.elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon { + margin: -9px 0px 0px 3px; +} + +.elfinder-touch .elfinder-quicklook-titlebar .ui-icon { + -moz-transform-origin: center center; + -moz-transform: scale(1.2); + zoom: 1.2; +} + +.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { + margin-right: 10px; +} + +.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon { + margin-left: 10px; +} + +/* main part of quicklook window */ +.elfinder-quicklook-preview { + overflow: hidden; + position: relative; + border: 0 solid; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + height: 100%; +} + +.elfinder-navdock .elfinder-quicklook-preview { + border-left: 0; + border-right: 0; +} + +.elfinder-quicklook-preview.elfinder-overflow-auto { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +/* wrapper for file info/icon */ +.elfinder-quicklook-info-wrapper { + display: table; + position: absolute; + width: 100%; + height: 100%; + height: calc(100% - 80px); + left: 0; + top: 20px; +} + +.elfinder-navdock .elfinder-quicklook-info-wrapper { + height: calc(100% - 20px); +} + +/* file info */ +.elfinder-quicklook-info { + display: table-cell; + vertical-align: middle; +} + +.elfinder-ltr .elfinder-quicklook-info { + padding: 0 12px 0 112px; +} + +.elfinder-rtl .elfinder-quicklook-info { + padding: 0 112px 0 12px; +} + +.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info { + padding: 0 0 0 80px; +} + +.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info { + padding: 0 80px 0 0; +} + +/* file name in info */ +.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child { + color: #fff; + font-weight: bold; + padding-bottom: .5em; +} + +/* other data in info */ +.elfinder-quicklook-info-data { + padding-bottom: .2em; + color: #fff; +} + +/* file icon */ +.elfinder-quicklook .elfinder-cwd-icon { + position: absolute; + left: 32px; + top: 50%; + margin-top: -20px; +} + +.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { + left: 16px; +} + +.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon { + left: auto; + right: 32px; +} + +.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { + right: 6px; +} + +.elfinder-quicklook .elfinder-cwd-icon:before { + top: -10px; +} + +.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before { + left: -20px; +} + +.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before { + left: -14px; +} + +.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after { + left: -20px; +} + +.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after { + left: -12px; +} + +.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before { + left: auto; + right: 40px; +} + +.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after { + left: auto; + right: 46px; +} + +/* image in preview */ +.elfinder-quicklook-preview img { + display: block; + margin: 0 auto; +} + +/* navigation bar on quicklook window bottom */ +.elfinder-quicklook-navbar { + position: absolute; + left: 50%; + bottom: 4px; + width: 140px; + height: 32px; + padding: 0px; + margin-left: -70px; + border: 1px solid transparent; + border-radius: 19px; + -moz-border-radius: 19px; + -webkit-border-radius: 19px; +} + +/* navigation bar in fullscreen mode */ +.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { + width: 188px; + margin-left: -94px; + padding: 5px; + border: 1px solid #eee; + background: #000; + opacity: 0.4; + filter: Alpha(Opacity=40); +} + +/* show close icon in fullscreen mode */ +.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close, +.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator { + display: inline; +} + +/* icons in navbar */ +.elfinder-quicklook-navbar-icon { + width: 32px; + height: 32px; + margin: 0 7px; + float: left; + background: url("../img/quicklook-icons.png") 0 0 no-repeat; + +} + +/* fullscreen icon */ +.elfinder-quicklook-navbar-icon-fullscreen { + background-position: 0 -64px; +} + +/* exit fullscreen icon */ +.elfinder-quicklook-navbar-icon-fullscreen-off { + background-position: 0 -96px; +} + +/* prev file icon */ +.elfinder-quicklook-navbar-icon-prev { + background-position: 0 0; +} + +/* next file icon */ +.elfinder-quicklook-navbar-icon-next { + background-position: 0 -32px; +} + +/* close icon */ +.elfinder-quicklook-navbar-icon-close { + background-position: 0 -128px; + display: none; +} + +/* icons separator */ +.elfinder-quicklook-navbar-separator { + width: 1px; + height: 32px; + float: left; + border-left: 1px solid #fff; + display: none; +} + +/* text files preview wrapper */ +.elfinder-quicklook-preview-text-wrapper { + width: 100%; + height: 100%; + background: #fff; + color: #222; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +/* archive files preview wrapper */ +.elfinder-quicklook-preview-archive-wrapper { + width: 100%; + height: 100%; + background: #fff; + color: #222; + font-size: 1.5ex; + overflow: auto; + -webkit-overflow-scrolling: touch +} + +/* archive files preview header */ +.elfinder-quicklook-preview-archive-wrapper strong { + padding: 0 5px; +} + +/* text preview */ +pre.elfinder-quicklook-preview-text, +pre.elfinder-quicklook-preview-text.prettyprint { + width: auto; + height: auto; + margin: 0; + padding: 3px 9px; + border: none; + -o-tab-size: 4; + -moz-tab-size: 4; + tab-size: 4; +} + +.elfinder-quicklook-preview-charsleft hr { + border: none; + border-top: dashed 1px; +} + +.elfinder-quicklook-preview-charsleft span { + font-size: 90%; + font-style: italic; + cursor: pointer; +} + +/* html/pdf preview */ +.elfinder-quicklook-preview-html, +.elfinder-quicklook-preview-pdf, +.elfinder-quicklook-preview-iframe { + width: 100%; + height: 100%; + background: #fff; + margin: 0; + border: none; + display: block; +} + +/* swf preview container */ +.elfinder-quicklook-preview-flash { + width: 100%; + height: 100%; +} + +/* audio preview container */ +.elfinder-quicklook-preview-audio { + width: 100%; + position: absolute; + bottom: 0; + left: 0; +} + +/* audio preview using embed */ +embed.elfinder-quicklook-preview-audio { + height: 30px; + background: transparent; +} + +/* video preview container */ +.elfinder-quicklook-preview-video { + width: 100%; + height: 100%; +} + +/* allow user select */ +.elfinder .elfinder-quicklook .elfinder-quicklook-info *, +.elfinder .elfinder-quicklook .elfinder-quicklook-preview * { + -webkit-user-select: auto; + -moz-user-select: text; + -khtml-user-select: text; + user-select: text; +} + +/* File: /css/statusbar.css */ +/******************************************************************/ +/* STATUSBAR STYLES */ +/******************************************************************/ + +/* statusbar container */ +.elfinder-statusbar { + display: flex; + justify-content: space-between; + cursor: default; + text-align: center; + font-weight: normal; + padding: .2em .5em; + border-right: 0 solid transparent; + border-bottom: 0 solid transparent; + border-left: 0 solid transparent; +} + +.elfinder-statusbar:before, +.elfinder-statusbar:after { + display: none; +} + +.elfinder-statusbar span { + vertical-align: bottom; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} + +.elfinder-statusbar span.elfinder-path-other { + flex-shrink: 0; + text-overflow: clip; + -o-text-overflow: clip; +} + +.elfinder-statusbar span.ui-state-hover, +.elfinder-statusbar span.ui-state-active { + border: none; +} + +.elfinder-statusbar span.elfinder-path-cwd { + cursor: default; +} + +/* path in statusbar */ +.elfinder-path { + display: flex; + order: 1; + flex-grow: 1; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + max-width: 30%\9; +} + +.elfinder-ltr .elfinder-path { + text-align: left; + float: left\9; +} + +.elfinder-rtl .elfinder-path { + text-align: right; + float: right\9; +} + +/* path in workzone (case of swipe to navbar close) */ +.elfinder-workzone-path { + position: relative; +} + +.elfinder-workzone-path .elfinder-path { + position: relative; + font-size: .75em; + font-weight: normal; + float: none; + max-width: none; + overflow: hidden; + overflow-x: hidden; + text-overflow: initial; + -o-text-overflow: initial; +} + +.elfinder-mobile .elfinder-workzone-path .elfinder-path { + overflow: auto; + overflow-x: scroll; +} + +.elfinder-ltr .elfinder-workzone-path .elfinder-path { + margin-left: 24px; +} + +.elfinder-rtl .elfinder-workzone-path .elfinder-path { + margin-right: 24px; +} + +.elfinder-workzone-path .elfinder-path span { + display: inline-block; + padding: 5px 3px; +} + +.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd { + font-weight: bold; +} + +.elfinder-workzone-path .elfinder-path span.ui-state-hover, +.elfinder-workzone-path .elfinder-path span.ui-state-active { + border: none; +} + +.elfinder-workzone-path .elfinder-path-roots { + position: absolute; + top: 0; + width: 24px; + height: 20px; + padding: 2px; + border: none; + overflow: hidden; +} + +.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots { + left: 0; +} + +.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots { + right: 0; +} + +/* total/selected size in statusbar */ +.elfinder-stat-size { + order: 3; + flex-grow: 1; + overflow: hidden; + white-space: nowrap; +} + +.elfinder-ltr .elfinder-stat-size { + text-align: right; + float: right\9; +} + +.elfinder-rtl .elfinder-stat-size { + text-align: left; + float: left\9; +} + +/* info of current selected item */ +.elfinder-stat-selected { + order: 2; + margin: 0 .5em; + white-space: nowrap; + overflow: hidden; +} + +/* File: /css/toast.css */ +/* + * CSS for Toastr + * Copyright 2012-2015 + * Authors: John Papa, Hans Fjällemark, and Tim Ferrell. + * All Rights Reserved. + * Use, reproduction, distribution, and modification of this code is subject to the terms and + * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php + * + * ARIA Support: Greta Krafsig + * + * Project: https://github.com/CodeSeven/toastr + */ + +.elfinder .elfinder-toast { + position: absolute; + top: 12px; + right: 12px; + max-width: 90%; + cursor: default; +} + +.elfinder .elfinder-toast > div { + position: relative; + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 8px 16px 8px 50px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #FFFFFF; + opacity: 0.9; + filter: alpha(opacity=90); + background-color: #030303; + text-align: center; +} + +.elfinder .elfinder-toast > .toast-info { + background-color: #2F96B4; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} + +.elfinder .elfinder-toast > .toast-error { + background-color: #BD362F; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} + +.elfinder .elfinder-toast > .toast-success { + background-color: #51A351; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} + +.elfinder .elfinder-toast > .toast-warning { + background-color: #F89406; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} + +.elfinder .elfinder-toast > div button.ui-button { + background-image: none; + margin-top: 8px; + padding: .5em .8em; +} + +.elfinder .elfinder-toast > .toast-success button.ui-button { + background-color: green; + color: #FFF; +} + +.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover { + background-color: #add6ad; + color: #254b25; +} + +.elfinder .elfinder-toast > .toast-info button.ui-button { + background-color: #046580; + color: #FFF; +} + +.elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover { + background-color: #7DC6DB; + color: #046580; +} + +/* File: /css/toolbar.css */ +/*********************************************/ +/* TOOLBAR STYLES */ +/*********************************************/ +/* toolbar container */ +.elfinder-toolbar { + padding: 4px 0 3px 0; + border-left: 0 solid transparent; + border-top: 0 solid transparent; + border-right: 0 solid transparent; + max-height: 50%; + overflow-y: auto; +} + +/* container for button's group */ +.elfinder-buttonset { + margin: 1px 4px; + float: left; + background: transparent; + padding: 0; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +/*.elfinder-buttonset:first-child { margin:0; }*/ + +/* button */ +.elfinder .elfinder-button { + min-width: 16px; + height: 16px; + margin: 0; + padding: 4px; + float: left; + overflow: hidden; + position: relative; + border: 0 solid; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + line-height: 1; + cursor: default; +} + +.elfinder-touch .elfinder-button { + min-width: 20px; + height: 20px; +} + +.elfinder .ui-icon-search { + cursor: pointer; +} + +.elfinder-button:first-child { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.elfinder-button:last-child { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +/* separator between buttons, required for berder between button with ui color */ +.elfinder-toolbar-button-separator { + float: left; + padding: 0; + height: 24px; + border-top: 0 solid; + border-right: 0 solid; + border-bottom: 0 solid; + width: 0; +} + +.elfinder-touch .elfinder-toolbar-button-separator { + height: 28px; +} + +/* change icon opacity^ not button */ +.elfinder .elfinder-button.ui-state-disabled { + opacity: 1; + filter: Alpha(Opacity=100); +} + +.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon, +.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text { + opacity: .4; + filter: Alpha(Opacity=40); +} + +/* rtl enviroment */ +.elfinder-rtl .elfinder-buttonset { + float: right; +} + +/* icon inside button */ +.elfinder-button-icon { + width: 16px; + height: 16px; + /*display:block;*/ + display: inline-block; + background: url('../img/toolbar.png') no-repeat; +} + +.elfinder-button-text { + position: relative; + display: inline-block; + top: -4px; + margin: 0 2px; + font-size: 12px; +} + +.elfinder-touch .elfinder-button-icon { + -moz-transform-origin: top left; + -moz-transform: scale(1.25); + zoom: 1.25; +} + +.elfinder-touch .elfinder-button-text { + -moz-transform: translate(3px, 3px); + top: -5px; +} + +/* buttons icons */ +.elfinder-button-icon-home { + background-position: 0 0; +} + +.elfinder-button-icon-back { + background-position: 0 -112px; +} + +.elfinder-button-icon-forward { + background-position: 0 -128px; +} + +.elfinder-button-icon-up { + background-position: 0 -144px; +} + +.elfinder-button-icon-dir { + background-position: 0 -16px; +} + +.elfinder-button-icon-opendir { + background-position: 0 -32px; +} + +.elfinder-button-icon-reload { + background-position: 0 -160px; +} + +.elfinder-button-icon-open { + background-position: 0 -176px; +} + +.elfinder-button-icon-mkdir { + background-position: 0 -192px; +} + +.elfinder-button-icon-mkfile { + background-position: 0 -208px; +} + +.elfinder-button-icon-rm { + background-position: 0 -832px; +} + +.elfinder-button-icon-trash { + background-position: 0 -224px; +} + +.elfinder-button-icon-restore { + background-position: 0 -816px; +} + +.elfinder-button-icon-copy { + background-position: 0 -240px; +} + +.elfinder-button-icon-cut { + background-position: 0 -256px; +} + +.elfinder-button-icon-paste { + background-position: 0 -272px; +} + +.elfinder-button-icon-getfile { + background-position: 0 -288px; +} + +.elfinder-button-icon-duplicate { + background-position: 0 -304px; +} + +.elfinder-button-icon-rename { + background-position: 0 -320px; +} + +.elfinder-button-icon-edit { + background-position: 0 -336px; +} + +.elfinder-button-icon-quicklook { + background-position: 0 -352px; +} + +.elfinder-button-icon-upload { + background-position: 0 -368px; +} + +.elfinder-button-icon-download { + background-position: 0 -384px; +} + +.elfinder-button-icon-info { + background-position: 0 -400px; +} + +.elfinder-button-icon-extract { + background-position: 0 -416px; +} + +.elfinder-button-icon-archive { + background-position: 0 -432px; +} + +.elfinder-button-icon-view { + background-position: 0 -448px; +} + +.elfinder-button-icon-view-list { + background-position: 0 -464px; +} + +.elfinder-button-icon-help { + background-position: 0 -480px; +} + +.elfinder-button-icon-resize { + background-position: 0 -512px; +} + +.elfinder-button-icon-link { + background-position: 0 -528px; +} + +.elfinder-button-icon-search { + background-position: 0 -561px; +} + +.elfinder-button-icon-sort { + background-position: 0 -577px; +} + +.elfinder-button-icon-rotate-r { + background-position: 0 -625px; +} + +.elfinder-button-icon-rotate-l { + background-position: 0 -641px; +} + +.elfinder-button-icon-netmount { + background-position: 0 -688px; +} + +.elfinder-button-icon-netunmount { + background-position: 0 -96px; +} + +.elfinder-button-icon-places { + background-position: 0 -704px; +} + +.elfinder-button-icon-chmod { + background-position: 0 -48px; +} + +.elfinder-button-icon-accept { + background-position: 0 -736px; +} + +.elfinder-button-icon-opendir { + background-position: 0 -32px; +} + +.elfinder-button-icon-menu { + background-position: 0 -752px; +} + +.elfinder-button-icon-colwidth { + background-position: 0 -768px; +} + +.elfinder-button-icon-fullscreen { + background-position: 0 -784px; +} + +.elfinder-button-icon-unfullscreen { + background-position: 0 -800px; +} + +.elfinder-button-icon-empty { + background-position: 0 -848px; +} + +.elfinder-button-icon-undo { + background-position: 0 -864px; +} + +.elfinder-button-icon-redo { + background-position: 0 -880px; +} + +.elfinder-button-icon-preference { + background-position: 0 -896px; +} + +.elfinder-button-icon-mkdirin { + background-position: 0 -912px; +} + +.elfinder-button-icon-selectall { + background-position: 0 -928px; +} + +.elfinder-button-icon-selectnone { + background-position: 0 -944px; +} + +.elfinder-button-icon-selectinvert { + background-position: 0 -960px; +} + +.elfinder-button-icon-opennew { + background-position: 0 -976px; +} + +.elfinder-button-icon-hide { + background-position: 0 -992px; +} + +/* button with dropdown menu*/ +.elfinder .elfinder-menubutton { + overflow: visible; +} + +/* button with spinner icon */ +.elfinder-button-icon-spinner { + background: url("../img/spinner-mini.gif") center center no-repeat; +} + +/* menu */ +.elfinder-button-menu { + position: absolute; + margin-top: 24px; + padding: 3px 0; + overflow-y: auto; +} + +.elfinder-touch .elfinder-button-menu { + margin-top: 30px; +} + +/* menu item */ +.elfinder-button-menu-item { + white-space: nowrap; + cursor: default; + padding: 5px 19px; + position: relative; +} + +.elfinder-touch .elfinder-button-menu-item { + padding: 12px 19px +} + +/* fix hover ui class */ +.elfinder-button-menu .ui-state-hover { + border: 0 solid; +} + +.elfinder-button-menu-item-separated { + border-top: 1px solid #ccc; +} + +.elfinder-button-menu-item .ui-icon { + width: 16px; + height: 16px; + position: absolute; + left: 2px; + top: 50%; + margin-top: -8px; + display: none; +} + +.elfinder-button-menu-item-selected .ui-icon { + display: block; +} + +.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s { + display: none; +} + +.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n { + display: none; +} + +/* hack for upload button */ +.elfinder-button form { + position: absolute; + top: 0; + right: 0; + opacity: 0; + filter: Alpha(Opacity=0); + cursor: pointer; +} + +.elfinder .elfinder-button form input { + background: transparent; + cursor: default; +} + +/* search "button" */ +.elfinder .elfinder-button-search { + border: 0 solid; + background: transparent; + padding: 0; + margin: 1px 4px; + height: auto; + min-height: 26px; + float: right; + width: 70px; + overflow: visible; +} + +.elfinder .elfinder-button-search.ui-state-active { + width: 220px; +} + +/* search "pull down menu" */ +.elfinder .elfinder-button-search-menu { + font-size: 8pt; + text-align: center; + width: auto; + min-width: 180px; + position: absolute; + top: 30px; + padding-right: 5px; + padding-left: 5px; +} + +.elfinder-ltr .elfinder-button-search-menu { + right: 22px; + left: auto; +} + +.elfinder-rtl .elfinder-button-search-menu { + right: auto; + left: 22px; +} + +.elfinder-touch .elfinder-button-search-menu { + top: 34px; +} + +.elfinder .elfinder-button-search-menu div { + margin-left: auto; + margin-right: auto; + margin-top: 5px; + margin-bottom: 5px; + display: table; +} + +.elfinder .elfinder-button-search-menu div .ui-state-hover { + border: 1px solid; +} + +/* ltr/rte enviroment */ +.elfinder-ltr .elfinder-button-search { + float: right; + margin-right: 10px; +} + +.elfinder-rtl .elfinder-button-search { + float: left; + margin-left: 10px; +} + +/* search text field */ +.elfinder-button-search input[type=text] { + box-sizing: border-box; + width: 100%; + height: 26px; + padding: 0 20px; + line-height: 22px; + border: 0 solid; + border: 1px solid #aaa; + -moz-border-radius: 12px; + -webkit-border-radius: 12px; + border-radius: 12px; + outline: 0px solid; +} + +.elfinder-button-search input::-ms-clear { + display: none; +} + +.elfinder-touch .elfinder-button-search input { + height: 30px; + line-height: 28px; +} + +.elfinder-rtl .elfinder-button-search input { + direction: rtl; +} + +/* icons */ +.elfinder-button-search .ui-icon { + position: absolute; + height: 18px; + top: 50%; + margin: -8px 4px 0 4px; + opacity: .6; + filter: Alpha(Opacity=60); +} + +.elfinder-button-search-menu .ui-checkboxradio-icon { + display: none; +} + +/* search/close icons */ +.elfinder-ltr .elfinder-button-search .ui-icon-search { + left: 0; +} + +.elfinder-rtl .elfinder-button-search .ui-icon-search { + right: 0; +} + +.elfinder-ltr .elfinder-button-search .ui-icon-close { + right: 0; +} + +.elfinder-rtl .elfinder-button-search .ui-icon-close { + left: 0; +} + +/* toolbar swipe handle */ +.elfinder-toolbar-swipe-handle { + position: absolute; + top: 0px; + left: 0px; + height: 50px; + width: 100%; + pointer-events: none; + background: linear-gradient(to bottom, + rgba(221, 228, 235, 1) 0, + rgba(221, 228, 235, 0.8) 2px, + rgba(216, 223, 230, 0.3) 5px, + rgba(0, 0, 0, 0.1) 95%, + rgba(0, 0, 0, 0) 100%); +} + diff --git a/apps/static/plugins/elfindler/css/elfinder.min.css b/apps/static/plugins/elfindler/css/elfinder.min.css new file mode 100755 index 000000000..826636946 --- /dev/null +++ b/apps/static/plugins/elfindler/css/elfinder.min.css @@ -0,0 +1,9 @@ +/*! + * elFinder - file manager for web + * Version 2.1.42 (2018-08-29) + * http://elfinder.org + * + * Copyright 2009-2018, Studio 42 + * Licensed under a 3-clauses BSD license + */ +.elfinder-dialog-resize{margin-top:.3em}.elfinder-resize-type{float:left;margin-bottom:.4em}.elfinder-resize-control{float:left}.elfinder-resize-control input[type=number]{border:1px solid #aaa;text-align:right;width:4.5em}.elfinder-resize-control input.elfinder-resize-bg{text-align:center;width:5em;direction:ltr}.elfinder-dialog-resize .elfinder-resize-control-panel{margin-top:10px}.elfinder-dialog-resize .elfinder-resize-imgrotate,.elfinder-dialog-resize .elfinder-resize-pallet{cursor:pointer}.elfinder-dialog-resize .elfinder-resize-picking{cursor:crosshair}.elfinder-dialog-resize .elfinder-resize-grid8+button{padding-top:2px;padding-bottom:2px}.elfinder-resize-preview{width:400px;height:400px;padding:10px;background:#fff;border:1px solid #aaa;float:right;position:relative;overflow:hidden;text-align:left;direction:ltr}.elfinder-resize-handle,div.elfinder-cwd-wrapper-list tr.ui-state-default td{position:relative}.elfinder-resize-handle-hline,.elfinder-resize-handle-vline{position:absolute;background-image:url(../img/crop.gif)}.elfinder-resize-handle-hline{width:100%;height:1px!important;background-repeat:repeat-x}.elfinder-resize-handle-vline{width:1px!important;height:100%;background-repeat:repeat-y}.elfinder-resize-handle-hline-top{top:0;left:0}.elfinder-resize-handle-hline-bottom{bottom:0;left:0}.elfinder-resize-handle-vline-left{top:0;left:0}.elfinder-resize-handle-vline-right{top:0;right:0}.elfinder-resize-handle-point{position:absolute;width:8px;height:8px;border:1px solid #777;background:0 0}.elfinder-resize-handle-point-n{top:0;left:50%;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-e,.elfinder-resize-handle-point-ne{top:0;right:0;margin-top:-5px;margin-right:-5px}.elfinder-resize-handle-point-e{top:50%}.elfinder-resize-handle-point-se{bottom:0;right:0;margin-bottom:-5px;margin-right:-5px}.elfinder-resize-handle-point-s,.elfinder-resize-handle-point-sw{bottom:0;left:50%;margin-bottom:-5px;margin-left:-5px}.elfinder-resize-handle-point-sw{left:0}.elfinder-resize-handle-point-nw,.elfinder-resize-handle-point-w{top:50%;left:0;margin-top:-5px;margin-left:-5px}.elfinder-resize-handle-point-nw{top:0}.elfinder-resize-spinner{position:absolute;width:200px;height:30px;top:50%;margin-top:-25px;left:50%;margin-left:-100px;text-align:center;background:url(../img/progress.gif) center bottom repeat-x}.elfinder-resize-row{margin-bottom:9px;position:relative}.elfinder-resize-label{float:left;width:80px;padding-top:3px}.elfinder-resize-checkbox-label{border:1px solid transparent}.elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls{margin:-20px 5px 0}.elfinder-ltr .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls{float:right}.elfinder-help-team div,.elfinder-info-tb span,.elfinder-rtl .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls{float:left}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e,.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w{height:100%;width:10px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n,.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e{margin-right:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w{margin-left:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s{margin-bottom:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n{margin-top:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne,.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw,.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se,.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw{width:10px;height:10px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se{background:0 0;bottom:0;right:0;margin-right:-7px;margin-bottom:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw{margin-left:-7px;margin-bottom:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne{margin-right:-7px;margin-top:-7px}.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw{margin-left:-7px;margin-top:-7px}.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-n,.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-s{height:20px}.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-e,.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-w{width:20px}.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne,.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw,.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-se,.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw{width:30px;height:30px}.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se{width:30px;height:30px;margin:0}.elfinder-dialog-resize .ui-icon-grip-solid-vertical{position:absolute;top:50%;right:0;margin-top:-8px;margin-right:-11px}.elfinder-dialog-resize .ui-icon-grip-solid-horizontal{position:absolute;left:50%;bottom:0;margin-left:-8px;margin-bottom:-11px}.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset{float:right}.elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-dialog-resize input.elfinder-resize-quality,.elfinder-mobile .elfinder-resize-control input[type=number]{width:3.5em}.elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input,.elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality{width:2.5em}.elfinder-dialog-resize .elfinder-resize-degree button.ui-button{padding:6px 8px}.elfinder-dialog-resize button.ui-button span{padding:0}.elfinder-dialog-resize .elfinder-resize-jpgsize{font-size:90%}.ui-widget-content .elfinder-dialog-resize .elfinder-resize-rotate-slider{width:195px;margin:10px 7px;background-color:#fafafa}.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon{display:none}.elfinder-resize-preset-container{box-sizing:border-box;border-radius:5px}.elfinder-file-edit{width:100%;height:99%;margin:0;padding:2px;border:1px solid #ccc;box-sizing:border-box;resize:none}.elfinder-touch .elfinder-file-edit{font-size:16px}.ui-dialog .ui-dialog-content.elfinder-edit-editor{background-color:#fff}.ui-dialog .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor{width:100%;height:300px;max-height:100%;text-align:center}.ui-dialog .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main{top:0}.elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header{display:none}.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit{padding-bottom:20em;margin-bottom:-20em}.std42-dialog .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding,.std42-dialog .ui-dialog-titlebar select{font-size:12px}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras{margin:0 1em 0 .2em;float:left}.ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality{padding-top:6px}.elfinder-edit-onlineconvert-bottom-btn button,.elfinder-edit-onlineconvert-button button,.elfinder-preference dt label,.ui-dialog-buttonpane .ui-icon{cursor:pointer}.elfinder-edit-onlineconvert-button{display:inline-block;width:180px;min-height:30px;vertical-align:top}.elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline{-webkit-appearance:none;border-radius:16px;color:#000;text-align:center;padding:8px;background-color:#eee;background-image:-webkit-linear-gradient(top,#fafafa 0%,#c4c4c4 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#c4c4c4 100%)}.elfinder-edit-onlineconvert-button .elfinder-button-icon{margin:0 10px;vertical-align:middle;cursor:pointer}.elfinder-edit-onlineconvert-bottom-btn{text-align:center;margin:10px 0 0}.elfinder-edit-onlineconvert-link{margin-top:1em;text-align:center}.elfinder-edit-onlineconvert-link .elfinder-button-icon{background-image:url(../img/editor-icons.png);background-repeat:no-repeat;background-position:0 -144px;margin-bottom:-3px}.elfinder-edit-onlineconvert-link a,ul.elfinder-help-integrations a{text-decoration:none}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{position:absolute;top:4px;left:0;right:0;margin:auto 0 auto auto}.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{top:7px}.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{margin:auto auto auto 0}.elfinder-help{margin-bottom:.5em;-webkit-overflow-scrolling:touch}.elfinder-help .ui-tabs-panel{overflow:auto;padding:10px}.elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.2em .8em;display:inline-block}.elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.5em}.elfinder-dialog .ui-tabs-selected a{background:inherit}.elfinder-help-shortcuts{height:auto;padding:10px;margin:0;box-sizing:border-box}.elfinder-help-shortcut{white-space:nowrap;clear:both}.elfinder-help-shortcut-pattern{float:left;width:160px}.elfinder-help-logo{width:100px;height:96px;float:left;margin-right:1em;background:url(../img/logo.png) center center no-repeat}.elfinder-help h3{font-size:1.5em;margin:.2em 0 .3em}.elfinder-help-separator{clear:both;padding:.5em}.elfinder-help-link{display:inline-block;margin-right:12px;padding:2px 0;white-space:nowrap}.elfinder-rtl .elfinder-help-link{margin-right:0;margin-left:12px}.elfinder-help .ui-priority-secondary{font-size:.9em}.elfinder-help .ui-priority-primary{margin-bottom:7px}.elfinder-help-team{clear:both;text-align:right;border-bottom:1px solid #ccc;margin:.5em 0;font-size:.9em}.elfinder-help-license{font-size:.9em}.elfinder-help-disabled{font-weight:700;text-align:center;margin:90px 0}.elfinder-help .elfinder-dont-panic{display:block;border:1px solid transparent;width:200px;height:200px;margin:30px auto;text-decoration:none;text-align:center;position:relative;background:#d90004;-moz-box-shadow:5px 5px 9px #111;-webkit-box-shadow:5px 5px 9px #111;box-shadow:5px 5px 9px #111;background:-moz-radial-gradient(80px 80px,circle farthest-corner,#d90004 35%,#960004 100%);background:-webkit-gradient(radial,80 80,60,80 80,120,from(#d90004),to(#960004));-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;outline:none}.elfinder-help .elfinder-dont-panic span{font-size:3em;font-weight:700;text-align:center;color:#fff;position:absolute;left:0;top:45px}ul.elfinder-help-integrations ul{padding:0;margin:0 1em 1em}ul.elfinder-help-integrations a:hover{text-decoration:underline}.elfinder-help-debug{height:100%;padding:0;margin:0;overflow:none;border:none}.elfinder-help-debug .ui-tabs-panel{padding:0;margin:0;overflow:auto}.elfinder-help-debug fieldset{margin-bottom:10px;border-color:#789;border-radius:10px}.elfinder-help-debug legend{font-size:1.2em;font-weight:700;color:#2e8b57}.elfinder-help-debug dl{margin:0}.elfinder-help-debug dt{color:#789}.elfinder-help-debug dt:before{content:"["}.elfinder-help-debug dt:after{content:"]"}.elfinder-help-debug dd{margin-left:1em}.elfinder-preference .ui-tabs-panel{padding:10px 10px 0;overflow:auto;box-sizing:border-box;-webkit-overflow-scrolling:touch}.elfinder-preference a.ui-state-hover,.elfinder-preference label.ui-state-hover{border:none}.elfinder-preference dl{width:100%;display:inline-block;margin:.5em 0}.elfinder-preference dt{display:block;width:200px;clear:left;float:left;max-width:50%}.elfinder-rtl .elfinder-preference dt{clear:right;float:right}.elfinder-preference dd{margin-bottom:1em}.elfinder-preference dd input[type=checkbox],.elfinder-preference dd label{white-space:nowrap;display:inline-block;cursor:pointer}.elfinder-preference dt.elfinder-preference-checkboxes{width:100%;max-width:none}.elfinder-preference dd.elfinder-preference-checkboxes{padding-top:3ex}.elfinder-preference select{max-width:100%}.elfinder-preference dd.elfinder-preference-iconSize .ui-slider{width:50%;max-width:100px;display:inline-block;margin:0 10px}.elfinder-preference button{margin:0 16px}.elfinder-preference button+button{margin:0 -10px}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before{right:33px;left:auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{position:absolute;bottom:2px;width:16px;height:16px;padding:10px;border:none;overflow:hidden;cursor:pointer}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon,.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{left:2px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon,.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{right:2px}.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before{left:38px}.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before{right:86px;left:auto}.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:none}.elfinder-rename-batch div{margin:5px 8px}.elfinder-rename-batch .elfinder-rename-batch-name input{width:100%;font-size:1.6em}.elfinder-rename-batch-type{text-align:center}.elfinder-rename-batch .elfinder-rename-batch-type label{margin:2px;font-size:.9em}.elfinder-rename-batch-preview{padding:0 8px;font-size:1.1em;min-height:4ex}.ui-front{z-index:100}.elfinder{padding:0;position:relative;display:block;visibility:visible;font-size:18px;font-family:Verdana,Arial,Helvetica,sans-serif}.elfinder-ios input,.elfinder-ios select,.elfinder-ios textarea{font-size:16px!important}.elfinder.elfinder-fullscreen>.ui-resizable-handle{display:none}.elfinder-font-mono{line-height:2ex}.elfinder.elfinder-processing *{cursor:progress!important}.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after{position:absolute;top:0;width:100%;height:3px;content:'';left:0;background-image:url(../img/progress.gif);opacity:.6;pointer-events:none}.elfinder :not(input):not(textarea):not(select):not([contenteditable=true]),.elfinder-contextmenu :not(input):not(textarea):not(select):not([contenteditable=true]){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none}.elfinder .overflow-scrolling-touch{-webkit-overflow-scrolling:touch}.elfinder-rtl{text-align:right;direction:rtl}.elfinder-workzone{padding:0;position:relative;overflow:hidden}.elfinder-lock,.elfinder-perms,.elfinder-symlink{position:absolute;width:16px;height:16px;background-image:url(../img/toolbar.png);background-repeat:no-repeat}.elfinder-perms,.elfinder-symlink{background-position:0 -528px}.elfinder-na .elfinder-perms{background-position:0 -96px}.elfinder-ro .elfinder-perms{background-position:0 -64px}.elfinder-wo .elfinder-perms{background-position:0 -80px}.elfinder-group .elfinder-perms{background-position:0 0}.elfinder-lock{background-position:0 -656px}.elfinder-drag-helper{top:0;left:0;width:70px;height:60px;padding:0 0 0 25px;z-index:100000;will-change:left,top}.elfinder-drag-helper.html5-native{position:absolute;top:-1000px;left:-1000px}.elfinder-drag-helper-icon-status{position:absolute;width:16px;height:16px;left:42px;top:60px;background:url(../img/toolbar.png) 0 -96px no-repeat;display:block}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{background-position:0 -720px}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{background-position:0 -544px}.elfinder-drag-num{display:inline-box;position:absolute;top:0;left:0;width:auto;height:14px;text-align:center;padding:1px 3px;font-weight:700;color:#fff;background-color:red;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-drag-helper .elfinder-cwd-icon{margin:0 0 0 -24px;float:left}.elfinder-overlay{position:absolute;opacity:.2;filter:Alpha(Opacity=20)}.elfinder .elfinder-panel{position:relative;background-image:none;padding:7px 12px}[draggable=true]{-khtml-user-drag:element}.elfinder [contentEditable=true]:empty:not(:focus):before{content:attr(data-ph)}.elfinder div.elfinder-bottomtray{position:fixed;bottom:0;max-width:100%;opacity:.8}.elfinder.elfinder-ltr div.elfinder-bottomtray{left:0}.elfinder.elfinder-rtl div.elfinder-bottomtray{right:0}.elfinder .elfinder-ui-tooltip,.elfinder-ui-tooltip{font-size:14px;padding:2px 4px}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{position:absolute;border:1px solid #aaa;background:#fff;color:#555;padding:4px 0;top:0;left:0}.elfinder .elfinder-contextmenu-sub{top:5px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub{margin-left:-5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub{margin-right:-5px}.elfinder .elfinder-contextmenu-header{margin-top:-4px;padding:0 .5em .2ex;border:none;text-align:center}.elfinder .elfinder-contextmenu-header span{font-size:.8em;font-weight:bolder}.elfinder .elfinder-contextmenu-item{position:relative;display:block;padding:4px 30px;text-decoration:none;white-space:nowrap;cursor:default}.elfinder .elfinder-contextmenu-item.ui-state-active{border:none}.elfinder .elfinder-contextmenu-item .ui-icon{width:16px;height:16px;position:absolute;left:auto;right:auto;top:50%;margin-top:-8px}.elfinder-touch .elfinder-contextmenu-item{padding:12px 38px}.elfinder-navbar-root-local.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_local.svg);background-size:contain}.elfinder-navbar-root-trash.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_trash.svg);background-size:contain}.elfinder-navbar-root-ftp.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_ftp.svg);background-size:contain}.elfinder-navbar-root-sql.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_sql.svg);background-size:contain}.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_dropbox.svg);background-size:contain}.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_googledrive.svg);background-size:contain}.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_onedrive.svg);background-size:contain}.elfinder-navbar-root-box.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_box.svg);background-size:contain}.elfinder-navbar-root-zip.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_zip.svg);background-size:contain}.elfinder-navbar-root-network.elfinder-contextmenu-icon{background-image:url(../img/volume_icon_network.svg);background-size:contain}.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span{display:block}.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item{padding-left:12px;padding-right:12px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item{text-align:left}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item{text-align:right}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:28px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:28px}.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-left:36px}.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon{padding-right:36px}.elfinder .elfinder-contextmenu-arrow,.elfinder .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-icon{position:absolute;top:50%;margin-top:-8px;overflow:hidden}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon{left:8px}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon,.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon{right:8px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon{left:8px}.elfinder .elfinder-contextmenu-arrow{width:16px;height:16px;background:url(../img/arrows-normal.png) 5px 4px no-repeat}.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow{right:5px}.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow{left:5px;background-position:0 -10px}.elfinder .elfinder-contextmenu-extra-icon a,.elfinder .elfinder-contextmenu-extra-icon span{display:inline-block;width:100%;height:100%;padding:20px;margin:0;color:transparent!important;text-decoration:none;cursor:pointer}.elfinder .elfinder-contextmenu .ui-state-hover{border:0 solid;background-image:none}.elfinder .elfinder-contextmenu-separator{height:0;border-top:1px solid #ccc;margin:0 1px}.elfinder .elfinder-button-icon.ui-state-disabled{background-image:url(../img/toolbar.png)!important}.elfinder-cwd-wrapper{overflow:auto;position:relative;padding:2px;margin:0}.elfinder-cwd-wrapper-list{padding:0}.elfinder-cwd{position:absolute;top:0;cursor:default;padding:0;margin:0;-ms-touch-action:auto;touch-action:auto;min-width:100%}.elfinder-ltr .elfinder-cwd{left:0}.elfinder-rtl .elfinder-cwd{right:0}.elfinder-cwd.elfinder-table-header-sticky{position:-webkit-sticky;position:-ms-sticky;position:sticky;top:0;left:auto;right:auto;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;height:0;overflow:visible}.elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid;padding-top:0}.elfinder-cwd.elfinder-table-header-sticky td{display:inline-block}.elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table{border-top:2px solid transparent}.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader,.elfinder-cwd-fixheader .elfinder-cwd{position:relative}.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-wrapper-empty .elfinder-cwd:after{display:block;position:absolute;top:40%;left:0;right:0;margin-top:-2em;line-height:1.5em;text-align:center;white-space:pre-wrap;opacity:.6;filter:Alpha(Opacity=60);font-weight:700}.elfinder-cwd-file .elfinder-cwd-select{position:absolute;top:0;left:0;background-color:transparent;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select{width:30px;height:30px}.elfinder .elfinder-cwd-selectall,.elfinder-cwd-file.ui-selected .elfinder-cwd-select{opacity:.8;filter:Alpha(Opacity=80)}.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select{left:auto;right:0}.elfinder .elfinder-cwd-selectall{position:absolute;width:30px;height:30px;top:0}.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall{display:none}.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall{text-align:right;right:18px;left:auto}.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall{text-align:left;right:auto;left:18px}.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{right:0}.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall{left:0}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover{background-color:transparent}.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:90px;padding-bottom:2px;cursor:default;border:none;position:relative}.elfinder .std42-dialog .ui-dialog-content label,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active{border:none}.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file{float:left;margin:0 3px 2px 0}.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file{float:right;margin:0 0 5px 3px}.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover{border:0 solid}.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:52px;height:52px;margin:1px auto;padding:2px;position:relative}.elfinder-cwd-size1 .elfinder-cwd-icon:before,.elfinder-cwd-size2 .elfinder-cwd-icon:before,.elfinder-cwd-size3 .elfinder-cwd-icon:before{top:3px;display:block}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:112px}.elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:74px;height:74px}.elfinder-cwd-size1 .elfinder-cwd-icon,.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform-origin:top center;-ms-transform:scale(1.5);-webkit-transform-origin:top center;-webkit-transform:scale(1.5);transform-origin:top center;transform:scale(1.5)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.35) translate(-4px,15%);-webkit-transform-origin:top left;-webkit-transform:scale(1.35) translate(-4px,15%);transform-origin:top left;transform:scale(1.35) translate(-4px,15%)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1) translate(10px,-5px);-webkit-transform:scale(1) translate(10px,-5px);transform:scale(1) translate(10px,-5px)}.elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:72px;height:72px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file{width:140px;height:134px}.elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:98px;height:98px}.elfinder-cwd-size2 .elfinder-cwd-icon,.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2);-webkit-transform:scale(2);transform:scale(2)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(1.8) translate(-5px,18%);-webkit-transform-origin:top left;-webkit-transform:scale(1.8) translate(-5px,18%);transform-origin:top left;transform:scale(1.8) translate(-5px,18%)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.1) translate(0,10px);-webkit-transform:scale(1.1) translate(0,10px);transform:scale(1.1) translate(0,10px)}.elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:96px;height:96px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file{width:174px;height:158px}.elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:122px;height:122px}.elfinder-cwd-size3 .elfinder-cwd-icon{-ms-transform:scale(2.5);-webkit-transform:scale(2.5);transform:scale(2.5)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before{-ms-transform-origin:top left;-ms-transform:scale(2.25) translate(-6px,20%);-webkit-transform-origin:top left;-webkit-transform:scale(2.25) translate(-6px,20%);transform-origin:top left;transform:scale(2.25) translate(-6px,20%)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after{-ms-transform:scale(1.2) translate(-9px,22px);-webkit-transform:scale(1.2) translate(-9px,22px);transform:scale(1.2) translate(-9px,22px)}.elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl{-ms-transform-origin:center center;-ms-transform:scale(1);-webkit-transform-origin:center center;-webkit-transform:scale(1);transform-origin:center center;transform:scale(1);width:120px;height:120px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}.elfinder-cwd-view-icons .elfinder-cwd-filename{text-align:center;max-height:2.4em;line-height:1.2em;white-space:pre-line;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;margin:3px 1px 0;padding:1px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;word-break:break-word;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.elfinder-cwd-view-icons .elfinder-perms{bottom:4px;right:2px}.elfinder-cwd-view-icons .elfinder-lock{top:-3px;right:-2px}.elfinder-cwd-view-icons .elfinder-symlink{bottom:6px;left:0}.elfinder-cwd-icon{display:block;width:48px;height:48px;margin:0 auto;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-position:0 0;background-repeat:no-repeat;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9;background-size:contain}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-position:0 0}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9;background-size:contain}.elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.svg) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9;background-position:0 0;background-size:contain}.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon{background-position:1px -1px}.elfinder-cwd-icon:before{content:none;position:absolute;left:0;top:5px;min-width:20px;max-width:84px;text-align:center;padding:0 4px 1px;border-radius:4px;font-family:Verdana;font-size:10px;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9)}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:-10px}.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before{content:'ts'}.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before{content:'dash'}.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before{content:'hls'}.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before{content:'c++'}.elfinder-cwd-icon.elfinder-cwd-bgurl{background-position:center center;background-repeat:no-repeat}.elfinder-cwd-icon.elfinder-cwd-bgurl,.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself{-moz-background-size:cover;background-size:cover}.elfinder-cwd-icon.elfinder-cwd-bgurl:after{content:' '}.elfinder-cwd-bgurl:after{position:relative;display:inline-block;top:36px;left:-38px;width:48px;height:48px;background-image:url(../img/icons-big.svg);background-image:url(../img/icons-big.png) \9;background-repeat:no-repeat;background-size:auto!important;opacity:.8;filter:Alpha(Opacity=60);-webkit-transform-origin:54px -24px;-webkit-transform:scale(.6);-moz-transform-origin:54px -24px;-moz-transform:scale(.6);-ms-transform-origin:54px -24px;-ms-transform:scale(.6);-o-transform-origin:54px -24px;-o-transform:scale(.6);transform-origin:54px -24px;transform:scale(.6)}.elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after,.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,.elfinder-cwd-icon.elfinder-cwd-icon-drag:before{content:none}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd .elfinder-droppable-active{outline:2px solid #8cafed;outline-offset:-2px}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application,.elfinder-cwd-icon-application:after{background-position:0 -150px}.elfinder-cwd-icon-text,.elfinder-cwd-icon-text:after{background-position:0 -1350px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-plain:after,.elfinder-cwd-icon-x-empty,.elfinder-cwd-icon-x-empty:after{background-position:0 -200px}.elfinder-cwd-icon-image,.elfinder-cwd-icon-image:after,.elfinder-cwd-icon-vnd-adobe-photoshop,.elfinder-cwd-icon-vnd-adobe-photoshop:after{background-position:0 -250px}.elfinder-cwd-icon-postscript,.elfinder-cwd-icon-postscript:after{background-position:0 -1550px}.elfinder-cwd-icon-audio,.elfinder-cwd-icon-audio:after{background-position:0 -300px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-video:after,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -350px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtf:after,.elfinder-cwd-icon-rtfd,.elfinder-cwd-icon-rtfd:after{background-position:0 -400px}.elfinder-cwd-icon-pdf,.elfinder-cwd-icon-pdf:after{background-position:0 -450px}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-ms-excel:after,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-excel:after,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after{background-position:0 -1450px}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-powerpoint:after,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after{background-position:0 -1400px}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-msword:after,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,.elfinder-cwd-icon-vnd-ms-word:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after{background-position:0 -1500px}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-ms-office:after,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,.elfinder-cwd-icon-vnd-oasis-opendocument-text:after,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openofficeorg-extension:after{background-position:0 -500px}.elfinder-cwd-icon-html,.elfinder-cwd-icon-html:after{background-position:0 -550px}.elfinder-cwd-icon-css,.elfinder-cwd-icon-css:after{background-position:0 -600px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-javascript:after,.elfinder-cwd-icon-x-javascript,.elfinder-cwd-icon-x-javascript:after{background-position:0 -650px}.elfinder-cwd-icon-x-perl,.elfinder-cwd-icon-x-perl:after{background-position:0 -700px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -750px}.elfinder-cwd-icon-x-ruby,.elfinder-cwd-icon-x-ruby:after{background-position:0 -800px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-sh:after,.elfinder-cwd-icon-x-shellscript,.elfinder-cwd-icon-x-shellscript:after{background-position:0 -850px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--:after,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--hdr:after,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-c--src:after,.elfinder-cwd-icon-x-c:after,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-chdr:after,.elfinder-cwd-icon-x-csrc,.elfinder-cwd-icon-x-csrc:after,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source,.elfinder-cwd-icon-x-java-source:after,.elfinder-cwd-icon-x-java:after{background-position:0 -900px}.elfinder-cwd-icon-x-php,.elfinder-cwd-icon-x-php:after{background-position:0 -950px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1000px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-7z-compressed:after,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-xz:after,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-x-zip:after,.elfinder-cwd-icon-zip,.elfinder-cwd-icon-zip:after{background-position:0 -1050px}.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-gzip:after,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-tar:after{background-position:0 -1100px}.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-bzip2:after,.elfinder-cwd-icon-x-bzip:after{background-position:0 -1150px}.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-rar-compressed:after,.elfinder-cwd-icon-x-rar:after{background-position:0 -1200px}.elfinder-cwd-icon-x-shockwave-flash,.elfinder-cwd-icon-x-shockwave-flash:after{background-position:0 -1250px}.elfinder-cwd-icon-group{background-position:0 -1300px}.elfinder-cwd-filename input{width:100%;border:none;margin:0;padding:0}.elfinder-cwd-view-icons,.elfinder-cwd-view-icons input{text-align:center}.elfinder-cwd-view-icons textarea{width:100%;border:0 solid;margin:0;padding:0;text-align:center;overflow:hidden;resize:none}.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after,.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select{display:none}.elfinder-cwd table{width:100%;border-collapse:separate;border:0 solid;margin:0 0 10px;border-spacing:0;box-sizing:padding-box;padding:2px;position:relative}.elfinder .elfinder-cwd table td div,.elfinder-cwd table td{box-sizing:content-box}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader{position:absolute;overflow:hidden}.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{content:'';position:absolute;width:100%;top:0;height:3px;background-color:#fff}.elfinder-droppable-active+.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before{background-color:#8cafed}.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table{table-layout:fixed}.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall{text-align:left;right:auto;left:0;padding-top:3px}.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall{text-align:right;right:0;left:auto;padding-top:3px}.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall{padding-top:4px}.elfinder .elfinder-cwd table thead tr{border-left:0 solid;border-top:0 solid;border-right:0 solid}.elfinder .elfinder-cwd table thead td{padding:4px 14px}.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 14px 4px 22px}.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding:4px 22px 4px 14px}.elfinder-touch .elfinder-cwd table thead td,.elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child{padding-top:8px;padding-bottom:8px}.elfinder .elfinder-cwd table thead td.ui-state-active{background:#ebf1f6;background:-moz-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebf1f6),color-stop(50%,#abd3ee),color-stop(51%,#89c3eb),color-stop(100%,#d5ebfb));background:-webkit-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-o-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:-ms-linear-gradient(top,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);background:linear-gradient(to bottom,#ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0)}.elfinder .elfinder-cwd table td{padding:4px 12px;white-space:pre;overflow:hidden;text-align:right;cursor:default;border:0 solid}.elfinder .elfinder-cwd table tbody td:first-child{position:relative}tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:3px}.elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select{width:40px}.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select{padding-top:10px}.elfinder-touch .elfinder-cwd tr td{padding:10px 12px}.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td{padding:13px 12px}.elfinder-ltr .elfinder-cwd table td{text-align:right}.elfinder-ltr .elfinder-cwd table td:first-child{text-align:left}.elfinder-rtl .elfinder-cwd table td{text-align:left}.elfinder-info-tb tr td:first-child,.elfinder-rtl .elfinder-cwd table td:first-child{text-align:right}.elfinder-odd-row{background:#eee}.elfinder-cwd-view-list .elfinder-cwd-file-wrapper{width:97%;position:relative}.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-left:8px}.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper{margin-right:8px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename{padding-left:23px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename{padding-right:23px}.elfinder-cwd-view-list .elfinder-lock,.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{margin-top:-6px;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms{left:8px;bottom:-4px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock{left:10px;top:0}.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink{left:-7px;bottom:-4px}.elfinder-cwd-view-list td .elfinder-cwd-icon{width:16px;height:16px;position:absolute;top:50%;margin-top:-8px;background-image:url(../img/icons-small.png)}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon{left:0}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon{right:0}.elfinder-cwd-view-list .elfinder-cwd-icon:after,.elfinder-cwd-view-list .elfinder-cwd-icon:before{content:none}.elfinder-cwd-view-list thead td .ui-resizable-handle{height:100%;top:6px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle{top:-4px;margin:10px}.elfinder-cwd-view-list thead td .ui-resizable-e{right:-7px}.elfinder-cwd-view-list thead td .ui-resizable-w{left:-7px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e{right:-16px}.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w{left:-16px}.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after{margin-top:0}.elfinder-cwd-message-board{position:-webkit-sticky;position:sticky;width:100%;height:calc(100% - .01px);top:0;left:0;margin:0;padding:0;pointer-events:none;background-color:transparent}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board{background-image:url(../img/trashmesh.png)}.elfinder-cwd-message-board .elfinder-cwd-trash{position:absolute;bottom:0;font-size:30px;width:100%;text-align:right;display:none}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash{font-size:20px}.elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash{display:block;opacity:.3}.elfinder-cwd-message-board .elfinder-cwd-expires{position:absolute;bottom:0;font-size:24px;width:100%;text-align:right;opacity:.25}.elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires{text-align:left}.elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires{font-size:20px}.std42-dialog{padding:0;position:absolute;left:auto;right:auto;box-sizing:border-box}.std42-dialog.elfinder-dialog-minimized{overFlow:hidden;position:relative;float:left;width:auto;cursor:pointer}.elfinder-rtl .std42-dialog.elfinder-dialog-minimized{float:right}.std42-dialog input{border:1px solid}.std42-dialog .ui-dialog-titlebar{border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;font-weight:400;padding:.2em 1em}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:0 .5em;height:20px}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar{padding:.3em .5em}.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar{cursor:default}.std42-dialog .ui-dialog-titlebar .ui-widget-header{border:none;cursor:pointer}.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{display:inherit;word-break:break-all}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{display:list-item;display:-moz-inline-box;white-space:nowrap;word-break:normal;overflow:hidden;word-wrap:normal;overflow-wrap:normal;max-width:-webkit-calc(100% - 24px);max-width:-moz-calc(100% - 24px);max-width:calc(100% - 24px)}.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title{padding-top:.15em}.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title{max-width:-webkit-calc(100% - 36px);max-width:-moz-calc(100% - 36px);max-width:calc(100% - 36px)}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{position:relative;float:left;top:10px;left:-10px;right:10px;width:20px;height:20px;padding:1px;margin:-10px 1px 0;background-color:transparent;background-image:none}.elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button{-moz-transform:scale(1.2);zoom:1.2;padding-left:6px;padding-right:6px;height:24px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right{float:right}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right{left:10px;right:-10px}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{width:17px;height:17px;border-width:1px;opacity:.7;filter:Alpha(Opacity=70);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:.5;filter:Alpha(Opacity=50)}.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{opacity:1;filter:Alpha(Opacity=100)}.elfinder-spinner{width:14px;height:14px;background:url(../img/spinner-mini.gif) center center no-repeat;margin:0 5px;display:inline-block;vertical-align:middle}.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se{width:12px;height:12px;-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5;right:-7px;bottom:-7px;margin:3px 7px 7px 3px;background-position:-64px -224px}.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar{text-align:right}.std42-dialog .ui-dialog-content{padding:.3em .5em;box-sizing:border-box}.elfinder .std42-dialog .ui-dialog-content,.elfinder .std42-dialog .ui-dialog-content *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.std42-dialog .ui-dialog-buttonpane{border:0 solid;margin:0;padding:.5em;text-align:right}.elfinder-rtl .std42-dialog .ui-dialog-buttonpane{text-align:left}.std42-dialog .ui-dialog-buttonpane button{margin:.2em 0 0 .4em;padding:.2em;outline:0 solid}.std42-dialog .ui-dialog-buttonpane button span{padding:2px 9px}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:2px}.elfinder-dialog .ui-resizable-e,.elfinder-dialog .ui-resizable-s{width:0;height:0}.std42-dialog .ui-button input{cursor:pointer}.std42-dialog select{border:1px solid #ccc}.elfinder-dialog-icon{position:absolute;width:32px;height:32px;left:10px;top:50%;margin-top:-15px;background:url(../img/dialogs.png) 0 0 no-repeat}.elfinder-rtl .elfinder-dialog-icon{left:auto;right:10px}.elfinder-dialog-confirm .ui-dialog-content,.elfinder-dialog-error .ui-dialog-content{padding-left:56px;min-height:35px}.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content,.elfinder-rtl .elfinder-dialog-error .ui-dialog-content{padding-left:0;padding-right:56px}.elfinder-dialog-notify .ui-dialog-titlebar-close,.elfinder-rm-title+br{display:none}.elfinder-dialog-notify .ui-dialog-content{padding:0}.elfinder-notify{border-bottom:1px solid #ccc;position:relative;padding:.5em;text-align:center;overflow:hidden}.elfinder-ltr .elfinder-notify{padding-left:36px}.elfinder-rtl .elfinder-notify{padding-right:36px}.elfinder-notify:last-child{border:0 solid}.elfinder-notify-progressbar{width:180px;height:8px;border:1px solid #aaa;background:#f5f5f5;margin:5px auto;overflow:hidden}.elfinder-notify-progress{width:100%;height:8px;background:url(../img/progress.gif) center center repeat-x}.elfinder-notify-progress,.elfinder-notify-progressbar{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.elfinder-dialog-icon-file,.elfinder-dialog-icon-open,.elfinder-dialog-icon-readdir,.elfinder-dialog-icon-reload{background-position:0 -225px}.elfinder-dialog-icon-mkdir{background-position:0 -64px}.elfinder-dialog-icon-mkfile{background-position:0 -96px}.elfinder-dialog-icon-copy,.elfinder-dialog-icon-move,.elfinder-dialog-icon-prepare{background-position:0 -128px}.elfinder-dialog-icon-chunkmerge,.elfinder-dialog-icon-upload{background-position:0 -160px}.elfinder-dialog-icon-rm{background-position:0 -192px}.elfinder-dialog-icon-download{background-position:0 -260px}.elfinder-dialog-icon-save{background-position:0 -295px}.elfinder-dialog-icon-chkcontent,.elfinder-dialog-icon-rename{background-position:0 -330px}.elfinder-dialog-icon-archive,.elfinder-dialog-icon-extract,.elfinder-dialog-icon-zipdl{background-position:0 -365px}.elfinder-dialog-icon-search{background-position:0 -402px}.elfinder-dialog-icon-chmod,.elfinder-dialog-icon-dim,.elfinder-dialog-icon-loadimg,.elfinder-dialog-icon-netmount,.elfinder-dialog-icon-netunmount,.elfinder-dialog-icon-preupload,.elfinder-dialog-icon-resize,.elfinder-dialog-icon-url{background-position:0 -434px}.elfinder-dialog-confirm-applyall,.elfinder-dialog-confirm-encoding{padding:0 1em;margin:0}.elfinder-ltr .elfinder-dialog-confirm-applyall,.elfinder-ltr .elfinder-dialog-confirm-encoding{text-align:left}.elfinder-rtl .elfinder-dialog-confirm-applyall,.elfinder-rtl .elfinder-dialog-confirm-encoding{text-align:right}.elfinder-dialog-confirm .elfinder-dialog-icon{background-position:0 -32px}.elfinder-dialog-confirm .ui-dialog-buttonset{width:auto}.elfinder-info-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon,.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon{float:right;margin-right:0;margin-left:1em}.elfinder-info-title strong{display:block;padding:.3em 0 .5em}.elfinder-info-tb{min-width:200px;border:0 solid;margin:1em .2em;width:100%}.elfinder-info-tb td{white-space:pre-wrap;padding:2px}.elfinder-info-tb td.elfinder-info-label{white-space:nowrap}.elfinder-info-tb td.elfinder-info-hash{word-break:break-word;max-width:32em}.elfinder-info-tb a{outline:none;text-decoration:underline}.elfinder-info-tb a:hover{text-decoration:none}.elfinder-info-spinner{width:14px;height:14px;float:left;background:url(../img/spinner-mini.gif) center center no-repeat;margin:0 5px}.elfinder-netmount-tb{margin:0 auto}.elfinder-netmount-tb .elfinder-button-icon,.elfinder-netmount-tb select{cursor:pointer}button.elfinder-info-button{margin:-3.5px 0;cursor:pointer}.elfinder-upload-dropbox{display:table-cell;text-align:center;vertical-align:middle;padding:.5em;border:3px dashed #aaa;width:9999px;height:80px;overflow:hidden;word-break:keep-all}.elfinder-upload-dropbox.ui-state-hover{background:#dfdfdf;border:3px dashed #555}.elfinder-upload-dialog-or{margin:.3em 0;text-align:center}.elfinder-upload-dialog-wrapper{text-align:center}.elfinder-upload-dialog-wrapper .ui-button{position:relative;overflow:hidden}.elfinder-upload-dialog-wrapper .ui-button form{position:absolute;right:0;top:0;width:100%;opacity:0;filter:Alpha(Opacity=0)}.elfinder-upload-dialog-wrapper .ui-button form input{padding:50px 0 0;font-size:3em;width:100%}.dialogelfinder .dialogelfinder-drag{border-left:0 solid;border-top:0 solid;border-right:0 solid;font-weight:400;padding:2px 12px;cursor:move;position:relative;text-align:left}.elfinder-rtl .dialogelfinder-drag{text-align:right}.dialogelfinder-drag-close{position:absolute;top:50%;margin-top:-8px}.elfinder-ltr .dialogelfinder-drag-close{right:12px}.elfinder-rtl .dialogelfinder-drag-close{left:12px}.elfinder-rm-title{margin-bottom:.5ex}.elfinder-rm-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-rm-title strong{display:block;white-space:pre-wrap;word-break:normal;overflow:hidden;text-overflow:ellipsis}.ui-dialog-titlebar select.elfinder-edit-changed{border-bottom:1px solid #13ae10}.elfinder-font-mono{font-family:"Ricty Diminished","Myrica M",Consolas,"Courier New",Courier,Monaco,monospace;font-size:1.1em}.elfinder-contextmenu .elfinder-contextmenu-item span{font-size:.72em}.elfinder-cwd-view-icons .elfinder-cwd-filename,.elfinder-cwd-view-list td{font-size:.7em}.std42-dialog .ui-dialog-titlebar{font-size:.82em}.std42-dialog .ui-dialog-content{font-size:.72em}.std42-dialog .ui-dialog-buttonpane{font-size:.76em}.dialogelfinder .dialogelfinder-drag,.elfinder-info-tb{font-size:.9em}.elfinder-upload-dialog-or,.elfinder-upload-dropbox{font-size:1.2em}.elfinder .elfinder-navbar{font-size:.72em}.elfinder-place-drag .elfinder-navbar-dir{font-size:.9em}.elfinder-quicklook-title,.elfinder-statusbar div{font-size:.7em}.elfinder-quicklook-info-data{font-size:.72em}.elfinder-quicklook-preview-text-wrapper{font-size:.9em}.elfinder-button-menu-item{font-size:.72em}.elfinder-button-search input{font-size:.8em}.elfinder-drag-num{font-size:12px}.elfinder-toast{font-size:.76em}.elfinder .elfinder-navbar{width:230px;padding:3px 5px;background-image:none;border-top:0 solid;border-bottom:0 solid;overflow:auto;position:relative}.elfinder .elfinder-navdock{box-sizing:border-box;width:230px;height:auto;position:absolute;bottom:0;overflow:auto}.elfinder-navdock .ui-resizable-n{top:0;height:20px}.elfinder-ltr .elfinder-navbar{float:left;border-left:0 solid}.elfinder-rtl .elfinder-navbar{float:right;border-right:0 solid}.elfinder-ltr .ui-resizable-e,.elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon{margin-left:10px}.elfinder-tree{display:table;width:100%;margin:0 0 .5em;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elfinder-navbar-dir{position:relative;display:block;white-space:nowrap;padding:3px 12px;margin:0;outline:0 solid;border:1px solid transparent;cursor:default}.elfinder-touch .elfinder-navbar-dir{padding:12px}.elfinder-ltr .elfinder-navbar-dir{padding-left:35px}.elfinder-rtl .elfinder-navbar-dir{padding-right:35px}.elfinder-navbar-arrow,.elfinder-navbar-icon{position:absolute;top:50%;margin-top:-8px;background-repeat:no-repeat}.elfinder-navbar-arrow{display:none;width:12px;height:14px;background-image:url(../img/arrows-normal.png)}.elfinder-ltr .elfinder-navbar-arrow{left:0}.elfinder-rtl .elfinder-navbar-arrow{right:0}.elfinder-touch .elfinder-navbar-arrow{-moz-transform-origin:top left;-moz-transform:scale(1.4);zoom:1.4;margin-bottom:7px}.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow{left:-3px;margin-right:20px}.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow{right:-3px;margin-left:20px}.ui-state-active .elfinder-navbar-arrow{background-image:url(../img/arrows-active.png)}.elfinder-navbar-collapsed .elfinder-navbar-arrow{display:block}.elfinder-subtree-chksubdir .elfinder-navbar-arrow{opacity:.25;filter:Alpha(Opacity=25)}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 4px}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 -10px}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow{background-position:0 -21px}.elfinder-navbar-icon{width:16px;height:16px;background-image:url(../img/toolbar.png);background-position:0 -16px}.elfinder-ltr .elfinder-navbar-icon{left:14px}.elfinder-rtl .elfinder-navbar-icon{right:14px}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon{background-position:0 -704px}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon,.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-position:0 0;background-size:contain}.elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon{background-image:url(../img/volume_icon_local.svg);background-image:url(../img/volume_icon_local.png) \9}.elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon{background-image:url(../img/volume_icon_trash.svg);background-image:url(../img/volume_icon_trash.png) \9}.elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon{background-image:url(../img/volume_icon_ftp.svg);background-image:url(../img/volume_icon_ftp.png) \9}.elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon{background-image:url(../img/volume_icon_sql.svg);background-image:url(../img/volume_icon_sql.png) \9}.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon{background-image:url(../img/volume_icon_dropbox.svg);background-image:url(../img/volume_icon_dropbox.png) \9}.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_googledrive.svg);background-image:url(../img/volume_icon_googledrive.png) \9}.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon{background-image:url(../img/volume_icon_onedrive.svg);background-image:url(../img/volume_icon_onedrive.png) \9}.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon{background-image:url(../img/volume_icon_box.svg);background-image:url(../img/volume_icon_box.png) \9}.elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon{background-image:url(../img/volume_icon_zip.svg);background-image:url(../img/volume_icon_zip.png) \9}.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon{background-image:url(../img/volume_icon_network.svg);background-image:url(../img/volume_icon_network.png) \9}.elfinder-droppable-active .elfinder-navbar-icon,.ui-state-active .elfinder-navbar-icon,.ui-state-hover .elfinder-navbar-icon{background-position:0 -32px}.elfinder-ltr .elfinder-navbar-subtree{margin-left:12px}.elfinder-rtl .elfinder-navbar-subtree{margin-right:12px}.elfinder-navbar-spinner{width:14px;height:14px;position:absolute;display:block;top:50%;margin-top:-7px;background:url(../img/spinner-mini.gif) center center no-repeat}.elfinder-ltr .elfinder-navbar-spinner{left:0;margin-left:-2px}.elfinder-rtl .elfinder-navbar-spinner{right:0;margin-right:-2px}.elfinder-navbar .elfinder-lock,.elfinder-navbar .elfinder-perms,.elfinder-navbar .elfinder-symlink{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-navbar .elfinder-perms{bottom:-1px;margin-top:-8px}.elfinder-navbar .elfinder-lock{top:-2px}.elfinder-ltr .elfinder-navbar .elfinder-perms{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-perms{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-lock{left:20px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-lock{right:20px;transform:scale(.8)}.elfinder-ltr .elfinder-navbar .elfinder-symlink{left:8px;transform:scale(.8)}.elfinder-rtl .elfinder-navbar .elfinder-symlink{right:8px;transform:scale(.8)}.elfinder-navbar input{width:100%;border:0 solid;margin:0;padding:0}.elfinder-navbar .ui-resizable-handle{width:12px;background:url(../img/resize.png) center center no-repeat}.elfinder-nav-handle-icon{position:absolute;top:50%;margin:-8px 2px 0;opacity:.5;filter:Alpha(Opacity=50)}.elfinder-navbar-pager{width:100%;box-sizing:border-box;padding-top:3px;padding-bottom:3px}.elfinder-touch .elfinder-navbar-pager{padding-top:10px;padding-bottom:10px}.elfinder-places{border:none;margin:0;padding:0}.elfinder-navbar-swipe-handle{position:absolute;top:0;height:100%;width:50px;pointer-events:none}.elfinder-ltr .elfinder-navbar-swipe-handle{left:0;background:linear-gradient(to right,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-rtl .elfinder-navbar-swipe-handle{right:0;background:linear-gradient(to left,#dde4eb 0,rgba(221,228,235,.8) 5px,rgba(216,223,230,.3) 8px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)}.elfinder-navbar-root .elfinder-places-root-icon{position:absolute;top:50%;margin-top:-9px;cursor:pointer}.elfinder-ltr .elfinder-places-root-icon{right:10px}.elfinder-rtl .elfinder-places-root-icon{left:10px}.elfinder-navbar-expanded .elfinder-places-root-icon{display:block}.elfinder-place-drag{font-size:.8em}.elfinder-quicklook{position:absolute;background:url(../img/quicklook-bg.png);overflow:hidden;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:20px 0 40px}.elfinder-navdock .elfinder-quicklook{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;font-size:90%;overflow:auto}.elfinder-quicklook.elfinder-touch{padding:30px 0 40px}.elfinder-quicklook .ui-resizable-se{width:14px;height:14px;right:5px;bottom:3px;background:url(../img/toolbar.png) 0 -496px no-repeat}.elfinder-quicklook.elfinder-touch .ui-resizable-se{-moz-transform-origin:bottom right;-moz-transform:scale(1.5);zoom:1.5}.elfinder-quicklook.elfinder-quicklook-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;margin:0;box-sizing:border-box;width:100%;height:100%;object-fit:contain;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-background-clip:padding-box;padding:0;background:#000;display:block}.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle,.elfinder-statusbar:after,.elfinder-statusbar:before{display:none}.elfinder-quicklook-fullscreen .elfinder-quicklook-preview{border:0 solid}.elfinder-quicklook-cover,.elfinder-quicklook-titlebar{width:100%;height:100%;top:0;left:0;position:absolute}.elfinder-quicklook-cover.elfinder-quicklook-coverbg{background-color:#fff;opacity:.000001;filter:Alpha(Opacity=.0001)}.elfinder-quicklook-titlebar{text-align:center;background:#777;height:20px;-moz-border-radius-topleft:7px;-webkit-border-top-left-radius:7px;border-top-left-radius:7px;-moz-border-radius-topright:7px;-webkit-border-top-right-radius:7px;border-top-right-radius:7px;cursor:move}.elfinder-navdock .elfinder-quicklook-titlebar{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;cursor:default}.elfinder-touch .elfinder-quicklook-titlebar{height:30px}.elfinder-quicklook-title{color:#fff;white-space:nowrap;overflow:hidden;padding:2px 0}.elfinder-touch .elfinder-quicklook-title{padding:8px 0}.elfinder-quicklook-titlebar-icon{position:absolute;left:4px;top:50%;margin-top:-9px;height:16px}.elfinder-touch .elfinder-quicklook-titlebar-icon{height:22px}.elfinder-quicklook-titlebar-icon .ui-icon{position:relative;margin:-9px 3px 0 0;cursor:pointer;border-radius:10px;border:1px solid;opacity:.7;filter:Alpha(Opacity=70)}.elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick{padding-left:1px}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon{opacity:.6;filter:Alpha(Opacity=60)}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-top:-5px}.elfinder-quicklook-titlebar-icon.elfinder-platformWin{left:auto;right:4px;direction:rtl}.elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon{margin:-9px 0 0 3px}.elfinder-touch .elfinder-quicklook-titlebar .ui-icon{-moz-transform-origin:center center;-moz-transform:scale(1.2);zoom:1.2}.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon{margin-right:10px}.elfinder-quicklook-preview{overflow:hidden;position:relative;border:0 solid;border-left:1px solid transparent;border-right:1px solid transparent;height:100%}.elfinder-navdock .elfinder-quicklook-preview{border-left:0;border-right:0}.elfinder-quicklook-preview.elfinder-overflow-auto{overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-info-wrapper{display:table;position:absolute;width:100%;height:100%;height:calc(100% - 80px);left:0;top:20px}.elfinder-navdock .elfinder-quicklook-info-wrapper{height:calc(100% - 20px)}.elfinder-quicklook-info{display:table-cell;vertical-align:middle}.elfinder-ltr .elfinder-quicklook-info{padding:0 12px 0 112px}.elfinder-rtl .elfinder-quicklook-info{padding:0 112px 0 12px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info{padding:0 0 0 80px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info{padding:0 80px 0 0}.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child{color:#fff;font-weight:700;padding-bottom:.5em}.elfinder-quicklook-info-data{padding-bottom:.2em;color:#fff}.elfinder-quicklook .elfinder-cwd-icon{position:absolute;left:32px;top:50%;margin-top:-20px}.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{left:16px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon{left:auto;right:32px}.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon{right:6px}.elfinder-quicklook .elfinder-cwd-icon:before{top:-10px}.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after,.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before{left:-20px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before{left:-14px}.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after{left:-12px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before{left:auto;right:40px}.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after{left:auto;right:46px}.elfinder-quicklook-preview img{display:block;margin:0 auto}.elfinder-quicklook-navbar{position:absolute;left:50%;bottom:4px;width:140px;height:32px;padding:0;margin-left:-70px;border:1px solid transparent;border-radius:19px;-moz-border-radius:19px;-webkit-border-radius:19px}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{width:188px;margin-left:-94px;padding:5px;border:1px solid #eee;background:#000;opacity:.4;filter:Alpha(Opacity=40)}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator{display:inline}.elfinder-quicklook-navbar-icon{width:32px;height:32px;margin:0 7px;float:left;background:url(../img/quicklook-icons.png) 0 0 no-repeat}.elfinder-quicklook-navbar-icon-fullscreen{background-position:0 -64px}.elfinder-quicklook-navbar-icon-fullscreen-off{background-position:0 -96px}.elfinder-quicklook-navbar-icon-prev{background-position:0 0}.elfinder-quicklook-navbar-icon-next{background-position:0 -32px}.elfinder-quicklook-navbar-icon-close{background-position:0 -128px;display:none}.elfinder-quicklook-navbar-separator{width:1px;height:32px;float:left;border-left:1px solid #fff;display:none}.elfinder-quicklook-preview-archive-wrapper,.elfinder-quicklook-preview-text-wrapper{width:100%;height:100%;background:#fff;color:#222;overflow:auto;-webkit-overflow-scrolling:touch}.elfinder-quicklook-preview-archive-wrapper{font-size:1.5ex}.elfinder-quicklook-preview-archive-wrapper strong{padding:0 5px}pre.elfinder-quicklook-preview-text,pre.elfinder-quicklook-preview-text.prettyprint{width:auto;height:auto;margin:0;padding:3px 9px;border:none;-o-tab-size:4;-moz-tab-size:4;tab-size:4}.elfinder-quicklook-preview-charsleft hr{border:none;border-top:dashed 1px}.elfinder-quicklook-preview-charsleft span{font-size:90%;font-style:italic;cursor:pointer}.elfinder-quicklook-preview-html,.elfinder-quicklook-preview-iframe,.elfinder-quicklook-preview-pdf{width:100%;height:100%;background:#fff;margin:0;border:none;display:block}.elfinder-quicklook-preview-flash{width:100%;height:100%}.elfinder-quicklook-preview-audio{width:100%;position:absolute;bottom:0;left:0}embed.elfinder-quicklook-preview-audio{height:30px;background:0 0}.elfinder-quicklook-preview-video{width:100%;height:100%}.elfinder .elfinder-quicklook .elfinder-quicklook-info *,.elfinder .elfinder-quicklook .elfinder-quicklook-preview *{-webkit-user-select:auto;-moz-user-select:text;-khtml-user-select:text;user-select:text}.elfinder-statusbar{display:flex;justify-content:space-between;cursor:default;text-align:center;font-weight:400;padding:.2em .5em;border-right:0 solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent}.elfinder-path,.elfinder-statusbar span{overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.elfinder-statusbar span{vertical-align:bottom}.elfinder-statusbar span.elfinder-path-other{flex-shrink:0;text-overflow:clip;-o-text-overflow:clip}.elfinder-statusbar span.ui-state-active,.elfinder-statusbar span.ui-state-hover{border:none}.elfinder-statusbar span.elfinder-path-cwd{cursor:default}.elfinder-path{display:flex;order:1;flex-grow:1;cursor:pointer;white-space:nowrap;max-width:30%\9}.elfinder-ltr .elfinder-path{text-align:left;float:left\9}.elfinder-rtl .elfinder-path{text-align:right;float:right\9}.elfinder-workzone-path{position:relative}.elfinder-workzone-path .elfinder-path{position:relative;font-size:.75em;font-weight:400;float:none;max-width:none;overflow:hidden;overflow-x:hidden;text-overflow:initial;-o-text-overflow:initial}.elfinder-mobile .elfinder-workzone-path .elfinder-path{overflow:auto;overflow-x:scroll}.elfinder-ltr .elfinder-workzone-path .elfinder-path{margin-left:24px}.elfinder-rtl .elfinder-workzone-path .elfinder-path{margin-right:24px}.elfinder-workzone-path .elfinder-path span{display:inline-block;padding:5px 3px}.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd{font-weight:700}.elfinder-workzone-path .elfinder-path span.ui-state-active,.elfinder-workzone-path .elfinder-path span.ui-state-hover{border:none}.elfinder-workzone-path .elfinder-path-roots{position:absolute;top:0;width:24px;height:20px;padding:2px;border:none;overflow:hidden}.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots{left:0}.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots{right:0}.elfinder-stat-size{order:3;flex-grow:1;overflow:hidden;white-space:nowrap}.elfinder-ltr .elfinder-stat-size{text-align:right;float:right\9}.elfinder-rtl .elfinder-stat-size{text-align:left;float:left\9}.elfinder-stat-selected{order:2;margin:0 .5em;white-space:nowrap;overflow:hidden}.elfinder .elfinder-toast{position:absolute;top:12px;right:12px;max-width:90%;cursor:default}.elfinder .elfinder-toast>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:8px 16px 8px 50px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.9;filter:alpha(opacity=90);background-color:#030303;text-align:center}.elfinder .elfinder-toast>.toast-info{background-color:#2f96b4;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-error{background-color:#bd362f;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>.toast-success{background-color:#51a351;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}.elfinder .elfinder-toast>.toast-warning{background-color:#f89406;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}.elfinder .elfinder-toast>div button.ui-button{background-image:none;margin-top:8px;padding:.5em .8em}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:green;color:#fff}.elfinder .elfinder-toast>.toast-success button.ui-button.ui-state-hover{background-color:#add6ad;color:#254b25}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#046580;color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button.ui-state-hover{background-color:#7dc6db;color:#046580}.elfinder-toolbar{padding:4px 0 3px;border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;max-height:50%;overflow-y:auto}.elfinder-buttonset{margin:1px 4px;float:left;background:0 0;padding:0;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.elfinder .elfinder-button{min-width:16px;height:16px;margin:0;padding:4px;float:left;overflow:hidden;position:relative;border:0 solid;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;line-height:1;cursor:default}.elfinder-touch .elfinder-button{min-width:20px;height:20px}.elfinder .ui-icon-search{cursor:pointer}.elfinder-button:first-child{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.elfinder-button:last-child{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.elfinder-toolbar-button-separator{float:left;padding:0;height:24px;border-top:0 solid;border-right:0 solid;border-bottom:0 solid;width:0}.elfinder-touch .elfinder-toolbar-button-separator{height:28px}.elfinder .elfinder-button.ui-state-disabled{opacity:1;filter:Alpha(Opacity=100)}.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text{opacity:.4;filter:Alpha(Opacity=40)}.elfinder-rtl .elfinder-buttonset{float:right}.elfinder-button-icon{width:16px;height:16px;display:inline-block;background:url(../img/toolbar.png) no-repeat}.elfinder-button-text{position:relative;display:inline-block;top:-4px;margin:0 2px;font-size:12px}.elfinder-touch .elfinder-button-icon{-moz-transform-origin:top left;-moz-transform:scale(1.25);zoom:1.25}.elfinder-touch .elfinder-button-text{-moz-transform:translate(3px,3px);top:-5px}.elfinder-button-icon-home{background-position:0 0}.elfinder-button-icon-back{background-position:0 -112px}.elfinder-button-icon-forward{background-position:0 -128px}.elfinder-button-icon-up{background-position:0 -144px}.elfinder-button-icon-dir{background-position:0 -16px}.elfinder-button-icon-reload{background-position:0 -160px}.elfinder-button-icon-open{background-position:0 -176px}.elfinder-button-icon-mkdir{background-position:0 -192px}.elfinder-button-icon-mkfile{background-position:0 -208px}.elfinder-button-icon-rm{background-position:0 -832px}.elfinder-button-icon-trash{background-position:0 -224px}.elfinder-button-icon-restore{background-position:0 -816px}.elfinder-button-icon-copy{background-position:0 -240px}.elfinder-button-icon-cut{background-position:0 -256px}.elfinder-button-icon-paste{background-position:0 -272px}.elfinder-button-icon-getfile{background-position:0 -288px}.elfinder-button-icon-duplicate{background-position:0 -304px}.elfinder-button-icon-rename{background-position:0 -320px}.elfinder-button-icon-edit{background-position:0 -336px}.elfinder-button-icon-quicklook{background-position:0 -352px}.elfinder-button-icon-upload{background-position:0 -368px}.elfinder-button-icon-download{background-position:0 -384px}.elfinder-button-icon-info{background-position:0 -400px}.elfinder-button-icon-extract{background-position:0 -416px}.elfinder-button-icon-archive{background-position:0 -432px}.elfinder-button-icon-view{background-position:0 -448px}.elfinder-button-icon-view-list{background-position:0 -464px}.elfinder-button-icon-help{background-position:0 -480px}.elfinder-button-icon-resize{background-position:0 -512px}.elfinder-button-icon-link{background-position:0 -528px}.elfinder-button-icon-search{background-position:0 -561px}.elfinder-button-icon-sort{background-position:0 -577px}.elfinder-button-icon-rotate-r{background-position:0 -625px}.elfinder-button-icon-rotate-l{background-position:0 -641px}.elfinder-button-icon-netmount{background-position:0 -688px}.elfinder-button-icon-netunmount{background-position:0 -96px}.elfinder-button-icon-places{background-position:0 -704px}.elfinder-button-icon-chmod{background-position:0 -48px}.elfinder-button-icon-accept{background-position:0 -736px}.elfinder-button-icon-opendir{background-position:0 -32px}.elfinder-button-icon-menu{background-position:0 -752px}.elfinder-button-icon-colwidth{background-position:0 -768px}.elfinder-button-icon-fullscreen{background-position:0 -784px}.elfinder-button-icon-unfullscreen{background-position:0 -800px}.elfinder-button-icon-empty{background-position:0 -848px}.elfinder-button-icon-undo{background-position:0 -864px}.elfinder-button-icon-redo{background-position:0 -880px}.elfinder-button-icon-preference{background-position:0 -896px}.elfinder-button-icon-mkdirin{background-position:0 -912px}.elfinder-button-icon-selectall{background-position:0 -928px}.elfinder-button-icon-selectnone{background-position:0 -944px}.elfinder-button-icon-selectinvert{background-position:0 -960px}.elfinder-button-icon-opennew{background-position:0 -976px}.elfinder-button-icon-hide{background-position:0 -992px}.elfinder .elfinder-menubutton{overflow:visible}.elfinder-button-icon-spinner{background:url(../img/spinner-mini.gif) center center no-repeat}.elfinder-button-menu{position:absolute;margin-top:24px;padding:3px 0;overflow-y:auto}.elfinder-touch .elfinder-button-menu{margin-top:30px}.elfinder-button-menu-item{white-space:nowrap;cursor:default;padding:5px 19px;position:relative}.elfinder-touch .elfinder-button-menu-item{padding:12px 19px}.elfinder-button-menu .ui-state-hover{border:0 solid}.elfinder-button-menu-item-separated{border-top:1px solid #ccc}.elfinder-button-menu-item .ui-icon{width:16px;height:16px;position:absolute;left:2px;top:50%;margin-top:-8px;display:none}.elfinder-button-menu-item-selected .ui-icon{display:block}.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s,.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n{display:none}.elfinder-button form{position:absolute;top:0;right:0;opacity:0;filter:Alpha(Opacity=0);cursor:pointer}.elfinder .elfinder-button form input{background:0 0;cursor:default}.elfinder .elfinder-button-search{border:0 solid;background:0 0;padding:0;margin:1px 4px;height:auto;min-height:26px;float:right;width:70px;overflow:visible}.elfinder .elfinder-button-search.ui-state-active{width:220px}.elfinder .elfinder-button-search-menu{font-size:8pt;text-align:center;width:auto;min-width:180px;position:absolute;top:30px;padding-right:5px;padding-left:5px}.elfinder-ltr .elfinder-button-search-menu{right:22px;left:auto}.elfinder-rtl .elfinder-button-search-menu{right:auto;left:22px}.elfinder-touch .elfinder-button-search-menu{top:34px}.elfinder .elfinder-button-search-menu div{margin:5px auto;display:table}.elfinder .elfinder-button-search-menu div .ui-state-hover{border:1px solid}.elfinder-ltr .elfinder-button-search{float:right;margin-right:10px}.elfinder-rtl .elfinder-button-search{float:left;margin-left:10px}.elfinder-button-search input[type=text]{box-sizing:border-box;width:100%;height:26px;padding:0 20px;line-height:22px;border:1px solid #aaa;-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;outline:0 solid}.elfinder-button-search input::-ms-clear{display:none}.elfinder-touch .elfinder-button-search input{height:30px;line-height:28px}.elfinder-rtl .elfinder-button-search input{direction:rtl}.elfinder-button-search .ui-icon{position:absolute;height:18px;top:50%;margin:-8px 4px 0;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-button-search-menu .ui-checkboxradio-icon{display:none}.elfinder-ltr .elfinder-button-search .ui-icon-search{left:0}.elfinder-ltr .elfinder-button-search .ui-icon-close,.elfinder-rtl .elfinder-button-search .ui-icon-search{right:0}.elfinder-rtl .elfinder-button-search .ui-icon-close{left:0}.elfinder-toolbar-swipe-handle{position:absolute;top:0;left:0;height:50px;width:100%;pointer-events:none;background:linear-gradient(to bottom,#dde4eb 0,rgba(221,228,235,.8) 2px,rgba(216,223,230,.3) 5px,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%)} \ No newline at end of file diff --git a/apps/static/plugins/elfindler/css/theme-gray.css b/apps/static/plugins/elfindler/css/theme-gray.css new file mode 100644 index 000000000..a706ab0c1 --- /dev/null +++ b/apps/static/plugins/elfindler/css/theme-gray.css @@ -0,0 +1,1582 @@ +@font-face { + font-family: 'Noto Sans'; + font-style: italic; + font-weight: 400; + src: local('Noto Sans Italic'), local('NotoSans-Italic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0OIpQlx3QUlC5A4PNr4DRF.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: italic; + font-weight: 700; + src: local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0TIpQlx3QUlC5A4PNr4Az5ZtyE.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNb4g.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 700; + src: local('Noto Sans Bold'), local('NotoSans-Bold'), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFlYw.ttf) format('truetype'); +} +.elfinder { + color: #546e7a; + font-family: "Noto Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.elfinder.ui-widget.ui-widget-content { + font-family: "Noto Sans", sans-serif; + -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.elfinder * { + outline: 0 !important; +} +/** + * Input & Select + */ +input.elfinder-tabstop, +input.elfinder-tabstop.ui-state-hover, +select.elfinder-tabstop, +select.elfinder-tabstop.ui-state-hover { + padding: 5px; + color: #666; + background: #fff; + -webkit-border-radius: 3px; + border-radius: 3px; + font-weight: normal; + border-color: #888; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/** + * Loading + */ +.elfinder-info-spinner, +.elfinder-navbar-spinner, +.elfinder-button-icon-spinner { + background: url("../images/loading.svg") center center no-repeat !important; + width: 16px; + height: 16px; +} +/** + * Progress Bar + */ +@-webkit-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +.elfinder-notify-progressbar { + border: 0; +} +.elfinder-notify-progress, +.elfinder-notify-progressbar { + -webkit-border-radius: 0; + border-radius: 0; +} +.elfinder-notify-progress, +.elfinder-resize-spinner { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 1rem 1rem; + -o-background-size: 1rem 1rem; + background-size: 1rem 1rem; + -webkit-animation: progress-animation 1s linear infinite; + -moz-animation: progress-animation 1s linear infinite; + -o-animation: progress-animation 1s linear infinite; + animation: progress-animation 1s linear infinite; + background-color: #0275d8; + height: 1rem; +} +/** + * Quick Look + */ +.elfinder-quicklook { + background: #232323; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.elfinder-quicklook-titlebar { + background: inherit; +} +.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { + border: inherit; + opacity: inherit; + -webkit-border-radius: 4px; + border-radius: 4px; + background: rgba(66, 66, 66, 0.73); +} +.elfinder .elfinder-navdock { + border: 0; +} +.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full { + background-image: none; +} +/** + * Toast Notification + */ +.elfinder .elfinder-toast > div { + background-color: #323232 !important; + color: #d6d6d6; + -webkit-box-shadow: none; + box-shadow: none; + opacity: inherit; + padding: 10px 60px; +} +.elfinder .elfinder-toast > div button.ui-button { + color: #fff; +} +.elfinder .elfinder-toast > .toast-info button.ui-button { + background-color: #3498db; +} +.elfinder .elfinder-toast > .toast-error button.ui-button { + background-color: #f44336; +} +.elfinder .elfinder-toast > .toast-success button.ui-button { + background-color: #4caf50; +} +.elfinder .elfinder-toast > .toast-warning button.ui-button { + background-color: #ff9800; +} +.elfinder-toast-msg { + font-family: "Noto Sans", sans-serif; + font-size: 17px; +} +/** + * For Ace Editor + */ +#ace_settingsmenu { + font-family: "Noto Sans", sans-serif; + -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important; + box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important; + background-color: #1d2736 !important; + color: #e6e6e6 !important; +} +#ace_settingsmenu, +#kbshortcutmenu { + padding: 0; +} +.ace_optionsMenuEntry { + padding: 5px 10px; +} +.ace_optionsMenuEntry:hover { + background-color: #111721; +} +.ace_optionsMenuEntry label { + font-size: 13px; +} +#ace_settingsmenu input[type="text"], +#ace_settingsmenu select { + margin: 1px 2px 2px; + padding: 2px 5px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + background: rgba(9, 53, 121, 0.75); + color: white; +} +/** + * Icons + * Webfont is generated by Fontello http://fontello.com + */ +@font-face { + font-family: material; + src: url("../icons/material.eot?7028746"); + src: url("../icons/material.eot?7028746#iefix") format("embedded-opentype"), url("../icons/material.woff2?7028746") format("woff2"), url("../icons/material.woff?7028746") format("woff"), url("../icons/material.ttf?7028746") format("truetype"), url("../icons/material.svg?7028746#material") format("svg"); + font-weight: normal; + font-style: normal; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + @font-face { + font-family: material; + src: url("../icons/material.svg?7028746#material") format("svg"); + } +} +.ui-icon, +.elfinder-button-icon, +.ui-widget-header .ui-icon, +.ui-widget-content .ui-icon { + font: normal normal normal 14px/1 material; + background-image: inherit; + text-indent: inherit; +} +.ui-button-icon-only .ui-icon { + font: normal normal normal 14px/1 material; + background-image: inherit !important; + text-indent: 0; + font-size: 16px; +} +.elfinder-toolbar .elfinder-button-icon { + font-size: 20px; + color: #ddd; + margin-top: -2px; +} +.elfinder-button-icon { + background: inherit; +} +.elfinder-button-icon-home:before { + content: '\e800'; +} +.elfinder-button-icon-back:before { + content: '\e801'; +} +.elfinder-button-icon-forward:before { + content: '\e802'; +} +.elfinder-button-icon-up:before { + content: '\e803'; +} +.elfinder-button-icon-dir:before { + content: '\e804'; +} +.elfinder-button-icon-opendir:before { + content: '\e805'; +} +.elfinder-button-icon-reload:before { + content: '\e806'; +} +.elfinder-button-icon-open:before { + content: '\e807'; +} +.elfinder-button-icon-mkdir:before { + content: '\e808'; +} +.elfinder-button-icon-mkfile:before { + content: '\e809'; +} +.elfinder-button-icon-rm:before { + content: '\e80a'; +} +.elfinder-button-icon-trash:before { + content: '\e80b'; +} +.elfinder-button-icon-restore:before { + content: '\e80c'; +} +.elfinder-button-icon-copy:before { + content: '\e80d'; +} +.elfinder-button-icon-cut:before { + content: '\e80e'; +} +.elfinder-button-icon-paste:before { + content: '\e80f'; +} +.elfinder-button-icon-getfile:before { + content: '\e810'; +} +.elfinder-button-icon-duplicate:before { + content: '\e811'; +} +.elfinder-button-icon-rename:before { + content: '\e812'; +} +.elfinder-button-icon-edit:before { + content: '\e813'; +} +.elfinder-button-icon-quicklook:before { + content: '\e814'; +} +.elfinder-button-icon-upload:before { + content: '\e815'; +} +.elfinder-button-icon-download:before { + content: '\e816'; +} +.elfinder-button-icon-info:before { + content: '\e817'; +} +.elfinder-button-icon-extract:before { + content: '\e818'; +} +.elfinder-button-icon-archive:before { + content: '\e819'; +} +.elfinder-button-icon-view:before { + content: '\e81a'; +} +.elfinder-button-icon-view-list:before { + content: '\e81b'; +} +.elfinder-button-icon-help:before { + content: '\e81c'; +} +.elfinder-button-icon-resize:before { + content: '\e81d'; +} +.elfinder-button-icon-link:before { + content: '\e81e'; +} +.elfinder-button-icon-search:before { + content: '\e81f'; +} +.elfinder-button-icon-sort:before { + content: '\e820'; +} +.elfinder-button-icon-rotate-r:before { + content: '\e821'; +} +.elfinder-button-icon-rotate-l:before { + content: '\e822'; +} +.elfinder-button-icon-netmount:before { + content: '\e823'; +} +.elfinder-button-icon-netunmount:before { + content: '\e824'; +} +.elfinder-button-icon-places:before { + content: '\e825'; +} +.elfinder-button-icon-chmod:before { + content: '\e826'; +} +.elfinder-button-icon-accept:before { + content: '\e827'; +} +.elfinder-button-icon-menu:before { + content: '\e828'; +} +.elfinder-button-icon-colwidth:before { + content: '\e829'; +} +.elfinder-button-icon-fullscreen:before { + content: '\e82a'; +} +.elfinder-button-icon-unfullscreen:before { + content: '\e82b'; +} +.elfinder-button-icon-empty:before { + content: '\e82c'; +} +.elfinder-button-icon-undo:before { + content: '\e82d'; +} +.elfinder-button-icon-redo:before { + content: '\e82e'; +} +.elfinder-button-icon-preference:before { + content: '\e82f'; +} +.elfinder-button-icon-mkdirin:before { + content: '\e830'; +} +.elfinder-button-icon-selectall:before { + content: '\e831'; +} +.elfinder-button-icon-selectnone:before { + content: '\e832'; +} +.elfinder-button-icon-selectinvert:before { + content: '\e833'; +} +.elfinder-button-icon-theme:before { + content: '\e859'; +} +.elfinder-button-icon-logout:before { + content: '\e85a'; +} +.elfinder-button-icon-opennew:before { + content: '\e85b'; +} +.elfinder-button-search .ui-icon.ui-icon-search { + font-size: 17px; +} +.elfinder-button-search .ui-icon:hover { + opacity: 1; +} +.elfinder-navbar-icon { + font: normal normal normal 16px/1 material; + background-image: inherit !important; +} +.elfinder-navbar-icon:before { + content: '\e804'; +} +.elfinder-droppable-active .elfinder-navbar-icon:before, +.ui-state-active .elfinder-navbar-icon:before, +.ui-state-hover .elfinder-navbar-icon:before { + content: '\e805'; +} +.elfinder-navbar-root-local .elfinder-navbar-icon:before { + content: '\e83d'; +} +.elfinder-navbar-root-ftp .elfinder-navbar-icon:before { + content: '\e823'; +} +.elfinder-navbar-root-sql .elfinder-navbar-icon:before { + content: '\e83e'; +} +.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before { + content: '\e83f'; +} +.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before { + content: '\e840'; +} +.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before { + content: '\e841'; +} +.elfinder-navbar-root-box .elfinder-navbar-icon:before { + content: '\e842'; +} +.elfinder-navbar-root-trash .elfinder-navbar-icon:before { + content: '\e80b'; +} +.elfinder-navbar-root-zip .elfinder-navbar-icon:before { + content: '\e85c'; +} +.elfinder-navbar-root-network .elfinder-navbar-icon:before { + content: '\e823'; +} +.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before { + content: '\e825'; +} +.elfinder-navbar-arrow { + background-image: inherit !important; + font: normal normal normal 14px/1 material; + font-size: 10px; + padding-top: 3px; + padding-left: 2px; + color: #a9a9a9; +} +.ui-state-active .elfinder-navbar-arrow { + color: #fff; +} +.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { + content: '\e857'; +} +.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { + content: '\e858'; +} +.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before, +.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before { + content: '\e851'; +} +div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { + font-size: 8px; + margin-top: 5px; + margin-right: 5px; +} +div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical { + margin: 2px; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon, +.elfinder-navbar-root-local .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon, +.elfinder-navbar-root-ftp .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon, +.elfinder-navbar-root-sql .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon, +.elfinder-navbar-root-dropbox .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon, +.elfinder-navbar-root-googledrive .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon, +.elfinder-navbar-root-onedrive .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon, +.elfinder-navbar-root-box .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon, +.elfinder-navbar-root-trash .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon, +.elfinder-navbar-root-zip .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon, +.elfinder-navbar-root-network .elfinder-cwd-icon { + background-image: inherit; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, +.elfinder-navbar-root-local .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, +.elfinder-navbar-root-ftp .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, +.elfinder-navbar-root-sql .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before, +.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before, +.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before, +.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before, +.elfinder-navbar-root-box .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, +.elfinder-navbar-root-trash .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, +.elfinder-navbar-root-zip .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, +.elfinder-navbar-root-network .elfinder-cwd-icon:before { + font-family: material; + background-color: transparent; + color: #525252; + font-size: 55px; + position: relative; + top: -10px !important; + padding: 0; + display: contents !important; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, +.elfinder-navbar-root-local .elfinder-cwd-icon:before { + content: '\e83d'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, +.elfinder-navbar-root-ftp .elfinder-cwd-icon:before { + content: '\e823'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, +.elfinder-navbar-root-sql .elfinder-cwd-icon:before { + content: '\e83e'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before { + content: '\e83f'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before { + content: '\e840'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before { + content: '\e841'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-box .elfinder-cwd-icon:before { + content: '\e842'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, +.elfinder-navbar-root-trash .elfinder-cwd-icon:before { + content: '\e80b'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, +.elfinder-navbar-root-zip .elfinder-cwd-icon:before { + content: '\e85c'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, +.elfinder-navbar-root-network .elfinder-cwd-icon:before { + content: '\e823'; +} +.elfinder-dialog-icon { + font: normal normal normal 14px/1 material; + background: inherit; + color: #524949; + font-size: 37px; +} +.elfinder-dialog-icon:before { + content: '\e843'; +} +.elfinder-dialog-icon-mkdir:before { + content: '\e808'; +} +.elfinder-dialog-icon-mkfile:before { + content: '\e809'; +} +.elfinder-dialog-icon-copy:before { + content: '\e80d'; +} +.elfinder-dialog-icon-prepare:before, +.elfinder-dialog-icon-move:before { + content: '\e844'; +} +.elfinder-dialog-icon-upload:before, +.elfinder-dialog-icon-chunkmerge:before { + content: '\e815'; +} +.elfinder-dialog-icon-rm:before { + content: '\e80a'; +} +.elfinder-dialog-icon-open:before, +.elfinder-dialog-icon-readdir:before, +.elfinder-dialog-icon-file:before { + content: '\e807'; +} +.elfinder-dialog-icon-reload:before { + content: '\e806'; +} +.elfinder-dialog-icon-download:before { + content: '\e816'; +} +.elfinder-dialog-icon-save:before { + content: '\e845'; +} +.elfinder-dialog-icon-rename:before { + content: '\e812'; +} +.elfinder-dialog-icon-zipdl:before, +.elfinder-dialog-icon-archive:before { + content: '\e819'; +} +.elfinder-dialog-icon-extract:before { + content: '\e818'; +} +.elfinder-dialog-icon-search:before { + content: '\e81f'; +} +.elfinder-dialog-icon-loadimg:before { + content: '\e846'; +} +.elfinder-dialog-icon-url:before { + content: '\e81e'; +} +.elfinder-dialog-icon-resize:before { + content: '\e81d'; +} +.elfinder-dialog-icon-netmount:before { + content: '\e823'; +} +.elfinder-dialog-icon-netunmount:before { + content: '\e824'; +} +.elfinder-dialog-icon-chmod:before { + content: '\e826'; +} +.elfinder-dialog-icon-preupload:before, +.elfinder-dialog-icon-dim:before { + content: '\e847'; +} +.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon { + font-size: 16px; +} +.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon { + font-size: 15px; +} +.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before { + content: '\e837'; +} +.elfinder .elfinder-contextmenu-extra-icon { + margin-top: -6px; +} +.elfinder .elfinder-contextmenu-extra-icon a { + padding: 5px; + margin: -16px; +} +.elfinder-button-icon-link:before { + content: '\e81e' !important; +} +.elfinder .elfinder-contextmenu-arrow { + font: normal normal normal 14px/1 material; + background-image: inherit; + font-size: 10px !important; + padding-top: 3px; +} +.elfinder .elfinder-contextmenu-arrow:before { + content: '\e857'; +} +.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { + background-image: inherit; +} +.elfinder-quicklook .ui-resizable-se { + background: inherit; +} +.elfinder-quicklook-navbar-icon { + background: transparent; + font: normal normal normal 14px/1 material; + font-size: 32px; + color: #fff; +} +.elfinder-quicklook-titlebar-icon { + margin-top: -8px; +} +.elfinder-quicklook-titlebar-icon .ui-icon { + border: 0; + opacity: .8; + font-size: 15px; + padding: 1px; +} +.elfinder-quicklook-titlebar .ui-icon-circle-close, +.elfinder-quicklook .ui-icon-gripsmall-diagonal-se { + color: #f1f1f1; +} +.elfinder-quicklook-navbar-icon-prev:before { + content: '\e848'; +} +.elfinder-quicklook-navbar-icon-next:before { + content: '\e849'; +} +.elfinder-quicklook-navbar-icon-fullscreen:before { + content: '\e84a'; +} +.elfinder-quicklook-navbar-icon-fullscreen-off:before { + content: '\e84b'; +} +.elfinder-quicklook-navbar-icon-close:before { + content: '\e84c'; +} +.ui-button-icon { + background-image: inherit; +} +.ui-icon-search:before { + content: '\e81f'; +} +.ui-icon-closethick:before, +.ui-icon-close:before { + content: '\e839'; +} +.ui-icon-circle-close:before { + content: '\e84c'; +} +.ui-icon-gear:before { + content: '\e82f'; +} +.ui-icon-gripsmall-diagonal-se:before { + content: '\e838'; +} +.ui-icon-locked:before { + content: '\e834'; +} +.ui-icon-unlocked:before { + content: '\e836'; +} +.ui-icon-arrowrefresh-1-n:before { + content: '\e821'; +} +.ui-icon-plusthick:before { + content: '\e83a'; +} +.ui-icon-arrowreturnthick-1-s:before { + content: '\e83b'; +} +.ui-icon-minusthick:before { + content: '\e83c'; +} +.ui-icon-pin-s:before { + content: '\e84d'; +} +.ui-icon-check:before { + content: '\e84e'; +} +.ui-icon-arrowthick-1-s:before { + content: '\e84f'; +} +.ui-icon-arrowthick-1-n:before { + content: '\e850'; +} +.ui-icon-triangle-1-s:before { + content: '\e851'; +} +.ui-icon-triangle-1-n:before { + content: '\e852'; +} +.ui-icon-grip-dotted-vertical:before { + content: '\e853'; +} +.elfinder-lock, +.elfinder-perms, +.elfinder-symlink { + background-image: inherit; + font: normal normal normal 18px/1 material; + color: #4d4d4d; +} +.elfinder-na .elfinder-perms:before { + content: '\e824'; +} +.elfinder-ro .elfinder-perms:before { + content: '\e835'; +} +.elfinder-wo .elfinder-perms:before { + content: '\e854'; +} +.elfinder-group .elfinder-perms:before { + content: '\e800'; +} +.elfinder-lock:before { + content: '\e834'; +} +.elfinder-symlink:before { + content: '\e837'; +} +.elfinder .elfinder-toast > div { + font: normal normal normal 14px/1 material; +} +.elfinder .elfinder-toast > div:before { + font-size: 45px; + position: absolute; + left: 5px; + top: 15px; +} +.elfinder .elfinder-toast > .toast-info, +.elfinder .elfinder-toast > .toast-error, +.elfinder .elfinder-toast > .toast-success, +.elfinder .elfinder-toast > .toast-warning { + background-image: inherit !important; +} +.elfinder .elfinder-toast > .toast-info:before { + content: '\e817'; + color: #3498db; +} +.elfinder .elfinder-toast > .toast-error:before { + content: '\e855'; + color: #f44336; +} +.elfinder .elfinder-toast > .toast-success:before { + content: '\e84e'; + color: #4caf50; +} +.elfinder .elfinder-toast > .toast-warning:before { + content: '\e856'; + color: #ff9800; +} +.elfinder-drag-helper-icon-status { + font: normal normal normal 14px/1 material; + background: inherit; +} +.elfinder-drag-helper-icon-status:before { + content: '\e824'; +} +.elfinder-drag-helper-move .elfinder-drag-helper-icon-status { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before { + content: '\e854'; +} +.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before { + content: '\e84c'; +} +/** + * MIME Types + */ +.elfinder-cwd-view-list td .elfinder-cwd-icon { + background-image: url("../images/icons-small.png"); +} +.elfinder-cwd-icon { + background: url("../images/icons-big.png") 0 0 no-repeat; +} +.elfinder-cwd-icon:before { + font-size: 10px; + position: relative; + top: 27px; + left: inherit; + padding: 1px; + background-color: transparent; +} +.elfinder-info-title .elfinder-cwd-icon:before { + top: 32px; + display: block; + margin: 0 auto; +} +.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + background-color: #313131 !important; +} +.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + left: inherit; + background-color: #313131; +} +.elfinder-quicklook .elfinder-cwd-icon:before { + top: 33px; + left: 50% !important; + position: relative; + display: block; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); +} +.elfinder-cwd-icon-zip:before, +.elfinder-cwd-icon-x-zip:before { + content: 'zip' !important; +} +.elfinder-cwd-icon-x-xz:before { + content: 'xz' !important; +} +.elfinder-cwd-icon-x-7z-compressed:before { + content: '7z' !important; +} +.elfinder-cwd-icon-x-gzip:before { + content: 'gzip' !important; +} +.elfinder-cwd-icon-x-tar:before { + content: 'tar' !important; +} +.elfinder-cwd-icon-x-bzip:before, +.elfinder-cwd-icon-x-bzip2:before { + content: 'bzip' !important; +} +.elfinder-cwd-icon-x-rar:before, +.elfinder-cwd-icon-x-rar-compressed:before { + content: 'rar' !important; +} +.elfinder-cwd-icon-directory { + background-position: 0 -50px; +} +.elfinder-cwd-icon-application { + background-position: 0 -150px; +} +.elfinder-cwd-icon-text { + background-position: 0 -200px; +} +.elfinder-cwd-icon-plain, +.elfinder-cwd-icon-x-empty { + background-position: 0 -250px; +} +.elfinder-cwd-icon-image { + background-position: 0 -300px; +} +.elfinder-cwd-icon-vnd-adobe-photoshop { + background-position: 0 -350px; +} +.elfinder-cwd-icon-vnd-adobe-photoshop:before { + content: none !important; +} +.elfinder-cwd-icon-postscript { + background-position: 0 -400px; +} +.elfinder-cwd-icon-audio { + background-position: 0 -450px; +} +.elfinder-cwd-icon-video, +.elfinder-cwd-icon-flash-video, +.elfinder-cwd-icon-dash-xml, +.elfinder-cwd-icon-vnd-apple-mpegurl, +.elfinder-cwd-icon-x-mpegurl { + background-position: 0 -500px; +} +.elfinder-cwd-icon-rtf, +.elfinder-cwd-icon-rtfd { + background-position: 0 -550px; +} +.elfinder-cwd-icon-pdf { + background-position: 0 -600px; +} +.elfinder-cwd-icon-x-msaccess { + background-position: 0 -650px; +} +.elfinder-cwd-icon-x-msaccess:before { + content: none !important; +} +.elfinder-cwd-icon-msword, +.elfinder-cwd-icon-vnd-ms-word, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 { + background-position: 0 -700px; +} +.elfinder-cwd-icon-msword:before, +.elfinder-cwd-icon-vnd-ms-word:before, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-ms-excel, +.elfinder-cwd-icon-vnd-ms-excel, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 { + background-position: 0 -750px; +} +.elfinder-cwd-icon-ms-excel:before, +.elfinder-cwd-icon-vnd-ms-excel:before, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-vnd-ms-powerpoint, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 { + background-position: 0 -800px; +} +.elfinder-cwd-icon-vnd-ms-powerpoint:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-vnd-ms-office, +.elfinder-cwd-icon-vnd-oasis-opendocument-chart, +.elfinder-cwd-icon-vnd-oasis-opendocument-database, +.elfinder-cwd-icon-vnd-oasis-opendocument-formula, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-image, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-text, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-master, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-web, +.elfinder-cwd-icon-vnd-openofficeorg-extension, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template { + background-position: 0 -850px; +} +.elfinder-cwd-icon-html { + background-position: 0 -900px; +} +.elfinder-cwd-icon-css { + background-position: 0 -950px; +} +.elfinder-cwd-icon-javascript, +.elfinder-cwd-icon-x-javascript { + background-position: 0 -1000px; +} +.elfinder-cwd-icon-x-perl { + background-position: 0 -1050px; +} +.elfinder-cwd-icon-x-python:after, +.elfinder-cwd-icon-x-python { + background-position: 0 -1100px; +} +.elfinder-cwd-icon-x-ruby { + background-position: 0 -1150px; +} +.elfinder-cwd-icon-x-sh, +.elfinder-cwd-icon-x-shellscript { + background-position: 0 -1200px; +} +.elfinder-cwd-icon-x-c, +.elfinder-cwd-icon-x-csrc, +.elfinder-cwd-icon-x-chdr, +.elfinder-cwd-icon-x-c--, +.elfinder-cwd-icon-x-c--src, +.elfinder-cwd-icon-x-c--hdr { + background-position: 0 -1250px; +} +.elfinder-cwd-icon-x-jar, +.elfinder-cwd-icon-x-java, +.elfinder-cwd-icon-x-java-source { + background-position: 0 -1300px; +} +.elfinder-cwd-icon-x-jar:before, +.elfinder-cwd-icon-x-java:before, +.elfinder-cwd-icon-x-java-source:before { + content: none !important; +} +.elfinder-cwd-icon-x-php { + background-position: 0 -1350px; +} +.elfinder-cwd-icon-xml:after, +.elfinder-cwd-icon-xml { + background-position: 0 -1400px; +} +.elfinder-cwd-icon-zip, +.elfinder-cwd-icon-x-zip, +.elfinder-cwd-icon-x-xz, +.elfinder-cwd-icon-x-7z-compressed, +.elfinder-cwd-icon-x-gzip, +.elfinder-cwd-icon-x-tar, +.elfinder-cwd-icon-x-bzip, +.elfinder-cwd-icon-x-bzip2, +.elfinder-cwd-icon-x-rar, +.elfinder-cwd-icon-x-rar-compressed { + background-position: 0 -1450px; +} +.elfinder-cwd-icon-x-shockwave-flash { + background-position: 0 -1500px; +} +.elfinder-cwd-icon-group { + background-position: 0 -1550px; +} +.elfinder-cwd-icon-json { + background-position: 0 -1600px; +} +.elfinder-cwd-icon-json:before { + content: none !important; +} +.elfinder-cwd-icon-markdown, +.elfinder-cwd-icon-x-markdown { + background-position: 0 -1650px; +} +.elfinder-cwd-icon-markdown:before, +.elfinder-cwd-icon-x-markdown:before { + content: none !important; +} +.elfinder-cwd-icon-sql { + background-position: 0 -1700px; +} +.elfinder-cwd-icon-sql:before { + content: none !important; +} +.elfinder-cwd-icon-svg, +.elfinder-cwd-icon-svg-xml { + background-position: 0 -1750px; +} +.elfinder-cwd-icon-svg:before, +.elfinder-cwd-icon-svg-xml:before { + content: none !important; +} +/** + * Toolbar + */ +.elfinder-toolbar { + background: #3b4047; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + padding: 5px 0; +} +.elfinder-buttonset { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + margin: 0 5px; + height: 24px; +} +.elfinder .elfinder-button { + background: transparent; + -webkit-border-radius: 0; + border-radius: 0; + cursor: pointer; + color: #efefef; +} +.elfinder-toolbar-button-separator { + border: 0; +} +.elfinder-button-menu { + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + border: none; + margin-top: 5px; +} +.elfinder-button-menu-item { + color: #666; + padding: 6px 19px; +} +.elfinder-button-menu-item.ui-state-hover { + color: #141414; + background-color: #f5f4f4; +} +.elfinder-button-menu-item-separated { + border-top: 1px solid #e5e5e5; +} +.elfinder-button-menu-item-separated.ui-state-hover { + border-top: 1px solid #e5e5e5; +} +.elfinder .elfinder-button-search { + margin: 0 10px; + min-height: inherit; + overflow: hidden; +} +.elfinder .elfinder-button-search input { + background: rgba(40, 42, 45, 0.79); + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + border: 0; + margin: 0; + padding: 0 23px; + height: 24px; + color: #fff; +} +.elfinder .elfinder-button-search .elfinder-button-menu { + margin-top: 4px; + border: none; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); +} +/** + * Navbar + */ +.elfinder .elfinder-navbar { + background: #535e64; + -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + border: none; +} +.elfinder-navbar-dir { + color: #e6e6e6; + cursor: pointer; + -webkit-border-radius: 2px; + border-radius: 2px; + padding: 5px; + border: none; +} +.elfinder-navbar-dir.ui-state-hover, +.elfinder-navbar-dir.ui-state-active.ui-state-hover { + background: #3c4448; + color: #e6e6e6; + border: none; +} +.elfinder-navbar .ui-state-active, +.elfinder-disabled .elfinder-navbar .ui-state-active { + background: #41494e; + border: none; +} +/** + * Workzone + */ +.elfinder-workzone { + background: #cdcfd4; +} +.elfinder-cwd-file { + color: #555; +} +.elfinder-cwd-file.ui-state-hover, +.elfinder-cwd-file.ui-selected.ui-state-hover { + background: #4c5961; + color: #ddd; +} +.elfinder-cwd-file.ui-selected { + background: #455158; + color: #555; + width: 120px !important; +} +.elfinder-cwd-filename input, +.elfinder-cwd-filename textarea { + padding: 2px; + -webkit-border-radius: 2px !important; + border-radius: 2px !important; + width: 100px !important; + background: #fff; + color: #222; +} +.elfinder-cwd-filename input:focus, +.elfinder-cwd-filename textarea:focus { + outline: none; + border: 1px solid #555; +} +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover, +.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, +.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, +.elfinder-disabled .elfinder-cwd table td.ui-state-hover, +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { + background: transparent; + color: #ddd; +} +.elfinder-cwd table { + padding: 0; +} +.elfinder-cwd table tr:nth-child(odd) { + background-color: transparent; +} +.elfinder-cwd table tr:nth-child(odd).ui-state-hover { + background-color: #4c5961; +} +#elfinder-elfinder-cwd-thead td { + background: #353b42; + color: #ddd; +} +#elfinder-elfinder-cwd-thead td.ui-state-hover, +#elfinder-elfinder-cwd-thead td.ui-state-active { + background: #30363c; +} +#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover { + background: #2e333a; +} +.ui-selectable-helper { + border: 1px solid #3b4047; + background-color: rgba(104, 111, 121, 0.5); +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash { + background-color: #e4e4e4; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file { + color: #333; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover, +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover { + background: #4c5961; + color: #ddd; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected { + background: #455158; + color: #555; +} +/** + * Status Bar + */ +.elfinder .elfinder-statusbar { + background: #3b4047; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + color: #cfd2d4; +} +.elfinder-path, +.elfinder-stat-size { + margin: 0 15px; +} +/** + * Buttons + */ +.ui-button, +.ui-button:active, +.ui-button.ui-state-default { + display: inline-block; + font-weight: normal; + text-align: center; + vertical-align: middle; + cursor: pointer; + white-space: nowrap; + -webkit-border-radius: 3px; + border-radius: 3px; + text-transform: uppercase; + -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; + background: #fff; + color: #222; + border: none; +} +.ui-button .ui-icon, +.ui-button:active .ui-icon, +.ui-button.ui-state-default .ui-icon { + color: #222; +} +.ui-button:hover, +a.ui-button:active, +.ui-button:active, +.ui-button:focus, +.ui-button.ui-state-hover, +.ui-button.ui-state-active { + background: #3498db; + color: #fff; + border: none; +} +.ui-button:hover .ui-icon, +a.ui-button:active .ui-icon, +.ui-button:active .ui-icon, +.ui-button:focus .ui-icon, +.ui-button.ui-state-hover .ui-icon, +.ui-button.ui-state-active .ui-icon { + color: #fff; +} +.ui-button.ui-state-active:hover { + background: #217dbb; + color: #fff; + border: none; +} +.ui-button:focus { + outline: none !important; +} +.ui-controlgroup-horizontal .ui-button { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +/** + * Context Menu + */ +.elfinder .elfinder-contextmenu, +.elfinder .elfinder-contextmenu-sub { + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + border: none; +} +.elfinder .elfinder-contextmenu-separator, +.elfinder .elfinder-contextmenu-sub-separator { + border-top: 1px solid #e5e5e5; +} +.elfinder .elfinder-contextmenu-item { + color: #666; + padding: 5px 30px; +} +.elfinder .elfinder-contextmenu-item.ui-state-hover { + background-color: #f5f4f4; + color: #141414; +} +.elfinder .elfinder-contextmenu-item.ui-state-active { + background-color: #2196f3; + color: #fff; +} +/** + * Dialogs + */ +.elfinder .elfinder-dialog { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6); +} +.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] { + padding: 0; +} +.elfinder .elfinder-dialog .ui-tabs { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.elfinder .elfinder-dialog .ui-tabs-nav { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + background: transparent; + border-bottom: 1px solid #ddd; +} +.elfinder .elfinder-dialog .ui-tabs-nav li { + border: 0; + font-weight: normal; + background: transparent; + margin: 0; + padding: 3px 0; +} +.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active { + padding-bottom: 7px; +} +.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a, +.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a, +.elfinder .elfinder-dialog .ui-tabs-nav li:hover a { + -webkit-box-shadow: inset 0 -2px 0 #3498db; + box-shadow: inset 0 -2px 0 #3498db; + color: #3498db; +} +.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover { + background: transparent; + -webkit-box-shadow: inset 0 -2px 0 #3498db; + box-shadow: inset 0 -2px 0 #3498db; + color: #3498db; +} +.elfinder .elfinder-dialog label.ui-state-hover { + background: transparent; +} +.std42-dialog .ui-dialog-titlebar { + background: #353b44; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { + border-color: inherit; + -webkit-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + transition: 0.2s ease-out; + opacity: 0.8; + color: #fff; + width: auto; + height: auto; + font-size: 12px; + padding: 3px; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, +.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon { + background-color: #f44336; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon { + background-color: #4caf50; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon { + background-color: #ff9800; +} +.elfinder-dialog-title { + color: #f1f1f1; +} +.std42-dialog .ui-dialog-content { + background: #fff; +} +.ui-widget-content { + font-family: "Noto Sans", sans-serif; + color: #546e7a; +} +.std42-dialog .ui-dialog-buttonpane button { + margin: 2px; + padding: .4em .5em; +} +.std42-dialog .ui-dialog-buttonpane button span.ui-icon { + padding: 0; +} +.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { + width: inherit; + height: inherit; + padding: .4em; + margin-left: 5px; + color: #222; +} +.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover { + background: #888; + color: #fff; + outline: none; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.elfinder-upload-dialog-wrapper .ui-button { + padding: .4em 3px; + margin: 0 2px; +} +.elfinder-upload-dialog-wrapper .ui-button { + margin-left: 19px; + margin-right: -15px; +} +.elfinder-upload-dropbox { + border: 2px dashed #bbb; +} +.elfinder-upload-dropbox:focus { + outline: none; +} +.elfinder-upload-dropbox.ui-state-hover { + background: #f1f1f1; + border: 2px dashed #bbb; +} +.elfinder-help *, +.elfinder-help a { + color: #546e7a; +} diff --git a/apps/static/plugins/elfindler/css/theme-gray.min.css b/apps/static/plugins/elfindler/css/theme-gray.min.css new file mode 100644 index 000000000..a182ae0cc --- /dev/null +++ b/apps/static/plugins/elfindler/css/theme-gray.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Noto Sans';font-style:italic;font-weight:400;src:local('Noto Sans Italic'), local('NotoSans-Italic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0OIpQlx3QUlC5A4PNr4DRF.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:italic;font-weight:700;src:local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0TIpQlx3QUlC5A4PNr4Az5ZtyE.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;src:local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNb4g.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;src:local('Noto Sans Bold'), local('NotoSans-Bold'), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFlYw.ttf) format('truetype')}.elfinder{color:#546e7a;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}.elfinder *{outline:0!important}input.elfinder-tabstop,input.elfinder-tabstop.ui-state-hover,select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{padding:5px;color:#666;background:#fff;-webkit-border-radius:3px;border-radius:3px;font-weight:normal;border-color:#888;-webkit-box-shadow:none!important;box-shadow:none!important}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@-moz-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:1rem 1rem;-o-background-size:1rem 1rem;background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;-moz-animation:progress-animation 1s linear infinite;-o-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498db}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#f44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4caf50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#ff9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white}@font-face{font-family:material;src:url("../icons/material.eot?7028746");src:url("../icons/material.eot?7028746#iefix") format("embedded-opentype"), url("../icons/material.woff2?7028746") format("woff2"), url("../icons/material.woff?7028746") format("woff"), url("../icons/material.ttf?7028746") format("truetype"), url("../icons/material.svg?7028746#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?7028746#material") format("svg")}}.elfinder-button-icon,.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-theme:before{content:'\e859'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-icon-opennew:before{content:'\e85b'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.ui-state-active .elfinder-navbar-icon:before,.ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'}.elfinder-navbar-root-zip .elfinder-navbar-icon:before{content:'\e85c'}.elfinder-navbar-root-network .elfinder-navbar-icon:before{content:'\e823'}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{content:'\e85c'}.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before{content:'\e823'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.ui-button-icon{background-image:inherit}.ui-icon-search:before{content:'\e81f'}.ui-icon-close:before,.ui-icon-closethick:before{content:'\e839'}.ui-icon-circle-close:before{content:'\e84c'}.ui-icon-gear:before{content:'\e82f'}.ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.ui-icon-locked:before{content:'\e834'}.ui-icon-unlocked:before{content:'\e836'}.ui-icon-arrowrefresh-1-n:before{content:'\e821'}.ui-icon-plusthick:before{content:'\e83a'}.ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.ui-icon-minusthick:before{content:'\e83c'}.ui-icon-pin-s:before{content:'\e84d'}.ui-icon-check:before{content:'\e84e'}.ui-icon-arrowthick-1-s:before{content:'\e84f'}.ui-icon-arrowthick-1-n:before{content:'\e850'}.ui-icon-triangle-1-s:before{content:'\e851'}.ui-icon-triangle-1-n:before{content:'\e852'}.ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e834'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498db}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#f44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4caf50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#ff9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.png")}.elfinder-cwd-icon{background:url("../images/icons-big.png") 0 0 no-repeat}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-quicklook .elfinder-cwd-icon:before{top:33px;left:50%!important;position:relative;display:block;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application{background-position:0 -150px}.elfinder-cwd-icon-text{background-position:0 -200px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -350px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-postscript{background-position:0 -400px}.elfinder-cwd-icon-audio{background-position:0 -450px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -500px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd{background-position:0 -550px}.elfinder-cwd-icon-pdf{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess{background-position:0 -650px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -800px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -850px}.elfinder-cwd-icon-html{background-position:0 -900px}.elfinder-cwd-icon-css{background-position:0 -950px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1000px}.elfinder-cwd-icon-x-perl{background-position:0 -1050px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1100px}.elfinder-cwd-icon-x-ruby{background-position:0 -1150px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1200px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1300px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-x-php{background-position:0 -1350px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1400px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1450px}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1500px}.elfinder-cwd-icon-group{background-position:0 -1550px}.elfinder-cwd-icon-json{background-position:0 -1600px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1650px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-sql{background-position:0 -1700px}.elfinder-cwd-icon-sql:before{content:none!important}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml{background-position:0 -1750px}.elfinder-cwd-icon-svg-xml:before,.elfinder-cwd-icon-svg:before{content:none!important}.elfinder-toolbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit;overflow:hidden}.elfinder .elfinder-button-search input{background:rgba(40, 42, 45, 0.79);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-navbar{background:#535e64;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#3c4448;color:#e6e6e6;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#41494e;border:none}.elfinder-workzone{background:#cdcfd4}.elfinder-cwd-file{color:#555}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-file.ui-selected{background:#455158;color:#555;width:120px!important}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;width:100px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent;color:#ddd}.elfinder-cwd table{padding:0}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#4c5961}#elfinder-elfinder-cwd-thead td{background:#353b42;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#30363c}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#2e333a}.ui-selectable-helper{border:1px solid #3b4047;background-color:rgba(104, 111, 121, 0.5)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#4c5961;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#455158;color:#555}.elfinder .elfinder-statusbar{background:#3b4047;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.ui-button,.ui-button.ui-state-default,.ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;-moz-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none}.ui-button .ui-icon,.ui-button.ui-state-default .ui-icon,.ui-button:active .ui-icon{color:#222}.ui-button.ui-state-active,.ui-button.ui-state-hover,.ui-button:active,.ui-button:focus,.ui-button:hover,a.ui-button:active{background:#3498db;color:#fff;border:none}.ui-button.ui-state-active .ui-icon,.ui-button.ui-state-hover .ui-icon,.ui-button:active .ui-icon,.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,a.ui-button:active .ui-icon{color:#fff}.ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.ui-button:focus{outline:none!important}.ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196f3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:3px 0}.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active{padding-bottom:7px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover{background:transparent;-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog label.ui-state-hover{background:transparent}.std42-dialog .ui-dialog-titlebar{background:#353b44;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;-moz-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#f44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4caf50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#ff9800}.elfinder-dialog-title{color:#f1f1f1}.std42-dialog .ui-dialog-content{background:#fff}.ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546e7a}.std42-dialog .ui-dialog-buttonpane button{margin:2px;padding:.4em .5em}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:.4em;margin-left:5px;color:#222}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#888;color:#fff;outline:none;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .ui-button{padding:.4em 3px;margin:0 2px}.elfinder-upload-dialog-wrapper .ui-button{margin-left:19px;margin-right:-15px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-help *,.elfinder-help a{color:#546e7a} \ No newline at end of file diff --git a/apps/static/plugins/elfindler/css/theme.css b/apps/static/plugins/elfindler/css/theme.css new file mode 100755 index 000000000..bbefe6749 --- /dev/null +++ b/apps/static/plugins/elfindler/css/theme.css @@ -0,0 +1,1582 @@ +@font-face { + font-family: 'Noto Sans'; + font-style: italic; + font-weight: 400; + src: local('Noto Sans Italic'), local('NotoSans-Italic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0OIpQlx3QUlC5A4PNr4DRF.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: italic; + font-weight: 700; + src: local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0TIpQlx3QUlC5A4PNr4Az5ZtyE.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNb4g.ttf) format('truetype'); +} +@font-face { + font-family: 'Noto Sans'; + font-style: normal; + font-weight: 700; + src: local('Noto Sans Bold'), local('NotoSans-Bold'), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFlYw.ttf) format('truetype'); +} +.elfinder { + color: #546e7a; + font-family: "Noto Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.elfinder.ui-widget.ui-widget-content { + font-family: "Noto Sans", sans-serif; + -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.elfinder * { + outline: 0 !important; +} +/** + * Input & Select + */ +input.elfinder-tabstop, +input.elfinder-tabstop.ui-state-hover, +select.elfinder-tabstop, +select.elfinder-tabstop.ui-state-hover { + padding: 5px; + color: #666; + background: #fff; + -webkit-border-radius: 3px; + border-radius: 3px; + font-weight: normal; + border-color: #888; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +/** + * Loading + */ +.elfinder-info-spinner, +.elfinder-navbar-spinner, +.elfinder-button-icon-spinner { + background: url("../images/loading.svg") center center no-repeat !important; + width: 16px; + height: 16px; +} +/** + * Progress Bar + */ +@-webkit-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@-moz-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-animation { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} +.elfinder-notify-progressbar { + border: 0; +} +.elfinder-notify-progress, +.elfinder-notify-progressbar { + -webkit-border-radius: 0; + border-radius: 0; +} +.elfinder-notify-progress, +.elfinder-resize-spinner { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 1rem 1rem; + -o-background-size: 1rem 1rem; + background-size: 1rem 1rem; + -webkit-animation: progress-animation 1s linear infinite; + -moz-animation: progress-animation 1s linear infinite; + -o-animation: progress-animation 1s linear infinite; + animation: progress-animation 1s linear infinite; + background-color: #0275d8; + height: 1rem; +} +/** + * Quick Look + */ +.elfinder-quicklook { + background: #232323; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.elfinder-quicklook-titlebar { + background: inherit; +} +.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { + border: inherit; + opacity: inherit; + -webkit-border-radius: 4px; + border-radius: 4px; + background: rgba(66, 66, 66, 0.73); +} +.elfinder .elfinder-navdock { + border: 0; +} +.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon, +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, +.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover, +.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full { + background-image: none; +} +/** + * Toast Notification + */ +.elfinder .elfinder-toast > div { + background-color: #323232 !important; + color: #d6d6d6; + -webkit-box-shadow: none; + box-shadow: none; + opacity: inherit; + padding: 10px 60px; +} +.elfinder .elfinder-toast > div button.ui-button { + color: #fff; +} +.elfinder .elfinder-toast > .toast-info button.ui-button { + background-color: #3498db; +} +.elfinder .elfinder-toast > .toast-error button.ui-button { + background-color: #f44336; +} +.elfinder .elfinder-toast > .toast-success button.ui-button { + background-color: #4caf50; +} +.elfinder .elfinder-toast > .toast-warning button.ui-button { + background-color: #ff9800; +} +.elfinder-toast-msg { + font-family: "Noto Sans", sans-serif; + font-size: 17px; +} +/** + * For Ace Editor + */ +#ace_settingsmenu { + font-family: "Noto Sans", sans-serif; + -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important; + box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important; + background-color: #1d2736 !important; + color: #e6e6e6 !important; +} +#ace_settingsmenu, +#kbshortcutmenu { + padding: 0; +} +.ace_optionsMenuEntry { + padding: 5px 10px; +} +.ace_optionsMenuEntry:hover { + background-color: #111721; +} +.ace_optionsMenuEntry label { + font-size: 13px; +} +#ace_settingsmenu input[type="text"], +#ace_settingsmenu select { + margin: 1px 2px 2px; + padding: 2px 5px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 0; + background: rgba(9, 53, 121, 0.75); + color: white; +} +/** + * Icons + * Webfont is generated by Fontello http://fontello.com + */ +@font-face { + font-family: material; + src: url("../icons/material.eot?7028746"); + src: url("../icons/material.eot?7028746#iefix") format("embedded-opentype"), url("../icons/material.woff2?7028746") format("woff2"), url("../icons/material.woff?7028746") format("woff"), url("../icons/material.ttf?7028746") format("truetype"), url("../icons/material.svg?7028746#material") format("svg"); + font-weight: normal; + font-style: normal; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + @font-face { + font-family: material; + src: url("../icons/material.svg?7028746#material") format("svg"); + } +} +.ui-icon, +.elfinder-button-icon, +.ui-widget-header .ui-icon, +.ui-widget-content .ui-icon { + font: normal normal normal 14px/1 material; + background-image: inherit; + text-indent: inherit; +} +.ui-button-icon-only .ui-icon { + font: normal normal normal 14px/1 material; + background-image: inherit !important; + text-indent: 0; + font-size: 16px; +} +.elfinder-toolbar .elfinder-button-icon { + font-size: 20px; + color: #ddd; + margin-top: -2px; +} +.elfinder-button-icon { + background: inherit; +} +.elfinder-button-icon-home:before { + content: '\e800'; +} +.elfinder-button-icon-back:before { + content: '\e801'; +} +.elfinder-button-icon-forward:before { + content: '\e802'; +} +.elfinder-button-icon-up:before { + content: '\e803'; +} +.elfinder-button-icon-dir:before { + content: '\e804'; +} +.elfinder-button-icon-opendir:before { + content: '\e805'; +} +.elfinder-button-icon-reload:before { + content: '\e806'; +} +.elfinder-button-icon-open:before { + content: '\e807'; +} +.elfinder-button-icon-mkdir:before { + content: '\e808'; +} +.elfinder-button-icon-mkfile:before { + content: '\e809'; +} +.elfinder-button-icon-rm:before { + content: '\e80a'; +} +.elfinder-button-icon-trash:before { + content: '\e80b'; +} +.elfinder-button-icon-restore:before { + content: '\e80c'; +} +.elfinder-button-icon-copy:before { + content: '\e80d'; +} +.elfinder-button-icon-cut:before { + content: '\e80e'; +} +.elfinder-button-icon-paste:before { + content: '\e80f'; +} +.elfinder-button-icon-getfile:before { + content: '\e810'; +} +.elfinder-button-icon-duplicate:before { + content: '\e811'; +} +.elfinder-button-icon-rename:before { + content: '\e812'; +} +.elfinder-button-icon-edit:before { + content: '\e813'; +} +.elfinder-button-icon-quicklook:before { + content: '\e814'; +} +.elfinder-button-icon-upload:before { + content: '\e815'; +} +.elfinder-button-icon-download:before { + content: '\e816'; +} +.elfinder-button-icon-info:before { + content: '\e817'; +} +.elfinder-button-icon-extract:before { + content: '\e818'; +} +.elfinder-button-icon-archive:before { + content: '\e819'; +} +.elfinder-button-icon-view:before { + content: '\e81a'; +} +.elfinder-button-icon-view-list:before { + content: '\e81b'; +} +.elfinder-button-icon-help:before { + content: '\e81c'; +} +.elfinder-button-icon-resize:before { + content: '\e81d'; +} +.elfinder-button-icon-link:before { + content: '\e81e'; +} +.elfinder-button-icon-search:before { + content: '\e81f'; +} +.elfinder-button-icon-sort:before { + content: '\e820'; +} +.elfinder-button-icon-rotate-r:before { + content: '\e821'; +} +.elfinder-button-icon-rotate-l:before { + content: '\e822'; +} +.elfinder-button-icon-netmount:before { + content: '\e823'; +} +.elfinder-button-icon-netunmount:before { + content: '\e824'; +} +.elfinder-button-icon-places:before { + content: '\e825'; +} +.elfinder-button-icon-chmod:before { + content: '\e826'; +} +.elfinder-button-icon-accept:before { + content: '\e827'; +} +.elfinder-button-icon-menu:before { + content: '\e828'; +} +.elfinder-button-icon-colwidth:before { + content: '\e829'; +} +.elfinder-button-icon-fullscreen:before { + content: '\e82a'; +} +.elfinder-button-icon-unfullscreen:before { + content: '\e82b'; +} +.elfinder-button-icon-empty:before { + content: '\e82c'; +} +.elfinder-button-icon-undo:before { + content: '\e82d'; +} +.elfinder-button-icon-redo:before { + content: '\e82e'; +} +.elfinder-button-icon-preference:before { + content: '\e82f'; +} +.elfinder-button-icon-mkdirin:before { + content: '\e830'; +} +.elfinder-button-icon-selectall:before { + content: '\e831'; +} +.elfinder-button-icon-selectnone:before { + content: '\e832'; +} +.elfinder-button-icon-selectinvert:before { + content: '\e833'; +} +.elfinder-button-icon-theme:before { + content: '\e859'; +} +.elfinder-button-icon-logout:before { + content: '\e85a'; +} +.elfinder-button-icon-opennew:before { + content: '\e85b'; +} +.elfinder-button-search .ui-icon.ui-icon-search { + font-size: 17px; +} +.elfinder-button-search .ui-icon:hover { + opacity: 1; +} +.elfinder-navbar-icon { + font: normal normal normal 16px/1 material; + background-image: inherit !important; +} +.elfinder-navbar-icon:before { + content: '\e804'; +} +.elfinder-droppable-active .elfinder-navbar-icon:before, +.ui-state-active .elfinder-navbar-icon:before, +.ui-state-hover .elfinder-navbar-icon:before { + content: '\e805'; +} +.elfinder-navbar-root-local .elfinder-navbar-icon:before { + content: '\e83d'; +} +.elfinder-navbar-root-ftp .elfinder-navbar-icon:before { + content: '\e823'; +} +.elfinder-navbar-root-sql .elfinder-navbar-icon:before { + content: '\e83e'; +} +.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before { + content: '\e83f'; +} +.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before { + content: '\e840'; +} +.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before { + content: '\e841'; +} +.elfinder-navbar-root-box .elfinder-navbar-icon:before { + content: '\e842'; +} +.elfinder-navbar-root-trash .elfinder-navbar-icon:before { + content: '\e80b'; +} +.elfinder-navbar-root-zip .elfinder-navbar-icon:before { + content: '\e85c'; +} +.elfinder-navbar-root-network .elfinder-navbar-icon:before { + content: '\e823'; +} +.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before { + content: '\e825'; +} +.elfinder-navbar-arrow { + background-image: inherit !important; + font: normal normal normal 14px/1 material; + font-size: 10px; + padding-top: 3px; + padding-left: 2px; + color: #a9a9a9; +} +.ui-state-active .elfinder-navbar-arrow { + color: #fff; +} +.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { + content: '\e857'; +} +.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { + content: '\e858'; +} +.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before, +.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before { + content: '\e851'; +} +div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { + font-size: 8px; + margin-top: 5px; + margin-right: 5px; +} +div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical { + margin: 2px; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon, +.elfinder-navbar-root-local .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon, +.elfinder-navbar-root-ftp .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon, +.elfinder-navbar-root-sql .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon, +.elfinder-navbar-root-dropbox .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon, +.elfinder-navbar-root-googledrive .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon, +.elfinder-navbar-root-onedrive .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon, +.elfinder-navbar-root-box .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon, +.elfinder-navbar-root-trash .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon, +.elfinder-navbar-root-zip .elfinder-cwd-icon, +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon, +.elfinder-navbar-root-network .elfinder-cwd-icon { + background-image: inherit; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, +.elfinder-navbar-root-local .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, +.elfinder-navbar-root-ftp .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, +.elfinder-navbar-root-sql .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before, +.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before, +.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before, +.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before, +.elfinder-navbar-root-box .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, +.elfinder-navbar-root-trash .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, +.elfinder-navbar-root-zip .elfinder-cwd-icon:before, +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, +.elfinder-navbar-root-network .elfinder-cwd-icon:before { + font-family: material; + background-color: transparent; + color: #525252; + font-size: 55px; + position: relative; + top: -10px !important; + padding: 0; + display: contents !important; +} +.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, +.elfinder-navbar-root-local .elfinder-cwd-icon:before { + content: '\e83d'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, +.elfinder-navbar-root-ftp .elfinder-cwd-icon:before { + content: '\e823'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, +.elfinder-navbar-root-sql .elfinder-cwd-icon:before { + content: '\e83e'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before { + content: '\e83f'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before { + content: '\e840'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before { + content: '\e841'; +} +.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before, +.elfinder-navbar-roor-box .elfinder-cwd-icon:before { + content: '\e842'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, +.elfinder-navbar-root-trash .elfinder-cwd-icon:before { + content: '\e80b'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, +.elfinder-navbar-root-zip .elfinder-cwd-icon:before { + content: '\e85c'; +} +.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, +.elfinder-navbar-root-network .elfinder-cwd-icon:before { + content: '\e823'; +} +.elfinder-dialog-icon { + font: normal normal normal 14px/1 material; + background: inherit; + color: #524949; + font-size: 37px; +} +.elfinder-dialog-icon:before { + content: '\e843'; +} +.elfinder-dialog-icon-mkdir:before { + content: '\e808'; +} +.elfinder-dialog-icon-mkfile:before { + content: '\e809'; +} +.elfinder-dialog-icon-copy:before { + content: '\e80d'; +} +.elfinder-dialog-icon-prepare:before, +.elfinder-dialog-icon-move:before { + content: '\e844'; +} +.elfinder-dialog-icon-upload:before, +.elfinder-dialog-icon-chunkmerge:before { + content: '\e815'; +} +.elfinder-dialog-icon-rm:before { + content: '\e80a'; +} +.elfinder-dialog-icon-open:before, +.elfinder-dialog-icon-readdir:before, +.elfinder-dialog-icon-file:before { + content: '\e807'; +} +.elfinder-dialog-icon-reload:before { + content: '\e806'; +} +.elfinder-dialog-icon-download:before { + content: '\e816'; +} +.elfinder-dialog-icon-save:before { + content: '\e845'; +} +.elfinder-dialog-icon-rename:before { + content: '\e812'; +} +.elfinder-dialog-icon-zipdl:before, +.elfinder-dialog-icon-archive:before { + content: '\e819'; +} +.elfinder-dialog-icon-extract:before { + content: '\e818'; +} +.elfinder-dialog-icon-search:before { + content: '\e81f'; +} +.elfinder-dialog-icon-loadimg:before { + content: '\e846'; +} +.elfinder-dialog-icon-url:before { + content: '\e81e'; +} +.elfinder-dialog-icon-resize:before { + content: '\e81d'; +} +.elfinder-dialog-icon-netmount:before { + content: '\e823'; +} +.elfinder-dialog-icon-netunmount:before { + content: '\e824'; +} +.elfinder-dialog-icon-chmod:before { + content: '\e826'; +} +.elfinder-dialog-icon-preupload:before, +.elfinder-dialog-icon-dim:before { + content: '\e847'; +} +.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon { + font-size: 16px; +} +.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon { + font-size: 15px; +} +.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before { + content: '\e837'; +} +.elfinder .elfinder-contextmenu-extra-icon { + margin-top: -6px; +} +.elfinder .elfinder-contextmenu-extra-icon a { + padding: 5px; + margin: -16px; +} +.elfinder-button-icon-link:before { + content: '\e81e' !important; +} +.elfinder .elfinder-contextmenu-arrow { + font: normal normal normal 14px/1 material; + background-image: inherit; + font-size: 10px !important; + padding-top: 3px; +} +.elfinder .elfinder-contextmenu-arrow:before { + content: '\e857'; +} +.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { + background-image: inherit; +} +.elfinder-quicklook .ui-resizable-se { + background: inherit; +} +.elfinder-quicklook-navbar-icon { + background: transparent; + font: normal normal normal 14px/1 material; + font-size: 32px; + color: #fff; +} +.elfinder-quicklook-titlebar-icon { + margin-top: -8px; +} +.elfinder-quicklook-titlebar-icon .ui-icon { + border: 0; + opacity: .8; + font-size: 15px; + padding: 1px; +} +.elfinder-quicklook-titlebar .ui-icon-circle-close, +.elfinder-quicklook .ui-icon-gripsmall-diagonal-se { + color: #f1f1f1; +} +.elfinder-quicklook-navbar-icon-prev:before { + content: '\e848'; +} +.elfinder-quicklook-navbar-icon-next:before { + content: '\e849'; +} +.elfinder-quicklook-navbar-icon-fullscreen:before { + content: '\e84a'; +} +.elfinder-quicklook-navbar-icon-fullscreen-off:before { + content: '\e84b'; +} +.elfinder-quicklook-navbar-icon-close:before { + content: '\e84c'; +} +.ui-button-icon { + background-image: inherit; +} +.ui-icon-search:before { + content: '\e81f'; +} +.ui-icon-closethick:before, +.ui-icon-close:before { + content: '\e839'; +} +.ui-icon-circle-close:before { + content: '\e84c'; +} +.ui-icon-gear:before { + content: '\e82f'; +} +.ui-icon-gripsmall-diagonal-se:before { + content: '\e838'; +} +.ui-icon-locked:before { + content: '\e834'; +} +.ui-icon-unlocked:before { + content: '\e836'; +} +.ui-icon-arrowrefresh-1-n:before { + content: '\e821'; +} +.ui-icon-plusthick:before { + content: '\e83a'; +} +.ui-icon-arrowreturnthick-1-s:before { + content: '\e83b'; +} +.ui-icon-minusthick:before { + content: '\e83c'; +} +.ui-icon-pin-s:before { + content: '\e84d'; +} +.ui-icon-check:before { + content: '\e84e'; +} +.ui-icon-arrowthick-1-s:before { + content: '\e84f'; +} +.ui-icon-arrowthick-1-n:before { + content: '\e850'; +} +.ui-icon-triangle-1-s:before { + content: '\e851'; +} +.ui-icon-triangle-1-n:before { + content: '\e852'; +} +.ui-icon-grip-dotted-vertical:before { + content: '\e853'; +} +.elfinder-lock, +.elfinder-perms, +.elfinder-symlink { + background-image: inherit; + font: normal normal normal 18px/1 material; + color: #4d4d4d; +} +.elfinder-na .elfinder-perms:before { + content: '\e824'; +} +.elfinder-ro .elfinder-perms:before { + content: '\e835'; +} +.elfinder-wo .elfinder-perms:before { + content: '\e854'; +} +.elfinder-group .elfinder-perms:before { + content: '\e800'; +} +.elfinder-lock:before { + content: '\e834'; +} +.elfinder-symlink:before { + content: '\e837'; +} +.elfinder .elfinder-toast > div { + font: normal normal normal 14px/1 material; +} +.elfinder .elfinder-toast > div:before { + font-size: 45px; + position: absolute; + left: 5px; + top: 15px; +} +.elfinder .elfinder-toast > .toast-info, +.elfinder .elfinder-toast > .toast-error, +.elfinder .elfinder-toast > .toast-success, +.elfinder .elfinder-toast > .toast-warning { + background-image: inherit !important; +} +.elfinder .elfinder-toast > .toast-info:before { + content: '\e817'; + color: #3498db; +} +.elfinder .elfinder-toast > .toast-error:before { + content: '\e855'; + color: #f44336; +} +.elfinder .elfinder-toast > .toast-success:before { + content: '\e84e'; + color: #4caf50; +} +.elfinder .elfinder-toast > .toast-warning:before { + content: '\e856'; + color: #ff9800; +} +.elfinder-drag-helper-icon-status { + font: normal normal normal 14px/1 material; + background: inherit; +} +.elfinder-drag-helper-icon-status:before { + content: '\e824'; +} +.elfinder-drag-helper-move .elfinder-drag-helper-icon-status { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before { + content: '\e854'; +} +.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before { + content: '\e84c'; +} +/** + * MIME Types + */ +.elfinder-cwd-view-list td .elfinder-cwd-icon { + background-image: url("../images/icons-small.png"); +} +.elfinder-cwd-icon { + background: url("../images/icons-big.png") 0 0 no-repeat; +} +.elfinder-cwd-icon:before { + font-size: 10px; + position: relative; + top: 27px; + left: inherit; + padding: 1px; + background-color: transparent; +} +.elfinder-info-title .elfinder-cwd-icon:before { + top: 32px; + display: block; + margin: 0 auto; +} +.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + background-color: #313131 !important; +} +.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { + left: inherit; + background-color: #313131; +} +.elfinder-quicklook .elfinder-cwd-icon:before { + top: 33px; + left: 50% !important; + position: relative; + display: block; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); +} +.elfinder-cwd-icon-zip:before, +.elfinder-cwd-icon-x-zip:before { + content: 'zip' !important; +} +.elfinder-cwd-icon-x-xz:before { + content: 'xz' !important; +} +.elfinder-cwd-icon-x-7z-compressed:before { + content: '7z' !important; +} +.elfinder-cwd-icon-x-gzip:before { + content: 'gzip' !important; +} +.elfinder-cwd-icon-x-tar:before { + content: 'tar' !important; +} +.elfinder-cwd-icon-x-bzip:before, +.elfinder-cwd-icon-x-bzip2:before { + content: 'bzip' !important; +} +.elfinder-cwd-icon-x-rar:before, +.elfinder-cwd-icon-x-rar-compressed:before { + content: 'rar' !important; +} +.elfinder-cwd-icon-directory { + background-position: 0 -50px; +} +.elfinder-cwd-icon-application { + background-position: 0 -150px; +} +.elfinder-cwd-icon-text { + background-position: 0 -200px; +} +.elfinder-cwd-icon-plain, +.elfinder-cwd-icon-x-empty { + background-position: 0 -250px; +} +.elfinder-cwd-icon-image { + background-position: 0 -300px; +} +.elfinder-cwd-icon-vnd-adobe-photoshop { + background-position: 0 -350px; +} +.elfinder-cwd-icon-vnd-adobe-photoshop:before { + content: none !important; +} +.elfinder-cwd-icon-postscript { + background-position: 0 -400px; +} +.elfinder-cwd-icon-audio { + background-position: 0 -450px; +} +.elfinder-cwd-icon-video, +.elfinder-cwd-icon-flash-video, +.elfinder-cwd-icon-dash-xml, +.elfinder-cwd-icon-vnd-apple-mpegurl, +.elfinder-cwd-icon-x-mpegurl { + background-position: 0 -500px; +} +.elfinder-cwd-icon-rtf, +.elfinder-cwd-icon-rtfd { + background-position: 0 -550px; +} +.elfinder-cwd-icon-pdf { + background-position: 0 -600px; +} +.elfinder-cwd-icon-x-msaccess { + background-position: 0 -650px; +} +.elfinder-cwd-icon-x-msaccess:before { + content: none !important; +} +.elfinder-cwd-icon-msword, +.elfinder-cwd-icon-vnd-ms-word, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 { + background-position: 0 -700px; +} +.elfinder-cwd-icon-msword:before, +.elfinder-cwd-icon-vnd-ms-word:before, +.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-ms-excel, +.elfinder-cwd-icon-vnd-ms-excel, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 { + background-position: 0 -750px; +} +.elfinder-cwd-icon-ms-excel:before, +.elfinder-cwd-icon-vnd-ms-excel:before, +.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-vnd-ms-powerpoint, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 { + background-position: 0 -800px; +} +.elfinder-cwd-icon-vnd-ms-powerpoint:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before, +.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before { + content: none !important; +} +.elfinder-cwd-icon-vnd-ms-office, +.elfinder-cwd-icon-vnd-oasis-opendocument-chart, +.elfinder-cwd-icon-vnd-oasis-opendocument-database, +.elfinder-cwd-icon-vnd-oasis-opendocument-formula, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics, +.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-image, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation, +.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, +.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-text, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-master, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-template, +.elfinder-cwd-icon-vnd-oasis-opendocument-text-web, +.elfinder-cwd-icon-vnd-openofficeorg-extension, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, +.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template { + background-position: 0 -850px; +} +.elfinder-cwd-icon-html { + background-position: 0 -900px; +} +.elfinder-cwd-icon-css { + background-position: 0 -950px; +} +.elfinder-cwd-icon-javascript, +.elfinder-cwd-icon-x-javascript { + background-position: 0 -1000px; +} +.elfinder-cwd-icon-x-perl { + background-position: 0 -1050px; +} +.elfinder-cwd-icon-x-python:after, +.elfinder-cwd-icon-x-python { + background-position: 0 -1100px; +} +.elfinder-cwd-icon-x-ruby { + background-position: 0 -1150px; +} +.elfinder-cwd-icon-x-sh, +.elfinder-cwd-icon-x-shellscript { + background-position: 0 -1200px; +} +.elfinder-cwd-icon-x-c, +.elfinder-cwd-icon-x-csrc, +.elfinder-cwd-icon-x-chdr, +.elfinder-cwd-icon-x-c--, +.elfinder-cwd-icon-x-c--src, +.elfinder-cwd-icon-x-c--hdr { + background-position: 0 -1250px; +} +.elfinder-cwd-icon-x-jar, +.elfinder-cwd-icon-x-java, +.elfinder-cwd-icon-x-java-source { + background-position: 0 -1300px; +} +.elfinder-cwd-icon-x-jar:before, +.elfinder-cwd-icon-x-java:before, +.elfinder-cwd-icon-x-java-source:before { + content: none !important; +} +.elfinder-cwd-icon-x-php { + background-position: 0 -1350px; +} +.elfinder-cwd-icon-xml:after, +.elfinder-cwd-icon-xml { + background-position: 0 -1400px; +} +.elfinder-cwd-icon-zip, +.elfinder-cwd-icon-x-zip, +.elfinder-cwd-icon-x-xz, +.elfinder-cwd-icon-x-7z-compressed, +.elfinder-cwd-icon-x-gzip, +.elfinder-cwd-icon-x-tar, +.elfinder-cwd-icon-x-bzip, +.elfinder-cwd-icon-x-bzip2, +.elfinder-cwd-icon-x-rar, +.elfinder-cwd-icon-x-rar-compressed { + background-position: 0 -1450px; +} +.elfinder-cwd-icon-x-shockwave-flash { + background-position: 0 -1500px; +} +.elfinder-cwd-icon-group { + background-position: 0 -1550px; +} +.elfinder-cwd-icon-json { + background-position: 0 -1600px; +} +.elfinder-cwd-icon-json:before { + content: none !important; +} +.elfinder-cwd-icon-markdown, +.elfinder-cwd-icon-x-markdown { + background-position: 0 -1650px; +} +.elfinder-cwd-icon-markdown:before, +.elfinder-cwd-icon-x-markdown:before { + content: none !important; +} +.elfinder-cwd-icon-sql { + background-position: 0 -1700px; +} +.elfinder-cwd-icon-sql:before { + content: none !important; +} +.elfinder-cwd-icon-svg, +.elfinder-cwd-icon-svg-xml { + background-position: 0 -1750px; +} +.elfinder-cwd-icon-svg:before, +.elfinder-cwd-icon-svg-xml:before { + content: none !important; +} +/** + * Toolbar + */ +.elfinder-toolbar { + background: #061325; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + padding: 5px 0; +} +.elfinder-buttonset { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + margin: 0 5px; + height: 24px; +} +.elfinder .elfinder-button { + background: transparent; + -webkit-border-radius: 0; + border-radius: 0; + cursor: pointer; + color: #efefef; +} +.elfinder-toolbar-button-separator { + border: 0; +} +.elfinder-button-menu { + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + border: none; + margin-top: 5px; +} +.elfinder-button-menu-item { + color: #666; + padding: 6px 19px; +} +.elfinder-button-menu-item.ui-state-hover { + color: #141414; + background-color: #f5f4f4; +} +.elfinder-button-menu-item-separated { + border-top: 1px solid #e5e5e5; +} +.elfinder-button-menu-item-separated.ui-state-hover { + border-top: 1px solid #e5e5e5; +} +.elfinder .elfinder-button-search { + margin: 0 10px; + min-height: inherit; + overflow: hidden; +} +.elfinder .elfinder-button-search input { + background: rgba(22, 43, 76, 0.75); + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + border: 0; + margin: 0; + padding: 0 23px; + height: 24px; + color: #fff; +} +.elfinder .elfinder-button-search .elfinder-button-menu { + margin-top: 4px; + border: none; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); +} +/** + * Navbar + */ +.elfinder .elfinder-navbar { + background: #2a384d; + -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); + border: none; +} +.elfinder-navbar-dir { + color: #e6e6e6; + cursor: pointer; + -webkit-border-radius: 2px; + border-radius: 2px; + padding: 5px; + border: none; +} +.elfinder-navbar-dir.ui-state-hover, +.elfinder-navbar-dir.ui-state-active.ui-state-hover { + background: #17202c; + color: #e6e6e6; + border: none; +} +.elfinder-navbar .ui-state-active, +.elfinder-disabled .elfinder-navbar .ui-state-active { + background: #1b2533; + border: none; +} +/** + * Workzone + */ +.elfinder-workzone { + background: #0e1827; +} +.elfinder-cwd-file { + color: #ddd; +} +.elfinder-cwd-file.ui-state-hover, +.elfinder-cwd-file.ui-selected.ui-state-hover { + background: #1a283c; + color: #ddd; +} +.elfinder-cwd-file.ui-selected { + background: #152131; + color: #ddd; + width: 120px !important; +} +.elfinder-cwd-filename input, +.elfinder-cwd-filename textarea { + padding: 2px; + -webkit-border-radius: 2px !important; + border-radius: 2px !important; + width: 100px !important; + background: #fff; + color: #222; +} +.elfinder-cwd-filename input:focus, +.elfinder-cwd-filename textarea:focus { + outline: none; + border: 1px solid #555; +} +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover, +.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, +.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, +.elfinder-disabled .elfinder-cwd table td.ui-state-hover, +.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { + background: transparent; + color: #ddd; +} +.elfinder-cwd table { + padding: 0; +} +.elfinder-cwd table tr:nth-child(odd) { + background-color: transparent; +} +.elfinder-cwd table tr:nth-child(odd).ui-state-hover { + background-color: #1a283c; +} +#elfinder-elfinder-cwd-thead td { + background: #010e21; + color: #ddd; +} +#elfinder-elfinder-cwd-thead td.ui-state-hover, +#elfinder-elfinder-cwd-thead td.ui-state-active { + background: #010a17; +} +#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover { + background: #010812; +} +.ui-selectable-helper { + border: 1px solid #022861; + background-color: rgba(3, 62, 150, 0.38); +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash { + background-color: #e4e4e4; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file { + color: #333; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover, +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover { + background: #1a283c; + color: #ddd; +} +.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected { + background: #152131; + color: #ddd; +} +/** + * Status Bar + */ +.elfinder .elfinder-statusbar { + background: #061325; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + color: #cfd2d4; +} +.elfinder-path, +.elfinder-stat-size { + margin: 0 15px; +} +/** + * Buttons + */ +.ui-button, +.ui-button:active, +.ui-button.ui-state-default { + display: inline-block; + font-weight: normal; + text-align: center; + vertical-align: middle; + cursor: pointer; + white-space: nowrap; + -webkit-border-radius: 3px; + border-radius: 3px; + text-transform: uppercase; + -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); + -webkit-transition: all 0.4s; + -o-transition: all 0.4s; + -moz-transition: all 0.4s; + transition: all 0.4s; + background: #fff; + color: #222; + border: none; +} +.ui-button .ui-icon, +.ui-button:active .ui-icon, +.ui-button.ui-state-default .ui-icon { + color: #222; +} +.ui-button:hover, +a.ui-button:active, +.ui-button:active, +.ui-button:focus, +.ui-button.ui-state-hover, +.ui-button.ui-state-active { + background: #3498db; + color: #fff; + border: none; +} +.ui-button:hover .ui-icon, +a.ui-button:active .ui-icon, +.ui-button:active .ui-icon, +.ui-button:focus .ui-icon, +.ui-button.ui-state-hover .ui-icon, +.ui-button.ui-state-active .ui-icon { + color: #fff; +} +.ui-button.ui-state-active:hover { + background: #217dbb; + color: #fff; + border: none; +} +.ui-button:focus { + outline: none !important; +} +.ui-controlgroup-horizontal .ui-button { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +/** + * Context Menu + */ +.elfinder .elfinder-contextmenu, +.elfinder .elfinder-contextmenu-sub { + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + border: none; +} +.elfinder .elfinder-contextmenu-separator, +.elfinder .elfinder-contextmenu-sub-separator { + border-top: 1px solid #e5e5e5; +} +.elfinder .elfinder-contextmenu-item { + color: #666; + padding: 5px 30px; +} +.elfinder .elfinder-contextmenu-item.ui-state-hover { + background-color: #f5f4f4; + color: #141414; +} +.elfinder .elfinder-contextmenu-item.ui-state-active { + background-color: #2196f3; + color: #fff; +} +/** + * Dialogs + */ +.elfinder .elfinder-dialog { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + -webkit-box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6); +} +.elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] { + padding: 0; +} +.elfinder .elfinder-dialog .ui-tabs { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.elfinder .elfinder-dialog .ui-tabs-nav { + -webkit-border-radius: 0; + border-radius: 0; + border: 0; + background: transparent; + border-bottom: 1px solid #ddd; +} +.elfinder .elfinder-dialog .ui-tabs-nav li { + border: 0; + font-weight: normal; + background: transparent; + margin: 0; + padding: 3px 0; +} +.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active { + padding-bottom: 7px; +} +.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a, +.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a, +.elfinder .elfinder-dialog .ui-tabs-nav li:hover a { + -webkit-box-shadow: inset 0 -2px 0 #3498db; + box-shadow: inset 0 -2px 0 #3498db; + color: #3498db; +} +.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover { + background: transparent; + -webkit-box-shadow: inset 0 -2px 0 #3498db; + box-shadow: inset 0 -2px 0 #3498db; + color: #3498db; +} +.elfinder .elfinder-dialog label.ui-state-hover { + background: transparent; +} +.std42-dialog .ui-dialog-titlebar { + background: #0f1f2f; + -webkit-border-radius: 0; + border-radius: 0; + border: 0; +} +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { + border-color: inherit; + -webkit-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + transition: 0.2s ease-out; + opacity: 0.8; + color: #fff; + width: auto; + height: auto; + font-size: 12px; + padding: 3px; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, +.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon { + background-color: #f44336; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon { + background-color: #4caf50; +} +.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, +.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon { + background-color: #ff9800; +} +.elfinder-dialog-title { + color: #f1f1f1; +} +.std42-dialog .ui-dialog-content { + background: #fff; +} +.ui-widget-content { + font-family: "Noto Sans", sans-serif; + color: #546e7a; +} +.std42-dialog .ui-dialog-buttonpane button { + margin: 2px; + padding: .4em .5em; +} +.std42-dialog .ui-dialog-buttonpane button span.ui-icon { + padding: 0; +} +.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { + width: inherit; + height: inherit; + padding: .4em; + margin-left: 5px; + color: #222; +} +.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover { + background: #888; + color: #fff; + outline: none; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.elfinder-upload-dialog-wrapper .ui-button { + padding: .4em 3px; + margin: 0 2px; +} +.elfinder-upload-dialog-wrapper .ui-button { + margin-left: 19px; + margin-right: -15px; +} +.elfinder-upload-dropbox { + border: 2px dashed #bbb; +} +.elfinder-upload-dropbox:focus { + outline: none; +} +.elfinder-upload-dropbox.ui-state-hover { + background: #f1f1f1; + border: 2px dashed #bbb; +} +.elfinder-help *, +.elfinder-help a { + color: #546e7a; +} diff --git a/apps/static/plugins/elfindler/css/theme.min.css b/apps/static/plugins/elfindler/css/theme.min.css new file mode 100644 index 000000000..b37ddd3ec --- /dev/null +++ b/apps/static/plugins/elfindler/css/theme.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Noto Sans';font-style:italic;font-weight:400;src:local('Noto Sans Italic'), local('NotoSans-Italic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0OIpQlx3QUlC5A4PNr4DRF.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:italic;font-weight:700;src:local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), url(https://fonts.gstatic.com/s/notosans/v7/o-0TIpQlx3QUlC5A4PNr4Az5ZtyE.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;src:local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v7/o-0IIpQlx3QUlC5A4PNb4g.ttf) format('truetype')}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;src:local('Noto Sans Bold'), local('NotoSans-Bold'), url(https://fonts.gstatic.com/s/notosans/v7/o-0NIpQlx3QUlC5A4PNjXhFlYw.ttf) format('truetype')}.elfinder{color:#546e7a;font-family:"Noto Sans", sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.elfinder.ui-widget.ui-widget-content{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);-webkit-border-radius:0;border-radius:0;border:0}.elfinder *{outline:0!important}input.elfinder-tabstop,input.elfinder-tabstop.ui-state-hover,select.elfinder-tabstop,select.elfinder-tabstop.ui-state-hover{padding:5px;color:#666;background:#fff;-webkit-border-radius:3px;border-radius:3px;font-weight:normal;border-color:#888;-webkit-box-shadow:none!important;box-shadow:none!important}.elfinder-button-icon-spinner,.elfinder-info-spinner,.elfinder-navbar-spinner{background:url("../images/loading.svg") center center no-repeat!important;width:16px;height:16px}@-webkit-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@-moz-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-animation{0%{background-position:1rem 0}to{background-position:0 0}}.elfinder-notify-progressbar{border:0}.elfinder-notify-progress,.elfinder-notify-progressbar{-webkit-border-radius:0;border-radius:0}.elfinder-notify-progress,.elfinder-resize-spinner{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:1rem 1rem;-o-background-size:1rem 1rem;background-size:1rem 1rem;-webkit-animation:progress-animation 1s linear infinite;-moz-animation:progress-animation 1s linear infinite;-o-animation:progress-animation 1s linear infinite;animation:progress-animation 1s linear infinite;background-color:#0275d8;height:1rem}.elfinder-quicklook{background:#232323;-webkit-border-radius:2px;border-radius:2px}.elfinder-quicklook-titlebar{background:inherit}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{border:inherit;opacity:inherit;-webkit-border-radius:4px;border-radius:4px;background:rgba(66, 66, 66, 0.73)}.elfinder .elfinder-navdock{border:0}.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full,.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-image:none}.elfinder .elfinder-toast>div{background-color:#323232!important;color:#d6d6d6;-webkit-box-shadow:none;box-shadow:none;opacity:inherit;padding:10px 60px}.elfinder .elfinder-toast>div button.ui-button{color:#fff}.elfinder .elfinder-toast>.toast-info button.ui-button{background-color:#3498db}.elfinder .elfinder-toast>.toast-error button.ui-button{background-color:#f44336}.elfinder .elfinder-toast>.toast-success button.ui-button{background-color:#4caf50}.elfinder .elfinder-toast>.toast-warning button.ui-button{background-color:#ff9800}.elfinder-toast-msg{font-family:"Noto Sans", sans-serif;font-size:17px}#ace_settingsmenu{font-family:"Noto Sans", sans-serif;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)!important;background-color:#1d2736!important;color:#e6e6e6!important}#ace_settingsmenu,#kbshortcutmenu{padding:0}.ace_optionsMenuEntry{padding:5px 10px}.ace_optionsMenuEntry:hover{background-color:#111721}.ace_optionsMenuEntry label{font-size:13px}#ace_settingsmenu input[type=text],#ace_settingsmenu select{margin:1px 2px 2px;padding:2px 5px;-webkit-border-radius:3px;border-radius:3px;border:0;background:rgba(9, 53, 121, 0.75);color:white}@font-face{font-family:material;src:url("../icons/material.eot?7028746");src:url("../icons/material.eot?7028746#iefix") format("embedded-opentype"), url("../icons/material.woff2?7028746") format("woff2"), url("../icons/material.woff?7028746") format("woff"), url("../icons/material.ttf?7028746") format("truetype"), url("../icons/material.svg?7028746#material") format("svg");font-weight:normal;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:material;src:url("../icons/material.svg?7028746#material") format("svg")}}.elfinder-button-icon,.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit;text-indent:inherit}.ui-button-icon-only .ui-icon{font:normal normal normal 14px/1 material;background-image:inherit!important;text-indent:0;font-size:16px}.elfinder-toolbar .elfinder-button-icon{font-size:20px;color:#ddd;margin-top:-2px}.elfinder-button-icon{background:inherit}.elfinder-button-icon-home:before{content:'\e800'}.elfinder-button-icon-back:before{content:'\e801'}.elfinder-button-icon-forward:before{content:'\e802'}.elfinder-button-icon-up:before{content:'\e803'}.elfinder-button-icon-dir:before{content:'\e804'}.elfinder-button-icon-opendir:before{content:'\e805'}.elfinder-button-icon-reload:before{content:'\e806'}.elfinder-button-icon-open:before{content:'\e807'}.elfinder-button-icon-mkdir:before{content:'\e808'}.elfinder-button-icon-mkfile:before{content:'\e809'}.elfinder-button-icon-rm:before{content:'\e80a'}.elfinder-button-icon-trash:before{content:'\e80b'}.elfinder-button-icon-restore:before{content:'\e80c'}.elfinder-button-icon-copy:before{content:'\e80d'}.elfinder-button-icon-cut:before{content:'\e80e'}.elfinder-button-icon-paste:before{content:'\e80f'}.elfinder-button-icon-getfile:before{content:'\e810'}.elfinder-button-icon-duplicate:before{content:'\e811'}.elfinder-button-icon-rename:before{content:'\e812'}.elfinder-button-icon-edit:before{content:'\e813'}.elfinder-button-icon-quicklook:before{content:'\e814'}.elfinder-button-icon-upload:before{content:'\e815'}.elfinder-button-icon-download:before{content:'\e816'}.elfinder-button-icon-info:before{content:'\e817'}.elfinder-button-icon-extract:before{content:'\e818'}.elfinder-button-icon-archive:before{content:'\e819'}.elfinder-button-icon-view:before{content:'\e81a'}.elfinder-button-icon-view-list:before{content:'\e81b'}.elfinder-button-icon-help:before{content:'\e81c'}.elfinder-button-icon-resize:before{content:'\e81d'}.elfinder-button-icon-link:before{content:'\e81e'}.elfinder-button-icon-search:before{content:'\e81f'}.elfinder-button-icon-sort:before{content:'\e820'}.elfinder-button-icon-rotate-r:before{content:'\e821'}.elfinder-button-icon-rotate-l:before{content:'\e822'}.elfinder-button-icon-netmount:before{content:'\e823'}.elfinder-button-icon-netunmount:before{content:'\e824'}.elfinder-button-icon-places:before{content:'\e825'}.elfinder-button-icon-chmod:before{content:'\e826'}.elfinder-button-icon-accept:before{content:'\e827'}.elfinder-button-icon-menu:before{content:'\e828'}.elfinder-button-icon-colwidth:before{content:'\e829'}.elfinder-button-icon-fullscreen:before{content:'\e82a'}.elfinder-button-icon-unfullscreen:before{content:'\e82b'}.elfinder-button-icon-empty:before{content:'\e82c'}.elfinder-button-icon-undo:before{content:'\e82d'}.elfinder-button-icon-redo:before{content:'\e82e'}.elfinder-button-icon-preference:before{content:'\e82f'}.elfinder-button-icon-mkdirin:before{content:'\e830'}.elfinder-button-icon-selectall:before{content:'\e831'}.elfinder-button-icon-selectnone:before{content:'\e832'}.elfinder-button-icon-selectinvert:before{content:'\e833'}.elfinder-button-icon-theme:before{content:'\e859'}.elfinder-button-icon-logout:before{content:'\e85a'}.elfinder-button-icon-opennew:before{content:'\e85b'}.elfinder-button-search .ui-icon.ui-icon-search{font-size:17px}.elfinder-button-search .ui-icon:hover{opacity:1}.elfinder-navbar-icon{font:normal normal normal 16px/1 material;background-image:inherit!important}.elfinder-navbar-icon:before{content:'\e804'}.elfinder-droppable-active .elfinder-navbar-icon:before,.ui-state-active .elfinder-navbar-icon:before,.ui-state-hover .elfinder-navbar-icon:before{content:'\e805'}.elfinder-navbar-root-local .elfinder-navbar-icon:before{content:'\e83d'}.elfinder-navbar-root-ftp .elfinder-navbar-icon:before{content:'\e823'}.elfinder-navbar-root-sql .elfinder-navbar-icon:before{content:'\e83e'}.elfinder-navbar-root-dropbox .elfinder-navbar-icon:before{content:'\e83f'}.elfinder-navbar-root-googledrive .elfinder-navbar-icon:before{content:'\e840'}.elfinder-navbar-root-onedrive .elfinder-navbar-icon:before{content:'\e841'}.elfinder-navbar-root-box .elfinder-navbar-icon:before{content:'\e842'}.elfinder-navbar-root-trash .elfinder-navbar-icon:before{content:'\e80b'}.elfinder-navbar-root-zip .elfinder-navbar-icon:before{content:'\e85c'}.elfinder-navbar-root-network .elfinder-navbar-icon:before{content:'\e823'}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before{content:'\e825'}.elfinder-navbar-arrow{background-image:inherit!important;font:normal normal normal 14px/1 material;font-size:10px;padding-top:3px;padding-left:2px;color:#a9a9a9}.ui-state-active .elfinder-navbar-arrow{color:#fff}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e857'}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before{content:'\e858'}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before{content:'\e851'}div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon{font-size:8px;margin-top:5px;margin-right:5px}div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical{margin:2px}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon,.elfinder-navbar-root-box .elfinder-cwd-icon,.elfinder-navbar-root-dropbox .elfinder-cwd-icon,.elfinder-navbar-root-ftp .elfinder-cwd-icon,.elfinder-navbar-root-googledrive .elfinder-cwd-icon,.elfinder-navbar-root-local .elfinder-cwd-icon,.elfinder-navbar-root-network .elfinder-cwd-icon,.elfinder-navbar-root-onedrive .elfinder-cwd-icon,.elfinder-navbar-root-sql .elfinder-cwd-icon,.elfinder-navbar-root-trash .elfinder-cwd-icon,.elfinder-navbar-root-zip .elfinder-cwd-icon{background-image:inherit}.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-box .elfinder-cwd-icon:before,.elfinder-navbar-root-dropbox .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before,.elfinder-navbar-root-googledrive .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before,.elfinder-navbar-root-onedrive .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{font-family:material;background-color:transparent;color:#525252;font-size:55px;position:relative;top:-10px!important;padding:0;display:contents!important}.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before,.elfinder-navbar-root-local .elfinder-cwd-icon:before{content:'\e83d'}.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before,.elfinder-navbar-root-ftp .elfinder-cwd-icon:before{content:'\e823'}.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before,.elfinder-navbar-root-sql .elfinder-cwd-icon:before{content:'\e83e'}.elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before,.elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before{content:'\e83f'}.elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before{content:'\e840'}.elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before,.elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before{content:'\e841'}.elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before,.elfinder-navbar-roor-box .elfinder-cwd-icon:before{content:'\e842'}.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before,.elfinder-navbar-root-trash .elfinder-cwd-icon:before{content:'\e80b'}.elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before,.elfinder-navbar-root-zip .elfinder-cwd-icon:before{content:'\e85c'}.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before,.elfinder-navbar-root-network .elfinder-cwd-icon:before{content:'\e823'}.elfinder-dialog-icon{font:normal normal normal 14px/1 material;background:inherit;color:#524949;font-size:37px}.elfinder-dialog-icon:before{content:'\e843'}.elfinder-dialog-icon-mkdir:before{content:'\e808'}.elfinder-dialog-icon-mkfile:before{content:'\e809'}.elfinder-dialog-icon-copy:before{content:'\e80d'}.elfinder-dialog-icon-move:before,.elfinder-dialog-icon-prepare:before{content:'\e844'}.elfinder-dialog-icon-chunkmerge:before,.elfinder-dialog-icon-upload:before{content:'\e815'}.elfinder-dialog-icon-rm:before{content:'\e80a'}.elfinder-dialog-icon-file:before,.elfinder-dialog-icon-open:before,.elfinder-dialog-icon-readdir:before{content:'\e807'}.elfinder-dialog-icon-reload:before{content:'\e806'}.elfinder-dialog-icon-download:before{content:'\e816'}.elfinder-dialog-icon-save:before{content:'\e845'}.elfinder-dialog-icon-rename:before{content:'\e812'}.elfinder-dialog-icon-archive:before,.elfinder-dialog-icon-zipdl:before{content:'\e819'}.elfinder-dialog-icon-extract:before{content:'\e818'}.elfinder-dialog-icon-search:before{content:'\e81f'}.elfinder-dialog-icon-loadimg:before{content:'\e846'}.elfinder-dialog-icon-url:before{content:'\e81e'}.elfinder-dialog-icon-resize:before{content:'\e81d'}.elfinder-dialog-icon-netmount:before{content:'\e823'}.elfinder-dialog-icon-netunmount:before{content:'\e824'}.elfinder-dialog-icon-chmod:before{content:'\e826'}.elfinder-dialog-icon-dim:before,.elfinder-dialog-icon-preupload:before{content:'\e847'}.elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon{font-size:16px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon{font-size:15px}.elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before{content:'\e837'}.elfinder .elfinder-contextmenu-extra-icon{margin-top:-6px}.elfinder .elfinder-contextmenu-extra-icon a{padding:5px;margin:-16px}.elfinder-button-icon-link:before{content:'\e81e'!important}.elfinder .elfinder-contextmenu-arrow{font:normal normal normal 14px/1 material;background-image:inherit;font-size:10px!important;padding-top:3px}.elfinder .elfinder-contextmenu-arrow:before{content:'\e857'}.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow{background-image:inherit}.elfinder-quicklook .ui-resizable-se{background:inherit}.elfinder-quicklook-navbar-icon{background:transparent;font:normal normal normal 14px/1 material;font-size:32px;color:#fff}.elfinder-quicklook-titlebar-icon{margin-top:-8px}.elfinder-quicklook-titlebar-icon .ui-icon{border:0;opacity:.8;font-size:15px;padding:1px}.elfinder-quicklook-titlebar .ui-icon-circle-close,.elfinder-quicklook .ui-icon-gripsmall-diagonal-se{color:#f1f1f1}.elfinder-quicklook-navbar-icon-prev:before{content:'\e848'}.elfinder-quicklook-navbar-icon-next:before{content:'\e849'}.elfinder-quicklook-navbar-icon-fullscreen:before{content:'\e84a'}.elfinder-quicklook-navbar-icon-fullscreen-off:before{content:'\e84b'}.elfinder-quicklook-navbar-icon-close:before{content:'\e84c'}.ui-button-icon{background-image:inherit}.ui-icon-search:before{content:'\e81f'}.ui-icon-close:before,.ui-icon-closethick:before{content:'\e839'}.ui-icon-circle-close:before{content:'\e84c'}.ui-icon-gear:before{content:'\e82f'}.ui-icon-gripsmall-diagonal-se:before{content:'\e838'}.ui-icon-locked:before{content:'\e834'}.ui-icon-unlocked:before{content:'\e836'}.ui-icon-arrowrefresh-1-n:before{content:'\e821'}.ui-icon-plusthick:before{content:'\e83a'}.ui-icon-arrowreturnthick-1-s:before{content:'\e83b'}.ui-icon-minusthick:before{content:'\e83c'}.ui-icon-pin-s:before{content:'\e84d'}.ui-icon-check:before{content:'\e84e'}.ui-icon-arrowthick-1-s:before{content:'\e84f'}.ui-icon-arrowthick-1-n:before{content:'\e850'}.ui-icon-triangle-1-s:before{content:'\e851'}.ui-icon-triangle-1-n:before{content:'\e852'}.ui-icon-grip-dotted-vertical:before{content:'\e853'}.elfinder-lock,.elfinder-perms,.elfinder-symlink{background-image:inherit;font:normal normal normal 18px/1 material;color:#4d4d4d}.elfinder-na .elfinder-perms:before{content:'\e824'}.elfinder-ro .elfinder-perms:before{content:'\e835'}.elfinder-wo .elfinder-perms:before{content:'\e854'}.elfinder-group .elfinder-perms:before{content:'\e800'}.elfinder-lock:before{content:'\e834'}.elfinder-symlink:before{content:'\e837'}.elfinder .elfinder-toast>div{font:normal normal normal 14px/1 material}.elfinder .elfinder-toast>div:before{font-size:45px;position:absolute;left:5px;top:15px}.elfinder .elfinder-toast>.toast-error,.elfinder .elfinder-toast>.toast-info,.elfinder .elfinder-toast>.toast-success,.elfinder .elfinder-toast>.toast-warning{background-image:inherit!important}.elfinder .elfinder-toast>.toast-info:before{content:'\e817';color:#3498db}.elfinder .elfinder-toast>.toast-error:before{content:'\e855';color:#f44336}.elfinder .elfinder-toast>.toast-success:before{content:'\e84e';color:#4caf50}.elfinder .elfinder-toast>.toast-warning:before{content:'\e856';color:#ff9800}.elfinder-drag-helper-icon-status{font:normal normal normal 14px/1 material;background:inherit}.elfinder-drag-helper-icon-status:before{content:'\e824'}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before{content:'\e854'}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before{content:'\e84c'}.elfinder-cwd-view-list td .elfinder-cwd-icon{background-image:url("../images/icons-small.png")}.elfinder-cwd-icon{background:url("../images/icons-big.png") 0 0 no-repeat}.elfinder-cwd-icon:before{font-size:10px;position:relative;top:27px;left:inherit;padding:1px;background-color:transparent}.elfinder-info-title .elfinder-cwd-icon:before{top:32px;display:block;margin:0 auto}.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before{background-color:#313131!important}.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before{left:inherit;background-color:#313131}.elfinder-quicklook .elfinder-cwd-icon:before{top:33px;left:50%!important;position:relative;display:block;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.elfinder-cwd-icon-x-zip:before,.elfinder-cwd-icon-zip:before{content:'zip'!important}.elfinder-cwd-icon-x-xz:before{content:'xz'!important}.elfinder-cwd-icon-x-7z-compressed:before{content:'7z'!important}.elfinder-cwd-icon-x-gzip:before{content:'gzip'!important}.elfinder-cwd-icon-x-tar:before{content:'tar'!important}.elfinder-cwd-icon-x-bzip2:before,.elfinder-cwd-icon-x-bzip:before{content:'bzip'!important}.elfinder-cwd-icon-x-rar-compressed:before,.elfinder-cwd-icon-x-rar:before{content:'rar'!important}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application{background-position:0 -150px}.elfinder-cwd-icon-text{background-position:0 -200px}.elfinder-cwd-icon-plain,.elfinder-cwd-icon-x-empty{background-position:0 -250px}.elfinder-cwd-icon-image{background-position:0 -300px}.elfinder-cwd-icon-vnd-adobe-photoshop{background-position:0 -350px}.elfinder-cwd-icon-vnd-adobe-photoshop:before{content:none!important}.elfinder-cwd-icon-postscript{background-position:0 -400px}.elfinder-cwd-icon-audio{background-position:0 -450px}.elfinder-cwd-icon-dash-xml,.elfinder-cwd-icon-flash-video,.elfinder-cwd-icon-video,.elfinder-cwd-icon-vnd-apple-mpegurl,.elfinder-cwd-icon-x-mpegurl{background-position:0 -500px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd{background-position:0 -550px}.elfinder-cwd-icon-pdf{background-position:0 -600px}.elfinder-cwd-icon-x-msaccess{background-position:0 -650px}.elfinder-cwd-icon-x-msaccess:before{content:none!important}.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12{background-position:0 -700px}.elfinder-cwd-icon-msword:before,.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-word:before{content:none!important}.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12{background-position:0 -750px}.elfinder-cwd-icon-ms-excel:before,.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-excel:before{content:none!important}.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12{background-position:0 -800px}.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before,.elfinder-cwd-icon-vnd-ms-powerpoint:before{content:none!important}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-vnd-oasis-opendocument-chart,.elfinder-cwd-icon-vnd-oasis-opendocument-database,.elfinder-cwd-icon-vnd-oasis-opendocument-formula,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,.elfinder-cwd-icon-vnd-oasis-opendocument-image,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,.elfinder-cwd-icon-vnd-openofficeorg-extension,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template{background-position:0 -850px}.elfinder-cwd-icon-html{background-position:0 -900px}.elfinder-cwd-icon-css{background-position:0 -950px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -1000px}.elfinder-cwd-icon-x-perl{background-position:0 -1050px}.elfinder-cwd-icon-x-python,.elfinder-cwd-icon-x-python:after{background-position:0 -1100px}.elfinder-cwd-icon-x-ruby{background-position:0 -1150px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -1200px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-csrc{background-position:0 -1250px}.elfinder-cwd-icon-x-jar,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -1300px}.elfinder-cwd-icon-x-jar:before,.elfinder-cwd-icon-x-java-source:before,.elfinder-cwd-icon-x-java:before{content:none!important}.elfinder-cwd-icon-x-php{background-position:0 -1350px}.elfinder-cwd-icon-xml,.elfinder-cwd-icon-xml:after{background-position:0 -1400px}.elfinder-cwd-icon-x-7z-compressed,.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2,.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed,.elfinder-cwd-icon-x-tar,.elfinder-cwd-icon-x-xz,.elfinder-cwd-icon-x-zip,.elfinder-cwd-icon-zip{background-position:0 -1450px}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1500px}.elfinder-cwd-icon-group{background-position:0 -1550px}.elfinder-cwd-icon-json{background-position:0 -1600px}.elfinder-cwd-icon-json:before{content:none!important}.elfinder-cwd-icon-markdown,.elfinder-cwd-icon-x-markdown{background-position:0 -1650px}.elfinder-cwd-icon-markdown:before,.elfinder-cwd-icon-x-markdown:before{content:none!important}.elfinder-cwd-icon-sql{background-position:0 -1700px}.elfinder-cwd-icon-sql:before{content:none!important}.elfinder-cwd-icon-svg,.elfinder-cwd-icon-svg-xml{background-position:0 -1750px}.elfinder-cwd-icon-svg-xml:before,.elfinder-cwd-icon-svg:before{content:none!important}.elfinder-toolbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;padding:5px 0}.elfinder-buttonset{-webkit-border-radius:0;border-radius:0;border:0;margin:0 5px;height:24px}.elfinder .elfinder-button{background:transparent;-webkit-border-radius:0;border-radius:0;cursor:pointer;color:#efefef}.elfinder-toolbar-button-separator{border:0}.elfinder-button-menu{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none;margin-top:5px}.elfinder-button-menu-item{color:#666;padding:6px 19px}.elfinder-button-menu-item.ui-state-hover{color:#141414;background-color:#f5f4f4}.elfinder-button-menu-item-separated{border-top:1px solid #e5e5e5}.elfinder-button-menu-item-separated.ui-state-hover{border-top:1px solid #e5e5e5}.elfinder .elfinder-button-search{margin:0 10px;min-height:inherit;overflow:hidden}.elfinder .elfinder-button-search input{background:rgba(22, 43, 76, 0.75);-webkit-border-radius:2px;border-radius:2px;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:0;margin:0;padding:0 23px;height:24px;color:#fff}.elfinder .elfinder-button-search .elfinder-button-menu{margin-top:4px;border:none;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.5);box-shadow:0 1px 3px rgba(0, 0, 0, 0.5)}.elfinder .elfinder-navbar{background:#2a384d;-webkit-box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);box-shadow:0 1px 8px rgba(0, 0, 0, 0.6);border:none}.elfinder-navbar-dir{color:#e6e6e6;cursor:pointer;-webkit-border-radius:2px;border-radius:2px;padding:5px;border:none}.elfinder-navbar-dir.ui-state-active.ui-state-hover,.elfinder-navbar-dir.ui-state-hover{background:#17202c;color:#e6e6e6;border:none}.elfinder-disabled .elfinder-navbar .ui-state-active,.elfinder-navbar .ui-state-active{background:#1b2533;border:none}.elfinder-workzone{background:#0e1827}.elfinder-cwd-file{color:#ddd}.elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-file.ui-selected{background:#152131;color:#ddd;width:120px!important}.elfinder-cwd-filename input,.elfinder-cwd-filename textarea{padding:2px;-webkit-border-radius:2px!important;border-radius:2px!important;width:100px!important;background:#fff;color:#222}.elfinder-cwd-filename input:focus,.elfinder-cwd-filename textarea:focus{outline:none;border:1px solid #555}.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active,.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover,.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,.elfinder-disabled .elfinder-cwd table td.ui-state-hover{background:transparent;color:#ddd}.elfinder-cwd table{padding:0}.elfinder-cwd table tr:nth-child(odd){background-color:transparent}.elfinder-cwd table tr:nth-child(odd).ui-state-hover{background-color:#1a283c}#elfinder-elfinder-cwd-thead td{background:#010e21;color:#ddd}#elfinder-elfinder-cwd-thead td.ui-state-active,#elfinder-elfinder-cwd-thead td.ui-state-hover{background:#010a17}#elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover{background:#010812}.ui-selectable-helper{border:1px solid #022861;background-color:rgba(3, 62, 150, 0.38)}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash{background-color:#e4e4e4}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file{color:#333}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover,.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover{background:#1a283c;color:#ddd}.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected{background:#152131;color:#ddd}.elfinder .elfinder-statusbar{background:#061325;-webkit-border-radius:0;border-radius:0;border:0;color:#cfd2d4}.elfinder-path,.elfinder-stat-size{margin:0 15px}.ui-button,.ui-button.ui-state-default,.ui-button:active{display:inline-block;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-webkit-border-radius:3px;border-radius:3px;text-transform:uppercase;-webkit-box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);box-shadow:1px 1px 4px rgba(0, 0, 0, 0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;-moz-transition:all 0.4s;transition:all 0.4s;background:#fff;color:#222;border:none}.ui-button .ui-icon,.ui-button.ui-state-default .ui-icon,.ui-button:active .ui-icon{color:#222}.ui-button.ui-state-active,.ui-button.ui-state-hover,.ui-button:active,.ui-button:focus,.ui-button:hover,a.ui-button:active{background:#3498db;color:#fff;border:none}.ui-button.ui-state-active .ui-icon,.ui-button.ui-state-hover .ui-icon,.ui-button:active .ui-icon,.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,a.ui-button:active .ui-icon{color:#fff}.ui-button.ui-state-active:hover{background:#217dbb;color:#fff;border:none}.ui-button:focus{outline:none!important}.ui-controlgroup-horizontal .ui-button{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-contextmenu,.elfinder .elfinder-contextmenu-sub{-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);box-shadow:0 1px 6px rgba(0, 0, 0, 0.3);border:none}.elfinder .elfinder-contextmenu-separator,.elfinder .elfinder-contextmenu-sub-separator{border-top:1px solid #e5e5e5}.elfinder .elfinder-contextmenu-item{color:#666;padding:5px 30px}.elfinder .elfinder-contextmenu-item.ui-state-hover{background-color:#f5f4f4;color:#141414}.elfinder .elfinder-contextmenu-item.ui-state-active{background-color:#2196f3;color:#fff}.elfinder .elfinder-dialog{-webkit-border-radius:0;border-radius:0;border:0;-webkit-box-shadow:0 1px 30px rgba(0, 0, 0, 0.6);box-shadow:0 1px 30px rgba(0, 0, 0, 0.6)}.elfinder .elfinder-dialog .ui-dialog-content[id*=edit-elfinder-elfinder-]{padding:0}.elfinder .elfinder-dialog .ui-tabs{-webkit-border-radius:0;border-radius:0;border:0}.elfinder .elfinder-dialog .ui-tabs-nav{-webkit-border-radius:0;border-radius:0;border:0;background:transparent;border-bottom:1px solid #ddd}.elfinder .elfinder-dialog .ui-tabs-nav li{border:0;font-weight:normal;background:transparent;margin:0;padding:3px 0}.elfinder .elfinder-dialog .ui-tabs-nav li.ui-tabs-active{padding-bottom:7px}.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a,.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a,.elfinder .elfinder-dialog .ui-tabs-nav li:hover a{-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover{background:transparent;-webkit-box-shadow:inset 0 -2px 0 #3498db;box-shadow:inset 0 -2px 0 #3498db;color:#3498db}.elfinder .elfinder-dialog label.ui-state-hover{background:transparent}.std42-dialog .ui-dialog-titlebar{background:#0f1f2f;-webkit-border-radius:0;border-radius:0;border:0}.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon{border-color:inherit;-webkit-transition:0.2s ease-out;-o-transition:0.2s ease-out;-moz-transition:0.2s ease-out;transition:0.2s ease-out;opacity:0.8;color:#fff;width:auto;height:auto;font-size:12px;padding:3px}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon{background-color:#f44336}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon{background-color:#4caf50}.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon{background-color:#ff9800}.elfinder-dialog-title{color:#f1f1f1}.std42-dialog .ui-dialog-content{background:#fff}.ui-widget-content{font-family:"Noto Sans", sans-serif;color:#546e7a}.std42-dialog .ui-dialog-buttonpane button{margin:2px;padding:.4em .5em}.std42-dialog .ui-dialog-buttonpane button span.ui-icon{padding:0}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect{width:inherit;height:inherit;padding:.4em;margin-left:5px;color:#222}.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover{background:#888;color:#fff;outline:none;-webkit-border-radius:2px;border-radius:2px}.elfinder-upload-dialog-wrapper .ui-button{padding:.4em 3px;margin:0 2px}.elfinder-upload-dialog-wrapper .ui-button{margin-left:19px;margin-right:-15px}.elfinder-upload-dropbox{border:2px dashed #bbb}.elfinder-upload-dropbox:focus{outline:none}.elfinder-upload-dropbox.ui-state-hover{background:#f1f1f1;border:2px dashed #bbb}.elfinder-help *,.elfinder-help a{color:#546e7a} \ No newline at end of file diff --git a/apps/static/plugins/elfindler/elfinder.full.js b/apps/static/plugins/elfindler/elfinder.full.js new file mode 100755 index 000000000..03bc40f4d --- /dev/null +++ b/apps/static/plugins/elfindler/elfinder.full.js @@ -0,0 +1,33646 @@ +/*! + * elFinder - file manager for web + * Version 2.1.42 (2018-08-29) + * http://elfinder.org + * + * Copyright 2009-2018, Studio 42 + * Licensed under a 3-clauses BSD license + */ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD + define(['jquery','jquery-ui'], factory); + } else if (typeof exports !== 'undefined') { + // CommonJS + var $, ui; + try { + $ = require('jquery'); + ui = require('jquery-ui'); + } catch (e) {} + module.exports = factory($, ui); + } else { + // Browser globals (Note: root is window) + factory(root.jQuery, root.jQuery.ui, true); + } +}(this, function($, _ui, toGlobal) { +toGlobal = toGlobal || false; + + +/* + * File: /js/elFinder.js + */ + +/** + * @class elFinder - file manager for web + * + * @author Dmitry (dio) Levashov + **/ +var elFinder = function(elm, opts, bootCallback) { + //this.time('load'); + var self = this, + + /** + * Objects array of jQuery.Deferred that calls before elFinder boot up + * + * @type Array + */ + dfrdsBeforeBootup = [], + + /** + * Plugin name to check for conflicts with bootstrap etc + * + * @type Array + **/ + conflictChecks = ['button'], + + /** + * Node on which elfinder creating + * + * @type jQuery + **/ + node = $(elm), + + /** + * Object of events originally registered in this node + * + * @type Object + */ + prevEvents = $.extend(true, {}, $._data(node.get(0), 'events')), + + /** + * Store node contents. + * + * @see this.destroy + * @type jQuery + **/ + prevContent = $('
').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''), + + /** + * Instance ID. Required to get/set cookie + * + * @type String + **/ + id = node.attr('id') || '', + + /** + * Events namespace + * + * @type String + **/ + namespace = 'elfinder-' + (id ? id : Math.random().toString().substr(2, 7)), + + /** + * Mousedown event + * + * @type String + **/ + mousedown = 'mousedown.'+namespace, + + /** + * Keydown event + * + * @type String + **/ + keydown = 'keydown.'+namespace, + + /** + * Keypress event + * + * @type String + **/ + keypress = 'keypress.'+namespace, + + /** + * Keypup event + * + * @type String + **/ + keyup = 'keyup.'+namespace, + + /** + * Is shortcuts/commands enabled + * + * @type Boolean + **/ + enabled = false, + + /** + * Store enabled value before ajax request + * + * @type Boolean + **/ + prevEnabled = false, + + /** + * List of build-in events which mapped into methods with same names + * + * @type Array + **/ + events = ['enable', 'disable', 'load', 'open', 'reload', 'select', 'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'], + + /** + * Rules to validate data from backend + * + * @type Object + **/ + rules = {}, + + /** + * Current working directory hash + * + * @type String + **/ + cwd = '', + + /** + * Current working directory options default + * + * @type Object + **/ + cwdOptionsDefault = { + path : '', + url : '', + tmbUrl : '', + disabled : [], + separator : '/', + archives : [], + extract : [], + copyOverwrite : true, + uploadOverwrite : true, + uploadMaxSize : 0, + jpgQuality : 100, + tmbCrop : false, + tmb : false // old API + }, + + /** + * Current working directory options + * + * @type Object + **/ + cwdOptions = {}, + + /** + * Files/dirs cache + * + * @type Object + **/ + files = {}, + + /** + * Hidden Files/dirs cache + * + * @type Object + **/ + hiddenFiles = {}, + + /** + * Files/dirs hash cache of each dirs + * + * @type Object + **/ + ownFiles = {}, + + /** + * Selected files hashes + * + * @type Array + **/ + selected = [], + + /** + * Events listeners + * + * @type Object + **/ + listeners = {}, + + /** + * Shortcuts + * + * @type Object + **/ + shortcuts = {}, + + /** + * Buffer for copied files + * + * @type Array + **/ + clipboard = [], + + /** + * Copied/cuted files hashes + * Prevent from remove its from cache. + * Required for dispaly correct files names in error messages + * + * @type Object + **/ + remember = {}, + + /** + * Queue for 'open' requests + * + * @type Array + **/ + queue = [], + + /** + * Queue for only cwd requests e.g. `tmb` + * + * @type Array + **/ + cwdQueue = [], + + /** + * Commands prototype + * + * @type Object + **/ + base = new self.command(self), + + /** + * elFinder node width + * + * @type String + * @default "auto" + **/ + width = 'auto', + + /** + * elFinder node height + * Number: pixcel or String: Number + "%" + * + * @type Number | String + * @default 400 + **/ + height = 400, + + /** + * Base node object or selector + * Element which is the reference of the height percentage + * + * @type Object|String + * @default null | $(window) (if height is percentage) + **/ + heightBase = null, + + /** + * MIME type list(Associative array) handled as a text file + * + * @type Object|null + */ + textMimes = null, + + /** + * elfinder path for sound played on remove + * @type String + * @default ./sounds/ + **/ + soundPath = 'sounds/', + + /** + * JSON.stringify of previous fm.sorters + * @type String + */ + prevSorterStr = '', + + /** + * Map table of file extention to MIME-Type + * @type Object + */ + extToMimeTable, + + beeper = $(document.createElement('audio')).hide().appendTo('body')[0], + + syncInterval, + autoSyncStop = 0, + + uiCmdMapPrev = '', + + gcJobRes = null, + + open = function(data) { + // NOTES: Do not touch data object + + var volumeid, contextmenu, emptyDirs = {}, stayDirs = {}, + rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr; + + if (self.api >= 2.1) { + // support volume driver option `uiCmdMap` + self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {}; + if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) { + uiCmdMapPrev = JSON.stringify(self.commandMap); + } + } else { + self.options.sync = 0; + } + + if (data.init) { + // init - reset cache + files = {}; + ownFiles = {}; + } else { + // remove only files from prev cwd + // and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD + prevcwd = cwd; + rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand'); + collapsed = self.res('class', 'navcollapse'); + hashes = Object.keys(files); + calc = function(i) { + if (!files[i]) { + return true; + } + + var isDir = (files[i].mime === 'directory'), + phash = files[i].phash, + pnav; + + if ( + (!isDir + || emptyDirs[phash] + || (!stayDirs[phash] + && $('#'+self.navHash2Id(files[i].hash)).is(':hidden') + && $('#'+self.navHash2Id(phash)).next('.elfinder-navbar-subtree').children().length > 100 + ) + ) + && (isDir || phash !== cwd) + && ! remember[i] + ) { + if (isDir && !emptyDirs[phash]) { + emptyDirs[phash] = true; + $('#'+self.navHash2Id(phash)) + .removeClass(rmClass) + .next('.elfinder-navbar-subtree').empty(); + } + deleteCache(files[i]); + } else if (isDir) { + stayDirs[phash] = true; + } + }; + gc = function() { + if (hashes.length) { + gcJobRes && gcJobRes._abort(); + gcJobRes = self.asyncJob(calc, hashes, { + interval : 20, + numPerOnce : 100 + }).done(function() { + var hd = self.storage('hide') || {items: {}}; + if (Object.keys(hiddenFiles).length) { + $.each(hiddenFiles, function(h) { + if (!hd.items[h]) { + delete hiddenFiles[h]; + } + }); + } + }); + } + }; + + self.trigger('filesgc').one('filesgc', function() { + hashes = []; + }); + + self.one('opendone', function() { + if (prevcwd !== cwd) { + if (! node.data('lazycnt')) { + gc(); + } else { + self.one('lazydone', gc); + } + } + }); + } + + self.sorters = {}; + cwd = data.cwd.hash; + cache(data.files); + if (!files[cwd]) { + cache([data.cwd]); + } + + // trigger event 'sorterupdate' + sorterStr = JSON.stringify(self.sorters); + if (prevSorterStr !== sorterStr) { + self.trigger('sorterupdate'); + prevSorterStr = sorterStr; + } + + self.lastDir(cwd); + + self.autoSync(); + }, + + /** + * Store info about files/dirs in "files" object. + * + * @param Array files + * @param String data type + * @return void + **/ + cache = function(data, type) { + var defsorter = { name: true, perm: true, date: true, size: true, kind: true }, + sorterChk = !self.sorters._checked, + l = data.length, + setSorter = function(file) { + var f = file || {}, + sorters = []; + $.each(self.sortRules, function(key) { + if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) { + sorters.push(key); + } + }); + self.sorters = self.arrayFlip(sorters, true); + self.sorters._checked = true; + }, + keeps = ['sizeInfo'], + changedParents = {}, + hideData = self.storage('hide') || {}, + hides = hideData.items || {}, + f, i, keepProp, parents, hidden; + + for (i = 0; i < l; i++) { + f = Object.assign({}, data[i]); + hidden = (!hideData.show && hides[f.hash])? true : false; + if (f.name && f.hash && f.mime) { + if (!hidden) { + if (sorterChk && f.phash === cwd) { + setSorter(f); + sorterChk = false; + } + + if (f.phash && (type === 'add' || type === 'change')) { + if (parents = self.parents(f.phash)) { + $.each(parents, function() { + changedParents[this] = true; + }); + } + } + } + + if (files[f.hash]) { + $.each(keeps, function() { + if(files[f.hash][this] && ! f[this]) { + f[this] = files[f.hash][this]; + } + }); + if (f.sizeInfo && !f.size) { + f.size = f.sizeInfo.size; + } + deleteCache(files[f.hash], true); + } + if (hides[f.hash]) { + hiddenFiles[f.hash] = f; + } + if (hidden) { + l--; + data.splice(i--, 1); + } else { + files[f.hash] = f; + if (f.mime === 'directory' && !ownFiles[f.hash]) { + ownFiles[f.hash] = {}; + } + if (f.phash) { + if (!ownFiles[f.phash]) { + ownFiles[f.phash] = {}; + } + ownFiles[f.phash][f.hash] = true; + } + } + } + } + // delete sizeInfo cache + $.each(Object.keys(changedParents), function() { + var target = files[this]; + if (target && target.sizeInfo) { + delete target.sizeInfo; + } + }); + + // for empty folder + sorterChk && setSorter(); + }, + + /** + * Delete file object from files caches + * + * @param Array removed hashes + * @return void + */ + remove = function(removed) { + var l = removed.length, + roots = {}, + rm = function(hash) { + var file = files[hash], i; + if (file) { + if (file.mime === 'directory') { + if (roots[hash]) { + delete self.roots[roots[hash]]; + } + // restore stats of deleted root parent directory + $.each(self.leafRoots, function(phash, roots) { + var idx, pdir; + if ((idx = $.inArray(hash, roots))!== -1) { + if (roots.length === 1) { + if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) { + $.each(pdir._realStats, function(k, v) { + pdir[k] = v; + }); + remove(files[phash]._realStats); + self.change({ changed: [pdir] }); + } + delete self.leafRoots[phash]; + } else { + self.leafRoots[phash].splice(idx, 1); + } + } + }); + if (self.searchStatus.state < 2) { + $.each(files, function(h, f) { + f.phash == hash && rm(h); + }); + } + } + if (file.phash) { + if (parents = self.parents(file.phash)) { + $.each(parents, function() { + changedParents[this] = true; + }); + } + } + deleteCache(files[hash]); + } + }, + changedParents = {}, + parents; + + $.each(self.roots, function(k, v) { + roots[v] = k; + }); + while (l--) { + rm(removed[l]); + } + // delete sizeInfo cache + $.each(Object.keys(changedParents), function() { + var target = files[this]; + if (target && target.sizeInfo) { + delete target.sizeInfo; + } + }); + }, + + /** + * Update file object in files caches + * + * @param Array changed file objects + * @return void + */ + change = function(changed) { + $.each(changed, function(i, file) { + var hash = file.hash; + if (files[hash]) { + $.each(Object.keys(files[hash]), function(i, v){ + if (typeof file[v] === 'undefined') { + delete files[hash][v]; + } + }); + } + files[hash] = files[hash] ? Object.assign(files[hash], file) : file; + }); + }, + + /** + * Delete cache data of files, ownFiles and self.optionsByHashes + * + * @param Object file + * @param Boolean update + * @return void + */ + deleteCache = function(file, update) { + var hash = file.hash, + phash = file.phash; + + if (phash && ownFiles[phash]) { + delete ownFiles[phash][hash]; + } + if (!update) { + ownFiles[hash] && delete ownFiles[hash]; + self.optionsByHashes[hash] && delete self.optionsByHashes[hash]; + } + delete files[hash]; + }, + + /** + * Maximum number of concurrent connections on request + * + * @type Number + */ + requestMaxConn, + + /** + * Current number of connections + * + * @type Number + */ + requestCnt = 0, + + /** + * Queue waiting for connection + * + * @type Array + */ + requestQueue = [], + + /** + * Flag to cancel the `open` command waiting for connection + * + * @type Boolean + */ + requestQueueSkipOpen = false, + + /** + * Exec shortcut + * + * @param jQuery.Event keydown/keypress event + * @return void + */ + execShortcut = function(e) { + var code = e.keyCode, + ctrlKey = !!(e.ctrlKey || e.metaKey), + isMousedown = e.type === 'mousedown', + ddm; + + !isMousedown && (self.keyState.keyCode = code); + self.keyState.ctrlKey = ctrlKey; + self.keyState.shiftKey = e.shiftKey; + self.keyState.metaKey = e.metaKey; + self.keyState.altKey = e.altKey; + if (isMousedown) { + return; + } else if (e.type === 'keyup') { + self.keyState.keyCode = null; + return; + } + + if (enabled) { + + $.each(shortcuts, function(i, shortcut) { + if (shortcut.type == e.type + && shortcut.keyCode == code + && shortcut.shiftKey == e.shiftKey + && shortcut.ctrlKey == ctrlKey + && shortcut.altKey == e.altKey) { + e.preventDefault(); + e.stopPropagation(); + shortcut.callback(e, self); + self.debug('shortcut-exec', i+' : '+shortcut.description); + } + }); + + // prevent tab out of elfinder + if (code == $.ui.keyCode.TAB && !$(e.target).is(':input')) { + e.preventDefault(); + } + + // cancel any actions by [Esc] key + if (e.type === 'keydown' && code == $.ui.keyCode.ESCAPE) { + // copy or cut + if (! node.find('.ui-widget:visible').length) { + self.clipboard().length && self.clipboard([]); + } + // dragging + if ($.ui.ddmanager) { + ddm = $.ui.ddmanager.current; + ddm && ddm.helper && ddm.cancel(); + } + // button menus + self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible')); + // trigger keydownEsc + self.trigger('keydownEsc', e); + } + + } + }, + date = new Date(), + utc, + i18n, + inFrame = (window.parent !== window), + parentIframe = (function() { + var pifm, ifms; + if (inFrame) { + try { + ifms = $('iframe', window.parent.document); + if (ifms.length) { + $.each(ifms, function(i, ifm) { + if (ifm.contentWindow === window) { + pifm = $(ifm); + return false; + } + }); + } + } catch(e) {} + } + return pifm; + })(), + /** + * elFinder boot up function + * + * @type Function + */ + bootUp, + /** + * Original function of XMLHttpRequest.prototype.send + * + * @type Function + */ + savedXhrSend; + + // opts must be an object + if (!opts) { + opts = {}; + } + + // set UA.Angle, UA.Rotated for mobile devices + if (self.UA.Mobile) { + $(window).on('orientationchange.'+namespace, function() { + var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; + if (a === -90) { + a = 270; + } + self.UA.Angle = a; + self.UA.Rotated = a % 180 === 0? false : true; + }).trigger('orientationchange.'+namespace); + } + + // check opt.bootCallback + if (opts.bootCallback && typeof opts.bootCallback === 'function') { + (function() { + var func = bootCallback, + opFunc = opts.bootCallback; + bootCallback = function(fm, extraObj) { + func && typeof func === 'function' && func.call(this, fm, extraObj); + opFunc.call(this, fm, extraObj); + }; + })(); + } + delete opts.bootCallback; + + /** + * Protocol version + * + * @type String + **/ + this.api = null; + + /** + * elFinder use new api + * + * @type Boolean + **/ + this.newAPI = false; + + /** + * elFinder use old api + * + * @type Boolean + **/ + this.oldAPI = false; + + /** + * Net drivers names + * + * @type Array + **/ + this.netDrivers = []; + + /** + * Base URL of elfFinder library starting from Manager HTML + * + * @type String + */ + this.baseUrl = ''; + + /** + * Is elFinder CSS loaded + * + * @type Boolean + */ + this.cssloaded = false; + + + this.mimesCanMakeEmpty = {}; + + /** + * Callback function at boot up that option specified at elFinder starting + * + * @type Function + */ + this.bootCallback; + + /** + * Configuration options + * + * @type Object + **/ + //this.options = $.extend(true, {}, this._options, opts); + this.options = Object.assign({}, this._options); + + // for old type configuration + if (opts.uiOptions) { + if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) { + if ($.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) { + self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop()); + } + } + } + + // Overwrite if opts value is an array + (function() { + var arrOv = function(obj, base) { + if ($.isPlainObject(obj)) { + $.each(obj, function(k, v) { + if ($.isPlainObject(v)) { + if (!base[k]) { + base[k] = {}; + } + arrOv(v, base[k]); + } else { + base[k] = v; + } + }); + } + }; + arrOv(opts, self.options); + })(); + + // join toolbarExtra to toolbar + this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra); + delete this.options.uiOptions.toolbarExtra; + + // set fm.baseUrl + this.baseUrl = (function() { + var myTag, myCss, base, baseUrl; + + if (self.options.baseUrl) { + return self.options.baseUrl; + } else { + baseUrl = ''; + //myTag = $('head > script[src$="js/elfinder.min.js"],script[src$="js/elfinder.full.js"]:first'); + myTag = null; + $('head > script').each(function() { + if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js$/i)) { + myTag = $(this); + return false; + } + }); + if (myTag) { + myCss = $('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length; + if (! myCss) { + // to request CSS auto loading + self.cssloaded = null; + } + baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, ''); + if (! baseUrl.match(/^(https?\/\/|\/)/)) { + // check tag + if (base = $('head > base[href]').attr('href')) { + baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; + } + } + } + if (baseUrl !== '') { + self.options.baseUrl = baseUrl; + } else { + if (! self.options.baseUrl) { + self.options.baseUrl = './'; + } + baseUrl = self.options.baseUrl; + } + return baseUrl; + } + })(); + + // set dispInlineRegex + cwdOptionsDefault['dispInlineRegex'] = this.options.dispInlineRegex; + + // auto load required CSS + if (this.options.cssAutoLoad) { + (function() { + var baseUrl = self.baseUrl; + + if (self.cssloaded === null) { + // hide elFinder node while css loading + node.data('cssautoloadHide', $('')); + $('head').append(node.data('cssautoloadHide')); + + // load CSS + self.loadCss([baseUrl+'css/elfinder.min.css', baseUrl+'css/theme.css']); + + // additional CSS files + if (Array.isArray(self.options.cssAutoLoad)) { + self.loadCss(self.options.cssAutoLoad); + } + } + self.options.cssAutoLoad = false; + })(); + } + + /** + * Volume option to set the properties of the root Stat + * + * @type Object + */ + this.optionProperties = { + icon: void(0), + csscls: void(0), + tmbUrl: void(0), + uiCmdMap: {}, + netkey: void(0), + disabled: [] + }; + + if (! inFrame && ! this.options.enableAlways && $('body').children().length === 2) { // only node and beeper + this.options.enableAlways = true; + } + + // make options.debug + if (this.options.debug === true) { + this.options.debug = 'all'; + } else if (Array.isArray(this.options.debug)) { + (function() { + var d = {}; + $.each(self.options.debug, function() { + d[this] = true; + }); + self.options.debug = d; + })(); + } else { + this.options.debug = false; + } + + /** + * Original functions evacuated by conflict check + * + * @type Object + */ + this.noConflicts = {}; + + /** + * Check and save conflicts with bootstrap etc + * + * @type Function + */ + this.noConflict = function() { + $.each(conflictChecks, function(i, p) { + if ($.fn[p] && typeof $.fn[p].noConflict === 'function') { + self.noConflicts[p] = $.fn[p].noConflict(); + } + }); + }; + // do check conflict + this.noConflict(); + + /** + * Is elFinder over CORS + * + * @type Boolean + **/ + this.isCORS = false; + + // configure for CORS + (function(){ + if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) { + self.isCORS = self.options.cors? true : false; + } else { + var parseUrl = document.createElement('a'), + parseUploadUrl, + selfProtocol = window.location.protocol, + portReg = function(protocol) { + protocol = (!protocol || protocol === ':')? selfProtocol : protocol; + return protocol === 'https:'? /\:443$/ : /\:80$/; + }, + selfHost = window.location.host.replace(portReg(selfProtocol), ''); + parseUrl.href = opts.url; + if (opts.urlUpload && (opts.urlUpload !== opts.url)) { + parseUploadUrl = document.createElement('a'); + parseUploadUrl.href = opts.urlUpload; + } + if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '') + || (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol)) + || (parseUploadUrl && + (selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '') + || (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol)) + ) + ) + ) { + self.isCORS = true; + } + } + if (self.isCORS) { + if (!$.isPlainObject(self.options.customHeaders)) { + self.options.customHeaders = {}; + } + if (!$.isPlainObject(self.options.xhrFields)) { + self.options.xhrFields = {}; + } + self.options.requestType = 'post'; + self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest'; + self.options.xhrFields['withCredentials'] = true; + } + })(); + + /** + * Ajax request type + * + * @type String + * @default "get" + **/ + this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get'; + + // set `requestMaxConn` by option + requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1); + + /** + * Custom data that given as options + * + * @type Object + * @default {} + */ + this.optsCustomData = $.isPlainObject(this.options.customData) ? this.options.customData : {}; + + /** + * Any data to send across every ajax request + * + * @type Object + * @default {} + **/ + this.customData = Object.assign({}, this.optsCustomData); + + /** + * Previous custom data from connector + * + * @type Object|null + */ + this.prevCustomData = null; + + /** + * Any custom headers to send across every ajax request + * + * @type Object + * @default {} + */ + this.customHeaders = $.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {}; + + /** + * Any custom xhrFields to send across every ajax request + * + * @type Object + * @default {} + */ + this.xhrFields = $.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {}; + + /** + * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc. + * + * @type Function + */ + this.replaceXhrSend = function() { + if (! savedXhrSend) { + savedXhrSend = XMLHttpRequest.prototype.send; + } + XMLHttpRequest.prototype.send = function() { + var xhr = this; + // set request headers + if (self.customHeaders) { + $.each(self.customHeaders, function(key) { + xhr.setRequestHeader(key, this); + }); + } + // set xhrFields + if (self.xhrFields) { + $.each(self.xhrFields, function(key) { + if (key in xhr) { + xhr[key] = this; + } + }); + } + return savedXhrSend.apply(this, arguments); + }; + }; + + /** + * Restore saved original XMLHttpRequest.prototype.send + * + * @type Function + */ + this.restoreXhrSend = function() { + savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend); + }; + + /** + * command names for into queue for only cwd requests + * these commands aborts before `open` request + * + * @type Array + * @default ['tmb', 'parents'] + */ + this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents']; + + /** + * ID. Required to create unique cookie name + * + * @type String + **/ + this.id = id; + + /** + * ui.nav id prefix + * + * @type String + */ + this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-'; + + /** + * ui.cwd id prefix + * + * @type String + */ + this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : ''; + + // Increment elFinder.prototype.uniqueid + ++elFinder.prototype.uniqueid; + + /** + * URL to upload files + * + * @type String + **/ + this.uploadURL = opts.urlUpload || opts.url; + + /** + * Events namespace + * + * @type String + **/ + this.namespace = namespace; + + /** + * Today timestamp + * + * @type Number + **/ + this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000; + + /** + * Yesterday timestamp + * + * @type Number + **/ + this.yesterday = this.today - 86400; + + utc = this.options.UTCDate ? 'UTC' : ''; + + this.getHours = 'get'+utc+'Hours'; + this.getMinutes = 'get'+utc+'Minutes'; + this.getSeconds = 'get'+utc+'Seconds'; + this.getDate = 'get'+utc+'Date'; + this.getDay = 'get'+utc+'Day'; + this.getMonth = 'get'+utc+'Month'; + this.getFullYear = 'get'+utc+'FullYear'; + + /** + * elFinder node z-index (auto detect on elFinder load) + * + * @type null | Number + **/ + this.zIndex; + + /** + * Current search status + * + * @type Object + */ + this.searchStatus = { + state : 0, // 0: search ended, 1: search started, 2: in search result + query : '', + target : '', + mime : '', + mixed : false, // in multi volumes search: false or Array that target volume ids + ininc : false // in incremental search + }; + + /** + * Method to store/fetch data + * + * @type Function + **/ + this.storage = (function() { + try { + if ('localStorage' in window && window['localStorage'] !== null) { + if (self.UA.Safari) { + // check for Mac/iOS safari private browsing mode + window.localStorage.setItem('elfstoragecheck', 1); + window.localStorage.removeItem('elfstoragecheck'); + } + return self.localStorage; + } else { + return self.cookie; + } + } catch (e) { + return self.cookie; + } + })(); + + /** + * Interface language + * + * @type String + * @default "en" + **/ + this.lang = this.storage('lang') || this.options.lang; + if (this.lang === 'jp') { + this.lang = this.options.lang = 'ja'; + } + + this.viewType = this.storage('view') || this.options.defaultView || 'icons'; + + this.sortType = this.storage('sortType') || this.options.sortType || 'name'; + + this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc'; + + this.sortStickFolders = this.storage('sortStickFolders'); + if (this.sortStickFolders === null) { + this.sortStickFolders = !!this.options.sortStickFolders; + } else { + this.sortStickFolders = !!this.sortStickFolders; + } + + this.sortAlsoTreeview = this.storage('sortAlsoTreeview'); + if (this.sortAlsoTreeview === null) { + this.sortAlsoTreeview = !!this.options.sortAlsoTreeview; + } else { + this.sortAlsoTreeview = !!this.sortAlsoTreeview; + } + + this.sortRules = $.extend(true, {}, this._sortRules, this.options.sortRules); + + $.each(this.sortRules, function(name, method) { + if (typeof method != 'function') { + delete self.sortRules[name]; + } + }); + + this.compare = $.proxy(this.compare, this); + + /** + * Delay in ms before open notification dialog + * + * @type Number + * @default 500 + **/ + this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500; + + /** + * Dragging UI Helper object + * + * @type jQuery | null + **/ + this.draggingUiHelper = null; + + /** + * Base droppable options + * + * @type Object + **/ + this.droppable = { + greedy : true, + tolerance : 'pointer', + accept : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename', + hoverClass : this.res('class', 'adroppable'), + classes : { // Deprecated hoverClass jQueryUI>=1.12.0 + 'ui-droppable-hover': this.res('class', 'adroppable') + }, + autoDisable: true, // elFinder original, see jquery.elfinder.js + drop : function(e, ui) { + var dst = $(this), + targets = $.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }), + result = [], + dups = [], + faults = [], + isCopy = ui.helper.hasClass('elfinder-drag-helper-plus'), + c = 'class', + cnt, hash, i, h; + + if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) { + return false; + } + if (dst.hasClass(self.res(c, 'cwdfile'))) { + hash = self.cwdId2Hash(dst.attr('id')); + } else if (dst.hasClass(self.res(c, 'navdir'))) { + hash = self.navId2Hash(dst.attr('id')); + } else { + hash = cwd; + } + + cnt = targets.length; + + while (cnt--) { + h = targets[cnt]; + // ignore drop into itself or in own location + if (h != hash && files[h].phash != hash) { + result.push(h); + } else { + ((isCopy && h !== hash && files[hash].write)? dups : faults).push(h); + } + } + + if (faults.length) { + return false; + } + + ui.helper.data('droped', true); + + if (dups.length) { + ui.helper.hide(); + self.exec('duplicate', dups, {_userAction: true}); + } + + if (result.length) { + ui.helper.hide(); + self.clipboard(result, !isCopy); + self.exec('paste', hash, {_userAction: true}, hash).always(function(){ + self.clipboard([]); + self.trigger('unlockfiles', {files : targets}); + }); + self.trigger('drop', {files : targets}); + } + } + }; + + /** + * Return true if filemanager is active + * + * @return Boolean + **/ + this.enabled = function() { + return enabled && this.visible(); + }; + + /** + * Return true if filemanager is visible + * + * @return Boolean + **/ + this.visible = function() { + return node[0].elfinder && node.is(':visible'); + }; + + /** + * Return file is root? + * + * @param Object target file object + * @return Boolean + */ + this.isRoot = function(file) { + return (file.isroot || ! file.phash)? true : false; + }; + + /** + * Return root dir hash for current working directory + * + * @param String target hash + * @param Boolean include fake parent (optional) + * @return String + */ + this.root = function(hash, fake) { + hash = hash || cwd; + var dir, i; + + if (! fake) { + $.each(self.roots, function(id, rhash) { + if (hash.indexOf(id) === 0) { + dir = rhash; + return false; + } + }); + if (dir) { + return dir; + } + } + + dir = files[hash]; + while (dir && dir.phash && (fake || ! dir.isroot)) { + dir = files[dir.phash]; + } + if (dir) { + return dir.hash; + } + + while (i in files && files.hasOwnProperty(i)) { + dir = files[i]; + if (dir.mime === 'directory' && !dir.phash && dir.read) { + return dir.hash; + } + } + + return ''; + }; + + /** + * Return current working directory info + * + * @return Object + */ + this.cwd = function() { + return files[cwd] || {}; + }; + + /** + * Return required cwd option + * + * @param String option name + * @param String target hash (optional) + * @return mixed + */ + this.option = function(name, target) { + var res, item; + target = target || cwd; + if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') { + return self.optionsByHashes[target][name]; + } + if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) { + res = ''; + $.each(self.volOptions, function(id, opt) { + if (target.indexOf(id) === 0) { + res = opt[name] || ''; + return false; + } + }); + return res; + } else { + return cwdOptions[name] || ''; + } + }; + + /** + * Return disabled commands by each folder + * + * @param Array target hashes + * @return Array + */ + this.getDisabledCmds = function(targets, flip) { + var disabled = {'hidden': true}; + if (! Array.isArray(targets)) { + targets = [ targets ]; + } + $.each(targets, function(i, h) { + var disCmds = self.option('disabledFlip', h); + if (disCmds) { + Object.assign(disabled, disCmds); + } + }); + return flip? disabled : Object.keys(disabled); + }; + + /** + * Return file data from current dir or tree by it's hash + * + * @param String file hash + * @return Object + */ + this.file = function(hash, alsoHidden) { + return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); + }; + + /** + * Return all cached files + * + * @param String parent hash + * @return Object + */ + this.files = function(phash) { + var items = {}; + if (phash) { + if (!ownFiles[phash]) { + return {}; + } + $.each(ownFiles[phash], function(h) { + if (files[h]) { + items[h] = files[h]; + } else { + delete ownFiles[phash][h]; + } + }); + return Object.assign({}, items); + } + return Object.assign({}, files); + }; + + /** + * Return list of file parents hashes include file hash + * + * @param String file hash + * @return Array + */ + this.parents = function(hash) { + var parents = [], + dir; + + while (hash && (dir = this.file(hash))) { + parents.unshift(dir.hash); + hash = dir.phash; + } + return parents; + }; + + this.path2array = function(hash, i18) { + var file, + path = []; + + while (hash) { + if ((file = files[hash]) && file.hash) { + path.unshift(i18 && file.i18 ? file.i18 : file.name); + hash = file.isroot? null : file.phash; + } else { + path = []; + break; + } + } + + return path; + }; + + /** + * Return file path or Get path async with jQuery.Deferred + * + * @param Object file + * @param Boolean i18 + * @param Object asyncOpt + * @return String|jQuery.Deferred + */ + this.path = function(hash, i18, asyncOpt) { + var path = files[hash] && files[hash].path + ? files[hash].path + : this.path2array(hash, i18).join(cwdOptions.separator); + if (! asyncOpt || ! files[hash]) { + return path; + } else { + asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt); + + var dfd = $.Deferred(), + notify = asyncOpt.notify, + noreq = false, + req = function() { + self.request({ + data : {cmd : 'parents', target : files[hash].phash}, + notify : notify, + preventFail : true + }) + .done(done) + .fail(function() { + dfd.reject(); + }); + }, + done = function() { + self.one('parentsdone', function() { + path = self.path(hash, i18); + if (path === '' && noreq) { + //retry with request + noreq = false; + req(); + } else { + if (notify) { + clearTimeout(ntftm); + notify.cnt = -(parseInt(notify.cnt || 0)); + self.notify(notify); + } + dfd.resolve(path); + } + }); + }, + ntftm; + + if (path) { + return dfd.resolve(path); + } else { + if (self.ui['tree']) { + // try as no request + if (notify) { + ntftm = setTimeout(function() { + self.notify(notify); + }, self.notifyDelay); + } + noreq = true; + done(true); + } else { + req(); + } + return dfd; + } + } + }; + + /** + * Return file url if set + * + * @param String file hash + * @param Object Options + * @return String + */ + this.url = function(hash, o) { + var file = files[hash], + opts = o || {}, + async = opts.async || false, + temp = opts.temporary || false, + dfrd = async? $.Deferred() : null, + getUrl = function(url) { + if (url) { + return url; + } + if (file.url) { + return file.url; + } + + if (typeof baseUrl === 'undefined') { + baseUrl = self.option('url', file.phash || file.hash); + } + + if (baseUrl) { + return baseUrl + $.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'); + } + + var params = Object.assign({}, self.customData, { + cmd: 'file', + target: file.hash + }); + if (self.oldAPI) { + params.cmd = 'open'; + params.current = file.phash; + } + return self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + $.param(params, true); + }, + baseUrl, res; + + if (!file || !file.read) { + return async? dfrd.resolve('') : ''; + } + + if (file.url == '1' || (temp && !file.url && !(baseUrl = self.option('url', file.phash || file.hash)))) { + this.request({ + data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } }, + preventDefault : true, + options: {async: async}, + notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {} + }) + .done(function(data) { + file.url = data.url || ''; + }) + .fail(function() { + file.url = ''; + }) + .always(function() { + var url; + if (file.url && temp) { + url = file.url; + file.url = '1'; // restore + } + if (async) { + dfrd.resolve(getUrl(url)); + } else { + return getUrl(url); + } + }); + } else { + if (async) { + dfrd.resolve(getUrl()); + } else { + return getUrl(); + } + } + + if (async) { + return dfrd; + } + }; + + /** + * Return file url for open in elFinder + * + * @param String file hash + * @param Boolean for download link + * @return String + */ + this.openUrl = function(hash, download) { + var file = files[hash], + url = ''; + + if (!file || !file.read) { + return ''; + } + + if (!download) { + if (file.url) { + if (file.url != 1) { + url = file.url; + } + } else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) { + url = cwdOptions.url + $.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'); + } + if (url) { + url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000)); + return url; + } + } + + url = this.options.url; + url = url + (url.indexOf('?') === -1 ? '?' : '&') + + (this.oldAPI ? 'cmd=open¤t='+file.phash : 'cmd=file') + + '&target=' + file.hash + + '&_t=' + (file.ts || parseInt(+new Date()/1000)); + + if (download) { + url += '&download=1'; + } + + $.each(this.customData, function(key, val) { + url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); + }); + + return url; + }; + + /** + * Return thumbnail url + * + * @param Object file object + * @return String + */ + this.tmb = function(file) { + var tmbUrl, tmbCrop, + cls = 'elfinder-cwd-bgurl', + url = ''; + + if ($.isPlainObject(file)) { + if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) { + tmbUrl = self.option('tmbUrl', file.hash); + tmbCrop = self.option('tmbCrop', file.hash); + } else { + tmbUrl = cwdOptions['tmbUrl']; + tmbCrop = cwdOptions['tmbCrop']; + } + if (tmbCrop) { + cls += ' elfinder-cwd-bgurl-crop'; + } + if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) { + url = self.openUrl(file.hash); + cls += ' elfinder-cwd-bgself'; + } else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) { + url = tmbUrl + file.tmb; + } else if (self.newAPI && file && file.tmb && file.tmb != 1) { + url = file.tmb; + } + if (url) { + if (file.ts && tmbUrl !== 'self') { + url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts; + } + return { url: url, className: cls }; + } + } + + return false; + }; + + /** + * Return selected files hashes + * + * @return Array + **/ + this.selected = function() { + return selected.slice(0); + }; + + /** + * Return selected files info + * + * @return Array + */ + this.selectedFiles = function() { + return $.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; }); + }; + + /** + * Return true if file with required name existsin required folder + * + * @param String file name + * @param String parent folder hash + * @return Boolean + */ + this.fileByName = function(name, phash) { + var hash; + + for (hash in files) { + if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) { + return files[hash]; + } + } + }; + + /** + * Valid data for required command based on rules + * + * @param String command name + * @param Object cammand's data + * @return Boolean + */ + this.validResponse = function(cmd, data) { + return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data); + }; + + /** + * Return bytes from ini formated size + * + * @param String ini formated size + * @return Integer + */ + this.returnBytes = function(val) { + var last; + if (isNaN(val)) { + if (! val) { + val = ''; + } + // for ex. 1mb, 1KB + val = val.replace(/b$/i, ''); + last = val.charAt(val.length - 1).toLowerCase(); + val = val.replace(/[tgmk]$/i, ''); + if (last == 't') { + val = val * 1024 * 1024 * 1024 * 1024; + } else if (last == 'g') { + val = val * 1024 * 1024 * 1024; + } else if (last == 'm') { + val = val * 1024 * 1024; + } else if (last == 'k') { + val = val * 1024; + } + val = isNaN(val)? 0 : parseInt(val); + } else { + val = parseInt(val); + if (val < 1) val = 0; + } + return val; + }; + + /** + * Process ajax request. + * Fired events : + * @todo + * @example + * @todo + * @return $.Deferred + */ + this.request = function(opts) { + var self = this, + o = this.options, + dfrd = $.Deferred(), + // request ID + reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), + // request data + data = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts), + // command name + cmd = data.cmd, + // request type is binary + isBinary = (opts.options || {}).dataType === 'binary', + // current cmd is "open" + isOpen = (!opts.asNotOpen && cmd === 'open'), + // call default fail callback (display error dialog) ? + deffail = !(isBinary || opts.preventDefault || opts.preventFail), + // call default success callback ? + defdone = !(isBinary || opts.preventDefault || opts.preventDone), + // options for notify dialog + notify = Object.assign({}, opts.notify), + // make cancel button + cancel = !!opts.cancel, + // do not normalize data - return as is + raw = isBinary || !!opts.raw, + // sync files on request fail + syncOnFail = opts.syncOnFail, + // use lazy() + lazy = !!opts.lazy, + // prepare function before done() + prepare = opts.prepare, + // navigate option object when cmd done + navigate = opts.navigate, + // open notify dialog timeout + timeout, + // use browser cache + useCache = (opts.options || {}).cache, + // request options + options = Object.assign({ + url : o.url, + async : true, + type : this.requestType, + dataType : 'json', + cache : (self.api >= 2.1029), // api >= 2.1029 has unique request ID + data : data, + headers : this.customHeaders, + xhrFields: this.xhrFields + }, opts.options || {}), + /** + * Default success handler. + * Call default data handlers and fire event with command name. + * + * @param Object normalized response data + * @return void + **/ + done = function(data) { + data.warning && self.error(data.warning); + + if (isOpen) { + open(data); + } else { + self.updateCache(data); + } + + data.changed && data.changed.length && change(data.changed); + + self.lazy(function() { + // fire some event to update cache/ui + data.removed && data.removed.length && self.remove(data); + data.added && data.added.length && self.add(data); + data.changed && data.changed.length && self.change(data); + }).then(function() { + // fire event with command name + return self.lazy(function() { + self.trigger(cmd, data, false); + }); + }).then(function() { + // fire event with command name + 'done' + return self.lazy(function() { + self.trigger(cmd + 'done'); + }); + }).then(function() { + // make toast message + if (data.toasts && Array.isArray(data.toasts)) { + $.each(data.toasts, function() { + this.msg && self.toast(this); + }); + } + // force update content + data.sync && self.sync(); + }); + }, + /** + * Request error handler. Reject dfrd with correct error message. + * + * @param jqxhr request object + * @param String request status + * @return void + **/ + error = function(xhr, status) { + var error, data, + d = self.options.debug; + + switch (status) { + case 'abort': + error = xhr.quiet ? '' : ['errConnect', 'errAbort']; + break; + case 'timeout': + error = ['errConnect', 'errTimeout']; + break; + case 'parsererror': + error = ['errResponse', 'errDataNotJSON']; + if (xhr.responseText) { + if (! cwd || (d && (d === 'all' || d['backend-error']))) { + error.push(xhr.responseText); + } + } + break; + default: + if (xhr.responseText) { + // check responseText, Is that JSON? + try { + data = JSON.parse(xhr.responseText); + if (data && data.error) { + error = data.error; + } + } catch(e) {} + } + if (! error) { + if (xhr.status == 403) { + error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status]; + } else if (xhr.status == 404) { + error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status]; + } else if (xhr.status >= 500) { + error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status]; + } else { + if (xhr.status == 414 && options.type === 'get') { + // retry by POST method + options.type = 'post'; + self.abortXHR(xhr); + dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success); + return; + } + error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status]; + } + } + } + + self.trigger(cmd + 'done'); + dfrd.reject(error, xhr, status); + }, + /** + * Request success handler. Valid response data and reject/resolve dfrd. + * + * @param Object response data + * @param String request status + * @return void + **/ + success = function(response) { + var d = self.options.debug; + + // Set currrent request command name + self.currentReqCmd = cmd; + + if (response.debug && (!d || d !== 'all')) { + if (!d) { + d = self.options.debug = {}; + } + d['backend-error'] = true; + d['warning'] = true; + } + + if (raw) { + self.abortXHR(xhr); + response && response.debug && self.debug('backend-debug', response); + return dfrd.resolve(response); + } + + if (!response) { + return dfrd.reject(['errResponse', 'errDataEmpty'], xhr, response); + } else if (!$.isPlainObject(response)) { + return dfrd.reject(['errResponse', 'errDataNotJSON'], xhr, response); + } else if (response.error) { + if (isOpen) { + // check leafRoots + $.each(self.leafRoots, function(phash, roots) { + self.leafRoots[phash] = $.grep(roots, function(h) { return h !== data.target; }); + }); + } + return dfrd.reject(response.error, xhr, response); + } + + var resolve = function() { + var pushLeafRoots = function(name) { + if (self.leafRoots[data.target] && response[name]) { + $.each(self.leafRoots[data.target], function(i, h) { + var root; + if (root = self.file(h)) { + response[name].push(root); + } + }); + } + }, + setTextMimes = function() { + self.textMimes = {}; + $.each(self.res('mimes', 'text'), function() { + self.textMimes[this.toLowerCase()] = true; + }); + }, + actionTarget; + + if (isOpen) { + pushLeafRoots('files'); + } else if (cmd === 'tree') { + pushLeafRoots('tree'); + } + + response = self.normalize(response); + + if (!self.validResponse(cmd, response)) { + return dfrd.reject((response.norError || 'errResponse'), xhr, response); + } + + if (isOpen) { + if (!self.api) { + self.api = response.api || 1; + if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') { + self.api = '2.1'; + } + self.newAPI = self.api >= 2; + self.oldAPI = !self.newAPI; + } + + if (response.textMimes && Array.isArray(response.textMimes)) { + self.resources.mimes.text = response.textMimes; + setTextMimes(); + } + !self.textMimes && setTextMimes(); + + if (response.options) { + cwdOptions = Object.assign({}, cwdOptionsDefault, response.options); + } + + if (response.netDrivers) { + self.netDrivers = response.netDrivers; + } + + if (response.maxTargets) { + self.maxTargets = response.maxTargets; + } + + if (!!data.init) { + self.uplMaxSize = self.returnBytes(response.uplMaxSize); + self.uplMaxFile = !!response.uplMaxFile? Math.max(parseInt(response.uplMaxFile), 50) : 20; + } + } + + if (typeof prepare === 'function') { + prepare(response); + } + + if (navigate) { + actionTarget = navigate.target || 'added'; + if (response[actionTarget] && response[actionTarget].length) { + self.one(cmd + 'done', function() { + var targets = response[actionTarget], + newItems = self.findCwdNodes(targets), + inCwdHashes = function() { + var cwdHash = self.cwd().hash; + return $.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; }); + }, + hashes = inCwdHashes(), + makeToast = function(t) { + var node = void(0), + data = t.action? t.action.data : void(0), + cmd, msg, done; + if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) { + done = t.action.done; + data = t.action.data; + node = $('
') + .append( + $('') + .on('mouseenter mouseleave', function(e) { + $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); + }) + .on('click', function() { + self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: $(this) }); + if (done) { + self.one(cmd+'done', function() { + if (typeof done === 'function') { + done(); + } else if (done === 'select') { + self.trigger('selectfiles', {files : inCwdHashes()}); + } + }); + } + }) + ); + } + delete t.action; + t.extNode = node; + return t; + }; + + if (! navigate.toast) { + navigate.toast = {}; + } + + !navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? $.map(targets, function(f) { return f.hash; }) : hashes}); + + if (newItems.length) { + if (!navigate.noscroll) { + newItems.first().trigger('scrolltoview', {blink : false}); + self.resources.blink(newItems, 'lookme'); + } + if ($.isPlainObject(navigate.toast.incwd)) { + self.toast(makeToast(navigate.toast.incwd)); + } + } else { + if ($.isPlainObject(navigate.toast.inbuffer)) { + self.toast(makeToast(navigate.toast.inbuffer)); + } + } + }); + } + } + + dfrd.resolve(response); + + response.debug && self.debug('backend-debug', response); + }; + self.abortXHR(xhr); + lazy? self.lazy(resolve) : resolve(); + }, + xhr, _xhr, + xhrAbort = function(e) { + if (xhr && xhr.state() === 'pending') { + self.abortXHR(xhr, { quiet: true , abort: true }); + if (!e || (e.type !== 'unload' && e.type !== 'destroy')) { + self.autoSync(); + } + } + }, + abort = function(e){ + self.trigger(cmd + 'done'); + if (e.type == 'autosync') { + if (e.data.action != 'stop') return; + } else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') { + if (!e.data.added || !e.data.added.length) { + return; + } + } + xhrAbort(e); + }, + request = function(mode) { + var queueAbort = function() { + syncOnFail = false; + dfrd.reject(); + }; + + if (mode) { + if (mode === 'cmd') { + return cmd; + } + } + + if (isOpen) { + if (requestQueueSkipOpen) { + return dfrd.reject(); + } + requestQueueSkipOpen = true; + } + + requestCnt++; + + dfrd.always(function() { + delete options.headers['X-elFinderReqid']; + }).fail(function(error, xhr, response) { + // unset this cmd queue when user canceling + if (error === 0) { + if (requestQueue.length) { + requestQueue = $.grep(requestQueue, function(req) { + return (req('cmd') === cmd) ? false : true; + }); + } + } + xhrAbort(); + if (isOpen) { + openDir = self.file(data.target); + openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid]; + } + self.trigger(cmd + 'fail', response); + if (error) { + deffail ? self.error(error) : self.debug('error', self.i18n(error)); + } + syncOnFail && self.sync(); + }); + + if (!cmd) { + syncOnFail = false; + return dfrd.reject('errCmdReq'); + } + + if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) { + syncOnFail = false; + return dfrd.reject(['errMaxTargets', self.maxTargets]); + } + + defdone && dfrd.done(done); + + // quiet abort not completed "open" requests + if (isOpen) { + while ((_xhr = queue.pop())) { + _xhr.queueAbort(); + } + if (cwd !== data.target) { + while ((_xhr = cwdQueue.pop())) { + _xhr.queueAbort(); + } + } + } + + // trigger abort autoSync for commands to add the item + if ($.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) { + if (cmd !== 'autosync') { + self.autoSync('stop'); + dfrd.always(function() { + self.autoSync(); + }); + } + self.trigger('openxhrabort'); + } + + delete options.preventFail; + + if (self.api >= 2.1029) { + if (useCache) { + options.headers['X-elFinderReqid'] = reqId; + } else { + Object.assign(options.data, { reqid : reqId }); + } + } + + // function for set value of this syncOnFail + dfrd.syncOnFail = function(state) { + syncOnFail = !!state; + }; + + dfrd.xhr = xhr = self.transport.send(options).always(function() { + --requestCnt; + if (requestQueue.length) { + requestQueue.shift()(); + } else { + requestQueueSkipOpen = false; + } + }).fail(error).done(success); + + if (self.api >= 2.1029) { + xhr._requestId = reqId; + } + + if (isOpen || (data.compare && cmd === 'info')) { + // regist function queueAbort + xhr.queueAbort = queueAbort; + // add autoSync xhr into queue + queue.unshift(xhr); + // bind abort() + data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort); + dfrd.always(function() { + var ndx = $.inArray(xhr, queue); + data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort); + ndx !== -1 && queue.splice(ndx, 1); + }); + } else if ($.inArray(cmd, self.abortCmdsOnOpen) !== -1) { + // regist function queueAbort + xhr.queueAbort = queueAbort; + // add "open" xhr, only cwd xhr into queue + cwdQueue.unshift(xhr); + dfrd.always(function() { + var ndx = $.inArray(xhr, cwdQueue); + ndx !== -1 && cwdQueue.splice(ndx, 1); + }); + } + + // abort pending xhr on window unload or elFinder destroy + self.bind('unload destroy', abort); + dfrd.always(function() { + self.unbind('unload destroy', abort); + }); + + return dfrd; + }, + queueingRequest = function() { + // show notify + if (notify.type && notify.cnt) { + if (cancel) { + notify.cancel = dfrd; + opts.eachCancel && (notify.id = +new Date()); + } + timeout = setTimeout(function() { + self.notify(notify); + dfrd.always(function() { + notify.cnt = -(parseInt(notify.cnt)||0); + self.notify(notify); + }); + }, self.notifyDelay); + + dfrd.always(function() { + clearTimeout(timeout); + }); + } + // queueing + if (isOpen) { + requestQueueSkipOpen = false; + } + if (requestCnt < requestMaxConn) { + // do request + return request(); + } else { + if (isOpen) { + requestQueue.unshift(request); + } else { + requestQueue.push(request); + } + return dfrd; + } + }, + bindData = {opts: opts, result: true}, + openDir; + + // prevent request initial request is completed + if (!self.api && !data.init) { + syncOnFail = false; + return dfrd.reject(); + } + + // trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result" + self.trigger('request.' + cmd, bindData, true); + + if (! bindData.result) { + self.trigger(cmd + 'done'); + return dfrd.reject(); + } else if (typeof bindData.result === 'object' && bindData.result.promise) { + bindData.result + .done(queueingRequest) + .fail(function() { + self.trigger(cmd + 'done'); + dfrd.reject(); + }); + return dfrd; + } + + return queueingRequest(); + }; + + /** + * Call cache() + * Store info about files/dirs in "files" object. + * + * @param Array files + * @return void + */ + this.cache = function(dataArray) { + if (! Array.isArray(dataArray)) { + dataArray = [ dataArray ]; + } + cache(dataArray); + }; + + /** + * Update file object caches by respose data object + * + * @param Object respose data object + * @return void + */ + this.updateCache = function(data) { + if ($.isPlainObject(data)) { + data.files && data.files.length && cache(data.files, 'files'); + data.tree && data.tree.length && cache(data.tree, 'tree'); + data.removed && data.removed.length && remove(data.removed); + data.added && data.added.length && cache(data.added, 'add'); + data.changed && data.changed.length && change(data.changed, 'change'); + } + }; + + /** + * Compare current files cache with new files and return diff + * + * @param Array new files + * @param String target folder hash + * @param Array exclude properties to compare + * @return Object + */ + this.diff = function(incoming, onlydir, excludeProps) { + var raw = {}, + added = [], + removed = [], + changed = [], + excludes = null, + isChanged = function(hash) { + var l = changed.length; + + while (l--) { + if (changed[l].hash == hash) { + return true; + } + } + }; + + $.each(incoming, function(i, f) { + raw[f.hash] = f; + }); + + // make excludes object + if (excludeProps && excludeProps.length) { + excludes = {}; + $.each(excludeProps, function() { + excludes[this] = true; + }); + } + + // find removed + $.each(files, function(hash, f) { + if (! raw[hash] && (! onlydir || f.phash === onlydir)) { + removed.push(hash); + } + }); + + // compare files + $.each(raw, function(hash, file) { + var origin = files[hash], + orgKeys = {}, + chkKeyLen; + + if (!origin) { + added.push(file); + } else { + // make orgKeys object + $.each(Object.keys(origin), function() { + orgKeys[this] = true; + }); + $.each(file, function(prop) { + delete orgKeys[prop]; + if (! excludes || ! excludes[prop]) { + if (file[prop] !== origin[prop]) { + changed.push(file); + orgKeys = {}; + return false; + } + } + }); + chkKeyLen = Object.keys(orgKeys).length; + if (chkKeyLen !== 0) { + if (excludes) { + $.each(orgKeys, function(prop) { + if (excludes[prop]) { + --chkKeyLen; + } + }); + } + (chkKeyLen !== 0) && changed.push(file); + } + } + }); + + // parents of removed dirs mark as changed (required for tree correct work) + $.each(removed, function(i, hash) { + var file = files[hash], + phash = file.phash; + + if (phash + && file.mime == 'directory' + && $.inArray(phash, removed) === -1 + && raw[phash] + && !isChanged(phash)) { + changed.push(raw[phash]); + } + }); + + return { + added : added, + removed : removed, + changed : changed + }; + }; + + /** + * Sync content + * + * @return jQuery.Deferred + */ + this.sync = function(onlydir, polling) { + this.autoSync('stop'); + var self = this, + compare = function(){ + var c = '', cnt = 0, mtime = 0; + if (onlydir && polling) { + $.each(files, function(h, f) { + if (f.phash && f.phash === onlydir) { + ++cnt; + mtime = Math.max(mtime, f.ts); + } + c = cnt+':'+mtime; + }); + } + return c; + }, + comp = compare(), + dfrd = $.Deferred().done(function() { self.trigger('sync'); }), + opts = [this.request({ + data : {cmd : 'open', reload : 1, target : cwd, tree : (! onlydir && this.ui.tree) ? 1 : 0, compare : comp}, + preventDefault : true + })], + exParents = function() { + var parents = [], + curRoot = self.file(self.root(cwd)), + curId = curRoot? curRoot.volumeid : null, + phash = self.cwd().phash, + isroot,pdir; + + while(phash) { + if (pdir = self.file(phash)) { + if (phash.indexOf(curId) !== 0) { + parents.push( {target: phash, cmd: 'tree'} ); + if (! self.isRoot(pdir)) { + parents.push( {target: phash, cmd: 'parents'} ); + } + curRoot = self.file(self.root(phash)); + curId = curRoot? curRoot.volumeid : null; + } + phash = pdir.phash; + } else { + phash = null; + } + } + return parents; + }; + + if (! onlydir && self.api >= 2) { + (cwd !== this.root()) && opts.push(this.request({ + data : {cmd : 'parents', target : cwd}, + preventDefault : true + })); + $.each(exParents(), function(i, data) { + opts.push(self.request({ + data : {cmd : data.cmd, target : data.target}, + preventDefault : true + })); + }); + } + $.when.apply($, opts) + .fail(function(error, xhr) { + if (! polling || $.inArray('errOpen', error) !== -1) { + dfrd.reject(error); + error && self.request({ + data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, + notify : {type : 'open', cnt : 1, hideCnt : true} + }); + } else { + dfrd.reject((error && xhr.status != 0)? error : void 0); + } + }) + .done(function(odata) { + var pdata, argLen, i; + + if (odata.cwd.compare) { + if (comp === odata.cwd.compare) { + return dfrd.reject(); + } + } + + // for 2nd and more requests + pdata = {tree : []}; + + // results marge of 2nd and more requests + argLen = arguments.length; + if (argLen > 1) { + for(i = 1; i < argLen; i++) { + if (arguments[i].tree && arguments[i].tree.length) { + pdata.tree.push.apply(pdata.tree, arguments[i].tree); + } + } + } + + if (self.api < 2.1) { + if (! pdata.tree) { + pdata.tree = []; + } + pdata.tree.push(odata.cwd); + } + + // data normalize + odata = self.normalize(odata); + if (!self.validResponse('open', odata)) { + return dfrd.reject((odata.norError || 'errResponse')); + } + pdata = self.normalize(pdata); + if (!self.validResponse('tree', pdata)) { + return dfrd.reject((pdata.norError || 'errResponse')); + } + + var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir); + + diff.added.push(odata.cwd); + + self.updateCache(diff); + + // trigger events + diff.removed.length && self.remove(diff); + diff.added.length && self.add(diff); + diff.changed.length && self.change(diff); + return dfrd.resolve(diff); + }) + .always(function() { + self.autoSync(); + }); + + return dfrd; + }; + + this.upload = function(files) { + return this.transport.upload(files, this); + }; + + /** + * Arrays that has to unbind events + * + * @type Object + */ + this.toUnbindEvents = {}; + + /** + * Attach listener to events + * To bind to multiply events at once, separate events names by space + * + * @param String event(s) name(s) + * @param Object event handler or {done: handler} + * @param Boolean priority first + * @return elFinder + */ + this.bind = function(event, callback, priorityFirst) { + var i, len; + + if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) { + event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/); + + len = event.length; + for (i = 0; i < len; i++) { + if (listeners[event[i]] === void(0)) { + listeners[event[i]] = []; + } + listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback); + } + } + return this; + }; + + /** + * Remove event listener if exists + * To un-bind to multiply events at once, separate events names by space + * + * @param String event(s) name(s) + * @param Function callback + * @return elFinder + */ + this.unbind = function(event, callback) { + var i, len, l, ci; + + event = ('' + event).toLowerCase().split(/\s+/); + + len = event.length; + for (i = 0; i < len; i++) { + if (l = listeners[event[i]]) { + ci = $.inArray(callback, l); + ci > -1 && l.splice(ci, 1); + } + } + + callback = null; + return this; + }; + + /** + * Fire event - send notification to all event listeners + * In the callback `this` becames an event object + * + * @param String event type + * @param Object data to send across event + * @param Boolean allow modify data (call by reference of data) default: true + * @return elFinder + */ + this.trigger = function(evType, data, allowModify) { + var type = evType.toLowerCase(), + isopen = (type === 'open'), + dataIsObj = (typeof data === 'object'), + handlers = listeners[type] || [], + dones = [], + i, l, jst, event; + + this.debug('event-'+type, data); + + if (! dataIsObj || typeof allowModify === 'undefined') { + allowModify = true; + } + if (l = handlers.length) { + event = $.Event(type); + if (allowModify) { + event.data = data; + } + + for (i = 0; i < l; i++) { + if (! handlers[i]) { + // probably un-binded this handler + continue; + } + + // handler is $.Deferred(), call all functions upon completion + if (handlers[i].done) { + dones.push(handlers[i].done); + continue; + } + + // set `event.data` only callback has argument + if (handlers[i].length) { + if (!allowModify) { + // to avoid data modifications. remember about "sharing" passing arguments in js :) + if (typeof jst === 'undefined') { + try { + jst = JSON.stringify(data); + } catch(e) { + jst = false; + } + } + event.data = jst? JSON.parse(jst) : data; + } + } + + try { + if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) { + this.debug('event-stoped', event.type); + break; + } + } catch (ex) { + window.console && window.console.log && window.console.log(ex); + } + + } + + // call done functions + if (l = dones.length) { + for (i = 0; i < l; i++) { + try { + if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) { + this.debug('event-stoped', event.type + '(done)'); + break; + } + } catch (ex) { + window.console && window.console.log && window.console.log(ex); + } + } + } + + if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) { + $.each(this.toUnbindEvents[type], function(i, v) { + self.unbind(v.type, v.callback); + }); + delete this.toUnbindEvents[type]; + } + } + return this; + }; + + /** + * Get event listeners + * + * @param String event type + * @return Array listed event functions + */ + this.getListeners = function(event) { + return event? listeners[event.toLowerCase()] : listeners; + }; + + /** + * Bind keybord shortcut to keydown event + * + * @example + * elfinder.shortcut({ + * pattern : 'ctrl+a', + * description : 'Select all files', + * callback : function(e) { ... }, + * keypress : true|false (bind to keypress instead of keydown) + * }) + * + * @param Object shortcut config + * @return elFinder + */ + this.shortcut = function(s) { + var patterns, pattern, code, i, parts; + + if (this.options.allowShortcuts && s.pattern && $.isFunction(s.callback)) { + patterns = s.pattern.toUpperCase().split(/\s+/); + + for (i= 0; i < patterns.length; i++) { + pattern = patterns[i]; + parts = pattern.split('+'); + code = (code = parts.pop()).length == 1 + ? (code > 0 ? code : code.charCodeAt(0)) + : (code > 0 ? code : $.ui.keyCode[code]); + + if (code && !shortcuts[pattern]) { + shortcuts[pattern] = { + keyCode : code, + altKey : $.inArray('ALT', parts) != -1, + ctrlKey : $.inArray('CTRL', parts) != -1, + shiftKey : $.inArray('SHIFT', parts) != -1, + type : s.type || 'keydown', + callback : s.callback, + description : s.description, + pattern : pattern + }; + } + } + } + return this; + }; + + /** + * Registered shortcuts + * + * @type Object + **/ + this.shortcuts = function() { + var ret = []; + + $.each(shortcuts, function(i, s) { + ret.push([s.pattern, self.i18n(s.description)]); + }); + return ret; + }; + + /** + * Get/set clipboard content. + * Return new clipboard content. + * + * @example + * this.clipboard([]) - clean clipboard + * this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted + * + * @param Array new files hashes + * @param Boolean cut files? + * @return Array + */ + this.clipboard = function(hashes, cut) { + var map = function() { return $.map(clipboard, function(f) { return f.hash; }); }; + + if (hashes !== void(0)) { + clipboard.length && this.trigger('unlockfiles', {files : map()}); + remember = {}; + + clipboard = $.map(hashes||[], function(hash) { + var file = files[hash]; + if (file) { + + remember[hash] = true; + + return { + hash : hash, + phash : file.phash, + name : file.name, + mime : file.mime, + read : file.read, + locked : file.locked, + cut : !!cut + }; + } + return null; + }); + this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)}); + cut && this.trigger('lockfiles', {files : map()}); + } + + // return copy of clipboard instead of refrence + return clipboard.slice(0, clipboard.length); + }; + + /** + * Return true if command enabled + * + * @param String command name + * @param String|void hash for check of own volume's disabled cmds + * @return Boolean + */ + this.isCommandEnabled = function(name, dstHash) { + var disabled, cmd, + cvid = self.cwd().volumeid || ''; + + // In serach results use selected item hash to check + if (!dstHash && self.searchStatus.state > 1 && self.selected().length) { + dstHash = self.selected()[0]; + } + if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) { + disabled = self.option('disabledFlip', dstHash); + //if (! disabled) { + // disabled = {}; + //} + } else { + disabled = cwdOptions.disabledFlip/* || {}*/; + } + cmd = this._commands[name]; + return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false; + }; + + /** + * Exec command and return result; + * + * @param String command name + * @param String|Array usualy files hashes + * @param String|Array command options + * @param String|void hash for enabled check of own volume's disabled cmds + * @return $.Deferred + */ + this.exec = function(cmd, files, opts, dstHash) { + var dfrd, resType; + + // apply commandMap for keyboard shortcut + if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') { + cmd = this.commandMap[cmd]; + } + + if (cmd === 'open') { + if (this.searchStatus.state || this.searchStatus.ininc) { + this.trigger('searchend', { noupdate: true }); + } + this.autoSync('stop'); + } + if (!dstHash && files) { + if ($.isArray(files)) { + if (files.length) { + dstHash = files[0]; + } + } else { + dstHash = files; + } + } + dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) + ? this._commands[cmd].exec(files, opts) + : $.Deferred().reject('No such command'); + + resType = typeof dfrd; + if (!(resType === 'object' && dfrd.promise)) { + self.debug('warning', '"cmd.exec()" should be returned "$.Deferred" but cmd "' + cmd + '" returned "' + resType + '"'); + dfrd = $.Deferred().resolve(); + } + + this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash }); + return dfrd; + }; + + /** + * Create and return dialog. + * + * @param String|DOMElement dialog content + * @param Object dialog options + * @return jQuery + */ + this.dialog = function(content, options) { + var dialog = $('
').append(content).appendTo(node).elfinderdialog(options, this), + dnode = dialog.closest('.ui-dialog'), + resize = function(){ + ! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit'); + }; + if (dnode.length) { + self.bind('resize', resize); + dnode.on('remove', function() { + self.unbind('resize', resize); + }); + } + return dialog; + }; + + /** + * Create and return toast. + * + * @param Object toast options - see ui/toast.js + * @return jQuery + */ + this.toast = function(options) { + return $('
').appendTo(this.ui.toast).elfindertoast(options || {}, this); + }; + + /** + * Return UI widget or node + * + * @param String ui name + * @return jQuery + */ + this.getUI = function(ui) { + return this.ui[ui] || (ui? $() : node); + }; + + /** + * Return elFinder.command instance or instances array + * + * @param String command name + * @return Object | Array + */ + this.getCommand = function(name) { + return name === void(0) ? this._commands : this._commands[name]; + }; + + /** + * Resize elfinder node + * + * @param String|Number width + * @param String|Number height + * @return void + */ + this.resize = function(w, h) { + var getMargin = function() { + var m = node.outerHeight(true) - node.innerHeight(), + p = node; + + while(p.get(0) !== heightBase.get(0)) { + p = p.parent(); + m += p.outerHeight(true) - p.innerHeight(); + if (! p.parent().length) { + // reached the document + break; + } + } + return m; + }, + fit = ! node.hasClass('ui-resizable'), + prv = node.data('resizeSize') || {w: 0, h: 0}, + mt, size = {}; + + if (heightBase && heightBase.data('resizeTm')) { + clearTimeout(heightBase.data('resizeTm')); + } + + if (typeof h === 'string') { + if (mt = h.match(/^([0-9.]+)%$/)) { + // setup heightBase + if (! heightBase || ! heightBase.length) { + heightBase = $(window); + } + if (! heightBase.data('marginToMyNode')) { + heightBase.data('marginToMyNode', getMargin()); + } + if (! heightBase.data('fitToBaseFunc')) { + heightBase.data('fitToBaseFunc', function(e) { + var tm = heightBase.data('resizeTm'); + e.preventDefault(); + e.stopPropagation(); + tm && cancelAnimationFrame(tm); + if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) { + heightBase.data('rotated', self.UA.Rotated); + heightBase.data('resizeTm', requestAnimationFrame(function() { + self.restoreSize(); + })); + } + }); + } + if (typeof heightBase.data('rotated') === 'undefined') { + heightBase.data('rotated', self.UA.Rotated); + } + h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode'); + + heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); + fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); + } + } + + node.css({ width : w, height : parseInt(h) }); + size.w = Math.round(node.width()); + size.h = Math.round(node.height()); + node.data('resizeSize', size); + if (size.w !== prv.w || size.h !== prv.h) { + node.trigger('resize'); + this.trigger('resize', {width : size.w, height : size.h}); + } + }; + + /** + * Restore elfinder node size + * + * @return elFinder + */ + this.restoreSize = function() { + this.resize(width, height); + }; + + this.show = function() { + node.show(); + this.enable().trigger('show'); + }; + + this.hide = function() { + if (this.options.enableAlways) { + prevEnabled = enabled; + enabled = false; + } + this.disable(); + this.trigger('hide'); + node.hide(); + }; + + /** + * Lazy execution function + * + * @param Object function + * @param Number delay + * @param Object options + * @return Object jQuery.Deferred + */ + this.lazy = function(func, delay, opts) { + var busy = function(state) { + var cnt = node.data('lazycnt'), + repaint; + + if (state) { + repaint = node.data('lazyrepaint')? false : opts.repaint; + if (! cnt) { + node.data('lazycnt', 1) + .addClass('elfinder-processing'); + } else { + node.data('lazycnt', ++cnt); + } + if (repaint) { + node.data('lazyrepaint', true).css('display'); // force repaint + } + } else { + if (cnt && cnt > 1) { + node.data('lazycnt', --cnt); + } else { + repaint = node.data('lazyrepaint'); + node.data('lazycnt', 0) + .removeData('lazyrepaint') + .removeClass('elfinder-processing'); + repaint && node.css('display'); // force repaint; + self.trigger('lazydone'); + } + } + }, + dfd = $.Deferred(), + callFunc = function() { + dfd.resolve(func.call(dfd)); + busy(false); + }; + + delay = delay || 0; + opts = opts || {}; + busy(true); + + if (delay) { + setTimeout(callFunc, delay); + } else { + requestAnimationFrame(callFunc); + } + + return dfd; + }; + + /** + * Destroy this elFinder instance + * + * @return void + **/ + this.destroy = function() { + if (node && node[0].elfinder) { + node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node); + this.options.syncStart = false; + this.autoSync('forcestop'); + this.trigger('destroy').disable(); + clipboard = []; + selected = []; + listeners = {}; + shortcuts = {}; + $(window).off('.' + namespace); + $(document).off('.' + namespace); + self.trigger = function(){}; + $(beeper).remove(); + node.off() + .removeData() + .empty() + .append(prevContent.contents()) + .attr('class', prevContent.attr('class')) + .attr('style', prevContent.attr('style')); + delete node[0].elfinder; + // restore kept events + $.each(prevEvents, function(n, arr) { + $.each(arr, function(i, o) { + node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler); + }); + }); + } + }; + + /** + * Start or stop auto sync + * + * @param String|Bool stop + * @return void + */ + this.autoSync = function(mode) { + var sync; + if (self.options.sync >= 1000) { + if (syncInterval) { + clearTimeout(syncInterval); + syncInterval = null; + self.trigger('autosync', {action : 'stop'}); + } + + if (mode === 'stop') { + ++autoSyncStop; + } else { + autoSyncStop = Math.max(0, --autoSyncStop); + } + + if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) { + return; + } + + // run interval sync + sync = function(start){ + var timeout; + if (cwdOptions.syncMinMs && (start || syncInterval)) { + start && self.trigger('autosync', {action : 'start'}); + timeout = Math.max(self.options.sync, cwdOptions.syncMinMs); + syncInterval && clearTimeout(syncInterval); + syncInterval = setTimeout(function() { + var dosync = true, hash = cwd, cts; + if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) { + self.request({ + data : {cmd : 'info', targets : [hash], compare : cts, reload : 1}, + preventDefault : true + }) + .done(function(data){ + var ts; + dosync = true; + if (data.compare) { + ts = data.compare; + if (ts == cts) { + dosync = false; + } + } + if (dosync) { + self.sync(hash).always(function(){ + if (ts) { + // update ts for cache clear etc. + files[hash].ts = ts; + } + sync(); + }); + } else { + sync(); + } + }) + .fail(function(error, xhr){ + if (error && xhr.status != 0) { + self.error(error); + if ($.inArray('errOpen', error) !== -1) { + self.request({ + data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, + notify : {type : 'open', cnt : 1, hideCnt : true} + }); + } + } else { + syncInterval = setTimeout(function() { + sync(); + }, timeout); + } + }); + } else { + self.sync(cwd, true).always(function(){ + sync(); + }); + } + }, timeout); + } + }; + sync(true); + } + }; + + /** + * Return bool is inside work zone of specific point + * + * @param Number event.pageX + * @param Number event.pageY + * @return Bool + */ + this.insideWorkzone = function(x, y, margin) { + var rectangle = this.getUI('workzone').data('rectangle'); + + margin = margin || 1; + if (x < rectangle.left + margin + || x > rectangle.left + rectangle.width + margin + || y < rectangle.top + margin + || y > rectangle.top + rectangle.height + margin) { + return false; + } + return true; + }; + + /** + * Target ui node move to last of children of elFinder node fot to show front + * + * @param Object target Target jQuery node object + */ + this.toFront = function(target) { + var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'), + lastnode = nodes.last(); + nodes.css('z-index', ''); + $(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1); + }; + + /** + * Remove class 'elfinder-frontmost' and hide() to target ui node + * + * @param Object target Target jQuery node object + * @param Boolean nohide Do not hide + */ + this.toHide =function(target, nohide) { + var tgt = $(target), + last; + + !nohide && tgt.hide(); + if (tgt.hasClass('elfinder-frontmost')) { + tgt.removeClass('elfinder-frontmost'); + last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last(); + if (last.length) { + requestAnimationFrame(function() { + if (!node.children('.elfinder-frontmost:visible').length) { + self.toFront(last); + last.trigger('frontmost'); + } + }); + } + } + }; + + /** + * Return css object for maximize + * + * @return Object + */ + this.getMaximizeCss = function() { + return { + width : '100%', + height : '100%', + margin : 0, + padding : 0, + top : 0, + left : 0, + display : 'block', + position: 'fixed', + zIndex : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000), + maxWidth : '', + maxHeight: '' + }; + }; + + // Closure for togglefullscreen + (function() { + // check is in iframe + if (inFrame && self.UA.Fullscreen) { + self.UA.Fullscreen = false; + if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') { + self.UA.Fullscreen = true; + } + } + + var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull, + cls = 'elfinder-fullscreen', + clsN = 'elfinder-fullscreen-native', + checkDialog = function() { + var t = 0, + l = 0; + $.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) { + var $d = $(d), + pos = $d.position(); + + if (pos.top < 0) { + $d.css('top', t); + t += 20; + } + if (pos.left < 0) { + $d.css('left', l); + l += 20; + } + }); + }, + funcObj = self.UA.Fullscreen? { + // native full screen mode + + fullElm: function() { + return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null; + }, + + exitFull: function() { + if (document.exitFullscreen) { + return document.exitFullscreen(); + } else if (document.webkitExitFullscreen) { + return document.webkitExitFullscreen(); + } else if (document.mozCancelFullScreen) { + return document.mozCancelFullScreen(); + } else if (document.msExitFullscreen) { + return document.msExitFullscreen(); + } + }, + + toFull: function(elem) { + if (elem.requestFullscreen) { + return elem.requestFullscreen(); + } else if (elem.webkitRequestFullscreen) { + return elem.webkitRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + return elem.mozRequestFullScreen(); + } else if (elem.msRequestFullscreen) { + return elem.msRequestFullscreen(); + } + return false; + } + } : { + // node element maximize mode + + fullElm: function() { + var full; + if (node.hasClass(cls)) { + return node.get(0); + } else { + full = node.find('.' + cls); + if (full.length) { + return full.get(0); + } + } + return null; + }, + + exitFull: function() { + var elm; + + $(window).off('resize.' + namespace, resize); + if (bodyOvf !== void(0)) { + $('body').css('overflow', bodyOvf); + } + bodyOvf = void(0); + + if (orgStyle) { + elm = orgStyle.elm; + restoreStyle(elm); + $(elm).trigger('resize', {fullscreen: 'off'}); + } + + $(window).trigger('resize'); + }, + + toFull: function(elem) { + bodyOvf = $('body').css('overflow') || ''; + $('body').css('overflow', 'hidden'); + + $(elem).css(self.getMaximizeCss()) + .addClass(cls) + .trigger('resize', {fullscreen: 'on'}); + + checkDialog(); + + $(window).on('resize.' + namespace, resize).trigger('resize'); + + return true; + } + }, + restoreStyle = function(elem) { + if (orgStyle && orgStyle.elm == elem) { + $(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style); + orgStyle = null; + } + }, + resize = function(e) { + var elm; + if (e.target === window) { + resizeTm && cancelAnimationFrame(resizeTm); + resizeTm = requestAnimationFrame(function() { + if (elm = funcObj.fullElm()) { + $(elm).trigger('resize', {fullscreen: 'on'}); + } + }); + } + }; + + $(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){ + if (self.UA.Fullscreen) { + var elm = funcObj.fullElm(), + win = $(window); + + resizeTm && cancelAnimationFrame(resizeTm); + if (elm === null) { + win.off('resize.' + namespace, resize); + if (orgStyle) { + elm = orgStyle.elm; + restoreStyle(elm); + $(elm).trigger('resize', {fullscreen: 'off'}); + } + } else { + $(elm).addClass(cls + ' ' + clsN) + .attr('style', 'width:100%; height:100%; margin:0; padding:0;') + .trigger('resize', {fullscreen: 'on'}); + win.on('resize.' + namespace, resize); + checkDialog(); + } + win.trigger('resize'); + } + }); + + /** + * Toggle Full Scrren Mode + * + * @param Object target + * @param Bool full + * @return Object | Null DOM node object of current full scrren + */ + self.toggleFullscreen = function(target, full) { + var elm = $(target).get(0), + curElm = null; + + curElm = funcObj.fullElm(); + if (curElm) { + if (curElm == elm) { + if (full === true) { + return curElm; + } + } else { + if (full === false) { + return curElm; + } + } + funcObj.exitFull(); + return null; + } else { + if (full === false) { + return null; + } + } + + orgStyle = {elm: elm, style: $(elm).attr('style')}; + if (funcObj.toFull(elm) !== false) { + return elm; + } else { + orgStyle = null; + return null; + } + }; + })(); + + // Closure for toggleMaximize + (function(){ + var cls = 'elfinder-maximized', + resizeTm, + resize = function(e) { + if (e.target === window && e.data && e.data.elm) { + var elm = e.data.elm; + resizeTm && cancelAnimationFrame(resizeTm); + resizeTm = requestAnimationFrame(function() { + elm.trigger('resize', {maximize: 'on'}); + }); + } + }, + exitMax = function(elm) { + $(window).off('resize.' + namespace, resize); + $('body').css('overflow', elm.data('bodyOvf')); + elm.removeClass(cls) + .attr('style', elm.data('orgStyle')) + .removeData('bodyOvf') + .removeData('orgStyle'); + elm.trigger('resize', {maximize: 'off'}); + }, + toMax = function(elm) { + elm.data('bodyOvf', $('body').css('overflow') || '') + .data('orgStyle', elm.attr('style')) + .addClass(cls) + .css(self.getMaximizeCss()); + $('body').css('overflow', 'hidden'); + $(window).on('resize.' + namespace, {elm: elm}, resize); + elm.trigger('resize', {maximize: 'on'}); + }; + + /** + * Toggle Maximize target node + * + * @param Object target + * @param Bool max + * @return void + */ + self.toggleMaximize = function(target, max) { + var elm = $(target), + maximized = elm.hasClass(cls); + + if (maximized) { + if (max === true) { + return; + } + exitMax(elm); + } else { + if (max === false) { + return; + } + toMax(elm); + } + }; + })(); + + /************* init stuffs ****************/ + Object.assign($.ui.keyCode, { + 'F1' : 112, + 'F2' : 113, + 'F3' : 114, + 'F4' : 115, + 'F5' : 116, + 'F6' : 117, + 'F7' : 118, + 'F8' : 119, + 'F9' : 120, + 'F10' : 121, + 'F11' : 122, + 'F12' : 123, + 'DIG0' : 48, + 'DIG1' : 49, + 'DIG2' : 50, + 'DIG3' : 51, + 'DIG4' : 52, + 'DIG5' : 53, + 'DIG6' : 54, + 'DIG7' : 55, + 'DIG8' : 56, + 'DIG9' : 57, + 'NUM0' : 96, + 'NUM1' : 97, + 'NUM2' : 98, + 'NUM3' : 99, + 'NUM4' : 100, + 'NUM5' : 101, + 'NUM6' : 102, + 'NUM7' : 103, + 'NUM8' : 104, + 'NUM9' : 105, + 'CONTEXTMENU' : 93, + 'DOT' : 190 + }); + + this.dragUpload = false; + this.xhrUpload = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined'; + + // configure transport object + this.transport = {}; + + if (typeof(this.options.transport) == 'object') { + this.transport = this.options.transport; + if (typeof(this.transport.init) == 'function') { + this.transport.init(this); + } + } + + if (typeof(this.transport.send) != 'function') { + this.transport.send = function(opts) { return $.ajax(opts); }; + } + + if (this.transport.upload == 'iframe') { + this.transport.upload = $.proxy(this.uploads.iframe, this); + } else if (typeof(this.transport.upload) == 'function') { + this.dragUpload = !!this.options.dragUploadAllow; + } else if (this.xhrUpload && !!this.options.dragUploadAllow) { + this.transport.upload = $.proxy(this.uploads.xhr, this); + this.dragUpload = true; + } else { + this.transport.upload = $.proxy(this.uploads.iframe, this); + } + + /** + * Decoding 'raw' string converted to unicode + * + * @param String str + * @return String + */ + this.decodeRawString = function(str) { + var charCodes = function(str) { + var i, len, arr; + for (i=0,len=str.length,arr=[]; i= 0xd800 && c <= 0xdbff) { + scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023); + } else { + scalars.push(c); + } + } + return scalars; + }, + decodeUTF8 = function(arr) { + var i, len, c, str, char = String.fromCharCode; + for (i=0,len=arr.length,str=""; c=arr[i],i= 0xc2) { + str += char((c&31)<<6 | arr[++i]&63); + } else if (c <= 0xef && c >= 0xe0) { + str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63); + } else if (c <= 0xf7 && c >= 0xf0) { + str += char( + 0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64, + 0xdc00 | (arr[i++]&15)<<6 | arr[i]&63 + ); + } else { + str += char(0xfffd); + } + } + return str; + }; + + return decodeUTF8(scalarValues(str)); + }; + + /** + * Gets target file contents by file.hash + * + * @param String hash The hash + * @param String responseType 'blob' or 'arraybuffer' (default) + * @return arraybuffer|blob The contents. + */ + this.getContents = function(hash, responseType) { + var self = this, + dfd = $.Deferred(), + type = responseType || 'arraybuffer', + url, req; + + dfd.fail(function() { + req && req.state() === 'pending' && req.reject(); + }); + + url = self.openUrl(hash); + if (!self.isSameOrigin(url)) { + url = self.openUrl(hash, true); + } + req = self.request({ + data : {cmd : 'get'}, + options : { + url: url, + type: 'get', + cache : true, + dataType : 'binary', + responseType : type, + processData: false + } + }) + .fail(function() { + dfd.reject(); + }) + .done(function(data) { + dfd.resolve(data); + }); + + return dfd; + }; + + this.getMimetype = function(name, orgMime) { + var mime = orgMime, + ext, m; + m = (name + '').match(/\.([^.]+)$/); + if (m && (ext = m[1])) { + if (!extToMimeTable) { + extToMimeTable = self.arrayFlip(self.mimeTypes); + } + if (!(mime = extToMimeTable[ext.toLowerCase()])) { + mime = orgMime; + } + } + return mime; + }; + + /** + * Supported check hash algorisms + * + * @type Array + */ + self.hashCheckers = []; + + /** + * Closure of getContentsHashes() + */ + (function(self) { + var hashLibs = { + check : true + }, + md5Calc = function(arr) { + var spark = new hashLibs.SparkMD5.ArrayBuffer(), + job; + + job = self.asyncJob(function(buf) { + spark.append(buf); + }, arr).done(function() { + job._md5 = spark.end(); + }); + + return job; + }, + shaCalc = function(arr, length) { + var sha, job; + + try { + sha = new hashLibs.jsSHA('SHA' + (length.substr(0, 1) === '3'? length : ('-' + length)), 'ARRAYBUFFER'); + job = self.asyncJob(function(buf) { + sha.update(buf); + }, arr).done(function() { + job._sha = sha.getHash('HEX'); + }); + } catch(e) { + job = $.Deferred.reject(); + } + + return job; + }; + + // make fm.hashCheckers + if (self.options.cdns.sparkmd5) { + self.hashCheckers.push('md5'); + } + if (self.options.cdns.jssha) { + self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']); + } + + /** + * Gets the contents hashes. + * + * @param String target target file.hash + * @param Object needHashes need hash lib names + * @return Object hashes with lib name as key + */ + self.getContentsHashes = function(target, needHashes) { + var dfd = $.Deferred(), + needs = self.arrayFlip(needHashes || ['md5'], true), + libs = [], + jobs = [], + res = {}, + req; + + dfd.fail(function() { + req && req.reject(); + }); + + if (hashLibs.check) { + + delete hashLibs.check; + + // load SparkMD5 + var libsmd5 = $.Deferred(); + if (window.ArrayBuffer && self.options.cdns.sparkmd5) { + libs.push(libsmd5); + self.loadScript([self.options.cdns.sparkmd5], + function(res) { + var SparkMD5 = res || window.SparkMD5; + window.SparkMD5 && delete window.SparkMD5; + libsmd5.resolve(); + if (SparkMD5) { + hashLibs.SparkMD5 = SparkMD5; + } + }, + { + tryRequire: true, + error: function() { + libsmd5.reject(); + } + } + ); + } + + // load jsSha + var libssha = $.Deferred(); + if (window.ArrayBuffer && self.options.cdns.jssha) { + libs.push(libssha); + self.loadScript([self.options.cdns.jssha], + function(res) { + var jsSHA = res || window.jsSHA; + window.jsSHA && delete window.jsSHA; + libssha.resolve(); + if (jsSHA) { + hashLibs.jsSHA = jsSHA; + } + }, + { + tryRequire: true, + error: function() { + libssha.reject(); + } + } + ); + } + } + + $.when.apply(null, libs).always(function() { + if (Object.keys(hashLibs).length) { + req = self.getContents(target).done(function(arrayBuffer) { + var arr = (arrayBuffer instanceof ArrayBuffer && arrayBuffer.byteLength > 0)? self.sliceArrayBuffer(arrayBuffer, 1048576) : false, + i; + + if (needs.md5 && hashLibs.SparkMD5) { + jobs.push(function() { + var job = md5Calc(arr).done(function() { + var f; + res.md5 = job._md5; + if (f = self.file(target)) { + f.md5 = job._md5; + } + dfd.notify(res); + }); + dfd.fail(function() { + job.reject(); + }); + return job; + }); + } + if (hashLibs.jsSHA) { + $.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) { + if (needs['sha' + v]) { + jobs.push(function() { + var job = shaCalc(arr, v).done(function() { + var f; + res['sha' + v] = job._sha; + if (f = self.file(target)) { + f['sha' + v] = job._sha; + } + dfd.notify(res); + }); + return job; + }); + } + }); + } + if (jobs.length) { + self.sequence(jobs).always(function() { + dfd.resolve(res); + }); + } else { + dfd.reject(); + } + }).fail(function() { + dfd.reject(); + }); + } else { + dfd.reject(); + } + }); + + return dfd; + }; + })(this); + + /** + * Alias for this.trigger('error', {error : 'message'}) + * + * @param String error message + * @return elFinder + **/ + this.error = function() { + var arg = arguments[0], + opts = arguments[1] || null; + return arguments.length == 1 && typeof(arg) == 'function' + ? self.bind('error', arg) + : (arg === true? this : self.trigger('error', {error : arg, opts : opts})); + }; + + // create bind/trigger aliases for build-in events + $.each(events, function(i, name) { + self[name] = function() { + var arg = arguments[0]; + return arguments.length == 1 && typeof(arg) == 'function' + ? self.bind(name, arg) + : self.trigger(name, $.isPlainObject(arg) ? arg : {}); + }; + }); + + // bind core event handlers + this + .enable(function() { + if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) { + enabled = true; + document.activeElement && document.activeElement.blur(); + node.removeClass('elfinder-disabled'); + } + }) + .disable(function() { + prevEnabled = enabled; + enabled = false; + node.addClass('elfinder-disabled'); + }) + .open(function() { + selected = []; + }) + .select(function(e) { + var cnt = 0, + unselects = []; + selected = $.grep(e.data.selected || e.data.value|| [], function(hash) { + if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) { + unselects.push(hash); + return false; + } else { + return files[hash] ? true : false; + } + }); + if (unselects.length) { + self.trigger('unselectfiles', {files: unselects, inselect: true}); + self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])}); + } + }) + .error(function(e) { + var opts = { + cssClass : 'elfinder-dialog-error', + title : self.i18n(self.i18n('error')), + resizable : false, + destroyOnClose : true, + buttons : {} + }; + + opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { $(this).elfinderdialog('close'); }; + + if (e.data.opts && $.isPlainObject(e.data.opts)) { + Object.assign(opts, e.data.opts); + } + + self.dialog(''+self.i18n(e.data.error), opts); + }) + .bind('tmb', function(e) { + $.each(e.data.images||[], function(hash, tmb) { + if (files[hash]) { + files[hash].tmb = tmb; + } + }); + }) + .bind('searchstart', function(e) { + Object.assign(self.searchStatus, e.data); + self.searchStatus.state = 1; + }) + .bind('search', function(e) { + self.searchStatus.state = 2; + }) + .bind('searchend', function() { + self.searchStatus.state = 0; + self.searchStatus.ininc = false; + self.searchStatus.mixed = false; + }) + .bind('canMakeEmptyFile', function(e) { + var data = e.data, + obj = {}; + if (data && Array.isArray(data.mimes)) { + if (!data.unshift) { + obj = self.mimesCanMakeEmpty; + } + $.each(data.mimes, function() { + if (!obj[this]) { + obj[this] = self.mimeTypes[this]; + } + }); + if (data.unshift) { + self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty); + } + } + }) + ; + + // We listen and emit a sound on delete according to option + if (true === this.options.sound) { + this.bind('playsound', function(e) { + var play = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'), + file = e.data && e.data.soundFile; + + play && file && play != '' && play != 'no' && $(beeper).html('')[0].play(); + }); + } + + // bind external event handlers + $.each(this.options.handlers, function(event, callback) { + self.bind(event, callback); + }); + + /** + * History object. Store visited folders + * + * @type Object + **/ + this.history = new this.history(this); + + /** + * Root hashed + * + * @type Object + */ + this.roots = {}; + + /** + * leaf roots + * + * @type Object + */ + this.leafRoots = {}; + + this.volumeExpires = {}; + + /** + * Loaded commands + * + * @type Object + **/ + this._commands = {}; + + if (!Array.isArray(this.options.commands)) { + this.options.commands = []; + } + + if ($.inArray('*', this.options.commands) !== -1) { + this.options.commands = Object.keys(this.commands); + } + + /** + * UI command map of cwd volume ( That volume driver option `uiCmdMap` ) + * + * @type Object + **/ + this.commandMap = {}; + + /** + * cwd options of each volume + * key: volumeid + * val: options object + * + * @type Object + */ + this.volOptions = {}; + + /** + * Has volOptions data + * + * @type Boolean + */ + this.hasVolOptions = false; + + /** + * Hash of trash holders + * key: trash folder hash + * val: source volume hash + * + * @type Object + */ + this.trashes = {}; + + /** + * cwd options of each folder/file + * key: hash + * val: options object + * + * @type Object + */ + this.optionsByHashes = {}; + + /** + * UI Auto Hide Functions + * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process + * + * @type Array + **/ + this.uiAutoHide = []; + + // trigger `uiautohide` + this.one('open', function() { + if (self.uiAutoHide.length) { + setTimeout(function() { + self.trigger('uiautohide'); + }, 500); + } + }); + + // Auto Hide Functions sequential processing start + this.bind('uiautohide', function() { + if (self.uiAutoHide.length) { + self.uiAutoHide.shift()(); + } + }); + + if (this.options.width) { + width = this.options.width; + } + + if (this.options.height) { + height = this.options.height; + } + + if (this.options.heightBase) { + heightBase = $(this.options.heightBase); + } + + if (this.options.soundPath) { + soundPath = this.options.soundPath.replace(/\/+$/, '') + '/'; + } else { + soundPath = this.baseUrl + soundPath; + } + + self.one('opendone', function() { + var tm; + // attach events to document + $(document) + // disable elfinder on click outside elfinder + .on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !$(e.target).closest(node).length && self.disable(); }) + // exec shortcuts + .on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut); + + // attach events to window + self.options.useBrowserHistory && $(window) + .on('popstate.' + namespace, function(ev) { + var state = ev.originalEvent.state || {}, + hasThash = state.thash? true : false, + dialog = node.find('.elfinder-frontmost:visible'), + input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'), + onOpen, toast; + if (!hasThash) { + state = { thash: self.cwd().hash }; + // scroll to elFinder node + $('html,body').animate({ scrollTop: node.offset().top }); + } + if (dialog.length || input.length) { + history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); + if (dialog.length) { + if (!dialog.hasClass(self.res('class', 'preventback'))) { + if (dialog.hasClass('elfinder-contextmenu')) { + $(document).trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); + } else if (dialog.hasClass('elfinder-dialog')) { + dialog.elfinderdialog('close'); + } else { + dialog.trigger('close'); + } + } + } else { + input.trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); + } + } else { + if (hasThash) { + !$.isEmptyObject(self.files()) && self.request({ + data : {cmd : 'open', target : state.thash, onhistory : 1}, + notify : {type : 'open', cnt : 1, hideCnt : true}, + syncOnFail : true + }); + } else { + onOpen = function() { + toast.trigger('click'); + }; + self.one('open', onOpen, true); + toast = self.toast({ + msg: self.i18n('pressAgainToExit'), + onHidden: function() { + self.unbind('open', onOpen); + history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); + } + }); + } + } + }); + + $(window).on('resize.' + namespace, function(e){ + if (e.target === this) { + tm && cancelAnimationFrame(tm); + tm = requestAnimationFrame(function() { + var prv = node.data('resizeSize') || {w: 0, h: 0}, + size = {w: Math.round(node.width()), h: Math.round(node.height())}; + node.data('resizeSize', size); + if (size.w !== prv.w || size.h !== prv.h) { + node.trigger('resize'); + self.trigger('resize', {width : size.w, height : size.h}); + } + }); + } + }) + .on('beforeunload.' + namespace,function(e){ + var msg, cnt; + if (node.is(':visible')) { + if (self.ui.notify.children().length && $.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) { + msg = self.i18n('ntfsmth'); + } else if (node.find('.'+self.res('class', 'editing')).length && $.inArray('editingFile', self.options.windowCloseConfirm) !== -1) { + msg = self.i18n('editingFile'); + } else if ((cnt = Object.keys(self.selected()).length) && $.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) { + msg = self.i18n('hasSelected', ''+cnt); + } else if ((cnt = Object.keys(self.clipboard()).length) && $.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) { + msg = self.i18n('hasClipboard', ''+cnt); + } + if (msg) { + e.returnValue = msg; + return msg; + } + } + self.trigger('unload'); + }); + + // bind window onmessage for CORS + $(window).on('message.' + namespace, function(e){ + var res = e.originalEvent || null, + obj, data; + if (res && self.uploadURL.indexOf(res.origin) === 0) { + try { + obj = JSON.parse(res.data); + data = obj.data || null; + if (data) { + if (data.error) { + if (obj.bind) { + self.trigger(obj.bind+'fail', data); + } + self.error(data.error); + } else { + data.warning && self.error(data.warning); + self.updateCache(data); + data.removed && data.removed.length && self.remove(data); + data.added && data.added.length && self.add(data); + data.changed && data.changed.length && self.change(data); + if (obj.bind) { + self.trigger(obj.bind, data); + self.trigger(obj.bind+'done'); + } + data.sync && self.sync(); + } + } + } catch (e) { + self.sync(); + } + } + }); + + // elFinder enable always + if (self.options.enableAlways) { + $(window).on('focus.' + namespace, function(e){ + (e.target === this) && self.enable(); + }); + if (inFrame) { + $(window.top).on('focus.' + namespace, function() { + if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) { + requestAnimationFrame(function() { + $(window).trigger('focus'); + }); + } + }); + } + } else if (inFrame) { + $(window).on('blur.' + namespace, function(e){ + enabled && e.target === this && self.disable(); + }); + } + + // return focus to the window on click (elFInder in the frame) + if (inFrame) { + node.on('click', function(e) { + $(window).trigger('focus'); + }); + } + + // elFinder to enable by mouse over + if (self.options.enableByMouseOver) { + node.on('mouseenter touchstart', function(e) { + (inFrame) && $(window).trigger('focus'); + ! self.enabled() && self.enable(); + }); + } + }); + + // store instance in node + node[0].elfinder = this; + + // auto load language file + dfrdsBeforeBootup.push((function() { + var lang = self.lang, + langJs = self.baseUrl + 'js/i18n/elfinder.' + lang + '.js', + dfd = $.Deferred().done(function() { + if (self.i18[lang]) { + self.lang = lang; + } + self.trigger('i18load'); + i18n = self.lang === 'en' + ? self.i18['en'] + : $.extend(true, {}, self.i18['en'], self.i18[self.lang]); + }); + + if (!self.i18[lang]) { + self.lang = 'en'; + if (self.hasRequire) { + require([langJs], function() { + dfd.resolve(); + }, function() { + dfd.resolve(); + }); + } else { + self.loadScript([langJs], function() { + dfd.resolve(); + }, { + loadType: 'tag', + error : function() { + dfd.resolve(); + } + }); + } + } else { + dfd.resolve(); + } + return dfd; + })()); + + // elFinder boot up function + bootUp = function() { + var columnNames; + + /** + * i18 messages + * + * @type Object + **/ + self.messages = i18n.messages; + + // check jquery ui + if (!($.fn.selectable && $.fn.draggable && $.fn.droppable && $.fn.resizable && $.fn.slider)) { + return alert(self.i18n('errJqui')); + } + + // check node + if (!node.length) { + return alert(self.i18n('errNode')); + } + // check connector url + if (!self.options.url) { + return alert(self.i18n('errURL')); + } + + // column key/name map for fm.getColumnName() + columnNames = Object.assign({ + name : self.i18n('name'), + perm : self.i18n('perms'), + date : self.i18n('modify'), + size : self.i18n('size'), + kind : self.i18n('kind'), + modestr : self.i18n('mode'), + modeoct : self.i18n('mode'), + modeboth : self.i18n('mode') + }, self.options.uiOptions.cwd.listView.columnsCustomName); + + /** + * Gets the column name of cwd list view + * + * @param String key The key + * @return String The column name. + */ + self.getColumnName = function(key) { + return columnNames[key] || self.i18n(key); + }; + + /** + * Interface direction + * + * @type String + * @default "ltr" + **/ + self.direction = i18n.direction; + + /** + * Date/time format + * + * @type String + * @default "m.d.Y" + **/ + self.dateFormat = self.options.dateFormat || i18n.dateFormat; + + /** + * Date format like "Yesterday 10:20:12" + * + * @type String + * @default "{day} {time}" + **/ + self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat; + + /** + * Date format for if upload file has not original unique name + * e.g. Clipboard image data, Image data taken with iOS + * + * @type String + * @default "ymd-His" + **/ + self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_'); + + /** + * Css classes + * + * @type String + **/ + self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-' + +(self.direction == 'rtl' ? 'rtl' : 'ltr') + +(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '') + +(self.UA.Mobile? ' elfinder-mobile' : '') + +(self.UA.iOS? ' elfinder-ios' : '') + +' '+self.options.cssClass; + + // prepare node + node.addClass(self.cssClass) + .on(mousedown, function() { + !enabled && self.enable(); + }); + + // draggable closure + (function() { + var ltr, wzRect, wzBottom, wzBottom2, nodeStyle, + keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable'; + + /** + * Base draggable options + * + * @type Object + **/ + self.draggable = { + appendTo : node, + addClasses : false, + distance : 4, + revert : true, + refreshPositions : false, + cursor : 'crosshair', + cursorAt : {left : 50, top : 47}, + scroll : false, + start : function(e, ui) { + var helper = ui.helper, + targets = $.grep(helper.data('files')||[], function(h) { + if (h) { + remember[h] = true; + return true; + } + return false; + }), + locked = false, + cnt, h; + + // fix node size + nodeStyle = node.attr('style'); + node.width(node.width()).height(node.height()); + + // set var for drag() + ltr = (self.direction === 'ltr'); + wzRect = self.getUI('workzone').data('rectangle'); + wzBottom = wzRect.top + wzRect.height; + wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true); + + self.draggingUiHelper = helper; + cnt = targets.length; + while (cnt--) { + h = targets[cnt]; + if (files[h].locked) { + locked = true; + helper.data('locked', true); + break; + } + } + !locked && self.trigger('lockfiles', {files : targets}); + + helper.data('autoScrTm', setInterval(function() { + if (helper.data('autoScr')) { + self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal')); + } + }, 50)); + }, + drag : function(e, ui) { + var helper = ui.helper, + autoScr, autoUp, bottom; + + if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) { + if (wzRect.cwdEdge > e.pageX) { + autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); + } else { + autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); + } + if (!autoUp) { + if (autoScr.substr(0, 3) === 'cwd') { + if (wzBottom < e.pageY) { + bottom = wzBottom; + } else { + autoScr = null; + } + } else { + bottom = wzBottom2; + } + } + if (autoScr) { + helper.data('autoScr', autoScr); + helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3)); + } + } + if (! autoScr) { + if (helper.data('autoScr')) { + helper.data('refreshPositions', 1).data('autoScr', null); + } + } + if (helper.data('refreshPositions') && $(this).elfUiWidgetInstance('draggable')) { + if (helper.data('refreshPositions') > 0) { + $(this).draggable('option', { refreshPositions : true, elfRefresh : true }); + helper.data('refreshPositions', -1); + } else { + $(this).draggable('option', { refreshPositions : false, elfRefresh : false }); + helper.data('refreshPositions', null); + } + } + }, + stop : function(e, ui) { + var helper = ui.helper, + files; + + $(document).off(keyEvt); + $(this).elfUiWidgetInstance('draggable') && $(this).draggable('option', { refreshPositions : false }); + self.draggingUiHelper = null; + self.trigger('focus').trigger('dragstop'); + if (! helper.data('droped')) { + files = $.grep(helper.data('files')||[], function(h) { return h? true : false ;}); + self.trigger('unlockfiles', {files : files}); + self.trigger('selectfiles', {files : self.selected()}); + } + self.enable(); + + // restore node style + node.attr('style', nodeStyle); + + helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm')); + }, + helper : function(e, ui) { + var element = this.id ? $(this) : $(this).parents('[id]:first'), + helper = $('
'), + icon = function(f) { + var mime = f.mime, i, tmb = self.tmb(f); + i = '
'; + if (tmb) { + i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML; + } + return i; + }, + hashes, l, ctr; + + self.draggingUiHelper && self.draggingUiHelper.stop(true, true); + + self.trigger('dragstart', {target : element[0], originalEvent : e}, true); + + hashes = element.hasClass(self.res('class', 'cwdfile')) + ? self.selected() + : [self.navId2Hash(element.attr('id'))]; + + helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0); + + if ((l = hashes.length) > 1) { + helper.append(icon(files[hashes[l-1]]) + ''+l+''); + } + + $(document).on(keyEvt, function(e){ + var chk = (e.shiftKey||e.ctrlKey||e.metaKey); + if (ctr !== chk) { + ctr = chk; + if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) { + helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr); + self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper}); + } + } + }); + + return helper; + } + }; + })(); + + // in getFileCallback set - change default actions on double click/enter/ctrl+enter + if (self.commands.getfile) { + if (typeof(self.options.getFileCallback) == 'function') { + self.bind('dblclick', function(e) { + e.preventDefault(); + self.exec('getfile').fail(function() { + self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0)); + }); + }); + self.shortcut({ + pattern : 'enter', + description : self.i18n('cmdgetfile'), + callback : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); } + }) + .shortcut({ + pattern : 'ctrl+enter', + description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'), + callback : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); } + }); + } else { + self.options.getFileCallback = null; + } + } + + // load commands + $.each(self.commands, function(name, cmd) { + var proto = Object.assign({}, cmd.prototype), + extendsCmd, opts; + if ($.isFunction(cmd) && !self._commands[name] && (cmd.prototype.forceLoad || $.inArray(name, self.options.commands) !== -1)) { + extendsCmd = cmd.prototype.extendsCmd || ''; + if (extendsCmd) { + if ($.isFunction(self.commands[extendsCmd])) { + cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype); + } else { + return true; + } + } else { + cmd.prototype = Object.assign({}, base, cmd.prototype); + } + self._commands[name] = new cmd(); + cmd.prototype = proto; + opts = self.options.commandsOptions[name] || {}; + if (extendsCmd && self.options.commandsOptions[extendsCmd]) { + opts = $.extend(true, {}, self.options.commandsOptions[extendsCmd], opts); + } + self._commands[name].setup(name, opts); + // setup linked commands + if (self._commands[name].linkedCmds.length) { + $.each(self._commands[name].linkedCmds, function(i, n) { + var lcmd = self.commands[n]; + if ($.isFunction(lcmd) && !self._commands[n]) { + lcmd.prototype = base; + self._commands[n] = new lcmd(); + self._commands[n].setup(n, self.options.commandsOptions[n]||{}); + } + }); + } + } + }); + + /** + * UI nodes + * + * @type Object + **/ + self.ui = { + // container for nav panel and current folder container + workzone : $('
').appendTo(node).elfinderworkzone(self), + // container for folders tree / places + navbar : $('
').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}), + // container for for preview etc at below the navbar + navdock : $('
').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}), + // contextmenu + contextmenu : $('
').appendTo(node).elfindercontextmenu(self), + // overlay + overlay : $('
').appendTo(node).elfinderoverlay({ + show : function() { self.disable(); }, + hide : function() { prevEnabled && self.enable(); } + }), + // current folder container + cwd : $('
').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}), + // notification dialog window + notify : self.dialog('', { + cssClass : 'elfinder-dialog-notify', + position : self.options.notifyDialog.position, + absolute : true, + resizable : false, + autoOpen : false, + closeOnEscape : false, + title : ' ', + width : parseInt(self.options.notifyDialog.width) + }), + statusbar : $('
').hide().appendTo(node), + toast : $('
').appendTo(node), + bottomtray : $('
').appendTo(node) + }; + + // load required ui + $.each(self.options.ui || [], function(i, ui) { + var name = 'elfinder'+ui, + opts = self.options.uiOptions[ui] || {}; + + if (!self.ui[ui] && $.fn[name]) { + // regist to self.ui before make instance + self.ui[ui] = $('<'+(opts.tag || 'div')+'/>').appendTo(node); + self.ui[ui][name](self, opts); + } + }); + + // update size + self.resize(width, height); + + // make node resizable + if (self.options.resizable) { + node.resizable({ + resize : function(e, ui) { + self.resize(ui.size.width, ui.size.height); + }, + handles : 'se', + minWidth : 300, + minHeight : 200 + }); + if (self.UA.Touch) { + node.addClass('touch-punch'); + } + } + + (function() { + var navbar = self.getUI('navbar'), + cwd = self.getUI('cwd').parent(); + + self.autoScroll = { + navbarUp : function(v) { + navbar.scrollTop(Math.max(0, navbar.scrollTop() - v)); + }, + navbarDown : function(v) { + navbar.scrollTop(navbar.scrollTop() + v); + }, + cwdUp : function(v) { + cwd.scrollTop(Math.max(0, cwd.scrollTop() - v)); + }, + cwdDown : function(v) { + cwd.scrollTop(cwd.scrollTop() + v); + } + }; + })(); + + // Swipe on the touch devices to show/hide of toolbar or navbar + if (self.UA.Touch) { + (function() { + var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH, + navbar = self.getUI('navbar'), + toolbar = self.getUI('toolbar'), + moveEv = 'touchmove.stopscroll', + moveTm, + moveUpOn = function(e) { + var touches = e.originalEvent.touches || [{}], + y = touches[0].pageY || null; + if (!lastY || y < lastY) { + e.preventDefault(); + moveTm && clearTimeout(moveTm); + } + }, + moveDownOn = function(e) { + e.preventDefault(); + moveTm && clearTimeout(moveTm); + }, + moveOff = function() { + moveTm = setTimeout(function() { + node.off(moveEv); + }, 100); + }, + handleW, handleH = 50; + + navbar = navbar.children().length? navbar : null; + toolbar = toolbar.length? toolbar : null; + node.on('touchstart touchmove touchend', function(e) { + if (e.type === 'touchend') { + lastX = false; + lastY = false; + moveOff(); + return; + } + + var touches = e.originalEvent.touches || [{}], + x = touches[0].pageX || null, + y = touches[0].pageY || null, + ltr = (self.direction === 'ltr'), + navbarMode, treeWidth, swipeX, moveX, toolbarT, mode; + + if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) { + return; + } + + if (e.type === 'touchstart') { + nodeOffset = node.offset(); + nodeWidth = node.width(); + if (navbar) { + lastX = false; + if (navbar.is(':hidden')) { + if (! handleW) { + handleW = Math.max(50, nodeWidth / 10); + } + if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) { + lastX = x; + } + } else if (! e.originalEvent._preventSwipeX) { + navbarW = navbar.width(); + if (ltr) { + swipeX = (x < nodeOffset.left + navbarW); + } else { + swipeX = (x > nodeOffset.left + nodeWidth - navbarW); + } + if (swipeX) { + handleW = Math.max(50, nodeWidth / 10); + lastX = x; + } else { + lastX = false; + } + } + } + if (toolbar) { + lastY = false; + if (! e.originalEvent._preventSwipeY) { + toolbarH = toolbar.height(); + nodeTop = nodeOffset.top; + if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) { + lastY = y; + node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn); + } + } + } + } else { + if (navbar && lastX !== false) { + navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow'; + moveX = Math.abs(lastX - x); + if (navbarMode === 'navhide' && moveX > navbarW * 0.6 + || (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45) + && (navbarMode === 'navshow' + || (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20) + )) + ) { + self.getUI('navbar').trigger(navbarMode, {handleW: handleW}); + lastX = false; + } + } + if (toolbar && lastY !== false ) { + toolbarT = toolbar.offset().top; + if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) { + mode = (lastY > y)? 'slideUp' : 'slideDown'; + if (mode === 'slideDown' || toolbarT + 20 > y) { + if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) { + toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH}); + } + lastY = false; + } + } + } + } + }); + })(); + } + + if (self.dragUpload) { + // add event listener for HTML5 DnD upload + (function() { + var isin = function(e) { + return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && $(e.target).closest('div.ui-dialog-content').length === 0); + }, + ent = 'native-drag-enter', + disable = 'native-drag-disable', + c = 'class', + navdir = self.res(c, 'navdir'), + droppable = self.res(c, 'droppable'), + dropover = self.res(c, 'adroppable'), + arrow = self.res(c, 'navarrow'), + clDropActive = self.res(c, 'adroppable'), + wz = self.getUI('workzone'), + ltr = (self.direction === 'ltr'), + clearTm = function() { + autoScrTm && cancelAnimationFrame(autoScrTm); + autoScrTm = null; + }, + wzRect, autoScrFn, autoScrTm; + + node.on('dragenter', function(e) { + clearTm(); + if (isin(e)) { + e.preventDefault(); + e.stopPropagation(); + wzRect = wz.data('rectangle'); + } + }) + .on('dragleave', function(e) { + clearTm(); + if (isin(e)) { + e.preventDefault(); + e.stopPropagation(); + } + }) + .on('dragover', function(e) { + var autoUp; + if (isin(e)) { + e.preventDefault(); + e.stopPropagation(); + e.originalEvent.dataTransfer.dropEffect = 'none'; + if (! autoScrTm) { + autoScrTm = requestAnimationFrame(function() { + var wzBottom = wzRect.top + wzRect.height, + wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true), + fn; + if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) { + if (wzRect.cwdEdge > e.pageX) { + fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); + } else { + fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); + } + if (!autoUp) { + if (fn.substr(0, 3) === 'cwd') { + if (wzBottom < e.pageY) { + wzBottom2 = wzBottom; + } else { + fn = ''; + } + } + } + fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3)); + } + autoScrTm = null; + }); + } + } else { + clearTm(); + } + }) + .on('drop', function(e) { + clearTm(); + if (isin(e)) { + e.stopPropagation(); + e.preventDefault(); + } + }); + + node.on('dragenter', '.native-droppable', function(e){ + if (e.originalEvent.dataTransfer) { + var $elm = $(e.currentTarget), + id = e.currentTarget.id || null, + cwd = null, + elfFrom; + if (!id) { // target is cwd + cwd = self.cwd(); + $elm.data(disable, false); + try { + $.each(e.originalEvent.dataTransfer.types, function(i, v){ + if (v.substr(0, 13) === 'elfinderfrom:') { + elfFrom = v.substr(13).toLowerCase(); + } + }); + } catch(e) {} + } + if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) { + e.preventDefault(); + e.stopPropagation(); + $elm.data(ent, true); + $elm.addClass(clDropActive); + } else { + $elm.data(disable, true); + } + } + }) + .on('dragleave', '.native-droppable', function(e){ + if (e.originalEvent.dataTransfer) { + var $elm = $(e.currentTarget); + e.preventDefault(); + e.stopPropagation(); + if ($elm.data(ent)) { + $elm.data(ent, false); + } else { + $elm.removeClass(clDropActive); + } + } + }) + .on('dragover', '.native-droppable', function(e){ + if (e.originalEvent.dataTransfer) { + var $elm = $(e.currentTarget); + e.preventDefault(); + e.stopPropagation(); + e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy'; + $elm.data(ent, false); + } + }) + .on('drop', '.native-droppable', function(e){ + if (e.originalEvent && e.originalEvent.dataTransfer) { + var $elm = $(e.currentTarget), + id; + e.preventDefault(); + e.stopPropagation(); + $elm.removeClass(clDropActive); + if (e.currentTarget.id) { + id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id); + } else { + id = self.cwd().hash; + } + e.originalEvent._target = id; + self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id); + } + }); + })(); + } + + // trigger event cssloaded if cddAutoLoad disabled + if (self.cssloaded === null) { + // check css loaded and remove hide + (function() { + var loaded = function() { + if (node.data('cssautoloadHide')) { + node.data('cssautoloadHide').remove(); + node.removeData('cssautoloadHide'); + } + self.cssloaded = true; + requestAnimationFrame(function() { + self.trigger('cssloaded'); + }); + }, + cnt, fi; + if (node.css('visibility') === 'hidden') { + cnt = 1000; // timeout 10 secs + fi = setInterval(function() { + if (--cnt < 0 || node.css('visibility') !== 'hidden') { + clearInterval(fi); + loaded(); + } + }, 10); + } else { + loaded(); + } + })(); + } else { + self.cssloaded = true; + self.trigger('cssloaded'); + } + + // calculate elFinder node z-index + self.zIndexCalc(); + + // send initial request and start to pray >_< + self.trigger('init') + .request({ + data : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, + preventDone : true, + notify : {type : 'open', cnt : 1, hideCnt : true}, + freeze : true + }) + .fail(function() { + self.trigger('fail').disable().lastDir(''); + listeners = {}; + shortcuts = {}; + $(document).add(node).off('.'+namespace); + self.trigger = function() { }; + }) + .done(function(data) { + var trashDisable = function(th) { + var src = self.file(self.trashes[th]), + d = self.options.debug, + error; + + if (src && src.volumeid) { + delete self.volOptions[src.volumeid].trashHash; + } + self.trashes[th] = false; + self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.'); + }, + toChkTh = {}; + + // regist rawStringDecoder + if (self.options.rawStringDecoder) { + self.registRawStringDecoder(self.options.rawStringDecoder); + } + + // re-calculate elFinder node z-index + self.zIndexCalc(); + + self.load().debug('api', self.api); + // update ui's size after init + node.trigger('resize'); + // initial open + open(data); + self.trigger('open', data, false); + self.trigger('opendone'); + + if (inFrame && self.options.enableAlways) { + $(window).trigger('focus'); + } + + // check self.trashes + $.each(self.trashes, function(th) { + var dir = self.file(th), + src; + if (! dir) { + toChkTh[th] = true; + } else if (dir.mime !== 'directory' || ! dir.write) { + trashDisable(th); + } + }); + if (Object.keys(toChkTh).length) { + self.request({ + data : {cmd : 'info', targets : Object.keys(toChkTh)}, + preventDefault : true + }).done(function(data) { + if (data && data.files) { + $.each(data.files, function(i, dir) { + if (dir.mime === 'directory' && dir.write) { + delete toChkTh[dir.hash]; + } + }); + } + }).always(function() { + $.each(toChkTh, trashDisable); + }); + } + // to enable / disable + self[self.options.enableAlways? 'enable' : 'disable'](); + }); + + // self.timeEnd('load'); + // End of bootUp() + }; + + // call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup } + if (bootCallback && typeof bootCallback === 'function') { + self.bootCallback = bootCallback; + bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup }); + } + + // call dfrdsBeforeBootup functions then boot up elFinder + $.when.apply(null, dfrdsBeforeBootup).done(function() { + bootUp(); + }).fail(function(error) { + self.error(error); + }); +}; + +//register elFinder to global scope +if (typeof toGlobal === 'undefined' || toGlobal) { + window.elFinder = elFinder; +} + +/** + * Prototype + * + * @type Object + */ +elFinder.prototype = { + + uniqueid : 0, + + res : function(type, id) { + return this.resources[type] && this.resources[type][id]; + }, + + /** + * User os. Required to bind native shortcuts for open/rename + * + * @type String + **/ + OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1 ? 'win' : 'other', + + /** + * User browser UA. + * jQuery.browser: version deprecated: 1.3, removed: 1.9 + * + * @type Object + **/ + UA : (function(){ + var self = this, + webkit = !document.unqueID && !window.opera && !window.sidebar && window.localStorage && 'WebkitAppearance' in document.documentElement.style, + chrome = webkit && window.chrome, + /*setRotated = function() { + var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; + if (a === -90) { + a = 270; + } + UA.Angle = a; + UA.Rotated = a % 180 === 0? false : true; + },*/ + UA = { + // Browser IE <= IE 6 + ltIE6 : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined", + // Browser IE <= IE 7 + ltIE7 : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined", + // Browser IE <= IE 8 + ltIE8 : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined", + // Browser IE <= IE 9 + ltIE9 : document.uniqueID && document.documentMode <= 9, + // Browser IE <= IE 10 + ltIE10 : document.uniqueID && document.documentMode <= 10, + // Browser IE >= IE 11 + gtIE11 : document.uniqueID && document.documentMode >= 11, + IE : document.uniqueID, + Firefox : window.sidebar, + Opera : window.opera, + Webkit : webkit, + Chrome : chrome, + Edge : (chrome && window.msCredentials)? true : false, + Safari : webkit && !window.chrome, + Mobile : typeof window.orientation != "undefined", + Touch : typeof window.ontouchstart != "undefined", + iOS : navigator.platform.match(/^iP(?:[ao]d|hone)/), + Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'), + Angle : 0, + Rotated : false, + CSS : (function() { + var aStyle = document.createElement('a').style, + pStyle = document.createElement('p').style, + css; + css = 'position:sticky;position:-webkit-sticky;'; + css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;'; + aStyle.cssText = css; + return { + positionSticky : aStyle.position.indexOf('sticky')!==-1, + widthMaxContent : aStyle.width.indexOf('max-content')!==-1, + flex : typeof pStyle.flex !== 'undefined' + }; + })() + }; + return UA; + })(), + + /** + * Has RequireJS? + * + * @type Boolean + */ + hasRequire : (typeof define === 'function' && define.amd), + + /** + * Current request command + * + * @type String + */ + currentReqCmd : '', + + /** + * Current keyboard state + * + * @type Object + */ + keyState : {}, + + /** + * Internationalization object + * + * @type Object + */ + i18 : { + en : { + translator : '', + language : 'English', + direction : 'ltr', + dateFormat : 'd.m.Y H:i', + fancyDateFormat : '$1 H:i', + nonameDateFormat : 'ymd-His', + messages : {} + }, + months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'], + + days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] + }, + + /** + * File mimetype to kind mapping + * + * @type Object + */ + kinds : { + 'unknown' : 'Unknown', + 'directory' : 'Folder', + 'group' : 'Selects', + 'symlink' : 'Alias', + 'symlink-broken' : 'AliasBroken', + 'application/x-empty' : 'TextPlain', + 'application/postscript' : 'Postscript', + 'application/vnd.ms-office' : 'MsOffice', + 'application/msword' : 'MsWord', + 'application/vnd.ms-word' : 'MsWord', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord', + 'application/vnd.ms-word.document.macroEnabled.12' : 'MsWord', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord', + 'application/vnd.ms-word.template.macroEnabled.12' : 'MsWord', + 'application/vnd.ms-excel' : 'MsExcel', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'MsExcel', + 'application/vnd.ms-excel.sheet.macroEnabled.12' : 'MsExcel', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' : 'MsExcel', + 'application/vnd.ms-excel.template.macroEnabled.12' : 'MsExcel', + 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' : 'MsExcel', + 'application/vnd.ms-excel.addin.macroEnabled.12' : 'MsExcel', + 'application/vnd.ms-powerpoint' : 'MsPP', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP', + 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' : 'MsPP', + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' : 'MsPP', + 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' : 'MsPP', + 'application/vnd.openxmlformats-officedocument.presentationml.template' : 'MsPP', + 'application/vnd.ms-powerpoint.template.macroEnabled.12' : 'MsPP', + 'application/vnd.ms-powerpoint.addin.macroEnabled.12' : 'MsPP', + 'application/vnd.openxmlformats-officedocument.presentationml.slide' : 'MsPP', + 'application/vnd.ms-powerpoint.slide.macroEnabled.12' : 'MsPP', + 'application/pdf' : 'PDF', + 'application/xml' : 'XML', + 'application/vnd.oasis.opendocument.text' : 'OO', + 'application/vnd.oasis.opendocument.text-template' : 'OO', + 'application/vnd.oasis.opendocument.text-web' : 'OO', + 'application/vnd.oasis.opendocument.text-master' : 'OO', + 'application/vnd.oasis.opendocument.graphics' : 'OO', + 'application/vnd.oasis.opendocument.graphics-template' : 'OO', + 'application/vnd.oasis.opendocument.presentation' : 'OO', + 'application/vnd.oasis.opendocument.presentation-template' : 'OO', + 'application/vnd.oasis.opendocument.spreadsheet' : 'OO', + 'application/vnd.oasis.opendocument.spreadsheet-template' : 'OO', + 'application/vnd.oasis.opendocument.chart' : 'OO', + 'application/vnd.oasis.opendocument.formula' : 'OO', + 'application/vnd.oasis.opendocument.database' : 'OO', + 'application/vnd.oasis.opendocument.image' : 'OO', + 'application/vnd.openofficeorg.extension' : 'OO', + 'application/x-shockwave-flash' : 'AppFlash', + 'application/flash-video' : 'Flash video', + 'application/x-bittorrent' : 'Torrent', + 'application/javascript' : 'JS', + 'application/rtf' : 'RTF', + 'application/rtfd' : 'RTF', + 'application/x-font-ttf' : 'TTF', + 'application/x-font-otf' : 'OTF', + 'application/x-rpm' : 'RPM', + 'application/x-web-config' : 'TextPlain', + 'application/xhtml+xml' : 'HTML', + 'application/docbook+xml' : 'DOCBOOK', + 'application/x-awk' : 'AWK', + 'application/x-gzip' : 'GZIP', + 'application/x-bzip2' : 'BZIP', + 'application/x-xz' : 'XZ', + 'application/zip' : 'ZIP', + 'application/x-zip' : 'ZIP', + 'application/x-rar' : 'RAR', + 'application/x-tar' : 'TAR', + 'application/x-7z-compressed' : '7z', + 'application/x-jar' : 'JAR', + 'text/plain' : 'TextPlain', + 'text/x-php' : 'PHP', + 'text/html' : 'HTML', + 'text/javascript' : 'JS', + 'text/css' : 'CSS', + 'text/rtf' : 'RTF', + 'text/rtfd' : 'RTF', + 'text/x-c' : 'C', + 'text/x-csrc' : 'C', + 'text/x-chdr' : 'CHeader', + 'text/x-c++' : 'CPP', + 'text/x-c++src' : 'CPP', + 'text/x-c++hdr' : 'CPPHeader', + 'text/x-shellscript' : 'Shell', + 'application/x-csh' : 'Shell', + 'text/x-python' : 'Python', + 'text/x-java' : 'Java', + 'text/x-java-source' : 'Java', + 'text/x-ruby' : 'Ruby', + 'text/x-perl' : 'Perl', + 'text/x-sql' : 'SQL', + 'text/xml' : 'XML', + 'text/x-comma-separated-values' : 'CSV', + 'text/x-markdown' : 'Markdown', + 'image/x-ms-bmp' : 'BMP', + 'image/jpeg' : 'JPEG', + 'image/gif' : 'GIF', + 'image/png' : 'PNG', + 'image/tiff' : 'TIFF', + 'image/x-targa' : 'TGA', + 'image/vnd.adobe.photoshop' : 'PSD', + 'image/xbm' : 'XBITMAP', + 'image/pxm' : 'PXM', + 'audio/mpeg' : 'AudioMPEG', + 'audio/midi' : 'AudioMIDI', + 'audio/ogg' : 'AudioOGG', + 'audio/mp4' : 'AudioMPEG4', + 'audio/x-m4a' : 'AudioMPEG4', + 'audio/wav' : 'AudioWAV', + 'audio/x-mp3-playlist' : 'AudioPlaylist', + 'video/x-dv' : 'VideoDV', + 'video/mp4' : 'VideoMPEG4', + 'video/mpeg' : 'VideoMPEG', + 'video/x-msvideo' : 'VideoAVI', + 'video/quicktime' : 'VideoMOV', + 'video/x-ms-wmv' : 'VideoWM', + 'video/x-flv' : 'VideoFlash', + 'video/x-matroska' : 'VideoMKV', + 'video/ogg' : 'VideoOGG' + }, + + /** + * File mimetype to file extention mapping + * + * @type Object + * @see elFinder.mimetypes.js + */ + mimeTypes : {}, + + /** + * Ajax request data validation rules + * + * @type Object + */ + rules : { + defaults : function(data) { + if (!data + || (data.added && !Array.isArray(data.added)) + || (data.removed && !Array.isArray(data.removed)) + || (data.changed && !Array.isArray(data.changed))) { + return false; + } + return true; + }, + open : function(data) { return data && data.cwd && data.files && $.isPlainObject(data.cwd) && Array.isArray(data.files); }, + tree : function(data) { return data && data.tree && Array.isArray(data.tree); }, + parents : function(data) { return data && data.tree && Array.isArray(data.tree); }, + tmb : function(data) { return data && data.images && ($.isPlainObject(data.images) || Array.isArray(data.images)); }, + upload : function(data) { return data && ($.isPlainObject(data.added) || Array.isArray(data.added));}, + search : function(data) { return data && data.files && Array.isArray(data.files); } + }, + + /** + * Commands costructors + * + * @type Object + */ + commands : {}, + + /** + * Commands to add the item (space delimited) + * + * @type String + */ + cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload', + + parseUploadData : function(text) { + var self = this, + data; + + if (!$.trim(text)) { + return {error : ['errResponse', 'errDataEmpty']}; + } + + try { + data = JSON.parse(text); + } catch (e) { + return {error : ['errResponse', 'errDataNotJSON']}; + } + + data = self.normalize(data); + if (!self.validResponse('upload', data)) { + return {error : (response.norError || ['errResponse'])}; + } + data.removed = $.merge((data.removed || []), $.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; })); + return data; + + }, + + iframeCnt : 0, + + uploads : { + // xhr muiti uploading flag + xhrUploading: false, + + // Timer of request fail to sync + failSyncTm: null, + + // current chunkfail requesting chunk + chunkfailReq: {}, + + // check file/dir exists + checkExists: function(files, target, fm, isDir) { + var dfrd = $.Deferred(), + names, renames = [], hashes = {}, chkFiles = [], + cancel = function() { + var i = files.length; + while (--i > -1) { + files[i]._remove = true; + } + }, + resolve = function() { + dfrd.resolve(renames, hashes); + }, + check = function() { + var existed = [], exists = [], i, c, + pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '', + confirm = function(ndx) { + var last = ndx == exists.length-1, + opts = { + cssClass : 'elfinder-confirm-upload', + title : fm.i18n('cmdupload'), + text : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], + all : !last, + accept : { + label : 'btnYes', + callback : function(all) { + !last && !all + ? confirm(++ndx) + : resolve(); + } + }, + reject : { + label : 'btnNo', + callback : function(all) { + var i; + + if (all) { + i = exists.length; + while (ndx < i--) { + files[exists[i].i]._remove = true; + } + } else { + files[exists[ndx].i]._remove = true; + } + + !last && !all + ? confirm(++ndx) + : resolve(); + } + }, + cancel : { + label : 'btnCancel', + callback : function() { + cancel(); + resolve(); + } + }, + buttons : [ + { + label : 'btnBackup', + cssClass : 'elfinder-confirm-btn-backup', + callback : function(all) { + var i; + if (all) { + i = exists.length; + while (ndx < i--) { + renames.push(exists[i].name); + } + } else { + renames.push(exists[ndx].name); + } + !last && !all + ? confirm(++ndx) + : resolve(); + } + } + ] + }; + + if (!isDir) { + opts.buttons.push({ + label : 'btnRename' + (last? '' : 'All'), + cssClass : 'elfinder-confirm-btn-rename', + callback : function() { + renames = null; + resolve(); + } + }); + } + if (fm.iframeCnt > 0) { + delete opts.reject; + } + fm.confirm(opts); + }; + + if (! fm.file(target).read) { + // for dropbox type + resolve(); + return; + } + + names = $.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;}); + + fm.request({ + data : {cmd : 'ls', target : target, intersect : $.map(names, function(item) { return item.name;})}, + notify : {type : 'preupload', cnt : 1, hideCnt : true}, + preventDefault : true + }) + .done(function(data) { + var existedArr, cwdItems; + if (data) { + if (data.error) { + cancel(); + } else { + if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { + if (data.list) { + if (Array.isArray(data.list)) { + existed = data.list || []; + } else { + existedArr = []; + existed = $.map(data.list, function(n) { + if (typeof n === 'string') { + return n; + } else { + // support to >=2.1.11 plugin Normalizer, Sanitizer + existedArr = existedArr.concat(n); + return false; + } + }); + if (existedArr.length) { + existed = existed.concat(existedArr); + } + hashes = data.list; + } + exists = $.grep(names, function(name){ + return $.inArray(name.name, existed) !== -1 ? true : false ; + }); + if (exists.length && existed.length && target == fm.cwd().hash) { + cwdItems = $.map(fm.files(target), function(file) { return file.name; } ); + if ($.grep(existed, function(n) { + return $.inArray(n, cwdItems) === -1? true : false; + }).length){ + fm.sync(); + } + } + } + } + } + } + if (exists.length > 0) { + confirm(0); + } else { + resolve(); + } + }) + .fail(function(error) { + cancel(); + resolve(); + error && fm.error(error); + }); + }; + if (fm.api >= 2.1 && typeof files[0] == 'object') { + check(); + } else { + resolve(); + } + return dfrd; + }, + + // check droped contents + checkFile : function(data, fm, target) { + if (!!data.checked || data.type == 'files') { + return data.files; + } else if (data.type == 'data') { + var dfrd = $.Deferred(), + scanDfd = $.Deferred(), + files = [], + paths = [], + dirctorys = [], + processing = 0, + items, + mkdirs = [], + cancel = false, + toArray = function(list) { + return Array.prototype.slice.call(list || [], 0); + }, + doScan = function(items) { + var entry, readEntries, + excludes = fm.options.folderUploadExclude[fm.OS] || null, + length = items.length, + check = function() { + if (--processing < 1 && scanDfd.state() === 'pending') { + scanDfd.resolve(); + } + }, + pushItem = function(file) { + if (! excludes || ! file.name.match(excludes)) { + paths.push(entry.fullPath || ''); + files.push(file); + } + check(); + }, + readEntries = function(dirReader) { + var entries = [], + read = function() { + dirReader.readEntries(function(results) { + if (cancel || !results.length) { + for (var i = 0; i < entries.length; i++) { + if (cancel) { + scanDfd.reject(); + break; + } + doScan([entries[i]]); + } + check(); + } else { + entries = entries.concat(toArray(results)); + read(); + } + }, check); + }; + read(); + }; + + processing++; + for (var i = 0; i < length; i++) { + if (cancel) { + scanDfd.reject(); + break; + } + entry = items[i]; + if (entry) { + if (entry.isFile) { + processing++; + entry.file(pushItem, check); + } else if (entry.isDirectory) { + if (fm.api >= 2.1) { + processing++; + mkdirs.push(entry.fullPath); + readEntries(entry.createReader()); // Start reading dirs. + } + } + } + } + check(); + return scanDfd; + }, hasDirs; + + items = $.map(data.files.items, function(item){ + return item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry(); + }); + $.each(items, function(i, item) { + if (item.isDirectory) { + hasDirs = true; + return false; + } + }); + if (items.length > 0) { + fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){ + var dfds = []; + if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { + if (renames === null) { + data.overwrite = 0; + renames = []; + } + items = $.grep(items, function(item){ + var i, bak, hash, dfd, hi; + if (item.isDirectory && renames.length) { + i = $.inArray(item.name, renames); + if (i !== -1) { + renames.splice(i, 1); + bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, ''); + $.each(hashes, function(h, name) { + if (item.name == name) { + hash = h; + return false; + } + }); + if (! hash) { + hash = fm.fileByName(item.name, target).hash; + } + fm.lockfiles({files : [hash]}); + dfd = fm.request({ + data : {cmd : 'rename', target : hash, name : bak}, + notify : {type : 'rename', cnt : 1} + }) + .fail(function(error) { + item._remove = true; + fm.sync(); + }) + .always(function() { + fm.unlockfiles({files : [hash]}); + }); + dfds.push(dfd); + } + } + return !item._remove? true : false; + }); + } + $.when.apply($, dfds).done(function(){ + var notifyto, msg, + id = +new Date(); + + if (items.length > 0) { + msg = fm.escape(items[0].name); + if (items.length > 1) { + msg += ' ... ' + items.length + fm.i18n('items'); + } + notifyto = setTimeout(function() { + fm.notify({ + type : 'readdir', + id : id, + cnt : 1, + hideCnt: true, + msg : fm.i18n('ntfreaddir') + ' (' + msg + ')', + cancel: function() { + cancel = true; + } + }); + }, fm.options.notifyDelay); + doScan(items).done(function() { + notifyto && clearTimeout(notifyto); + fm.notify({type : 'readdir', id: id, cnt : -1}); + if (cancel) { + dfrd.reject(); + } else { + dfrd.resolve([files, paths, renames, hashes, mkdirs]); + } + }).fail(function() { + dfrd.reject(); + }); + } else { + dfrd.reject(); + } + }); + }); + return dfrd.promise(); + } else { + return dfrd.reject(); + } + } else { + var ret = []; + var check = []; + var str = data.files[0]; + if (data.type == 'html') { + var tmp = $("").append($.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))), + atag; + $('img[_elfsrc]', tmp).each(function(){ + var url, purl, + self = $(this), + pa = self.closest('a'); + if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) { + purl = pa.attr('href'); + } + url = self.attr('_elfsrc'); + if (url) { + if (purl) { + $.inArray(purl, ret) == -1 && ret.push(purl); + $.inArray(url, check) == -1 && check.push(url); + } else { + $.inArray(url, ret) == -1 && ret.push(url); + } + } + // Probably it's clipboard data + if (ret.length === 1 && ret[0].match(/^data:image\/png/)) { + data.clipdata = true; + } + }); + atag = $('a[href]', tmp); + atag.each(function(){ + var text, loc, + parseUrl = function(url) { + var a = document.createElement('a'); + a.href = url; + return a; + }; + if (text = $(this).text()) { + loc = parseUrl($(this).attr('href')); + if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || $.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) { + if ($.inArray(loc.href, ret) == -1 && $.inArray(loc.href, check) == -1) ret.push(loc.href); + } + } + }); + } else { + var regex, m, url; + regex = /(http[^<>"{}|\\^\[\]`\s]+)/ig; + while (m = regex.exec(str)) { + url = m[1].replace(/&/g, '&'); + if ($.inArray(url, ret) == -1) ret.push(url); + } + } + return ret; + } + }, + + // upload transport using XMLHttpRequest + xhr : function(data, fm) { + var self = fm ? fm : this, + node = self.getUI(), + xhr = new XMLHttpRequest(), + notifyto = null, notifyto2 = null, + dataChecked = data.checked, + isDataType = (data.isDataType || data.type == 'data'), + target = (data.target || self.cwd().hash), + dropEvt = (data.dropEvt || null), + chunkEnable = (self.option('uploadMaxConn', target) != -1), + multiMax = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))), + retryWait = 10000, // 10 sec + retryMax = 30, // 10 sec * 30 = 300 secs (Max 5 mins) + retry = 0, + getFile = function(files) { + var dfd = $.Deferred(), + file; + if (files.promise) { + files.always(function(f) { + dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {}); + }); + } else { + dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {}); + } + return dfd; + }, + dfrd = $.Deferred() + .fail(function(error) { + var userAbort; + if (error === 'userabort') { + userAbort = true; + error = void 0; + } + if (files && (self.uploads.xhrUploading || userAbort)) { + // send request om fail + getFile(files).done(function(file) { + if (! file._cid) { + // send sync request + self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm); + self.uploads.failSyncTm = setTimeout(function() { + self.sync(target); + }, 1000); + } else if (! self.uploads.chunkfailReq[file._cid]) { + // send chunkfail request + self.uploads.chunkfailReq[file._cid] = true; + setTimeout(function() { + fm.request({ + data : { + cmd: 'upload', + target: target, + chunk: file._chunk, + cid: file._cid, + upload: ['chunkfail'], + mimes: 'chunkfail' + }, + options : { + type: 'post', + url: self.uploadURL + }, + preventDefault: true + }).always(function() { + delete self.uploads.chunkfailReq[file._chunk]; + }); + }, 1000); + } + }); + } + !userAbort && self.sync(); + self.uploads.xhrUploading = false; + files = null; + error && self.error(error); + }) + .done(function(data) { + self.uploads.xhrUploading = false; + files = null; + if (data) { + self.currentReqCmd = 'upload'; + data.warning && self.error(data.warning); + self.updateCache(data); + data.removed && data.removed.length && self.remove(data); + data.added && data.added.length && self.add(data); + data.changed && data.changed.length && self.change(data); + self.trigger('upload', data, false); + self.trigger('uploaddone'); + if (data.toasts && Array.isArray(data.toasts)) { + $.each(data.toasts, function() { + this.msg && self.toast(this); + }); + } + data.sync && self.sync(); + data.debug && fm.debug('backend-debug', data); + } + }) + .always(function() { + self.abortXHR(xhr); + // unregist fnAbort function + node.off('uploadabort', fnAbort); + $(window).off('unload', fnAbort); + notifyto && clearTimeout(notifyto); + notifyto2 && clearTimeout(notifyto2); + dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); + chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1}); + }), + formData = new FormData(), + files = data.input ? data.input.files : self.uploads.checkFile(data, self, target), + cnt = data.checked? (isDataType? files[0].length : files.length) : files.length, + loaded = 0, + prev = 0, + filesize = 0, + notify = false, + notifyElm = self.ui.notify, + cancelBtn = true, + abort = false, + checkNotify = function() { + if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) { + notify = true; + } + return notify; + }, + fnAbort = function(e, error) { + abort = true; + self.abortXHR(xhr, { quiet: true, abort: true }); + dfrd.reject(error); + if (checkNotify()) { + self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0}); + } + }, + cancelToggle = function(show) { + ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide'](); + }, + startNotify = function(size) { + if (!size) size = filesize; + return setTimeout(function() { + notify = true; + self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size, + cancel: function() { + node.trigger('uploadabort', 'userabort'); + } + }); + ntfUpload = notifyElm.children('.elfinder-notify-upload'); + prev = loaded; + if (data.multiupload) { + cancelBtn && cancelToggle(true); + } else { + cancelToggle(cancelBtn && loaded < size); + } + }, self.options.notifyDelay); + }, + doRetry = function() { + if (retry++ <= retryMax) { + if (checkNotify() && prev) { + self.notify({type : 'upload', cnt : 0, progress : 0, size : prev}); + } + self.abortXHR(xhr, { quiet: true }); + prev = loaded = 0; + setTimeout(function() { + var reqId; + if (! abort) { + xhr.open('POST', self.uploadURL, true); + if (self.api >= 2.1029) { + reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); + (typeof formData['delete'] === 'function') && formData['delete']('reqid'); + formData.append('reqid', reqId); + xhr._requestId = reqId; + } + xhr.send(formData); + } + }, retryWait); + } else { + node.trigger('uploadabort', ['errAbort', 'errTimeout']); + } + }, + progress = function() { + var node; + if (notify) { + dfrd.notifyWith(ntfUpload, [{ + cnt: ntfUpload.data('cnt'), + progress: ntfUpload.data('progress'), + total: ntfUpload.data('total') + }]); + } + }, + renames = (data.renames || null), + hashes = (data.hashes || null), + chunkMerge = false, + ntfUpload = $(); + + // regist fnAbort function + node.one('uploadabort', fnAbort); + $(window).one('unload.' + fm.namespace, fnAbort); + + !chunkMerge && (prev = loaded); + + if (!isDataType && !cnt) { + return dfrd.reject(['errUploadNoFiles']); + } + + xhr.addEventListener('error', function() { + if (xhr.status == 0) { + if (abort) { + dfrd.reject(); + } else { + // ff bug while send zero sized file + // for safari - send directory + if (!isDataType && data.files && $.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { + errors.push('errFolderUpload'); + dfrd.reject(['errAbort', 'errFolderUpload']); + } else if (data.input && $.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { + dfrd.reject(['errUploadNoFiles']); + } else { + doRetry(); + } + } + } else { + node.trigger('uploadabort', 'errConnect'); + } + }, false); + + xhr.addEventListener('load', function(e) { + var status = xhr.status, res, curr = 0, error = ''; + + if (status >= 400) { + if (status > 500) { + error = 'errResponse'; + } else { + error = ['errResponse', 'errServerError']; + } + } else { + if (!xhr.responseText) { + error = ['errResponse', 'errDataEmpty']; + } + } + + if (error) { + node.trigger('uploadabort'); + getFile(files).done(function(file) { + return dfrd.reject(file._cid? null : error); + }); + } + + loaded = filesize; + + if (checkNotify() && (curr = loaded - prev)) { + self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); + progress(); + } + + res = self.parseUploadData(xhr.responseText); + + // chunked upload commit + if (res._chunkmerged) { + formData = new FormData(); + var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}]; + chunkMerge = true; + node.off('uploadabort', fnAbort); + notifyto2 = setTimeout(function() { + self.notify({type : 'chunkmerge', cnt : 1}); + }, self.options.notifyDelay); + isDataType? send(_file, files[1]) : send(_file); + return; + } + + res._multiupload = data.multiupload? true : false; + if (res.error) { + self.trigger('uploadfail', res); + if (res._chunkfailure || res._multiupload) { + abort = true; + self.uploads.xhrUploading = false; + notifyto && clearTimeout(notifyto); + if (ntfUpload.length) { + self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); + dfrd.reject(res.error); + } else { + // for multi connection + dfrd.reject(); + } + } else { + dfrd.reject(res.error); + } + } else { + dfrd.resolve(res); + } + }, false); + + xhr.upload.addEventListener('loadstart', function(e) { + if (!chunkMerge && e.lengthComputable) { + loaded = e.loaded; + retry && (loaded = 0); + filesize = e.total; + if (!loaded) { + loaded = parseInt(filesize * 0.05); + } + if (checkNotify()) { + self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize}); + prev = loaded; + progress(); + } + } + }, false); + + xhr.upload.addEventListener('progress', function(e) { + var curr; + + if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) { + + loaded = e.loaded; + + // to avoid strange bug in safari (not in chrome) with drag&drop. + // bug: macos finder opened in any folder, + // reset safari cache (option+command+e), reload elfinder page, + // drop file from finder + // on first attempt request starts (progress callback called ones) but never ends. + // any next drop - successfull. + if (!data.checked && loaded > 0 && !notifyto) { + notifyto = startNotify(xhr._totalSize - loaded); + } + + if (!filesize) { + filesize = e.total; + if (!loaded) { + loaded = parseInt(filesize * 0.05); + } + } + + curr = loaded - prev; + if (checkNotify() && (curr/e.total) >= 0.05) { + self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); + prev = loaded; + progress(); + } + + if (! data.multiupload && loaded >= filesize) { + cancelBtn = false; + cancelToggle(false); + } + } + }, false); + + var send = function(files, paths){ + var size = 0, + fcnt = 1, + sfiles = [], + c = 0, + total = cnt, + maxFileSize, + totalSize = 0, + chunked = [], + chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system + BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize + blobSlice = chunkEnable? false : '', + blobSize, blobMtime, i, start, end, chunks, blob, chunk, added, done, last, failChunk, + multi = function(files, num){ + var sfiles = [], cid, sfilesLen = 0, cancelChk; + if (!abort) { + while(files.length && sfiles.length < num) { + sfiles.push(files.shift()); + } + sfilesLen = sfiles.length; + if (sfilesLen) { + cancelChk = sfilesLen; + for (var i=0; i < sfilesLen; i++) { + if (abort) { + break; + } + cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null); + if (!!failChunk[cid]) { + last--; + continue; + } + fm.exec('upload', { + type: data.type, + isDataType: isDataType, + files: sfiles[i], + checked: true, + target: target, + dropEvt: dropEvt, + renames: renames, + hashes: hashes, + multiupload: true, + overwrite: data.overwrite === 0? 0 : void 0 + }, void 0, target) + .fail(function(error) { + if (error && error === 'No such command') { + abort = true; + fm.error(['errUpload', 'errPerm']); + } + if (cid) { + failChunk[cid] = true; + } + }) + .always(function(e) { + if (e && e.added) added = $.merge(added, e.added); + if (last <= ++done) { + fm.trigger('multiupload', {added: added}); + notifyto && clearTimeout(notifyto); + if (checkNotify()) { + self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); + } + } + if (files.length) { + multi(files, 1); // Next one + } else { + if (--cancelChk <= 1) { + cancelBtn = false; + cancelToggle(false); + } + } + }); + } + } + } + if (sfiles.length < 1 || abort) { + if (abort) { + notifyto && clearTimeout(notifyto); + if (cid) { + failChunk[cid] = true; + } + dfrd.reject(); + } else { + dfrd.resolve(); + self.uploads.xhrUploading = false; + } + } + }, + check = function(){ + if (!self.uploads.xhrUploading) { + self.uploads.xhrUploading = true; + multi(sfiles, multiMax); // Max connection: 3 + } else { + setTimeout(check, 100); + } + }, + reqId; + + if (! dataChecked && (isDataType || data.type == 'files')) { + if (! (maxFileSize = fm.option('uploadMaxSize', target))) { + maxFileSize = 0; + } + for (i=0; i < files.length; i++) { + try { + blob = files[i]; + blobSize = blob.size; + if (blobSlice === false) { + blobSlice = ''; + if (self.api >= 2.1) { + if ('slice' in blob) { + blobSlice = 'slice'; + } else if ('mozSlice' in blob) { + blobSlice = 'mozSlice'; + } else if ('webkitSlice' in blob) { + blobSlice = 'webkitSlice'; + } + } + } + } catch(e) { + cnt--; + total--; + continue; + } + + // file size check + if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) { + self.error(self.i18n('errUploadFile', blob.name) + ' ' + self.i18n('errUploadFileSize')); + cnt--; + total--; + continue; + } + + // file mime check + if (blob.type && ! self.uploadMimeCheck(blob.type, target)) { + self.error(self.i18n('errUploadFile', blob.name) + ' ' + self.i18n('errUploadMime') + ' (' + self.escape(blob.type) + ')'); + cnt--; + total--; + continue; + } + + if (blobSlice && blobSize > BYTES_PER_CHUNK) { + start = 0; + end = BYTES_PER_CHUNK; + chunks = -1; + total = Math.floor(blobSize / BYTES_PER_CHUNK); + blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0; + + totalSize += blobSize; + chunked[chunkID] = 0; + while(start <= blobSize) { + chunk = blob[blobSlice](start, end); + chunk._chunk = blob.name + '.' + (++chunks) + '_' + total + '.part'; + chunk._cid = chunkID; + chunk._range = start + ',' + chunk.size + ',' + blobSize; + chunk._mtime = blobMtime; + chunked[chunkID]++; + + if (size) { + c++; + } + if (typeof sfiles[c] == 'undefined') { + sfiles[c] = []; + if (isDataType) { + sfiles[c][0] = []; + sfiles[c][1] = []; + } + } + size = BYTES_PER_CHUNK; + fcnt = 1; + if (isDataType) { + sfiles[c][0].push(chunk); + sfiles[c][1].push(paths[i]); + } else { + sfiles[c].push(chunk); + } + + start = end; + end = start + BYTES_PER_CHUNK; + } + if (chunk == null) { + self.error(self.i18n('errUploadFile', blob.name) + ' ' + self.i18n('errUploadFileSize')); + cnt--; + total--; + } else { + total += chunks; + size = 0; + fcnt = 1; + c++; + } + continue; + } + if ((fm.uplMaxSize && size + blobSize >= fm.uplMaxSize) || fcnt > fm.uplMaxFile) { + size = 0; + fcnt = 1; + c++; + } + if (typeof sfiles[c] == 'undefined') { + sfiles[c] = []; + if (isDataType) { + sfiles[c][0] = []; + sfiles[c][1] = []; + } + } + if (isDataType) { + sfiles[c][0].push(blob); + sfiles[c][1].push(paths[i]); + } else { + sfiles[c].push(blob); + } + size += blobSize; + totalSize += blobSize; + fcnt++; + } + + if (sfiles.length == 0) { + // no data + data.checked = true; + return false; + } + + if (sfiles.length > 1) { + // multi upload + notifyto = startNotify(totalSize); + added = []; + done = 0; + last = sfiles.length; + failChunk = []; + check(); + return true; + } + + // single upload + if (isDataType) { + files = sfiles[0][0]; + paths = sfiles[0][1]; + } else { + files = sfiles[0]; + } + } + + if (!dataChecked) { + if (!fm.UA.Safari || !data.files) { + notifyto = startNotify(totalSize); + } else { + xhr._totalSize = totalSize; + } + } + + dataChecked = true; + + if (! files.length) { + dfrd.reject(['errUploadNoFiles']); + } + + xhr.open('POST', self.uploadURL, true); + + // set request headers + if (fm.customHeaders) { + $.each(fm.customHeaders, function(key) { + xhr.setRequestHeader(key, this); + }); + } + + // set xhrFields + if (fm.xhrFields) { + $.each(fm.xhrFields, function(key) { + if (key in xhr) { + xhr[key] = this; + } + }); + } + + if (self.api >= 2.1029) { + // request ID + reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); + formData.append('reqid', reqId); + xhr._requestId = reqId; + } + formData.append('cmd', 'upload'); + formData.append(self.newAPI ? 'target' : 'current', target); + if (renames && renames.length) { + $.each(renames, function(i, v) { + formData.append('renames[]', v); + }); + formData.append('suffix', fm.options.backupSuffix); + } + if (hashes) { + $.each(hashes, function(i, v) { + formData.append('hashes['+ i +']', v); + }); + } + $.each(self.customData, function(key, val) { + formData.append(key, val); + }); + $.each(self.options.onlyMimes, function(i, mime) { + formData.append('mimes[]', mime); + }); + + $.each(files, function(i, file) { + if (file._chunkmerged) { + formData.append('chunk', file._chunkmerged); + formData.append('upload[]', file._name); + formData.append('mtime[]', file._mtime); + } else { + if (file._chunkfail) { + formData.append('upload[]', 'chunkfail'); + formData.append('mimes', 'chunkfail'); + } else { + formData.append('upload[]', file); + if (data.clipdata) { + data.overwrite = 0; + formData.append('name[]', fm.date(fm.nonameDateFormat) + '.png'); + } + if (file.name && fm.UA.iOS) { + if (file.name.match(/^image\.jpe?g$/i)) { + data.overwrite = 0; + formData.append('name[]', fm.date(fm.nonameDateFormat) + '.jpg'); + } else if (file.name.match(/^capturedvideo\.mov$/i)) { + data.overwrite = 0; + formData.append('name[]', fm.date(fm.nonameDateFormat) + '.mov'); + } + } + } + if (file._chunk) { + formData.append('chunk', file._chunk); + formData.append('cid' , file._cid); + formData.append('range', file._range); + formData.append('mtime[]', file._mtime); + } else { + formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0); + } + } + }); + + if (isDataType) { + $.each(paths, function(i, path) { + formData.append('upload_path[]', path); + }); + } + + if (data.overwrite === 0) { + formData.append('overwrite', 0); + } + + // send int value that which meta key was pressed when dropped as `dropWith` + if (dropEvt) { + formData.append('dropWith', parseInt( + (dropEvt.altKey ? '1' : '0')+ + (dropEvt.ctrlKey ? '1' : '0')+ + (dropEvt.metaKey ? '1' : '0')+ + (dropEvt.shiftKey? '1' : '0'), 2)); + } + + xhr.send(formData); + + return true; + }; + + if (! isDataType) { + if (files.length > 0) { + if (! data.clipdata && renames == null) { + var mkdirs = [], + paths = [], + excludes = fm.options.folderUploadExclude[fm.OS] || null; + $.each(files, function(i, file) { + var relPath = file.webkitRelativePath || file.relativePath || '', + idx, rootDir; + if (! relPath) { + return false; + } + if (excludes && file.name.match(excludes)) { + file._remove = true; + relPath = void(0); + } else { + // add '/' as prefix to make same to folder uploading with DnD, see #2607 + relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, ''); + if (relPath && $.inArray(relPath, mkdirs) === -1) { + mkdirs.push(relPath); + // checking the root directory to supports see #2378 + idx = relPath.substr(1).indexOf('/'); + if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && $.inArray(rootDir, mkdirs) === -1) { + mkdirs.unshift(rootDir); + } + } + } + paths.push(relPath); + }); + renames = []; + hashes = {}; + if (mkdirs.length) { + (function() { + var checkDirs = $.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}), + cancelDirs = []; + fm.uploads.checkExists(checkDirs, target, fm, true).done( + function(res, res2) { + var dfds = [], dfd, bak, hash; + if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { + cancelDirs = $.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} ); + checkDirs = $.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} ); + } + if (cancelDirs.length) { + $.each(paths.concat(), function(i, path) { + if ($.inArray(path, cancelDirs) === 0) { + files[i]._remove = true; + paths[i] = void(0); + } + }); + } + files = $.grep(files, function(file) { return file._remove? false : true; }); + paths = $.grep(paths, function(path) { return path === void 0 ? false : true; }); + if (checkDirs.length) { + dfd = $.Deferred(); + if (res.length) { + $.each(res, function(i, existName) { + // backup + bak = fm.uniqueName(existName + fm.options.backupSuffix , null, ''); + $.each(res2, function(h, name) { + if (res[0] == name) { + hash = h; + return false; + } + }); + if (! hash) { + hash = fm.fileByName(res[0], target).hash; + } + fm.lockfiles({files : [hash]}); + dfds.push( + fm.request({ + data : {cmd : 'rename', target : hash, name : bak}, + notify : {type : 'rename', cnt : 1} + }) + .fail(function(error) { + dfrd.reject(error); + fm.sync(); + }) + .always(function() { + fm.unlockfiles({files : [hash]}); + }) + ); + }); + } else { + dfds.push(null); + } + + $.when.apply($, dfds).done(function() { + // ensure directories + fm.request({ + data : {cmd : 'mkdir', target : target, dirs : mkdirs}, + notify : {type : 'mkdir', cnt : mkdirs.length}, + preventFail: true + }) + .fail(function(error) { + error = error || ['errUnknown']; + if (error[0] === 'errCmdParams') { + multiMax = 1; + } else { + multiMax = 0; + dfrd.reject(error); + } + }) + .done(function(data) { + if (data.hashes) { + paths = $.map(paths.concat(), function(p) { + if (p === '/') { + return target; + } else { + return data.hashes[p]; + } + }); + } + }) + .always(function(data) { + if (multiMax) { + isDataType = true; + if (! send(files, paths)) { + dfrd.reject(); + } + } + }); + }); + } else { + dfrd.reject(); + } + } + ); + })(); + } else { + fm.uploads.checkExists(files, target, fm).done( + function(res, res2){ + if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { + hashes = res2; + if (res === null) { + data.overwrite = 0; + } else { + renames = res; + } + files = $.grep(files, function(file){return !file._remove? true : false ;}); + } + cnt = files.length; + if (cnt > 0) { + if (! send(files)) { + dfrd.reject(); + } + } else { + dfrd.reject(); + } + } + ); + } + } else { + if (! send(files)) { + dfrd.reject(); + } + } + } else { + dfrd.reject(); + } + } else { + if (dataChecked) { + send(files[0], files[1]); + } else { + files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs] + renames = []; + cnt = result[0].length; + if (cnt) { + if (result[4] && result[4].length) { + // ensure directories + fm.request({ + data : {cmd : 'mkdir', target : target, dirs : result[4]}, + notify : {type : 'mkdir', cnt : result[4].length}, + preventFail: true + }) + .fail(function(error) { + error = error || ['errUnknown']; + if (error[0] === 'errCmdParams') { + multiMax = 1; + } else { + multiMax = 0; + dfrd.reject(error); + } + }) + .done(function(data) { + if (data.hashes) { + result[1] = $.map(result[1], function(p) { + p = p.replace(/\/[^\/]*$/, ''); + if (p === '') { + return target; + } else { + return data.hashes[p]; + } + }); + } + }) + .always(function(data) { + if (multiMax) { + renames = result[2]; + hashes = result[3]; + send(result[0], result[1]); + } + }); + return; + } else { + result[1] = $.map(result[1], function() { return target; }); + } + renames = result[2]; + hashes = result[3]; + send(result[0], result[1]); + } else { + dfrd.reject(['errUploadNoFiles']); + } + }).fail(function(){ + dfrd.reject(); + }); + } + } + + return dfrd; + }, + + // upload transport using iframe + iframe : function(data, fm) { + var self = fm ? fm : this, + input = data.input? data.input : false, + files = !input ? self.uploads.checkFile(data, self) : false, + dfrd = $.Deferred() + .fail(function(error) { + error && self.error(error); + }), + name = 'iframe-'+fm.namespace+(++self.iframeCnt), + form = $('
'), + msie = this.UA.IE, + // clear timeouts, close notification dialog, remove form/iframe + onload = function() { + abortto && clearTimeout(abortto); + notifyto && clearTimeout(notifyto); + notify && self.notify({type : 'upload', cnt : -cnt}); + + setTimeout(function() { + msie && $('', + // 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 = $('
') + .css({ + position: 'absolute', + top: '50%', + textAlign: 'center', + width: '100%', + fontSize: '16pt' + }) + .html(fm.i18n('nowLoading') + '') + .appendTo(ifm.parent()), + getType = function(mime) { + var ext = getExtention(mime, fm), + extmime = ext2mime[ext]; + + if (!confObj.mimesFlip[extmime]) { + ext = ''; + } else if (ext === 'jpeg') { + ext = 'jpg'; + } + if (!ext || ext === 'xcf' || ext === 'dng' || ext === 'sketch') { + ext = 'psd'; + extmime = ext2mime[ext]; + ifm.closest('.ui-dialog').trigger('changeType', { + extention: ext, + mime : extmime, + keepEditor: true + }); + } + return ext; + }, + mime = file.mime, + liveMsg, type; + + if (!confObj.mimesFlip) { + confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true); + } + if (!confObj.liveMsg) { + confObj.liveMsg = function(ifm, spnr, file) { + var url = fm.openUrl(file.hash); + if (!fm.isSameOrigin(url)) { + url = fm.openUrl(file.hash, true); + } + var wnd = ifm.get(0).contentWindow, + phase = 0, + data = null, + dfdIni = $.Deferred().done(function() { + spnr.remove(); + phase = 1; + wnd.postMessage(data, '*'); + }), + dfdGet; + + this.load = function() { + return fm.request({ + data : {cmd : 'get'}, + options : { + url: url, + type: 'get', + cache : true, + dataType : 'binary', + responseType :'arraybuffer', + processData: false + } + }) + .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 (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; + 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); + } + 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, '-') + } + }); + ifm.attr('src', orig + '/#' + encodeURI(d)); + }).fail(function(err) { + err && fm.error(err); + editor.initFail = true; + }); + }, + 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); + } + }, + { + // Adobe Creative SDK Creative Tools Image Editor UI + // MIME types to accept + info : { + id : 'creativecloud', + name : 'Creative Cloud', + iconImg : 'img/editor-icons.png 0 -192', + dataScheme: true, + schemeContent: true, + single: true, + canMakeEmpty: false, + integrate: { + title: 'Adobe Creative Cloud', + link: 'https://www.adobe.io/apis/creativecloud.html' + } + }, + 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.creativeCloudApiKey) { + this.disabled = true; + } else { + this.apiKey = opts.extraOptions.creativeCloudApiKey; + } + }, + // 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 Aviary Feather editor when dialog open + load : function(base) { + var self = this, + fm = this.fm, + node = $(base).children('img:first'), + dialog = $(base).closest('.ui-dialog'), + elfNode = fm.getUI(), + dfrd = $.Deferred(), + container = $('#elfinder-aviary-container'), + init = function(onload) { + var getLang = function() { + var langMap = { + 'zh_TW' : 'zh_HANT', + 'zh_CN' : 'zh_HANS' + }; + return langMap[fm.lang]? langMap[fm.lang] : fm.lang; + }, opts; + + if (!container.length) { + container = $('
').css({ + position: 'fixed', + top: 0, + right: 0, + width: '100%', + height: $(window).height(), + overflow: 'auto' + }).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() { + container.remove(); + }); + } else { + // always moves to last + container.appendTo(container.parent()); + } + node.on('click', launch).data('loading')(); + opts = { + apiKey: self.confObj.apiKey, + onSave: function(imageID, newURL) { + var ext; + featherEditor.showWaitIndicator(); + ext = newURL.replace(/.+\.([^.]+)$/, '$1'); + if (node.data('ext') !== ext) { + node.closest('.ui-dialog').trigger('changeType', { + extention: ext, + mime : ext2mime[ext] + }); + } + node.on('load error', function() { + node.data('loading')(true); + }) + .attr('crossorigin', 'anonymous') + .attr('src', newURL) + .data('loading')(); + featherEditor.close(); + }, + onLoad: onload || function(){}, + onClose: function() { + dialog.removeClass(fm.res('class', 'preventback')); + fm.toggleMaximize(container, false); + $(container).hide(); + }, + appendTo: container.get(0), + maxSize: 2048, + language: getLang() + }; + // trigger event 'editEditorPrepare' + self.trigger('Prepare', { + node: base, + editorObj: Aviary, + instance: void(0), + opts: opts + }); + featherEditor = new Aviary.Feather(opts); + // return editor instance + dfrd.resolve(featherEditor); + $(base).on('saveAsFail', launch); + }, + launch = function() { + dialog.addClass(fm.res('class', 'preventback')); + fm.toggleMaximize(container, true); + fm.toFront(container); + $(container).show(); + featherEditor.launch({ + image: node.attr('id'), + url: node.attr('src') + }); + node.data('loading')(true); + }, + featherEditor, extraOpts; + + // load script then init + if (typeof Aviary === 'undefined') { + fm.loadScript(['https://dme0ih8comzn4.cloudfront.net/imaging/v3/editor.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 node = $(base).children('img:first'); + if (node.attr('src').substr(0, 5) !== 'data:') { + node.attr('src', imgBase64(node, this.file.mime)); + } + } + }, + { + // 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( + $('') + .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().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.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 + ')'); + } + + // 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( + $('").button({icons:{primary:"ui-icon-gear",secondary:"ui-icon-triangle-1-e"},text:!1}).on("click",function(){i.showSettingsMenu(),$("#ace_settingsmenu").css("font-size","80%").find('div[contains="setOptions"]').hide().end().parent().parent().appendTo($("#elfinder"))})).prependTo(c.next()),t.trigger("Prepare",{node:e,editorObj:ace,instance:i,opts:{}}),n.resolve(i)};return t.confObj.loader||(t.confObj.loader=$.Deferred(),t.fm.loadScript([o+"/ace.js"],function(){t.confObj.loader.resolve()},void 0,{obj:window,name:"ace"})),t.confObj.loader.done(a),n},close:function(e,t){t&&t.destroy()},save:function(e,t){t&&$(e).data("ace")&&(e.value=t.session.getValue())},focus:function(e,t){t&&$(e).data("ace")&&t.focus()},resize:function(e,t,i,n){t&&t.resize()}},{setup:function(e,t){!t.UA.ltIE10&&t.options.cdns.codemirror||(this.disabled=!0)},info:{id:"codemirror",name:"CodeMirror",iconImg:"img/editor-icons.png 0 -176"},load:function(e){var t=this.fm,i=t.options.cdns.codemirror,o=$.Deferred(),a=this,r=function(t){var r,s,c,d=$(e),l=d.parent();l.height(l.height()),c={lineNumbers:!0,lineWrapping:!0,extraKeys:{"Ctrl-S":function(){a.doSave()},"Ctrl-Q":function(){a.doCancel()},"Ctrl-W":function(){a.doCancel()}}},a.trigger("Prepare",{node:e,editorObj:t,instance:void 0,opts:c}),r=t.fromTextArea(e,c),o.resolve(r);var p,m,u,f;p||(p=t.findModeByMIME(a.file.mime)),!p&&(m=a.file.name.match(/.+\.([^.]+)$/))&&(p=t.findModeByExtension(m[1])),p&&(t.modeURL=n?"codemirror/mode/%N/%N.min":i+"/mode/%N/%N.min.js",u=p.mode,f=p.mime,r.setOption("mode",f),t.autoLoadMode(r,u),l.prev().children(".elfinder-dialog-title").append(" ("+f+" : "+u+")")),s=$(r.getWrapperElement()).css({padding:0,border:"none"}),d.data("cm",!0),s.height("100%"),$('
').css("float","left").append($("
').appendTo(ql.info.find('.elfinder-quicklook-info')) + .on('click', function() { + $(this).html(''); + fm.request({ + data : {cmd : 'url', target : file.hash}, + preventDefault : true + }) + .always(function() { + preview.show(); + $(this).html(''); + }) + .done(function(data) { + var rfile = fm.file(file.hash); + ql.value.url = rfile.url = data.url || ''; + if (ql.value.url) { + preview.trigger($.Event('update', {file : ql.value})); + } + }); + }); + } + if (file.url !== '' && file.url != '1') { + e.stopImmediatePropagation(); + preview.one('change', function() { + loading.remove(); + node.off('load').remove(); + }); + + loading = $('
'+fm.i18n('nowLoading')+'
').appendTo(ql.info.find('.elfinder-quicklook-info')); + + node = $('