Merge pull request #7129 from umbraco/netcore/feature/AB3736-services-models
Moving most repositories and service interfaces (excluding content based ones)
This commit is contained in:
-2
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using Umbraco.Core.Models.Entities;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
public interface IScript : IFile
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models.Entities;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
public interface IStylesheet : IFile, IRememberBeingDirty
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns a list of umbraco back office enabled stylesheet properties
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// An umbraco back office enabled stylesheet property has a special prefix, for example:
|
||||
///
|
||||
/// /** umb_name: MyPropertyName */ p { font-size: 1em; }
|
||||
/// </remarks>
|
||||
IEnumerable<IStylesheetProperty> Properties { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Adds an Umbraco stylesheet property for use in the back office
|
||||
/// </summary>
|
||||
/// <param name="property"></param>
|
||||
void AddProperty(IStylesheetProperty property);
|
||||
|
||||
/// <summary>
|
||||
/// Removes an Umbraco stylesheet property
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
void RemoveProperty(string name);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using Umbraco.Core.Models.Entities;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
{
|
||||
public interface IStylesheetProperty : IRememberBeingDirty
|
||||
{
|
||||
string Alias { get; set; }
|
||||
string Name { get; }
|
||||
string Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace Umbraco.Core.Models.Identity
|
||||
{
|
||||
public interface IUserLoginInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Provider for the linked login, i.e. Facebook, Google, etc.
|
||||
/// </summary>
|
||||
string LoginProvider { get; set; }
|
||||
|
||||
/// <summary>User specific key for the login provider</summary>
|
||||
string ProviderKey { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ namespace Umbraco.Core.Models
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
[DataContract(IsReference = true)]
|
||||
public class Script : File
|
||||
public class Script : File, IScript
|
||||
{
|
||||
public Script(string path)
|
||||
: this(path, (Func<File, string>) null)
|
||||
@@ -25,9 +25,6 @@ namespace Umbraco.Core.Models
|
||||
/// <remarks>
|
||||
/// Overrides the default Entity identity check.
|
||||
/// </remarks>
|
||||
public override bool HasIdentity
|
||||
{
|
||||
get { return string.IsNullOrEmpty(Path) == false; }
|
||||
}
|
||||
public override bool HasIdentity => string.IsNullOrEmpty(Path) == false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Umbraco.Core.Models
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
[DataContract(IsReference = true)]
|
||||
public class Stylesheet : File
|
||||
public class Stylesheet : File, IStylesheet
|
||||
{
|
||||
public Stylesheet(string path)
|
||||
: this(path, null)
|
||||
@@ -120,7 +120,7 @@ namespace Umbraco.Core.Models
|
||||
/// /** umb_name: MyPropertyName */ p { font-size: 1em; }
|
||||
/// </remarks>
|
||||
[IgnoreDataMember]
|
||||
public IEnumerable<StylesheetProperty> Properties
|
||||
public IEnumerable<IStylesheetProperty> Properties
|
||||
{
|
||||
get { return _properties.Value; }
|
||||
}
|
||||
@@ -129,7 +129,7 @@ namespace Umbraco.Core.Models
|
||||
/// Adds an Umbraco stylesheet property for use in the back office
|
||||
/// </summary>
|
||||
/// <param name="property"></param>
|
||||
public void AddProperty(StylesheetProperty property)
|
||||
public void AddProperty(IStylesheetProperty property)
|
||||
{
|
||||
if (Properties.Any(x => x.Name.InvariantEquals(property.Name)))
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Umbraco.Core.Models
|
||||
/// </remarks>
|
||||
[Serializable]
|
||||
[DataContract(IsReference = true)]
|
||||
public class StylesheetProperty : BeingDirtyBase, IValueObject
|
||||
public class StylesheetProperty : BeingDirtyBase, IValueObject, IStylesheetProperty
|
||||
{
|
||||
private string _alias;
|
||||
private string _value;
|
||||
|
||||
-1
@@ -1,6 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
+1
-2
@@ -1,12 +1,11 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNet.Identity;
|
||||
using Umbraco.Core.Models.Identity;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
public interface IExternalLoginRepository : IReadWriteQueryRepository<int, IIdentityUserLogin>
|
||||
{
|
||||
void SaveUserLogins(int memberId, IEnumerable<UserLoginInfo> logins);
|
||||
void SaveUserLogins(int memberId, IEnumerable<IUserLoginInfo> logins);
|
||||
void DeleteUserLogins(int memberId);
|
||||
}
|
||||
}
|
||||
+5
-2
@@ -3,11 +3,14 @@ using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
public interface IScriptRepository : IReadRepository<string, Script>, IWriteRepository<Script>
|
||||
public interface IScriptRepository : IReadRepository<string, IScript>, IWriteRepository<IScript>
|
||||
{
|
||||
bool ValidateScript(Script script);
|
||||
bool ValidateScript(IScript script);
|
||||
Stream GetFileContentStream(string filepath);
|
||||
void SetFileContent(string filepath, Stream content);
|
||||
long GetFileSize(string filepath);
|
||||
|
||||
void AddFolder(string folderPath);
|
||||
void DeleteFolder(string folderPath);
|
||||
}
|
||||
}
|
||||
+5
-2
@@ -3,11 +3,14 @@ using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
public interface IStylesheetRepository : IReadRepository<string, Stylesheet>, IWriteRepository<Stylesheet>
|
||||
public interface IStylesheetRepository : IReadRepository<string, IStylesheet>, IWriteRepository<IStylesheet>
|
||||
{
|
||||
bool ValidateStylesheet(Stylesheet stylesheet);
|
||||
bool ValidateStylesheet(IStylesheet stylesheet);
|
||||
Stream GetFileContentStream(string filepath);
|
||||
void SetFileContent(string filepath, Stream content);
|
||||
long GetFileSize(string filepath);
|
||||
|
||||
void AddFolder(string folderPath);
|
||||
void DeleteFolder(string folderPath);
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
@@ -43,7 +42,6 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// <param name="pageSize"></param>
|
||||
/// <param name="totalRecords"></param>
|
||||
/// <param name="orderBy"></param>
|
||||
/// <param name="customFilter"></param>
|
||||
/// <param name="orderDirection"></param>
|
||||
/// <param name="includeUserGroups">
|
||||
/// A filter to only include user that belong to these user groups
|
||||
@@ -52,6 +50,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// A filter to only include users that do not belong to these user groups
|
||||
/// </param>
|
||||
/// <param name="userState">Optional parameter to filter by specified user state</param>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<IUser> GetPagedResultsByQuery(IQuery<IUser> query, long pageIndex, int pageSize, out long totalRecords,
|
||||
Expression<Func<IUser, object>> orderBy, Direction orderDirection = Direction.Ascending,
|
||||
+1
-1
@@ -3,7 +3,7 @@ using System.Linq;
|
||||
|
||||
namespace Umbraco.Core.Services.Changes
|
||||
{
|
||||
internal class TreeChange<TItem>
|
||||
public class TreeChange<TItem>
|
||||
{
|
||||
public TreeChange(TItem changedItem, TreeChangeTypes changeTypes)
|
||||
{
|
||||
+1
-1
@@ -4,7 +4,7 @@ namespace Umbraco.Core.Services.Changes
|
||||
{
|
||||
public static class TreeChangeExtensions
|
||||
{
|
||||
internal static TreeChange<TItem>.EventArgs ToEventArgs<TItem>(this IEnumerable<TreeChange<TItem>> changes)
|
||||
public static TreeChange<TItem>.EventArgs ToEventArgs<TItem>(this IEnumerable<TreeChange<TItem>> changes)
|
||||
{
|
||||
return new TreeChange<TItem>.EventArgs(changes);
|
||||
}
|
||||
-2
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
|
||||
namespace Umbraco.Core.Services
|
||||
+2
-3
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNet.Identity;
|
||||
using Umbraco.Core.Models.Identity;
|
||||
|
||||
namespace Umbraco.Core.Services
|
||||
@@ -22,14 +21,14 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
/// <param name="login"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<IIdentityUserLogin> Find(UserLoginInfo login);
|
||||
IEnumerable<IIdentityUserLogin> Find(IUserLoginInfo login);
|
||||
|
||||
/// <summary>
|
||||
/// Save user logins
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="logins"></param>
|
||||
void SaveUserLogins(int userId, IEnumerable<UserLoginInfo> logins);
|
||||
void SaveUserLogins(int userId, IEnumerable<IUserLoginInfo> logins);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes all user logins - normally used when a member is deleted
|
||||
+26
-26
@@ -24,28 +24,28 @@ namespace Umbraco.Core.Services
|
||||
bool DeletePartialViewMacro(string path, int userId = Constants.Security.SuperUserId);
|
||||
Attempt<IPartialView> SavePartialView(IPartialView partialView, int userId = Constants.Security.SuperUserId);
|
||||
Attempt<IPartialView> SavePartialViewMacro(IPartialView partialView, int userId = Constants.Security.SuperUserId);
|
||||
bool ValidatePartialView(PartialView partialView);
|
||||
bool ValidatePartialViewMacro(PartialView partialView);
|
||||
bool ValidatePartialView(IPartialView partialView);
|
||||
bool ValidatePartialViewMacro(IPartialView partialView);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all <see cref="Stylesheet"/> objects
|
||||
/// Gets a list of all <see cref="IStylesheet"/> objects
|
||||
/// </summary>
|
||||
/// <returns>An enumerable list of <see cref="Stylesheet"/> objects</returns>
|
||||
IEnumerable<Stylesheet> GetStylesheets(params string[] names);
|
||||
/// <returns>An enumerable list of <see cref="IStylesheet"/> objects</returns>
|
||||
IEnumerable<IStylesheet> GetStylesheets(params string[] names);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="Stylesheet"/> object by its name
|
||||
/// Gets a <see cref="IStylesheet"/> object by its name
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the stylesheet incl. extension</param>
|
||||
/// <returns>A <see cref="Stylesheet"/> object</returns>
|
||||
Stylesheet GetStylesheetByName(string name);
|
||||
/// <returns>A <see cref="IStylesheet"/> object</returns>
|
||||
IStylesheet GetStylesheetByName(string name);
|
||||
|
||||
/// <summary>
|
||||
/// Saves a <see cref="Stylesheet"/>
|
||||
/// Saves a <see cref="IStylesheet"/>
|
||||
/// </summary>
|
||||
/// <param name="stylesheet"><see cref="Stylesheet"/> to save</param>
|
||||
/// <param name="stylesheet"><see cref="IStylesheet"/> to save</param>
|
||||
/// <param name="userId">Optional id of the user saving the stylesheet</param>
|
||||
void SaveStylesheet(Stylesheet stylesheet, int userId = Constants.Security.SuperUserId);
|
||||
void SaveStylesheet(IStylesheet stylesheet, int userId = Constants.Security.SuperUserId);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a stylesheet by its name
|
||||
@@ -55,31 +55,31 @@ namespace Umbraco.Core.Services
|
||||
void DeleteStylesheet(string path, int userId = Constants.Security.SuperUserId);
|
||||
|
||||
/// <summary>
|
||||
/// Validates a <see cref="Stylesheet"/>
|
||||
/// Validates a <see cref="IStylesheet"/>
|
||||
/// </summary>
|
||||
/// <param name="stylesheet"><see cref="Stylesheet"/> to validate</param>
|
||||
/// <param name="stylesheet"><see cref="IStylesheet"/> to validate</param>
|
||||
/// <returns>True if Stylesheet is valid, otherwise false</returns>
|
||||
bool ValidateStylesheet(Stylesheet stylesheet);
|
||||
bool ValidateStylesheet(IStylesheet stylesheet);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all <see cref="Script"/> objects
|
||||
/// Gets a list of all <see cref="IScript"/> objects
|
||||
/// </summary>
|
||||
/// <returns>An enumerable list of <see cref="Script"/> objects</returns>
|
||||
IEnumerable<Script> GetScripts(params string[] names);
|
||||
/// <returns>An enumerable list of <see cref="IScript"/> objects</returns>
|
||||
IEnumerable<IScript> GetScripts(params string[] names);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="Script"/> object by its name
|
||||
/// Gets a <see cref="IScript"/> object by its name
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the script incl. extension</param>
|
||||
/// <returns>A <see cref="Script"/> object</returns>
|
||||
Script GetScriptByName(string name);
|
||||
/// <returns>A <see cref="IScript"/> object</returns>
|
||||
IScript GetScriptByName(string name);
|
||||
|
||||
/// <summary>
|
||||
/// Saves a <see cref="Script"/>
|
||||
/// </summary>
|
||||
/// <param name="script"><see cref="Script"/> to save</param>
|
||||
/// <param name="script"><see cref="IScript"/> to save</param>
|
||||
/// <param name="userId">Optional id of the user saving the script</param>
|
||||
void SaveScript(Script script, int userId = Constants.Security.SuperUserId);
|
||||
void SaveScript(IScript script, int userId = Constants.Security.SuperUserId);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a script by its name
|
||||
@@ -89,11 +89,11 @@ namespace Umbraco.Core.Services
|
||||
void DeleteScript(string path, int userId = Constants.Security.SuperUserId);
|
||||
|
||||
/// <summary>
|
||||
/// Validates a <see cref="Script"/>
|
||||
/// Validates a <see cref="IScript"/>
|
||||
/// </summary>
|
||||
/// <param name="script"><see cref="Script"/> to validate</param>
|
||||
/// <param name="script"><see cref="IScript"/> to validate</param>
|
||||
/// <returns>True if Script is valid, otherwise false</returns>
|
||||
bool ValidateScript(Script script);
|
||||
bool ValidateScript(IScript script);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a folder for scripts
|
||||
@@ -213,7 +213,7 @@ namespace Umbraco.Core.Services
|
||||
/// Validates a <see cref="ITemplate"/>
|
||||
/// </summary>
|
||||
/// <param name="template"><see cref="ITemplate"/> to validate</param>
|
||||
/// <returns>True if Script is valid, otherwise false</returns>
|
||||
/// <returns>True if template is valid, otherwise false</returns>
|
||||
bool ValidateTemplate(ITemplate template);
|
||||
|
||||
/// <summary>
|
||||
+2
-2
@@ -104,10 +104,10 @@ namespace Umbraco.Core.Services
|
||||
ILanguage GetLanguageById(int id);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="Language"/> by its iso code
|
||||
/// Gets a <see cref="ILanguage"/> by its iso code
|
||||
/// </summary>
|
||||
/// <param name="isoCode">Iso Code of the language (ie. en-US)</param>
|
||||
/// <returns><see cref="Language"/></returns>
|
||||
/// <returns><see cref="ILanguage"/></returns>
|
||||
ILanguage GetLanguageByIsoCode(string isoCode);
|
||||
|
||||
/// <summary>
|
||||
@@ -0,0 +1,153 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
|
||||
namespace Umbraco.Core.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines part of the UserService/MemberService, which is specific to methods used by the membership provider.
|
||||
/// The generic type is restricted to <see cref="IMembershipUser"/>. The implementation of this interface uses
|
||||
/// either <see cref="IMember"/> for the MemberService or <see cref="IUser"/> for the UserService.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Idea is to have this as an isolated interface so that it can be easily 'replaced' in the membership provider implementation.
|
||||
/// </remarks>
|
||||
public interface IMembershipMemberService<T> : IService
|
||||
where T : class, IMembershipUser
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the total number of Members or Users based on the count type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The way the Online count is done is the same way that it is done in the MS SqlMembershipProvider - We query for any members
|
||||
/// that have their last active date within the Membership.UserIsOnlineTimeWindow (which is in minutes). It isn't exact science
|
||||
/// but that is how MS have made theirs so we'll follow that principal.
|
||||
/// </remarks>
|
||||
/// <param name="countType"><see cref="MemberCountType"/> to count by</param>
|
||||
/// <returns><see cref="System.int"/> with number of Members or Users for passed in type</returns>
|
||||
int GetCount(MemberCountType countType);
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a Member with the username exists
|
||||
/// </summary>
|
||||
/// <param name="username">Username to check</param>
|
||||
/// <returns><c>True</c> if the Member exists otherwise <c>False</c></returns>
|
||||
bool Exists(string username);
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias);
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <param name="isApproved">IsApproved of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias, bool isApproved);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an <see cref="IMembershipUser"/> by its provider key
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="id">Id to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByProviderKey(object id);
|
||||
|
||||
/// <summary>
|
||||
/// Get an <see cref="IMembershipUser"/> by email
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="email">Email to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByEmail(string email);
|
||||
|
||||
/// <summary>
|
||||
/// Get an <see cref="IMembershipUser"/> by username
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByUsername(string username);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes an <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="membershipUser"><see cref="IMember"/> or <see cref="IUser"/> to Delete</param>
|
||||
void Delete(T membershipUser);
|
||||
|
||||
/// <summary>
|
||||
/// Saves an <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="entity"><see cref="IMember"/> or <see cref="IUser"/> to Save</param>
|
||||
/// <param name="raiseEvents">Optional parameter to raise events.
|
||||
/// Default is <c>True</c> otherwise set to <c>False</c> to not raise events</param>
|
||||
void Save(T entity, bool raiseEvents = true);
|
||||
|
||||
/// <summary>
|
||||
/// Saves a list of <see cref="IMembershipUser"/> objects
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="entities"><see cref="IEnumerable{T}"/> to save</param>
|
||||
/// <param name="raiseEvents">Optional parameter to raise events.
|
||||
/// Default is <c>True</c> otherwise set to <c>False</c> to not raise events</param>
|
||||
void Save(IEnumerable<T> entities, bool raiseEvents = true);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the default MemberType alias
|
||||
/// </summary>
|
||||
/// <remarks>By default we'll return the 'writer', but we need to check it exists. If it doesn't we'll
|
||||
/// return the first type that is not an admin, otherwise if there's only one we will return that one.</remarks>
|
||||
/// <returns>Alias of the default MemberType</returns>
|
||||
string GetDefaultMemberType();
|
||||
|
||||
/// <summary>
|
||||
/// Finds a list of <see cref="IMembershipUser"/> objects by a partial email string
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="emailStringToMatch">Partial email string to match</param>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <param name="matchType">The type of match to make as <see cref="StringPropertyMatchType"/>. Default is <see cref="StringPropertyMatchType.StartsWith"/></param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> FindByEmail(string emailStringToMatch, long pageIndex, int pageSize, out long totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
|
||||
|
||||
/// <summary>
|
||||
/// Finds a list of <see cref="IMembershipUser"/> objects by a partial username
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="login">Partial username to match</param>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <param name="matchType">The type of match to make as <see cref="StringPropertyMatchType"/>. Default is <see cref="StringPropertyMatchType.StartsWith"/></param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> FindByUsername(string login, long pageIndex, int pageSize, out long totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of paged <see cref="IMembershipUser"/> objects
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> GetAll(long pageIndex, int pageSize, out long totalRecords);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Persistence;
|
||||
|
||||
@@ -19,7 +20,8 @@ namespace Umbraco.Core
|
||||
AppCaches appCaches,
|
||||
IUmbracoDatabaseFactory databaseFactory,
|
||||
TypeLoader typeLoader,
|
||||
IRuntimeState state)
|
||||
IRuntimeState state,
|
||||
IIOHelper ioHelper)
|
||||
{
|
||||
composition.RegisterUnique(logger);
|
||||
composition.RegisterUnique(profiler);
|
||||
@@ -30,6 +32,7 @@ namespace Umbraco.Core
|
||||
composition.RegisterUnique(factory => factory.GetInstance<IUmbracoDatabaseFactory>().SqlContext);
|
||||
composition.RegisterUnique(typeLoader);
|
||||
composition.RegisterUnique(state);
|
||||
composition.RegisterUnique(ioHelper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
using Microsoft.AspNet.Identity;
|
||||
|
||||
namespace Umbraco.Core.Models.Identity
|
||||
{
|
||||
internal class UserLoginInfoWrapper : IUserLoginInfo
|
||||
{
|
||||
private readonly UserLoginInfo _info;
|
||||
|
||||
public static IUserLoginInfo Wrap(UserLoginInfo info) => new UserLoginInfoWrapper(info);
|
||||
|
||||
private UserLoginInfoWrapper(UserLoginInfo info)
|
||||
{
|
||||
_info = info;
|
||||
}
|
||||
|
||||
public string LoginProvider
|
||||
{
|
||||
get => _info.LoginProvider;
|
||||
set => _info.LoginProvider = value;
|
||||
}
|
||||
|
||||
public string ProviderKey
|
||||
{
|
||||
get => _info.ProviderKey;
|
||||
set => _info.ProviderKey = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
Database.Execute("DELETE FROM ExternalLogins WHERE UserId=@userId", new { userId = memberId });
|
||||
}
|
||||
|
||||
public void SaveUserLogins(int memberId, IEnumerable<UserLoginInfo> logins)
|
||||
public void SaveUserLogins(int memberId, IEnumerable<IUserLoginInfo> logins)
|
||||
{
|
||||
//clear out logins for member
|
||||
Database.Execute("DELETE FROM umbracoExternalLogin WHERE userId=@userId", new { userId = memberId });
|
||||
|
||||
@@ -12,19 +12,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
/// <summary>
|
||||
/// Represents the Script Repository
|
||||
/// </summary>
|
||||
internal class ScriptRepository : FileRepository<string, Script>, IScriptRepository
|
||||
internal class ScriptRepository : FileRepository<string, IScript>, IScriptRepository
|
||||
{
|
||||
private readonly IContentSection _contentConfig;
|
||||
private readonly IIOHelper _ioHelper;
|
||||
|
||||
public ScriptRepository(IFileSystems fileSystems, IContentSection contentConfig)
|
||||
public ScriptRepository(IFileSystems fileSystems, IIOHelper ioHelper)
|
||||
: base(fileSystems.ScriptsFileSystem)
|
||||
{
|
||||
_contentConfig = contentConfig ?? throw new ArgumentNullException(nameof(contentConfig));
|
||||
_ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper));
|
||||
}
|
||||
|
||||
#region Implementation of IRepository<string,Script>
|
||||
|
||||
public override Script Get(string id)
|
||||
public override IScript Get(string id)
|
||||
{
|
||||
// get the relative path within the filesystem
|
||||
// (though... id should be relative already)
|
||||
@@ -55,16 +55,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
return script;
|
||||
}
|
||||
|
||||
public override void Save(Script entity)
|
||||
public override void Save(IScript entity)
|
||||
{
|
||||
base.Save(entity);
|
||||
// TODO: Casting :/ Review GetFileContent and it's usages, need to look into it later
|
||||
var script = (Script) entity;
|
||||
|
||||
base.Save(script);
|
||||
|
||||
// ensure that from now on, content is lazy-loaded
|
||||
if (entity.GetFileContent == null)
|
||||
entity.GetFileContent = file => GetFileContent(file.OriginalPath);
|
||||
if (script.GetFileContent == null)
|
||||
script.GetFileContent = file => GetFileContent(file.OriginalPath);
|
||||
}
|
||||
|
||||
public override IEnumerable<Script> GetMany(params string[] ids)
|
||||
public override IEnumerable<IScript> GetMany(params string[] ids)
|
||||
{
|
||||
//ensure they are de-duplicated, easy win if people don't do this as this can cause many excess queries
|
||||
ids = ids.Distinct().ToArray();
|
||||
@@ -86,7 +89,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
}
|
||||
}
|
||||
|
||||
public bool ValidateScript(Script script)
|
||||
public bool ValidateScript(IScript script)
|
||||
{
|
||||
// get full path
|
||||
string fullPath;
|
||||
@@ -102,9 +105,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
|
||||
// validate path & extension
|
||||
var validDir = SystemDirectories.Scripts;
|
||||
var isValidPath = Current.IOHelper.VerifyEditPath(fullPath, validDir);
|
||||
var isValidPath = _ioHelper.VerifyEditPath(fullPath, validDir);
|
||||
var validExts = new[] {"js"};
|
||||
var isValidExtension = Current.IOHelper.VerifyFileExtension(script.Path, validExts);
|
||||
var isValidExtension = _ioHelper.VerifyFileExtension(script.Path, validExts);
|
||||
return isValidPath && isValidExtension;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,15 +10,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
/// <summary>
|
||||
/// Represents the Stylesheet Repository
|
||||
/// </summary>
|
||||
internal class StylesheetRepository : FileRepository<string, Stylesheet>, IStylesheetRepository
|
||||
internal class StylesheetRepository : FileRepository<string, IStylesheet>, IStylesheetRepository
|
||||
{
|
||||
public StylesheetRepository(IFileSystems fileSystems)
|
||||
private readonly IIOHelper _ioHelper;
|
||||
|
||||
public StylesheetRepository(IFileSystems fileSystems, IIOHelper ioHelper)
|
||||
: base(fileSystems.StylesheetsFileSystem)
|
||||
{ }
|
||||
{
|
||||
_ioHelper = ioHelper;
|
||||
}
|
||||
|
||||
#region Overrides of FileRepository<string,Stylesheet>
|
||||
|
||||
public override Stylesheet Get(string id)
|
||||
public override IStylesheet Get(string id)
|
||||
{
|
||||
// get the relative path within the filesystem
|
||||
// (though... id should be relative already)
|
||||
@@ -51,16 +55,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
|
||||
}
|
||||
|
||||
public override void Save(Stylesheet entity)
|
||||
public override void Save(IStylesheet entity)
|
||||
{
|
||||
base.Save(entity);
|
||||
// TODO: Casting :/ Review GetFileContent and it's usages, need to look into it later
|
||||
var stylesheet = (Stylesheet)entity;
|
||||
|
||||
base.Save(stylesheet);
|
||||
|
||||
// ensure that from now on, content is lazy-loaded
|
||||
if (entity.GetFileContent == null)
|
||||
entity.GetFileContent = file => GetFileContent(file.OriginalPath);
|
||||
if (stylesheet.GetFileContent == null)
|
||||
stylesheet.GetFileContent = file => GetFileContent(file.OriginalPath);
|
||||
}
|
||||
|
||||
public override IEnumerable<Stylesheet> GetMany(params string[] ids)
|
||||
public override IEnumerable<IStylesheet> GetMany(params string[] ids)
|
||||
{
|
||||
//ensure they are de-duplicated, easy win if people don't do this as this can cause many excess queries
|
||||
ids = ids
|
||||
@@ -92,14 +99,14 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
/// If null or not specified, will return the stylesheets at the root path relative to the IFileSystem
|
||||
/// </param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<Stylesheet> GetStylesheetsAtPath(string rootPath = null)
|
||||
public IEnumerable<IStylesheet> GetStylesheetsAtPath(string rootPath = null)
|
||||
{
|
||||
return FileSystem.GetFiles(rootPath ?? string.Empty, "*.css").Select(Get);
|
||||
}
|
||||
|
||||
private static readonly List<string> ValidExtensions = new List<string> { "css" };
|
||||
|
||||
public bool ValidateStylesheet(Stylesheet stylesheet)
|
||||
public bool ValidateStylesheet(IStylesheet stylesheet)
|
||||
{
|
||||
// get full path
|
||||
string fullPath;
|
||||
@@ -115,8 +122,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
|
||||
|
||||
// validate path and extension
|
||||
var validDir = SystemDirectories.Css;
|
||||
var isValidPath = Current.IOHelper.VerifyEditPath(fullPath, validDir);
|
||||
var isValidExtension = Current.IOHelper.VerifyFileExtension(stylesheet.Path, ValidExtensions);
|
||||
var isValidPath = _ioHelper.VerifyEditPath(fullPath, validDir);
|
||||
var isValidExtension = _ioHelper.VerifyFileExtension(stylesheet.Path, ValidExtensions);
|
||||
return isValidPath && isValidExtension;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,11 @@ namespace Umbraco.Core.Runtime
|
||||
/// </summary>
|
||||
protected IProfilingLogger ProfilingLogger { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="IIOHelper"/>
|
||||
/// </summary>
|
||||
protected IIOHelper IOHelper { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public IRuntimeState State => _state;
|
||||
|
||||
@@ -56,6 +61,10 @@ namespace Umbraco.Core.Runtime
|
||||
var profiler = Profiler = GetProfiler();
|
||||
var profilingLogger = ProfilingLogger = new ProfilingLogger(logger, profiler);
|
||||
|
||||
IOHelper = GetIOHelper();
|
||||
if (IOHelper == null)
|
||||
throw new InvalidOperationException($"The object returned from {nameof(GetIOHelper)} cannot be null");
|
||||
|
||||
// the boot loader boots using a container scope, so anything that is PerScope will
|
||||
// be disposed after the boot loader has booted, and anything else will remain.
|
||||
// note that this REQUIRES that perWebRequestScope has NOT been enabled yet, else
|
||||
@@ -128,9 +137,9 @@ namespace Umbraco.Core.Runtime
|
||||
// main dom
|
||||
var mainDom = new MainDom(Logger);
|
||||
|
||||
// create the composition
|
||||
// create the composition
|
||||
composition = new Composition(register, typeLoader, ProfilingLogger, _state, configs);
|
||||
composition.RegisterEssentials(Logger, Profiler, ProfilingLogger, mainDom, appCaches, databaseFactory, typeLoader, _state);
|
||||
composition.RegisterEssentials(Logger, Profiler, ProfilingLogger, mainDom, appCaches, databaseFactory, typeLoader, _state, IOHelper);
|
||||
|
||||
// run handlers
|
||||
RuntimeOptions.DoRuntimeEssentials(composition, appCaches, typeLoader, databaseFactory);
|
||||
@@ -313,6 +322,13 @@ namespace Umbraco.Core.Runtime
|
||||
protected virtual IProfiler GetProfiler()
|
||||
=> new LogProfiler(Logger);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="IIOHelper"/>
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected virtual IIOHelper GetIOHelper()
|
||||
=> new Umbraco.Core.IO.IOHelper();
|
||||
|
||||
/// <summary>
|
||||
/// Gets the application caches.
|
||||
/// </summary>
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace Umbraco.Core.Security
|
||||
if (isLoginsPropertyDirty)
|
||||
{
|
||||
var logins = await GetLoginsAsync(user);
|
||||
_externalLoginService.SaveUserLogins(found.Id, logins);
|
||||
_externalLoginService.SaveUserLogins(found.Id, logins.Select(UserLoginInfoWrapper.Wrap));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -382,7 +382,7 @@ namespace Umbraco.Core.Security
|
||||
if (login == null) throw new ArgumentNullException("login");
|
||||
|
||||
//get all logins associated with the login id
|
||||
var result = _externalLoginService.Find(login).ToArray();
|
||||
var result = _externalLoginService.Find(UserLoginInfoWrapper.Wrap(login)).ToArray();
|
||||
if (result.Any())
|
||||
{
|
||||
//return the first user that matches the result
|
||||
|
||||
@@ -3,7 +3,7 @@ using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Core.Services.Changes
|
||||
{
|
||||
internal static class ContentTypeChangeExtensions
|
||||
public static class ContentTypeChangeExtensions
|
||||
{
|
||||
public static ContentTypeChange<TItem>.EventArgs ToEventArgs<TItem>(this IEnumerable<ContentTypeChange<TItem>> changes)
|
||||
where TItem : class, IContentTypeComposition
|
||||
|
||||
@@ -23,148 +23,5 @@ namespace Umbraco.Core.Services
|
||||
IMember CreateMemberWithIdentity(string username, string email, IMemberType memberType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Defines part of the UserService/MemberService, which is specific to methods used by the membership provider.
|
||||
/// The generic type is restricted to <see cref="IMembershipUser"/>. The implementation of this interface uses
|
||||
/// either <see cref="IMember"/> for the MemberService or <see cref="IUser"/> for the UserService.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Idea is to have this as an isolated interface so that it can be easily 'replaced' in the membership provider implementation.
|
||||
/// </remarks>
|
||||
public interface IMembershipMemberService<T> : IService
|
||||
where T : class, IMembershipUser
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the total number of Members or Users based on the count type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The way the Online count is done is the same way that it is done in the MS SqlMembershipProvider - We query for any members
|
||||
/// that have their last active date within the Membership.UserIsOnlineTimeWindow (which is in minutes). It isn't exact science
|
||||
/// but that is how MS have made theirs so we'll follow that principal.
|
||||
/// </remarks>
|
||||
/// <param name="countType"><see cref="MemberCountType"/> to count by</param>
|
||||
/// <returns><see cref="System.int"/> with number of Members or Users for passed in type</returns>
|
||||
int GetCount(MemberCountType countType);
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a Member with the username exists
|
||||
/// </summary>
|
||||
/// <param name="username">Username to check</param>
|
||||
/// <returns><c>True</c> if the Member exists otherwise <c>False</c></returns>
|
||||
bool Exists(string username);
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias);
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <param name="isApproved">IsApproved of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias, bool isApproved);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an <see cref="IMembershipUser"/> by its provider key
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="id">Id to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByProviderKey(object id);
|
||||
|
||||
/// <summary>
|
||||
/// Get an <see cref="IMembershipUser"/> by email
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="email">Email to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByEmail(string email);
|
||||
|
||||
/// <summary>
|
||||
/// Get an <see cref="IMembershipUser"/> by username
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username to use for retrieval</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T GetByUsername(string username);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes an <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="membershipUser"><see cref="IMember"/> or <see cref="IUser"/> to Delete</param>
|
||||
void Delete(T membershipUser);
|
||||
|
||||
/// <summary>
|
||||
/// Saves an <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="entity"><see cref="IMember"/> or <see cref="IUser"/> to Save</param>
|
||||
/// <param name="raiseEvents">Optional parameter to raise events.
|
||||
/// Default is <c>True</c> otherwise set to <c>False</c> to not raise events</param>
|
||||
void Save(T entity, bool raiseEvents = true);
|
||||
|
||||
/// <summary>
|
||||
/// Saves a list of <see cref="IMembershipUser"/> objects
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="entities"><see cref="IEnumerable{T}"/> to save</param>
|
||||
/// <param name="raiseEvents">Optional parameter to raise events.
|
||||
/// Default is <c>True</c> otherwise set to <c>False</c> to not raise events</param>
|
||||
void Save(IEnumerable<T> entities, bool raiseEvents = true);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the default MemberType alias
|
||||
/// </summary>
|
||||
/// <remarks>By default we'll return the 'writer', but we need to check it exists. If it doesn't we'll
|
||||
/// return the first type that is not an admin, otherwise if there's only one we will return that one.</remarks>
|
||||
/// <returns>Alias of the default MemberType</returns>
|
||||
string GetDefaultMemberType();
|
||||
|
||||
/// <summary>
|
||||
/// Finds a list of <see cref="IMembershipUser"/> objects by a partial email string
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="emailStringToMatch">Partial email string to match</param>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <param name="matchType">The type of match to make as <see cref="StringPropertyMatchType"/>. Default is <see cref="StringPropertyMatchType.StartsWith"/></param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> FindByEmail(string emailStringToMatch, long pageIndex, int pageSize, out long totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
|
||||
|
||||
/// <summary>
|
||||
/// Finds a list of <see cref="IMembershipUser"/> objects by a partial username
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="login">Partial username to match</param>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <param name="matchType">The type of match to make as <see cref="StringPropertyMatchType"/>. Default is <see cref="StringPropertyMatchType.StartsWith"/></param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> FindByUsername(string login, long pageIndex, int pageSize, out long totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of paged <see cref="IMembershipUser"/> objects
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="pageIndex">Current page index</param>
|
||||
/// <param name="pageSize">Size of the page</param>
|
||||
/// <param name="totalRecords">Total number of records found (out)</param>
|
||||
/// <returns><see cref="IEnumerable{T}"/></returns>
|
||||
IEnumerable<T> GetAll(long pageIndex, int pageSize, out long totalRecords);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Umbraco.Core.Services
|
||||
/// <param name="operatingUser"></param>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="actionName"></param>
|
||||
/// <param name="http"></param>
|
||||
/// <param name="siteUri"></param>
|
||||
/// <param name="createSubject"></param>
|
||||
/// <param name="createBody"></param>
|
||||
void SendNotifications(IUser operatingUser, IEnumerable<IContent> entities, string action, string actionName, Uri siteUri,
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
/// </summary>
|
||||
/// <param name="login"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<IIdentityUserLogin> Find(UserLoginInfo login)
|
||||
public IEnumerable<IIdentityUserLogin> Find(IUserLoginInfo login)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -54,7 +54,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="logins"></param>
|
||||
public void SaveUserLogins(int userId, IEnumerable<UserLoginInfo> logins)
|
||||
public void SaveUserLogins(int userId, IEnumerable<IUserLoginInfo> logins)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
|
||||
@@ -45,11 +45,8 @@ namespace Umbraco.Core.Services.Implement
|
||||
|
||||
#region Stylesheets
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all <see cref="Stylesheet"/> objects
|
||||
/// </summary>
|
||||
/// <returns>An enumerable list of <see cref="Stylesheet"/> objects</returns>
|
||||
public IEnumerable<Stylesheet> GetStylesheets(params string[] names)
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<IStylesheet> GetStylesheets(params string[] names)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -57,12 +54,8 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="Stylesheet"/> object by its name
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the stylesheet incl. extension</param>
|
||||
/// <returns>A <see cref="Stylesheet"/> object</returns>
|
||||
public Stylesheet GetStylesheetByName(string name)
|
||||
/// <inheritdoc />
|
||||
public IStylesheet GetStylesheetByName(string name)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -70,16 +63,12 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves a <see cref="Stylesheet"/>
|
||||
/// </summary>
|
||||
/// <param name="stylesheet"><see cref="Stylesheet"/> to save</param>
|
||||
/// <param name="userId"></param>
|
||||
public void SaveStylesheet(Stylesheet stylesheet, int userId = Constants.Security.SuperUserId)
|
||||
/// <inheritdoc />
|
||||
public void SaveStylesheet(IStylesheet stylesheet, int userId = Constants.Security.SuperUserId)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var saveEventArgs = new SaveEventArgs<Stylesheet>(stylesheet);
|
||||
var saveEventArgs = new SaveEventArgs<IStylesheet>(stylesheet);
|
||||
if (scope.Events.DispatchCancelable(SavingStylesheet, this, saveEventArgs))
|
||||
{
|
||||
scope.Complete();
|
||||
@@ -91,16 +80,12 @@ namespace Umbraco.Core.Services.Implement
|
||||
saveEventArgs.CanCancel = false;
|
||||
scope.Events.Dispatch(SavedStylesheet, this, saveEventArgs);
|
||||
|
||||
Audit(AuditType.Save, userId, -1, ObjectTypes.GetName(UmbracoObjectTypes.Stylesheet));
|
||||
Audit(AuditType.Save, userId, -1, UmbracoObjectTypes.Stylesheet.GetName());
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a stylesheet by its name
|
||||
/// </summary>
|
||||
/// <param name="path">Name incl. extension of the Stylesheet to delete</param>
|
||||
/// <param name="userId"></param>
|
||||
/// <inheritdoc />
|
||||
public void DeleteStylesheet(string path, int userId = Constants.Security.SuperUserId)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
@@ -112,7 +97,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
return;
|
||||
}
|
||||
|
||||
var deleteEventArgs = new DeleteEventArgs<Stylesheet>(stylesheet);
|
||||
var deleteEventArgs = new DeleteEventArgs<IStylesheet>(stylesheet);
|
||||
if (scope.Events.DispatchCancelable(DeletingStylesheet, this, deleteEventArgs))
|
||||
{
|
||||
scope.Complete();
|
||||
@@ -123,17 +108,13 @@ namespace Umbraco.Core.Services.Implement
|
||||
deleteEventArgs.CanCancel = false;
|
||||
scope.Events.Dispatch(DeletedStylesheet, this, deleteEventArgs);
|
||||
|
||||
Audit(AuditType.Delete, userId, -1, ObjectTypes.GetName(UmbracoObjectTypes.Stylesheet));
|
||||
Audit(AuditType.Delete, userId, -1, UmbracoObjectTypes.Stylesheet.GetName());
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validates a <see cref="Stylesheet"/>
|
||||
/// </summary>
|
||||
/// <param name="stylesheet"><see cref="Stylesheet"/> to validate</param>
|
||||
/// <returns>True if Stylesheet is valid, otherwise false</returns>
|
||||
public bool ValidateStylesheet(Stylesheet stylesheet)
|
||||
/// <inheritdoc />
|
||||
public bool ValidateStylesheet(IStylesheet stylesheet)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -145,7 +126,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
((StylesheetRepository) _stylesheetRepository).AddFolder(folderPath);
|
||||
_stylesheetRepository.AddFolder(folderPath);
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -154,7 +135,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
((StylesheetRepository) _stylesheetRepository).DeleteFolder(folderPath);
|
||||
_stylesheetRepository.DeleteFolder(folderPath);
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -188,11 +169,8 @@ namespace Umbraco.Core.Services.Implement
|
||||
|
||||
#region Scripts
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of all <see cref="Script"/> objects
|
||||
/// </summary>
|
||||
/// <returns>An enumerable list of <see cref="Script"/> objects</returns>
|
||||
public IEnumerable<Script> GetScripts(params string[] names)
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<IScript> GetScripts(params string[] names)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -200,12 +178,8 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="Script"/> object by its name
|
||||
/// </summary>
|
||||
/// <param name="name">Name of the script incl. extension</param>
|
||||
/// <returns>A <see cref="Script"/> object</returns>
|
||||
public Script GetScriptByName(string name)
|
||||
/// <inheritdoc />
|
||||
public IScript GetScriptByName(string name)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -213,16 +187,12 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves a <see cref="Script"/>
|
||||
/// </summary>
|
||||
/// <param name="script"><see cref="Script"/> to save</param>
|
||||
/// <param name="userId"></param>
|
||||
public void SaveScript(Script script, int userId = Constants.Security.SuperUserId)
|
||||
/// <inheritdoc />
|
||||
public void SaveScript(IScript script, int userId = Constants.Security.SuperUserId)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var saveEventArgs = new SaveEventArgs<Script>(script);
|
||||
var saveEventArgs = new SaveEventArgs<IScript>(script);
|
||||
if (scope.Events.DispatchCancelable(SavingScript, this, saveEventArgs))
|
||||
{
|
||||
scope.Complete();
|
||||
@@ -238,11 +208,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a script by its name
|
||||
/// </summary>
|
||||
/// <param name="path">Name incl. extension of the Script to delete</param>
|
||||
/// <param name="userId"></param>
|
||||
/// <inheritdoc />
|
||||
public void DeleteScript(string path, int userId = Constants.Security.SuperUserId)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
@@ -254,7 +220,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
return;
|
||||
}
|
||||
|
||||
var deleteEventArgs = new DeleteEventArgs<Script>(script);
|
||||
var deleteEventArgs = new DeleteEventArgs<IScript>(script);
|
||||
if (scope.Events.DispatchCancelable(DeletingScript, this, deleteEventArgs))
|
||||
{
|
||||
scope.Complete();
|
||||
@@ -270,12 +236,8 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validates a <see cref="Script"/>
|
||||
/// </summary>
|
||||
/// <param name="script"><see cref="Script"/> to validate</param>
|
||||
/// <returns>True if Script is valid, otherwise false</returns>
|
||||
public bool ValidateScript(Script script)
|
||||
/// <inheritdoc />
|
||||
public bool ValidateScript(IScript script)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -287,7 +249,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
((ScriptRepository) _scriptRepository).AddFolder(folderPath);
|
||||
_scriptRepository.AddFolder(folderPath);
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -296,7 +258,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
((ScriptRepository) _scriptRepository).DeleteFolder(folderPath);
|
||||
_scriptRepository.DeleteFolder(folderPath);
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -578,7 +540,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
|
||||
scope.Events.Dispatch(SavedTemplate, this, new SaveEventArgs<ITemplate>(template, false));
|
||||
|
||||
Audit(AuditType.Save, userId, template.Id, ObjectTypes.GetName(UmbracoObjectTypes.Template));
|
||||
Audit(AuditType.Save, userId, template.Id, UmbracoObjectTypes.Template.GetName());
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -604,7 +566,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
|
||||
scope.Events.Dispatch(SavedTemplate, this, new SaveEventArgs<ITemplate>(templatesA, false));
|
||||
|
||||
Audit(AuditType.Save, userId, -1, ObjectTypes.GetName(UmbracoObjectTypes.Template));
|
||||
Audit(AuditType.Save, userId, -1, UmbracoObjectTypes.Template.GetName());
|
||||
scope.Complete();
|
||||
}
|
||||
}
|
||||
@@ -907,7 +869,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
return Attempt.Succeed(partialView);
|
||||
}
|
||||
|
||||
public bool ValidatePartialView(PartialView partialView)
|
||||
public bool ValidatePartialView(IPartialView partialView)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -915,7 +877,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
}
|
||||
}
|
||||
|
||||
public bool ValidatePartialViewMacro(PartialView partialView)
|
||||
public bool ValidatePartialViewMacro(IPartialView partialView)
|
||||
{
|
||||
using (var scope = ScopeProvider.CreateScope(autoComplete: true))
|
||||
{
|
||||
@@ -1106,22 +1068,22 @@ namespace Umbraco.Core.Services.Implement
|
||||
/// <summary>
|
||||
/// Occurs before Delete
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<Script>> DeletingScript;
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<IScript>> DeletingScript;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs after Delete
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<Script>> DeletedScript;
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<IScript>> DeletedScript;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs before Delete
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<Stylesheet>> DeletingStylesheet;
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<IStylesheet>> DeletingStylesheet;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs after Delete
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<Stylesheet>> DeletedStylesheet;
|
||||
public static event TypedEventHandler<IFileService, DeleteEventArgs<IStylesheet>> DeletedStylesheet;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs before Save
|
||||
@@ -1136,22 +1098,22 @@ namespace Umbraco.Core.Services.Implement
|
||||
/// <summary>
|
||||
/// Occurs before Save
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<Script>> SavingScript;
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<IScript>> SavingScript;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs after Save
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<Script>> SavedScript;
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<IScript>> SavedScript;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs before Save
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<Stylesheet>> SavingStylesheet;
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<IStylesheet>> SavingStylesheet;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs after Save
|
||||
/// </summary>
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<Stylesheet>> SavedStylesheet;
|
||||
public static event TypedEventHandler<IFileService, SaveEventArgs<IStylesheet>> SavedStylesheet;
|
||||
|
||||
/// <summary>
|
||||
/// Occurs before Save
|
||||
|
||||
@@ -1252,7 +1252,7 @@ namespace Umbraco.Core.Services.Implement
|
||||
/// <summary>
|
||||
/// Occurs after change.
|
||||
/// </summary>
|
||||
internal static event TypedEventHandler<IMediaService, TreeChange<IMedia>.EventArgs> TreeChanged;
|
||||
public static event TypedEventHandler<IMediaService, TreeChange<IMedia>.EventArgs> TreeChanged;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -28,14 +28,13 @@ namespace Umbraco.Core.Services.Implement
|
||||
private readonly IAuditRepository _auditRepository;
|
||||
|
||||
private readonly IMemberGroupService _memberGroupService;
|
||||
private readonly IMediaFileSystem _mediaFileSystem;
|
||||
|
||||
//only for unit tests!
|
||||
internal MembershipProviderBase MembershipProvider { get; set; }
|
||||
|
||||
#region Constructor
|
||||
|
||||
public MemberService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberGroupService memberGroupService, IMediaFileSystem mediaFileSystem,
|
||||
public MemberService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberGroupService memberGroupService,
|
||||
IMemberRepository memberRepository, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, IAuditRepository auditRepository)
|
||||
: base(provider, logger, eventMessagesFactory)
|
||||
{
|
||||
@@ -44,7 +43,6 @@ namespace Umbraco.Core.Services.Implement
|
||||
_memberGroupRepository = memberGroupRepository;
|
||||
_auditRepository = auditRepository;
|
||||
_memberGroupService = memberGroupService ?? throw new ArgumentNullException(nameof(memberGroupService));
|
||||
_mediaFileSystem = mediaFileSystem ?? throw new ArgumentNullException(nameof(mediaFileSystem));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -234,6 +234,7 @@
|
||||
<Compile Include="Models\IDataType.cs" />
|
||||
<Compile Include="Models\IDataValueEditor.cs" />
|
||||
<Compile Include="Models\Identity\IdentityMapDefinition.cs" />
|
||||
<Compile Include="Models\Identity\UserLoginInfoWrapper.cs" />
|
||||
<Compile Include="Models\IMedia.cs" />
|
||||
<Compile Include="Models\IMediaType.cs" />
|
||||
<Compile Include="Models\IMember.cs" />
|
||||
@@ -293,13 +294,10 @@
|
||||
<Compile Include="Serialization\JsonNetSerializer.cs" />
|
||||
<Compile Include="Services\Changes\ContentTypeChange.cs" />
|
||||
<Compile Include="Services\Changes\ContentTypeChangeExtensions.cs" />
|
||||
<Compile Include="Services\Changes\TreeChange.cs" />
|
||||
<Compile Include="Services\Changes\TreeChangeExtensions.cs" />
|
||||
<Compile Include="Services\IDataTypeService.cs" />
|
||||
<Compile Include="Services\IEntityService.cs" />
|
||||
<Compile Include="Services\IFileService.cs" />
|
||||
<Compile Include="Services\ILocalizationService.cs" />
|
||||
<Compile Include="Services\IMacroService.cs" />
|
||||
<Compile Include="Services\IMembershipMemberService.cs" />
|
||||
<Compile Include="Services\INotificationService.cs" />
|
||||
<Compile Include="Services\IPackagingService.cs" />
|
||||
<Compile Include="Services\LocalizedTextServiceExtensions.cs" />
|
||||
<Compile Include="Services\DateTypeServiceExtensions.cs" />
|
||||
@@ -470,8 +468,6 @@
|
||||
<Compile Include="Persistence\Mappers\AuditItemMapper.cs" />
|
||||
<Compile Include="Persistence\Mappers\ConsentMapper.cs" />
|
||||
<Compile Include="Persistence\Mappers\SimpleContentTypeMapper.cs" />
|
||||
<Compile Include="Persistence\Repositories\IAuditEntryRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IConsentRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\AuditEntryRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\ConsentRepository.cs" />
|
||||
<Compile Include="Persistence\SqlContextExtensions.cs" />
|
||||
@@ -583,7 +579,6 @@
|
||||
<Compile Include="Models\DictionaryItem.cs" />
|
||||
<Compile Include="Models\DictionaryItemExtensions.cs" />
|
||||
<Compile Include="Models\DictionaryTranslation.cs" />
|
||||
<Compile Include="Models\EntityContainer.cs" />
|
||||
<Compile Include="Models\EntityExtensions.cs" />
|
||||
<Compile Include="Models\GridValue.cs" />
|
||||
<Compile Include="Models\Identity\BackOfficeIdentityUser.cs" />
|
||||
@@ -737,7 +732,6 @@
|
||||
<Compile Include="Persistence\FaultHandling\Strategies\NetworkConnectivityErrorDetectionStrategy.cs" />
|
||||
<Compile Include="Persistence\FaultHandling\Strategies\SqlAzureTransientErrorDetectionStrategy.cs" />
|
||||
<Compile Include="Persistence\FaultHandling\ThrottlingCondition.cs" />
|
||||
<Compile Include="Persistence\IReadWriteQueryRepository.cs" />
|
||||
<Compile Include="Persistence\ISqlContext.cs" />
|
||||
<Compile Include="Persistence\IUmbracoDatabase.cs" />
|
||||
<Compile Include="Persistence\IUmbracoDatabaseFactory.cs" />
|
||||
@@ -891,14 +885,12 @@
|
||||
<Compile Include="Persistence\PocoDataDataReader.cs" />
|
||||
<Compile Include="Persistence\Querying\CachedExpression.cs" />
|
||||
<Compile Include="Persistence\Querying\ExpressionVisitorBase.cs" />
|
||||
<Compile Include="Persistence\Querying\IQuery.cs" />
|
||||
<Compile Include="Persistence\Querying\ModelToSqlExpressionVisitor.cs" />
|
||||
<Compile Include="Persistence\Querying\PocoToSqlExpressionVisitor.cs" />
|
||||
<Compile Include="Persistence\Querying\Query.cs" />
|
||||
<Compile Include="Persistence\Querying\QueryExtensions.cs" />
|
||||
<Compile Include="Persistence\Querying\SqlExpressionExtensions.cs" />
|
||||
<Compile Include="Persistence\Querying\SqlTranslator.cs" />
|
||||
<Compile Include="Persistence\Querying\StringPropertyMatchType.cs" />
|
||||
<Compile Include="Persistence\Querying\TextColumnType.cs" />
|
||||
<Compile Include="Persistence\Querying\ValuePropertyMatchType.cs" />
|
||||
<Compile Include="Persistence\RecordPersistenceType.cs" />
|
||||
@@ -916,46 +908,18 @@
|
||||
<Compile Include="Persistence\Repositories\Implement\EntityRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\ExternalLoginRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\FileRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IAuditRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDocumentBlueprintRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDocumentRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IContentTypeRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IContentTypeRepositoryBase.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDataTypeContainerRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDataTypeRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDictionaryRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDocumentTypeContainerRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IDomainRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IEntityContainerRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IEntityRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IExternalLoginRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\ILanguageRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMacroRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMediaRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMediaTypeContainerRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMediaTypeRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMemberGroupRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMemberRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IMemberTypeRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\INotificationsRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IPartialViewMacroRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IPartialViewRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IPublicAccessRepository.cs" />
|
||||
<Compile Include="Persistence\IQueryRepository.cs" />
|
||||
<Compile Include="Persistence\IReadRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IRedirectUrlRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IRelationRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IRelationTypeRepository.cs" />
|
||||
<Compile Include="Persistence\IRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IContentRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IScriptRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IServerRegistrationRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IStylesheetRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\ITagRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\ITemplateRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IUserGroupRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\IUserRepository.cs" />
|
||||
<Compile Include="Persistence\IWriteRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\LanguageRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\MacroRepository.cs" />
|
||||
<Compile Include="Persistence\Repositories\Implement\MediaRepository.cs" />
|
||||
@@ -1099,22 +1063,16 @@
|
||||
<Compile Include="Services\Implement\EntityXmlSerializer.cs" />
|
||||
<Compile Include="Services\Implement\ExternalLoginService.cs" />
|
||||
<Compile Include="Services\Implement\FileService.cs" />
|
||||
<Compile Include="Services\IAuditService.cs" />
|
||||
<Compile Include="Services\IContentService.cs" />
|
||||
<Compile Include="Services\IContentServiceBase.cs" />
|
||||
<Compile Include="Services\IContentTypeService.cs" />
|
||||
<Compile Include="Services\IContentTypeServiceBase.cs" />
|
||||
<Compile Include="Services\IdkMap.cs" />
|
||||
<Compile Include="Services\IExternalLoginService.cs" />
|
||||
<Compile Include="Services\IMediaService.cs" />
|
||||
<Compile Include="Services\IMediaTypeService.cs" />
|
||||
<Compile Include="Services\IMemberService.cs" />
|
||||
<Compile Include="Services\IMembershipMemberService.cs" />
|
||||
<Compile Include="Services\IMembershipRoleService.cs" />
|
||||
<Compile Include="Services\IMembershipUserService.cs" />
|
||||
<Compile Include="Services\IMemberTypeService.cs" />
|
||||
<Compile Include="Services\Implement\KeyValueService.cs" />
|
||||
<Compile Include="Services\INotificationService.cs" />
|
||||
<Compile Include="Services\IPublicAccessService.cs" />
|
||||
<Compile Include="Services\IUserService.cs" />
|
||||
<Compile Include="Services\Implement\LocalizationService.cs" />
|
||||
|
||||
@@ -60,8 +60,8 @@ namespace Umbraco.Tests.Cache
|
||||
new EventDefinition<IDataTypeService, SaveEventArgs<IDataType>>(null, serviceContext.DataTypeService, new SaveEventArgs<IDataType>(Enumerable.Empty<IDataType>())),
|
||||
new EventDefinition<IDataTypeService, DeleteEventArgs<IDataType>>(null, serviceContext.DataTypeService, new DeleteEventArgs<IDataType>(Enumerable.Empty<IDataType>())),
|
||||
|
||||
new EventDefinition<IFileService, SaveEventArgs<Stylesheet>>(null, serviceContext.FileService, new SaveEventArgs<Stylesheet>(Enumerable.Empty<Stylesheet>())),
|
||||
new EventDefinition<IFileService, DeleteEventArgs<Stylesheet>>(null, serviceContext.FileService, new DeleteEventArgs<Stylesheet>(Enumerable.Empty<Stylesheet>())),
|
||||
new EventDefinition<IFileService, SaveEventArgs<IStylesheet>>(null, serviceContext.FileService, new SaveEventArgs<IStylesheet>(Enumerable.Empty<IStylesheet>())),
|
||||
new EventDefinition<IFileService, DeleteEventArgs<IStylesheet>>(null, serviceContext.FileService, new DeleteEventArgs<IStylesheet>(Enumerable.Empty<IStylesheet>())),
|
||||
|
||||
new EventDefinition<IDomainService, SaveEventArgs<IDomain>>(null, serviceContext.DomainService, new SaveEventArgs<IDomain>(Enumerable.Empty<IDomain>())),
|
||||
new EventDefinition<IDomainService, DeleteEventArgs<IDomain>>(null, serviceContext.DomainService, new DeleteEventArgs<IDomain>(Enumerable.Empty<IDomain>())),
|
||||
|
||||
@@ -6,6 +6,7 @@ using NUnit.Framework;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Persistence.Repositories.Implement;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
@@ -33,6 +34,11 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
private IScriptRepository CreateRepository()
|
||||
{
|
||||
return new ScriptRepository(_fileSystems, new IOHelper());
|
||||
}
|
||||
|
||||
protected override void Compose()
|
||||
{
|
||||
base.Compose();
|
||||
@@ -48,7 +54,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
// Act
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Assert
|
||||
Assert.That(repository, Is.Not.Null);
|
||||
@@ -62,7 +68,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var script = new Script("test-add-script.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
|
||||
@@ -81,7 +87,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var script = new Script("test-updated-script.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
|
||||
@@ -107,7 +113,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var script = repository.Get("test-script.js");
|
||||
@@ -127,7 +133,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var exists = repository.Get("test-script.js");
|
||||
@@ -146,7 +152,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
var script = new Script("test-script1.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
|
||||
repository.Save(script);
|
||||
@@ -174,7 +180,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
var script = new Script("test-script1.js") { Content = "/// <reference name=\"MicrosoftAjax.js\"/>" };
|
||||
repository.Save(script);
|
||||
@@ -202,7 +208,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var exists = repository.Exists("test-script.js");
|
||||
@@ -221,9 +227,9 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
var script = new Script("test-move-script.js") { Content = content };
|
||||
IScript script = new Script("test-move-script.js") { Content = content };
|
||||
repository.Save(script);
|
||||
|
||||
|
||||
@@ -254,9 +260,9 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = TestObjects.GetScopeProvider(Logger);
|
||||
using (var scope = ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new ScriptRepository(_fileSystems, Mock.Of<IContentSection>());
|
||||
var repository = CreateRepository();
|
||||
|
||||
var script = new Script("test-path-1.js") { Content = "// script" };
|
||||
IScript script = new Script("test-path-1.js") { Content = "// script" };
|
||||
repository.Save(script);
|
||||
|
||||
Assert.IsTrue(_fileSystem.FileExists("test-path-1.js"));
|
||||
|
||||
@@ -6,6 +6,7 @@ using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Persistence.Repositories.Implement;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
@@ -30,6 +31,11 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
_fileSystem.AddFile("styles.css", stream);
|
||||
}
|
||||
|
||||
private IStylesheetRepository CreateRepository()
|
||||
{
|
||||
return new StylesheetRepository(_fileSystems, new IOHelper());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Instantiate_Repository()
|
||||
{
|
||||
@@ -37,7 +43,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
// Act
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
|
||||
// Assert
|
||||
@@ -51,7 +57,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = new Stylesheet("test-add.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
@@ -69,7 +75,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = new Stylesheet("test-update.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
@@ -96,10 +102,10 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = new Stylesheet("test-update.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
IStylesheet stylesheet = new Stylesheet("test-update.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
repository.Save(stylesheet);
|
||||
|
||||
|
||||
@@ -123,7 +129,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = new Stylesheet("test-update.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
@@ -142,7 +148,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = new Stylesheet("test-delete.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
@@ -163,7 +169,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var stylesheet = repository.Get("styles.css");
|
||||
@@ -182,7 +188,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
var stylesheet = new Stylesheet("styles-v2.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
repository.Save(stylesheet);
|
||||
@@ -205,7 +211,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
var stylesheet = new Stylesheet("styles-v2.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
repository.Save(stylesheet);
|
||||
@@ -228,7 +234,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
// Act
|
||||
var exists = repository.Exists("styles.css");
|
||||
@@ -245,9 +251,9 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
using (ScopeProvider.CreateScope())
|
||||
{
|
||||
var repository = new StylesheetRepository(_fileSystems);
|
||||
var repository = CreateRepository();
|
||||
|
||||
var stylesheet = new Stylesheet("test-path-1.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
IStylesheet stylesheet = new Stylesheet("test-path-1.css") { Content = "body { color:#000; } .bold {font-weight:bold;}" };
|
||||
repository.Save(stylesheet);
|
||||
|
||||
Assert.IsTrue(_fileSystem.FileExists("test-path-1.css"));
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace Umbraco.Tests.Runtimes
|
||||
// create the register and the composition
|
||||
var register = RegisterFactory.Create();
|
||||
var composition = new Composition(register, typeLoader, profilingLogger, runtimeState);
|
||||
composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState);
|
||||
composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, new IOHelper());
|
||||
|
||||
// create the core runtime and have it compose itself
|
||||
var coreRuntime = new CoreRuntime();
|
||||
@@ -258,7 +258,7 @@ namespace Umbraco.Tests.Runtimes
|
||||
// create the register and the composition
|
||||
var register = RegisterFactory.Create();
|
||||
var composition = new Composition(register, typeLoader, profilingLogger, runtimeState);
|
||||
composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState);
|
||||
composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, new IOHelper());
|
||||
|
||||
// create the core runtime and have it compose itself
|
||||
var coreRuntime = new CoreRuntime();
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace Umbraco.Tests.TestHelpers
|
||||
var notificationService = GetLazyService<INotificationService>(factory, c => new NotificationService(scopeProvider, userService.Value, contentService.Value, localizationService.Value, logger, GetRepo<INotificationsRepository>(c), globalSettings, umbracoSettings.Content));
|
||||
var serverRegistrationService = GetLazyService<IServerRegistrationService>(factory, c => new ServerRegistrationService(scopeProvider, logger, eventMessagesFactory, GetRepo<IServerRegistrationRepository>(c)));
|
||||
var memberGroupService = GetLazyService<IMemberGroupService>(factory, c => new MemberGroupService(scopeProvider, logger, eventMessagesFactory, GetRepo<IMemberGroupRepository>(c)));
|
||||
var memberService = GetLazyService<IMemberService>(factory, c => new MemberService(scopeProvider, logger, eventMessagesFactory, memberGroupService.Value, mediaFileSystem, GetRepo<IMemberRepository>(c), GetRepo<IMemberTypeRepository>(c), GetRepo<IMemberGroupRepository>(c), GetRepo<IAuditRepository>(c)));
|
||||
var memberService = GetLazyService<IMemberService>(factory, c => new MemberService(scopeProvider, logger, eventMessagesFactory, memberGroupService.Value, GetRepo<IMemberRepository>(c), GetRepo<IMemberTypeRepository>(c), GetRepo<IMemberGroupRepository>(c), GetRepo<IAuditRepository>(c)));
|
||||
var mediaService = GetLazyService<IMediaService>(factory, c => new MediaService(scopeProvider, mediaFileSystem, logger, eventMessagesFactory, GetRepo<IMediaRepository>(c), GetRepo<IAuditRepository>(c), GetRepo<IMediaTypeRepository>(c), GetRepo<IEntityRepository>(c)));
|
||||
var contentTypeService = GetLazyService<IContentTypeService>(factory, c => new ContentTypeService(scopeProvider, logger, eventMessagesFactory, contentService.Value, GetRepo<IContentTypeRepository>(c), GetRepo<IAuditRepository>(c), GetRepo<IDocumentTypeContainerRepository>(c), GetRepo<IEntityRepository>(c)));
|
||||
var mediaTypeService = GetLazyService<IMediaTypeService>(factory, c => new MediaTypeService(scopeProvider, logger, eventMessagesFactory, mediaService.Value, GetRepo<IMediaTypeRepository>(c), GetRepo<IAuditRepository>(c), GetRepo<IMediaTypeContainerRepository>(c), GetRepo<IEntityRepository>(c)));
|
||||
|
||||
@@ -99,6 +99,8 @@ namespace Umbraco.Tests.Testing
|
||||
|
||||
protected ILogger Logger => Factory.GetInstance<ILogger>();
|
||||
|
||||
protected IIOHelper IOHelper { get; private set; }
|
||||
|
||||
protected IProfiler Profiler => Factory.GetInstance<IProfiler>();
|
||||
|
||||
protected virtual IProfilingLogger ProfilingLogger => Factory.GetInstance<IProfilingLogger>();
|
||||
@@ -129,6 +131,7 @@ namespace Umbraco.Tests.Testing
|
||||
|
||||
var (logger, profiler) = GetLoggers(Options.Logger);
|
||||
var proflogger = new ProfilingLogger(logger, profiler);
|
||||
IOHelper = new IOHelper();
|
||||
var appCaches = GetAppCaches();
|
||||
var globalSettings = SettingsForTests.GetDefaultGlobalSettings();
|
||||
var typeLoader = GetTypeLoader(appCaches.RuntimeCache, globalSettings, proflogger, Options.TypeLoader);
|
||||
@@ -137,6 +140,7 @@ namespace Umbraco.Tests.Testing
|
||||
|
||||
Composition = new Composition(register, typeLoader, proflogger, ComponentTests.MockRuntimeState(RuntimeLevel.Run));
|
||||
|
||||
Composition.RegisterUnique(IOHelper);
|
||||
Composition.RegisterUnique(typeLoader);
|
||||
Composition.RegisterUnique(logger);
|
||||
Composition.RegisterUnique(profiler);
|
||||
|
||||
@@ -380,8 +380,8 @@ namespace Umbraco.Web.Cache
|
||||
}
|
||||
|
||||
// TODO: our weird events handling wants this for now
|
||||
private void FileService_DeletedStylesheet(IFileService sender, DeleteEventArgs<Stylesheet> e) { }
|
||||
private void FileService_SavedStylesheet(IFileService sender, SaveEventArgs<Stylesheet> e) { }
|
||||
private void FileService_DeletedStylesheet(IFileService sender, DeleteEventArgs<IStylesheet> e) { }
|
||||
private void FileService_SavedStylesheet(IFileService sender, SaveEventArgs<IStylesheet> e) { }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace Umbraco.Web.Editors
|
||||
var script = Services.FileService.GetScriptByName(virtualPath);
|
||||
if (script != null)
|
||||
{
|
||||
var display = Mapper.Map<Script, CodeFileDisplay>(script);
|
||||
var display = Mapper.Map<IScript, CodeFileDisplay>(script);
|
||||
display.FileType = Core.Constants.Trees.Scripts;
|
||||
display.Path = Url.GetTreePathFromFilePath(script.Path);
|
||||
display.Id = System.Web.HttpUtility.UrlEncode(script.Path);
|
||||
@@ -190,7 +190,7 @@ namespace Umbraco.Web.Editors
|
||||
var stylesheet = Services.FileService.GetStylesheetByName(virtualPath);
|
||||
if (stylesheet != null)
|
||||
{
|
||||
var display = Mapper.Map<Stylesheet, CodeFileDisplay>(stylesheet);
|
||||
var display = Mapper.Map<IStylesheet, CodeFileDisplay>(stylesheet);
|
||||
display.FileType = Core.Constants.Trees.Stylesheets;
|
||||
display.Path = Url.GetTreePathFromFilePath(stylesheet.Path);
|
||||
display.Id = System.Web.HttpUtility.UrlEncode(stylesheet.Path);
|
||||
@@ -503,7 +503,7 @@ namespace Umbraco.Web.Editors
|
||||
/// It's important to note that Scripts are DIFFERENT from cshtml files since scripts use IFileSystem and cshtml files
|
||||
/// use a normal file system because they must exist on a real file system for ASP.NET to work.
|
||||
/// </remarks>
|
||||
private Script CreateOrUpdateScript(CodeFileDisplay display)
|
||||
private IScript CreateOrUpdateScript(CodeFileDisplay display)
|
||||
{
|
||||
return CreateOrUpdateFile(display, ".js", Current.FileSystems.ScriptsFileSystem,
|
||||
name => Services.FileService.GetScriptByName(name),
|
||||
@@ -511,7 +511,7 @@ namespace Umbraco.Web.Editors
|
||||
name => new Script(name));
|
||||
}
|
||||
|
||||
private Stylesheet CreateOrUpdateStylesheet(CodeFileDisplay display)
|
||||
private IStylesheet CreateOrUpdateStylesheet(CodeFileDisplay display)
|
||||
{
|
||||
return CreateOrUpdateFile(display, ".css", Current.FileSystems.StylesheetsFileSystem,
|
||||
name => Services.FileService.GetStylesheetByName(name),
|
||||
@@ -521,7 +521,7 @@ namespace Umbraco.Web.Editors
|
||||
}
|
||||
|
||||
private T CreateOrUpdateFile<T>(CodeFileDisplay display, string extension, IFileSystem fileSystem,
|
||||
Func<string, T> getFileByName, Action<T, int> saveFile, Func<string, T> createFile) where T : Core.Models.File
|
||||
Func<string, T> getFileByName, Action<T, int> saveFile, Func<string, T> createFile) where T : Core.Models.IFile
|
||||
{
|
||||
//must always end with the correct extension
|
||||
display.Name = EnsureCorrectFileExtension(display.Name, extension);
|
||||
|
||||
@@ -9,17 +9,17 @@ namespace Umbraco.Web.Models.Mapping
|
||||
{
|
||||
public void DefineMaps(UmbracoMapper mapper)
|
||||
{
|
||||
mapper.Define<Stylesheet, EntityBasic>((source, context) => new EntityBasic(), Map);
|
||||
mapper.Define<IStylesheet, EntityBasic>((source, context) => new EntityBasic(), Map);
|
||||
mapper.Define<IPartialView, CodeFileDisplay>((source, context) => new CodeFileDisplay(), Map);
|
||||
mapper.Define<Script, CodeFileDisplay>((source, context) => new CodeFileDisplay(), Map);
|
||||
mapper.Define<Stylesheet, CodeFileDisplay>((source, context) => new CodeFileDisplay(), Map);
|
||||
mapper.Define<IScript, CodeFileDisplay>((source, context) => new CodeFileDisplay(), Map);
|
||||
mapper.Define<IStylesheet, CodeFileDisplay>((source, context) => new CodeFileDisplay(), Map);
|
||||
mapper.Define<CodeFileDisplay, IPartialView>(Map);
|
||||
mapper.Define<CodeFileDisplay, Script>(Map);
|
||||
mapper.Define<CodeFileDisplay, IScript>(Map);
|
||||
|
||||
}
|
||||
|
||||
// Umbraco.Code.MapAll -Trashed -Udi -Icon
|
||||
private static void Map(Stylesheet source, EntityBasic target, MapperContext context)
|
||||
private static void Map(IStylesheet source, EntityBasic target, MapperContext context)
|
||||
{
|
||||
target.Alias = source.Alias;
|
||||
target.Id = source.Id;
|
||||
@@ -39,7 +39,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
}
|
||||
|
||||
// Umbraco.Code.MapAll -FileType -Notifications -Path -Snippet
|
||||
private static void Map(Script source, CodeFileDisplay target, MapperContext context)
|
||||
private static void Map(IScript source, CodeFileDisplay target, MapperContext context)
|
||||
{
|
||||
target.Content = source.Content;
|
||||
target.Id = source.Id.ToString();
|
||||
@@ -48,7 +48,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
}
|
||||
|
||||
// Umbraco.Code.MapAll -FileType -Notifications -Path -Snippet
|
||||
private static void Map(Stylesheet source, CodeFileDisplay target, MapperContext context)
|
||||
private static void Map(IStylesheet source, CodeFileDisplay target, MapperContext context)
|
||||
{
|
||||
target.Content = source.Content;
|
||||
target.Id = source.Id.ToString();
|
||||
@@ -66,7 +66,7 @@ namespace Umbraco.Web.Models.Mapping
|
||||
|
||||
// Umbraco.Code.MapAll -CreateDate -DeleteDate -UpdateDate -GetFileContent
|
||||
// Umbraco.Code.MapAll -Id -Key -Alias -Name -OriginalPath -Path
|
||||
private static void Map(CodeFileDisplay source, Script target, MapperContext context)
|
||||
private static void Map(CodeFileDisplay source, IScript target, MapperContext context)
|
||||
{
|
||||
target.Content = source.Content;
|
||||
target.VirtualPath = source.VirtualPath;
|
||||
|
||||
Reference in New Issue
Block a user