* 単一ファイルのオンラインコードエディタ editor.php バージョン: v1.21 * ウェブサイト上の任意のテキストファイルをオンラインで編集するのに非常に便利です * パスワード暗号化方式: * md5 (自己設定パスワード + $ace) //$ace は cdn ミラーアドレスです * * 使用方法: * 1. $pwd 変数の値が false であることを確認し、このファイルを PHP スペースにアップロードし、アクセスしてください * 2. まず、訪問するたびにパスワードを設定するように求められます。パスワードを設定して覚えておいてください * 3. 初めて設定したパスワードでログインした後、このphpファイルはデフォルトで編集されます。 * 4. このファイルはエディターのコアファイルです。勝手に変更しないでください。 * 5. Ctrl + S キーの組み合わせを使用して編集したファイルを保存し、実行結果を待ってください。 * 6.保存アクションが実行されます。保存成功のメッセージが返されるまで必ずお待ちください * 7. リセット操作は、他の人がパスを推測するのを防ぐために、このプログラムのファイル名を変更します * 8. リフレッシュ機能は、このプログラム ファイルのみを更新します他のものを更新することはできません * * このエディタは Chrome ブラウザで使用することをお勧めします
プロジェクトの詳細を参照してください http://git.oschina.net/ymk18/aceditor
- /**
- * 単一ファイルのオンラインコードエディタ editor.php バージョン: v1.21
- *
- * パスワード暗号化方式:
- * md5 (自分で設定したパスワード + $ace) //$ace は cdn ミラーアドレスです
- *
- * 方法使用方法:
- * 1. $pwd 変数の値が false であることを確認し、このファイルを PHP スペースにアップロードしてアクセスします
- * 2. 初めてパスワードを設定するように求められます。パスワードを設定して覚えてください。
- * 3. 初めて設定したパスワードでログインした後、この php ファイルはデフォルトで編集されます。
- * 4. このファイルはエディターのコアファイルです。勝手に変更しないでください
- * 5. Ctrl + S キーの組み合わせを使用して、編集したファイルを保存し、実行結果を待ってください
- * 6. アクションを保存します 実行後、保存成功のメッセージが返されるまで必ず待ってください
- * 7. リセット操作は変更されます他の人がパスを推測できないようにするためのこのプログラムのファイル名
- * 8. 更新機能はこのプログラム ファイルのみを更新し、他のファイルを更新することはできません
- *
- * 提案 このエディターは Chrome ブラウザーで使用してください
- */
- session_start();
- $curr_file = __FILE__; //デフォルトで現在のファイルを編集します
- $curr_file_path = str_replace(dirname(__FILE__), '', __FILE__) ;
- $pwd = false; //パスワード初期化のデフォルト値は false
- $ace = 'http://cdn.staticfile.org/ace/1.1.3/ace.js' //エディタコア js
- $tip ['core'] = 'http://cdn.staticfile.org/alertify.js/0.3.11/alertify.core.min.css';
- $tip['css'] = 'http:/ /cdn.staticfile.org/alertify.js/0.3.11/alertify.default.min.css';
- $tip['js'] = 'http://cdn.staticfile.org/alertify.js/0.3. 11/alertify .min.js';
- $jquery = 'http://cdn.staticfile.org/jquery/2.1.1-rc2/jquery.min.js';
- if ( false !== $pwd ) {
- define('DEFAULT_PWD', $pwd);
- }
- //ファイル拡張子名に対応する構文パーサー
- $lng = array(
- 'as' => 'actionscript', 'js' => 'javascript'、
- 'php' => 'css' => 'html'、
- 'htm' => > 'ini', 'json' => 'jsp' => 'sql' => ' => 'xml', 'yaml' => 'python',
- 'マークダウン', 'htaccess' => 'bat' = > 'batchfile', 'go' => 'golang',
- );
-
- //ユーザーがログインしているかどうかを判断する
- function is_logged() {
- $flag = false;
- if ( isset ($_SESSION['pwd' ]) &&定義('DEFAULT_PWD') ) {
- if ( $_SESSION['pwd'] === DEFAULT_PWD ) {
- $flag = true;
- }
- }
- return $flag;
- }
-
- //リロード このページに入ります
- function reload() {
- $file = pathinfo(__FILE__, PATHINFO_BASENAME);
- die(header("Location: {$file}"));
- }
-
- //リクエストは Ajax リクエストです
- function is_ajax() {
- $flag = false;
- if ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) ) {
- $flag = strto lower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
- }
- return $flag;
- }
-
- //SESSION と COOKIE を破棄
- function exterminate() {
- $_SESSION = array();
- foreach ( $_COOKIE as $key ) {
- setcookie($key) , null);
- }
- session_destroy();
- $_COOKIE = array();
- return true;
- }
-
- //ディレクトリ内のファイルのリストを取得します
- function list_dir($path, $type = 'array' ) {
- $flag = false;
- $lst = array('dir'=>array(), 'file'=>array());
- $base = !is_dir($path) ? ) : $path;
- $tmp = scandir($base);
- foreach ( $tmp as $k=>$v ) {
- //上位ディレクトリ、このレベルのディレクトリ、およびプログラム自身のファイル名をフィルタリングします
- if ( !in_array($v, array(' .', '..')) ) {
- $file = $full_path = rtrim($base, '/').DIRECTORY_SEPARATOR.$v;
- if ( $full_path == __FILE__ ) {
- continue; // シールド自体 ファイルはリストに表示されません
- }
- $file = str_replace(dirname(__FILE__), '', $file);
- $file = str_replace("\", '/ ', $file); //win の下のパスをフィルタリングします
- $file = str_replace('//', '/', $file); //二重スラッシュをフィルタリングします
- if ( is_dir($full_path) ) {
- if ( 'html' === $type ) {
- $v = '
- '。 $v.'
}- array_push($lst['dir'], $v);
- } else {
- if ( 'html' === $type ) {
- $v = '
- '.$v.'< /li>';
- }
- array_push($lst[ 'file'], $v);
- }
- }
- }
- $lst = array_merge($lst['dir'], $lst['file']) ;
- $lst = array_filter($lst);
- $ flag = $lst;
- if ( 'html' === $type ) {
- $flag = '';
- }
- return $flag;
- }
-
- //空ではないディレクトリを再帰的に削除します
- function deldir($dir) {
- $dh = opendir($dir);
- while ( $file = readdir($dh) ) {
- if ( $file != ' . ' && $file != '..' ) {
- $fullpath = $dir.'/'.$file;
- if ( !is_dir($fullpath) ) {
- unlink($fullpath);
- } else {
- deldir ($fullpath);
- }
- }
- }
- return rmdir($dir);
- }
-
- //ログアウト
- if ( isset($_GET['logout']) ) {
- if ( exterminate() ) {
- reload();
- }
- }
-
- //ajax 出力ファイルの内容
- if ( is_logged() && is_ajax() && isset($_POST['file']) ) {
- $file = dirname(__FILE__). $ _POST['file'];
- $ext = pathinfo($file, PATHINFO_EXTENSION);
- $mode = isset($lng[$ext]) $lng[$ext] : false;
- die(json_encode(array(
- 'file' => $file, 'html' => file_get_contents($file),
- 'mode' => $mode,
- ));
- }
-
- //ajax 出力ディレクトリ リスト
- if ( is_logged () && is_ajax() && isset($_POST['dir']) ) {
- $dir = dirname(__FILE__).$_POST['dir'];
- $list_dir = list_dir($dir, 'html') ;
- die(json_encode(array(
- 'dir' => $dir, 'html' => $list_dir,
- )));
- }
-
- //ajax 保存ファイル
- if ( is_logged() && is_ajax( ) && isset($_POST['action']) ) {
- $arr = array('result'=>'error', 'msg'=>'ファイルの保存に失敗しました! ');
- $content = $_POST['content'];
- if ( 'save_file' === $_POST['action'] ) {
- if ( isset($_POST['file_path']) ) {
- $ file = dirname(__FILE__).$_POST['file_path'];
- } else {
- $file = __FILE__;
- }
- file_put_contents($file, $content);
- $arr['result'] = 'success';
- $arr['msg'] = '正常に保存されました! ';
- }
- die(json_encode($arr));
- }
-
- //ajax 削除ファイルまたはフォルダー
- if ( is_logged() && is_ajax() && isset($_POST['del']) ) {
- $ path = dirname(__FILE__).$_POST['del'];
- $arr = array('result'=>'error', 'msg'=>'削除操作に失敗しました!');
- if ( $ _POST ['del'] && $path ) {
- $flag = is_dir($path) ? deldir($path) : unlink($path);
- if ( $flag ) {
- $arr['msg'] = '削除操作は成功しました! ';
- $arr['result'] = 'success';
- }
- }
- die(json_encode($arr));
- }
-
- //ajax は新しいファイルまたはフォルダーを作成します
- if ( is_logged() && is_ajax ( ) && isset($_POST['create']) ) {
- $flag = false;
- $arr = array('result'=>'error', 'msg'=>'操作が失敗しました!');
- if ( isset($_POST['target']) ) {
- $target = dirname(__FILE__).$_POST['target'];
- $target = is_dir($target) $target : dirname($target) ? ;
- }
- if ( $_POST['create'] && $target ) {
- $base_name = pathinfo($_POST['create'], PATHINFO_BASENAME);
- $exp =explode('.', $base_name);
- $ full_path = $target.'/'.$base_name;
- $new_path = str_replace(dirname(__FILE__), '', $full_path);
- if ( count($exp) > 1 && isset($lng[array_pop( $ exp)]) ) {
- file_put_contents($full_path, '');
- $arr['result'] = '成功';
- $arr['msg'] = '新しいファイルが正常に作成されました! ';
- $arr['type'] = 'file';
- } else {
- mkdir($full_path, 0777, true);
- $arr['result'] = 'success';
- $arr['msg' ] = '新しいディレクトリが正常に作成されました! ';
- $arr['type'] = 'dir';
- }
- if ( $base_name && $new_path ) {
- $arr['new_name'] = $base_name;
- $arr['new_path'] = $new_path ;
- }
- }
- die(json_encode($arr));
- }
-
- //ajax ファイルまたはフォルダーの名前を変更します
- if ( is_logged() && is_ajax() && isset($_POST['rename']) ) {
- $arr = array('result'=>'error', 'msg'=>'名前の変更操作が失敗しました!');
- if ( isset($_POST['target']) ) {
- $target = dirname( __FILE__).$_POST['target'];
- }
- if ( $_POST['rename'] ) {
- $base_name = pathinfo($_POST['rename'], PATHINFO_BASENAME);
- if ( $base_name ) {
- $rename = dirname($target).'/'.$base_name;
- $new_path = str_replace(dirname(__FILE__), '', $rename);
- }
- }
- if ( $rename && $target && rename($ target, $rename) ) {
- $arr['new_name'] = $base_name;
- $arr['new_path'] = $new_path;
- $arr['msg'] = '名前変更操作が成功しました!';
- $arr['result'] = '成功';
- }
- if ( $target == __FILE__ ) {
- $arr['redirect'] = $new_path;
- }
- die(json_encode($arr)) ;
- }
-
- //获取代码文件内容
- $code = file_get_contents($curr_file);
- $tree = '
-
- ROOT'.list_dir($curr_file, 'html').'
- ';
-
- //登陆和设置密码共用模版
- $first = <<
- 【标题】
- < ;meta http-equiv="X-UA-Practical" content="IE=edge,chrome=1">
- body {
- オーバーフロー:隠れた;背景色: #2D2D2D;色: #CCCCCC;フォントサイズ: 12px; margin: 0;
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;
- }
- form { 表示: なし;位置: 絶対; }
- フォーム h5 { font-size: 14px;フォントの太さ: 通常;マージン: 0;行の高さ: 2em; }
- フォーム入力 {
- color: #fff;ボーダー: 1px ソリッド #369;境界半径: 3px;背景: #333;高さ: 22px;
- 行の高さ: 1.6em;幅: 125ピクセル;マージン右: 5px; vertical-align: middle;
- }
- フォームボタン {
- line-height: 1.6em;ボーダー: 1px ソリッド #369;境界半径: 3px;
- 背景: #369;色: #fff;垂直配置: middle;
- }
-
-
-
-
-
-
-
- var editor = false;
- $(function(){
- $('form').prepend('
'+ document.title +'');
- $('form').css({
- left: ($(window). width()-$('form').width())/2,
- トップ: ($(window).height()-$('form').height())/2
- });
- $ ('form').show();
- });
-
- HTMLSTR;
-
- //判断かどうか第一次登录
- if ( false == = $pwd && empty($_POST) ) {
- die(str_replace(
- array('【标题】', '【アニメーション】'),
- array('第一次使用,请先设置密码!', '設定'),
- $first
- ));
- }
-
- //初回ログインパスワードを設定します
- if ( false === $pwd && !empty($_POST) ) {
- if ( isset ($ _POST['pwd']) && strlen($_POST['pwd']) ) {
- $pwd = $_SESSION['pwd'] = md5($_POST['pwd'].$ace);
- $ code = preg_replace('#$pwd = false;#', '$pwd = "'.$pwd.'";', $code, 1);
- file_put_contents($curr_file, $code);
- } else {
- reload( );
- }
- }
-
- //ユーザーログイン検証
- if ( false !== $pwd && !empty($_POST) ) {
- $tmp = md5($_POST['pwd'].$ace) ;
- if ( $tmp && $pwd && $tmp === $pwd ) {
- $_SESSION['pwd'] = $pwd;
- reload();
- }
- }
-
- //HTML エンティティを処理します
- $ code = htmlspecialchars($code);
-
- $dir_icon = str_replace(array("rn", "r", "n"), '',
- 'data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAGXRFWHRTb2Z0d2
- FyZQBBZG9iZSBJb WF nZVJlYWR5ccllPAAAAQVJREFUeNqkkk1uwjAQhd84bsNP1FXLCtu0H3XPSoX4Qrd9wR
- sCjQEcIY3DiiJUYiqRhp5Mra/92YSUVVgLSW49B7H +NApRh75XkHfFoCG+02tyflUeQTw2y9UYYP8cCStc9SM
- PeVA/Sy6Dw555q3au1z+EhBYk1cgO7OSNdaFNT0x5sCkYDha0WPiHZg VqPzLO+8seai6E2jed42bCL06tNyEH
- AX9kv3 jh3HqH7BctFWLMOmAbcg05mHK5+sQpd1HYijN47zcDUCShGEHtzxtwQS9WTcAQmJROrJDLXQB9s1Tu6
- MtRED4bwsHLnUzxEeKac3 +GeP6eo8yevhjC3F1qC4CDAAl3HwuyNAIdwAAAABJRU5ErkJg gg==');
-
- $file_icon = str_replace(array("rn", "r", "n" ), '', +ju g7Z
- C6X+/iUloSr6xioFHJkPee5mUJgBwT7gjpPB3XAgfiBjs5dOyLF/btl0pkEFngdbzPGNRFK/U+0hwJAAMjmcm
- DsOA4zge6Pseu67DpmlEqK5rLMvyRkDJor6uq2SGktu2Ffdp mpANqqoSASYnO/kthABJkoCOxCASkCBkWSYuQ
- qCeNE1fqHz3fMkXzjnJ2sRinL33QBNIzWJ5n h/L8npQohVTJwYTyfm/d6Oo2HGE8ffwseuZ1PEjhrOutmsRF
- 0iC8QmPibEtT4hftrhHI95J q JT/HC2JOt0to+zN6MVsZ /oZKqwmyCTA33DkbN1sws0i+Pega6v0kd42H9JB/8
- LJl5I6PNbgAEAa9MP7QWoNLoAAAAASUVORK5CYII= ');
-
- $loading = str_replace(array("rn", "r", "n") '',
- 'data:image/gif;base 64、R0lGODlhFAAUALMIAPh2AP+TMsZiALLlcAKNOAOp4ANVqAP +PFv///wAAAAAAAAA
- AAAAAAAAAAAAAAAACH/ C05FVFNDQVBFMI4waWeaaah+ CAS7VQWWITWYUUUJB4S2AXMWXG
- G9BL6YQTL0CAACH5BAUKAAGAAGAALAEAQASAAAAAAROEMKPX6A4W5UPENUMEQT2FILTMJYIVBVHNZ3Z1H4FMQI
- DODZ+CL7ND EN5CH8DGZHCLTCMBEOXKQLXKVIGAAIBBK9YLBYVLTH5K0J0IACH5BAUKAGAL AEAAQASABIAAAAAAA4W5upMDQP2FILTMJYIVBVHNZ3V1R4BNBIDO DZ+CL7NDEN5CH8DGZAMAMBEOXKQLXKVIG4
- Hibbk9ylby Vlth5k0J0IACH5Baukaagalaeaaaaaaaaaaaaaemkpjae4W5TPKQL2fefiltMJYVHNZ
- 3
- 3
- 3
- 3
- 3
- 3 R0A4NMWIDODODZ+CL7NDEN5CH8DGZH8ONQMBEOXKQLXKVIGIGIGIBBK9YLBYVLTHH5 K0J0IACH5BAUKAAGAAAAAAAAAAAAAROEMKPS6E4W5SPANUMGQB2FEFILTMJY IVBVHNZ3D1X4JMGIDODZ+CL7NDEN5CH8DGZGCBTMBEOX
- kqlxkviggeibbk9ylbyVLTH5K0J0IACH5Baukaagalaeaaaaaaaaaaa4W5VPODUMFQX filtmijyivbvhnz3V0Q4JNHIDODZ+CL7nden5CH8DGZBMJNIMBEOXKQLXKVIGYDIBBK9YLBYHVLTH5K0J0IAGAAGAAGAAAAAAAAAAAAAAAAAAAROEMKPZ6E4E4 W5TPCNUMAQD2FEFILTMJYIVBVHNZ3R1B4FNRIDODZ+Cl7NDEN5CH8DGZG ZHNYMBEOXKQLXKQCIGQCIGQCIGQCIBYVLTH5K0J0KKKAAQAQASABIAAA AROEMKPQ6A4W5SPIDUMHQ
- F2FEFILTMJYIVBVHNZ3D0W4BMAIDODZ+CL7NDEN5CH8DGZASGTUMKQLXKVIGIBK9ylby5k0j0
- iads = ');
-
- //// /エディタテンプレート
- $html = <<
- <メタcharset="UTF-8">
- ACE コード エディタ
-
- a { text-decoration: none; }
- overflow: hidden; font-size: #2D2D2D; -family: 'Consolas'、'Monaco'、'Menlo'、'Ubuntu Mono'、等幅;
- スクロールバーの矢印の色: #ccc; スクロールバーのベースの色: #333;
- スクロールバーのダークシャドウの色: #00ffff; スクロールバーのトラックの色: #272822;
- スクロールバーのハイライトの色: #272822; スクロールバーの面の色: #2D2D2D; 333;
- }
- ::-webkit-scrollbar { width: 5px; height:6px; }
- ::-webkit-scrollbar:hover { 背景色:#444; webkit-scrollbar-thumb:hover { min-height:5px; min-width:5px; 背景色: #AAA; }
- ::-webkit-border-radius:20px; -color: #AAA; }
- ::-webkit-scrollbar -thumb {
- min-height:5px; -webkit-border-radius:1px; ; 背景色: #AAA;
- }
- 前 { color: #666; }
- #sider { 位置: 絶対; 左: 0; ; }
- #editor { マージン: 0; 上: 0; 右: 0;
- #dir_tree { margin:0; padding: 0; height: 100%; overflow: auto; position: relative; left: 5px; }
- #dir_tree, #dir_tree ul, #dir_tree li { margin: 0; padding: 0; list-style: none inside; }
- #dir_tree ul { padding-left: 20px; position: relative; }
- #dir_tree li { text-indent: 2em; line-height: 1.6em; cursor: default; color: #ccc; }
- #dir_tree li.hover > span, #dir_tree li:hover > span { color: #66D9EF; }
- #dir_tree li#on > span { color: red; }
- #dir_tree li.dir { background: url({$dir_icon}) no-repeat 3px 3px; }
- #dir_tree li.file { background: url({$file_icon}) no-repeat 3px 0; }
- #dir_tree li.loading { background: url({$loading}) no-repeat 3px 0; }
- #logout { position: absolute; top: 0; left: 0; }
- #logout a { display: inline-block; color: #aaa; line-height: 25px; padding: 0 4px; }
- #logout a:hover { background: #000; color: #ddd; }
- #contextmenu { position: absolute; top: 0; left: 0; background: #fff; color: #333; border: 1px solid #000; padding: 1px; }
- #contextmenu span { display: block; line-height: 24px; text-indent: 20px; width: 80px; cursor: default; }
- #contextmenu span:hover { background-color: #369; color: #fff; }
- #alertify .alertify-message, #alertify .alertify-message {
- text-align: left !important; text-indent: 0; font-weight: bold; font-size: 16px;
- }
- #alertify .alertify-dialog, #alertify .alertify-dialog {
- font-family: 'Consolas'; padding: 10px !important; color: #333 !important;
- }
- #alertify .alertify-button {
- border-radius: 3px !important; font-weight: normal !important;
- font-size: 14px !important; padding: 3px 15px !important;
- }
- .alertify-buttons { text-align: right !important; }
{$tree} {$code}
- var load = false;
- var curr_file = false;
- window.location.hash = '';
- alertify.set({delay: 1000}); //n秒后自动消失
- alertify.set({labels: {ok:'确定',cancel:'取消'}});
- var editor = false;
- $(function(){
- //实例化代码编辑器
- editor = ace.edit("editor");
- //设置编辑器的语法和高亮
- editor.setTheme("ace/theme/monokai");
- editor.getSession().setMode("ace/mode/php");
- //设置编辑器自动换行
- editor.getSession().setWrapLimitRange(null, null);
- editor.getSession().setUseWrapMode(true);
- //不显示垂直衬线
- editor.renderer.setShowPrintMargin(false);
- //editor.setReadOnly(true); //设置编辑器为只读
- //editor.gotoLine(325); //跳转到指定行
- //使编辑器获得输入焦点
- editor.focus();
- //绑定组合按键
- var commands = editor.commands;
- commands.addCommand({
- name: "save",
- bindKey: {win: "Ctrl-S", mac: "Command-S"},
- exec: save_file
- });
- //保存动作
- function save_file() {
- if ( false == editor ) { return false; }
- var obj = {
- content: editor.getValue(),
- action: 'save_file'
- };
- if ( false !== curr_file ) {
- obj.file_path = curr_file;
- }
- alertify.log('正在保存...');
- $.post(window.location.href, obj, function(data){
- if ( data.msg && 'success' == data.result ) {
- alertify.success(data.msg);
- } else {
- alertify.error(data.msg);
- }
- }, 'json');
- }
- //加载目录列表或文件
- load = function(ele) {
- var curr = $(event.srcElement);
- if ( ele ) { curr = ele; }
- if ( curr.is('span') ) { curr = curr.parent('li'); }
- $('#dir_tree #on').removeAttr('id');
- curr.attr('id', 'on');
- var type = curr.attr('class');
- var path = curr.attr('path');
- window.location.hash = path;
- if ( 'file' === type ) {
- alertify.log('正在加载...');
- curr.addClass('loading');
- $.post(window.location.href, {file:path}, function(data){
- curr.removeClass('loading');
- if ( data.mode ) {
- editor.getSession().setMode("ace/mode/"+data.mode);
- }
- //注意,空文件应当允许编辑
- if ( true || data.html ) {
- curr.attr('disabled', 'disabled');
- curr_file = path; //当前编辑的文件路径
- //动态赋值编辑器中的内容
- editor.session.doc.setValue(data.html);
- editor.renderer.scrollToRow(0); //滚动到第一行
- editor.focus(); //编辑器获得焦点
- setTimeout(function(){
- editor.gotoLine(0);
- }, 800);
- }
- }, 'json');
- event.stopPropagation();
- event.preventDefault();
- return false;
- }
- if ( 'dir' === type ) {
- if ( curr.attr('loaded') ) {
- curr.children('ul').toggle();
- event.stopPropagation();
- event.preventDefault();
- return false;
- } else {
- curr.attr('loaded', 'yes');
- }
- alertify.log('正在加载...');
- curr.addClass('loading');
- $.post(window.location.href, {dir:path}, function(data){
- curr.find('ul').remove();
- curr.removeClass('loading');
- if ( data.html ) {
- curr.append(data.html);
- }
- }, 'json');
- }
- return false;
- }
- //绑定右键菜单
- $('#sider').bind('contextmenu', function(e){
- var path = false;
- var target = $(event.srcElement);
- if ( target.is('span') ) {
- target = target.parent('li');
- }
- if ( target.attr('path') ) {
- path = target.attr('path');
- } else {
- return false;
- }
- target.addClass('hover');
- var right_menu = $('#contextmenu');
- if ( !right_menu.get(0) ) {
- var timer = false;
- right_menu = $('');
- right_menu.hover(function(){
- if ( timer ) { clearTimeout(timer); }
- }, function(){
- timer = setTimeout(function(){
- Hide_menu(right_menu);
- }, 500);
- });
- $('body').append(right_menu);
- }
- if ( path ) {
- right_menu.html('');
- var menu = $('新建< ;/span>浏览重命名删除');
- right_menu.append(menu);
- menu_area(right_menu , {左: e.pageX, 上: e.pageY});
- right_menu.find('span').click(function(){
- switch ( $(this).text() ) {
- case '新建' : create_new(ターゲット, パス); ブレーク;
- ケース '浏览' : プレビュー(ターゲット, パス);
- ケース '重命名' : re_name(ターゲット, パス);
- ケース '删除' : del_file(ターゲット) 、パス); ブレーク;
- }
- Hide_menu(right_menu);
- });
- }
- パス ? right_menu.show() : Hide_menu(right_menu);
- return false;
- });
- //隐藏右键菜单
- function Hide_menu(menu) {
- $('#sider li.hover').removeClass('hover') ;
- if ( menu ) {
- menu.hide();
- }
- }
- //右键菜单エリア
- function menu_area(menu, cfg) {
- if ( menu && cfg ) {
- var w = $('#sider ').width() - menu.width();
- var h = $('#sider').height() - menu.height();
- if ( cfg.left > w ) { cfg.left = w; }
- if ( cfg.top > h ) { cfg.top = h; }
- menu.css(cfg);
- }
- }
- //保存按钮
- $('#logout>a:contains("保存")').click(function(){
- save_file();
- return false ;
- });
- //刷新按钮
- $('#logout>a:contains("刷新")').click(function(){
- window.location.href = window.location.pathname;
- return false ;
- });
- // 重置按钮
- $('#logout>a:contains("重置")').click(function(){
- alertify.confirm('否か修正 {$curr_file_path} 程序文件名前?', function (e) {
- if ( !e ) { return 'cancel'; }
- re_name($(''), '{$curr_file_path}');
- });
- return false ;
- });
- //新規建操作
- function create_new(obj, path) {
- if ( !obj || !path ) { return false; }
- alertify.prompt('请输入新建文件または文件夹名:', function (e, str) {
- if ( !e || !str ) { return false; }
- alertify.log('正在操作中。 ..');
- $('#dir_tree #on').removeAttr('loaded').removeAttr('id');
- $.post(window.location.href, {create:str,target:path} 、 function(data){
- if ( data.msg && 'success' == data.result ) {
- alertify.success(data.msg);
- if ( obj.attr('class') == 'dir' ) {
- load(obj); //重新加子节点
- } else {
- load(obj.parent().parent());
- }
- } else {
- alertify.error(data.msg);
- }
- }, 'json');
- });
- }
- //浏览操作
- 関数プレビュー(obj, path) {
- if ( !obj || !path ) { return false; }
- window.open(path, '_blank');
- }
- //重命名
- function re_name(obj, path) {
- if ( !obj || !path ) { return false; }
- alertify.prompt('重命名 '+path+' である:', function (e, str) {
- if ( !e || !str ) { return false; }
- alterify.log('正在操作中.. .');
- $.post(window.location.href, {rename:str,target:path}, function(data){
- if ( data.msg && 'success' == data.result ) {
- alertify. success(data.msg);
- if ( data.redirect ) {
- window.location.href = data.redirect;
- }
- if ( data.new_name ) {
- obj.children('span').first(). text(data.new_name);
- obj.attr('path', data.new_path);
- }
- } else {
- alertify.error(data.msg);
- }
- }, 'json');
- }) ;
- }
- //删除文件アニメーション
- function del_file(obj, path) {
- if ( !obj || !path ) { return false; }
- alertify.confirm('您确定要删除:'+path+' 吗?', function (e) {
- if ( !e ) { return 'cancel'; }
- alertify.log('削除中...');
- $.post(window.location.href, {del:path }, function(data){
- if ( data.msg && 'success' == data.result ) {
- alertify.success(data.msg);
- obj.remove();
- } else {
- alertify.error( data. msg);
- }
- }, 'json');
- });
- }
- });
- HTMLSTR;
-
- //判断してくださいログインしました
- if ( !is_logged() ) {
- die(str_replace(
- array('[タイトル]', '[アクション]'),
- array('初めて設定したパスワードを入力してください!', 'ログイン'),
- $first
- ))
- } else {
- echo $html;
- }
コードをコピー
|