コード例 #1
0
        public ActionResult _PapersOfTopic(string spaceKey)
        {
            long topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <PaperEntity> papers = paperService.GetPapersByTopicId(topicId);

            return(View(papers));
        }
コード例 #2
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().Topic(), tagName, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes, pageIndex);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("~/Applications/Bar/Views/Bar/_ListInTopic.cshtml", pds));
            }
            var topic = topicService.Get(spaceKey);

            if (topic == null)
            {
                return(HttpNotFound());
            }
            pageResourceManager.InsertTitlePart(topic.TopicName);
            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"] = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            ViewData["topic"]     = topic;
            return(View(pds));
        }
コード例 #3
0
        public ActionResult _Menu_Manage(string spaceKey)
        {
            long        groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TopicEntity group   = groupService.Get(groupId);

            if (group == null)
            {
                return(Content(string.Empty));
            }

            int currentNavigationId = RouteData.Values.Get <int>("CurrentNavigationId", 0);

            NavigationService navigationService = new NavigationService();
            Navigation        navigation        = navigationService.GetNavigation(PresentAreaKeysOfBuiltIn.GroupSpace, currentNavigationId, group.TopicId);

            IEnumerable <Navigation> navigations = new List <Navigation>();

            if (navigation != null)
            {
                if (navigation.Depth >= 1 && navigation.Parent != null)
                {
                    navigations = navigation.Parent.Children;
                }
                else if (navigation.Depth == 0)
                {
                    navigations = navigation.Children;
                }
            }

            ViewData["MemberApplyCount"] = groupService.GetMemberApplyCount(group.TopicId);

            return(View(navigations));
        }
コード例 #4
0
        public ActionResult DeleteMemberApply(string spaceKey, long id)
        {
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            groupService.DeleteTopicMemberApply(id);
            return(Json(new StatusMessageData(StatusMessageType.Success, "操作成功")));
        }
コード例 #5
0
        public ActionResult _TopicMenu(string spaceKey)
        {
            long        groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TopicEntity group   = groupService.Get(groupId);

            if (group == null)
            {
                return(Content(string.Empty));
            }

            int currentNavigationId = RouteData.Values.Get <int>("CurrentNavigationId", 0);
            IEnumerable <Navigation> navigations = new List <Navigation>();

            NavigationService navigationService = new NavigationService();
            Navigation        navigation        = navigationService.GetNavigation(PresentAreaKeysOfBuiltIn.GroupSpace, currentNavigationId, group.TopicId);

            if (navigation != null && navigation.Children.Count() > 0)
            {
                navigations = navigation.Children;
            }
            else
            {
                navigations = navigationService.GetRootNavigations(PresentAreaKeysOfBuiltIn.GroupSpace, group.TopicId);
            }

            return(View(navigations));
        }
コード例 #6
0
        /// <summary>
        /// 我关注的专题成员
        /// </summary>
        /// <param name="spaceKey"></param>
        /// <param name="pageIndex"></param>
        /// <returns></returns>
        public ActionResult MyFollowedUsers(string spaceKey, int pageIndex = 1)
        {
            TopicEntity group = groupService.Get(spaceKey);

            if (group == null)
            {
                return(HttpNotFound());
            }
            var currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                return(Redirect(SiteUrls.Instance().Login(true)));
            }

            pageResourceManager.InsertTitlePart(group.TopicName);
            pageResourceManager.InsertTitlePart("管理成员列表页");

            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <TopicMember>   groupMember  = groupService.GetTopicMembersAlsoIsMyFollowedUser(groupId, currentUser.UserId);
            PagingDataSet <TopicMember> groupMembers = new PagingDataSet <TopicMember>(groupMember);

            if (currentUser.IsFollowed(group.User.UserId))
            {
                ViewData["groupOwner"] = group.User;
            }



            return(View(groupMembers));
        }
コード例 #7
0
        public ActionResult _TopicMemberAlsoJoinedTopics(string spaceKey, int topNumber = 10)
        {
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <TopicEntity> groups = groupService.TopicMemberAlsoJoinedTopics(groupId, topNumber);

            return(View(groups));
        }
コード例 #8
0
        public JsonResult GetNewerTopicActivityCount(string spaceKey, long lastActivityId, int?applicationId)
        {
            if (UserContext.CurrentUser == null)
            {
                return(Json(new { }));
            }
            long   groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            string name;
            int    count = activityService.GetNewerCount(groupId, lastActivityId, applicationId, out name, ActivityOwnerTypes.Instance().Topic(), UserContext.CurrentUser.UserId);

            if (count == 0)
            {
                return(Json(new { lastActivityId = lastActivityId, hasNew = false }));
            }
            else
            {
                string showName;
                if (count == 1)
                {
                    showName = name + "更新了动态,点击查看";
                }
                else
                {
                    showName = name + "等多位群友更新了动态,点击查看";
                }
                return(Json(new { hasNew = true, showName = showName }));
            }
        }
コード例 #9
0
        public ActionResult ApproveMemberApply(string spaceKey, IList <long> applyIds, bool isApproved)
        {
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            groupService.ApproveTopicMemberApply(applyIds, isApproved);
            return(Json(new StatusMessageData(StatusMessageType.Success, "操作成功")));
        }
コード例 #10
0
        public ActionResult ManagePosts(string spaceKey, ManagePostsEditModel model, int pageIndex = 1)
        {
            long       sectionId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            BarSection section   = barSectionService.Get(sectionId);

            if (!authorizer.BarSection_Manage(section))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "没有权限",
                    Body = "您可能没有权限编辑此帖吧"
                })));
            }

            var topic = topicService.Get(spaceKey);

            pageResourceManager.InsertTitlePart(topic.TopicName);

            pageResourceManager.InsertTitlePart("回帖管理");

            BarPostQuery query = model.AsBarPostQuery();

            query.SectionId = section.SectionId;

            model.SectionId = section.SectionId;

            ViewData["BarPosts"] = barPostService.Gets(TenantTypeIds.Instance().Topic(), query, model.PageSize ?? 20, pageIndex);
            return(View(model));
        }
コード例 #11
0
        public ActionResult UserThreads(string spaceKey, bool isPosted = false, int pageIndex = 1)
        {
            IUser currentUser = UserContext.CurrentUser;
            long  sectionId   = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            //若当前用户是在浏览自己的帖子列表,或者是管理员,则忽略审核;
            bool ignoreAudit = currentUser != null && UserContext.CurrentUser.UserId == currentUser.UserId || authorizer.IsAdministrator(BarConfig.Instance().ApplicationId);
            PagingDataSet <BarThread> pds = barThreadService.GetUserThreads(TenantTypeIds.Instance().Topic(), currentUser.UserId, ignoreAudit, isPosted, pageIndex, sectionId);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("~/Applications/Bar/Views/Bar/_ListInTopic.cshtml", pds));
            }
            var topic = topicService.Get(spaceKey);

            pageResourceManager.InsertTitlePart(topic.TopicName);
            string title = isPosted ? "我的回帖" : "我的帖子";

            if (UserContext.CurrentUser != null && UserContext.CurrentUser.UserId != currentUser.UserId)
            {
                title = isPosted ? currentUser.DisplayName + "的回帖" : currentUser.DisplayName + "的帖子";
                ViewData["isOwner"] = false;
            }
            pageResourceManager.InsertTitlePart(title);
            ViewData["userId"] = currentUser != null ? currentUser.UserId : 0;
            return(View(pds));
        }
コード例 #12
0
        public ActionResult _TagCloud(string spaceKey, int topNum = 20)
        {
            long       sectionId  = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TagService tagService = new TagService(TenantTypeIds.Instance().BarThread());
            Dictionary <TagInOwner, int> ownerTags = tagService.GetOwnerTopTags(topNum, sectionId);

            return(View(ownerTags));
        }
コード例 #13
0
        /// <summary>
        /// 最近访客控件
        /// </summary>
        public ActionResult _LastTopicVisitors(string spaceKey, int topNumber = 12)
        {
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <Visit> visits = visitService.GetTopVisits(groupId, topNumber);

            ViewData["groupId"] = groupId;
            return(View(visits));
        }
コード例 #14
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   = TopicIdToTopicKeyDictionary.GetTopicId(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/_ListInTopic.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().Topic(), currentUser.UserId, ignoreAudit, isPosted.Value, pageIndex, sectionId);
            }

            ViewData["section"]          = barSection;
            ViewData["threadCategories"] = categoryService.GetOwnerCategories(sectionId, TenantTypeIds.Instance().BarThread());
            ViewData["sortBy"]           = sortBy;
            return(View(pds));
        }
コード例 #15
0
        /// <summary>
        /// 最新加入
        /// </summary>
        /// <param name="spaceKey">专题标识</param>
        /// <param name="topNumber">前几条数据</param>
        /// <returns></returns>
        public ActionResult _ListMembers(string spaceKey, int topNumber)
        {
            long  groupId     = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                return(new EmptyResult());
            }
            PagingDataSet <TopicMember> groupMembers = groupService.GetTopicMembers(groupId, false, SortBy_TopicMember.DateCreated_Desc);
            IEnumerable <TopicMember>   members      = groupMembers.Take(topNumber);

            return(View(members));
        }
コード例 #16
0
        /// <summary>
        /// 专题信息
        /// </summary>
        /// <param name="spaceKey">专题标识</param>
        /// <param name="showtopicLogo">显示专题Logo</param>
        /// <returns></returns>
        //[HttpGet]
        public ActionResult _TopicInfo(string spaceKey, bool?showTopicLogo)
        {
            long        topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TopicEntity topic   = topicService.Get(topicId);

            if (topic == null)
            {
                return(Content(string.Empty));
            }

            ViewData["showTopicLogo"] = showTopicLogo;

            return(View(topic));
        }
コード例 #17
0
        /// <summary>
        /// 获取以后进入用户时间线的动态
        /// </summary>
        public ActionResult _GetNewerActivities(string spaceKey, int?applicationId, long?lastActivityId = 0)
        {
            if (UserContext.CurrentUser == null)
            {
                return(new EmptyResult());
            }
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <Activity> newActivities = activityService.GetNewerActivities(groupId, lastActivityId.Value, applicationId, ActivityOwnerTypes.Instance().Topic(), UserContext.CurrentUser.UserId);

            if (newActivities != null && newActivities.Count() > 0)
            {
                ViewData["lastActivityId"] = newActivities.FirstOrDefault().ActivityId;
            }
            return(View(newActivities));
        }
コード例 #18
0
        public ActionResult _ListActivities(string spaceKey, int?pageIndex, int?applicationId, MediaType?mediaType, bool?isOriginal, long?userId)
        {
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            PagingDataSet <Activity> activities = activityService.GetOwnerActivities(ActivityOwnerTypes.Instance().Topic(), groupId, applicationId, mediaType, isOriginal, null, pageIndex ?? 1, userId);

            if (activities.FirstOrDefault() != null)
            {
                ViewData["lastActivityId"] = activities.FirstOrDefault().ActivityId;
            }
            ViewData["pageIndex"]     = pageIndex;
            ViewData["applicationId"] = applicationId;
            ViewData["mediaType"]     = mediaType;
            ViewData["isOriginal"]    = isOriginal;
            ViewData["userId"]        = userId;
            return(View(activities));
        }
コード例 #19
0
        /// <summary>
        /// 成员列表
        /// </summary>
        /// <returns></returns>
        public ActionResult Members(string spaceKey, int pageIndex = 1)
        {
            TopicEntity topic = topicService.Get(spaceKey);

            if (topic == null)
            {
                return(HttpNotFound());
            }
            pageResourceManager.InsertTitlePart(topic.TopicName);
            pageResourceManager.InsertTitlePart("管理成员列表页");
            long topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            PagingDataSet <TopicMember> topicMembers = topicService.GetTopicMembers(topicId, false, pageSize: 60, pageIndex: pageIndex);

            ViewData["Topic"] = topic;

            return(View(topicMembers));
        }
コード例 #20
0
        public ActionResult _OnlineTopicMembers(string spaceKey, int topNumber = 12)
        {
            TopicEntity group = groupService.Get(spaceKey);

            ViewData["User"] = group.User;
            long groupId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            IEnumerable <TopicMember> groupMembers = groupService.GetOnlineTopicMembers(groupId);

            if (group.User.IsOnline)
            {
                return(View(groupMembers.Take(topNumber - 1)));
            }
            else
            {
                return(View(groupMembers.Take(topNumber)));
            }
        }
コード例 #21
0
        public ActionResult ManageThreads(string spaceKey, ManageThreadEditModel model, int pageIndex = 1)
        {
            long       topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            BarSection section = barSectionService.Get(topicId);

            if (!authorizer.BarSection_Manage(section))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Body = string.Format("您没有权限管理 {0} !", section == null ? "" : section.Name),
                    Title = "没有权限",
                    StatusMessageType = StatusMessageType.Hint
                })));
            }
            var topic = topicService.Get(spaceKey);

            pageResourceManager.InsertTitlePart(topic.TopicName);

            pageResourceManager.InsertTitlePart("帖吧管理");

            List <SelectListItem> SelectListItem_TrueAndFlase = new List <SelectListItem> {
                new SelectListItem {
                    Text = "是", Value = true.ToString()
                }, new SelectListItem {
                    Text = "否", Value = false.ToString()
                }
            };

            ViewData["IsEssential"] = new SelectList(SelectListItem_TrueAndFlase, "Value", "Text", model.IsEssential);
            ViewData["IsSticky"]    = new SelectList(SelectListItem_TrueAndFlase, "Value", "Text", model.IsSticky);

            IEnumerable <Category> categories = categoryService.GetOwnerCategories(section.SectionId, TenantTypeIds.Instance().BarThread());

            ViewData["CategoryId"] = new SelectList(categories.Select(n => new { text = StringUtility.Trim(n.CategoryName, 20), value = n.CategoryId }), "value", "text", model.CategoryId);

            BarThreadQuery query = model.GetBarThreadQuery();

            query.SectionId        = section.SectionId;
            ViewData["BarThreads"] = barThreadService.Gets(TenantTypeIds.Instance().Topic(), query, model.PageSize ?? 20, pageIndex);

            model.SectionId = section.SectionId;

            ViewData["TenantType"] = new TenantTypeService().Get(TenantTypeIds.Instance().Topic());

            return(View(model));
        }
コード例 #22
0
        /// <summary>
        /// 专题空间主导航
        /// </summary>
        /// <param name="spaceKey">专题空间标识</param>
        /// <returns></returns>
        //[HttpGet]
        public ActionResult _Menu_Main(string spaceKey)
        {
            long        topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TopicEntity topic   = topicService.Get(topicId);

            if (topic == null)
            {
                return(Content(string.Empty));
            }

            ManagementOperationService managementOperationService = new ManagementOperationService();

            ViewData["ApplicationManagementOperations"] = managementOperationService.GetShortcuts(PresentAreaKeysOfExtension.TopicSpace, false);

            NavigationService navigationService = new NavigationService();

            return(View(navigationService.GetRootNavigations(PresentAreaKeysOfExtension.TopicSpace, topic.TopicId)));
        }
コード例 #23
0
        public ActionResult ManageThreadCategories(string spaceKey, int pageIndex = 1)
        {
            long sectionId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            if (!authorizer.BarSection_Manage(sectionId))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Body = "您没有权限编辑此帖吧的分类",
                    Title = "没有权限"
                })));
            }
            var topic = topicService.Get(spaceKey);

            pageResourceManager.InsertTitlePart(topic.TopicName);

            pageResourceManager.InsertTitlePart("类别管理");
            ViewData["SectionId"] = sectionId;
            return(View(categoryService.GetOwnerCategories(sectionId, TenantTypeIds.Instance().BarThread())));
        }
コード例 #24
0
        /// <summary>
        /// 专题空间主导航
        /// </summary>
        /// <param name="spaceKey">专题空间标识</param>
        /// <returns></returns>
        //[HttpGet]
        public ActionResult _Menu_App(string spaceKey)
        {
            long        topicId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            TopicEntity topic   = topicService.Get(topicId);

            if (topic == null)
            {
                return(Content(string.Empty));
            }

            int currentNavigationId = RouteData.Values.Get <int>("CurrentNavigationId", 0);


            NavigationService navigationService = new NavigationService();
            Navigation        navigation        = navigationService.GetNavigation(PresentAreaKeysOfExtension.TopicSpace, currentNavigationId, topic.TopicId);

            IEnumerable <Navigation> navigations = new List <Navigation>();

            if (navigation != null)
            {
                if (navigation.Depth >= 1 && navigation.Parent != null)
                {
                    navigations = navigation.Parent.Children;
                }
                else if (navigation.Depth == 0)
                {
                    navigations = navigation.Children;
                }


                ManagementOperationService managementOperationService = new ManagementOperationService();
                IEnumerable <ApplicationManagementOperation> applicationManagementOperations = managementOperationService.GetShortcuts(PresentAreaKeysOfExtension.TopicSpace, false);
                if (applicationManagementOperations != null)
                {
                    ViewData["ApplicationManagementOperations"] = applicationManagementOperations.Where(n => n.ApplicationId == navigation.ApplicationId);
                }
            }

            return(View(navigations));
        }
コード例 #25
0
        /// <summary>
        /// 群组内搜索帖子
        /// </summary>
        /// <param name="spaceKey">群组名</param>
        /// <param name="keyword">关键字</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>群组内搜索帖子</returns>
        public ActionResult Search(string spaceKey, string keyword, BarSearchRange term = BarSearchRange.ALL, int pageIndex = 1)
        {
            long barSectionId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            var topic = topicService.Get(spaceKey);

            if (topic == null)
            {
                return(HttpNotFound());
            }

            ViewData["topic"] = topic;
            BarSection section = barSectionService.Get(barSectionId);

            if (section == null)
            {
                return(HttpNotFound());
            }

            ViewData["section"] = section;

            BarFullTextQuery query = new BarFullTextQuery();

            query.Term = term;

            query.PageIndex = pageIndex;
            query.PageSize  = 20;//每页记录数
            query.Keyword   = keyword;
            query.Range     = section.SectionId.ToString();

            //获取群组贴吧的帖子
            query.TenantTypeId = TenantTypeIds.Instance().Topic();

            //根据帖吧id查询帖吧名字
            query.TenantTypeId       = section.TenantTypeId;
            ViewData["barname"]      = section.Name;
            ViewData["TenantTypeId"] = section.TenantTypeId;

            //调用搜索器进行搜索
            BarSearcher BarSearcher = (BarSearcher)SearcherFactory.GetSearcher(BarSearcher.CODE);
            PagingDataSet <BarEntity> BarEntities = BarSearcher.Search(query);

            if (Request.IsAjaxRequest())
            {
                return(View("~/Applications/Bar/Views/Bar/_ListSearchThread.cshtml", BarEntities));
            }

            //设置页面Meta
            if (string.IsNullOrWhiteSpace(query.Keyword))
            {
                pageResourceManager.InsertTitlePart("群组帖子搜索");//设置页面Title
            }
            else
            {
                pageResourceManager.InsertTitlePart('“' + query.Keyword + '”' + "的相关帖子");//设置页面Title
            }

            pageResourceManager.SetMetaOfKeywords("帖吧搜索");    //设置Keyords类型的Meta
            pageResourceManager.SetMetaOfDescription("帖吧搜索"); //设置Description类型的Meta

            return(View(BarEntities));
        }
コード例 #26
0
        public ActionResult _BarThreadSearch(string spaceKey)
        {
            long sectionId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);

            return(View(sectionId));
        }
コード例 #27
0
        public ActionResult Edit(string spaceKey, long?threadId)
        {
            long       sectionId = TopicIdToTopicKeyDictionary.GetTopicId(spaceKey);
            BarSection section   = barSectionService.Get(sectionId);

            if (UserContext.CurrentUser == null)
            {
                return(Redirect(SiteUrls.Instance().Login(true)));
            }

            if (section == null)
            {
                return(HttpNotFound());
            }

            TopicEntity topic = topicService.Get(spaceKey);

            if (topic == null)
            {
                return(HttpNotFound());
            }

            pageResourceManager.InsertTitlePart(section.Name);

            BarThread barThread = threadId.HasValue ? barThreadService.Get(threadId ?? 0) : null;

            if (threadId.HasValue)
            {
                if (!authorizer.BarThread_Edit(barThread))
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Body = "没有权限编辑" + barThread.Subject + "!",
                        Title = "没有权限",
                        StatusMessageType = StatusMessageType.Hint
                    })));
                }
            }
            else
            {
                string errorMessage = string.Empty;
                if (!authorizer.BarThread_Create(sectionId, out errorMessage))
                {
                    return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                    {
                        Body = errorMessage,
                        Title = "没有权限",
                        StatusMessageType = StatusMessageType.Hint
                    }, Request.RawUrl)));
                }
            }
            pageResourceManager.InsertTitlePart(threadId.HasValue ? "编辑帖子" : "发帖");
            if (threadId.HasValue && barThread == null)
            {
                return(HttpNotFound());
            }

            ViewData["barSettings"] = barSettings;

            ViewData["topic"]      = topic;
            ViewData["BarSection"] = section;
            return(View("Edit", barThread == null ? new BarThreadEditModel {
                SectionId = sectionId
            } : barThread.AsEditModel()));
        }