public static TModel FromVideoArticle <TModel>(VideoArticle videoArticle) where
        TModel : VideoArticleApiModel, new()
        {
            var model = new TModel();

            model.Id = videoArticle.Id;
            return(model);
        }
Example #2
0
        public static JObject parseVideoArticle2Json(VideoArticle videoArticle)
        {
            JObject result = new JObject();

            result["type"]        = videoArticle.Type;
            result["title"]       = videoArticle.Title;
            result["description"] = videoArticle.Description;
            result["video_id"]    = videoArticle.Video_id;
            result["avatar"]      = videoArticle.Avatar;
            result["comment"]     = videoArticle.Comment.getValue();

            return(result);
        }
Example #3
0
            public async Task <AddOrUpdateVideoArticleResponse> Handle(AddOrUpdateVideoArticleRequest request)
            {
                var entity = await _dataContext.VideoArticles
                             .SingleOrDefaultAsync(x => x.Id == request.VideoArticle.Id && x.IsDeleted == false);

                if (entity == null)
                {
                    _dataContext.VideoArticles.Add(entity = new VideoArticle());
                }
                entity.Name = request.VideoArticle.Name;
                await _dataContext.SaveChangesAsync();

                return(new AddOrUpdateVideoArticleResponse()
                {
                });
            }
Example #4
0
        /// <summary>
        /// ��ȡ��Ƶ���ż��ϡ�
        /// </summary>
        /// <param name="dataReader"></param>
        /// <returns></returns>
        public static List<VideoArticle> GetVideoArticles(DbDataReader dataReader)
        {
            // ������
            List<VideoArticle> videoArticles = new List<VideoArticle>();
            while (dataReader.Read())
            {
                VideoArticle videoArticle = new VideoArticle();

                videoArticle.Article.ArticleId = (int)dataReader[ViewVideoArticleField.ArticleId];
                videoArticle.Article.ArticleGuid = (Guid)dataReader[ViewVideoArticleField.ArticleGuid];

                // ��ȡ Category ����
                videoArticle.Article.Category.CategoryId = Convert.ToInt32(dataReader[ViewVideoArticleField.CategoryId]);
                videoArticle.Article.Category.CategoryGuid = (Guid)dataReader[ViewVideoArticleField.CategoryGuid];
                videoArticle.Article.Category.CategoryName = Convert.ToString(dataReader[ViewVideoArticleField.CategoryName]);
                videoArticle.Article.Category.ParentGuid = (Guid)dataReader[ViewVideoArticleField.ParentGuid];
                videoArticle.Article.Category.Rank = Convert.ToInt32(dataReader[ViewVideoArticleField.CategoryRank]);
                videoArticle.Article.Category.RecordCount = (int)dataReader[ViewVideoArticleField.RecordCount];

                if (dataReader[ViewVideoArticleField.MetaKeywords] != DBNull.Value)
                    videoArticle.Article.MetaKeywords = Convert.ToString(dataReader[ViewVideoArticleField.MetaKeywords]);

                if (dataReader[ViewVideoArticleField.MetaDesc] != DBNull.Value)
                    videoArticle.Article.MetaDesc = Convert.ToString(dataReader[ViewVideoArticleField.MetaDesc]);

                videoArticle.Article.Title = Convert.ToString(dataReader[ViewVideoArticleField.Title]);

                if (dataReader[ViewVideoArticleField.TitleColor] != DBNull.Value)
                    videoArticle.Article.TitleColor = Convert.ToString(dataReader[ViewVideoArticleField.TitleColor]);

                if (dataReader[ViewVideoArticleField.SubTitle] != DBNull.Value)
                    videoArticle.Article.SubTitle = Convert.ToString(dataReader[ViewVideoArticleField.SubTitle]);

                if (dataReader[ViewVideoArticleField.Summary] != DBNull.Value)
                    videoArticle.Article.Summary = Convert.ToString(dataReader[ViewVideoArticleField.Summary]);

                if (dataReader[ViewVideoArticleField.ContentHtml] != DBNull.Value)
                    videoArticle.Article.ContentHtml = Convert.ToString(dataReader[ViewVideoArticleField.ContentHtml]);

                if (dataReader[ViewVideoArticleField.Editor] != DBNull.Value)
                    videoArticle.Article.Editor = (Guid)dataReader[ViewVideoArticleField.Editor];

                if (dataReader[ViewVideoArticleField.Author] != DBNull.Value)
                    videoArticle.Article.Author = Convert.ToString(dataReader[ViewVideoArticleField.Author]);

                if (dataReader[ViewVideoArticleField.Original] != DBNull.Value)
                    videoArticle.Article.Original = Convert.ToString(dataReader[ViewVideoArticleField.Original]);

                videoArticle.Article.Rank = Convert.ToInt32(dataReader[ViewVideoArticleField.ArticleRank]);
                videoArticle.Article.Hits = Convert.ToInt32(dataReader[ViewVideoArticleField.Hits]);
                videoArticle.Article.Comments = Convert.ToInt32(dataReader[ViewVideoArticleField.Comments]);
                videoArticle.Article.Votes = Convert.ToInt32(dataReader[ViewVideoArticleField.Votes]);
                videoArticle.Article.DateCreated = Convert.ToDateTime(dataReader[ViewVideoArticleField.DateCreated]);

                // ��Ƶ��Ϣ
                videoArticle.VideoArticleId = Convert.ToInt32(dataReader[ViewVideoArticleField.VideoArticleId]);
                videoArticle.VideoArticleGuid = (Guid)dataReader[ViewVideoArticleField.VideoArticleGuid];
                //videoArticle.ArticleGuid = (Guid)dataReader[ViewVideoArticleField.ArticleGuid];
                videoArticle.VideoPath = Convert.ToString(dataReader[ViewVideoArticleField.VideoPath]);
                videoArticle.FlvVideoPath = (string)dataReader[ViewVideoArticleField.FlvVideoPath];
                videoArticle.PreviewFramePath = Convert.ToString(dataReader[ViewVideoArticleField.PreviewFramePath]);
                if (dataReader[ViewVideoArticleField.Star] != DBNull.Value)
                    videoArticle.Star = (byte)dataReader[ViewVideoArticleField.Star];

                videoArticles.Add(videoArticle);
            }
            dataReader.Close();
            return videoArticles;
        }
Example #5
0
 public int Update(VideoArticle videoArticle)
 {
     DbCommand command = DbProviderHelper.CreateCommand("UPDATEVideoArticle", CommandType.StoredProcedure);
     command.Parameters.Add(DbProviderHelper.CreateParameter("@VideoArticleId", DbType.Int32, videoArticle.VideoArticleId));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@VideoArticleGuid", DbType.Guid, videoArticle.VideoArticleGuid));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@ArticleGuid", DbType.Guid, videoArticle.Article.ArticleGuid));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@VideoPath", DbType.String, videoArticle.VideoPath));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@FlvVideoPath", DbType.String, videoArticle.FlvVideoPath));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@PreviewFramePath", DbType.String, videoArticle.PreviewFramePath));
     if (videoArticle.Star.HasValue)
         command.Parameters.Add(DbProviderHelper.CreateParameter("@Star", DbType.Byte, videoArticle.Star));
     else
         command.Parameters.Add(DbProviderHelper.CreateParameter("@Star", DbType.Byte, DBNull.Value));
     return DbProviderHelper.ExecuteNonQuery(command);
 }
Example #6
0
        public VideoArticle GetVideoArticle(Guid articleGuid)
        {
            VideoArticle videoArticle = new VideoArticle();
            videoArticle.Article.ArticleGuid = articleGuid;

            DbCommand command = DbProviderHelper.CreateCommand("SelectVideoArticle", CommandType.StoredProcedure);
            command.Parameters.Add(DbProviderHelper.CreateParameter("@ArticleGuid", DbType.Guid, articleGuid));
            DbDataReader dataReader = DbProviderHelper.ExecuteReader(command);
            while (dataReader.Read())
            {
                videoArticle.Article.ArticleId = (int)dataReader[ViewVideoArticleField.ArticleId];
                //videoArticle.Article.ArticleGuid = (Guid)dataReader[ViewVideoArticleField.ArticleGuid];

                // ��ȡ Category ����
                videoArticle.Article.Category.CategoryId = Convert.ToInt32(dataReader[ViewVideoArticleField.CategoryId]);
                videoArticle.Article.Category.CategoryGuid = (Guid)dataReader[ViewVideoArticleField.CategoryGuid];
                videoArticle.Article.Category.CategoryName = Convert.ToString(dataReader[ViewVideoArticleField.CategoryName]);
                videoArticle.Article.Category.ParentGuid = (Guid)dataReader[ViewVideoArticleField.ParentGuid];
                videoArticle.Article.Category.Rank = Convert.ToInt32(dataReader[ViewVideoArticleField.CategoryRank]);
                videoArticle.Article.Category.RecordCount = (int)dataReader[ViewVideoArticleField.RecordCount];

                if (dataReader[ViewVideoArticleField.MetaKeywords] != DBNull.Value)
                    videoArticle.Article.MetaKeywords = Convert.ToString(dataReader[ViewVideoArticleField.MetaKeywords]);

                if (dataReader[ViewVideoArticleField.MetaDesc] != DBNull.Value)
                    videoArticle.Article.MetaDesc = Convert.ToString(dataReader[ViewVideoArticleField.MetaDesc]);

                videoArticle.Article.Title = Convert.ToString(dataReader[ViewVideoArticleField.Title]);

                if (dataReader[ViewVideoArticleField.TitleColor] != DBNull.Value)
                    videoArticle.Article.TitleColor = Convert.ToString(dataReader[ViewVideoArticleField.TitleColor]);

                if (dataReader[ViewVideoArticleField.SubTitle] != DBNull.Value)
                    videoArticle.Article.SubTitle = Convert.ToString(dataReader[ViewVideoArticleField.SubTitle]);

                if (dataReader[ViewVideoArticleField.Summary] != DBNull.Value)
                    videoArticle.Article.Summary = Convert.ToString(dataReader[ViewVideoArticleField.Summary]);

                if (dataReader[ViewVideoArticleField.ContentHtml] != DBNull.Value)
                    videoArticle.Article.ContentHtml = Convert.ToString(dataReader[ViewVideoArticleField.ContentHtml]);

                if (dataReader[ViewVideoArticleField.Editor] != DBNull.Value)
                    videoArticle.Article.Editor = (Guid)dataReader[ViewVideoArticleField.Editor];

                if (dataReader[ViewVideoArticleField.Author] != DBNull.Value)
                    videoArticle.Article.Author = Convert.ToString(dataReader[ViewVideoArticleField.Author]);

                if (dataReader[ViewVideoArticleField.Original] != DBNull.Value)
                    videoArticle.Article.Original = Convert.ToString(dataReader[ViewVideoArticleField.Original]);

                videoArticle.Article.Rank = Convert.ToInt32(dataReader[ViewVideoArticleField.ArticleRank]);
                videoArticle.Article.Hits = Convert.ToInt32(dataReader[ViewVideoArticleField.Hits]);
                videoArticle.Article.Comments = Convert.ToInt32(dataReader[ViewVideoArticleField.Comments]);
                videoArticle.Article.Votes = Convert.ToInt32(dataReader[ViewVideoArticleField.Votes]);
                videoArticle.Article.DateCreated = Convert.ToDateTime(dataReader[ViewVideoArticleField.DateCreated]);

                // ��Ƶ��Ϣ
                videoArticle.VideoArticleId = Convert.ToInt32(dataReader[ViewVideoArticleField.VideoArticleId]);
                videoArticle.VideoArticleGuid = (Guid)dataReader[ViewVideoArticleField.VideoArticleGuid];
                //videoArticle.ArticleGuid = (Guid)dataReader[ViewVideoArticleField.ArticleGuid"];
                videoArticle.VideoPath = Convert.ToString(dataReader[ViewVideoArticleField.VideoPath]);
                videoArticle.FlvVideoPath = Convert.ToString(dataReader[ViewVideoArticleField.FlvVideoPath]);
                videoArticle.PreviewFramePath = Convert.ToString(dataReader[ViewVideoArticleField.PreviewFramePath]);
                if (dataReader[ViewVideoArticleField.Star] != DBNull.Value)
                    videoArticle.Star = (byte)(dataReader[ViewVideoArticleField.Star]);
            }
            dataReader.Close();
            return videoArticle;
        }
Example #7
0
 public int AddNew(VideoArticle videoArticle)
 {
     DbCommand command = DbProviderHelper.CreateCommand("INSERTVideoArticle", CommandType.StoredProcedure);
     command.Parameters.Add(DbProviderHelper.CreateParameter("@VideoArticleGuid", DbType.Guid, videoArticle.VideoArticleGuid));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@ArticleGuid", DbType.Guid, videoArticle.Article.ArticleGuid));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@VideoPath", DbType.String, videoArticle.VideoPath));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@FlvVideoPath", DbType.String, videoArticle.FlvVideoPath));
     command.Parameters.Add(DbProviderHelper.CreateParameter("@PreviewFramePath", DbType.String, videoArticle.PreviewFramePath));
     if (videoArticle.Star.HasValue)
         command.Parameters.Add(DbProviderHelper.CreateParameter("@Star", DbType.Byte, videoArticle.Star));
     else
         command.Parameters.Add(DbProviderHelper.CreateParameter("@Star", DbType.Byte, DBNull.Value));
     return Convert.ToInt32(DbProviderHelper.ExecuteScalar(command));
 }
 public static VideoArticleApiModel FromVideoArticle(VideoArticle videoArticle)
 => FromVideoArticle <VideoArticleApiModel>(videoArticle);
Example #9
0
        /// <summary>
        /// 发布视频文章内容页。
        /// </summary>
        /// <param name="videoArticle">视频文章</param>
        /// <param name="videoArticleRelease">视频文章发布对象</param>
        public void ReleasingVideoArticleItem(VideoArticle videoArticle, Release videoArticleRelease)
        {
            // 详细页:{ReleaseDirectory}/{CategoryId}/{Year}-{Month}-{Day}/{ArticleId}.htm
            if (videoArticleRelease.Template.TemplateType != TemplateType.VideoArticleItem) return;

            // 装载模版
            videoArticleRelease.Template.TemplatePath = Regex.Replace(videoArticleRelease.Template.TemplatePath, @"\{TemplateDirectory\}", this.TemplateDirectory, RegexOptions.IgnoreCase);
            string templatePath = System.Web.HttpContext.Current.Server.MapPath(videoArticleRelease.Template.TemplatePath);
            Wis.Toolkit.Templates.TemplateManager templateManager = Wis.Toolkit.Templates.TemplateManager.LoadFile(templatePath, Encoding.UTF8);

            templateManager.SetVariable("ApplicationPath", this.ApplicationPath);
            templateManager.SetVariable("TemplateDirectory", this.TemplateDirectory);
            templateManager.SetVariable("ReleaseDirectory", this.ReleaseDirectory);

            // 处理 Release
            videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{ReleaseDirectory\}", this.ReleaseDirectory, RegexOptions.IgnoreCase);
            videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{CategoryId\}", videoArticle.Article.Category.CategoryId.ToString(), RegexOptions.IgnoreCase);
            videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{Year\}", videoArticle.Article.DateCreated.Year.ToString(), RegexOptions.IgnoreCase);
            videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{Month\}", videoArticle.Article.DateCreated.Month.ToString(), RegexOptions.IgnoreCase);
            videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{Day\}", videoArticle.Article.DateCreated.Day.ToString(), RegexOptions.IgnoreCase);

            // 生成静态页
#warning 按照 ContentHtml 长度,生成多页,需要测试
            string pagerSeparator = "<!--Article.ContentHtml.Pager-->";
            if (videoArticle.Article.ContentHtml.IndexOf(pagerSeparator) > -1) // 含有分页
            {
                string[] contentHtmls = videoArticle.Article.ContentHtml.Split(pagerSeparator.ToCharArray());
                for (int index = 0; index < contentHtmls.Length; index++)
                {
                    videoArticle.Article.ContentHtml = contentHtmls[index] + ReleaseTinyPager((index + 1), contentHtmls.Length);
                    templateManager.SetVariable("VideoArticle", videoArticle); // 最近更新的文章
                    string replacedArticleId = string.Format("{0}/{1}", videoArticle.Article.ArticleId, (index + 1));
                    //videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{ArticleId\}", replacedArticleId, RegexOptions.IgnoreCase);
                    string rawReleasePath = videoArticleRelease.ReleasePath; // 记录{ArticleId}
                    videoArticleRelease.ReleasePath = Regex.Replace(rawReleasePath, @"\{ArticleId\}", replacedArticleId, RegexOptions.IgnoreCase);
                    ReleasingStaticPage(videoArticleRelease, templateManager);
                    videoArticleRelease.ReleasePath = rawReleasePath;

                    ReleasingStaticPage(videoArticleRelease, templateManager);
                }
            }
            else
            {
                templateManager.SetVariable("VideoArticle", videoArticle); // 最近更新的文章
                videoArticleRelease.ReleasePath = Regex.Replace(videoArticleRelease.ReleasePath, @"\{ArticleId\}", videoArticle.Article.ArticleId.ToString(), RegexOptions.IgnoreCase);

                ReleasingStaticPage(videoArticleRelease, templateManager);
            }
        }
Example #10
0
 /// <summary>
 /// 发布视频文章内容页。
 /// </summary>
 /// <param name="videoArticle">视频文章</param>
 public void ReleasingVideoArticleItem(VideoArticle videoArticle)
 {
     List<Release> releases = GetReleasesByCategoryGuid(videoArticle.Article.Category.CategoryGuid, TemplateType.VideoArticleItem);
     foreach (Release release in releases)
     {
         ReleasingVideoArticleItem(videoArticle, release);
     }
 }
Example #11
0
        public void ReleasingRemovedVideoArticle(VideoArticle videoArticle)
        {
            // 1 发布 VideoArticle 页面,根据分类编号找 Item 的模版
            // 2 发布 Category 页面,根据分类编号找List或Index的模版
            List<Release> releases = GetReleasesByCategoryGuid(videoArticle.Article.Category.CategoryGuid);
            foreach (Release release in releases)
            {
                switch (release.Template.TemplateType)
                {
                    case TemplateType.VideoArticleIndex: // 视频文章索引页
                        ReleasingVideoArticleIndex(videoArticle.Article.Category, release);
                        break;
                    case TemplateType.VideoArticleList: // 视频文章列表页,带分页
                        ReleasingVideoArticleList(videoArticle.Article.Category, release);
                        break;
                    case TemplateType.VideoArticleItem:// 移除文章详细页
                        // 处理 Release
                        release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{ReleaseDirectory\}", this.ReleaseDirectory, RegexOptions.IgnoreCase);
                        release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{CategoryId\}", videoArticle.Article.Category.CategoryId.ToString(), RegexOptions.IgnoreCase);
                        release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{Year\}", videoArticle.Article.DateCreated.Year.ToString(), RegexOptions.IgnoreCase);
                        release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{Month\}", videoArticle.Article.DateCreated.Month.ToString(), RegexOptions.IgnoreCase);
                        release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{Day\}", videoArticle.Article.DateCreated.Day.ToString(), RegexOptions.IgnoreCase);

                        // 生成静态页
#warning 按照 ContentHtml 长度,删除多页,需要测试
                        string pagerSeparator = "<!--Article.ContentHtml.Pager-->";
                        if (videoArticle.Article.ContentHtml.IndexOf(pagerSeparator) > -1) // 含有分页
                        {
                            string[] contentHtmls = videoArticle.Article.ContentHtml.Split(pagerSeparator.ToCharArray());
                            for (int index = 0; index < contentHtmls.Length; index++)
                            {
                                string replacedArticleId = string.Format("{0}/{1}", videoArticle.Article.ArticleId, (index + 1));
                                release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{ArticleId\}", replacedArticleId, RegexOptions.IgnoreCase);

                                // 删除文章静态页
                                release.ReleasePath = System.Web.HttpContext.Current.Server.MapPath(release.ReleasePath);
                                if (System.IO.File.Exists(release.ReleasePath))
                                    System.IO.File.Delete(release.ReleasePath);
                            }
                        }
                        else
                        {
                            release.ReleasePath = Regex.Replace(release.ReleasePath, @"\{ArticleId\}", videoArticle.Article.ArticleId.ToString(), RegexOptions.IgnoreCase);

                            // 删除文章静态页
                            release.ReleasePath = System.Web.HttpContext.Current.Server.MapPath(release.ReleasePath);
                            if (System.IO.File.Exists(release.ReleasePath))
                                System.IO.File.Delete(release.ReleasePath);
                        }

                        break;
                    default:
                        throw new System.ArgumentException("TemplateType");
                }
            }

            // 3 发布被引用的页面
            ReleasingRelatedReleases(videoArticle.Article.Category.CategoryGuid);
        }
Example #12
0
        /// <summary>
        /// 发布视频文章静态页和关联的静态页。
        /// </summary>
        /// <param name="videoArticle"></param>
        public void ReleasingVideoArticle(VideoArticle videoArticle)
        {
            // 1 发布 VideoArticle 页面,根据分类编号找Item的模版
            // 2 发布 Category 页面,根据分类编号找List或Index的模版
            List<Release> releases = GetReleasesByCategoryGuid(videoArticle.Article.Category.CategoryGuid);
            foreach (Release release in releases)
            {
                switch (release.Template.TemplateType)
                {
                    case TemplateType.VideoArticleIndex: // 视频文章索引页
                        ReleasingVideoArticleIndex(videoArticle.Article.Category, release);
                        break;
                    case TemplateType.VideoArticleList: // 视频文章列表页,带分页
                        ReleasingVideoArticleList(videoArticle.Article.Category, release);
                        break;
                    case TemplateType.VideoArticleItem:// 视频文章详细页
                        ReleasingVideoArticleItem(videoArticle, release);
                        break;
                    default:
                        throw new System.ArgumentException("TemplateType");
                }          
            }

            // 3 发布被引用的页面
            ReleasingRelatedReleases(videoArticle.Article.Category.CategoryGuid);
        }