Ejemplo n.º 1
0
        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>())));
        }
Ejemplo n.º 2
0
        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);
        }