The New Desing

This commit is contained in:
Serghey Rodin 2015-05-29 02:07:55 +03:00
parent def9cc4ea6
commit 067a2c862a
305 changed files with 22231 additions and 7576 deletions

View file

@ -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
View 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;
}

View 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; }

View file

@ -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;
}

View file

@ -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; }

View 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%;
}
}

File diff suppressed because it is too large Load diff

2552
web/css/styles.min.css vendored Normal file

File diff suppressed because it is too large Load diff

160
web/edit/server/index.php Normal file
View 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');

File diff suppressed because it is too large Load diff

359
web/file_manager/files.php Normal file
View 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;
}
?>

View 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;
}

View 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;
}
}

View 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();

View 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.';
// }
}
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 B

BIN
web/images/document.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

BIN
web/images/edit_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

BIN
web/images/filemanager.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

BIN
web/images/flat_icons.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

BIN
web/images/progress.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

BIN
web/images/sprite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

BIN
web/images/vesta_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -1,7 +1,7 @@
<?php
session_start();
if (isset($_SESSION['user'])) {
header("Location: /list/user/");
header("Location: /list/user");
} else {
header("Location: /login/");
}

View file

@ -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
View file

@ -0,0 +1 @@
.idea

View 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**

File diff suppressed because one or more lines are too long

View 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}}})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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)})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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)})

View 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)})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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)})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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})

View 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)})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more