Merge branch '7.2.1-doctype-fixes' into 7.2.1

Conflicts:
	src/Umbraco.Core/Models/PropertyGroupCollection.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Services/ContentTypeService.cs
	src/Umbraco.Tests/PublishedContent/PublishedContentExtensionTests.cs
	src/Umbraco.Tests/Services/ContentTypeServiceTests.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/controls/ContentTypeControlNew.ascx.cs
This commit is contained in:
Shannon
2014-12-16 09:47:53 +11:00
18 changed files with 893 additions and 151 deletions

View File

@@ -415,7 +415,7 @@ namespace Umbraco.Web.Security
if (member != null)
{
var propValue = member.Properties[prop.Alias];
if (propValue != null)
if (propValue != null && propValue.Value != null)
{
value = propValue.Value.ToString();
}

View File

@@ -42,6 +42,7 @@ namespace Umbraco.Web.Security.Providers
private string _defaultMemberTypeAlias = "Member";
private volatile bool _hasDefaultMember = false;
private static readonly object Locker = new object();
private bool _providerKeyAsGuid = false;
public override string ProviderName
{
@@ -58,7 +59,7 @@ namespace Umbraco.Web.Security.Providers
protected override MembershipUser ConvertToMembershipUser(IMember entity)
{
return entity.AsConcreteMembershipUser(Name);
return entity.AsConcreteMembershipUser(Name, _providerKeyAsGuid);
}
public string LockPropertyTypeAlias { get; private set; }
@@ -85,6 +86,15 @@ namespace Umbraco.Web.Security.Providers
}
_hasDefaultMember = true;
}
//devs can configure the provider user key to be a guid if they want, by default it is int
if (config["providerKeyType"] != null)
{
if (config["providerKeyType"] == "guid")
{
_providerKeyAsGuid = true;
}
}
}
public override string DefaultMemberTypeAlias

View File

@@ -47,7 +47,7 @@ namespace Umbraco.Web.Security.Providers
protected override MembershipUser ConvertToMembershipUser(IUser entity)
{
//the provider user key is always the int id
return entity.AsConcreteMembershipUser(Name);
return entity.AsConcreteMembershipUser(Name, true);
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)

View File

@@ -16,6 +16,7 @@ using System.Web.UI.WebControls;
using ClientDependency.Core;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Exceptions;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Strings;
@@ -308,7 +309,7 @@ namespace umbraco.controls
Trace.Write("ContentTypeControlNew", "executing task");
//we need to re-set the UmbracoContext since it will be nulled and our cache handlers need it
//global::Umbraco.Web.UmbracoContext.Current = asyncState.UmbracoContext;
global::Umbraco.Web.UmbracoContext.Current = asyncState.UmbracoContext;
_contentType.ContentTypeItem.Name = txtName.Text;
_contentType.ContentTypeItem.Alias = txtAlias.Text; // raw, contentType.Alias takes care of it
@@ -351,8 +352,16 @@ namespace umbraco.controls
var compositionType = isMediaType
? Services.ContentTypeService.GetMediaType(compositionId).SafeCast<IContentTypeComposition>()
: Services.ContentTypeService.GetContentType(compositionId).SafeCast<IContentTypeComposition>();
var added = _contentType.ContentTypeItem.AddContentType(compositionType);
//TODO if added=false then return error message
try
{
//TODO if added=false then return error message
var added = _contentType.ContentTypeItem.AddContentType(compositionType);
}
catch (InvalidCompositionException ex)
{
state.SaveArgs.IconType = BasePage.speechBubbleIcon.error;
state.SaveArgs.Message = ex.Message;
}
}
// then iterate over removed = existing except checked
@@ -1073,7 +1082,7 @@ jQuery(document).ready(function() {{ refreshDropDowns(); }});
private string GetHtmlForNoPropertiesMessageListItem()
{
return @"<li class=""no-properties-on-tab"">" + ui.Text("settings", "noPropertiesDefinedOnTab") + "</li></ul>";
return @"<li class=""no-properties-on-tab"">" + ui.Text("settings", "noPropertiesDefinedOnTab", Security.CurrentUser) + "</li></ul>";
}
private void SavePropertyType(SaveClickEventArgs e, IContentTypeComposition contentTypeItem)
@@ -1127,7 +1136,7 @@ jQuery(document).ready(function() {{ refreshDropDowns(); }});
}
else
{
e.Message = ui.Text("contentTypeDublicatePropertyType");
e.Message = ui.Text("contentTypeDublicatePropertyType", Security.CurrentUser);
e.IconType = BasePage.speechBubbleIcon.warning;
}
}
@@ -1430,7 +1439,7 @@ jQuery(document).ready(function() {{ refreshDropDowns(); }});
LoadContentType();
var ea = new SaveClickEventArgs(ui.Text("contentTypeTabCreated"));
var ea = new SaveClickEventArgs(ui.Text("contentTypeTabCreated", Security.CurrentUser));
ea.IconType = BasePage.speechBubbleIcon.success;
RaiseBubbleEvent(new object(), ea);
@@ -1469,7 +1478,7 @@ jQuery(document).ready(function() {{ refreshDropDowns(); }});
LoadContentType();
var ea = new SaveClickEventArgs(ui.Text("contentTypeTabDeleted"));
var ea = new SaveClickEventArgs(ui.Text("contentTypeTabDeleted", Security.CurrentUser));
ea.IconType = BasePage.speechBubbleIcon.success;
RaiseBubbleEvent(new object(), ea);