* 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
* 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
* 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>
* 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>
* 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>
* 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
* 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
* 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
* 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
* 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
* 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>
* 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
* 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>
👍🎉 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.
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.
@@ -12,56 +12,56 @@ 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.**Branch out**
Create a new branch based on `contrib` and name it after the issue you're fixing, For example: `v15/bugfix/18132-rte-tinymce-onchange-value-check`.
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`.
Please follow this format for branches: `v{major}/{feature|bugfix|task}/{issue}-{description}`.
Please follow this format for branches: `v{major}/{feature|bugfix|task}/{issue}-{description}`.
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.
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 `contrib`, create a new branch first.
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 DotNet or the command line.
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.
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 branch. When it's ready push the changes 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: Up for grabs](contributing-first-issue.md)
- [Contributing to the new backoffice](https://docs.umbraco.com/umbraco-backoffice/)
# **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! 🎉
<!-- 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.
=>$"{domainAndUri.ContentId}{DomainUtilities.PathRelativeToDomain(domainAndUri.Uri, contentRoute.LocalPath)}";// Use LocalPath over AbsolutePath to keep the path decoded.
@@ -81,6 +60,6 @@ public class BuildModelsBuilderController : ModelsBuilderControllerBase
_mbErrors.Report("Failed to build models.",e);
}
returnOk();
returnTask.FromResult<IActionResult>(Ok());
}
}
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.