* Protect endpoint that sets user groups for a user collection to prevent elevation of permissions for users.
* Update tests from code review feedback.
* updates the drag event to convert types to lowercase
* clearing up
* clearing up
* Fixed style problem in safari and an unused parameter.
* Fixed lint error.
---------
Co-authored-by: engjlr <enl@umbraco.dk>
Co-authored-by: Engiber Lozada <89547469+engijlr@users.noreply.github.com>
* fix: sets profiling cookie to httpOnly and strict in order to run non-secure
* fix: adds extra message to explain when you can set a cookie
* fix: simplify cookie explanation comment in WebProfilerRepository
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: checks that the profiler is actually enabled and/or disabled and warns the user if that is not the case
* Update src/Umbraco.Web.UI.Client/src/assets/lang/en.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Adds localization manifests for region-specific cultures
This is to support backwards-compatibility and v13 upgradability.
* Removed `uiCulture` from Vietnamese localizations
since it duplicated the English fallback texts.
* 'en' localization file formatting
* Update src/Umbraco.Web.UI.Client/src/assets/lang/en.ts
---------
Co-authored-by: Lee Kelleher <leekelleher@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Preserve existing Examine FieldDefinitionCollection if it already exists (#20267)
* Fix missing bracket
* Minor tidy/addition of comments; addition of unit tests.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
(cherry picked from commit 908974c6ac)
Handles rich text blocks created with TinyMCE in convert local links migration.
Refreshes internal datatype cache following migration requiring cache rebuild.
# Conflicts:
# src/Umbraco.Infrastructure/Migrations/MigrationPlanExecutor.cs
Redact back-office PKCE codes from the server (#20847)
* Redact back-office PKCE codes from the server
* Update src/Umbraco.Cms.Api.Common/DependencyInjection/HideBackOfficeTokensHandler.cs
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* feat: adds the `credentials: include` header to all manual requests
* feat: adds `credentials: include` as a configurable option to xhr requests (and sets it by default to true)
* feat: configures the auto-generated fetch client from hey-api to include credentials by default
* Add OpenIddict handler to hide tokens from the back-office client
* Make back-office token redaction optional (default false)
* Clear back-office token cookies on logout
* Add configuration for backoffice cookie settings
* Make cookies forcefully secure + move cookie handler enabling to the BackOfficeTokenCookieSettings
* Use the "__Host-" prefix for cookie names
* docs: adds documentation on cookie settings
* build: sets up launch profile for vscode with new cookie recommended settings
* docs: adds extra note around SameSite settings
* docs: adds extra note around SameSite settings
* Respect sites that do not use HTTPS
* Explicitly invalidate potentially valid, old refresh tokens that should no longer be used
* Removed obsolete const
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Fix block list inline mode
https://github.com/umbraco/Umbraco-CMS/issues/20618
* Fixed potential runtime errors
* Code cleanup
* Fixed Code Health Review
* Revert some changes
Commented out unused state properties and related code.
* Remove commented-out state property in block workspace view
* fix localization
* no need for question mark after ids, they should be presented as required
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Added request cache to content and media lookups in mult URL picker.
* Allow property editors to cache referenced entities from block data.
* Update src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add obsoletions.
* Minor spellcheck
* Ensure request cache is available before relying on it.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: kjac <kja@umbraco.dk>
* Generate BOM files on build
* Upload BOM to Dependency Track
* Move Backoffice BOM generation to right after install
The build and/or pack steps are deleting files that are needed for the BOM to be generated properly.
* Split the BOM uploads into different jobs
* Fix wrong usage of parameters
* Move order of dependency track stage
* Fix wrong umbracoVersion value
* Small fixes
* Log curl response headers
* Correct version sent to dependency track
* Adjusted curl flags
* Fix bom file path
* Fix dotnet bom file name
* Add Login UI to dependency track
* Generate BOM for E2E Tests
* Move dependency track stage
* Move acceptance test .env generation to e2e install template
Needed as the post install script is expecting this to exist.
* Use major version if public release
* Missing ')'
* Reverted npm install command changes in static assets project
* Have to control of the state store navigation for custom sections or overrides
* revert wording
* move logic and update comment
---------
Co-authored-by: Lucas Bach Bisgaard <lucas.bisgaard@kraftvaerk.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* utility
* ability to replace
* deprecate removeStatus
* no need to call this any longer
* Sort statuses and ensure not appending statuses, only updating them
# Conflicts:
# src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts
Currently it's not possible to use characters like "_" and "-" in aliases due to this check - At least that is was @nul800sebastiaan told me 😇
Suggested fix for #20622
* Not show the empty tile when filtering is active.
* Added mandatory property to the icon picker.
* Avoid deselecting the icon on second click when not showing the empty option.
* Extends the form control mixin to the icon picker.
* Used super.value.
* Support mandatory from settings config.
* Removed mandatoryConf.
* remove requestUpdate
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Added check to only find .css files in FileSystemTreeServiceBase.cs
* Marking GetFiles as virtual and overriding it in StyleSheetTreeService.cs to only find .css files
* Redone tests to fit new format
* Fix tests to use file extensions
* Adding file extensions to all other relevant tests
* Adding file filter to remaining trees
* Adding tests to ensure invalid filetypes wont show
* Encapulation and resolved minor warnings in tests.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* utility
* ability to replace
* deprecate removeStatus
* no need to call this any longer
* Sort statuses and ensure not appending statuses, only updating them
# Conflicts:
# src/Umbraco.Web.UI.Client/src/packages/core/repository/repository-items.manager.ts
* Be consistent in use of GetOrCreateAsync overload in exists and retrieval.
Ensure nullability of ContentCacheNode is consistent in exists and retrieval.
* Applied suggestion from code review.
* Move seeding to Umbraco application starting rather than started, ensuring an initial request is served.
* Tighten up hybrid cache exists check with locking around check and remove, and use of cancellation token.
* Reduce log level of image cropper converter to avoid flooding logs with expected exceptions.
* Don't run publish branch long running operation on a background thread such that UmbracoContext is available.
* Revert to background thread and use EnsureUmbracoContext to ensure we can get an IUmbracoContext in the URL providers.
* Updated tests.
* Applied suggestion from code review.
* Clarified comment.
* Be consistent in use of GetOrCreateAsync overload in exists and retrieval.
Ensure nullability of ContentCacheNode is consistent in exists and retrieval.
* Applied suggestion from code review.
* Move seeding to Umbraco application starting rather than started, ensuring an initial request is served.
* Tighten up hybrid cache exists check with locking around check and remove, and use of cancellation token.
* Tiptap toolbar config: enable removal of unregistered extensions
* Tiptap statusbar config: enable removal of unregistered extensions
* Tiptap toolbar config: Typescript tidy-up
* Tiptap toolbar sorting amend
Removed the need for the `tiptap-toolbar-alias` attribute,
we can reuse the `data-mark`.
* Tiptap extension config UI amend
If the extension doesn't have a `description`,
then add the `alias` to the title/tooltip, to give a DX hint.
* Tiptap toolbar: adds `title` to placeholder skeleton
* Added missing `forExtensions` for Style Select and Horizontal Rule toolbar extensions
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/toolbar-configuration/property-editor-ui-tiptap-toolbar-configuration.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/statusbar-configuration/property-editor-ui-tiptap-statusbar-configuration.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Preview Exit: Gets the page's published URL on exit for redirect
* Preview Open Website: Uses the page's published URL
* Tweaked the published URL logic
* Code amends based on @copilot's suggestions
* Added request caching to media picker media retrieval, to improve performance in save operations.
* WIP: Update or insert in bulk when updating property data.
* Add tests verifying UpdateBatch.
* Fixed issue with UpdateBatch and SQL Server.
* Removed stopwatch.
* Fix test on SQLite (failing on SQLServer).
* Added temporary test for direct call to NPoco UpdateBatch.
* Fixed test on SQLServer.
* Add integration test verifying the same property data is persisted as before the performance refactor.
* Log expected warning in DocumentUrlService as debug.
* added hovering and focus border to RTE
* fix main to OG
* fix to main again
* I'm going to cry
* Missing localiztion feature, maybe UmbLitElement?
* added localization controller to fetch localized version
* localization successful for viewActionsFor and CreateFor
* clean up button text
* Changed label for content header to display proper name
* clean up code
* Included button labels for media section
* clean code
* Relocated localization keys,
as `actions_viewActionsFor` already existed.
Also made into a function, to support a fallback label.
* Simplified the "Create for" label/localization
Removed the need for a `getCreateAriaLabel()` method.
* Removed the double-localizations (of `actions_viewActionsFor`)
as the "umb-entity-actions-bundle" component handles this now.
* imports tidy-up
* Simplified localization key condition
* switched to new localization key for other sections for new labeling
* Bumped `@umbraco/playwright-testhelpers` 16.0.55
https://github.com/umbraco/Umbraco.Playwright.Testhelpers/releases/tag/release%2F16.0.55
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Block List: adds `$index` support for UFM labels
* Block Grid: adds `$index` support for UFM labels
* Block RTE: adds `$index` support for UFM labels
Which is always zero `0`.
But has been wired up if we do implement the index order in future.
* Configure document/media items to listen for `Trashed` server-events for cache invalidation
* Fire reload event on restore destination tree/menu
* Removed "trashed" part of the code comment
* Add explicit references to Microsoft.CodeAnalysis.* packages to fix conflicts when installing Microsoft.EntityFrameworkCore.Design
This allows consumers to simply install Microsoft.EntityFrameworkCore.Design without having to manually install specific versions to deal with transitive dependency problems.
* Disable CPM for UI project to better reflect consumers
* Update src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* added hovering and focus border to RTE
* fix main to OG
* fix to main again
* I'm going to cry
* Missing localiztion feature, maybe UmbLitElement?
* added localization controller to fetch localized version
* localization successful for viewActionsFor and CreateFor
* clean up button text
* Changed label for content header to display proper name
* clean up code
* Included button labels for media section
* clean code
* Relocated localization keys,
as `actions_viewActionsFor` already existed.
Also made into a function, to support a fallback label.
* Simplified the "Create for" label/localization
Removed the need for a `getCreateAriaLabel()` method.
* Removed the double-localizations (of `actions_viewActionsFor`)
as the "umb-entity-actions-bundle" component handles this now.
* imports tidy-up
* Simplified localization key condition
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Add `Expiry` header to emails, set default expiry to 30 days and allow user config via `appsettings`
* Remove `IsSmtpExpirationConfigured` as it will always have a value
* Check for `emailExpiration` value
* Removed `EmailExpiration` default value as it should be opt-in
* Simplify SMTP email expiration condition
* Fix APICompat issue
* Add implementation to `NotImplementedEmailSender`
* Rename `emailExpiration` to `expires` to match the SMTP header
* Obsolete interfaces without `expires` parameter, delegate to an existing method.
* Set expiry TimeSpan values from user configurable settings with defaults
* Fix formating
* Handle breaking changes, add obsoletion messages and simplify interfaces.
* Fix default of invite expires timespan (was being parsed as 72 days not 72 hours).
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added unique color checker to color picker.
* Added Unittest for duplicates
* optimized for codescene
* removed the bump and simplified the function
* Fixed behaviour for duplicate checks so unit test passes.
A little refactoring.
* Adds continue so invalid colors aren't checked for duplicates.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Adjust the `JsonBlockValueConverter` to handle conflicts with 'values' property (due to old data schema)
* Simplify code
* Add unit test to verify change.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added screen readers notification support
* Making the sr-live div not visible for users
* Moved aria-live outside the repeat
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* #20035 Updated validation context example to reflect issue
* Fixes#20035 by handling returned promise
* just catch if it was rejected
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* entity signs folder
* update package.json
* entity sign extension type
* implement entity sign extension
* POC document has collection sign
* implement icon kind
* rename file
* note about this being wrong
* move type
* change import
* entity sign bundle element
* implement icon kind label
* Display icon and show popover on hover
* Fix the popover logic
* Moving the sign icon to the iconContainer to handle position
* fix missing document tree icon
* revert removal of icon slot render
* remove unused styles
* document tree item - inherit styles from the base element
* correctly extend styles
* revert document tree item icon change
* move icon container html
* add method to get an icon name
* Adding delay to the popover when opens
* Add animation to popover when it opens
* Making the parent of the entity bundle trigger popover on hover
* Display 2 icons over the main icon
* Updating some styles
* Position one icon on top of the other and add css style variables
* Changing popover-container for position-anchor
* generate server types
* Using css properties to display and animate the signs
* Stacked icons using grid property
* Use translate property to move the icons around
* Added fallback styles for firefox
* formatting of state properties
* implement entity flags across content types
* lint fixes
* fix import extension mess
* await both properties for this to work
* transfer flags to entity sign bundle ext initializer
* is-protected entity sign
* Made signs infobox show downward.
* Changed px to rems
* Change the manifest for the actual signs we will display
* add icon color, remove unused label, add weight
* changes styles + animation + slotted icon inside
* Overwrite pending changes when schedule is active and added green color to schedule.
* adjust animation
* add background for sign
* avoid re-rendering when properties are being set
* Bind the flags to each sign manifest.
* increase signs offset
* fix document tree item draft style
* Removed unused exports.
* Remove duplicated hover timer logic.
* Added eslint disable line to keep the empty method for future implementation.
* rename class
* Rename interface for optional entity flags
* make alias more explicit to prevent future collisions
* include alias in field name to make it clear that we do not except all colors
* align function names with conventions
* always include flags in document items
* compose tree types
* set up entity-flag module and move related types
* change label
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Show selected icon and color(if any) when open the modal.
* Add a button inside the modal that clears the value
* Deselect the value if we click the already selected icon.
* Add placeholder icon and some localization for labels
* Remove unused variable
* Added config for the placeholder icon in case no icon is selected.
* added hovering and focus border to RTE
* fix main to OG
* fix to main again
* I'm going to cry
* Added label for splitviewdivider
* Added localization to divider label and updated common lang files
* Removes unused import
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Fix failing SQLServer integration tests
Adjusted the tests so that the created content is retrieved again after creation, instead of using the returned IContent.
This is needed because SQLServer, when using datetime, rounds to the closest .000, .003, or .007, which would cause the comparisons to fail.
We should consider moving away from datetime to datetime2, as the former should be avoided according to Microsoft.
https://learn.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver17
* fix: Identified everywhere the bugs happen and implemented the InGroupOf() extension to successfully batch the SQL queries
* Added helper function in case this batching functionality is in future scopes
* Accidently deleted a groupIds.Any() check while adding BatchFetch helper function
* Removed helper function and instead utilising built in FetchByGroups extension method
* Added tests for changing own password
* Updated tests for current user profile
* Bumped version
* Make CurrentUserProfile tests run in the pipeline
* Added step to ensure the error notification toast not displays
* Reverted npm command
* Added tests for media delivery api
* Added tests for content delivery api
* Fixed import
* Updated skip tag and issue link for the failing tests
* Bumped version
* Split delivery api tests into 2 files
* Updated tests for media delivery Api
* Cleaned up
* Fixed comments
* Fixed comments
* term example
* better localization options
* localize range
* ensure range value handling
* extract lox high from value setting
* further improvements
* stop requiring entity-type for values
* setup for parsing blueprints as values to the value preset manager
* write test for blueprint values in value preset controller
* deprecate scaffold method in order to use a new more generic name
* Avoid manipulating the incoming data
* Update src/Umbraco.Web.UI.Client/src/assets/lang/en.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* use max here
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added tests for duplicate a content
* Bumped version
* Make all tests for duplicating a content run in the pipeline
* Fixed comments
* Reverted npm command
* Added tests for readOnlyGuard rules
* Added backoffice override files for readOnlyGuard tests
* Bumped version
* Added project for ExtensionRegistry tests in playwright configs
* Updated nightly E2E test pipelines to run Extension Registry tests
* Updated nightly E2E test pipeline
* Updated nightly E2E test pipeline
* Updated playwright configs
* Updated nightly E2E test pipeline
* Add test for Entity Action Extension to retrieve entityType and unique (#20020)
* Add entity action test to get unique and entity type
* update test entity action
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
* Added job to run the Extension Registry tests in the nightly pipeline
* Cleaned up
* Restructure AdditionSetup folder for extension registry
* Updated yaml file for nightly E2E pipeline
* Updated json file for lock action
* Skip test for content delivery API
* Updated port
* Comment out others to run only extension registry tests
* Updated port
* Remove retrieve action folder to test
* Reverted nightly E2E test pipeline
* Reverted
* Updated umbraco package json
* Reverted
* Renamed AdditionalSetup folder
* Renamed folder
* Added appsetting.json file
* Updated appsettings.json
* Updated appsettings.json
* Added debug step
* Added step to build backoffice
* Reverted
* Only spec.ts file run in the extension registry project
* Property Editor: Add tests for create and using custom property editor (#20213)
* Property Editor: tests for create and using custom property editor
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ExtensionRegistry/PropertyEditorTest.spec.ts
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ExtensionRegistry/PropertyEditorTest.spec.ts
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ExtensionRegistry/PropertyEditorTest.spec.ts
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* update review from Nhu
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ExtensionRegistry/CustomPropertyEditor.spec.ts
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ExtensionRegistry/CustomPropertyEditor.spec.ts
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* fix comment from Nhu
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
* Format code
* Fixed
* Format code
* Format code
* Format code
* Updated indentation
* Fixed comments
* change the name of test
---------
Co-authored-by: NguyenThuyLan <116753400+NguyenThuyLan@users.noreply.github.com>
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* term example
* better localization options
* localize range
* ensure range value handling
* extract lox high from value setting
* further improvements
* Update src/Umbraco.Web.UI.Client/src/assets/lang/en.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add a bit more spacing and align button in block grid areas config
* Remove unnecessary blank line in CSS
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Use EndpointMetadata to check for existing MapToApiAttribute at runtime
* fix api breaking change
* revert MethodInfoApiCommonExtensions.cs
* remove empty line in ActionDescriptorApiCommonExtensions.cs
* Add xml comments to ActionDescriptorApiCommonExtensions
* Revert boy scout refactoring to primary constructur
* Better xml comments in ActionDescriptorApiCommonExtensions
---------
Co-authored-by: Marcus Wilhelmson <marcus.wilhelmson@consid.se>
Change to layout of default content dashboard.
I have removed the max width on the wrapper and increased the padding on the small pods to match the larger pod. This improves consistency with all other default dashboards in other sections of the CMS, none of which had a max width applied and where all pods had larger padding.
Co-authored-by: Paul <paul@madebycrunch.com>
* Ports fix to regression of the caching of null representations for missing dictionary items.
* Fixed error raised in code review.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Ports fix to regression of the caching of null representations for missing dictionary items.
* Fixed error raised in code review.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Adjust data type workspace UI when opening a data type that has an editor or editor UI that could not be found
* Also display a custom UI in a document property where the editor UI could not be found
* Fix circular dependency
* Small renames
* provide data-path for property editor picker
* update console warning
* Text copy changes
* add comment to element
* Fix editor alias not updating when selecting a different property editor UI
* Remove outdated comment
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* refactor code
* display language name for empty names
* ensure all culture variants when entering a segment-shared value, shared across cultures
* Revert parts of "ensure all culture variants when entering a segment-shared value, shared across cultures"
This reverts commit 0e64f72695.
* Retrieve only ISO codes from the database rather than full language objects if that's all we need.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Removed repository updates and migrated the new service method to an extension method.
* Fixed issue after merge.
* Removed left-over using
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* 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>
* Add removeStatus method to repository manager
Introduces a removeStatus method to UmbRepositoryItemsManager, allowing removal of a status by its unique identifier.
* Remove item status on picker input removal
Calls removeStatus on the item manager when an item is removed from the picker input selection to ensure its status is updated accordingly.
* PropertyType constructor sets the DataTypeKey if passed IDataType has identity
* Updated unit tests to verify behaviour.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Updated steps to verify the error validation message
* Updated default extension for Tiptap
* Removed skip tag for fixed smoke tests
* Bumped version
Fix property write guard to use correct variant ID
Replaces the use of propertyVariantId with _datasetVariantId in the property write guard check to ensure permissions are evaluated for the correct variant.
Fix property write guard to use correct variant ID
Replaces the use of propertyVariantId with _datasetVariantId in the property write guard check to ensure permissions are evaluated for the correct variant.
* Initial adjustment of the projects with package vulnerabilities that errored, to change to ignore the four specific Nuget vulnerability warnings in Debug mode (but not Release) as per https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1901-nu1904 (NU1901,NU1902,NU1903,NU1904)
* Fixed formatting errors with tests
* No trailing whitespace
* Move NuGet vulnerability warnings error suppression to Directory.Build.props, combine WarningsNotAsErrors and fix minor issues
* Update Umbraco.JsonSchema.csproj
Removed unwanted change
* Update Umbraco.JsonSchema.csproj
Removed unwanted change
* Revert unecessary changes since merge
* Tweak more unecessary changes
* Small tweaks
* Remove space
* Reverted spacing changes
* Remove no longer required warning exclusions
* Reverted unwanted change
* Reversed order
* A few tweaks to reduce warnings in Umbraco.TestData
* More warnings removed as no longer an issue
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Emma Garland <emma.garland@rocksolidknowledge.com>
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
Update README.md with information about the forum
Making a small change to the Readme to signpost the Forum now that it's the place to go for help/questions
* fix: adds a <form> element around the consent/telemetry step to ensure proper form handling
also adds a submit action so that you can continue with click of ENTER
* fix: adds umbFocus to select inputs to allow the user to proceed with tabbing too much around, i.e. they will start within the form
* set value to undefined when empty
* fix nullable checks
* ensure promise rejection when validation fails
* avoid js error when detailStore is not present
* implement editor as form control
* remove unused
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Display the latest update date in document collection view
* Don't consider "" as a missing option when initializing the drop down list.
* Don't flag "" as a missing option when validatng server-side.
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.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>
* Directly convert from double or float when possible. Also fixes string parsing to work on all cultures. Fixes#20214
* Added unit tests to verify behaviour.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* setup files
* allow Unproviding as a valid word
* setup context
* declare new module
* clean up on destroy
* implement keydown listener
* rename to all
* Revert "rename to all"
This reverts commit 5384408d5f.
* revert shortcuts revert
* move view initialization to submittable workspace base
* comment on destroy thingy
* submit workspace shortcut
* rename to action
* observe parent activation to make sure children follows along.
* fix comment to make AI happy
* implement modal view and titles
* fix getting title from token
* rename context alias
* use controller not context here
* provide modal view at modal element
* implement view context at app level
* Refactor view inheritance logic
* reverse children to be activated loop
* note on global shortcuts
* additional note
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>
* added hovering and focus border to RTE
* fix main to OG
* fix to main again
* I'm going to cry
* added hovering and focus border to RTE
* fix indentation
* Refactored to set `--umb-tiptap-edge-border-color` variable
so that the toolbar and statusbar can pick up the state changes.
* Applies `transition` to the toolbar/statusbar components
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* added hovering and focus border to RTE
* fix main to OG
* fix to main again
* I'm going to cry
* added dynamic label to expand/collapse button on parent/child treeitems
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
* Remove redundant call to #loadTreeRoot in tree context
* Update tree root requests to use take: 0
Changed all tree repository requestTreeRoot methods to call getRootItems with { take: 0 } instead of { take: 1 }. This ensures that no items are fetched when only the total count is needed to determine if children exist, improving efficiency.
* Add user data delete endpoint to the management API
* Fix typo and remove unused umbracoMapper
* Applied changes from code review.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* set property type unique on context
* set the value
* observe property type unique from content picker property editor
* remove unused
* observe data type unique
* wip picker memories
* append memory option to the picker data model
* split into methods
* initialize memory context
* rename arg
* make memory module
* export constants
* allow nested memories
* pass memory from input document to picker context
* Update property-editor-ui-content-picker.element.ts
* fix import
* prefix with interaction
* clean up
* fix import
* rename module
* Update vite.config.ts
* update module name
* observe after search is initialized
* use memory manager in all places
* make picker modal base element
* update types
* add memory for document picker property editor
* store tree item picker expansion state in interaction memory
* Update picker-modal-base.element.ts
* remove the memory if we have no expansion state
* delete memory if it doesn't include anything
* clear picker input memories if nothing comes from the modal
* Refactor interaction memory handling in picker input
Moved the passing of interaction memories from the document picker input context to the core picker input context. Renamed the method for setting memories from the modal for clarity and consistency.
* only dispatch an event if the value changes
* remove unused
* observe to support close on escape
* add comments
* fix type error
* fix typings
* Replaces data type-based memory keys with config hash-based keys
* dont store picker search in interaction memory
* Rename interaction memory key in picker modal base
* Remove error throw for missing interaction memory
* Refactor interaction memory handling in content picker
Replaces the single 'memory' property with an 'interactionMemories' array and updates event handling to support multiple interaction memories. Adjusts property types, event listeners, and child component bindings to accommodate this change.
* Refactor content picker to use interaction memories
Replaces the previous memory handling with a new approach using interaction memories, including unique hash generation based on config. Updates event handling and property names to align with the new interaction memory model, improving state management and consistency.
* remove debugger
* rename const
* wip media picker memories
* remove args
* simplify memory model
* update internal value before dispatching event
* remove unused
* Update property-type-based-property.element.ts
* rename method
* simplify types
* implement location memory for media picker
* temp type cast
* set location memory when using the breadcrumb
* remove code duplication
* bubble memories from input media to input content
* Update src/Umbraco.Web.UI.Client/src/packages/property-editors/content-picker/property-editor-ui-content-picker.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix import
* remove unused method
* Refactor content picker interaction memory management
Introduced UmbPropertyEditorUiInteractionMemoryManager to encapsulate interaction memory logic for property editors. Updated the content picker property editor to use this new manager, removing duplicated memory management code and improving maintainability.
* Refactor interaction memory management in pickers
Replaces custom interaction memory logic in document and media picker property editors with the shared UmbPropertyEditorUiInteractionMemoryManager. Updates unique memory key prefixes for consistency and simplifies related event handling. This improves maintainability and standardizes memory management across property editors.
* export context token
* add js docs
* remove timestamp
* add tests for interaction memory manager
* Added tests for the property editor ui interaction memory manager
* Rename memories to memoriesForPropertyEditor
Renamed the 'memories' property to 'memoriesForPropertyEditor' in the interaction memory manager and updated all references in related property editor components and tests for clarity and consistency.
* Separated out `import type`s + ordering
* remove interaction memory implementation in modal context
* remove interactionMemories from modal interface
* revert to using the umbOpenModal helper
* align property and event name
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Preserve additional URL path in split view navigation
Enhances the split view manager to retain any additional pathname segments when updating the browser history, ensuring that navigation state beyond the variant part is preserved.
* Update src/Umbraco.Web.UI.Client/src/packages/core/workspace/controllers/workspace-split-view-manager.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* format
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: gets hints and assigns to variants to enable the view to show a badge if there is a hint
* feat: find the first hint on the non-active variant
* feat: protect against non-variants
* feat: ignore invariant variants
* feat: adds a render method for hints
* chore: removes comment
* only add a new hint if the weight is higher
* Remove tags with backspace
* Unused varible
* Manage focusable tag and tabindex updates
* `import`s tidy-up
* Adds `tabindex` and focus outline for each tag
* Removed the tag wrapper container
No longer required.
* Adds support for "Delete" key
* Disables `autocomplete` for new tag input
This conflicts with the suggestions prompt.
* Reverted removal of the tag wrapper container
Required as a "skip tags" tabbing feature
* Uses `UmbChangeEvent`
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Added appsettings
* Added test setup for different config
* Added appsettings for external login
* Added acceptance tests
* Updated pipelines
* Updated solution file
* V15 QA Added external login provider tests and split pipeline into templates (#20049)
* Added setup for external login
* Started on yaml
* Added test file
* Updated pipeline
* Use env vars
* Added env variables and commented out test we don't need to run
* Removed list from matrix
* Updated condition
* Updated package path
* Updated testFolder
* double slash
* Updated condition
* Updated condition again
* Added port
* Removed redundant values
* Set as env vars
* Added env vars beneath matrix
* Get env
* Updated naming
* Updated usage of values
* Added a check for client id, to see if value set
* Moved env out of pool
* Tried moving env
* Trying to fix the env being empty
* Removed env
* Updated name of variable
* Fixed A cyclical reference
* Updated typo
* More logging
* Reverted change
* Added env
* Added env to tests
* Cleaned up
* Added yaml template files
* Updated nighly pipepline to use templates
* Updated sln
* Split yaml into templates for e2e setup
* Updated pipeline
* Updated solution file
* Set value
* Added if statement
* Added variables
* Set default values
* Updated values
* Updated condition
* Run multiple tests
* Added env
* Updated from parameter to variable
* Fixed condition
* Fixed condition to use actual value
* Updated npx wait on command
* Updated pwsh
* Updated port again
* Updated port value
* Updated wait on
* Updated condition
* Restructured
* Updated var
* Updated run application steps
* Added echo
* Updated to boolean
* Updated conditions
* Updated test template usage
* Added databaseType
* Added another databaseType
* Split up templates
* Fixed indentation
* Updated condition
* updated path
* removed build from path
* Updated conditions for azureAd
* Fixed indentation
* Updated to single qoutes
* Cleaned up
* Removed unused file
* Clarified namin
* Moved
* Updated pipeline, not done
* Updated locator
* Updated pipelines
* Updated test helpers package
* Skipped build stage for default app settings tests
* Updated password var
* Updated locators
* Updated defaultconfig build setup
* Split E2E stage in two
* Added parameter for skipping integration tests
* Cleaned up
* Added ASPNETCORE_URLS
* V15 QA acceptance tests with appsettings (#19550)
* Start of appsetting
* Updated setup of playwright
* Adjusted the pipeline
* Updated appsetting
* Added install test
* Added comments
* Updated pipeline
* Updated development app settings
* Commented tests out
* comment
* Added if statement
* Updated pipeline
* Fixed condition
* Changed to production
* Added a log
* Updated copy item
* Added
* Updated app settings
* Updated pipeline
* Moved playwright login
* Updated pipeline
* Updated app setting
* Updated nightly
* Updated appsettings
* Updated get
* Updated wait on
* Updated appsettings
* Updated connection string
* Updates
* Skips code
* Updated variable
* Updated pipeline
* We want to always retain the trace, to see if the test runs as expected on the pipeline
* Added a temporary wait till port is open
* Fixed condition
* Added missing tcp for wait on
* Updated URL env
* Updated setup
* Fixed string
* Updated locator
* Split tests into SQLite and SQLServer
* Updated pipeline to run all tests
* Retain trace on failure
* Added testFolder var
* Added appsettings and program for delivery api tests
* Updated playwright config
* Split test runners into defaultconfig and different app settings
* Added delivery api tests
* Cleaned up tests
* Bumped version
* Updated pipeline
* Small fixes
* Added password
* Updated connection string
* Fixed
* Removed quotes
* Removed unnecessary connection string
* Added missing password
* Cleaned up
* Cleaned up
* Cleaned up
* Updated to use helpers
* Bumped version
* Updated helper usage
* Added password to variables and a condition
* Added check
* Indented value
* Fixed condition
* More updates
* Updated variable
* Removed settings
* Updated delivery api tests
* Bumped version
* Updated test
* Removed unnecessary variables
* Updates based on copilot comments
* Fixed merge conflict
* Fixed env creation step
* Bumped version
* Updated tests to use new helper
* Updated helper
* Updated to string
* Moved logic to conditions
* bumped version
* Use new name for helper
* Remove echo
* Added variable
* 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
* Adjust property validation to accept missing property editors
* Return the current value when trying to update a property with a missing editor
Same logic as for when the property is readonly.
* Fix failing unit tests
* Small fix
* Add unit test
* Remove client validation
* UI adjustments
* Adjustments from code review
* Adjust test
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Avoid throwing an exception on getting references when migrating content with changed data types.
* Reintroduced generic catch to avoid functional breakage
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Renaming the providers, collection builder and model
* Renaming the items using signs
* Renaming in controllers
* Renaming mapping flags
* Renaming sign tests to flags
* Changing the test files names from signs to flags
* Updated a couple more references.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* 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.
* Tiptap RTE: prevent `undefined` value
If the `value` becomes `undefined`, then the block data can't be tracked (for undo/redo).
The scenario comes when a user "selects all" contents, cuts it, and pasted it back in.
Fixes#20076
* Tiptap RTE: fixes selection white text bug
* Tiptap RTE: amends heading styles (for first-child)
* Reload section root on repeated header section click
Adds logic to reload the root of a section if its header is clicked while already active. This improves navigation consistency by resetting the section view when the user clicks the current section again.
* Update backoffice-header-sections.element.ts
* feat: exports all current-user config-related items
* fix: observes the current-user config for the 'keepUserLoggedIn' value and simply try to refresh the token when the worker makes an attempt to log out the user
* fix: moves current user config repository and related dependencies to the 'current-user' package
previously, it was not exported, so is not a breaking change
* chore: moves current-user-allow-mfa condition to the 'current-user' package to avoid circular dependencies (and because it naturally belongs there)
* fix: checks for `keepUserLoggedIn` directly
* Revert "chore: moves current-user-allow-mfa condition to the 'current-user' package to avoid circular dependencies (and because it naturally belongs there)"
This reverts commit 17bebfba41.
* Revert "fix: moves current user config repository and related dependencies to the 'current-user' package"
This reverts commit 0c11462898.
* Revert "feat: exports all current-user config-related items"
This reverts commit a6586aff1d.
* fix: avoids depending on 'resources'
* redirect to the last visited path in a section
* Update src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-sections.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update backoffice-header-sections.element.ts
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 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>
* dont rellay on only resolved based on properties, but also scan the CompositionPropertyTypes to resolve compistion inside the black
* Refactored to helper method.
---------
Co-authored-by: Lucas Bach Bisgaard <lucas.bisgaard@kraftvaerk.com>
Co-authored-by: Andy Butland <abutland73@gmail.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
* Added `cultures` property to the Segment models
* Added new endpoint to return the segments of a specific document.
* Mark additional properties and methods as obsolete
* Small indentation fix
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Converting DateTime.MinValue to sqlDateTime's minimum value
* Changing code to be a bit less hacky
* Changing hard coded value to a variable based on SqlDateTime
* Removing unused code
* Moving date converter logic to DateTimePropertyEditor.cs
* Replacing tests with proper version
* Removing unused import
* Removing unused imports again
* Creating new logic, to ensure formatting is more precise.
* Rewriting tests to be more precise and include testing on odd format separators
* Used parsing to determine timeonly date picker data type configuration format.
Fixed casing on key for data type configuration format.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added tests for create content with content picker with predefined allowed types
* Added tests for content with multi node tree picker
* Bumped version
* Make all tests for content with multi node tree picker run in the pipeline
* Reverted
* Reverted npm command
Fixes#20029.
If a dropdown property-editor is not marked as mandatory
and is in single-mode, then an empty option is added to
the top of the dropdown, so that the value can be unset.
This doesn't apply to multiple-mode, as values can be deselected.
* Fix spell error from Segmment to Segment
* Change for fix the misspell interface in a non breaking way
---------
Co-authored-by: Lucas Bach Bisgaard <lucas.bisgaard@kraftvaerk.com>
* fix style and localization
* Update src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/views/design/content-type-design-editor.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix class name as well
* minor fixes to sorting of tabs
* clean up
* add data-marks
* Updated package version to include test fixes for tab name
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* fix style and localization
* Update src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/views/design/content-type-design-editor.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix class name as well
* add data-marks
* Updated package version to include test fixes for tab name
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Changed to use TryParse
* Changed to be a null check instead
* Update to "is false" syntax and add unit tests.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Updates RTE mock data
* UFM: Adds fallback for "monospace" font-family
* Removes the Font Family/Sizes Menu extension
This feature is not ready yet.
* Tighten up Tiptap config buttons style
* Fixes bug with Collections context-token
Unrelated to Tiptap, but causes data-types to throw an error.
Bug introduced in PR #20033
* Deprecations for v17
* Create the document URLs lock database record introduced in 16 but required in a 15 migration.
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Revert "Apply suggestions from code review"
This reverts commit 0a4ee48787.
* Revert "Create the document URLs lock database record introduced in 16 but required in a 15 migration."
This reverts commit 42ccaf985e.
* Moved lock record creation to premigration to ensure it's available when rebuilding URLs when migrating through 15 to latest.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: kjac <kja@umbraco.dk>
* Fix issue with newly created template under an existing one.
* feat: allows to set masterTemplate as preset
* fix: create new sub-templates with a preset already set for the master template (if applicable)
* fix: always resets master template, because you could be coming from an existing editor
* fix: always set the master template even if it is null
* fix: adds updateCurrent to also update the underlying _data model
also refactor function a bit
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Tiptap RTE: Migration to auto-enable new capabilities
The server-side migration to compliment the client-side feature #20042
* Updated db creation script
with latest RTE capabilities
* Corrected class name typo "Capabilities" 🤦
* Updated default RTE install with TextDirection and TextIndent capabilities
* Tiptap RTE: Starter Kit separation
- Created extensions for each Tiptap capability/extension
- Deprecated native `StarterKit` Tiptap extension
- Re-organized all Tiptap extensions into their own feature folders
- Other minor amends/tweaks to improve accessibility
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/view-source/manifests.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/toolbar-configuration/property-editor-ui-tiptap-toolbar-configuration.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/property-editors/statusbar-configuration/property-editor-ui-tiptap-statusbar-configuration.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Minor lint
* Mark the "external" Tiptap exports as deprecated
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* todos
* navigation context
* replace raw manifests with view context
* Array State has method
* rename to hint and much more
* Notes for later
* correcting one word
* more notes
* update JS Docs
* update tests for getHasOne
* fix context api usage
* update code for v.16
* correct test
* export UMB_WORKSPACE_VIEW_CONTEXT
* minor corrections
* rename to _hintMap
* refactor part 1
* update version number in comment
* clear method for array states
* declare hint import map
* mega refactor
* final corrections for working POC
* clean up path logic
* implement scaffold
* propagation and inheritance from view to workspace
* separate types from classes
* refactor to view context
* rename editor navigation context to editor context
* propagate removals
* clean up notes
* Hints for Content Tabs
* use const path
* handle gone parent
* added comments on something to be looked at
* hints context types
* contentTypeMergedContainers
* lint fixes
* public contentTypeMergedContainers
* refactor property structure helper class
* a few notes for Presets
* set variant ID instead of parsing it to the constructor
* do not inject root to the path
* adjust structure manager logic
* UmbPropertyTypeContainerMergedModel type update
* correct mergedContainersOfParentIdAndType
* refactor to utilize new observable for better outcome and performance
* fix lint errors
* fix missing import
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/core/hint/context/hints.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* clean up
* remove console.log
* declare new exports of core
* Update src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* clean up
* fix const export
* remove root from hints path
* also check for invariant
* name more as legacy
* fix eslint
* fix container id setting
* fix resetting inherited property
* fix re-rendering problem
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* todos
* navigation context
* replace raw manifests with view context
* Array State has method
* rename to hint and much more
* Notes for later
* correcting one word
* more notes
* update JS Docs
* update tests for getHasOne
* fix context api usage
* update code for v.16
* correct test
* export UMB_WORKSPACE_VIEW_CONTEXT
* minor corrections
* rename to _hintMap
* refactor part 1
* update version number in comment
* clear method for array states
* declare hint import map
* mega refactor
* final corrections for working POC
* clean up path logic
* implement scaffold
* propagation and inheritance from view to workspace
* separate types from classes
* refactor to view context
* rename editor navigation context to editor context
* propagate removals
* clean up notes
* Hints for Content Tabs
* use const path
* handle gone parent
* added comments on something to be looked at
* hints context types
* contentTypeMergedContainers
* lint fixes
* public contentTypeMergedContainers
* refactor property structure helper class
* a few notes for Presets
* set variant ID instead of parsing it to the constructor
* do not inject root to the path
* adjust structure manager logic
* UmbPropertyTypeContainerMergedModel type update
* correct mergedContainersOfParentIdAndType
* fix lint errors
* fix missing import
* Update src/Umbraco.Web.UI.Client/src/packages/core/hint/context/hints.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* clean up
* remove console.log
* fix validation context initialization
* add member workspace view consts
* setup validation badges for member workspace root fields
* declare new exports of core
* Update src/Umbraco.Web.UI.Client/src/packages/core/validation/controllers/value-validator/valueValidator.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add comment
* fix example
* fix comment
* fix member workspace failed request
* remove console log
* enable server side validation
* fix circlular dependency
* fix lint errors
* export conts
* fix import
* clean up
* fix type
* fix password validation case
* chore(eslint): reorders imports and cleans unused variables
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* wip section menu expansion
* make section context local to each section
* split kind manifest from element file
* make generic entity expansion manager
* wip menu context
* add collapsed and expanded events
* Export new expansion entity event modules
* rename events
* dispatch events
* Set tree expansion changes in the menu context
* expand menu from workspace
* do not allow undefined
* make menu item feature folder
* Update menu-variant-tree-structure-workspace-context-base.ts
* menu: pass expansion as prop to prevent dependency on the section sidebar
* use correct event
* Add event listener support to extension slot element
Introduces an 'events' property to UmbExtensionSlotElement, allowing dynamic assignment and removal of event listeners on extension components. Event listeners are added when extensions are permitted and removed on disconnect, improving extensibility and event handling for extension slots.
* Add entity expansion event handling to sidebar menu
Introduces handlers for entity expansion and collapse events in the section sidebar menu. This change enables the menu to respond to expansion state changes by updating the context accordingly.
* Optimize expansion state updates in menu components
Introduces a local expansion state to both section sidebar and tree menu item components to prevent unnecessary updates and rerenders. This improves performance by ensuring state updates only occur when needed.
* only check if we have a local state already
* add bulk expand method
* use bulk expand method
* align naming
* mute updates
* lower threshold
* add expansion model with target
* add function to link entries
* fix self import
* export constants
* update js docs for entity expansion manager
* link entries
* fix import
* do not export from menu here
* fix import
* fix import
* align how we register manifests
* add specific managers for section sidebar menu
* use structure items
* dot not expand current item
* Refactor section sidebar menu to use programmatic extension slot
Replaces the template-based <umb-extension-slot> with a programmatically created UmbExtensionSlotElement for improved performance and UX.
* add section context extension
* register menu as section context instead of hardcoding
* rename folder
* align naming
* export extension slot elements
* fix typings
* destroy extension slot element when host is disconnected
* use entry model
* move and rename
* register global context to hold menu state across sections
* temp observe section specific expansions
* temp observe section specific expansions
* add method to collapse multiple items
* bind expansion to section
* make entity expansion manager generic
* add helper method
* remove temp test data
* include last item in target
* remove unused
* pass full entry to event
* add type for menu item expansion
* export types
* add menuItem alias
* Update types.ts
* support menu item expansion entry
* add const for menu item alias + use for breadcrumb and menu item
* add data type menu item alias const + apply to breadcrumb
* move to correct manifest
* add menu item alias to expand entries
* Update manifests.ts
* add menu structure kind types
* add kind to manifests
* add menu item context
* filter menu items
* handle menu item expansion
* clean up
* fix order
* add example dashboard and entity action
* import types
* align model type names
* align naming
* use ui component
* add guard for menu item entry
* use correct type
* Update section-sidebar-menu.element.ts
* Update entity-expansion.manager.ts
* export constants
* add menuItemAlias to manifest
* add menuItemAlias to manifest
* add menuItemAlias to manifest
* add menuItemAlias to manifest
* add menu item alias
* add menuItemAlias to manifest
* add menuItemAlias to manifest
* add menuItemAlias to manifest
* add alias
* add kind
* fix import path
* do not expand menu from modal
* collect all menu-item files in one folder
* fix lint errors
* Update content-detail-workspace-base.ts
* clean up
* rename to example
* add button to collapse everything within a section
* fix breadcrumb for non-variant structure
* reload entity
* destroy
* remove self
* Updated acceptance tests to check if a caret button is open before clicking
* Bumped version of test helpers
* use const
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
fix: pins the @hey-api/* versions to that of the Backoffice client
This is a quick fix to handle the NPM error that is currently there because the Backoffice NPM client has moved on to another version. There will be a more comprehensive fix for 16.3, however this PR aims to make the 16.2 UmbracoExtension usable without running custom commands.
* Prevents the removal of all user groups from a user.
* Add additional user group when removing
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* rename and implement fallbackRender
* re introducing method as part of the name
* rename impls
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Andrej Davidovič <andrejd@cdata.com>
* Fix: custom block view rendering
* chore: formatting
* chore: formatting
* chore: marks render method as class property to bind it properly to the class so it can run private methods and does not lose its context
see also #extensionSlotRenderMethod
---------
Co-authored-by: Andrej Davidovič <andrejd@cdata.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix: uses isAuthorized to check if user is logged in before terminating the observer
* feat: adds new function to redirect to stored path
* fix: always redirect to stored path even on failure
the user may have landed up on the page by mistake
* Revert "fix: always redirect to stored path even on failure"
This reverts commit 0c0cc0253c.
* fix: sends back the result
* fix: waits for the initial authorization request to come back before listening to the authorization signal (and then only listen once for it)
also check if the request was null, which means we can safely redirect the user
* docs: clarify what happens
* chore: converts the promise code to async/await pattern
* fix: tokenResponse should validate its internal object state
* feat: allows function to force a window redirect
* fix: checks if the user happens to already be authorized, because then we do not need a new code check
* Update src/Umbraco.Web.UI.Client/src/packages/core/utils/path/stored-path.function.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix issue dragging tiptap toolbar buttons
* Moved the `.items` CSS rules to the group element
* Refactored the toolbar-group element
- Renamed "toolbar-item-click" event to "remove", to show intent
- Reordered the method names alphabetically
- Renamed `value` to `items`, to show intent
- Removed `toolbarValue`, as not required
- Added `data-mark` for menu/styleMenu buttons
* Renamed/relocated "umb-tiptap-toolbar-group-configuration" element
* Updated tag name
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* build(deps): bump @hey-api/openapi-ts to 0.81.1 and pin the version to ensure compatibility between backoffice and extensions
* chore: regenerate api types and replace where necessary
* feat: pin version of @hey-api/openapi-ts and regenerate umbraco-extension files
* chore: removes unused 'client' field
* build(deps-dev): bump @hey-api/openapi-ts to 0.81.1 for the login app
* fix: adds documentation to the UmbImagingRepository and makes the internal store optional, and deprecates an old method
* fix: uses new method to request thumbnails
* fix: ensures the internal data store has at least been attempted to be consumed before proceeding
* feat: adds methods to clear cached resized images
* feat: awaits the store before attempting to clear cache
* fix: attempts to clear the imaging cache when a media item entity is updated or deleted
* fix: awaits the store
* fix: set unique as property
* fix: ensures that the imaging component reloads its thumbnail if it has already been loaded once
* chore: removes duplicate check for isLoading
* chore: cleans imports
* feat: marks method as internal so that we may change it later on
* disable eslint check
* Allow open split view using the keyboard
* Add localize method to the label
* Add a method to localize terms with a language parameter
* adjust localization wording
* support segments in label
* localize texts
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* todos
* navigation context
* replace raw manifests with view context
* Array State has method
* rename to hint and much more
* Notes for later
* correcting one word
* more notes
* update JS Docs
* update tests for getHasOne
* fix context api usage
* update code for v.16
* correct test
* export UMB_WORKSPACE_VIEW_CONTEXT
* minor corrections
* rename to _hintMap
* refactor part 1
* update version number in comment
* clear method for array states
* declare hint import map
* mega refactor
* final corrections for working POC
* clean up path logic
* implement scaffold
* propagation and inheritance from view to workspace
* separate types from classes
* refactor to view context
* rename editor navigation context to editor context
* propagate removals
* clean up notes
* Hints for Content Tabs
* use const path
* handle gone parent
* added comments on something to be looked at
* hints context types
* contentTypeMergedContainers
* lint fixes
* public contentTypeMergedContainers
* refactor property structure helper class
* a few notes for Presets
* set variant ID instead of parsing it to the constructor
* do not inject root to the path
* adjust structure manager logic
* UmbPropertyTypeContainerMergedModel type update
* correct mergedContainersOfParentIdAndType
* fix lint errors
* fix missing import
* Update src/Umbraco.Web.UI.Client/src/packages/core/hint/context/hints.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-validation-to-hints.manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* extend controller base
* extend controller base
* add package for management api
* add signalr as external package
* connect to server event hub
* do no act on undefined
* add event subject
* correct alias
* export token
* add helper methods
* cache server responses
* fix import
* use helpers
* add detail request manager
* implement for document type
* implement for data type
* add method for update
* add support for create method
* align code
* Update detail-request.manager.ts
* move explicit naming
* move into folder
* collect server code in folder
* add implementation for data type request manager
* implement for document type
* only cache when we have connection to the server events
* poc inflight request cache
* clean up
* update
* add management api inflight request cache
* Update document-type-detail.server.request-manager.ts
* Update src/Umbraco.Web.UI.Client/src/packages/management-api/detail/detail-data.request-manager.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* extend controller base
* extend controller base
* add package for management api
* add signalr as external package
* connect to server event hub
* do no act on undefined
* add event subject
* correct alias
* export token
* add helper methods
* cache server responses
* fix import
* use helpers
* add detail request manager
* implement for document type
* implement for data type
* add method for update
* add support for create method
* align code
* Update detail-request.manager.ts
* move explicit naming
* move into folder
* collect server code in folder
* add implementation for data type request manager
* implement for document type
* only cache when we have connection to the server events
* update
* fix imports
* introduce item cache
* call trough get items controller
* remove log
* add unit tests for item cache
* Create cache.test.ts
* use sync method to lookup data type item
* use correct alias
* remove unused code
* data type item cache
* add client document type item cache
* add client cache for dictionary items
* add media item client cache
* add client cache for media type item
* add client cache for member and member type items
* add member group item cache
* split detail cache invalidation from request manager
* introduce item cache invalidation manager
* remove arg
* add data type item cache manager
* add memeber group item cache invalidation manager
* remove unused
* invalidate documents when document types changes
* align naming
* add method to get unique
* add dictionary item cache manager
* use server model instead of mapping
* call method
* update args
* update document type item cache invalidation
* add cache invalidation for member items
* update
* update
* update
* add item caching for languages
* add template item cache
* cache stylesheet items
* add caching for script items
* cache partial view items
* cache user items
* cache user group items
* add document blueprint item cache
* Removed readonly Signs property to re-align client models.
* Regenerate client types.
* Applied changes from code review.
* cache static file items
* add webhook item cache
* update mocks with signs data
* update mocks
* fix lint error
* fix eslint errors
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* dropdown keyboard accessibility issue
* Eslint update
* Improve accessibility of the app language dropdown.
* Bring back combobox list element
* Add keyboard support for arrowup and arrowdown
* use change event for value change
* Change button element for a div as trigger
* Unused import
---------
Co-authored-by: Mads Rasmussen <madsr@hey.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>
* Updated hey-api as the client-fetch is bundled as part of @hey-api/openapi-ts in newer versions
* Regenerated a new package-lock.json file
* Fix typescript issue
* Update templates/UmbracoExtension/Client/package.json
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Updated client dependencies
* Vite, TypeScript, hey-api
* Chalk & Cross-Env for the generate-client script
* Explicitly remove package-lock.json as it will be out of sync due to UMBRACO_VERSION_FROM_TEMPLATE
* Regenerated Hey API client that now ships client rather than dependancy
* Vite and Hey-API were already out of date (updated to the very latest)
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* extend controller base
* extend controller base
* add package for management api
* add signalr as external package
* connect to server event hub
* do no act on undefined
* add event subject
* correct alias
* export token
* add helper methods
* cache server responses
* fix import
* use helpers
* add detail request manager
* implement for document type
* implement for data type
* add method for update
* add support for create method
* align code
* Update detail-request.manager.ts
* move explicit naming
* move into folder
* collect server code in folder
* add implementation for data type request manager
* implement for document type
* only cache when we have connection to the server events
* update
* fix imports
* introduce item cache
* call trough get items controller
* remove log
* add unit tests for item cache
* Create cache.test.ts
* use sync method to lookup data type item
* use correct alias
* remove unused code
* split detail cache invalidation from request manager
* introduce item cache invalidation manager
* remove unused
* invalidate documents when document types changes
* align naming
* add method to get unique
* use server model instead of mapping
* call method
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* extend controller base
* extend controller base
* add package for management api
* add signalr as external package
* connect to server event hub
* do no act on undefined
* add event subject
* correct alias
* export token
* add helper methods
* cache server responses
* fix import
* use helpers
* add detail request manager
* implement for document type
* implement for data type
* add method for update
* add support for create method
* align code
* Update detail-request.manager.ts
* move explicit naming
* move into folder
* collect server code in folder
* add implementation for data type request manager
* implement for document type
* only cache when we have connection to the server events
* update
* fix imports
* Create cache.test.ts
* use sync method to lookup data type item
* use correct alias
* 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>
* move variant fragment split logic into splitview manager
* further centralise split logic into umbVariantId
* show segment selector if any exist
* invariant null
* chore: run eslint:fix
* chore(eslint): generate a UBM_ constant
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Bind 'action-executed' event handler to class instance
Updated the event listener for 'action-executed' to bind the handler to the class instance, ensuring correct 'this' context when the event is triggered.
* fix: make it clear that the clearUploads button is used to "Clear file(s)" and not necessarily remove them (from the dropzone)
* fix: adds extra null-check to avoid browser error on failed uploads
* fix: adds check that no media files are added twice (or more) to the media picker
* fix: adds try/catch around confirm modal to avoid browser error in case user cancels
* fix: change from deprecated 'complete' event to 'change' event and filter out non-successful files
* chore: sort imports
* feat: renders the 'add' button even if the limits have been exceeded
* feat: shows all values as cards even if the media item does not exist so the user has a chance to update the value
* feat: shows all values as cards even if the media item does not exist so the user has a chance to update the value
* feat: adds localization to the media picker context
* feat: uses the media picker context to control the picker
this also fixes an issue where already selected items were not preselected when opening the picker again
* feat: adds a bit of margin between the dropzone and media picker itself
* clean up old stuff in validation form control mixin
* ensure validation trigger when value is changed
* Update src/Umbraco.Web.UI.Client/src/packages/property-editors/content-picker/property-editor-ui-content-picker.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added configuration option UseStrictDomainMatching, which allows control over whether content is routed without a matching domain.
* Fixed typo in comment.
* Addressed comments from code review.
* 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)
* build(eslint): replace local rules with naming conventions
* revert relative js extension imports
* remove unused local rule
* build(eslint): uses recommended setup for import plugin
* chore(eslint): conver const to function to follow naming conventions
* chore: removes old file
* build(eslint): allows Ufm as prefix
* build(eslint): allows 'name' and 'extensions' as exports (umbraco-package.ts)
* build(eslint): typescript rules should ignore storybook
* chore(eslint): ignores eslint for vite definitions
* build(eslint): allows UPPER_CASE for properties
* build(eslint): ignores umbraco-package.ts files (unconventional exports)
* chore(storybook): fixes property editor stylesheet picker
* build(eslint): allows Manifest as prefix on interfaces
* build(eslint): allows underscore on protected members
* build(eslint): allows Meta as prefix on interfaces
* build(eslint): allows PascalCase for public members
* build(eslint): disables enforcement of booleans with verbs for now as it is too harsh
* chore(eslint): add private modifiers as required
* deprecates invalid constant name to replace with Umb prefix
* renames MediaValueType to comply with naming conventions
* chore(eslint): disable naming conventions for local router-slot package
* chore(eslint): follow naming conventions
* chore(eslint): disable naming conventions for property editor interfaces
* chore(eslint): follow naming conventions
* chore(storybook): fix story
* chore(eslint): follow naming conventions
* build(eslint): allows `_host` as public variable
* chore(eslint): follow naming conventions
* build(eslint): allows double leading underscore on public members
* build(eslint): matches #private and public modifiers
* build(eslint): ignores language files
* chore(eslint): ignores umbraco package file
* chore(eslint): follow naming conventions
* storybook lang
* chore(eslint): follow naming conventions
* chore(eslint): follow naming conventions
* chore(eslint): make _manager a little more open
* chore(eslint): some properties should be protected
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/input-image-cropper/image-cropper.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/input-image-cropper/image-cropper.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/components/input-image-cropper/image-cropper.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* proxy type for UrlParametersRecord
* _items deprecated property
* bring back ConditionTypes type
* bring back _items for trash bulk action
* ignorer deprecated proxies
* keep settingsDataContentTypeKey for satefy
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Tiptap RTE: Set row/group min-height to prevent layout shift
* Added `box-sizing: border-box`
* Adds loaded state to the editor
so that the border only appears once it's ready.
* Refactored toolbar to reduce the number of re-renders
* Refactored statusbar to reduce the number of re-renders
* RTE mock data updates
* TODO comment typo correction
* Corrected typo in class name
This could technically be a breaking-change, but since the class name
conflicted with the exported `UmbTiptapToolbarFontFamilyExtensionApi`,
then no one could use it anyway. ¯\_(ツ)_/¯
* Tiptap extension code tidy-up
Also, makes use of `this.name` instead of hardcoded strings.
* Tiptap RTE: Makes embedded-media truly inline
by using a `<span>` instead of a `<div>`.
* Cosmetically aligns the selection styles
* Adds `UmbEmbeddedMediaOptions` to strongly-type the `inline` option
* Added tests for updating a variant block list with invalid text
* Added tests for updating a variant block grid with invalid text
* Bumped version of test helper
* Make the tests for updating content with invalid text in a block run in the pipeline
* Cleaned up
* Updated test text
* Reverted npm command
* Fix CheckboxList UI not updating when values are set programmatically
* WIP
* Added unit tests for the new functionality in the checkbox list element.
As requested by Copilot, here are some unit tests to ensure this addition passes all of the possible edge cases mentioned.
* Small change based on CoPilot feedback
Removed a check that was redundant and removed a unit test that was also not needed for the current PR and fixed one of the other tests.
* Fixing code quality issues highlighted in the unit tests
* Fix CheckboxList UI not updating when values are set programmatically
* WIP
* Standardizes property editor UI state management
Introduces a utility for managing the state of property editor UI elements
when their values are set programmatically.
This ensures that UI components like dropdowns, checkbox lists, and selects
correctly reflect the selected values, especially when these values are
updated via code rather than direct user interaction.
The changes include:
- A mixin to simplify state updates
- A helper function to ensure values are handled as arrays
- Consistent state updating logic across components.
* Update src/Umbraco.Web.UI.Client/src/packages/property-editors/select/property-editor-ui-select.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Removed the hard coded label
* Fixed the short-circuit issue raised by co-pilot
* Fixing more co-pilot suggestions
Also cleaned up the test files based on the JSDocs suggestions.
* Update src/Umbraco.Web.UI.Client/src/packages/property-editors/dropdown/property-editor-ui-dropdown.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Refactors checkbox and dropdown tests
Refactors checkbox-list and dropdown property editor UI tests to share common test utilities, reducing code duplication and improving maintainability.
Uses Sets for faster selection lookup in `updateItemsState` function.
* Fixing CodeScene suggestion based on "String Heavy Function Arguments"
* Fix for an issue that was stopping the Bellissima build.
* Improves property editor UI state updates
Ensures UI updates in checkbox list, dropdown and select property editors only occur when necessary.
Avoids unnecessary re-renders by comparing the updated state with the current state, and only triggering an update if there are actual changes.
This improves performance and prevents potential issues caused by excessive re-rendering.
* Changes based on feedback from @nielslyngsoe
* removing unnecessary call to requestUpdate
---------
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>
* 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.
* Added `action` kind for `menuItem` extension-type
* Adds `<umb-tiptap-menu>` component
* Adds support for `menu` extensions to the `<umb-cascading-menu-popover>` component
* Adds support for `menu` extensions to the `tiptapToolbarExtension` extension-type
* Adds support for `menu` extensions to the `<umb-tiptap-toolbar-menu>` component
* Adds manifests for table column/row menus
Deprecates the `umb-tiptap-table-column-menu` and `umb-tiptap-table-row-menu` components.
* Adds table column menu actions
* Adds table row menu actions
* Adds table cell menu actions
* Adds table (general) menu actions
* Replaces table toolbar menu with the new `menu` extensions
* Adds `UMB_TIPTAP_RTE_CONTEXT`
so that the menu actions can access the Editor instance.
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/table/actions/table-properties.action.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* `UmbTiptapMenuElement` doesn't use the `editor` property
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 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>
* Updated the block editor validation message
* Updated tests for schedule publishing after unselecting all languages
* Added tests for sibdlingsOfType extension
* Updated tests due to test helper changes
* Bumped version of test helper
* Added release tag for regression issue
* Make tests for siblingsOfType run in the pipeline
* Reverted npm command
* 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.
* RTE: Restore deleted blocks
Maintains a state of unused (deleted) blocks,
that could be restored later, e.g. with Tiptap RTE's undo action.
Fixes#19637
* Updated with @copilot suggestions
* Fixes restored block state on variant documents
* Removed this as these tests are covered in other files
* Added release tags
* Make all tests with @smoke and @release tags run in the pipeline
* Updated npx command
* Updated npx command
* Updated npx command
* Fixed failed tests related to document type folder
* Cleaned up
* Used grep in yaml file instead of package.json file
* Updated yml file
* Updated testCommand
* Fixed command
* Added releaseTest command
* Added another job to run regression test in the release build
* Fixed comments
* Updated name of test job
* Make all release tests run in the pipeline
* Updated warning message
* Reverted npm command
* feat: makes tree stores optional and deprecates dependent methods
* allow `Example` as class prefix
* docs: updates example to remove the treeStore
* deprecates the usage of treeStore contexts
* chore: adds deprecation warnings to all existing tree stores
Fixed issue with syntax highlighting in code editor (#19414)
(cherry picked from commit 3f3c9f8823)
Co-authored-by: Andy Butland <abutland73@gmail.com>
* build: move typescript specific eslint rules to the `**/*ts.` pattern to avoid errors for .js files
* allow `Example` as class prefix
* allow `example-` as custom element prefix
* Removed `eslint-disable-next-line` comments
from the Example classes.
* Code formatting/tidy-up of Example classes
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Updated relation type tests
* Created tests
* Bumped version
* Fixed tests
* Fixed tests
* Fixes based on comments
* Added waits to figure out why tests fail on pipeline
* Added a reload to check if test passes on pipeline
* Added reloads
* Removed reload page
* Reverted smokeTest command
* 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>
* 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
* delete internal stories
* more clean up
* more cleanup
* move to generic components
* clean up
* move body layout
* move story
* Move icon stories
* remove prefilled color
* Update icon.element.ts
* rename story
* Replace UUIFormControlMixin with UmbFormControlMixin
Refactors all relevant input and form control components to use the new UmbFormControlMixin from '@umbraco-cms/backoffice/validation' instead of the deprecated UUIFormControlMixin. This change improves consistency and aligns with updated validation handling in the codebase.
* Revert "Merge branch 'v16/bugfix/use-umb-form-control-mixin' into v16/docs/storybook-clean-up"
This reverts commit 7fa70b87c7, reversing
changes made to 8fe7391790.
* simplify name
* Add discard changes modal stories
* add error viewer modal
* fix stories
* rename
* fix date story
* add story for input with alias
* add story for popover layout
* add story for dropdown
* add args
* register core manifests
* register entity action bundle + list
* add stack example
* clean up
* Create data-type-input.stories.ts
* change overview story to docs
* rename to docs
* rename to docs
* Update icon.stories.ts
* Update preview.js
* remove overview story
* rename default story
* load more manifests
* import all manifests
* Update preview.js
* Update preview.js
* provide all stores + global contexts
* Update data-type-input.stories.ts
* add user input and ref stories
* add storybook auth context
* set the initial storybook language
* use isoCode param
* fix input-language component
* delete broken stories
* fix icon picker story
* fix mock member ids
* Fix query parameter name in item handler
Changed the query parameter from 'paths' to 'path' in the item handler to correctly retrieve item paths from the request. This ensures the handler processes requests as expected.
* Update user item handler to use user mock DB
Replaces the document mock database with the user mock database in the user item handler to ensure correct data source is used for user-related requests.
* Add config to checkbox list story
Introduces a sample configuration to the checkbox list Storybook story, providing predefined options for demonstration and testing purposes.
* Add config to select property editor story
Introduces a sample UmbPropertyEditorConfigCollection to the select property editor Storybook story, providing predefined options for demonstration and testing purposes.
* Add config to radio button list Storybook story
Introduces a sample UmbPropertyEditorConfigCollection to the radio button list
* Refactor slider story to use config collection
Replaces inline config array with UmbPropertyEditorConfigCollection for the slider property editor story.
* Delete property-editor-ui-label.stories.ts
* Group releated UIs
* Remove multi-url picker Storybook file
* add input stylesheet story
* add back localization stories
* Delete property-editor-config.stories.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* update workspace example
* Update readme for workspace counter example
* update workspace counter examples readme
* Update examples workspace counter to include some testing
* Update glob pattern for text examples for windows
* Remove date object conversion as valueEditors don't seem to need it
* Update fault summary reference
* Added justification comment.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Cleanup obsoleted methods
* Add a way to disable UmbracoFile default sink
* Abstract LogViewService so only UmbracoFile sink related things are in the default interface implementation.
* Abstract LogViewRepository so only UmbracoFile sink related things are in the default interface implementation.
* Move GetGlobalLogLevelEventMinLevel to base
* Removed unused internal class and obsoleted its base
* Added missing XML header comments and resolved warnings in service and repository classes.
* Made private method static.
* Addressed issues raised in code review.
* Expose repository from the service base class.
* Restored further obsoleted code we can't remove yet.
* Removed log viewer tests on removed class. We have integration tests for the new service.
* Obsoleted ILogViewer interface.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Adds CSS variables to `umb-input-tiptap`
to set the min/max height/width of the RTE.
* Moves "dimensions" config to the base RTE element
so can be reused with other RTE-based property-editors.
* Sets the CSS variables in the Tiptap property-editor element
* Code tidyup for RTE base element imports
* Corrects localization text of RTE dimensions description
As it's a fixed height/width as opposed to a maximum height/width.
* The CSS variable fallback value 'unset' should not be quoted.
CSS keywords like 'unset' should be unquoted, while string values should be quoted.
* Updated nightly E2E pipeline
* Fixed failing E2E tests
* Skipped content tests wirh list view content due to an issue
* Updated tests due to UI changes
* Updated fixme and skip tests - part 1
* Removed this file because the tests are already covered elsewhere
* Updated fixme() tests
* Updated skip() tests
* Bumped version
* Bumped version
* Bumped version
* Removed notification verification
* Removed the step to verify the notification for save action
* Fixed the failing tests
* Updated name of permission
* Bumped version
* Fixed failing tests
* Bumped testHelpers
* Removed tests related to tiptap toolbar as they are covered in another class
* Cleaned up
* Added more waits
* Cleaned up
* Added step to ensure redirect URL is created when renaming content.
* Restructured the tests
* Removed unnecessary steps
* Fixed isItemVisibleInRecycleBin
* Fixed isItemVisibleInRecycleBin
* Bumped version
* Added more wait for the deletion to complete
* Added waits for the deletion to complete
* Added more waits
* Removed unnecessary waits
* Added more waits to improve test stability
* Added skip for the flaky test
* Added test for removing a stylesheet in a block grid editor
* Updated test due to api helper changes
* Bumped version
* Fixed failing smoke test
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Add drag and drop to blockgrid area
* Adds `UmbChangeEvent` trigger
* Removes `updated` method
Puts `sorter.setModel` in the `value` setter,
so that the sorter is set on initial value.
* Imports sort order
Removed `UmbTextStyles`, as not used here
* Changed the cursor type to "move"
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Removed `cursor: not-allowed` style
* Sets the `umb-rte-block` `user-select` to `all`
* Adds an "invisible" selection background to `umb-ref-rte-block`
* Sets the `umb-ufm-render` text-content to be visible
* Adds `aria-hidden` attribute
* Bumped version of test helper
* Fixed the failing tests due to UI changes
* Adds `pointer-events: none` to selection-background
---------
Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
* Updated tests for content with RTE in a block grid
* Updated tests forcontent with RTE in a block list
* Make all RTE tests run in the pipeline
* Cleaned up
* Reverted npm command
* Change hardcoded text to be translatedeable
* Added the `count` value to the localization
---------
Co-authored-by: Lucas Bach Bisgaard <lucas.bisgaard@kraftvaerk.com>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Disables Tiptap's `injectCSS` option
This option would inject the default CSS styles into
the `window.document`, which are never applied to
the component's shadow DOM.
* Add Tiptap's default styles to "rte-content.css"
The `caret-color` rule (line 93) resolves issue #19791.
* 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>
* Fix navigationUrlService and underlying models not being thread safe
* Added migration to plan.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* #19775 fixed get user data by applying OrderBy after counting
* Apply suggestions from code review
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Remove skip
* Added tests for creating and updating content
* Removed skip because the issue is fixed
* Updated assertion steps for the update document user permission
* Bumped version
* Added release tag
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* 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>
* Reloads the template tree when creating a document type with a template.
* Housekeeping: separating/sorting import types
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* fix: Prevent Repository Details Manager making requests for empty arrays
Fixes#19604
* Reworked to pass the `uniques` through to the `#requestNewDetails()` method
The unique values are included as a closure,
persisting after the `#init` promise is resolved.
Rather than call `getUniques()` to get an async'd value.
* Updated with Copilot suggestions
https://github.com/umbraco/Umbraco-CMS/pull/19731#discussion_r2221512463
* Add defensive coding to the member application initializer (#19760)
* Moved _isInitialized to after the initialization
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Return 404 on delivery API requests for segments that are invalid or not created.
* Handled case with no segmented properties.
* Let the property decide if it has a value or not
---------
Co-authored-by: kjac <kja@umbraco.dk>
Fix issue template is shrunk when enable inline editing mode in collection list view in block list field
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
* Add a backing field for EditorUIAlias and track changes when its set.
* Add previously failing unit test to verify fix.
* Aligned backing field casing with property name.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added tests for creating content using document blueprint
* Updated tests due to api helper for document blueprint changes
* Bumped version
* Make all Blueprint tests runs in the pipeline
* Reverted npm command
* Updated tests for adding a thumbnail to a block grid
* Added tests for adding a block thumbnail
* Make tests run in the pipeline
* Reverted npm command
* Add support for programmatic creation of property types providing the data type key (#19720)
* Add support for programmatic creation of property types providing the data type key.
* Add integration tests
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Don't use Lazy
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Populate name for content and media on URL picker if title is left empty.
* Display URL for manually entered URLs.
* Updates from code review.
* Reverted `elementName` constant
* Sorted imports
* Small code tidy-ups
* Added logic to render the `url` as the `name` fallback
In this case, the `detail` is left empty, giving prominence to the `url` value.
* Refactored the get name/url methods
for code consistency.
* Updated `#requestRemoveItem()` to use the item's resolved name
with a fallback to "item".
Also localized the "Remove" button label
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* chore: revamps openid package to organise files in a 'src' folder
* feat: adds all externals as npm workspaces with a vite build
* feat: copies the correct uui assets
* feat: copies the backoffice static assets
* feat: creates the correct module for openid
* feat: copies the correct monaco-editor assets
* feat: moves monaco-editor into its package
* feat: moves dependencies to relevant external modules
* feat: gets rid of rollup
* build: uses tiny-glob instead of glob (one less dependency)
* feat: copies all css assets to dist-cms/css first, minifies them, then copies everything over to StaticAssets
* build: removes old static assets from vite static build
* fix: forwards the file extensions to the inner dropzone
* fix: ensures non-mimetype extensions start with a dot (.)
* chore: adds more details on how to set file extensions
* feat: adds a bit of styling to code snippets in UFM
* fix: return if no file in stream
* fix: prevents potential race condition if src changes
* chore: minor code improvement
* Adds variation by the header name Accept-Language to the develivery API output cache policy
* Removed obsolete constructor (not necessary as the class is internal).
* Introduce contants for header names.
* Fix issue forceHideContentEditorInOverlay not available in RTE
* remove href link when enable hide content editor setting:
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
* feat: converts tokenResponse into an object state
* feat: adds worker that checks token lifetime
* feat: initialises token worker to check up on tokens
* revert
* chore: defines typings for shared workers
* chore: uses correct assets url for core package
* feat: sets correct values for token check expiration
* feat: adds labels to confirm modal
* feat: separates logic for session monitoring to own controller
* feat: adds a timeout modal to correctly inform the user
* feat: opens the timeout modal (and closes it again) if a timeout occurs
* feat: log out when user clicks log out button
* feat: adds localization
* feat: sets sensible defaults for the web worker to check
* feat: adds more languages
* chore: adds more comments
* chore: removes nodejs types
* Update src/Umbraco.Web.UI.Client/src/packages/core/auth/workers/token-check.worker.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: removes nodejs types
* chore: resolves cyclic imports
* chore: removes circular dependencies from the 'modal' package
* chore: redefine SharedWorkerGlobalScope because of Github Actions CI
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Mock data updates
The `icon` is not part the block-type data.
* Adds `description` to the mock doctype model
* Refactors block catalogue modal
to make the filter/search work with a block-type's name & description.
This removes the need to use the `<umb-block-type-card>` component,
all element-type data is requested upfront.
* Reverted dev/debug change
* Abstracted out the element-type items observation to its own method
* Updated CSS rule
thanks to a Copilot suggestion.
* Adds `markedExtension` extension-type
* Relocates the Component and Filter extension-type interface code files
to under "extensions"
* Moves `UfmPlugin` type to its own referencable file
* Adds UFM support for JS expressions
making use of "@heximal/expressions" library.
* Modified regex pattern to match nested braces
* try/catch for invalid JS expressions
* Capitalizing the JS in `UmbUfmJsMarkedExtensionApi` class name
for consistency and improved readability.
* Abstracted out `ufmjs()` to its own Marked extension file
making it simpler to add unit-tests.
* Fixed up types in UFM context
added JSDocs for public methods
* Adds a generic Least Recently Used (LRU) cache implementation
* Added tests for granular document permission
* Updated tests for Webhook
* Bumped version
* Make all tests for granular permission run in the pipeline
* Added issue link for the failing tests
* Remove .skip
* Removed unnecessary tests
* Updated assertion step for create and delete document for a specific document
* Updated tests for read permission
* Fixed comments
* Pass notification state to cache refreshers.
Pass previous user name into member saved notification state and use when refreshing cache to clear the member by keys based on this.
* Fixed issue raised in code review.
* Fixed casing for state key.
* Added removed parameter to unit tests.
* Fix breaking change.
* Adds `markedExtension` extension-type
* Relocates the Component and Filter extension-type interface code files
to under "extensions"
* Moves `UfmPlugin` type to its own referencable file
* PoC implementation
* Move to controller base
* Implement solution that seems worse, but works better
* Don't require parent key in repository method
* Fix typos
* Add siblings for data type, media type and media
* Add endpoint for template
* Add DocumentType and DocumentBlueprint controllers
* Fix naming
* Fix case if siblings are under root
* Take item ordering into account
not all entities are ordered by sort order
* Add default implementation
* Fix parentkey
* Add tests
* Format optimizations for split view
* Add test covered requirement to description
* Cover positive case and make test case output more readable
* reduce allocations
* Clarify test
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Fixes issue where content created from blueprint would not persist file upload property values.
* Ensure a copy of a file upload is created when scaffolding content from a blueprint, like we do when copying content.
* Clarified comment.
* Removed unneeded usings.
* Fixed spelling.
* Handle create of blueprint from content to create a new uploaded file.
Handle delete of blueprint to delete uploaded files.
* Added abstraction for aggregation of granular permissions to support custom permissions.
* Refactor to move responsibility for aggregating granular permissions to the respective mappers.
* Added XML header comments for permission mappers.
* Tidied up/removed warnings in UserPresentationFactory interface and implementation.
* Optimized retrieval of documents in DocumentPermissionMapper.
* Fixed method header comment.
* Use entity service rather than content service to retrieve key and path.
* Passes the preview flag to the cache retrieval when resolving the delivery API object for the MNTP property editor.
* Added unit test verifying fix and adjusted mocks for tests to acoomodate.
* Provided preview flag for Razor rendering.
* Refactor section conditions into subfolders
Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability.
* use const
* fix build
* Refactor section alias condition to use constant
Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference.
* clean up workspace conditions
* only show collection items workspace view when document is created
* do not pass null for collection
* only show media collection view when media is created
* add basic collection example
* add card view example
* update example readme
* Add workspace view example with collection
* wip tree example
* clean up
* Update README.md
* Update README.md
* fix: never reject a token response
If a token response is rejected, then the pipeline will also fail because it does not understand that error. Let the API interceptors do their job instead and simply return the old, now-invalid token which will prompt the API interceptors to store the request states and retry them afterwards.
* chore: removes unused timeoutsignal
* chore: captures the stale token before potentially clearing it
* build(github): check that the "close" job only runs when the appropriate label is applied
it follows that the "build" job would only have built an environment when the label was applied
* build(github): check that the action is run directly on the repository and not from a fork
this alleviates the problem that the deploymentToken for Azure only exists within the repository
* Add null checks for editPath and name in render method
The render method now checks for the presence of both editPath and _name before rendering the button, preventing potential errors when these values are missing.
* Refactor dropdown open state handling
Replaces the public 'open' property with a private field and getter/setter to better control dropdown state. Moves popover open/close logic into the setter, removes the 'updated' lifecycle method, and conditionally renders dropdown content based on the open state.
* add opened and closed events
* dispatch opened and closed events
* Render dropdown content only when open
Introduces an _isOpen state to control rendering of the dropdown content in UmbEntityActionsBundleElement. Dropdown content is now only rendered when the dropdown is open, improving performance and preventing unnecessary DOM updates.
* Update dropdown.element.ts
* create a cache elements
* Optimize entity actions observation with IntersectionObserver
Adds an IntersectionObserver to only observe entity actions when the element is in the viewport, improving performance. Refactors element creation to use constructors, updates event handling, and ensures cleanup in disconnectedCallback.
* only observe once
* Update entity-actions-bundle.element.ts
* Update dropdown.element.ts
* Update entity-actions-bundle.element.ts
* split dropdown component
* pass compact prop
* fix label
* Update entity-actions-dropdown.element.ts
* Update entity-actions-dropdown.element.ts
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* build(deps-dev): bump storybook from v8 to v9
* chore: run storybook v9 migrations
* chore: updates import paths for storybook-webcomponents-vite (migration)
* chore: migrates eslint for storybook config
* fix: updates old link to composed storybook so we reference the latest production uui
* chore: formats eslint config file
* chore: changes import path to build mdx stories
* chore: updates language list to reflect v16
* 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>
* Observe read-only guard rules in variant selector
Added observation of read-only guard rules in the workspace split view variant selector to ensure read-only cultures are updated when rules change.
* Improve save action to react to read-only rule changes
* remove unused
* Add entity-type and entity-unique condition support
Introduces new condition types for entity-type and entity-unique, including their constants, types, condition implementations, and manifests. Updates exports in core entity modules to include these new features, enabling more granular extension conditions based on entity type and uniqueness.
* register conditions
* add support for oneOf
* fix self imports
* Update manifests.ts
* remove unused
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
* Refactor section conditions into subfolders
Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability.
* use const
* fix build
* Refactor section alias condition to use constant
Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference.
* 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>
* feat: adds new localization keys for forbidden routes
* feat: ignore all 400, 401, 403, and 404 errors as they are handled by the UI
* feat: adds new elements to show forbidden routes and entities
* feat: adds generic forbidden state to base entities
* feat: injects a forbidden route component to documents
* feat: adds 'forbidden' state to media workspace
* chore: aligns document and media workspaces
* test(mock): adds user configuration endpoint
* test(mock): adds calculate-start-nodes endpoint to users
* test(mock): adds missing endpoint for 'client-credentials'
* feat: clean up old observers on entity errors
* feat: aligns UI for better DX if there is no user
* fix: returns early if there is no user, instead of trying to append properties to the object
* feat: adds 'forbidden' state to members
* feat: adds support for forbidden document blueprints
* feat: allows parent to be undefined as well as null
* feat: forbidden route for members as a state
* chore: simplify language workspace
* test: adds forbidden mock data
* test: adds missing endpoints and a check for forbidden ids
2025-06-30 10:00:11 +01:00
Jacob OvergaardGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Assert dates in content editing integration tests to millisecond only.
* Add date time extension unit tests and refactor to switch statement.
* Removed whitespace.
* add slot for icon
* expose icon data
* render icon
* load type for scaffold
* rename
* render icon for media
* add observable for content type icon
* request data in data source
* wire up document scaffolding
* remove unused
* export server data source
* render icon for member
* rename data source to align with other detail sources
* rename data source
* remove unused styling
* remove console log
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove console log
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove console log
* render workspace icon for document type folders
* make folder workspace editor
* use element
* remove const
* use folder-workspace-editor for templating folders
* introduce name write guard manager
* prevent name change of file system folders
* Update script-folder-workspace-editor.element.ts
* make guard optional
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Adds optional parameter to Tiptap toolbar item's `isActive`
* Adds `isActive` support to toolbar menus and cascading menus
* Adds `isActive` support to the font menus
* Adds `isActive` support to the table menu
+ UI/CSS tweak
* Adds `isActive` support to the style menu API
+ refactored the commands
* Improves cascading menu popover closing
it previously didn't close the menu when an action was clicked.
* remove trash notifications
* Updated tests so we no longer use the notification for moving to recycle bin
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* 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>
* fix: if no workspace views are found at all, show a not found page
* fix: rather than redirecting to the first available tab, which may not always be available on secondary routing, let the router display the first tab on an empty url
this mirrors how workspace views are displayed in umb-workspace-editor
* Refactored breadcrumb variant name
The parentheses will be added to unnamed variant ancestor items.
* Adds `last-item` attribute
(for semantics)
* Imports tidy-up
* Refactored `#getHref` to early exit for `.isFolder`
Saves on the string allocation.
* Added tests for webhook
* Added tests for webhook trigger
* Bumped version
* Make all Webhook tests run in the pipeline
* Fixed comment
* Reverted npm command
* Updated due to test helper changes
* Updated user group tests due to api helper changes
* Updated tests for user group default configuration due to UI changes
* Added tests for document property value permission
* Added tests for document property value permission in content with block
* Bumped version
* Make specific tests run in the pipeline
* Added skip tag and issue link for the failing tests
* Added tests for granular property value permission
* Fixed comment
* Bumped version
* Bumped version
* Fixed comments
* Bumped version and reverted npm command
* Make all tests for user group permission run in the pipeline
* Updated smokeTest command
* Fixed comments
* Reverted npm command
* feat: fix a small-ish nitpick where extensions would reload after login
this could potentially try to re-register all private extensions after each auth signal, which is being prevented anyway because of duplicate aliases, but still nice to remove and not have to listen to
* feat: align login UI extension load with backoffice, i.e. wait for external load before registering core extensions
* build(deps): bump @hey-api to newest and re-generate client
* chore: adds extra error logging
* feat: adds retry logic to the api interceptor
* feat: warn about incomplete actions
* fix: the body was already plain text, but we need to ensure the headers say so as well
* feat: warns the user when actions could not be completed
* build(deps): update @hey-api/client-fetch
* chore: generate new api
* feat: simplify error handling to just UmbApiError and UmbCancelError
* feat: moves error notifications from interceptors into tryExecute, so you more easily can opt out of it and everything is gathered in one place
* feat: recreate responses with correct 'status' and 'statusText'
* build: stop dotnet processes after debug session
* feat: extrapolate common logic into helper method to create responses
* feat: returns a UmbProblemDetails like object on interceptors to be handled by tryExecute
* chore: deprecates duplicate, outdated UmbProblemDetails interface and type guard
* feat: uses the 'title' of the problem details object to convey the main message
* chore: 401 and 403 uses their own interceptors
* feat: show no notification if 401
* feat: uses the real request method and url (instead of the template placeholders) to tell the user what did not succeed
* feat: retry requests with no timeout/race
* feat: throttle and delay signals and disallow them from being updated from the outside
* chore: adds more logging to timeouts
* chore: optimise imports
* test: ignores any test files left in node_modules folder
* feat: uses auditTime to wait a bit before showing the timeout screen
* feat: adds 404 handling to error interceptor
* chore: cleans up after response modification
* feat: preserve only a few headers
this mimicks the v15 behavior
* feat: lets the UI handle 404 errors instead of notifying directly
* test: uses create action menu option instead to find the correct locator, and skips a seemingly unnecessary timeout
* fix: add a catcher to most `asPromise` for stores to prevent cascading errors
* fix: remove conditional instances - they should be able to be undefined
* fix: check for missing store and extract UmbProblemDetails
* fix: only append data if no error
* fix: adds error handling to missing stores and to extract the ProblemDetails object
* revert commit
* fix: ignore errors completely instead of unsetting stores
* revert commit
* chore: cleanup imports
* fix: do not unset store
* stop observation in a proper way
* stop observation of for document-user-permissions
* check for manager twice
* save action
* save action optional
* fix: ensure the right types are used for base stores
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Regenerate keys in RTE blocks on clone operations
This was already present for BlockList and BlockGrid, but not Blocks in RTE.
* Small adjustment from code review
* Bump version to 16.0.0, update starter kit reference and enable package validation.
* Update version number in package.json.
* Re-disabled package validation (can't enable this yet).
* Tiptap style menu toggles (for classes and IDs)
Fixes#19244
* Tiptap style menu toggles (for font/color)
Fixes#19508
* Tiptap "Clear Formatting" remove classes and styles
* Tiptap font sizes, removes trailing semicolon
as the API handles the delimiter
* Tiptap global attrs: adds set/unset styles commands
* Ensure to delete related tokens when removing logins for removed external login providers.
Ensure to avoid removing logins for members.
* Removed unnecessary <= check.
* Updated block grid tests
* Updated notifications in tests
* Updated tests
* Added testIdAttribute
* Bumped version of testHelpers
* Added waits after creation
* Updated more tests related to notifications
* Bumped version
* Cleaned up
* updated tests
* Bumped version
* Updated tests
* bumped version
* chore: export useful rxjs functions
* fix: use switchMap to ensure correct loading of localization extensions
also added filter() and distinctUntilChanged() to ensure the logic is not run more often than what is needed
* test: adds tests for async localization extensions and weights
* chore: apply simpler sorting syntax
* chore: adds catchError to ensure the whole stream is not stopped because of an error
* chore: lowest weight should win
* chore: move catchError so it catches everything
* chore: returns an observable to not break the stream
* chore: reverse weight as the previous was correct
* chore: adds a true comparer function that is more efficient
* Import order sorting
* Export order sorting
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Fixes search filter text alignment
* Let `styleMenu` kind display as a menu
* Collapse excessive whitespace in RTE
* Ensures the RTE Capabilities are in 3 columns
* Dimensions UI fixes
* Ensures backwards compatibility of `UMB_CONTENT_PROPERTY_CONTEXT`
* Updates usage of deprecated `UMB_CONTENT_PROPERTY_CONTEXT` to `UMB_PROPERTY_TYPE_BASED_PROPERTY_CONTEXT`
* chore: disable notifications for global manifest loads
* fix: registers required contexts to load public manifests
* fix: specifically for localizations, load with the same cultures and weights as the backoffice itself does
* fix: set weight to +100 to make sure custom localization extensions are loaded first
* fix: remove 'welcome' fallback to avoid a flash of unlocalized content (FO"U"C)
* fix: starting <li> tag
* 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
* Removed encoding of request to retrieve files and folders by path, to avoid double encoding via the typed client.
* fix: adjusts log viewer to encode only once and remove empty properties
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Updated due to test helper changes
* Updated user group tests due to api helper changes
* Updated tests for user group default configuration due to UI changes
* Added tests for document property value permission
* Added tests for document property value permission in content with block
* Bumped version
* Make specific tests run in the pipeline
* Added skip tag and issue link for the failing tests
* Fixed comment
* Bumped version
* Fixed comments
* Bumped version and reverted npm command
Fixes#19382 by using proper umb-input-date events
The log viewer date range input was changed from using `input` to `umb-input-date`, but the event handlers weren't updated accordingly.
Fixes#19382 by using proper umb-input-date events
The log viewer date range input was changed from using `input` to `umb-input-date`, but the event handlers weren't updated accordingly.
* 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>
* fix: add a catcher to most `asPromise` for stores to prevent cascading errors
* fix: remove conditional instances - they should be able to be undefined
* fix: check for missing store and extract UmbProblemDetails
* fix: only append data if no error
* fix: adds error handling to missing stores and to extract the ProblemDetails object
* revert commit
* fix: ignore errors completely instead of unsetting stores
* revert commit
* chore: cleanup imports
* fix: do not unset store
* stop observation in a proper way
* stop observation of for document-user-permissions
* check for manager twice
* save action
* save action optional
* simplify init for detail repostiory
* fix routes
* adjusting more not found routes
* fix structure manager clean up
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Thow if attempting to use the default unique media path scheme with version 7 GUIDs.
* Expanded unittests, fixed null params, chose a better exception
* Use parameters in test.
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Added translations for `pt-PT` based on the existing `en` file
* Removed translations from `pt-BR` that are the same in `pt` or not translated. Other small adjustments.
* Replace all `ligação` with `link`, as it is more commonly used
* Small typo fixes in pt-BR
* Do not set icon color if the item is selected
* Added helper method for icon version to render.
* Fixed naming of protected helper method.
* Move further logic into helper method.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
The MediaService currently locks the ContentTree for GetPagedOfType(s) operations, but it's querying the MediaTree. This ensures we lock the correct tree.
* correct for fewer rejected promises
* move set new is new
* enable router slot to back out of a redirect
* hacky fix for redirect controller
* Update src/Umbraco.Web.UI.Client/src/packages/core/workspace/controllers/workspace-is-new-redirect.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/Umbraco.Web.UI.Client/src/packages/core/workspace/controllers/workspace-is-new-redirect.controller.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: renames `./src` to `./dist-cms` in distributed package.json
* build: adds missing package.json to segment package
* build: adds missing package and vite.config for 'settings'
* build: adds missing package.json for 'translation'
* build: hoist all sub-dependencies to main package.json file
* build: sync lock file with workspaces
* build: join the paths (for os agnosticity)
* implement use of pathMatch: 'full' for empty redirects
* awaitStability feature for route redirects
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* introduce umb-content-workspace-property to improve dx
* make property responsible for observing the view guard
* Update src/Umbraco.Web.UI.Client/src/packages/content/content/global-components/content-workspace-property.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* context consumer update tests
* no need to import when exporting
* only observe aliases
* merge the two component for less complexity
* added property settings
* ensure this works with extension begin removed
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Removes unnecessary newlines from rich text as JSON delivery API output.
* Fix case from PR feedback.
# Conflicts:
# src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextElementParser.cs
# tests/Umbraco.Tests.UnitTests/Umbraco.Core/DeliveryApi/RichTextParserTests.cs
* fix: add appcache null check
* Moved constant into standard location.
Removed now unnecessary comment.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Handle user id 0 (Unknown/System) when building content version response model
`IUserIdKeyResolver.GetAsync` throws an exception when a user is not found.
As user 0 does not really exist, the exception was being thrown.
We now handle this scenario to return an empty reference.
* add slot for icon
* expose icon data
* render icon
* load type for scaffold
* rename
* render icon for media
* add observable for content type icon
* request data in data source
* wire up document scaffolding
* remove unused
* export server data source
* render icon for member
* rename data source to align with other detail sources
* rename data source
* remove unused styling
* remove console log
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove console log
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove console log
* Update detail-repository-base.ts
* Update document-workspace-split-view.element.ts
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix for invalid state in JsonBlockValueConverter when an unused layout has a nested array
* Improved comments as suggested by copilot review, also fixed code style miss
* Added check for malformed JSON with more closing array tokens then opening tokens
* Added culture parameter to search APIs and propagated it to the indexed entity search service
* Variant Culture aware search in Document and Media Pickers (#19336)
* generate types
* enable selection of entity-item-ref elements
* Update input-document.element.ts
* add culture to document search args
* pass culture param to search end point
* get variant context in document picker
* add variant context
* set culture in variant context when changing app language
* set variant context when swithing variant in a workspace
* Update content-detail-workspace-base.ts
* clean up
* remove from split view manager
* Update property-dataset-base-context.ts
* change name to fallbackCulture
* simplify
* get context instead of consuming
* make all methods async
* implement for media
* Update current-user-action.extension.ts
* allow null until we reach the server
* remove log
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* remove console.log
* add display culture
* opt-in inheritance
* set observe alias to observeAppCulture
* stop inheritance if specific cultures are set
* remove unused import
* include culture for document and media global search
* await value for get methods
* include orderCulture for document collections
* Update document-collection.context.ts
* Update document-collection.context.ts
* fix self import
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* fix: split attribute regex into two to be able to ignore the order of attributes
* the regex should not care for the ending of the tag
* test: adds test cases to test order of attributes
* remove image sources using new regex
* adds more documentation
* adds test cases to test removal of source with and without parameters
* test for null value
* test: adds more cases for null and reversed parameters
* remove padding
* add document urls data resolver
* use in url info app
* handle invariant cases
* do not render culture if all links have the same culture
* use if defined
* handle variant with no links
* Update types.ts
* fix lint errors
* get variant aware document data
* remove unused
* use media item repository
* temp remove check
* populate url
* add spacing to reference app
* reset the url when removing document or media
* add validator
* make url input required
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Cherry-pick from 13 and adjust.
* Resolve circular dependency references and clear OpenIddict tokens on purging sessions associated with removed login providers.
* Removed out of date comment.
* Removed incorrect casing update for SQLite.
* 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>
* add global search extension
* render global search extension in search modal
* register document global search
* add media global search
* add data type global search
* add dictionary global search
* import manifests
* register document type global search
* add media type global search
* register member global search
* register member type global search
* register template global search
* export missing consts
* export missing consts
* export missing consts
* add conditions
* add variant context
* set culture in variant context when changing app language
* set variant context when swithing variant in a workspace
* Update content-detail-workspace-base.ts
* clean up
* remove from split view manager
* Update property-dataset-base-context.ts
* change name to fallbackCulture
* simplify
* make all methods async
* Update current-user-action.extension.ts
* remove culture and segment state
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Ordered `@property` setters/getters
* JSDocs + comments
* Removed unneeded CSS
* Markup code formatting
* Hides "Reset focal point" button
when focal point has default value
* Image Cropper field element: adds active state to crops
* Image Cropper Editor Field element: reduced the markup and styles
Removing duplications from inherited class
* Removed unused code from Image Cropper Focus Setter element
* Big refactor of Image Cropper Editor modal
to support File Upload Previews
* Added `<umb-file-upload-preview>`
to handle the logic of rendering the relevant `fileUploadPreview` extension.
* Refactored SVG File Upload Preview component
Removes the `<uui-card-media>` container.
Controversially removes the link, but this was inconsistent with other file previews.
* Refactored General File Upload Preview component
Removes the `<uui-card-media>` container.
Controversially removes the link, but this was inconsistent with other file previews.
* Refactored Image File Upload Preview component
Removes the `<uui-card-media>` container.
Controversially removes the link, but this was inconsistent with other file previews.
* Refactored Audio and Video File Upload Preview component
To align code with the other file previews.
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/modals/image-cropper-editor/image-cropper-editor-modal.element.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Tiptap Media Picker: Uses imaging repository
to get the resized URLs from the server.
This adds support for ImageSharp's HMAC security.
* Update src/Umbraco.Web.UI.Client/src/packages/tiptap/extensions/toolbar/media-picker.tiptap-toolbar-api.ts
* feat: uses the actual configured image SIZE for both width and height as documented
this also deprecates the public maxWidth property
* feat: verifies that a resized image exists and use the size of that
* feat: transfer the image size calculation to the drag'n'drop uploader and ensures that imageSize() accounts for maxHeight as well
* docs: adds comment to explain why it calculates the image size
* test: adds cases for imageSize
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Updated nightly E2E pipeline
* Fixed failing E2E tests
* Skipped content tests wirh list view content due to an issue
* Updated tests due to UI changes
* Bumped version
* Added more waits
* add method to get all property aliases
* pass property aliases to composition modal
* put in a box + adjust spacing
* disable if doc type is not compatible for composing
* compare with what is used for composition
* add comment
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@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>
* make sure the unique follows the unique of the models type
* make sure the uniques are used to clean up
* omit #containers state for a more direct data flow
* ensure containers are refreshed correctly
* set ownerContentTypeUnique to undefined when clear
* Allow segment access to editors with access to documents, not only settings.
* Update src/Umbraco.Cms.Api.Management/Controllers/Segment/SegmentControllerBase.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Cleaned up usings
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Deprecate the AuditService.Write() method
It will be moved to a new service with the rework of the AuditService, as it relates to a different repository (umbracoLog vs umbracoAudit).
* Update obsolete message to reference V18
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* remove curves
* new photo
* Revert "remove curves"
This reverts commit f691d1762f.
* re-introduce curves
* fix the edge of the lines
* fix edge of lines
* use color-background for alignment with login screen
* chore: replace login image in mocks
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* add new manifest
* wip element
* add segment to preview context
* add segment icon
* open preview route on the same server
* Update preview.context.ts
* clean up
* pass culture and segment to preview window
* Incorrect forum and security urls when raising issue (#19080)
* Add 'ManifestWithDynamicConditions' to ManifestHeaderApp so Header Apps can be conditionally shown/loaded (#19124)
* V15 QA Added acceptance tests for bulk trash dialog (#19125)
* Added tests for bulk trash content dialog
* Updated tests for trash content dialog
* Added tests for trash and bulk trash media dialog
* Moved trash content tests into a folder
* Bumped version
* Make trash tests run in the pipeline
* Make trash tests run in the pipeline
* Fixed comments
* Reverted npm command
* readme shield for forum
* Allow deselection of color picker property. (#19174)
* V15 Added acceptance tests for tiptap statusbar (#19131)
* Updated tests for tiptap RTE
* Moved tests for titptap toolbar to another class
* Added tests for titptap toolbar
* Added tests for tiptap statusbar
* Bumped version
* Make tiptap tests run in the pipeline
* Bumped version
* Reverted npm command
* build: restores some of the behavior from V13 in relation to StaticAssets (#19189)
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
* filter search to only include element types
* V16 QA update failing nightly tests (#19190)
* Fixed tests
* More updates for tests
* Bumped version of testhelpers
* Fixed notifications in tests
* Last fixes
* Revert "Merge branch 'v16/dev' into v16/hotfix/filter-element-type-search-for-block-types"
This reverts commit 7b8b5c28da, reversing
changes made to 6d4ddb7077.
* disable not pickable search results
* correct use of pickable filter
---------
Co-authored-by: Lotte Pitcher <LottePitcher@users.noreply.github.com>
Co-authored-by: Warren Buckley <warren@hackmakedo.com>
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Lotte Pitcher <github@lottepitcher.co.uk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Updates dependencies on Umbraco.Code and Microsoft.CodeAnalysis.*.
* Avoids dependency warnings on build of Web.UI project.
* Bumped version to 16.0-rc2.
* build(deps): bump tiptap from 2.11.5 to 2.11.7
* fix: prepends the system `/css` folder to stylesheets before attempting to load them
* fix: adds more safety around path assumptions
* chore: eslint fix
* fix: prepend only the system path to picked stylesheets
* Open entity actions menu as pop up instead of modal
* Update entity-actions-bundle.element.ts
* Update entity-actions-bundle.element.ts
* ensure no indent for the menu items of the entity actions menu
* add scroll container
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
* Updated tests for tiptap RTE
* Moved tests for titptap toolbar to another class
* Added tests for titptap toolbar
* Added tests for tiptap statusbar
* Bumped version
* Make tiptap tests run in the pipeline
* Bumped version
* Reverted npm command
* Add authorization for webhooks to item and log endpoints.
* Remove full path details from exception when requesting a path outside of the physical file system's root.
* Added missing usings.
* Revert changes to the webhook items API
---------
Co-authored-by: kjac <kja@umbraco.dk>
* fix: detects if a request contains a problemdetails object then maps that back to the UmbApiError
* feat: uses isProblemDetailsLike everywhere and avoids showing the user a big "detail" string
* feat: disables notifications for temp file upload to handle it manually in case of special server errors
* fix: use temporary file manager for dictionary to catch all errors
* fix: uses temporary file manager to upload avatars to handle all server errors
* feat: observe on allowed image types for user avatar
* Update src/Umbraco.Web.UI.Client/src/packages/core/temporary-file/temporary-file-manager.class.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: located the status code 413 directly now that the management api supports it out-of-the-box
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add authorization for webhooks to item and log endpoints.
* Remove full path details from exception when requesting a path outside of the physical file system's root.
* Added missing usings.
* Revert changes to the webhook items API
---------
Co-authored-by: kjac <kja@umbraco.dk>
* fix: the publish action should use the publish modal
* feat: allows the publish modal to handle invariant data
* chore: rearrange the unpublish action & modal so they are one-for-one alike with publishing
* Updated acceptance tests - add steps to interact with publish modal
* Added tests for publish variant content
* Bumped version of test helper
* handle segment
* include segments in success notification
* include segments in success message
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
* fix: the publish action should use the publish modal
* feat: allows the publish modal to handle invariant data
* chore: rearrange the unpublish action & modal so they are one-for-one alike with publishing
* Updated acceptance tests - add steps to interact with publish modal
* Added tests for publish variant content
* Bumped version of test helper
* feat: adds text to indicate you are about to publish
---------
Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
* Added tests for bulk trash content dialog
* Updated tests for trash content dialog
* Added tests for trash and bulk trash media dialog
* Moved trash content tests into a folder
* Bumped version
* Make trash tests run in the pipeline
* Make trash tests run in the pipeline
* Fixed comments
* Reverted npm command
* prevent document type picker search from returning element types when not allowed
* rename + fix modal rejection
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@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>
* 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>
* 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>
* feat: removes all generic Created, Saved, and Deleted notifications
* Comment out the notification checks in acceptance tests
* Bumped version of test helper
* Fixed publish with descendants tests
* Cleaned up
* Bumped version of test helper
---------
Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
Co-authored-by: Nhu Dinh <150406148+nhudinh0309@users.noreply.github.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* feat: adds new texts for 'unpublished' action
* chore(mock): adds missing endpoints for mock data
* feat: removes old, deprecated, and hardcoded messages for unpublish
* fix: publish actions should not fail just because the notification context might not be available
* feat: the unpublish actions should mimick the publish actions
* chore(mock): adds mock endpoints for 'publish with descendants'
* feat: moves 'publish with descendants' notifications to calling workspace
* feat: adds DK translations
* feat: adds different notification for unpublishing invariant content
* removes `server-api-dev` script that acts weird with base urls after upgrade of client-fetch
* build(deps): updates client-fetch and uuid dependencies
* make consume return undefined
* make consume return undefined
* a few more undefined context handlings
* unprovide context
* rename
* jsdocs
* refactor UmbContextBase to not use generic types
* reset target on disconnect
* posible undefined context
* callback with undefined when disconnected
* update comment
* correct types
* correct error handling
* do not throw an error when missing
* always return permitted to onChange callback
* fix not existing store
* fix resetting structure manager
* fix requestAuditLogs
* support gone context
* support context not begin present
* use UMB_ENTITY_WORKSPACE_CONTEXT for right typing
* correct type to use UMB_SUBMITTABLE_WORKSPACE_CONTEXT
* correct context consumption
* fix tests
* fix tests
* catch modal registration that has been destroyed
* catch
* handle context unprovide
* more clean up
* fix context consumption
* Update repository-details.manager.ts
* enable store to be undefined
* enable UmbRelationTypeDetailRepository store to be undefined
* remove log
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* 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.
* wip sortChildrenOfContent kind
* export types
* add modal token + consts
* Update manifests.ts
* add content tree item model
* wip use umb-table element
* set as prop
* render sort icon
* prevent selection when sortable
* remove unused
* clean up
* reflect sortable prop
* start implementing sortChildrenOfContent
* render name and create date
* handle date ordering
* remove unused
* clean up
* fix grab and grabbing styling for sortable table rows
* render label when no children
* Update sort-children-of-content-modal.element.ts
* fix styling of load more
* only allow sorting when all items are loaded
* Update index.js
* 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>
* Add GetChecksumStreamAsync and GetLengthAsync
* Obsolete CanSetPhysical, Set and GetVirtualPath
* Updated obsolete messages to reference Umbraco 18
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Removed population of Urls on document response model and obsoleted property.
* Updated readme for acceptance tests to show how to run a single test.
* Removed URLs from document models on the client-side and fixed issue with link picker stil using legacy URLs response data.
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* declare type and constant
* implement for example
* commit example
* fix document data
* make rte blocks optional
* remove blocks from this mock data
* fix mock data for RTE
* comment and destroy method implementation
* set to 8
* update comments
* remove console.log
* host may be undefined
* prevent duplicate messages
* Added configuration for the log file name and format.
* Added unit test for LoggingConfiguration.
* Rely on configuration validation to verify supported log file format arguments.
* Fixed unit test failing on build pipeline.
* Rowrked #18771 with a more brute force solution
* Fixes class name. Adds unit test verifying behaviour.
* Corrected test name.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* 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>
* 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
* 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
* Adds `searchResultItem` for Media
Includes "trashed" state tag
* Removes trailing whitespace from manifest name
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Loosens the guard for an empty `query`
* Adds search to Document Type picker
* Document Type Search Provider: adds support for querying element types
* Adds `pickerSearchResultItem` element for Document Types
* Help menu: fixes Our Umbraco link
* Changes forum link from Our Umbraco
to the new Community Forum website.
* Small fixes in the Log Viewer Message
* Help Menu: flattens structure
for tighter UI.
* Replaced hot-linked favicon images
with built-in icons.
Except for Microsoft Bing.
* Corrected "Search Umbraco Forum using Google" link
* 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>
* Make the entity search service async
* Update src/Umbraco.Core/Services/IIndexedEntitySearchService.cs
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* remove user and document/media circular imports
* fix code order
* change MAX_CIRCULAR_DEPENDENCIES
* remove all comments from content before checking for imports
* fix self import
* fix self imports
* Use maximum available value for JSON serialization depth.
* Updated unittests with best practices
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Revert "Ensure dates read from the database are treated as local when constructing entities (#18989)"
This reverts commit 7b10d39d66.
* Avoid system dates stored with local server time being defaulted to UTC on database read.
* ContentScheduleDto.Date is UTC
---------
Co-authored-by: kjac <kja@umbraco.dk>
* feat: adds new backend-api and http-client packages and generates the api with @hey-api/client-fetch
* feat: maps generic T back to promise to avoid usage of 'any'
* feat: sets up baseUrl and auth for the new client
* feat: gets the api base url from server context instead of the http client
* feat: gets the api base url from server context instead of the http client
* feat: allows undefined token for xhr requests
* feat: changes the response object to be either type T directly (to support @hey-api/client-fetch) or the given type if the response does not contain a 'data' object
* revert interface
* feat: creates an api return type to comply with @hey-api/client-fetch
* feat: maps T back to the data model for non-api types
* feat: simplify api response to return the promise you sent to it with an optional error object
* feat: moves http related modules to the core package
* feat: updates the required type of the client for the api interceptors
* docs: removes invalid property
* feat: adds request parameters to documents
* feat: adds request parameters to imaging
* feat: adds return type to item-server-data-source-base
* feat: adds request parameters to webhooks
* feat: adds request parameters to users
* feat: renames all `requestBody` to `body` to conform with new client-fetch
* feat: uses query to take parameters in
* feat: adds data source response to tree types
* feat: adds request parameters to templating
* feat: adds request parameters to templating
* feat: adds request parameters to telemetry
* feat: adds request parameters to tags
* feat: adds request parameters to examine management
* feat: adds request parameters to relations
* feat: adds request parameters to packages
* feat: catches new api errors that are direct problem details objects
* feat: adds default interceptor to handle Umb-Generated-Resource headers
* feat: uses an error interceptor specifically to catch errors to avoid overhead
* feat: adds request parameters to members
* Revert "feat: uses an error interceptor specifically to catch errors to avoid overhead"
This reverts commit 7ffb7b29bf.
* feat: adds request parameters to media
* feat: adds request parameters to log viewer
* feat: adds request parameters to languages
* feat: adds request parameters to health check
* feat: adds request parameters to oembed
* feat: adds request parameters to documents
* feat: adds request parameters to redirect management
* feat: adds request parameters to blueprints
* feat: adds request parameters to dictionary
* feat: adds request parameters to data types
* feat: adds request parameters to temporary file
* feat: instructs delete methods to return an unknown value
* feat: allows default value to be unknown
* feat: adds request parameters to culture
* chore: import path
* feat: adds correct models to mocks
* feat: adds correct models to installer and upgrader
* feat: adds correct models to mocks
* chore: forgot to move ignore line
* chore: ignores generated files in eslint
* chore: removes old generated files
* feat: moves network connection status manager back into the main app to avoid imports from core
* chore: update imports
* feat: generate API for login screen without relying on the backoffice
* feat: uses the generated models on the login screen
* feat: sets 'credentials' to 'include' and adds it back to openapiconfiguration to avoid a breaking change
* adds back in commands moved to a workspace
* chore: vscode workspace settings formatted and useFlatConfig added for better compatibility
* 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>
* Added tests for mandatory checkboxlist in a content
* Added tests for mandatory dropdown in a content
* Added tests for mandatory media picker in a content
* Added tests for mandatory radiobox in a content
* Added tests for block grid with mandatory property editors
* Added tests for block list with mandatory property editors
* Bumped version
* Cleaned up
* Changed npm command
* Fixed comments
* Fixed comments
* Reverted
* Display content type names on dynamic node query steps.
* Refactored to use `UmbRepositoryItemsManager` observable
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* display validation on save + use uui-color-invalid
* update css vars
* use standalone color for property layout
* remove color from label
* fix badge
* fix create button color
* clean up
* correct badge colors
* 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>
* check the full path for permissions
* fix race condition
* wip update permission when variants change
* Populate ancestor keys on document tree response items.
* Populate ancestor keys on document collection response items.
* Update OpenApi.json
* generate server models
* update types
* map data
* add ancestor context
* set ancestors in context
* use ancestor context in tree
* clean up
* provide ancestor context from a collection item
* provide ancestor context from structure context
* Use array of objects rather than Ids for the ancestor collection.
* Update OpenApi.json.
* add ancestor data to mocks
* set ancestors ids in mocks
* omit ancestors for recycle bin item
* use correct models for document blueprint mock data
* remove constructor
* mock documents for testing
* add user group permission test data
* wip document user permission condition tests
* generate new server models
* update data efter server models update
* clean up
* Update entity-actions-table-column-view.element.ts
* longer time for not found to appear
* use arg
* observe alias
* set new the right place
* remove const
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Create integration test verifying existing behaviour.
* Aggregate permissions per document for the current user response.
* Refactoring following Codescene warnings.
* Update enable cleanup button text on toggle.
* Handle console error visible on cancel of rollback dialog.
* Return value from `umb-rollback-modal`
---------
Co-authored-by: leekelleher <leekelleher@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>
* Allow save of empty translations for dictionary items.
* Updated Open API schema to match request model update
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Amend root content routing and ensure trailing slashes as configured
* Fix false positives at root + add more tests
* Awaited async method and resolved warning around readonly.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Moves `escapeHTML` call from localization controller to `umb-localize` element
* Adds supporting unit-test
* Removed unit-test
as it is now expected that the localization
controller will return literal HTML markup.
* Updated import path
* Removed extra call to `text()`
* fix: straightens out unnecessary imports of components and re-exports them appropriately
* fix: imports repository from file directly
* feat: introduces a "server" package and moves UmbAppContext logic to UmbServerContext
* feat: updates all cases of `UmbAppContext` -> `UmbServerContext`
* build: adjusts MAX_CIRCULAR_DEPENDENCIES from 6 to 3
* Update src/Umbraco.Web.UI.Client/devops/circular/index.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: removes unused interface
* build: adds server bundle to vite
* build: vite should build index barrel
* build: readjust to 5 to account for previous failed build
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: resolves an unintended circular reference based on files being moved around
introduced in #18939
* fix: improves error handling to return early if interceptor does not catch a 500
* fix: adds try/catch around json parsing
* 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>
* build(deps-dev): bump @hey-api/openapi-ts from 0.61.3 to 0.66.1
* docs: adds information on how to configure new fetch-client
* feat: adds preliminary umb-prefixed error types
* fix: uses correct import path
* docs: jsdocs
* feat: optimises error reporting
* feat: maps functions into separate controllers
* feat: adds color to peek notification
* feat: moves the internal api interceptors controller and adds more interceptors
* feat: adds host to params
* feat: marks certain functions as deprecated
* feat: maps api errors to UmbErrors
* chore: removes deprecation console logs
* chore: allows any
* feat: maps xhr errors to umb errors
* feat: adds host to tryExecute
* feat: adjusts deprecation notifices and checks
* chore: adjusts deprecation notices
* chore: add .warn() to deprecation
* feat: updates login app repository
* feat: changes all `tryExecuteAndNotify` calls to `tryExecute`
* feat: copies helper functions to resources package and deprecates in notification package
* chore: removes unused imports
* feat: adds exports
* chore: removes controller that is no longer useful
* feat: marks _peekError as protected
* feat: adds support for error notifications (and to ignore them) and to cancel an ongoing request
* feat: eliminates duplicated logic in xhr controller
* feat: touches only the cloned response to allow interceptors downstream to unwrap the body
* feat: stores the host for async context
* feat: disables automatic notifications for validation data source
* feat: disables notifications where they are otherwise handled or ignored
* feat: removes deprecated code
* feat: eliminates a controller that only had a static method
* docs: adds jsdocs
* docs: adds jsdocs
* docs: adds jsdocs
* feat: returns umb-notifications response without modifying it
* feat: eliminates dependency on generated `ProblemDetails` type
* feat: eliminates dependence on generated `ApiError` type
* feat: eliminates dependence on generated `CancelError` type
* fix: removes dependency on CancelablePromise
* 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>
* 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.
* 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>
* 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.
* 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>
* 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>
* 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.
* 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>
* 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.
* 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.
* 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>
* Create new migration
* Migrate UI to tiptap
* remember to overwrite toolbar
* Add setting to disable migration
* Add default extensions when migrating
* Make sure that blocks also works
* Renamed classes to reference TinyMCE migration
* Defaults TinyMCE toolbar mapping to `null`
if we can't map to a known Tiptap toolbar extension (manifest alias),
then it may cause an issue with the toolbar rendering.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* feat: resolve TODO by removing quiet option
* feat: exclude ./src/mocks from production build
* feat: load only msw when running through vite
* feat: optimise load order
* feat: handles mocked logos with virtual path
* feat: loads mocked service worker from virtual path
* feat: loads assets from virtual path
* feat: forces MSW=on for the static build
* build: adds storybook workflow copied over from the old backoffice repository
* build: limits where the build runs
* build: adds workflow to build a static version of the backoffice upon request
* build: excludes the `/umbraco/backoffice/assets` folder from navigation fallback just in case
* build: triggers run when the workflow file itself changes
* build: triggers run when package.json changes
* build: marks the 'contrib' branch as production
* build: activates static builds on preview/* labels
* build: bumps github checkout version
* build: updates key for backoffice web app
* build: updates key for storybook
* build: disables build for release branches to preseve on preview environments
* 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
* 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>
* fix: avoids circular dependencies by realising the 'block' package was importing from itself
* chore: lowers requirement to 9 after fixes
* chore: removes unused file
* feat: uses `<uui-card-media />` to preview svg's
* fix: svg preview should support potentially very large images
* fix: adds alt attribute
* fix: adds `<uui-card-media />` for image previews as well
* fix: ensures all previews have at least a "title" attribute
* Update temeltry dashboard UI
* Uses headline prop/attr to set the header
* Uses a normal h3 rather than a h2 with H3 uui css class
* Updates the UUI slider to not show the value of 0,1,2 as not that useful to see when changing the slider
* Updates translation as it had a weirdly places br mid sentance
* Ensures date comparisons in schedule integration tests are made only on the date part.
* Include time part to the second.
* Ensure Kind is retained when truncating a date.
* Retain Kind for all truncation levels.
* Ensures date comparisons in schedule integration tests are made only on the date part.
* Include time part to the second.
* Ensure Kind is retained when truncating a date.
* Retain Kind for all truncation levels.
* add more icons
* add group id for inspection
* make outline style to make it not look disabled
* ensure that inherited has entries
* ensure current route is updated accordingly
* data marks
* shared across cultures tag
* fix sidebar group headline size
* Revert rather than prevent updates to sensitive properties on members without sensitive data access.
* Added suppression for integration test updates.
* Fix issue text overflow when user name is too long
* add ellipsis at the end of the text
* Bumped version of test helper
* Fixed document type design tab tests due to test helper changes
* Amends based on Niels' feedback
+ other code formatting tweaks.
* chore: remove unknown attribute on uui-tag
* fix: adds fallback text and uses `<umb-localize />` where applicable
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Nhu Dinh <hnd@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Revert "simplifying the use of props (#18430)"
This reverts commit 347e898190.
* do not set value if identical check
cherry-picked from c03a8afab5
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Added tests for block list with inline editing mode
* Added tests to create a document type witha block with inline editing mode
* Added tests for block grid inline editing mode
* Bumped version
* Changed npm commands
* Reverted npm command
* do not destroy instance
* UmbDashboardHealthCheckElement
* correct last contexts to use context-base
* informing user that Umb.Condition.MenuAlias does not work
* parse host to Section Context
* Added member reference type model.
* Updated client-side types and sdk.
* Render member relations on the member info view.
* Add relation type for related member with migration.
* Extend tests for track relations to include member relations.
* Extend tests for relation repository.
* Extend tests for relation service.
* Addressed comments from Copilot review.
* Add relation notification to member deletion.
* Removed unused import.
* Updates from code review.
* make ref element globally available
* align naming
* use new reference list
* add interfaces for config
* export const
* Fixed failing integration tests.
* apply interface
* deprecate interface with wrong name
* fix import
* disable unpublish button when item or descendants are referenced
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added member reference type model.
* Updated client-side types and sdk.
* Render member relations on the member info view.
* Add relation type for related member with migration.
* Extend tests for track relations to include member relations.
* Extend tests for relation repository.
* Extend tests for relation service.
* Addressed comments from Copilot review.
* Add relation notification to member deletion.
* Removed unused import.
* Updates from code review.
* export const
* Fixed failing integration tests.
* deprecate interface with wrong name
* fix import
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* feat: maps up the CANCELLED status
* feat: uses the new dropzone input to render the dropzone
* feat: adds support for differing server urls
* chore: avoids a breaking change by storing the temporary file
* feat: uses the umb-dropzone-input to render the dropzone
* feat: loads in the blob url rather than reading the file into memory AND appends the server url
* chore: lit 3 compat
* feat: uses the umb-dropzone-input to render the dropzone
* Revert "feat: uses the umb-dropzone-input to render the dropzone"
This reverts commit bc1a6ae7df.
* feat: creates an object url directly from the File rather than the Blob
* feat: revokes the file data url from object storage
* feat: revokes object url on disconnect
* Added tests for Approved Color default configuration
* Updated tests for Approved Color configuration
* Added tests for ChecklboxList configuration
* Added tests for Data type default configuration - part 1
* Added tests for data type configuration and updated tests due to test helper changes
* Added more steps to verify the default configuration
* Added tests for the default configuration and refactoring code
* Added steps to verify the TinyMCE default configuration
* Bumped version
* Fixed tests due to test helper changes
* Make all Data Type tests run in the pipeline
* Updated assertion steps
* Fixed format
* Bumped version
* Bumped version
* Comment failing tests
* Reverted npm command
* Fix bug uploading an image via the Media Picker is no longer automatically selected
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/modals/media-picker/media-picker-modal.element.ts
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/modals/media-picker/media-picker-modal.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* remove submit modal
* fix: avoids overriding the dropzone manager as that does not work with inheritance
* fix: set disabling of folders correctly
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Updated userGroup tests due to test helper changes
* Added tests for user group default configuration
* Bumped version
* Fixed due to test helper changes
* Reverted npm command
* Added tests for Approved Color default configuration
* Updated tests for Approved Color configuration
* Added tests for ChecklboxList configuration
* Added tests for Data type default configuration - part 1
* Added tests for data type configuration and updated tests due to test helper changes
* Added more steps to verify the default configuration
* Added tests for the default configuration and refactoring code
* Added steps to verify the TinyMCE default configuration
* Bumped version
* Fixed tests due to test helper changes
* Make all Data Type tests run in the pipeline
* Updated assertion steps
* Fixed format
* Bumped version
* Bumped version
* Comment failing tests
* Reverted npm command
* Avoid a hash key generation and lookup when inserting in the LockingMechanism
* Added comments for CollectionsMarshal.GetValueRefOrAddDefault
* Added further comments and tests.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Fix bug uploading an image via the Media Picker is no longer automatically selected
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/modals/media-picker/media-picker-modal.element.ts
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
* Update src/Umbraco.Web.UI.Client/src/packages/media/media/modals/media-picker/media-picker-modal.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* remove submit modal
* fix: avoids overriding the dropzone manager as that does not work with inheritance
* fix: set disabling of folders correctly
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Avoid an unneeded lookups in the Keys dictionary when initiating key cache
* Add further comments and unit tests around updated code.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Updated userGroup tests due to test helper changes
* Added tests for user group default configuration
* Bumped version
* Fixed due to test helper changes
* Reverted npm command
* allow for this word
* getMessages
* split inherit and sync method
* sync feature
* rename sync report
* auto report + impl
* remove log
* double inheritance test
* one more test
* feat: umb-dropzone should extend umb-input-dropzone
moves the umb-dropzone back into the media package and extends the umb-input-dropzone for common logic
* feat: adds a UmbDropzoneMediaManager class to handle media specifically
* chore: sort imports
* feat: adds a browse() method
* removes unused export
* use correct import
* fix: document and media type import should use other dropzone
* docs(storybook): remove old argument
* feat: adds umb-dropzone-media element and deprecates umb-dropzone element
* feat: use umb-dropzone-media instead
* adds export for dropzone
* feat: adds a slot to show an additional text above the dropzone graphics
* feat: the dropzone should fill out its host component
* feat: adds back a text to describe where to drop files
* remove unused import
* fix: removes overflow to allow full border
* implement tree expansion logic
* wip test example
* support complex expansion
* extend entity
* extend with model
* Update tree-item-context.interface.ts
* use expansion model to observe open state
* clean up
* fall back to tree context
* Update default-tree.context.ts
* Update default-tree.context.ts
* Update default-tree.context.ts
* clean up
* simplify model and state
* refactor to manager
* remove test data
* Update default-tree.context.ts
* rename
* add get method
* rename to collapse
* all collapse all method
* fix collapse logic
* add js docs
* add tests for expansion manager
* do not load children if the item is already open
* Update tree-item-element-base.ts
* config to expand tree root in pickers
* expand tree root for duplicate to
* Update tree-expansion-manager.test.ts
* make methods async
* use array state
* add isExpanded helper
* refactor to use isExpanded helper
* fix type issues
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* create a symlink between local Client .vscode snippets and global snippets for ease of use
* fix: no need to specify `Element` in the snippet as that is pulled from the filename
Because of our convention with `x.element.ts` you would have ended up with `UmbXElementElement`
* feat: adds new component `umb-input-dropzone`
* docs(storybook): more stories
* feat: construct the temporary files centrally along with an `AbortController` and use its signal
* feat: makes UmbInputDropzone form aware
* feat: introduces a change event
* chore: temporary changes before changing upload field
* feat: adds default slot
* docs: adds jsdocs
* feat: adds more properties
* feat: adds dashed styling
* feat: adds multiple support
* feat: allows to cancel file
* feat: separate **cancel** and **remove**
* fix stylibg
* move dropzone element
* move input-dropzone into dropzone package
* feat: introduces a 'dropzone' package
* import for backward compatibility
* remove ambigious export
* reexport everything from dropzone
* fix import
* cleanup test files
* use correct import paths
* test: make sure folder exists before writing to it
* adds export for modals
* adds entrypoint for dropzone package
* use the AbortController directly on the temporary file object
* uses correct icon name
* feat: adds ability to remove all files and cancel the request
* feat: adds styling for the uploader
and enables it to work in multiple mode with classes over id's
* do not let the content exceed its boundaries
* feat: formats progress with 2 decimals
* feat: formats with 0 decimals
* fix: returns cancel error
* fix: maps cancel errors back to the uploadable item
* fix: do not proceed with media items if the request was cancelled
* chore: mark exports from media <- dropzone as deprecated
* fix: use correct attribute and remove a todo with localizations
* fix: use correct attribute and remove a todo with localizations
* fix: allow to specify parent through attribute
* feat: align attribute `disableFolderUpload` between dropzone components
* Only validate for duplicate member email address when configured to do so.
* Lookup member after creation by user name rather than email, as only the former is guaranteed to be unique.
* always allow copy
* add back readonly check
* render pencil icon if the property is read only
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* fix focal point drag not working on firefox
* prevent reacting to left click
* only left click for drag
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* fix: adds accepted image types for image cropper
* chore: cleanup imports and types
* feat: adds a loader until all prerequisites have been resolved for image cropper
* feat: adds method to share temp file configuration
* Code formatting
* Icons for Tiptap table row/column actions
* Combined Tiptap exports
Removed extra constant
* Added Table Column Menu
* Added Table Row Menu
Made the bubble menu reusable
* Extend content type search endpoint
* Refactor to be able to specify trashed or not
* Simplify and extract into own method
* Fix breaking ctor
* Make non actions in controllers
* Fox up search service
* Add third ctor to avoid errors
* Update query to filter by is element
* Also implement for media
* Minor formatting and clean-up
* Re-introduce (and obsolete) the previous constructor
---------
Co-authored-by: kjac <kja@umbraco.dk>
* implement getContext rejecter + allow for resolving in undefined
* fix test
* timeout concept
* adjustments
* adapt implementation
* ability to set timeoutFrame for faster test
* update
* make sure provider only provides when connected
* make sure action apis can fail without resolving
* make sure to await the arrival of the UMB_AUTH_CONTEXT
* no need to be async
* consume to stay up to date
* one rendering cycle approach
* adjusting context consumption part 1
* implementation adjustments
* correction patch 2
* correction patch 3
* correction batch 4
* correction batch 5
* correction batch 6
* Reverted `elementName` constant
+ code tidy-up
* Filter out values that don't match the configured entity-type
Fixes#18476
* Notifies the user of invalid data/configuration
with an option to remove invalid data.
* Code tidy - XML header comments, method ordering, warning resolution.
* Add extension method for retrieving all URL segments for a document.
* Cache and persist multiple URL segments per document.
* Allowed segment providers to terminate or allow additional segments.
Set up currently failing integration test for expected routes.
* Resolved cache issue to ensure passing new integration tests.
* Fixed failing integration test.
* Test class naming tidy up.
* Added resolution and persistance of a primary segment, to retain previous behaviour when a single segment is retrieved.
* Further integration tests.
* Resolved backward compatibility of interface.
* Supress amends made to integration tests.
* Aligned naming of integration tests.
* Removed unused using, added XML header comment.
* Throw on missing table in migration.
* Code clean-up.
* Fix multiple enumeration
* Used default on migrated column.
* Use 1 over true for default value.
* Remove unused logger
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Added tests for Trash content
* Verified the reference headline
* Updated tests
* Added more tests for trash content
* Updated due to test helper changes
* Bumped version
* Maked trash content tests run in the pipeline
* Fixed comments
* Reverted smokeTest command
* Started testing block areas
* Added tests
* Added more tests
* Finished tests
* Moved tests
* Skipped tests
* Fixed comments
* Runs the created tests on the pipeline
* Reverted test command
* feat: adds autobuild of umbraco extensions created by the dotnet template
* adds file extensions to imports to follow the esmodule convention + apply formatting
* build(deps): upgrade hey-api, vite, typescript and generate new api
* chore: formatting
* clean up actions as client is now automatically being built when starting the site
* revert change with UMBRACO_VERSION_FROM_TEMPLATE
* revert if(includeExample)
* use template name
* use template name
* feat: update the way it sets the auth token
* add back in IncludeExample if
* fix: rename allowPackageTelemetry to allowTelemetry because that is what it is actually called
* `.csproj` amends
- Adds `BeforeTargets` to "BuildClient" target
- Adds "package.json" to "RestoreClient" target input
- Removes extra parameters from `npm i` command
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
Due to an unfortunate mistake in the Umbraco.Cms.Targets generated JSON schema, we alluded to supporting `allowPackageTelemetry` in the JSON files, however the backend didn't support this.
* chore: combine similar commands
* fix: add specific ignore on tinymce
* fix: override the RawEditorOptions types from tinymce
this ensures that we do not have 70k lines of schema in the generated schema
* fix: import only from the extension-registry
this will automatically find all registered UmbExtensionManifest regardless of which package is imported
* Prevents attempt to move an item to itself as a parent.
* add default tree item type
* use pickable filter
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Fixed parsing of node if in content and media permission querystring handlers to retrieve expected value when multiple are provided in the querystring.
* Add HttpPost attributes to backoffice endpoints that should only accept post requests.
* Bumped version to 13.6.1.
* Narrow PermissionQueryString parsing to the releveant UmbracoObjectType
* Add missed update from v10
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Added description to block list properties hide content editor
* Update the description to use localization
---------
Co-authored-by: Oskar kruger <obk@umbraco.dk>
* Tiptap: Anchor extension
* Corrected import; fixed the build
* Removed icon, mistakenly added to this branch
it was intended for the Character Map feature.
* Updated dialog style
* Scoped the Anchor modal to Tiptap package
Exported modal alias constant.
* Tweaked selected Anchor styling
* Localizes public labels
* Exported Anchor constants correctly
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Tiptap: Character Map extension
* Added missing icon! 🤦
* Added missing manifests
for the CharMap modal
* CharMap dialog styles
* Scoped the Character Map modal to Tiptap package
Exported modal alias constant.
* Server-side validation for multiple text strings property editor.
* Added unit tests for block list min/max server validation.
* Add danish translations
* Add test showing issue
* Fix issue
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* 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>
* Provide custom required validator for block list.
* Adds a custom required validator for the toggle to ensure the value provided is true.
* Remove unnecessary usings
* Remove redundant interface and base constructor
* Remove unnecessary interface
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Add amount validator
* Add ObjectTypeValidator to MNTP
* Move validate startnode to helper method
* Validate allowed type
* Fix tests
* Added some XML header comments and resolved nit-picky warnings.
* Further XML comments.
* Fix null validation case
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* add children to reload translation
* add has children condition + context
* export
* register manifests
* set hasChildren value for tree items
* add condition to document tree item
* add has children condition to sort children of document
* add conditions for media
* add entity trashed event
* dispatch event when entity is trashed
* remove double event listeners
* export action class
* Update default-tree.context.ts
* wip reload tree when entity is trashed
* move into data folder
* clean up listeners
* move manifest
* wip reload root
* clean up
* add recycle bin tree item
* use for media
* pass entity types through manifest + add recycle bin tree item kind
* remove custom implementation for document recycle bin
* use kind
* rename to supportedEntityTypes
* Update recycle-bin-tree-item.context.ts
* clean up
* remove condition
* only show empty recycle bin if it has children
* remove of sort children
* Fix issue with server validation from dictionary configuration where floating point values can be be accessed as doubles or ints.
* Fixed typo in comment.
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix issue with server validation from dictionary configuration where floating point values can be be accessed as doubles or ints.
* Fixed typo in comment.
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix issue with server validation from dictionary configuration where floating point values can be be accessed as doubles or ints.
* Fixed typo in comment.
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fixed Content tests with slider
* Updated Content tests with true/false
* Fixed due to api helper changes
* Updated tests related to the user has no permission due to an issue
* Added .fixme for Content tests with tiptap
* Bumped version
* Fixed tests for renaming a media
* Added .fixme for the failing tests due to the actual issues
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* fix: consider that overwrites can be strings OR arrays
* chore: formatting
* chore(mock): use correct javascript for mock plugins
* chore: uses intersection helper method to save on code
* fix: should work without requesting extra update to the the extensions controller refreshing the state
* Added option for filtering the content types allowed as children based on the parent node.
* Updated OpenApi.json.
* Apply suggestions from code review
Co-authored-by: Sven Geusens <sge@umbraco.dk>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* feat: adds comparer to keep useful data around when migrating from one property editor ui to another
this is really useful when migrating from tinymce to tiptap for example
* stores values in property to access later
* feat: uses the app-logo component to show the large logo
* feat: rename and publish CSS variables to modify the logo
* feat: sets size of logo to 55px to match login screen
* feat: adds css variables to customize the dimensions of the login logo
* fix: uses `ifDefined` in case logo is not defined
* fix: uses the intrinsic logo path from `when()`
* Fixed up import types
* uses the intrinsic alternative logo path from `when()`
* feat: changes logo based on theme
* feat: forces dark theme on the header logo
* feat: adds blue logomark
* feat: adds logo-alternative path to the backend
* chore: minify logos
* feat: optimises logo sizes
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Add AsyncMigrationBase, update base classes and call async methods
* Restored and obsoleted synchronous execution on IMigrationPlanExecutor.
* Resolved breaking changes.
* Fixed build.
* Further obsoletes.
* Fix build against v16/dev.
* Removed and obsolete code related to post-migrations.
* Removed service registration of unused interface.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Updated playwright config to export the Junit report
* Published the Junit report
* Fixed
* Updated outputDir
* Make one test failed
* Changed npm command
* Fixed outputFile
* Updated folder to export test result
* Make another tests failed
* Updated publish test results job
* Changed testSQLite command
* Updated testRunTitle
* Changed npm command
* Updated testRunTitle
* Reverted
* Fixed comment
* Make some tests failed to test
* Reverted
* wrap in entity detail workspace element
* use element on media type and member type
* add developer console warning
* sync current data with owner content type
* Update content-type-workspace-context-base.ts
* fix lint error
* Copies the "TinyMCE Stylesheets Property Editor UI" to the Templating/Stylesheet package
* Deprecates the "TinyMCE Stylesheets Property Editor UI"
as it may be used in 3rd party extensions.
TinyMCE will be removed in v16, but this deprecation notice in 15.4
will at least notify that the "Umb.PropertyEditorUi.StylesheetPicker"
UI can be used.
* Updates TinyMCE to use the Stylesheet Picker UI
* Prevent Stylesheet folders from being picked
+ UI tweaks
* Updates Stylesheet mock data
* Stylesheet Rule Input - removes Edit button
uses `@open` event for UI consistency with other pickers.
* Updates pangram
* Amending to be "header" instead of "heading"
* Adds "stylesheets" config to Tiptap data-type
* Updates RTE styles for Tiptap
Moves "StarterKit" styles to the RTE Essentials extension registration.
Scopes TinyMCE in "rte-content.css" (for now).
* wrap in entity detail workspace element
* use element on media type and member type
* add developer console warning
* sync current data with owner content type
* Update content-type-workspace-context-base.ts
* fix lint error
* Updated permission name due to UI changes
* Added skip to flaky tests
* Add skip to flaky tests
* Bumped version
* Updated content tests due to test helper changes
* Adds Tiptap Toolbar Menu extension kind
a reusable menu component.
Removes the `unique` property for menu-items.
* Implements Font Family as toolbar menu kind
* Implements Font Size as toolbar menu kind
* Implements Style Select as toolbar menu kind
* Implements Table as toolbar menu kind
* Markup amends
* Mock data RTE content addition
* "TextDirection" manifest correction
* Text Align: made to be toggleable
* restructure block list code a bit for better readability
* improve error message
* block list validation
* validation for RTE Blocks
* rte blocks validation
* fix: shows all languages but only lets user click on available languages
same logic as used in publish modal
* fix: only adds "selected" languages to the value output
otherwise the server will not accept values from languages you do not have access to
* mark private properties
* Streamlined Tiptap extension code for consistency
* Corrected `Umb.Kind.TiptapToolbar.Button` manifest
* Simplified the Tiptap placeholder text
* Media Upload: de-duplicated blobUrl
* Simplified CSS
* Sets rendered Image CSS to 100% width rather than adding `width: 100%` to the `<img>` markup/content.
* no need to re-request cause application refreshes when user changes
* implement promise to retrieve languages
* expose on all mandatory languages, to ensure the right mandatory effect
* no need to re-request cause application refreshes when user changes
* implement promise to retrieve languages
* add back the isAuth observable
* Update app-language.context.ts
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* property value preset type
* add version to comment
* move clone controller
* add JSDocs
* sort getByTypeAndFilter
* builder
* updates for extension type
* unit test
* test weight
* dynamic filter depending on situation
* async test
* combine ui and schema test
* make block creation async
* commit todos
* proper deprecation
* value can be undefined
* toggle preset api
* ability to observe and get all languages
* default config field
* change only to expose all Cultures
* Variant Presets
* fix test
* implementation for blocks
* TODO
* improve comment
* implement for ContentTypes
* always set culture and segment for variant values
* only set values that got a value
* todo notes
* also resolve init when createScaffold
* property-value-preset.Slider
* leaving some concept code for another time
* enable undefined
* revert
* sort properties when creating
* refactor into setCurrentData
* refactor to content data manager
* Keep order from persisted data
* refactor to also cover updateCurrent
* add type safety by making persisted partial as well
* lint corrections
* preset for markdown
* refactor to work with frozen data
* implement for MarkDown
* compare based on object properties not object as a whole
* only update persisted data in regards to what was saved
* fix tests
* 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>
Changed to be a `Mark`, as `Node`s aren't allowed within paragraphs.
Unregistered the `TextStyle` extension,
as it conflicts with the global `style` attribute feature.
* add trash confirm modal
* make referenceRepo optional + adjust styling
* add referenceRepository to media trash action
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add null check
* change to use entity-item-ref element
* register media item ref
* add fallback element
* show 3 references
* wip data mapper concept
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* Added $type to ReferenceResponseModels
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* generate server models
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* add fallback
* use ref list
* use reference items for media
* make mapper name more generic
* make default ref item always readonly
* export types
* temp fake variants array
* add variants array to model
* Update media-references-workspace-info-app.element.ts
* add variants to model
* hardcode fake array
* register media ref item
* update mock data
* dot not allow conditions for data mappers
* add data mapper
* prefix info routes
* prefix all ref routes
* return undefined if there is not edit path
* add types for reference data source + repository
* split trash with relation into its own action
* render descendants with references
* fix length check
* set standalone attribute
* implement for media
* move trash
* wip delete with relation
* move to element
* fix name collision
* require data source identifier
* use management api mapper
* add management api mapper
* fix type errors
* Update index.ts
* align naming
* show references when deleting a document
* Update delete-with-relation-modal.element.ts
* use deleteWithRelation kind for media
* clean up
* localize trash
* fix type
* Update trash-with-relation.action.ts
* override confirm methods in trash and delete actions
* Update index.ts
* export constants
* Limit referenced-by document and media endpoints to references only.
* Update document-reference-table.element.ts
* add methods to get bulk references for documents
* wip bulk trash
* add todo comment
* implement path pattern for media item
* clean up
* more clean up
* sort imports
* member edit path pattern
* clean up
* remove unused variant id
* export extension types
* wip bulk trash with relation
* debounce incoming events
* look up items + notify
* add todo
* temp solution to make it non breaking
* add bulk delete
* better description
* implement methods for are referenced
* change to use bulk trash with relation
* implement delete with relation kind
* deprecation warnings
* move files
* move files
* export const
* use correct kind
* align naming
* upper case Trash
* correct uui-text impl
* add comment about the v2 name
* fix circular depdendencies
* rename const
* split to module
* import global components
* more explicit naming
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* chore: prettier
* fix: loads all extensions everytime but register only new localizations
this ensures that the browser is updated even if you switch back to a previously loaded language
* test: adds a test to check if we can switch between already loaded languages
* Add localization for Approved color/Color Picker Data type
* Apply suggestions from code review
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Ported changes from Umbraco 13 around not throwing exceptions with identity IDs that can't be parsed to an integer or GUID.
* Revert async changes (better done systemically in a separate update).
* Take content settings into account
* Implement test
* Amend error message
* Move new enums to have same values
* Update to check in ServiceBase
* Fix empty recycle bin
* Return proper operation status
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Fix according to feedback
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* add trash confirm modal
* make referenceRepo optional + adjust styling
* add referenceRepository to media trash action
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add null check
* change to use entity-item-ref element
* register media item ref
* add fallback element
* show 3 references
* wip data mapper concept
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* Added $type to ReferenceResponseModels
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* generate server models
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* add fallback
* use ref list
* use reference items for media
* make mapper name more generic
* make default ref item always readonly
* export types
* temp fake variants array
* add variants array to model
* Update media-references-workspace-info-app.element.ts
* add variants to model
* hardcode fake array
* register media ref item
* update mock data
* dot not allow conditions for data mappers
* add data mapper
* prefix info routes
* prefix all ref routes
* return undefined if there is not edit path
* add types for reference data source + repository
* split trash with relation into its own action
* render descendants with references
* fix length check
* set standalone attribute
* implement for media
* move trash
* wip delete with relation
* move to element
* fix name collision
* require data source identifier
* use management api mapper
* add management api mapper
* fix type errors
* Update index.ts
* align naming
* show references when deleting a document
* Update delete-with-relation-modal.element.ts
* use deleteWithRelation kind for media
* clean up
* localize trash
* fix type
* Update trash-with-relation.action.ts
* override confirm methods in trash and delete actions
* Update index.ts
* export constants
* Limit referenced-by document and media endpoints to references only.
* Update document-reference-table.element.ts
* add todo comment
* implement path pattern for media item
* clean up
* more clean up
* sort imports
* member edit path pattern
* clean up
* remove unused variant id
* export extension types
* align naming
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add fallback element
* wip data mapper concept
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* Added $type to ReferenceResponseModels
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* generate server models
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* add fallback
* use ref list
* use reference items for media
* make mapper name more generic
* make default ref item always readonly
* export types
* temp fake variants array
* add variants array to model
* Update media-references-workspace-info-app.element.ts
* add variants to model
* hardcode fake array
* register media ref item
* update mock data
* dot not allow conditions for data mappers
* add data mapper
* prefix info routes
* prefix all ref routes
* return undefined if there is not edit path
* fix name collision
* require data source identifier
* use management api mapper
* add management api mapper
* fix type errors
* Update index.ts
* align naming
* add todo comment
* implement path pattern for media item
* clean up
* more clean up
* sort imports
* member edit path pattern
* clean up
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* build(deps-dev): update storybook from 8.4.7 to 8.5.6
* build(deps): update tiptap from 2.11.2 to 2.11.5
* build(deps-dev): update eslint stuff to latest
* build(deps): update element-internals-polyfill from 1.3.12 to 1.3.13
* build(deps): update marked from 15.0.6 to 15.0.7
* build(deps-dev): update vite from 5.4.14 to 6.1.0
* build(deps-dev): update globals to 15.15.0 (eslint dependency)
* build(deps): update icon libraries to latest
* build(deps-dev): update prettier from 3.4.2 to 3.5.1
* chore: generate consts
* build(deps-dev): update test-related libraries
* feat: copy over code from the tiny base64-js library because it is not exported as esm and has not been updated in 4 years
* build(deps-dev): remove dependency from base64-js
* build(deps-dev): upgrade rollup dependencies
* test: disable tests for tinyce
* build(deps-dev): update @babel/core to 7.26.9
* build(deps): update storybook to latest
* build(deps-dev): update types
* build(deps-dev): update typedoc from 0.27.6 to 0.27.7
* build(deps-dev): update @rollup/plugin-commonjs to latest
* build(deps): import tiny as default and re-export as module and default to make everyone happy (and avoid commonjs pitfalls)
* build: remove dependency on commonjs to build externals
* build(deps-dev): uninstall @rollup/plugin-commonjs as it is no longer needed
* test: reenable tinymce tests
* fix: sets a default label
this mistake was highlighted by the test runner
* test: reenable tinymce tests
* build: ignores autogenerated test file
* build: adds github error logging to icon generator
* build: log as error
* build: adds tests for generate:* scripts
* build: optimises icons with svgo to remove useless things like comments
this also ensures that icons are unchanged when we upgrade icon library packages as they would normally include things like versions as comments in the files
* implement handleSelector configuration option for Sorter Controller
* improve sorting of Content Type Groups
* fix ignorerSelector
* remove button from default ignorer
* block grid type group sorter use handle
* fix content type group sorter style
* handle for Block List Entries
* adjustments for block list and grid
* Tiptap: Adds custom button for Table
Provides a popover with table menu actions.
* Moved Table extension to its own folder
* Extended the Tiptap `Table` extensions
* Amended table toolbar actions to have `focus()`
* Markup amends
* Fix up Tiptap mock data
* [WIP] Table column/row bubble menu
* Tiptap, enabled content check for invalid markup
* [WIP] Tiptap toolbar cascading menu items
* Tiptap: relocated Block extension
from "plugins" folder to "extensions" subfolder.
* Table toolbar, moved the menu to the API
* `UmbTiptapToolbarElementApiBase`, made `execute` concrete
so that it becomes optional in extended classes.
* Adds "default" toolbar element API
which does nothing, but satisfies the extension loader controller.
* `@ts-ignore` the `.showPopover()` and `.hidePopover()` calls
* Updated Tiptap toolbar mock data-type.data
to match TinyMCE toolbar layout.
* Implemented "Cascading Menu Popover" as a standalone component
* Reworked Table toolbar to use cascading menu
* [WIP] Tiptap bubble menu
* Adds Tiptap Cascading Menu Popover
Example with a Style Select menu, with default (hard coded) options,
similar to TinyMCE's unconfigured Style Select menu.
* Small code tidy ups
* Added "Insert Table" component
* Removed Table Bubble Menu feature (temporarily)
as its development isn't ready yet.
* Removed `umb-tiptap-hover-menu` component
as it wasn't been used.
I expect this will become the bubble menu feature.
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add fallback element
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* implement for document item ref
* move logic to item data resolver
* render draft as a tag
* Update document-item-ref.element.ts
* add more helpers to data resolver
* export resolver
* add observables
* use observables in document item ref
* add data resolver to tree item
* add observable state
* use const
* align models
* get icon from document type object
* observe name and state
* update observed value when a new item is set
* update method name
* update method names
* pass model type
* pass context type
* use api prop instead of context
* use api prop instead of context
* fix types
* use addUniquePaths for modal registration
* fix type errors
* Update index.ts
* clean up
* use path pattern
* feat: adds validation checks and saves a version when scheduling content
* chore: adds mock handler for validate
* docs: adds documentation for umbracoPath
* chore: adds deprecation and todos
* feat: adds a method to output a list format
* test: adds test for list format
* feat: rename to list
* feat: adds localization for scheduling
* feat: adds notifications for publishing by action
* test: fixes naming
* feat: adds notification for publishing in bulk
* feat: fixes todo by adding localization
* feat: adds notification when publishing from workspace
---------
Co-authored-by: leekelleher <leekelleher@gmail.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
* Added IsTrashed to document collection model.
* Add IsProtected to document collection response model.
* Rework to do setting of IsProtected within the mapper.
* Remove use of service in map definition.
* Refactor document and media by key endpoints to use presentation factories.
* Set IsProtected property.
* Introduced base presentation factory interface for content.
* chore(mock): adds handling for publishing schedules
* chore: removes unused translation key
* feat: shows a message when a culture has pending changes that are not saved
* feat: optimises pending changes text
* feat(UmbInputDateElement): extends the UUIInputElement rather than using it internally, which allows for more advanced form usage as well as usage of its slots
* feat: adds a Clear button on each date field to more easily clear a schedule
* feat: optimises localization with text from the real button
* Display the remove button if the datetime input has a value
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* feat: adds a method to output a list format
* test: adds test for list format
* feat: adds a method to show a compounded relative time
* test: improves test to be absolute
* feat: allows dates to be strings
* chore: fixes lit warnings
* feat: adds compounded time to document info view
* feat: rename to list
* feat: use the Intl.DurationFormat API to format durations
* test: adds test for string dates
* feat: times should always be absolute
* feat: adds duration to the umb-localize-date element
* feat: adds support to set your own title
* revert changes
* feat: adds localization to calculate duration past or future
* feat: adds danish localization
* Added description for Data Type create option
* Updated "create_folderDescription" in English fallback
as it had previously been updated in English US only.
* US to GB typo correction
* remove collection action state
* clean up
* Update collection-action-button.element.ts
* use ellipsis character
* JSDocs
* TODO note
* add more options
* TODO
* additionalOptions for Collection Actions
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Render scheduled publish and unpublish on content info workspace view.
* Populate previously saved schedule on set schedule dialog.
* Hide workspace button actions that require a saved document when the document is new.
* Convert between local and server time when saving and displaying schedule.
* Fix issues with clearing of previously set schedule.
* Updated OpenApi.json to align with APi amends.
* Added missing constant.
* Fixes following merge.
* Fixed schedule mapping for invariant content.
* Fixed display of publishing/pending changes on info workspace view.
* Removed debug code.
* fix: adds missing localization keys
fixes#18297
* chore: eslint
* fix: render only the selectAll checkbox when more than one language is present
* feat: adds last edited date
* feat: adds 'last published' date
* fix: format input datetimes to datetime-local
* fix: converts the datetime string to an ISO format before sending to the server
this way we ensure the datetime contains the offset
* chore: adds more types to ensure type safety
* chore: use initialized boolean
* fix: makes schedule modal options-based to isolate the `selection` to the actual values
* docs: fix comment
* docs: adds comment
* fix: use helper function to update selection
* revert commit to prevent breaking change
* chore: eslint
* Whitespace tidy-up
* fix: stores a copy of the prevalues to be able to update that internally before finally setting the value from the updated internal values upon submit
* chore: removes unused function
* fix: unifies any pickable filters into one function
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* wip entity-item-ref extension point
* clean up
* add ref list element
* fix styling
* Update document-item-ref.element.ts
* move item repo
* implement for input member
* enable action slot
* add null check
* fix sorting again
* fix sorting again
* use member element
* add draft styling back
* move item repository
* implement for user input
* pass readonly and standalone props
* make editPath a state
* Update member-item-ref.element.ts
* Fix user item ref
* remove open button
* remove unused
* remove unused
* check for section permission
* add fallback element
* add unique to modal route registration
* add unique to modal router
* remove unused id
* Update member-item-ref.element.ts
* append unique
* compare with old value
* only recreate the controller if the entity type changes
* fix console warning
* use addUniquePaths for modal registration
* Added a parameter that by default skips the sqlite acceptance tests
* Added timeout for flaky test
* Removed continue on error
* Created tests that fails to ensure that the update is working as expected
* Fixed tests
* Added tests for document type create option
* Renamed and added tests for document type create options
* Added tests for data type create options
* Added tests for media type create options
* Fixed tests to create media type folder
* Bumped version
* Make all Create option tests run in the pipeline
* Introduce publishNotifications method on IMembershipMemberService.cs
* Fix test
* Add PublishNotificationSaveOptions
* Fix up according to comments
* Use numeric values for flag enum
* Update src/Umbraco.Core/Services/MemberService.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Update src/Umbraco.Core/Services/MemberService.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* adding types and default kind element
* switch to use ?? for code consistency
* add data-mark
* move listener last
* fix tsc
* save action additionalOptions
* hasAdditionalOptions for Save and Publish
* remove unused import
* type arg
* rename to _retrieveWorkspaceContext
* Backport use of thread delay over sleep and handle dispose in FileSystemMainDomLock (from PRs #18119 and #18147)
* Applied suggestion from code review.
* Added small start for clipboard
* Added more tests
* Added tests
* Added more tests
* More tests
* Bumped version
* Updated tests
* Added tests to run
* Bumped version
* Fixes based on comments
* Reverted npm commands
* Updated modal background color
The background color of the authentication modal has been updated to use a CSS variable for better customization. The default value remains the same.
* Update umb-app-auth-modal.element.ts to use less specific css custom property
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Added tests for content with block grid
* Fixed the test for block grid as api helper changes
* Added tests for content with block lists
* Updated tests for content with block grid
* Updated tests for content with block list
* Updated code due to the test helper changes
* Bumped version
* Make all Content tests run in the pipeline
* Reverted
* Make all Content tests run in the pipeline
* Reverted
* Added step to choose element type
* Added more waits
* Fixed failing tests due to UI changes
* Fixed typo
* Fixed typo
* Fixed the failing test
* Bumped version
* Added the tests for move blocks
* Reverted
* Refactored `UmbDefaultPickerSearchResultItemElement`
Abstracted to `UmbPickerSearchResultItemElementBase` for reuse
* Exported types
* Adds element for 'Umb.PickerSearchResultItem.Document'
to handle the icon (and, in future, the URL/route)
* Adds element for 'Umb.PickerSearchResultItem.Member'
to handle the icon.
* Added tests to ensure that the empty link is not accepted in url picker
* Added tests to ensure that the empty link is not accepted in tiptap
* Updated link picker tests due to UX changes
* Cleaned up
* Make Content tests run in the pipeline
* Added tests for unpublished document
* Fixed comments
* Bumped version
* Cleaned up
* Updated test name
* Reverted
* Bumped version
* Add validation to prevent update of a user or member to an invalid username.
* Avoid password manager updates of user name field on user details screen.
* Model, service, test and migration updates to add name and description to webhook.
* Update typed client models.
* Fixed migration.
* Front-end rendering and update of name and description.
* Updated OpenApi.json
* Reworked integration tests to avoid breaking change.
* add name and description to editor header
* remove name and description properties
* render name as first column in the table
* remove focus from url
* remove required from name
* add parentheses to align UX
* add webhook paths
* use edit path const in collection
* add paths for root
* remove unused
* remove unused state
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Fixed the tests for creating media type due to UI changes
* Updated tests related to create data type due to UI changes
* Bumped version
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Translation for user permissions DK and EN
* Added UI Culture variants for EN-US user permissions section
* removed redundant line
* improved consistency for wording, and moved keys under user
* Translated granular permissions label and description EN, US, DK
* Numeric: renamed `#parseInt` function to `#parseNumber`
* Numeric: Changed to use `@change` event
* Number input: `max="Infinity"` was invalid markup
We don't need to always set the `min` and `max` attributes.
Leave the browser to do its thing.
* Decimal: adds input `step` config
* init
* Aligned default values on security settings.
* Added validator for security settings.
* Provide default implementation for get members by email.
* Refactored constructor of MemberController.
* Validate on unique member email only when configured to do so.
* Further code tidy and use of DI in constructor.
* Used new constructor in tests.
* Add unit test for modified behaviour.
* Removed validator for security settings (it's not necessary, I got confused with users and members).
* Spelling.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Translation for user permissions DK and EN
* Added UI Culture variants for EN-US user permissions section
* removed redundant line
* improved consistency for wording, and moved keys under user
* add entity trashed event
* dispatch event when entity is trashed
* remove double event listeners
* export action class
* Update default-tree.context.ts
* wip reload tree when entity is trashed
* move into data folder
* clean up listeners
* move manifest
* wip reload root
* clean up
* add recycle bin tree item
* use for media
* pass entity types through manifest + add recycle bin tree item kind
* remove custom implementation for document recycle bin
* use kind
* rename to supportedEntityTypes
* Update recycle-bin-tree-item.context.ts
* clean up
* Update recycle-bin-tree-item.context.ts
* Update recycle-bin-tree-item.context.ts
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Add CacheNullValues option to RepositoryCachePolicy
* Cache null values in DictionaryByKeyRepository
* Fixed issue with nullable reference.
* Updated logic for caching of null values.
* Update src/Umbraco.Infrastructure/Cache/DefaultRepositoryCachePolicy.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Made the NullValueRepresentation overwritable in a generic manner
* Improve generic NullValueCachePolicyResolver
* Revert Commits and clarify logic with comment
This reverts commit 8befb43792 "Improve generic NullValueCachePolicyResolver"
Also reverts 8adf0a2 - Made the NullValueRepresentation overwritable in a generic manner
And 8adf0a2 - Made the NullValueRepresentation overwritable in a generic manner
* Update src/Umbraco.Infrastructure/Cache/DefaultRepositoryCachePolicy.cs
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Sven Geusens <geusens@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Add a deprecation warning for the getUnique param
* fix import
* add specific version number
* remove block usage
* remove input rich media usage
* explicit version
* deprecate getUnique method in picker context
* remove get unique method
* Set Smidge cachebuster type
* Amend exception and fix typo
* Minor tweak to comment and exception message.
---------
Co-authored-by: Simon Hartfield <simon.hartfield@googlemail.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added tests to verify the media thumbnail
* Added tests to verify the media thumbnail
* Bumped version
* Make the SVG tests run in the pipeline
* Cleaned code
* Updated smokeTest command
* Reverted
* Updated the thumbnail file for audio
* Reverted
* Added deliveries workspace view to the webhook details workspace.
* Front-end linting fixes.
* rename to unique
* update filter value
* make delivery feature folder
* move delivery workspace view for delivery feature folder
* correct details workspace view label and pathname to match name
* remove unused alias
* use singular form to align naming
* remove pagination as the default collection kind already includes this
* show icon
* remove double registration
* add observables for webhook data, add get methods + add jsdocs
* align UX with languages
* remove hardcoded fake name + make url the link
* remove redundant url in table
* render status code as tag
* use tags for enabled/disabled webhook state to align with users
* make the name more explicit
* move webhook root to a feature folder
* export consts
* fix webhook collection pagination
* move menu item manifests into root folder
* move webhook delivery filering responsibility from repo to workspace view
* reorganize
* move workspace
* fix import
* move entity actions
* export delivery consts
* dot not export const
* rename folder
* update name
* make event feature folder
* export consts
* move repository files
* more clean up
* split types
* add deprecation warning for a temp method
* bring back url to deliveries table
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Flow additional identities to new principal
* Add extension to more easily get member identity
* Ensure the member is used instead of the backoffice user in `MemberManager`
* Update snippet
* Fix the comment that I broke
* Update src/Umbraco.Web.Common/Extensions/MemberClaimsPrincipalExtensions.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Corrected rendering of member type icons on create button and picker.
* Removed debug code.
* Member Picker: sets icon
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* feat: uses a blob url over a FileReader to get the temporary file's blob and mimetype
* feat: adds styling to temporary file badge
* use correct styling
* feat: adds uploader ui to track progress of uploaded files
* chore: check for potentially undefined promises
* feat: adds an `AbortSignal` to the xhr requests to allow for the request to be aborted
* feat: adds an `AbortSignal` through the stack to upload a file
* feat: cancel the ongoing request if the user removes the file during an upload
* Code/markup tidy-up
Added "Cancel" button, from @bjarnef's suggestion.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* update the setting for the toggle satet
* update the setting for the toggle satet
* adds a fallback label if no ariaLabel is set in the manifest, using toggleFor
* feat: shows notification when no suitable media type is found
* chore: rearrange imports
* feat: use a forward ref to find the dropzone
* chore: rearrange imports
* chore(mock): send back correct header
* feat: avoid using the context consumer to get a token, but instead mimick the OpenAPI generator
* chore(mock): allow more file types
* chore(mock): create more upload fields
* chore(mock): also look for mediaPicker fields
* chore(mock): improve media mock db
* chore(mock): add missing endpoints
* chore(mock): update media data
* chore(mock): fix aliases for media grid and table
* chore(mock): add urls to media
* chore(mock): adds missing endpoint for imaging
* fix: reverse order of properties to overwrite existing status
* feat: listen to progress updates on upload and update the `progress` property
* feat: adds tracking of upload progress to placeholders
* feat: bind the progress number up on the temporary file badge to indicate upload status
* feat: optimises progress calculation and makes the badge bigger to be able to show the progress in percent
* feat: allow text to be normal
* chore: use correct localization
* feat: shows error status for anything that isn't waiting or complete
* feat: makes `progress` optional
* feat: adds repository+store for temporary file configuration
* chore(mock): adds mock endpoint for temporary file configuration
* feat: set progress for createTemporaryFiles
* feat: allows a `whitespace` option to notifications
* feat: validates uploads before trying to query the server
* feat: adds `formatBytes` function to format numbers
* chore: export all consts
* feat: exports bytes function
* feat: set decimals to default to 2, which works nicely with the Intl numberformat
* feat: use `formatBytes` to format the error message
* chore(mock): set max file size for mock to 1.4 GB
* feat: adds localization
* Update src/Umbraco.Web.UI.Client/src/packages/core/utils/bytes/bytes.function.ts
Co-authored-by: Lee Kelleher <leekelleher@users.noreply.github.com>
* chore: add end character to comment
* feat: binds multiple text string to validation
* chore: fixes event type
* feat: adds new property editor ui for accepted file types
* feat: changes the upload field to use the property editor ui for accepted file types
* adds localization
* Markup/style refactoring/streamlining
* Renamed "Accepted Types" to "Accepted Upload Types"
---------
Co-authored-by: Lee Kelleher <leekelleher@users.noreply.github.com>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Make block editor base classes public
* Update BlockEditorValues.cs
Change to trigger a new build for #16774
* Make healthchecks fully async
* Updated obsolete comments to reference next but one major.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Less parsing, allocation & LINQ when splitting strings
* Added unit test verifying refactoring of GetIdsFromPathReversed.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* adds back the custom icon for the content nodes and give a hover effect to indicate that it is grabable, and applys the choosen color
* Update sort-children-of-modal.element.ts
* switches to use the umb-icon and updates styling
* removes the backoffice host
* Update appsettings.Development.template.json
* Update sort-children-of-modal.element.ts
* Update sort-children-of-modal.element.ts
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Ensure min/max property editor settings are valid before rendering for content editing.
* Display message when URL picker data type configuration is not valid.
* Reverted 'umb-input-multi-url' changes
* Added console warnings for misconfigured min/max values
Also adds `label` property for UUI elements
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.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
* Only fetch single commit
* Hopefully fixes Nerdbank.GitVersioning.GitException: Shallow clone lacks the objects required to calculate version height. Use full clones or clones with a history at least as deep as the last version height resetting change.
* Do not checkout again
* More test pipeline
* Another attempt
* yet another attempt
* more attempts
* Revert "more attempts"
This reverts commit 5694d97ba6.
* Test without building backoffice and login explicitly
* Fix mem leak in integration tests
* Fixes sqlserver lock test
# Conflicts:
# build/azure-pipelines.yml
* feat: shows notification when no suitable media type is found
* chore: rearrange imports
* feat: use a forward ref to find the dropzone
* chore: rearrange imports
* chore(mock): send back correct header
* feat: avoid using the context consumer to get a token, but instead mimick the OpenAPI generator
* chore(mock): allow more file types
* chore(mock): create more upload fields
* chore(mock): also look for mediaPicker fields
* chore(mock): improve media mock db
* chore(mock): add missing endpoints
* chore(mock): update media data
* chore(mock): fix aliases for media grid and table
* chore(mock): add urls to media
* chore(mock): adds missing endpoint for imaging
* fix: reverse order of properties to overwrite existing status
* feat: listen to progress updates on upload and update the `progress` property
* feat: adds tracking of upload progress to placeholders
* feat: bind the progress number up on the temporary file badge to indicate upload status
* feat: optimises progress calculation and makes the badge bigger to be able to show the progress in percent
* feat: allow text to be normal
* chore: use correct localization
* feat: shows error status for anything that isn't waiting or complete
* feat: makes `progress` optional
* feat: adds repository+store for temporary file configuration
* chore(mock): adds mock endpoint for temporary file configuration
* feat: set progress for createTemporaryFiles
* feat: allows a `whitespace` option to notifications
* feat: validates uploads before trying to query the server
* feat: adds `formatBytes` function to format numbers
* chore: export all consts
* feat: exports bytes function
* feat: set decimals to default to 2, which works nicely with the Intl numberformat
* feat: use `formatBytes` to format the error message
* chore(mock): set max file size for mock to 1.4 GB
* feat: adds localization
* Make URL overview align with the old routing
This means including custom url providers, other URLS, etc.
* Move implementation to its own provider
* Handle could not get url
* Migrate intergration tests to new implementation
* feat: shows notification when no suitable media type is found
* chore: rearrange imports
* feat: use a forward ref to find the dropzone
* chore: rearrange imports
* chore(mock): send back correct header
* feat: avoid using the context consumer to get a token, but instead mimick the OpenAPI generator
* chore(mock): allow more file types
* chore(mock): create more upload fields
* chore(mock): also look for mediaPicker fields
* chore(mock): improve media mock db
* chore(mock): add missing endpoints
* chore(mock): update media data
* chore(mock): fix aliases for media grid and table
* chore(mock): add urls to media
* chore(mock): adds missing endpoint for imaging
* fix: reverse order of properties to overwrite existing status
* feat: listen to progress updates on upload and update the `progress` property
* feat: adds tracking of upload progress to placeholders
* feat: bind the progress number up on the temporary file badge to indicate upload status
* feat: optimises progress calculation and makes the badge bigger to be able to show the progress in percent
* feat: allow text to be normal
* chore: use correct localization
* feat: shows error status for anything that isn't waiting or complete
* feat: makes `progress` optional
* split manifest file
* use const
* use const
* use const
* require permission to create or update to render save action
* require permission to update to render "save and preview"
* require permission to update + publish to render "save and publish"
* keep button as it is extendable
* keep buttons as they are extendable
* set readonly state based on user permission
* render readonly tag for invariant documents
* remove double array
* return permitted state in callback
* disable save button if all variants are read only
* rename private method
* split check on create vs update
* clear state when resetting the state
* add null check
* remove unused
* Update document-user-permission.condition.ts
* change translation to browse
* remove create permission
* add option to interface
* pass config to picker
* add option to interface
* force type
* add request args to type
* pass allowed content types as request args
* add comments
* allow for passing type
* more type safety
* use correct types
* use correct types
* add js docs
* remove debugger + map to only pass id to server
* add js docs
* align naming
* add null check
* align types
* implement allowedContentTypes for member search
* fix imports
* add types for media search
* add and use const
* align picker interfaces
* align models
* add entity type
* filter for null value
* explicit naming
* rename field
* use query params
* Implement content type scoped search in item search controllers
* Fix bad naming
* generate server models
* wire up backend
* generate server models
* add selectable filter to member picker
* Update member-picker-modal.element.ts
* Fix indexed search for specific member and media types
* export consts
---------
Co-authored-by: kjac <kja@umbraco.dk>
* feat: allows MaxFileSize to be specified as 64-bit rather than 32-bit to be able to accept larger files
the underlying kestrel architecture already accepts a `long` in ConfigureKestrelServerOptions.cs
* chore: removes unused configuration option
* chore: generate OpenApi.json
* chore(mock): adds endpoint handler for allowed media types
* feat: adds new event `UmbDropzoneSubmittedEvent`
* fix: do not await unnecessarily
* fix: simplify error checking
* fix: only proceed if array contains elements
* feat: adds support to render an error state
* fix: react to error state on temporary file badges
* fix: cancel events and simplify error check and react to any status changes
* feat: adds new tryXhrRequest function
* fix: use tryXhrRequest to upload all temporary files
* fix: use error types from hey-api as a temporary solution
* fix: changes limit from int32 to long (64-bit) to allow larger files to be uploaded
* fix: set default baseURL
* fix: use same unique
* fix: do not overwrite status
* fix: adds progress callback for tinymce
* generate openapi.json
* Revert "generate openapi.json"
This reverts commit 3c723e0155.
* Revert "fix: changes limit from int32 to long (64-bit) to allow larger files to be uploaded"
This reverts commit c883a45508.
* chore: generate OpenApi.json
* Adds "HTML Global Attributes" Tiptap extension
This is to add `class`, `id` and `data-*` attributes
to any markup within Tiptap contents.
* Adds "Span" element Tiptap extension
to support generic markup modifications.
* Adds "Div" element Tiptap extension
to support generic markup modifications.
Also modifies "umbEmbeddedMedia" to check explicitly
for the `umb-embed-holder` class name. This is to differentiate
from the generic `div` tag.
* Adds "Rich Text Essentials" Tiptap extension
Previously this was a faux extension, but it is now real.
This extension adds the core extensions for Umbraco RTE support.
e.g. StarterKit, et al, and the new global attributes and generic elements.
* Reverts `elementName` constant
* updated the link picker modal and the property editors using it.
* updated the last language
* some minor updates to the code so that it uses the correct actions
* Minor change in the language key that is being used.
* use camel case
* use "add" and "update" without "link"
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updated the dialog label User - Assign Access - Media Start nodes
* Minor change to the modal headline
* update based on review.
* updated the languages based on review
* updated based on review
* Small update based on review on PR
* use generic choose media for the media dialog
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Re-add authorization
* Add test plumbing
* Add test helper
* Add happy path test
* Remove usage of negation
* Minor DRYup of test code.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Allowed retrieval of current user configuration when accessing user profile as a non-admin user.
* Update src/Umbraco.Web.UI.Client/src/packages/user/user/repository/config/current-user-config.repository.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Allowed retrieval of current user configuration when accessing user profile as a non-admin user.
* Update src/Umbraco.Web.UI.Client/src/packages/user/user/repository/config/current-user-config.repository.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Start removing scope references
* Update src/Umbraco.Infrastructure/Examine/UmbracoIndexConfig.cs
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Make test-only ctor internal
* Fix tests
* Dont treat warnings as errors
* Disable package validation, as this is a major
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Validates and prevents save when providing a number outside of the configured range.
* Refactored to make use of `UmbFormControlMixin`
This flags the property layout container to be invalid (with prompt).
Adds localization keys.
* Corrected localization parameter order
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* set data path
* use prop setting
* move prop
* type
* clean up
* validation messages test
* remove import
* remove import
* refactor property context proxy to property actions scope only
* clean up
* remove proxy
* find block data
* clean up block clipboard entry data
* check if areas exisists
* test with empty area
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Fix various routing and preview issues for the Delivery API in V15
* Fix breaking change in ctor
* Fix ambigious constructors
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fix various routing and preview issues for the Delivery API in V15
* Fix breaking change in ctor
* Fix ambigious constructors
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* fix: adds placeholder text to the main entity name field
* fix: use forward ref to execute the `.focus()` method on the uui input when it gets rendered
* Fixed up `type` imports
Removed erogenous closing `</div>` + prettify formatting.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Add TimedScope
* Use TimedScope in login endpoint
* Use seperate default duration and only calculate average of actual successful responses
* Only return detailed error responses if credentials are valid
* Cancel timed scope when credentials are valid
* Add UserDefaultFailedLoginDuration and UserMinimumFailedLoginDuration settings
* Add TimedScope
* Use TimedScope in login endpoint
* Use seperate default duration and only calculate average of actual successful responses
* Only return detailed error responses if credentials are valid
* Cancel timed scope when credentials are valid
* Add UserDefaultFailedLoginDuration and UserMinimumFailedLoginDuration settings
* Escape HTML in strings provided as arguments for client-side localization.
* Used HTML sanitizer from dependency.
* Moved sanitization to controller.
* Fixed path to dependency.
* fix: move constants to their own respective files to avoid circular dependencies
* fix: import through import map
* fix: import `sanitizeHTML` from importmap
* chore: consts
* feat: add more ops/sec to `term` function
* fix: check specifically for `typeof 'undefined'` before determining if an arg is valid or not
in case where the sanitizer removes everything so the arg is just an empty string (`""`) we still want it to replace the token, i.e. with the empty string
* test: add tests to verify localization controller xss
* chore: try to improve ops/sec and readability of the `term` function
* test: add more tests for the sanitizer
* fix(dictionary workspace): rely on localization sanitization
* feat: adds new function to escape html entities
* fix: use `escapeHTML` to escape/encode only HTML entities
* test: update test to reflect correct escape
* test: add tests for sanitizeHTML and escapeHTML
* fix: update function to not escape all quotes as people may want to keep those
* chore: formatting
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Remove old values from checkboxlist
* Add validator for MultipleValueEditor
* chore: adds mocked "published" handler
* chore(mock): adds multiple dropdown
* chore(mock): adds dropdown multiple to 'all properties'
* adds localization
* feat: adds support to show invalid/legacy options
* feat: show invalid/legacy options to let the user decide what to do
* Add validator for radio buttons
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Creates IContentTypeFilterService with a "no-op" implementation for filtering the content types available for selection at root and as children.
* Rework to collection so packages and implementors can stack filters if they need to.
* fix: compare current version with the stored version
this ensures that if you come from an older version of Umbraco, we re-verify the upgrade-check to remove the message
* chore: update version in mock handler
* set "new version" button to a positive color
* feat: use modal data to pass on info to new-version modal element
* Amended `type` import
* feat: adds userGroupIds to the current user model
* feat: generate new types
* feat: adds function to check for two array intersections
* feat: maps up userGroupIds
* feat: adds new condition to verify user's groups
* chore: add mocked data
* chore: add generated consts
* change structure of config to match other conditions
match, oneOf, allOf, noneOf
* rename condition from "group" to "groupId"
* feat: inherit from base `UserPresentationBase` to have a shared foundation across user models
* wip clipboard context + tests
* clean up property action module + register copy action
* split manifests
* add clipboard module
* import type
* export type
* mark all methods async
* scaffold copy + paste property actions
* scaffold workspace, collection, repo + data sources
* remove references to language
* register detail manifests
* call repo when creating
* load clipboard collection data
* remove debugger
* register clipboard item picker modal
* return value from picker
* accept native error
* clean up data source
* add tests for error states
* make clipboard local storage manager
* add clip entry entity type
* create unique in scaffold
* add clipboard entry item data
* align naming
* move around
* name alignment
* fix imports
* fix missing entityType
* clean up
* use picker input context
* remove unused context
* Update clipboard.context.ts
* map to item model
* poc paste property action
* register copy/paste as kinds
* lint fix
* add tests
* rename test
* add repository tests
* register delete clipboard action + enable action dropdown outside of context menu
* remove notifcation
* export entity type
* temp use repo instead of context
* delete unused copy property action
* make data source non breaking
* Update vite.config.ts
* add icons for clipboard copy, paste + entry
* remove unused
* return if there is no property value
* add kind interfaces
* pass entry type for copy and paste
* register clipboard for block list
* implement filter on entry type
* delete unused context
* remove references
* rename data to value and don't force an array
* make icons and single value
* allow to add create and update dates for clipboard entries
* use clipboard icon
* add create and update dates
* export constants
* don't set as an array
* reload picker content
* add copy to clipboard button to block list entry
* make picker element
* allow to pick multiple
* remove generic block list clipboard actions
* Revert "remove generic block list clipboard actions"
This reverts commit 6ea65a02ce.
* add get methods
* wip construct block clipboard entry value
* add method to get exposes + add jsdocs
* add expose
* remove todo + add jsdocs
* move clipboard out of core package
* add package files
* load package again
* render entry icon
* render correct icon
* remove clipboard from core vite.config
* Update package-lock.json
* wip copy/paste resolvers
* allow multiple accepted entry types
* move logic to resolvers
* transforming clipboard block value to fit block list
* wip copy/paste resolvers
* clean up
* remove unused
* fix missing exports
* fix tests
* return clipboard entry unique from modal
* Update block-list-entries.context.ts
* clipboard feature: clipboard property value cloner (#17824)
* restructure of property package
* content data merge controller tests
* deprecate meta from propertyValueResolver
* temp work
* temp
* poc
* rename to cloner
* stached block value cloner work
* block list implementation
* correct property value implementation
* RTE Block Property Value Cloner
* Block Grid Value Cloner
* update with comments
* try out cloner
* wip translators
* Revert "delete unused context"
This reverts commit ec31ae55aa.
* move translator + cloner logic to context
* clean up
* implement read from clipboard in block list property editor
* remove debugger
* values array
* handle paste
* Update types.ts
* move files
* Update clipboard-local-storage.manager.ts
* set both create and update date when creating a clipboard entry
* align naming
* handle paste
* clean up + wip block grid translators
* updates types
* add grid block copy translator
* only allow paste translator to handle a single value
* align copy and paste translators
* remove debugger
* move to folders
* add block const
* rename
* add tests
* Update index.ts
* use correct type
* add tests for UmbBlockListToBlockClipboardCopyTranslator
* fix tests
* add translator tests
* add tests
* organize
* organize
* clean up translator tests
* align naming
* remove unused button
* only render copy property action if property has a value
* use constants
* copy single grid block
* get block grid property value from clipboard entry
* add clear method to extension registry + add js docs
* Update index.ts
* add tests for copy value resolver
* add icon for clipboard
* use clipboard icon in modal
* add tests
* remove unused setting
* fix log
* only create array once
* filter for supported paste translators
* use write method instead of duplicating the code
* add condition config type
* use config type
* Update manifests.ts
* add support for multi picker
* move multiple look up logic to context
* add js docs
* add js docs
* remove unused
* remove unused
* remove unused
* implement paste translator filtering for block catalogue modal
* temp color translator
* adding a UmbPropertyValueDataPotentiallyWithEditorAlias
* simplify observer
* append user unique to local storage key
* remove temp color picker clipboard implementations
* more explicit extension type name
* more renaming
* type specifications
* fix test and missing type
* more types for test
* renaming of paste translators
* rename folder
* rename value resolvers
* correct variable name
* wip tests for clipboard context
* clean up tests correctly
* add more tests for clipboard context
* Update clipboard.context.test.ts
* use after each for clean up
* fix test that times out
* correct name
* optimize
* remove webkit
* newest first when picking
* use fingerprint local storage key to obfuscate user id
* rename method
* use const
* set content max length
* return object including the selection uniques
* show confirm dialog before pasting value
* only show confirm dialog if there is a value
* Feature: clipboard block insert (#17935)
* insert methods
* fix originData
* move logic to base class
* progress on Grid and RTE
* correct for Block Grid paste implementation
* update async across
* remove expose from block clipboard entry model
* remove expose from grid block clipboard entry
* remove todo
* wip move value expand responsibility
* wip split clipboard context
* experiment with an extendable property context
* create propertyContexts + proxy events
* rename methods
* move proxy to context + update grid copy logic
* split tests
* remove unused
* add property context extension type
* fix tests
* fix tests
* reorganize
* Update clipboard.property-context.ts
* use context
* register property context clipboard kind
* register for block grid
* remove redundant code
* rename to replace
* Revert "rename to replace"
This reverts commit eb0535edcf.
* rename prop
* rename label
* improve block clean-up abilities
* Update rte-base.element.ts
* make local get of clipboard context
* add asyncFilter option to the type
* add is compatible method to the interface
* support asyncFilter in picker
* add compatability check for block list
* more explicit name
* wip implementation of filter
* add compatability checks
* add temp types
* add clipboard filtering for grid and list
* lint corrections
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Link to content type and/or template from content/media/member info workspace view only if current user has access to sections.
* Fixed HTML
* add const for condition alias
* export const
* return permitted value in onChange callback
* use condition to check for access
* implement across content
* replace strings with consts
* replace strings with const
* remove attr with the ifDefined directive
* allow to pass in callback type
* Pass callback type
* Update index.ts
* add tests for UmbSectionUserPermissionCondition
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updated pipeline to publish acceptance test artifacts for each os. and to run tests from npm command
* Adjustment to the targetPath
* Publish all in results folder
* Moved folder
* Reverted changes
* Added all results in test folder
* Updated naming
* Used semicolon
* Additional semicolons
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* feat: adds script to run madge in a CI environment
* build: adds check for circular dependencies
* build: move actions higher up
* build: only print annotation once
* build: make script not fail CI until dependencies are fixed
* chore: add validation to mocked endpoints
* feat: create new base context `UmbEntityNamedDetailWorkspaceContextBase` to use for named entities
* feat: extend from `UmbEntityNamedDetailWorkspaceContextBase` to be able to save some code
* feat: allow to pass on the generic parameters
* feat: add type-safety property
* chore: remove duplicate code by extending from correct interface
* chore: fix type casting
* feat: make class abstract and add explanatory comment
* feat: Extend from UmbEntityNamedDetailWorkspaceContextBase to ensure all workspaces with a name follows the same interface
this allows the workspace to act as a UmbNamableWorkspace
* feat: adds a few needed properties to umb-workspace-header-name-editable
* fix: use <umb-workspace-header-name-editable> for partial views
* fix: bind to validation for templates
* chore: remove unused css
* fix(script editor): use `<umb-workspace-header-name-editable />` for the name field
* fix(stylesheet editor): use `<umb-workspace-header-name-editable />` for the name field
* chore: add missing mock endpoint for `tree/data-type/ancestors`
* chore: adds mocks for relations and relation-types
* chore: remove unused handlers
* feat: adds **readonly** to `<umb-input-with-alias />`
* fix: use `<umb-input-with-alias />` for relation type workspace editor
* chore: adds missing handler for package configuration (marketplace url)
* fix(packages): adds validation and data-marks to the package section
* feat: adds a validation context for all entity detail workspaces
* chore: remove duplicated validation contexts as that is now being set by their base class
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* chore: add validation to mocked endpoints
* feat: create new base context `UmbEntityNamedDetailWorkspaceContextBase` to use for named entities
* feat: extend from `UmbEntityNamedDetailWorkspaceContextBase` to be able to save some code
* feat: allow to pass on the generic parameters
* feat: add type-safety property
* chore: remove duplicate code by extending from correct interface
* chore: fix type casting
* feat: make class abstract and add explanatory comment
* method to extract json query properties
* fix issue when validation context has been destroyed
* method to remove and get validation messages
* param key
* do not assign a controller alias to this observation
* clean up delete method
* clean up validation messages
* remove unused imports
* Don't save invalid media
* Revert "Don't save invalid media"
This reverts commit c4b6acf542.
* Still allow save, but show validation error, not popup error
* Add clarifying comment
* Don't add a blanket rule to allow synchronous IO, should not be necessary for the new management API
* Add obsolete warning
* Catch errors while adding global rule to allow synchronous IO, which fails on non-windows machines
* Some updates based on PR feedback
* Initial commit of changes
* final touches on styling
* Refactored to observe and resolve the document/media node names
---------
Co-authored-by: DESKTOP-16T01G5\Umbraco <obk@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Initial stab at how this could look
* Authorization PoC wip
* Add connection manager
* Add DI to its own class
* Use enum instead of string
* Use groups
* Refactor group management into its own service
* Update a users groups when it's saved
* Add saved events
* Wire up deleted notifications
* Ensure update date and create date is the same
* Cleanup
* Minor cleanup
* Remove unusued usings
* Move route to constant
* Add docstrings to server event router
* Fix and suppress warnings
* Refactor to authorizer pattern
* Update EventType
* Remove unused enums
* Add trashed events
* Notify current user that they've been updated
* Add broadcast
We don't need it, but seems like a thing that a server event router should be able to do.
* Add ServerEventRouterTests
* Add ServerEventUserManagerTests
* Use TimeProvider
* Remove principal null check
* Don't assign event type
* Minor cleanup
* Rename AuthorizedEventSources
* Change permission for relations
* Exctract event authorization into its own service
* Add some tests
* Update name
* Add forgotten file
* Rmember to add to DI
* Render all URLs in document workspace info tab and ensure protocol-less links can be used to access the intended URL.
* Removed unused import.
* Removed scheme from resolved URL.
* Reload children of destination after duplicate of content.
* Revert changes to generic duplicate to action.
* Don't assume entity type of duplicated item is the same as the destination. Instead treat as "document" unless destination unique is null, when it will be "document-root".
* add todo back
* remove console log
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Don't allow create when there is validation errors
* Fix tests
* Add tests
* Fix last test
* Fix more tests
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Refactor to use IWebhostEnvironment for wwwroot files.
* Obsolete ctor
* Add ActivatorUtiiliesConstructor
* Refactor logic to include folders
* Fix so we can see files in wwwroot/App_Plugins
* Cosmetic: Use invariant comparison for the "umbraco" folder".
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Refactor to use IWebhostEnvironment for wwwroot files.
* Obsolete ctor
* Add ActivatorUtiiliesConstructor
* Refactor logic to include folders
* Fix so we can see files in wwwroot/App_Plugins
* Cosmetic: Use invariant comparison for the "umbraco" folder".
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Display variant selection on unpublish only if the document is variant.
* Allow for publish and unpublish of variant and invariant content.
* Added integration tests for amends to ContentPublishingService.
* Fixed assert.
* Fixed assert and used consistent language codes.
* Further integration tests.
* Added create date to document and media children endpoints.
* Sort by name or create date for documents and media.
* Fix build issues.
* Only render column headers for sorting if all pages of children are loaded.
* Add indicator and debounce sorting by column headers.
* Expose schedule date for on document get endpoint
* typo fix
* stupid stuff
* Enable content scheduling features in the publishing service
* Replace obsoleted non async calls
* Add content scheduling test
* Publush and schedule combination test
* More invariantCulture notation allignment and more tests
* Link up api with updated document scheduling
* More invariant culture notation allignment
* Fix breaking change
* Return expected status codes.
* Fix constructor
* Forward Default implementation to actual core implementation
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Forward default implementation to core implementation
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Make content with scheduling retrieval scope safe
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Use data type configuration to determine default value for empty toggle property values.
* Added/updated unit tests.
* Fixed failing integration tests.
* Applied similar default value display for the slider property editor and aligned implementation of true/false with this.
* Fixed unit tests.
* Removed "duplicate" JsonPropertyName attributes and added a custom TypeInfoResolver for data type configuration so we can re-use the existing ConfigurationField attributes.
* Minor cleanup
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Don't allow create when there is validation errors
* Fix tests
* Add tests
* Fix last test
* Fix more tests
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* feat: include the option whether a login provider has disabled local login
* feat: include information whether change password or two factor is allowed
* generate new OpenApi.json
* generate new ts client
* feat: request the server configuration and include in the UmbAppContext
* fix: for login screen, check that a provider did not disable the local login
* fix: use UmbAppContext to fetch the version check period
* chore: remove unused method
* revert current user configuration changes
* generate new ts client
* fix: add condition for "allow password change" on the change password button
* fix: create new IsDefaultKind condition to separate change password logic
* fix: update "allow change password" and "allow mfa" conditions to take the user configuration into consideration
* chore: export consts
* remove falsely named attribute that happens to not be useful anyway
* chore: revamp logic for early return to make it more readable
* convert `isInitialized` to a Promise as it is only being resolved once anyway, which then additionally saves a call to `this.observe` in the conditions
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Add notification handler
* Add IsContentPublished that bypasses caching
* Add clarifying comment
* Refactor, to never hit the db
* Remove old comment
* Don't add warnings if disabled
* Dedicated configuration option to suppress unroutable content warnings
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Ensure sort order is used when rendering the list of allowed documents that can be created under an item in the content section.
* Fixed issue preventing sorting of the allowed content types.
* Refactors `umb-ref-item` to inherit from `uui-ref-node`
To extend, rather than reinvent the wheel.
* Updates components using `umb-ref-item` with `select-only` attribute
* Updates `umb-entity-create-option-action-list-modal` to use `umb-ref-item`
instead of `uui-ref-node`, so we can use `umb-icon`
(with color support) and UI consistency.
* Adds `headline` property for Create Option modal
* Changes 'Umb.EntityAction.DocumentType.Create' to use `kind: 'create'`
Deprecates `umb-document-type-create-options-modal` and token.
* Adds `entityCreateOptionAction` extensions for Document Types
- Document Type (default)
- Document Type with Template
- Element Type
- Folder
* Tweaks Create Options modal to submit upon selection
* corrections
* remove headline option
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* rename arg for better readin
* use nothing
* parse args and implement single mode
* make single mode work with conditions
* implement UmbExtensionsElementAndApiInitializer in workspace element
* move workspace initialization to workspace element
* do not parse host, as it already happens
* implement initializer single mode for extension slot elements
* Add a way to configure IUmbracobuilder on a per testcase basis
* New logic for invariantVariantMerging
* bugfix
* Undo formatting changes
* Undo more automatic formatting
* Last automatic formatting correction
* Cleanup ConfigureBuilderAttribute
* Made propertyEditor tests internal
* Added tests for content with tiptap - not done
* Updated tests - not done
* Addes tests for create content with non-empty RTE tiptap
* Added Content tests for tiptap
* Cleaned up
* Updated tests for Content with tiptap due to test helper changes
* Make all the Content tests run in the pipeline
* Fixed comment
* Reverted
* Fix ConvertLocalLinks migration and add a new migration in case the old one has already run
* RebuildCache
* Clear cache means clear ALL caches
* Fix Block Markup recursion
* Fix Unittest mock constructor
* implement validation for media and prepare for member
* remove import
* port code from backoffice repo
* move repo into publishing module
* port get published methods
* cleanup
* wip render state
* align state UI
* post merge clean up
* move publish modal
* move schedule modal
* move unpublish modal
* move publish action and bulk action
* move unpublish action + bulk action
* lint fix
* Update document-workspace.context.ts
* wip move publishing methods to publishing context
* move publish with descendants
* fix more references
* Update document-publishing.workspace-context.ts
* export entity action
* add return type
* temp internal methods
* use repository response type
* expose methods for other contexts to use
* use public methods
* call publishing context methods
* fix import
* move manager into folder
* organise in folders
* add get method to get variants with changes
* preselect variants with pending changes
* observe data changes
* render pending changes client state
* observe unique
* Update document-publishing.server.data-source.ts
* use correct key
* clean up
* expose persisted data
* rename arg
* use persisted data instead of current
* add reload method
* reload data after publish
* remove headline
* handle all publish actions the same
* reset state as the first thing when creating + loading
* add method to get variants
* only load published if document has a published variant
* remove variants from observer
* add public method to get the changed variants
* align preselection with current logic
* add deprecation util
* add method deprecation warnings
* remove unused publish method
* move publishing workspace actions into publishing module
* use publishing context
* clean up
* add tests for published pending changes manager
* handle server the same way
* process pending changes when persisted data changes
* remove buggy updateDate
* remove unused
* lint fix
* add publish method back to avoid a breaking change
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* always render the links we get from the server
* render information about links with no url
* pass correct state value
* Update document-workspace-view-info-links.element.ts
* reuse empty link, culture markup
* remove state from urls
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Handle empty permissions
* Add tests
* Add a few more asserts to the tests
* Move dependency injection to test itself
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Property level versioning for the Delivery API using a custom System.Text.Json resolver
* Adding a converter base class that custom converters can implement
* Revert resolver
* Use IHttpContextAccessor for the API version
* Fix attribute and checks in ShouldIncludeProperty
* Fix enumeration
* Fix comment
* Unit tests
* Refactoring
* Remove Assert.Multiple where no needed
* feat: add two launch tasks to start a vite server and attach to an existing vite server
* build(deps-dev): install and use cross-env for vite commands
* build: add mocked launch task
* build: add prompt to check if msw should be on or off
* build: defaults
* build: rename launch task
* build: add compound to start backend and frontend at the same time
* implement validation for media and prepare for member
* remove import
* use repository response type
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updated tests for content with media picker
* Fixed tests for content with multi url picker
* Skip tests for update action permission as it is removed now
* Fixed tests for list view media
* Fixed notification
* Updated method name due to api helper changes
* Fixed tests for welcome
* Fixed test for deleting a tab in a document type
* Updated expectation test result due to UI changes
* Updated create stylesheet method
* Fixed tests due to the action for selecting media item changes
* Bumped version
* Fixed expected result
* Fixed due to test helper changes
* Added more waits
* Added test for rendering content with member picker value
* Added tests for rendering content with multiple media picker
* Added tests for rendering content with multi url picker
* Bumped version
* Updated tests for member picker
* Make all rendering content tests run in the pipeline
* Bumped version
* Fixed indentation
* Added clean for media
* Reverted
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Added Content tests with Approved Color
* Bumped version of test helper
* Make Content tests run in the pipeline
* Using custom datatype builder instead of changing the default approved color data type
* Updated variables
* Fixed comment
* Make all Content tests run in the pipeline
* Reverted
* 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>
* Created explicit endpoints returning the login image instead of leaking the configuration. Thereby some hardcoded values have been changed, but the url will now be the same every time.
* Remove magic concatenation for action lookup
* remove unused backoffice asset (login.jpg)
* remove unused umbraco logo assets
* add manifest handlers
* add mock handlers for the `security/back-office/graphics` endpoints to the backoffice
* add mock handlers for the `security/back-office/graphics` endpoints to the login screen
* chore: update msw service worker
* feat: make static assets available for consumption without copying them from the login project
* update consts with new location for static assets
* feat: prefix login assets with `login-`
* remove unused asset `logo.png`
* feat: introduce a `/back-office/graphics/logo` endpoint to serve the logo "mark" used throughout all applications
* feat: use the alternative logo for disabled javascript warning
* feat: use the umbraco logo on the NoNodes.cshtml page
* Do not expose the new readme in the package
* feat: add logo.svg
* feat: add `umb-app-logo` element to display the backoffice logo including server url and appropriate tags
* feat: use the new `umb-app-logo` element relevant places and make sure to add the serverUrl in front of other graphics
* feat: move logic to connectedCallback to prevent error from non-existing element
* revert usage of HideBackOfficeLogo
* feat: add alt text to logos
* feat: add obsolete message and a hint to use BackOfficeLogo insted
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Added tests for Tiptap data type
* Removed tests for adding a toolbar item as the drag and drop is not working
* Fixed the variable name
* Added tests for TinyMCE data type
* Added tests for RTE data type
* Updated tests for delete toolbar row in Tiptap
* Updated tests for rich text editor data type
* Updated tests for tiny MCE data type
* Updated tests for content with tiny MCE rich text editor
* Renamed tests as there are 2 types of rich text editor
* Bumped version
* Make all data type tests in the pipeline
* Updated tests for Tiptap and TinyMCE due to api helper changes
* Fixed comments
* Update TinyMCE.spec.ts
Removed line
* Reverted
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Update nuget packages
* Cherry pick fixes from v15
* Fixed: Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items
* rollback update in tool
* make args protected + type generic
* add rename event
* get new name and unique from modal
* dispatch event when file is renamed
* get unique from entity context
* poc redirect after rename
* move logic to controller
* dont render code editor if content is undefined
* remove unused styling
* set unique after create
* use replace state
* set additionalOptions for rename action
* Update workspace-redirect.controller.ts
* add focus to name input
* add rename redirect controller
* clean up
* split render methods
* Update script-workspace.context.ts
* implement EntityDetailWorkspaceBase for stylesheets
* remove unused
* don't render code editor if there is no content
* add rename redirect controller
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Only fetch single commit
* Hopefully fixes Nerdbank.GitVersioning.GitException: Shallow clone lacks the objects required to calculate version height. Use full clones or clones with a history at least as deep as the last version height resetting change.
* Do not checkout again
* More test pipeline
* Another attempt
* yet another attempt
* more attempts
* Revert "more attempts"
This reverts commit 5694d97ba6.
* Test without building backoffice and login explicitly
* Fix mem leak in integration tests
* Fixes sqlserver lock test
* Added tests for rendering content with upload file
* Bumped version
* Make all tests for rendering content run in the pipeline
* Fixed command
* Reverted
* Implement GetContentTypeAliasForType which will replace the need for .OfType<T>();
* Refactor EnumerateAncestorsOrSelfInternal to be generic and extracting checks
* Add types to implementation referencing the old non-generic method
* Using
* Replace Ancestors.OfType<T> implementation
* Refactor EnumerateDescendantsOrSelfInternal to be generic
* Fixing references by adding IPublishedContent type param
* Cleanup + removing unused method
* Replace Descendants.OfType<T> implementation
* Remove unnecessary enumeration
* Updating Children.OfType<T>() implementation
* Adding correct types
* Fixing SiblingsAndSelf implementation
* Refactor TryYieldSelfOfType
* Remove nested checks
* Add comments and retrieval of content type alias from T in the private helper methods
* Simplify implementation based on review comments
* Add case when you get all root keys without a type
* Refactoring
* Renaming + review comments
* Rewrite SiblingsAndSelf
---------
Co-authored-by: kjac <kja@umbraco.dk>
* fix: wait a frame before calculating events, which allows the debug callback to "fill up" the instances map
* Revert "fix: wait a frame before calculating events, which allows the debug callback to "fill up" the instances map"
This reverts commit a8a2bdbb05.
* fix: assign the inner object (`event.instances`) directly to a state and perform the "massaging" only when it updates
this ensures that any live changes to the inner object are reflected in the UI
* Revert #14234
* Make the boot failure message more descriptive when unable to connect to DB
* Update src/Umbraco.Infrastructure/Runtime/RuntimeState.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Revert changes
* Obsolete InstallMissingDatabase from V16
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Dropzone, upload complete callback with processed file array
* Media card: cosmetic fix for image border-radius
The image's square corners were poking out.
* Validate email for member models
* Add null check or more test cases
* return invalid when not a valid email
* Cleanup
* remove private method in favor of extension
* Remove non used, using statement
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
(cherry picked from commit 6b0f8e7b7c)
* Distinguish between default value and initial zero
* Update special value comment documentation
* Redid solution with dirty/new entity tracking
* rework copy branch sortorder fix
* Change == false to is false
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Add missing backoffice languages as properties etc. are translated via translation section (e.g. with "#Backoffice Settings"). At the moment the swiss languages always need to be added via the umbraco/Config folder.
* Added tests for userGroup
* Clean up
* Updated userGroup tests
* Updated tests
* Updated tests
* Cleane up
* Cleaned up
* Bumped versions
* Run user tests
* Cleaned up
* Added method for checking if the document tree is empty
* Bumped version
* Reverted
* Added Content tests with custom data type
* Added tests for List View Media data type in Media section
* Updated method name due to api helper changes
* Updated the assertion of Content tests with custom data type
* Bumped version of test helper
* Make all Content tests run in the pipeline
* Skipped test for code editor as it is removed
* Fixed comment
* Make Media tests running in the pipeline
* Bumped version
* Updated code due to ui helper changes
* Bumped version of test helper
* Updated tests for bulk trash in the media section
* Fixed notification message
* Make Content tests and Media tests run in the pipeline
* Added more waits
* Reverted
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Bumped version of test helper
* Make all tests for rendering content run in the pipeline
* Fixed comments
* Removed blank lines
* Fixed name
* Make all smoke tests run in the pipeline
* Added tests for rendering content with dropdown
* Added tests for rendering content with Image Cropper - not done
* Updated tests for rendering content due to ui helper changes
* Updated tests for rendering content with image cropper
* Updated tests due to the api helper changes
* Bumped version of test helper
* Make all the tests for rendering content run in the pipeline
* Removed blank lines
* Format code
* Fixed test name
* Reverted
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Added tests for rendering content with checkbox list
* Added tests for rendering content with date picker - not done
* Updated tests for rendering content with date picker
* Updated tests for rendering content due to ui helper changes
* Bumped version
* Removed blank lines
* Make Rendering Content tests run in the pipeline
* Changed method name due to test helper changes
* Reverted
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Bumped version of test helper
* Make all tests for rendering content run in the pipeline
* Fixed comments
* Removed blank lines
* Fixed name
* Make all smoke tests run in the pipeline
* build(deps): update @umbraco-ui/uui from 1.7.1 to 1.11.0
* fix: umb-login-element no attributes
Cherry-picked a fix from V14 where the custom login input component was no longer needed, which was fixed because it errors out. This simplifies the login form.
* cherry-pick code to handle 'enter' click from v14
* fix: anchors and query strings do not work
Since the change from UDIs to localLinks in href, the pattern matched a little too much in the href section completely ignoring any "extras" such as querystrings and anchors after the locallink, which meant that the locallink did not get replaced at all if they were present. This is fixed by limiting the regexp a bit.
* fix: legacy links do not follow the same regexp as new links
Because we are no longer matching the whole `href` attribute but only some of its contents, we need to fix up the old pattern. It has been extended with matching groups that follow the same pattern as the new links.
* feat: allow a-tags to be multiline
example:
```html
<a
type="document"
href="/{localLink:<GUID>}">
Test
</a>
```
* fix: split regex into two parts: first a tokenizer for a-tags and then a type-finder
* fix: ensure only "document" and "media" are matching to speed up the pattern
* feat: allow a-tags to be multiline
(cherry picked from commit 35e8f2e460)
* Added test
* Small changes
* Added content start node tests
* Added media start node tests
* Cleaned up
* More updates
* Cleaned up
* Added wait
* Cleaned up
* Bumped helpers
* Updated to run user tests
* Fixed user tests
* Bumped helpers
* Added missing semicolon
* Fixes based on comments
* Run smoke tests
* Add ContentCache test
* Use SemaphoreSlim as write lock
* Apply lock imrpovements to SnapDictionary
* Obsolete unused MonitorLock
(cherry picked from commit c3db3457e7)
* Updated step to verify the notification message
* Added tests for notification message
* Bumped version
* Updated expected notification message
* Bumped version
* Added tests for textstring in the rendered content
* Updated tests for rendering content with textstring
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Removed tests
* Bumped version
* Make all tests for rendering content run in the pipeline
* Make all smoke tests run in the pipeline
* Added more waits
* Updated assert steps
* Fixed api method name
* Added more waits to avoid the failing test in window
* Updated tests due to business changes
* Added more waits to avoid the failing tests in window
* Updated test due to Ui changes
* Bumped version
* Bumped version of test helper
* Bumped version
* Add ContentCache test
* Use SemaphoreSlim as write lock
* Apply lock imrpovements to SnapDictionary
* Obsolete unused MonitorLock
(cherry picked from commit c3db3457e7)
* Added tests for List view
* More tests
* Added rest of test
* Bumped version
* Fixed failing tests
* Added tests and fixed comments
* Cleaned up tests
* Bumped testhelpers
* Bumped again
* Set condition to only run sql server when enabled
* Run all content test
* Reverted changes
* Added tests for Allow At Root property
* Added Content tests for Allowed Child Nodes property
* Added Content tests for the Allow at root property
* Added Content tests for the Allowed child node property
* Added Content tests for the Collection property
* Added Content tests with allow vary by culture
* Added more waits
* Updated tests due to api helper changes
* Added Content tests with allowed templates
* Bumped version of test helper
* Updated code due to api helper changes
* Fixed naming
This guide will explain how you can build the Umbraco CMS from the source code. You will most likely want to do this if your are setting up a local development environment for contributing code updates to the project. You will need this in order to develop and test your fix or feature.
## Are you sure?
In order to use Umbraco as a CMS and build your website with it, you should not build it yourself. If you're reading this then you're trying to contribute to Umbraco or you're debugging a complex issue.
@@ -13,7 +15,7 @@ If the answer is yes, please read on. Otherwise, make sure to head on over [to t
↖️ You can jump to any section by using the "table of contents" button (  ) above.
## Debugging source locally
## Working with the Umbraco source code
Did you read ["Are you sure"](#are-you-sure)?
@@ -21,75 +23,116 @@ Did you read ["Are you sure"](#are-you-sure)?
If you want to run a build without debugging, see [Building from source](#building-from-source) below. This runs the build in the same way it is run on our build servers.
> [!NOTE]
> The caching for the back office has been described as 'aggressive' so we often find it's best when making back office changes to [disable caching in the browser (check "Disable cache" on the "Network" tab of developer tools)][disable browser caching] to help you to see the changes you're making.
If you've got this far and are keen to get stuck in helping us fix a bug or implement a feature, great! Please read on...
#### Debugging with VS Code
### Prerequisites
In order to build the Umbraco source code locally with Visual Studio Code, first make sure you have the following installed.
In order to work with the Umbraco source code locally, first make sure you have the following installed.
- [Visual Studio Code](https://code.visualstudio.com/)
-Your favourite IDE: [Visual Studio 2022 v17+ with .NET 7+](https://visualstudio.microsoft.com/vs/), [Rider](https://www.jetbrains.com/rider/) or [Visual Studio Code](https://code.visualstudio.com/)
Open the root folder of the repository in Visual Studio Code.
### Familiarizing yourself with the code
To build the front end you'll need to open the command pallet (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and run `>Tasks: Run Task` followed by `Client Build`.
Umbraco is a .NET application using C#. The solution is broken down into multiple projects. There are several class libraries. The `Umbraco.Web.UI` project is the main project that hosts the back office and login screen. This is the project you will want to run to see your changes.
You can also run the tasks manually on the command line:
There are two web projects in the solution with client-side assets based on TypeScript, `Umbraco.Web.UI.Client` and `Umbraco.Web.UI.Login`.
There are a few different ways to work locally when implementing features or fixing issues with the Umbraco CMS. Depending on whether you are working solely on the front-end, solely on the back-end, or somewhere in between, you may find different workflows work best for you.
Here are some suggestions based on how we work on developing Umbraco at HQ.
### First checkout
When you first clone the source code, build the whole solution via your IDE. You can then start the `Umbraco.Web.UI` project via the IDE or the command line and should find everything across front and back-end is built and running.
```
cd src\Umbraco.Web.UI.Client
npm i
npm run build:for:cms
cd <solution root>\src\Umbraco.Web.UI
dotnet run --no-build
```
If you just want to watch the UI Client to `Umbraco.Web.UI` then instead of running `build:for:cms`, you can do: `npm run dev:mock`. This will launch the Vite dev server on http://localhost:5173 and watch for changes with mocked API responses.
When the page loads in your web browser, you can follow the installer to set up a database for debugging. When complete, you will have an empty Umbraco installation to begin working with. You may also wish to install a [starter kit][https://marketplace.umbraco.com/category/themes-&-starter-kits] to ease your debugging.
You can also run `npm run dev:server` to run the Vite server against a local Umbraco instance. In this case, you need to have the .NET project running and accept connections from the Vite server. Please see the Umbraco.Web.UI.Client README.md [Run against a local Umbraco instance](../src/Umbraco.Web.UI.Client/.github/README.md#run-against-a-local-umbraco-instance) for more information.
### Back-end only changes
The login screen is a different frontend build, for that one you can run it as follows:
If you are working on back-end only features, when switching branches or pulling down the latest from GitHub, you will find the front-end getting rebuilt periodically when you look to build the back-end changes. This can take a while and slow you down. So if for a period of time you don't care about changes in the front-end, you can disable this build step.
Go to `Umbraco.Cms.StaticAssets.csproj` and comment out the following lines of MsBuild by adding a REM statement in front:
```
cd src\Umbraco.Web.UI.Login
npm i
npm run dev
REM npm ci --no-fund --no-audit --prefer-offline
REM npm run build:for:cms
```
If you just want to build the Login screen to `Umbraco.Web.UI` then instead of running `dev`, you can do: `npm run build`.
Just be careful not to include this change in your PR.
To run the C# portion of the project, either hit <kbd>F5</kbd> to begin debugging, or manually using the command line:
Conversely, if you are working on front-end only, you want to build the back-end once and then run it. Before you do so, update the configuration in `appSettings.json` to add the following under `Umbraco:Cms:Security`:
```json
"BackOfficeHost":"http://localhost:5173",
"AuthorizeCallbackPathName":"/oauth_complete",
"AuthorizeCallbackLogoutPathName":"/logout",
"AuthorizeCallbackErrorPathName":"/error",
"BackOfficeTokenCookie":{
"Enabled":true,
"SameSite":"None"
}
```
**The initial C# build might take a _really_ long time (seriously, go and make a cup of coffee!) - but don't worry, this will be faster on subsequent runs.**
> [!NOTE]
> If you get stuck in a login loop, try clearing your browser cookies for localhost, and make sure that the `BackOfficeTokenCookie` settings are correct. Namely, that `SameSite` should be set to `None` when running the front-end server separately.
When the page eventually loads in your web browser, you can follow the installer to set up a database for debugging. You may also wish to install a [starter kit][starter kits] to ease your debugging.
Then run Umbraco from the command line.
#### Debugging with Visual Studio
```
cd <solution root>\src\Umbraco.Web.UI
dotnet run --no-build
```
In order to build the Umbraco source code locally with Visual Studio, first make sure you have the following installed.
In another terminal window, run the following to watch the front-end changes and launch Umbraco using the URL indicated from this task.
- [Visual Studio 2022 v17+ with .NET 7+](https://visualstudio.microsoft.com/vs/) ([the community edition is free](https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15) for you to use to contribute to Open Source projects)
The easiest way to get started is to open `umbraco.sln` in Visual Studio.
You'll find as you make changes to the front-end files, the updates will be picked up and your browser refreshed automatically.
Umbraco is a C# based codebase, which is mostly ASP.NET Core MVC based. You can make changes, build them in Visual Studio, and hit <kbd>F5</kbd> to see the result. There are two web projects in the solution, `Umbraco.Web.UI.Client` and `Umbraco.Web.UI.Login`. They each have their own build process and can be run separately. The `Umbraco.Web.UI` project is the main project that hosts the back office and login screen. This is the project you will want to run to see your changes. It will automatically restore and build the client projects when you run it.
> [!NOTE]
> The caching for the back office has been described as 'aggressive' so we often find it's best when making back office changes to [disable caching in the browser (check "Disable cache" on the "Network" tab of developer tools)][disable browser caching] to help you to see the changes you're making.
If you want to watch the UI Client to `Umbraco.Web.UI` then you can open a terminal in `src/Umbraco.Web.UI.Client` where you can run `npm run dev:mock` manually. This will launch the Vite dev server on http://localhost:5173 and watch for changes with mocked API responses.
Whilst most of the backoffice code lives in `Umbraco.Web.UI.Client`, the login screen is in a separate project. If you do any work with that you can build with:
You can also run `npm run dev:server` to run the Vite server against a local Umbraco instance. In this case, you need to have the .NET project running and accept connections from the Vite server. Please see the Umbraco.Web.UI.Client README.md [Run against a local Umbraco instance](../src/Umbraco.Web.UI.Client/.github/README.md#run-against-a-local-umbraco-instance) for more information.
```
cd <solution root>\src\Umbraco.Web.UI.Login
npm run build
```
**The initial C# build might take a _really_ long time (seriously, go and make a cup of coffee!) - but don't worry, this will be faster on subsequent runs.**
In both front-end projects, if you've refreshed your branch from the latest on GitHub you may need to update front-end dependencies.
When the page eventually loads in your web browser, you can follow the installer to set up a database for debugging. You may also wish to install a [starter kit][starter kits] to ease your debugging.
To do that, run:
```
npm ci --no-fund --no-audit --prefer-offline
```
### Full-stack changes
If working across both front and back-end, follow both methods and use `dotnet watch`, or re-run `dotnet run` (or `dotnet build` followed by `dotnet run --no-build`) whenever you need to update the back-end code.
Request and response models used by the management APIs are made available client-side as generated code. If you make changes to the management API, you can re-generate the typed client code with:
```
cd <solution root>\src\Umbraco.Web.UI.Client
npm run generate:server-api-dev
```
Please also update the `OpenApi.json` file held in the solution by copying and pasting the output from `/umbraco/swagger/management/swagger.json`.
## Building from source
@@ -150,5 +193,4 @@ The produced artifacts are published in a container that can be downloaded from
Git might have issues dealing with long file paths during build. You may want/need to enable `core.longpaths` support (see [this page](https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path) for details).
[ contribution guidelines]: CONTRIBUTING.md "Read the guide to contributing for more details on contributing to Umbraco"
[ starter kits ]: https://our.umbraco.com/packages/?category=Starter%20Kits&version=9 "Browse starter kits available for v9 on Our "
[ disable browser caching ]: https://techwiser.com/disable-cache-google-chrome-firefox "Instructions on how to disable browser caching in Chrome and Firefox"
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
👍🎉 First of all, thanks for taking the time to contribute! 🎉👍
These contribution guidelines are mostly just that - guidelines, not rules. This is what we've found to work best over the years, but if you choose to ignore them, we still love you! 💖 Use your best judgement, and feel free to propose changes to this document in a pull request.
These contribution guidelines are mostly just that - guidelines, not rules. This is what we've found to work best over the years, but if you choose to ignore them, we still love you! 💖 Use your best judgment, and feel free to propose changes to this document in a pull request.
## Getting Started
We have a guide on [what to consider before you start](contributing-before-you-start.md) and more detailed guides at the end of this article.
The following steps are a quick-start guide:
## Contribution guide
This guide describes each step to make your first contribution:
1.**Fork**
Create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)

Create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)

2.**Clone**
When GitHub has created your fork, you can clone it in your favorite Git tool or on the command line with `git clone https://github.com/[YourUsername]/Umbraco-CMS`.

When GitHub has created your fork, you can clone it in your favorite Git tool or on the command line with `git clone https://github.com/[YourUsername]/Umbraco-CMS`.

3.**Switch to the correct branch**
Switch to the `contrib` branch
Switch to the `main` branch
4.**Build**
4.**Branch out**
Build your fork of Umbraco locally [as described in the build documentation](BUILD.md), you can build with any IDE that supports dotnet or the command line.
Create a new branch based on `main` and name it after the issue you're fixing. For example: `v15/bugfix/18132-rte-tinymce-onchange-value-check`.
5.**Branch**
Please follow this format for branches: `v{major}/{feature|bugfix|task}/{issue}-{description}`.
Create a new branch now and name it after the issue you're fixing, we usually follow the format: `temp/12345`. This means it's a temporary branch for the particular issue you're working on, in this case issue number `12345`. Don't commit to `contrib`, create a new branch first.
This is a development branch for the particular issue you're working on, in this case, a bug-fix for issue number `18132` that affects Umbraco v.15.
Don't commit to `main`, create a new branch first.
5.**Build or run a Development Server**
You can build or run a Development Server with any IDE that supports .NET or the command line.
Read [Build or run a Development Server](BUILD.md) for the right approach to your needs.
6.**Change**
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](contributing-first-issue.md#questions).
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](contributing-first-issue.md#questions).
7.**Commit and push**
Done? Yay! 🎉
Done? Yay! 🎉
Remember to commit to your new `temp` branch, and don't commit to `contrib`. Then you can push the changes up to your fork on GitHub.
Remember to commit to your branch. When it's ready, push the changes to your fork on GitHub.
8.**Create pull request**
On GitHub, in your forked repository (`https://github.com/[YourUsername]/Umbraco-CMS`) you will see a banner saying that you pushed a new branch and a button to make a pull request. Tap the button and follow the instuctions.
On GitHub, in your forked repository (`https://github.com/[YourUsername]/Umbraco-CMS`), you will see a banner saying that you pushed a new branch and a button to make a pull request. Tap the button and follow the instructions.
Want to read further? [Creating a pull request and what happens next](contributing-creating-a-pr.md).
Would you like to read further? [Creating a pull request and what happens next](contributing-creating-a-pr.md).
## Further contribution guides
- [Before you start](contributing-before-you-start.md)
- [Finding your first issue: Up for grabs](contributing-before-you-start.md)
- [Finding your first issue](contributing-first-issue.md)
- [Contributing to the new backoffice](https://docs.umbraco.com/umbraco-backoffice/)
### Umbraco is a free and open source .NET content management system. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
@@ -37,9 +38,17 @@ Some important documentation links to get you started:
- [Getting to know Umbraco](https://docs.umbraco.com/umbraco-cms/fundamentals/get-to-know-umbraco)
- [Tutorials for creating a basic website and customizing the editing experience](https://docs.umbraco.com/umbraco-cms/tutorials/overview)
## Backoffice Preview
Want to see the latest backoffice UI in action? Check out our live preview:
This preview is automatically deployed from the main branch and showcases the latest backoffice features and improvements. It runs from mock data and persistent edits are not supported.
## Get help
If you need a bit of feedback while building your Umbraco projects, we are [chatty on Discord](https://discord.umbraco.com). Our Discord server serves both a social space but also has channels for questions and answers. Feel free to lurk or join in with your own questions. Or just post your daily Wordle score, up to you!
If you need a bit of feedback while building your Umbraco projects, we are [chatty on Discord](https://discord.umbraco.com). Our Discord server serves as a social space for all Umbracians. If you have any questions or need some help with a problem, head over to our [dedicated forum](https://forum.umbraco.com/) where the Umbraco Community will be happy to help.
## Looking to contribute back to Umbraco?
@@ -51,3 +60,4 @@ You came to the right place! Our GitHub repository is available for all kinds of
Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our [guide to contributing](CONTRIBUTING.md).
### Tip: You should not run Umbraco from source code found here. Umbraco is extremely extensible and can do whatever you need. Instead, [install Umbraco as noted above](#looking-to-install-umbraco) and then [extend it any way you want to](https://docs.umbraco.com/umbraco-cms/extending/).
@@ -7,9 +7,26 @@ We recommend you to [sync with our repository][sync fork] before you submit your
GitHub will have picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.

We like to use [git flow][git flow] as much as possible, but don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to `contrib`. This is the branch you should be targeting.
We like to use [git flow][git flow] as much as possible, but don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to `main`. This is the branch you should be targeting.
Please note: we are no longer accepting features for v8 and below but will continue to merge security fixes as and when they arise.
We welcome PRs for features and bugfixes for different versions according to the [published support and EOL schedule][support-and-eol].
We don't have rules for naming PRs - so name them as you prefer. At HQ we do have a best practice on clear and concise PR naming, so if you would like to use the format feel free to do so.
Our convention of doing it is:
_Area: Description (closes #IssueID)_
1. Start by specifying the area. Fx the feature name(UFM, Tiptap etc.) or specific section (migrations, relations, segmentation).
2. In your description, where applicable, mention type of PR (Build, Bump, Fix, Refactor etc.).
4. Good practise is to make sure you describe specifically the change and/or impact of change.<br>
Umbraco HQ will regularly mark newly created issues on the issue tracker with [the `community/up-for-grabs` tag][up for grabs issues]. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. We encourage anyone to pick them up and help out.
Umbraco HQ will regularly mark newly created issues on the issue tracker with [the `community/up-for-grabs` tag][up for grabs issues]. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. In adding the label we will endeavour to provide some guidelines on how to go about the implementation, such that it aligns with the project. We encourage anyone to pick them up and help out.
You don't need to restrict yourselves to issues that are specifically marked as "up for grabs" though. If you are running into a bug you have reported or found on the [issue tracker][issue tracker], it's not necessary to wait for HQ response. Feel free to dive in and try to provide a fix, raising questions as you need if you have concerns about the modifications necessary to resolve the problem.
If you do start working on something, make sure to leave a small comment on the issue saying something like: "I'm working on this". That way other people stumbling upon the issue know they don't need to pick it up, someone already has.
@@ -11,15 +13,15 @@ Great question! The short version goes like this:
1.**Fork**
Create a fork of [`Umbraco-CMS` on GitHub][Umbraco CMS repo]

1.**Clone**
When GitHub has created your fork, you can clone it in your favorite Git tool


1.**Switch to the correct branch**
Switch to the `contrib` branch
@@ -90,4 +92,5 @@ You can get in touch with [the core contributors team][core collabs] in multiple
[draft prs]: https://github.blog/2019-02-14-introducing-draft-pull-requests/ "Github's blog post providing details on draft pull requests"
# **Contributing to Localization in the Backoffice**
Do you want to help keep our translations accurate and up to standard? 🌍✨
Your input makes a real difference! By reviewing, refining, or suggesting improvements, you ensure that our translations remain clear, consistent, and user-friendly for everyone.
## **How Can I Contribute?**
To contribute to localization in the Backoffice, follow this step-by-step guide:
### **1. Change the Language in Backoffice**
1. Open the Backoffice, click on your profile icon in the top-right corner, and select "Edit."
2. Under "UI Culture," select the language you want to review from the dropdown menu.

### **2. Find a Translation Error**
1. Navigate through the Backoffice and check if everything is translated correctly.
2. When you find a translation error, right-click on it and select "Inspect."
3. Look for the nearest element that starts with `umb-` and has a name indicating something specific to the given location.
**Example:**
* The closest parent element should be specific, such as `umb-document-type-workspace-view-settings` instead of a generic element like `umb-property-layout.`
### **3. Find the Code in VS Code**
1. Open VS Code and search for the nearest `umb-` element you identified.

2. Scroll down to find `render() {` and look for the element label that needs updating.

3. If the label is hardcoded, it must be updated.
**Example:**
`label="Vary by culture"`
### **4. Find the Correct Translation**
1. Open the `en.ts` or `en-us.ts` file and search for relevant keywords. \
\
**Example:**
* If the text is "Vary by culture," search for `vary`, `culture`, or `Vary by culture`.
2. Once you find the translation, take the element name and search for it in the target language file (e.g., `da-dk.ts` for Danish).

3. If a translation exists, insert it into the label element found earlier.
### **5. Insert the Translation**
To display the new translation correctly, insert the following code inside the label element:
`${this.localize.term('action_key')}`
Replace `action_key` with the correct translation key.
Save the changes and return to the Backoffice to see the update.

### **6. Commit and Push**
1. Commit your changes to a new temporary branch (avoid committing directly to `contrib`).
2. Push the changes to your fork on GitHub.
### **7. Create a Pull Request**
1. In your forked repository on GitHub (`https://github.com/[YourUsername]/Umbraco-CMS`), a banner will appear stating that you pushed a new branch.
2. Click the button to create a pull request and follow the instructions.
## **I Can’t Find the Correct Translation**
If you can’t find the translation you need, it may not exist yet. In this case, you can create a new action with related keys.
### **1. Ensure It Doesn’t Already Exist**
Search thoroughly in `en.ts` or `en-us.ts` for all relevant keywords.
### **2. Create an Action**
1. Choose a meaningful name for the action to avoid confusion. \
\
**Example:** Translation for the Data Type "Color Picker."
* **Good name:** `colorPickerConfigurations`
* **Bad name:** `colorpicker`
2. A specific action name prevents unnecessarily long key names.
3. Define the action:
### **3. Create Keys**
1. Use clear and descriptive key names. \
\
**Example:**
* **Good name:** `colorsTitle`
* **Bad name:** `colors`
2. Add the necessary keys inside the action with proper translations.

## **I Can’t Find a <code>render()</code> Code in VS Code**
In some cases, such as Data Types, the label might not be inside `render()`. Instead, it may be in a manifest file.
### 1. Search for the Text
Copy the text from the Backoffice and search for it in the code.
### 2. Open the Manifest File
Once you find the relevant manifest file, open it to confirm you’re in the right place.
### 3. Change the Label
In Markdown files, localization is slightly different. Instead of:
Once all changes are made, your manifest should look something like this:

---
### Thank you
Following these steps ensures that the Umbraco Backoffice remains accessible and user-friendly in all supported languages. Thanks for contributing! 🎉
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
## Working Effectively
Bootstrap, build, and test the repository:
- Install .NET SDK (version specified in global.json):
<!-- OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer brings in a vulnerable version of Microsoft.IdentityModel.JsonWebTokens -->
<!-- Take top-level depedendency on Microsoft.IdentityModel.JsonWebTokens, because OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer depends on a vulnerable version -->
<!-- Azure.Identity, Microsoft.EntityFrameworkCore.SqlServer and Dazinator.Extensions.FileProviders brings in a legacy version of System.Text.Encodings.Web -->
while (($status -ne 'running') -and ($attempt -lt $maxAttempts)) {
Start-Sleep -Seconds 5
# We use the docker inspect command to check the status of the container. If the container is not running, we wait 5 seconds and try again. And if reaches 12 attempts, we fail the build.
# Filter tests that are not part of the Umbraco.Infrastructure namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
# Filter tests that are not part of the Umbraco.Infrastructure namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
# Filter tests that are not part of the Umbraco.Infrastructure namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
while (($status -ne 'running') -and ($attempt -lt $maxAttempts)) {
Start-Sleep -Seconds 5
# We use the docker inspect command to check the status of the container. If the container is not running, we wait 5 seconds and try again. And if reaches 12 attempts, we fail the build.
=>$"{apiDesc.GroupName}_{apiDesc.ActionDescriptor.AttributeRouteInfo?.Template ?? apiDesc.ActionDescriptor.RouteValues["controller"]}_{(apiDesc.ActionDescriptor.RouteValues.TryGetValue("action", out var action) ? action : null)}_{apiDesc.HttpMethod}";
// IMPORTANT: the handler must be AFTER the built-in query string handler, because the client-side SignalR library sometimes appends access tokens to the query string.
:thrownewArgumentException($"Invalid item type. This method can only be used with item type {nameof(PublishedItemType.Content)}, got: {content.ItemType}");
:thrownewArgumentException($"Invalid item type. This method can only be used with item type {nameof(PublishedItemType.Content)}, got: {content.ItemType}");
:thrownewInvalidOperationException("Could not retrieve the current member. This method should only ever be invoked when a member has been authorized.");
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.