// Copyright (c) Umbraco.
// See LICENSE for more details.
using System.ComponentModel;
namespace Umbraco.Cms.Core.Configuration.Models;
///
/// Typed configuration options for content settings.
///
[UmbracoOptions(Constants.Configuration.ConfigContent)]
public class ContentSettings
{
internal const bool StaticResolveUrlsFromTextString = false;
internal const string StaticDefaultPreviewBadge = @"
";
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;
///
/// Gets or sets a value for the content notification settings.
///
public ContentNotificationSettings Notifications { get; set; } = new();
///
/// Gets or sets a value for the content imaging settings.
///
public ContentImagingSettings Imaging { get; set; } = new();
///
/// Gets or sets a value indicating whether URLs should be resolved from text strings.
///
[DefaultValue(StaticResolveUrlsFromTextString)]
public bool ResolveUrlsFromTextString { get; set; } = StaticResolveUrlsFromTextString;
///
/// Gets or sets a value for the collection of error pages.
///
public ContentErrorPage[] Error404Collection { get; set; } = Array.Empty();
///
/// Gets or sets a value for the preview badge mark-up.
///
[DefaultValue(StaticDefaultPreviewBadge)]
public string PreviewBadge { get; set; } = StaticDefaultPreviewBadge;
///
/// Gets or sets a value indicating whether deprecated property editors should be shown.
///
[DefaultValue(StaticShowDeprecatedPropertyEditors)]
public bool ShowDeprecatedPropertyEditors { get; set; } = StaticShowDeprecatedPropertyEditors;
///
/// Gets or sets a value for the path to the login screen background image.
///
[DefaultValue(StaticLoginBackgroundImage)]
public string LoginBackgroundImage { get; set; } = StaticLoginBackgroundImage;
///
/// Gets or sets a value for the path to the login screen logo image
/// shown on top of the background image set in .
///
/// The alternative version of this logo can be found at .
[DefaultValue(StaticLoginLogoImage)]
public string LoginLogoImage { get; set; } = StaticLoginLogoImage;
///
/// 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).
///
/// This is the alternative version to the regular logo found at .
[DefaultValue(StaticLoginLogoImageAlternative)]
public string LoginLogoImageAlternative { get; set; } = StaticLoginLogoImageAlternative;
///
/// Gets or sets a value for the path to the backoffice logo.
///
[DefaultValue(StaticBackOfficeLogo)]
public string BackOfficeLogo { get; set; } = StaticBackOfficeLogo;
///
/// Gets or sets a value indicating whether to hide the backoffice umbraco logo or not.
///
[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;
///
/// Gets or sets a value indicating whether to disable the deletion of items referenced by other items.
///
[DefaultValue(StaticDisableDeleteWhenReferenced)]
public bool DisableDeleteWhenReferenced { get; set; } = StaticDisableDeleteWhenReferenced;
///
/// Gets or sets a value indicating whether to disable the unpublishing of items referenced by other items.
///
[DefaultValue(StaticDisableUnpublishWhenReferenced)]
public bool DisableUnpublishWhenReferenced { get; set; } = StaticDisableUnpublishWhenReferenced;
///
/// Gets or sets the model representing the global content version cleanup policy
///
public ContentVersionCleanupPolicySettings ContentVersionCleanupPolicy { get; set; } = new();
///
/// Gets or sets a value indicating whether to allow editing invariant properties from a non-default language variation.
///
[DefaultValue(StaticAllowEditInvariantFromNonDefault)]
public bool AllowEditInvariantFromNonDefault { get; set; } = StaticAllowEditInvariantFromNonDefault;
///
/// Gets or sets a value for the collection of file extensions that are allowed for upload.
///
public string[] AllowedUploadedFileExtensions { get; set; } = Array.Empty();
///
/// Gets or sets a value for the collection of file extensions that are disallowed for upload.
///
[DefaultValue(StaticDisallowedUploadFiles)]
public string[] DisallowedUploadedFileExtensions { get; set; } = StaticDisallowedUploadFiles.Split(',');
///
/// Gets or sets the allowed external host for media. If empty only relative paths are allowed.
///
public string[] AllowedMediaHosts { get; set; } = Array.Empty();
///
/// Gets or sets a value indicating whether to show domain warnings.
///
[DefaultValue(StaticShowDomainWarnings)]
public bool ShowDomainWarnings { get; set; } = StaticShowDomainWarnings;
///
/// Gets or sets a value indicating whether to show unroutable content warnings.
///
[DefaultValue(StaticShowUnroutableContentWarnings)]
public bool ShowUnroutableContentWarnings { get; set; } = StaticShowUnroutableContentWarnings;
}