Skip saving template file when using runtime mode Production

This commit is contained in:
Ronald Barendse
2022-07-14 22:41:20 +02:00
parent e92ceae7ee
commit db90b16cb1
4 changed files with 33 additions and 10 deletions

View File

@@ -1,8 +1,10 @@
using System.Text;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using NPoco;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.IO;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.Entities;
@@ -24,17 +26,26 @@ internal class TemplateRepository : EntityRepositoryBase<int, ITemplate>, ITempl
{
private readonly IIOHelper _ioHelper;
private readonly IShortStringHelper _shortStringHelper;
private readonly IViewHelper _viewHelper;
private readonly IFileSystem? _viewsFileSystem;
private readonly IViewHelper _viewHelper;
private readonly IOptionsMonitor<RuntimeSettings> _runtimeSettings;
public TemplateRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger<TemplateRepository> logger,
FileSystems fileSystems, IIOHelper ioHelper, IShortStringHelper shortStringHelper, IViewHelper viewHelper)
public TemplateRepository(
IScopeAccessor scopeAccessor,
AppCaches cache,
ILogger<TemplateRepository> logger,
FileSystems fileSystems,
IIOHelper ioHelper,
IShortStringHelper shortStringHelper,
IViewHelper viewHelper,
IOptionsMonitor<RuntimeSettings> runtimeSettings)
: base(scopeAccessor, cache, logger)
{
_ioHelper = ioHelper;
_shortStringHelper = shortStringHelper;
_viewsFileSystem = fileSystems.MvcViewsFileSystem;
_viewHelper = viewHelper;
_runtimeSettings = runtimeSettings;
}
public Stream GetFileContentStream(string filepath)
@@ -421,8 +432,12 @@ internal class TemplateRepository : EntityRepositoryBase<int, ITemplate>, ITempl
template.Id = nodeDto.NodeId; //Set Id on entity to ensure an Id is set
template.Path = nodeDto.Path;
//now do the file work
SaveFile(template);
// Only save file when not in production runtime mode
if (_runtimeSettings.CurrentValue.Mode != RuntimeMode.Production)
{
//now do the file work
SaveFile(template);
}
template.ResetDirtyProperties();
@@ -476,8 +491,12 @@ internal class TemplateRepository : EntityRepositoryBase<int, ITemplate>, ITempl
IEnumerable<IUmbracoEntity> axisDefs = GetAxisDefinitions(dto);
template.IsMasterTemplate = axisDefs.Any(x => x.ParentId == dto.NodeId);
//now do the file work
SaveFile((Template)entity, originalAlias);
// Only save file when not in production runtime mode
if (_runtimeSettings.CurrentValue.Mode != RuntimeMode.Production)
{
//now do the file work
SaveFile((Template)entity, originalAlias);
}
entity.ResetDirtyProperties();

View File

@@ -5,10 +5,12 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.IO;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
@@ -84,7 +86,8 @@ public class ContentTypeRepositoryTest : UmbracoIntegrationTest
FileSystems,
IOHelper,
ShortStringHelper,
Mock.Of<IViewHelper>());
Mock.Of<IViewHelper>(),
Mock.Of<IOptionsMonitor<RuntimeSettings>>());
var repository = ContentTypeRepository;
Template[] templates =
{

View File

@@ -111,7 +111,7 @@ public class DocumentRepositoryTest : UmbracoIntegrationTest
{
appCaches ??= AppCaches;
templateRepository = new TemplateRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger<TemplateRepository>(), FileSystems, IOHelper, ShortStringHelper, Mock.Of<IViewHelper>());
templateRepository = new TemplateRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger<TemplateRepository>(), FileSystems, IOHelper, ShortStringHelper, Mock.Of<IViewHelper>(), Mock.Of<IOptionsMonitor<RuntimeSettings>>());
var tagRepository = new TagRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger<TagRepository>());
var commonRepository =
new ContentTypeCommonRepository(scopeAccessor, templateRepository, appCaches, ShortStringHelper);

View File

@@ -7,6 +7,7 @@ using System.IO;
using System.Linq;
using System.Text;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core;
@@ -59,7 +60,7 @@ public class TemplateRepositoryTest : UmbracoIntegrationTest
private IViewHelper ViewHelper => GetRequiredService<IViewHelper>();
private ITemplateRepository CreateRepository(IScopeProvider provider) =>
new TemplateRepository((IScopeAccessor)provider, AppCaches.Disabled, LoggerFactory.CreateLogger<TemplateRepository>(), FileSystems, IOHelper, ShortStringHelper, ViewHelper);
new TemplateRepository((IScopeAccessor)provider, AppCaches.Disabled, LoggerFactory.CreateLogger<TemplateRepository>(), FileSystems, IOHelper, ShortStringHelper, ViewHelper, Mock.Of<IOptionsMonitor<RuntimeSettings>>());
[Test]
public void Can_Instantiate_Repository()