using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using UUN;
using System.Data.SqlClient;
using System.IO;
using System.Text;

public partial class Admin_YeMian_ZhuanYiWenJian : System.Web.UI.Page
{
    private 访问 访问;
    protected String 加载代码;
    protected void Page_Load(object sender, EventArgs e)
    {
        访问 = new 访问(this.Context);
        访问.开始处理("转移文件", "网站后台", "转移文件", new 访问.回调委托(ZhiXing));
        访问.关闭连接();
    }

    private void ZhiXing()
    {
        访问.验证管理员();

        String 标题信息=Request.QueryString["ti"];
        String 文件名;

        if (标题信息.StartsWith("wap_"))
            文件名 = 标题信息.Substring(4);
        else
            文件名 = 标题信息.Substring(3);
        文件名 = 文件名.Substring(0, 文件名.Length - 5);

        Label1.Text = 文件名 + ".aspx";
        if (this.IsPostBack)
            移动文件(文件名.Substring(0, 文件名.LastIndexOf('/') + 1), 文件名.Substring(文件名.LastIndexOf('/') + 1), WenJianJia.SelectedValue);
        else
            初始化(文件名);
    }

    private void 生成文件夹(DirectoryInfo DI, String 文件夹, int 深度)
    {
        DirectoryInfo[] DIS = DI.GetDirectories();
        for (int i = 0; i < DIS.Length; i++)
        {
            if (文件夹 + DIS[i].Name + "/" == Label1.Text)
                continue;
            WenJianJia.Items.Add(new ListItem(生成空格(深度) + DIS[i].Name, 文件夹 + DIS[i].Name + "/"));
            生成文件夹(DIS[i], 文件夹 + DIS[i].Name + "/", 深度 + 1);
        }
    }

    private String 生成空格(int 数量)
    {
        String 返回值 = "";
        for (int i = 0; i < 数量; i++)
            返回值 += "　";
        return 返回值 + "|-";
    }

    private void 初始化(String 文件名)
    {
        WenJianJia.Items.Add(new ListItem("主目录", "/"));
        if (文件名.StartsWith("/club/", StringComparison.OrdinalIgnoreCase))
            生成文件夹(new DirectoryInfo(Server.MapPath(程序.安装位置 + "Template/Club/" + 程序.设置["默认社区模板"] + "/WapPage/")), "/Club/", 1);
        else
            生成文件夹(new DirectoryInfo(Server.MapPath(程序.安装位置 + "Template/Content/" + 程序.设置["默认模板"] + "/WapPage/")), "/", 1);
    }

    private void 移动文件(String 文件夹, String 文件, String 文件夹位置)
    {
        访问.验证权限("8");
        if (WenJianJia.SelectedValue == "" || WenJianJia.SelectedValue == null)
            throw new Exception("请选择目标位置");

        String 新文件夹 = WenJianJia.SelectedValue;
        if (File.Exists(Server.MapPath(程序.安装位置 + 新文件夹.Substring(1) + 文件 + ".aspx")))
            throw new Exception("不能移动到该文件夹");

        //清除文件信息
        File.Delete(Server.MapPath(程序.安装位置 + 文件夹.Substring(1) + 文件 + ".aspx"));
        File.Delete(Server.MapPath(程序.安装位置 + 文件夹.Substring(1) + 文件 + ".aspx.cs"));
        if (文件夹.StartsWith("/club/", StringComparison.OrdinalIgnoreCase))
            new FileInfo(Server.MapPath(程序.安装位置 + "Template/Club/" + 程序.设置["默认社区模板"] + "/WapPage" + 文件夹.Substring(5) + 文件 + ".txt"))
            .MoveTo(Server.MapPath(程序.安装位置 + "Template/Club/" + 程序.设置["默认社区模板"] + "/WapPage" + 新文件夹.Substring(5) + 文件 + ".txt"));
        else
            new FileInfo(Server.MapPath(程序.安装位置 + "Template/Content/" + 程序.设置["默认模板"] + "/WapPage" + 文件夹 + 文件 + ".txt"))
            .MoveTo(Server.MapPath(程序.安装位置 + "Template/Content/" + 程序.设置["默认模板"] + "/WapPage" + 新文件夹 + 文件 + ".txt"));


        //转移数据

        String 页面文件地址;
        if (新文件夹.StartsWith("/club/", StringComparison.OrdinalIgnoreCase))
            页面文件地址 = 程序.安装位置 + "Template/Club/" + 程序.设置["默认社区模板"] + "/WapPage" + 新文件夹.Substring(5) + 文件 + ".txt";
        else
            页面文件地址 = 程序.安装位置 + "Template/Content/" + 程序.设置["默认模板"] + "/WapPage" + 新文件夹 + 文件 + ".txt";

        FileInfo FI = new FileInfo(Server.MapPath(页面文件地址));
        StreamReader 读取 = FI.OpenText();
        String 第一行内容 = 读取.ReadLine();
        String 文件内容 = 读取.ReadToEnd();
        读取.Close();
        bool 是否3G = 第一行内容.StartsWith("3G_");
        String 页面名称 = 是否3G ? 第一行内容.Substring(3) : 第一行内容.Substring(4);

        String ASPX代码, CS代码;
        编译器 编译 = new 编译器(this.Context, 访问.连接, "页面相关", !是否3G);
        编译.文件名称 = 程序.安装位置 + 新文件夹.Substring(1) + 文件 + ".aspx";
        编译.开始执行代码 = 编译.开始执行代码.Replace("$所在位置$", 页面名称)
            .Replace("$内容类型$", "网站页面")
            .Replace("$内容小类型$", 页面名称);

        CS代码 = 编译.编译(文件内容,
            新文件夹.Substring(1) + 文件, out ASPX代码);

        File.WriteAllText(Server.MapPath(程序.安装位置 + 新文件夹.Substring(1) + 文件 + ".aspx"), ASPX代码, Encoding.UTF8);
        File.WriteAllText(Server.MapPath(程序.安装位置 + 新文件夹.Substring(1) + 文件 + ".aspx.cs"), CS代码, Encoding.UTF8);

        加载代码 = "window.open('../DH_YeMianGuanLi.aspx','ZuoDaoHang');location.href='ZhuanYiWenJian.aspx?ti=" + Server.UrlEncode((是否3G ? "3g_" : "wap_") + 新文件夹 + 文件 + ".aspx") + "';";
    }
}
