Reduce lookups needed in ConcurrentDictionaries and sort using List.Sort, make key removal O(1) by using hashsets and avoid duplicates, remove unneeded .ToList() and other minor tweaks
* Only prevent the unpublish or delete of a related item when configured to do so if it is related as a child, not as a parent (#18886)
* Only prevent the unpubkish or delete of a related item when configured to do so if it is related as a child, not as a parent.
* Fixed incorect parameter names.
* Fixed failing integration tests.
* Use using variable instead to reduce nesting
* Applied suggestions from code review.
* Used simple using statement throughout RelationService for consistency.
* Applied XML header comments consistently.
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Feature: highlight invariant doc with variant blocks is unsupported (#18806)
* mark variant blocks in invariant docs as invalid
* implement RTE Blocks
* Fix pagination for users restricted by start nodes (#18907)
* Fix pagination for users restricted by start nodes
* Default implementation to avoid breakage
* Review comments
* Fix failing test
* Add media start node tests
* Fix issue preventing blueprint derived values from being scaffolded (#18917)
* Fix issue preventing blueprint derived values from being scaffolded.
* fix manipulating frooen array
* compare with variantId as well
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* ci: add Azure Static Web Apps workflow file
on-behalf-of: @Azure opensource@microsoft.com
* ci: add Azure Static Web Apps workflow file
on-behalf-of: @Azure opensource@microsoft.com
* ci: add Azure Static Web Apps workflow file
on-behalf-of: @Azure opensource@microsoft.com
* Remove admin permission on user configuration, allowing users with user section access only to manaage users and groups. (#18848)
* Tiptap RTE: Style Menu extension kind (#18918)
* Adds 'styleMenu' Tiptap toolbar extension kind
* Adds icons for `<h4>` and `<p>` tags
* Adds commands to HTML Global Attributes extension
for setting the `class` and `id` attributes.
* Renamed "default-tiptap-toolbar-element.api.ts" file
The "element" part was confusing.
* Toolbar Menu: uses correct `item` value
* Cascading Menu: adds localization for the label
* Adds `label` attribute to UUI components
for accessibility.
* Toolbar Menu: uses correct `appearance` value
* Removed unrequired `api` from Style Select
* Destructs the `item.data` object
* Ensure has children reflects only items with folder children when folders only are queried. (#18790)
* Ensure has children reflects only items with folder children when folders only are queried.
* Added supression for change to integration test public code.
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Only apply validation on content update to variant cultures where the editor has permission for the culture (#18778)
* Only apply validation on content update to variant cultures where the editor has permission for the culture.
* Remove inadvertent comment updates.
* Fixed failing integration test.
* Adds ancestor ID details on document tree and collection responses (#18909)
* Populate ancestor keys on document tree response items.
* Populate ancestor keys on document collection response items.
* Update OpenApi.json
* Use array of objects rather than Ids for the ancestor collection.
* Update OpenApi.json.
* Move publish with descendants to a background task with polling (#18497)
* Use background queue for database cache rebuild and track rebuilding status.
* Updated OpenApi.json and client-side types.
* Updated client to poll for completion of database rebuild.
* Move IBackgroundTaskQueue to core and prepare publish branch to run as background task.
* Endpoints for retrieval of status and result from branch publish operations.
* Poll and retrieve result for publish with descendants.
* Handled issues from testing.
* Rework to single controller for status and result.
* Updated client side sdk.
* OpenApi post dev merge gen
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Clear roots before rebuilding navigation dictionary (#18766)
* Clear roots before rebuilding navigation dictionary.
* Added tests to verify fix.
* Correct test implementation.
* Convert integration tests with method overloads into test cases.
* Integration test compatibility supressions.
* Fixes save of empty, invariant block list on variant content. (#18932)
* remove unnecessary code (#18927)
* V15/bugfix/fix route issue from 18859 (#18931)
* unique check
* unique for workspace empty path
* more unique routes
* Bump vite from 6.2.3 to 6.2.4 in /src/Umbraco.Web.UI.Client
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.4/packages/vite)
---
updated-dependencies:
- dependency-name: vite
dependency-version: 6.2.4
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
* removes autogenerated workflows
* make getHasUnpersistedChanges public (#18929)
* Added management API endpoint, service and repository for retrieval of references from the recycle bin (#18882)
* Added management API endpoint, service and repository for retrieval of references from the recycle bin.
* Update src/Umbraco.Cms.Api.Management/Controllers/Document/RecycleBin/ReferencedByDocumentRecycleBinController.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Removed unused code.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Updated management API endpoint and model for data type references to align with that used for documents, media etc. (#18905)
* Updated management API endpoint and model for data type references to align with that used for documents, media etc.
* Refactoring.
* Update src/Umbraco.Core/Constants-ReferenceTypes.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fixed typos.
* Added id to tracked reference content type response.
* Updated OpenApi.json.
* Added missing updates.
* Renamed model and constants from code review feedback.
* Fix typo
* Fix multiple enumeration
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Skip lock tests
* Look-up redirect in content finder for multi-lingual sites using path and legacy route prefixed with the integer ID of the node with domains defined (#18763)
* Look-up redirect in content finder for multi-lingual sites using path and legacy route prefixed with the integer ID of the node with domains defined.
* Added tests to verify functionality.
* Added reference to previous PR.
* Referenced second PR.
* Assemble URLs for all cultures, not just the default.
* Revert previous update.
* Display an original URL if we have one.
* Bump vite from 6.2.4 to 6.2.5 in /src/Umbraco.Web.UI.Client
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite)
---
updated-dependencies:
- dependency-name: vite
dependency-version: 6.2.5
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
* Add raw value validation to multiple text strings property editor (#18936)
* Add raw value validation to multiple text strings property editor
* Added additional assert on unit test and comment on validation logic.
* Don't remove items to obtain a valid value
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Integration tests for content publishing with ancestor unpublished (#18941)
* Resolved warnings in test class.
* Refactor regions into partial classes.
* Aligned test names.
* Variable name refactoring.
* Added tests for unpublished paths.
* Adjust tests to verify current behaviour.
* Cleaned up project file.
* fix circular icon import (#18952)
* remove segment toggle for elements (#18949)
* Fix modal route registration circular import (#18953)
* fix modal route registration circular import
* Update modal-route-registration.controller.ts
* V15/fix/18595 (#18925)
* fix for #18595
* updates the en.ts
* Avoid unneeded Dictionary operations (#18890)
* Avoid some heap allocations
* Remove unneeded double seek
* Avoid allocating new empty arrays, reuse existing empty array
* Avoid allocating strings for parsing comma separated int values (#18199)
* Data type References UI: Workspace + Delete (#18914)
* Updated management API endpoint and model for data type references to align with that used for documents, media etc.
* Refactoring.
* Update src/Umbraco.Core/Constants-ReferenceTypes.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fixed typos.
* generate server models
* add extension slot
* register data type reference info app
* add reference data mappers
* Added id to tracked reference content type response.
* Updated OpenApi.json.
* Added missing updates.
* generate new models
* update models
* register ref item
* remove debugger
* render types
* register member type property type ref
* register media type property type ref
* Renamed model and constants from code review feedback.
* register reference workspace info app kind
* use kind for document references
* use kind for media references
* use kind for member references
* use deleteWithRelation kind when deleting data types
* fix manifest types
* fix types
* Update types.gen.ts
* update code to fit new server models
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Feature: discard changes for block workspace (#18930)
* make getHasUnpersistedChanges public
* Discard changes impl for Block Workspace
* fix 18367 (#18956)
* Merge commit from fork
* Prevent path traveral vulnerability with upload of temporary files.
* Used BadRequest instead of NotFound for invalid file name response.
* V15 QA Fixing the failing media acceptance tests (#18881)
* Fixed the function name due to test helper changes
* Updated assertion steps due to UI changes
* Added more waits
* Bumped version
* Increase timeout
* Reverted
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* V15 QA added clipboard test for not being able to copy to root when block is not allowed at root (#18937)
* Added clipboard test
* Bumped version
* Updated to use the name
* Run all tests on the pipeline
* Reverted command
* build: adjusts circular ref number to 4
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Lee Kelleher <leekelleher@users.noreply.github.com>
Co-authored-by: Migaroez <geusens@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Jacob Welander Jensen <64834767+Welander1994@users.noreply.github.com>
Co-authored-by: Henrik <hg@impact.dk>
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Avoid doing multiple lookups in dictionaries, avoid doing string interpolation & adding single char strings to a StringBuilder, made some private/internal classes & some private methods static when possible, use FrozenSet for InvalidFileNameChars
* Avoid some array + list allocations & async methods and made some private methods static
* Avoid double lookup of XML attribute (and double null check) & avoid an unneeded lookup before writing to a dictionary
* Avoid some double lookups
# Conflicts:
# src/Umbraco.Core/Services/LocalizedTextService.cs
* Avoid double lookups
# Conflicts:
# src/Umbraco.Core/Services/LocalizedTextService.cs
* Avoid double lookups
* List AsSpan, also to trigger a new build that hopefully goes through
* Avoid concatting strings when using writer & more static
* Updated CollectionBenchmarks to show that ToArray isn't always the fastest & Lists can be iterated nearly as fast as arrays (and that ToList is nearly as fast as ToArray on IReadOnlyLists in .NET 8)
* Fix rebase
* Use explicit types ❤️ (I thought it was the other way round...)
# Conflicts:
# src/Umbraco.Core/Services/LocalizedTextService.cs
* Reduce number of lines in HtmlStringUtilities.Truncate to pass code quality analysis
* Avoid double lookups & allocating empty arrays
* Use native List Find instead of LINQ
* Replace obsolete UserGroup Alias consts to key equivalent in tests
* Update use of usergroup alias consts to key equivalent in IsSystemgroup extension method
* Obsolete (internally) unused helper function which purpose doesn't even seem true
* Prepped EmbedProviders for proper removal of non async methods and unneeded proxy methods
* Remove obsoleted UmbracoPath and updated internal references
* Corrected mistake and updated unittets
* Update usergroup tests that use aliases for "system" groups
* Replace more uses of globalsettings.UmbracoPath
* Remove GetDateType by key non async
* Cleanup some usages of hostingEnvironment.MapPathContentRoot
* More easy obsoletion cleanup
* Small Typeload cleanup
* More obsolete removal
* Deploy obsoletion cleanup
* Remove obsolete methods from OEmbedProviderBase.cs
---------
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
* Remove nucache reference from Web.Common
* Get tests building-ish
* Move ReservedFieldNamesService to the right project
* Remove IPublishedSnapshotStatus
* Added functionality to the INavigationQueryService to get root keys
* Fixed issue with navigation
* Remove IPublishedSnapshot from UmbracoContext
* Begin removing usage of IPublishedSnapshot from PublishedContentExtensions
* Fix PublishedContentExtensions.cs
* Don't use snapshots in delivery media api
* Use IPublishedMediaCache in QueryMediaApiController
* Remove more usages of IPublishedSnapshotAccessor
* Comment out tests
* Remove more usages of PublishedSnapshotAccessor
* Remove PublishedSnapshot from property
* Fixed test build
* Fix errors
* Fix some tests
* Delete NuCache 🎉
* Implement DatabaseCacheRebuilder
* Remove usage of IPublishedSnapshotService
* Remove IPublishedSnapshotService
* Remove TestPublishedSnapshotAccessor and make tests build
* Don't test Snapshot cachelevel
It's no longer supported
* Fix BlockEditorConverter
Element != Element document type
* Remember to set cachemanager
* Fix RichTextParserTests
* Implement TryGetLevel on INavigationQueryService
* Fake level and obsolete it in PublishedContent
* Remove ChildrenForAllCultures
* Hack Path property on PublishedContent
* Remove usages of IPublishedSnapshot in tests
* More ConvertersTests
* Add hybrid cache to integration tests
We can actually do this now because we no longer save files on disk
* Rename IPublishedSnapshotRebuilder to ICacheRebuilder
* Comment out tests
* V15: Replacing the usages of Parent (navigation data) from IPublishedContent (#17125)
* Fix .Parent references in PublishedContentExtensions
* Add missing methods to FriendlyPublishedContentExtensions (ones that you were able to call on the content directly as they now require extra params)
* Fix references from the extension methods
* Fix dependencies in tests
* Replace IPublishedSnapshotAccessor with the content cache in tests
* Resolving more .Parent references
* Fix unit tests
* Obsolete and use extension methods
* Remove private method and use extension instead
* Moving code around
* Fix tests
* Fix more references
* Cleanup
* Fix more usages
* Resolve merge conflict
* Fix tests
* Cleanup
* Fix more tests
* Fixed unit tests
* Cleanup
* Replace last usages
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Remove usage of IPublishedSnapshotAccessor from IRequestItemProvider
* Post merge fixup
* Remo IPublishedSnapshot
* Add HasAny to IDocumentUrlService
* Fix TextBuilder
* Fix modelsbuilder tests
* Use explicit types
* Implement GetByContentType
* Support element types in PublishedContentTypeCache
* Run enlistments before publishing notifications
* Fix elements cache refreshing
* Implement GetByUdi
* Implement GetAtRoot
* Implement GetByRoute
* Reimplement GetRouteById
* Fix blocks unit tests
* Initialize domain cache on boot
* Only return routes with domains on non default lanauges
* V15: Replacing the usages of `Children` (navigation data) from `IPublishedContent` (#17159)
* Update params in PublishedContentExtensions to the general interfaces for the published cache and navigation service, so that we can use the extension methods on both documents and media
* Introduce GetParent() which uses the right services
* Fix obsolete message on .Parent
* Obsolete .Children
* Fix usages of Children for ApiMediaQueryService
* Fix usage in internal
* Fix usages in views
* Fix indentation
* Fix issue with delete language
* Update nuget pacakges
* Clear elements cache when content is deleted
instead of trying to update it
* Reset publishedModelFactory
* Fixed publishing
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: kjac <kja@umbraco.dk>
* Add IAsyncComponent
* Rewrite to use IAsyncComposer
* Add AsyncComponentBase and RuntimeAsyncComponentBase
* Remove manual disposing of components on restart
* Obsoletions related to Delivery API
* Fix TypeLoader and TypeFinder tests
* Remove obsolete and default implementations of IFileSource and IFileTypeCollection
* More Delivery API related obsoletions
* VariationContextAccessor related
* ValueFactories obsoletion and fix references
* ValueSetBuilders obsoletions
* ValueConverters obsoletions
* Other obsolete ctors and methods
* Forgotten VariationContextAccessor obsoletion
* More obsoletions
* XPath related obsoletions
* Revert XmlHelper changes
* Delete RenamedRootNavigator and its tests
* Fix test
* XmlHelper obsoletion
* Return null instead of GetXPathValue
* Obsolete entire class instead
* Remove XPath obsoletions from IPublishedCache
* Remove XPath-related if-block that is no longer needed
* Change obsolete msg for classes needed for NuCache
* Moving classes to NuCache and making them internal
* Remove more XPath-related obsoletions
* Remove NavigableNavigator and its tests
* Cleanup
* Remove Xpath references from tests
* Revert interface deletion in MediaCache
* Using XOR operation
Co-authored-by: Nuklon <Nuklon@users.noreply.github.com>
---------
Co-authored-by: Nuklon <Nuklon@users.noreply.github.com>
* Include automatic relation type aliases from factory and fix SQL parameter overflow (#15141)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations (#15160)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations
* Always get all automatic relation type aliases
* Do not set relation type alias for unknown entity types
* Get references from recursive (nested/block) properties
(cherry picked from commit 5198e7c52d)
* Obsolete constructor with deprecated IScopeProvider
* Add exclusion setting to typefinder settings
* The old TypeFinder constructor calls the new constructor now instead and excluded duplicates by using Union instead of Concat.
* Revert "The old TypeFinder constructor calls the new constructor now instead and excluded duplicates by using Union instead of Concat."
This reverts commit 87801c6c1cbaa6adab6f29dba1e876a586e05885.
* Add changes to TypeFinder
* Do not use null when type is not nullable
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Move MapPathWebRoot & MapPathContentRoot to extension methods.
* Set AspNetCoreHostingEnvironment ApplicationId without service provider.
* Drop some usages of TempHostingEnvironment
* Logging setup cleanup - AppDomainId has no value (it is always "1")
Creating new AppDomains isn't possible in .Net core.
Attempting to do so results in a platform exception.
A dotnet core process has a single AppDomain instance whose Id property
is always the integer 1.
* Setup logging without IHostingEnvironment
* Mark IUmbracoBuilder.BuilderHostingEnvironment obsolete
And remove internal usages.
* Typeloader no longer uses umbraco-types.list
* Added UmbracoHost - setup serilog two-stage init.
* Add ApplicationIdEnricher
* Defensive tweaks for those not using UmbracoHost
* Drop UmbracoHost static class
* Setup runtime logger without host builder extensions.
* Prevent RefreshingRazorViewEngine related explosions
* Filescoped namespaces for new classes.
* Apply suggestions from code review
This means we don't have to inject Lazy<T> all over the place when dealing with
colleciton builders and circular references since this will automatically just work OOTB.
This in theory should also allocate less instances during startup.