/// <summary> /// 执行SQL语句 /// </summary> public string SQL() { StringBuilder sr = new StringBuilder(); string sql = SiteFun.Post("sql"); bool reCount = SiteFun.ToInt(SiteFun.Post("reCount")) == 0 ? false : true; if (SiteFun.IsPost && reCount) { int count = new PostData(conn).CountPost(); count += new ColumnData(conn).CountColumnPost(); sr.Append(AdminUI.SuccessBox(string.Format(SiteDat.GetLan("MsgCountSucc"), count))); } //数量重计 sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("ReCount"))); sr.Append(HtmlUI.CreateTd(HtmlUI.HiddenInput("reCount", 1) + HtmlUI.SubmitButton(SiteDat.GetLan("BtnCount")) + SiteDat.GetLan("IntroCount"))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); //SQL执行 sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh("SQL") + HtmlUI.CreateTd(HtmlUI.Textarea("sql", 20, 0, SiteFun.HtmlEncode(sql)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.SubmitButton() + HtmlUI.ResetButton())); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); //取得默认值 if (SiteFun.IsPost && !string.IsNullOrEmpty(sql)) { try { DataSet ds = new DataBase().ExecSql(sql); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgExeSqlSucc"))); //显示执行结果 if (ds.Tables.Count > 0) { sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TableStart()); sr.Append(HtmlUI.TrStart()); for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { sr.Append(HtmlUI.CreateTh(ds.Tables[0].Columns[i].ColumnName)); } sr.Append(HtmlUI.TrFinal()); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { sr.Append(HtmlUI.TrStart()); for (int j = 0; j < ds.Tables[0].Columns.Count; j++) { sr.Append(HtmlUI.CreateTd(SiteFun.HtmlEncode(ds.Tables[0].Rows[i][j].ToString()))); } sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); } } catch (Exception err) { sr.Append(AdminUI.ErrorBox(err.Message)); } } return sr.ToString(); }
/// <summary> /// 获取文章列表页完整XML内容 /// </summary> /// <param name="cateId">分类编号</param> /// <param name="cateLocal">分类标签名</param> /// <param name="tag">搜索标签名</param> /// <param name="key">搜索关键字</param> /// <param name="page">当前页</param> /// <param name="pageSize">分页大小</param> /// <returns>完整XML内容</returns> public string OutWriteList(int cateId, string cateLocal, string tag, string key, int page, int pageSize) { SettingItem setting = this.OutSetting; ColumnItem cateItem = new ColumnItem(); if (cateId > 0) { cateItem = new ColumnData(conn).GetColumn(cateId); } else { cateItem = new ColumnData(conn).GetColumn(cateLocal); } string listCacheName = string.Format(SiteCache.PostsListFormat, page, cateItem.ID, tag, key); if (SiteDat.GetDat(listCacheName) == null) { SiteDat.SetDat(listCacheName, new PostData(conn).SelectPost(cateItem.ID, tag, key, page, pageSize, 0, "A", false)); } DataList<PostItem> artList = (DataList<PostItem>)SiteDat.GetDat(listCacheName); //本页XML处理 StringBuilder xml = new StringBuilder(); xml.AppendFormat("\t\t<tagName>{0}</tagName>\n", SiteFun.CDATA(tag)); xml.AppendFormat("\t\t<searchKey>{0}</searchKey>\n", SiteFun.CDATA(key)); xml.AppendFormat("\t\t<categoryName>{0}</categoryName>\n", SiteFun.CDATA(cateItem.Name)); xml.Append("\t\t<articles>\n"); //取得文章列表数据 string pagerLink = string.Format(SitePath.PagerFormat, SiteCfg.Path, cateItem.ID, SiteFun.UrlEncode(tag), SiteFun.UrlEncode(key), "{0}"); xml.AppendFormat("\t\t\t<pages>{0}</pages>\n", SiteFun.CDATA(new SitePages().Make(artList.Number, page, pageSize, pagerLink))); foreach (PostItem vItem in artList) { ColumnItem columnItem = new ColumnItem(); if (SiteDat.GetDat(string.Format(SiteCache.ColumnFormat, vItem.ColumnID)) == null) { SiteDat.SetDat(string.Format(SiteCache.ColumnFormat, vItem.ColumnID), new ColumnData(conn).GetColumn(vItem.ColumnID)); } columnItem = (ColumnItem)SiteDat.GetDat(string.Format(SiteCache.ColumnFormat, vItem.ColumnID)); xml.Append("\t\t\t<item>\n"); xml.AppendFormat("\t\t\t\t<link>{0}</link>\n", SiteFun.CDATA(string.Format(SitePath.ArticleLinkFormat, SiteCfg.Path, SiteFun.UrlEncode(vItem.Local)))); xml.AppendFormat("\t\t\t\t<id>{0}</id>\n", vItem.ID); xml.AppendFormat("\t\t\t\t<title>{0}</title>\n", SiteFun.CDATA(vItem.Title)); xml.AppendFormat("\t\t\t\t<local>{0}</local>\n", SiteFun.CDATA(vItem.Local)); xml.AppendFormat("\t\t\t\t<tags>{0}</tags>\n", SiteFun.CDATA(vItem.Tags)); xml.AppendFormat("\t\t\t\t<explain>{0}</explain>\n", SiteFun.CDATA(CheckPasswordContent(vItem.Password, vItem.Explain, vItem.Local, false))); xml.AppendFormat("\t\t\t\t<content>{0}</content>\n", SiteFun.CDATA(CheckPasswordContent(vItem.Password, vItem.Content, vItem.Local, false))); xml.AppendFormat("\t\t\t\t<publish>{0}</publish>\n", vItem.Publish); xml.AppendFormat("\t\t\t\t<author>{0}</author>\n", SiteFun.CDATA(vItem.Author)); xml.AppendFormat("\t\t\t\t<postCount>{0}</postCount>\n", vItem.PostCount); xml.AppendFormat("\t\t\t\t<reader>{0}</reader>\n", vItem.Reader); xml.AppendFormat("\t\t\t\t<vote>{0}</vote>\n", vItem.Vote); xml.AppendFormat("\t\t\t\t<fine>{0}</fine>\n", vItem.Fine); xml.Append("\t\t\t\t<category>\n"); xml.AppendFormat("\t\t\t\t\t<link>{0}</link>\n", SiteFun.CDATA(string.Format(SitePath.CategoryLinkFormat, SiteCfg.Path, SiteFun.UrlEncode(columnItem.Local)))); xml.AppendFormat("\t\t\t\t\t<id>{0}</id>\n", columnItem.ID); xml.AppendFormat("\t\t\t\t\t<local>{0}</local>\n", SiteFun.CDATA(columnItem.Local)); xml.AppendFormat("\t\t\t\t\t<name>{0}</name>\n", SiteFun.CDATA(columnItem.Name)); xml.AppendFormat("\t\t\t\t\t<intro>{0}</intro>\n", SiteFun.CDATA(columnItem.Intro)); xml.AppendFormat("\t\t\t\t\t<postCount>{0}</postCount>\n", columnItem.PostCount); xml.Append("\t\t\t\t</category>\n"); xml.Append("\t\t\t</item>\n"); } xml.Append("\t\t</articles>\n"); //绑定XML并写出 string title = string.Format("{0} - {1}", setting.Basic.Name, setting.Basic.Intro); if (cateItem.ID > 0) { title = string.Format("{0}: {1} - {2}", SiteDat.GetLan("Category"), cateItem.Name, setting.Basic.Name); } if (!string.IsNullOrEmpty(tag)) { title = string.Format("{0}: {1} - {2}", SiteDat.GetLan("Tag"), tag, setting.Basic.Name); } if (!string.IsNullOrEmpty(key)) { title = string.Format("{0}: {1} - {2}", SiteDat.GetLan("Search"), key, setting.Basic.Name); } return new _WebBaseXml(conn).OutBaseXml(title, xml.ToString()); }
/// <summary> /// 系统文章分类操作 /// </summary> /// <returns>分类列表及操作表单</returns> public string List() { StringBuilder sr = new StringBuilder(); DataList<ColumnItem> list = new ColumnData(conn).SelectColumn(-1, -1, true); if (list.Count > 0) { ColumnData cData = new ColumnData(conn); if (SiteFun.IsPost) { //取值 ColumnItem postVal = new ColumnItem(); postVal.ID = SiteFun.ToInt(SiteFun.Post("id")); postVal.Name = SiteFun.Post("name"); postVal.Sorting = SiteFun.ToInt(SiteFun.Post("sorting")); postVal.Show = SiteFun.ToInt(SiteFun.Post("show")) == 0 ? false : true; postVal.Nav = SiteFun.ToInt(SiteFun.Post("nav")) == 0 ? false : true; //处理 if (string.IsNullOrEmpty(postVal.Name)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoName"))); } else { if (postVal.ID > 0) { if (SiteFun.ToInt(SiteFun.Post("del")) == 0) { cData.UpdateColumnSome(postVal.ID, postVal.Name, postVal.Sorting, postVal.Nav, postVal.Show); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgUpdateDat"))); } else { PostData pData = new PostData(conn); foreach (PostItem tmpPost in pData.SelectPost(postVal.ID, 1, int.MaxValue, null)) { //删除附件 if (!string.IsNullOrEmpty(tmpPost.Attachments)) { AttachmentData attData = new AttachmentData(conn); foreach (AttachmentItem delAtt in attData.SelectAttachment(tmpPost.Attachments)) { File.Delete(Path.Combine(SiteCfg.Router, delAtt.Path)); } attData.DeleteAttachment(tmpPost.Attachments); } } cData.DeleteColumn(postVal.ID); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgDelDat"))); } } } ClearCache(); } sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.TableStart()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Name"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Article"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Sorting"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Nav"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Show"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Delete"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Operate"))); sr.Append(HtmlUI.TrFinal()); int i = 1; foreach (ColumnItem vItem in list) { i++; sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TrStart(i % 2 == 0 ? " cRow" : null)); sr.Append(HtmlUI.CreateTd(HtmlUI.HiddenInput("id", vItem.ID) + HtmlUI.Input("name", 10, null, SiteFun.HtmlEncode(vItem.Name)) + HtmlUI.Link(SiteDat.GetLan("Edit"), string.Format("?act=column&mode=post&id={0}", vItem.ID)))); sr.Append(HtmlUI.CreateTd(vItem.PostCount)); sr.Append(HtmlUI.CreateTd(HtmlUI.Input("sorting", 5, null, vItem.Sorting))); sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("nav", 1, vItem.Nav))); sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("show", 1, vItem.Show))); sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("del", 1, false))); sr.Append(HtmlUI.CreateTd(HtmlUI.SubmitButton(SiteDat.GetLan("BtnSave")))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.FormFinal()); } sr.Append(HtmlUI.TableFinal()); sr.Append(AdminUI.AdminBoxFinal()); } else { sr.Append(Post()); } return sr.ToString(); }
/// <summary> /// 提交分类数据 /// </summary> /// <returns>返回发布分类代码</returns> public string Post() { StringBuilder sr = new StringBuilder(); int id = SiteFun.ToInt(SiteFun.Query("id")); string theme = new SettingData(conn).GetTheme; ColumnData cateData = new ColumnData(conn); //取得默认值 ColumnItem old = cateData.GetColumn(id); if (old.ID == 0) { //默认显示 old.Show = true; } if (SiteFun.IsPost) { ColumnItem postVal = new ColumnItem(); postVal.ID = id; postVal.Name = SiteFun.Post("name"); postVal.Local = SiteFun.Post("local"); postVal.Target = SiteFun.Post("target"); postVal.ListTemplate = SiteFun.Post("listTpl"); postVal.ViewTemplate = SiteFun.Post("viewTpl"); postVal.PageSize = SiteFun.ToInt(SiteFun.Post("pageSize")); postVal.Jump = SiteFun.ToInt(SiteFun.Post("jump")) == 0 ? false : true; postVal.JumpUrl = SiteFun.Post("jumpUrl"); postVal.Intro = SiteFun.Post("intro"); postVal.Sorting = SiteFun.ToInt(SiteFun.Post("sorting")); postVal.Nav = SiteFun.ToInt(SiteFun.Post("nav")) == 0 ? false : true; postVal.Show = SiteFun.ToInt(SiteFun.Post("show")) == 0 ? false : true; if (string.IsNullOrEmpty(postVal.Name)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoName"))); } else { if (!string.IsNullOrEmpty(postVal.Local)) { postVal.Local = postVal.Local.Replace(" ", "-"); } if (!string.IsNullOrEmpty(postVal.Local) && (!SiteFun.IsLocal(postVal.Local) || cateData.ExistsLocal(postVal.Local, postVal.ID))) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoLocalOrExists"))); } else { if (postVal.ID == 0) { cateData.InsertColumn(postVal); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgInsertDat"), "?act=column&mode=list")); } else { cateData.UpdateColumn(postVal); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgUpdateDat"), "?act=column&mode=list")); } } } ClearCache(); old = postVal; } sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Name")) + HtmlUI.CreateTd(HtmlUI.Input("name", 20, null, SiteFun.HtmlEncode(old.Name)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); if (Regex.IsMatch(old.Local, @"^\d+$")) { old.Local = string.Empty; } sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Local")) + HtmlUI.CreateTd(string.Format(SitePath.CategoryLinkFormat, null, HtmlUI.Input("local", 15, null, SiteFun.HtmlEncode(old.Local))))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("Jump"), "jump", 1, old.Jump) + HtmlUI.Input("jumpUrl", 50, null, SiteFun.HtmlEncode(old.JumpUrl)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Intro")) + HtmlUI.CreateTd(HtmlUI.Input("intro", 50, null, SiteFun.HtmlEncode(old.Intro)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Sorting")) + HtmlUI.CreateTd(HtmlUI.Input("sorting", 5, null, old.Sorting))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Target")) + HtmlUI.CreateTd(HtmlUI.Input("target", 10, null, SiteFun.HtmlEncode(old.Target)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("ListTpl")) + HtmlUI.CreateTd(string.Format(SitePath.ThemePathFormat, theme, HtmlUI.Input("listTpl", 15, null, SiteFun.HtmlEncode(old.ListTemplate))))); sr.Append(HtmlUI.TrFinal()); if (!string.IsNullOrEmpty(old.ListTemplate) && !File.Exists(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, theme, old.ListTemplate)))) { sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(string.Format(SiteDat.GetLan("MsgFileNotExistsFormat"), old.ListTemplate))); sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("ViewTpl")) + HtmlUI.CreateTd(string.Format(SitePath.ThemePathFormat, theme, HtmlUI.Input("viewTpl", 15, null, SiteFun.HtmlEncode(old.ViewTemplate))))); sr.Append(HtmlUI.TrFinal()); if (!string.IsNullOrEmpty(old.ViewTemplate) && !File.Exists(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, theme, old.ViewTemplate)))) { sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(string.Format(SiteDat.GetLan("MsgFileNotExistsFormat"), old.ViewTemplate))); sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("PageSize")) + HtmlUI.CreateTd(HtmlUI.Input("pageSize", 5, null, old.PageSize))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Virtue")) + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("Nav"), "nav", 1, old.Nav) + HtmlUI.CheckBoxInput(SiteDat.GetLan("Show"), "show", 1, old.Show))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.SubmitButton() + HtmlUI.ResetButton())); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); return sr.ToString(); }
/// <summary> /// 显示内容 /// </summary> /// <param name="sender">基类对象</param> /// <param name="e">事件对象</param> protected void Page_Load(object sender, EventArgs e) { using (_DbHelper conn = new _DbHelper(SiteCfg.Conn)) { conn.Open(); conn.BeginTransaction(); try { XsltTemplate tpl = new XsltTemplate(conn); //初始化全局页面类库 _WebBase wb = new _WebBase(); wb.InitConn(); //开始执行 switch (SiteFun.Query("act")) { case "page": { int id = SiteFun.ToInt(SiteFun.Query("id")); string local = SiteFun.Query("local"); WebPage webPg = new WebPage(conn); tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webPg.OutTheme, "Page.View"))); tpl.BindXml(webPg.OutWrite(id, local)); break; } case "tags": { WebTags webTags = new WebTags(conn); tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webTags.OutTheme, "Tag.List"))); tpl.BindXml(webTags.OutWrite()); break; } case "fellows": { WebFellows webFlw = new WebFellows(conn); tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webFlw.OutTheme, "Fellow.List"))); tpl.BindXml(webFlw.OutWrite()); break; } case "expand": { foreach (object type in new SiteExpand().GetTypes(typeof(IWebExpand).FullName)) { IWebExpand iae = ((IWebExpand)type); if (iae.Key == SiteFun.Query("key")) { StringBuilder xml = new StringBuilder(); xml.Append("\t\t<expand>\n"); xml.AppendFormat("\t\t\t<css>{0}</css>\n", SiteFun.CDATA(iae.Css)); xml.AppendFormat("\t\t\t<html>{0}</html>\n", SiteFun.CDATA(iae.OutHtml())); xml.Append("\t\t</expand>\n"); tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, iae.OutTheme, "Expand.View"))); tpl.BindXml(new _WebBaseXml(conn).OutBaseXml(iae.Name, xml.ToString())); break; } } break; } default: { WebArticle webArt = new WebArticle(conn); switch (SiteFun.Query("mode")) { case "view": { int id = SiteFun.ToInt(SiteFun.Query("id")); string local = SiteFun.Query("local"); string pwd = SiteFun.Post("pwd"); int page = SiteFun.ToInt(SiteFun.Query("page")); int pageSize = webArt.OutSetting.Parameter.CommentNum; string tplFile = "Article.View"; PostItem postItem = new PostData(conn).GetPost(id); ColumnItem columnItem = new ColumnData(conn).GetColumn(postItem.ColumnID); if (postItem.ID == 0) { postItem = new PostData(conn).GetPost(local); } if (!string.IsNullOrEmpty(columnItem.ViewTemplate) && File.Exists(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webArt.OutTheme, columnItem.ViewTemplate)))) { tplFile = columnItem.ViewTemplate; } tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webArt.OutTheme, tplFile))); tpl.BindXml(webArt.OutWriteView(id, local, pwd, page, pageSize)); break; } default: { int cid = SiteFun.ToInt(SiteFun.Query("cid")); string clocal = SiteFun.Query("clocal"); string tag = SiteFun.Query("tag"); string key = SiteFun.Query("key"); int page = SiteFun.ToInt(SiteFun.Query("page")); int pageSize = webArt.OutSetting.Parameter.ArticleNum; string tplFile = "Article.List"; //开始处理 ColumnItem column = new ColumnData(conn).GetColumn(cid); if (column.ID == 0) { column = new ColumnData(conn).GetColumn(clocal); } if (column.ID == 0 && string.IsNullOrEmpty(tag) && string.IsNullOrEmpty(key) && page == 0 && File.Exists(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webArt.OutTheme, "Index")))) { tplFile = "Index"; } else { if (column.ID > 0) { if (!string.IsNullOrEmpty(column.ListTemplate) && File.Exists(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webArt.OutTheme, column.ListTemplate)))) { tplFile = column.ListTemplate; } if (column.PageSize > 0) { pageSize = column.PageSize; } } } tpl.LoadXslt(Path.Combine(SiteCfg.Router, string.Format(SitePath.ThemePathFormat, webArt.OutTheme, tplFile))); tpl.BindXml(webArt.OutWriteList(cid, clocal, tag, key, page, pageSize)); break; } } break; } } if (conn.ExecuteCount > 0) { conn.Commit(); } tpl.Print(); } catch (Exception err) { if (conn.ExecuteCount > 0) { conn.Rollback(); } IMyError exeError = new MyError(); foreach (IMyError myError in new SiteExpand().GetTypes(typeof(IMyError).FullName)) { exeError = myError; break; } exeError.PrintError(err); } conn.Close(); } }
/// <summary> /// 取得文章列表窗体 /// </summary> /// <param name="mode">模式:A-文章,P-单页</param> /// <returns>返回文章列表代码</returns> public string List(string mode) { StringBuilder sr = new StringBuilder(); int cid = SiteFun.ToInt(SiteFun.Query("cid")); string key = SiteFun.Query("key"); //下面三行是分页设置 int page = SiteFun.ToInt(SiteFun.Query("page")); if (page < 1) { page = 1; } int pageSize = 20; PostData pData = new PostData(conn); DataList<PostItem> list = pData.SelectPost(cid, null, key, page, pageSize, 0, mode, true); if (list.Count > 0) { if (mode == "A" || mode == "P") { bool isArticle = mode == "A"; if (SiteFun.IsPost) { int id = SiteFun.ToInt(SiteFun.Post("id")); bool del = SiteFun.ToInt(SiteFun.Post("del")) == 0 ? false : true; if (del) { PostItem tmpPost = pData.GetPost(id); //删除附件 if (!string.IsNullOrEmpty(tmpPost.Attachments)) { AttachmentData attData = new AttachmentData(conn); foreach (AttachmentItem delAtt in attData.SelectAttachment(tmpPost.Attachments)) { File.Delete(Path.Combine(SiteCfg.Router, delAtt.Path)); } attData.DeleteAttachment(tmpPost.Attachments); } pData.DeletePost(id); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgArtDelSucc"))); } else { bool fine = SiteFun.ToInt(SiteFun.Post("fine")) == 0 ? false : true; bool show = SiteFun.ToInt(SiteFun.Post("show")) == 0 ? false : true; pData.UpdatePostFineAndShow(id, fine, show); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgUpdateDat"))); } ClearCache(); } if (isArticle) { //设置分类数据 DataList<ColumnItem> cateList = new ColumnData(conn).SelectColumn(-1, 0, false); ArrayList values = new ArrayList(); ArrayList captions = new ArrayList(); values.Add(0); captions.Add("--" + SiteDat.GetLan("Category") + "--"); for (int j = 0; j < cateList.Count; j++) { values.Add(cateList[j].ID); captions.Add(cateList[j].Name); } //搜索 sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart(false, null, false)); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Search") + HtmlUI.HiddenInput("act", "post") + HtmlUI.HiddenInput("mode", "list") + HtmlUI.HiddenInput("m", mode))); sr.Append(HtmlUI.CreateTd(HtmlUI.CreateSelect("cid", values, captions, cid) + HtmlUI.Input("key", 30, null, SiteFun.HtmlEncode(key)) + HtmlUI.SubmitButton(SiteDat.GetLan("Search")))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); } //正常列表 sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.TableStart()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Title"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Local"))); if (isArticle) { sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Category"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Top"))); } sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Show"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Delete"))); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Operate"))); sr.Append(HtmlUI.TrFinal()); int i = 1; foreach (PostItem vItem in list) { i++; sr.Append(HtmlUI.FormStart()); sr.Append(HtmlUI.TrStart(i % 2 == 0 ? " cRow" : null)); sr.Append(HtmlUI.CreateTd(HtmlUI.Link(SiteFun.HtmlEncode(SiteFun.StrCut(vItem.Title, 50)), string.Format("?act=post&mode=post&m={1}&id={0}", vItem.ID, mode)))); sr.Append(HtmlUI.CreateTd(SiteFun.HtmlEncode(SiteFun.StrCut(vItem.Local, 30)))); if (isArticle) { sr.Append(HtmlUI.CreateTd(SiteFun.HtmlEncode(new ColumnData(conn).GetColumn(vItem.ColumnID).Name))); sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("fine", 1, vItem.Fine))); } sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("show", 1, vItem.Show))); sr.Append(HtmlUI.CreateTd(HtmlUI.CheckBoxInput("del", 1, false))); sr.Append(HtmlUI.CreateTd(HtmlUI.HiddenInput("id", vItem.ID) + HtmlUI.SubmitButton(SiteDat.GetLan("BtnSave")))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.FormFinal()); } sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTd(new SitePages().Make(list.Number, page, pageSize, "?act=post&mode=list&cid=" + cid + "&key=" + SiteFun.UrlEncode(key) + "&m=" + mode + "&page={0}"), (isArticle ? 7 : 5), null)); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(AdminUI.AdminBoxFinal()); } } else { sr.Append(Post(mode)); } return sr.ToString(); }
/// <summary> /// 提交文章窗体 /// </summary> /// <param name="mode">模式:A-文章,P-单页</param> /// <returns>返回发布文章控件代码</returns> public string Post(string mode) { StringBuilder sr = new StringBuilder(); if (mode == "A" || mode == "P") { bool isArticle = mode == "A"; SettingItem setting = new SettingData(conn).GetSetting(); string theme = new SettingData(conn).GetTheme; string tmpFilePath = Path.Combine(SiteCfg.Router, "Common/Temp/post_cache.tmp"); int id = SiteFun.ToInt(SiteFun.Query("id")); PostData artData = new PostData(conn); ColumnData cData = new ColumnData(conn); TagData tagData = new TagData(conn); //取得默认值 string[] myUserInfo = _ac.Get(); UserItem myUser = new UserData(conn).CheckUser(myUserInfo[0], SiteFun.Encryption(myUserInfo[1]), true); PostItem old = artData.GetPost(id); ColumnItem oldColumn = new ColumnData(conn).GetColumn(old.ColumnID); if (old.ID == 0) { //默认显示、可评论并自动审核,可发通告 old.Show = true; old.SwitchComment = true; old.AutoVerifyComment = true; old.SwitchTrackback = true; } if (string.IsNullOrEmpty(old.Author)) { old.Author = myUser.Name; } if (SiteFun.IsPost) { //处理文章数据 PostItem postVal = new PostItem(); string content = SiteFun.HtmlMatch(SiteFun.Post("content")); string explain = content; if (!string.IsNullOrEmpty(explain)) { explain = Regex.Replace(explain, SiteCfg.PageBreakRegular, SiteCfg.PageBreakSymbol, RegexOptions.Multiline | RegexOptions.IgnoreCase); if (explain.IndexOf(SiteCfg.PageBreakSymbol) > 0) { explain = explain.Substring(0, explain.IndexOf(SiteCfg.PageBreakSymbol)); explain = SiteFun.HtmlMatch(explain); } explain = explain.Replace(SiteCfg.PageBreakSymbol, string.Empty); } postVal.ID = id; postVal.ColumnID = SiteFun.ToInt(SiteFun.Post("cid")); postVal.Title = SiteFun.Post("title"); postVal.Tags = SiteFun.Post("tags"); postVal.Local = SiteFun.Post("local"); postVal.Explain = explain; postVal.Content = content; postVal.Author = SiteFun.Post("author"); postVal.Publish = SiteFun.ToDate(SiteFun.Post("publish")); postVal.Password = SiteFun.Post("pwd"); postVal.Vote = SiteFun.ToInt(SiteFun.Post("vote")); postVal.Reader = SiteFun.ToInt(SiteFun.Post("reader")); postVal.Fine = SiteFun.ToInt(SiteFun.Post("fine")) == 0 ? false : true; postVal.Show = SiteFun.ToInt(SiteFun.Post("show")) == 0 ? false : true; postVal.PostCount = old.PostCount; postVal.SwitchComment = SiteFun.ToInt(SiteFun.Post("switchCmt")) == 0 ? false : true; postVal.SwitchTrackback = SiteFun.ToInt(SiteFun.Post("switchTb")) == 0 ? false : true; postVal.AutoVerifyComment = SiteFun.ToInt(SiteFun.Post("avcmt")) == 0 ? false : true; postVal.AutoVerifyTrackback = SiteFun.ToInt(SiteFun.Post("avtb")) == 0 ? false : true; postVal.Attachments = old.Attachments; //分类 ColumnItem postColumn = new ColumnData(conn).GetColumn(postVal.ColumnID); if (string.IsNullOrEmpty(postVal.Title)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoTitle"))); } else { if (!string.IsNullOrEmpty(postVal.Local)) { postVal.Local = postVal.Local.Replace(" ", "-"); } if (!string.IsNullOrEmpty(postVal.Local) && (!SiteFun.IsLocal(postVal.Local) || artData.ExistsLocal(postVal.Local, postVal.ID))) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoLocalOrExists"))); } else { //处理上传图片的内容循环替换 if (!string.IsNullOrEmpty(postVal.Content)) { string[] tmpFilesHandle = { postVal.Content, postVal.Explain }; string atts = new _AdminUpload(conn).SaveAs(HttpContext.Current.Request.Files, ref tmpFilesHandle[0], ref tmpFilesHandle[1], SiteFun.ToInt(SiteFun.Post("ws")), Path.Combine(SiteCfg.Router, setting.Parameter.WatermarkPath)); postVal.Content = tmpFilesHandle[0]; postVal.Explain = tmpFilesHandle[1]; if (!string.IsNullOrEmpty(atts)) { if (string.IsNullOrEmpty(postVal.Attachments)) { postVal.Attachments = atts; } else { postVal.Attachments += "," + atts; } } } //保存或新增文章数据处理 if (postVal.ID == 0) { artData.InsertPost(postVal, mode); //标签处理 tagData.InsertTagList(postVal.Tags); //分类统计 //cData.CountCategoryPost(postVal.Category.ID); sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgArtInsertSucc"), "?act=post&mode=list&M=" + mode)); } else { artData.UpdatePost(postVal); //标签处理 tagData.InsertTagList(postVal.Tags); //类统计 cData.CountColumnPost(oldColumn.ID); cData.CountColumnPost(postColumn.ID); //更新修改后的显示 sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgArtUpdateSucc"), "?act=post&mode=list&M=" + mode)); } try { File.Delete(tmpFilePath); } catch { } } } //处理引用通告 TrackbackLogData tbld = new TrackbackLogData(conn); SettingBasicItem sbi = setting.Basic; string tbUrls = SiteFun.Post("tbUrls"); if (!string.IsNullOrEmpty(tbUrls)) { foreach (string vItem in tbUrls.Split('\n')) { if (!string.IsNullOrEmpty(vItem)) { string[] tbState = new SiteTrackback().SendTrackback(vItem, string.Format(SitePath.ArticleLinkFormat, sbi.URL + SiteCfg.Path, postVal.Local), sbi.Name, postVal.Title, SiteFun.ClearHtml(postVal.Explain)).Split('|'); TrackbackLogItem tbVal = new TrackbackLogItem(); tbVal.Error = SiteFun.ToInt(tbState[0]) == 0 ? false : true; tbVal.Message = tbState[1]; tbVal.URL = vItem; tbld.InsertTrackbackLog(tbVal); } } } ClearCache(); old = postVal; } //设置分类数据 DataList<ColumnItem> cateList = cData.SelectColumn(-1, 0, true); ArrayList values = new ArrayList(); ArrayList captions = new ArrayList(); for (int i = 0; i < cateList.Count; i++) { values.Add(cateList[i].ID); captions.Add(cateList[i].Name); } sr.Append(AdminUI.AdminBoxStart(true)); sr.Append(HtmlUI.FormStart(null, true)); sr.Append(HtmlUI.TableStart("onCenter advancedBox")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Title")) + HtmlUI.CreateTd(HtmlUI.Input("title", 50, null, SiteFun.HtmlEncode(old.Title)) + (isArticle ? HtmlUI.CreateSelect("cid", values, captions, oldColumn.ID) : string.Empty))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); if (Regex.IsMatch(old.Local, @"^\d+$")) { old.Local = string.Empty; } sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Local")) + HtmlUI.CreateTd(string.Format((isArticle ? SitePath.ArticleLinkFormat : SitePath.PageLinkFormat), null, HtmlUI.Input("local", 30, null, SiteFun.HtmlEncode(old.Local))))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Content")) + HtmlUI.CreateTd(AdminUI.Editor("content", SiteFun.HtmlEncode(old.Content)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd((File.Exists(tmpFilePath) ? "<a id=\"reInsertContent\">" + SiteDat.GetLan("MsgClickArtReload") + "</a>" : string.Empty) + string.Format(SiteDat.GetLan("MsgArtAutoSaveState"), "<span id=\"autoSaveCountdown\">--</span>", "<a id=\"autoSaveButton\">--</a>", "<span id=\"autoSaveIs\"></span>"))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Attach") + ", <a id=\"addFilesA\">" + SiteDat.GetLan("Add") + "</a>") + HtmlUI.CreateTd(string.Format("<span id=\"filesMainBox\">{0}</span><a id=\"filesMainInsertA\">{1}</a><div id=\"filesAttBox\"></div>", HtmlUI.FileInput(null, "files"), SiteDat.GetLan("Insert")))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.TableStart("onCenter hidden advancedBox")); string attsHtml = string.Empty; DataList<AttachmentItem> attachments = new AttachmentData(conn).SelectAttachment(old.Attachments); foreach (AttachmentItem att in attachments) { attsHtml += HtmlUI.Link(att.Name, att.Path, att.Type, true) + string.Format(", {0}, {1}, {2}<br/>", att.Publish, att.Size, att.Type); } if (attachments.Count > 0) { sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Attach")) + HtmlUI.CreateTd(attsHtml)); sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Tag")) + HtmlUI.CreateTd(HtmlUI.Input("tags", "tags", 50, null, SiteFun.HtmlEncode(old.Tags)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.Button("getInputTags", SiteDat.GetLan("BtnTagsNow")) + "<div id=\"getInputTagsDsp\"></div>")); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Author")) + HtmlUI.CreateTd(HtmlUI.Input("author", 10, null, SiteFun.HtmlEncode(old.Author)))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Time")) + HtmlUI.CreateTd(HtmlUI.Input("timeInput", "publish", 20, null, old.Publish) + HtmlUI.Button("updateTime", SiteDat.GetLan("BtnUpdateTime")))); sr.Append(HtmlUI.TrFinal()); if (isArticle) { sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Pwd")) + HtmlUI.CreateTd(HtmlUI.Input("pwd", 30, null, old.Password))); sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("VoteNum")) + HtmlUI.CreateTd(HtmlUI.Input("vote", 5, null, old.Vote))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Reader")) + HtmlUI.CreateTd(HtmlUI.Input("reader", 5, null, old.Reader))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Virtue")) + HtmlUI.CreateTd((isArticle ? HtmlUI.CheckBoxInput(SiteDat.GetLan("Top"), "fine", 1, old.Fine) : string.Empty) + HtmlUI.CheckBoxInput(SiteDat.GetLan("Show"), "show", 1, old.Show))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); ArrayList wmValues = new ArrayList(); ArrayList caps = new ArrayList(); for (int wmI = 0; wmI <= 9; wmI++) { wmValues.Add(wmI); } caps.Add("--" + SiteDat.GetLan("WmPosition") + "--"); caps.Add(SiteDat.GetLan("PTopLeft")); caps.Add(SiteDat.GetLan("PTopCen")); caps.Add(SiteDat.GetLan("PTopRight")); caps.Add(SiteDat.GetLan("PMdlLeft")); caps.Add(SiteDat.GetLan("PMdlCen")); caps.Add(SiteDat.GetLan("PMdlRight")); caps.Add(SiteDat.GetLan("PBtmLeft")); caps.Add(SiteDat.GetLan("PBtmCen")); caps.Add(SiteDat.GetLan("PBtmRight")); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Switch")) + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("InsertCmt"), "switchCmt", 1, old.SwitchComment) + HtmlUI.CheckBoxInput(SiteDat.GetLan("InsertTb"), "switchTb", 1, old.SwitchTrackback) + HtmlUI.CreateSelect("ws", wmValues, caps, setting.Parameter.WatermarkSeat))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("AutoVerify")) + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("VerifyCmt"), "avcmt", 1, old.AutoVerifyComment) + HtmlUI.CheckBoxInput(SiteDat.GetLan("VerifyTb"), "avtb", 1, old.AutoVerifyTrackback))); sr.Append(HtmlUI.TrFinal()); if (isArticle) { sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Trackback")) + HtmlUI.CreateTd(HtmlUI.Textarea("tbUrls", 5, 80, null))); sr.Append(HtmlUI.TrFinal()); } sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.TableStart("onCenter")); sr.Append(HtmlUI.TrStart()); sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.SubmitButton() + HtmlUI.ResetButton() + HtmlUI.Button("advancedLink", SiteDat.GetLan("BtnAdvanced")))); sr.Append(HtmlUI.TrFinal()); sr.Append(HtmlUI.TableFinal()); sr.Append(HtmlUI.FormFinal()); sr.Append(AdminUI.AdminBoxFinal()); } return sr.ToString(); }