Merge remote-tracking branch 'origin/master-v7' into dev-v7

Conflicts:
	build/UmbracoVersion.txt
	src/SolutionInfo.cs
	src/Umbraco.Core/Cache/FullDataSetRepositoryCachePolicy.cs
	src/Umbraco.Core/Cache/FullDataSetRepositoryCachePolicyFactory.cs
	src/Umbraco.Core/Configuration/UmbracoVersion.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs
	src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PublicAccessRepository.cs
	src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs
	src/Umbraco.Core/Umbraco.Core.csproj
	src/Umbraco.Tests/Cache/FullDataSetCachePolicyTests.cs
	src/Umbraco.Web.UI.Client/src/common/directives/components/grid/grid.rte.directive.js
	src/Umbraco.Web.UI.Client/src/less/hacks.less
	src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
	src/Umbraco.Web/WebBootManager.cs
This commit is contained in:
Shannon
2016-02-03 12:30:11 +01:00
50 changed files with 1213 additions and 611 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Web;
using Umbraco.Core.CodeAnnotations;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
@@ -52,7 +53,7 @@ namespace umbraco
if (IsPartialViewMacro == false)
{
var attempt = fileService.CreatePartialView(model, snippetName, User.Id);
_returnUrl = string.Format("settings/views/EditView.aspx?treeType=partialViews&file={0}", model.Path.TrimStart('/'));
_returnUrl = string.Format("settings/views/EditView.aspx?treeType=partialViews&file={0}", HttpUtility.UrlEncode(model.Path.TrimStart('/').Replace("\\", "/")));
return attempt.Success;
}
else
@@ -68,7 +69,7 @@ namespace umbraco
macroService.Save(new Macro(attempt.Result.Alias, attempt.Result.Alias) { ScriptPath = virtualPath });
}
_returnUrl = string.Format("settings/views/EditView.aspx?treeType=partialViewMacros&file={0}", model.Path.TrimStart('/'));
_returnUrl = string.Format("settings/views/EditView.aspx?treeType=partialViewMacros&file={0}", HttpUtility.UrlEncode(model.Path.TrimStart('/').Replace("\\", "/")));
return attempt.Success;
}

View File

@@ -183,71 +183,71 @@ namespace umbraco.presentation.umbraco.dialogs
SimpleLoginNameValidator.IsValid = true;
var provider = MembershipProviderExtensions.GetMembersMembershipProvider();
int pageId = int.Parse(helper.Request("nodeId"));
if (Page.IsValid)
if (e.CommandName == "simple")
{
int pageId = int.Parse(helper.Request("nodeId"));
var memberLogin = simpleLogin.Visible ? simpleLogin.Text : SimpleLoginLabel.Text;
if (e.CommandName == "simple")
var member = provider.GetUser(memberLogin, false);
if (member == null)
{
var memberLogin = simpleLogin.Visible ? simpleLogin.Text : SimpleLoginLabel.Text;
var tempEmail = "u" + Guid.NewGuid().ToString("N") + "@example.com";
var member = provider.GetUser(memberLogin, false);
if (member == null)
// this needs to work differently depending on umbraco members or external membership provider
if (provider.IsUmbracoMembershipProvider() == false)
{
var tempEmail = "u" + Guid.NewGuid().ToString("N") + "@example.com";
// this needs to work differently depending on umbraco members or external membership provider
if (provider.IsUmbracoMembershipProvider() == false)
member = provider.CreateUser(memberLogin, simplePassword.Text, tempEmail);
}
else
{
//if it's the umbraco membership provider, then we need to tell it what member type to create it with
if (MemberType.GetByAlias(Constants.Conventions.MemberTypes.SystemDefaultProtectType) == null)
{
member = provider.CreateUser(memberLogin, simplePassword.Text, tempEmail);
MemberType.MakeNew(BusinessLogic.User.GetUser(0), Constants.Conventions.MemberTypes.SystemDefaultProtectType);
}
else
var castedProvider = provider.AsUmbracoMembershipProvider();
MembershipCreateStatus status;
member = castedProvider.CreateUser(Constants.Conventions.MemberTypes.SystemDefaultProtectType,
memberLogin, simplePassword.Text, tempEmail, null, null, true, null, out status);
if (status != MembershipCreateStatus.Success)
{
//if it's the umbraco membership provider, then we need to tell it what member type to create it with
if (MemberType.GetByAlias(Constants.Conventions.MemberTypes.SystemDefaultProtectType) == null)
{
MemberType.MakeNew(BusinessLogic.User.GetUser(0), Constants.Conventions.MemberTypes.SystemDefaultProtectType);
}
var castedProvider = provider.AsUmbracoMembershipProvider();
MembershipCreateStatus status;
member = castedProvider.CreateUser(Constants.Conventions.MemberTypes.SystemDefaultProtectType,
memberLogin, simplePassword.Text, tempEmail, null, null, true, null, out status);
if (status != MembershipCreateStatus.Success)
{
SimpleLoginNameValidator.IsValid = false;
SimpleLoginNameValidator.ErrorMessage = "Could not create user: " + status;
SimpleLoginNameValidator.Text = "Could not create user: " + status;
return;
}
SimpleLoginNameValidator.IsValid = false;
SimpleLoginNameValidator.ErrorMessage = "Could not create user: " + status;
SimpleLoginNameValidator.Text = "Could not create user: " + status;
return;
}
}
else if (pp_pass.Visible)
{
SimpleLoginNameValidator.IsValid = false;
SimpleLoginLabel.Visible = true;
SimpleLoginLabel.Text = memberLogin;
simpleLogin.Visible = false;
pp_pass.Visible = false;
return;
}
// Create or find a memberGroup
var simpleRoleName = "__umbracoRole_" + member.UserName;
if (Roles.RoleExists(simpleRoleName) == false)
{
Roles.CreateRole(simpleRoleName);
}
if (Roles.IsUserInRole(member.UserName, simpleRoleName) == false)
{
Roles.AddUserToRole(member.UserName, simpleRoleName);
}
Access.ProtectPage(true, pageId, int.Parse(loginPagePicker.Value), int.Parse(errorPagePicker.Value));
Access.AddMembershipRoleToDocument(pageId, simpleRoleName);
Access.AddMembershipUserToDocument(pageId, member.UserName);
}
else if (e.CommandName == "advanced")
else if (pp_pass.Visible)
{
SimpleLoginNameValidator.IsValid = false;
SimpleLoginLabel.Visible = true;
SimpleLoginLabel.Text = memberLogin;
simpleLogin.Visible = false;
pp_pass.Visible = false;
return;
}
// Create or find a memberGroup
var simpleRoleName = "__umbracoRole_" + member.UserName;
if (Roles.RoleExists(simpleRoleName) == false)
{
Roles.CreateRole(simpleRoleName);
}
if (Roles.IsUserInRole(member.UserName, simpleRoleName) == false)
{
Roles.AddUserToRole(member.UserName, simpleRoleName);
}
Access.ProtectPage(true, pageId, int.Parse(loginPagePicker.Value), int.Parse(errorPagePicker.Value));
Access.AddMembershipRoleToDocument(pageId, simpleRoleName);
Access.AddMembershipUserToDocument(pageId, member.UserName);
}
else if (e.CommandName == "advanced")
{
if (cv_errorPage.IsValid && cv_loginPage.IsValid)
{
Access.ProtectPage(false, pageId, int.Parse(loginPagePicker.Value), int.Parse(errorPagePicker.Value));
@@ -257,19 +257,23 @@ namespace umbraco.presentation.umbraco.dialogs
else
Access.RemoveMembershipRoleFromDocument(pageId, li.Value);
}
feedback.Text = ui.Text("publicAccess", "paIsProtected", new cms.businesslogic.CMSNode(pageId).Text) + "</p><p><a href='#' onclick='" + ClientTools.Scripts.CloseModalWindow() + "'>" + ui.Text("closeThisWindow") + "</a>";
p_buttons.Visible = false;
pane_advanced.Visible = false;
pane_simple.Visible = false;
var content = ApplicationContext.Current.Services.ContentService.GetById(pageId);
//reloads the current node in the tree
ClientTools.SyncTree(content.Path, true);
//reloads the current node's children in the tree
ClientTools.ReloadActionNode(false, true);
feedback.type = global::umbraco.uicontrols.Feedback.feedbacktype.success;
else
{
return;
}
}
feedback.Text = ui.Text("publicAccess", "paIsProtected", new cms.businesslogic.CMSNode(pageId).Text) + "</p><p><a href='#' onclick='" + ClientTools.Scripts.CloseModalWindow() + "'>" + ui.Text("closeThisWindow") + "</a>";
p_buttons.Visible = false;
pane_advanced.Visible = false;
pane_simple.Visible = false;
var content = ApplicationContext.Current.Services.ContentService.GetById(pageId);
//reloads the current node in the tree
ClientTools.SyncTree(content.Path, true);
//reloads the current node's children in the tree
ClientTools.ReloadActionNode(false, true);
feedback.type = global::umbraco.uicontrols.Feedback.feedbacktype.success;
}