Plugin Directory

Changeset 1055988


Ignore:
Timestamp:
12/29/2014 01:37:33 AM (11 years ago)
Author:
GMDragonX
Message:

update plugin to version 1.3

Location:
gmace/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • gmace/trunk/assets/css/style.css

    r1054503 r1055988  
    219219    font-size: 20px;
    220220}
     221ul.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}
     228ul.scandir_ul li>span:hover {
     229    padding: 5px 23px;
     230    margin-left: -24px;
     231}
    221232ul.scandir_ul li.icon{
    222233    background: no-repeat;
     
    307318    cursor: pointer;
    308319}
     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}
    309344#select_theme{
    310345    display: inline;
     
    332367    cursor: default;
    333368}
     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  
    11var 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;
    34jQuery(document).ready(function()
    45{
    56    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    });
    621
    722    jQuery("#gm_slider").css("background", jQuery("#wpadminbar").css("background"));
     
    5570    });
    5671   
     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});
     82function getFileOfList(){
    5783    jQuery("ul.scandir_ul li.scandir_span").on('click', function(){
    5884        if(jQuery(this).parent().children('ul').css('display')=='none')
     
    6086        else
    6187            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}
    91117function getFileOfTab(){
    92118    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        }
    117137    });
    118138}
     
    122142    return id;
    123143}
    124 function addEditor(){
    125     dir[editors.length]="/";
    126     file[editors.length]="index.php";
     144function addEditor(dir_f, file_f){
     145    dir[editors.length]=!dir_f?"/":dir_f;
     146    file[editors.length]=!file_f?"index.php":file_f;
    127147    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>");
    129152    jQuery("#gm_editors").append("<div id='text_file_"+(editors.length-1+2)+"'></div>");
    130153    var editor_r = ace.edit("text_file_"+(editors.length-1+2));
     
    244267    }
    245268}
    246 function createNewWindow(){
     269function createNewWindow(dir_f, file_f){
    247270    jQuery("#gm_slider>div>p").css("background", "").attr("clicking","false");
    248271    jQuery("#gm_editors>div:visible").fadeOut(100,function(){
    249         editors[editors.length] = addEditor();
     272        editors[editors.length] = addEditor(dir_f, file_f);
    250273    });
    251274}
     
    267290    }
    268291}
     292function 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}
     300function 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}
     318function 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  
    44    Plugin URI: http://wordpress.org/plugins/gmace/
    55    Description: Свободный PHP-редактор кода Wordpress
    6     Version: 1.2.1
     6    Version: 1.3
    77    Author: German Mesky
    88    Author URI: http://vk.com/false_coder
  • gmace/trunk/includes/ace.php

    r1054491 r1055988  
    11<?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
     124function 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}
     142function 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}
     158function 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}
    11171
    12172class GMAce
    13173{
    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;
    19179   
    20180    function GMAce($theme){
     
    46206    }
    47207
    48     function scaning_dir($dir){
    49         if($dir == ".")
     208    function scaning_dir($dir, $flag){
     209        if($dir == "/")
    50210            $dir = "";
    51211        $fd="<ul class='scandir_ul' data-dir-folder='".str_replace("/www", "", $dir)."'>";
     
    54214        $files;
    55215            $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"){
    58218                if($val!="."&$val!=".."){
    59219                    $folders[$folder_id]=$val;
     
    69229        for($i=0;$i<$folder_id;$i++){
    70230            $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);
    72232        }
    73233        for($i=0;$i<$file_id;$i++){
     
    75235            $fd.="<li class='icon' type='$bg'><a>$files[$i]</a></li>";
    76236        }
    77         if($dir != "")
    78             $fd.="</ul></div>";
     237        $fd.="</ul>";
     238        if($flag)
     239            $fd.="</div>";
    79240       
    80241        return $fd;
  • gmace/trunk/includes/content.php

    r1054503 r1055988  
    1818    <div id="file">
    1919          <span></span>
    20           <div><?php print($this->scaning_dir("."));?></div>
     20          <div><?php print($this->scaning_dir("/", false));?></div>
    2121    </div>
    2222    <div id="gm_actions">
  • gmace/trunk/includes/settings.php

    r1054491 r1055988  
    33        include("ace.php");
    44    }
    5     if($_POST['change_theme']){
     5    if($_POST && $_POST['change_theme']){
    66        $ace = new GMAce("");
    77        $dir = $ace->get_real_back();
  • gmace/trunk/readme.txt

    r1054503 r1055988  
    44Requires at least: 4.0
    55Tested up to: 4.1
    6 Stable tag: 1.2.1
     6Stable tag: 1.3
    77License: GNU
    88License URI: license.txt
     
    2828== Changelog ==
    2929
     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
    3036= 1.2.1 =
    3137* Fixed bugs opening in full mode screen
Note: See TracChangeset for help on using the changeset viewer.