Esempio n. 1
0
 public static string WikiDeleteArticleRevision(
     this UrlHelper urlHelper,
     ArticleId articleId,
     ArticleRevisionDate revisionDate)
 {
     return(urlHelper.RouteUrl(RouteNames.WikiArticleRevisionDelete, new { slug = articleId.Slug, revisionDate }));
 }
Esempio n. 2
0
        public WikiArticleViewModelBase(
            RequestContext requestContext,
            ArticleId articleId,
            ArticleRevisionDate articleRevisionDate = null,
            HeaderTab activeTab = HeaderTab.None)
        {
            if (requestContext == null)
            {
                throw new ArgumentNullException("requestContext");
            }
            if (articleId == null)
            {
                throw new ArgumentNullException("articleId");
            }

            this.CurrentRepository = RepositoryRequestInstance.Get(requestContext);
            this.CurrentPrincipal  = requestContext.HttpContext.User;

            this.ArticleId           = articleId;
            this.DisplayArticleId    = articleId;
            this.ArticleRevisionDate = articleRevisionDate;
            this.ActiveTab           = activeTab;

            this.Article = this.CurrentRepository.GetArticle(articleId);

            this.CanEditArticle = (this.Article == null) || this.Article.CanEdit(this.CurrentPrincipal);
        }
Esempio n. 3
0
 public static string WikiArticleEdit(
     this UrlHelper urlHelper,
     ArticleId articleId,
     ArticleRevisionDate revisionDate = null)
 {
     return(urlHelper.RouteUrl(RouteNames.WikiArticleEdit, new { slug = articleId.Slug, revisionDate }));
 }
Esempio n. 4
0
        public ArticleRevisionDiffApiModel(
            ArticleId articleId,
            ArticleRevisionDate oldRevisionDate,
            ArticleRevisionDate newRevisionDate,
            Repository repository)
        {
            var    oldRevision = repository.GetArticleRevision(articleId, oldRevisionDate);
            string oldHtml     = ((oldRevision != null) ? MarkdownService.MakeTextHtmlLinebreaks(oldRevision.MarkdownContent) : null)
                                 ?? string.Empty;

            var    newRevision = repository.GetArticleRevision(articleId, newRevisionDate);
            string newHtml     = ((newRevision != null) ? MarkdownService.MakeTextHtmlLinebreaks(newRevision.MarkdownContent) : null)
                                 ?? string.Empty;

            var diff = new Helpers.HtmlDiff(oldHtml, newHtml);

            string diffHtml = diff.Build();

            this.HtmlDiff = diffHtml;

            this.OldText = (oldRevision != null)
                               ? oldRevision.CreatedAt.ToString(ArticleRevisionDate.FormattedDateTimeFormat)
                               : null;
            this.NewText = (newRevision != null)
                               ? newRevision.CreatedAt.ToString(ArticleRevisionDate.FormattedDateTimeFormat)
                               : null;
        }
        public ArticleRevisionDiffApiModel(
            ArticleSlug articleSlug,
            ArticleRevisionDate oldRevisionDate,
            ArticleRevisionDate newRevisionDate,
            Repository repository)
        {
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }

            var oldRevision = repository.GetArticleRevision(articleSlug, oldRevisionDate);
            if (oldRevision == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            var newRevision = repository.GetArticleRevision(articleSlug, newRevisionDate);
            if (newRevision == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            var oldRevisionContent = MarkdownTextService.MakeText(oldRevision.MarkdownContent).ToHtmlLinebreaks();

            var newRevisionContent = MarkdownTextService.MakeText(newRevision.MarkdownContent).ToHtmlLinebreaks();

            var diff = new Helpers.HtmlDiff(oldRevisionContent ?? string.Empty, newRevisionContent ?? string.Empty);

            this.HtmlDiff = diff.Build();

            this.OldCreatedAt = oldRevision.CreatedAt.ToString(ArticleRevisionDate.FormattedDateTimeFormat);
            this.NewCreatedAt = newRevision.CreatedAt.ToString(ArticleRevisionDate.FormattedDateTimeFormat);
        }
Esempio n. 6
0
        public ActionResult Article(string slug, ArticleRevisionDate revisionDate = null, bool redirect = true)
        {
            var model = new WikiArticleViewModel(this.Request.RequestContext, slug, revisionDate, redirect);

            this.Seo.CanonicalUrl = this.GetArticleCanonicalUrl(model);

            return(this.View(model));
        }
        public ArticleRevisionDiffApiModel GetDiff([FromUri] ArticleId slug,
                                                   [FromUri] ArticleRevisionDate oldRevisionDate,
                                                   [FromUri] ArticleRevisionDate newRevisionDate)
        {
            var model = new ArticleRevisionDiffApiModel(slug, oldRevisionDate, newRevisionDate, this.CurrentRepository);

            return(model);
        }
 public WikiArticleEditViewModel(
     ControllerContext controllerContext,
     ArticleSlug articleSlug,
     ArticleRevisionDate articleRevisionDate = null)
     : base(controllerContext, articleSlug, RouteNames.WikiArticleEdit, articleRevisionDate, HeaderTab.Edit)
 {
     this.IsCreateMode = !this.ArticlePage.HasArticle;
 }
 public WikiArticleEditViewModel(
     RequestContext requestContext,
     ArticleId articleId,
     ArticleRevisionDate articleRevisionDate = null)
     : base(requestContext, articleId, articleRevisionDate, HeaderTab.Edit)
 {
     this.IsCreateMode = (this.Article == null || string.IsNullOrWhiteSpace(this.Article.Id));
 }
        public dynamic GetRevisionPreview([FromUri] ArticleId slug, [FromUri] ArticleRevisionDate revisionDate)
        {
            var articleRevision = this.GetEnsuredArticleRevision(slug, revisionDate);

            var text        = articleRevision.CreatedAt.ToString(ArticleRevisionDate.FormattedDateTimeFormat);
            var htmlContent = MarkdownService.MakeTextHtmlLinebreaks(articleRevision.MarkdownContent);

            return(new { text, htmlContent });
        }
        public void DeleteRevision([FromUri] ArticleId slug, [FromUri] ArticleRevisionDate revisionDate)
        {
            bool deleteSuccess = this.CurrentRepository.DeleteArticleRevision(slug, revisionDate);

            if (!deleteSuccess)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
        }
        private ArticleRevision GetEnsuredArticleRevision(ArticleId slug, ArticleRevisionDate articleRevisionDate)
        {
            var articleRevision = this.CurrentRepository.GetArticleRevision(slug, articleRevisionDate.DateTime);

            if (articleRevision == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            return(articleRevision);
        }
Esempio n. 13
0
        public static string WikiArticle(
            this UrlHelper urlHelper,
            ArticleId articleId,
            ArticleRevisionDate revisionDate = null,
            bool redirect = true)
        {
            var noRedirectValue = redirect ? null : "0";

            return(urlHelper.RouteUrl(
                       RouteNames.WikiArticle,
                       new { slug = articleId.Slug, revisionDate, redirect = noRedirectValue }));
        }
            public ArticleRevisionListItem(ArticleRevisionItem articleRevision, UserManager <WikiDownUser> userManager)
            {
                var articleRevisionDate = new ArticleRevisionDate(articleRevision.CreatedAt);

                this.Date     = articleRevisionDate;
                this.IsActive = articleRevision.IsActive;

                var createdByUser = !string.IsNullOrWhiteSpace(articleRevision.CreatedByUserName)
                                        ? userManager.FindByName(articleRevision.CreatedByUserName)
                                        : null;

                this.UserName = (createdByUser != null) ? createdByUser.UserName : null;
            }
Esempio n. 15
0
 public WikiArticleViewModel(
     ControllerContext controllerContext,
     ArticleSlug articleSlug,
     ArticleRevisionDate articleRevisionDate = null,
     bool shouldRedirect = false,
     bool handleIndexSlug = true)
     : this(controllerContext,
         articleSlug,
         articleRevisionDate,
         shouldRedirect,
         handleIndexSlug,
         WikiDownConfig.Instance)
 {
 }
Esempio n. 16
0
        public WikiArticleViewModel(
            ControllerContext controllerContext,
            ArticleSlug articleSlug,
            ArticleRevisionDate articleRevisionDate,
            bool shouldRedirect,
            bool handleIndexSlug,
            WikiDownConfig config)
            : base(controllerContext,
                articleSlug,
                RouteNames.WikiArticle,
                articleRevisionDate,
                HeaderTab.Article,
                shouldRedirect)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            this.handleIndexSlug = handleIndexSlug;

            if (this.ArticlePage.HasRedirect && !this.ShouldRedirect)
            {
                return;
            }

            this.articleTags = (this.ArticlePage.HasArticle && this.ArticlePage.ArticleTags != null)
                                   ? this.ArticlePage.ArticleTags.ToList()
                                   : this.ArticleTags;

            if (!this.HasArticle)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(this.ArticlePage.ArticleRevisionMarkdownContent))
            {
                return;
            }

            string articleHtml = GetCachedArticleHtml(
                this.ArticlePage.ArticleRevisionId,
                this.ArticlePage.ArticleRevisionMarkdownContent,
                config);

            this.htmlContent = !string.IsNullOrWhiteSpace(articleHtml)
                                   ? new WikiDownArticleHtmlString(articleHtml, this.CurrentRepository)
                                   : null;
        }
Esempio n. 17
0
        public ArticleRevisionApiModel(ArticleId articleId, ArticleRevision articleRevision)
        {
            this.Slug = articleId.Slug;

            if (articleRevision == null)
            {
                return;
            }

            this.MarkdownContent = articleRevision.MarkdownContent;

            var articleRevisionDate = new ArticleRevisionDate(articleRevision.CreatedAt);

            this.DateId        = articleRevisionDate.DateTimeId;
            this.DateFormatted = articleRevisionDate.DateTimeFormatted;
        }
        public ArticleRevisionApiModel(ArticleSlug articleSlug, ArticleRevision articleRevision)
        {
            this.Slug = articleSlug.Slug;

            if (articleRevision == null)
            {
                return;
            }

            this.MarkdownContent = articleRevision.MarkdownContent;

            var articleRevisionDate = new ArticleRevisionDate(articleRevision.CreatedAt);

            this.DateId = articleRevisionDate.DateTimeId;
            this.DateFormatted = articleRevisionDate.DateTimeFormatted;
        }
Esempio n. 19
0
        public ArticleRevisionListItemApiModel(ArticleRevisionItem articleRevision)
        {
            this.CreatedByUserName = articleRevision.CreatedByUserName;
            this.EditSummary       = articleRevision.EditSummary;
            this.IsActive          = articleRevision.IsActive;

            var articleRevisionDate = new ArticleRevisionDate(articleRevision.CreatedAt);

            this.Id   = articleRevisionDate.DateTimeId;
            this.Text = articleRevisionDate.DateTimeFormatted;

            var lastPublished = articleRevision.LastPublishedAt;

            this.LastPublishedAt = lastPublished.HasValue
                                       ? lastPublished.Value.ToString(ArticleRevisionDate.FormattedDateTimeFormat)
                                       : null;
        }
        protected WikiArticleViewModelBase(
            ControllerContext controllerContext,
            ArticleSlug articleSlug,
            string routeName,
            ArticleRevisionDate articleRevisionDate = null,
            HeaderTab activeTab = HeaderTab.None,
            bool shouldRedirect = false)
        {
            if (controllerContext == null)
            {
                throw new ArgumentNullException("controllerContext");
            }
            if (controllerContext.RequestContext == null)
            {
                throw new ArgumentOutOfRangeException(
                    "controllerContext",
                    "RequestContext in ControllerContext is null.");
            }
            if (articleSlug == null)
            {
                throw new ArgumentNullException("articleSlug");
            }
            if (routeName == null)
            {
                throw new ArgumentNullException("routeName");
            }

            this.RequestContext = controllerContext.RequestContext;
            this.RouteName = routeName;
            this.ArticleRevisionDate = articleRevisionDate;
            this.ActiveTab = activeTab;
            this.ShouldRedirect = shouldRedirect;

            this.CurrentRepository = this.RequestContext.HttpContext.GetRepository();
            this.CurrentPrincipal = this.RequestContext.HttpContext.User;
            this.UrlHelper = new UrlHelper(this.RequestContext);

            var revisionDate = (this.ArticleRevisionDate != null) ? this.ArticleRevisionDate.Value : (DateTime?)null;
            this.ArticlePage = this.CurrentRepository.GetArticlePage(articleSlug, revisionDate);

            this.alternativeActionResultLazy = new Lazy<ActionResult>(this.ResolveAlternativeActionResult);
        }
Esempio n. 21
0
        public WikiArticleViewModel(
            RequestContext requestContext,
            ArticleId articleId,
            ArticleRevisionDate articleRevisionDate = null,
            bool shouldRedirect = false)
            : base(requestContext, articleId, articleRevisionDate, HeaderTab.Article)
        {
            this.ShouldRedirect = shouldRedirect;

            this.HtmlContent = new HtmlString(string.Empty);
            this.ArticleTags = EmptyCollection;

            var articleResult = CurrentRepository.GetArticleResult(articleId, articleRevisionDate);

            this.ArticleRedirectFrom = articleResult.ArticleRedirectFromSlug;
            this.ArticleRedirectTo = articleResult.ArticleRedirectToSlug;

            if (articleResult.HasRedirect && !shouldRedirect)
            {
                return;
            }

            this.ArticleTags = (articleResult.HasArticle && articleResult.Article.Tags != null)
                                   ? articleResult.Article.Tags.ToList()
                                   : this.ArticleTags;

            this.DisplayArticleId = articleResult.HasArticle ? articleResult.Article.Id : this.DisplayArticleId;

            if (!articleResult.HasArticle || articleResult.ArticleRevision == null)
            {
                return;
            }

            this.HasArticle = true;

            this.HtmlContent = new WikiDownArticleHtmlString(articleResult, this.CurrentRepository);
        }
        private ArticleRevision GetEnsuredArticleRevision(ArticleSlug slug, ArticleRevisionDate articleRevisionDate)
        {
            var articleRevision = this.CurrentRepository.GetArticleRevision(slug, articleRevisionDate.DateTime);
            if (articleRevision == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            return articleRevision;
        }
Esempio n. 23
0
        public static string WikiArticle(
            this UrlHelper urlHelper,
            ArticleSlug articleSlug,
            ArticleRevisionDate revisionDate = null,
            bool shouldRedirect = true,
            bool includeHash = false)
        {
            var noRedirectValue = shouldRedirect ? null : "0";

            var url = urlHelper.RouteUrl(
                RouteNames.WikiArticle,
                new { slug = articleSlug.Slug, revisionDate, redirect = noRedirectValue });

            return includeHash ? AppendHash(url, articleSlug) : url;
        }
Esempio n. 24
0
 public static string WikiArticleEdit(
     this UrlHelper urlHelper,
     ArticleSlug articleSlug,
     ArticleRevisionDate revisionDate = null)
 {
     return urlHelper.RouteUrl(RouteNames.WikiArticleEdit, new { slug = articleSlug.Slug, revisionDate });
 }
        public ArticleRevisionApiModel GetRevision([FromUri] ArticleId slug, [FromUri] ArticleRevisionDate revisionDate)
        {
            var articleRevision = this.GetEnsuredArticleRevision(slug, revisionDate);

            return(new ArticleRevisionApiModel(slug, articleRevision));
        }
Esempio n. 26
0
        public ActionResult Edit(string slug, ArticleRevisionDate revisionDate = null)
        {
            var model = new WikiArticleEditViewModel(this.Request.RequestContext, slug, revisionDate);

            return(this.View(model));
        }
        public ActionResult Edit(string slug, ArticleRevisionDate revisionDate = null)
        {
            var model = new WikiArticleEditViewModel(this.ControllerContext, slug, revisionDate);

            return model.AlternativeActionResult ?? this.View(model);
        }
        public ActionResult Article(string slug, ArticleRevisionDate revisionDate = null, bool redirect = true)
        {
            var model = new WikiArticleViewModel(this.ControllerContext, slug, revisionDate, redirect);

            return model.AlternativeActionResult ?? this.View(model);
        }