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:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user