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)); }
/// <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 = "创建失败请联系管理员!" })); } }
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 }