* Use maximum available value for JSON serialization depth.
* Updated unittests with best practices
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* 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>
* 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>
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,73 +23,109 @@ 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 want to make changes to the UI, you can choose to run a front-end development server. To learn more please read 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.
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.
The login screen is a different frontend build, for that one you can run it as follows:
### Back-end only changes
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:
### Front-end only changes
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`:
**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.**
Then run Umbraco from the command line.
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.
```
cd <solution root>\src\Umbraco.Web.UI
dotnet run --no-build
```
#### Debugging with Visual Studio
In another terminal window, run the following to watch the front-end changes and launch Umbraco using the URL indicated from this task.
In order to build the Umbraco source code locally with Visual Studio, first make sure you have the following installed.
```
cd <solution root>\src\Umbraco.Web.UI.Client
npm run dev:server
```
- [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)
You'll find as you make changes to the front-end files, the updates will be picked up and your browser refreshed automatically.
The easiest way to get started is to open `umbraco.sln` in Visual Studio.
> [!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.
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.
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:
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.
```
cd <solution root>\src\Umbraco.Web.UI.Login
npm run build
```
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.
In both front-end projects, if you've refreshed your branch from the latest on GitHub you may need to update front-end dependencies.
**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.**
To do that, run:
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.
```
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
@@ -148,5 +186,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"
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.
## 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)

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`.


3.**Switch to the correct branch**
Switch to the `contrib` 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 `contrib` 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 `contrib`, 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.
Read [Build or run a Development Server](BUILD.md) for the right approach to your needs.
6.**Change**
@@ -41,7 +50,7 @@ The following steps are a quick-start guide:
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.
### 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.
<!-- 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 -->
<!-- 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 -->
// TODO This have temporarily been uncommented, to support the client sends values from all cultures, even when the user do not have access to the languages.
// The values are ignored in the ContentEditingService
// We intentionally don't pass in cultures here.
// This is to support the client sending values for all cultures even if the user doesn't have access to the language.
// Values for unauthorized languages are later ignored in the ContentEditingService.
// TODO This have temporarily been uncommented, to support the client sends values from all cultures, even when the user do not have access to the languages.
// The values are ignored in the ContentEditingService
// We intentionally don't pass in cultures here.
// This is to support the client sending values for all cultures even if the user doesn't have access to the language.
// Values for unauthorized languages are later ignored in the ContentEditingService.
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.