using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;

namespace UUN
{
    /// <summary>
    /// 查看图片内容模板的编译部分
    /// </summary>
    public class 编译扩展_查看内容_图片 : 编译扩展接口
    {
        private SqlConnection 连接;
        private HttpContext HC;
        private 编译器 编译器;

        public 编译扩展_查看内容_图片(SqlConnection 连接, HttpContext HC, 编译器 编译器)
        {
            this.连接 = 连接;
            this.HC = HC;
            this.编译器 = 编译器;
        }

        private int 查看内容_图片_一页显示记录 = 0;
        private String 查看内容_图片_时间格式 = "yyyy-MM-dd HH:mm:ss";
        private String 查看内容_图片_范围ID;
        private String 查看内容_图片_查询字段 = "[ID],[所属栏目],[标题],[是否推荐],[是否审核],[外部链接],[是否关闭评论],[权限_仅限会员],[权限_需要等级],[权限_扣除积分]";
        private void 增加查询字段(String 字段名称)
        {
            String[] 字段数组 = 字段名称.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < 字段数组.Length; i++)
                if (查看内容_图片_查询字段.IndexOf("[" + 字段数组[i] + "]") == -1)
                    查看内容_图片_查询字段 += ",[" + 字段数组[i] + "]";
        }
        public String 开始执行代码()
        {
            if (编译器.是否WML网页)
                增加查询字段("内容模板");
            else
                增加查询字段("3G内容模板");
            编译器.方法库 += @"	private String 当前页面;
	//参数
	private new int ID;
	private int 栏目页码;
	private int 栏目排序;
	private int 栏目ID;
	private int 是否余下全部;
	//其它
	private String 跳页表单项;
	private String _3G跳页表单项;
	private String 查询条件="""";
	private Hashtable 图片内容;
	private Hashtable 图片文件;
	private DataRow 内容栏目;
	private String 查询字段;
	//设置
	private String 时间格式;
	private String 范围ID;
	//列表分页
	private int 当前页;
	private int 总页数;
	private int 总记录数;
	private int 一页显示记录;
	private String 列表跳页(int 页码)
	{
		return Server.HtmlEncode(常用.处理地址(当前页面+""?CID=""+栏目ID+""&ID=""+ID+
			""&cpage=""+栏目页码+""&corder=""+栏目排序+""&page=""+页码+""&yx=0"",访问.用户[""标识""].ToString()));
	}
	private Hashtable 获取图片内容()
	{
		SqlCommand 语句=new SqlCommand(""UPDATE [""+程序.数据表前缀+""内容_图片_图片] SET ""+
			""[点击数]=[点击数]+1,""+
			""[日点击数]=[日点击数]+1,""+
			""[周点击数]=[周点击数]+1 WHERE [是否删除]=@是否删除""+(ID==0?"""":"" AND [ID]=""+ID),访问.连接);
		语句.Parameters.Add(""@是否删除"",SqlDbType.Bit).Value=false;
		语句.ExecuteNonQuery();

		语句=new SqlCommand(""SELECT ""+查询字段+"" FROM [""+程序.数据表前缀+""内容_图片_图片] WHERE [是否删除]=@是否删除""+(ID==0?"""":"" AND [ID]=""+ID),访问.连接);
		语句.Parameters.Add(""@是否删除"",SqlDbType.Bit).Value=false;

		Hashtable 返回值=常用.SQL_获取(语句);

		if(返回值==null)
			throw new Exception(""内容不存在"");

		int 内容模板=Convert.ToInt32(返回值[""" + (编译器.是否WML网页 ? "" : "3G") + @"内容模板""]);

			if(File.Exists(""~/Template/Content/""+程序.设置[""默认模板""]+""/Content_Aspx/""+内容模板+"".aspx""))
				Server.Transfer(""~/Template/Content/""+程序.设置[""默认模板""]+""/Content_Aspx/""+内容模板+"".aspx"");


		常用.应用内容权限(返回值,""图片"",访问);

		ID=Convert.ToInt32(返回值[""ID""]);

		return 返回值;
	}
	private DataRow 获取内容栏目()
	{
		DataRow 返回值=null;
		DataSet 内容栏目=(DataSet)Application[""UUN_UUN3G_NeiRongLanMu""];
		for(int i=0;i<内容栏目.Tables[0].Rows.Count;i++)
		{
			DataRow 行=内容栏目.Tables[0].Rows[i];
			if(Convert.ToInt32(行[""ID""])==栏目ID)
				返回值=行;
		}

		if(返回值==null)
			throw new Exception(""内容栏目不存在"");

		return 返回值;
	}
	private String 生成余下全部地址()
	{
		return Server.HtmlEncode(常用.处理地址(当前页面+""?CID=""+栏目ID+""&ID=""+ID+
			""&cpage=""+栏目页码+""&corder=""+栏目排序+""&page=""+(当前页+1)+""&yx=1"",访问.用户[""标识""].ToString()));
	}
	private void 生成图片内容()
	{
		当前页=Convert.ToInt32(Request.QueryString[""page""]);
		图片文件=new Hashtable();
		设置 图片资源=new 设置(File.ReadAllText(Server.MapPath(程序.安装位置+""Data/DT_TuPian/""+(ID/500)+""/""+ID+"".xml""),Encoding.UTF8));
		总记录数=图片资源.数据项.Count;
		总页数=常用.计算总页数(总记录数,一页显示记录);
		当前页=常用.计算当前页(总页数,当前页);
		if(是否余下全部==1)
		{
			int i1=0;
			for(int i=(当前页-1)*一页显示记录;i<总记录数;i++)
			{
				图片文件.Add(i1,图片资源[Convert.ToString(i+1)]);
				i1++;
			}
		}
		else
		{
			int i1=0;
			for(int i=(当前页-1)*一页显示记录;i<当前页*一页显示记录&&i<总记录数;i++)
			{
				图片文件.Add(i1,图片资源[Convert.ToString(i+1)]);
				i1++;
			}
		}
	}
";
            String 返回值 = "";
            返回值 += @"	ID=Convert.ToInt32(Request.QueryString[""ID""]);
	栏目页码=Convert.ToInt32(Request.QueryString[""cpage""]);
	栏目排序=Convert.ToInt32(Request.QueryString[""corder""]);
	是否余下全部=Convert.ToInt32(Request.QueryString[""yx""]);
	一页显示记录=获取一页显示记录数();
	查询字段=获取查询字段();
	时间格式=获取时间格式();
	范围ID=获取范围ID();
	图片内容=获取图片内容();
	栏目ID=Convert.ToInt32(图片内容[""所属栏目""]);
	当前页面=程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Content.aspx"";
	内容栏目=获取内容栏目();
	跳页表单项=""<postfield name=\""ID\"" value=\""""+ID+""\"" />""+
		""<postfield name=\""CID\"" value=\""""+栏目ID+""\"" />""+
		""<postfield name=\""cpage\"" value=\""""+栏目页码+""\"" />""+
		""<postfield name=\""corder\"" value=\""""+栏目排序+""\"" />""+
		""<postfield name=\""""+程序.设置[""标识名称""]+
		""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
	_3G跳页表单项=""<input type=\""hidden\"" name=\""ID\"" value=\""""+ID+""\"" />""+
		""<input type=\""hidden\"" name=\""CID\"" value=\""""+栏目ID+""\"" />""+
		""<input type=\""hidden\"" name=\""cpage\"" value=\""""+栏目页码+""\"" />""+
		""<input type=\""hidden\"" name=\""corder\"" value=\""""+栏目排序+""\"" />""+
		""<input type=\""hidden\"" name=\""""+程序.设置[""标识名称""]+
		""\"" value=\""""+访问.用户[""标识""]+""\"" />"";
	生成图片内容();
";
            return 返回值;
        }

        public String 编译公共标签(String 代码)
        {
            switch (代码)
            {
                case "ID":
                    return "\t\t返回值.Append(图片内容[\"ID\"]);\r\n";
                case "所属栏目":
                    return "\t\t返回值.Append(图片内容[\"所属栏目\"]);\r\n";
                case "栏目名称":
                    return "\t\t返回值.Append(Server.HtmlEncode(内容栏目[\"栏目名称\"].ToString()));\r\n";
                case "标题":
                    增加查询字段("标题");
                    return "\t\t返回值.Append(Server.HtmlEncode(图片内容[\"标题\"].ToString()));\r\n";
                case "发布时间":
                    增加查询字段("发布时间");
                    return "\t\t返回值.Append(时间格式==null?图片内容[\"发布时间\"].ToString():Convert.ToDateTime(图片内容[\"发布时间\"]).ToString(时间格式));\r\n";
                case "点击数":
                    增加查询字段("点击数");
                    return "\t\t返回值.Append(图片内容[\"点击数\"]);\r\n";
                case "日点击数":
                    增加查询字段("日点击数");
                    return "\t\t返回值.Append(图片内容[\"日点击数\"]);\r\n";
                case "周点击数":
                    增加查询字段("周点击数");
                    return "\t\t返回值.Append(图片内容[\"周点击数\"]);\r\n";
                case "收藏数":
                    增加查询字段("收藏数");
                    return "\t\t返回值.Append(图片内容[\"收藏数\"]);\r\n";
                case "评论数":
                    增加查询字段("评论数");
                    return "\t\t返回值.Append(图片内容[\"评论数\"]);\r\n";
                case "最后评论时间":
                    增加查询字段("最后评论时间");
                    return "\t\t返回值.Append(时间格式==null?图片内容[\"最后评论时间\"].ToString():Convert.ToDateTime(图片内容[\"最后评论时间\"]).ToString(时间格式));\r\n";
                case "最后收藏时间":
                    增加查询字段("最后收藏时间");
                    return "\t\t返回值.Append(时间格式==null?图片内容[\"最后收藏时间\"].ToString():Convert.ToDateTime(图片内容[\"最后收藏时间\"]).ToString(时间格式));\r\n";
                case "当前页":
                    return "\t\t返回值.Append(当前页);\r\n";
                case "总页数":
                    return "\t\t返回值.Append(总页数);\r\n";
                case "总记录数":
                    return "\t\t返回值.Append(总记录数);\r\n";
                case "推荐":
                    return @"		if(Convert.ToBoolean(图片内容[""是否推荐""]))
		{
";
                case "/推荐":
                    return @"
		}
";
                case "未推荐":
                    return @"		if(!Convert.ToBoolean(图片内容[""是否推荐""]))
		{

";
                case "/未推荐":
                    return @"
		}
";
                case "关闭评论":
                    return @"		if(Convert.ToBoolean(图片内容[""是否关闭评论""]))
		{
";
                case "/关闭评论":
                    return @"
		}
";
                case "未关闭评论":
                    return @"		if(!Convert.ToBoolean(图片内容[""是否关闭评论""]))
		{
";
                case "/未关闭评论":
                    return @"
		}
";
                case "包含评论":
                    增加查询字段("评论数");
                    return @"		if(Convert.ToInt32(图片内容[""评论数""])>0)
		{
";
                case "/包含评论":
                    return @"
		}
";
                case "不包含评论":
                    增加查询字段("评论数");
                    return @"		if(Convert.ToInt32(图片内容[""评论数""])==0)
		{
";
                case "/不包含评论":
                    return @"
		}
";
                case "收藏地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (编译器.是否WML网页 ? "" : "3G_") + "Collection_Save.aspx?type=Content&CID=\"+内容栏目[\"ID\"]+\"&ID=\"+图片内容[\"ID\"],访问.用户[\"标识\"].ToString())));";
                case "评论地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "Comment.aspx?CID=\"+栏目ID+\"&ID=\"+图片内容[\"ID\"],访问.用户[\"标识\"].ToString())));\r\n";
                case "首页":
                    return @"		if(当前页==1)
		{
";
                case "/首页":
                    return @"
		}
";
                case "尾页":
                    return @"		if(当前页==总页数)
		{
";
                case "/尾页":
                    return @"
		}
";
                case "上级栏目地址":
                    return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "Column.aspx?CID=\"+栏目ID+\"&order=\"+栏目排序+\"&page=\"+栏目页码,访问.用户[\"标识\"].ToString())));\r\n";
                default:
                    return "";
            }
        }

        private String 编译模板方法_图片内容(String 格式)
        {
            String 随机值=常用.随机字符(8);
            编译器.方法库 += "\t\tprivate void 图片内容" + 随机值 + @"()
		{
";
            编译器.方法库 += @"
			for(int i=0;i<图片文件.Count;i++)
			{
				String[] 图片数组=图片文件[i].ToString().Split(new char[]{'""'});
			/*foreach(int 键 in 图片文件.Keys)
			{
				String[] 图片数组=图片文件[键].ToString().Split(new char[]{'""'},StringSplitOptions.RemoveEmptyEntries);*/
				FileInfo FI=new FileInfo(Server.MapPath(Server.HtmlDecode(图片数组[0])));
";
            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("序号", "(当前页-1)*一页显示记录+i+1");
            属性列表.Add("图片地址", "图片数组[0]");
            属性列表.Add("图片内容", "\"<img src=\\\"\"+图片数组[0]+\"\\\" alt=\\\"图片\\\"\"+常用.获取图片宽度高度(\"图片\")+\" />\"");
            属性列表.Add("小图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=small&img=\"+Server.UrlEncode(Server.HtmlDecode(图片数组[0]))+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("中图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=middle&img=\"+Server.UrlEncode(Server.HtmlDecode(图片数组[0]))+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("大图地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=big&img=\"+Server.UrlEncode(Server.HtmlDecode(图片数组[0]))+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("图片缩放地址", "Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (编译器.是否WML网页 ? "" : "3G_") + "ImageZoom.aspx?type=null&img=\"+Server.UrlEncode(Server.HtmlDecode(图片数组[0]))+\"&rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString()))");
            属性列表.Add("图片格式", "FI.Extension.Substring(1)");
            属性列表.Add("图片大小", "常用.计算文件大小(FI.Length)");
            属性列表.Add("图片简介", "图片数组[1]");
            编译器.方法库 += 编译器.生成代码项(属性列表, 格式);
            编译器.方法库 += @"
			}
		}
";
            return "\t\t图片内容" + 随机值 + "();\r\n";
        }

        private String 编译模板方法_内容分页(int ID, String 无分页代码)
        {
            return 编译器.编译内容分页("Content", "ContentPage", ID, 无分页代码);
        }

        private String 编译模板方法_上下图片(String 格式, int 字数, String 时间格式, String 空记录代码,bool 上_下)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("图片地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            必须字段.Add("图片内容", "文件资源");
            必须字段.Add("随机图片", "文件资源");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("图片地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+栏目ID+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+栏目ID,访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+栏目ID+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("图片内容", @"常用.显示图片(行[""文件资源""].ToString(),""图片"",false)");
            字段代码.Add("随机图片", @"常用.显示图片(行[""文件资源""].ToString(),""图片"",true)");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, "", 必须字段, 字段代码, out 行代码);

            编译器.方法库 += @"	private void 上下图片" + 随机值 + @"()
	{
		String SQL=""SELECT "+查询字段+ @" FROM [""+程序.数据表前缀+""内容_图片_图片] WHERE [是否审核]=@是否审核 AND [是否删除]=@是否删除"";
		if(范围ID!=""""&&范围ID!=null)
		{
			String[] 范围ID数组=范围ID.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);
			SQL+="" AND ("";
			for(int i=0;i<范围ID数组.Length;i++)
				if(i==0)
					SQL+=""[所属栏目]=""+范围ID数组[i];
				else
					SQL+="" OR [所属栏目]=""+范围ID数组[i];
			SQL+="")"";
		}
		else
			SQL+="" AND [所属栏目]=""+栏目ID;
";
            if (上_下)
                编译器.方法库 += "\t\tSQL+=\" AND [ID]<\"+ID+\" ORDER BY [ID] DESC\";\r\n";
            else
                编译器.方法库 += "\t\tSQL+=\" AND [ID]>\"+ID+\" ORDER BY [ID]\";\r\n";
            编译器.方法库 += @"		SqlCommand 语句=new SqlCommand(SQL,访问.连接);
		语句.Parameters.Add(""@是否审核"",SqlDbType.Bit).Value=false;
		语句.Parameters.Add(""@是否删除"",SqlDbType.Bit).Value=false;
		SqlDataReader 行=语句.ExecuteReader();
		if(行.Read())
		{
";
            编译器.方法库 += 编译器.生成代码项(字段代码, 格式);
            编译器.方法库 += @"
		}
		else
		{
			返回值.Append(@"""+空记录代码.Replace("\"","\"\"")+@""");
		}
		行.Close();
	}
";
            String 返回值 = "";
            返回值 += "\t\t上下图片" + 随机值 + "();\r\n";
            return 返回值;
        }

        private String 编译模板方法_评论列表(int 排序, int 数量, String 格式, String 交替格式, int 字数, String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("评论地址", "ID,内容ID,所属栏目");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("评论用户地址", "评论用户ID");
            必须字段.Add("内容地址", "所属栏目,内容ID");
            必须字段.Add("支持地址", "ID");
            必须字段.Add("反对地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+栏目ID+""&ID=""+行[""内容ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+栏目ID,访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("评论用户地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (编译器.是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""评论用户ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("评论用户昵称", @"Server.HtmlEncode(行[""评论用户昵称""].ToString())");
            字段代码.Add("内容地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+栏目ID+""&ID=""+行[""内容ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("内容标题", @"Server.HtmlEncode(行[""内容标题""].ToString())");
            字段代码.Add("评论内容", @"Server.HtmlEncode(常用.截取字符串(行[""评论内容""].ToString()," + 字数 + "))");
            字段代码.Add("支持地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Comment_Case.aspx?z=true&ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("反对地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Comment_Case.aspx?z=false&ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 编译器.生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            编译器.方法库 += "\tprivate void 评论列表" + 随机值 + "()\r\n" +
                "\t{\r\n";
            生成评论列表条件(排序, 字数, 时间格式, 查询字段);
            生成查询结果列表(数量, 行代码,空记录代码);

            return "\t\t评论列表" + 随机值 + "();\r\n";
        }

        private void 生成评论列表条件(int 排序, int 字数, String 时间格式, String 查询字段)
        {
            编译器.方法库 += "\t\tSqlCommand 语句=new SqlCommand(\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"内容_评论] WHERE [内容ID]=\"+ID+\" AND [内容类型]='图片' ORDER BY ";
            switch (排序)
            {
                case 0:
                    编译器.方法库 += "[发表时间]";
                    break;
                case 1:
                    编译器.方法库 += "[发表时间] DESC";
                    break;
                case 2:
                    编译器.方法库 += "[支持] DESC";
                    break;
                default:
                    编译器.方法库 += "[反对] DESC";
                    break;
            }
            编译器.方法库 += "\",访问.连接);\r\n";
        }

        private void 生成查询结果列表(int 数量, String 行代码,String 空记录代码)
        {
            编译器.方法库 += "\t\tDataSet 数据=new DataSet();\r\n";
            编译器.方法库 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            编译器.方法库 += "\t\t填充.Fill(数据,0," + 数量 + ",\"表\");\r\n";
            编译器.方法库 += "\t\tif(数据.Tables[0].Rows.Count<1)\r\n";
            编译器.方法库 += "\t\t\t返回值.Append(@\"" + 空记录代码.Replace("\"", "\"\"") + "\");\r\n";
            编译器.方法库 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += 行代码;
            编译器.方法库 += "\t\t}\r\n";

            编译器.方法库 += "\t}\r\n";
        }

        private String 编译模板方法_图片范围(String ID)
        {
            if (ID != "")
                查看内容_图片_范围ID = ID;
            return "";
        }

        private String 编译模板方法_格式设置(String 时间格式)
        {
            if (时间格式 != "")
                查看内容_图片_时间格式 = 时间格式;
            return "";
        }

        private String 编译模板方法_显示设置(int 一页显示图片数)
        {
            if (一页显示图片数 > 0)
                查看内容_图片_一页显示记录 = 一页显示图片数;
            return "";
        }

        private String 编译模板方法_上级栏目列表(int 排序, String 代码)
        {
            String 返回值 = "";
            String 随机值 = 常用.随机字符(8);
            编译器.方法库 += "\tprivate String 生成上级栏目列表代码" + 随机值 + "(DataSet 数据,int ID)\r\n";
            编译器.方法库 += "\t{\r\n";
            编译器.方法库 += "\t\tif(ID!=0)\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += "\t\t\tString 返回值=\"\";\r\n";
            编译器.方法库 += "\t\t\tString 栏目名称=\"\";\r\n";
            编译器.方法库 += "\t\t\tint 上级栏目=0;\r\n";
            编译器.方法库 += "\t\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            编译器.方法库 += "\t\t\t{\r\n";
            编译器.方法库 += "\t\t\t\tDataRow 行=数据.Tables[0].Rows[i];\r\n";
            编译器.方法库 += "\t\t\t\tif(Convert.ToInt32(行[\"ID\"])==ID)\r\n";
            编译器.方法库 += "\t\t\t\t{\r\n";
            编译器.方法库 += "\t\t\t\t\t栏目名称=Convert.ToString(行[\"栏目名称\"]);\r\n";
            编译器.方法库 += "\t\t\t\t\t上级栏目=Convert.ToInt32(行[\"所属栏目\"]);\r\n";
            编译器.方法库 += "\t\t\t\t}\r\n";
            编译器.方法库 += "\t\t\t}\r\n";
            Hashtable 属性列表 = new Hashtable();
            属性列表.Add("栏目名称", "Server.HtmlEncode(栏目名称)");
            属性列表.Add("地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (编译器.是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+栏目ID,访问.用户[""标识""].ToString()))");
            编译器.方法库 += 编译器.生成代码项(属性列表, 代码, "返回值");
            if (排序 == 0)
                编译器.方法库 += "\t\t\t\treturn 生成上级栏目列表代码" + 随机值 + "(数据,上级栏目)+返回值;\r\n";
            else
                编译器.方法库 += "\t\t\t\treturn 返回值+生成上级栏目列表代码" + 随机值 + "(数据,上级栏目);\r\n";
            编译器.方法库 += "\t\t}\r\n";
            编译器.方法库 += "\t\telse\r\n";
            编译器.方法库 += "\t\t{\r\n";
            编译器.方法库 += "\t\t\treturn \"\";\r\n";
            编译器.方法库 += "\t\t}\r\n";
            编译器.方法库 += "\t}\r\n";
            返回值 += "\t\tDataSet 数据" + 随机值 + "=(DataSet)Application[\"UUN_UUN3G_NeiRongLanMu\"];\r\n";
            返回值 += "\t\t返回值.Append(生成上级栏目列表代码" + 随机值 + "(数据" + 随机值 + ",栏目ID));\r\n";
            return 返回值;
        }

        public String 编译模板方法(String 方法名称, String[] 属性数组)
        {
            switch (方法名称)
            {
                case "图片内容":
                    return 编译模板方法_图片内容(属性数组[0]);
                case "内容分页":
                    return 编译模板方法_内容分页(Convert.ToInt32(属性数组[0]), 属性数组[1]);
                case "下个图片":
                    return 编译模板方法_上下图片(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        false);
                case "上个图片":
                    return 编译模板方法_上下图片(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        true);
                case "_评论列表":
                    return 编译模板方法_评论列表(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6]);
                case "图片范围":
                    return 编译模板方法_图片范围(属性数组[0]);
                case "格式设置":
                    return 编译模板方法_格式设置(属性数组[0]);
                case "显示设置":
                    return 编译模板方法_显示设置(Convert.ToInt32(属性数组[0]));
                case "上级栏目列表":
                    return 编译模板方法_上级栏目列表(Convert.ToInt32(属性数组[0]),
                        属性数组[1]);
                case "_图片列表":
                    return 编译器.编译图片列表("ID", true,
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        属性数组[4],
                        属性数组[5],
                        Convert.ToInt32(属性数组[6]),
                        属性数组[7],
                        属性数组[8]);
                default:
                    return "";
            }
        }


        public string 结束执行代码()
        {
            编译器.方法库 += @"	private int 获取一页显示记录数()
	{
";
            if (查看内容_图片_一页显示记录 == 0)
                编译器.方法库 += "\t\treturn 访问.获取一页显示图片数();\r\n";
            else
                编译器.方法库 += "\t\treturn " + 查看内容_图片_一页显示记录 + ";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取范围ID()
	{
";
            if (查看内容_图片_范围ID == null || 查看内容_图片_范围ID == "")
                编译器.方法库 += "\t\treturn null;\r\n";
            else
                编译器.方法库 += "\t\treturn @\"" + 查看内容_图片_范围ID + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取时间格式()
	{
";
            if (查看内容_图片_时间格式 == null || 查看内容_图片_时间格式 == "")
                编译器.方法库 += "\t\treturn null;\r\n";
            else
                编译器.方法库 += "\t\treturn @\"" + 查看内容_图片_时间格式.Replace("\"", "\"\"") + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.方法库 += @"	private String 获取查询字段()
	{
";
            编译器.方法库 += "\t\treturn @\"" + 查看内容_图片_查询字段.Replace("\"", "\"\"") + "\";\r\n";
            编译器.方法库 += @"
	}
";
            编译器.查询字段 = 查看内容_图片_查询字段;
            return "";
        }
    }
}