diff --git a/.github/BUILD.md b/.github/BUILD.md index 2e081548fe..f42b7d1270 100644 --- a/.github/BUILD.md +++ b/.github/BUILD.md @@ -9,7 +9,7 @@ In order to use Umbraco as a CMS and build your website with it, you should not - Are you about to [create a pull request for Umbraco][contribution guidelines]? - Are you trying to get to the bottom of a problem in your existing Umbraco installation? -If the answer is yes, please read on. Otherwise, make sure to head on over [to the download page](https://our.umbraco.com/download) and start using Umbraco CMS as intended. +If the answer is yes, please read on. Otherwise, make sure to head on over [to the releases page](https://releases.umbraco.com) and start using Umbraco CMS as intended. ## Table of contents diff --git a/.github/contributing-first-issue.md b/.github/contributing-first-issue.md index e4e865b287..e0d89dce2b 100644 --- a/.github/contributing-first-issue.md +++ b/.github/contributing-first-issue.md @@ -79,7 +79,7 @@ You can get in touch with [the core contributors team][core collabs] in multiple - If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward. - If you want to ask questions on some code you've already written you can create a draft pull request, [detailed in a GitHub blog post][draft prs]. -- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"][contrib forum] forum. The team monitors that one closely, so one of us will be on hand and ready to point you in the right direction. +- Unsure where to start? Did something not work as expected? Try leaving a note in the [forum][forum]. The team monitors that one closely, so one of us will be on hand and ready to point you in the right direction. @@ -90,7 +90,7 @@ You can get in touch with [the core contributors team][core collabs] in multiple [sync fork ext]: http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated "Details on keeping a git fork updated" [draft prs]: https://github.blog/2019-02-14-introducing-draft-pull-requests/ "Github's blog post providing details on draft pull requests" -[contrib forum]: https://our.umbraco.com/forum/contributing-to-umbraco-cms/ +[forum]: https://forum.umbraco.com/ [Umbraco CMS repo]: https://github.com/umbraco/Umbraco-CMS [up for grabs issues]: https://github.com/umbraco/Umbraco-CMS/issues?q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs [issue tracker]: https://github.com/umbraco/Umbraco-CMS/issues \ No newline at end of file diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Help/GetHelpController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Help/GetHelpController.cs index e2227409b2..9c8b4a8c43 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Help/GetHelpController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Help/GetHelpController.cs @@ -11,6 +11,7 @@ using Umbraco.Cms.Api.Common.ViewModels.Pagination; namespace Umbraco.Cms.Api.Management.Controllers.Help; +[Obsolete("This is no longer used and will be removed in v19")] [ApiVersion("1.0")] public class GetHelpController : HelpControllerBase { diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Help/HelpControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Help/HelpControllerBase.cs index 4fce426926..fe3a5870c5 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Help/HelpControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Help/HelpControllerBase.cs @@ -3,6 +3,7 @@ using Umbraco.Cms.Api.Management.Routing; namespace Umbraco.Cms.Api.Management.Controllers.Help; +[Obsolete("This is no longer used and will be removed in v19")] [VersionedApiBackOfficeRoute("help")] [ApiExplorerSettings(GroupName = "Help")] public abstract class HelpControllerBase : ManagementApiControllerBase diff --git a/src/Umbraco.Cms.Api.Management/OpenApi.json b/src/Umbraco.Cms.Api.Management/OpenApi.json index 486e0d8bce..8600277831 100644 --- a/src/Umbraco.Cms.Api.Management/OpenApi.json +++ b/src/Umbraco.Cms.Api.Management/OpenApi.json @@ -11898,94 +11898,6 @@ ] } }, - "/umbraco/management/api/v1/help": { - "get": { - "tags": [ - "Help" - ], - "operationId": "GetHelp", - "parameters": [ - { - "name": "section", - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "tree", - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "skip", - "in": "query", - "schema": { - "type": "integer", - "format": "int32", - "default": 0 - } - }, - { - "name": "take", - "in": "query", - "schema": { - "type": "integer", - "format": "int32", - "default": 100 - } - }, - { - "name": "baseUrl", - "in": "query", - "schema": { - "type": "string", - "default": "https://our.umbraco.com" - } - } - ], - "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/ProblemDetails" - } - ] - } - } - } - }, - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/PagedHelpPageResponseModel" - } - ] - } - } - } - }, - "401": { - "description": "The resource is protected and requires an authentication token" - } - }, - "security": [ - { - "Backoffice-User": [ ] - } - ] - } - }, "/umbraco/management/api/v1/imaging/resize/urls": { "get": { "tags": [ diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Installer/UpgradeSettingsResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Installer/UpgradeSettingsResponseModel.cs index 6b1eea2d78..af864b49ee 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Installer/UpgradeSettingsResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Installer/UpgradeSettingsResponseModel.cs @@ -17,5 +17,5 @@ public class UpgradeSettingsResponseModel public string OldVersion { get; set; } = string.Empty; public string ReportUrl => - $"https://our.umbraco.com/contribute/releases/compare?from={OldVersion}&to={NewVersion}¬es=1"; + $"https://releases.umbraco.com/compare?from={OldVersion}&to={NewVersion}¬es=1"; } diff --git a/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NoNodes.cshtml b/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NoNodes.cshtml index 51ab51987b..596af6ec19 100644 --- a/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NoNodes.cshtml +++ b/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NoNodes.cshtml @@ -43,10 +43,10 @@
-

Be a part of the community

-

The Umbraco community is the best of its kind, be sure to visit, and if you have any questions, we're sure that you can get your answers from the community.

+

The Umbraco community forum

+

The forum is the central hub for the Umbraco developer community. This is where developers, integrators, and contributors come together to ask questions, share knowledge, and collaborate on all things Umbraco.

- our.Umbraco → + Umbraco community forum →
diff --git a/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NotFound.cshtml b/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NotFound.cshtml index 6e90209cb5..932f8942be 100644 --- a/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NotFound.cshtml +++ b/src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/NotFound.cshtml @@ -62,10 +62,10 @@
-

Be a part of the community

-

The Umbraco community is the best of its kind, be sure to visit, and if you have any questions, we're sure that you can get your answers from the community.

+

The Umbraco community forum

+

The forum is the central hub for the Umbraco developer community. This is where developers, integrators, and contributors come together to ask questions, share knowledge, and collaborate on all things Umbraco.

- our.Umbraco → + Umbraco community forum →
diff --git a/src/Umbraco.Core/Configuration/Models/DistributedJobSettings.cs b/src/Umbraco.Core/Configuration/Models/DistributedJobSettings.cs index 49baff36b4..cafe666b7b 100644 --- a/src/Umbraco.Core/Configuration/Models/DistributedJobSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/DistributedJobSettings.cs @@ -8,7 +8,7 @@ namespace Umbraco.Cms.Core.Configuration.Models; [UmbracoOptions(Constants.Configuration.ConfigDistributedJobs)] public class DistributedJobSettings { - internal const string StaticPeriod = "00:00:10"; + internal const string StaticPeriod = "00:00:05"; internal const string StaticDelay = "00:01:00"; /// diff --git a/src/Umbraco.Core/Constants-PropertyEditors.cs b/src/Umbraco.Core/Constants-PropertyEditors.cs index f1264d5050..ab1715cf17 100644 --- a/src/Umbraco.Core/Constants-PropertyEditors.cs +++ b/src/Umbraco.Core/Constants-PropertyEditors.cs @@ -90,6 +90,11 @@ public static partial class Constants /// public const string DateOnly = "Umbraco.DateOnly"; + /// + /// Entity Data Picker + /// + public const string EntityDataPicker = "Umbraco.EntityDataPicker"; + /// /// Time Only. /// diff --git a/src/Umbraco.Core/Models/EntityDataPickerValue.cs b/src/Umbraco.Core/Models/EntityDataPickerValue.cs new file mode 100644 index 0000000000..2b4274c3ef --- /dev/null +++ b/src/Umbraco.Core/Models/EntityDataPickerValue.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Cms.Core.Models; + +public sealed class EntityDataPickerValue +{ + public required IEnumerable Ids { get; set; } + + public required string DataSource { get; set; } +} diff --git a/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfiguration.cs b/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfiguration.cs new file mode 100644 index 0000000000..bdbaa636dd --- /dev/null +++ b/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfiguration.cs @@ -0,0 +1,17 @@ +namespace Umbraco.Cms.Core.PropertyEditors; + +public sealed class EntityDataPickerConfiguration +{ + [ConfigurationField("validationLimit")] + public NumberRange ValidationLimit { get; set; } = new(); + + [ConfigurationField("umbEditorDataSource")] + public string DataSource { get; set; } = string.Empty; + + public class NumberRange + { + public int? Min { get; set; } + + public int? Max { get; set; } + } +} diff --git a/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfigurationEditor.cs b/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfigurationEditor.cs new file mode 100644 index 0000000000..16f7d644fa --- /dev/null +++ b/src/Umbraco.Core/PropertyEditors/EntityDataPickerConfigurationEditor.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.IO; + +namespace Umbraco.Cms.Core.PropertyEditors; + +internal sealed class EntityDataPickerConfigurationEditor : ConfigurationEditor +{ + public EntityDataPickerConfigurationEditor(IIOHelper ioHelper) + : base(ioHelper) + { + } +} diff --git a/src/Umbraco.Core/PropertyEditors/EntityDataPickerPropertyEditor.cs b/src/Umbraco.Core/PropertyEditors/EntityDataPickerPropertyEditor.cs new file mode 100644 index 0000000000..29604e24ef --- /dev/null +++ b/src/Umbraco.Core/PropertyEditors/EntityDataPickerPropertyEditor.cs @@ -0,0 +1,126 @@ +using System.ComponentModel.DataAnnotations; +using Umbraco.Cms.Core.IO; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models.Validation; +using Umbraco.Cms.Core.PropertyEditors.Validation; +using Umbraco.Cms.Core.Serialization; +using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Strings; +using Umbraco.Extensions; + +namespace Umbraco.Cms.Core.PropertyEditors; + +/// +/// Represents an entity data picker property editor. +/// +[DataEditor( + Constants.PropertyEditors.Aliases.EntityDataPicker, + ValueType = ValueTypes.Json, + ValueEditorIsReusable = true)] +internal sealed class EntityDataPickerPropertyEditor : DataEditor +{ + private readonly IIOHelper _ioHelper; + + /// + /// Initializes a new instance of the class. + /// + public EntityDataPickerPropertyEditor(IDataValueEditorFactory dataValueEditorFactory, IIOHelper ioHelper) + : base(dataValueEditorFactory) + { + _ioHelper = ioHelper; + SupportsReadOnly = true; + } + + /// + public override IPropertyIndexValueFactory PropertyIndexValueFactory { get; } = new NoopPropertyIndexValueFactory(); + + /// + protected override IDataValueEditor CreateValueEditor() + => DataValueEditorFactory.Create(Attribute!); + + /// + protected override IConfigurationEditor CreateConfigurationEditor() => new EntityDataPickerConfigurationEditor(_ioHelper); + + /// + /// Defines the value editor for the entity data picker property editor. + /// + internal sealed class EntityDataPickerPropertyValueEditor : DataValueEditor + { + /// + /// Initializes a new instance of the class. + /// + public EntityDataPickerPropertyValueEditor( + IShortStringHelper shortStringHelper, + IJsonSerializer jsonSerializer, + IIOHelper ioHelper, + DataEditorAttribute attribute, + ILocalizedTextService localizedTextService) + : base(shortStringHelper, jsonSerializer, ioHelper, attribute) + { + var validators = new TypedJsonValidatorRunner( + jsonSerializer, + new MinMaxValidator(localizedTextService)); + + Validators.Add(validators); + } + + /// + /// Validates the min/max configuration for the entity data picker property editor. + /// + internal sealed class MinMaxValidator : ITypedJsonValidator + { + private readonly ILocalizedTextService _localizedTextService; + + /// + /// Initializes a new instance of the class. + /// + public MinMaxValidator(ILocalizedTextService localizedTextService) => + _localizedTextService = localizedTextService; + + /// + public IEnumerable Validate( + EntityDataPickerDto? data, + EntityDataPickerConfiguration? configuration, + string? valueType, + PropertyValidationContext validationContext) + { + var validationResults = new List(); + + if (data is null || configuration is null) + { + return validationResults; + } + + if (configuration.ValidationLimit.Min is not null + && data.Ids.Length < configuration.ValidationLimit.Min) + { + validationResults.Add(new ValidationResult( + _localizedTextService.Localize( + "validation", + "entriesShort", + [configuration.ValidationLimit.Min.ToString(), (configuration.ValidationLimit.Min - data.Ids.Length).ToString()]), + ["value"])); + } + + if (configuration.ValidationLimit.Max is not null + && data.Ids.Length > configuration.ValidationLimit.Max) + { + validationResults.Add(new ValidationResult( + _localizedTextService.Localize( + "validation", + "entriesExceed", + [configuration.ValidationLimit.Max.ToString(), (data.Ids.Length - configuration.ValidationLimit.Max).ToString() + ]), + ["value"])); + } + + return validationResults; + } + } + } + + internal sealed class EntityDataPickerDto + { + public string[] Ids { get; set; } = []; + } +} diff --git a/src/Umbraco.Core/Webhooks/WebhookEventBase.cs b/src/Umbraco.Core/Webhooks/WebhookEventBase.cs index b0d5e7d2e2..138ebc56fd 100644 --- a/src/Umbraco.Core/Webhooks/WebhookEventBase.cs +++ b/src/Umbraco.Core/Webhooks/WebhookEventBase.cs @@ -103,6 +103,6 @@ public abstract class WebhookEventBase : IWebhookEvent, INotifica /// /// /// - public virtual object ConvertNotificationToRequestPayload(TNotification notification) + public virtual object? ConvertNotificationToRequestPayload(TNotification notification) => notification; } diff --git a/src/Umbraco.Infrastructure/Models/DistributedBackgroundJobModel.cs b/src/Umbraco.Infrastructure/Models/DistributedBackgroundJobModel.cs index 2ac0287ba8..899f71e172 100644 --- a/src/Umbraco.Infrastructure/Models/DistributedBackgroundJobModel.cs +++ b/src/Umbraco.Infrastructure/Models/DistributedBackgroundJobModel.cs @@ -5,6 +5,11 @@ /// public class DistributedBackgroundJobModel { + /// + /// The id of the job. + /// + public int Id { get; set; } + /// /// Name of job. /// diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DistributedJobRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DistributedJobRepository.cs index 6436a24d7b..4e6502dc7d 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DistributedJobRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DistributedJobRepository.cs @@ -90,6 +90,7 @@ internal class DistributedJobRepository(IScopeAccessor scopeAccessor) : IDistrib private DistributedJobDto MapToDto(DistributedBackgroundJobModel model) => new() { + Id = model.Id, Name = model.Name, Period = model.Period.Ticks, LastRun = model.LastRun, @@ -100,6 +101,7 @@ internal class DistributedJobRepository(IScopeAccessor scopeAccessor) : IDistrib private DistributedBackgroundJobModel MapFromDto(DistributedJobDto jobDto) => new() { + Id = jobDto.Id, Name = jobDto.Name, Period = TimeSpan.FromTicks(jobDto.Period), LastRun = jobDto.LastRun, diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/EntityDataPickerValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/EntityDataPickerValueConverter.cs new file mode 100644 index 0000000000..811ce10544 --- /dev/null +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/EntityDataPickerValueConverter.cs @@ -0,0 +1,43 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models.PublishedContent; +using Umbraco.Cms.Core.Serialization; + +namespace Umbraco.Cms.Core.PropertyEditors.ValueConverters; + +// NOTE: this class is made public on purpose because all value converters should be public +[DefaultPropertyValueConverter(typeof(JsonValueConverter))] +public sealed class EntityDataPickerValueConverter : PropertyValueConverterBase +{ + private readonly IJsonSerializer _jsonSerializer; + + public EntityDataPickerValueConverter(IJsonSerializer jsonSerializer) + => _jsonSerializer = jsonSerializer; + + public override bool IsConverter(IPublishedPropertyType propertyType) + => Constants.PropertyEditors.Aliases.EntityDataPicker.Equals(propertyType.EditorAlias); + + public override Type GetPropertyValueType(IPublishedPropertyType propertyType) + => typeof(EntityDataPickerValue); + + public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType) + => PropertyCacheLevel.Element; + + public override object? ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object? source, bool preview) + { + if (source is not string sourceString + || propertyType.DataType.ConfigurationObject is not EntityDataPickerConfiguration dataTypeConfiguration) + { + return null; + } + + EntityDataPickerDto? dto = _jsonSerializer.Deserialize(sourceString); + return dto is not null + ? new EntityDataPickerValue { Ids = dto.Ids, DataSource = dataTypeConfiguration.DataSource } + : null; + } + + private class EntityDataPickerDto + { + public required string[] Ids { get; init; } + } +} diff --git a/src/Umbraco.Web.UI.Client/examples/picker-data-source/index.ts b/src/Umbraco.Web.UI.Client/examples/picker-data-source/index.ts index fd4d9f3a2f..1d5a4aa2f6 100644 --- a/src/Umbraco.Web.UI.Client/examples/picker-data-source/index.ts +++ b/src/Umbraco.Web.UI.Client/examples/picker-data-source/index.ts @@ -1,7 +1,9 @@ +import { UMB_PICKER_DATA_SOURCE_TYPE } from '@umbraco-cms/backoffice/picker-data-source'; + export const manifests: Array = [ { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.CustomPickerCollection', name: 'Custom Picker Collection Data Source', api: () => import('./example-custom-picker-collection-data-source.js'), @@ -13,7 +15,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.CustomPickerTree', name: 'Custom Picker Tree Data Source', api: () => import('./example-custom-picker-tree-data-source.js'), @@ -25,7 +27,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.DocumentPicker', name: 'Document Picker Data Source', api: () => import('./example-document-picker-data-source.js'), @@ -53,7 +55,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.MediaPicker', name: 'Media Picker Data Source', api: () => import('./example-media-picker-data-source.js'), @@ -65,7 +67,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.LanguagePicker', name: 'Language Picker Data Source', api: () => import('./example-language-picker-data-source.js'), @@ -77,7 +79,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.WebhookPicker', name: 'Webhook Picker Data Source', api: () => import('./example-webhook-picker-data-source.js'), @@ -89,7 +91,7 @@ export const manifests: Array = [ }, { type: 'propertyEditorDataSource', - dataSourceType: 'picker', + dataSourceType: UMB_PICKER_DATA_SOURCE_TYPE, alias: 'Umb.PropertyEditorDataSource.UserPicker', name: 'User Picker Data Source', api: () => import('./example-user-picker-data-source.js'), diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 74589de99c..c836825ee7 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@umbraco-cms/backoffice", - "version": "17.0.0-rc", + "version": "17.0.0-rc1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@umbraco-cms/backoffice", - "version": "17.0.0-rc", + "version": "17.0.0-rc1", "license": "MIT", "workspaces": [ "./src/packages/*", @@ -17011,7 +17011,7 @@ "src/packages/core": { "name": "@umbraco-backoffice/core", "dependencies": { - "@hey-api/openapi-ts": "0.85.0", + "@hey-api/openapi-ts": "^0.85.0", "@types/diff": "^7.0.2", "diff": "^7.0.0", "uuid": "^13.0.0" diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f91e42d9ba..56e089fc45 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -1,7 +1,7 @@ { "name": "@umbraco-cms/backoffice", "license": "MIT", - "version": "17.0.0-rc", + "version": "17.0.0-rc1", "type": "module", "exports": { ".": null, diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts index ac8863326a..407ca3fa7c 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts @@ -78,8 +78,9 @@ export class UmbBackofficeHeaderSectionsElement extends UmbLitElement { const clickedSectionAlias = manifest.alias; - // If the clicked section is the same as the current section, we just load the original section path to load the section root - if (this._currentSectionAlias === clickedSectionAlias) { + // If preventUrlRetention is set to true then go to the section root. + // Or if the clicked section is the current active one, then navigate to the section root + if (manifest?.meta.preventUrlRetention === true || this._currentSectionAlias === clickedSectionAlias) { const sectionPath = this.#getSectionPath(manifest); history.pushState(null, '', sectionPath); return; diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/ar.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/ar.ts index d0f41288ba..8e91c44ea4 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/ar.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/ar.ts @@ -931,8 +931,6 @@ export default { databaseHeader: 'تكوين قاعدة البيانات', databaseInstall: 'اضغط على زر التثبيت لتثبيت قاعدة بيانات Umbraco %0%', databaseInstallDone: 'تم نسخ Umbraco %0% الآن إلى قاعدة بياناتك. اضغط على التالي للمتابعة.', - databaseNotFound: - '

لم يتم العثور على قاعدة البيانات! يرجى التحقق من أن المعلومات في سلسلة الاتصال في ملف "web.config" صحيحة.

\n

للمتابعة، يرجى تعديل ملف "web.config" (باستخدام Visual Studio أو محرر النصوص المفضل لديك)، والتمرير إلى الأسفل، وإضافة سلسلة الاتصال لقاعدة البيانات الخاصة بك في المفتاح المسمى "UmbracoDbDSN" وحفظ الملف.

\n

اضغط على زر إعادة المحاولة عند الانتهاء.
\n\t\t\t مزيد من المعلومات حول تحرير web.config هنا.

', databaseText: 'لإكمال هذه الخطوة، يجب أن تكون لديك بعض المعلومات حول خادم قاعدة البيانات الخاص بك ("سلسلة الاتصال").
\n يرجى الاتصال بمزود خدمة الإنترنت الخاص بك إذا لزم الأمر.\n إذا كنت تقوم بالتثبيت على جهاز محلي أو خادم، قد تحتاج إلى معلومات من مسؤول النظام الخاص بك.', databaseUpgrade: @@ -1266,14 +1264,6 @@ export default { translation: 'القاموس', users: 'المستخدمون', }, - help: { - tours: 'الجولات', - theBestUmbracoVideoTutorials: 'أفضل دروس الفيديو في Umbraco', - umbracoForum: 'زيارة our.umbraco.com', - umbracoTv: 'زيارة umbraco.tv', - umbracoLearningBase: 'شاهد دروس الفيديو المجانية لدينا', - umbracoLearningBaseDescription: 'على قاعدة تعلم Umbraco', - }, settings: { defaulttemplate: 'القالب الافتراضي', importDocumentTypeHelp: @@ -2256,16 +2246,11 @@ export default { profilerEnabledDescription: '

Umbraco حاليًا لا يعمل في وضع التصحيح، لذا لا يمكنك استخدام أداة التحليل المدمجة. هذا هو الوضع الصحيح لموقع الإنتاج.

يتم تشغيل وضع التصحيح عن طريق تعيين Umbraco:CMS:Hosting:Debug إلى true في appsettings.json أو appsettings.{Environment}.json أو عبر متغير بيئة.

', }, - settingsDashboardVideos: { - trainingHeadline: 'ساعات من مقاطع فيديو تدريب Umbraco على بعد نقرة واحدة', - trainingDescription: - '

هل تريد إتقان Umbraco؟ اقض بضع دقائق في تعلم بعض الممارسات الأفضل من خلال مشاهدة واحدة من هذه الفيديوهات حول استخدام Umbraco. وزيارة umbraco.tv لمزيد من مقاطع الفيديو حول Umbraco

', - }, settingsDashboard: { documentationHeader: 'التوثيق', documentationDescription: 'اقرأ المزيد عن العمل مع العناصر في الإعدادات في توثيقنا.', communityHeader: 'المجتمع', - communityDescription: 'اطرح سؤالاً في منتدى المجتمع أو مجتمع Discord لدينا.', + communityDescription: 'اطرح سؤالاً في منتدى مجتمعنا.', trainingHeader: 'التدريب', trainingDescription: 'اكتشف فرص التدريب والتأهيل الرسمية', supportHeader: 'الدعم', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/bs.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/bs.ts index d182337d23..e7fa8bf6c2 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/bs.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/bs.ts @@ -889,8 +889,6 @@ export default { databaseInstall: '\n Pritisnite Instaliraj za instalaciju Umbraco %0% baze podataka\n ', databaseInstallDone: 'Umbraco %0% je sada kopiran u vašu bazu podataka. Pritisnite Dalje da nastavite.', - databaseNotFound: - '

Baza podataka nije pronađena! Provjerite jesu li informacije u "konekcijskom string" u "web.config" fajlu ispravne.

\n

Da nastavite, uredite "web.config" fajl. (koristeći Visual Studio ili vaš omiljeni uređivač teksta), skrolujte do dna, dodajte konekcijski string za vašu bazu podataka u ključ nazvan "UmbracoDbDSN" i sačuvajte fajl.

\n

\n Kliknite na pokušaj ponovo dugme kada završite.
\n\t\t\t \n\t\t\t Više informacija o uređivanju web.config fajla možete pronaći ovdje.

', databaseText: 'Da biste dovršili ovaj korak, morate znati neke informacije o vašem poslužitelju baze podataka ("konekcijski string").
\n Molimo kontaktirajte svog ISP-a ako je potrebno.\n Ako instalirate na lokalnoj mašini ili serveru, možda će vam trebati informacije od administratora sistema.', databaseUpgrade: @@ -1216,14 +1214,6 @@ export default { translation: 'Prevodi', users: 'Korisnici', }, - help: { - tours: 'Ture', - theBestUmbracoVideoTutorials: 'Najbolji Umbraco video tutorijali', - umbracoForum: 'Posjetite our.umbraco.com', - umbracoTv: 'Posjetite umbraco.tv', - umbracoLearningBase: 'Pogledajte naše besplatne video tutoriale', - umbracoLearningBaseDescription: 'na Umbraco Learning Base', - }, settings: { defaulttemplate: 'Podrazumevani šablon', importDocumentTypeHelp: @@ -2141,22 +2131,6 @@ export default { '\n

Želite savladati Umbraco? Provedite nekoliko minuta učeći neke najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

\n ', getStarted: 'Za početak', }, - settingsDashboard: { - start: 'Počni ovdje', - startDescription: - 'Ovaj odjeljak sadrži blokove za izgradnju vaše Umbraco stranice. Slijedite dolje\n veze da saznate više o radu sa stavkama u odjeljku Postavke\n ', - more: 'Saznajte više', - bulletPointOne: - '\n Pročitajte više o radu sa stavkama u Postavkama u odjeljku Dokumentacija na Our Umbraco\n ', - bulletPointTwo: - '\n Postavite pitanje na Forumu zajednice\n ', - bulletPointTutorials: - '\n Gledajte besplatno video tutorijale na Umbraco Learning Base\n ', - bulletPointFour: - '\n Saznajte više o našim alatima za povećanje produktivnosti i komercijalna podrška\n ', - bulletPointFive: - '\n Saznajte nešto o mogućnosti stvarne obuke i certifikacije\n ', - }, startupDashboard: { fallbackHeadline: 'Dobrodošli u The Friendly CMS', fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/cs.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/cs.ts index 594b299354..2d5e57be40 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/cs.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/cs.ts @@ -1111,12 +1111,6 @@ export default { statistics: 'Statistiky', help: 'Nápověda', }, - help: { - tours: 'Příručky', - theBestUmbracoVideoTutorials: 'Nejlepší videopříručky Umbraco', - umbracoForum: 'Navštívit our.umbraco.com', - umbracoTv: 'Navštívit umbraco.tv', - }, settings: { defaulttemplate: 'Výchozí šablona', importDocumentTypeHelp: @@ -1904,28 +1898,6 @@ export default { activateByDefault: 'Ve výchozím stavu aktivovat profiler', reminder: 'Přátelské připomenutí', }, - settingsDashboardVideos: { - trainingHeadline: 'Hodiny tréninkových videí Umbraco jsou blíž než si myslíte', - trainingDescription: - '\n

Chcete ovládnout Umbraco? Stačí strávit pár minut sledování jednoho z těchto videí o používání Umbraco. Nebo navštivte umbraco.tv, kde najdete ještě více videí o Umbraco

\n ', - getStarted: 'Chcete-li začít', - }, - settingsDashboard: { - start: 'Začněte zde', - startDescription: - 'Tato část obsahuje stavební bloky pro váš web Umbraco. Podle níže uvedených odkazů se dozvíte více o práci s položkami v části Nastavení', - more: 'Zjistit více', - bulletPointOne: - '\n Další informace o práci s položkami naleznete v části Nastavení v sekci Dokumentace v Our Umbraco\n ', - bulletPointTwo: - '\n Zeptejte se na fóru komunity\n ', - bulletPointThree: - '\n Podívejte se na naše výuková videa (některá jsou zdarma, jiná vyžadují předplatné)\n ', - bulletPointFour: - '\n Další informace o našich nástrojích zvyšujících produktivitu a komerční podpoře\n ', - bulletPointFive: - '\n Zjistěte více o možnostech školení a certifikace\n ', - }, startupDashboard: { fallbackHeadline: 'Vítejte v přátelském CMS', fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/cy.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/cy.ts index c76993903f..e9d99314b5 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/cy.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/cy.ts @@ -937,8 +937,6 @@ export default { databaseInstall: '\n Gwasgwch y botwm gosod i osod y gronfa ddata %0% Umbraco\n ', databaseInstallDone: "Mae Umbraco %0% yn awr wedi copïo i'ch gronfa ddata. Gwasgwch Nesaf i fwrw ymlaen.", - databaseNotFound: - '

Cronfa ddata heb ei ganfod! Gwiriwch fod y gwybodaeth yn y "llinyn gyswllt" o\'r ffeil "web.config" yn gywir.

\n

Er mwyn parhau, newidiwch y ffeil "web.config" (gan ddefnyddio Visual Studio neu eich hoff olygydd testun), rholiwch at y gwaelod, ychwanegwch y llinyn gyswllt ar gyfer eich cronfa ddata yn yr allwedd o\'r enw "UmbracoDbDSN" ac achub y ffeil.

\n

\n Cliciwch y botwm ceisio eto pan rydych wedi\n gorffen.
\n\t\t\t Mwy o wybodaeth am newid y ffeil web.config yma.

', databaseText: "Er mwyn cwblhau'r cam yma, rhaid i chi berchen gwybodaeth am eich gweinydd gronfa ddata (\"llinyn gyswllt\").
\n Cysylltwch â'ch darparwr gwe (ISP) os oes angen.\n Os ydych chi'n gosod ar beiriant leol neu weinydd, efallai bydd angen gwybodaeth o'ch gweinyddwr system arnoch.", databaseUpgrade: @@ -1309,14 +1307,6 @@ export default { users: 'Defnyddwyr', marketplace: 'Marchnad', }, - help: { - tours: 'Teithiau', - theBestUmbracoVideoTutorials: 'Y fideos tiwtorial Umbraco gorau', - umbracoForum: 'Ymweld â our.umbraco.com', - umbracoTv: 'Ymweld â umbraco.tv', - umbracoLearningBase: 'Gwyliwch ein fideos tiwtorial am ddim', - umbracoLearningBaseDescription: 'ar Ganolfan Ddysgu Umbraco', - }, settings: { defaulttemplate: 'Templed diofyn', importDocumentTypeHelp: @@ -2325,22 +2315,6 @@ export default { '\n

Eisiau meistroli Umbraco? Treuliwch gwpl o funudau yn dysgu rhai o\'r arferion gorau gan wylio un o\'r fideos hyn am sut i ddefnyddio Umbraco. Ac ymweld â umbraco.tv am fwy o fideos am Umbraco

\n ', getStarted: 'I roi cychwyn i chi', }, - settingsDashboard: { - start: 'Dechrau yma', - startDescription: - "Mae'r adran hon yn cynnwys y blociau adeiladu am eich safle Umbraco. Dilyn y dolenni isod i ddarganfod fwy am weithio gyda'r eitemau yn yr adran Gosodiadau", - more: 'Ddarganfod fwy', - bulletPointOne: - '\n Darllenwch fwy am weithio efo\'r eitemau yn yr adran Gosodiadau fewn yr adran Dogfennaeth o Our Umbraco\n ', - bulletPointTwo: - '\n Gofynnwch gwestiwn yn y Fforwm Cymunedol\n ', - bulletPointFour: - '\n Darganfyddwch fwy am ein hoffer hybu cynhyrchiant a chefnogaeth fasnachol\n ', - bulletPointFive: - '\n Darganfyddwch fwy am gyfleoedd hyfforddi ac ardystio\n ', - bulletPointTutorials: - '\n Gwyliwch ein fideos tiwtorial rhad ac am ddim ar Ganolfan Ddysgu Umbraco\n ', - }, startupDashboard: { fallbackHeadline: "Croeso i'r SRC cyfeillgar", fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/da.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/da.ts index 02b918c910..d0f96464b3 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/da.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/da.ts @@ -1058,8 +1058,6 @@ export default { databaseInstall: '\n Klik på installér knappen for at installere Umbraco %0% databasen\n ', databaseInstallDone: 'Umbraco %0% er nu blevet kopieret til din database. Tryk på Næste for at fortsætte.', - databaseNotFound: - '

Databasen er ikke fundet. Kontrollér venligst at informationen i database forbindelsesstrengen i "web.config" filen er korrekt.

\n

For at fortsætte bedes du venligst rette "web.config" filen (ved at bruge Visual Studio eller dit favoritprogram), scroll til bunden, tilføj forbindelsesstrengen til din database i feltet som hedder "umbracoDbDSN" og gem filen.

Klik på Forsøg igen knappen når du er færdig.
Mere information om at redigere web.config her.

', databaseText: 'For at afslutte dette skridt er du nødt til at have nogle informationer om din database parat ("database forbindelsesstrengen").
Kontakt venligst din ISP hvis det er nødvendigt. Hvis du installerer på en lokal maskine eller server kan du muligvis få informationerne fra din systemadministrator.', databaseUpgrade: @@ -1418,14 +1416,6 @@ export default { translation: 'Oversættelse', users: 'Brugere', }, - help: { - tours: 'Tours', - theBestUmbracoVideoTutorials: 'De bedste Umbraco video tutorials', - umbracoForum: 'Besøg our.umbraco.com', - umbracoTv: 'Besøg umbraco.tv', - umbracoLearningBase: 'Watch our free tutorial videos', - umbracoLearningBaseDescription: 'on the Umbraco Learning Base', - }, settings: { defaulttemplate: 'Standardskabelon', importDocumentTypeHelp: @@ -2715,19 +2705,11 @@ export default { profilerEnabledDescription: "\n

\n Umbraco currently does not run in debug mode, so you can't use the built-in profiler. This is how it should be for a production site.\n

\n

\n Debug mode is turned on by setting Umbraco:CMS:Hosting:Debug to true in appsettings.json, appsettings.{Environment}.json or via an environment variable.\n

\n ", }, - settingsDashboardVideos: { - trainingHeadline: 'Hours of Umbraco training videos are only a click away', - trainingDescription: - '\n

Want to master Umbraco? Spend a couple of minutes learning some best practices by watching one of these videos about using Umbraco. And visit umbraco.tv for even more Umbraco videos

\n ', - learningBaseDescription: - '

Vil du mestre Umbraco? Brug et par minutter på at lære nogle best practices ved at besøge Umbraco Learning Base YouTube-kanalen. Her finder du en masse videoer, der dækker mange aspekter af Umbraco.

', - getStarted: 'To get you started', - }, settingsDashboard: { documentationHeader: 'Dokumentation', documentationDescription: 'Læs mere om at arbejde med elementerne i Indstillinger i vores Dokumentation.', communityHeader: 'Community', - communityDescription: 'Stil et spørgsmål i community forummet eller i vores Discord community', + communityDescription: 'Stil et spørgsmål i community forummet', trainingHeader: 'Træning', trainingDescription: 'Se mulighederne for real-life træning og certificering', supportHeader: 'Support', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/de.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/de.ts index 071dae12ee..3e23a5355c 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/de.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/de.ts @@ -1274,14 +1274,6 @@ export default { translation: 'Übersetzung', users: 'Benutzer', }, - help: { - tours: 'Touren', - theBestUmbracoVideoTutorials: 'Die besten Umbraco-Video-Tutorials', - umbracoForum: 'Besuche our.umbraco.com', - umbracoTv: 'Besuche umbraco.tv', - umbracoLearningBase: 'Schaue gratis Tutorials', - umbracoLearningBaseDescription: 'von Umbraco Learning Base', - }, settings: { defaulttemplate: 'Standardvorlage', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts index 7101a54399..c674813e1d 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts @@ -48,8 +48,6 @@ export default { color: 'Text color', }, installer: { - databaseNotFound: - '

Database not found! Please check that the information in the "connection string" of the "web.config" file is correct.

To proceed, please edit the "web.config" file (using Visual Studio or your favorite text editor), scroll to the bottom, add the connection string for your database in the key named "UmbracoDbDSN" and save the file.

Click the retry button when done.
More information on editing web.config here.

', showLabelDescription: 'Displays colored field and a label for each color in the color picker, rather than just a colored field.', }, diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts index 1d70a6ab6d..b93b314941 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en.ts @@ -1066,8 +1066,6 @@ export default { databaseHeader: 'Database configuration', databaseInstall: 'Press the install button to install the Umbraco %0% database', databaseInstallDone: 'Umbraco %0% has now been copied to your database. Press Next to proceed.', - databaseNotFound: - '

Database not found! Please check that the information in the "connection string" of the "web.config" file is correct.

To proceed, please edit the "web.config" file (using Visual Studio or your favourite text editor), scroll to the bottom, add the connection string for your database in the key named "UmbracoDbDSN" and save the file.

Click the retry button when done.
More information on editing web.config here.

', databaseText: 'To complete this step, you must know some information regarding your database server ("connection string").
Please contact your ISP if necessary. If you\'re installing on a local machine or server you might need information from your system administrator.', databaseUpgrade: @@ -1430,14 +1428,6 @@ export default { translation: 'Translation', users: 'Users', }, - help: { - tours: 'Tours', - theBestUmbracoVideoTutorials: 'The best Umbraco video tutorials', - umbracoForum: 'Visit our.umbraco.com', - umbracoTv: 'Visit umbraco.tv', - umbracoLearningBase: 'Watch our free tutorial videos', - umbracoLearningBaseDescription: 'on the Umbraco Learning Base', - }, settings: { defaulttemplate: 'Default template', importDocumentTypeHelp: @@ -2541,19 +2531,11 @@ export default { profilerEnabledDescription: "

Umbraco currently does not run in debug mode, so you can't use the built-in profiler. This is how it should be for a production site.

Debug mode is turned on by setting Umbraco:CMS:Hosting:Debug to true in appsettings.json, appsettings.{Environment}.json or via an environment variable.

", }, - settingsDashboardVideos: { - trainingHeadline: 'Hours of Umbraco training videos are only a click away', - trainingDescription: - '

Want to master Umbraco? Spend a couple of minutes learning some best practices by watching one of these videos about using Umbraco. And visit umbraco.tv for even more Umbraco videos

', - learningBaseDescription: - '

Want to master Umbraco? Spend a few minutes learning some best practices by visiting the Umbraco Learning Base Youtube channel. Here you can find a bunch of video material covering many aspects of Umbraco.

', - getStarted: 'To get you started', - }, settingsDashboard: { documentationHeader: 'Documentation', documentationDescription: 'Read more about working with the items in Settings in our Documentation.', communityHeader: 'Community', - communityDescription: 'Ask a question in the community forum or our Discord community.', + communityDescription: 'Ask a question in the community forum.', trainingHeader: 'Training', trainingDescription: 'Find out about real-life training and certification opportunities', supportHeader: 'Support', @@ -2573,18 +2555,17 @@ export default { "Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible.", }, welcomeDashboard: { - ourUmbracoHeadline: 'Our Umbraco - The Friendliest Community', - ourUmbracoDescription: - "Our Umbraco, the official community site, is your one-stop-shop for everything Umbraco. Whether you need a question answered, cool plugins, or a guide of how to do something in Umbraco, the world's best and friendliest community is just a click away.", - ourUmbracoButton: 'Visit Our Umbraco', + umbracoForumHeadline: 'The Umbraco community forum', + umbracoForumDescription: 'The forum is the central hub for the Umbraco developer community. This is where developers, integrators, and contributors come together to ask questions, share knowledge, and collaborate on all things Umbraco.', + umbracoForumButton: 'Visit the Umbraco community forum', + umbracoCommunityHeadline: 'The Umbraco community site', + umbracoCommunityDescription: 'The gathering place for all things Umbraco. Whether you write, teach, test, give feedback, or want to connect with others, there’s a way for you to be part of the Friendly Umbraco community.', documentationHeadline: 'Documentation', - documentationDescription: 'Find the answers to all your Umbraco questions', - communityHeadline: 'Community', - communityDescription: 'Get support and inspiration from driven Umbraco experts', + documentationDescription: 'Your guide to everything Umbraco. Learn how to get started, explore new features, and discover best practices through clear examples and explanations.', resourcesHeadline: 'Resources', - resourcesDescription: 'Free video tutorials to jumpstart your journey with the CMS', + resourcesDescription: 'Explore Umbraco resources to learn, build, and grow your skills. Find blogs, tutorials, demos, documentation, and videos to help you make the most of Umbraco.', trainingHeadline: 'Training', - trainingDescription: 'Real-life training and official Umbraco certifications', + trainingDescription: 'Master Umbraco with official training. Get practical experience through instructor-led courses and earn certifications that help you grow your skills and career.', }, blockEditor: { headlineCreateBlock: 'Pick Element Type', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/es.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/es.ts index 06c9716958..2e8ca5780b 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/es.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/es.ts @@ -901,9 +901,6 @@ export default { help: 'Ayuda', packages: 'Paquetes', }, - help: { - theBestUmbracoVideoTutorials: 'Los mejores tutoriales en video para Umbraco', - }, settings: { defaulttemplate: 'Plantilla por defecto', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/fr.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/fr.ts index 62ee5fac0d..7ac00a823c 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/fr.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/fr.ts @@ -1129,9 +1129,6 @@ export default { translation: 'Traduction', users: 'Utilisateurs', }, - help: { - theBestUmbracoVideoTutorials: 'Les meilleurs tutoriels vidéo Umbraco', - }, settings: { defaulttemplate: 'Modèle par défaut', importDocumentTypeHelp: @@ -1947,28 +1944,6 @@ export default { activateByDefault: 'Activer le profileur par défaut', reminder: 'Rappel amical', }, - settingsDashboardVideos: { - trainingHeadline: "Des heures de vidéos de formation Umbraco ne sont qu'à un clic d'ici", - trainingDescription: - '\n

Vous voulez maîtriser Umbraco? Passez quelques minutes à apprendre certaines des meilleures pratiques en regardant une de ces vidéos à propos de l\'utilisation d\'Umbraco. Et visitez umbraco.tv pour encore plus de vidéos Umbraco

\n ', - getStarted: 'Pour démarrer', - }, - settingsDashboard: { - start: 'Commencer ici', - startDescription: - "Cette section contient les blocs fondamentaux pour votre site Umbraco. Suivez les liens ci-dessous pour en apprendre d'avantage sur la façon de travailler avec les éléments de la section Settings", - more: 'En savoir plus', - bulletPointOne: - '\n Lisez-en plus sur la façon de travailler avec les éléments dans la section Settings dans la section Documentation de Our Umbraco\n ', - bulletPointTwo: - '\n Posez une question dans le Community Forum\n ', - bulletPointThree: - '\n Regardez nos tutoriels vidéos (certains sont gratuits, certains nécessitent un abonnement)\n ', - bulletPointFour: - '\n Découvrez nos outils d\'amélioration de productivité et notre support commercial\n ', - bulletPointFive: - '\n Découvrez nos possibilités de formations et certifications\n ', - }, treeSearch: { searchResult: 'élément retrouvé', searchResults: 'éléments retrouvés', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/hr.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/hr.ts index 13c42aaaac..36b2db7906 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/hr.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/hr.ts @@ -891,8 +891,6 @@ export default { databaseInstall: '\n Pritisnite Instaliraj za instalaciju Umbraco %0% baze podataka\n ', databaseInstallDone: 'Umbraco %0% je sada kopiran u vašu bazu podataka. Pritisnite Dalje da nastavite.', - databaseNotFound: - '

Baza podataka nije pronađena! Provjerite jesu li informacije u "konekcijskom string" u "web.config" datoteci ispravne.

\n

Da nastavite, uredite "web.config" datoteku. (koristeći Visual Studio ili vaš omiljeni uređivač teksta), skorlajte do dna, dodajte konekcijski string za vašu bazu podataka u svojstvo nazvan "UmbracoDbDSN" i spremite datoteku.

\n

\n Kliknite na gumb pokušaj ponovo kada završite.
\n\t\t\t \n\t\t\t Više informacija o uređivanju web.config datoteke možete pronaći ovdje.

', databaseText: 'Da bi dovršili ovaj korak, morate znati neke informacije o vašem poslužitelju baze podataka ("konekcijski string").
\n Molimo kontaktirajte svog ISP-a ako je potrebno.\n Ako instalirate na lokalnoj mašini ili serveru, možda će vam trebati informacije od administratora sistema.', databaseUpgrade: @@ -1260,14 +1258,6 @@ export default { translation: 'Prijevodi', users: 'Korisnici', }, - help: { - tours: 'Ture', - theBestUmbracoVideoTutorials: 'Najbolji Umbraco video tutorijali', - umbracoForum: 'Posjetite our.umbraco.com', - umbracoTv: 'Posjetite umbraco.tv', - umbracoLearningBase: 'Pogledajte naše besplatne video tutorijale', - umbracoLearningBaseDescription: 'na Umbraco Learning Base', - }, settings: { defaulttemplate: 'Zadani predložak', importDocumentTypeHelp: @@ -2194,30 +2184,6 @@ export default { profilerEnabledDescription: '\n

\n Umbraco trenutno ne radi u načinu za otklanjanje grešaka, tako da ne možete koristiti ugrađeni profiler. Ovako bi trebalo da bude za proizvodnu lokaciju.\n

\n

\n Režim za otklanjanje grešaka se uključuje podešavanjem Umbraco:CMS:Hosting:Debug na true u appsettings.json, appsettings.{Environment}.json ili preko varijable okruženja.\n

\n ', }, - settingsDashboardVideos: { - trainingHeadline: 'Sati Umbraco trening videa udaljeni su samo jedan klik', - trainingDescription: - '\n

Želite naučiti Umbraco? Provedite nekoliko minuta učeći najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a. I posjetite umbraco.tv za još više Umbraco videa

\n ', - learningBaseDescription: - '\n

Želite savladati Umbraco? Provedite nekoliko minuta učeći najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

\n ', - getStarted: 'Za početak', - }, - settingsDashboard: { - start: 'Krenite ovdje', - startDescription: - 'Ovaj odjeljak sadrži blokove za izgradnju vaše Umbraco stranice. Slijedite dolje\n navedene veze linkova kako biste saznali više o radu sa stavkama u odjeljku Postavke\n ', - more: 'Saznajte više', - bulletPointOne: - '\n Pročitajte više o radu sa stavkama u Postavkama u odjeljku Dokumentacija na Our Umbraco\n ', - bulletPointTwo: - '\n Postavite pitanje na Forumu zajednice\n ', - bulletPointTutorials: - '\n Gledajte besplatno video tutorijale na Umbraco Learning Base\n ', - bulletPointFour: - '\n Saznajte više o našim alatima za povećanje produktivnosti i komercijalna podrška\n ', - bulletPointFive: - '\n Saznajte nešto o mogućnosti stvarne obuke i certifikacije\n ', - }, startupDashboard: { fallbackHeadline: 'Dobrodošli u The Friendly CMS', fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/it.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/it.ts index ac59d1457f..93d63be411 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/it.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/it.ts @@ -1231,12 +1231,6 @@ export default { translation: 'Traduzione', users: 'Utenti', }, - help: { - tours: 'Tours', - theBestUmbracoVideoTutorials: 'I migliori video tutorial su Umbraco', - umbracoForum: 'Visita our.umbraco.com', - umbracoTv: 'Visita umbraco.tv', - }, settings: { defaulttemplate: 'Template di base', importDocumentTypeHelp: @@ -2204,28 +2198,6 @@ export default { profilerEnabledDescription: '\n

\n Umbraco attualmente non viene eseguito in modalità debug, quindi non è possibile utilizzare il profiler integrato. Questo è come dovrebbe essere per un sito produttivo.\n

\n

\n La modalità di debug viene attivata impostando debug="true" nell\'elemento <compilation /> in web.config.\n

\n ', }, - settingsDashboardVideos: { - trainingHeadline: 'Ore di videoallenamenti su Umbraco sono a solo un click da te', - trainingDescription: - '\n

Vuoi padroneggiare Umbraco? Dedica un paio di minuti all\'apprendimento di alcune best practice guardando uno di questi video sull\'utilizzo di Umbraco. Visita umbraco.tv per altri video su Umbraco

\n ', - getStarted: 'Per iniziare', - }, - settingsDashboard: { - start: 'Inizia da qui!', - startDescription: - 'Questa sezione contiene gli elementi costitutivi del tuo sito Umbraco. Segui i collegamenti sottostanti per saperne di più su come lavorare con gli elementi nella sezione Impostazioni', - more: 'Scopri di più', - bulletPointOne: - '\n Maggiori informazioni su come lavorare con gli elementi in Impostazioni nella documentazione di Our Umbraco\n ', - bulletPointTwo: - '\n Fai una domanda nel Community Forum\n ', - bulletPointThree: - '\n Guarda i nostri video tutorial (alcuni sono gratuiti, altri richiedono un abbonamento)\n ', - bulletPointFour: - '\n Scopri di più sui nostri strumenti per aumentare la produttività e il supporto commerciale\n ', - bulletPointFive: - '\n Scopri di più sulle opportunità di certificazione\n ', - }, startupDashboard: { fallbackHeadline: "Benvenuto nell'amichevole CMS", fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/ja.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/ja.ts index 622c46edc8..04fd21aa47 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/ja.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/ja.ts @@ -699,9 +699,6 @@ export default { help: 'ヘルプ', forms: 'フォーム', }, - help: { - theBestUmbracoVideoTutorials: '動画によるチュートリアル', - }, settings: { defaulttemplate: '既定のテンプレート', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/nb.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/nb.ts index a619a7b3a8..6741939164 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/nb.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/nb.ts @@ -847,9 +847,6 @@ export default { help: 'Hjelp', forms: 'Skjemaer', }, - help: { - theBestUmbracoVideoTutorials: 'De beste Umbraco opplæringsvideoer', - }, settings: { defaulttemplate: 'Standardmal', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/nl.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/nl.ts index 87b47076e9..f487772ea2 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/nl.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/nl.ts @@ -1172,12 +1172,6 @@ export default { translation: 'Vertaling', users: 'Gebruikers', }, - help: { - tours: 'Rondleidingen', - theBestUmbracoVideoTutorials: 'De beste Umbraco video tutorials', - umbracoForum: 'Bezoek our.umbraco.com', - umbracoTv: 'Bezoek umbraco.tv', - }, settings: { defaulttemplate: 'Standaard template', importDocumentTypeHelp: @@ -2055,28 +2049,6 @@ export default { activateByDefault: 'Activeer de profiler standaard', reminder: 'Vriendelijke herinnering', }, - settingsDashboardVideos: { - trainingHeadline: "Je bent slechts een klik verwijderd van uren aan Umbraco trainingvideo's.", - trainingDescription: - '\n

Wil je Umbraco onder de knie krijgen? Besteed een paar minuten aan het leren van enkele best practices door een van deze video\'s over het gebruik van Umbraco te bekijken. Bezoek umbraco.tv voor meer Umbraco videos

\n ', - getStarted: 'Om je op weg te helpen', - }, - settingsDashboard: { - start: 'Start hier', - startDescription: - 'Deze sectie bevat de bouwstenen voor jouw Umbraco-site. Volg de onderstaande links\n voor meer informatie over het werken met de items in de sectie Instellingen\n ', - more: 'Meer te weten komen', - bulletPointOne: - '\n Lees meer over het werken met de items in de sectie Instellingen in het Documentatiegedeelte van Our Umbraco\n ', - bulletPointTwo: - '\n Stel een vraag op het Community Forum\n ', - bulletPointThree: - '\n Bekijk onze instructievideo\'s (sommige zijn gratis, andere vereisen een abonnement)\n ', - bulletPointFour: - '\n Lees meer over onze productiviteitsverhogende programma\'s en commerciële ondersteuning\n ', - bulletPointFive: - '\n Lees meer over real-life training en certificering opportuniteiten\n ', - }, startupDashboard: { fallbackHeadline: 'Welkom bij Het Vriendelijke CMS', fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/pl.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/pl.ts index cd22efb437..855442f04b 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/pl.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/pl.ts @@ -864,9 +864,6 @@ export default { help: 'Pomoc', forms: 'Formularze', }, - help: { - theBestUmbracoVideoTutorials: 'Najlepsze filmy-samouczki Umbraco', - }, settings: { defaulttemplate: 'Domyślny szablon', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/pt.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/pt.ts index 9381e7e6c1..e4410432ea 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/pt.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/pt.ts @@ -1046,8 +1046,6 @@ export default { databaseInstall: 'Pressione o botão instalar para instalar a base de dados Umbraco %0%', databaseInstallDone: 'O Umbraco %0% foi agora copiado para a sua base de dados. Pressione Seguinte para prosseguir.', - databaseNotFound: - '

Base de dados não encontrada! Por favor, verifique se a informação na "connection string" do ficheiro "web.config" está correta.

Para prosseguir, por favor edite o ficheiro "web.config" (usando o Visual Studio ou o seu editor de texto favorito), desloque-se até ao final, adicione a cadeia de ligação para a sua base de dados na chave chamada "UmbracoDbDSN" e guarde o ficheiro.

Clique no botão tentar novamente quando terminar.
Mais informação sobre como editar o web.config aqui.

', databaseText: 'Para completar este passo, deve saber alguma informação sobre o seu servidor de base de dados ("connection string").
Por favor, contacte o seu ISP, se necessário. Se estiver a instalar numa máquina ou servidor local, poderá precisar de informação do seu administrador de sistema.', databaseUpgrade: @@ -1408,14 +1406,6 @@ export default { translation: 'Tradução', users: 'Utilizadores', }, - help: { - tours: 'Visitas Guiadas', - theBestUmbracoVideoTutorials: 'Os melhores tutoriais em vídeo do Umbraco', - umbracoForum: 'Visite our.umbraco.com', - umbracoTv: 'Visite umbraco.tv', - umbracoLearningBase: 'Veja os nossos tutoriais em vídeo gratuitos', - umbracoLearningBaseDescription: 'na Base de Aprendizagem Umbraco', - }, settings: { defaulttemplate: 'Modelo predefinido', importDocumentTypeHelp: @@ -2527,19 +2517,11 @@ export default { profilerEnabledDescription: '

O Umbraco não está atualmente a ser executado em modo de debug, por isso não pode usar o criador de perfil integrado. É assim que deve ser para um site de produção.

O modo de debug é ativado definindo Umbraco:CMS:Hosting:Debug como true em appsettings.json, appsettings.{Environment}.json ou através de uma variável de ambiente.

', }, - settingsDashboardVideos: { - trainingHeadline: 'Horas de vídeos de formação Umbraco estão apenas a um clique de distância', - trainingDescription: - '

Quer dominar o Umbraco? Gaste alguns minutos a aprender algumas das melhores práticas vendo um destes vídeos sobre como usar o Umbraco. E visite umbraco.tv para ainda mais vídeos Umbraco

', - learningBaseDescription: - '

Quer dominar o Umbraco? Gaste alguns minutos a aprender algumas das melhores práticas visitando o canal de Youtube da Base de Aprendizagem Umbraco. Aqui pode encontrar muito material em vídeo cobrindo muitos aspetos do Umbraco.

', - getStarted: 'Para começar', - }, settingsDashboard: { documentationHeader: 'Documentação', documentationDescription: 'Leia mais sobre como trabalhar com os itens nas Definições na nossa Documentação.', communityHeader: 'Comunidade', - communityDescription: 'Faça uma pergunta no fórum da comunidade ou na nossa comunidade Discord.', + communityDescription: 'Faça uma pergunta no fórum da comunidade.', trainingHeader: 'Formação', trainingDescription: 'Descubra oportunidades de formação presencial e certificação', supportHeader: 'Suporte', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/ru.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/ru.ts index d3ef02537f..0592a83ece 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/ru.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/ru.ts @@ -704,9 +704,6 @@ export default { notificationEmailsCheckErrorMessage: 'Адрес для отправки уведомлений все еще установлен в значение по-умолчанию %0%.', }, - help: { - theBestUmbracoVideoTutorials: 'Лучшие обучающие видео-курсы по Umbraco', - }, imagecropper: { reset: 'Сбросить', }, diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/tr.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/tr.ts index 8db426f2a6..25bebf16d8 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/tr.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/tr.ts @@ -1123,12 +1123,6 @@ export default { translation: 'Çeviri', users: 'Kullanıcılar', }, - help: { - tours: 'Turlar', - theBestUmbracoVideoTutorials: 'En iyi Umbraco video eğitimleri', - umbracoForum: 'our.umbraco.com adresini ziyaret edin', - umbracoTv: "umbraco.tv'yi ziyaret edin", - }, settings: { defaulttemplate: 'Varsayılan şablon', importDocumentTypeHelp: @@ -1924,28 +1918,6 @@ export default { activateByDefault: 'Profil oluşturucuyu varsayılan olarak etkinleştirin', reminder: 'Kolay hatırlatma', }, - settingsDashboardVideos: { - trainingHeadline: 'Umbraco eğitim videolarının saatleri yalnızca bir tıklama uzaklıkta', - trainingDescription: - '\n

Umbraco\'da ustalaşmak mı istiyorsunuz? Umbraco\'nun kullanımıyla ilgili bu videolardan birini izleyerek en iyi uygulamaları öğrenmek için birkaç dakikanızı ayırın. Daha da fazla Umbraco videosu için umbraco.tv adresini ziyaret edin

\n ', - getStarted: 'Başlamak için', - }, - settingsDashboard: { - start: 'Buradan başlayın', - startDescription: - 'Bu bölüm, Umbraco siteniz için yapı taşlarını içerir. Ayarlar bölümündeki öğelerle çalışma hakkında daha fazla bilgi edinmek için aşağıdaki bağlantıları izleyin', - more: 'Daha fazla bilgi edinin', - bulletPointOne: - '\n Ayarlar öğelerle çalışma hakkında daha fazla bilgi edinin Our Umbraco\'nun Dokümantasyon bölümünde \n ', - bulletPointTwo: - '\n Topluluk Forumu\'nda bir soru sorun\n ', - bulletPointThree: - '\n Eğitici videolarımızı izleyin (bazıları ücretsiz, bazıları abonelik gerektirir)\n ', - bulletPointFour: - '\n Üretkenliği artıran araçlarımız ve ticari desteğimiz hakkında bilgi edinin\n ', - bulletPointFive: - '\n Gerçek hayattaki eğitim ve sertifika fırsatları hakkında bilgi edinin\n ', - }, startupDashboard: { fallbackHeadline: "Dost Canlısı CMS'e Hoş Geldiniz", fallbackDescription: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/uk.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/uk.ts index 911106f0e3..3eb6703a25 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/uk.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/uk.ts @@ -702,9 +702,6 @@ export default { notificationEmailsCheckErrorMessage: 'Адреса для надсилання повідомлень все ще встановлена за замовчуванням %0%.', }, - help: { - theBestUmbracoVideoTutorials: 'Найкращі навчальні відео-курси з Umbraco', - }, imagecropper: { reset: 'Скинути', }, diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/vi.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/vi.ts index be1340c20b..4eb741360a 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/vi.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/vi.ts @@ -1051,8 +1051,6 @@ export default { databaseInstall: 'Nhấn nút cài đặt để cài đặt cơ sở dữ liệu Umbraco %0%', databaseInstallDone: 'Umbraco %0% đã được sao chép vào cơ sở dữ liệu của bạn. Nhấn Tiếp theo để tiếp tục.', - databaseNotFound: - '

Không tìm thấy cơ sở dữ liệu! Vui lòng kiểm tra lại thông tin trong "connection string" của tệp "web.config".

Để tiếp tục, hãy chỉnh sửa tệp "web.config" (sử dụng Visual Studio hoặc trình soạn thảo yêu thích của bạn), cuộn xuống cuối, thêm chuỗi kết nối cho cơ sở dữ liệu của bạn vào khóa có tên "UmbracoDbDSN" và lưu tệp.

Nhấn nút thử lại khi hoàn tất.
Xem thêm thông tin về chỉnh sửa web.config tại đây.

', databaseText: 'Để hoàn tất bước này, bạn cần biết một số thông tin về máy chủ cơ sở dữ liệu của mình ("connection string").
Vui lòng liên hệ với nhà cung cấp dịch vụ (ISP) nếu cần. Nếu bạn đang cài đặt trên máy tính hoặc máy chủ nội bộ, bạn có thể cần thông tin từ quản trị viên hệ thống.', databaseUpgrade: @@ -1418,14 +1416,6 @@ export default { translation: 'Dịch thuật', users: 'Người dùng', }, - help: { - tours: 'Hướng dẫn', - theBestUmbracoVideoTutorials: 'Các video hướng dẫn Umbraco tốt nhất', - umbracoForum: 'Truy cập our.umbraco.com', - umbracoTv: 'Truy cập umbraco.tv', - umbracoLearningBase: 'Xem các video hướng dẫn miễn phí của chúng tôi', - umbracoLearningBaseDescription: 'trên Umbraco Learning Base', - }, settings: { defaulttemplate: 'Mẫu mặc định', importDocumentTypeHelp: @@ -2529,19 +2519,11 @@ export default { profilerEnabledDescription: '

Umbraco hiện tại không chạy ở chế độ gỡ lỗi, vì vậy bạn không thể sử dụng trình phân tích tích hợp. Đây là cách mà nó nên hoạt động cho một trang web sản xuất.

Chế độ gỡ lỗi được bật bằng cách đặt Umbraco:CMS:Hosting:Debug thành true trong appsettings.json, appsettings.{Environment}.json hoặc thông qua một biến môi trường.

', }, - settingsDashboardVideos: { - trainingHeadline: 'Hàng giờ video hướng dẫn Umbraco chỉ cách bạn một cú nhấp chuột', - trainingDescription: - '

Bạn muốn làm chủ Umbraco? Hãy dành vài phút để tìm hiểu một số phương pháp hay nhất bằng cách xem một trong những video này về việc sử dụng Umbraco. Và hãy truy cập umbraco.tv để xem thêm nhiều video về Umbraco hơn

', - learningBaseDescription: - '

Bạn muốn làm chủ Umbraco? Hãy dành vài phút để tìm hiểu một số phương pháp hay nhất bằng cách truy cập kênh Youtube Umbraco Learning Base. Tại đây, bạn có thể tìm thấy rất nhiều tài liệu video bao quát nhiều khía cạnh của Umbraco.

', - getStarted: 'Để giúp bạn bắt đầu', - }, settingsDashboard: { documentationHeader: 'Tài liệu', documentationDescription: 'Đọc thêm về cách làm việc với các mục trong Cài đặt trong Tài liệu của chúng tôi.', communityHeader: 'Cộng đồng', - communityDescription: 'Đặt câu hỏi trong diễn đàn cộng đồng hoặc cộng đồng Discord của chúng tôi.', + communityDescription: 'Đặt câu hỏi trong diễn đàn cộng đồng.', trainingHeader: 'Đào tạo', trainingDescription: 'Tìm hiểu về các khóa đào tạo và chứng nhận trong thực tế', supportHeader: 'Hỗ trợ', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/zh-tw.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/zh-tw.ts index 3d08d514a5..af9e008988 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/zh-tw.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/zh-tw.ts @@ -711,9 +711,6 @@ export default { help: '說明', forms: '表單', }, - help: { - theBestUmbracoVideoTutorials: '最好的Umbraco影片教學', - }, settings: { defaulttemplate: '預設範本', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/zh.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/zh.ts index 41809f04d0..04b00d0cf4 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/zh.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/zh.ts @@ -708,9 +708,6 @@ export default { help: '帮助', forms: '窗体', }, - help: { - theBestUmbracoVideoTutorials: '最佳 Umbraco 视频教程', - }, settings: { defaulttemplate: '默认模板', importDocumentTypeHelp: diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/package.json b/src/Umbraco.Web.UI.Client/src/packages/core/package.json index 0574513f6e..8df750a2a5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/package.json +++ b/src/Umbraco.Web.UI.Client/src/packages/core/package.json @@ -10,7 +10,7 @@ "@types/diff": "^7.0.2", "diff": "^7.0.0", "uuid": "^13.0.0", - "@hey-api/openapi-ts": "0.85.0" + "@hey-api/openapi-ts": "^0.85.0" }, "devDependencies": { "lucide-static": "^0.544.0", diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/constant.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/constant.ts new file mode 100644 index 0000000000..0cf82c236e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/constant.ts @@ -0,0 +1 @@ +export const UMB_PICKER_DATA_SOURCE_TYPE = 'Umb.DataSourceType.Picker'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/index.ts index ca0e12ded8..6203532024 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/picker-data-source/index.ts @@ -1,4 +1,5 @@ export * from './collection-data-source/is-picker-collection-data-source.guard.js'; +export * from './constant.js'; export * from './searchable-data-source/is-picker-searchable.data-source.guard.js'; export * from './tree-data-source/is-picker-tree-data-source.guard.js'; export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/extensions/section.extension.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/extensions/section.extension.ts index e83fffe287..c0f8f8e581 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/extensions/section.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/extensions/section.extension.ts @@ -12,4 +12,5 @@ export interface ManifestSection export interface MetaSection { label: string; pathname: string; + preventUrlRetention?: boolean; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/help/menu/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/help/menu/manifests.ts index 40f15846cc..1b82deee1a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/help/menu/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/help/menu/manifests.ts @@ -28,14 +28,14 @@ export const manifests: Array = [ { type: 'menuItem', kind: 'link', - alias: 'Umb.MenuItem.Help.CommunityWebsite', - name: 'Community Website Help Menu Item', + alias: 'Umb.MenuItem.Help.CommunityForum', + name: 'The Community Forum Help Menu Item', weight: 100, meta: { menus: [UMB_HELP_MENU_ALIAS], - label: 'Community Website', + label: 'Community Forum', icon: 'icon-hearts', - href: 'https://our.umbraco.com?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our', + href: 'https://forum.umbraco.com/', }, conditions: [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/entry-point.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/entry-point.ts index 5632c01f5a..839c9927a5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/entry-point.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/entry-point.ts @@ -1,5 +1,6 @@ import { manifests as entityDataPickerManifests } from './manifests.js'; import type { UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api'; +import { UMB_PICKER_DATA_SOURCE_TYPE } from '@umbraco-cms/backoffice/picker-data-source'; import type { ManifestPropertyEditorDataSource } from '@umbraco-cms/backoffice/property-editor-data-source'; export const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => { @@ -11,7 +12,7 @@ export const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => { extensionRegistry .byTypeAndFilter<'propertyEditorDataSource', ManifestPropertyEditorDataSource>( 'propertyEditorDataSource', - (manifest) => manifest.dataSourceType === 'picker', + (manifest) => manifest.dataSourceType === UMB_PICKER_DATA_SOURCE_TYPE, ) .subscribe((pickerPropertyEditorDataSource) => { if (pickerPropertyEditorDataSource.length > 0 && !initialized) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/Umbraco.EntityDataPicker.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/Umbraco.EntityDataPicker.ts new file mode 100644 index 0000000000..68c7a708a2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/Umbraco.EntityDataPicker.ts @@ -0,0 +1,21 @@ +export const manifests: Array = [ + { + type: 'propertyEditorSchema', + name: 'Entity Data Picker', + alias: 'Umbraco.EntityDataPicker', + meta: { + defaultPropertyEditorUiAlias: 'Umb.PropertyEditorUi.EntityDataPicker', + settings: { + properties: [ + { + alias: 'validationLimit', + label: 'Amount', + propertyEditorUiAlias: 'Umb.PropertyEditorUi.NumberRange', + config: [{ alias: 'validationRange', value: { min: 0, max: Infinity } }], + weight: 100, + }, + ], + }, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.ts index 64a7ef4820..a8611f0f9f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.ts @@ -128,7 +128,7 @@ export class UmbEntityDataPickerPropertyEditorUIElement // Ensure the value is of the correct type before setting it. if (Array.isArray(selection)) { - this.value = selection; + this.value = { ids: selection }; this.dispatchEvent(new UmbChangeEvent()); } else { throw new Error('Selection is not of type array. Cannot set property value.'); @@ -137,7 +137,7 @@ export class UmbEntityDataPickerPropertyEditorUIElement override render() { return html` import('./entity-data-picker-property-editor-ui.element.js'), - meta: { - label: 'Entity Data Picker', - icon: 'icon-page-add', - group: 'pickers', - propertyEditorSchemaAlias: 'Umbraco.Plain.Json', - supportsReadOnly: true, - supportsDataSource: { - enabled: true, - forDataSourceTypes: ['picker'], - }, - settings: { - properties: [ - // TODO: Move this to schema manifest when server can validate it - { - alias: 'validationLimit', - label: 'Amount', - propertyEditorUiAlias: 'Umb.PropertyEditorUi.NumberRange', - config: [{ alias: 'validationRange', value: { min: 0, max: Infinity } }], - weight: 100, - }, - ], +export const manifests: Array = [ + { + type: 'propertyEditorUi', + alias: 'Umb.PropertyEditorUi.EntityDataPicker', + name: 'Entity Data Picker Property Editor UI', + element: () => import('./entity-data-picker-property-editor-ui.element.js'), + meta: { + label: 'Entity Data Picker', + icon: 'icon-page-add', + group: 'pickers', + propertyEditorSchemaAlias: 'Umbraco.EntityDataPicker', + supportsReadOnly: true, + supportsDataSource: { + enabled: true, + forDataSourceTypes: [UMB_PICKER_DATA_SOURCE_TYPE], + }, }, }, -}; - -export const manifests: Array = [manifest]; + ...schemaManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/types.ts b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/types.ts index fa9bbf6564..fd72143a5a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/property-editors/entity-data-picker/property-editor/types.ts @@ -1 +1,3 @@ -export type UmbEntityDataPickerPropertyEditorValue = Array; +export type UmbEntityDataPickerPropertyEditorValue = { + ids: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/welcome/settings-welcome-dashboard.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/welcome/settings-welcome-dashboard.element.ts index 858736c514..d5362e98ff 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/welcome/settings-welcome-dashboard.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/welcome/settings-welcome-dashboard.element.ts @@ -32,11 +32,6 @@ export class UmbSettingsWelcomeDashboardElement extends UmbLitElement { href="https://forum.umbraco.com/" label=${this.localize.term('settingsDashboard_goForum')} target="_blank"> - diff --git a/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/umbraco-news-dashboard.element.ts b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/umbraco-news-dashboard.element.ts index bad9fc4497..35c7df3a7f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/umbraco-news-dashboard.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/umbraco-news-dashboard.element.ts @@ -42,9 +42,9 @@ export class UmbUmbracoNewsDashboardElement extends UmbLitElement { href: 'https://docs.umbraco.com/?utm_source=core&utm_medium=dashboard&utm_campaign=docs', }, { - name: this.localize.term('welcomeDashboard_communityHeadline'), - description: this.localize.term('welcomeDashboard_communityDescription'), - href: 'https://our.umbraco.com/?utm_source=core&utm_medium=dashboard&utm_content=text&utm_campaign=our_forum', + name: this.localize.term('welcomeDashboard_umbracoCommunityHeadline'), + description: this.localize.term('welcomeDashboard_umbracoCommunityDescription'), + href: 'https://community.umbraco.com/', }, { name: this.localize.term('welcomeDashboard_resourcesHeadline'), @@ -58,21 +58,21 @@ export class UmbUmbracoNewsDashboardElement extends UmbLitElement { }, ]; return html`