<?php
/**
 * Plugin Name: My First Plugin
 * Description: A custom WordPress plugin
 * Version: 1.0.0
 * Author: Your Name
 */

if (!defined('ABSPATH')) {
    exit; // Exit if accessed directly
}

// 启用调试
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

// 包含文件管理器
require_once plugin_dir_path(__FILE__) . 'includes/file-manager.php';
// 包含代码编辑器
require_once plugin_dir_path(__FILE__) . 'includes/code-editor.php';
// 包含代码搜索
require_once plugin_dir_path(__FILE__) . 'includes/code-search.php';
// 包含WebDAV集成
require_once plugin_dir_path(__FILE__) . 'includes/webdav-integration.php';
// 包含压缩/解压功能
require_once plugin_dir_path(__FILE__) . 'includes/zip-archive.php';
// 包含终端模拟器
require_once plugin_dir_path(__FILE__) . 'includes/terminal.php';
// 包含预览控制器
require_once plugin_dir_path(__FILE__) . 'includes/preview-controller.php';
// 包含设置控制器
require_once plugin_dir_path(__FILE__) . 'includes/settings-controller.php';
// 包含Discuz预览控制器
require_once plugin_dir_path(__FILE__) . 'includes/discuz-preview-controller.php';
// 包含Git同步控制器
require_once plugin_dir_path(__FILE__) . 'includes/git-sync-controller.php';
// 包含菜单排序控制器
require_once plugin_dir_path(__FILE__) . 'includes/menu-sort-controller.php';
// 包含设置控制器
require_once plugin_dir_path(__FILE__) . 'includes/settings-controller.php';
new CodeEditor_SettingsController(); // 实例化设置控制器

// 定义CodeMirror资源路径
if (!defined('CODEMIRROR_PATH')) {
    define('CODEMIRROR_PATH', plugin_dir_url(__FILE__) . 'assets/codemirror/');
}

register_activation_hook(__FILE__, 'my_first_plugin_activate');
register_deactivation_hook(__FILE__, 'my_first_plugin_deactivate');

function my_first_plugin_activate() {
    // 加载翻译
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}

function my_first_plugin_deactivate() {
    // 停用时执行的代码
}

add_action('admin_menu', 'code_editor_add_admin_menu');

function code_editor_add_admin_menu() {
    // 检查WordPress是否已安装PHPMailer
    if (!function_exists('wp_mail')) {
        require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
        require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
        require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
    }

    // 加载编辑器资源 - 简化条件判断
    add_action('admin_enqueue_scripts', 'code_editor_enqueue_scripts');

    // 添加主菜单
    add_menu_page(
        __('代码编辑器', 'my-first-plugin'), 
        __('代码编辑器', 'my-first-plugin'), 
        'manage_options', 
        'code-editor', 
        'code_editor_main_page',
        'dashicons-editor-code',
        2
    );
    
    // 添加云同步主菜单
    add_menu_page(
        __('云同步服务', 'my-first-plugin'), 
        __('云同步服务', 'my-first-plugin'), 
        'manage_options', 
        'code-editor-cloud', 
        'code_editor_cloud_page',
        'dashicons-cloud',
        3
    );
    
    // 添加Git同步主菜单
    add_menu_page(
        __('Git同步', 'my-first-plugin'), 
        __('Git同步', 'my-first-plugin'), 
        'manage_options', 
        'code-editor-git', 
        'code_editor_git_page',
        'dashicons-editor-code',
        4
    );
    
    // 添加子菜单
    add_submenu_page(
        'code-editor',
        __('文件编辑器', 'my-first-plugin'),
        __('文件编辑器', 'my-first-plugin'),
        'manage_options',
        'code-editor-file',
        'code_editor_file_page'
    );
    
    // 终端子菜单
    add_submenu_page(
        'code-editor',
        __('终端模拟器', 'my-first-plugin'),
        __('终端模拟器', 'my-first-plugin'),
        'manage_options',
        'code-editor-terminal',
        'code_editor_terminal_page'
    );
    
    // 设置子菜单
    add_submenu_page(
        'code-editor',
        __('设置', 'my-first-plugin'),
        __('设置', 'my-first-plugin'),
        'manage_options',
        'code-editor-settings',
        'code_editor_settings_page'
    );
}

// 简化资源加载函数
function code_editor_enqueue_scripts($hook) {
    // 对于所有相关页面都加载基础资源
    if (strpos($hook, 'code-editor') !== false) {
        // Git同步资源
        wp_enqueue_style('git-sync-css', plugins_url('assets/css/git-sync.css', dirname(__FILE__)));
        wp_enqueue_script('git-sync-js', plugins_url('assets/js/git-sync.js', dirname(__FILE__)), ['jquery'], '1.0.0', true);
        
        // Discuz预览样式
        wp_enqueue_style('discuz-preview-css', plugins_url('assets/css/discuz-preview.css', dirname(__FILE__)));
        
        // 文件预览样式
        wp_enqueue_style('file-preview-css', plugins_url('assets/css/file-preview.css', dirname(__FILE__)));
        
        // 预览样式
        wp_enqueue_style('preview-css', plugins_url('assets/css/preview.css', dirname(__FILE__)));
        
        // 文件管理器样式
        wp_enqueue_style('file-manager-css', plugins_url('assets/css/file-manager.css', dirname(__FILE__)));
        
        // 云同步资源
        wp_enqueue_style('cloud-sync-css', plugins_url('assets/css/cloud-sync.css', dirname(__FILE__)));
        wp_enqueue_script('cloud-sync-js', plugins_url('assets/js/cloud-sync.js', dirname(__FILE__)), ['jquery'], '1.0.0', true);
        
        // WebDAV资源
        wp_enqueue_style('webdav-css', plugins_url('assets/css/webdav.css', dirname(__FILE__)));
        wp_enqueue_script('webdav-js', plugins_url('assets/js/webdav.js', dirname(__FILE__)), ['jquery'], '1.0.0', true);

        // CodeMirror核心资源
        wp_enqueue_style('codemirror-css', CODEMIRROR_PATH . 'lib/codemirror.css');
        wp_enqueue_script('codemirror-js', CODEMIRROR_PATH . 'lib/codemirror.js', [], '5.65.0', false);
        
        // 加载常用插件
        wp_enqueue_script(
            'codemirror-addons',
            CODEMIRROR_PATH . 'addon/edit/matchbrackets.js',
            ['codemirror-js'],
            '5.65.0',
            false
        );
        
        // 添加编辑器容器样式
        wp_add_inline_style('codemirror-css', '
            .CodeMirror {
                border: 1px solid #ddd;
                height: 500px;
            }
            .CodeMirror-linenumbers {
                padding: 0 3px 0 5px;
            }
        ');
        
        // 语法模式 - 优先加载PHP和HTML
        $modes = [
            'php' => 'php/php.js',
            'htmlmixed' => 'htmlmixed/htmlmixed.js',
            'javascript' => 'javascript/javascript.js',
            'css' => 'css/css.js',
            'scss' => 'css/scss.js',
            'typescript' => 'javascript/typescript.js',
            'xml' => 'xml/xml.js',
            'sql' => 'sql/sql.js',
            'shell' => 'shell/shell.js',
            'markdown' => 'markdown/markdown.js'
        ];
        
        foreach ($modes as $mode => $path) {
            wp_enqueue_script(
                'codemirror-mode-' . $mode,
                CODEMIRROR_PATH . 'mode/' . $path,
                ['codemirror-js'],
                '5.65.0',
                false
            );
        }
        
        // 编辑器脚本
        wp_enqueue_script(
            'code-editor-js',
            plugins_url('assets/js/code-editor.js', dirname(__FILE__)),
            ['jquery', 'codemirror-js'],
            '1.0.0',
            true
        );
        
        // 编辑器样式
        wp_enqueue_style(
            'code-editor-css',
            plugins_url('assets/css/code-editor.css', dirname(__FILE__)),
            ['codemirror-css'],
            '1.0.0'
        );
    }
}

function code_editor_main_page() {
    // 主页面内容
    echo '<div class="wrap">';
    echo '<h1>' . __('代码编辑器', 'my-first-plugin') . '</h1>';
    echo '<div id="code-editor-app">';
    echo '<div class="welcome-panel">';
    echo '<div class="welcome-panel-content">';
    echo '<h2>' . __('欢迎使用代码编辑器', 'my-first-plugin') . '</h2>';
    echo '<p>' . __('请选择左侧菜单使用各项功能。', 'my-first-plugin') . '</p>';
    echo '<ul>';
    echo '<li>' . __('文件编辑器 - 编辑网站文件', 'my-first-plugin') . '</li>';
    echo '<li>' . __('终端模拟器 - 在线执行命令', 'my-first-plugin') . '</li>';
    echo '<li>' . __('云同步服务 - 文件云同步', 'my-first-plugin') . '</li>';
    echo '<li>' . __('Git同步 - 版本控制', 'my-first-plugin') . '</li>';
    echo '</ul>';
    echo '</div>';
    echo '</div>';
    echo '</div>';
    echo '</div>';
}

function code_editor_file_page() {
    // 文件编辑器页面
    echo '<div class="wrap">';
    echo '<h1>' . __('文件编辑器', 'my-first-plugin') . '</h1>';
    echo '<div class="file-editor-container">';
    echo '<div class="file-list-panel">';
    echo '<h2>' . __('文件列表', 'my-first-plugin') . '</h2>';
    echo '<div id="file-list">';
    echo '<p>' . __('文件列表将在这里显示', 'my-first-plugin') . '</p>';
    echo '</div>';
    echo '</div>';
    echo '<div class="editor-panel">';
    echo '<h2>' . __('文件编辑器', 'my-first-plugin') . '</h2>';
    echo '<div id="file-editor-app">';
    echo '<p>' . __('请选择一个文件进行编辑', 'my-first-plugin') . '</p>';
    echo '</div>';
    echo '<div id="editor-message" style="display:none;"></div>';
    echo '</div>';
    echo '</div>';
    echo '</div>';
}

function code_editor_webdav_page() {
    // WebDAV管理页面
    echo '<div class="wrap">';
    echo '<h1>' . __('WebDAV管理', 'my-first-plugin') . '</h1>';
    echo '<div id="webdav-app">';
    echo '<div id="webdav-panel">';
    echo '<p>' . __('WebDAV管理功能页面', 'my-first-plugin') . '</p>';
    echo '<form method="post" action="">';
    echo '<table class="form-table">';
    echo '<tr>';
    echo '<th scope="row">' . __('服务器地址', 'my-first-plugin') . '</th>';
    echo '<td><input type="text" name="webdav_url" class="regular-text" /></td>';
    echo '</tr>';
    echo '<tr>';
    echo '<th scope="row">' . __('用户名', 'my-first-plugin') . '</th>';
    echo '<td><input type="text" name="webdav_username" /></td>';
    echo '</tr>';
    echo '<tr>';
    echo '<th scope="row">' . __('密码', 'my-first-plugin') . '</th>';
    echo '<td><input type="password" name="webdav_password" /></td>';
    echo '</tr>';
    echo '</table>';
    echo '<p class="submit"><input type="submit" name="submit" class="button button-primary" value="' . __('保存设置', 'my-first-plugin') . '" /></p>';
    echo '</form>';
    echo '</div>';
    echo '<div id="webdav-message" style="display:none;"></div>';
    echo '</div>';
    echo '</div>';
}

function code_editor_terminal_page() {
    // 终端模拟器页面
    echo '<div class="wrap">';
    echo '<h1>' . __('终端模拟器', 'my-first-plugin') . '</h1>';
    echo '<div id="terminal-app">';
    echo '<p>' . __('终端模拟器功能页面', 'my-first-plugin') . '</p>';
    echo '<div id="terminal-container" style="background:#000;color:#0f0;padding:10px;font-family:monospace;height:400px;overflow:auto;">';
    echo '<div>$ ' . __('欢迎使用终端模拟器', 'my-first-plugin') . '</div>';
    echo '<div>&gt; <span id="command-input" contenteditable="true" style="outline:none;"></span></div>';
    echo '</div>';
    echo '</div>';
    echo '</div>';
}

function code_editor_cloud_page() {
    // 云同步页面
    echo '<div class="wrap">';
    echo '<h1>' . __('云同步服务', 'my-first-plugin') . '</h1>';
    echo '<div id="cloud-sync-app">';
    echo '<p>' . __('云同步服务配置页面', 'my-first-plugin') . '</p>';
    echo '<form method="post" action="">';
    echo '<table class="form-table">';
    echo '<tr>';
    echo '<th scope="row">' . __('云服务提供商', 'my-first-plugin') . '</th>';
    echo '<td>';
    echo '<select name="cloud_provider">';
    echo '<option value="webdav">WebDAV</option>';
    echo '<option value="ftp">FTP</option>';
    echo '<option value="sftp">SFTP</option>';
    echo '</select>';
    echo '</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<th scope="row">' . __('服务器地址', 'my-first-plugin') . '</th>';
    echo '<td><input type="text" name="cloud_server" class="regular-text" /></td>';
    echo '</tr>';
    echo '</table>';
    echo '<p class="submit"><input type="submit" name="submit" class="button button-primary" value="' . __('保存设置', 'my-first-plugin') . '" /></p>';
    echo '</form>';
    echo '</div>';
    echo '</div>';
}

function code_editor_git_page() {
    // Git同步页面
    echo '<div class="wrap">';
    echo '<h1>' . __('Git同步', 'my-first-plugin') . '</h1>';
    echo '<div id="git-sync-app">';
    echo '<p>' . __('Git同步配置页面', 'my-first-plugin') . '</p>';
    echo '<form method="post" action="">';
    echo '<table class="form-table">';
    echo '<tr>';
    echo '<th scope="row">' . __('仓库URL', 'my-first-plugin') . '</th>';
    echo '<td><input type="text" name="git_repo_url" class="regular-text" /></td>';
    echo '</tr>';
    echo '<tr>';
    echo '<th scope="row">' . __('分支名称', 'my-first-plugin') . '</th>';
    echo '<td><input type="text" name="git_branch" value="main" /></td>';
    echo '</tr>';
    echo '</table>';
    echo '<p class="submit"><input type="submit" name="submit" class="button button-primary" value="' . __('保存设置', 'my-first-plugin') . '" /></p>';
    echo '</form>';
    echo '</div>';
    echo '</div>';
}

function code_editor_settings_page() {
    // 设置页面内容
    echo '<div class="wrap">';
    echo '<h1>' . __('代码编辑器设置', 'my-first-plugin') . '</h1>';
    echo '<div id="settings-app">';
    echo '<p>' . __('代码编辑器设置页面内容', 'my-first-plugin') . '</p>';
    echo '<form method="post" action="options.php">';
    echo '<table class="form-table">';
    echo '<tr>';
    echo '<th scope="row">' . __('默认编辑器主题', 'my-first-plugin') . '</th>';
    echo '<td>';
    echo '<select name="editor_theme">';
    echo '<option value="default">Default</option>';
    echo '<option value="eclipse">Eclipse</option>';
    echo '<option value="monokai">Monokai</option>';
    echo '</select>';
    echo '</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<th scope="row">' . __('启用行号', 'my-first-plugin') . '</th>';
    echo '<td><input type="checkbox" name="show_line_numbers" value="1" checked /></td>';
    echo '</tr>';
    echo '</table>';
    echo '<p class="submit"><input type="submit" name="submit" class="button button-primary" value="' . __('保存设置', 'my-first-plugin') . '" /></p>';
    echo '</form>';
    echo '</div>';
    echo '</div>';
}
?>