/// <summary>
 /// 贴吧详细显示页面
 /// </summary>
 /// <param name="sectionId"></param>
 /// <returns></returns>
 public string SectionDetail(long sectionId, SortBy_BarThread? sortBy = null, bool? isEssential = null, long? categoryId = null)
 {
     string spaceKey = TopicIdToTopicKeyDictionary.GetTopicKey(sectionId);
     if (string.IsNullOrEmpty(spaceKey))
         return string.Empty;
     return SiteUrls.Instance().TopicSectionDetail(spaceKey, categoryId, isEssential, sortBy);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 获取主题帖的排行数据
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="isEssential">是否为精华帖</param>
 /// <param name="sortBy">主题帖排序依据</param>
 /// <returns></returns>
 public IEnumerable<BarThread> GetTops(string tenantTypeId, int topNumber, bool? isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes)
 {
     //只获取可对外显示审核状态的主题帖
     //缓存周期:常用对象集合,不用维护即时性
     return barThreadRepository.GetTops(tenantTypeId, topNumber, isEssential, sortBy);
 }
Exemplo n.º 3
0
        /// <summary>
        /// 根据帖吧获取主题帖分页集合
        /// </summary>
        /// <param name="sectionId">帖吧Id</param>
        /// <param name="categoryId">帖吧分类Id</param>
        /// <param name="isEssential">是否为精华帖</param>
        /// <param name="sortBy">帖子排序依据</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>主题帖列表</returns>
        public PagingDataSet<BarThread> Gets(long sectionId, long? categoryId = null, bool? isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.LastModified_Desc, int pageIndex = 1)
        {
            //只获取可对外显示审核状态的主题帖
            //缓存周期:对象集合,需要维护即时性

            return barThreadRepository.Gets(sectionId, categoryId, isEssential, sortBy, pageIndex);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 获取群组贴吧的排行数据
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="sortBy">主题帖排序依据</param>
 /// <returns></returns>
 public IEnumerable <BarThread> GetTopsThreadOfGroup(string tenantTypeId, int topNumber, bool?isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes)
 {
     return(barThreadRepository.GetTopsThreadOfGroup(tenantTypeId, topNumber, isEssential, sortBy));
 }
 public ActionResult _Tops(int topNumber, bool? isEssential, SortBy_BarThread? sortBy)
 {
     IEnumerable<BarThread> threads = barThreadService.GetTops(TenantTypeIds.Instance().Bar(), topNumber, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes);
     ViewData["sortBy"] = sortBy;
     ViewData["isEssential"] = isEssential;
     return PartialView(threads);
 }
 public ActionResult Rank(SortBy_BarThread? sortBy, bool? isEssential, int pageIndex = 1)
 {
     PagingDataSet<BarThread> pds = barThreadService.Gets(TenantTypeIds.Instance().Bar(), string.Empty, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes, pageIndex);
     if (Request.IsAjaxRequest())
         return PartialView("_List", pds);
     pageResourceManager.InsertTitlePart("帖子排行");
     ViewData["sortBy"] = sortBy;
     return View(pds);
 }
Exemplo n.º 7
0
        /// <summary>
        /// ��ǩ�µ�����
        /// </summary>
        /// <param name="tagName">��ǩ��</param>
        /// <param name="sectionId">����id</param>
        /// <returns>��ǩ�µ�����</returns>
        public string ListByTag(string tagName, long? sectionId = null, SortBy_BarThread? sortBy = null, bool? isEssential = null)
        {
            if (sectionId == null)
                return string.Empty;

            string spaceKey = GroupIdToGroupKeyDictionary.GetGroupKey(sectionId.Value);
            if (string.IsNullOrEmpty(spaceKey))
                return string.Empty;

            return SiteUrls.Instance().GroupThreadListByTag(spaceKey, tagName, sortBy, isEssential);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 获取群组贴吧的排行数据
        /// </summary>
        /// <param name="tenantTypeId">租户类型Id</param>
        /// <param name="topNumber">前多少条</param>
        /// <param name="sortBy">主题帖排序依据</param>
        /// <returns></returns>
        public IEnumerable <BarThread> GetTopsThreadOfGroup(string tenantTypeId, int topNumber, bool?isEssential, SortBy_BarThread sortBy)
        {
            //只获取可对外显示审核状态的主题帖
            //缓存周期:常用对象集合,不用维护即时性
            return(GetTopEntities(topNumber, CachingExpirationType.UsualObjectCollection, () =>
            {
                StringBuilder cacheKey = new StringBuilder();
                cacheKey.AppendFormat("BarThreadRanks::TenantTypeId-{0}:SortBy-{1}:isEssential-{2}:isPublic-{3}", tenantTypeId, sortBy, isEssential, 1);
                return cacheKey.ToString();
            }
                                  , () =>
            {
                var sql = Sql.Builder;
                var whereSql = Sql.Builder;
                var orderSql = Sql.Builder;
                sql.Select("spb_BarThreads.*")
                .From("spb_BarThreads")
                .InnerJoin("spb_Groups")
                .On("spb_BarThreads.SectionId=spb_Groups.GroupId");
                whereSql.Where("spb_BarThreads.TenantTypeId = @0", tenantTypeId);
                whereSql.Where("spb_Groups.IsPublic=@0", 1);

                if (isEssential.HasValue)
                {
                    whereSql.Where("spb_BarThreads.IsEssential = @0", isEssential.Value);
                }

                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("spb_BarThreads.AuditStatus=@0", this.PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                    whereSql.Where("spb_BarThreads.AuditStatus>@0", this.PubliclyAuditStatus);
                    break;

                default:
                    break;
                }
                CountService countService = new CountService(TenantTypeIds.Instance().BarThread());
                string countTableName = countService.GetTableName_Counts();
                switch (sortBy)
                {
                case SortBy_BarThread.DateCreated_Desc:
                    orderSql.OrderBy("spb_BarThreads.ThreadId desc");
                    break;

                case SortBy_BarThread.LastModified_Desc:
                    orderSql.OrderBy("spb_BarThreads.LastModified desc");
                    break;

                case SortBy_BarThread.HitTimes:
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, CountTypes.Instance().HitTimes()))
                    .On("spb_BarThreads.ThreadId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case SortBy_BarThread.StageHitTimes:
                    StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().BarThread());
                    int stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes());
                    string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays);
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                    .On("spb_BarThreads.ThreadId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case SortBy_BarThread.PostCount:
                    orderSql.OrderBy("spb_BarThreads.PostCount desc");
                    break;

                default:
                    orderSql.OrderBy("spb_BarThreads.ThreadId desc");
                    break;
                }
                sql.Append(whereSql).Append(orderSql);
                return sql;
            }));
        }
Exemplo n.º 9
0
 /// <summary>
 /// 群组贴吧标签下的帖子
 /// </summary>
 /// <param name="spaceKey">群组groupKey</param>
 /// <param name="tagName">标签名</param>
 /// <param name="sortBy">排序字段</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>群组贴吧标签下的帖子</returns>
 public static string GroupThreadListByTag(this SiteUrls urls, string spaceKey, string tagName, SortBy_BarThread? sortBy = null, bool? isEssential = null, int pageIndex = 1)
 {
     RouteValueDictionary dic = new RouteValueDictionary();
     dic.Add("spaceKey", spaceKey);
     dic.Add("tagName", tagName);
     if (sortBy.HasValue)
         dic.Add("sortBy", sortBy);
     if (isEssential.HasValue)
         dic.Add("isEssential", isEssential);
     if (pageIndex > 1)
         dic.Add("pageIndex", pageIndex);
     return CachedUrlHelper.Action("ListByTag", "GroupSpaceBar", BarAreaName, dic);
 }
Exemplo n.º 10
0
 /// <summary>
 /// 群组贴吧首页
 /// </summary>
 /// <param name="urls"></param>
 /// <param name="spaceKey">群组groupKey</param>
 /// <param name="categoryId">分类id</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序方式</param>
 /// <param name="pageIndex">回帖页码</param>
 /// <returns>群组贴吧首页</returns>
 public static string GroupSectionDetail(this SiteUrls urls, string spaceKey, long? categoryId = null, bool? isEssential = null, SortBy_BarThread? sortBy = null, int pageIndex = 1, bool? isPosted = null)
 {
     RouteValueDictionary dic = new RouteValueDictionary();
     dic.Add("spaceKey", spaceKey);
     if (categoryId.HasValue)
         dic.Add("categoryId", categoryId);
     if (isEssential.HasValue)
         dic.Add("isEssential", isEssential);
     if (sortBy.HasValue)
         dic.Add("sortBy", sortBy);
     if (pageIndex > 1)
         dic.Add("pageIndex", pageIndex);
     if (isPosted.HasValue)
         dic.Add("isPosted", isPosted);
     return CachedUrlHelper.Action("SectionDetail", "GroupSpaceBar", BarAreaName, dic);
 }
Exemplo n.º 11
0
        /// <summary>
        /// 帖子排行
        /// </summary>
        /// <param name="siteUrls"></param>
        /// <param name="sortBy"></param>
        /// <param name="isEssential"></param>
        /// <returns></returns>
        public static string BarThreadRank(this SiteUrls siteUrls, SortBy_BarThread? sortBy = null, bool? isEssential = null)
        {
            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();
            if (sortBy.HasValue)
                routeValueDictionary.Add("sortBy", sortBy);
            if (isEssential.HasValue)
                routeValueDictionary.Add("isEssential", isEssential.Value);

            return CachedUrlHelper.Action("Rank", "Bar", BarAreaName, routeValueDictionary);
        }
Exemplo n.º 12
0
 /// <summary>
 /// ��ǩ�µ�����ҳ��
 /// </summary>
 /// <param name="tagName">��ǩ��</param>
 /// <param name="sectionId">����id</param>
 /// <returns>��ǩ�µ�����ҳ��</returns>
 public string ListByTag(string tagName, long? sectionId = null, SortBy_BarThread? sortBy = null, bool? isEssential = null)
 {
     return SiteUrls.Instance().ListsByTag(tagName, sortBy, isEssential);
 }
Exemplo n.º 13
0
 /// <summary>
 /// ������ϸ��ʾҳ��
 /// </summary>
 /// <param name="sectionId">����id</param>
 /// <returns>������ϸ��ʾҳ��</returns>
 public string SectionDetail(long sectionId, SortBy_BarThread? sortBy = null, bool? isEssential = null, long? categoryId = null)
 {
     return SiteUrls.Instance().SectionDetail(sectionId, sortBy, isEssential, categoryId);
 }
Exemplo n.º 14
0
        /// <summary>
        /// 根据帖吧获取主题帖分页集合
        /// </summary>
        /// <param name="sectionId">帖吧Id</param>
        /// <param name="categoryId">帖吧分类Id</param>
        /// <param name="isEssential">是否为精华帖</param>
        /// <param name="sortBy">帖子排序依据</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>主题帖列表</returns>
        public PagingDataSet <BarThread> Gets(long sectionId, long?categoryId = null, bool?isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.LastModified_Desc, int pageIndex = 1)
        {
            //只获取可对外显示审核状态的主题帖
            //缓存周期:对象集合,需要维护即时性



            return(barThreadRepository.Gets(sectionId, categoryId, isEssential, sortBy, pageIndex));
        }
Exemplo n.º 15
0
 /// <summary>
 /// 根据标签名获取主题帖排行分页集合
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="tageName">标签名</param>
 /// <param name="isEssential">是否为精华帖</param>
 /// <param name="sortBy">帖子排序依据</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>主题帖列表</returns>
 public PagingDataSet <BarThread> Gets(string tenantTypeId, string tageName, bool?isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes, int pageIndex = 1)
 {
     //只获取可对外显示审核状态的主题帖
     //缓存周期:对象集合,不用维护即时性
     return(barThreadRepository.Gets(tenantTypeId, tageName, isEssential, sortBy, pageIndex));
 }
Exemplo n.º 16
0
 /// <summary>
 /// 获取群组贴吧的排行数据
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="sortBy">主题帖排序依据</param>
 /// <returns></returns>
 public IEnumerable<BarThread> GetTopsThreadOfGroup(string tenantTypeId, int topNumber, bool? isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes)
 {
     return barThreadRepository.GetTopsThreadOfGroup(tenantTypeId, topNumber, isEssential, sortBy);
 }
Exemplo n.º 17
0
        /// <summary>
        /// 标签下的帖子
        /// </summary>
        /// <param name="siteUrls"></param>
        /// <param name="tagName">标签名</param>
        /// <returns>标签下的帖子名</returns>
        public static string ListsByTag(this SiteUrls siteUrls, string tagName, SortBy_BarThread? sortBy = null, bool? isEssential = null)
        {
            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();
            routeValueDictionary.Add("tagName", WebUtility.UrlEncode(tagName.TrimEnd('.')));
            if (sortBy.HasValue)
                routeValueDictionary.Add("sortBy", sortBy);
            if (isEssential.HasValue)
                routeValueDictionary.Add("isEssential", isEssential.Value);

            return CachedUrlHelper.RouteUrl("Channel_Bar_Tag", routeValueDictionary);
        }
Exemplo n.º 18
0
 /// <summary>
 /// 帖吧的详细显示页面
 /// </summary>
 /// <param name="siteUrls"></param>
 /// <param name="sectionId">帖吧的Id</param>
 /// <returns>帖吧详细像是页面的链接</returns>
 public static string SectionDetail(this SiteUrls siteUrls, long sectionId, SortBy_BarThread? sortBy = null, bool? isEssential = null, long? categoryId = null)
 {
     RouteValueDictionary routeValueDictionary = new RouteValueDictionary();
     routeValueDictionary.Add("sectionId", sectionId);
     if (sortBy.HasValue)
         routeValueDictionary.Add("sortBy", sortBy);
     if (isEssential.HasValue)
         routeValueDictionary.Add("isEssential", isEssential);
     if (categoryId.HasValue)
         routeValueDictionary.Add("categoryId", categoryId);
     return CachedUrlHelper.RouteUrl("Channel_Bar_SectionDetail", routeValueDictionary);
 }
Exemplo n.º 19
0
        /// <summary>
        /// 根据帖吧获取主题帖分页集合
        /// </summary>
        /// <param name="tenantTypeId">租户类型Id</param>
        /// <param name="sectionId">帖吧Id</param>
        /// <param name="categoryId">帖吧分类Id</param>
        /// <param name="isEssential">是否为精华帖</param>
        /// <param name="sortBy">帖子排序依据</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>主题帖列表</returns>
        public PagingDataSet <BarThread> Gets(long sectionId, long?categoryId, bool?isEssential, SortBy_BarThread sortBy, int pageIndex)
        {
            //只获取可对外显示审核状态的主题帖
            //缓存周期:对象集合,需要维护即时性
            return(GetPagingEntities(pageSize, pageIndex, CachingExpirationType.ObjectCollection, () =>
            {
                StringBuilder cacheKey = new StringBuilder();
                cacheKey.Append(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "SectionId", sectionId));
                cacheKey.AppendFormat("BarThreadsOfSectionId::CategoryId-{0}:IsEssential-{1}:SortBy-{2}", categoryId, isEssential, sortBy);
                return cacheKey.ToString();
            }
                                     , () =>
            {
                var sql = Sql.Builder;
                var whereSql = Sql.Builder;
                var orderSql = Sql.Builder;
                sql.Select("spb_BarThreads.*")
                .From("spb_BarThreads");
                whereSql.Where("SectionId = @0", sectionId);

                if (categoryId.HasValue && categoryId.Value > 0)
                {
                    sql.InnerJoin("tn_ItemsInCategories")
                    .On("ThreadId = tn_ItemsInCategories.ItemId");
                    whereSql.Where("tn_ItemsInCategories.CategoryId=@0", categoryId.Value);
                }
                if (isEssential.HasValue)
                {
                    whereSql.Where("IsEssential = @0", isEssential.Value);
                }

                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("AuditStatus=@0", this.PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                    whereSql.Where("AuditStatus>@0", this.PubliclyAuditStatus);
                    break;

                default:
                    break;
                }
                CountService countService = new CountService(TenantTypeIds.Instance().BarThread());
                string countTableName = countService.GetTableName_Counts();
                switch (sortBy)
                {
                case SortBy_BarThread.DateCreated_Desc:
                    orderSql.OrderBy("ThreadId desc");
                    break;

                case SortBy_BarThread.LastModified_Desc:
                    orderSql.OrderBy("IsSticky desc,LastModified desc");
                    break;

                case SortBy_BarThread.HitTimes:
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, CountTypes.Instance().HitTimes()))
                    .On("ThreadId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case SortBy_BarThread.StageHitTimes:
                    StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().BarThread());
                    int stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes());
                    string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays);
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                    .On("ThreadId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case SortBy_BarThread.PostCount:
                    orderSql.OrderBy("PostCount desc");
                    break;

                default:
                    orderSql.OrderBy("ThreadId desc");
                    break;
                }
                sql.Append(whereSql).Append(orderSql);
                return sql;
            }));
        }
Exemplo n.º 20
0
        /// <summary>
        /// ��ǩ��ʾ�����б�
        /// </summary>
        /// <returns></returns>
        public ActionResult ListByTag(string spaceKey, string tagName, SortBy_BarThread? sortBy, bool? isEssential, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);
            PagingDataSet<BarThread> pds = barThreadService.Gets(TenantTypeIds.Instance().Group(), tagName, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes, pageIndex);
            if (Request.IsAjaxRequest())
                return PartialView("~/Applications/Bar/Views/Bar/_ListInGroup.cshtml", pds);
            var group = groupService.Get(spaceKey);
            if (group == null)
                return HttpNotFound();
            pageResourceManager.InsertTitlePart(group.GroupName);
            pageResourceManager.InsertTitlePart(tagName);
            ViewData["sortBy"] = sortBy;
            var tag = new TagService(TenantTypeIds.Instance().BarThread()).Get(tagName);

            if (tag == null)
            {
                return HttpNotFound();
            }
            ViewData["tag"] = tag;

            ViewData["SectionId"] = GroupIdToGroupKeyDictionary.GetGroupId(spaceKey);
            ViewData["group"] = group;
            return View(pds);
        }
        public ActionResult SectionDetail(long sectionId, long? categoryId = null, bool? isEssential = null, SortBy_BarThread? sortBy = null, int pageIndex = 1)
        {
            BarSection barSection = barSectionService.Get(sectionId);

            if (barSection == null)
                return HttpNotFound();

            //当用户没有权限查看该贴吧的时候。提示较为有好的提示信息
            if (barSection.AuditStatus != AuditStatus.Success && !authorizer.BarSection_Manage(barSection))
            {
                return Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "没有权限",
                    Body = "此帖吧还未通过审核,不能查看",
                    StatusMessageType = StatusMessageType.Hint
                }));
            }

            if (!authorizer.BarSection_View(barSection))
                return Redirect(SiteUrls.Instance().SystemMessage(TempData, SystemMessageViewModel.NoCompetence()));

            PagingDataSet<BarThread> pds = barThreadService.Gets(sectionId, categoryId, isEssential, sortBy ?? SortBy_BarThread.LastModified_Desc, pageIndex);
            if (Request.IsAjaxRequest())
                return PartialView("_List", pds);
            pageResourceManager.InsertTitlePart(barSection.Name);
            IEnumerable<Category> sectionCategories = categoryService.GetCategoriesOfItem(barSection.SectionId, 0, TenantTypeIds.Instance().BarSection());
            if (sectionCategories != null && sectionCategories.Count() > 0)
            {

                Category currentSectionCategory = sectionCategories.First();
                List<Category> allParentCategories = new List<Category>();
                if (currentSectionCategory.Parent != null)
                    RecursiveGetAllParentCategories(currentSectionCategory.Parent, ref allParentCategories);
                ViewData["allParentSectionCategories"] = allParentCategories;
                ViewData["currentSectionCategory"] = currentSectionCategory;
                ViewData["topSections"] = barSectionService.GetTops(10, currentSectionCategory.CategoryId, SortBy_BarSection.ThreadAndPostCount);
            }
            Category currentThreadCategory = null;
            if (categoryId.HasValue && categoryId.Value > 0)
                currentThreadCategory = categoryService.Get(categoryId.Value);
            if (currentThreadCategory != null)
            {
                ViewData["currentThreadCategory"] = currentThreadCategory;
            }

            ViewData["OnlyFollowerCreateThread"] = barSettings.OnlyFollowerCreateThread;
            if (UserContext.CurrentUser != null)
                ViewData["IsSubscribed"] = subscribeService.IsSubscribed(sectionId, UserContext.CurrentUser.UserId);

            IEnumerable<long> topMemberUserIds = subscribeService.GetTopUserIdsOfObject(sectionId, 15);
            ViewData["topMembers"] = userService.GetFullUsers(topMemberUserIds);
            ViewData["section"] = barSection;
            ViewData["threadCategories"] = categoryService.GetRootCategories(TenantTypeIds.Instance().BarThread(), sectionId);
            ViewData["sortBy"] = sortBy;
            return View(pds);
        }
Exemplo n.º 22
0
        public ActionResult SectionDetail(string spaceKey, long? categoryId = null, bool? isEssential = null, SortBy_BarThread? sortBy = null, bool? isPosted = null, int pageIndex = 1)
        {
            IUser currentUser = UserContext.CurrentUser;
            long sectionId = GroupIdToGroupKeyDictionary.GetGroupId(spaceKey);
            BarSection barSection = barSectionService.Get(sectionId);
            if (barSection == null)
                return HttpNotFound();

            if (barSection.AuditStatus != AuditStatus.Success && !authorizer.BarSection_Manage(barSection))
            {
                return Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "û��Ȩ��",
                    Body = "��Ⱥ�黹δͨ����ˣ����ܲ鿴",
                    StatusMessageType = StatusMessageType.Hint
                }));
            }

            PagingDataSet<BarThread> pds = barThreadService.Gets(sectionId, categoryId, isEssential, sortBy ?? SortBy_BarThread.LastModified_Desc, pageIndex);
            if (Request.IsAjaxRequest())
                return PartialView("~/Applications/Bar/Views/Bar/_ListInGroup.cshtml", pds);
            pageResourceManager.InsertTitlePart(barSection.Name);
            Category currentThreadCategory = null;
            if (categoryId.HasValue && categoryId.Value > 0)
                currentThreadCategory = categoryService.Get(categoryId.Value);
            if (currentThreadCategory != null)
            {
                ViewData["currentThreadCategory"] = currentThreadCategory;
            }

            //���ǰ�û���������Լ��������б�������ǹ���Ա���������ˣ�
            bool ignoreAudit = currentUser != null && UserContext.CurrentUser.UserId == currentUser.UserId || authorizer.IsAdministrator(BarConfig.Instance().ApplicationId);
            if (isPosted.HasValue)
            {
                pds = barThreadService.GetUserThreads(TenantTypeIds.Instance().Group(), currentUser.UserId, ignoreAudit, isPosted.Value, pageIndex, sectionId);
            }

            ViewData["section"] = barSection;
            ViewData["threadCategories"] = categoryService.GetOwnerCategories(sectionId, TenantTypeIds.Instance().BarThread());
            ViewData["sortBy"] = sortBy;
            return View(pds);
        }
        /// <summary>
        /// 标签显示帖子列表
        /// </summary>
        /// <returns></returns>
        public ActionResult ListsByTag(string tagName, SortBy_BarThread? sortBy, bool? isEssential, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);

            PagingDataSet<BarThread> pds = barThreadService.Gets(TenantTypeIds.Instance().Bar(), tagName, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes, pageIndex);
            if (Request.IsAjaxRequest())
                return PartialView("_List", pds);
            var tag = new TagService(TenantTypeIds.Instance().BarThread()).Get(tagName);

            if (tag == null)
            {
                return HttpNotFound();
            }
            ViewData["tag"] = tag;

            pageResourceManager.InsertTitlePart(tagName);
            ViewData["sortBy"] = sortBy;
            return View(pds);
        }
Exemplo n.º 24
0
 /// <summary>
 /// 根据标签名获取主题帖排行分页集合
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="tageName">标签名</param>
 /// <param name="isEssential">是否为精华帖</param>
 /// <param name="sortBy">帖子排序依据</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>主题帖列表</returns>
 public PagingDataSet<BarThread> Gets(string tenantTypeId, string tageName, bool? isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes, int pageIndex = 1)
 {
     //只获取可对外显示审核状态的主题帖
     //缓存周期:对象集合,不用维护即时性
     return barThreadRepository.Gets(tenantTypeId, tageName, isEssential, sortBy, pageIndex);
 }
        public ActionResult _TopicTops(int topNumber, bool? isEssential, SortBy_BarThread sortBy = SortBy_BarThread.PostCount)
        {
            //todo:barThreadService为dll,需要扩展出GetTopsThreadOfTopic方法
            IEnumerable<BarThread> threads = barThreadService.GetTopsThreadOfGroup(TenantTypeIds.Instance().Group(), topNumber, isEssential, sortBy);

            ViewData["sortBy"] = sortBy;
            ViewData["isEssential"] = isEssential;
            return PartialView(threads.Take(topNumber));
        }
Exemplo n.º 26
0
 /// <summary>
 /// 获取主题帖的排行数据
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="isEssential">是否为精华帖</param>
 /// <param name="sortBy">主题帖排序依据</param>
 /// <returns></returns>
 public IEnumerable <BarThread> GetTops(string tenantTypeId, int topNumber, bool?isEssential = null, SortBy_BarThread sortBy = SortBy_BarThread.StageHitTimes)
 {
     //只获取可对外显示审核状态的主题帖
     //缓存周期:常用对象集合,不用维护即时性
     return(barThreadRepository.GetTops(tenantTypeId, topNumber, isEssential, sortBy));
 }