2012-12-10 13:49:20 -01:00
|
|
|
using System;
|
2012-11-07 13:56:52 -01:00
|
|
|
using System.Collections.Generic;
|
2016-01-06 19:27:15 +01:00
|
|
|
using System.ComponentModel;
|
2014-08-18 17:47:55 +02:00
|
|
|
using System.IO;
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
using System.Linq;
|
2014-08-19 12:51:07 +02:00
|
|
|
using System.Runtime.Remoting.Messaging;
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
using System.Text.RegularExpressions;
|
2014-08-18 17:47:55 +02:00
|
|
|
using System.Web;
|
2012-12-10 13:49:20 -01:00
|
|
|
using Umbraco.Core.Auditing;
|
2015-01-14 12:09:30 +11:00
|
|
|
using Umbraco.Core.Configuration;
|
|
|
|
|
using Umbraco.Core.Configuration.UmbracoSettings;
|
2012-12-15 10:43:03 +05:00
|
|
|
using Umbraco.Core.Events;
|
2014-08-18 17:47:55 +02:00
|
|
|
using Umbraco.Core.IO;
|
|
|
|
|
using Umbraco.Core.Logging;
|
2012-10-24 11:29:51 -02:00
|
|
|
using Umbraco.Core.Models;
|
|
|
|
|
using Umbraco.Core.Persistence;
|
2014-11-20 19:51:42 +11:00
|
|
|
using Umbraco.Core.Persistence.Querying;
|
2014-01-09 18:08:13 +11:00
|
|
|
using Umbraco.Core.Persistence.Repositories;
|
2012-10-24 11:29:51 -02:00
|
|
|
using Umbraco.Core.Persistence.UnitOfWork;
|
|
|
|
|
|
2012-11-12 07:40:11 -01:00
|
|
|
namespace Umbraco.Core.Services
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-10-30 09:25:28 -01:00
|
|
|
/// <summary>
|
|
|
|
|
/// Represents the File Service, which is an easy access to operations involving <see cref="IFile"/> objects like Scripts, Stylesheets and Templates
|
|
|
|
|
/// </summary>
|
2012-10-24 11:29:51 -02:00
|
|
|
public class FileService : IFileService
|
|
|
|
|
{
|
2013-12-16 18:10:44 +11:00
|
|
|
private readonly RepositoryFactory _repositoryFactory;
|
2012-12-14 12:59:47 -01:00
|
|
|
private readonly IUnitOfWorkProvider _fileUowProvider;
|
|
|
|
|
private readonly IDatabaseUnitOfWorkProvider _dataUowProvider;
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
|
|
|
|
private const string PartialViewHeader = "@inherits Umbraco.Web.Mvc.UmbracoTemplatePage";
|
|
|
|
|
private const string PartialViewMacroHeader = "@inherits Umbraco.Web.Macros.PartialViewMacroPage";
|
2012-10-24 11:29:51 -02:00
|
|
|
|
2015-01-09 18:53:08 +11:00
|
|
|
[Obsolete("Use the constructors that specify all dependencies instead")]
|
2012-12-14 13:27:10 -01:00
|
|
|
public FileService()
|
|
|
|
|
: this(new RepositoryFactory())
|
2013-12-16 18:10:44 +11:00
|
|
|
{ }
|
2012-12-14 13:27:10 -01:00
|
|
|
|
2015-01-09 18:53:08 +11:00
|
|
|
[Obsolete("Use the constructors that specify all dependencies instead")]
|
2012-12-14 08:22:42 +05:00
|
|
|
public FileService(RepositoryFactory repositoryFactory)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
: this(new FileUnitOfWorkProvider(), new PetaPocoUnitOfWorkProvider(), repositoryFactory)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
public FileService(IUnitOfWorkProvider fileProvider, IDatabaseUnitOfWorkProvider dataProvider, RepositoryFactory repositoryFactory)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2015-01-14 12:09:30 +11:00
|
|
|
if (fileProvider == null) throw new ArgumentNullException("fileProvider");
|
|
|
|
|
if (dataProvider == null) throw new ArgumentNullException("dataProvider");
|
|
|
|
|
if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory");
|
2013-12-16 18:10:44 +11:00
|
|
|
_repositoryFactory = repositoryFactory;
|
|
|
|
|
_fileUowProvider = fileProvider;
|
|
|
|
|
_dataUowProvider = dataProvider;
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
|
|
|
|
#region Stylesheets
|
|
|
|
|
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <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)
|
|
|
|
|
{
|
2013-10-29 09:24:05 -04:00
|
|
|
using (var repository = _repositoryFactory.CreateStylesheetRepository(_fileUowProvider.GetUnitOfWork(), _dataUowProvider.GetUnitOfWork()))
|
2012-12-14 12:59:47 -01:00
|
|
|
{
|
|
|
|
|
return repository.GetAll(names);
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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)
|
|
|
|
|
{
|
2013-10-29 09:24:05 -04:00
|
|
|
using (var repository = _repositoryFactory.CreateStylesheetRepository(_fileUowProvider.GetUnitOfWork(), _dataUowProvider.GetUnitOfWork()))
|
2012-12-14 12:59:47 -01:00
|
|
|
{
|
|
|
|
|
return repository.Get(name);
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Saves a <see cref="Stylesheet"/>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="stylesheet"><see cref="Stylesheet"/> to save</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
2013-01-25 08:58:21 -01:00
|
|
|
public void SaveStylesheet(Stylesheet stylesheet, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2013-12-16 18:10:44 +11:00
|
|
|
if (SavingStylesheet.IsRaisedEventCancelled(new SaveEventArgs<Stylesheet>(stylesheet), this))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
2013-10-29 09:24:05 -04:00
|
|
|
using (var repository = _repositoryFactory.CreateStylesheetRepository(uow, _dataUowProvider.GetUnitOfWork()))
|
2013-12-16 18:10:44 +11:00
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(stylesheet);
|
|
|
|
|
uow.Commit();
|
2012-12-15 21:04:17 +05:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
SavedStylesheet.RaiseEvent(new SaveEventArgs<Stylesheet>(stylesheet, false), this);
|
|
|
|
|
}
|
2012-12-15 21:04:17 +05:00
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save Stylesheet performed by user"), userId, -1);
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Deletes a stylesheet by its name
|
|
|
|
|
/// </summary>
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
/// <param name="path">Name incl. extension of the Stylesheet to delete</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
public void DeleteStylesheet(string path, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
2013-10-29 09:24:05 -04:00
|
|
|
using (var repository = _repositoryFactory.CreateStylesheetRepository(uow, _dataUowProvider.GetUnitOfWork()))
|
2012-12-14 12:59:47 -01:00
|
|
|
{
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
var stylesheet = repository.Get(path);
|
|
|
|
|
if (stylesheet == null) return;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
if (DeletingStylesheet.IsRaisedEventCancelled(new DeleteEventArgs<Stylesheet>(stylesheet), this))
|
|
|
|
|
return;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
repository.Delete(stylesheet);
|
|
|
|
|
uow.Commit();
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
DeletedStylesheet.RaiseEvent(new DeleteEventArgs<Stylesheet>(stylesheet, false), this);
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Delete, string.Format("Delete Stylesheet performed by user"), userId, -1);
|
2012-12-10 13:49:20 -01:00
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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)
|
|
|
|
|
{
|
2015-01-14 12:09:30 +11:00
|
|
|
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateStylesheetRepository(uow, _dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.ValidateStylesheet(stylesheet);
|
|
|
|
|
}
|
2015-09-07 12:38:46 +02:00
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
#endregion
|
2012-10-24 11:29:51 -02:00
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
#region Scripts
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <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)
|
|
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(_fileUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetAll(names);
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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)
|
|
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(_fileUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.Get(name);
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Saves a <see cref="Script"/>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="script"><see cref="Script"/> to save</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
2013-01-25 08:58:21 -01:00
|
|
|
public void SaveScript(Script script, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2013-12-16 18:10:44 +11:00
|
|
|
if (SavingScript.IsRaisedEventCancelled(new SaveEventArgs<Script>(script), this))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(script);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
|
|
|
|
|
SavedScript.RaiseEvent(new SaveEventArgs<Script>(script, false), this);
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save Script performed by user"), userId, -1);
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Deletes a script by its name
|
|
|
|
|
/// </summary>
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
/// <param name="path">Name incl. extension of the Script to delete</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
public void DeleteScript(string path, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(uow))
|
|
|
|
|
{
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
var script = repository.Get(path);
|
|
|
|
|
if (script == null) return;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
if (DeletingScript.IsRaisedEventCancelled(new DeleteEventArgs<Script>(script), this))
|
|
|
|
|
return; ;
|
|
|
|
|
|
|
|
|
|
repository.Delete(script);
|
|
|
|
|
uow.Commit();
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
DeletedScript.RaiseEvent(new DeleteEventArgs<Script>(script, false), this);
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Delete, string.Format("Delete Script performed by user"), userId, -1);
|
2012-12-10 13:49:20 -01:00
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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)
|
|
|
|
|
{
|
2015-01-14 12:09:30 +11:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
return repository.ValidateScript(script);
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
2014-01-09 18:08:13 +11:00
|
|
|
public void CreateScriptFolder(string folderPath)
|
|
|
|
|
{
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
((ScriptRepository)repository).AddFolder(folderPath);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void DeleteScriptFolder(string folderPath)
|
|
|
|
|
{
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateScriptRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
((ScriptRepository)repository).DeleteFolder(folderPath);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Templates
|
2014-11-25 18:48:19 +11:00
|
|
|
|
|
|
|
|
public ITemplate CreateTemplateWithIdentity(string name, string content, ITemplate masterTemplate = null, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
var template = new Template(name, name)
|
|
|
|
|
{
|
|
|
|
|
Content = content
|
|
|
|
|
};
|
|
|
|
|
if (masterTemplate != null)
|
|
|
|
|
{
|
|
|
|
|
template.SetMasterTemplate(masterTemplate);
|
|
|
|
|
}
|
|
|
|
|
SaveTemplate(template, userId);
|
|
|
|
|
return template;
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <summary>
|
2012-11-11 12:20:14 -01:00
|
|
|
/// Gets a list of all <see cref="ITemplate"/> objects
|
2012-10-24 11:29:51 -02:00
|
|
|
/// </summary>
|
2012-11-11 12:20:14 -01:00
|
|
|
/// <returns>An enumerable list of <see cref="ITemplate"/> objects</returns>
|
|
|
|
|
public IEnumerable<ITemplate> GetTemplates(params string[] aliases)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
2014-11-25 18:02:17 +11:00
|
|
|
return repository.GetAll(aliases).OrderBy(x => x.Name);
|
2012-12-14 12:59:47 -01:00
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
2014-11-20 19:51:42 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a list of all <see cref="ITemplate"/> objects
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>An enumerable list of <see cref="ITemplate"/> objects</returns>
|
|
|
|
|
public IEnumerable<ITemplate> GetTemplates(int masterTemplateId)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
2014-11-25 18:02:17 +11:00
|
|
|
return repository.GetChildren(masterTemplateId).OrderBy(x => x.Name);
|
2014-11-20 19:51:42 +11:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <summary>
|
2015-11-03 14:07:05 +01:00
|
|
|
/// Gets a <see cref="ITemplate"/> object by its alias.
|
2012-10-24 11:29:51 -02:00
|
|
|
/// </summary>
|
2015-11-03 14:07:05 +01:00
|
|
|
/// <param name="alias">The alias of the template.</param>
|
|
|
|
|
/// <returns>The <see cref="ITemplate"/> object matching the alias, or null.</returns>
|
2012-12-12 15:17:48 -01:00
|
|
|
public ITemplate GetTemplate(string alias)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.Get(alias);
|
2012-12-17 11:16:09 -01:00
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
2012-12-12 15:17:48 -01:00
|
|
|
/// <summary>
|
2015-11-03 14:07:05 +01:00
|
|
|
/// Gets a <see cref="ITemplate"/> object by its identifier.
|
2012-12-12 15:17:48 -01:00
|
|
|
/// </summary>
|
2015-11-03 14:07:05 +01:00
|
|
|
/// <param name="id">The identifer of the template.</param>
|
|
|
|
|
/// <returns>The <see cref="ITemplate"/> object matching the identifier, or null.</returns>
|
2012-12-12 15:17:48 -01:00
|
|
|
public ITemplate GetTemplate(int id)
|
|
|
|
|
{
|
2012-12-17 11:16:09 -01:00
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.Get(id);
|
2012-12-14 12:59:47 -01:00
|
|
|
}
|
2012-12-12 15:17:48 -01:00
|
|
|
}
|
|
|
|
|
|
2015-11-03 14:07:05 +01:00
|
|
|
/// <summary>
|
|
|
|
|
/// Gets a <see cref="ITemplate"/> object by its guid identifier.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id">The guid identifier of the template.</param>
|
|
|
|
|
/// <returns>The <see cref="ITemplate"/> object matching the identifier, or null.</returns>
|
|
|
|
|
public ITemplate GetTemplate(Guid id)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
var query = Query<ITemplate>.Builder.Where(x => x.Key == id);
|
|
|
|
|
return repository.GetByQuery(query).SingleOrDefault();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-05 11:50:20 +02:00
|
|
|
public IEnumerable<ITemplate> GetTemplateDescendants(string alias)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetDescendants(alias);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the template descendants
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="masterTemplateId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public IEnumerable<ITemplate> GetTemplateDescendants(int masterTemplateId)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetDescendants(masterTemplateId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the template children
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="alias"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public IEnumerable<ITemplate> GetTemplateChildren(string alias)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetChildren(alias);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the template children
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="masterTemplateId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public IEnumerable<ITemplate> GetTemplateChildren(int masterTemplateId)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetChildren(masterTemplateId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Returns a template as a template node which can be traversed (parent, children)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="alias"></param>
|
|
|
|
|
/// <returns></returns>
|
2016-01-06 19:27:15 +01:00
|
|
|
[Obsolete("Use GetDescendants instead")]
|
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
2013-12-16 18:10:44 +11:00
|
|
|
public TemplateNode GetTemplateNode(string alias)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.GetTemplateNode(alias);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Given a template node in a tree, this will find the template node with the given alias if it is found in the hierarchy, otherwise null
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="anyNode"></param>
|
|
|
|
|
/// <param name="alias"></param>
|
|
|
|
|
/// <returns></returns>
|
2016-01-06 19:27:15 +01:00
|
|
|
[Obsolete("Use GetDescendants instead")]
|
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
2013-12-16 18:10:44 +11:00
|
|
|
public TemplateNode FindTemplateInTree(TemplateNode anyNode, string alias)
|
|
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(_dataUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.FindTemplateInTree(anyNode, alias);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <summary>
|
|
|
|
|
/// Saves a <see cref="Template"/>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="template"><see cref="Template"/> to save</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
2013-01-25 08:58:21 -01:00
|
|
|
public void SaveTemplate(ITemplate template, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2013-12-16 18:10:44 +11:00
|
|
|
if (SavingTemplate.IsRaisedEventCancelled(new SaveEventArgs<ITemplate>(template), this))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(template);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
|
|
|
|
|
SavedTemplate.RaiseEvent(new SaveEventArgs<ITemplate>(template, false), this);
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save Template performed by user"), userId, template.Id);
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
2013-03-20 20:31:44 -01:00
|
|
|
/// <summary>
|
|
|
|
|
/// Saves a collection of <see cref="Template"/> objects
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="templates">List of <see cref="Template"/> to save</param>
|
|
|
|
|
/// <param name="userId">Optional id of the user</param>
|
|
|
|
|
public void SaveTemplate(IEnumerable<ITemplate> templates, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
if (SavingTemplate.IsRaisedEventCancelled(new SaveEventArgs<ITemplate>(templates), this))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
foreach (var template in templates)
|
|
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(template);
|
|
|
|
|
}
|
|
|
|
|
uow.Commit();
|
|
|
|
|
|
|
|
|
|
SavedTemplate.RaiseEvent(new SaveEventArgs<ITemplate>(templates, false), this);
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save Template performed by user"), userId, -1);
|
2013-03-20 20:31:44 -01:00
|
|
|
}
|
|
|
|
|
|
2015-01-14 12:09:30 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// This checks what the default rendering engine is set in config but then also ensures that there isn't already
|
|
|
|
|
/// a template that exists in the opposite rendering engine's template folder, then returns the appropriate
|
|
|
|
|
/// rendering engine to use.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// The reason this is required is because for example, if you have a master page file already existing under ~/masterpages/Blah.aspx
|
|
|
|
|
/// and then you go to create a template in the tree called Blah and the default rendering engine is MVC, it will create a Blah.cshtml
|
|
|
|
|
/// empty template in ~/Views. This means every page that is using Blah will go to MVC and render an empty page.
|
|
|
|
|
/// This is mostly related to installing packages since packages install file templates to the file system and then create the
|
|
|
|
|
/// templates in business logic. Without this, it could cause the wrong rendering engine to be used for a package.
|
|
|
|
|
/// </remarks>
|
|
|
|
|
public RenderingEngine DetermineTemplateRenderingEngine(ITemplate template)
|
|
|
|
|
{
|
|
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
return repository.DetermineTemplateRenderingEngine(template);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <summary>
|
|
|
|
|
/// Deletes a template by its alias
|
|
|
|
|
/// </summary>
|
2012-11-11 12:20:14 -01:00
|
|
|
/// <param name="alias">Alias of the <see cref="ITemplate"/> to delete</param>
|
2012-12-10 13:49:20 -01:00
|
|
|
/// <param name="userId"></param>
|
2013-01-25 08:58:21 -01:00
|
|
|
public void DeleteTemplate(string alias, int userId = 0)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2012-12-14 12:59:47 -01:00
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
var template = repository.Get(alias);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
if (template == null) return;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
if (DeletingTemplate.IsRaisedEventCancelled(new DeleteEventArgs<ITemplate>(template), this))
|
|
|
|
|
return;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
repository.Delete(template);
|
|
|
|
|
uow.Commit();
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
DeletedTemplate.RaiseEvent(new DeleteEventArgs<ITemplate>(template, false), this);
|
2012-12-10 13:49:20 -01:00
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Delete, string.Format("Delete Template performed by user"), userId, template.Id);
|
2012-12-10 13:49:20 -01:00
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2012-11-11 12:20:14 -01:00
|
|
|
/// Validates a <see cref="ITemplate"/>
|
2012-10-24 11:29:51 -02:00
|
|
|
/// </summary>
|
2012-11-11 12:20:14 -01:00
|
|
|
/// <param name="template"><see cref="ITemplate"/> to validate</param>
|
2012-10-24 11:29:51 -02:00
|
|
|
/// <returns>True if Script is valid, otherwise false</returns>
|
2012-11-11 12:20:14 -01:00
|
|
|
public bool ValidateTemplate(ITemplate template)
|
2012-10-24 11:29:51 -02:00
|
|
|
{
|
2015-01-14 12:09:30 +11:00
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreateTemplateRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
return repository.ValidateTemplate(template);
|
|
|
|
|
}
|
2015-09-07 12:38:46 +02:00
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Partial Views
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public IEnumerable<string> GetPartialViewSnippetNames(params string[] filterNames)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
var snippetPath = IOHelper.MapPath(string.Format("{0}/PartialViewMacros/Templates/", SystemDirectories.Umbraco));
|
2014-11-19 11:09:45 +11:00
|
|
|
var files = Directory.GetFiles(snippetPath, "*.cshtml")
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
.Select(Path.GetFileNameWithoutExtension)
|
|
|
|
|
.Except(filterNames, StringComparer.InvariantCultureIgnoreCase)
|
|
|
|
|
.ToArray();
|
2014-11-19 11:09:45 +11:00
|
|
|
|
|
|
|
|
//Ensure the ones that are called 'Empty' are at the top
|
|
|
|
|
var empty = files.Where(x => Path.GetFileName(x).InvariantStartsWith("Empty"))
|
|
|
|
|
.OrderBy(x => x.Length)
|
|
|
|
|
.ToArray();
|
|
|
|
|
|
|
|
|
|
return empty.Union(files.Except(empty));
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public void DeletePartialViewFolder(string folderPath)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
((PartialViewRepository)repository).DeleteFolder(folderPath);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
}
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
2012-11-11 06:53:02 -01:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public void DeletePartialViewMacroFolder(string folderPath)
|
2014-08-18 17:47:55 +02:00
|
|
|
{
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
2015-01-09 18:39:44 +11:00
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewMacroRepository(uow))
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
((PartialViewMacroRepository)repository).DeleteFolder(folderPath);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public IPartialView GetPartialView(string path)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewRepository(_fileUowProvider.GetUnitOfWork()))
|
|
|
|
|
{
|
|
|
|
|
return repository.Get(path);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public IPartialView GetPartialViewMacro(string path)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewMacroRepository(_fileUowProvider.GetUnitOfWork()))
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
return repository.Get(path);
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public Attempt<IPartialView> CreatePartialView(IPartialView partialView, string snippetName = null, int userId = 0)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
return CreatePartialViewMacro(partialView, PartialViewType.PartialView, snippetName, userId);
|
|
|
|
|
}
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public Attempt<IPartialView> CreatePartialViewMacro(IPartialView partialView, string snippetName = null, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
return CreatePartialViewMacro(partialView, PartialViewType.PartialViewMacro, snippetName, userId);
|
|
|
|
|
}
|
2014-08-19 12:51:07 +02:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
private Attempt<IPartialView> CreatePartialViewMacro(IPartialView partialView, PartialViewType partialViewType, string snippetName = null, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
if (CreatingPartialView.IsRaisedEventCancelled(new NewEventArgs<IPartialView>(partialView, true, partialView.Alias, -1), this))
|
|
|
|
|
return Attempt<IPartialView>.Fail();
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-09-07 12:38:46 +02:00
|
|
|
string partialViewHeader;
|
2015-01-09 18:39:44 +11:00
|
|
|
switch (partialViewType)
|
2014-08-18 17:47:55 +02:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
case PartialViewType.PartialView:
|
|
|
|
|
partialViewHeader = PartialViewHeader;
|
|
|
|
|
break;
|
|
|
|
|
case PartialViewType.PartialViewMacro:
|
|
|
|
|
partialViewHeader = PartialViewMacroHeader;
|
|
|
|
|
break;
|
2015-09-07 12:38:46 +02:00
|
|
|
default:
|
|
|
|
|
throw new ArgumentOutOfRangeException("partialViewType");
|
2014-08-18 17:47:55 +02:00
|
|
|
}
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
if (snippetName.IsNullOrWhiteSpace() == false)
|
2014-08-18 17:47:55 +02:00
|
|
|
{
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
//create the file
|
|
|
|
|
var snippetPathAttempt = TryGetSnippetPath(snippetName);
|
|
|
|
|
if (snippetPathAttempt.Success == false)
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidOperationException("Could not load snippet with name " + snippetName);
|
|
|
|
|
}
|
2014-08-18 17:47:55 +02:00
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
using (var snippetFile = new StreamReader(System.IO.File.OpenRead(snippetPathAttempt.Result)))
|
|
|
|
|
{
|
|
|
|
|
var snippetContent = snippetFile.ReadToEnd().Trim();
|
|
|
|
|
|
|
|
|
|
//strip the @inherits if it's there
|
|
|
|
|
snippetContent = StripPartialViewHeader(snippetContent);
|
2015-01-09 18:39:44 +11:00
|
|
|
|
|
|
|
|
var content = string.Format("{0}{1}{2}",
|
|
|
|
|
partialViewHeader,
|
|
|
|
|
Environment.NewLine, snippetContent);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
partialView.Content = content;
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-09-07 12:38:46 +02:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = GetPartialViewRepository(partialViewType, uow))
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(partialView);
|
|
|
|
|
uow.Commit();
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
CreatedPartialView.RaiseEvent(new NewEventArgs<IPartialView>(partialView, false, partialView.Alias, -1), this);
|
2014-08-18 17:47:55 +02:00
|
|
|
}
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save {0} performed by user", partialViewType), userId, -1);
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
return Attempt<IPartialView>.Succeed(partialView);
|
2014-08-18 17:47:55 +02:00
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public bool DeletePartialView(string path, int userId = 0)
|
2014-08-18 17:47:55 +02:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
return DeletePartialViewMacro(path, PartialViewType.PartialView, userId);
|
|
|
|
|
}
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public bool DeletePartialViewMacro(string path, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
return DeletePartialViewMacro(path, PartialViewType.PartialViewMacro, userId);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
private bool DeletePartialViewMacro(string path, PartialViewType partialViewType, int userId = 0)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
|
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
2015-09-07 12:38:46 +02:00
|
|
|
using (var repository = GetPartialViewRepository(partialViewType, uow))
|
2014-08-18 17:47:55 +02:00
|
|
|
{
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
var partialView = repository.Get(path);
|
|
|
|
|
if (partialView == null)
|
|
|
|
|
return true;
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
if (DeletingPartialView.IsRaisedEventCancelled(new DeleteEventArgs<IPartialView>(partialView), this))
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
repository.Delete(partialView);
|
|
|
|
|
uow.Commit();
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
DeletedPartialView.RaiseEvent(new DeleteEventArgs<IPartialView>(partialView, false), this);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Delete, string.Format("Delete {0} performed by user", partialViewType), userId, -1);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
}
|
2014-08-18 17:47:55 +02:00
|
|
|
|
|
|
|
|
return true;
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2014-08-18 17:47:55 +02:00
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public Attempt<IPartialView> SavePartialView(IPartialView partialView, int userId = 0)
|
2014-08-19 12:51:07 +02:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
return SavePartialView(partialView, PartialViewType.PartialView, userId);
|
|
|
|
|
}
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
public Attempt<IPartialView> SavePartialViewMacro(IPartialView partialView, int userId = 0)
|
|
|
|
|
{
|
|
|
|
|
return SavePartialView(partialView, PartialViewType.PartialViewMacro, userId);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
}
|
|
|
|
|
|
2015-01-09 18:39:44 +11:00
|
|
|
private Attempt<IPartialView> SavePartialView(IPartialView partialView, PartialViewType partialViewType, int userId = 0)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
2015-01-09 18:39:44 +11:00
|
|
|
if (SavingPartialView.IsRaisedEventCancelled(new SaveEventArgs<IPartialView>(partialView), this))
|
|
|
|
|
return Attempt<IPartialView>.Fail();
|
|
|
|
|
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
var uow = _fileUowProvider.GetUnitOfWork();
|
2015-09-07 12:38:46 +02:00
|
|
|
using (var repository = GetPartialViewRepository(partialViewType, uow))
|
2015-01-09 18:39:44 +11:00
|
|
|
{
|
|
|
|
|
repository.AddOrUpdate(partialView);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
uow.Commit();
|
2014-08-19 12:51:07 +02:00
|
|
|
}
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
Audit(AuditType.Save, string.Format("Save {0} performed by user", partialViewType), userId, -1);
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2015-08-27 20:10:19 +02:00
|
|
|
SavedPartialView.RaiseEvent(new SaveEventArgs<IPartialView>(partialView, false), this);
|
2014-08-19 12:51:07 +02:00
|
|
|
|
|
|
|
|
return Attempt.Succeed(partialView);
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-14 12:09:30 +11:00
|
|
|
public bool ValidatePartialView(PartialView partialView)
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
{
|
2015-09-08 17:48:26 +02:00
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
return repository.ValidatePartialView(partialView);
|
|
|
|
|
}
|
|
|
|
|
}
|
2015-01-14 12:09:30 +11:00
|
|
|
|
2015-09-08 17:48:26 +02:00
|
|
|
public bool ValidatePartialViewMacro(PartialView partialView)
|
|
|
|
|
{
|
|
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var repository = _repositoryFactory.CreatePartialViewMacroRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
return repository.ValidatePartialView(partialView);
|
|
|
|
|
}
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal string StripPartialViewHeader(string contents)
|
|
|
|
|
{
|
|
|
|
|
var headerMatch = new Regex("^@inherits\\s+?.*$", RegexOptions.Multiline);
|
|
|
|
|
return headerMatch.Replace(contents, string.Empty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal Attempt<string> TryGetSnippetPath(string fileName)
|
|
|
|
|
{
|
|
|
|
|
if (fileName.EndsWith(".cshtml") == false)
|
|
|
|
|
{
|
|
|
|
|
fileName += ".cshtml";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var snippetPath = IOHelper.MapPath(string.Format("{0}/PartialViewMacros/Templates/{1}", SystemDirectories.Umbraco, fileName));
|
|
|
|
|
return System.IO.File.Exists(snippetPath)
|
|
|
|
|
? Attempt<string>.Succeed(snippetPath)
|
|
|
|
|
: Attempt<string>.Fail();
|
2015-01-09 18:39:44 +11:00
|
|
|
}
|
|
|
|
|
|
2015-09-07 12:38:46 +02:00
|
|
|
private IPartialViewRepository GetPartialViewRepository(PartialViewType partialViewType, IUnitOfWork uow)
|
2015-01-09 18:39:44 +11:00
|
|
|
{
|
2015-09-07 12:38:46 +02:00
|
|
|
switch (partialViewType)
|
|
|
|
|
{
|
|
|
|
|
case PartialViewType.PartialView:
|
|
|
|
|
return _repositoryFactory.CreatePartialViewRepository(uow);
|
|
|
|
|
case PartialViewType.PartialViewMacro:
|
|
|
|
|
return _repositoryFactory.CreatePartialViewMacroRepository(uow);
|
|
|
|
|
}
|
|
|
|
|
throw new ArgumentOutOfRangeException("partialViewType");
|
2015-01-09 18:39:44 +11:00
|
|
|
}
|
|
|
|
|
|
2015-09-07 12:38:46 +02:00
|
|
|
#endregion
|
|
|
|
|
|
2015-01-19 15:12:34 +11:00
|
|
|
private void Audit(AuditType type, string message, int userId, int objectId)
|
|
|
|
|
{
|
|
|
|
|
var uow = _dataUowProvider.GetUnitOfWork();
|
|
|
|
|
using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow))
|
|
|
|
|
{
|
|
|
|
|
auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId));
|
|
|
|
|
uow.Commit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-11-11 06:53:02 -01:00
|
|
|
//TODO Method to change name and/or alias of view/masterpage template
|
2012-12-10 13:49:20 -01:00
|
|
|
|
|
|
|
|
#region Event Handlers
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Delete
|
2012-12-16 07:43:03 +05:00
|
|
|
/// </summary>
|
2013-12-16 18:10:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<ITemplate>> DeletingTemplate;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Delete
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<ITemplate>> DeletedTemplate;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Delete
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<Script>> DeletingScript;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Delete
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<Script>> DeletedScript;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Delete
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<Stylesheet>> DeletingStylesheet;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Delete
|
|
|
|
|
/// </summary>
|
2013-12-16 18:10:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<Stylesheet>> DeletedStylesheet;
|
2012-12-16 07:43:03 +05:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Save
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<ITemplate>> SavingTemplate;
|
2012-12-16 07:43:03 +05:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Save
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<ITemplate>> SavedTemplate;
|
2012-12-16 07:43:03 +05:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Save
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<Script>> SavingScript;
|
2012-12-16 07:43:03 +05:00
|
|
|
|
2013-12-16 18:10:44 +11:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Save
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<Script>> SavedScript;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Save
|
|
|
|
|
/// </summary>
|
2013-12-16 18:10:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<Stylesheet>> SavingStylesheet;
|
2012-12-10 13:49:20 -01:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Save
|
|
|
|
|
/// </summary>
|
2013-12-16 18:10:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<Stylesheet>> SavedStylesheet;
|
2012-12-15 21:04:17 +05:00
|
|
|
|
2014-08-19 12:51:07 +02:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Save
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<IPartialView>> SavingPartialView;
|
2014-08-19 12:51:07 +02:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Save
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, SaveEventArgs<IPartialView>> SavedPartialView;
|
Updates PartialView & PartialViewMacros models/services/repositories, streamlines their operations, fixes up other underlying problems with the FileRepository, fixes tree syncing for partial views, partial view macros and scripts, fixes scripts being created in folders, allows partial views and partial view macros to be managed and created in folders, fixes FileUnitOfWork to use a queue, publicizes some internal test classes, fixes tree syncing when dealing with invariant case, adds correct validation to the create dialogs of scripts and partial views (and partial view macros)
2014-10-22 16:44:45 +10:00
|
|
|
|
2014-08-18 17:47:55 +02:00
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Create
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, NewEventArgs<IPartialView>> CreatingPartialView;
|
2014-08-18 17:47:55 +02:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Create
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, NewEventArgs<IPartialView>> CreatedPartialView;
|
2014-08-18 17:47:55 +02:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs before Delete
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<IPartialView>> DeletingPartialView;
|
2014-08-18 17:47:55 +02:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Occurs after Delete
|
|
|
|
|
/// </summary>
|
2015-01-09 18:39:44 +11:00
|
|
|
public static event TypedEventHandler<IFileService, DeleteEventArgs<IPartialView>> DeletedPartialView;
|
2014-08-18 17:47:55 +02:00
|
|
|
|
2012-12-10 13:49:20 -01:00
|
|
|
#endregion
|
2012-10-24 11:29:51 -02:00
|
|
|
}
|
|
|
|
|
}
|