* Introduce new AuditEntryService
- Moved logic related to the IAuditEntryRepository from the AuditService to the new service
- Introduced new Async methods
- Using ids (for easier transition from the previous Write method)
- Using keys
- Moved and updated integration tests related to the audit entries to a new test class `AuditEntryServiceTests`
- Added unit tests class `AuditEntryServiceTests` and added a few unit tests
- Added migration to add columns for `performingUserKey` and `affectedUserKey` and convert existing user ids
- Adjusted usages of the old AuditService.Write method to use the new one (mostly notification handlers)
* Audit service rework
- Added new async and paged methods
- Marked (now) redundant methods as obsolete
- Updated all of the usages to use the non-obsolete methods
- Added unit tests class `AuditServiceTests` and some unit tests
- Updated existing integration test
* Apply suggestions from code review
* Small improvement
* Update src/Umbraco.Core/Services/AuditService.cs
* Some minor adjustments following the merge
* Delete unnecessary file
* Small cleanup on the tests
* Refactor descendant enumeration in DeliveryApiContentIndexHelper
Improved loop condition to allow for processing of more than 10.000 descendants for indexing.
* Add failing test for original issue.
* Renamed variable for clarity.
---------
Co-authored-by: Brynjar Þorsteinsson <brynjar@vettvangur.is>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Fix for https://github.com/umbraco/Umbraco-CMS/issues/18872
* Parsing added for current value
* Build fix.
* Cyclomatic complexity fix
* Resolved breaking change.
* Pass content key.
* Simplified collections.
* Added unit tests to verify behaviour.
* Allow file upload on block list.
* Added unit test verifying added property.
* Added unit test verifying removed property.
* Restored null return for null value fixing failing integration tests.
* Logic has been updated according edge cases
* Logic to copy files from block list items has been added.
* Logic to delete files from block list items on content deletion has been added
* Test fix.
* Refactoring.
* WIP: Resolved breaking changes, minor refactoring.
* Consistently return null over empty, resolving failure in integration test.
* Removed unnecessary code nesting.
* Handle distinct paths.
* Handles clean up of files added via file upload in rich text blocks on delete of the content.
* Update src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Fixed build of integration tests project.
* Handled delete of file uploads when deleting a block from an RTE using a file upload property.
* Refactored ensure of property type property populated on rich text values to a common helper extension method.
* Fixed integration tests build.
* Handle create of new file from file upload block in an RTE when the document is copied.
* Fixed failing integration tests.
* Refactored notification handlers relating to file uploads into separate classes.
* Handle nested rich text editor block with file upload when copying content.
* Handle nested rich text editor block with file upload when deleting content.
* Minor refactor.
* Integration test compatibility supressions.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Fix check for pending package migration to use the package not plan name.
* Cover all package name/identifier permutations and fix the API output for multiple plans
* Adjusted log message to not refer to unattended migrations as migrations may be being run attended.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Assert dates in content editing integration tests to millisecond only.
* Add date time extension unit tests and refactor to switch statement.
* Removed whitespace.
* Rename `IContentService.CreateContentFromBlueprint` to `CreateBlueprintFromContent`
In reality, this method is used by the core to create a blueprint from content, and not the other way around, which doesn't need new ids. This was causing confusion, so the old name has been marked as deprecated in favor of the new name. If developers want to create content from blueprints they should use `IContentBlueprintEditingService.GetScaffoldedAsync()` instead, which is what is used by the management api.
* Added integration tests to verify that new block ids are generated when creating content from a blueprint
* Return copy of the blueprint in `ContentBlueprintEditingService.GetScaffoldedAsync` instead of the blueprint itself
* Update CreateContentFromBlueprint xml docs to mention both replacement methods
* Fix tests for rich text blocks
* Small re-organization
* Adjusted tests that were still referencing `ContentService.CreateContentFromBlueprint`
* Add default implementation to new CreateBlueprintFromContent method
* Update tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentBlueprintEditingServiceTests.GetScaffold.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Introduce new AuditEntryService
- Moved logic related to the IAuditEntryRepository from the AuditService to the new service
- Introduced new Async methods
- Using ids (for easier transition from the previous Write method)
- Using keys
- Moved and updated integration tests related to the audit entries to a new test class `AuditEntryServiceTests`
- Added unit tests class `AuditEntryServiceTests` and added a few unit tests
- Added migration to add columns for `performingUserKey` and `affectedUserKey` and convert existing user ids
- Adjusted usages of the old AuditService.Write method to use the new one (mostly notification handlers)
* Apply suggestions from code review
* Small improvement
* Some adjustments following code review. Removed UnknownUserKey and used null instead.
* Small adjustments
* Better handle audits performed during the migration state
* Update TODO comment
* v16 cherry pick of member partial cache invalidator see #19314
# Resolved merge conflic in src/Umbraco.Core/Cache/Refreshers/Implement/MemberCacheRefresher.cs
* Take nullmember cacheitems into account
* Ensure tag operations are case insensitve on insert across database types.
* Ensure tags provided in a single property are case insensitively distinct when saving the tags and relationships.
* Update src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Handle case sensitivity on insert with tag groups too.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added logging and try/catch around retrieval of references, so we don't block critical operations following an incompatible data type change.
* Added a little more detail to the log message.
* Added a little more detail to the log message.
* Fix unittest mock dependency
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Ensures cultures set on content are correctly cased and verifies with integration tests.
* Improved test comments.
* Move culture casing check into an extension method and use from content service.
* Deduplicated test code and added more test cases
* Only run invalid culture codes test on Windows
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* 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>
* Fixed error with reflection on integration test configure builder attributes, so integration tests can be created outside of the Umbraco integration test project.
* Fix nullability
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Clear elementscache from cache refreshers
* Add very simple test ensuring the elements cache is cleared
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Updated dependencies to latest versions.
* Fixed breaking changes following dependency updates.
* Limited NUnit updates to within the current major.
* Fixed failing delivery API contract integration test.
* Added integration tests for publishing service with invalid content.
* Amend test to new create/update models
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* content type nesting
* TODOs
* repository detail manager
* todo
* implement unlimited compositions
* a little refactor
* warn
* clear state
* refactor to use unique
* note
* code corrections to match with types
* unique type for Array State
* implement usedForInheritance and editedTypes for Structure Manager and Compositions
* rename method
* Update repository-details.manager.ts
* avoid type casting
* align naming
* do not await
* fix race condition when switching document types fast
* remove test prop
* Update manifests.ts
* UmbMediaTypeWorkspaceContext Routes for inheritance
* import
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Fix
* Editors with access should be able to clear a blocklist value
* Writeup around block element level variation
* Dissallow values to be removed a limited language user does not have permissions to
* Remove commented out code
* improved comments
* Improve expose list for limited language access sub variant block lists
* Scaffold content for content templates serverside
* Generated client types and methods from API.
* Retrieve scaffolded blueprint when creating documents from a blueprint.
* Use introduced helper method on existing read.
* Cleaned up imports.
* feat: moves scaffold service logic to data source and make shallow repository method
* feat: follows UmbDataSourceResponse interface and reorders public/private methods
* Bumped version to 15.4.0-r2.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* add property visibility state manager
* implement in structure manager
* filter properties based on visibility
* wip document type structure permissions
* rename
* register entity permission for document type property
* add entity permission for media type property
* pass fallback permissions to document granular permissions
* set as preset
* clean up
* wip document type property picker
* add preset value
* Update input-document-type-structure-granular-user-permission.element.ts
* move files
* rename
* Update input-document-value-granular-user-permission.element.ts
* remove temp test
* Update manifests.ts
* remove unused
* Update input-document-value-granular-user-permission.element.ts
* rename see permission + add write permission
* fix missing type
* require property type unique
* add unique to property type
* rename to property type
* map to unique
* deprecate id on property type
* return unique from property picker
* more explicit naming
* use type
* render detail
* Update input-document-value-granular-user-permission.element.ts
* wip modal flow
* clean up
* add headlines
* hide actions
* pass preset value
* add edit permission method
* include property in permission name
* add read and write managers
* implement read and write state managers
* Update content-type-structure-manager.class.ts
* enforce property permissions
* Storage for granular permissions at property type level
* add guards
* make variant property version
* Rename server models to include "property"
* generate server types
* add permissionType to model
* add mappers to user group permission data
* add mapper to current user permission data
* destroy
* clear state
* use permission type for guard check
* add permission type
* require specific permission type
* use correct schema type
* add mappings
* clean up
* log errors
* fix mapping
* null check for icon
* use fallback if there is no forDataModel
* add translations
* sort group alphabetically
* add empty state for no verbs
* organize folders
* always require unique and variant id
* Allow storing empty lists of verbs
* pass variant id to all states
* Remove empty verbs
* add alias to name
* prevent picking the same property type multiple times
* fix lint errors
* fix create state by observing variant options
* move to workspace context
* Update document-property-value-user-permission.workspace-context.ts
* Update content-editor-properties.element.ts
* clean up
* Rename models (last time, promise!)
* Add migration for default document property value permissions
* generate new server models
* update after model changes
* Correct the default permission identifiers
* Add default permissions to newly created DBs
* Add validation and clean-up
* rename to visibility state
* rename to view
* add helpers
* apply to blocks
* Update document-property-value-user-permission.workspace-context.ts
* disable view and write state by default
* add tests for start and stopping a state
* throw errors if adding to a state that is not running
* export consts
* export consts
* fix circular
* fix circular
* set the entity type when setting values
* only apply for block in document values
* split logic
* start states for document blocks
* only apply states when state is running
* Fixed typos in test method names.
* add readonly type
* Enforce: AllowEditInvariantFromNonDefault configuration (#18758)
* add read only state
* handle read only property state in properties element
* prevent editing shared props on non default
* enforce configuration
* clean up
* set variant id
* move to property module
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* remove unnecessary messages
* make sure to destroy consumer
* Thoughts as TODO
* use Entry type
* use Entry type
* get rid of things not yet released
* clean up
* use generic methods
* TODO comment
* use generic observable
* catch if not found
* move variant id out of property type
* mega refactor temp commit
* Guard Manager
* set readOnly as a property on property editors
* further rename
* remove property state managers
* revert state manager
* fix sorting rule
* mega rename and correction
* refactor properties elements
* todo note
* clean up
* impl
* mega refactor moving permission guards to workspace
* rename
* type change
* rearrange
* correct import
* fix tests
* correct tests
* reset viewGuards block
* type correction
* refactor read only for user permissions setting
* todo note
* align property element
* await promise
* impl view guard property filtering
* correct const name
* fix fallback user permissions in mock data
* correct property type id mock data
* toggle permissions example
* complex permission
* Move migration to 16.0.
* rename fallBackToDisallowed to fallbackToNotPermitted
* clean up setReadOnlyStateForUserPermission
* capital o
* align read only naming
* rename method
* add js docs
* remove unused
* correct method name
* add js docs
* add js docs
* camel case function
* fix eslint problems
* camelcase const
* align method names
* remove unused
* fix host
* fix spelling mistake
* align naming
* fix spelling mistake
* add alias
* use read only state methods
* camel case function
* correct method name
* add js docs
* camelcase function
* camel case function
* align method names
* change method name wording
* Include document property value permissions in the current user's aggregated permissions.
* use is read only
* delete unused
* fix implementation of AllowEditInvariantFromNonDefault
* don't know what is happening here. Local is it lower on github it is higher
* Update document-workspace.context.ts
* revert to v16 dev
* simplify if statement
* make it explicit that these are ui only permissions
* add action label for read
* remove duplicates
* use read instead of browse
* align description
* use document instead of node
* make the base class abstract
* extend in test
* Update guard.manager.base.test.ts
* fix example
* style adjustment
* group styling
* refactor guard rule resolving
* remove imports
* remove console.log
* improve disconnected context consumer rejection message
* fix publishableVariantsFilter
* Update document-workspace.context.ts
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Create new migration
* Migrate UI to tiptap
* remember to overwrite toolbar
* Add setting to disable migration
* Add default extensions when migrating
* Remove places where editorUI alias is used
* Remove more tinyMCE stuff
* Make sure that blocks also works
* Reverted files from bad merge
* bring back value converters
* Class name casing
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Create integration test verifying existing behaviour.
* Aggregate permissions per document for the current user response.
* Refactoring following Codescene warnings.