public ActionResult Detail(string spaceKey, long microblogId)
        {
            MicroblogEntity entity = microblogService.Get(microblogId);

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

            //验证是否通过审核
            long currentSpaceUserId = UserIdToUserNameDictionary.GetUserId(spaceKey);

            if (!authorizer.IsAdministrator(MicroblogConfig.Instance().ApplicationId) && entity.UserId != currentSpaceUserId &&
                (int)entity.AuditStatus < (int)(new AuditService().GetPubliclyAuditStatus(MicroblogConfig.Instance().ApplicationId)))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Title = "尚未通过审核",
                    Body = "由于当前微博尚未通过审核,您无法浏览当前内容。",
                    StatusMessageType = StatusMessageType.Hint
                })));
            }

            IUser user = userService.GetUser(spaceKey);

            if (user == null)
            {
                return(new EmptyResult());
            }


            pageResourceManager.InsertTitlePart(user.DisplayName + "的微博");

            return(View(entity));
        }
Esempio n. 2
0
        /// <summary>
        /// 是否具有删除Microblog的权限
        /// </summary>
        /// <param name="authorizer">被扩展对象</param>
        /// <param name="microblog">微博实体</param>
        /// <returns></returns>
        public static bool Microblog_Delete(this Authorizer authorizer, MicroblogEntity microblog)
        {
            if (microblog == null)
            {
                return(false);
            }

            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                return(false);
            }

            if (microblog.UserId == currentUser.UserId ||
                authorizer.IsAdministrator(MicroblogConfig.Instance().ApplicationId))
            {
                return(true);
            }

            return(false);
        }
        public ActionResult Create(string spaceKey, string microblogBody, string tenantTypeId = null, long ownerId = 0, string imageUrl = null)
        {
            if (string.IsNullOrEmpty(microblogBody))
            {
                return(Json(new { MessageType = StatusMessageType.Error, MessageContent = "内容不能为空!" }));
            }
            if (!ValidateContentLength(microblogBody))
            {
                return(Json(new { MessageType = StatusMessageType.Error, MessageContent = "内容不能超过140个字!" }));
            }

            //当前用户登录
            IUser currentUser = UserContext.CurrentUser;

            bool            isBanned = ModelState.HasBannedWord();
            MicroblogEntity entity   = MicroblogEntity.New();

            entity.Author       = currentUser.DisplayName;
            entity.Body         = Tunynet.Utilities.WebUtility.HtmlEncode(microblogBody);
            entity.PostWay      = PostWay.Web;
            entity.TenantTypeId = !string.IsNullOrEmpty(tenantTypeId) ? tenantTypeId : TenantTypeIds.Instance().User();
            entity.UserId       = currentUser.UserId;
            entity.OwnerId      = ownerId > 0 ? ownerId : currentUser.UserId;

            if (!authorizer.Microblog_Create(entity.TenantTypeId, entity.OwnerId))
            {
                return(HttpNotFound());
            }

            //判断是否当前有,图片附件
            HttpCookie cookie = Request.Cookies["microblog_PhotoExists"];

            if (cookie != null && cookie.Value.Trim().ToLower().Equals("true"))
            {
                entity.HasPhoto = true;
                cookie.Value    = "";
                Response.Cookies.Set(cookie);
            }

            if (!string.IsNullOrEmpty(imageUrl))
            {
                //by zhaoyx:获取到的图片地址如果带有“-”字符的话,会被ModelBinder屏蔽掉,导致图片无法加载
                imageUrl        = Request["imageUrl"];
                entity.HasPhoto = true;
            }

            bool isSuccess = false;

            if (!isBanned)
            {
                isSuccess = microblogService.Create(entity) > 0;
            }

            //by zhengw:
            if (isSuccess)
            {
                //处理imageUrl
                if (!string.IsNullOrEmpty(imageUrl))
                {
                    DownloadRemoteImage(imageUrl, entity.MicroblogId);
                }

                //同步微博
                var accountBindingService = new AccountBindingService();
                foreach (var accountType in accountBindingService.GetAccountTypes(true, true))
                {
                    bool isSync = Request.Form.GetBool("sync_" + accountType.AccountTypeKey, false);
                    if (isSync)
                    {
                        var account = accountBindingService.GetAccountBinding(currentUser.UserId, accountType.AccountTypeKey);
                        if (account != null)
                        {
                            var thirdAccountGetter = ThirdAccountGetterFactory.GetThirdAccountGetter(accountType.AccountTypeKey);
                            if (entity.HasPhoto)
                            {
                                byte[] bytes       = null;
                                var    attachments = attachmentService.GetsByAssociateId(entity.MicroblogId);
                                string fileName    = null;
                                if (attachments.Count() > 0)
                                {
                                    var            attachment    = attachments.First();
                                    IStoreProvider storeProvider = DIContainer.Resolve <IStoreProvider>();
                                    IStoreFile     storeFile     = storeProvider.GetResizedImage(attachment.GetRelativePath(), attachment.FileName, new Size(405, 600), Tunynet.Imaging.ResizeMethod.KeepAspectRatio);
                                    using (Stream stream = storeFile.OpenReadStream())
                                    {
                                        bytes = StreamToBytes(stream);
                                        stream.Dispose();
                                        stream.Close();
                                    }
                                    fileName = attachment.FriendlyFileName;
                                }
                                thirdAccountGetter.CreatePhotoMicroBlog(account.AccessToken, microblogBody, bytes, fileName, account.Identification);
                            }
                            else
                            {
                                thirdAccountGetter.CreateMicroBlog(account.AccessToken, microblogBody, account.Identification);
                            }
                        }
                    }
                }
                if ((int)entity.AuditStatus > (int)(new AuditService().GetPubliclyAuditStatus(MicroblogConfig.Instance().ApplicationId)))
                {
                    return(Json(new { MessageType = StatusMessageType.Success, MessageContent = "发布成功", id = entity.MicroblogId }));
                }
                else
                {
                    return(Json(new { MessageType = StatusMessageType.Hint, MessageContent = "尚未通过审核,请耐心等待", id = entity.MicroblogId }));
                }
            }

            if (isBanned)
            {
                return(Json(new { MessageType = StatusMessageType.Error, MessageContent = "内容中有非法词语!" }));
            }
            else
            {
                return(Json(new { MessageType = StatusMessageType.Error, MessageContent = "创建失败请联系管理员!" }));
            }
        }
Esempio n. 4
0
        public override void RegisterArea(AreaRegistrationContext context)
        {
            //广场首页是否以瀑布流显示
            string isWaterfall = MicroblogConfig.GetConfig(1001).ApplicationElement.Element("microblogSquare").Attribute("isWaterfall").Value;
            string actionName  = isWaterfall == "true" ? "Waterfall" : "Microblog";

            //对于IIS6.0默认配置不支持无扩展名的url
            string extensionForOldIIS = ".html";
            int    iisVersion         = 0;

            if (!int.TryParse(ConfigurationManager.AppSettings["IISVersion"], out iisVersion))
            {
                iisVersion = 7;
            }
            if (iisVersion >= 7)
            {
                extensionForOldIIS = string.Empty;
            }
            #region Channel

            context.MapRoute(
                "Channel_Microblog_Square",                                    // Route name
                "microblog/s-{sortBy}-{tagGroupId}" + extensionForOldIIS,      // URL with parameters
                new { controller = "ChannelMicroblog", action = "Microblog" }, // Parameter defaults
                new { sortBy = @"(\w+)|(\{\w+\})", tagGroupId = @"(\d+)|(\{\d+\})" } // Parameter defaults
                );

            context.MapRoute(
                "Channel_Microblog",              // Route name
                "microblog" + extensionForOldIIS, // URL with parameters
                new { controller = "ChannelMicroblog", action = actionName } // Parameter defaults
                );

            context.MapRoute(
                "Channel_Microblog_Topic",                                 // Route name
                "microblog/t-{topic}" + extensionForOldIIS,                // URL with parameters
                new { controller = "ChannelMicroblog", action = "Topic" }, // Parameter defaults
                new { topic = @"(\S+)|(\{\S+\})" } // Parameter defaults
                );

            context.MapRoute(
                "Channel_Microblog_Common",                // Route name
                "microblog/{action}" + extensionForOldIIS, // URL with parameters
                new { controller = "ChannelMicroblog", action = "Home" } // Parameter defaults
                );

            #endregion

            #region UserSpace

            context.MapRoute(
                "UserSpace_Microblog_Home",                        // Route name
                "u/{SpaceKey}/microbloghome" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "Mine", CurrentNavigationId = "11100102" } // Parameter defaults
                );

            context.MapRoute(
                "ApplicationCount_Microblog",                      // Route name
                "u/{SpaceKey}/microbloghome" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "Mine", CurrentNavigationId = "11100102" } // Parameter defaults
                );

            context.MapRoute(
                "UserSpace_Microblog_AtMe",                        // Route name
                "u/{SpaceKey}/microblogatme" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "ListReferred", CurrentNavigationId = "11100103" } // Parameter defaults
                );

            context.MapRoute(
                "UserSpace_Microblog_Favorites",                        // Route name
                "u/{SpaceKey}/microblogFavorites" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "ListFavorites", CurrentNavigationId = "11100104" } // Parameter defaults
                );

            context.MapRoute(
                "UserSpace_Microblog_Detail",                        // Route name
                "u/{SpaceKey}/m-{microblogId}" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "Detail" }, // Parameter defaults
                new { microblogId = @"(\d+)|(\{\d+\})" } // Parameter defaults
                );

            context.MapRoute(
                "UserSpace_Microblog_Common",                           // Route name
                "u/{SpaceKey}/microblog/{action}" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog", action = "ListMy" } // Parameter defaults

                );

            #region 动态列表控件路由

            context.MapRoute(
                string.Format("ActivityDetail_{0}_CreateMicroblog", TenantTypeIds.Instance().Microblog()), // Route name
                "microblog/activity/{ActivityId}" + extensionForOldIIS,                                    // URL with parameters
                new { controller = "MicroblogActivity", action = "_Microblog_Activity" } // Parameter defaults
                );

            context.MapRoute(
                string.Format("MicroblogActivity_Common", TenantTypeIds.Instance().Microblog()), // Route name
                "microblogactivity/{action}" + extensionForOldIIS,                               // URL with parameters
                new { controller = "MicroblogActivity" } // Parameter defaults
                );

            #endregion

            context.MapRoute(
                "Microblog_Common",                               // Route name
                "microblog/common/{action}" + extensionForOldIIS, // URL with parameters
                new { controller = "Microblog" } // Parameter defaults
                );

            #endregion UserSpace

            #region GroupSpace

            context.MapRoute(
                "Group_Microblog_Tag",                                              // Route name
                "g/{SpaceKey}/microblog/t-{tagName}" + extensionForOldIIS,          // URL with parameters
                new { controller = "GroupSpaceMicroblog", action = "TopicDetail" }, // Parameter defaults
                new { tagName = @"(\S+)|(\{\S+\})" } // Parameter defaults
                );

            context.MapRoute(
                "Group_Microblog_Detail",                                      // Route name
                "g/{SpaceKey}/microblog/m-{microblogId}" + extensionForOldIIS, // URL with parameters
                new { controller = "GroupSpaceMicroblog", action = "Detail" }, // Parameter defaults
                new { microblogId = @"(\d+)|(\{\d+\})" } // Parameter defaults
                );

            context.MapRoute(
                "Group_Microblog_Common",                               // Route name
                "g/{SpaceKey}/microblog/{action}" + extensionForOldIIS, // URL with parameters
                new { controller = "GroupSpaceMicroblog" } // Parameter defaults
                );
            #endregion

            #region ControlPanel

            context.MapRoute(
                "ControlPanel_Microblog_Home",                 // Route name
                "controlpanelmicroblogs" + extensionForOldIIS, // URL with parameters
                new { controller = "ControlPanelMicroblog", action = "ManageMicroblogs", CurrentNavigationId = "20100101" } // Parameter defaults
                );

            context.MapRoute(
                "ControlPanel_Microblog_Common",                       // Route name
                "controlpanelmicroblog/{action}" + extensionForOldIIS, // URL with parameters
                new { controller = "ControlPanelMicroblog", CurrentNavigationId = "20000010" } // Parameter defaults
                );

            //群组微博中管理发言
            context.MapRoute(
                "ControlPanel_GroupMicroblog_Common",                                // Route name
                "ControlPanelGroupMicroblogs/ManageMicroblogs" + extensionForOldIIS, // URL with parameters
                new { controller = "ControlPanelMicroblog", action = "ManageMicroblogs", CurrentNavigationId = "20101101", tenantTypeId = TenantTypeIds.Instance().Group() } // Parameter defaults
                );
            #endregion
        }