* Added authorization integration tests
* Removed unnecessary tests and update tests for preview controller
* Updated to use the newest changes from v15/dev and added an override for the AuthenticateClientAsync to use the userGroupKey
* Updated CompatibilitySuppressions to include changes from integration tests
* Updated pipelines
* Skips managementApi tests
* Only run necessary tests
* Added new schema per fixture to reduce test setup time
* Fixed failing tests
* Updated test setup
* Updated test
* Added suppression
* Fixed failing tests
* Updated addOnTeardown methods to protected
* Added method for clearing the host
* Added teardown
* Updated model usage
* Added a lot of cleanup for memory leak issues when running tests
* Added CompatibilitySuppressions.xml
* Updated tests
* Cleaned up
* Adjusted base classes
* Updated pipeline
* Updated CompatibilitySuppressions.xml
* Updated test logging
* Fixed reponse
* Updated condition to skip tests
* Updated tests, not done
* Reworked test to expect correct responses with correct setup
* Updated tests
* More updates to tests
* Updated tests
* Cleaned up tests
* Updated setup
* Cleaned up tests to match setup
* Cleaned up setup
* Removed suppression
* Fixed tests
* Move order of checks
* Fix naming
* Formatting
* Dispose of host
* Keep track of if we're disposed
* Compat suppression
* Dont dispose
* Fix failing tests
* removed unused virtual
* Updated CompatibilitySuppressions.xml
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Added setup for external login
* Started on yaml
* Added test file
* Updated pipeline
* Use env vars
* Added env variables and commented out test we don't need to run
* Removed list from matrix
* Updated condition
* Updated package path
* Updated testFolder
* double slash
* Updated condition
* Updated condition again
* Added port
* Removed redundant values
* Set as env vars
* Added env vars beneath matrix
* Get env
* Updated naming
* Updated usage of values
* Added a check for client id, to see if value set
* Moved env out of pool
* Tried moving env
* Trying to fix the env being empty
* Removed env
* Updated name of variable
* Fixed A cyclical reference
* Updated typo
* More logging
* Reverted change
* Added env
* Added env to tests
* Cleaned up
* Added yaml template files
* Updated nighly pipepline to use templates
* Updated sln
* Split yaml into templates for e2e setup
* Updated pipeline
* Updated solution file
* Set value
* Added if statement
* Added variables
* Set default values
* Updated values
* Updated condition
* Run multiple tests
* Added env
* Updated from parameter to variable
* Fixed condition
* Fixed condition to use actual value
* Updated npx wait on command
* Updated pwsh
* Updated port again
* Updated port value
* Updated wait on
* Updated condition
* Restructured
* Updated var
* Updated run application steps
* Added echo
* Updated to boolean
* Updated conditions
* Updated test template usage
* Added databaseType
* Added another databaseType
* Split up templates
* Fixed indentation
* Updated condition
* updated path
* removed build from path
* Updated conditions for azureAd
* Fixed indentation
* Updated to single qoutes
* Cleaned up
* Removed unused file
* Clarified namin
* Moved
* Updated pipeline, not done
* Updated locator
* Updated pipelines
* Updated test helpers package
* Skipped build stage for default app settings tests
* Updated password var
* Updated locators
* Updated defaultconfig build setup
* Split E2E stage in two
* Added parameter for skipping integration tests
* Cleaned up
* Added ASPNETCORE_URLS
* Start of appsetting
* Updated setup of playwright
* Adjusted the pipeline
* Updated appsetting
* Added install test
* Added comments
* Updated pipeline
* Updated development app settings
* Commented tests out
* comment
* Added if statement
* Updated pipeline
* Fixed condition
* Changed to production
* Added a log
* Updated copy item
* Added
* Updated app settings
* Updated pipeline
* Moved playwright login
* Updated pipeline
* Updated app setting
* Updated nightly
* Updated appsettings
* Updated get
* Updated wait on
* Updated appsettings
* Updated connection string
* Updates
* Skips code
* Updated variable
* Updated pipeline
* We want to always retain the trace, to see if the test runs as expected on the pipeline
* Added a temporary wait till port is open
* Fixed condition
* Added missing tcp for wait on
* Updated URL env
* Updated setup
* Fixed string
* Updated locator
* Split tests into SQLite and SQLServer
* Updated pipeline to run all tests
* Retain trace on failure
* Added testFolder var
* Added appsettings and program for delivery api tests
* Updated playwright config
* Split test runners into defaultconfig and different app settings
* Added delivery api tests
* Cleaned up tests
* Bumped version
* Updated pipeline
* Small fixes
* Added password
* Updated connection string
* Fixed
* Removed quotes
* Removed unnecessary connection string
* Added missing password
* Cleaned up
* Cleaned up
* Cleaned up
* Updated to use helpers
* Bumped version
* Updated helper usage
* Added password to variables and a condition
* Added check
* Indented value
* Fixed condition
* More updates
* Updated variable
* Add integration tests that shows the problem
* Fix the problem and add explenation
* Improved comments slightly to help when we come back here!
Moved tests alongside existing ones related to scopes.
Removed long running attribute from tests (they are quite fast).
* Fixed casing in comment.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Added logging and try/catch around retrieval of references, so we don't block critical operations following an incompatible data type change.
* Added a little more detail to the log message.
* Added a little more detail to the log message.
* Fix unittest mock dependency
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* build(deps): bump tiptap from 2.11.5 to 2.11.7
* fix: prepends the system `/css` folder to stylesheets before attempting to load them
* fix: adds more safety around path assumptions
* chore: eslint fix
* fix: prepend only the system path to picked stylesheets
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
In v13, the StaticAssets build was only triggered based on the existence of either the output folder or a preserve.* marker file. Here, we also additionally check for the node_modules/.package-lock.json file before reinstalling npm dependencies. We also now only run `npm install` rather than `npm ci` to optimise the build.
* Updated tests for tiptap RTE
* Moved tests for titptap toolbar to another class
* Added tests for titptap toolbar
* Added tests for tiptap statusbar
* Bumped version
* Make tiptap tests run in the pipeline
* Bumped version
* Reverted npm command
* Add authorization for webhooks to item and log endpoints.
* Remove full path details from exception when requesting a path outside of the physical file system's root.
* Added missing usings.
* Revert changes to the webhook items API
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added tests for bulk trash content dialog
* Updated tests for trash content dialog
* Added tests for trash and bulk trash media dialog
* Moved trash content tests into a folder
* Bumped version
* Make trash tests run in the pipeline
* Make trash tests run in the pipeline
* Fixed comments
* Reverted npm command
* Fixed error with reflection on integration test configure builder attributes, so integration tests can be created outside of the Umbraco integration test project.
* Fix nullability
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Clear elementscache from cache refreshers
* Add very simple test ensuring the elements cache is cleared
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Fixed error with reflection on integration test configure builder attributes, so integration tests can be created outside of the Umbraco integration test project.
* Fix nullability
---------
Co-authored-by: mole <nikolajlauridsen@protonmail.ch>
* Clear elementscache from cache refreshers
* Add very simple test ensuring the elements cache is cleared
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Fix
* Editors with access should be able to clear a blocklist value
* Writeup around block element level variation
* Dissallow values to be removed a limited language user does not have permissions to
* Remove commented out code
* improved comments
* Improve expose list for limited language access sub variant block lists
* Fix
* Editors with access should be able to clear a blocklist value
* Writeup around block element level variation
* Dissallow values to be removed a limited language user does not have permissions to
* Remove commented out code
* improved comments
* Improve expose list for limited language access sub variant block lists
* Scaffold content for content templates serverside
* Generated client types and methods from API.
* Retrieve scaffolded blueprint when creating documents from a blueprint.
* Use introduced helper method on existing read.
* Cleaned up imports.
* feat: moves scaffold service logic to data source and make shallow repository method
* feat: follows UmbDataSourceResponse interface and reorders public/private methods
* Bumped version to 15.4.0-r2.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Use maximum available value for JSON serialization depth.
* Updated unittests with best practices
---------
Co-authored-by: Migaroez <geusens@gmail.com>
* Revert "Ensure dates read from the database are treated as local when constructing entities (#18989)"
This reverts commit 7b10d39d66.
* Avoid system dates stored with local server time being defaulted to UTC on database read.
* ContentScheduleDto.Date is UTC
---------
Co-authored-by: kjac <kja@umbraco.dk>
* 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
* 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>
* 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()`
* 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>
* 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>
* 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
* 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>
* 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>
* 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>
* chore(mock): adds endpoint handler for allowed media types
* feat: adds new event `UmbDropzoneSubmittedEvent`
* fix: do not await unnecessarily
* fix: simplify error checking
* fix: only proceed if array contains elements
* feat: adds support to render an error state
* fix: react to error state on temporary file badges
* fix: cancel events and simplify error check and react to any status changes
* feat: adds new tryXhrRequest function
* fix: use tryXhrRequest to upload all temporary files
* fix: use error types from hey-api as a temporary solution
* fix: changes limit from int32 to long (64-bit) to allow larger files to be uploaded
* fix: set default baseURL
* fix: use same unique
* fix: do not overwrite status
* fix: adds progress callback for tinymce
* generate openapi.json
* Revert "generate openapi.json"
This reverts commit 3c723e0155.
* Revert "fix: changes limit from int32 to long (64-bit) to allow larger files to be uploaded"
This reverts commit c883a45508.
* chore: generate OpenApi.json
* Adds "HTML Global Attributes" Tiptap extension
This is to add `class`, `id` and `data-*` attributes
to any markup within Tiptap contents.
* Adds "Span" element Tiptap extension
to support generic markup modifications.
* Adds "Div" element Tiptap extension
to support generic markup modifications.
Also modifies "umbEmbeddedMedia" to check explicitly
for the `umb-embed-holder` class name. This is to differentiate
from the generic `div` tag.
* Adds "Rich Text Essentials" Tiptap extension
Previously this was a faux extension, but it is now real.
This extension adds the core extensions for Umbraco RTE support.
e.g. StarterKit, et al, and the new global attributes and generic elements.
* Reverts `elementName` constant
* updated the link picker modal and the property editors using it.
* updated the last language
* some minor updates to the code so that it uses the correct actions
* Minor change in the language key that is being used.
* use camel case
* use "add" and "update" without "link"
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updated the dialog label User - Assign Access - Media Start nodes
* Minor change to the modal headline
* update based on review.
* updated the languages based on review
* updated based on review
* Small update based on review on PR
* use generic choose media for the media dialog
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Re-add authorization
* Add test plumbing
* Add test helper
* Add happy path test
* Remove usage of negation
* Minor DRYup of test code.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Allowed retrieval of current user configuration when accessing user profile as a non-admin user.
* Update src/Umbraco.Web.UI.Client/src/packages/user/user/repository/config/current-user-config.repository.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Allowed retrieval of current user configuration when accessing user profile as a non-admin user.
* Update src/Umbraco.Web.UI.Client/src/packages/user/user/repository/config/current-user-config.repository.ts
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Validates and prevents save when providing a number outside of the configured range.
* Refactored to make use of `UmbFormControlMixin`
This flags the property layout container to be invalid (with prompt).
Adds localization keys.
* Corrected localization parameter order
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* set data path
* use prop setting
* move prop
* type
* clean up
* validation messages test
* remove import
* remove import
* refactor property context proxy to property actions scope only
* clean up
* remove proxy
* find block data
* clean up block clipboard entry data
* check if areas exisists
* test with empty area
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Fix various routing and preview issues for the Delivery API in V15
* Fix breaking change in ctor
* Fix ambigious constructors
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fix various routing and preview issues for the Delivery API in V15
* Fix breaking change in ctor
* Fix ambigious constructors
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* fix: adds placeholder text to the main entity name field
* fix: use forward ref to execute the `.focus()` method on the uui input when it gets rendered
* Fixed up `type` imports
Removed erogenous closing `</div>` + prettify formatting.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Add TimedScope
* Use TimedScope in login endpoint
* Use seperate default duration and only calculate average of actual successful responses
* Only return detailed error responses if credentials are valid
* Cancel timed scope when credentials are valid
* Add UserDefaultFailedLoginDuration and UserMinimumFailedLoginDuration settings
* Add TimedScope
* Use TimedScope in login endpoint
* Use seperate default duration and only calculate average of actual successful responses
* Only return detailed error responses if credentials are valid
* Cancel timed scope when credentials are valid
* Add UserDefaultFailedLoginDuration and UserMinimumFailedLoginDuration settings
* Escape HTML in strings provided as arguments for client-side localization.
* Used HTML sanitizer from dependency.
* Moved sanitization to controller.
* Fixed path to dependency.
* fix: move constants to their own respective files to avoid circular dependencies
* fix: import through import map
* fix: import `sanitizeHTML` from importmap
* chore: consts
* feat: add more ops/sec to `term` function
* fix: check specifically for `typeof 'undefined'` before determining if an arg is valid or not
in case where the sanitizer removes everything so the arg is just an empty string (`""`) we still want it to replace the token, i.e. with the empty string
* test: add tests to verify localization controller xss
* chore: try to improve ops/sec and readability of the `term` function
* test: add more tests for the sanitizer
* fix(dictionary workspace): rely on localization sanitization
* feat: adds new function to escape html entities
* fix: use `escapeHTML` to escape/encode only HTML entities
* test: update test to reflect correct escape
* test: add tests for sanitizeHTML and escapeHTML
* fix: update function to not escape all quotes as people may want to keep those
* chore: formatting
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Remove old values from checkboxlist
* Add validator for MultipleValueEditor
* chore: adds mocked "published" handler
* chore(mock): adds multiple dropdown
* chore(mock): adds dropdown multiple to 'all properties'
* adds localization
* feat: adds support to show invalid/legacy options
* feat: show invalid/legacy options to let the user decide what to do
* Add validator for radio buttons
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Creates IContentTypeFilterService with a "no-op" implementation for filtering the content types available for selection at root and as children.
* Rework to collection so packages and implementors can stack filters if they need to.
* fix: compare current version with the stored version
this ensures that if you come from an older version of Umbraco, we re-verify the upgrade-check to remove the message
* chore: update version in mock handler
* set "new version" button to a positive color
* feat: use modal data to pass on info to new-version modal element
* Amended `type` import
* feat: adds userGroupIds to the current user model
* feat: generate new types
* feat: adds function to check for two array intersections
* feat: maps up userGroupIds
* feat: adds new condition to verify user's groups
* chore: add mocked data
* chore: add generated consts
* change structure of config to match other conditions
match, oneOf, allOf, noneOf
* rename condition from "group" to "groupId"
* feat: inherit from base `UserPresentationBase` to have a shared foundation across user models
* wip clipboard context + tests
* clean up property action module + register copy action
* split manifests
* add clipboard module
* import type
* export type
* mark all methods async
* scaffold copy + paste property actions
* scaffold workspace, collection, repo + data sources
* remove references to language
* register detail manifests
* call repo when creating
* load clipboard collection data
* remove debugger
* register clipboard item picker modal
* return value from picker
* accept native error
* clean up data source
* add tests for error states
* make clipboard local storage manager
* add clip entry entity type
* create unique in scaffold
* add clipboard entry item data
* align naming
* move around
* name alignment
* fix imports
* fix missing entityType
* clean up
* use picker input context
* remove unused context
* Update clipboard.context.ts
* map to item model
* poc paste property action
* register copy/paste as kinds
* lint fix
* add tests
* rename test
* add repository tests
* register delete clipboard action + enable action dropdown outside of context menu
* remove notifcation
* export entity type
* temp use repo instead of context
* delete unused copy property action
* make data source non breaking
* Update vite.config.ts
* add icons for clipboard copy, paste + entry
* remove unused
* return if there is no property value
* add kind interfaces
* pass entry type for copy and paste
* register clipboard for block list
* implement filter on entry type
* delete unused context
* remove references
* rename data to value and don't force an array
* make icons and single value
* allow to add create and update dates for clipboard entries
* use clipboard icon
* add create and update dates
* export constants
* don't set as an array
* reload picker content
* add copy to clipboard button to block list entry
* make picker element
* allow to pick multiple
* remove generic block list clipboard actions
* Revert "remove generic block list clipboard actions"
This reverts commit 6ea65a02ce.
* add get methods
* wip construct block clipboard entry value
* add method to get exposes + add jsdocs
* add expose
* remove todo + add jsdocs
* move clipboard out of core package
* add package files
* load package again
* render entry icon
* render correct icon
* remove clipboard from core vite.config
* Update package-lock.json
* wip copy/paste resolvers
* allow multiple accepted entry types
* move logic to resolvers
* transforming clipboard block value to fit block list
* wip copy/paste resolvers
* clean up
* remove unused
* fix missing exports
* fix tests
* return clipboard entry unique from modal
* Update block-list-entries.context.ts
* clipboard feature: clipboard property value cloner (#17824)
* restructure of property package
* content data merge controller tests
* deprecate meta from propertyValueResolver
* temp work
* temp
* poc
* rename to cloner
* stached block value cloner work
* block list implementation
* correct property value implementation
* RTE Block Property Value Cloner
* Block Grid Value Cloner
* update with comments
* try out cloner
* wip translators
* Revert "delete unused context"
This reverts commit ec31ae55aa.
* move translator + cloner logic to context
* clean up
* implement read from clipboard in block list property editor
* remove debugger
* values array
* handle paste
* Update types.ts
* move files
* Update clipboard-local-storage.manager.ts
* set both create and update date when creating a clipboard entry
* align naming
* handle paste
* clean up + wip block grid translators
* updates types
* add grid block copy translator
* only allow paste translator to handle a single value
* align copy and paste translators
* remove debugger
* move to folders
* add block const
* rename
* add tests
* Update index.ts
* use correct type
* add tests for UmbBlockListToBlockClipboardCopyTranslator
* fix tests
* add translator tests
* add tests
* organize
* organize
* clean up translator tests
* align naming
* remove unused button
* only render copy property action if property has a value
* use constants
* copy single grid block
* get block grid property value from clipboard entry
* add clear method to extension registry + add js docs
* Update index.ts
* add tests for copy value resolver
* add icon for clipboard
* use clipboard icon in modal
* add tests
* remove unused setting
* fix log
* only create array once
* filter for supported paste translators
* use write method instead of duplicating the code
* add condition config type
* use config type
* Update manifests.ts
* add support for multi picker
* move multiple look up logic to context
* add js docs
* add js docs
* remove unused
* remove unused
* remove unused
* implement paste translator filtering for block catalogue modal
* temp color translator
* adding a UmbPropertyValueDataPotentiallyWithEditorAlias
* simplify observer
* append user unique to local storage key
* remove temp color picker clipboard implementations
* more explicit extension type name
* more renaming
* type specifications
* fix test and missing type
* more types for test
* renaming of paste translators
* rename folder
* rename value resolvers
* correct variable name
* wip tests for clipboard context
* clean up tests correctly
* add more tests for clipboard context
* Update clipboard.context.test.ts
* use after each for clean up
* fix test that times out
* correct name
* optimize
* remove webkit
* newest first when picking
* use fingerprint local storage key to obfuscate user id
* rename method
* use const
* set content max length
* return object including the selection uniques
* show confirm dialog before pasting value
* only show confirm dialog if there is a value
* Feature: clipboard block insert (#17935)
* insert methods
* fix originData
* move logic to base class
* progress on Grid and RTE
* correct for Block Grid paste implementation
* update async across
* remove expose from block clipboard entry model
* remove expose from grid block clipboard entry
* remove todo
* wip move value expand responsibility
* wip split clipboard context
* experiment with an extendable property context
* create propertyContexts + proxy events
* rename methods
* move proxy to context + update grid copy logic
* split tests
* remove unused
* add property context extension type
* fix tests
* fix tests
* reorganize
* Update clipboard.property-context.ts
* use context
* register property context clipboard kind
* register for block grid
* remove redundant code
* rename to replace
* Revert "rename to replace"
This reverts commit eb0535edcf.
* rename prop
* rename label
* improve block clean-up abilities
* Update rte-base.element.ts
* make local get of clipboard context
* add asyncFilter option to the type
* add is compatible method to the interface
* support asyncFilter in picker
* add compatability check for block list
* more explicit name
* wip implementation of filter
* add compatability checks
* add temp types
* add clipboard filtering for grid and list
* lint corrections
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Link to content type and/or template from content/media/member info workspace view only if current user has access to sections.
* Fixed HTML
* add const for condition alias
* export const
* return permitted value in onChange callback
* use condition to check for access
* implement across content
* replace strings with consts
* replace strings with const
* remove attr with the ifDefined directive
* allow to pass in callback type
* Pass callback type
* Update index.ts
* add tests for UmbSectionUserPermissionCondition
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updated pipeline to publish acceptance test artifacts for each os. and to run tests from npm command
* Adjustment to the targetPath
* Publish all in results folder
* Moved folder
* Reverted changes
* Added all results in test folder
* Updated naming
* Used semicolon
* Additional semicolons
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* feat: adds script to run madge in a CI environment
* build: adds check for circular dependencies
* build: move actions higher up
* build: only print annotation once
* build: make script not fail CI until dependencies are fixed
* chore: add validation to mocked endpoints
* feat: create new base context `UmbEntityNamedDetailWorkspaceContextBase` to use for named entities
* feat: extend from `UmbEntityNamedDetailWorkspaceContextBase` to be able to save some code
* feat: allow to pass on the generic parameters
* feat: add type-safety property
* chore: remove duplicate code by extending from correct interface
* chore: fix type casting
* feat: make class abstract and add explanatory comment
* feat: Extend from UmbEntityNamedDetailWorkspaceContextBase to ensure all workspaces with a name follows the same interface
this allows the workspace to act as a UmbNamableWorkspace
* feat: adds a few needed properties to umb-workspace-header-name-editable
* fix: use <umb-workspace-header-name-editable> for partial views
* fix: bind to validation for templates
* chore: remove unused css
* fix(script editor): use `<umb-workspace-header-name-editable />` for the name field
* fix(stylesheet editor): use `<umb-workspace-header-name-editable />` for the name field
* chore: add missing mock endpoint for `tree/data-type/ancestors`
* chore: adds mocks for relations and relation-types
* chore: remove unused handlers
* feat: adds **readonly** to `<umb-input-with-alias />`
* fix: use `<umb-input-with-alias />` for relation type workspace editor
* chore: adds missing handler for package configuration (marketplace url)
* fix(packages): adds validation and data-marks to the package section
* feat: adds a validation context for all entity detail workspaces
* chore: remove duplicated validation contexts as that is now being set by their base class
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* chore: add validation to mocked endpoints
* feat: create new base context `UmbEntityNamedDetailWorkspaceContextBase` to use for named entities
* feat: extend from `UmbEntityNamedDetailWorkspaceContextBase` to be able to save some code
* feat: allow to pass on the generic parameters
* feat: add type-safety property
* chore: remove duplicate code by extending from correct interface
* chore: fix type casting
* feat: make class abstract and add explanatory comment
* method to extract json query properties
* fix issue when validation context has been destroyed
* method to remove and get validation messages
* param key
* do not assign a controller alias to this observation
* clean up delete method
* clean up validation messages
* remove unused imports
* Don't save invalid media
* Revert "Don't save invalid media"
This reverts commit c4b6acf542.
* Still allow save, but show validation error, not popup error
* Add clarifying comment
* Don't add a blanket rule to allow synchronous IO, should not be necessary for the new management API
* Add obsolete warning
* Catch errors while adding global rule to allow synchronous IO, which fails on non-windows machines
* Some updates based on PR feedback
* Initial commit of changes
* final touches on styling
* Refactored to observe and resolve the document/media node names
---------
Co-authored-by: DESKTOP-16T01G5\Umbraco <obk@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Initial stab at how this could look
* Authorization PoC wip
* Add connection manager
* Add DI to its own class
* Use enum instead of string
* Use groups
* Refactor group management into its own service
* Update a users groups when it's saved
* Add saved events
* Wire up deleted notifications
* Ensure update date and create date is the same
* Cleanup
* Minor cleanup
* Remove unusued usings
* Move route to constant
* Add docstrings to server event router
* Fix and suppress warnings
* Refactor to authorizer pattern
* Update EventType
* Remove unused enums
* Add trashed events
* Notify current user that they've been updated
* Add broadcast
We don't need it, but seems like a thing that a server event router should be able to do.
* Add ServerEventRouterTests
* Add ServerEventUserManagerTests
* Use TimeProvider
* Remove principal null check
* Don't assign event type
* Minor cleanup
* Rename AuthorizedEventSources
* Change permission for relations
* Exctract event authorization into its own service
* Add some tests
* Update name
* Add forgotten file
* Rmember to add to DI
* Render all URLs in document workspace info tab and ensure protocol-less links can be used to access the intended URL.
* Removed unused import.
* Removed scheme from resolved URL.
* Reload children of destination after duplicate of content.
* Revert changes to generic duplicate to action.
* Don't assume entity type of duplicated item is the same as the destination. Instead treat as "document" unless destination unique is null, when it will be "document-root".
* add todo back
* remove console log
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Don't allow create when there is validation errors
* Fix tests
* Add tests
* Fix last test
* Fix more tests
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Refactor to use IWebhostEnvironment for wwwroot files.
* Obsolete ctor
* Add ActivatorUtiiliesConstructor
* Refactor logic to include folders
* Fix so we can see files in wwwroot/App_Plugins
* Cosmetic: Use invariant comparison for the "umbraco" folder".
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Refactor to use IWebhostEnvironment for wwwroot files.
* Obsolete ctor
* Add ActivatorUtiiliesConstructor
* Refactor logic to include folders
* Fix so we can see files in wwwroot/App_Plugins
* Cosmetic: Use invariant comparison for the "umbraco" folder".
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Display variant selection on unpublish only if the document is variant.
* Allow for publish and unpublish of variant and invariant content.
* Added integration tests for amends to ContentPublishingService.
* Fixed assert.
* Fixed assert and used consistent language codes.
* Further integration tests.
* Added create date to document and media children endpoints.
* Sort by name or create date for documents and media.
* Fix build issues.
* Only render column headers for sorting if all pages of children are loaded.
* Add indicator and debounce sorting by column headers.
* Expose schedule date for on document get endpoint
* typo fix
* stupid stuff
* Enable content scheduling features in the publishing service
* Replace obsoleted non async calls
* Add content scheduling test
* Publush and schedule combination test
* More invariantCulture notation allignment and more tests
* Link up api with updated document scheduling
* More invariant culture notation allignment
* Fix breaking change
* Return expected status codes.
* Fix constructor
* Forward Default implementation to actual core implementation
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Forward default implementation to core implementation
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Make content with scheduling retrieval scope safe
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Use data type configuration to determine default value for empty toggle property values.
* Added/updated unit tests.
* Fixed failing integration tests.
* Applied similar default value display for the slider property editor and aligned implementation of true/false with this.
* Fixed unit tests.
* Removed "duplicate" JsonPropertyName attributes and added a custom TypeInfoResolver for data type configuration so we can re-use the existing ConfigurationField attributes.
* Minor cleanup
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Don't allow create when there is validation errors
* Fix tests
* Add tests
* Fix last test
* Fix more tests
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* feat: include the option whether a login provider has disabled local login
* feat: include information whether change password or two factor is allowed
* generate new OpenApi.json
* generate new ts client
* feat: request the server configuration and include in the UmbAppContext
* fix: for login screen, check that a provider did not disable the local login
* fix: use UmbAppContext to fetch the version check period
* chore: remove unused method
* revert current user configuration changes
* generate new ts client
* fix: add condition for "allow password change" on the change password button
* fix: create new IsDefaultKind condition to separate change password logic
* fix: update "allow change password" and "allow mfa" conditions to take the user configuration into consideration
* chore: export consts
* remove falsely named attribute that happens to not be useful anyway
* chore: revamp logic for early return to make it more readable
* convert `isInitialized` to a Promise as it is only being resolved once anyway, which then additionally saves a call to `this.observe` in the conditions
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Add notification handler
* Add IsContentPublished that bypasses caching
* Add clarifying comment
* Refactor, to never hit the db
* Remove old comment
* Don't add warnings if disabled
* Dedicated configuration option to suppress unroutable content warnings
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Ensure sort order is used when rendering the list of allowed documents that can be created under an item in the content section.
* Fixed issue preventing sorting of the allowed content types.
* Refactors `umb-ref-item` to inherit from `uui-ref-node`
To extend, rather than reinvent the wheel.
* Updates components using `umb-ref-item` with `select-only` attribute
* Updates `umb-entity-create-option-action-list-modal` to use `umb-ref-item`
instead of `uui-ref-node`, so we can use `umb-icon`
(with color support) and UI consistency.
* Adds `headline` property for Create Option modal
* Changes 'Umb.EntityAction.DocumentType.Create' to use `kind: 'create'`
Deprecates `umb-document-type-create-options-modal` and token.
* Adds `entityCreateOptionAction` extensions for Document Types
- Document Type (default)
- Document Type with Template
- Element Type
- Folder
* Tweaks Create Options modal to submit upon selection
* corrections
* remove headline option
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* rename arg for better readin
* use nothing
* parse args and implement single mode
* make single mode work with conditions
* implement UmbExtensionsElementAndApiInitializer in workspace element
* move workspace initialization to workspace element
* do not parse host, as it already happens
* implement initializer single mode for extension slot elements
* Add a way to configure IUmbracobuilder on a per testcase basis
* New logic for invariantVariantMerging
* bugfix
* Undo formatting changes
* Undo more automatic formatting
* Last automatic formatting correction
* Cleanup ConfigureBuilderAttribute
* Made propertyEditor tests internal
* Added tests for content with tiptap - not done
* Updated tests - not done
* Addes tests for create content with non-empty RTE tiptap
* Added Content tests for tiptap
* Cleaned up
* Updated tests for Content with tiptap due to test helper changes
* Make all the Content tests run in the pipeline
* Fixed comment
* Reverted
* Fix ConvertLocalLinks migration and add a new migration in case the old one has already run
* RebuildCache
* Clear cache means clear ALL caches
* Fix Block Markup recursion
* Fix Unittest mock constructor
* implement validation for media and prepare for member
* remove import
* port code from backoffice repo
* move repo into publishing module
* port get published methods
* cleanup
* wip render state
* align state UI
* post merge clean up
* move publish modal
* move schedule modal
* move unpublish modal
* move publish action and bulk action
* move unpublish action + bulk action
* lint fix
* Update document-workspace.context.ts
* wip move publishing methods to publishing context
* move publish with descendants
* fix more references
* Update document-publishing.workspace-context.ts
* export entity action
* add return type
* temp internal methods
* use repository response type
* expose methods for other contexts to use
* use public methods
* call publishing context methods
* fix import
* move manager into folder
* organise in folders
* add get method to get variants with changes
* preselect variants with pending changes
* observe data changes
* render pending changes client state
* observe unique
* Update document-publishing.server.data-source.ts
* use correct key
* clean up
* expose persisted data
* rename arg
* use persisted data instead of current
* add reload method
* reload data after publish
* remove headline
* handle all publish actions the same
* reset state as the first thing when creating + loading
* add method to get variants
* only load published if document has a published variant
* remove variants from observer
* add public method to get the changed variants
* align preselection with current logic
* add deprecation util
* add method deprecation warnings
* remove unused publish method
* move publishing workspace actions into publishing module
* use publishing context
* clean up
* add tests for published pending changes manager
* handle server the same way
* process pending changes when persisted data changes
* remove buggy updateDate
* remove unused
* lint fix
* add publish method back to avoid a breaking change
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* always render the links we get from the server
* render information about links with no url
* pass correct state value
* Update document-workspace-view-info-links.element.ts
* reuse empty link, culture markup
* remove state from urls
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Handle empty permissions
* Add tests
* Add a few more asserts to the tests
* Move dependency injection to test itself
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Property level versioning for the Delivery API using a custom System.Text.Json resolver
* Adding a converter base class that custom converters can implement
* Revert resolver
* Use IHttpContextAccessor for the API version
* Fix attribute and checks in ShouldIncludeProperty
* Fix enumeration
* Fix comment
* Unit tests
* Refactoring
* Remove Assert.Multiple where no needed
* feat: add two launch tasks to start a vite server and attach to an existing vite server
* build(deps-dev): install and use cross-env for vite commands
* build: add mocked launch task
* build: add prompt to check if msw should be on or off
* build: defaults
* build: rename launch task
* build: add compound to start backend and frontend at the same time
* implement validation for media and prepare for member
* remove import
* use repository response type
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Refactor .Children to use PublishStatusQuery
* Fix descendants
* Fix ancestors
* Fix siblings
* Handle empty string in published status service
* Fix unit test
* Fixes issue found in tests
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Tinymce inserts links using the a-tag, which is triggering our navigation because we cannot control tinymce's rendering. We can however control which links we trigger on the for the 'click' event by using `composedPath()` and ensuring that we are inside one of the block entry elements.
* prevent the block list editor from setting an empty value on startup
* prevent block grid from setting and initial empty block object value
* fix import
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Updated tests for content with media picker
* Fixed tests for content with multi url picker
* Skip tests for update action permission as it is removed now
* Fixed tests for list view media
* Fixed notification
* Updated method name due to api helper changes
* Fixed tests for welcome
* Fixed test for deleting a tab in a document type
* Updated expectation test result due to UI changes
* Updated create stylesheet method
* Fixed tests due to the action for selecting media item changes
* Bumped version
* Fixed expected result
* Fixed due to test helper changes
* Added more waits
* Added test for rendering content with member picker value
* Added tests for rendering content with multiple media picker
* Added tests for rendering content with multi url picker
* Bumped version
* Updated tests for member picker
* Make all rendering content tests run in the pipeline
* Bumped version
* Fixed indentation
* Added clean for media
* Reverted
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Added Content tests with Approved Color
* Bumped version of test helper
* Make Content tests run in the pipeline
* Using custom datatype builder instead of changing the default approved color data type
* Updated variables
* Fixed comment
* Make all Content tests run in the pipeline
* Reverted
* Add custom serializer
* Add migration to rebuild cache
* Rename migration namespace to 15.1
* Also clear media cache
* Remove failed cache items
* Refactor to only use keys for document cache repository
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Add custom serializer
* Add migration to rebuild cache
* Rename migration namespace to 15.1
* Also clear media cache
* Remove failed cache items
* Refactor to only use keys for document cache repository
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Created explicit endpoints returning the login image instead of leaking the configuration. Thereby some hardcoded values have been changed, but the url will now be the same every time.
* Remove magic concatenation for action lookup
* remove unused backoffice asset (login.jpg)
* remove unused umbraco logo assets
* add manifest handlers
* add mock handlers for the `security/back-office/graphics` endpoints to the backoffice
* add mock handlers for the `security/back-office/graphics` endpoints to the login screen
* chore: update msw service worker
* feat: make static assets available for consumption without copying them from the login project
* update consts with new location for static assets
* feat: prefix login assets with `login-`
* remove unused asset `logo.png`
* feat: introduce a `/back-office/graphics/logo` endpoint to serve the logo "mark" used throughout all applications
* feat: use the alternative logo for disabled javascript warning
* feat: use the umbraco logo on the NoNodes.cshtml page
* Do not expose the new readme in the package
* feat: add logo.svg
* feat: add `umb-app-logo` element to display the backoffice logo including server url and appropriate tags
* feat: use the new `umb-app-logo` element relevant places and make sure to add the serverUrl in front of other graphics
* feat: move logic to connectedCallback to prevent error from non-existing element
* revert usage of HideBackOfficeLogo
* feat: add alt text to logos
* feat: add obsolete message and a hint to use BackOfficeLogo insted
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix: make sure we only target valid blocks
This is to say we should remove any invalid block elements to clean up the DOM. A block element is considered invalid if it does not have the `data-content-key` attribute.
* build(deps): bump tiptap from 2.10.2 to 2.10.3
this fixes a potential issue with link creations
* revert the 'leaf node specification'
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* fix: do not add attributes or html elements to custom elements before they are created
Due to the way browsers treat custom elements, they are not allowed to add attributes and/or child elements upon creation. They must wait until the `connectedCallback`. That means any controller that wants to add elements should also wait until the host is connected (`hostConnected`).
* test: add generic tests for rte block elements
* chore: cleanup imports
* split observables so we don't request url when variantsOptions changes
* clean up events + debounce requests
* add loading state
* clear lookup before requesting new urls
* Added tests for Tiptap data type
* Removed tests for adding a toolbar item as the drag and drop is not working
* Fixed the variable name
* Added tests for TinyMCE data type
* Added tests for RTE data type
* Updated tests for delete toolbar row in Tiptap
* Updated tests for rich text editor data type
* Updated tests for tiny MCE data type
* Updated tests for content with tiny MCE rich text editor
* Renamed tests as there are 2 types of rich text editor
* Bumped version
* Make all data type tests in the pipeline
* Updated tests for Tiptap and TinyMCE due to api helper changes
* Fixed comments
* Update TinyMCE.spec.ts
Removed line
* Reverted
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Update nuget packages
* Cherry pick fixes from v15
* Fixed: Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items
* rollback update in tool
* remove code duplication
* remove unused code
* allow value to be undefined
* dot not build model if we have no markup
* do update the layout value if we don't get any layouts
* reset internals if there are no value
* clear value if tiny mce doesn't have any markup
* clear value if tip tap doesn't have any markup
* add method to check if tip tap element is empty
* use method to check for empty tip tap
* make args protected + type generic
* add rename event
* get new name and unique from modal
* dispatch event when file is renamed
* get unique from entity context
* poc redirect after rename
* move logic to controller
* dont render code editor if content is undefined
* remove unused styling
* set unique after create
* use replace state
* set additionalOptions for rename action
* Update workspace-redirect.controller.ts
* add focus to name input
* add rename redirect controller
* clean up
* split render methods
* Update script-workspace.context.ts
* implement EntityDetailWorkspaceBase for stylesheets
* remove unused
* don't render code editor if there is no content
* add rename redirect controller
---------
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
* Only fetch single commit
* Hopefully fixes Nerdbank.GitVersioning.GitException: Shallow clone lacks the objects required to calculate version height. Use full clones or clones with a history at least as deep as the last version height resetting change.
* Do not checkout again
* More test pipeline
* Another attempt
* yet another attempt
* more attempts
* Revert "more attempts"
This reverts commit 5694d97ba6.
* Test without building backoffice and login explicitly
* Fix mem leak in integration tests
* Fixes sqlserver lock test
* Only fetch single commit
* Hopefully fixes Nerdbank.GitVersioning.GitException: Shallow clone lacks the objects required to calculate version height. Use full clones or clones with a history at least as deep as the last version height resetting change.
* Do not checkout again
* More test pipeline
* Another attempt
* yet another attempt
* more attempts
* Revert "more attempts"
This reverts commit 5694d97ba6.
* Test without building backoffice and login explicitly
* Fix mem leak in integration tests
* Fixes sqlserver lock test
* Added tests for rendering content with upload file
* Bumped version
* Make all tests for rendering content run in the pipeline
* Fixed command
* Reverted
* Implement GetContentTypeAliasForType which will replace the need for .OfType<T>();
* Refactor EnumerateAncestorsOrSelfInternal to be generic and extracting checks
* Add types to implementation referencing the old non-generic method
* Using
* Replace Ancestors.OfType<T> implementation
* Refactor EnumerateDescendantsOrSelfInternal to be generic
* Fixing references by adding IPublishedContent type param
* Cleanup + removing unused method
* Replace Descendants.OfType<T> implementation
* Remove unnecessary enumeration
* Updating Children.OfType<T>() implementation
* Adding correct types
* Fixing SiblingsAndSelf implementation
* Refactor TryYieldSelfOfType
* Remove nested checks
* Add comments and retrieval of content type alias from T in the private helper methods
* Simplify implementation based on review comments
* Add case when you get all root keys without a type
* Refactoring
* Renaming + review comments
* Rewrite SiblingsAndSelf
---------
Co-authored-by: kjac <kja@umbraco.dk>
* fix: wait a frame before calculating events, which allows the debug callback to "fill up" the instances map
* Revert "fix: wait a frame before calculating events, which allows the debug callback to "fill up" the instances map"
This reverts commit a8a2bdbb05.
* fix: assign the inner object (`event.instances`) directly to a state and perform the "massaging" only when it updates
this ensures that any live changes to the inner object are reflected in the UI
* Revert #14234
* Make the boot failure message more descriptive when unable to connect to DB
* Update src/Umbraco.Infrastructure/Runtime/RuntimeState.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Revert changes
* Obsolete InstallMissingDatabase from V16
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* only allow navigating into folders or item with children
* export media search provider
* mark search on media item repo as deprecated
* use media search provider for searching
* rename method
* change the look of the upload button
* only render checkbox if we are not in the root
* clear search when navigating
* add type
* set value so it gets updated when cleared
* default to search within an item
* hide breadcrumb if searching in root
* scope search on server
* Update media-picker-modal.element.ts
* hide breadcrumb when doing a global search within another item
* add selection mode
* remove unused state
* handle start node when searching
* fix if wrong order
* fix type error
* pass start node to breadcrumb
* handle start node in breadcrumb
* make start node optional
* map data
* clean up
* Update media-picker-folder-path.element.ts
* add searching load indicator
* don't show unique in detail
* Add information to item response model
* Update OpenApi.json
* generate new server models
* update mocks
* move interface to types
* add hasChildren and parent to media item model interface
* fix import
* map data
* map media item
* treat tree item and search result the same
* Fix: bump uui version (#17626)
* lint fix
* temp fix for media selection
* UX corrections for media selection
* temp uui fix for media picker modal
* fix table selection mode
* fix search from when having a start node
* remove private
* wait for all missing parts before create table items
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* build(deps): bump storybook from 8.3.5 to 8.4.4
* reenable public folder (with msw file) for storybook
* build(deps-dev): bump vite from 5.4.6 to 5.4.11
* build(deps-dev): bump babel and rollup
* build(deps-dev): bump typedoc from 0.26.5 to 0.26.11
* build(deps-dev): bump @hey-api/openapi-ts from 0.52.11 to 0.55.3
regenerated all models and migrated the config
* build(deps-dev): bump eslint from 9.7.0 to 9.14.0 including related deps
* build(deps-dev): bump all @types packages
* build(deps-dev): bump lucide to 0.459.0 and simple-icons to 13.16.0
regenerate icons:
- renamed `box-select` to `square-dashed`
* build(deps): bump marked from 14.1.0 to 15.0.0
* build(deps): bump monaco-editor from 0.50.0 to 0.52.0
* build(deps): bump dumpurify from 3.1.6 to 3.2.0
* build(deps): make changes based on the dompurify upgrade where types are now an inherent part of the package
* build(deps): bump diff from 5.2.0 to 7.0.0
* build(deps): bump element-internals-polyfill from 1.3.11 to 1.3.12
* build(deps): bump lit from 3.2.0 to 3.2.1
* build(deps-dev): bump globals from 15.8.0 to 15.12.0 (eslint dependency)
* build(deps-dev): bump storybook dependencies
* build(deps-dev): bump @web/dev-server deps
* build(deps-dev): bump typescript from 5.5.3 to 5.6.3
* build(deps): bump uuid from 10.0.0 to 11.0.3 thereby eliminating the @types/uuid module
* build(deps): bump tinymce-i18n from 24.7.15 to 24.11.11
* build(deps): bump all deps to latest and use backoffice global types for extension manifests
* chore: change import path
* build(deps-dev): bump rollup/plugin-commonjs to 26.0.3 for compatibility reasons
* feat: replace outdated 'webworker-loader' with manual paths to monaco's web workers since they are esmodules anyway
* build(deps-dev): bump storybook from 8.4.4 to 8.4.5
* build(deps): bump tiptap from 2.9.1 to 2.10.2
* build(deps): bump dompurify from 3.2.0 to 3.2.1
* build(deps): bump tinymce-i18n from 24.11.11 to 24.11.25
* build(deps): bump static icons
* build(deps): bump marked from 15.0.0 to 15.0.2
* build(deps-dev): bump eslint + deps
* build(deps-dev): bump vite + rollup dependencies
* build(deps-dev): bump @playwright/test from 1.48.2 to 1.49.0
* build(deps-dev): bump @hey-api/openapi-ts from 0.55.3 to 0.57.1
generated new services
* build(deps-dev): bump @types/mocha
* build(deps): bump typescript from 5.6.3 to 5.7.2
* feat: show only a loader on a default login flow
if the flow fails, the app-error component will be shown, or if the flow is initialised inside a popup (i.e. the session was lost)
* fix: hasOwnOpener did not recognize the local vite url as its own pathname
it should work better by checking the `startsWith` comparing the pathname, and besides, it seems to work better for the understanding of the function to inverse the true/false check
* chore: adjust imports
* chore: formatting
* Dropzone, upload complete callback with processed file array
* Media card: cosmetic fix for image border-radius
The image's square corners were poking out.
* Validate email for member models
* Add null check or more test cases
* return invalid when not a valid email
* Cleanup
* remove private method in favor of extension
* Remove non used, using statement
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
(cherry picked from commit 6b0f8e7b7c)
* Validate email for member models
* Add null check or more test cases
* return invalid when not a valid email
* Cleanup
* remove private method in favor of extension
* Remove non used, using statement
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* use box headline for headlines
* Settings welcome dashboard amends
`rel=noopener` is automatically implemented
by the browser for `target=_blank` links.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Deprecated TypeScript exports
* Removed the Bulk Action Permission condition
* Removed the "bulkActionPermissions" configuration
It's now based on manifest/extension conditions.
* Added user permission checks for documents
(media do not yet have entity permissions)
* Added console warning for 'bulk-action-permissions' editor
* Distinguish between default value and initial zero
* Update special value comment documentation
* Redid solution with dirty/new entity tracking
* rework copy branch sortorder fix
* Change == false to is false
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Distinguish between default value and initial zero
* Update special value comment documentation
* Redid solution with dirty/new entity tracking
* rework copy branch sortorder fix
* Change == false to is false
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Change icons of media types
* feat: install icons `audio-lines` and `origami` from lucide
* feat: update the default icon for audio to `icon-audio-lines` and the default icon for vector graphics to `icon-origami`
* chore: add more mocked media types
* chore: add missing endpoint for media-type ancestors
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix styling of placeholder on list
* make sure to only setup items that uses the same Sorter Controller identifier
* make sure identifier is unique for each variant
* correct comments
* style grid block
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* feat: conditionally install and build the 'login' and 'backoffice' targets depending on source files
* feat: remove the preconditions target, because we are now compiling a file list to check if we need to build
* feat: remove the 'clean' targets, because the project will be cleaned if any of the compiled file lists do not exist
* feat: remove the preserve.* files as they are no longer needed
* Enable default content items again
* Remove package.json from restore target inputs
* Include generated files as static assets after build
* Clean up project files
* Exclude CS0618 warning as error and fix CA2264
* Exclude CS0612 warning as error
* Suppress removal of test fixture
* Use separate property/item groups for backoffice and login project
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* add searchFrom to request args type
* add search from to picker search manager config
* pass startNode to config
* get default setting from config
* pass to server
* remove unused import
* Implement IEmailSenderClient interface and implementation
In an effort to support oauth 2 and other schemes, we extract a emailsenderclient interface, allowing to replace default smtp client with one that fits the usecase, without having to implement all of Umbracos logic that builds the mimemessage
* fix test
* Documentation
* EmailMessageExtensions public, use EmailMessage in interface and impl.
* move mimemessage into implementation
* revert EmailMessageExtensions back to internal
* use StaticServiceProvider to avoid breaking change
* Fix test after changing constructor
* revert constructor change and add new constructor an obsoletes
* Moved a paranthesis so it will build in release-mode
(cherry picked from commit bff321e6f5)
* Implement IEmailSenderClient interface and implementation
In an effort to support oauth 2 and other schemes, we extract a emailsenderclient interface, allowing to replace default smtp client with one that fits the usecase, without having to implement all of Umbracos logic that builds the mimemessage
* fix test
* Documentation
* EmailMessageExtensions public, use EmailMessage in interface and impl.
* move mimemessage into implementation
* revert EmailMessageExtensions back to internal
* use StaticServiceProvider to avoid breaking change
* Fix test after changing constructor
* revert constructor change and add new constructor an obsoletes
* Moved a paranthesis so it will build in release-mode
* Create content-type-workspace-context-base.ts
* make detail model with entityType
* allow repository alias
* export base class
* fix type check
* add method to get unpersisted changes
* remove duplicate code
* remove duplicate code
* remove duplicate code
* wip porting code to the base class
* improve extendability
* clean up
* clean up
* move logic to base
* allow to preset the scaffold
* pass preset
* add public tag
* clean up
* simplify the number of places we store the entity type
* add js docs
* rename private method to clear
* remove debugger
* use flag instead of a data state
* set persisted data after create + update
* Update entity-detail-workspace-base.ts
* add js docs
* add protected tag
* call super
* make linter happy
* add comment
* type casting
* no need create observables for unique and entityType it is already handled
* add null check
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Fixed todo of content tests with image cropper
* Fixed TODO in partial view tests
* Fixed waits
* Fixed TODO in Media type design tab tests
* Fixed TODO tests for document type template tab
* Fixed TODO tests for document type setting tab
* Cleaned up
* Fixed Todo tests for document type design tab
* Removed skip tests
* Added comment
* Fixed flaky member group tests
* Removed skip tests
* Cleaned up
* Fixed TODO tests for media
* Fixed TODO tests for dictionary
* Fixed TODO tests for Content info tab
* Fixed TODO tests
* Bumped version
* Cleaned up
* Updated tests due to UI changes
* Fixed failing tests
* Bumped version
* Fixed failing tests for Content Picker, Block setting due to UI changes
* Bumped version
Ensures that `_unique` has value. This was previously throwing
an error, but given how `observeMultiple` works, it is expected that
`_unique` may be `undefined` when navigating away from the Info view.
* run codeql without building the solution
* restore dotnet
* Revert "restore dotnet"
This reverts commit 3e22bc1a76.
* Revert "run codeql without building the solution"
This reverts commit 9ceaea7781.
* use global.json for codeql
* do not build solution
Add missing backoffice languages as properties etc. are translated via translation section (e.g. with "#Backoffice Settings"). At the moment the swiss languages always need to be added via the umbraco/Config folder.
* [WIP] Create Umbraco/Bellissima Package
* Removes existing 'UmbracoPackage'
This is because the RCL based one will be the only one going forward
* Rename existing UmbracoPackageRCL to UmbracoPackage
* Drop the mentions of RCL in the identifiers
* CodeQL GitHub Action is complaining due to V15 wanting v9 .NET
* Rename UmbracoPackage template to UmbracoExtension
As this will only scaffold an extension and not other bits for a package such as Nuget, Github Actions & other things needed to be done to ship out a package
* Remove package lock as npm install by the OS should generate this and can differ between Windows, Linux/OSX
* Move JS clientside stuff into a folder called Client
Will allow us to ignore the folder if or when doing a dotnet pack with a rule in CSProj
* Add in .VSCode recommened extensions file to get the useful Lit Extension for completions in VSCode
* For now remove the example dashboard & prop editor
* Add a simple entrypoint
* Fix path for primary output after rename
* Use link suggested from Lotte
* Use backofficeEntryPoint as entryPoint is deprecated
* Update the umbraco-package.json to opt into telemetry as per PR suggestion
* Improve commented code to include a link to docs
* Improve readme from suggestions
* Updates package.json to use latest Vite & TS
Copies the tsconfig from the default scaffolding of vite lit-ts CLI
* Adds the base property suggestion from Jacob & puts in a comment as to what its used for
* Work in progress from hackathon day/afternoon
* Hey-API generating a HTTP Client had changed and was a PITA to figure out what had changed
Things to do for next time:
Include these files if they include --include-samples flag
* constants.ts
* Controllers/
* Composers/
* client/src/api
* client/src/dashboards/
* client/src/entrypoints
Change file contents
* client/src/bundle.manifests.ts
* client/src/package.json (extra dependencies)
* Adds in new property/flag/switch for dotnet new template
* Warren cant spell Whether 🙈
* Update template.json to exclude the sample files if flag is not set/false
* Make SLN happy/build
* Conditional content in files for IncludeExample flag/switch
* Need to include the content otherwise it doesnt get packed by nuget
* Fix the path for the openapi-ts-config.ts file to be included/excluded
* Use the project name from the dotnet new to help name manifests
* Update namespaces so they get updated when dotnet new templatge is run with the --name
* Updated example
* Fix up VS Code recommended extension for Lit VSCode
Should be .json not a .ts
* Fix up build - as we dont use the imported UmbCurrentUserContext
* Remove the relative path to the JSON schema as unable to know path to the web project
* Typo fix as spooted by Rich
* Update templates/UmbracoExtension/.template.config/template.json
Co-authored-by: Lotte Pitcher <LottePitcher@users.noreply.github.com>
* Adds a --site-domain flag/switch to use for setting the domain prefix
Sets a default value of https://localhost:5000
We have no way of knowing what URL/domain the site is running at for the Umbraco website project
* Rename stuff so its not 'example' & only have ping if include-examples is not set
* As agreed with Lotte makes sense we always generate OpenAPI & TS client
* Update umbraco-extension description
* Generic node script to generate the TS client
Checks if it can connect to it first and prompts user to ensure Umbraco site running or perhaps they need to change the URL in package.json for the node script
* Generated API has conditional stuff in now to have just Ping or the more examples based on switch/flag
* Adds symbols safeNamespace and safeName
safeNamespace uses the one built in and then safeName, depends on the cleaned namespace to then use a custom transform (forms) to then use a regex replace on . and _ to ensure we have a nicer name still for namespaces, class names, URL/routes for the swagger etc...
* change to use Umbraco.Extension as sourcename - check \.template.config\readme.md for 'placeholder' guidance
* use '-sd' as shortname for site-domain as otherwise shows up as '-p:d'
* fix typescript build error when not including examples
* use provided name for API description as always being added
* Missing renames of Contrioller stuff with Lotte @ hackathon
* We missed the ctor
* Titlecase the API URLs for Swagger/API Controller
* dashboard tweaks
* Missing [Server] on Whats the Time Modal/UUI-box
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
Co-authored-by: Lotte Pitcher <LottePitcher@users.noreply.github.com>
Co-authored-by: Lotte Pitcher <github@lottepitcher.co.uk>
Bug 17457
https://github.com/umbraco/Umbraco-CMS/issues/17457
Creating new doc type properties sort order doesn't count existing properties.
Looking at this it seems that the hardwork is done to workout the sort order and assign it to preset but it's not returned undefined was (probably as a dev placeholder that's gone unnoticed!).
Fixes issue when running `npm run compile`
```
examples/ufm-custom-component/index.ts:12:4 - error TS1117: An object literal cannot have multiple properties with the same name.
12 alias: 'myCustomComponent',
~~~~~
Found 1 error in examples/ufm-custom-component/index.ts:12
```
* Fix bug: No matching error display between New password and Confirm password
* Refactored to use built-in validation
Wires up most localization keys.
---------
Co-authored-by: Lan Nguyen Thuy <lnt@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Add swiss languages as backoffice languages
* Added Swiss localizations to manifest
* De-duplicated localizations
To reduce lines of duplicated code, (from the German, French
and Italian localizations), those localizations are imported at runtime.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Update block-grid-manager.context.ts
* Renames field to `serverUrl`
Uses `URL()` object to handle slashes in constructing the URL path.
* Tidied up imports
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Optimed sql for checking if a list documents is tracked by a reference
* Remove unoptimzed method and update Media controller too
* Revert spacing, formatting and unneeded code change
This partially reverts commit d32b6acf4f.
* Cleanup temporary renaming
* Add default implementations
* Fix merge issue
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* update submodule
* update submodule
* Reintroduce a favicon (#17422)
* Fixes issue where package name was compared to package id, so packages had pending migrations from the management api endpoint, without actually have it.
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Make block editor base classes public
* Update BlockEditorValues.cs
Change to trigger a new build for #16774
* Update IPublishedContent.cs
Provide better suggestions for alternatives to `Childrent` and `Parent`
* Updated obsolete message
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Adds `alias` to UFM component registrations
* Adds support for `alias` prefix in UFM syntax
e.g. `{(alias:|marker)(text)}` would be `{umbContentName: propertyAlias}` or `{~propertyAlias}`
* UFM Content Name: adds warning for using the `~` prefix marker
The `~` prefix will be deprecated in a future major release.
* ensure we always have the latest variant data
* use enum value
* Update document-tree-item.element.ts
* only dispatch event if there is no error
* reload structure after publish with descendants
* only request update if it succeeds
* rename private method
* Adds "Template Has No Children Condition"
to prevent the "delete" action being displayed
for templates that have child templates.
* Removed condition config type
it didn't have any configurable properties.
Lazy-loaded the manifest api.
* Renamed "Template Has No Children" condition
to "Template Allow Delete Action" condition.
* Feature: Set the URL field as required and focus on it
* Added mandatory asterix to webhook url label
---------
Co-authored-by: Nathaniel Nunes <n.nunes@clerkswell.com>
* Initial working localLinks migration
* Cleanup
* Refactor for extendability part 1
* Refactor part 2
* Fixed circular dependency
* Made sure all the extendable logic for the migration is marked as obsolete for v18
* Refactor to use Interface and non circular references instead
* Use Npco for SQLserver compatibility and include media properties too
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
As noted in #16659, everything from `App_Plugins` is copied into the web
output. This is unneeded and in the case of the `node_modules` directory
unwanted behavior, these files are sources and not output that Umbracco
needs to serve packages/extensions.
The old behavior has led to many of the "path too long" errors we've
been seeing while building extensions.
* Adds Document URL Repository
* Extracts Document Workspace Info Links to its own component
Refactored to use the new Document URL Repository.
Plus other housekeeping on the main Document Workspace Info component.
* Refactored Document Workspace Info History component
to listen for the "Request Reload Structure" event
* Refactored Document Workspace Info Reference component
* Added tests for userGroup
* Clean up
* Updated userGroup tests
* Updated tests
* Updated tests
* Cleane up
* Cleaned up
* Bumped versions
* Run user tests
* Cleaned up
* Added method for checking if the document tree is empty
* Bumped version
* Reverted
* Added Content tests with custom data type
* Added tests for List View Media data type in Media section
* Updated method name due to api helper changes
* Updated the assertion of Content tests with custom data type
* Bumped version of test helper
* Make all Content tests run in the pipeline
* Skipped test for code editor as it is removed
* Fixed comment
* Make Media tests running in the pipeline
* Bumped version
* Updated code due to ui helper changes
* Bumped version of test helper
* Updated tests for bulk trash in the media section
* Fixed notification message
* Make Content tests and Media tests run in the pipeline
* Added more waits
* Reverted
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Bumped version of test helper
* Make all tests for rendering content run in the pipeline
* Fixed comments
* Removed blank lines
* Fixed name
* Make all smoke tests run in the pipeline
* Added tests for rendering content with dropdown
* Added tests for rendering content with Image Cropper - not done
* Updated tests for rendering content due to ui helper changes
* Updated tests for rendering content with image cropper
* Updated tests due to the api helper changes
* Bumped version of test helper
* Make all the tests for rendering content run in the pipeline
* Removed blank lines
* Format code
* Fixed test name
* Reverted
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Added tests for rendering content with checkbox list
* Added tests for rendering content with date picker - not done
* Updated tests for rendering content with date picker
* Updated tests for rendering content due to ui helper changes
* Bumped version
* Removed blank lines
* Make Rendering Content tests run in the pipeline
* Changed method name due to test helper changes
* Reverted
* Adds `hideTarget` flag
* Sets default modal size to "medium"
* Code tidy-up
* Updates "defaultdialogs_linkinternal" localizations
to remove the `:` suffix (from all languages)
* Applied `standalone` to single Document Picker item
* Adds `icon` to the document/media detail types
* Link Picker modal: total refactor!
Swaps the inline trees with input pickers.
Makes use of `<umb-property-layout>` component.
+ plenty of TLC in the UI/UX!
* Sets the `allowedMediaTypeIds` for media picker filtering
e.g. folders are not selectable
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Added tests for rendering content with approved color
* Added tests for rendering content with numeric
* Added tests for rendering content with tags
* Added tests for rendering content with textarea
* Updated tests for rendering content with textstring due to test helper changes
* Added tests for rendering content with truefalse
* Bumped version of test helper
* Make all tests for rendering content run in the pipeline
* Fixed comments
* Removed blank lines
* Fixed name
* Make all smoke tests run in the pipeline
* tiptop min height configuration
* Removed `min-height`; credit to @innovoix
* Clarified the use of `display:flex`
* Changed to use `height` instead of `min-height`
as this will control the maximum height of the editor input area.
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Sets `umb-collection-action-bundle` to use `display:contents`
This should only display if the component has any contents.
* Refactored Dictionary collection toolbar
* Refactored Document collection toolbar
Deprecates `umb-document-collection-toolbar`
* Refactored Media collection toolbar
Deprecates `umb-media-collection-toolbar`
* Refactored Extension collection toolbar
Enables support for future Create and Views functionality.
* Exported collection element classes as `element`
deprecated the "default" export
* Adds `elementName` constant
* Refactored UserGroup collection toolbar
Deprecates `umb-user-group-collection-header`
* Code formatting
* Added `umb-collection-filter-field` component
Reusable filter field for a collection toolbar.
* Used `umb-collection-filter-field` component
on existing collections, removed duplicated code.
* Reverted adding `elementName` constant
Seems that this may cause issues with the eslint plugin
(for ensuring element names start with "umb-").
* build(deps): update @umbraco-ui/uui from 1.7.1 to 1.11.0
* fix: umb-login-element no attributes
Cherry-picked a fix from V14 where the custom login input component was no longer needed, which was fixed because it errors out. This simplifies the login form.
* cherry-pick code to handle 'enter' click from v14
* fix: anchors and query strings do not work
Since the change from UDIs to localLinks in href, the pattern matched a little too much in the href section completely ignoring any "extras" such as querystrings and anchors after the locallink, which meant that the locallink did not get replaced at all if they were present. This is fixed by limiting the regexp a bit.
* fix: legacy links do not follow the same regexp as new links
Because we are no longer matching the whole `href` attribute but only some of its contents, we need to fix up the old pattern. It has been extended with matching groups that follow the same pattern as the new links.
* feat: allow a-tags to be multiline
example:
```html
<a
type="document"
href="/{localLink:<GUID>}">
Test
</a>
```
* fix: split regex into two parts: first a tokenizer for a-tags and then a type-finder
* fix: ensure only "document" and "media" are matching to speed up the pattern
* feat: allow a-tags to be multiline
(cherry picked from commit 35e8f2e460)
* Adjust Image Cropper focal point to be consistent with Color Area handle
* Make focus point focusable via keyboard
* Update import of utils from uui
* Make focal point accessible via keyboard
* Move logic to function
* Reset coords
* Remove reset coords
* Reset coords if focal point is updated to center
* Format document
* Set focal point property instead
* Formatting
* Fix warnings
* Width and height
* Remove added outline so we can see when focal point has focus via keyboard
* Reset coords
* Cleanup
* Update import
* Cleanup
* Use UmbChangeEvent
* Adjust elements
* Import drag for uui
* Cleanup styling
* Cleanup
* Remove unnecessary events
* Container is HTMLElement
* Check focal point updated
* Fix conflicts after merge
* Null check
* Update correct element types
* Revert to custom event
* Cleanup console
* Don't hide overflow, so focal point is not cut off on edges on image
* Add margin top at actions so focal point doesn't overlap buttons
* Top margin at actions
* Crosshair cursor when focal point is not hidden
* Cancel update focal point
* Add move cursor to viewport image
* Use crop label
* Add missing label
* Disable draggable of image as in old backoffice
* Fix previous merge conflicts
* Update src/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Remove disconnectedCallback
* Ignore in the debug element
* Add custom event for focal point change
* Import type
* Replace with UmbImageCropChangeEvent
* Use UmbFocalPointModel
* Move set focal pont style to setter
* Update custom event name
* Localize focal point label
* Fix import of UmbFocalPointModel type
* Localize buttons
* Update labels
* Combine imports
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Added test
* Small changes
* Added content start node tests
* Added media start node tests
* Cleaned up
* More updates
* Cleaned up
* Added wait
* Cleaned up
* Bumped helpers
* Updated to run user tests
* Fixed user tests
* Bumped helpers
* Added missing semicolon
* Fixes based on comments
* Run smoke tests
* Add ContentCache test
* Use SemaphoreSlim as write lock
* Apply lock imrpovements to SnapDictionary
* Obsolete unused MonitorLock
(cherry picked from commit c3db3457e7)
* Add a const for 'Umb.Condition.WorkspaceAlias'
* Update usages 'Umb.Condition.WorkspaceAlias' of to the new CONST
* Somehow accidently deleted .nvmrc
* Change from 'src/packages/core/workspace/conditions/const.js' to '@umbraco-cms/backoffice/workspace' as the import
* Another fix from the build errors from GitHub - didnt come up locally which was weird
* Update src/packages/core/workspace/conditions/workspace-alias.condition.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Renames the consts as agreed in the PR and adds the deprecated notice
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Adds read-only mode to Color Picker Property Editor
Implemented the read-only mode of the Color Picker Property Editor UI to close https://github.com/umbraco/Umbraco-CMS/issues/17045.
* feat: forward the `readonly` attribute to the swatch* elements
* chore: rearrange properties in the element
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Removed my outdated TODO comments
* Manifest Picker code tidy-up
* Attribute tidy-up
Things I'd picked up during development
* Corrects Storybook control type for `umb-localize` key
* Ran `npm run lint:fix`
* Updated step to verify the notification message
* Added tests for notification message
* Bumped version
* Updated expected notification message
* Bumped version
* Added tests for textstring in the rendered content
* Updated tests for rendering content with textstring
* Added tests for rendering content with numeric
* Added tests for rendering content with textarea
* Removed tests
* Bumped version
* Make all tests for rendering content run in the pipeline
* Make all smoke tests run in the pipeline
* Added more waits
* Updated assert steps
* Fixed api method name
* Added more waits to avoid the failing test in window
* Updated tests due to business changes
* Added more waits to avoid the failing tests in window
* Updated test due to Ui changes
* Bumped version
* Bumped version of test helper
* Bumped version
* Add ContentCache test
* Use SemaphoreSlim as write lock
* Apply lock imrpovements to SnapDictionary
* Obsolete unused MonitorLock
(cherry picked from commit c3db3457e7)
* fix label
* Make umb-block-workspace-view-edit Respect Translations as well
* fix umb-workspace-editor
* Update src/libs/localization-api/localization.controller.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/block/block-type/components/block-type-card/block-type-card.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Update src/packages/block/block/workspace/block-workspace-editor.element.ts
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix: ensure strings are actual strings at runtime
* fix: allow LocalizationController#string to receive unknown values to support various usecases
* test: add tests for undefined|unknown scenarios
* fix: translate the name of the entity as well
* fix: localize create labels
* fix: localize only when data changes
* chore: fix sonarcloud issues
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* update backoffice submodule
* update backoffice submodule
* Fix internal class being returned from media cache service
Return the correct models from the media cache service
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix: remove unwanted HTML from translation values
* feat: add a general sanitizeHTML function
* fix: use the `sanitizeHTML` function where values are showed in the Backoffice
* Add cache refresher
* make public as needed for serialization
* Use content type cache to get content type out
* Refactor to use ContentCacheNode model, that goes in the memory cache
* Remove content node kit as its not needed
* Implement tests for ensuring caching
* Implement better asserts
* Implement published property
* Refactor to use mapping
* Rename to document tests
* Update to test properties
* Create more tests
* Refactor mock tests into own file
* Update property test
* Fix published version of content
* Change default cache level to elements
* Refactor to always have draft
* Refactor to not use PublishedModelFactory
* Added tests
* Added and updated tests
* Fixed tests
* Don't return empty object with id
* More tests
* Added key
* Another key
* Refactor CacheService to be responsible for using the hybrid cache
* Use notification handler to remove deleted content from cache
* Add more tests for missing functions
* Implement missing methods
* Remove HasContent as it pertains to routing
* Fik up test
* formatting
* refactor variable names
* Implement variant tests
* Map all the published content properties
* Get item out of cache first, to assert updated
* Implement member cache
* Add member test
* Implement media cache
* Implement property tests for media tests
* Refactor tests to use extension method
* Add more media tests
* Refactor properties to no longer have element caching
* Don't use property cache level
* Start implementing seeding
* Only seed when main
* Add Immutable for performance
* Implement permanent seeding of content
* Implement cache settings
* Implement tests for seeding
* Update package version
* start refactoring nurepo
* Refactor so draft & published nodes are cached individually
* Refactor RefreshContent to take node instead of IContent
* Refactor media to also use cache nodes
* Remove member from repo as it isn't cached
* Refactor media to not include preview, as media has no draft
* create new benchmark project
* POC Integration benchmarks with custom api controllers
* Start implementing content picker tests
* Implement domain cache
* Rework content cache to implement interface
* Start implementing elements cache
* Implement published snapshot service
* Publish snapshot tests
* Use snapshot for elements cache
* Create test proving we don't clear cache when updating content picker
* Clear entire elements cache
* Remove properties from element cache, when content gets updated.
* Rename methods to async
* Refactor to use old cache interfaces instead of new ones
* Remove snapshot, as it is no longer needed
* Fix tests building
* Refactor domaincache to not have snapshots
* Delete benchmarks
* Delete benchmarks
* Add HybridCacheProject to Umbraco
* Add comment to route value transformer
* Implement is draft
* remove snapshot from property
* V15 updated the hybrid caching integration tests to use ContentEditingService (#16947)
* Added builder extension withParentKey
* Created builder with ContentEditingService
* Added usage of the ContentEditingService to SETUP
* Started using ContentEditingService builder in tests
* Updated builder extensions
* Fixed builder
* Clean up
* Clean up, not done
* Added Ids
* Remove entries from cache on delete
* Fix up seeding logic
* Don't register hybrid cache twice
* Change seeded entry options
* Update hybrid cache package
* Fix up published property to work with delivery api again
* Fix dependency injection to work with tests
* Fix naming
* Dont make caches nullable
* Make content node sealed
* Remove path and other unused from content node
* Remove hacky 2 phase ctor
* Refactor to actually set content templates
* Remove umbraco context
* Remove "HasBy" methods
* rename property data
* Delete obsolete legacy stuff
* Add todo for making expiration configurable
* Add todo in UmbracoContext
* Add clarifying comment in content factory
* Remove xml stuff from published property
* Fix according to review
* Make content type cache injectible
* Make content type cache injectible
* Rename to database cache repository
* Rename to document cache
* Add TODO
* Refactor to async
* Rename to async
* Make everything async
* Remove duplicate line from json schema
* Move Hybrid cache project
* Remove leftover file
* Refactor to use keys
* Refactor published content to no longer have content data, as it is on the node itself
* Refactor to member to use proper content node ctor
* Move tests to own folder
* Add immutable objects to property and content data for performance
* Make property data public
* Fix member caching to be singleton
* Obsolete GetContentType
* Remove todo
* Fix naming
* Fix lots of exposed errors due to scope test
* Add final scope tests
* Rename to document cache service
* Rename test files
* Create new doc type tests
* Add ignore to tests
* Start implementing refresh for content type save
* Clear contenttype cache when contenttype is updated
* Fix test
Teh contenttype is not upated unless the property is dirty
* Updated tests
* Added tests
* Use init for ContentSourceDto
* Startup of setup
* Fix get by key in PublishedContentTypeCache
* Remove ContentType from PublishedContentTypeCache when contenttype is deleted
* Created interfaces for the builder with the necessary properties
* Created builder for PropertyTypeContainer
* Created builder for PropertyTypeEditing
* Created builder for PropertyTypeValidationEditing
* Made adjustments to the builder
* Updated name of usage
* Commented out to test
* Cleaned up builders
* Updated integration test setup
* Moved tests
* Added interface
* Add IDocumentSeedKeyProvider and migrate existing logic to seed key provider
* Added functionality to the INavigationQueryService to get root keys
* Fixed issue with navigation
* Created helper to Convert a IContentType to ContentTypeUpdateModel
* Added interfaces
* Added builder
* Cleaned up builders and added fixes
* Added tests for PublishedContentTypeCache
* Applied changes in builder
* Add BreadthFirstKeyProvider
* Use ISet for seedkey providers
* Implement GetContentSource by key
* Seed the cache with keys provided by seed key providers
* Builder updates
* Test setup updates
* Updated tests
* Dont require contenttype keys for seeding
* Fix cache settings
* Don't inject cache settings into SeedingNotificationHandler
* Fix tests
* Use enlistment for setting updated cache item
* Pin seeded nodes for longer
* Fix BreadthFirstKeyProvider
* Fix ContentTypeSeedKeyProvider
* Fix tests
* Only seed published documents
* Only cache published if contentCacheNode is not draft
* Fix incorrect templateId
* Removed unnecessary setup
* initialized value
* Fixed template test
* Removed test
* Updated tests
* Removed code that was not used
* Removed unused cacheSettings
* Re-organize to support media cache seeding
* Add MediaBreadthFirstKeyProvider
* Seed media
* Don't use IdKeyMap when removing content from cache
* Don't clear IdKeyMap in DocumentCacheService
* Add unit tests
* Don't use IdKeyMap when deleting media
* Add default value to timespan
* Use cancellation tokens when doing loop
* Fixed Models Builder error
* Builder testing
* Media test
* Created builders
* Updated method from getByKey to getById to maintain structure
* Updated test setup
* Moved tests
* Cleaned up builders
* Added helper
* Added space
* Updated tests
* Cleaned setup
* Added tests for MediaTypes
* Uncommented tests
* Added builder extensions
* Added interfaces for builder methods
* Updated to use interface pattern
* Updated name
* Used builder
* Cleaned up test
* Added media scope tests
* Removed PropertyTypeModelBuilder
* moved PropertyTypeModelBuilder to PropertyTypeEditingBuilder
* Removed constructor
* Removed duplicate
* Fixed naming
* Reverted
* Removed space
* Added todos
* Removed only run on linux
* Commet out DocumentHybridCacheTemplateTest again
This is fixed in the release branch
* Update media when media type is updated
* Remove todo the tests pass now
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Fixed the failing tests of Member Group due to UI changes
* Fixed the failing tests of Member due to UI changes
* Fixed the failing tests of User due to UI changes
* Fixed failing tests for Dictionary and Document Type
* Updated tests due to test helper changes
* Bumped version
* Updated assert steps due to the response changes
* Updated tests due to api helper changes
* Updated tests due to UI changes
* Fixed tests for delete partial view
* Fixed tests
* Added more waits
* Updated assert steps
* Fixed failing tests for Block Grid and Media
* Added more waits
* Added skip tests
* Removed waits time
* Updated assertion steps for User
* Added todo
* Updated tests due to api helper changes
* Bumped version
* Added skip tests
* Added tests for List view
* More tests
* Added rest of test
* Bumped version
* Fixed failing tests
* Added tests and fixed comments
* Cleaned up tests
* Bumped testhelpers
* Bumped again
* Set condition to only run sql server when enabled
* Run all content test
* Reverted changes
* Added tests for Allow At Root property
* Added Content tests for Allowed Child Nodes property
* Added Content tests for the Allow at root property
* Added Content tests for the Allowed child node property
* Added Content tests for the Collection property
* Added Content tests with allow vary by culture
* Added more waits
* Updated tests due to api helper changes
* Added Content tests with allowed templates
* Bumped version of test helper
* Updated code due to api helper changes
* Fixed naming
* Fix warnings SA1111, SA1028, SA1500, IDE1270 in Umbraco.Web.Website, and updated rules.
* Remove warnings: IDE0270: Null check can be simplified
* More SqlServer project warnings resolved
* CS0105 namespace appeared already
* Suppress warning until implementation:
#pragma warning disable CS0162 // Unreachable code detected
#pragma warning disable CS0618 // Type or member is obsolete
CS0162 remove unreachable code
SA1028 remove trailing whitespace
SA1106 no empty statements
CS1570 malformed XML
CS1572 corrected xml parameter
CS1573 param tag added
IDE0007 var not explicit
IDE0008 explicit not var
IDE0057 simplify substring
IDE0074 compound assignment
CA1825 array.empty
Down to 3479 warnings
* - SA1116, SA117 params on same line
- IDE0057 substring simplified
Specific warnings for Umbraco.Tests.Benchmarks
* Fixed IDE0074 compound assignment and added specific warnings for Umbraco.Tests.Common
* Specific warnings for Umbraco.Tests.Integration and Umbraco.Tests.Common
Fixed:
- SA1111, SA1116, SA117 params and line formatting (not all as there are many)
- SA1122 string.Empty
- IDE0057 simplify substring
- IDE0044,IDE0044 make field readonly
- IDE1006 naming rule violation (add _)
- SA1111 closing parenthesis on line of last parameter
- SA1649 filename match type name
- SA1312,SA1306 lowercase variable and field names
* Fixed various warnings where they are more straight-forward, including:
- SA1649 file name match type name
- SA111 parenthesis on line of last parameter
- IDE0028 simplify collection initializer
- SA1306 lower-case letter field
- IDE044 readonly field
- SA1122 string.Empty
- SA1116 params same line
- IDE1006 upper casing
- IDE0041 simplify null check
Updated the following projects to only list their remaining specific warning codes:
- Umbraco.Tests.UnitTests
Typo in `Umbraco.Web.Website` project
* Reverted test change
* Now 1556 warnings.
Fixed various warnings where they are more straight-forward, including:
- SA1111/SA1116/SA1119 parenthesis
- SA1117 params
- SA1312 lowercase variable
- SA1121 built-in type
- SA1500/SA1513/SA1503 formatting braces
- SA1400 declare access modifier
- SA1122 string.Empty
- SA1310 no underscore
- IDE0049 name simplified
- IDE0057 simplify substring
- IDE0074 compound assignment
- IDE0032 use auto-property
- IDE0037 simplify member name
- IDE0008 explicit type not var
- IDE0016/IDE0270/IDE0041 simplify null checks
- IDE0048/SA1407 clarity in arithmetic
- IDE1006 correct param names
- IDE0042 deconstruct variable
- IDE0044 readonly
- IDE0018 inline variable declarations
- IDE0074/IDE0054 compound assignment
- IDE1006 naming
- CS1573 param XML
- CS0168 unused variable
Comment formatting in project files for consistency.
Updated all projects to only list remaining specific warning codes as warnings instead of errors (errors is now default).
* Type not var, and more warning exceptions
* Tweaked merge issue, readded comment about rollback
* Readded comment re rollback.
* Readded comments
* Comment tweak
* Comment tweak
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.
- Are you about to [create a pull request for Umbraco][contribution guidelines]?
- Are you trying to get to the bottom of a problem in your existing Umbraco installation?
- Are you about to [create a pull request for Umbraco][contribution guidelines]?
- Are you trying to get to the bottom of a problem in your existing Umbraco installation?
If the answer is yes, please read on. Otherwise, make sure to head on over [to the download page](https://our.umbraco.com/download) and start using Umbraco CMS as intended.
@@ -13,18 +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.
## Getting Started:
To run umbraco, we first need to initialize the client git submodule:
* Execute `git submodule update --init` to get the files into Umbraco.Web.UI.Client project
* If you are going to work on the Backoffice, you can either go to the Umbraco.Web.UI.Client folder and check out a new branch or set it up in your IDE, which will allow you to commit to each repository simultaneously:
* **Rider**: Preferences -> Version Control -> Directory Mappings -> Click the '+' sign
* If you get a white page delete Umbraco.Cms.StaticAssets\wwwroot\umbraco folder and run `npm ci && npm run build:for:cms` inside Umbraco.Web.UI.Client folder to clear out any leftover files from older versions.
### Latest version
* If you want to get the latest changes from the client repository, run `git submodule update` again which will pull the latest main branch.
## Debugging source locally
## Working with the Umbraco source code
Did you read ["Are you sure"](#are-you-sure)?
@@ -32,82 +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.
#### Debugging with VS Code
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...
In order to build the Umbraco source code locally with Visual Studio Code, first make sure you have the following installed.
### Prerequisites
* [Visual Studio Code](https://code.visualstudio.com/)
In order to work with the Umbraco source code locally, first make sure you have the following installed.
Open the root folder of the repository in Visual Studio Code.
- 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/)
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 Watch` and then run the `Client Build` task in the same way.
### Familiarizing yourself with the code
You can also run the tasks manually on the command line:
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.
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 dev
cd <solution root>\src\Umbraco.Web.UI
dotnet run --no-build
```
If you just want to build the UI Client to `Umbraco.Web.UI` then instead of running `dev`, you can do: `npm run build`.
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.
**The initial Gulp build might take a long time - don't worry, this will be faster on subsequent runs.**
### Front-end only changes
You might run into [Gulp quirks](#gulp-quirks).
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.
To run the C# portion of the project, either hit <kbd>F5</kbd> to begin debugging, or manually using the command line:
Conversely, if you are working on front-end only, you want to build the back-end once and then run it. Before you do so, update the configuration in `appSettings.json` to add the following under `Umbraco:Cms:Security`:
**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.
To build the front end, you'll first need to run `cd src\Umbraco.Web.UI.Client && npm install` in the command line (or `cd src\Umbraco.Web.UI.Client; npm install` in PowerShell). Then find the Task Runner Explorer (View → Other Windows → Task Runner Explorer) and run the `build` task under `Gulpfile.js`. You may need to refresh the Task Runner Explorer before the tasks load.
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're working on the backoffice, you may wish to run the `dev` command instead while you're working with it, so changes are copied over to the appropriate directories and you can refresh your browser to view the results of your changes.
```
cd <solution root>\src\Umbraco.Web.UI.Login
npm run build
```
**The initial Gulp build might take a long time - don't worry, this will be faster on subsequent runs.**
In both front-end projects, if you've refreshed your branch from the latest on GitHub you may need to update front-end dependencies.
You might run into [Gulp quirks](#gulp-quirks).
To do that, run:
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.
```
npm ci --no-fund --no-audit --prefer-offline
```
"The rest" 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.
### Full-stack changes
**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.**
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.
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.
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
@@ -115,7 +133,7 @@ Did you read ["Are you sure"](#are-you-sure)?
Do note that this is only required if you want to test out your custom changes in a separate site (not the one in the Umbraco.Web.UI), if you just want to test your changes you can run the included test site using: `dotnet run` from `src/Umbraco.Web.UI/`
You may want to build a set of NuGet packages with your changes, this can be done using the dotnet pack command.
You may want to build a set of NuGet packages with your changes, this can be done using the dotnet pack command.
First enter the root of the project in a command line environment, and then use the following command to build the NuGet packages:
@@ -127,17 +145,18 @@ You can then add these as a local NuGet feed using the following command:
`dotnet nuget add source <Path to Build.Out folder> -n MyLocalFeed`
This will add a local nuget feed with the name "MyLocalFeed" and you'll now be able to use your custom built NuGet packages.
This will add a local nuget feed with the name "MyLocalFeed" and you'll now be able to use your custom built NuGet packages.
### Cleaning up
Once the solution has been used to run a site, one may want to "reset" the solution in order to run a fresh new site again.
The easiest way to do this by deleting the following files and folders:
* src/Umbraco.Web.UI/appsettings.json
* src/Umbraco.Web.UI/umbraco/Data
You only have to remove the connection strings from the appsettings, but removing the data folder ensures that the sqlite database gets deleted too.
- src/Umbraco.Web.UI/appsettings.json
- src/Umbraco.Web.UI/umbraco/Data
You only have to remove the connection strings from the appsettings, but removing the data folder ensures that the sqlite database gets deleted too.
Next time you run a build the `appsettings.json` file will be re-created in its default state.
@@ -145,13 +164,14 @@ This will leave media files and views around, but in most cases, it will be enou
To perform a more complete clear, you will want to also delete the content of the media, views, scripts... directories.
The following command will force remove all untracked files and directories, whether they are ignored by Git or not. Combined with `git reset` it can recreate a pristine working directory.
The following command will force remove all untracked files and directories, whether they are ignored by Git or not. Combined with `git reset` it can recreate a pristine working directory.
@@ -165,18 +185,5 @@ 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).
### Gulp Quirks
You may need to run the following commands to set up gulp properly:
```
npm cache clean --force
npm ci
npm run build
```
[ 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 "
[ contribution guidelines]: CONTRIBUTING.md "Read the guide to contributing for more details on contributing to Umbraco"
[ 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.
8.**Create pull request**
@@ -52,7 +61,7 @@ The following steps are a quick-start guide:
## Further contribution guides
- [Before you start](contributing-before-you-start.md)
- [Finding your first issue: Up for grabs](contributing-before-you-start.md)
- [Finding your first issue: Up for grabs](contributing-first-issue.md)
- [Contributing to the new backoffice](https://docs.umbraco.com/umbraco-backoffice/)
### 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.
@@ -6,19 +6,14 @@ In the high probability that you are porting something from angular JS then here
Here is the LIT documentation and playground: [https://lit.dev](https://lit.dev)
### How best to find what needs converting from the old backoffice?
1. Navigate to [https://github.com/umbraco/Umbraco-CMS](https://github.com/umbraco/Umbraco-CMS)
2. Make sure you are on the `v14/dev` branch
### What is the process of contribution?
- Read the [README](README.md) to learn how to get the project up and running
- Find an issue marked as [community/up-for-grabs](https://github.com/umbraco/Umbraco.CMS.Backoffice/issues?q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs) - note that some are also marked [good first issue](https://github.com/umbraco/Umbraco.CMS.Backoffice/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) which indicates they are simple to get started on
- Umbraco HQ owns the Management API on the backend, so features can be worked on in the frontend only when there is an API, or otherwise if no API is required
- A contribution should be made in a fork of the repository
- Once a contribution is ready, a pull request should be made to this repository and HQ will assign a reviewer
- A pull request should always indicate what part of a feature it tries to solve, i.e. does it close the targeted issue (if any) or does the developer expect Umbraco HQ to take over
- Read the [README](README.md) to learn how to get the project up and running
- Find an issue marked as [community/up-for-grabs](https://github.com/umbraco/Umbraco.CMS.Backoffice/issues?q=is%3Aissue+is%3Aopen+label%3Acommunity%2Fup-for-grabs) - note that some are also marked [good first issue](https://github.com/umbraco/Umbraco.CMS.Backoffice/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) which indicates they are simple to get started on
- Umbraco HQ owns the Management API on the backend, so features can be worked on in the frontend only when there is an API, or otherwise if no API is required
- A contribution should be made in a fork of the repository
- Once a contribution is ready, a pull request should be made to this repository and HQ will assign a reviewer
- A pull request should always indicate what part of a feature it tries to solve, i.e. does it close the targeted issue (if any) or does the developer expect Umbraco HQ to take over
## Contributing in general terms
@@ -32,31 +27,27 @@ The management API is the colloquial term used to describe the new backoffice AP
The frontend has an API formatter that takes the OpenAPI schema file and converts it into a set of TypeScript classes and interfaces.
### Caveats
1. The backoffice can be run and tested against a real Umbraco instance by cloning down the `v14/dev` branch, but there are no guarantees about how well it works yet.
@@ -132,39 +123,39 @@ To declare the Published Cache Status Dashboard as a new manifest, we need to ad
Let’s go through each of these properties…
- Type: can be one of the following:
- Type: can be one of the following:
- section - examples include: `Content`, `Media`
- dashboard - a view within a section. Examples include: the welcome dashboard
- propertyEditorUi
- editorView
- propertyAction
- tree
- editor
- treeItemAction
- section - examples include: `Content`, `Media`
- dashboard - a view within a section. Examples include: the welcome dashboard
- propertyEditorUi
- editorView
- propertyAction
- tree
- editor
- treeItemAction
- Alias: is the unique key used to identify this item.
- Name: is the human-readable name for this item.
- Alias: is the unique key used to identify this item.
- Name: is the human-readable name for this item.
- ElementName: this is the customElementName declared on the element at the top of the file i.e
- ElementName: this is the customElementName declared on the element at the top of the file i.e
```typescript
@customElement('umb-dashboard-published-status')
```
- Js: references a function call to import the file that the element is declared within
- Js: references a function call to import the file that the element is declared within
- Weight: allows us to specify the order in which the dashboard will be displayed within the tabs bar
- Weight: allows us to specify the order in which the dashboard will be displayed within the tabs bar
- Meta: allows us to reference additional data - in our case, we can specify the label that is shown in the tabs bar and the pathname that will be displayed in the URL
- Meta: allows us to reference additional data - in our case, we can specify the label that is shown in the tabs bar and the pathname that will be displayed in the URL
- Conditions: allows us to specify the conditions that must be met for the dashboard to be displayed. In our case, we are specifying that the dashboard will only be displayed within the Settings section
- Conditions: allows us to specify the conditions that must be met for the dashboard to be displayed. In our case, we are specifying that the dashboard will only be displayed within the Settings section
## API mock handlers
Running the app with `npm run dev`, you will quickly notice the API requests turn into 404 errors. To hit the API, we need to add a mock handler to define the endpoints that our dashboard will call. In the case of the Published Cache Status section, we have several calls to work through. Let’s start by looking at the call to retrieve the current status of the cache:


From the existing functionality, we can see that this is a string message that is received as part of a `GET` request from the server.
@@ -172,18 +163,18 @@ So to define this, we must first add a handler for the Published Status called `
```typescript
const { rest } = window.MockServiceWorker;
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
import { umbracoPath } from "@umbraco-cms/backoffice/utils";
'Database cache is ok. ContentStore contains 1 item and has 1 generation and 0 snapshot. MediaStore contains 5 items and has 1 generation and 0 snapshot.',
"Database cache is ok. ContentStore contains 1 item and has 1 generation and 0 snapshot. MediaStore contains 5 items and has 1 generation and 0 snapshot."
)
);
}),
];
```
@@ -193,7 +184,7 @@ It returns a `200 OK` response and a string value with the current “status”
An example `POST` is similar. Let’s take the “Refresh status” button as an example:


From our existing functionality, we can see that this makes a `POST` call to the server to prompt a reload of the published cache. So we would add a new endpoint to the mock handler that would look like:
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name:Build and test
name:Test Backoffice
on:
push:
branches:
- main
- contrib
- release/*
- v*/dev
paths:
- src/Umbraco.Web.UI.Client/**
pull_request:
branches:
- main
- contrib
- release/*
- v*/dev
paths:
- src/Umbraco.Web.UI.Client/**
# Allows GitHub to use this workflow to validate the merge queue
<!-- TODO: [NU5104] Warning As Error: A stable release of a package should not have a prerelease dependency. Either modify the version spec of dependency -->
<!-- Both OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer bring in a vulnerable version of Microsoft.IdentityModel.JsonWebTokens -->
<!-- Both Azure.Identity, Microsoft.EntityFrameworkCore.SqlServer, Dazinator.Extensions.FileProviders bring in legacy versions of System.Text.Encodings.Web -->
<!-- OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer brings in a vulnerable version of Microsoft.IdentityModel.JsonWebTokens -->
<!-- Take top-level depedendency on Microsoft.IdentityModel.JsonWebTokens, because OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer depends on a vulnerable version -->
<!-- Azure.Identity, Microsoft.EntityFrameworkCore.SqlServer and Dazinator.Extensions.FileProviders brings in a legacy version of System.Text.Encodings.Web -->
# Filter tests that are not part of the Umbraco.Infrastructure and ManagementApi namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
# Filter tests that are not part of the Umbraco.Infrastructure and ManagementApi namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
# Filter tests that are not part of the Umbraco.Infrastructure and ManagementApi namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
# Filter tests that are not part of the Umbraco.Infrastructure and ManagementApi namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
while (($status -ne 'running') -and ($attempt -lt $maxAttempts)) {
Start-Sleep -Seconds 5
# We use the docker inspect command to check the status of the container. If the container is not running, we wait 5 seconds and try again. And if reaches 12 attempts, we fail the build.
# Filter tests that are not part of the Umbraco.Infrastructure and ManagementApi namespace. So this will run all tests that are not part of the Umbraco.Infrastructure namespace
while (($status -ne 'running') -and ($attempt -lt $maxAttempts)) {
Start-Sleep -Seconds 5
# We use the docker inspect command to check the status of the container. If the container is not running, we wait 5 seconds and try again. And if reaches 12 attempts, we fail the build.
=>$"{apiDesc.GroupName}_{apiDesc.ActionDescriptor.AttributeRouteInfo?.Template ?? apiDesc.ActionDescriptor.RouteValues["controller"]}_{(apiDesc.ActionDescriptor.RouteValues.TryGetValue("action", out var action) ? action : null)}_{apiDesc.HttpMethod}";
<!-- Both OpenIddict.AspNetCore, Npoco.SqlServer and Microsoft.EntityFrameworkCore.SqlServer bring in a vulnerable version of Microsoft.IdentityModel.JsonWebTokens -->
:thrownewInvalidOperationException("Could not retrieve the current member. This method should only ever be invoked when a member has been authorized.");
// 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.