@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@inject AssetService AssetService
@{
    var userInfo = User.UserInfo;
}
<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>@(ViewData["Title"] ?? "个人中心") - @(userInfo?.Name ?? "用户")</title>
    
    <environment include="Development">
        <link rel="stylesheet" href="~/css/member/member.css" asp-append-version="true">
        <link rel="stylesheet" href="~/css/member/dark-mode.css" asp-append-version="true">
    </environment>
    <environment exclude="Development">
        <link href="@Program.AssetsHost@AssetService.GetPath("css/member/member.min.css")" rel="stylesheet">
    </environment>
    <link rel="stylesheet" href="@Program.LibraryHost/library/fontawesome/css/all.min.css" />
    <link rel="stylesheet" href="@Program.LibraryHost/library/cherry-markdown/cherry-markdown.css" />
    <link rel="stylesheet" href="@Program.LibraryHost/library/prism/prism.css" />
    <link rel="stylesheet" href="@Program.LibraryHost/library/photoswipe/photoswipe.css" />
    
    <script src="@Program.LibraryHost/library/jquery/jquery.min.js"></script>
    <script src="@Program.LibraryHost/library/jquery.pjax.js"></script>
    @await RenderSectionAsync("Styles", required: false)
</head>
<body class="member-body">
    <!-- 手机端菜单切换按钮 -->
    <button class="menu-toggle" id="menuToggle">
        <i class="fa fa-bars"></i>
    </button>

    <!-- 手机端遮罩层 -->
    <div class="sidebar-overlay" id="sidebarOverlay"></div>

    <!-- 面包屑导航 -->
    <div class="breadcrumb-container">
        <div class="breadcrumb">
            <a href="/">首页</a>
            <span class="separator">/</span>
            <a href="@Url.Action("Index", "Member")">个人中心</a>
            @if (ViewData["Breadcrumb"] != null)
            {
                <span class="separator">/</span>
                <span class="current" id="currentPageTitle">@ViewData["Breadcrumb"]</span>
            }
        </div>
    </div>

    <!-- 主容器 -->
    <div class="member-container">
        <!-- 侧边栏导航 -->
        <div class="member-sidebar">
            <div class="user-profile">
                <div class="avatar-container">
                    <img src="@(userInfo?.Avatar)" alt="@userInfo?.Id" class="user-avatar"
                         id="userAvatar">
                    <div class="avatar-upload">
                        <i class="fa fa-camera"></i>
                    </div>
                </div>
                <h3 class="user-name" id="userName">@userInfo?.Id</h3>
                <p class="user-email" id="userEmail">@userInfo?.Sign</p>
            </div>

            <nav class="member-nav">
                <ul>
                    <li class="nav-item @(ViewData["ActiveMenu"]?.ToString() == "profile" ? "active" : "")">
                        <a asp-action="Index" asp-controller="Member" data-pjax>
                            <i class="fa fa-user"></i>
                            <span>基本设置</span>
                        </a>
                    </li>
                    <li class="nav-item @(ViewData["ActiveMenu"]?.ToString() == "articles" ? "active" : "")">
                        <a asp-action="Articles" asp-controller="Member" data-pjax>
                            <i class="fa fa-file-text"></i>
                            <span>我的文章</span>
                        </a>
                    </li>
                    <li class="nav-item @(ViewData["ActiveMenu"]?.ToString() == "mumbles" ? "active" : "")">
                        <a asp-action="Mumbles" asp-controller="Member" data-pjax>
                            <i class="fa fa-comment"></i>
                            <span>我的碎碎念</span>
                        </a>
                    </li>
                    <li class="nav-item @(ViewData["ActiveMenu"]?.ToString() == "timeline" ? "active" : "")">
                        <a asp-action="Timeline" asp-controller="Member" data-pjax>
                            <i class="fa fa-calendar"></i>
                            <span>我的时间轴</span>
                        </a>
                    </li>
                    <li class="nav-item @(ViewData["ActiveMenu"]?.ToString() == "photos" ? "active" : "")">
                        <a asp-action="Photos" asp-controller="Member" data-pjax>
                            <i class="fa fa-image"></i>
                            <span>我的相册</span>
                        </a>
                    </li>
                    @if (User.HasSystem)
                    {
                        <li class="nav-item">
                            <a href="@Program.HangfireDashboardPath" target="_blank">
                                <i class="fa-solid fa-bars-progress"></i>
                                <span>任务调度</span>
                            </a>
                        </li>
                    }
                </ul>
            </nav>

            <!-- 环境和版本信息 -->
            <div class="sidebar-footer">
                @{
                    var environment = Configuration["AgileConfig:env"] ?? "Unknown";
                    var envClass = environment.ToUpper() switch
                    {
                        "PROD" or "PRODUCTION" => "env-production",
                        "STAGING" => "env-staging",
                        "TEST" => "env-test",
                        "DEV" or "DEVELOPMENT" => "env-development",
                        _ => "env-unknown"
                    };
                }
                <div class="env-info">
                    <div class="env-badge @envClass">
                        <i class="fa fa-server"></i>
                        <span>@environment</span>
                    </div>
                    <div class="version-info">
                        <i class="fa fa-code-fork"></i>
                        <span>@Program.Version</span>
                    </div>
                </div>
            </div>
        </div>

        <!-- 主内容区域 -->
        <div class="member-content" id="pjax-container">
            @RenderBody()
        </div>
    </div>

    <!-- 确认删除模态框 -->
    <div class="modal-overlay" id="deleteModal" style="display: none;">
        <div class="modal-content">
            <div class="modal-header">
                <h3>确认删除</h3>
                <button type="button" class="close-btn" id="closeDeleteModal">
                    <i class="fa fa-times"></i>
                </button>
            </div>
            <div class="modal-body">
                <p>确定要删除这个项目吗?此操作无法撤销。</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" id="cancelDelete">取消</button>
                <button type="button" class="btn btn-danger" id="confirmDelete">确认删除</button>
            </div>
        </div>
    </div>

    <!-- 查看内容模态框 -->
    <div class="modal-overlay" id="viewContentModal" style="display: none;">
        <div class="modal-content large">
            <div class="modal-header">
                <h3>查看详细内容</h3>
                <button type="button" class="close-btn" id="closeViewContentModal">
                    <i class="fa fa-times"></i>
                </button>
            </div>
            <div class="modal-body" id="viewContentModalBody">
                <!-- 内容将被动态插入 -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" id="closeViewContentBtn">关闭</button>
            </div>
        </div>
    </div>

    <!-- 加载提示 -->
    <div class="loading-overlay" id="loadingOverlay">
        <div class="loading-spinner">
            <div class="spinner-border"></div>
            <span class="loading-text">加载中...</span>
        </div>
    </div>

    <script src="@Program.LibraryHost/library/showdown/showdown.min.js"></script>
    <script src="@Program.LibraryHost/library/prism/prism.js"></script>

    <environment include="Development">
        <script type="module" src="~/js/member/main.js" asp-append-version="true"></script>
    </environment>
    <environment exclude="Development">
        <script
            type="module"
            src="@Program.AssetsHost@AssetService.GetPath("js/member/main.min.js")"
            asp-fallback-src="@AssetService.GetPath("js/member/main.min.js")">
        </script>
    </environment>
    @await RenderSectionAsync("Scripts", required: false)
</body>
</html>
评论加载中...