public ActionResult Publish(int cAseId, int postId) { var cAse = _cAseService.Get(cAseId, VersionOptions.Latest); if (cAse == null) { return(HttpNotFound()); } var post = _cAsePostService.Get(postId, VersionOptions.Latest); if (post == null) { return(HttpNotFound()); } if (!Services.Authorizer.Authorize(Permissions.PublishCasePost, post, T("Couldn't publish cAse post"))) { return(new HttpUnauthorizedResult()); } _cAsePostService.Publish(post); Services.Notifier.Information(T("Case post successfully published.")); return(Redirect(Url.CaseForAdmin(cAse.As <CasePart>()))); }
private int MetaWecAseNewPost( string cAseId, string userName, string password, XRpcStruct content, bool publish, IEnumerable <IXmlRpcDriver> drivers) { IUser user = ValidateUser(userName, password); // User needs permission to edit or publish its own cAse posts _authorizationService.CheckAccess(publish ? Permissions.PublishCasePost : Permissions.EditCasePost, user, null); CasePart cAse = _contentManager.Get <CasePart>(Convert.ToInt32(cAseId)); if (cAse == null) { throw new ArgumentException(); } var title = content.Optional <string>("title"); var description = content.Optional <string>("description"); var slug = content.Optional <string>("wp_slug"); var cAsePost = _contentManager.New <CasePostPart>("CasePost"); // BodyPart if (cAsePost.Is <BodyPart>()) { cAsePost.As <BodyPart>().Text = description; } //CommonPart if (cAsePost.Is <ICommonPart>()) { cAsePost.As <ICommonPart>().Owner = user; cAsePost.As <ICommonPart>().Container = cAse; } //TitlePart if (cAsePost.Is <TitlePart>()) { cAsePost.As <TitlePart>().Title = HttpUtility.HtmlDecode(title); } //AutoroutePart dynamic dCasePost = cAsePost; if (dCasePost.AutoroutePart != null) { dCasePost.AutoroutePart.DisplayAlias = slug; } _contentManager.Create(cAsePost, VersionOptions.Draft); // try to get the UTC timezone by default var publishedUtc = content.Optional <DateTime?>("date_created_gmt"); if (publishedUtc == null) { // take the local one publishedUtc = content.Optional <DateTime?>("dateCreated"); } else { // ensure it's read as a UTC time publishedUtc = new DateTime(publishedUtc.Value.Ticks, DateTimeKind.Utc); } if (publish && (publishedUtc == null || publishedUtc <= DateTime.UtcNow)) { _cAsePostService.Publish(cAsePost); } if (publishedUtc != null) { cAsePost.As <CommonPart>().CreatedUtc = publishedUtc; } foreach (var driver in drivers) { driver.Process(cAsePost.Id); } return(cAsePost.Id); }