using System;
          using System.Data;
          using System.Configuration;
          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 zj123.Model;
          using System.IO;
          using System.Text.RegularExpressions;
          using System.Runtime.InteropServices;
          using System.Text;
          using System.Collections;
          namespace WebUI.html
          {
              public class EasyHtml
              {
                  public bool MakeHtml(string artid)
                  {
                     
                      bool succ = false;
                      int len = Convert.ToInt32(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["titlelength"]) ?? "20");
                      //讀取數據
                      string sql = string.Format("select a.*,b.ClassName,b.Depth,b.OrderBy,b.isTop,b.isList,b.IsLinks,b.Links,b.PicURL,b.ParentID,b.TemplateoutId,b.TemplateinNeiId,b.TemplateinListId from article a,zone b  where a.classid=b.classid and a.Status=3 and a.articleid={0}", artid);
                      DataTable dt = DbHelperOleDb.Query(sql).Tables[0];
                      if(dt.Rows.Count>0)
                      {
                      //外模板
                          string waitemp = "";
                          DataTable waidt  =DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}",Convert.ToString(dt.Rows[0]["TemplateoutId"]).Trim())).Tables[0];
                          if (waidt.Rows.Count > 0)
                          {
                              waitemp = Convert.ToString(waidt.Rows[0]["TemplateContent"]);
                          }
                      //內模板
                          string neitemp = "";
                          DataTable neidt = DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}", Convert.ToString(dt.Rows[0]["TemplateinNeiId"]).Trim())).Tables[0];
                          if (neidt.Rows.Count > 0)
                          {
                              neitemp = Convert.ToString(neidt.Rows[0]["TemplateContent"]);
                          }
                          //替換模板
                          waitemp = waitemp.Replace("$intemplate$", neitemp);
                          //替換類型
                          string tempclassname = classes.Common.GetP(Convert.ToString(dt.Rows[0]["classid"]));
                          waitemp = waitemp.Replace("$ClassName$", tempclassname);
                      #region "文章列表"
            
                          //最新的文章
                          System.Text.StringBuilder sbneartitle = new System.Text.StringBuilder("<div align=\"left\">");
                          DataTable nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 order by updatetime desc").Tables[0];
                          for (int i = 0; i < nearTitledt.Rows.Count; i++)
                          {
                              sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>",Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]),Convert.ToString(nearTitledt.Rows[i]["Title"]));
                          }
                          sbneartitle.Append("</ol></div>");
                          waitemp = waitemp.Replace("$NearTitle$", sbneartitle.ToString());
                          sbneartitle.Remove(0,sbneartitle.ToString().Length);
                          if (waitemp.Contains("$OnTopTitle$"))
                          {
                              sbneartitle.Append("<div align=\"left\">");

                              //固定
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and OnTop=1 order by updatetime desc").Tables[0];
                              for (int i = 0; i < nearTitledt.Rows.Count; i++)
                              {
                              sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[i]["Title"]));
                              }
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("</ol></div>");
                              waitemp = waitemp.Replace("$OnTopTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                          }
                       
                          if (waitemp.Contains("$HitsTitle$"))
                          {
                              sbneartitle.Append("<div align=\"left\">");
                              //熱門
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and Hits>1000 order by Hits desc,updatetime desc").Tables[0];
                              for (int i = 0; i < nearTitledt.Rows.Count; i++)
                              {
                              sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[i]["Title"]));
                              }
                              sbneartitle.Append("</ol></div>");


                              waitemp = waitemp.Replace("$HitsTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                          }
                  
                          if (waitemp.Contains("$Elite$"))
                          {
                              sbneartitle.Append("<div align=\"left\">");
                              //推薦Elite
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and Elite=1 order by updatetime desc").Tables[0];
                              for (int i = 0; i < nearTitledt.Rows.Count; i++)
                              {
                              sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[i]["Title"]));
                              }

                              sbneartitle.Append("</ol></div>");
                              waitemp = waitemp.Replace("$Elite$", sbneartitle.ToString());

                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                          }

                      
                     
                          //相關Classid
                          if (waitemp.Contains("$ClassTitle$"))
                          {
                              sbneartitle.Append("<div align=\"left\">");
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and classid=" + Convert.ToString(dt.Rows[0]["classid"]) + " order by updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }

                              sbneartitle.Append("</ol></div>");
                              waitemp = waitemp.Replace("$ClassTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                          }

                          //相關Classid
                          if (waitemp.Contains("$LikeTitle$"))
                          {
                              sbneartitle.Append("<div align='left'>");
                              DataTable dtlike = zj123.Model.Article.GetLike(artid);
                              for (int likei = 0; likei < dtlike.Rows.Count; likei++)
                              {
                                  sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(dtlike.Rows[likei]["HtmlPath"]), Convert.ToString(dtlike.Rows[likei]["Title"]));
                              }
                              sbneartitle.Append("</ol></div>");
                              waitemp = waitemp.Replace("$LikeTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                          }

                              /////////////////////////////////////////////////////////////////////////////////////////////
                      #endregion
                              //替換最新的數據
                              for (int j = 0; j < dt.Columns.Count; j++)
                              {
                                  if (dt.Columns[j].ColumnName.Trim() == "Title")
                                  {
                                      string temp1 = "";
                                      string temp2 = "";
                                      string typefont = Convert.ToString(dt.Rows[0]["TitleFontType"]);
                                      if (typefont == "0")
                                      {
                                          temp1 = "<strong>";
                                          temp2 = "</strong>";
                                      }
                                      else if (typefont == "1")
                                      {
                                          temp1 = "<em>";
                                          temp2 = "</em>";
                                      }
                                      else if (typefont == "2")
                                      {
                                          temp1 = "<strong><em>";
                                          temp2 = "</strong></em>";
                                      }
                                      else
                                      {

                                      }
                                      //System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex();
                                      //Match match = Regex.Matches();
                                      //reg.Replace(waitemp, Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]), 1, waitemp.IndexOf("$Title$"));
                                      string temp11 = waitemp.Substring(0, waitemp.IndexOf("$Title$") + 8);
                                      string temp22 = waitemp.Substring(waitemp.IndexOf("$Title$") + 8);
                                      temp11 = temp11.Replace("$Title$", Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()])+"---"+Regex.Replace(Regex.Replace(tempclassname,"<[^>]*>",""),"[>|<]*",""));
                                      temp22 = temp22.Replace("$Title$", "<font color='" + Convert.ToString(dt.Rows[0]["TitleFontColor"]) + "'>" + temp1 + Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]) + temp2 + "</font>");
                                      waitemp = temp11 + temp22;
                                      temp11 = null;
                                      temp22 = null;
                                      //waitemp = waitemp.Replace("$" + dt.Columns[j].ColumnName.Trim() + "$", "<font color='" + Convert.ToString(dt.Rows[0]["TitleFontColor"]) + "'>" +temp1+ Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]) +temp2+ "</font>");
                                  }
                                  else if (dt.Columns[j].ColumnName.Trim().ToLower() == "hits")
                                  {
                                      waitemp = waitemp.Replace("$" + dt.Columns[j].ColumnName.Trim() + "$", Convert.ToInt16(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]) > 1000 ? ("熱門") : (""));
                                  }
                                  else if (dt.Columns[j].ColumnName.Trim().ToLower() == "ontop")
                                  {
                                      waitemp = waitemp.Replace("$" + dt.Columns[j].ColumnName.Trim() + "$", Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]).ToLower() == "true" ? ("置頂") : (""));
                                  }
                                  else if (dt.Columns[j].ColumnName.Trim().ToLower() == "elite")
                                  {
                                      waitemp = waitemp.Replace("$" + dt.Columns[j].ColumnName.Trim() + "$", Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]).ToLower().ToString() == "true" ? ("推薦") : (""));
                                  }
                                  else
                                  {
                                      waitemp = waitemp.Replace("$" + dt.Columns[j].ColumnName.Trim() + "$", Convert.ToString(dt.Rows[0][dt.Columns[j].ColumnName.Trim()]));
                                  }

                              }
                          //替換鏈表信息
                          //$typejs$
                          waitemp = waitemp.Replace("$typejs$", Convert.ToString(dt.Rows[0]["ClassID"]));
                          //$numjs$
                          waitemp = waitemp.Replace("$numjs$", "10");
                          //$setjs$
                          waitemp = waitemp.Replace("$setjs$","");
                         
                          ///js腳本信息


                         //根據路徑生成頁面
                          //路徑 檢查
                          string path = System.Web.HttpContext.Current.Request.PhysicalApplicationPath.Trim()  + Convert.ToString(dt.Rows[0]["Links"]) + "\\" + Convert.ToDateTime(dt.Rows[0]["CreateTime"]).ToString("yyyy-MM");
                          if(!Directory.Exists(path))
                            Directory.CreateDirectory(path);
                        string filename = "\\"+ Convert.ToString(dt.Rows[0]["ArticleID"]) + ".html";
                          using(StreamWriter sw = new StreamWriter(path+"\\"+filename,false,System.Text.Encoding.GetEncoding("gb2312")))
                          {
                              sw.Write(waitemp);
                              sw.Flush();
                              sw.Close();
                          }
                          //修改文章轉臺
                          try
                          {
                              if (artid == null)
                                  return false;
                              int j = int.Parse(artid);
                          }
                          catch
                          {
                              return false;
                          }

                          string sql1 = string.Format("update article set iscreate=1,htmlpath='{0}' where articleid={1}", "/" + Convert.ToString(dt.Rows[0]["Links"]).Replace("\\\\", "/") + "/" + Convert.ToDateTime(dt.Rows[0]["CreateTime"]).ToString("yyyy-MM") + filename, artid);
                          DbHelperOleDb.ExecuteSql(sql1);
                         
                      }
                      else
                      {
                          return false;
                      }
                

                      return succ;
                  }
                  /// <summary>
                  /// 生成列表頁
                  /// </summary>
                  /// <param name="classid"></param>
                  /// <returns></returns>
                  public bool MakeList(string classid)
                  {
                      int len = Convert.ToInt32(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["titlelength"]) ?? "20");
                      bool succ = false;
                      try
                   {        
                    int i = int.Parse(classid);

                   }
                   catch
                   {
                    
                 return false;
                   }
                      DataTable dt = DbHelperOleDb.Query(string.Format("select a.*,b.ClassName,b.Depth,b.OrderBy,b.isTop,b.isList,b.IsLinks,b.Links,b.PicURL,b.ParentID,b.TemplateoutlistId,b.TemplateoutId,b.TemplateinNeiId,b.TemplateinListId,b.keywords,b.[description] from article a,zone b  where a.classid=b.classid and  iscreate=1 and a.Status=3 and a.classid={0} order by a.UpdateTime desc,OnTop desc,Elite desc,Hits desc", classid)).Tables[0];
                      if (dt.Rows.Count > 0)
                      {
                          string classpath = HttpContext.Current.Request.PhysicalApplicationPath + @"\" + Convert.ToString(dt.Rows[0]["Links"]).Trim();
                          //讀取外模板信息
                          string templatewai = "";
                          DataTable templatewaidt = DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}", Convert.ToString(dt.Rows[0]["TemplateoutlistId"]))).Tables[0];
                          if (templatewaidt.Rows.Count > 0)
                          {
                              templatewai = Convert.ToString(templatewaidt.Rows[0]["TemplateContent"]);
                          }
                          //根據類型替換標題
                          string tempclassname = classes.Common.GetP(classid);
                          templatewai = templatewai.Replace("$Title$", Convert.ToString(dt.Rows[0]["ClassName"]).Trim() +"--"+Regex.Replace(Regex.Replace(tempclassname,"<[^>]*>",""),"[<|>]*",""));
                          templatewai = templatewai.Replace("$ClassTitleTop$", Convert.ToString(dt.Rows[0]["ClassName"]).Trim());
                          templatewai = templatewai.Replace("$ClassName$", tempclassname);
                          templatewai = templatewai.Replace("$Keyword$", Convert.ToString(dt.Rows[0]["Keywords"]).Trim());
                          templatewai = templatewai.Replace("$Description$", Convert.ToString(dt.Rows[0]["Description"]).Trim());

                          int zong = dt.Rows.Count;
                          int size = 10;
                          try
                          {
                              size = Convert.ToInt16(System.Configuration.ConfigurationManager.AppSettings["pagesize"]);
                          }
                          catch
                          {

                              size = 10;
                          }
                          int pagecount = zong % size == 0 ? (zong / 10) : (zong / 10 + 1);
                          string listcontent = "";
                          DataTable dtlist = DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}", Convert.ToString(dt.Rows[0]["TemplateinListId"]))).Tables[0];
                          if (dtlist.Rows.Count > 0)
                          {
                              listcontent = Convert.ToString(dtlist.Rows[0]["TemplateContent"]);
                          }
                          //// Match mat = Regex.Match(this.rtbconten.Text.Trim(), "<tablehead>(?<content>.*)<tableheadend><tablebody></tablebodyend><tablepage></tablepage><tablebottom></tablebottomend>", RegexOptions.Multiline | RegexOptions.IgnoreCase);
                          //// MessageBox.Show(mat.Groups["content"].Value);
                          ////<tablehead>(?<content>.*)<tableheadend><tablebody></tablebodyend><tablepage></tablepage><tablebottom></tablebottomend>
                          ////
                          Match mat = Regex.Match(listcontent, "<tablehead>(?<head>.*)<tableheadend><tablebody>(?<body>.*)</tablebodyend><tablepage>(?<page>.*)</tablepage><tablebottom>(?<bottom>.*)</tablebottomend>",RegexOptions.IgnoreCase|RegexOptions.Multiline);
                          string head = Convert.ToString(mat.Groups["head"]);
                          string body = Convert.ToString(mat.Groups["body"]);
                          string page = Convert.ToString(mat.Groups["page"]);
                          string bottom = Convert.ToString(mat.Groups["bottom"]);
                          //循環生成分頁
                          for (int i = 0; i < pagecount; i++)
                          {
                              //System.Text.StringBuilder sbneilist = new System.Text.StringBuilder("<TABLE cellSpacing=0 cellPadding=0 width=760 border=0><TBODY>");
                              System.Text.StringBuilder sbneilist = new System.Text.StringBuilder(head);


                              int l = 0;
                              for (int j = (i * size < zong) ? (i * size) : (zong); j < ((i + 1) * size < zong ? ((i + 1) * size) : (zong)); j++)
                              {
                                  //sbneilist.Append(" <TR><TD vAlign=top align=center bgColor=#f7f7f7 >");
                                  //string temp = listcontent;
                                  string temp = body;
                                  for (int k = 0; k < dt.Columns.Count; k++)
                                  {
                                    
                                      temp = temp.Replace("$" + dt.Columns[k].ColumnName.Trim() + "$", Convert.ToString(dt.Rows[j][dt.Columns[k].ColumnName.Trim()]));
                                  }
                                  if ((++l) % 5 == 0)
                                  {
                                      sbneilist.Append(temp).Append("<dd class=\"l\"></dd>");
                                  }
                                  else
                                  {
                                      sbneilist.Append(temp);
                                  }
                                
                                  //sbneilist.Append("</td></tr>");

                              }

                              //sbneilist.Append("<TR><TD height=36>").Append(classes.Common.GetPage(i + 1, size, zong)).Append("</td></tr>");
                              sbneilist.Append(page.Replace("¥pages¥", classes.Common.GetPage(i + 1, size, zong)));
                              // sbneilist.Append("</tbody></table>");
                              sbneilist.Append(bottom);

                              #region "文章列表"

                              //最新的文章
                              System.Text.StringBuilder sbneartitle = new System.Text.StringBuilder("");
                              DataTable nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 order by updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li>·<a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }
                              sbneartitle.Append("");
                              templatewai = templatewai.Replace("$NearTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("");

                              //固定
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and OnTop=1 order by updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li>·<a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("");
                              templatewai = templatewai.Replace("$OnTopTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("");
                              //熱門
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and Hits>1000 order by Hits desc,updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li>·<a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }
                              sbneartitle.Append("");


                              templatewai = templatewai.Replace("$HitsTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("");
                              //推薦Elite
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and Elite=1 order by updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li>·<a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              sbneartitle.Append("");
                              templatewai = templatewai.Replace("$Elite$", sbneartitle.ToString());
                              sbneartitle.Append("");
                              //相關Classid
                              nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and classid=" + classid + " order by updatetime desc").Tables[0];
                              for (int curr = 0; curr < nearTitledt.Rows.Count; curr++)
                              {
                                  sbneartitle.AppendFormat("<li>·<a href=\"{0}\">{1}</a></li>", Convert.ToString(nearTitledt.Rows[curr]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[curr]["Title"]));
                              }

                              sbneartitle.Append("");
                              templatewai = templatewai.Replace("$ClassTitle$", sbneartitle.ToString());
                              sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              //sbneartitle.Append("<div align='left'>");
                              //DataTable dtlike = zj123.Model.Article.GetLike(artid);
                              //for (int likei = 0; likei < dtlike.Rows.Count; likei++)
                              //{
                              //    sbneartitle.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", Convert.ToString(dtlike.Rows[likei]["HtmlPath"]), Convert.ToString(dtlike.Rows[likei]["Title"]));
                              //}
                              //sbneartitle.Append("</ol></div>");
                              //waitemp = waitemp.Replace("$LikeTitle$", sbneartitle.ToString());
                              //sbneartitle.Remove(0, sbneartitle.ToString().Length);
                              /////////////////////////////////////////////////////////////////////////////////////////////
                              #endregion
                              //替換鏈表信息
                              //$typejs$
                              templatewai = templatewai.Replace("$typejs$", classid);
                              //$numjs$
                              templatewai = templatewai.Replace("$numjs$", "10");
                              //$setjs$
                              templatewai = templatewai.Replace("$setjs$", "");
                              string tempzong = templatewai.Replace("$intemplate$", sbneilist.ToString());
                              string indexshow = (i + 1).ToString() == "1" ? ("") : ((i + 1).ToString());
                              if (!Directory.Exists(classpath))
                              {
                                  Directory.CreateDirectory(classpath);
                              }

                              using (StreamWriter sw = new StreamWriter(classpath + @"\index" + indexshow + ".html", false, System.Text.Encoding.GetEncoding("gb2312")))
                              {
                                  sw.Write(tempzong);
                                  sw.Flush();
                                  sw.Close();
                              };
                          }
                      }
                      return succ;
           
                  }
                  public bool MakeIndex(string classid)
                  {
                      Match m = null;
                      string temp="";
                      ArrayList altemp = new ArrayList();
                      bool succ = false;
                      if (classid.Length < 1)
                          return false;
                      string templatewai = Convert.ToString(DbHelperOleDb.GetSingle("select TemplateContent from Template where TemplateID in(select TempIndexId from zone where classid=" + classid+")")??"");
                      DataTable dtwaitemp = DbHelperOleDb.Query("select * from zone where classid=" + classid).Tables[0];
                      string path = "";
                      if(dtwaitemp.Rows.Count>0)
                      {
                      #region "編輯"
                      templatewai = templatewai.Replace("$Title$",Convert.ToString(dtwaitemp.Rows[0]["ClassName"]));
                      templatewai = templatewai.Replace("$Description$",Convert.ToString(dtwaitemp.Rows[0]["Description"]));
                      templatewai = templatewai.Replace("$KeyWord$",Convert.ToString(dtwaitemp.Rows[0]["Keywords"]));
                      path= Convert.ToString(dtwaitemp.Rows[0]["links"]);
                      #endregion
                     //Convert.ToString(DbHelperOleDb.GetSingle("select links from zone where classid=" + classid))??"";
                      }

                      classes.Common.al.Clear();
                      classes.Common.GetChilds(classid);
                      System.Collections.ArrayList al = classes.Common.al;
                      System.Text.StringBuilder sb = new StringBuilder();
                      for (int i = 0; i < al.Count; i++)
                      {
                          sb.Append(al[i]).Append(",");
                      }
                      MatchCollection mats = Regex.Matches(templatewai, @"<asp:title [^>]*>", RegexOptions.IgnoreCase);
                    //  int i = 0;
                      foreach (Match mat in mats)
                      {
                          //temp = mat.Value;
                          m = Regex.Match(mat.Value.Trim(), "<asp:title\\s*classid=\"(?<classid>\\d*)\"\\s*size=\"(?<size>\\d*)\"\\s*count=\"(?<count>\\d*)\"\\s*date=\"(?<date>\\d*)\"\\s*dateformat=\"(?<dateformat>[^\\s]*)\"\\s*target=\"(?<target>[^\\s]*)\"\\s*img=\"(?<img>[^\\s]*)\"/>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
                          TemplateModel tm = new TemplateModel();
                          if (m.Success)
                          {
                            
                              tm.Classid = m.Groups["classid"].Value;
                              tm.Size = m.Groups["size"].Value;
                              tm.Count = m.Groups["count"].Value;
                              tm.Date = m.Groups["date"].Value;
                              tm.Dateformat = m.Groups["dateformat"].Value;
                              tm.Target = m.Groups["target"].Value;
                              tm.Img = m.Groups["img"].Value;
                              tm.Body = m.Value;
                              tm.Atitle ="<asp:title classid=\""+tm.Classid +"\">";
                           
                          }
                   
                             altemp.Add(tm);
                  
                      }
                      #region "替換注釋"

                      if (sb.Length > 0)
                      {
                          sb.Remove(sb.Length - 1, 1);
                          string sql = "select * from zone where ClassID in(" + sb.ToString() + ") order by orderby";
                          DataTable dt = DbHelperOleDb.Query(sql).Tables[0];
                          DataTable dttemp = null;

                          if (dt.Rows.Count > 0)
                          {
                              ///循環所有的子類
                              for (int i = 0; i < dt.Rows.Count; i++)
                              {
                                  //循環模板里面的符合項
                                  for (int l = 0; l < altemp.Count; l++)
                                  {
                                      TemplateModel tempTm = (TemplateModel)altemp[l];
                                      if ((i + 1).ToString() == tempTm.Classid)
                                      {
                                        
                                         //列表生成工具
                                          System.Text.StringBuilder tempsb = new StringBuilder();
                                          ///圖片新聞
                                          if (tempTm.Img == "1")
                                          {
                                              dttemp = DbHelperOleDb.Query("select top " + tempTm.Count + " case when len(Title)>" + tempTm.Size + " then substring(title,0," + tempTm.Size + ") else title end as title,htmlPath,updatetime,DefaultPicUrl,Intro,TitleIntact from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by DefaultPicUrl desc,Hits desc,updatetime desc").Tables[0];
                                              //無日期
                                              for (int j = 0; j < dttemp.Rows.Count; j++)
                                              {
                                                 // tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");
                                                  ///<TR>
                                                  ///<TD><IMG src="/template/newzs/img/7785047.jpg"  width=67 height=67 border=0 class=img_bd></TD>
                                                  //<TD class=lh22><STRONG>勞動法偏袒員工</STRONG><BR>中國女首富稱勞動法偏袒員工 旗下公司員工罷工……[詳細]</TD>
                                                  ////</TR>
                                                  ///
                                                  string linktemp = Convert.ToString(dttemp.Rows[j]["htmlPath"]) ?? "";
                                                  string targettemp = tempTm.Target;
                                                  string ttitletemp = Convert.ToString(dttemp.Rows[j]["TitleIntact"]) ?? "";
                                                  ttitletemp = ttitletemp.Length > Convert.ToInt32(tempTm.Size) ? (ttitletemp.Substring(0, Convert.ToInt32(tempTm.Size))) : (ttitletemp);
                                                  string introtemp = Convert.ToString(dttemp.Rows[j]["Intro"]) ?? "";
                                                  introtemp = ttitletemp.Length > Convert.ToInt32(tempTm.Size) * 2 ? (ttitletemp.Substring(0, Convert.ToInt32(tempTm.Size) * 2)) : (ttitletemp);
                                                  string imgtemp = Convert.ToString(dttemp.Rows[j]["DefaultPicUrl"]) ?? "";

                                                  tempsb.Append("<TR>");
                                                  tempsb.Append("<TD><a href='").Append(linktemp).Append("' target='").Append(targettemp).Append("'><IMG src=\"").Append(imgtemp).Append("\"  width=67 height=67 border=0 class=img_bd></a></TD>");
                                                  tempsb.Append("<TD class=lh22><STRONG><a href='").Append(linktemp).Append("'  target='").Append(targettemp).Append("'>").Append(ttitletemp).Append("</a></STRONG><BR><a href='").Append(linktemp).Append("'  target='").Append(targettemp).Append("'>").Append(introtemp).Append("……[詳細]</a></TD>");
                                                  tempsb.Append("</TR>");
                                              }
                                          }
                                          else
                                          {
                                              dttemp = DbHelperOleDb.Query("select top " + tempTm.Count + " case when len(Title)>" + tempTm.Size + " then substring(title,0," + tempTm.Size + ") else title end as title,htmlPath,updatetime from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                                              if (tempTm.Date == "1")
                                              {
                                                  //有日期
                                                  for (int j = 0; j < dttemp.Rows.Count; j++)
                                                  {
                                                      tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("' target=\"").Append(tempTm.Target).Append("(\">·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span>").Append("&nbsp;&nbsp;&nbsp;").Append((Convert.ToDateTime(dttemp.Rows[j]["updatetime"]) == null ? (DateTime.Now) : (Convert.ToDateTime(dttemp.Rows[j]["updatetime"]))).ToString(tempTm.Dateformat)).Append("<span><br>");

                                                  }
                                              }
                                              else
                                              {
                                                  //無日期
                                                  for (int j = 0; j < dttemp.Rows.Count; j++)
                                                  {
                                                      tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                                                  }
                                              }
                                          }
                                    
                                          //end 列表生成
                                          templatewai = Regex.Replace(templatewai, tempTm.Atitle, new System.Text.StringBuilder("<a href='/").Append(Convert.ToString(dt.Rows[i]["Links"] ?? " ")).Append("\\index.html").Append("'>").Append(Convert.ToString(dt.Rows[i]["ClassName"] ?? "0")).Append("</a>").ToString());
                                          templatewai = Regex.Replace(templatewai, tempTm.Body, tempsb.ToString());
                                     
                                      }
                                  }
                                  #region MyRegion

                                  //if (i < 3)
                                  //{//$CLASSNAMEA1
                                  //    templatewai = templatewai.Replace("$CLASSNAMEA" + (i + 1).ToString() + "$", "<a href='\\" + Convert.ToString(dt.Rows[i]["links"]).Trim() + "\\index.html'>" + Convert.ToString(dt.Rows[i]["ClassName"]) + "</a>");
                                  //    // templatewai.Replace("$CLASSNAMEA1$", Convert.ToString(dt.Rows[i]["ClassName"]));
                                  //    dttemp = DbHelperOleDb.Query("select top 12 Title,htmlPath from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                                  //    System.Text.StringBuilder tempsb = new StringBuilder();
                                  //    for (int j = 0; j < dttemp.Rows.Count; j++)
                                  //    {
                                  //        tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                                  //    }
                                  //    templatewai = templatewai.Replace("$CLASSNAMEA" + (i + 1).ToString() + "CONTENT$", tempsb.ToString());

                                  //}
                                  //else if (i >= 3 && i <= 5)
                                  //{
                                  //    templatewai = templatewai.Replace("$CLASSNAMEB" + (i - 2).ToString() + "$", "<a href='\\" + Convert.ToString(dt.Rows[i]["links"]).Trim() + "\\index.html'>" + Convert.ToString(dt.Rows[i]["ClassName"]) + "</a>");
                                  //    dttemp = DbHelperOleDb.Query("select top 12 Title,htmlPath from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                                  //    System.Text.StringBuilder tempsb = new StringBuilder();
                                  //    for (int j = 0; j < dttemp.Rows.Count; j++)
                                  //    {
                                  //        tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                                  //    }
                                  //    templatewai = templatewai.Replace("$CLASSNAMEB" + (i - 2).ToString() + "CONTENT$", tempsb.ToString());
                                  //}
                                  //else if (i >= 5 && i <= 6)
                                  //{
                                  //    templatewai = templatewai.Replace("$CLASSNAMEC1$", "<a href='\\" + Convert.ToString(dt.Rows[i]["links"]).Trim() + "\\index.html'>" + Convert.ToString(dt.Rows[i]["ClassName"]) + "</a>");
                                  //    dttemp = DbHelperOleDb.Query("select top 12 Title,htmlPath from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                                  //    System.Text.StringBuilder tempsb = new StringBuilder();
                                  //    for (int j = 0; j < dttemp.Rows.Count; j++)
                                  //    {
                                  //        tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                                  //    }
                                  //    templatewai = templatewai.Replace("$CLASSNAMEC1CONTENT$", tempsb.ToString());
                                  //}
                                  //else if (i > 6 && i <= 12)
                                  //{
                                  //    templatewai = templatewai.Replace("$CLASSNAMED" + (i - 6).ToString() + "$", "<a href='\\" + Convert.ToString(dt.Rows[i]["links"]).Trim() + "\\index.html'>" + Convert.ToString(dt.Rows[i]["ClassName"]) + "</a>");
                                  //    dttemp = DbHelperOleDb.Query("select top 12 Title,htmlPath from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(dt.Rows[i]["ClassID"] ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                                  //    System.Text.StringBuilder tempsb = new StringBuilder();
                                  //    for (int j = 0; j < dttemp.Rows.Count; j++)
                                  //    {
                                  //        tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                                  //    }
                                  //    templatewai = templatewai.Replace("$CLASSNAMED" + (i - 6).ToString() + "CONTENT$", tempsb.ToString());
                                  //}
                                  //else
                                  //{

                                  //}
                                  #endregion
                              }
                              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                              string filepath = HttpContext.Current.Request.PhysicalApplicationPath.ToString() + path;
                              if (!Directory.Exists(filepath))
                                  Directory.CreateDirectory(filepath);
                              filepath += "\\Default.html";

                              using (StreamWriter sw = new StreamWriter(filepath, false, System.Text.Encoding.GetEncoding("GB2312")))
                              {
                                  sw.Write(templatewai);
                                  sw.Flush();
                                  sw.Close();
                              
                              };
                              succ = true;
                          }
                      }
                      else
                      {

                      }
                     
                      #endregion
                      return succ;
                  }
                  #region ""
                  public bool MakeIndexLink(string classid)
                  {
                      Match m = null;
                      string temp = null;
                      ArrayList altemp = new ArrayList();
                      bool succ = false;
                      if (classid.Length < 1)
                          return false;
                      string templatewai = Convert.ToString(DbHelperOleDb.GetSingle("select TemplateContent from Template where TemplateID in(select TempIndexId from zone where classid=" + classid + ")") ?? "");
                      DataTable dtwaitemp = DbHelperOleDb.Query("select * from zone where classid=" + classid).Tables[0];
                      string path = "";
                      if (dtwaitemp.Rows.Count > 0)
                      {
                          #region "編輯"
                          templatewai = templatewai.Replace("$Title$", Convert.ToString(dtwaitemp.Rows[0]["ClassName"]));
                          templatewai = templatewai.Replace("$Description$", Convert.ToString(dtwaitemp.Rows[0]["Description"]));
                          templatewai = templatewai.Replace("$KeyWord$", Convert.ToString(dtwaitemp.Rows[0]["Keywords"]));
                          path = Convert.ToString(dtwaitemp.Rows[0]["links"]);
                          #endregion
                         
                      }

                
                      MatchCollection mats = Regex.Matches(templatewai, @"<asp:title [^>]*>", RegexOptions.IgnoreCase);
                      DataTable dttemp = null;
                      System.Text.StringBuilder tempsb = new StringBuilder();
                      foreach (Match mat in mats)
                      {
                           temp = mat.Value;
                          m = Regex.Match(temp, "<asp:title classid=\"(?<classid>\\d*)\" size=\"(?<size>\\d*)\" count=\"(?<count>\\d*)\" date=\"(?<date>\\d*)\" dateformat=\"(?<dateformat>\\w*)\"/>");
                          TemplateModel tm = new TemplateModel();
                          tm.Classid = m.Groups["classid"].Value;
                          tm.Size = m.Groups["size"].Value;
                          tm.Count = m.Groups["count"].Value;
                          tm.Date = m.Groups["date"].Value;
                          tm.Dateformat = m.Groups["dateformat"].Value;
                          tm.Body = m.Value;
                          altemp.Add(tm);

                         // dttemp = DbHelperOleDb.Query("select ").Tables[0];
                          dttemp = DbHelperOleDb.Query("select top " + tm.Count + " case when len(Title)>" + tm.Size + " then substring(title,0," + tm.Size + ") else title end as title,htmlPath from article where deleted=1 and isCreate=1 and classid=" + Convert.ToString(tm.Classid ?? "0") + " order by Hits desc,updatetime desc").Tables[0];
                          //列表生成工具
                          tempsb.Remove(0,tempsb.Length);
                          if (tm.Date == "1")
                          {
                              //有日期
                              for (int j = 0; j < dttemp.Rows.Count; j++)
                              {
                                  tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span>").Append((Convert.ToDateTime(dttemp.Rows[j]["Title"]) == null ? (DateTime.Now) : (Convert.ToDateTime(dttemp.Rows[j]["Title"]))).ToString(tm.Dateformat)).Append("<span><br>");

                              }
                          }
                          else
                          {
                              //無日期
                              for (int j = 0; j < dttemp.Rows.Count; j++)
                              {
                                  tempsb.Append("<span class='fontpl20'>").Append("<a href='").Append(Convert.ToString(dttemp.Rows[j]["htmlPath"])).Append("'>·").Append(Convert.ToString(dttemp.Rows[j]["Title"])).Append("</a>").Append("</span><br>");

                              }
                          }
                          //end 列表生成
                          templatewai = Regex.Replace(templatewai, tm.Body, tempsb.ToString());
                     
                      }
                   
                      string filepath = HttpContext.Current.Request.PhysicalApplicationPath.ToString() + path;
                      if (!Directory.Exists(filepath))
                          Directory.CreateDirectory(filepath);
                      filepath += "\\Default.html";

                      using (StreamWriter sw = new StreamWriter(filepath, false, System.Text.Encoding.GetEncoding("GB2312")))
                      {
                          sw.Write(templatewai);
                          sw.Flush();
                          sw.Close();
                      };
                      succ = true;

                      return succ;

                  }
                  #endregion
              }
              public class TemplateModel
              {

                  private Regex reg = new Regex("^\\d+$");
                  private string _classid;
                  private string _size;
                  private string _count;
                  private string _date;
                  private string _dateformat;
                  private string _body;
                  private string _atitle;
                  private string _target;
                  private string _img;
                  public string Classid
                  {
                      set
                      {
                          if (reg.IsMatch(value))
                          {
                              this._classid = value;
                          }
                          else
                          {
                              this._classid = "0";
                          }
                      }
                      get { return this._classid; }
                  }
                  public string Size
                  {
                      set
                      {
                          if (reg.IsMatch(value))
                          {
                              this._size = value;
                          }
                          else
                          {
                              this._size = "10";
                          }
                      }
                      get { return this._size; }
                  }
                  public string Count
                  {
                      set
                      {
                          if (reg.IsMatch(value))
                          {
                              this._count = value;
                          }
                          else
                          {
                              this._count = "10";
                          }
                      }
                      get { return this._count; }
                  }
                  public string Date
                  {
                      set
                      {
                          if (reg.IsMatch(value))
                          {
                              this._date = value;
                          }
                          else
                          {
                              this._date = "0";
                          }
                      }
                      get { return this._date; }
                  }
                  public string Dateformat
                  {
                      set
                      {

                          this._dateformat = value;

                      }
                      get { return this._dateformat; }
                  }
                  public string Body
                  {
                      set
                      {

                          this._body = value;

                      }
                      get { return this._body; }
                  }
                public string Atitle
                  {
                      set
                      {

                          this._atitle = value;

                      }
                      get { return this._atitle; }
                  }
                  public string Target
                  {
                      set
                      {
                          if (value.Length < 1)
                          {
                              this._target = "_self";
                          }
                          else
                          {
                              this._target = value;
                          }
                         

                      }
                      get { return this._target; }
                  }
                  public string Img
                  {
                      set
                      {
                          if (value.Length < 1)
                          {
                              this._img = "0";
                          }
                          else
                          {
                              this._img = value;
                          }


                      }
                      get { return this._img; }
                  }

              }
           
          }

          posted on 2009-01-08 18:54 sanmao 閱讀(418) 評論(1)  編輯  收藏

          FeedBack:
          # re: C#生成靜態頁類代碼|支持列表生成代碼
          2015-03-20 21:38 | myhero
          正在學習,能否把classes.Common.也貼一下,非常感謝。L.ni@163.com  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 太谷县| 闻喜县| 奉贤区| 乐东| 安塞县| 邯郸市| 雷山县| 巫溪县| 涞源县| 普兰县| 彰化市| 新巴尔虎左旗| 墨脱县| 宣武区| 饶阳县| 应城市| 西乌| 秭归县| 吴川市| 招远市| 海伦市| 兴业县| 方城县| 郁南县| 汤阴县| 菏泽市| 丰城市| 那曲县| 长汀县| 海兴县| 平塘县| 姜堰市| 太保市| 监利县| 方山县| 乐平市| 新源县| 浦东新区| 昌宁县| 南涧| 罗源县|