* Optimize document and media seeding by looking up from database in batches.
* Ensure null values aren't stored in the cache when checking existance.
* Fixed failing integration tests.
* Resolved issue with not writing to the L1 cache on an L2 hit.
* Tidied up and populated XML header comments.
* Address issue raised in code review.
* Fixes#19654
Adds the propertyAlias to the VariationContext so that products implementing the GetSegment method are aware which propertyAlias it's being called for
* Re-implement original variation context for backwards compatibility
* Fixes hidden overload method
Ensures the `GetSegment` method overload is not hidden when a null `propertyAlias` is passed.
* Resolve backward compatibility issues.
* Improved comments.
---------
# Conflicts:
# src/Umbraco.PublishedCache.NuCache/Property.cs
* Started implementing new LongRunningOperationService and adjusting tasks to use this service
This service will manage operations that require status to be synced between servers (load balanced setup).
* Missing migration to add new lock. Other simplifications.
* Add job to cleanup the LongRunningOperations entries
* Add new DatabaseCacheRebuilder.RebuildAsync method
This is both async and returns an attempt, which will fail if a rebuild operation is already running.
* Missing LongRunningOperation database table creation on clean install
* Store expire date in the long running operation. Better handling of non-background operations.
Storing an expiration date allows setting different expiration times depending on the type of operation, and whether it is running in the background or not.
* Added integration tests for LongRunningOperationRepository
* Added unit tests for LongRunningOperationService
* Add type as a parameter to more repository calls. Distinguish between expiration and deletion in `LongRunningOperationRepository.CleanOperations`.
* Fix failing unit test
* Fixed `PerformPublishBranchAsync` result not being deserialized correctly
* Remove unnecessary DatabaseCacheRebuildResult value
* Add status to `LongRunningOperationService.GetResult` attempt to inform on why a result could not be retrieved
* General improvements
* Missing rename
* Improve the handling of long running operations that are not in background and stale operations
* Fix failing unit tests
* Fixed small mismatch between interface and implementation
* Use a fire and forget task instead of the background queue
* Apply suggestions from code review
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Make sure exceptions are caught when running in the background
* Alignment with other repositories (async + pagination)
* Additional fixes
* Add Async suffix to service methods
* Missing adjustment
* Moved hardcoded settings to IOptions
* Fix issue in SQL Server where 0 is not accepted as requested number of rows
* Fix issue in SQL Server where query provided to count cannot contain orderby
* Additional SQL Server fixes
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Filter Available should not return items without published ancestors when not in preview
* Update unittests mocks
* Internal documentation and minor code tidy.
* Tidied up integration tests and added new tests for the added method.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Clear elementscache from cache refreshers
* Add very simple test ensuring the elements cache is cleared
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Implement tags for content cache
* Implement tags for media cache
* Refactor to only use cache and media tags
* Remove from DI
* Cleanup
* Update Nuget packages
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Change description to be more precise
* Minor code tidy: indents, static methods where possible, made tags methods a little terser.
* Fixed according to review
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* 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>
* 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>
* 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.
* Update src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/RebuildPublishedCacheController.cs
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Removed unnecessary obsolete attribute.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Initial refactor (pending more tests)
* Fix structural querying across changing publish states + add tests accordingly
* Add tests to validate ancestor and descendant order
* Remove axis querying from published status filtering
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Introduce IsDocumentPublishedInAnyCulture
Sometimes we don't care about culture
* Check ancestor path when resolving cache items
* Fix tests
* Rebuild NavigationService
* Only set node if it has a published ancestor path
* Remove branch when unpublished
* Add tests
* Add seed test
* Consider published ancestor path when seeding documents
* Introduce MediaBreadthFirstKeyProviderTests
This is needed since the logic of document and media is no longer the same
* Remove unused services
* Move assert page to helper
* Add variant tests
* Add tests
* Filter keys in ContentTypeSeedKeyProvider
* Fix tests
* Add failing test showing refreshing issue
* Don't blow up if we can't resolve the node from navigation cache
Turns out that this can actually happen :D Should be fine to just return false
* Refactor cache refresher check
* Make NavigationQueryService service protected
* Add comment on how to refactor breadth first key provider
* Refactor if statement
* Add custom serializer
* Add migration to rebuild cache
* Rename migration namespace to 15.1
* Also clear media cache
* Remove failed cache items
* Refactor to only use keys for document cache repository
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* feat: conditionally install and build the 'login' and 'backoffice' targets depending on source files
* feat: remove the preconditions target, because we are now compiling a file list to check if we need to build
* feat: remove the 'clean' targets, because the project will be cleaned if any of the compiled file lists do not exist
* feat: remove the preserve.* files as they are no longer needed
* Enable default content items again
* Remove package.json from restore target inputs
* Include generated files as static assets after build
* Clean up project files
* Exclude CS0618 warning as error and fix CA2264
* Exclude CS0612 warning as error
* Suppress removal of test fixture
* Use separate property/item groups for backoffice and login project
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Changed the cache entry settings to be explicit and exposed it in the schema file
* commit of tests
* Fix seed options
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Move DocumentCacheService
* Add clear all documentws from memory cache
* Fix RedirectTracker
* Implement refresh node/branch/all/delete
* Only update databasecache in RefreshContentAsync
* Fix tests
* Skip blueprints in cache
* Clear caches when contenttype is updated
* Clear cache on data type update
* Refresh media
* Only update memory cache from refreshers
* Fix imports
* Add named options
* Use cache entry settings in media
* Obsolete nucache settings
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Added new notification to hook in after the premigrations and use this to init different services.
* Force MaxDegreeOfParallelism to 1, while investigating scopes
* Tried some more workarounds
* Updated scopes and changed parallel to non parallel to ensure migration works
* Missing scope
* Make it parallel again - The secret is, the SuppressFlow needs to be when you create the task, but not on the await!.
* Fixed issue when DEBUG_SCOPES is not added to tests.
* Remove test exception
* Try build on ubuntu again, even that we know it can be stuck. Just a test to see if all tests pass
* Updated comment
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Updated to .NET9 RC2 and a few other nuget packages. Most notable is OpenIddict v6 preview that supports .net 9
* Revert "temp remove tag helpers (#16977)"
This reverts commit 84cc3051ad.
* update backoffice submodule
* update backoffice submodule
* Fix internal class being returned from media cache service
Return the correct models from the media cache service
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
(cherry picked from commit ccd02cf2a9)
* Add cache refresher
* make public as needed for serialization
* Use content type cache to get content type out
* Refactor to use ContentCacheNode model, that goes in the memory cache
* Remove content node kit as its not needed
* Implement tests for ensuring caching
* Implement better asserts
* Implement published property
* Refactor to use mapping
* Rename to document tests
* Update to test properties
* Create more tests
* Refactor mock tests into own file
* Update property test
* Fix published version of content
* Change default cache level to elements
* Refactor to always have draft
* Refactor to not use PublishedModelFactory
* Added tests
* Added and updated tests
* Fixed tests
* Don't return empty object with id
* More tests
* Added key
* Another key
* Refactor CacheService to be responsible for using the hybrid cache
* Use notification handler to remove deleted content from cache
* Add more tests for missing functions
* Implement missing methods
* Remove HasContent as it pertains to routing
* Fik up test
* formatting
* refactor variable names
* Implement variant tests
* Map all the published content properties
* Get item out of cache first, to assert updated
* Implement member cache
* Add member test
* Implement media cache
* Implement property tests for media tests
* Refactor tests to use extension method
* Add more media tests
* Refactor properties to no longer have element caching
* Don't use property cache level
* Start implementing seeding
* Only seed when main
* Add Immutable for performance
* Implement permanent seeding of content
* Implement cache settings
* Implement tests for seeding
* Update package version
* start refactoring nurepo
* Refactor so draft & published nodes are cached individually
* Refactor RefreshContent to take node instead of IContent
* Refactor media to also use cache nodes
* Remove member from repo as it isn't cached
* Refactor media to not include preview, as media has no draft
* create new benchmark project
* POC Integration benchmarks with custom api controllers
* Start implementing content picker tests
* Implement domain cache
* Rework content cache to implement interface
* Start implementing elements cache
* Implement published snapshot service
* Publish snapshot tests
* Use snapshot for elements cache
* Create test proving we don't clear cache when updating content picker
* Clear entire elements cache
* Remove properties from element cache, when content gets updated.
* Rename methods to async
* Refactor to use old cache interfaces instead of new ones
* Remove snapshot, as it is no longer needed
* Fix tests building
* Refactor domaincache to not have snapshots
* Delete benchmarks
* Delete benchmarks
* Add HybridCacheProject to Umbraco
* Add comment to route value transformer
* Implement is draft
* remove snapshot from property
* V15 updated the hybrid caching integration tests to use ContentEditingService (#16947)
* Added builder extension withParentKey
* Created builder with ContentEditingService
* Added usage of the ContentEditingService to SETUP
* Started using ContentEditingService builder in tests
* Updated builder extensions
* Fixed builder
* Clean up
* Clean up, not done
* Added Ids
* Remove entries from cache on delete
* Fix up seeding logic
* Don't register hybrid cache twice
* Change seeded entry options
* Update hybrid cache package
* Fix up published property to work with delivery api again
* Fix dependency injection to work with tests
* Fix naming
* Dont make caches nullable
* Make content node sealed
* Remove path and other unused from content node
* Remove hacky 2 phase ctor
* Refactor to actually set content templates
* Remove umbraco context
* Remove "HasBy" methods
* rename property data
* Delete obsolete legacy stuff
* Add todo for making expiration configurable
* Add todo in UmbracoContext
* Add clarifying comment in content factory
* Remove xml stuff from published property
* Fix according to review
* Make content type cache injectible
* Make content type cache injectible
* Rename to database cache repository
* Rename to document cache
* Add TODO
* Refactor to async
* Rename to async
* Make everything async
* Remove duplicate line from json schema
* Move Hybrid cache project
* Remove leftover file
* Refactor to use keys
* Refactor published content to no longer have content data, as it is on the node itself
* Refactor to member to use proper content node ctor
* Move tests to own folder
* Add immutable objects to property and content data for performance
* Make property data public
* Fix member caching to be singleton
* Obsolete GetContentType
* Remove todo
* Fix naming
* Fix lots of exposed errors due to scope test
* Add final scope tests
* Rename to document cache service
* Rename test files
* Create new doc type tests
* Add ignore to tests
* Start implementing refresh for content type save
* Clear contenttype cache when contenttype is updated
* Fix test
Teh contenttype is not upated unless the property is dirty
* Updated tests
* Added tests
* Use init for ContentSourceDto
* Startup of setup
* Fix get by key in PublishedContentTypeCache
* Remove ContentType from PublishedContentTypeCache when contenttype is deleted
* Created interfaces for the builder with the necessary properties
* Created builder for PropertyTypeContainer
* Created builder for PropertyTypeEditing
* Created builder for PropertyTypeValidationEditing
* Made adjustments to the builder
* Updated name of usage
* Commented out to test
* Cleaned up builders
* Updated integration test setup
* Moved tests
* Added interface
* Add IDocumentSeedKeyProvider and migrate existing logic to seed key provider
* Added functionality to the INavigationQueryService to get root keys
* Fixed issue with navigation
* Created helper to Convert a IContentType to ContentTypeUpdateModel
* Added interfaces
* Added builder
* Cleaned up builders and added fixes
* Added tests for PublishedContentTypeCache
* Applied changes in builder
* Add BreadthFirstKeyProvider
* Use ISet for seedkey providers
* Implement GetContentSource by key
* Seed the cache with keys provided by seed key providers
* Builder updates
* Test setup updates
* Updated tests
* Dont require contenttype keys for seeding
* Fix cache settings
* Don't inject cache settings into SeedingNotificationHandler
* Fix tests
* Use enlistment for setting updated cache item
* Pin seeded nodes for longer
* Fix BreadthFirstKeyProvider
* Fix ContentTypeSeedKeyProvider
* Fix tests
* Only seed published documents
* Only cache published if contentCacheNode is not draft
* Fix incorrect templateId
* Removed unnecessary setup
* initialized value
* Fixed template test
* Removed test
* Updated tests
* Removed code that was not used
* Removed unused cacheSettings
* Re-organize to support media cache seeding
* Add MediaBreadthFirstKeyProvider
* Seed media
* Don't use IdKeyMap when removing content from cache
* Don't clear IdKeyMap in DocumentCacheService
* Add unit tests
* Don't use IdKeyMap when deleting media
* Add default value to timespan
* Use cancellation tokens when doing loop
* Fixed Models Builder error
* Builder testing
* Media test
* Created builders
* Updated method from getByKey to getById to maintain structure
* Updated test setup
* Moved tests
* Cleaned up builders
* Added helper
* Added space
* Updated tests
* Cleaned setup
* Added tests for MediaTypes
* Uncommented tests
* Added builder extensions
* Added interfaces for builder methods
* Updated to use interface pattern
* Updated name
* Used builder
* Cleaned up test
* Added media scope tests
* Removed PropertyTypeModelBuilder
* moved PropertyTypeModelBuilder to PropertyTypeEditingBuilder
* Removed constructor
* Removed duplicate
* Fixed naming
* Reverted
* Removed space
* Added todos
* Removed only run on linux
* Commet out DocumentHybridCacheTemplateTest again
This is fixed in the release branch
* Update media when media type is updated
* Remove todo the tests pass now
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* 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>
* Started work on service
* temp work
* temp commit
* Temp commit
* Added more routing logic
* Fixed tests
* Refactor and prepare for isdraft
* Work on drafts
* Fixed tests
* Move to enlistment to ensure caches is only updated on scope complete
* Clean up and handle null cultures
* Added functionality to the INavigationQueryService to get root keys
* Added migration
* Fixed issue with navigation
* Added migration
* Temp commit, move to cache refreshers.
* Fixed issues
* List urls
* fix build
* Fixed integration tests
* Refactor to create new content finder instead of changing the old
* rollback wrong commited line
* Clean up, and use docuemnt url service for index
* Fixed List endpoin
* Do not use Navigation service in methods intended by management api
* Fixed examine tests
* Make methods virtual
* Use domain from published request
* Use hybrid cache from new content finder
* Eliminate nucache usage
* Fixed issue with delivery api and url generation
* Fixed linux tests
* Added hybrid cache to all integration tests
* Update to dotnet 9 and update nuget packages
* Update umbraco code version
* Update Directory.Build.props
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Include preview version in pipeline
* update template projects
* update global json with specific version
* Update version.json to v15
* Rename TrimStart and TrimEnd to string specific
* Rename to Exact
* Update global.json
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Remove includePreviewVersion
* Rename to trim exact
* Add new Hybridcache project
* Add tests
* Start implementing PublishedContent.cs
* Implement repository for content
* Refactor to use async everywhere
* Add cache refresher
* make public as needed for serialization
* Use content type cache to get content type out
* Refactor to use ContentCacheNode model, that goes in the memory cache
* Remove content node kit as its not needed
* Implement tests for ensuring caching
* Implement better asserts
* Implement published property
* Refactor to use mapping
* Rename to document tests
* Update to test properties
* Create more tests
* Refactor mock tests into own file
* Update property test
* Fix published version of content
* Change default cache level to elements
* Refactor to always have draft
* Refactor to not use PublishedModelFactory
* Added tests
* Added and updated tests
* Fixed tests
* Don't return empty object with id
* More tests
* Added key
* Another key
* Refactor CacheService to be responsible for using the hybrid cache
* Use notification handler to remove deleted content from cache
* Add more tests for missing functions
* Implement missing methods
* Remove HasContent as it pertains to routing
* Fik up test
* formatting
* refactor variable names
* Implement variant tests
* Map all the published content properties
* Get item out of cache first, to assert updated
* Implement member cache
* Add member test
* Implement media cache
* Implement property tests for media tests
* Refactor tests to use extension method
* Add more media tests
* Refactor properties to no longer have element caching
* Don't use property cache level
* Start implementing seeding
* Only seed when main
* Add Immutable for performance
* Implement permanent seeding of content
* Implement cache settings
* Implement tests for seeding
* Update package version
* start refactoring nurepo
* Refactor so draft & published nodes are cached individually
* Refactor RefreshContent to take node instead of IContent
* Refactor media to also use cache nodes
* Remove member from repo as it isn't cached
* Refactor media to not include preview, as media has no draft
* create new benchmark project
* POC Integration benchmarks with custom api controllers
* Start implementing content picker tests
* Implement domain cache
* Rework content cache to implement interface
* Start implementing elements cache
* Implement published snapshot service
* Publish snapshot tests
* Use snapshot for elements cache
* Create test proving we don't clear cache when updating content picker
* Clear entire elements cache
* Remove properties from element cache, when content gets updated.
* Rename methods to async
* Refactor to use old cache interfaces instead of new ones
* Remove snapshot, as it is no longer needed
* Fix tests building
* Refactor domaincache to not have snapshots
* Delete benchmarks
* Delete benchmarks
* Add HybridCacheProject to Umbraco
* Add comment to route value transformer
* Implement is draft
* remove snapshot from property
* V15 updated the hybrid caching integration tests to use ContentEditingService (#16947)
* Added builder extension withParentKey
* Created builder with ContentEditingService
* Added usage of the ContentEditingService to SETUP
* Started using ContentEditingService builder in tests
* Updated builder extensions
* Fixed builder
* Clean up
* Clean up, not done
* Added Ids
* Remove entries from cache on delete
* Fix up seeding logic
* Don't register hybrid cache twice
* Change seeded entry options
* Update hybrid cache package
* Fix up published property to work with delivery api again
* Fix dependency injection to work with tests
* Fix naming
* Dont make caches nullable
* Make content node sealed
* Remove path and other unused from content node
* Remove hacky 2 phase ctor
* Refactor to actually set content templates
* Remove umbraco context
* Remove "HasBy" methods
* rename property data
* Delete obsolete legacy stuff
* Add todo for making expiration configurable
* Add todo in UmbracoContext
* Add clarifying comment in content factory
* Remove xml stuff from published property
* Fix according to review
* Make content type cache injectible
* Make content type cache injectible
* Rename to database cache repository
* Rename to document cache
* Add TODO
* Refactor to async
* Rename to async
* Make everything async
* Remove duplicate line from json schema
* Move Hybrid cache project
* Remove leftover file
* Refactor to use keys
* Refactor published content to no longer have content data, as it is on the node itself
* Refactor to member to use proper content node ctor
* Move tests to own folder
* Add immutable objects to property and content data for performance
* Make property data public
* Fix member caching to be singleton
* Obsolete GetContentType
* Remove todo
* Fix naming
* Fix lots of exposed errors due to scope test
* Add final scope tests
* Rename to document cache service
* Rename test files
* Create new doc type tests
* Add ignore to tests
* Start implementing refresh for content type save
* Clear contenttype cache when contenttype is updated
* Fix test
Teh contenttype is not upated unless the property is dirty
* Updated tests
* Added tests
* Use init for ContentSourceDto
* Startup of setup
* Fix get by key in PublishedContentTypeCache
* Remove ContentType from PublishedContentTypeCache when contenttype is deleted
* Created interfaces for the builder with the necessary properties
* Created builder for PropertyTypeContainer
* Created builder for PropertyTypeEditing
* Created builder for PropertyTypeValidationEditing
* Made adjustments to the builder
* Updated name of usage
* Commented out to test
* Cleaned up builders
* Updated integration test setup
* Moved tests
* Added interface
* Add IDocumentSeedKeyProvider and migrate existing logic to seed key provider
* Added functionality to the INavigationQueryService to get root keys
* Fixed issue with navigation
* Created helper to Convert a IContentType to ContentTypeUpdateModel
* Added interfaces
* Added builder
* Cleaned up builders and added fixes
* Added tests for PublishedContentTypeCache
* Applied changes in builder
* Add BreadthFirstKeyProvider
* Use ISet for seedkey providers
* Implement GetContentSource by key
* Seed the cache with keys provided by seed key providers
* Builder updates
* Test setup updates
* Updated tests
* Dont require contenttype keys for seeding
* Fix cache settings
* Don't inject cache settings into SeedingNotificationHandler
* Fix tests
* Use enlistment for setting updated cache item
* Pin seeded nodes for longer
* Fix BreadthFirstKeyProvider
* Fix ContentTypeSeedKeyProvider
* Fix tests
* Only seed published documents
* Only cache published if contentCacheNode is not draft
* Fix incorrect templateId
* Removed unnecessary setup
* initialized value
* Fixed template test
* Removed test
* Updated tests
* Removed code that was not used
* Removed unused cacheSettings
* Re-organize to support media cache seeding
* Add MediaBreadthFirstKeyProvider
* Seed media
* Don't use IdKeyMap when removing content from cache
* Don't clear IdKeyMap in DocumentCacheService
* Add unit tests
* Don't use IdKeyMap when deleting media
* Add default value to timespan
* Use cancellation tokens when doing loop
* Fixed Models Builder error
---------
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>