public ActionResult Search(string query) { var result = new List <SearchResult>(); foreach (var action in (ActionType[])Enum.GetValues(typeof(ActionType))) { var actionString = action.ToString().ToLower(); var doc = new HtmlDocument(); var html = this.RenderView(actionString, new ViewDataDictionary()); doc.LoadHtml(html); var headerNode = doc.DocumentNode.SelectSingleNode("//span[@class='hdr']"); var descrNode = doc.DocumentNode.SelectSingleNode("//p[@class='dscr']"); var header = headerNode != null ? headerNode.InnerText : string.Empty; var descr = descrNode != null ? descrNode.InnerText : string.Empty; if (!string.IsNullOrEmpty(query) && doc.DocumentNode.InnerText.ToLowerInvariant().Contains(query.ToLowerInvariant())) { result.Add(new SearchResult { Module = "partners", Name = actionString, Resource = Highliter.HighliteString(header, query).ToHtmlString(), Description = Highliter.HighliteString(descr, query).ToHtmlString(), Url = Url.Action(actionString, "partners") }); } } ViewData["query"] = query ?? string.Empty; ViewData["result"] = result; return(View(new Dictionary <MsDocEntryPoint, Dictionary <MsDocEntryPointMethod, string> >())); }
public static List <SearchResult> Search(string query, UrlHelper url) { var q = query.ToLowerInvariant(); var result = new List <SearchResult>(); var sections = _entries.SelectMany(m => m.Value.Values); foreach (var section in sections) { var action = string.Format("{0}/{1}", section.Path, section.Name); if (section.Name.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(section.Description) && section.Description.ToLowerInvariant().Contains(q))) { result.Add(new SearchResult { Module = "docbuilder", Name = action, Resource = Highliter.HighliteString(section.Name, query).ToHtmlString(), Description = Highliter.HighliteString(section.Description, query).ToHtmlString(), Url = url.Action(action, "docbuilder") }); } foreach (var method in section.Methods.Values) { if (method.Name.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(method.Description) && method.Description.ToLowerInvariant().Contains(q))) { var methodAction = string.Format("{0}/{1}", action, method.Name); result.Add(new SearchResult { Module = "docbuilder", Name = methodAction, Resource = Highliter.HighliteString(method.Name, query).ToHtmlString(), Description = Highliter.HighliteString(method.Description, query).ToHtmlString(), Url = url.Action(methodAction, "docbuilder") }); } } } foreach (var type in _globals) { if (type.Key.ToLowerInvariant().Contains(q) || (!string.IsNullOrEmpty(type.Value.Description) && type.Value.Description.ToLowerInvariant().Contains(q))) { var action = string.Format("{0}#{1}", url.Action("global", "docbuilder"), type.Key); result.Add(new SearchResult { Module = "docbuilder", Name = action, Resource = Highliter.HighliteString(type.Key, query).ToHtmlString(), Description = Highliter.HighliteString(type.Value.Description, query).ToHtmlString(), Url = action }); } } return(result); }
public ActionResult Search(string query) { var result = new List <SearchResult>(); foreach (var action in _actionMap) { var actionString = action.ToLower(); var doc = new HtmlDocument(); try { var html = this.RenderView(actionString, new ViewDataDictionary()); doc.LoadHtml(html); } catch (Exception e) { LogManager.GetLogger("ASC.Api").Error(e); } var content = doc.DocumentNode; if (content.SelectSingleNode("html") != null) { content = content.SelectSingleNode("//div[contains(@class, 'layout-content')]"); } if (!string.IsNullOrEmpty(query) && content != null && content.InnerText.ToLowerInvariant().Contains(query.ToLowerInvariant())) { var headerNode = doc.DocumentNode.SelectSingleNode("//span[@class='hdr']"); var descrNode = doc.DocumentNode.SelectSingleNode("//p[@class='dscr']"); var header = headerNode != null ? headerNode.InnerText : string.Empty; var descr = descrNode != null ? descrNode.InnerText : string.Empty; result.Add(new SearchResult { Module = "docbuilder", Name = actionString, Resource = Highliter.HighliteString(header, query).ToHtmlString(), Description = Highliter.HighliteString(descr, query).ToHtmlString(), Url = Url.Action(actionString, "docbuilder") }); } } result.AddRange(DocBuilderDocumentation.Search(query, Url)); ViewData["query"] = query ?? string.Empty; ViewData["result"] = result; return(View(new Dictionary <MsDocEntryPoint, Dictionary <MsDocEntryPointMethod, string> >())); }