/// <summary> /// 获取文档的模板ID /// </summary> /// <param name="category"></param> /// <param name="archive"></param> /// <returns></returns> public virtual string GetArchiveTemplateID(ArchiveDto archive) { ////获取模板ID //string tplID = null; //Module m = CmsLogic.Module.GetModule(archive.Category.ModuleID); //if (m != null) //{ // TemplateBind tb = CmsLogic.TemplateBind.GetArchiveTemplateBind(archive.ID, archive.Category.ID); // if (tb != null) // { // string id = this.GetTemplateID(tb.TplPath); // if (id != null) // { // tplID = "/" + id; // } // } //} ////设置默认的模板 //if (String.IsNullOrEmpty(tplID)) //{ // tplID = this.FormatTemplatePath("archive"); //} //return tplID; if (archive.TemplatePath!=null) { return "/" + this.GetTemplateId(archive.TemplatePath); } //设置默认的模板 return this.FormatTemplatePath("archive"); }
private IEnumerable<ArchiveDto> GetArchiveEnumertor(IEnumerable<IArchive> archives) { IDictionary<int, CategoryDto> categories = new Dictionary<int, CategoryDto>(); ArchiveDto archive; CategoryDto cateDto; int categoryId; foreach (IArchive ia in archives) { archive = new ArchiveDto { StrId = ia.StrId, Id = ia.Id, Author = ia.Author, Alias = ia.Alias, Agree = ia.Agree, Disagree = ia.Disagree, Content = ia.Content, CreateDate = ia.CreateDate, // FirstImageUrl=ia.FirstImageUrl, Flags = ia.Flags, Tags = ia.Tags, LastModifyDate = ia.LastModifyDate, Source = ia.Source, Thumbnail = ia.Thumbnail, Title = ia.Title, SmallTitle = ia.SmallTitle, Location = ia.Location, ViewCount = ia.ViewCount, Outline = ia.Outline, //TemplateBind=null, ExtendValues = ia.ExtendValues }; //archive = new ArchiveDto().CloneData(ia); //archive.ID = ia.ID; if (!categories.TryGetValue(categoryId = ia.Category.Id, out cateDto)) { cateDto = CategoryDto.ConvertFrom(ia.Category); categories.Add(categoryId, cateDto); } archive.Category = cateDto; yield return archive; } }
public int SaveArchive(int siteId, ArchiveDto archiveDto) { IContentContainer ic = this._contentRep.GetContent(siteId); IArchive archive; if (archiveDto.Id <= 0) { archive = ic.CreateArchive(-1, archiveDto.StrId, archiveDto.Category.Id, archiveDto.Title); } else { archive = ic.GetArchiveById(archiveDto.Id); //修改栏目 if (archiveDto.Category.Id != archive.Category.Id) { ISite site = this._siteRep.GetSiteById(siteId); archive.Category = site.GetCategory(archiveDto.Category.Id); } } archive.LastModifyDate = DateTime.Now; archive.Content = archiveDto.Content; archive.Alias = archiveDto.Alias; archive.Author = archiveDto.Author; archive.Flags = archiveDto.Flags; archive.Outline = archiveDto.Outline; archive.Source = archiveDto.Source; archive.Tags = archiveDto.Tags; archive.Thumbnail = archiveDto.Thumbnail; archive.Title = archiveDto.Title; archive.SmallTitle = archiveDto.SmallTitle; archive.Location = archiveDto.Location; archive.ExtendValues = archiveDto.ExtendValues; //只更新自己的模板 if (archiveDto.IsSelfTemplate || (archive.Id == -1 && !String.IsNullOrEmpty(archiveDto.TemplatePath)) ) { archive.UpdateTemplateBind(archiveDto.TemplatePath); } return archive.Save(); }
/// <summary> /// 创建新文档 /// </summary> /// <param name="blogid"></param> /// <param name="username"></param> /// <param name="password"></param> /// <param name="post"></param> /// <param name="publish"></param> /// <returns></returns> public string newPost(string blogid, string username, string password, Post post, bool publish) { User user; if ((user = ValidUser(username, password)) != null) { int categoryId = 0; string categoryName = post.categories[0]; //根据提交的栏目设置栏目ID if (post.categories.Length != 0) { var category = ServiceCall.Instance.SiteService.GetCategoryByName(this.siteId, categoryName); if (category.Id > 0) categoryId = category.Id; } //如果栏目ID仍然为0,则设置第一个栏目 if (categoryId == 0) { throw new Exception("请选择分类!"); } string flag = ArchiveFlag.GetFlagString(false, false, publish, false, null); ArchiveDto dto = new ArchiveDto { Title = post.title, Author = username, Outline = String.Empty, Content = post.description, CreateDate = post.dateCreated, Source = post.source.name, ViewCount = 1, Flags = flag, Tags = String.Empty }; dto.Category = new CategoryDto { Id = categoryId }; return ServiceCall.Instance.ArchiveService.SaveArchive(this.siteId, dto).ToString(); ; //执行监视服务 /* try { WatchService.PublishArchive(abll.GetArchiveByID(id)); } catch { } */ } return null; }
protected string Require(string idOrAlias) { ArchiveDto a = ServiceCall.Instance.ArchiveService.GetArchiveByIdOrAlias(this.siteId, idOrAlias); if (a.Id > 0) archive = a; return string.Empty; }
protected void FormatArchive(StringBuilder sb, ArchiveDto archive, ref string format, IEnumerable<ArchiveDto> dt, int index) { string id = string.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias; //读取自定义扩展数据字段 IDictionary<string, string> extendFields = null; sb.Append(TplEngine.FieldTemplate(format, field => { switch (field) { case "title": return archive.Title; case "small_title": return archive.SmallTitle; case "special_title": return !ArchiveFlag.GetFlag(archive.Flags, BuiltInArchiveFlags.IsSpecial) ? archive.Title : "<span class=\"special\">" + archive.Title + "</span>"; case "author": return archive.Author; // //TODO:Archive应持有一个author // //case "authorname": return ArchiveUtility.GetAuthorName(dr["author"].ToString()); case "source": return archive.Source == "" ? "原创" : archive.Source; case "fmt_outline": return ArchiveUtility.GetFormatedOutline( archive.Outline, archive.Content, this.TplSetting.CFG_OutlineLength); case "outline": return ArchiveUtility.GetOutline(String.IsNullOrEmpty(archive.Outline) ? archive.Content : archive.Outline, this.TplSetting.CFG_OutlineLength); case "initid": return archive.Id.ToString(); case "id": return id; //用于链接的ID标识 case "tags": return archive.Tags; case "replay": return CmsLogic.Comment.GetArchiveCommentsCount(archive.StrId).ToString(); case "count": return archive.ViewCount.ToString(); //时间 case "modify_time": return String.Format("{0:yyyy-MM-dd HH:mm}", archive.LastModifyDate); case "modify_date": return String.Format("{0:yyyy-MM-dd}", archive.LastModifyDate); case "create_time": return String.Format("{0:yyyy-MM-dd HH:mm}", archive.CreateDate); case "create_date": return String.Format("{0:yyyy-MM-dd}", archive.CreateDate); //栏目 // case "categoryid": // case "cid": return archive.Category.ID.ToString(); case "category_name": return archive.Category.Name; case "category_tag": return archive.Category.Tag; case "category_url": return this.GetCategoryUrl(archive.Category, 1); // //TODO: // //链接 case "url": return GetArchiveUrl(archive.Location, archive.Flags, archive.Category, id); //内容 case "content": return archive.Content; //压缩过的内容 case "content2": return Regex.Replace(archive.Content, "\\r|\\t|\\s\\s", String.Empty); //图片元素 case "img": string url = this.GetThumbnailUrl(archive.Thumbnail); return String.IsNullOrEmpty(url) ? "" : String.Format("<img class=\"thumb thumbnail\" src=\"{0}\" alt=\"{1}\"/>", url, archive.Title); //缩略图 case "thumb": return this.GetThumbnailUrl(archive.FirstImageUrl); case "thumbnail": return this.GetThumbnailUrl(archive.Thumbnail); // 项目顺序类 case "class": if (dt == null || index < 0) return String.Empty; if (index == dt.Count() - 1) return " class=\"last\""; else if (index == 0) return " class=\"first\""; return String.Concat(" class=\"i", index.ToString(), "\""); //特性列表 case "prolist": case "property_list": StringBuilder sb2 = new StringBuilder(); sb.Append("<ul class=\"extend_field_list\">"); foreach (IExtendValue f in archive.ExtendValues) { if (!String.IsNullOrEmpty(f.Value)) { sb.Append("<li class=\"extend_") .Append(f.Field.ToString()).Append("\"><span class=\"attrName\">") .Append(f.Field.Name).Append(":</span><span class=\"value\">") .Append(f.Value).Append("</span></li>"); } } sb2.Append("</ul>"); return sb2.ToString(); default: //读取自定义长度大纲 const string matchPattern = "outline\\[(\\d+)\\]"; if (Regex.IsMatch(field, matchPattern)) { int length = int.Parse(Regex.Match(field, matchPattern).Groups[1].Value); return ArchiveUtility.GetOutline(String.IsNullOrEmpty(archive.Outline) ? archive.Content : archive.Outline, length); } //读取自定义属性 if (extendFields == null) { extendFields = new Dictionary<string, string>(); foreach (IExtendValue value in archive.ExtendValues) { extendFields.Add(value.Field.Name, value.Value); } } if (extendFields.ContainsKey(field)) return extendFields[field]; return ""; } })); }
/********************** 基本数据 *************************/ /// <summary> /// 文档内容 /// </summary> /// <param name="idOrAlias"></param> /// <param name="num"></param> /// <returns></returns> protected string Archive(int siteId, object idOrAlias, string format) { ArchiveDto archive; if (idOrAlias is int) { archive = ServiceCall.Instance.ArchiveService.GetArchiveById(siteId, Convert.ToInt32(idOrAlias)); } else { archive = ServiceCall.Instance.ArchiveService.GetArchiveByIdOrAlias(siteId, idOrAlias.ToString()); } if (archive.Id <= 0) return TplMessage(String.Format("不存在编号(或别名)为:{0}的文档!", idOrAlias)); StringBuilder sb = new StringBuilder(500); this.FormatArchive(sb, archive, ref format, null, -1); return sb.ToString(); }
/// <summary> /// 创建新的文档 /// </summary> /// <param name="data"></param> /// <returns></returns> private int CreateNewArchive(int categoryId, string content, string thumbnail, string author, string flag, DataPack data) { ArchiveDto archive = new ArchiveDto { Agree = 0, Disagree = 0, Category = new CategoryDto { Id = categoryId }, Flags = flag, Author = author, Tags = String.Empty, Outline = String.Empty, Source = String.Empty, Title = data["title"], Content = content, LastModifyDate = DateTime.Now, CreateDate = DateTime.Now, Thumbnail = thumbnail }; return ServiceCall.Instance.ArchiveService.SaveArchive(this.siteId, archive); }
public PageArchive(ArchiveDto archive) { this.Archive = archive; }
private ArchiveDto GetFormCopyedArchive(int siteId, NameValueCollection form, ArchiveDto archive, string alias) { string flag = ArchiveFlag.GetFlagString( form["IsSystem"] == "on", //系统 form["IsSpecial"] == "on", //特殊 form["IsNotVisible"] != "on", //隐藏 form["AsPage"] == "on", //作为单页 null); string content = form["Content"]; //自动替换Tags if (form["autotag"] == "on") { //todo:顺序调换了下 HttpTags _tags = this.GetTags(siteId); content = _tags.Tags.RemoveAutoTags(content); content = _tags.Tags.ReplaceSingleTag(content); } archive.LastModifyDate = DateTime.Now; archive.Title = form["Title"].Trim(); archive.SmallTitle = form["SmallTitle"].Trim(); archive.Location = form["location"].Trim(); archive.Source = form["Source"]; archive.Outline = form["Outline"]; archive.Alias = alias; archive.Flags = flag; archive.Tags = form["Tags"].Replace(",", ","); archive.Content = content; archive.Thumbnail = form["Thumbnail"]; //分类 int categoryId = int.Parse(form["categoryid"]); archive.Category = new CategoryDto { Id = categoryId }; //检测图片是否为默认图片 if (archive.Thumbnail == CmsVariables.FRAMEWORK_ARCHIVE_NoPhoto) archive.Thumbnail = String.Empty; archive.ExtendValues = new List<IExtendValue>(); //=============== 更新扩展字段 =================== IExtendField field; string extendValue; foreach (string key in form.Keys) { if (key.StartsWith("extend_")) { extendValue = form[key]; field = new ExtendField(int.Parse(key.Substring(7)), null); archive.ExtendValues.Add(new ExtendValue(-1, field, extendValue)); } } //更新模板设置 archive.TemplatePath = form["TemplatePath"]; if (archive.TemplatePath != String.Empty) { archive.IsSelfTemplate = true; } return archive; }
public virtual string GetArchive(ArchiveDto archive, params object[] args) { #region 属性 /* //验证密码 PropertyBLL pbll = new PropertyBLL(); var a = pbll.GetProperty(category.ModuleID, "pwd"); if (a != null) { var json = archive.GetPropertiesJson(); string key = json.GetValue("pwd"); if (!String.IsNullOrEmpty(key)) { string requireKey = HttpContext.Current.Request.QueryString["pwd"]; if (requireKey != key) { HttpContext.Current.Response.Write("<div style='margin:0 auto;padding:30px 0'>请输入密码:<input type='text'/><input type='button' value='提交' onclick=\"location.replace(location.href+'?pwd='+this.previousSibling.value)\"/></div>"); HttpContext.Current.Response.End(); } } }*/ #endregion //获取模板ID string tplID = this.GetArchiveTemplateID(archive); CategoryDto category = archive.Category; //用于当前的模板共享数据 AtNet.Cms.Cms.Context.Items["archive.id"] = archive.Id; AtNet.Cms.Cms.Context.Items["category.tag"] = category.Tag; AtNet.Cms.Cms.Context.Items["module.id"] = category.ModuleId; //解析模板 string html = PageUtility.Require(tplID, page => { page.AddVariable("site",this.site); PageArchive pageArchive = new PageArchive(archive); page.AddVariable("archive", pageArchive); page.AddVariable("category", category); page.AddVariable("module", new Module { ID = category.ModuleId }); page.AddVariable("page", new PageVariable { Title = String.Format("{0}_{1}_{2}", archive.Title, category.Name, site.SeoTitle), SubTitle = site.SeoTitle, Keywords = archive.Tags, Description = pageArchive.Outline.Replace("\"", String.Empty) }); }); /* HttpRequest request = HttpContext.Current.Request; //如果包含查询,则加入标签 if (!String.IsNullOrEmpty(request.Url.Query)) { //将查询参数作为标签 html = global::AtNet.DevFw.Template.TemplateRegexUtility.Replace(html, a => { if (request[a.Groups[1].Value] != null) { return request[a.Groups[1].Value]; } return a.Value; }); } // //TODO:模板被替换成空白 // */ return html; }
/// <summary> /// 转换文档传输对象 /// </summary> /// <param name="archive">文档</param> /// <returns></returns> public static ArchiveDto ConvertFrom(IArchive archive,bool copyCategory,bool copyTemplate,bool copyExtend) { ArchiveDto dto = new ArchiveDto { Id = archive.Id, StrId = archive.StrId, Disagree = archive.Disagree, Agree = archive.Agree, LastModifyDate = archive.LastModifyDate, CreateDate = archive.CreateDate, Content = archive.Content, Alias = archive.Alias, Author = archive.Author, Flags = archive.Flags, Outline = archive.Outline, Source = archive.Source, Tags = archive.Tags, Url = archive.Uri, Location = archive.Location, Thumbnail = archive.Thumbnail, Title = archive.Title, SmallTitle = archive.SmallTitle, ViewCount = archive.ViewCount }; if(copyCategory) { CategoryDto categoryDto = CategoryDto.ConvertFrom(archive.Category); categoryDto.Id = archive.Category.Id; dto.Category = categoryDto; } if(copyExtend) { dto.ExtendValues = archive.ExtendValues; } if (copyTemplate) { if (archive.Template != null)// && archive.Template.BindRefrenceId == archive.ID) { dto.TemplatePath = archive.Template.TplPath; dto.IsSelfTemplate = archive.Template.BindRefrenceId == archive.Id; } } return dto; }