Ejemplo n.º 1
0
        private string GetEnsuredUrl(ControllerContext filterContext)
        {
            var routeValues = new RouteValueDictionary(filterContext.RouteData.Values);
            var slugValue   = (routeValues[routeValueName] as string) ?? string.Empty;

            var ensuredSlugValue = ArticleSlugUtility.Decode(slugValue);

            ensuredSlugValue = ArticleSlugUtility.Encode(ensuredSlugValue);

            routeValues[routeValueName] = ensuredSlugValue;

            var urlHelper = new UrlHelper(filterContext.RequestContext);

            return((!string.IsNullOrWhiteSpace(this.RouteName))
                       ? urlHelper.RouteUrl(this.RouteName, routeValues)
                       : urlHelper.RouteUrl(routeValues));
        }
Ejemplo n.º 2
0
        private static void ModifyHeaders(HtmlDocument document)
        {
            var headerTags =
                (document.DocumentNode.SelectNodes(
                     "//*[self::h1 or self::h2 or self::h3 or self::h4 or self::h5 or self::h6]")
                 ?? Enumerable.Empty <HtmlNode>()).ToList();

            if (!headerTags.Any())
            {
                return;
            }

            foreach (var header in headerTags)
            {
                string title        = header.InnerText;
                string encodedTitle = ArticleSlugUtility.Encode(title);

                header.SetAttributeValue("id", encodedTitle);
            }
        }
Ejemplo n.º 3
0
        public dynamic SearchAutocomplete([FromUri] string q)
        {
            // TODO: Take 10
            var results = this.CurrentRepository.SearchArticleTitles(q);

            var items = from result in results
                        let title = ArticleSlugUtility.Decode(result.Slug)
                                    let redirectTitle =
                !string.IsNullOrWhiteSpace(result.RedirectToSlug)
                                ? ArticleSlugUtility.Decode(result.RedirectToSlug)
                                : null
                let redirectFrom                                                          = !string.IsNullOrWhiteSpace(redirectTitle) ? title : null
                                                          let value                       = !string.IsNullOrWhiteSpace(redirectTitle) ? redirectTitle : title
                                                                                 let slug =
                    !string.IsNullOrWhiteSpace(result.RedirectToSlug) ? result.RedirectToSlug : result.Slug
                    let url = this.Url.Route(RouteNames.WikiArticle, new { slug })
                              select new { value, data = url, redirect = redirectFrom };

            var suggestions = items.ToList();

            return(new { query = q, suggestions });
        }