The New Desing
|
@ -1,14 +0,0 @@
|
|||
<public:attach event="ondocumentready" onevent="CSSHover()" />
|
||||
<script>
|
||||
/**
|
||||
* Whatever:hover - V3.00.081222
|
||||
* --------------------------------------------------------
|
||||
* Author - Peter Nederlof, http://www.xs4all.nl/~peterned
|
||||
* License - http://creativecommons.org/licenses/LGPL/2.1
|
||||
* Packed - http://dean.edwards.name/packer
|
||||
*
|
||||
* howto: body { behavior:url("csshover3.htc"); }
|
||||
*/
|
||||
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('r.R=(8(){4 f=/(^|\\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(C|D|E))/i,S=/(.*?)\\:(C|D|E)/i,T=/[^:]+:([a-z-]+).*/i,U=/(\\.([a-V-W-]+):[a-z]+)|(:[a-z]+)/1c,X=/\\.([a-V-W-]*Y(C|D|E))/i,Z=/1d (5|6|7)/i,10=/1e/i;4 g=\'1f-\';4 h={p:[],t:{},11:8(){n(!Z.F(1g.1h)&&!10.F(r.12.1i))u;4 a=r.12.1j,l=a.v;w(4 i=0;i<l;i++){3.G(a[i])}},G:8(a){n(a.H){I{4 b=a.H,l=b.v;w(4 i=0;i<l;i++){3.G(a.H[i])}}J(13){}}I{4 c=a.1k,l=c.v;w(4 j=0;j<l;j++){3.14(c[j],a)}}J(13){}},14:8(a,b){4 c=a.1l;n(f.F(c)){4 d=a.K.1m,L=S.15(c)[1],M=c.N(T,\'Y$1\'),O=c.N(U,\'.$2\'+M),o=X.15(O)[1];4 e=L+o;n(!3.t[e]){b.16(L,g+o+\':1n(R(3, "\'+M+\'", "\'+o+\'"))\');3.t[e]=17}b.16(O,d)}},18:8(a,b,c){4 d=g+c;n(a.K[d]){a.K[d]=q}n(!a.x)a.x=[];n(!a.x[c]){a.x[c]=17;4 e=19 P(a,b,c);3.p.1o(e)}u b},y:8(){I{4 l=3.p.v;w(4 i=0;i<l;i++){3.p[i].y()}3.p=[];3.t={}}J(e){}}};r.Q(\'1p\',8(){h.y()});4 k={1q:{9:\'1r\',m:\'1s\'},1t:{9:\'1u\',m:\'1v\'},1a:{9:\'1a\',m:\'1w\'}};8 P(a,b,c){3.A=a;3.B=b;4 d=19 1x(\'(^|\\\\s)\'+c+\'(\\\\s|$)\',\'g\');3.9=8(){a.o+=\' \'+c};3.m=8(){a.o=a.o.N(d,\' \')};a.Q(k[b].9,3.9);a.Q(k[b].m,3.m)}P.1y={y:8(){3.A.1b(k[3.B].9,3.9);3.A.1b(k[3.B].m,3.m);3.9=q;3.m=q;3.A=q;3.B=q}};u 8(a,b,c){n(a){u h.18(a,b,c)}1z{h.11()}}})();',62,98,'|||this|var||||function|activator|||||||||||||deactivator|if|className|elements|null|window||callbacks|return|length|for|csshover|unload||node|type|hover|active|focus|test|parseStylesheet|imports|try|catch|style|affected|pseudo|replace|newSelect|CSSHoverElement|attachEvent|CSSHover|REG_AFFECTED|REG_PSEUDO|REG_SELECT|z0|9_|REG_CLASS|on|REG_MSIE|REG_COMPAT|init|document|securityException|parseCSSRule|exec|addRule|true|patch|new|onfocus|detachEvent|gi|msie|backcompat|csh|navigator|userAgent|compatMode|styleSheets|rules|selectorText|cssText|expression|push|onbeforeunload|onhover|onmouseenter|onmouseleave|onactive|onmousedown|onmouseup|onblur|RegExp|prototype|else'.split('|'),0,{}));
|
||||
|
||||
</script>
|
344
web/css/file_manager.css
Normal file
|
@ -0,0 +1,344 @@
|
|||
body { margin: 0; padding: 0; }
|
||||
.hidden { display: none; }
|
||||
|
||||
#main{ display: inline-block; font-family: Arial; font-size: 15px; color: #777; width: 100%; }
|
||||
|
||||
.window { display: inline-block; float: left; /*border: 1px solid #eee;*/ width: 50%; height: 100%; background-color: #ececec; /*background: url(/images/background-dots.png) #ececec;*/ }
|
||||
.window.active { background: #fff; }
|
||||
|
||||
.pwd { background-color: #7b7b7b; height: 31px; padding: 12px 0 0 17px; }
|
||||
.window.active .pwd { background-color: #333; }
|
||||
.window.active .pwd a { color: #FFF; }
|
||||
.pwd a { color: #CFCFCF; margin-right: 6px; padding: 0 7px; cursor: pointer; text-decoration: none; }
|
||||
.window.active .pwd a:hover, .pwd a:hover { color: #FFCC00; }
|
||||
|
||||
|
||||
.menu { background-color: #E2E2E0; display: inline-block; color: #999999; width: 100%; padding: 8px 0 7px 0; border-bottom: 1px solid #CFCFCD; border-left: 1px solid #CFCFCD; margin-left: -1px; }
|
||||
|
||||
.menu div { display: inline-block; float: left; padding: 5px 9px; font-size: 11px; margin: 0 3px; line-height: 14px; }
|
||||
|
||||
.menu div.button.disabled:hover,
|
||||
.menu div.button { cursor: pointer; border: 1px solid #E2E2E0; border-radius: 3px; text-decoration: underline; background-color: #E2E2E0;
|
||||
transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
-webkit-transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
box-shadow: none; color: #999;
|
||||
}
|
||||
.menu div.button:hover { border: 1px solid #B7B7B7; text-decoration: none; background-color: #FFF; /*#EAEAE8;*/ color: #333;
|
||||
/* box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.64); */
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.29);
|
||||
/* box-shadow: 0 6px 15px rgba( 0, 0, 0, 0.23), 0 10px 18px rgba( 0, 0, 0, 0.16);*/
|
||||
/* box-shadow: 0 3px 10px rgba(0, 0, 0, 0.23), 0 3px 10px rgba(0, 0, 0, 0.16);*/
|
||||
}
|
||||
.menu div.button.disabled:hover,
|
||||
.menu div.button.disabled { opacity: 0.5; cursor: default; text-decoration: none; }
|
||||
|
||||
|
||||
|
||||
.menu .upload.button { color: #777; border: 1px solid #B7B7B7; background-color: #EAEAE8; text-transform: uppercase; font-size: 12px; text-decoration: none; margin-left: 8px; padding: 5px 12px; margin-right: 10px; border-radius: 3px; float: left; transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; -webkit-transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; font-size: 11px; line-height: 14px; }
|
||||
.window.active .menu .upload { border: 1px solid #F79B44; background-color: #F79B44; color: #FFF; }
|
||||
|
||||
.menu .upload.button.progress { background: url(/images/progress.gif) no-repeat /*-98px*/ -60px 0px #EBEBEB; border-color: #8A9079; color: transparent; padding: 3px 12px; height: 0; margin-top: 9px; transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
-webkit-transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
}
|
||||
|
||||
.menu .upload.button.progress.done { background-color: #d1ff66; border-color: #8a9079; box-shadow: 0 0 9px 0 #d1ff38; color: transparent; height: 0; margin-top: 9px; padding: 3px 12px; transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; -webkit-transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; transition: height 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; -webkit-transition: height 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s; }
|
||||
|
||||
.menu .upload.button:hover, .window.active .menu .upload:hover { border: 1px solid #469D8D; background-color: #54bdaa; /*border: 1px solid #6DB8D3; background-color: #6DB8D3;*/ color: #fff; box-shadow: 0 2px 5px 0 rgba( 47, 106, 95, 0.8); }
|
||||
.menu .upload.button:active, .window.active .menu .upload:active { border: 1px solid #FFCC00; background-color: #FFCC00; color: #FFF; }
|
||||
|
||||
.menu .not-writable { color: #BD846A; font-size: 12px; text-decoration: none; margin-left: 10px; padding: 5px 12px; margin-right: 20px; }
|
||||
|
||||
.menu .sort-by { border-bottom: 1px solid #b7b7b7; border-radius: 0; cursor: pointer; float: right; height: 17px; line-height: 10px; margin-right: 8px; padding: 8px 10px 0; text-decoration: none; width: 100px; }
|
||||
.menu .sort-by .direction { background: url("/images/flat_icons.png") repeat scroll -245px -76px; display: inline-block; float:right; width: 12px; height: 20px; margin-top: -10px; }
|
||||
.menu .sort-by.desc .direction { background-position: -270px -76px; }
|
||||
.menu .sort-by span { font-size: 12px; color: #555; text-decoration: none; border: none; }
|
||||
.menu .sort-by span.entity { color: #555; text-decoration: none; border: none; float: right; display: inline-block; }
|
||||
.menu .sort-by:hover span { color: #429586; }
|
||||
.menu .total-size { padding: 7px 0 0 0; }
|
||||
|
||||
.menu .not-writable:hover { border: 1px solid #E2E2E0; }
|
||||
|
||||
ul.listing { list-style-type: none; padding: 18px 0 0; margin: 0; border-left: 1px solid #DDDDDD; margin-left: -1px; overflow: auto; }
|
||||
.listing li { color: #999999; display: block; height: 32px; margin: 1px 0 0; line-height: 30px; border: 1px solid transparent; }
|
||||
.listing li span { display: inline-block; float: right; }
|
||||
.listing li .marker { width: 4px; float: left; height: 100%; margin-right: 31px; }
|
||||
.listing li.back { }
|
||||
.listing li.file { }
|
||||
|
||||
|
||||
/* .listing li .icon { background: url("/images/document.png") no-repeat scroll -2px 6px; float: left; margin-left: -17px; width: 13px; height: 24px; }*/
|
||||
.listing li .icon { background: url("/images/flat_icons.png") no-repeat scroll -97px -100px/*-97px -100px*/; float: left; margin-left: -17px; width: 31px; height: 31px; }
|
||||
.listing li .icon.filetype-dir { background: url("/images/flat_icons.png") no-repeat scroll -24px -99px /*-99px 0px 25px -69px */; }
|
||||
|
||||
.listing li .icon.filetype-tif,
|
||||
.listing li .icon.filetype-gif,
|
||||
.listing li .icon.filetype-jpg,
|
||||
.listing li .icon.filetype-jpeg,
|
||||
.listing li .icon.filetype-bmp,
|
||||
.listing li .icon.filetype-psd,
|
||||
.listing li .icon.filetype-thm,
|
||||
.listing li .icon.filetype-yuv,
|
||||
.listing li .icon.filetype-ai,
|
||||
.listing li .icon.filetype-svg,
|
||||
.listing li .icon.filetype-png { background: url("/images/flat_icons.png") no-repeat scroll -138px -69px; }
|
||||
|
||||
.listing li .icon.filetype-txt,
|
||||
.listing li .icon.filetype-csv,
|
||||
.listing li .icon.filetype-dat,
|
||||
.listing li .icon.filetype-efx,
|
||||
.listing li .icon.filetype-gbr,
|
||||
.listing li .icon.filetype-key,
|
||||
.listing li .icon.filetype-pps,
|
||||
.listing li .icon.filetype-ppt,
|
||||
.listing li .icon.filetype-sdf,
|
||||
.listing li .icon.filetype-vcf,
|
||||
.listing li .icon.filetype-db { background: url("/images/flat_icons.png") no-repeat scroll -97px -150px; }
|
||||
|
||||
|
||||
.listing li .icon.filetype-xlr,
|
||||
.listing li .icon.filetype-xls,
|
||||
.listing li .icon.filetype-xlsx { background: url("/images/flat_icons.png") no-repeat scroll -138px -147px; }
|
||||
|
||||
.listing li .icon.filetype-jar,
|
||||
.listing li .icon.filetype-tar,
|
||||
.listing li .icon.filetype-7z,
|
||||
.listing li .icon.filetype-deb,
|
||||
.listing li .icon.filetype-gz,
|
||||
.listing li .icon.filetype-pkg,
|
||||
.listing li .icon.filetype-rar,
|
||||
.listing li .icon.filetype-rpm,
|
||||
.listing li .icon.filetype-sit,
|
||||
.listing li .icon.filetype-sitx,
|
||||
.listing li .icon.filetype-zip,
|
||||
.listing li .icon.filetype-zipx,
|
||||
.listing li .icon.filetype-jar { background: url("/images/flat_icons.png") no-repeat scroll -176px -34px; }
|
||||
|
||||
.listing li .icon.filetype-fnt,
|
||||
.listing li .icon.filetype-otf,
|
||||
.listing li .icon.filetype-ttf,
|
||||
.listing li .icon.filetype-fon { background: url("/images/flat_icons.png") no-repeat scroll -97px -100px; }
|
||||
|
||||
.listing li .icon.filetype-3g2,
|
||||
.listing li .icon.filetype-3gp,
|
||||
.listing li .icon.filetype-asf,
|
||||
.listing li .icon.filetype-asx,
|
||||
.listing li .icon.filetype-avi,
|
||||
.listing li .icon.filetype-flv,
|
||||
.listing li .icon.filetype-mov,
|
||||
.listing li .icon.filetype-mp4,
|
||||
.listing li .icon.filetype-mpg,
|
||||
.listing li .icon.filetype-mpeg,
|
||||
.listing li .icon.filetype-rm,
|
||||
.listing li .icon.filetype-swf,
|
||||
.listing li .icon.filetype-vob,
|
||||
.listing li .icon.filetype-wmv { background: url("/images/flat_icons.png") no-repeat scroll -97px -100px; }
|
||||
|
||||
.listing li .icon.filetype-aif,
|
||||
.listing li .icon.filetype-iff,
|
||||
.listing li .icon.filetype-m3u,
|
||||
.listing li .icon.filetype-m4a,
|
||||
.listing li .icon.filetype-mid,
|
||||
.listing li .icon.filetype-mp3,
|
||||
.listing li .icon.filetype-mpa,
|
||||
.listing li .icon.filetype-ra,
|
||||
.listing li .icon.filetype-wav,
|
||||
.listing li .icon.filetype-wma { background: url("/images/flat_icons.png") no-repeat scroll -97px -100px; }
|
||||
|
||||
|
||||
.listing li .icon.filetype-rtf,
|
||||
.listing li .icon.filetype-doc,
|
||||
.listing li .icon.filetype-docx { background: url("/images/flat_icons.png") no-repeat scroll -138px -123px; }
|
||||
.listing li .icon.filetype-pdf { background: url("/images/flat_icons.png") no-repeat scroll -138px -96px; }
|
||||
|
||||
.listing li .icon.filetype-js { background: url("/images/flat_icons.png") no-repeat scroll -138px -204px; }
|
||||
.listing li .icon.filetype-css { background: url("/images/flat_icons.png") no-repeat scroll -138px -254px; }
|
||||
.listing li .icon.filetype-php { background: url("/images/flat_icons.png") no-repeat scroll -138px -179px; }
|
||||
.listing li .icon.filetype-html,
|
||||
.listing li .icon.filetype-htm,
|
||||
.listing li .icon.filetype-xhtml { background: url("/images/flat_icons.png") no-repeat scroll -138px -228px; }
|
||||
|
||||
|
||||
.listing li .filename { color: #555; cursor: pointer; height: 32px; float: left; padding: 0 7px 0 7px; border-radius: 3px; transition: all 0.18s cubic-bezier(0.4, 0, 0.2, 1) 0s; -webkit-transition: all 0.18s cubic-bezier(0.4, 0, 0.2, 1) 0s; }
|
||||
/* .listing li .filename { background: url("/images/folder_.png") no-repeat scroll -2px 6px; color: #555; cursor: pointer; float: left; margin-left: -27px; padding-left: 19px; }*/
|
||||
|
||||
|
||||
.listing li .filename:hover { color: #FFF; background-color: #6CB6B9; }
|
||||
.listing li.selected .filename:hover { color: #FFF; }
|
||||
.listing li.active .filename:hover { color: #FFF; background-color: #CAA335; }
|
||||
.listing li.active.selected .filename:hover { color: #FFF; background-color: #60A885; }
|
||||
|
||||
.listing li .filename a { color: #7D7D7D; text-decoration: none; }
|
||||
.listing li .mode { width: 51px; font-size: 11px; }
|
||||
.listing li .owner { width: 11%; font-style: italic; color: #81A64F; font-size: 12px; }
|
||||
.listing li .size { width: 8%; color: #44a8b3; font-size: 12px; padding-right: 7px; text-align: right; }
|
||||
.listing li .size-unit { width: 5%; font-size: 11px; font-weight: bold; color: #A7A7A7; padding-top: 1px; }
|
||||
.listing li .date { width: 11%; font-size: 11px; }
|
||||
.listing li .time { width: 8%; font-size: 11px; }
|
||||
|
||||
.listing li.selected-inactive.selected { background-color: #e9e9e9; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; }
|
||||
.listing li.selected-inactive .mode,
|
||||
.listing li.selected-inactive .time,
|
||||
.listing li.selected-inactive .date { color: #999 !important; }
|
||||
.listing li.selected { background-color: #7FD5D9; }
|
||||
.window.active .listing li.selected.active { background-color: #73CAA0; }
|
||||
|
||||
|
||||
.listing li.selected-inactive.selected.active { background-color: #dfc891; border-top: 1px solid #cdb885; border-bottom: 1px solid #cdb885; }
|
||||
.listing li.active { background-color: #e7cf96; }
|
||||
.window.active .listing li.active { background-color: #ffe06c; }
|
||||
.listing li.active .filename{ color: #31775A; }
|
||||
.listing li.selected .filename { color: #333; }
|
||||
.listing li.selected .date,
|
||||
.listing li.selected .mode,
|
||||
.listing li.selected .time { color: #FFF; }
|
||||
.listing li.selected .owner { color: #31775A; }
|
||||
.listing li.selected .size { color: #31775A; }
|
||||
|
||||
.listing li.selected.active .filename { color: #fff29c; }
|
||||
.listing li.selected.active .marker { background-color: #3a8a96; }
|
||||
.listing li.selected-inactive .marker { background-color: #7FD5D9; }
|
||||
.listing li.selected-inactive .filename { color: #54A9A9; }
|
||||
|
||||
|
||||
.listing li .filename a:hover { color: #3399FF; }
|
||||
.listing li:hover { background-color: #F4F4F2; }
|
||||
.listing li.active:hover { background-color: #FFD63F; }
|
||||
.listing li.selected:hover { background-color: #89E6EA; }
|
||||
.listing li.selected.active:hover { background-color: #77D1A6; }
|
||||
|
||||
|
||||
|
||||
|
||||
.context-menu { background-color: #333333; width: 200px; list-style-type: none; font-family: arial; padding-left: 0; }
|
||||
.context-menu li { border-bottom: 1px solid #555; padding: 12px 12px 12px 12px; color: #D6CEC1; font-size: 14px; cursor: pointer; }
|
||||
|
||||
.context-menu li:hover { background-color: #4B4B4B; color: #FFF; }
|
||||
.context-menu li:active { background-color: #FFCC00; color: #FFF; }
|
||||
.context-menu li.download { text-transform: uppercase; font-size: 12px; color: #CCCD33; }
|
||||
.context-menu li.download:hover { background-color: #CCCD33; color: #FFF; }
|
||||
.context-menu li.delete { color: #DC5847; }
|
||||
.context-menu li.delete:hover { background-color: #DC5847; color: #FFF; }
|
||||
.context-menu li.disabled { font-size: 12px; color: #777; cursor: default; }
|
||||
.context-menu li.disabled:active, .context-menu li.disabled:hover { background-color: #333; color: #777; }
|
||||
|
||||
.context-menu.sort-order { width: 148px; border-radius: 3px; box-shadow: 0px 2px 11px 0px rgba(0, 0, 0, 0.5); left: 300px; position: absolute; top: 54px; overflow: hidden; margin: 0; }
|
||||
.context-menu.sort-order li { padding: 0; }
|
||||
.context-menu.sort-order li.last { border: none; }
|
||||
.context-menu.sort-order li:hover { background-color: #333; }
|
||||
.context-menu.sort-order span { padding: 12px 12px 12px 12px; background: ulr(/images/flat_icons.png) }
|
||||
.context-menu.sort-order span.up { background: url(/images/flat_icons.png) -255px -141px; padding: 12px 14px; display: inline-block; width: 16px; }
|
||||
.context-menu.sort-order span.name { background: url("/images/flat_icons.png") repeat scroll -162px -105px; display: inline-block; padding: 12px 28px 12px 12px; width: 64px; }
|
||||
|
||||
|
||||
.context-menu.sort-order span.active { background-color: #FFCC00; color: #FFF; }
|
||||
|
||||
.context-menu.sort-order span:hover { background-color: #4B4B4B; color: #FFF; }
|
||||
.context-menu.sort-order span:active { background-color: #FFCC00; color: #FFF; }
|
||||
|
||||
|
||||
.confirm-box { background-color: #333; width: 480px; font-family: arial; margin-left: 50px; border-radius: 3px; box-shadow: 0 2px 11px 0 rgba(0, 0, 0, 0.5); }
|
||||
/*.confirm-box.replace { height: 230px; }*/
|
||||
.confirm-box .message { color: #EBE697; font-size: 16px; padding: 25px; margin-bottom: 60px; display: inline-block; }
|
||||
.confirm-box .warning { color: #FF9500; font-size: 16px; padding: 25px; }
|
||||
.confirm-box .warning .title,
|
||||
.confirm-box .message .title { color: #48B1B7; }
|
||||
.confirm-box .action-name { color: #B9CAD4; display: inline-block; float: left; margin-bottom: 28px; margin-left: 25px; }
|
||||
.confirm-box .action-name span { display: inline-block; float: left; }
|
||||
.confirm-box .action-nam .checkbox { border: 1px solid #777; height: 10px; margin-right: 10px; margin-top: 3px; padding-top: 0; width: 10px; }
|
||||
|
||||
.confirm-box .controls { border-top: 1px solid #555; display: inline-block; width: 100%; margin-bottom :9px; }
|
||||
.confirm-box .controls .cancel { /*background-color: #e8e8e6;*/ border: 1px solid transparent; border-radius: 3px; color: #CCC; display: inline-block; float: left; font-size: 12px; margin: 12px 0 0 12px; padding: 7px 18px; text-transform: uppercase; cursor: pointer; }
|
||||
.confirm-box .controls .keep-original { color: #ccc; cursor: pointer; display: inline-block; float: left; margin: 11px 0 0 15px; padding: 7px; text-decoration: underline; }
|
||||
.confirm-box .controls .ok { margin: 12px 12px 0 0; border-radius: 3px; cursor: pointer; border: 1px solid #CACE33; background-color: #CACE33; color: #FFF; float: right; display: inline-block; font-size: 12px; padding: 7px 18px; text-transform: uppercase; width: 100px; text-align: center; height: 14px; }
|
||||
.confirm-box .controls .cancel:hover,
|
||||
.confirm-box .controls .ok:hover { border: 1px solid #54BDAA; background-color: #54BDAA; /*border: 1px solid #6DB8D3; background-color: #6DB8D3;*/ color: #FFF; box-shadow: 0 2px 11px 0 rgba(0, 0, 0, 0.5); }
|
||||
.confirm-box .controls .cancel:active,
|
||||
.confirm-box .controls .ok:active { border: 1px solid #ccc; background-color: #ccc; }
|
||||
.confirm-box.delete .controls .ok { background-color: #ff9f89; border-color: #ff9f89; }
|
||||
.confirm-box.delete .controls .ok:hover { background-color: #FF6C6E; border-color: #FF6C6E; }
|
||||
|
||||
|
||||
|
||||
.confirm-box .controls .keep-original:hover { color: #FFCC00; }
|
||||
.confirm-box .controls .keep-original:active { color: #6DB8D3; }
|
||||
|
||||
/*.confirm-box.delete { height: 183px; }*/
|
||||
|
||||
.confirm-box .new-title { background-color: #292929; border: 1px solid #111; color: #fff; font-family: Arial; font-size: 16px; margin-bottom: 73px; margin-left: 27px; padding: 10px 14px; width: 396px; }
|
||||
.confirm-box .new-title:focus { border: 1px solid #FFCC00; box-shadow: 0 0 5px 0 rgba(255, 204, 0 , 0.3); }
|
||||
|
||||
/*.confirm-box.rename { height: 209px; } */
|
||||
.confirm-box.rename .message { margin-bottom: 36px; }
|
||||
.confirm-box.rename .controls.replace { display: none; }
|
||||
.confirm-box.rename.warning .controls { display: none; }
|
||||
.confirm-box.rename .warning { display: none; }
|
||||
.confirm-box.rename.warning .warning { display: inline-block; }
|
||||
.confirm-box.rename.warning .controls.replace { display: inline-block; }
|
||||
.confirm-box.rename.warning .message { padding-bottom: 0; }
|
||||
|
||||
/*.confirm-box.archive { height: 468px; }*/
|
||||
.confirm-box.archive .message { margin-bottom: 38px; }
|
||||
.confirm-box.archive.warning .controls,
|
||||
.confirm-box.archive .controls.replace,
|
||||
.confirm-box.archive .warning { display: none; }
|
||||
|
||||
.confirm-box.archive.warning .controls.replace,
|
||||
.confirm-box.archive.warning .warning { display: inline-block; }
|
||||
.confirm-box.archive.warning .message { margin-bottom: -31px; }
|
||||
|
||||
.confirm-box .actions select { background-color: #333333; border: 1px solid #ccc; color: #fff; font-family: Arial; font-size: 16px; margin-bottom: 27px; margin-left: 27px; padding: 10px 14px; }
|
||||
.confirm-box .actions .title { color: #ccc; font-family: Arial; line-height: 33px; padding-left: 27px; text-transform: capitalize; }
|
||||
|
||||
/*.confirm-box.owner-mode { height: 484px; }*/
|
||||
.confirm-box.owner-mode .warning { display: none; }
|
||||
.confirm-box.owner-mode.warning .warning { display: inline-block; }
|
||||
.confirm-box.owner-mode.warning .message { margin-bottom: -39px; }
|
||||
.confirm-box.owner-mode .message { margin-bottom: 30px; }
|
||||
.confirm-box.owner-mode .mode,
|
||||
.confirm-box.owner-mode .owner-group { display: inline-block; }
|
||||
.confirm-box.owner-mode .mode .col,
|
||||
.confirm-box.owner-mode .owner-group .col { display: inline-block; float: left; width: 150px; }
|
||||
.confirm-box.owner-mode .recursive { margin-top: 30px; margin-bottom: 25px; }
|
||||
|
||||
|
||||
.warning-box { width: 60%; background-color: #ff9f89; border-bottom: 5px solid #ff6c6e; color: #FFF; font-family: arial; margin-left: auto; margin-right: auto; padding-bottom: 30px; margin-bottom: 50px; left: 20%; position: absolute; top: 0; box-shadow: 0 2px 11px 0 rgba(0, 0, 0, 0.5); }
|
||||
.warning-box.inform { background-color: #72c5b2; border-color: #019174; }
|
||||
.warning-box .message { width: 100%; padding: 30px 0 5px; text-align: center; font-size: 14px; text-transform: uppercase; font-weight: bold; }
|
||||
.warning-box .message-small { width: 100%; text-align: center; font-size: 13px; color: #9D3407; }
|
||||
.warning-box.inform .message-small { color: #555; }
|
||||
.warning-box .close { width: 30px; height: 30px; top: 5px; right: -5px; background-color: #FFF; float: right; cursor: pointer; background: url("/images/flat_icons.png") repeat scroll -258px -174px; }
|
||||
.warning-box .close:hover { background-color: #DC5D5F; }
|
||||
.warning-box.inform .close:hover { background-color: #019174; }
|
||||
|
||||
|
||||
|
||||
.fotorama--fullscreen .fotorama__fullscreen-icon { background-position: -64px 0 !important; }
|
||||
|
||||
|
||||
/*
|
||||
transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
-webkit-transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
|
||||
box-shadow: 0 6px 15px rgba( 0, 0, 0, 0.23), 0 10px 18px rgba( 0, 0, 0, 0.16);
|
||||
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.23), 0 3px 10px rgba(0, 0, 0, 0.16);
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.64);
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
Для Дмитрия (удалить после прочтения):
|
||||
|
||||
Аплоад прячет инпут, делая его прозрачным, и помещая поверх кнопку html (сделано для кроссбраузерности)
|
||||
При стилизации кнопки для аплоада, важно задать такие же размеры для инпута с типом файла,
|
||||
иначе он может быть больше или меньше стилизованной кнопки, что приведёт к вызову аплоад диалогового окна
|
||||
при клике на неправильную область
|
||||
|
||||
|
||||
вот файл инпут ----> .fileinput-button input
|
||||
*/
|
||||
.fileinput-button input {
|
||||
font-size: 14px !important;
|
||||
width: 90px;
|
||||
}
|
44
web/css/file_manager_editor.css
Normal file
|
@ -0,0 +1,44 @@
|
|||
body, form { padding: 0; margin: 0; background: #333; }
|
||||
|
||||
|
||||
input.save {
|
||||
background-color: rgba(247, 165, 48, 0.8);
|
||||
border: 1px solid #f79b44;
|
||||
border-radius: 3px;
|
||||
/* bottom: 17px;*/
|
||||
top: 9px;
|
||||
color: #fafafa;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
height: 28px;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
right: 47px;
|
||||
width: 130px;
|
||||
z-index: 1000;
|
||||
transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1) 0s;
|
||||
}
|
||||
|
||||
input.save:hover { border: 1px solid #6DB8D3; background-color: #6DB8D3; color: #FFF; opacity: 1; box-shadow: 0 6px 10px rgba(0,0,0,0.23), 0 10px 30px rgba(0,0,0,0.19); }
|
||||
input.save:active { border: 1px solid #FFCC00; background-color: #FFCC00; color: #FFF; }
|
||||
|
||||
|
||||
.ace_gutter,
|
||||
.ace_scroller { padding-top: 10px; }
|
||||
.ace-twilight .ace_gutter-active-line { margin-top: 10px; }
|
||||
|
||||
.ace_gutter-cell { color: #777; }
|
||||
/*
|
||||
.ace_gutter-cell { color: #777; padding: 9px 0px 0px 4px; }
|
||||
.ace_line { padding: 9px 0px 0px 4px; }
|
||||
|
||||
.ace_editor,
|
||||
.ace-twilight .ace_cursor,
|
||||
.ace_text-input { font-size: 17px; }
|
||||
*/
|
||||
|
||||
.ace_editor { font-size: 19px !important; }
|
|
@ -1,20 +0,0 @@
|
|||
html, body, div, span, applet, object, iframe {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
.vst-advanced {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#vstobjects{
|
||||
padding-top: 182px;
|
||||
min-height: 370px;
|
||||
height: auto !important;
|
||||
height: 370px;
|
||||
width: 1000px;
|
||||
}
|
|
@ -56,9 +56,9 @@
|
|||
.ui-widget { font-family: Arial, Helvetica, sans-serif; font-size: 12pt; }
|
||||
.ui-widget .ui-widget { font-size: 10pt; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; }
|
||||
.ui-widget-content { border: 1px solid #aaaaaa; color: #222222; }
|
||||
.ui-widget-content { border: 1px solid #aaaaaa; color: #ccc; }
|
||||
.ui-widget-content a { color: #222222; }
|
||||
.ui-widget-header { background: #777; color: #444; font-size: 10pt; font-weight: bold;}
|
||||
.ui-widget-header { color: #444; font-size: 10pt; font-weight: bold;}
|
||||
.ui-widget-header a { color: #222222; }
|
||||
|
||||
/* Interaction Cues
|
||||
|
@ -375,10 +375,11 @@
|
|||
*
|
||||
* http://docs.jquery.com/UI/Button#theming
|
||||
*/
|
||||
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .10pt; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
||||
/*
|
||||
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .10pt; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; }
|
||||
.ui-button { filter:chroma(color=#000000); cursor: pointer; color: #fff; background-color: #f79b44; border: 1px solid #f79b44; border-radius: 3px 3px 3px 3px; font-weight: bold; font-size: 14px; padding: 2px 16px; width: 108px; height: 34px; }
|
||||
.ui-button:hover { border: 1px solid #9e9e9e; background-color: #9e9e9e; color: #fff;}
|
||||
.ui-button:active { background-color: #ccc; color: #fff; border: 1px solid #ccc; }
|
||||
.ui-button:active { background-color: #ccc; color: #fff; border: 1px solid #ccc; }*/
|
||||
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
||||
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
||||
.ui-button-icons-only { width: 3.4em; }
|
||||
|
@ -416,14 +417,14 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
|
|||
*
|
||||
* http://docs.jquery.com/UI/Dialog#theming
|
||||
*/
|
||||
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; background: #fff; }
|
||||
.ui-dialog .ui-dialog-titlebar { padding: .4em 10pt; position: relative; }
|
||||
.ui-dialog .ui-dialog-title { float: left; margin: .10pt 16px .10pt 0; font-family: Arial; color: #fff;}
|
||||
.ui-dialog { background: none repeat scroll 0 0 #333; border: 1px solid #333; border-radius: 3px; box-shadow: 0 2px 11px 0 rgba(0, 0, 0, 0.5); font-family: arial; overflow: hidden; padding: 27px 0 5px; position: absolute; width: 480px; }
|
||||
.ui-dialog .ui-dialog-titlebar { padding: 2px 26px 0; position: relative; }
|
||||
.ui-dialog .ui-dialog-title { float: left; margin: .10pt 16px .10pt 0; font-family: Arial; color: #ebe697; font-size: 11px; letter-spacing: 1px; text-transform: uppercase; }
|
||||
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 10pt; background: none; overflow: auto; zoom: 1; }
|
||||
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 0 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 10pt .5em .4em; }
|
||||
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: 10px 14px 30px; background: none; overflow: auto; zoom: 1; }
|
||||
.ui-dialog .ui-dialog-buttonpane { border-color: #555; border-style: solid none none; text-align: left; margin: .5em 0 0 0; padding: 6px 0 1px 1px; }
|
||||
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { text-align: center; ;margin: 0 0 0 0px; }
|
||||
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
||||
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||
|
|
36
web/css/jquery.fileupload.css
Normal file
|
@ -0,0 +1,36 @@
|
|||
@charset "UTF-8";
|
||||
/*
|
||||
* jQuery File Upload Plugin CSS 1.3.0
|
||||
* https://github.com/blueimp/jQuery-File-Upload
|
||||
*
|
||||
* Copyright 2013, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
.fileinput-button {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.fileinput-button input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
margin: 0;
|
||||
opacity: 0;
|
||||
-ms-filter: 'alpha(opacity=0)';
|
||||
font-size: 200px;
|
||||
direction: ltr;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Fixes for IE < 8 */
|
||||
@media screen\9 {
|
||||
.fileinput-button input {
|
||||
filter: alpha(opacity=0);
|
||||
font-size: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
1327
web/css/main.css
2552
web/css/styles.min.css
vendored
Normal file
160
web/edit/server/index.php
Normal file
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
// Init
|
||||
error_reporting(NULL);
|
||||
ob_start();
|
||||
session_start();
|
||||
$TAB = 'SERVER';
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
|
||||
|
||||
// Check user
|
||||
if ($_SESSION['user'] != 'admin') {
|
||||
header("Location: /list/user");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get server hostname
|
||||
$v_hostname = exec('hostname');
|
||||
|
||||
// List available timezones and get current one
|
||||
$v_timezones = list_timezones();
|
||||
exec (VESTA_CMD."v-get-sys-timezone", $output, $return_var);
|
||||
$v_timezone = $output[0];
|
||||
unset($output);
|
||||
if ($v_timezone == 'Etc/UTC' ) $v_timezone = 'UTC';
|
||||
if ($v_timezone == 'Pacific/Honolulu' ) $v_timezone = 'HAST';
|
||||
if ($v_timezone == 'US/Aleutian' ) $v_timezone = 'HADT';
|
||||
if ($v_timezone == 'Etc/GMT+9' ) $v_timezone = 'AKST';
|
||||
if ($v_timezone == 'America/Anchorage' ) $v_timezone = 'AKDT';
|
||||
if ($v_timezone == 'America/Dawson_Creek' ) $v_timezone = 'PST';
|
||||
if ($v_timezone == 'PST8PDT' ) $v_timezone = 'PDT';
|
||||
if ($v_timezone == 'MST7MDT' ) $v_timezone = 'MDT';
|
||||
if ($v_timezone == 'Canada/Saskatchewan' ) $v_timezone = 'CST';
|
||||
if ($v_timezone == 'CST6CDT' ) $v_timezone = 'CDT';
|
||||
if ($v_timezone == 'EST5EDT' ) $v_timezone = 'EDT';
|
||||
if ($v_timezone == 'America/Puerto_Rico' ) $v_timezone = 'AST';
|
||||
if ($v_timezone == 'America/Halifax' ) $v_timezone = 'ADT';
|
||||
|
||||
// List supported languages
|
||||
exec (VESTA_CMD."v-list-sys-languages json", $output, $return_var);
|
||||
$languages = json_decode(implode('', $output), true);
|
||||
unset($output);
|
||||
|
||||
// List backup settings
|
||||
$v_backup_dir = "/backup";
|
||||
if (!empty($_SESSION['BACKUP'])) $v_backup_dir = $_SESSION['BACKUP'];
|
||||
$v_backup_gzip = '5';
|
||||
if (!empty($_SESSION['BACKUP_GZIP'])) $v_backup_gzip = $_SESSION['BACKUP_GZIP'];
|
||||
$backup_types = split(",",$_SESSION['BACKUP_SYSTEM']);
|
||||
foreach ($backup_types as $backup_type) {
|
||||
if ($backup_type == 'local') {
|
||||
$v_backup = 'yes';
|
||||
} else {
|
||||
exec (VESTA_CMD."v-list-backup-host ".$backup_type. " json", $output, $return_var);
|
||||
$v_remote_backup = json_decode(implode('', $output), true);
|
||||
unset($output);
|
||||
$v_backup_host = $v_remote_backup[$backup_type]['HOST'];
|
||||
$v_backup_type = $v_remote_backup[$backup_type]['TYPE'];
|
||||
$v_backup_username = $v_remote_backup[$backup_type]['USERNAME'];
|
||||
$v_backup_password = "••••••••";
|
||||
$v_backup_port = $v_remote_backup[$backup_type]['PORT'];
|
||||
$v_backup_bpath = $v_remote_backup[$backup_type]['BPATH'];
|
||||
}
|
||||
}
|
||||
|
||||
// Check POST request
|
||||
if (!empty($_POST['save'])) {
|
||||
|
||||
// Change hostname
|
||||
if ((!empty($_POST['v_hostname'])) && ($v_hostname != $_POST['v_hostname'])) {
|
||||
exec (VESTA_CMD."v-change-sys-hostname ".escapeshellarg($_POST['v_hostname']), $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
unset($output);
|
||||
$v_hostname = $_POST['v_hostname'];
|
||||
}
|
||||
|
||||
// Change timezone
|
||||
if (empty($_SESSION['error_msg'])) {
|
||||
if (!empty($_POST['v_timezone'])) {
|
||||
$v_tz = $_POST['v_timezone'];
|
||||
if ($v_tz == 'UTC' ) $v_tz = 'Etc/UTC';
|
||||
if ($v_tz == 'HAST' ) $v_tz = 'Pacific/Honolulu';
|
||||
if ($v_tz == 'HADT' ) $v_tz = 'US/Aleutian';
|
||||
if ($v_tz == 'AKST' ) $v_tz = 'Etc/GMT+9';
|
||||
if ($v_tz == 'AKDT' ) $v_tz = 'America/Anchorage';
|
||||
if ($v_tz == 'PST' ) $v_tz = 'America/Dawson_Creek';
|
||||
if ($v_tz == 'PDT' ) $v_tz = 'PST8PDT';
|
||||
if ($v_tz == 'MDT' ) $v_tz = 'MST7MDT';
|
||||
if ($v_tz == 'CST' ) $v_tz = 'Canada/Saskatchewan';
|
||||
if ($v_tz == 'CDT' ) $v_tz = 'CST6CDT';
|
||||
if ($v_tz == 'EDT' ) $v_tz = 'EST5EDT';
|
||||
if ($v_tz == 'AST' ) $v_tz = 'America/Puerto_Rico';
|
||||
if ($v_tz == 'ADT' ) $v_tz = 'America/Halifax';
|
||||
|
||||
if ($v_timezone != $v_tz) {
|
||||
exec (VESTA_CMD."v-change-sys-timezone ".escapeshellarg($v_tz), $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
$v_timezone = $v_tz;
|
||||
unset($output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Change default language
|
||||
if (empty($_SESSION['error_msg'])) {
|
||||
if ((!empty($_POST['v_language'])) && ($_SESSION['LANGUAGE'] != $_POST['v_language'])) {
|
||||
exec (VESTA_CMD."v-change-sys-language ".escapeshellarg($_POST['v_language']), $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
unset($output);
|
||||
if (empty($_SESSION['error_msg'])) $_SESSION['LANGUAGE'] = $_POST['v_language'];
|
||||
}
|
||||
}
|
||||
|
||||
// Set disk_quota support
|
||||
if (empty($_SESSION['error_msg'])) {
|
||||
if ((!empty($_POST['v_quota'])) && ($_SESSION['DISK_QUOTA'] != $_POST['v_quota'])) {
|
||||
if($_POST['v_quota'] == 'yes') {
|
||||
exec (VESTA_CMD."v-add-sys-quota", $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
unset($output);
|
||||
if (empty($_SESSION['error_msg'])) $_SESSION['DISK_QUOTA'] = 'yes';
|
||||
} else {
|
||||
exec (VESTA_CMD."v-delete-sys-quota", $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
unset($output);
|
||||
if (empty($_SESSION['error_msg'])) $_SESSION['DISK_QUOTA'] = 'no';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Disable local backup
|
||||
if (empty($_SESSION['error_msg'])) {
|
||||
if (($_POST['v_backup'] == 'no') && ($v_backup == 'yes' )) {
|
||||
exec (VESTA_CMD."v-delete-backup-quota", $output, $return_var);
|
||||
check_return_code($return_var,$output);
|
||||
unset($output);
|
||||
}
|
||||
}
|
||||
|
||||
// Flush field values on success
|
||||
if (empty($_SESSION['error_msg'])) {
|
||||
$_SESSION['ok_msg'] = __('Changes has been saved.');
|
||||
}
|
||||
}
|
||||
|
||||
// Header
|
||||
include($_SERVER['DOCUMENT_ROOT'].'/templates/header.html');
|
||||
|
||||
// Panel
|
||||
top_panel($user,$TAB);
|
||||
|
||||
// Display body
|
||||
include($_SERVER['DOCUMENT_ROOT'].'/templates/admin/edit_server.html');
|
||||
|
||||
// Flush session messages
|
||||
unset($_SESSION['error_msg']);
|
||||
unset($_SESSION['ok_msg']);
|
||||
|
||||
// Footer
|
||||
include($_SERVER['DOCUMENT_ROOT'].'/templates/footer.html');
|
1343
web/file_manager/UploadHandler.php
Normal file
359
web/file_manager/files.php
Normal file
|
@ -0,0 +1,359 @@
|
|||
<?php
|
||||
|
||||
//define(MAX_FILES_TO_SORT, 5);
|
||||
//define(LISTING_TIMEOUT, 0.000001);
|
||||
define(LISTING_TIMEOUT, 5);
|
||||
|
||||
|
||||
|
||||
|
||||
//echo 'files: ';
|
||||
//$files = scandir(__DIR__);
|
||||
|
||||
|
||||
//echo '<pre>';
|
||||
//print_r($files);
|
||||
|
||||
|
||||
//$_REQUEST['sort_field'] = 'size';
|
||||
$_REQUEST['sort_field'] = 'name';
|
||||
//$_REQUEST['sort_field'] = 'atime';
|
||||
//$_REQUEST['sort_field'] = 'mtime';
|
||||
$_REQUEST['sort_desc'] = 1;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
+- copy file / dir [ recursive ]
|
||||
+- rename(move) file / dir
|
||||
+- delete file / dir [ recursive ]
|
||||
+- chmod file / dir
|
||||
+- chown file / dir
|
||||
+- create file
|
||||
+- create dir
|
||||
*/
|
||||
|
||||
switch($_REQUEST['action']){
|
||||
case 'copy': fm_copy($_REQUEST['source'], $_REQUEST['dest']); break;
|
||||
case 'rename': fm_rename($_REQUEST['source'], $_REQUEST['dest']); break;
|
||||
case 'delete': fm_delete($_REQUEST['source']); break;
|
||||
case 'chmod': fm_chmod($_REQUEST['source'], $_REQUEST['mode']); break;
|
||||
case 'chown': fm_chown($_REQUEST['source'], $_REQUEST['uid'], $_REQUEST['gid']); break;
|
||||
case 'create_file': fm_create_file($_REQUEST['source'], $_REQUEST['mode'] || FALSE); break;
|
||||
case 'create_dir': fm_create_dir($_REQUEST['source'], $_REQUEST['mode'] || FALSE); break;
|
||||
|
||||
default:
|
||||
$pwd = $_REQUEST['path'] ? $_REQUEST['path'] : __DIR__;
|
||||
$listing = dir_list($pwd, $_REQUEST['sort_field']);
|
||||
$writable = is_writable($pwd);
|
||||
|
||||
$pwd = array_merge(array('/'), explode('/', trim($pwd, '/')));
|
||||
|
||||
include('templates/filemanager.php');
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//echo $_GET['sort_field'];
|
||||
|
||||
// if(in_array($_GET['sort_field'], $available_sort_fields)){
|
||||
// echo '1';
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
upload_file
|
||||
|
||||
+ list_dir
|
||||
+- copy file / dir [ recursive ]
|
||||
+- rename(move) file / dir
|
||||
+- delete file / dir [ recursive ]
|
||||
+- chmod file / dir
|
||||
+- chown file / dir
|
||||
+- create file
|
||||
+- create dir
|
||||
|
||||
view file / image
|
||||
download file / image
|
||||
*/
|
||||
|
||||
|
||||
|
||||
function fm_create_file($filename){
|
||||
if(is_file($filename))
|
||||
return array('error' => 'file exists', 'code' => 1);
|
||||
|
||||
return !!fopen($filename, 'w');
|
||||
}
|
||||
|
||||
|
||||
function fm_create_dir($dirname){
|
||||
if(is_dir($filename))
|
||||
return array('error' => 'directory exists', 'code' => 1);
|
||||
|
||||
// TODO set parent directory mode
|
||||
return mkdir($dirname);
|
||||
}
|
||||
|
||||
|
||||
function fm_chown($filename, $recursive = 0, $uid = FALSE, $gid = FALSE){
|
||||
if(is_dir($filename) && $recursive){
|
||||
$dir_handle = opendir($dir);
|
||||
while ($item = readdir($dir_handle)){
|
||||
if (!in_array($item, array('.','..'))){
|
||||
$new_item = $filename.'/'.$item;
|
||||
|
||||
if($uid !== FALSE) chown($new_item, (int)$uid);
|
||||
if($gid !== FALSE) chgrp($new_item, (int)$gid);
|
||||
|
||||
if(is_dir($new_item)){
|
||||
fm_chown($new_item, $recursive, $uid, $gid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if($uid !== FALSE) chown($filename, (int)$uid);
|
||||
if($gid !== FALSE) chgrp($filename, (int)$gid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function fm_chmod($filename, $recursive = 0, $mode){
|
||||
if(is_dir($filename) && $recursive){
|
||||
$dir_handle = opendir($dir);
|
||||
while ($item = readdir($dir_handle)){
|
||||
if (!in_array($item, array('.','..'))){
|
||||
$new_item = $filename.'/'.$item;
|
||||
chmod($new_item, octdec($mode));
|
||||
|
||||
if(is_dir($new_item)){
|
||||
fm_chmod($new_item, $recursive, $mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
chmod($filename, octdec($mode));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function fm_delete($filename){
|
||||
if(is_dir($filename)){
|
||||
foreach (
|
||||
$iterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($filename, RecursiveDirectoryIterator::SKIP_DOTS),
|
||||
RecursiveIteratorIterator::SELF_FIRST) as $item
|
||||
) {
|
||||
if ($item->isDir()) {
|
||||
rmdir($item);
|
||||
// mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(), decoct(fileperms($item->getPerms())));
|
||||
} else {
|
||||
unlink($item);
|
||||
// copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
||||
}
|
||||
}
|
||||
}else{
|
||||
return unlink($filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function fm_rename($source, $dest){
|
||||
return rename($source, $dest);
|
||||
}
|
||||
|
||||
|
||||
function fm_copy($source, $dest){
|
||||
if(is_dir($source)){
|
||||
foreach (
|
||||
$iterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
|
||||
RecursiveIteratorIterator::SELF_FIRST) as $item
|
||||
) {
|
||||
if ($item->isDir()) {
|
||||
// TODO set dir perms
|
||||
mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(), decoct(fileperms($item->getPerms())));
|
||||
} else {
|
||||
copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
return copy($source, $dest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function list_dir(){
|
||||
$dir_iterator = new RecursiveDirectoryIterator("/path");
|
||||
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
|
||||
// could use CHILD_FIRST if you so wish
|
||||
|
||||
foreach ($iterator as $file) {
|
||||
echo $file, "\n";
|
||||
}
|
||||
|
||||
$size = 0;
|
||||
foreach ($iterator as $file) {
|
||||
if ($file->isFile()) {
|
||||
echo substr($file->getPathname(), 27) . ": " . $file->getSize() . " B; modified " . date("Y-m-d", $file->getMTime()) . "\n";
|
||||
$size += $file->getSize();
|
||||
}
|
||||
}
|
||||
|
||||
echo "\nTotal file size: ", $size, " bytes\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// fast removing directory
|
||||
function rmrf($dir) {
|
||||
|
||||
foreach (glob($dir) as $file) {
|
||||
if (is_dir($file)) {
|
||||
rmrf("$file/*");
|
||||
rmdir($file);
|
||||
} else {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function dir_list($dir, $sort = 0)
|
||||
{
|
||||
$sort_order_for_filename = SORT_ASC;
|
||||
//$available_sort_fields = array('size, type', 'mtime', 'atime', 'owner', 'group');
|
||||
$available_sort_fields = array('name', 'size', 'type', 'mtime', 'atime', 'owner', 'group');
|
||||
$sort_order = SORT_ASC;
|
||||
|
||||
if ($dir[strlen($dir)-1] != '/') $dir .= '/';
|
||||
if (!is_dir($dir)) return array();
|
||||
|
||||
$start = microtime(TRUE);
|
||||
|
||||
$listing = array('dirs' => array(), 'files' => array(), 'dir_names' => array(), 'file_names' => array() ,'count' => 0, 'timeout_exeeded' => 0, 'time' => 0);
|
||||
$dir_handle = opendir($dir);
|
||||
$dir_objects = array();
|
||||
while ($object = readdir($dir_handle)){
|
||||
if (!in_array($object, array('.','..'))){
|
||||
$filename = $dir . $object;
|
||||
$time = microtime(true) - $start;
|
||||
if($time <= LISTING_TIMEOUT){
|
||||
$stats = stat($filename);
|
||||
$mode = explain_mode($stats['mode']);
|
||||
$perms = decoct(fileperms($filename));
|
||||
$item = array(
|
||||
'name' => $object,
|
||||
'size' => $stats['size'],
|
||||
'mode' => array('owner' => $mode['owner'], 'group' => $mode['owner'], 'other' => $mode['owner']),
|
||||
'perms' => decoct($stats['mode']),
|
||||
'type' => $mode['type'],
|
||||
'mtime' => $stats['mtime'],
|
||||
'atime' => $stats['atime'],
|
||||
'mdate_human' => date("Y F d", $stats['mtime']),
|
||||
'mtime_human' => date("H:i:s", $stats['mtime']),
|
||||
'adate_human' => date("Y F d", $stats['atime']),
|
||||
'atime_human' => date("H:i:s", $stats['atime']),
|
||||
'nlink' => $stats['nlink'],
|
||||
'owner' => posix_getpwuid($stats['uid'])['name'],
|
||||
'group' => posix_getgrgid($stats['gid'])['name']
|
||||
);
|
||||
}else{
|
||||
$listing['timeout_exeeded'] = TRUE;
|
||||
if(is_dir($filename)){ $type = 'd';
|
||||
}else{ $type = '-'; }
|
||||
|
||||
$item = array(
|
||||
'name' => $object,
|
||||
'size' => FALSE,
|
||||
'mode' => array('owner' => FALSE, 'group' => FALSE, 'other' => FALSE),
|
||||
'type' => $type,
|
||||
'mtime' => FALSE,
|
||||
'atime' => FALSE,
|
||||
'mdate_human' => FALSE,
|
||||
'mtime_human' => FALSE,
|
||||
'adate_human' => FALSE,
|
||||
'atime_human' => FALSE,
|
||||
'nlink' => FALSE,
|
||||
'owner' => FALSE,
|
||||
'group' => FALSE
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
$listing['count']++;
|
||||
|
||||
if($item['type'] == 'd'){
|
||||
$listing['dirs'][] = $item;
|
||||
$listing['dir_names'][] = $item['name'];
|
||||
}else{
|
||||
if($sort && !$listing['timeout_exeeded']){
|
||||
$listing[$sort][] = $item[$sort];
|
||||
}
|
||||
$listing['files'][] = $item;
|
||||
$listing['file_names'][] = $item['name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
$listing['time'] = microtime(TRUE) - $start;
|
||||
|
||||
|
||||
if(!$listing['timeout_exeeded']){
|
||||
if(in_array($_REQUEST['sort_field'], $available_sort_fields)){
|
||||
if($_REQUEST['sort_desc']){
|
||||
$sort_order = SORT_DESC;
|
||||
}
|
||||
array_multisort($listing[$_REQUEST['sort_field']], $sort_order, $listing['file_names'], $sort_order_for_filename, $listing['files']);
|
||||
}
|
||||
array_multisort($listing['dir_names'], $sort_order_for_filename, $listing['dirs']);
|
||||
}
|
||||
|
||||
return $listing;
|
||||
}
|
||||
|
||||
|
||||
function explain_mode($mode)
|
||||
{
|
||||
$info = array();
|
||||
|
||||
if (($mode & 0xC000) == 0xC000) { $info['type'] = 's'; }
|
||||
elseif (($mode & 0xA000) == 0xA000) { $info['type'] = 'l'; }
|
||||
elseif (($mode & 0x8000) == 0x8000) { $info['type'] = '-'; }
|
||||
elseif (($mode & 0x6000) == 0x6000) { $info['type'] = 'b'; }
|
||||
elseif (($mode & 0x4000) == 0x4000) { $info['type'] = 'd'; }
|
||||
elseif (($mode & 0x2000) == 0x2000) { $info['type'] = 'c'; }
|
||||
elseif (($mode & 0x1000) == 0x1000) { $info['type'] = 'p'; }
|
||||
else { $info['type'] = 'u'; }
|
||||
|
||||
$info['owner'] = (($mode & 0x0100) ? 'r' : '-');
|
||||
$info['owner'] .= (($mode & 0x0080) ? 'w' : '-');
|
||||
$info['owner'] .= (($mode & 0x0040) ? (($mode & 0x0800) ? 's' : 'x' ) : (($mode & 0x0800) ? 'S' : '-'));
|
||||
|
||||
// group
|
||||
$info['group'] = (($mode & 0x0020) ? 'r' : '-');
|
||||
$info['group'] .= (($mode & 0x0010) ? 'w' : '-');
|
||||
$info['group'] .= (($mode & 0x0008) ? (($mode & 0x0400) ? 's' : 'x' ) : (($mode & 0x0400) ? 'S' : '-'));
|
||||
|
||||
// other
|
||||
$info['other'] = (($mode & 0x0004) ? 'r' : '-');
|
||||
$info['other'] .= (($mode & 0x0002) ? 'w' : '-');
|
||||
$info['other'] .= (($mode & 0x0001) ? (($mode & 0x0200) ? 't' : 'x' ) : (($mode & 0x0200) ? 'T' : '-'));
|
||||
|
||||
return $info;
|
||||
}
|
||||
|
||||
?>
|
70
web/file_manager/fm_api.php
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
// Init
|
||||
//error_reporting(NULL);
|
||||
|
||||
|
||||
session_start();
|
||||
|
||||
include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
|
||||
include($_SERVER['DOCUMENT_ROOT']."/file_manager/fm_core.php");
|
||||
|
||||
|
||||
// todo: set in session?
|
||||
if (empty($panel)) {
|
||||
$command = VESTA_CMD."v-list-user '".$user."' 'json'";
|
||||
exec ($command, $output, $return_var);
|
||||
if ( $return_var > 0 ) {
|
||||
header("Location: /error/");
|
||||
exit;
|
||||
}
|
||||
$panel = json_decode(implode('', $output), true);
|
||||
}
|
||||
|
||||
$fm = new FileManager($user);
|
||||
$fm->setRootDir($panel[$user]['HOME']);
|
||||
|
||||
$_REQUEST['action'] = empty($_REQUEST['action']) ? '' : $_REQUEST['action'];
|
||||
|
||||
switch ($_REQUEST['action']) {
|
||||
case 'rename_file':
|
||||
$dir = $_REQUEST['dir'];
|
||||
$item = $_REQUEST['item'];
|
||||
$target_name = $_REQUEST['target_name'];
|
||||
|
||||
print json_encode($fm->renameItem($dir, $item, $target_name));
|
||||
break;
|
||||
case 'delete_files':
|
||||
$dir = $_REQUEST['dir'];
|
||||
$item = $_REQUEST['item'];
|
||||
|
||||
print json_encode($fm->deleteItems($dir, $item));
|
||||
break;
|
||||
case 'create_file':
|
||||
$dir = $_REQUEST['dir'];
|
||||
$filename = $_REQUEST['filename'];
|
||||
print json_encode($fm->createFile($dir, $filename));
|
||||
break;
|
||||
case 'create_dir':
|
||||
$dir = $_REQUEST['dir'];
|
||||
$dirname = $_REQUEST['dirname'];
|
||||
print json_encode($fm->createDir($dir, $dirname));
|
||||
break;
|
||||
case 'cd':
|
||||
$dir = $_REQUEST['dir'];
|
||||
print json_encode($fm->ls($dir));
|
||||
break;
|
||||
case 'open_file':
|
||||
$dir = $_REQUEST['dir'];
|
||||
print json_encode($fm->open_file($dir));
|
||||
break;
|
||||
case 'copy_files':
|
||||
$dir = $_REQUEST['dir'];
|
||||
$target_dir = $_REQUEST['dir_target'];
|
||||
$filename = $_REQUEST['filename'];
|
||||
print json_encode($fm->copyFile($dir, $target_dir, $filename));
|
||||
break;
|
||||
default:
|
||||
//print json_encode($fm->init());
|
||||
break;
|
||||
}
|
201
web/file_manager/fm_core.php
Normal file
|
@ -0,0 +1,201 @@
|
|||
<?php
|
||||
|
||||
class FileManager {
|
||||
|
||||
protected $delimeter = '|';
|
||||
protected $info_positions = array(
|
||||
'TYPE' => 0,
|
||||
'PERMISSIONS' => 1,
|
||||
'DATE' => 2,
|
||||
'TIME' => 3,
|
||||
'OWNER' => 4,
|
||||
'GROUP' => 5,
|
||||
'SIZE' => 6,
|
||||
'NAME' => 7
|
||||
);
|
||||
|
||||
protected $user = null;
|
||||
public $ROOT_DIR = null;
|
||||
|
||||
public function setRootDir($root = null) {
|
||||
if (null != $root) {
|
||||
$root = realpath($root);
|
||||
}
|
||||
$this->ROOT_DIR = $root;
|
||||
}
|
||||
|
||||
public function __construct($user) {
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/*public function init() {
|
||||
$path = !empty($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
|
||||
$start_url = !empty($path) ? $this->ROOT_DIR . '/' . $path : $this->ROOT_DIR;
|
||||
$listing = $this->getDirectoryListing($path);
|
||||
|
||||
return $data = array(
|
||||
'result' => true,
|
||||
'ROOT_DIR' => $this->ROOT_DIR,
|
||||
'TAB_A_PATH' => $start_url,
|
||||
'TAB_B_PATH' => $this->ROOT_DIR, // second tab always loads home dir
|
||||
'listing' => $listing
|
||||
);
|
||||
}*/
|
||||
|
||||
public function formatFullPath($path_part = '') {
|
||||
if (substr($path_part, 0, strlen($this->ROOT_DIR)) === $this->ROOT_DIR) {
|
||||
$path = $path_part;
|
||||
}
|
||||
else {
|
||||
$path = $this->ROOT_DIR . '/' . $path_part;
|
||||
}
|
||||
//var_dump($path);die();
|
||||
return escapeshellarg($path);
|
||||
}
|
||||
|
||||
function deleteItems($dir, $item) {
|
||||
if (is_readable($item)) {
|
||||
unlink($item);
|
||||
}
|
||||
if (is_readable($item)) {
|
||||
return array(
|
||||
'result' => false,
|
||||
'message' => 'item was not deleted'
|
||||
);
|
||||
}
|
||||
return array(
|
||||
'result' => true
|
||||
);
|
||||
}
|
||||
|
||||
function copyFile($dir, $target_dir, $filename) {
|
||||
// todo: checks
|
||||
// todo: vesta method "create file"
|
||||
if (empty($dir)) {
|
||||
$dir = $this->ROOT_DIR;
|
||||
}
|
||||
|
||||
if (empty($target_dir)) {
|
||||
$target_dir = $this->ROOT_DIR;
|
||||
}
|
||||
copy($dir . '/' . $filename, $target_dir.'/'.$filename);
|
||||
|
||||
if (!is_readable($target_dir . '/' .$filename)) {
|
||||
return array(
|
||||
'result' => false,
|
||||
'message' => 'item was not created'
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'result' => true,
|
||||
'bla' => $target_dir.'/'.$filename,
|
||||
'bla2' => $dir . '/' . $filename
|
||||
);
|
||||
}
|
||||
|
||||
function createFile($dir, $filename) {
|
||||
// todo: checks
|
||||
// todo: vesta method "create file"
|
||||
if (empty($dir)) {
|
||||
$dir = $this->ROOT_DIR;
|
||||
}
|
||||
file_put_contents($dir . '/' . $filename, '');
|
||||
|
||||
if (!is_readable($dir . '/' .$filename)) {
|
||||
return array(
|
||||
'result' => false,
|
||||
'message' => 'item was not created'
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'result' => true
|
||||
);
|
||||
}
|
||||
|
||||
function renameItem($dir, $item, $target_name) {
|
||||
if (empty($dir)) {
|
||||
$dir = $this->ROOT_DIR;
|
||||
}
|
||||
if (is_readable($dir . '/' . $item)) {
|
||||
rename($dir . '/' . $item, $dir . '/' . $target_name);
|
||||
}
|
||||
if (!is_readable($dir . '/' .$target_name)) {
|
||||
return array(
|
||||
'result' => false,
|
||||
'message' => 'item was not renamed'
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'result' => true
|
||||
);
|
||||
}
|
||||
|
||||
function createDir($dir, $dirname) {
|
||||
// todo: checks
|
||||
// todo: vesta method "create file"
|
||||
if (empty($dir)) {
|
||||
$dir = $this->ROOT_DIR;
|
||||
}
|
||||
|
||||
mkdir($dir . '/' . $dirname);
|
||||
|
||||
if (!is_readable($dir . '/' .$dirname)) {
|
||||
return array(
|
||||
'result' => false,
|
||||
'message' => 'item was not created'
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'result' => true
|
||||
);
|
||||
}
|
||||
|
||||
function getDirectoryListing($dir = '') {
|
||||
$dir = $this->formatFullPath($dir);
|
||||
exec (VESTA_CMD . "v-list-fs-directory {$this->user} {$dir}", $output, $return_var);
|
||||
|
||||
return $this->parseListing($output);
|
||||
}
|
||||
|
||||
public function ls($dir = '') {
|
||||
$listing = $this->getDirectoryListing($dir);
|
||||
|
||||
return $data = array(
|
||||
'result' => true,
|
||||
'listing' => $listing
|
||||
);
|
||||
}
|
||||
|
||||
public function open_file($dir = '') {
|
||||
$listing = $this->getDirectoryListing($dir);
|
||||
|
||||
return $data = array(
|
||||
'result' => true,
|
||||
'listing' => $listing
|
||||
);
|
||||
}
|
||||
|
||||
public function parseListing($raw) {
|
||||
$data = array();
|
||||
foreach ($raw as $o) {
|
||||
$info = explode($this->delimeter, $o);
|
||||
$data[] = array(
|
||||
'type' => $info[$this->info_positions['TYPE']],
|
||||
'permissions' => $info[$this->info_positions['PERMISSIONS']],
|
||||
'date' => $info[$this->info_positions['DATE']],
|
||||
'time' => $info[$this->info_positions['TIME']],
|
||||
'owner' => $info[$this->info_positions['OWNER']],
|
||||
'group' => $info[$this->info_positions['GROUP']],
|
||||
'size' => $info[$this->info_positions['SIZE']],
|
||||
'name' => $info[$this->info_positions['NAME']]
|
||||
);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
15
web/file_manager/index.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
/*
|
||||
* jQuery File Upload Plugin PHP Example 5.14
|
||||
* https://github.com/blueimp/jQuery-File-Upload
|
||||
*
|
||||
* Copyright 2010, Sebastian Tschan
|
||||
* https://blueimp.net
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
require('UploadHandler.php');
|
||||
$upload_handler = new UploadHandler();
|
25
web/file_manager/upload_file.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
// Define a destination
|
||||
$targetFolder = '/home/admin/'; // Relative to the root
|
||||
|
||||
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
|
||||
|
||||
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
|
||||
$tempFile = $_FILES['Filedata']['tmp_name'];
|
||||
$targetPath = $targetFolder;
|
||||
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
|
||||
|
||||
// Validate the file type
|
||||
//$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
|
||||
//$fileParts = pathinfo($_FILES['Filedata']['name']);
|
||||
|
||||
//if (in_array($fileParts['extension'],$fileTypes)) {
|
||||
move_uploaded_file($tempFile,$targetFile);
|
||||
echo '1';
|
||||
//} else {
|
||||
// echo 'Invalid file type.';
|
||||
// }
|
||||
}
|
||||
|
||||
?>
|
Before Width: | Height: | Size: 175 B |
BIN
web/images/b.png
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.3 KiB |
BIN
web/images/background-dots.png
Normal file
After Width: | Height: | Size: 173 B |
Before Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 229 B |
Before Width: | Height: | Size: 194 B |
BIN
web/images/document.png
Normal file
After Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 222 B |
BIN
web/images/edit_bg.png
Normal file
After Width: | Height: | Size: 145 B |
BIN
web/images/filemanager.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/filemanager_favicon_3.png
Normal file
After Width: | Height: | Size: 223 B |
BIN
web/images/flat_icons.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 183 B |
Before Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 193 B |
Before Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 2.7 KiB |
BIN
web/images/progress.gif
Normal file
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 215 B |
Before Width: | Height: | Size: 208 B |
BIN
web/images/sprite.png
Normal file
After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 161 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 105 B |
Before Width: | Height: | Size: 111 B |
Before Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 243 B |
BIN
web/images/vesta_logo.png
Normal file
After Width: | Height: | Size: 5 KiB |
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
session_start();
|
||||
if (isset($_SESSION['user'])) {
|
||||
header("Location: /list/user/");
|
||||
header("Location: /list/user");
|
||||
} else {
|
||||
header("Location: /login/");
|
||||
}
|
||||
|
|
|
@ -953,3 +953,49 @@ String.prototype.trim = function()
|
|||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
hover_menu = function() {
|
||||
var sep_1 = $('div.l-content > div.l-separator:nth-of-type(2)');
|
||||
var sep_2 = $('div.l-content > div.l-separator:nth-of-type(4)');
|
||||
var nav_main = $('.l-stat');
|
||||
var nav_a = $('.l-stat .l-stat__col a');
|
||||
var nav_context = $('.l-sort');
|
||||
|
||||
var st = $(window).scrollTop();
|
||||
|
||||
if (st <= 112) {
|
||||
sep_1.css({'margin-top': 214 - st + 'px'});
|
||||
sep_2.css({'margin-top': 259 - st + 'px'});
|
||||
nav_a.css({'height': 111 - st + 'px'});
|
||||
nav_a.css({'min-height': 111 - st + 'px'});
|
||||
nav_context.css({'margin-top': 215 - st + 'px'});
|
||||
sep_2.css({'box-shadow':'none'});
|
||||
}
|
||||
|
||||
if(st > 112){
|
||||
sep_1.css({'margin-top': '100px'});
|
||||
sep_2.css({'margin-top': '145px'});
|
||||
nav_a.css({'height': '0'});
|
||||
nav_a.css({'min-height': '0'});
|
||||
nav_context.css({'margin-top': '101px'});
|
||||
nav_a.find('ul').css({'visibility': 'hidden'});
|
||||
nav_main.css({'padding-top': '27px'});
|
||||
sep_2.css({'box-shadow':'0 2px 5px 0 rgba(0, 0, 0, 0.6)'});
|
||||
}
|
||||
|
||||
if(st == 0){
|
||||
nav_a.css({'min-height': '111px'});
|
||||
nav_a.css({'height': '111px'});
|
||||
}
|
||||
|
||||
if(st < 109 ){
|
||||
nav_a.find('ul').css({'visibility': 'visible'});
|
||||
nav_main.css({'padding-top': 30 + 'px'});
|
||||
}
|
||||
|
||||
if (st <= 112 && st > 110 ) {
|
||||
nav_main.css({'padding-top': 30 - st + 109 + 'px'});
|
||||
}
|
||||
|
||||
lastScrollTop = st;
|
||||
}
|
||||
|
|
1
web/js/cheef-editor/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.idea
|
22
web/js/cheef-editor/README.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
jQuery-ace
|
||||
==========
|
||||
|
||||
Original repo: https://github.com/cheef/jquery-ace
|
||||
|
||||
jQuery plugin for ACE Code Editor, http://ace.ajax.org. It embeds ACE Code Editor to any choosen ``div`` or ``textarea``.
|
||||
|
||||
## How to install
|
||||
|
||||
See all documentation and examples here http://cheef.github.com/jquery-ace
|
||||
|
||||
## How to contribute
|
||||
|
||||
1. Fork it
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||
4. Push to the branch (`git push origin my-new-feature`)
|
||||
5. Create new Pull Request
|
||||
|
||||
## Author
|
||||
|
||||
Ivan Garmatenko **cheef.che at gmail.com**
|
11
web/js/cheef-editor/ace/ace.js
Normal file
1
web/js/cheef-editor/ace/ext-static_highlight.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text"],function(e,t,n){var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_editor {font-family: 'Monaco', 'Menlo', 'Droid Sans Mono', 'Courier New', monospace;font-size: 12px;}.ace_editor .ace_gutter { width: 25px !important;display: block;float: left;text-align: right; padding: 0 3px 0 0; margin-right: 3px;}.ace_line { clear: both; }*.ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;}";t.render=function(e,t,n,o,u){o=parseInt(o||1,10);var a=new r("");a.setMode(t),a.setUseWorker(!1);var f=new i(document.createElement("div"));f.setSession(a),f.config={characterWidth:10,lineHeight:20},a.setValue(e);var l=[],c=a.getLength();for(var h=0;h<c;h++)l.push("<div class='ace_line'>"),u||l.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'>"+(h+o)+"</span>"),f.$renderLine(l,h,!0,!1),l.push("</div>");var p="<div class=':cssClass'> <div class='ace_editor ace_scroller ace_text-layer'> :code </div> </div>".replace(/:cssClass/,n.cssClass).replace(/:code/,l.join(""));return f.destroy(),{css:s+n.cssText,html:p}}})
|
1
web/js/cheef-editor/ace/ext-textarea.js
Normal file
1
web/js/cheef-editor/ace/keybinding-emacs.js
Normal file
1
web/js/cheef-editor/ace/keybinding-vim.js
Normal file
1
web/js/cheef-editor/ace/mode-abap.js
Normal file
1
web/js/cheef-editor/ace/mode-asciidoc.js
Normal file
1
web/js/cheef-editor/ace/mode-c9search.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./c9search_highlight_rules").C9SearchHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("./folding/c9search").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules(),"i"),this.$outdent=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)}}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text"],regex:"(^\\s+[0-9]+)(:\\s*)(.+)"},{token:["string","text"],regex:"(.+)(:$)"}]}};r.inherits(s,i),t.C9SearchHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^(\S.*\:|Searching for.*)$/,this.foldingStopMarker=/^(\s+|Found.*)$/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getAllLines(n),s=r[n],o=/^(Found.*|Searching for.*)$/,u=/^(\S.*\:|\s*)$/,a=o.test(s)?o:u;if(this.foldingStartMarker.test(s)){for(var f=n+1,l=e.getLength();f<l;f++)if(a.test(r[f]))break;return new i(n,s.length,f,0)}if(this.foldingStopMarker.test(s)){for(var f=n-1;f>=0;f--){s=r[f];if(a.test(s))break}return new i(f,s.length,n,0)}}}.call(o.prototype)})
|
1
web/js/cheef-editor/ace/mode-c_cpp.js
Normal file
1
web/js/cheef-editor/ace/mode-clojure.js
Normal file
1
web/js/cheef-editor/ace/mode-coffee.js
Normal file
1
web/js/cheef-editor/ace/mode-coldfusion.js
Normal file
1
web/js/cheef-editor/ace/mode-csharp.js
Normal file
1
web/js/cheef-editor/ace/mode-css.js
Normal file
1
web/js/cheef-editor/ace/mode-dart.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./dart_highlight_rules").DartHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){var e=new o;this.foldingRules=new u,this.$tokenizer=new s(e.getRules())};r.inherits(a,i),function(){}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="true|false|null",t="this|super",n="try|catch|finally|throw|break|case|continue|default|do|else|for|if|in|return|switch|while|new",r="abstract|class|extends|external|factory|implements|interface|get|native|operator|set|typedef",i="static|final|const",s="void|bool|num|int|double|Dynamic|var|String",o=this.createKeywordMapper({"constant.language.dart":e,"variable.language.dart":t,"keyword.control.dart":n,"keyword.declaration.dart":r,"storage.modifier.dart":i,"storage.type.primitive.dart":s},"identifier"),u={token:"string",regex:".+"};this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:["meta.preprocessor.script.dart"],regex:"^(#!.*)$"},{token:["keyword.other.import.dart","meta.declaration.dart"],regex:"#(?:\\b)(?:library|import|source|resource)(?:\\b)"},{token:["keyword.other.import.dart","text"],regex:"(?:\\b)(prefix)(\\s*:)"},{regex:"\\bas\\b",token:"keyword.cast.dart"},{regex:"\\?|:",token:"keyword.control.ternary.dart"},{regex:"(?:\\b)(is\\!?)(?:\\b)",token:["keyword.operator.dart"]},{regex:"(<<|>>>?|~|\\^|\\||&)",token:["keyword.operator.bitwise.dart"]},{regex:"((?:&|\\^|\\||<<|>>>?)=)",token:["keyword.operator.assignment.bitwise.dart"]},{regex:"(===?|!==?|<=?|>=?)",token:["keyword.operator.comparison.dart"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.dart"]},{regex:"=",token:"keyword.operator.assignment.dart"},{token:"string",regex:"'''",next:"qdoc"},{token:"string",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{regex:"(\\-\\-|\\+\\+)",token:["keyword.operator.increment-decrement.dart"]},{regex:"(\\-|\\+|\\*|\\/|\\~\\/|%)",token:["keyword.operator.arithmetic.dart"]},{regex:"(!|&&|\\|\\|)",token:["keyword.operator.logical.dart"]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"start"},u],qqdoc:[{token:"string",regex:'.*?"""',next:"start"},u],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"start"},u],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"start"},u]}};r.inherits(s,i),t.DartHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i){var s=i.index;return i[1]?this.openingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s+i[0].length,1)}if(t!=="markbeginend")return;var i=r.match(this.foldingStopMarker);if(i){var s=i.index+i[0].length;return i[1]?this.closingBracketBlock(e,i[1],n,s):e.getCommentFoldRange(n,s,-1)}}}.call(o.prototype)})
|
1
web/js/cheef-editor/ace/mode-diff.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/diff_highlight_rules","ace/mode/folding/diff"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./diff_highlight_rules").DiffHighlightRules,u=e("./folding/diff").FoldMode,a=function(){this.$tokenizer=new s((new o).getRules(),"i"),this.foldingRules=new u(["diff","index","\\+{3}","@@|\\*{5}"],"i")};r.inherits(a,i),function(){}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(?:(\\-{3}|\\+{3}|\\*{3})( .+))$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^(.*?)(\\s*)$",token:["invisible","invalid"]}]}};r.inherits(s,i),t.DiffHighlightRules=s}),ace.define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(e,t){this.regExpList=e,this.flag=t,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i={row:n,column:r.length},o=this.regExpList;for(var u=1;u<=o.length;u++){var a=RegExp("^("+o.slice(0,u).join("|")+")",this.flag);if(a.test(r))break}for(var f=e.getLength();++n<f;){r=e.getLine(n);if(a.test(r))break}if(n==i.row+1)return;return s.fromPoints(i,{row:n-1,column:r.length})}}.call(o.prototype)})
|
1
web/js/cheef-editor/ace/mode-dot.js
Normal file
1
web/js/cheef-editor/ace/mode-glsl.js
Normal file
1
web/js/cheef-editor/ace/mode-golang.js
Normal file
1
web/js/cheef-editor/ace/mode-groovy.js
Normal file
1
web/js/cheef-editor/ace/mode-haml.js
Normal file
1
web/js/cheef-editor/ace/mode-haxe.js
Normal file
1
web/js/cheef-editor/ace/mode-html.js
Normal file
1
web/js/cheef-editor/ace/mode-jade.js
Normal file
1
web/js/cheef-editor/ace/mode-java.js
Normal file
1
web/js/cheef-editor/ace/mode-javascript.js
Normal file
1
web/js/cheef-editor/ace/mode-json.js
Normal file
1
web/js/cheef-editor/ace/mode-jsp.js
Normal file
1
web/js/cheef-editor/ace/mode-jsx.js
Normal file
1
web/js/cheef-editor/ace/mode-latex.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./latex_highlight_rules").LatexHighlightRules,u=e("./folding/latex").FoldMode,a=e("../range").Range,f=function(){this.$tokenizer=new s((new o).getRules()),this.foldingRules=new u};r.inherits(f,i),function(){this.toggleCommentLines=function(e,t,n,r){var i=!0,s=/^(\s*)\%/;for(var o=n;o<=r;o++)if(!s.test(t.getLine(o))){i=!1;break}if(i){var u=new a(0,0,0,0);for(var o=n;o<=r;o++){var f=t.getLine(o),l=f.match(s);u.start.row=o,u.end.row=o,u.end.column=l[0].length,t.replace(u,l[1])}}else t.indentRows(n,r,"%")},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)}}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"string",regex:"\\$(?:(?:\\\\.)|(?:[^\\$\\\\]))*?\\$"},{token:"comment",regex:"%.*$"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),ace.define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/^\s*\\(begin)|(section|subsection)\b|{\s*$/,this.foldingStopMarker=/^\s*\\(end)\b|^\s*}/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):i[2]?this.latexSection(e,n,i[0].length-1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.latexBlock=function(e,t,n){var r={"\\begin":1,"\\end":-1},i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!=="keyword")return;var a=u.value,f=r[a],l=function(){var e=i.stepForward(),t=e.type=="lparen"?i.stepForward().value:"";return f===-1&&(i.stepBackward(),t&&i.stepBackward()),t},c=[l()],h=f===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=f===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(u.type!=="keyword")continue;var d=r[u.value];if(!d)continue;var v=l();if(d===f)c.unshift(v);else if(c.shift()!==v||!c.length)break}if(c.length)return;var t=i.getCurrentTokenRow();return f===-1?new s(t,e.getLine(t).length,p,h):new s(p,h,t,i.getCurrentTokenColumn())},this.latexSection=function(e,t,n){var r=["\\subsection","\\section","\\begin","\\end"],i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword")return;var a=r.indexOf(u.value),f=0,l=t;while(u=i.stepForward()){if(u.type!=="keyword")continue;var c=r.indexOf(u.value);if(c>=2){f||(l=i.getCurrentTokenRow()-1),f+=c==2?1:-1;if(f<0)break}else if(c>=a)break}f||(l=i.getCurrentTokenRow()-1);while(l>t&&!/\S/.test(e.getLine(l)))l--;return new s(t,e.getLine(t).length,l,e.getLine(l).length)}}.call(u.prototype)})
|
1
web/js/cheef-editor/ace/mode-less.js
Normal file
1
web/js/cheef-editor/ace/mode-liquid.js
Normal file
1
web/js/cheef-editor/ace/mode-lisp.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/lisp_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./lisp_highlight_rules").LispHighlightRules,u=function(){var e=new o;this.$tokenizer=new s(e.getRules())};r.inherits(u,i),function(){}.call(u.prototype),t.Mode=u}),ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}]}};r.inherits(s,i),t.LispHighlightRules=s})
|
1
web/js/cheef-editor/ace/mode-lua.js
Normal file
1
web/js/cheef-editor/ace/mode-luapage.js
Normal file
1
web/js/cheef-editor/ace/mode-lucene.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/lucene_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./lucene_highlight_rules").LuceneHighlightRules,u=function(){this.$tokenizer=new s((new o).getRules())};r.inherits(u,i),t.Mode=u}),ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"constant.character.negation",regex:"[\\-]"},{token:"constant.character.interro",regex:"[\\?]"},{token:"constant.character.asterisk",regex:"[\\*]"},{token:"constant.character.proximity",regex:"~[0-9]+\\b"},{token:"keyword.operator",regex:"(?:AND|OR|NOT)\\b"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"keyword",regex:"[\\S]+:"},{token:"string",regex:'".*?"'},{token:"text",regex:"\\s+"}]}};r.inherits(o,s),t.LuceneHighlightRules=o})
|
1
web/js/cheef-editor/ace/mode-makefile.js
Normal file
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./makefile_highlight_rules").MakefileHighlightRules,u=e("./folding/coffee").FoldMode,a=function(){var e=new o;this.foldingRules=new u,this.$tokenizer=new s(e.getRules())};r.inherits(a,i),function(){}.call(a.prototype),t.Mode=a}),ace.define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./sh_highlight_rules"),o=function(){var e=this.createKeywordMapper({keyword:s.reservedKeywords,"support.function.builtin":s.languageConstructs,"invalid.deprecated":"debugger"},"string");this.$rules={start:[{token:"string.interpolated.backtick.makefile",regex:"`",next:"shell-start"},{token:"punctuation.definition.comment.makefile",regex:/#(?=.)/,next:"comment"},{token:["keyword.control.makefile"],regex:"^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)"},{token:["entity.name.function.makefile","text"],regex:"^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)"}],comment:[{token:"punctuation.definition.comment.makefile",regex:/.+\\/},{token:"punctuation.definition.comment.makefile",regex:".+",next:"start"}],"shell-start":[{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:"\\w+"},{token:"string.interpolated.backtick.makefile",regex:"`",next:"start"}]}};r.inherits(o,i),t.MakefileHighlightRules=o}),ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z][a-zA-Z0-9_]*",c="(?:(?:\\$"+l+")|(?:"+l+"=))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"variable.language",regex:h},{token:"variable",regex:c},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}]}};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)})
|