Changeset 1055988
- Timestamp:
- 12/29/2014 01:37:33 AM (11 years ago)
- Location:
- gmace/trunk
- Files:
-
- 7 edited
-
assets/css/style.css (modified) (3 diffs)
-
assets/js/scripts.js (modified) (6 diffs)
-
gmace.php (modified) (1 diff)
-
includes/ace.php (modified) (5 diffs)
-
includes/content.php (modified) (1 diff)
-
includes/settings.php (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
gmace/trunk/assets/css/style.css
r1054503 r1055988 219 219 font-size: 20px; 220 220 } 221 ul.scandir_ul li>a:hover, ul.scandir_ul li>span:hover { 222 background: rgba(0, 0, 0, 0.05); 223 padding: 5px 30px; 224 margin-left: -11px; 225 border: 1px solid; 226 border-radius: 3px; 227 } 228 ul.scandir_ul li>span:hover { 229 padding: 5px 23px; 230 margin-left: -24px; 231 } 221 232 ul.scandir_ul li.icon{ 222 233 background: no-repeat; … … 307 318 cursor: pointer; 308 319 } 320 .filedit_2 #gm_actions { 321 position: fixed; 322 z-index: 5; 323 left: 0;bottom: 0;right: auto; 324 width: 0;height: 0; 325 padding: 0; 326 } 327 .filedit_2 #gm_actions:hover { 328 width: 230px;height: 300px; 329 padding: 25px; 330 } 331 .filedit_2 #gm_actions .unhide{ 332 position: fixed; 333 bottom: 0;left: 0; 334 background: rgb(6, 129, 129); 335 height: 20px;width: 20px; 336 border-radius: 0 100px 0 0; 337 transition: 0.3s; 338 color: transparent; 339 margin: 0; 340 } 341 .filedit_2 #gm_actions:hover .unhide { 342 height: 0;width: 0; 343 } 309 344 #select_theme{ 310 345 display: inline; … … 332 367 cursor: default; 333 368 } 369 #property_menu { 370 position: fixed; 371 width: 165px; 372 background: rgb(253, 252, 252); 373 border: 1px solid rgb(224, 214, 214); 374 padding: 0 15px; 375 padding-top: 35px; 376 z-index: 100; 377 } 378 #property_menu > span { 379 background: whitesmoke; 380 position: absolute; 381 left: 0;right: 0;top: 0; 382 padding: 10px; 383 font-weight: bold; 384 cursor: default; 385 } 386 #property_menu > p { 387 cursor: pointer; 388 margin: 0; 389 padding: 0.5em; 390 padding-left: 10px; 391 } 392 #property_menu > p[buffered="false"] { 393 background: transparent !important; 394 color: rgb(201, 182, 182); 395 } 396 #property_menu > p.rename, #property_menu > p.property, #property_menu > p.new_file { 397 border-top: 1px solid rgb(200, 200, 200); 398 padding-top: 0.5em; 399 } 400 #property_menu > p:hover { 401 background: whitesmoke; 402 } 403 #property_menu.info_run { 404 top: 0 !important;left: 0 !important;right: 0;bottom: 0; 405 margin: auto; 406 width: 500px; 407 height: 500px; 408 } 409 #property_menu.info_run > p{ 410 font-size: 16px; 411 font-style: italic; 412 } 413 #property_menu.info_run b{ 414 font-size: 16px; 415 font-style: normal; 416 } 417 #property_menu.info_run > p.date > b{ 418 display: block; 419 } 420 #property_menu.info_run > p:last-child > span { 421 text-transform: uppercase; 422 } 423 #property_menu.info_run bold>p { 424 text-align: center; 425 font-size: 16px; 426 line-height: 0; 427 } 428 429 430 -
gmace/trunk/assets/js/scripts.js
r1054503 r1055988 1 1 var dir=[],file=[],readOnly=[],editors=[], dir_back, THEME_EDITOR, fontSize = 16, 2 submenuColor = jQuery("#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu").css("background"); 2 submenuColor = jQuery("#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu").css("background"), 3 dirNameAction, dirAction, unlinkUl; 3 4 jQuery(document).ready(function() 4 5 { 5 6 getDirBack(); 7 8 jQuery("#gm_actions input[type='number'").on("focus", function(){ 9 jQuery("#gm_actions > div").css("top", "auto"); 10 jQuery("#gm_actions").css({ 11 "width": jQuery("#gm_actions").width(), 12 "height": jQuery("#gm_actions").height(), 13 "padding": "25px" 14 }); 15 16 jQuery("#gm_actions input[type='number'").on("blur", function(){ 17 jQuery("#gm_actions").attr("style", ""); 18 jQuery("#gm_actions > div").attr("style", ""); 19 }); 20 }); 6 21 7 22 jQuery("#gm_slider").css("background", jQuery("#wpadminbar").css("background")); … … 55 70 }); 56 71 72 getFileOfList(); 73 74 jQuery("input[value='Сохранить']").on('click',function(){ 75 e=getID(); 76 writeToFile(dir[e]+file[e],editors[e]); 77 }); 78 jQuery("#gm_hotbar .new_window_editor").on('click',function(){ 79 createNewWindow(); 80 }); 81 }); 82 function getFileOfList(){ 57 83 jQuery("ul.scandir_ul li.scandir_span").on('click', function(){ 58 84 if(jQuery(this).parent().children('ul').css('display')=='none') … … 60 86 else 61 87 jQuery(this).parent().children('ul').slideUp(); 62 });63 jQuery("ul.scandir_ul li a").on('click',function(){64 var e = getID();65 dir[e] = jQuery(this).parent().parent("ul").data("dir-folder")+"/";66 file[e] = jQuery(this).html();67 readFromFile(dir[e]+file[e],editors[e]);68 var name_tab = file[getID()].length>15?69 file[getID()].substr(0,12)+"..."70 :file[getID()];71 jQuery("#gm_slider p#"+getID())72 .prop("title",file[getID()])73 .html(name_tab+"<a title='Закрыть' class='close_editor'>X</a>");74 getFileOfTab();75 });76 jQuery("input[value='Сохранить']").on('click',function(){77 e=getID();78 writeToFile(dir[e]+file[e],editors[e]);79 });80 jQuery("#gm_hotbar .new_window_editor").on('click',function(){81 createNewWindow();82 });83 jQuery(".code-insert").on("click",function(){84 var v_editor = editors[getID()];85 var selectionRange = v_editor.getSelectionRange();86 var selectionText = v_editor.getSession().getTextRange(selectionRange);87 var text = jQuery(this).attr("insert");88 v_editor.insert(text);89 }); 90 } );88 e.preventDefault(); 89 }); 90 jQuery("ul.scandir_ul li a").mousedown(function(e){ 91 e.preventDefault(); 92 if(e.which == 2){ 93 jQuery(this).mouseup(function(e){ 94 if(e.which == 2) 95 createNewWindow(jQuery(this).parent().parent("ul").data("dir-folder")+"/", jQuery(this).html()); 96 }); 97 }else if(e.which == 1){ 98 changeFile(getID(), jQuery(this)); 99 } 100 }); 101 jQuery("ul.scandir_ul li").on("contextmenu", function(e){ 102 if(jQuery(this).children("span").html()!=undefined){ 103 var type = "folder"; 104 var name = jQuery(this).children("span").html(); 105 }else{ 106 var type = "file"; 107 var name = jQuery(this).children("a").html(); 108 } 109 var dir = jQuery(this).parents("ul").data("dir-folder"); 110 if(!e.shiftKey){ 111 openPropertyFile(e.pageY, e.pageX, name, dir, type, jQuery(this)); 112 return false; 113 } 114 e.preventDefault(); 115 }); 116 } 91 117 function getFileOfTab(){ 92 118 jQuery("#gm_slider>div>p[clicking='true']").css("background", submenuColor); 93 jQuery("p.tab_editor").on('click',function(){ 94 var id = jQuery(this).prop("id")-1+2,e = jQuery(this); 95 jQuery("#gm_editors>div:visible").fadeOut(100,function(){ 96 jQuery("#gm_slider>div>p").css("background", "").attr("clicking","false"); 97 e.css("background", submenuColor).attr("clicking","true"); 98 jQuery("#gm_editors>div#text_file_"+id).fadeIn(100); 99 }); 100 }); 101 jQuery("a.close_editor").on('click',function(){ 102 if(jQuery("#gm_slider>div>p").length==1)return true; 103 var id = jQuery(this).parent("p").prop("id")-1+1,e = jQuery(this); 104 if(e.parent("p").attr("clicking")=="true"){ 105 jQuery("#gm_editors>div#text_file_"+(id+1)).fadeOut(100,function(){ 106 e.parent("p").remove(); 107 jQuery("#gm_editors>div#text_file_"+(id+1)).remove(); 108 jQuery("#gm_editors>div:eq(0)").fadeIn(100); 109 jQuery("#gm_slider>div>p:eq(0)").attr("clicking","true"); 110 getFileOfTab(); 111 }); 112 }else{ 113 e.parent("p").remove(); 114 jQuery("#gm_editors>div#text_file_"+(id+1)).remove(); 115 getFileOfTab(); 116 } 119 jQuery("a.close_editor").mousedown(function(e){ 120 closeEditor(jQuery(this).parent("p.tab_editor")); 121 }); 122 jQuery("p.tab_editor").mousedown(function(e){ 123 e.preventDefault(); 124 if(e.which == 2){ 125 jQuery(this).mouseup(function(e){ 126 if(e.which == 2) 127 closeEditor(jQuery(this)); 128 }); 129 }else if(e.which == 1){ 130 var id = jQuery(this).prop("id")-1+2,e = jQuery(this); 131 jQuery("#gm_editors>div:visible").fadeOut(100,function(){ 132 jQuery("#gm_slider>div>p").css("background", "").attr("clicking","false"); 133 e.css("background", submenuColor).attr("clicking","true"); 134 jQuery("#gm_editors>div#text_file_"+id).fadeIn(100); 135 }); 136 } 117 137 }); 118 138 } … … 122 142 return id; 123 143 } 124 function addEditor( ){125 dir[editors.length]= "/";126 file[editors.length]= "index.php";144 function addEditor(dir_f, file_f){ 145 dir[editors.length]=!dir_f?"/":dir_f; 146 file[editors.length]=!file_f?"index.php":file_f; 127 147 readOnly[editors.length]=false; 128 jQuery("#gm_slider>div").append("<p title='"+file[editors.length]+"' clicking='true' id='"+editors.length+"' class='tab_editor'>"+file[editors.length]+"<a title='Закрыть' class='close_editor'>X</a></p>"); 148 var name_tab = file[editors.length].length>15? 149 file[editors.length].substr(0,12)+"..." 150 :file[editors.length]; 151 jQuery("#gm_slider>div").append("<p title='"+file[editors.length]+"' clicking='true' id='"+editors.length+"' class='tab_editor'>"+name_tab+"<a title='Закрыть' class='close_editor'>X</a></p>"); 129 152 jQuery("#gm_editors").append("<div id='text_file_"+(editors.length-1+2)+"'></div>"); 130 153 var editor_r = ace.edit("text_file_"+(editors.length-1+2)); … … 244 267 } 245 268 } 246 function createNewWindow( ){269 function createNewWindow(dir_f, file_f){ 247 270 jQuery("#gm_slider>div>p").css("background", "").attr("clicking","false"); 248 271 jQuery("#gm_editors>div:visible").fadeOut(100,function(){ 249 editors[editors.length] = addEditor( );272 editors[editors.length] = addEditor(dir_f, file_f); 250 273 }); 251 274 } … … 267 290 } 268 291 } 292 function changeFile(id, element){ 293 dir[id] = element.parent().parent("ul").data("dir-folder")+"/"; 294 file[id] = element.html(); 295 readFromFile(dir[id]+file[id],editors[id]); 296 var name_tab = file[id].length>15?file[id].substr(0,12)+"...":file[id]; 297 jQuery("#gm_slider p#"+id).prop("title",file[id]).html(name_tab+"<a title='Закрыть' class='close_editor'>X</a>"); 298 getFileOfTab(); 299 } 300 function closeEditor(element){ 301 if(jQuery("p.tab_editor").length==1) 302 return; 303 var id = element.prop("id")-1+2; 304 if(element.attr("clicking")=="true"){ 305 jQuery("#gm_editors>div#text_file_"+(id)).fadeOut(100,function(){ 306 element.remove(); 307 jQuery("#gm_editors>div#text_file_"+(id)).remove(); 308 jQuery("#gm_editors>div:eq(0)").fadeIn(100); 309 jQuery("p.tab_editor:eq(0)").attr("clicking","true"); 310 getFileOfTab(); 311 }); 312 }else{ 313 element.remove(); 314 jQuery("#gm_editors>div#text_file_"+(id)).remove(); 315 getFileOfTab(); 316 } 317 } 318 function openPropertyFile(y, x, fileName, fileDir, type_obj, elementFile){ 319 jQuery("<div>", { 320 "id" : "property_menu", 321 "data-file" : fileName, 322 "data-dir" : fileDir 323 }).css({"left": x, "top": y}).append(jQuery("<span>",{ 324 text : fileName 325 })).append(jQuery("<p>",{ 326 "class" : "copy", 327 text : "Копировать" 328 })).append(jQuery("<p>",{ 329 "class" : "cut", 330 text : "Вырезать" 331 })).append(jQuery("<p>",{ 332 "class" : "paste", 333 text : "Вставить", 334 "buffered" : "false" 335 })).append(jQuery("<p>",{ 336 "class" : "rename", 337 text : "Переименовать" 338 })).append(jQuery("<p>",{ 339 "class" : "delete", 340 text : "Удалить" 341 })).append(jQuery("<p>",{ 342 "class" : "new_file", 343 text : "Создать файл" 344 })).append(jQuery("<p>",{ 345 "class" : "new_folder", 346 text : "Создать папку" 347 })).append(jQuery("<p>",{ 348 "class" : "property", 349 text : "Свойства" 350 })).appendTo("#filedit"); 351 352 if(dirNameAction!=null && dirAction!=null){ 353 jQuery("#property_menu .paste").attr("buffered", true); 354 } 355 356 if(x+jQuery("#property_menu").width()>jQuery(document).width()) 357 jQuery("#property_menu").css({"left": "auto", "right": 0}); 358 if(y+jQuery("#property_menu").height()>jQuery(document).height()) 359 jQuery("#property_menu").css({"top": "auto", "bottom": 0}); 360 361 if(fileName == "www"){ 362 jQuery("#property_menu .copy").remove(); 363 jQuery("#property_menu .cut").remove(); 364 jQuery("#property_menu .rename").remove(); 365 jQuery("#property_menu .delete").remove(); 366 } 367 if(type_obj == "file"){ 368 jQuery("#property_menu .paste").remove(); 369 jQuery("#property_menu .new_folder").remove(); 370 jQuery("#property_menu .new_file").remove(); 371 } 372 373 jQuery(".filedit_2 #file").width("25%"); 374 375 // Deleting property menu 376 jQuery(document).on("mousedown", function(e){ 377 if(jQuery(e.target).attr("id")!="property_menu" && jQuery(e.target).parents("#property_menu").attr("id")!="property_menu"){ 378 jQuery("#property_menu").remove(); 379 jQuery(".filedit_2 #file").attr("style", ""); 380 } 381 }); 382 jQuery("#property_menu p.property").on("click", function(){ 383 var element = jQuery(this).parent(); 384 jQuery.ajax({ 385 type:"POST", 386 url:jQuery("#filedit").data("dir")+"/includes/ace.php", 387 dataType:"html", 388 data:{ 389 property_file: "please", 390 file_dir: fileDir, 391 file_name: fileName 392 }, 393 success: function(html){ 394 jQuery("#property_menu").addClass("info_run").html(html); 395 } 396 }); 397 }); 398 399 jQuery("#property_menu p.rename").on("click", function(){ 400 var element = jQuery(this).parent(); 401 jQuery("#property_menu").addClass("info_run").css({ 402 "width":"280px", 403 "height":"65px" 404 }).html("<input type='text' value='"+fileName+"'><input type='button' class='button button-primary' value='Применить'>"); 405 jQuery("#property_menu input.button-primary").on("click", function(){ 406 jQuery.ajax({ 407 type:"POST", 408 url:jQuery("#filedit").data("dir")+"/includes/ace.php", 409 dataType:"html", 410 data:{ 411 rename_delete_action: "rename", 412 rename_file: jQuery("#property_menu input[type='text']").val(), 413 file_dir: fileDir, 414 file_name: fileName 415 }, 416 success: function(html){ 417 if(html != "error"){ 418 if(type_obj == "file"){ 419 var par = elementFile.parent("ul").parent(); 420 }else if(type_obj == "folder"){ 421 var par = elementFile.parent().parent("ul").parent(); 422 } 423 par.children("ul").remove(); 424 par.append(html); 425 jQuery("#property_menu").html("<bold><p>Успешно переименован!</p></bold>"); 426 getFileOfList(); 427 }else alert(html); 428 } 429 }); 430 }); 431 }); 432 433 jQuery("#property_menu p.delete").on("click", function(){ 434 var element = jQuery(this).parent(); 435 jQuery.ajax({ 436 type:"POST", 437 url:jQuery("#filedit").data("dir")+"/includes/ace.php", 438 dataType:"html", 439 data:{ 440 rename_delete_action: "delete", 441 file_dir: fileDir, 442 file_name: fileName 443 }, 444 success: function(html){ 445 if(html != "error"){ 446 if(type_obj == "file"){ 447 var par = elementFile.parent("ul").parent(); 448 }else if(type_obj == "folder"){ 449 var par = elementFile.parent().parent("ul").parent(); 450 } 451 par.children("ul").remove(); 452 par.append(html); 453 jQuery("#property_menu").addClass("info_run").css({ 454 "width":"280px", 455 "height":"65px" 456 }).html("<bold><p>Успешно удален!</p></bold>"); 457 getFileOfList(); 458 }else alert(html); 459 } 460 }); 461 }); 462 463 jQuery("#property_menu p.new_folder, #property_menu p.new_file").on("click", function(){ 464 var element = jQuery(this).parent(); 465 if(jQuery(this).hasClass("new_file")){ 466 type_c = "file"; 467 }else{ 468 type_c = "folder"; 469 } 470 jQuery("#property_menu").addClass("info_run").css({ 471 "width":"280px", 472 "height":"65px" 473 }).html("<input type='text'><input type='button' class='button button-primary' value='Создать'>"); 474 jQuery("#property_menu input.button-primary").on("click", function(){ 475 jQuery.ajax({ 476 type:"POST", 477 url:jQuery("#filedit").data("dir")+"/includes/ace.php", 478 dataType:"html", 479 data:{ 480 action_for_file: type_c, 481 dir: fileDir+"/"+fileName, 482 name: jQuery("#property_menu input[type='text']").val() 483 }, 484 success: function(html){ 485 if(html != "error"){ 486 elementFile.parent().children("ul").remove(); 487 elementFile.parent().append(html); 488 jQuery("#property_menu").html("<bold><p>Успешно созданно!</p></bold>"); 489 getFileOfList(); 490 }else alert(html); 491 } 492 }); 493 }); 494 }); 495 496 jQuery("#property_menu p.copy, #property_menu p.cut").on("click", function(){ 497 if(jQuery(this).hasClass("copy")){ 498 dirAction = "copy"; 499 }else{ 500 if(type_obj == "file"){ 501 unlinkUl = elementFile; 502 }else if(type_obj == "folder"){ 503 unlinkUl = elementFile.parent(); 504 } 505 dirAction = "cut"; 506 } 507 dirNameAction = fileDir+"/"+fileName; 508 jQuery("#property_menu").remove(); 509 jQuery(".filedit_2 #file").attr("style", ""); 510 }); 511 512 jQuery("#property_menu p.paste[buffered='true']").on("click", function(){ 513 var element = jQuery(this).parent(); 514 jQuery.ajax({ 515 type:"POST", 516 url:jQuery("#filedit").data("dir")+"/includes/ace.php", 517 dataType:"html", 518 data:{ 519 action_paste: dirAction, 520 file_dir: fileDir+"/"+fileName, 521 obj_to_paste: dirNameAction 522 }, 523 success: function(html){ 524 if(html != "error"){ 525 elementFile.parent().children("ul").remove(); 526 elementFile.parent().append(html); 527 jQuery("#property_menu").addClass("info_run").css({ 528 "width":"280px", 529 "height":"65px" 530 }).html("<bold><p>Успешно продублирован!</p></bold>"); 531 532 if(unlinkUl!=null){ 533 unlinkUl.remove(); 534 } 535 536 unlinkUl = dirNameAction = dirAction = null; 537 538 getFileOfList(); 539 }else alert(html); 540 } 541 }); 542 }); 543 } 544 545 546 547 548 549 -
gmace/trunk/gmace.php
r1054503 r1055988 4 4 Plugin URI: http://wordpress.org/plugins/gmace/ 5 5 Description: Свободный PHP-редактор кода Wordpress 6 Version: 1. 2.16 Version: 1.3 7 7 Author: German Mesky 8 8 Author URI: http://vk.com/false_coder -
gmace/trunk/includes/ace.php
r1054491 r1055988 1 1 <?php 2 if($_POST['file']){ 3 $ace = new GMAce(""); 4 fpassthru(fopen($ace->get_real_back().$_POST['file'],'r')); 5 exit; 6 }elseif($_POST['refile']){ 7 $ace = new GMAce(""); 8 $file=fopen($ace->get_real_back().$_POST['refile'],'w'); 9 fputs($file,$_POST['content']); 10 } 2 if($_POST){ 3 if($_POST['file']){ 4 $ace = new GMAce(""); 5 fpassthru(fopen($ace->get_real_back().$_POST['file'],'r')); 6 exit; 7 }elseif($_POST['refile']){ 8 $ace = new GMAce(""); 9 $file = fopen($ace->get_real_back().$_POST['refile'],'w'); 10 fputs($file,$_POST['content']); 11 exit; 12 }elseif($_POST['property_file']){ 13 $ace = new GMAce(""); 14 15 $dir = $ace->get_real_back(); 16 17 if($_POST['file_name']=="www"){ 18 $dir.="../www"; 19 $href = "/"; 20 }else{ 21 $dir.= ($_POST['file_dir']?substr($_POST['file_dir'], 1)."/":"").$_POST['file_name']; 22 $href = ($_POST['file_dir']."/".$_POST['file_name']); 23 } 24 25 if(filetype($dir) == "dir"){ 26 $size = dirsize($dir); 27 }else{ 28 $size = filesize($dir); 29 } 30 if($size>=1024){ 31 $size/=1024; 32 if($size>=1024){ 33 $size/=1024; 34 if($size>=1024){ 35 $size/=1024; 36 if($size>=1024) 37 $size/=1024; 38 else $size = round($size, 1)." гб"; 39 }else $size = round($size, 1)." мб"; 40 }else $size = round($size, 1)." кб"; 41 }else $size = round($size, 1)." б"; 42 43 if(filetype($dir) == "dir"){ 44 print("<p><b>Директория: </b>$href</p>\n"); 45 print("<p><b>Размер каталога: </b>".$size."</p>\n"); 46 print("<p><b>Тип объекта: </b><span>Папка с файлами</span></p>\n"); 47 }else{ 48 print("<p> 49 <b>Директория файла: </b> 50 <a target='_blank' href='$href'>$href</a> 51 </p>\n"); 52 print("<p><b>Размер файла: </b>".$size."</p>\n"); 53 print("<p class='date'><b>Время последней модификации файла: </b>".date("j F Y (l) h:i:s", filemtime($dir))."</p>\n"); 54 print("<p class='date'><b>Время последнего обращения к файлу: </b>".date("j F Y (l) h:i:s", fileatime($dir))."</p>\n"); 55 print("<p><b>Тип объекта: </b><span>".filetype($dir)."</span></p>\n"); 56 } 57 exit; 58 }elseif($_POST['rename_delete_action']){ 59 $ace = new GMAce(""); 60 61 if($_POST['file_name']=="www") 62 $dir.="../www/"; 63 else 64 $dir.= substr($_POST['file_dir'], 1)."/"; 65 66 if($_POST['rename_delete_action']=="rename" && rename($ace->get_real_back().$dir.$_POST['file_name'], $ace->get_real_back().$dir.$_POST['rename_file'])){ 67 print($ace->scaning_dir("/www".$_POST['file_dir'], false)); 68 }elseif($_POST['rename_delete_action']=="delete"){ 69 if(filetype($ace->get_real_back().$dir.$_POST['file_name'])=="dir"){ 70 if(dir_unlink($ace->get_real_back().$dir.$_POST['file_name'])) 71 print($ace->scaning_dir("/www".$_POST['file_dir'], false)); 72 else print("error"); 73 }else{ 74 if(unlink($ace->get_real_back().$dir.$_POST['file_name'])) 75 print($ace->scaning_dir("/www".$_POST['file_dir'], false)); 76 else print("error"); 77 } 78 }else print("error"); 79 exit; 80 }elseif($_POST['action_for_file']){ 81 $ace = new GMAce(""); 82 83 if($_POST['dir']=="/www"){ 84 $scandir = "/www"; 85 $dir.=""; 86 }else{ 87 $scandir = "/www".$_POST['dir']; 88 $dir.= substr($_POST['dir'], 1)."/"; 89 } 90 91 if(($_POST['action_for_file']=="folder" && mkdir($ace->get_real_back().$dir.$_POST['name'])) || 92 ($_POST['action_for_file']=="file" && fopen($ace->get_real_back().$dir.$_POST['name'], "w"))) 93 print($ace->scaning_dir($scandir, false)); 94 else print("error"); 95 exit; 96 }elseif($_POST['action_paste']){ 97 $ace = new GMAce(""); 98 99 if($_POST['file_dir']=="www"){ 100 $dirFrom.="../www"; 101 $dirTo.="../www"; 102 }else{ 103 $dirFrom.= substr($_POST['obj_to_paste'], 1); 104 $dirTo.= substr($_POST['file_dir'], 1); 105 } 106 107 if(filetype($ace->get_real_back().$dirFrom)=="dir"){ 108 if(dir_move($ace->get_real_back().$dirFrom, $ace->get_real_back().$dirTo, $_POST['action_paste']=="cut")) 109 print($ace->scaning_dir("/www".$_POST['file_dir'], false)); 110 else print("error"); 111 }else{ 112 if(copy($ace->get_real_back().$dirFrom, $ace->get_real_back().$dirTo."/".basename($dirFrom))){ 113 if($_POST['action_paste']=="cut") 114 unlink($ace->get_real_back().$dirFrom); 115 print($ace->scaning_dir("/www".$_POST['file_dir'], false)); 116 } 117 else print("error"); 118 } 119 exit; 120 } 121 } 122 //----/wp-admin/css 123 //----/wp-content/css/cache 124 function dir_move($dirFrom, $dirTo, $flag){ 125 $errors = 0; 126 $dirTo.="/".basename($dirFrom)."/"; 127 if(!file_exists($dirTo)) 128 mkdir($dirTo); 129 foreach(scandir($dirFrom) as $index=>$val){ 130 if(filetype($dirFrom."/".$val)=="dir"){ 131 if($val!="." & $val!=".."){ 132 dir_move($dirFrom."/".$val, $dirTo, $flag); 133 } 134 }else{ 135 copy($dirFrom."/".$val, $dirTo.$val); 136 } 137 } 138 if($flag) 139 dir_unlink($dirFrom); 140 return $errors==0; 141 } 142 function dir_unlink($dir){ 143 $errors = 0; 144 foreach(scandir($dir) as $index=>$val){ 145 if(filetype($dir."/".$val)=="dir"){ 146 if($val!="." & $val!=".."){ 147 dir_unlink($dir."/".$val); 148 } 149 }else{ 150 if(!unlink($dir."/".$val)) 151 $errors++; 152 } 153 } 154 if(!rmdir($dir)) 155 $errors++; 156 return $errors==0; 157 } 158 function dirsize($dir){ 159 $total_size; 160 foreach(scandir($dir) as $index=>$val){ 161 if(filetype($dir."/".$val)=="dir"){ 162 if($val!="." & $val!=".."){ 163 $total_size+=dirsize($dir."/".$val); 164 } 165 }else{ 166 $total_size+=filesize($dir."/".$val); 167 } 168 } 169 return $total_size; 170 } 11 171 12 172 class GMAce 13 173 { 14 public static$TYPE;15 public static$SCAN_DIR;16 public static$THEME;17 public static$G_DIR;18 public static$BACK_G_DIR;174 public $TYPE; 175 public $SCAN_DIR; 176 public $THEME; 177 public $G_DIR; 178 public $BACK_G_DIR; 19 179 20 180 function GMAce($theme){ … … 46 206 } 47 207 48 function scaning_dir($dir ){49 if($dir == " .")208 function scaning_dir($dir, $flag){ 209 if($dir == "/") 50 210 $dir = ""; 51 211 $fd="<ul class='scandir_ul' data-dir-folder='".str_replace("/www", "", $dir)."'>"; … … 54 214 $files; 55 215 $file_id=0; 56 foreach(scandir($this->SCAN_DIR. $dir) as $index=>$val){57 if(filetype($this->SCAN_DIR. $dir."/".$val)=="dir"){216 foreach(scandir($this->SCAN_DIR.substr($dir, 1)) as $index=>$val){ 217 if(filetype($this->SCAN_DIR.substr($dir, 1)."/".$val)=="dir"){ 58 218 if($val!="."&$val!=".."){ 59 219 $folders[$folder_id]=$val; … … 69 229 for($i=0;$i<$folder_id;$i++){ 70 230 $fd.="<div><li class='scandir_span'><span>$folders[$i]</span></li>"; 71 $fd.=$this->scaning_dir($dir."/".$folders[$i] );231 $fd.=$this->scaning_dir($dir."/".$folders[$i], true); 72 232 } 73 233 for($i=0;$i<$file_id;$i++){ … … 75 235 $fd.="<li class='icon' type='$bg'><a>$files[$i]</a></li>"; 76 236 } 77 if($dir != "") 78 $fd.="</ul></div>"; 237 $fd.="</ul>"; 238 if($flag) 239 $fd.="</div>"; 79 240 80 241 return $fd; -
gmace/trunk/includes/content.php
r1054503 r1055988 18 18 <div id="file"> 19 19 <span></span> 20 <div><?php print($this->scaning_dir(" ."));?></div>20 <div><?php print($this->scaning_dir("/", false));?></div> 21 21 </div> 22 22 <div id="gm_actions"> -
gmace/trunk/includes/settings.php
r1054491 r1055988 3 3 include("ace.php"); 4 4 } 5 if($_POST ['change_theme']){5 if($_POST && $_POST['change_theme']){ 6 6 $ace = new GMAce(""); 7 7 $dir = $ace->get_real_back(); -
gmace/trunk/readme.txt
r1054503 r1055988 4 4 Requires at least: 4.0 5 5 Tested up to: 4.1 6 Stable tag: 1. 2.16 Stable tag: 1.3 7 7 License: GNU 8 8 License URI: license.txt … … 28 28 == Changelog == 29 29 30 = 1.3 = 31 * Fixed some bugs 32 * Menu of editor settings placed and in full screen mode 33 + Added the ability using the mouse wheel to opening files in the new window and close the tab of editor 34 + Added the ability to cut\copy\rename\delete\create files or directories (Simply right-click on a file or directory) 35 30 36 = 1.2.1 = 31 37 * Fixed bugs opening in full mode screen
Note: See TracChangeset
for help on using the changeset viewer.