public Object GetArticleBySeoTitle(dynamic parameters) { // Optimisation SEO (anti duplicate Content). // Redirige vers l'url sans "/" de fin if(Request.Url.Path.EndsWith("/")) { return Response.AsRedirect(Request.Url.Path.TrimEnd('/'), RedirectResponse.RedirectType.Permanent); } // Get seo title var seoTitle = parameters.seoTitle; // Request our repository for those articles Article article = _ArticleRepository // Get article from the giving seoTitle .GetArticle(seoTitle); var _articleExtended = new ArticleExtended(); _articleExtended.Content = article.Content; _articleExtended.Description = article.Description; _articleExtended.HomeSlider = article.HomeSlider; _articleExtended.Id = article.Id; _articleExtended.ImageUrl = article.ImageUrl; _articleExtended.PublicationDate = article.PublicationDate; _articleExtended.PublicationState = article.PublicationState; _articleExtended.SeoDescription = article.SeoDescription; _articleExtended.SeoKeywords = article.SeoKeywords; _articleExtended.SeoTitle = article.SeoTitle; _articleExtended.Tags = article.Tags; _articleExtended.Title = article.Title; if (Request.Url.Path.Contains ("apercu") && _articleExtended.PublicationState == PublicationState.Draft) { _articleExtended.ShowDraft = true; } else { _articleExtended.ShowDraft = false; } var model = new ArticleModel (UseConcatenatedResources){ Article = _articleExtended, HtmlTitle = article.Title, MetaDescription = article.SeoDescription.Replace ("\"", "'"), MetaKeywords = article.SeoKeywords.Count > 0 ? string.Join(", ", article.SeoKeywords) : "" }; return this.View["Public/Pages/article.cshtml", model]; }
protected Object ListPublicArticles(dynamic parameters) { // Optimisation SEO (anti duplicate Content). // Redirige vers l'url sans "/" de fin if(Request.Url.Path.EndsWith("/")) { return Response.AsRedirect(Request.Url.Path.TrimEnd('/'), RedirectResponse.RedirectType.Permanent); } // Try to bind that request parameters (querystring and/or form post) to a PaginationRequestParameters class var listEventsParameters = this.Bind<PaginationRequestParameters> (); // Default values for pageIndex and pageSize var pageIndex = 0; var pageSize = 10; // If we got some parameters if (listEventsParameters != null) { // Get the pageIndex from them pageIndex = listEventsParameters.PageIndex; // Get the pageSize from them pageSize = listEventsParameters.PageSize; } // Request our repository for those articles var articles = this.Application // Just the specified page from the last published articles .ListPublishedArticles(pageIndex, pageSize, this.CurrentUser.Role, null); var _resultArticles = new List<ArticleExtended>(); foreach(var _article in articles.Items) { var articleExtended = new ArticleExtended(); articleExtended.CreationDate = _article.CreationDate; articleExtended.Content = _article.Content; articleExtended.Description = _article.Description; articleExtended.FriendlyUrl = _article.FriendlyUrl; articleExtended.HomeSlider = _article.HomeSlider; articleExtended.Id = _article.Id; articleExtended.ImageUrl = _article.ImageUrl; articleExtended.ModificationDate = _article.ModificationDate; articleExtended.PublicationDate = _article.PublicationDate; articleExtended.PublicationState = _article.PublicationState; articleExtended.SeoDescription = _article.SeoDescription; articleExtended.SeoKeywords = _article.SeoKeywords; articleExtended.SeoTitle = _article.SeoTitle; articleExtended.Tags = _article.Tags; articleExtended.Title = _article.Title; _resultArticles.Add(articleExtended); } var _resultPaginatedArticles = new PaginatedList<ArticleExtended>(articles.PageIndex, articles.PageSize, articles.Total, _resultArticles); var model = new ArticlesModel (UseConcatenatedResources){ Articles = _resultPaginatedArticles }; model.NavMenu.NavSectionsMenuLeft[0].IsActive = "active"; return this.View["Public/Pages/articles.cshtml", model]; }