Merge branch '6.1.3' of https://github.com/umbraco/Umbraco-CMS into 6.1.3

This commit is contained in:
Shannon
2013-07-19 12:27:59 +10:00
4 changed files with 68 additions and 41 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Web.UI;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;
using Umbraco.Core.IO;
using umbraco.cms.businesslogic.member;
@@ -144,8 +145,14 @@ namespace umbraco.cms.presentation.members
{
var oldEmail = _document.Email.ToLower();
var newEmail = MemberEmail.Text.ToLower();
var requireUniqueEmail = Membership.Providers[Member.UmbracoMemberProviderName].RequiresUniqueEmail;
var howManyMembersWithEmail = Member.GetMembersFromEmail(newEmail).Length;
var howManyMembersWithEmail = 0;
var membersWithEmail = Member.GetMembersFromEmail(newEmail);
if (membersWithEmail != null)
howManyMembersWithEmail = membersWithEmail.Length;
if (((oldEmail == newEmail && howManyMembersWithEmail > 1) ||
(oldEmail != newEmail && howManyMembersWithEmail > 0))
&& requireUniqueEmail)

View File

@@ -1,16 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Examine.LuceneEngine.SearchCriteria;
using Examine.SearchCriteria;
using umbraco.cms.businesslogic.member;
using System.Web.Security;
namespace umbraco.presentation.umbraco.members
{
public partial class MemberSearch : System.Web.UI.UserControl
public partial class MemberSearch : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
@@ -19,46 +18,30 @@ namespace umbraco.presentation.umbraco.members
ButtonSearch.Text = ui.Text("search");
}
protected void ButtonSearch_Click(object sender, System.EventArgs e)
protected void ButtonSearch_Click(object sender, EventArgs e)
{
resultsPane.Visible = true;
if (!Member.InUmbracoMemberMode())
if (Member.InUmbracoMemberMode())
{
IEnumerable<MemberSearchResult> results;
if (searchQuery.Text.Contains("@"))
{
results = from MembershipUser x in Membership.FindUsersByEmail(searchQuery.Text)
select new MemberSearchResult() { Id = x.UserName, Email = x.Email, LoginName = x.UserName, Name = x.UserName };
}
else
{
results = from MembershipUser x in Membership.FindUsersByName(searchQuery.Text + "%")
select new MemberSearchResult() { Id = x.UserName, Email = x.Email, LoginName = x.UserName, Name = x.UserName };
}
rp_members.DataSource = results;
rp_members.DataBind();
}
else
{
string query = searchQuery.Text.ToLower();
var query = searchQuery.Text.ToLower();
var internalSearcher = UmbracoContext.Current.InternalMemberSearchProvider;
IEnumerable<MemberSearchResult> results;
if (!String.IsNullOrEmpty(query))
if (String.IsNullOrEmpty(query) == false)
{
var criteria = internalSearcher.CreateSearchCriteria("member", Examine.SearchCriteria.BooleanOperation.And);
var operation = criteria.Field("__nodeName", query.MultipleCharacterWildcard());
results = internalSearcher.Search(operation.Compile()).Select(x => new MemberSearchResult()
{
Id = x["id"],
Name = x["nodeName"],
Email = x["email"],
LoginName = x["loginName"]
});
var criteria = internalSearcher.CreateSearchCriteria("member", BooleanOperation.Or);
var fields = new[] {"id", "__nodeName", "email"};
var term = new[] {query.ToLower().Escape()};
var operation = criteria.GroupedOr(fields, term).Compile();
var results = internalSearcher.Search(operation)
.Select(x => new MemberSearchResult
{
Id = x["id"],
Name = x["nodeName"],
Email = x["email"],
LoginName = x["loginName"]
});
rp_members.DataSource = results;
rp_members.DataBind();
}
@@ -67,7 +50,39 @@ namespace umbraco.presentation.umbraco.members
resultsPane.Visible = false;
}
}
else
{
IEnumerable<MemberSearchResult> results;
if (searchQuery.Text.Contains("@"))
{
results = from MembershipUser x in Membership.FindUsersByEmail(searchQuery.Text)
select
new MemberSearchResult()
{
Id = x.UserName,
Email = x.Email,
LoginName = x.UserName,
Name = x.UserName
};
}
else
{
results = from MembershipUser x in Membership.FindUsersByName(searchQuery.Text + "%")
select
new MemberSearchResult()
{
Id = x.UserName,
Email = x.Email,
LoginName = x.UserName,
Name = x.UserName
};
}
rp_members.DataSource = results;
rp_members.DataBind();
}
}
public class MemberSearchResult
{
public string Id { get; set; }

View File

@@ -551,14 +551,19 @@ namespace umbraco.cms.businesslogic.member
SqlHelper.CreateParameter("@id", Id));
}
return m_Email.ToLower();
return string.IsNullOrWhiteSpace(m_Email) ? m_Email : m_Email.ToLower();
}
set
{
var oldEmail = Email;
var newEmail = value.ToLower();
var newEmail = string.IsNullOrWhiteSpace(value) ? value : value.ToLower();
var requireUniqueEmail = Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail;
var howManyMembersWithEmail = Member.GetMembersFromEmail(newEmail).Length;
var howManyMembersWithEmail = 0;
var membersWithEmail = GetMembersFromEmail(newEmail);
if (membersWithEmail != null)
howManyMembersWithEmail = membersWithEmail.Length;
if (((oldEmail == newEmail && howManyMembersWithEmail > 1) ||
(oldEmail != newEmail && howManyMembersWithEmail > 0))
&& requireUniqueEmail)

View File

@@ -31,7 +31,7 @@ namespace umbraco.editorControls.tinymce
// gather all attributes
// TODO: This should be replaced with a general helper method - but for now we'll wanna leave umbraco.dll alone for this patch
var ht = new Hashtable();
var matches = Regex.Matches(tag.Value.Replace(">", " >"), "(?<attributeName>\\S*)=\"(?<attributeValue>[^\"]*)\"|(?<attributeName>\\S*)=(?<attributeValue>[^\"|\\s]*)\\s", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
var matches = Regex.Matches(tag.Value.Replace(">", " >"), "(?<attributeName>\\S*?)=\"(?<attributeValue>[^\"]*)\"|(?<attributeName>\\S*?)=(?<attributeValue>[^\"|\\s]*)\\s", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
foreach (Match attributeSet in matches)
{
ht.Add(attributeSet.Groups["attributeName"].Value.ToLower(),