Files
Umbraco-CMS/src/Umbraco.Core/Configuration/Models/ContentSettings.cs
Nikolaj Geisle e5e5e8cb11 V15: Warn when content is unroutable (#17837)
* Add notification handler

* Add IsContentPublished that bypasses caching

* Add clarifying comment

* Refactor, to never hit the db

* Remove old comment

* Don't add warnings if disabled

* Dedicated configuration option to suppress unroutable content warnings

---------

Co-authored-by: kjac <kja@umbraco.dk>
2025-01-08 09:14:14 +01:00

152 lines
6.8 KiB
C#

// Copyright (c) Umbraco.
// See LICENSE for more details.
using System.ComponentModel;
namespace Umbraco.Cms.Core.Configuration.Models;
/// <summary>
/// Typed configuration options for content settings.
/// </summary>
[UmbracoOptions(Constants.Configuration.ConfigContent)]
public class ContentSettings
{
internal const bool StaticResolveUrlsFromTextString = false;
internal const string StaticDefaultPreviewBadge = @"
<script src=""{0}/website/preview.js""></script>
<umb-website-preview path=""{0}"" url=""{1}"" unique=""{2}""></umb-website-preview>";
internal const string StaticDisallowedUploadFiles = "ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,xamlx";
internal const bool StaticShowDeprecatedPropertyEditors = false;
internal const string StaticLoginBackgroundImage = "assets/login.jpg";
internal const string StaticLoginLogoImage = "assets/logo_light.svg";
internal const string StaticLoginLogoImageAlternative = "assets/logo_dark.svg";
internal const string StaticBackOfficeLogo = "assets/logo.svg";
internal const bool StaticHideBackOfficeLogo = false;
internal const bool StaticDisableDeleteWhenReferenced = false;
internal const bool StaticDisableUnpublishWhenReferenced = false;
internal const bool StaticAllowEditInvariantFromNonDefault = false;
internal const bool StaticShowDomainWarnings = true;
internal const bool StaticShowUnroutableContentWarnings = true;
/// <summary>
/// Gets or sets a value for the content notification settings.
/// </summary>
public ContentNotificationSettings Notifications { get; set; } = new();
/// <summary>
/// Gets or sets a value for the content imaging settings.
/// </summary>
public ContentImagingSettings Imaging { get; set; } = new();
/// <summary>
/// Gets or sets a value indicating whether URLs should be resolved from text strings.
/// </summary>
[DefaultValue(StaticResolveUrlsFromTextString)]
public bool ResolveUrlsFromTextString { get; set; } = StaticResolveUrlsFromTextString;
/// <summary>
/// Gets or sets a value for the collection of error pages.
/// </summary>
public ContentErrorPage[] Error404Collection { get; set; } = Array.Empty<ContentErrorPage>();
/// <summary>
/// Gets or sets a value for the preview badge mark-up.
/// </summary>
[DefaultValue(StaticDefaultPreviewBadge)]
public string PreviewBadge { get; set; } = StaticDefaultPreviewBadge;
/// <summary>
/// Gets or sets a value indicating whether deprecated property editors should be shown.
/// </summary>
[DefaultValue(StaticShowDeprecatedPropertyEditors)]
public bool ShowDeprecatedPropertyEditors { get; set; } = StaticShowDeprecatedPropertyEditors;
/// <summary>
/// Gets or sets a value for the path to the login screen background image.
/// </summary>
[DefaultValue(StaticLoginBackgroundImage)]
public string LoginBackgroundImage { get; set; } = StaticLoginBackgroundImage;
/// <summary>
/// Gets or sets a value for the path to the login screen logo image
/// shown on top of the background image set in <see cref="LoginBackgroundImage" />.
/// </summary>
/// <remarks>The alternative version of this logo can be found at <see cref="LoginLogoImageAlternative"/>.</remarks>
[DefaultValue(StaticLoginLogoImage)]
public string LoginLogoImage { get; set; } = StaticLoginLogoImage;
/// <summary>
/// Gets or sets a value for the path to the login screen logo image when shown on top
/// of a light background (e.g. in mobile resolutions).
/// </summary>
/// <remarks>This is the alternative version to the regular logo found at <see cref="LoginLogoImage"/>.</remarks>
[DefaultValue(StaticLoginLogoImageAlternative)]
public string LoginLogoImageAlternative { get; set; } = StaticLoginLogoImageAlternative;
/// <summary>
/// Gets or sets a value for the path to the backoffice logo.
/// </summary>
[DefaultValue(StaticBackOfficeLogo)]
public string BackOfficeLogo { get; set; } = StaticBackOfficeLogo;
/// <summary>
/// Gets or sets a value indicating whether to hide the backoffice umbraco logo or not.
/// </summary>
[DefaultValue(StaticHideBackOfficeLogo)]
[Obsolete("This setting is no longer used and will be removed in future versions. An alternative BackOffice logo can be set using the BackOfficeLogo setting.")]
public bool HideBackOfficeLogo { get; set; } = StaticHideBackOfficeLogo;
/// <summary>
/// Gets or sets a value indicating whether to disable the deletion of items referenced by other items.
/// </summary>
[DefaultValue(StaticDisableDeleteWhenReferenced)]
public bool DisableDeleteWhenReferenced { get; set; } = StaticDisableDeleteWhenReferenced;
/// <summary>
/// Gets or sets a value indicating whether to disable the unpublishing of items referenced by other items.
/// </summary>
[DefaultValue(StaticDisableUnpublishWhenReferenced)]
public bool DisableUnpublishWhenReferenced { get; set; } = StaticDisableUnpublishWhenReferenced;
/// <summary>
/// Gets or sets the model representing the global content version cleanup policy
/// </summary>
public ContentVersionCleanupPolicySettings ContentVersionCleanupPolicy { get; set; } = new();
/// <summary>
/// Gets or sets a value indicating whether to allow editing invariant properties from a non-default language variation.
/// </summary>
[DefaultValue(StaticAllowEditInvariantFromNonDefault)]
public bool AllowEditInvariantFromNonDefault { get; set; } = StaticAllowEditInvariantFromNonDefault;
/// <summary>
/// Gets or sets a value for the collection of file extensions that are allowed for upload.
/// </summary>
public string[] AllowedUploadedFileExtensions { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets a value for the collection of file extensions that are disallowed for upload.
/// </summary>
[DefaultValue(StaticDisallowedUploadFiles)]
public string[] DisallowedUploadedFileExtensions { get; set; } = StaticDisallowedUploadFiles.Split(',');
/// <summary>
/// Gets or sets the allowed external host for media. If empty only relative paths are allowed.
/// </summary>
public string[] AllowedMediaHosts { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets a value indicating whether to show domain warnings.
/// </summary>
[DefaultValue(StaticShowDomainWarnings)]
public bool ShowDomainWarnings { get; set; } = StaticShowDomainWarnings;
/// <summary>
/// Gets or sets a value indicating whether to show unroutable content warnings.
/// </summary>
[DefaultValue(StaticShowUnroutableContentWarnings)]
public bool ShowUnroutableContentWarnings { get; set; } = StaticShowUnroutableContentWarnings;
}