main.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <title>Filemanager</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <link rel="shortcut icon" href="/images/filemanager.ico?" type="image/x-icon">
  7. <link rel="icon" href="/images/filemanager.ico?" type="image/x-icon">
  8. <link rel="stylesheet" href="/css/file_manager.css" type="text/css" />
  9. <link rel="stylesheet" type="text/css" href="/css/uploadify.css" />
  10. <link href="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.2/fotorama.css" rel="stylesheet">
  11. <style type="text/css" media="print, screen and (min-width: 481px)"></style>
  12. <!-- link rel="shortcut icon" href="/2008/site/images/favicon.ico" type="image/x-icon" / -->
  13. <link rel="stylesheet" href="/css/jquery.arcticmodal.css">
  14. <link rel="stylesheet" href="/css/jquery.fileupload.css">
  15. </head>
  16. <body>
  17. <div id="main">
  18. <div class="window active">
  19. <a href="/" class="l-logo"></a>
  20. <div class="pwd pwd-tab-A">
  21. <? /* <? foreach($pwd as $dir ){
  22. $path .= '/'.$dir;
  23. echo '<a href="/admin.php?page=tor/index.php&files=1&path='.$path.'">'.$dir.'</a>';
  24. } ?> */ ?>
  25. </div>
  26. <div class="menu menu-left menu-A">
  27. <?php $pre_tab = 'A';include($_SERVER['DOCUMENT_ROOT'].'/templates/file_manager/tab_menu.php'); ?>
  28. </div>
  29. <ul class="listing listing-left">
  30. <?
  31. /*if(count($pwd) > 1){
  32. echo '<li class="back">
  33. <span class="marker"></span>
  34. <span class="filename"><a href="/admin.php?page=tor/index.php&files=1&path='.$path.'/..">..</a></span><span class="mode"><span class="owner"></span><span class="size"></span><span class="date"></span><span class="time"></time>
  35. </li>';
  36. }
  37. foreach($listing['dirs'] as $dir){
  38. echo '<li class="dir">
  39. <span class="marker"></span><span class="filename"><a href="/admin.php?page=tor/index.php&files=1&path='.$path.'/'.$dir['name'].'">'.$dir['name'].'</a></span>
  40. <span class="time">'.$dir['atime_human'].'</span>
  41. <span class="date">'.$dir['adate_human'].'</span>
  42. <span class="size-unit">&nbsp;</span>
  43. <span class="size">&nbsp;</span>
  44. <span class="owner">'.$dir['owner'].'/'.$dir['group'].'</span>
  45. <span class="mode m-775">'.$dir['mode']['owner'].''.$dir['mode']['group'].''.$dir['mode']['other'].'</span>
  46. </li>';
  47. }
  48. foreach($listing['files'] as $item){
  49. echo '<li class="dir">
  50. <span class="marker"></span><span class="filename">'.$item['name'].'</span>
  51. <span class="time">'.$item['atime_human'].'</span>
  52. <span class="date">'.$item['adate_human'].'</span>
  53. <span class="size-unit">&nbsp;</span>
  54. <span class="size">'.$item['size'].'</span>
  55. <span class="owner">'.$item['owner'].'/'.$item['group'].'</span>
  56. <span class="mode m-775">'.$item['mode']['owner'].''.$item['mode']['group'].''.$item['mode']['other'].'</span>
  57. </li>';
  58. }*/ ?>
  59. </ul>
  60. </div>
  61. <div class="window">
  62. <div class="pwd pwd-tab-B">
  63. <? /* <a>var</a><a>www</a><a>html</a><a>sites</a><a>public html</a> */ ?>
  64. </div>
  65. <div class="menu menu-right menu-B">
  66. <?php $pre_tab = 'B';include($_SERVER['DOCUMENT_ROOT'].'/templates/file_manager/tab_menu.php'); ?>
  67. </div>
  68. <ul class="listing listing-right">
  69. </ul>
  70. </div>
  71. </div>
  72. <!-- div class="popups">
  73. <ul class="context-menu">
  74. <li class="download">download</li>
  75. <li class="">rename</li>
  76. <li class="">chmod</li>
  77. <li class="">chown</li>
  78. <li class="">copy</li>
  79. <li class="">cut</li>
  80. <li class="disabled">paste</li>
  81. <li class="">archive</li>
  82. <li class="delete">delete</li>
  83. </ul>
  84. <div class="confirm-box replace">
  85. <div class="message">File <span class="title">"reading.txt"</span> already exists</div>
  86. <div class="action-name"><label><span class="checkbox"></span><span>apply to next <span class="number">27</span> conflicts</span></label></div>
  87. <div class="controls">
  88. <p class="cancel">cancel</p>
  89. <p class="keep-original">keep original</p>
  90. <p class="ok">replace</p>
  91. </div>
  92. </div>
  93. <br><br>
  94. <div class="confirm-box delete">
  95. <div class="message">Are you sure you want to delete file <span class="title">"reading.txt"</span>?</div>
  96. <div class="controls">
  97. <p class="cancel">cancel</p>
  98. <p class="ok">delete</p>
  99. </div>
  100. </div>
  101. <br><br>
  102. <div class="confirm-box rename warning">
  103. <div class="message">Rename file <span class="title">"reading.txt"</span></div>
  104. <div class="warning">File <span class="title">"reading.txt"</span> already exists</div>
  105. <div class="actions">
  106. <input type="text" class="new-title" />
  107. </div>
  108. <div class="controls">
  109. <p class="cancel">cancel</p>
  110. <p class="ok">rename</p>
  111. </div>
  112. <div class="controls replace">
  113. <p class="cancel">cancel</p>
  114. <p class="ok">replace</p>
  115. </div>
  116. </div>
  117. <br><br>
  118. <div class="confirm-box archive warnin">
  119. <div class="message">Create archive</div>
  120. <div class="warning">File <span class="title">"reading.tar.gz"</span> already exists</div>
  121. <div class="actions">
  122. <span class="title">archive name</span><br>
  123. <input type="text" class="new-title" />
  124. <br>
  125. <span class="title">archive type</span><br>
  126. <select>
  127. <option value="tar">tar</option>
  128. <option value="zip">zip</option>
  129. <option value="rar">rar</option>
  130. </select>
  131. <br>
  132. <span class="title">compression level</span><br>
  133. <select>
  134. <option value="0">0</option>
  135. <option value="1">1</option>
  136. <option value="2">2</option>
  137. <option value="3">3</option>
  138. <option value="4">4</option>
  139. <option value="5">5</option>
  140. <option value="6">6</option>
  141. <option value="7">7</option>
  142. <option value="8">8</option>
  143. <option value="9">9</option>
  144. <option value="10">10</option>
  145. </select>
  146. </div>
  147. <div class="controls">
  148. <p class="cancel">cancel</p>
  149. <p class="ok ripple ripple-radial">create</p>
  150. </div>
  151. <div class="controls replace">
  152. <p class="cancel">cancel</p>
  153. <p class="ok">replace</p>
  154. </div>
  155. </div>
  156. <br><br>
  157. <div class="confirm-box owner-mode warnin-g">
  158. <div class="message">Owner - Mode</div>
  159. <div class="warning">You have no rights to change owner, group or mode</div>
  160. <div class="actions">
  161. <div class="owner-group">
  162. <div class="owner col">
  163. <span class="title">owner</span><br>
  164. <select name="owner">
  165. <option value="root">root</option>
  166. <option value="bob">Bob</option>
  167. <option value="ralph">Ralph</option>
  168. </select>
  169. </div>
  170. <div class="group col">
  171. <span class="title">group</span><br>
  172. <select name="group">
  173. <option value="root">root</option>
  174. <option value="www">www</option>
  175. <option value="apache">apache</option>
  176. </select>
  177. </div>
  178. </div>
  179. <div class="mode">
  180. <div class="col owner">
  181. <span class="title">owner</span><br>
  182. <label><span class="title">read</span> <input type="checkbox" name="owner-read" /></label><br />
  183. <label><span class="title">write</span> <input type="checkbox" name="owner-write" /></label><br />
  184. <label><span class="title">execute</span> <input type="checkbox" name="owner-execute" /></label><br />
  185. </div>
  186. <div class="col group">
  187. <span class="title">group</span><br>
  188. <label><span class="title">read</span> <input type="checkbox" name="group-read" /></label><br />
  189. <label><span class="title">write</span> <input type="checkbox" name="group-write" /></label><br />
  190. <label><span class="title">execute</span> <input type="checkbox" name="group-execute" /></label><br />
  191. </div>
  192. <div class="col other">
  193. <span class="title">other</span><br>
  194. <label><span class="title">read</span> <input type="checkbox" name="other-read" /></label><br />
  195. <label><span class="title">write</span> <input type="checkbox" name="other-write" /></label><br />
  196. <label><span class="title">execute</span> <input type="checkbox" name="other-execute" /></label><br />
  197. </div>
  198. </div>
  199. <div class="recursive">
  200. <label><span class="title">recursive</span> <input type="checkbox" name="recursive" /></label>
  201. </div>
  202. </div>
  203. <div class="controls">
  204. <p class="cancel">cancel</p>
  205. <p class="ok rippler rippler-default">set</p>
  206. </div>
  207. </div>
  208. </div--> <!-- popups -->
  209. <div class="warning-box inform hidden">
  210. <div class="close ripple"></div>
  211. <div class="message">Please Read the reading text at the reading write!</div>
  212. <div class="message-small">writing the reading text at the reading write writing the reading text at the reading write!</div>
  213. </div>
  214. <div class="warning-box reload hidden">
  215. <div class="message-small">Hit F5 to reload the page</div>
  216. </div>
  217. <div class="warning-box hidden">
  218. <div class="close ripple"></div>
  219. <div class="message">Please Read the reading text at the reading write!</div>
  220. <div class="message-small">writing the reading text at the reading write writing the reading text at the reading write!</div>
  221. </div>
  222. <ul class="context-menu tab-a sort-order hidden">
  223. <li entity="type"><span class="type active">type</span><span class="up">&nbsp;</span></li>
  224. <li entity="size"><span class="size">size</span><span class="up">&nbsp;</span></li>
  225. <li entity="date"><span class="date">date</span><span class="up">&nbsp;</span></li>
  226. <li entity="name" class="last"><span class="name">name</span><span class="up">&nbsp;</span></li>
  227. </ul>
  228. <ul class="context-menu tab-b sort-order hidden">
  229. <li entity="type"><span class="type active">type</span><span class="up">&nbsp;</span></li>
  230. <li entity="size"><span class="size">size</span><span class="up">&nbsp;</span></li>
  231. <li entity="date"><span class="date">date</span><span class="up">&nbsp;</span></li>
  232. <li entity="name" class="last"><span class="name">name</span><span class="up">&nbsp;</span></li>
  233. </ul>
  234. <div class="fotorama" data-auto="false"></div>
  235. <div class="progress-container hidden">
  236. <div class="progress-elm"><span class="title">Initializing</span><span class="progress" style="backround-position: -96px; backround-position:-10px"></span><span class="close hidden"></span></div>
  237. </div>
  238. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  239. <script src="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.2/fotorama.js"></script>
  240. <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
  241. <script src="/js/jquery.finder.js"></script>
  242. <script type="text/javascript" src="/js/hotkeys.js"></script>
  243. <script type="text/javascript" src="/js/app.js"></script>
  244. <script type="text/javascript"><?php echo include($_SERVER['DOCUMENT_ROOT'].'/js/i18n.js.php'); ?></script>
  245. <script type="text/javascript" src="/js/templates.js"></script>
  246. <script type="text/javascript" src="/js/floating_layer.js"></script>
  247. <script src="/js/ripple.js"></script>
  248. <script src="/js/jquery.iframe-transport.js"></script>
  249. <script src="/js/jquery.fileupload.js"></script>
  250. <script src="/js/jquery.arcticmodal.js"></script>
  251. <?php if (!empty($GLOBAL_JS)): ?>
  252. <?php echo $GLOBAL_JS; ?>
  253. <?php endif; ?>
  254. <script type="text/javascript" src="/js/file_manager.js"></script>
  255. <script type="text/javascript">
  256. $(function () {
  257. 'use strict';
  258. // Change this to the location of your server-side upload handler:
  259. var show_msg = false;
  260. var acc = $('<div>');
  261. $(['A', 'B']).each(function(k, letter) {
  262. var url = '/upload/';
  263. $('#file_upload_' + letter).fileupload({
  264. singleFileUploads: false,
  265. add: function (e, data) {
  266. FM.setTabActive(FM['TAB_'+letter]);
  267. var tab = FM.getTabLetter(FM.CURRENT_TAB);
  268. var file_relocation = FM['TAB_'+tab+'_CURRENT_PATH'];
  269. $('#file_upload_' + letter).fileupload("option", "url", url + '?dir=' + file_relocation);
  270. acc = $('<div>');
  271. show_msg = false;
  272. data.submit();
  273. $('.file-upload-button-' + tab).addClass('progress');
  274. },
  275. url: url,
  276. dataType: 'json',
  277. done: function (e, data) {
  278. var msg = '';
  279. $.each(data.result.files, function (index, file) {
  280. if ('undefined' != typeof file.error) {
  281. msg += '<p class="msg-item">' + file.name + ': ' + file.error + '</p>';
  282. }
  283. });
  284. if (msg != '') {
  285. var tpl = Tpl.get('popup_alert', 'FM');
  286. tpl.set(':TEXT', msg);
  287. FM.popupOpen(tpl.finalize());
  288. }
  289. //console.log(e);
  290. //console.log(data);
  291. },
  292. fail: function(e, data) {
  293. var msg = '';
  294. $.each(data.result.files, function (index, file) {
  295. if ('undefined' != typeof file.error) {
  296. msg += '<p class="msg-item">' + file.name + ': ' + file.error + '</p>';
  297. }
  298. });
  299. if (msg != '') {
  300. var tpl = Tpl.get('popup_alert', 'FM');
  301. tpl.set(':TEXT', msg);
  302. FM.popupOpen(tpl.finalize());
  303. }
  304. //console.log(e);
  305. //console.log(data);
  306. },
  307. always: function(e, data) {
  308. /*if (show_msg) {
  309. clearTimeout(window.ht_fd);
  310. var info = $('.warning-box.inform').clone(true);
  311. $(info).attr('id', 'file-upload-msg');
  312. $(info).find('.message').text('Bla bla bla');
  313. $(info).find('.message-small').html(acc);
  314. $(info).find('.close').bind('click', function() {
  315. $('#file-upload-msg').remove();
  316. });
  317. $('body').append($(info).removeClass('hidden'));
  318. window.ht_fd = setTimeout(function() {
  319. $('#file-upload-msg').fadeOut();
  320. }, 3000);
  321. }*/
  322. var tab = FM.getTabLetter(FM.CURRENT_TAB);
  323. var box = FM['TAB_' + tab];
  324. FM.open(FM['TAB_' + tab + '_CURRENT_PATH'], box);
  325. //$('.file-upload-button-' + tab).removeClass('progress');
  326. $('.file-upload-button-' + tab).addClass('done');
  327. setTimeout(function() {
  328. $('.file-upload-button-' + tab).removeClass('progress');
  329. $('.file-upload-button-' + tab).removeClass('done');
  330. }, 2000);
  331. $('.file-upload-button-' + tab).css('background-position', '-96px 0');
  332. },
  333. progressall: function (e, data) {
  334. var progress = parseInt(data.loaded / data.total * 100, 10);
  335. var tab = FM.getTabLetter(FM.CURRENT_TAB);
  336. $('.file-upload-button-' + tab).css('background-position', '-' + (100 - progress) + 'px 0');
  337. }
  338. })
  339. .prop('disabled', !$.support.fileInput)
  340. .parent().addClass($.support.fileInput ? undefined : 'disabled');
  341. });
  342. $.widget("shift.selectable", $.ui.selectable, {
  343. options: {}, // required
  344. previousIndex: -1, // additional attribute to store previous selection index
  345. currentIndex: -1, // additional attribute to store current selection index
  346. _create: function() { // required
  347. var self = this;
  348. $.ui.selectable.prototype._create.call(this); // default implementation
  349. // here is our addition, we are catching "selecting" event with shift key
  350. $(this.element).on('selectableselecting', function(event, ui){
  351. self.currentIndex = $(ui.selecting.tagName, event.target).index(ui.selecting);
  352. if(event.shiftKey && self.previousIndex > -1) {
  353. $(ui.selecting.tagName, event.target).slice(Math.min(self.previousIndex, self.currentIndex), 1 + Math.max(self.previousIndex, self.currentIndex)).addClass('ui-selected');
  354. self.previousIndex = -1;
  355. } else {
  356. self.previousIndex = self.currentIndex;
  357. }
  358. });
  359. },
  360. destroy: function() { // required, default implementation
  361. $.ui.selectable.prototype.destroy.call(this);
  362. },
  363. _setOption: function() { // required, default implementation
  364. $.ui.selectable.prototype._setOption.apply(this, arguments);
  365. }
  366. });
  367. var checkIfArchive = function(item) {console.log(item);
  368. var item = $(item).hasClass('dir') ? item : $(item).parents('.dir');
  369. var tab = FM.getTabLetter(FM.CURRENT_TAB);
  370. var src = $(item).find('.source').val();
  371. src = $.parseJSON(src);
  372. var tab = FM.getTabLetter(FM.CURRENT_TAB);
  373. if (FM.itemIsArchieve(src)) {
  374. $('.menu-'+tab+' .extract-btn').show();
  375. }
  376. else {
  377. $('.menu-'+tab+' .extract-btn').hide();
  378. }
  379. }
  380. $(".listing-left").selectable({
  381. selected: function (event, ui) {
  382. FM.setTabActive(FM.TAB_A, 'skip_highlights');
  383. $(".listing-left .selected").each(function(i, o) {
  384. if (!$(o).hasClass('ui-selected')) {
  385. $(o).removeClass('selected');
  386. }
  387. });
  388. $(ui.selected).addClass('selected');
  389. checkIfArchive(ui.selected);
  390. $(".listing-left .ui-selected").addClass('selected');
  391. },
  392. unselected: function (event, ui) {
  393. $(".listing-left .selected").each(function(i, o) {
  394. if (!$(o).hasClass('ui-selected')) {
  395. $(o).removeClass('selected');
  396. }
  397. });
  398. FM.setTabActive(FM.TAB_A, 'skip_highlights');
  399. $(ui.unselected).removeClass('selected');
  400. }
  401. });
  402. $(".listing-right").selectable({
  403. selected: function (event, ui) {
  404. $(".listing-left .selected").each(function(i, o) {
  405. if (!$(o).hasClass('ui-selected')) {
  406. $(o).removeClass('selected');
  407. }
  408. });
  409. FM.setTabActive(FM.TAB_B, 'skip_highlights');
  410. $(ui.selected).addClass('selected');
  411. checkIfArchive(ui.selected);
  412. $(".listing-left .ui-selected").addClass('selected');
  413. },
  414. unselected: function (event, ui) {
  415. $(".listing-left .selected").each(function(i, o) {
  416. if (!$(o).hasClass('ui-selected')) {
  417. $(o).removeClass('selected');
  418. }
  419. });
  420. FM.setTabActive(FM.TAB_B, 'skip_highlights');
  421. $(ui.unselected).removeClass('selected');
  422. }
  423. });
  424. });
  425. </script>
  426. </body>
  427. </html>