* Add migration to create missing tabs
In v13, if a tab had groups in both a composition and the content type, the tab might not exist on the content type itself.
Newer versions require such tabs to also exist directly on the content type. This migration ensures those tabs are created.
Also fixes an issue in LeftJoin where nested sql arguments were being discarded.
* Small fixes
* WIP: Integration test.
* Added asserts to show the current issue with the integration test.
* Adjusted the integration test
* Added logging of result. Minor re-order and extraction refactoring in integration test.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Started the implementation of the new date time property editor
* Display picked time in local and UTC
* Adjustments to the way the timezones are displayed and the picker is configured
* Filter out `Etc/` (offset) timezones from the list
* Additional adjustments
* Introduced date format and time zone options (all, local or custom)
* Adjustments to the property editor configuration and value converter
* Use UUICombobox instead of UUISelect for displaying time zone options. Display UTC offset instead of short offset name in label.
* Allow searching by offset
* Ignore case when searching for time zone
* Store dates consistently (always same format)
* Add custom PropertyIndexValueFactory for the new property editor
* Adjustments when switching between time zone modes
* Small fixes and cleanup
* Started improving time zone config selection
* Small adjustments
* Remove selected time zones from the list + display label instead of value
* Localizing labels
* Remove unwanted character
* Fix incorrect order of custom time zones list
* Small fixes (mostly validation)
* Rename input time zone component
* Small adjustments
* Using model for stored value
* Save examine value as ISO format
* Adjusting class names for consistency
* Small fixes
* Add default data type configuration
* Rename `TimeZone` to `UmbTimeZone`
* Fix failing tests
* Started adding unit tests for DateWithTimeZonePropertyEditor
* Additional tests
* Additional tests
* Additional tests
* Fixed searches with regex special characters throwing errors
* Remove offset from generic UmbTimeZone type and added new type specific for the property editor
* Adjust property editor to show error when selected time zone is no longer available, instead of pre-selecting another one
* Do not preselect a time zone if a date is stored without time zone
This most likely means that the configuration of the editor changed to add time zone support. In this case we want to force the editor to select the applicable time zone.
* Fix failing backoffice build
* Added tests for DateTimeWithTimeZonePropertyIndexValueFactory
* Improved picker validation
* Remove unused code
* Move models to their corresponding places
* Renaming `DateTimeWithTimeZone` to `DateTime2`
* Fix data type count tests
* Simplifying code + adjusting value converter to support old picker value
* Adjustments to property editor unit tests
* Fix validation issue
* Fix default configuration for 'Date Time (Unspecified)'
* Rename validator
* Fix comment
* Adjust database creator default DateTime2 data types
* Update tests after adjusting default data types
* Add integration test for DateTime2 returned value type
* Apply suggestions from code review
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Aligning DateTime2Validator with other JSON validators. Added new model for API.
* Removed unused code and updated tests
* Fix validation error message
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Splitting the new date time editor into multiple (per output type)
* Adjust tests in DateTime2PropertyIndexValueFactoryTest
* Update value converter tests
* Group the new date time tests
* Adjust new property editor tests
* Adjust property editor integration tests
* Update data editor count tests
* Naming adjustments
* Small fixes
* Cleanup
- Remove unused files
- Remove 'None' option from configuration and update all the tests
* Update luxon depedencies
* Move GetValueFromSource to the value converter
* Add new property editor examples to mock data
* Re-organizing the code
* Adjustments from code review
* Place the date time property index value factories in their own files
* Small adjustments for code consistency
* Small adjustments
* Minor adjustment
* Small fix from copilot review
* Completed the set of XML header comments.
* use already existing query property
* fail is form control element is null or undefined
* using lit ref for querying and form control registration
* state for timeZonePickerValue and remove _disableAddButton
* Adjustments to form control registration
* Remove unused declaration
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Improve GetManagementApiUrl to use the globally defined default version if not specified on the controller
* Add a test to check logic introduced in #20083
* Update tests/Umbraco.Tests.Integration/ManagementApi/Trees/DocumentTypeSiblingControllerTests.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Update tests/Umbraco.Tests.Integration/ManagementApi/Trees/DocumentTypeSiblingControllerTests.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Adding member types sibling endpoints
* Introducing sibling endpoint for Partial Views and logic.
* Introducing sibling endpoint for stylesheets
* Introducing sibling endpoint for scripts
* Introducing FileSystemTreeServiceBase.cs
* Introducing interfaces for implementation specific services
* Introducing services for specific trees
* Modifying controller bases to fit new interface and logic.
* Obsoleting old constructors related to PartialView
* Obsoleting ctors related to Stylesheets
* Obsoleting ctors related to scripts
* Adding tests for scriptsTreeService
* Adding tests for siblings
* Removing unused dependencies
* Removing signs and replacing it with flags
* Fixing breaking changes by obsoletion
* Fixing more breaking changes
* Registering missing service
* Fixing breaking changes again
* Changing name of method GetSiblingsViewModels
* Rewritten tests for less bloat and less duplicate code
* Expanding tests to include other methods from service
* Test refactoring: avoided populating file systems that weren't under test, updated encapsulation, renaming, further re-use.
* Management API: Expanding the existing sibling endpoints to support trashed entities (#20154)
* Refactoring existing logic to include trashed items
* Including tests for trashed entities
* Groundwork for trashed siblings
* Documents trashed siblings endpoint
* Controller for Media trashed items
* Expanding tests to include a test for trashed siblings
* Code review corrections
* Resolving code review
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Reworks update of user groups on a user by updating in place rather than deleting and re-adding.
Ensure user groups affected by the update are invalidated in the repository cache.
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* fix sql syntax issues
* unify all dtos, fix autoIncrement for NPoco.Insert and .BulkInsert
* fix Copilot review comments
* fix sql syntax in TrackedReferencesRepository.GetPagedDescendantsInReferences()
* remove changes in TemplateServiceTests
* Tweaks and fixes from first review.
* Reverted changes outside scope of PR.
* Use FirstOrDefault over SelectTop.
* Fix delete member issue.
* Fixed issue with create of webhooks.
* Reverted changes to default data install.
* Removed unused method.
* Rationalised use of quoting helpers.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix nullability issue.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* First Go at the single block property editor based on blocklistpropertyeditor
* Add simalar tests to the blocklist editor
Also check whether either block of configured blocks can be picked and used from a data perspective
* WIP singleblock Valiation tests
* Finished first full pass off SingleBlock validation testing
* Typos, Future test function
* Restore accidently removed file
* Introduce propertyValueConverter
* Comment updates
* Add singleBlock renderer
* Textual improvements
Comment improvements, remove licensing in file
* Update DataEditorCount by 1 as we introduced a new one
* Align test naming
* Add ignored singleblock default renderer
* Enable SingleBlock Property Indexing
* Enable Partial value merging
* Fix indentation
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Support querystring and anchor for local links in Delivery API output (#20142)
* Support querystring and anchor for local links in Delivery API output
* Add default implementation for backwards compat
* Add default implementation for backwards compat (also on the interface)
* Fix default implementation
* Add extra tests proving that querystring/postfix can be handled for local links in both legacy and current format.
* Adding a check to see if the posted value's source path isn't null or empty.
* Moving validation logic to proper files
* Moved logic to a required validator
* Adding tests to ensure validation works
* Minor tidy up: XML header comments, re-use in tests, clarified test names.
* Adding unit tests for file upload validation
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Initial implementation of non existing property editor
* Adjust `MissingPropertyEditor` to not require registering in PropertyEditorCollection
* Add `MissingPropertyEditor.name` back
* Remove unused dependencies from DataTypeService
* Removed reference to non existing property
* Add parameterless constructor back to MissingPropertyEditor
* Add validation error on document open to property with missing editor
* Update labels
* Removed public editor alias const
* Update src/Umbraco.Web.UI.Client/src/packages/property-editors/missing/manifests.ts
* Add test that checks whether the new MissingPropertyEditor is returned when an editor is not found
* Also check if the editor UI alias is correct in the test
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Share property editor instances between properties
* Only store missing property editors in memory in `ContentMapDefinition.MapValueViewModels()`
* Add value converter for the missing property editor to always return a string (same as the Label did previously)
* Small improvements to code block
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Adding signs to variants and adjusting HasPendingChangesSignProvider.cs
* HasPendingChangesSignProvider.cs now populates variants & refactoring to move logic to DocumentPresentationFactory.cs
* Working HasScheduleSignProvider.cs to provide variant signs
* Refactoring ISignProvider.cs to take an IEnumerable again
* Moving code from controllers to factories
* Refactoring HasPendingChangesSignProvider.cs to use the right Interface method
* Refactoring HasScheduleSignProvider.cs to be less bloated, and more readable (hopefully)
* Refactoring tests to look at variants and include a list
* Changing instantiation to be better
* Fixed minor logic issue in HasScheduleSignProvider.cs
* Refactoring to include just 1 database call.
* Adjusting tests to use the new methods.
* Reverted breaking changes
* Removing obsoleted code from ApiMediaQueryService.cs
* Removing obsoleted code from ApiRichTextMarkupParserTests.cs
* Removing obsoleted code from ContentCacheRefresher.cs
* Removing obsoleted code from ContentFinderByUrlAlias.cs and adjusting its tests to use the new logic
* Removing obsoleted code from ContentFinderByUrl.cs & its dependencies
* Removing obsoleted code from ApiRichTextMarkupParserTests.cs
* Removing obsoleted code from DocumentCache.cs & its dependencies
* Removing obsoleted code from MediaCache.cs & its dependencies
* Removing obsoleted code from PublishedCacheBase.cs & its dependencies
* Removing obsoleted code from RenderNoContentController.cs and its tests
* Removing obsoleted code from UmbracoRouteValueTransformer.cs
* Removing obsoleted constructors from DefaultUrlProvider.cs
* Removing accidental bookmark
* Introducing a helper method to get the root keys in ApiMediaQueryService.cs
* Removing obsoleted code from Cache classes
* Removing unused imports
* Refactoring to meet the CR
* Added attribute to controller
* Fixing missing using statement
* Removing obsoleted constructor from ExternalLoginService.cs and making usages fit
* Removing obsoleted method from IContentTypeFilter.cs
* Removing obsoleted methods from IContentEditingService.cs
* Removing obosoleted code from DocumentUrlService.cs
* Removed obsoleted code from DataTypeService.cs
* Removed obsoleted code from PublishStatusService.cs
* Removing obsoleted code from the IContentPublishingService.cs and its dependencies. Also implementing a TODO in the service implementation
* Removing obsoleted code from IRelationService.cs
* Removing obsoleted code from ContentPublishingService.cs
* Removing obsoleted code from ContentEditingService.cs
* Removing obsoleted code from Constants-DataTypes.cs
* Removing obsoleted code from IAction.cs and its implementations
* Removing obsoleted code from IContentService.cs
* Removing obsoleted code from DomainUtilities.cs
* Removing obsoleted code from IIndexedEntitySearchService.cs and dependencies
* Removing obsoleted code from UrlProvider.cs
* Removing obsoleted code from AliasUrlProvider.cs
* Removing obsoleted code from ApiContentRouteBuilder.cs
* Removing obsoleted code from ApiPublishedContentCache.cs
* Removing obsoleted class TemplateQueryResult.cs
* Removing obsoleted code from ApiContentBuilder.cs
* Removing obsoleted code from HealthCheck.cs
* Removing obsoleted code from ContentTypeEditingService.cs
* Removing obsoleted code from NewDefaultUrlProvider.cs
* Removing obsoleted code from PublishedElementPropertyBase.cs
* Removing obsoleted code from WebhookRequestService.cs
* Bumping to obsolete in V18, due to usage in class that will be removed in V18
* Removing obsoleted code from PropertyValidationService.cs
* Removing obsoleted code from AddUnroutableContentWarningsWhenPublishingNotificationHandler.cs
* Removing obsoleted code from IMemberService.cs
* Removing obsoleted code from DocumentCache.cs
* Prevents the removal of all user groups from a user.
* Add additional user group when removing
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Removing obsoleted code from ApiMediaQueryService.cs
* Removing obsoleted code from ApiRichTextMarkupParserTests.cs
* Removing obsoleted code from ContentCacheRefresher.cs
* Removing obsoleted code from ContentFinderByUrlAlias.cs and adjusting its tests to use the new logic
* Removing obsoleted code from ContentFinderByUrl.cs & its dependencies
* Removing obsoleted code from ApiRichTextMarkupParserTests.cs
* Removing obsoleted code from DocumentCache.cs & its dependencies
* Removing obsoleted code from MediaCache.cs & its dependencies
* Removing obsoleted code from PublishedCacheBase.cs & its dependencies
* Removing obsoleted code from RenderNoContentController.cs and its tests
* Removing obsoleted code from UmbracoRouteValueTransformer.cs
* Removing obsoleted constructors from DefaultUrlProvider.cs
* Removing the RadioValueEditor.cs & RadioValueValidator.cs obsoleted classes.
* Removing obsolete constructor from MultipleValueValidator.cs
* Removing obsolete constructor from EmailValidator.cs
* Removing obsoleted code from DataValueReferenceFactoryCollection.cs
* Removing obsoleted code from ApiContentBuilderBase.cs
* Fixing constructor missing attribute
* Making use of the TryGet result
* Fixing use of obsoleted constructor
* Removing silly bookmark comment
* Fixing deleted code and restructuring to use new cache
* Making use of TryGetRootKeys bool, to return null if false.
* Extending code to use new constructor
* Updated PublishedContentQuery.cs to return empty array
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Removing obsoleted code from MigrationPlanExecutor.cs & Interface
* Removing obsoleted code from EmailAddressPropertyEditor.cs
* Removing obsoleted class CacheRebuilder.cs
* Removing obsoleted code from TextBuilder.cs
* Removing obsoleted class ICacheRebuilder.cs
* Removing obsoleted code from SerilogLogger.cs
* Removing the use of Infrastructure IBackgroundTaskQueue.cs and replacing usage with the Core replacement
* Removing obsoleted code from the FileUploadPropertyEditor.cs
* Removing obsoleted code from BlockValuePropertyValueEditorBase.cs
* Removing obsoleted constructors and methods from MultiNodeTreePickerPropertyEditor.cs and TextHeaderWriter.cs
* Removing obsoleted code from CacheInstructionService.cs
* Bumping obsoleted code from MigrationBase.cs to V18
* Removing obsoleted code from EmailSender.cs
* Removing obsoleted code from BlockEditorVarianceHandler.cs
* Removing obsoleted code from IBackOfficeApplicationManager.cs
* Removing obsoleted code from RedirectTracker.cs & RichTextEditorPastedImages.cs
* Persist and expose Umbraco system dates as UTC (#19705)
* Updated persistence DTOs defining default dates to use UTC.
* Remove ForceToUtc = false from all persistence DTO attributes (default when not specified is true).
* Removed use of SpecifyKind setting dates to local.
* Removed unnecessary Utc suffixes on properties.
* Persist current date time with UtcNow.
* Removed further necessary Utc suffixes and fixed failing unit tests.
* Added migration for SQL server to update database date default constraints.
* Added comment justifying not providing a migration for SQLite default date constraints.
* Ensure UTC for datetimes created from persistence DTOs.
* Ensure UTC when creating dates for published content rendering in Razor and outputting in delivery API.
* Fixed migration SQL syntax.
* Introduced AuditItemFactory for creating entries for the backoffice document history, so we can control the UTC setting on the retrieved persisted dates.
* Ensured UTC dates are retrieved for document versions.
* Ensured UTC is returned for backoffice display of last edited and published for variant content.
* Fixed SQLite syntax for default current datetime.
* Apply suggestions from code review
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Further updates from code review.
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Migrate system dates from local server time to UTC (#19798)
* Add settings for the migration.
* Add migration and implement for SQL server.
* Implement for SQLite.
* Fixes from testing with SQL Server.
* Fixes from testing with SQLite.
* Code tidy.
* Cleaned up usings.
* Removed audit log date from conversion.
* Removed webhook log date from conversion.
* Updated update date initialization on saving dictionary items.
* Updated filter on log queries.
* Use timezone ID instead of system name to work cross-culture.
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Create sign provider collection and call registered providers on rendering a page of tree item view models.
Re-work tree controller constructors to provide registered providers as a collection.
* Stub implementation of sign provider for documents with a scheduled publish pending.
* Complete implementation of tree sign for pending scheduled publish.
* Added integration test for new method on IContentService.
* Added unit test for HasScheduleSignProvider.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Tidied usings and clarified method header comments.
* Adding a fixed prefix to all future signs, and removing the provider property
* Adding a sign for protected tree documents.
* Adding IsProtectedSignProviderTest.cs & correcting HasScheduleSignProviderTests.cs to no longer assert the provider
* Fixing minor things in accordance with CR
* Adding collection items compatibility
* Introduced IHasSigns interface to provide more re-use across trees and collections.
Fixed updates to base content controllers (no need to introduce a new type variable).
Removed passing entities for populating tree signs (we aren't using it, so simplifies things).
* Refactoring a bit to make existing code less duplicated and fixing some constructor obsoletion
* Introducing a has pending changes sign.
* Applying changes based on CR
* Introducing tests for HasPendingChangesSignProvider.cs and stopped the use of contentService
* Introducing tests for HasPendingChangesSignProvider.cs and slight logic change
* Introduced HasCollectionSignProvider.cs and tests.
* Introducing collection signs to Media Tree & Media Collection items
* Introducing Plain Items and tests. Refactoring tests as well
* Introduced alternative CanProvideSigns() implementation on IsProtectedSignProvider.cs
* Slight refactoring to reduce bloating.
* Adding [ActivatorUtilitiesConstructor] since it threw an error otherwise
* Minor cleanup.
* Updated OpenApi.json.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: NillasKA <kramernicklas@gmail.com>
* fix some test which are not running
* resolve code review comments
* Moved cleaned up tests to unit tests (as they are unit tests, not integration tests).
Removed tests marked as no longer necessary.
Update tests name to better reflect test case.
* Made explict test faster so it could run on the pipeline.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* 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.
* Content picker search with start node configured not taking user start nodes into account (#19800)
* Fix users being able to see nodes they don't have access to when using the picker search
* Readability and naming improvements
* Additional fixes
* Adjust tests
* Additional fixes
* Small improvement
* Replaced the root ids with constants
* Update src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
# Conflicts:
# src/Umbraco.Examine.Lucene/BackOfficeExamineSearcher.cs
# src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs
# src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs
# src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs
# tests/Umbraco.Tests.Integration/Umbraco.Examine.Lucene/UmbracoExamine/BackOfficeExamineSearcherTests.cs
* Add new constructor without unused and obsolete parameters
* Use non obsolete constructor in tests
* Add `dataTypeId` as parameter in document and media search endpoints to get `ignoreUserStartNodes` value
* Update backend API generated typed client
* Updated picker search to pass in data type unique
* Move data type retrieval to UmbPickerContext
* Adjust the controller constructors to make it non breaking
* Adjust controller methods to make non-breaking.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Fix moving properties between groups sometimes clearing their values
* Small adjustment
* Fix failing integration test
The mapping method was only setting the property group when it was not null, but for orphaned properties we want to specifically set it to null.
* Adjust 'Can_Move_Properties_To_Another_Container' integration test to check more scenarios and that values are kept
* Adjust to add isElement variable in test (as previously)
* Removed two unnecessary delete clauses when removing content types (they are looking for user group Ids, but we are deleting a content type).
* Renamed table name constant with obsoletion to better reflect name and contents of table.
* Added granular permission for property value records to delete clauses when deleting a document type.
* Delete property value permissions for removed property types.
* Added integration tests to verify behaviour.
* Adds support for the "folders only" flag on retrieving siblings of a node.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Updated test code.
* Removed double secondary ordering by node Id and ensured we include this clause for all sort orders.
* Ensure that ordering by node Id is always added only once and last, and only if it's not already been included in the order by clause.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Provides an abstraction for creating the JavaScriptEncoder used in SystemTextConfigurationEditorJsonSerializer.
* Generalised JSON serialization encoder factory to work for all System.Tex.Json serializers.
Added the serializer's name as a parameter to allow for different encodings per serializer if required.
* Fixed tests by removing use of obsolete constructors.
* Removed name parameter and used a generic type instead.
* Added user start node restrictions to sibling endpoints.
* Further integration tests.
* Tidy up.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Revert previous update.
* Retrieves item counts before and after the target for sibling endpoints and returns in API response.
* Applied previous update correctly.
* Removed blank line.
* Fix build and test asserts following merge.
* Update OpenApi.json.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Add integration tests that shows the problem
* Fix the problem and add explenation
* Improved comments slightly to help when we come back here!
Moved tests alongside existing ones related to scopes.
Removed long running attribute from tests (they are quite fast).
* Fixed casing in comment.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>