public string AddPost(string blogid, string username, string password, Post post, bool publish) { EnsureUser(username, password).Wait(); if (post.categories == null) { throw new MetaWeblogException("Failed to specify categories"); } var newStory = new BlogStory(); try { newStory.Title = post.title; newStory.Body = post.description; newStory.DatePublished = post.dateCreated == DateTime.MinValue ? DateTime.UtcNow : post.dateCreated; if (post.categories != null) { newStory.Categories = string.Join(",", post.categories); } newStory.IsPublished = publish; newStory.Slug = newStory.GetStoryUrl(); newStory.UniqueId = newStory.Slug; _repo.AddStory(newStory); _repo.SaveAll(); } catch (Exception) { throw new MetaWeblogException("Failed to save the post."); } return(newStory.Id.ToString()); }
public async Task<string> AddPostAsync(string blogid, string username, string password, Post post, bool publish) { await EnsureUser(username, password); if (post.categories == null) throw new MetaWeblogException("Failed to specify categories"); var newStory = new BlogStory(); try { newStory.Title = post.title; newStory.Body = post.description; newStory.DatePublished = post.dateCreated == DateTime.MinValue ? DateTime.UtcNow : post.dateCreated; if (post.categories != null) newStory.Categories = string.Join(",", post.categories); newStory.IsPublished = publish; newStory.Slug = newStory.GetStoryUrl(); newStory.UniqueId = newStory.Slug; _repo.AddStory(newStory); if (await _repo.SaveAllAsync()) { return newStory.Id.ToString(); } } catch (Exception) { _logger.LogError("Failed to add new Post"); } throw new MetaWeblogException("Failed to save the post."); }
public async Task <BlogStory> CreateOrUpdateAsync(BlogStory blogStory, CancellationToken cancel = default) { if (blogStory == null) { throw new ArgumentNullException(nameof(blogStory)); } if (blogStory.Id == Guid.Empty) { blogStory.InitializeOnCreate(); await _blogStoryRepository.AddAsync(blogStory, cancel); return(blogStory); } var originalBlogStory = await _blogStoryRepository.GetAsync(blogStory.Id, cancel); if (originalBlogStory == null) { throw new EntityNotFoundException($"Can't edit story : {blogStory.Id}"); } originalBlogStory.Update(blogStory); await _blogStoryRepository.UpdateAsync(originalBlogStory, cancel); await _tagManager.UpdateBlogStoryTagsAsync(blogStory, cancel); return(originalBlogStory); }
public static void SetSlidingStory(this IMemoryCache cache, String alias, BlogStory story, Int32 minutesCount) { var key = $"{CacheKeys.StoryPrefix}{alias}"; cache.SetSliding(key, story, minutesCount); cache.RemovePages(); }
public void Update(BlogStory entity) { this._storys.Remove(entity); this._storys.Add(entity); this._modifiedStorys.Add(entity); }
private void FixStory(BlogStory s) { if (s != null) { s.Body = s.Body.Replace("http://", "//"); } }
public EditBlogStoryViewModel(BlogStory blogStory) { if (blogStory != null) { Id = blogStory.Id; Title = blogStory.Title; Alias = blogStory.Alias; Description = blogStory.Description; SeoDescription = blogStory.SeoDescription; Keywords = blogStory.SeoKeywords; Content = blogStory.Content; StoryImageUrl = blogStory.StoryImageUrl; StoryThumbUrl = blogStory.StoryThumbUrl; CreateDate = blogStory.CreateDate.ToString("dd.MM.yyyy HH:mm"); ModifiedDate = blogStory.ModifiedDate.ToString("dd.MM.yyyy HH:mm"); IsPublished = blogStory.PublishedDate.HasValue; AccessToken = blogStory.AccessToken; Tags = "[]"; if (blogStory.BlogStoryTags != null) { TagsSelected = blogStory.BlogStoryTags.Select(x => x.TagId).JoinToString(","); } } }
public FullStoryViewModel(BlogStory story) { Id = story.Id; Title = story.Title; Keywords = story.SeoKeywords; Description = story.Description; SeoDescription = story.SeoDescription; StoryThumbUrl = story.StoryThumbUrl; CreateDate = story.CreateDate; if (story.PublishedDate.HasValue) { CreateDayDate = story.PublishedDate.Value.Day.ToString(); CreateMonthYearDate = $"{story.PublishedDate.Value.GetShorMonthName()} {story.PublishedDate.Value.Year}"; } else { CreateDayDate = story.CreateDate.Day.ToString(); CreateMonthYearDate = $"{story.CreateDate.GetShorMonthName()} {story.CreateDate.Year}"; } Slug = story.Alias; Content = story.Content; StoryImageUrl = story.StoryImageUrl; ModifiedDate = story.ModifiedDate; IsPublished = story.PublishedDate.HasValue; StoryTags = story.BlogStoryTags.IsNotEmpty() ? story.BlogStoryTags.Select(x => new TagViewModel(x.Tag)).ToList() : new List <TagViewModel>(0); }
public void Add(BlogStory entity) { lock (this._storys) { this._storys.Add(entity); this._newStorys.Add(entity); } }
public static SitemapItem ToSitemapItem(this BlogStory story, String baseUrl) { return(new SitemapItem { Url = $"{baseUrl}/{story.Alias}", Modified = story.ModifiedDate, ChangeFrequency = ChangeFrequency.Weekly, }); }
public EditBlogStoryViewModel(BlogStory blogStory, IEnumerable <Blog.Core.Entities.Tag> tags, IUrlHelper url) : this(blogStory) { Tags = tags == null ? "[]" : JsonConvert.SerializeObject(tags.Select(x => new TagShort(x)).ToList()); ShareLink = GetShareLink(url); }
public BlogStory GetByKey(Guid id) { BlogStory story = null; try { story = this._storys.Single(s => s.Id == id); } catch (InvalidOperationException) { } return(story); }
public BlogStory Find(FBS.Domain.Specifications.ISpecification <BlogStory> specification) { BlogStory story = null; try { this._storys.SingleOrDefault(specification.GetExpression().Compile()); } catch (InvalidOperationException) {} return(story); }
public AuthorShortBlogStoryViewModel(BlogStory story) { Id = story.Id; Title = story.Title; Alias = story.Alias; CreatedDate = story.CreateDate.ToString("dd.MM.yyyy HH:mm"); if (story.PublishedDate.HasValue) { PublisheddDate = story.PublishedDate.Value.ToString("dd.MM.yyyy HH:mm"); } Status = story.PublishedDate.HasValue ? BlosStoryStatus.Published : BlosStoryStatus.Draft; }
//public static Uri GetStoryFullUri(this BlogStory story, HttpRequest request) //{ // return new Uri(new Uri(request.GetDisplayUrl()), story.GetStoryUrl()); //} public static string GetUrlSafeTitle(this BlogStory story) { // Characters to replace with underscore char[] replacements = @" ""'?*.,+&:;\/#".ToCharArray(); string[] splits = story.Title.Split(replacements, StringSplitOptions.RemoveEmptyEntries); StringBuilder bldr = new StringBuilder(); foreach (string s in splits) { bldr.Append(s); bldr.Append("-"); } return(bldr.ToString(0, bldr.Length - 1)); }
public static HashSet <BlogStory> GetAll() { HashSet <BlogStory> list = new HashSet <BlogStory>(); string sql = "select * from fbs_Story"; using (DbDataReader dr = DataHelper.ExecuteReader(CommandType.Text, sql)) { while (dr.Read()) { list.Add(BlogStory.CreateFromReader(dr)); } } return(list); }
public BlogStory ToDomain() { String slug = null; if (String.IsNullOrWhiteSpace(Alias)) { slug = StringToUrlStandard.Convert(Title.Trim()); } else { Alias = Alias.ToLowerInvariant(); } var story = new BlogStory { Id = Id, Title = Title.Trim(), Alias = slug ?? Alias, Description = Description.Trim(), SeoDescription = SeoDescription?.Trim(), SeoKeywords = Keywords, Content = Content ?? String.Empty, StoryImageUrl = StoryImageUrl?.Trim(), StoryThumbUrl = StoryThumbUrl?.Trim(), CreateDate = String.IsNullOrWhiteSpace(CreateDate) ? DateTime.Now : DateTime.Parse(CreateDate), ModifiedDate = DateTime.Now, AccessToken = AccessToken }; if (!String.IsNullOrEmpty(TagsSelected)) { var tagIds = TagsSelected.GetGuids(','); story.BlogStoryTags = tagIds.Select(x => new BlogStoryTag { BlogStoryId = story.Id, TagId = x }) .ToList(); } return(story); }
public async Task UpdateBlogStoryTagsAsync(BlogStory story, CancellationToken cancel = default) { if (story == null) { throw new ArgumentNullException(nameof(story)); } var existTagIds = await _blogStoryTagRepository.GetIdsByStoryIdAsync(story.Id, cancel); var isAddingNewSet = existTagIds.IsEmpty() && story.BlogStoryTags.IsNotEmpty(); if (isAddingNewSet) { await _blogStoryTagRepository.AddRangeAsync(story.BlogStoryTags, cancel); return; } if (story.BlogStoryTags.IsEmpty()) { if (existTagIds.IsNotEmpty()) { await _blogStoryTagRepository.DeleteRangeAsync(existTagIds, story.Id, cancel); } return; } var targetTagIds = story.BlogStoryTags.Select(x => x.TagId).ToList(); var tagsForRemove = existTagIds.Except(targetTagIds).ToList(); var tagsForAdding = targetTagIds.Except(existTagIds).ToList(); if (tagsForAdding.IsNotEmpty()) { await _blogStoryTagRepository.AddRangeAsync(story.BlogStoryTags.Where(x => tagsForAdding.Contains(x.TagId)).ToList(), cancel); } if (tagsForRemove.IsNotEmpty()) { await _blogStoryTagRepository.DeleteRangeAsync(tagsForRemove, story.Id, cancel); } }
public async Task <BlogStory> AssignTagToBlogStory(Guid tagId, BlogStory blogStory, CancellationToken cancel = default) { if (blogStory == null) { throw new ArgumentNullException(nameof(blogStory)); } if (blogStory.BlogStoryTags.Count >= 3) { throw new EntityRelationshipException("Blog story already have reach relationship limit (3 entities)"); } await _blogStoryTagRepository.AddAsync(new BlogStoryTag(blogStory.Id, tagId), cancel); return(blogStory); }
public static string GetSummary(this BlogStory me) { var maxparagraphs = 2; var regex = new Regex("(<p[^>]*>.*?</p>)", RegexOptions.IgnoreCase | RegexOptions.Singleline); var result = regex.Matches(me.Body); StringBuilder bldr = new StringBuilder(); var x = 0; foreach (Match m in result) { x++; bldr.Append(m.Value); if (x == maxparagraphs) { break; } } return(bldr.ToString()); }
public ShortBlogStoryViewModel(BlogStory blogStory) { Id = blogStory.Id; Title = blogStory.Title; ShortContent = blogStory.Description; StoryThumbUrl = blogStory.StoryThumbUrl; Alias = blogStory.Alias; if (blogStory.PublishedDate.HasValue) { CreateDayDate = blogStory.PublishedDate.Value.Day.ToString(); CreateMonthYearDate = $"{blogStory.PublishedDate.Value.GetShorMonthName()} {blogStory.PublishedDate.Value.Year.ToString()}"; } else { CreateDayDate = blogStory.CreateDate.Day.ToString(); CreateMonthYearDate = $"{blogStory.CreateDate.GetShorMonthName()} {blogStory.CreateDate.Year.ToString()}"; } Tags = new List <TagViewModel>(0); }
private void MigrateStory(Stories story) { story.Body = FixBody(story.Body); var newStory = new BlogStory() { Title = story.Title, Body = story.Body, DatePublished = story.DatePosted, IsPublished = story.IsPublished, UniqueId = story.GetStoryUrl(), Slug = story.GetStoryUrl() }; var cats = string.Join(",", _ctx.StoryCategories.Include(c => c.Category).Where(s => s.Story_Id == story.Id).Select(s => s.Category.Name).ToArray()); newStory.Categories = cats; _repo.AddStory(newStory); }
private void FixSyntaxes(BlogStory story) { var html = story.Body; if (Regex.IsMatch(html, "<pre(.*)>(.*)<code>(.*)", RegexOptions.IgnoreCase)) { var doc = new HtmlDocument(); doc.LoadHtml(html); var pres = doc.DocumentNode.SelectNodes("//pre"); foreach (var pre in pres) { var code = pre.FirstChild; if (code != null && !code.Attributes.Contains("class")) { code.Attributes.Add("class", "lang-none"); } } story.Body = doc.DocumentNode.OuterHtml; } ; }
/// <summary> /// 以键值删除 /// </summary> /// <param name="id">键值</param> public void RemoveByKey(Guid id) { BlogStory storyToRemove = null; foreach (BlogStory story in this._storys) { if (story.Id == id) { storyToRemove = story; break; } } //从内存中加载到对象 if (storyToRemove != null) { this._storys.Remove(storyToRemove); this._removedStorys.Add(storyToRemove); } }
public ShortBlogStoryViewModel(BlogStory blogStory, List <TagViewModel> tags) : this(blogStory) { Tags = tags; }
public void AddStory(BlogStory story) { story.Id = _stories.Max(s => s.Id) + 1; _stories.Add(story); }
public void AddStory(BlogStory story) { _ctx.Stories.Add(story); }
public void Remove(BlogStory entity) { this._storys.Remove(entity); this._removedStorys.Add(entity); }
public static string GetStoryUrl(this BlogStory story) { return(string.Format("{0:0000}/{1:00}/{2:00}/{3}", story.DatePublished.Year, story.DatePublished.Month, story.DatePublished.Day, GetUrlSafeTitle(story))); }
public FullStoryViewModel(BlogStory story, List <Tag> tags) : this(story) { MenuTags = tags.IsEmpty() ? new List <TagViewModel>(0) : tags.Select(x => new TagViewModel(x)).ToList(); }