diff --git a/src/Umbraco.Web/DynamicPublishedContentSearchExtensions.cs b/src/Umbraco.Web/DynamicPublishedContentSearchExtensions.cs
deleted file mode 100644
index 5b48aa2573..0000000000
--- a/src/Umbraco.Web/DynamicPublishedContentSearchExtensions.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using Examine.LuceneEngine.SearchCriteria;
-using Umbraco.Core.Dynamics;
-using Umbraco.Core.Models;
-using Umbraco.Web.Models;
-
-namespace Umbraco.Web
-{
- ///
- /// DynamicPublishedContent extension methods for searching using Examine
- ///
- public static class DynamicPublishedContentSearchExtensions
- {
- public static DynamicPublishedContentList Search(this DynamicPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
- {
- var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
- if (!string.IsNullOrEmpty(searchProvider))
- searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
-
- var t = term.Escape().Value;
- if (useWildCards)
- t = term.MultipleCharacterWildcard().Value;
-
- string luceneQuery = "+__Path:(" + d.Path.Replace("-", "\\-") + "*) +" + t;
- var crit = searcher.CreateSearchCriteria().RawQuery(luceneQuery);
-
- return d.Search(crit, searcher);
- }
-
- public static DynamicPublishedContentList SearchDescendants(this DynamicPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
- {
- return d.Search(term, useWildCards, searchProvider);
- }
-
- public static DynamicPublishedContentList SearchChildren(this DynamicPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
- {
- var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
- if (!string.IsNullOrEmpty(searchProvider))
- searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
-
- var t = term.Escape().Value;
- if (useWildCards)
- t = term.MultipleCharacterWildcard().Value;
-
- string luceneQuery = "+parentID:" + d.Id.ToString() + " +" + t;
- var crit = searcher.CreateSearchCriteria().RawQuery(luceneQuery);
-
- return d.Search(crit, searcher);
- }
-
- public static DynamicPublishedContentList Search(this DynamicPublishedContent d, Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
- {
- var s = Examine.ExamineManager.Instance.DefaultSearchProvider;
- if (searchProvider != null)
- s = searchProvider;
-
- var results = s.Search(criteria);
- return results.ConvertSearchResultToDynamicDocument(PublishedContentStoreResolver.Current.PublishedContentStore);
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/src/Umbraco.Web/ExamineExtensions.cs b/src/Umbraco.Web/ExamineExtensions.cs
index 7ae2911f43..2dce84adb0 100644
--- a/src/Umbraco.Web/ExamineExtensions.cs
+++ b/src/Umbraco.Web/ExamineExtensions.cs
@@ -14,7 +14,7 @@ namespace Umbraco.Web
///
internal static class ExamineExtensions
{
- internal static DynamicPublishedContentList ConvertSearchResultToDynamicDocument(
+ internal static IEnumerable ConvertSearchResultToPublishedContent(
this IEnumerable results,
IPublishedStore store)
{
@@ -22,9 +22,8 @@ namespace Umbraco.Web
// however thsi is currently not the case:
// http://examine.codeplex.com/workitem/10350
- var list = new DynamicPublishedContentList();
- var xd = new XmlDocument();
-
+ var list = new List();
+
foreach (var result in results.OrderByDescending(x => x.Score))
{
var doc = store.GetDocumentById(
@@ -32,9 +31,8 @@ namespace Umbraco.Web
result.Id);
if (doc == null) continue; //skip if this doesn't exist in the cache
doc.Properties.Add(
- new PropertyResult("examineScore", result.Score.ToString(), Guid.Empty, PropertyResultType.CustomProperty));
- var dynamicDoc = new DynamicPublishedContent(doc);
- list.Add(dynamicDoc);
+ new PropertyResult("examineScore", result.Score.ToString(), Guid.Empty, PropertyResultType.CustomProperty));
+ list.Add(doc);
}
return list;
}
diff --git a/src/Umbraco.Web/Models/DynamicPublishedContent.cs b/src/Umbraco.Web/Models/DynamicPublishedContent.cs
index 61b4706274..16dbb80e0b 100644
--- a/src/Umbraco.Web/Models/DynamicPublishedContent.cs
+++ b/src/Umbraco.Web/Models/DynamicPublishedContent.cs
@@ -624,6 +624,39 @@ namespace Umbraco.Web.Models
}
#endregion
+ public string GetTemplateAlias()
+ {
+ return PublishedContentExtensions.GetTemplateAlias(this);
+ }
+
+ #region Search
+
+ public DynamicPublishedContentList Search(string term, bool useWildCards = true, string searchProvider = null)
+ {
+ return new DynamicPublishedContentList(
+ PublishedContentExtensions.Search(this, term, useWildCards, searchProvider));
+ }
+
+ public DynamicPublishedContentList SearchDescendants(string term, bool useWildCards = true, string searchProvider = null)
+ {
+ return new DynamicPublishedContentList(
+ PublishedContentExtensions.SearchDescendants(this, term, useWildCards, searchProvider));
+ }
+
+ public DynamicPublishedContentList SearchChildren(string term, bool useWildCards = true, string searchProvider = null)
+ {
+ return new DynamicPublishedContentList(
+ PublishedContentExtensions.SearchChildren(this, term, useWildCards, searchProvider));
+ }
+
+ public DynamicPublishedContentList Search(Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
+ {
+ return new DynamicPublishedContentList(
+ PublishedContentExtensions.Search(this, criteria, searchProvider));
+ }
+
+ #endregion
+
#region GetProperty methods which can be used with the dynamic object
public IPublishedContentProperty GetProperty(string alias)
diff --git a/src/Umbraco.Web/PublishedContentExtensions.cs b/src/Umbraco.Web/PublishedContentExtensions.cs
index 268ea79df7..6680bbeedc 100644
--- a/src/Umbraco.Web/PublishedContentExtensions.cs
+++ b/src/Umbraco.Web/PublishedContentExtensions.cs
@@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
+using Examine.LuceneEngine.SearchCriteria;
using Umbraco.Core.Dynamics;
using Umbraco.Core.Models;
using Umbraco.Web.Models;
using Umbraco.Web.Routing;
+using umbraco;
using umbraco.cms.businesslogic;
using Umbraco.Core;
@@ -21,6 +23,65 @@ namespace Umbraco.Web
///
public static class PublishedContentExtensions
{
+ ///
+ /// Returns the current template Alias
+ ///
+ ///
+ ///
+ public static string GetTemplateAlias(this IPublishedContent doc)
+ {
+ var template = new template(doc.TemplateId);
+ return template.TemplateAlias;
+ }
+
+ #region Search
+ public static IEnumerable Search(this IPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
+ {
+ var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
+ if (!string.IsNullOrEmpty(searchProvider))
+ searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
+
+ var t = term.Escape().Value;
+ if (useWildCards)
+ t = term.MultipleCharacterWildcard().Value;
+
+ string luceneQuery = "+__Path:(" + d.Path.Replace("-", "\\-") + "*) +" + t;
+ var crit = searcher.CreateSearchCriteria().RawQuery(luceneQuery);
+
+ return d.Search(crit, searcher);
+ }
+
+ public static IEnumerable SearchDescendants(this IPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
+ {
+ return d.Search(term, useWildCards, searchProvider);
+ }
+
+ public static IEnumerable SearchChildren(this IPublishedContent d, string term, bool useWildCards = true, string searchProvider = null)
+ {
+ var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
+ if (!string.IsNullOrEmpty(searchProvider))
+ searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
+
+ var t = term.Escape().Value;
+ if (useWildCards)
+ t = term.MultipleCharacterWildcard().Value;
+
+ string luceneQuery = "+parentID:" + d.Id.ToString() + " +" + t;
+ var crit = searcher.CreateSearchCriteria().RawQuery(luceneQuery);
+
+ return d.Search(crit, searcher);
+ }
+
+ public static IEnumerable Search(this IPublishedContent d, Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
+ {
+ var s = Examine.ExamineManager.Instance.DefaultSearchProvider;
+ if (searchProvider != null)
+ s = searchProvider;
+
+ var results = s.Search(criteria);
+ return results.ConvertSearchResultToPublishedContent(PublishedContentStoreResolver.Current.PublishedContentStore);
+ }
+ #endregion
#region List Extensions
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 7d40291c08..389e13db63 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -266,7 +266,6 @@
-
ASPXCodeBehind
diff --git a/src/Umbraco.Web/UmbracoHelper.cs b/src/Umbraco.Web/UmbracoHelper.cs
index 37fca9c3e0..77ed3ba2e2 100644
--- a/src/Umbraco.Web/UmbracoHelper.cs
+++ b/src/Umbraco.Web/UmbracoHelper.cs
@@ -547,12 +547,8 @@ namespace Umbraco.Web
///
public dynamic Search(string term, bool useWildCards = true, string searchProvider = null)
{
- var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
- if (!string.IsNullOrEmpty(searchProvider))
- searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
-
- var results = searcher.Search(term, useWildCards);
- return results.ConvertSearchResultToDynamicDocument(PublishedContentStoreResolver.Current.PublishedContentStore);
+ return new DynamicPublishedContentList(
+ TypedSearch(term, useWildCards, searchProvider));
}
///
@@ -562,13 +558,42 @@ namespace Umbraco.Web
///
///
public dynamic Search(Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
+ {
+ return new DynamicPublishedContentList(
+ TypedSearch(criteria, searchProvider));
+ }
+
+ ///
+ /// Searches content
+ ///
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable TypedSearch(string term, bool useWildCards = true, string searchProvider = null)
+ {
+ var searcher = Examine.ExamineManager.Instance.DefaultSearchProvider;
+ if (!string.IsNullOrEmpty(searchProvider))
+ searcher = Examine.ExamineManager.Instance.SearchProviderCollection[searchProvider];
+
+ var results = searcher.Search(term, useWildCards);
+ return results.ConvertSearchResultToPublishedContent(PublishedContentStoreResolver.Current.PublishedContentStore);
+ }
+
+ ///
+ /// Searhes content
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable TypedSearch(Examine.SearchCriteria.ISearchCriteria criteria, Examine.Providers.BaseSearchProvider searchProvider = null)
{
var s = Examine.ExamineManager.Instance.DefaultSearchProvider;
if (searchProvider != null)
s = searchProvider;
var results = s.Search(criteria);
- return results.ConvertSearchResultToDynamicDocument(PublishedContentStoreResolver.Current.PublishedContentStore);
+ return results.ConvertSearchResultToPublishedContent(PublishedContentStoreResolver.Current.PublishedContentStore);
}
#endregion