* Support new localLink format in core link parsing
* Updated devliery api to work with the new locallinks format
Added tests for old and new format handling.
* Fix error regarding type attribute not always being present (for example old format or non local links)
* Create seperate Create and Update in ContentTypeServiceBase
* Fix up notification for update
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* separate backoffice install into its own template
* add new job to build the backoffice npm package
* move location of templates
* set version, then build, then pack
* use nbgv to get just the NpmPackageVersion
* calculate version earlier and for both builds
* merge two tasks
* add Build keyword to the display name
* get the node version from the backoffice
* update backoffice submodule
* bump npm version before restoring cache to ensure the cache key doesn't change
* add template to umbraco.sln
* Update integration test base class to verify that calls to ServiceDescriptor.ImplementationType are guarded for keyed services
* Fix unguarded calls to ServiceDescriptor.ImplementationType for keyed services
* Do not rely on claims to figure out user access + prepare for claims removal
* Fix typos :)
* Ensure we fire all relevant notifications when creating and updating user groups
* Leave it to the cache refreshers to flush user cache data (start nodes)
* Added tests for users
* Additional tests
* Found additional test scenarios
* File select
* Fixed tests
* Cleaned up user tests
* Bumped versions of helpers and builder
* Updated naming of method
* More updates
* Added more tests
* Fixed tests
* Fixed skipped tests
* Final touches
* Bumped
* Run userTests
* Fixes made based on review
* Updated so we run our smoketest again
* Added unhappy path tests for MemberGroup
* Added unhappy path tests for Member
* Bumped version of test helpers
* Added smoke tag to make all the tests running in the pipeline
* Update tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts
* Removed smoke tags before merging
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Added tests for Document blueprints
* Fixed the failing tests for Partial View
* Updated tests for Document Blueprints
* Fixed the delete document blueprints tests
* Fixed method name due to the test helpers changes
* Fix arrange steps
* Bumped version of test helpers
* Removed 's' in the file name
* Removed the step to reload tree
* Fixed comments
* Removed test.describe before merging
* Add missing mapping for ActionParameters
* Remove -ActionParameters as that is now mapped
* Update OpenApi.json
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Added tests for Multi URL Picker
* Added tests for Multiple Media Picker
* Added tests for RichTextEditor - not done
* Added tests for Richtext Editor
* Added tests for Content Picker
* Added tests for Tags
* Fixed the tests for Approved Color
* Added tests for Checkbox list
* Fixed tests for DataTypeFolder
* Fixed tests for DatePicker due to api changes
* Added tests for Dropdown
* Fixed tests for ImageCropper due to ui changes
* Added tests for List View
* Added tests for Multiple Media Picker
* Added tests for RichTextEditor
* Added tests for Radiobox
* Added tests for True false
* Added tests for Upload
* Bumped version of test helper
* Bumped version
* Fixed code format
* Removed hard waits
* Updated tests for Template and Partial View - not done
* Added insert section tests
* Used defaultTemplateContent to avoid duplicate code
* Added insert section tests
* Added missing tests for Partial View
* Added missing tests for Scripts
* Added missing tests for Stylesheet
* Added missing tests for Template
* Changed method's name due to test helper changes
* Added skip tests
* Bumped version of test helper
* Reversed waits
* Changed createThreeDotsButton to createButton due to UI changes
* Removed List View - Members tests as the UI changes
* Added more waits
* Removed unnecessary waits
* Added and removed skip tests
* Fixed and added missing tests
* Changed name of test file for Media Picker, Image Media Picker, Multiple Media Picker and Multiple Image Media Picker
* Updated and added missing tests for Data Types
* Bumped version of test helper
* Changed configuration of smokeTest to make all DataType tests run in the pipeline. It should remove before merging
* Added skip for all tests of Numeric as there is no configuration now
* Removed test.describle
* Change syntax of smoke tag
* Removed duplicate code
* Added the tests that avoid the minimum value is greater than the maximum value
* Added the tests that avoid the min height value is greater than the max height value
* Added test for adding available block to RTE
* Remove skip and add more tests
* Added tests for create an empty data type
* Fixed the create data type tests
* Added tests for changing setting a data type
* Updated the test for creating a new data type
* Added skip tests due to UI changes
* Skipped unhappy tests as the front-end is not ready
* Changed the way to create a new stylesheet
* Updated method names due to test helpers changes
* Bumped version of test helper
* Updated expected result
* Updated method name due to UI changes
* Bumped version of test helper
* Bumped version of test helper
* Fixed add start node tests
* Added skip tests
* Updated the expected result
* Fixed add layout tests
* Added more waits
* Add skip tests
* Removed , in the objects and renamed some tests
* Added tests for updating the option
* Fixed naming and removed unnecessary commas
* Update tests/Umbraco.Tests.AcceptanceTest/package.json
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Do not execute query if no macros found
* Request cache the permission lookup
* Unbreak change by adding obsolete ctor
* Clean up
* Wrap indexing for delivery API in a scope
* Do not ask options every time for the timeout, instead listen for updates
* Lookup content types once instead of one by one
* Use TryGetValue instead
* Do a distinct on user ids before building index, to avoid issue with more than 2100 parameters
* Don't map ContentDto (it's unused)
* Introduce request bound block editor element cache
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Updated tests for Member Group - not done
* Added api tests for Member
* Added api tests for Member Group
* Added ui tests for Members
* Added ui tests for Member Group
* Added tests for Member Type
* Added code to block unnecessary resources
* Updated createFolder
* Bumped version of test helper
* Changed clickCreateButton to clickCreateLink due to UI changes
* Bumped version of json builder
* Reversed previous code
* Removed waitForTimeout
* Removed waitForTimeout after login
* Bumped version of json builder
* Changed delete folder method
* Bumped version of test helper
* Update create link
* Removed waitForTimeout
* Added skip tests since currently only can view relations
* Added more explicit wait
* Removed hard wait
* Removed invalid verification step due to paging
* Moved get set telemetry level from test to before/after test
* Bumped version of test helper
* Added smoke tags - not done
* Added smoke tags
* Changed locator due to Ui changes
* Changed update to rename method due to test helpers change
* Bumped version of test helpers
* Removed tests for MemberType
* Fixed merge conflict
* Added code to run smoke E2E tests after each build instead of full E2E tests
* Updated command to run smoke test
* Added more smoke tag
* Added smoke tags
* Updated the syntax of smoke tag
* Added smoke tag to make all tests run in the pipeline
* Bumped version of test helper
* Fixed comment
* Removed unnecessary lines
* Removed test.describle
* Include umbraco-package.json manifests in package telemetry and add ID
* Add package ID to ManifestResponseModel
* Use async service method and HTTP client factory
* Avoid breaking changes
* Added api tests for Document - not done
* Added ui tests for Content - not done
* Added api test for Documents
* Added ui tests for Content
* Updated method name due to ui changes
* Bumped version of test helpers and json builders
* Added smoke tag to run all Content tests in the pipeline
* Bumped version of json builder
* Revert files
* Updated the syntax of smoke tag
* Added tests for content with different property editors
* Added tests for Info Tab
* Added more steps for before tests
* Added more tests for Redirect Management
* Added more tests for Content
* Bumped version of test helper
* Changed test name
* Updated the method name due to the test helper changes
* Fixed typo
* Added more waits and skip tests
* Updated the test name
* Changed click action for save button
* Bumped version of test helper
* Bumped version of test helper
* Updated choose document type step after clicking create button due to UI changes
* Added skip tests
* Changed clean method
* Fixed arrange step
* Fixed the arrange steps
* Removed test.describe and unnecessary variables
* Added smoke tests
* Made previewhubupdater work with full cache refreshes
* Make signout_Async available on coreSignInManager
* Allow Migrations to signout the logged in user
* Adding a guid to a user requires resignin
* Added a token revoke mechanism during migrations
* Revert "Make signout_Async available on coreSignInManager"
This reverts commit b103cf119a.
* Revert add allRefreshed on preview hub
Clarified with a comment
* Updated failing test setups
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Added tests
* Added the rest of the tests
* Few changes to failing test
* Added tests for folders
* More cleanup
* Updates
* Fixed tests
* More documentType fixes
* Fixed test
* Cleaned up
* Cleaned
* Bumped version of testHelpers
* Added @smoke in the define to test all our tests
* Updated version
* Added smoke tags
* Remove reload
* Added clean
* Updates from comments, not done
* Added smoke tag
* Uncommented test.describe
* Bumped version
* Added semicolon
* Split documentType tests into more files
* Bumped version
* Removed test describe and fixed indentation
* Added mediaType and mediaTypeFolder
* Added more tests
* More tests!
* Even more tests
* More fixes
* Clean up
* Added smoke tags
* Bumped version
* Added wait after clicking login
* Added remaining tests
* Bumped version of testHelpers
* Skipped failing test
* Fixed to comments
* Fixed comments and added missing test
* Bumped version
* Split mediaType tests into different files
* Removed test.describe and fixed indentation
this field will be automatically focused when the user sees the login screen, and it should be valid according to a11y best practices as this is the first and main element on the page
fixes#16276
* Updates JSON schema for Umbraco 10 with latest references for Forms and Deploy (#15918)
* Ported over #15928 changes for 13.3 RC (#16023)
* Ported over #15928 changes for 13.3 RC
* Use GetOrAdd()
* Lock dictionary initialization
---------
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
* Make the API content response builder extendable (#16056)
* Make the API content response builder extendable
* DeliveryApiJsonTypeResolver needs to be extendable too
* bump rc to regular
* Bump to next minor
* Add blocks in RTE telemetry (#16104)
* Add blocks telemetry
* Use constants and update tests
* V13: Add property type information to telemetry (#16109)
* Add property type counts to telemetry
* Use constants and fix tests
* Update description
* V10: Fix for fallback file upload (#14892) (#15868)
* Fix for fallback file upload (#14892)
* Added check for file type
* Removed unneeded null checks and fixed tabs
* Cleaning
* Cleanups, cleanups, and removal of unneeded null checks
* Reverted removal of relationshipservice
* Revert null check removals (too risky)
---------
Co-authored-by: Ambert van Unen <AvanUnen@ilionx.com>
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
(cherry picked from commit 0b5d1f8aa6)
* Fix up formatting
---------
Co-authored-by: Ambert van Unen <ambertvu@gmail.com>
* Implementors using Umbraco.Tests.Integration won't have to override GetLocalizedTextService
(cherry picked from commit b0016687eb)
(cherry picked from commit 2bb56f1b81)
* Fix logic for retrieving lastKnownElement
(cherry picked from commit cae106bfe8)
* bump version
* Bump version
* Bump version
* Since v13 properties can sometimes be of type IRichTextEditorIntermediateValue - this was unexpected in the XPath navigator code (#16121)
* Webhook log improvements (#16200)
* fix: include all headers in webhook log
* feat: return webhook log status from server
* feat: make webhook logs deep linkable
* feat: add webhook log pagination
* feat: improve webhook request/response body preview
* V13: Optimize custom MVC routing (#16218)
* Introduce EagerMatcherPolicy to conditionally bypass content routing
* Ensure that the candidate we disable dynamic routing for is valid
* Skip Umbraco endpoints
* Simplify logic a bit
* Move install logic to matcher
* Ensure that dynamic routing is still skipped when in upgrade state
* Fixup comments
* Reduce nesting a bit
* Don't show maintenance page when statically routed controllers are hít
* Remove excess check, since installer requests are statically routed
* V13: Optimize custom MVC routing (#16218)
* Introduce EagerMatcherPolicy to conditionally bypass content routing
* Ensure that the candidate we disable dynamic routing for is valid
* Skip Umbraco endpoints
* Simplify logic a bit
* Move install logic to matcher
* Ensure that dynamic routing is still skipped when in upgrade state
* Fixup comments
* Reduce nesting a bit
* Don't show maintenance page when statically routed controllers are hít
* Remove excess check, since installer requests are statically routed
(cherry picked from commit ba9ddd11da)
* Property source level variation should only be applied when configured (#16270)
* Property source level variation should only be applied when configured (#16270)
(cherry picked from commit ab32bac5d9)
* Merge pull request from GHSA-j74q-mv2c-rxmp
* Merge pull request from GHSA-j74q-mv2c-rxmp
* Merge pull request from GHSA-j74q-mv2c-rxmp
* Fix up after merge
* Remove obselete test
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Ambert van Unen <ambertvu@gmail.com>
Co-authored-by: Lars-Erik <lars-erik@aabech.no>
Co-authored-by: Joshua Daniel Pratt Nielsen <jdpnielsen@gmail.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Rasmus John Pedersen <mail@rjp.dk>
* Refactor permissions
* Fix user startnode caching
* Relax permissions on user item endpoint
* Refactor media types to align with newly refactored content permissions
* Remove permissions from member type item endpoint
* Adds `preview.js`
to replace the legacy `umbraco.websitepreview.min.js` script.
Updates the content's `Id` with `Key`.
* allow any protected route to render the backoffice
* optimise component so it doesn't need to observe its attributes and use the popover API to show it on top of the content
* handle case where the culture could be set to "invariant" - we just want to set the "lang" attribute to the default ui language
* convert 'end preview' into an api request and reset the style of the button
* minimize function
* move static text into constants
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* AB40660 - untangle the preview cookie from the auth cookie
* Clean up
* Allow anonymous to end preview sessions
* Some refinements
* update OpenApi.json
* Fix enter preview test
* correct tests to match new expectations of the preview cookie
* sync preview tests with correct expectations of access level
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Working import/export media/document types
* WIP
* Refactoring of import doctype/media types
- added analyze endpoint to extract relevant data without fully processing the file
- split up import endpoints into POST & PUT
- removed availableAtAction as the new endpoint allows clients to call the POST/PUT endpoints with confidence
- Added a new service that is responsible for turning temp files into Import compatible XML and being able to extracty partial information from it
* Wrap persistance access in scopes
* Typos, formatting, clean-up
* PR feedback
* update openapi spec
* Changed deleteFile flag to _temporaryFileService.EnlistDeleteIfScopeCompletes
* Itty bitty typo
* Moved magic cleanup into its own method so orchestration can decide when.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Sends GUID instead of the numeric ID for SignalR Preview Hub
* Add possibility to set cookies as HttpOnly
* Set UMB_PREVIEW cookie as HttpOnly
* fixup! Add possibility to set cookies as HttpOnly
* Refactor ContentFinderByIdPath to more readable
* Create ContentFinderByKeyPath reusing logic from ContentFinderByIdPath
* Add a comment to DisableFindContentByIdPath setting
* Append new content finder
* Change ordering of content finders registrations
* Refactor with a base class
* Update/refactor and add tests regarding ContentFindersByIdentifier
* Fix comment
* Avoiding breaking change
* Make usages use non-obsolete implementation
* Fixed todo in config instead of use the one old legacy name even more. Also obsoleted the ContentFinderByIdPath
* add `preview` as an allowed backoffice client route
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Refactor user group endpoints to use reference by id models instead
* Update user endpoints to use reference by id models
* Update usergroup ids to ReferenceByIdModel
* Added endpoint and backing service for backoffice login providers and the status per user.
* Improve link login redirect forming and error handling
* Add responseModel and mapping instead of returning core model
* Moved unlink endpoint logic into a service
* Refactored ExternalLinkLoginCallback logic into BackofficeExternalLoginService method
* typo and minor code style improvements
* async method name alignment
* Add BackOfficeExternalLoginService tests
* Remove helper method that makes less sense that thought.
* Minor formatting, clean-up and conventions
* Replaced cookie authentication in link-login with a short lived secret
Applied PR feedback
* Update openapi
* Changed link login to a form endpoint
* fix broken comment link
* Do not store claimsprinciple in secret + comments
* update redirect paths
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Improve getting and initializing new block value layouts
* Remove unnecessary generic type constraints
* Add and use new block value/layout item constructors in tests
* Removed GetLayouts that did not make sense
* Added constructor to BlockItemData to simplify explicit usages
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Changed name from Dictionary to Translation
* Removed old Dictionary
* Adding missing tests for Dictionary
* Added smoke tag to test
* Bumped version of test helper
* Add comments
* Fixed comments
* Removed smoke tag
* handle 403 and unknown error codes from the server
* resolve 2fa errors in repository
error handling was never being activated because this specific endpoint did not return api errors as it works exactly like the "authorize" endpoint, which is being called directly
* chore: add obsolete message to unused `SetupViewPath`
* chore: remove unused events
* add missing labels
* fix: send only 'error' back if the response is not ok
* chore: remove duplicate error handling for 500 errors
* fix: add hack to allow to submit the form on enter click
* Allow FileUpload and Imagecropper to upload files in the same way
* Fixed issue with backward compatibility
* Exclude from converter
* Bugfix if editorvalue is not a string
* Fix file upload value editor + clean up + throw explicitly if editor value is invalid
* Revert changes to FileUploadPropertyEditor - the stored property data format remains the file path
* Actually revert all changes to FileUploadPropertyEditor
* Also revert JsonValueConverter
* Cleanup remove unused equality methods
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Revert "v14: Remove mentions of UmbracoApiController (#15863)"
This reverts commit 30e2dea57a.
* Obsolete UmbracoApiController
* Added a few more obsoletion messages
* Removed some of the reintroduced stuff again
* Add obsoletion to FrontEndRoutes controller
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Introduce EagerMatcherPolicy to conditionally bypass content routing
* Ensure that the candidate we disable dynamic routing for is valid
* Skip Umbraco endpoints
* Simplify logic a bit
* Move install logic to matcher
* Ensure that dynamic routing is still skipped when in upgrade state
* Fixup comments
* Reduce nesting a bit
* Don't show maintenance page when statically routed controllers are hít
* Remove excess check, since installer requests are statically routed
(cherry picked from commit ba9ddd11da)
* Introduce EagerMatcherPolicy to conditionally bypass content routing
* Ensure that the candidate we disable dynamic routing for is valid
* Skip Umbraco endpoints
* Simplify logic a bit
* Move install logic to matcher
* Ensure that dynamic routing is still skipped when in upgrade state
* Fixup comments
* Reduce nesting a bit
* Don't show maintenance page when statically routed controllers are hít
* Remove excess check, since installer requests are statically routed
* Return all data types from GetAllAsync
* Remove unnecessary async/awaits
* Ensure we don't accidentally fetch all data types when we mean to fetch none.
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Use Attempt<string> result to display the unhealthy error message
* Update OpenApi.json
* Code readability improvements
* Add unittest covering the bug
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* bump from es2020 to es2022 for better javascript support
* remove the hardcoded "paths" in tsconfig and replace with the backoffice package
* import uui-css to have styling on the dev server
* change endpoint mock url
* cleanup unused code
* Move audit log endpoints to their respective silos and clean up
* Fix failing integration tests
* Using DateTimeOffset in management api and new methods in service layer
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Fixed failing tests
* Updated tests to use the updated helpers
* Clean up tests
* Enabled our pipeline for E2E testing
* Updated the CMS URl for our E2E tests
* Bumped version of our testHelpers
* Did some fixing, still a bit more to do
* Updated auth tests to use LoginUiHelper
* Updated Telemetry tests to use TelemetryUiHelper
* Updated LogViewer tests to use LogViewerUiHelper
* Updated api tests to apply AAA pattern and fix failed tests
* Removed unused import
* Updated api tests for Language
* Added ui tests for Language
* Updated ui test of Language as test helper is changed
* Bumped version of test helper
* Updated create language tests
* Updated delete language test
* Added Language folder
* Fixed method name
* Bumped version of test helper
* Fix merge conflict
* Fixed typo
* Added more waits
* Fixed locator
* Updated locator
* Added timeout
* Fixed password
* Reversed file
* Bumped version
* Bumped version of test helper
* Added more waits
* Added skip for add language test
* Bumped version of test helper
* Added smoke tags
* Fix conflict
* Added @smoke tag to test all Language tests in the pipeline
* Fixed comment
* Removed smoke tag in describe
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* fix: include all headers in webhook log
* feat: return webhook log status from server
* feat: make webhook logs deep linkable
* feat: add webhook log pagination
* feat: improve webhook request/response body preview
* Added missing alias and Id to usergroup models
create/update/response/item
* Changed userGroup IsSystemGroup to more meaningfull fields
Also enforced the AliasCanBeChanged businessrule 🙈
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Amend user start node handling
* Add "has root access" to current user endpoint
* Add document and media root access to user response model
* Update OpenApi.json
* Applied API suggestions
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* set the default for `AuthorizeCallbackPathName` to "/umbraco/oauth_complete" to allow the server to redirect the user back to a route where we don't load the entire backoffice.
* remove redundant method
* Added code to block unnecessary resources
* Updated createFolder
* Bumped version of test helper
* Changed clickCreateButton to clickCreateLink due to UI changes
* Bumped version of json builder
* Reversed previous code
* Removed waitForTimeout
* Removed waitForTimeout after login
* Bumped version of json builder
* Changed delete folder method
* Bumped version of test helper
* Update create link
* Removed waitForTimeout
* Added skip tests since currently only can view relations
* Added more explicit wait
* Removed hard wait
* Removed invalid verification step due to paging
* Moved get set telemetry level from test to before/after test
* Bumped version of test helper
* Added smoke tags - not done
* Added smoke tags
* Fixed merge conflict
* Added code to run smoke E2E tests after each build instead of full E2E tests
* Updated command to run smoke test
* Added more smoke tag
* Added reload tree steps
* Bumped version
* Removed hard waits
* Reduced wait time
* Reversed hard waits
* Set up full test suite in nightly build
* Fixed conditions
* Changed config
* Fix operation status msg
* Cleanup
* Removing unused status
* Adding WithConfigurationEditor on DataEditorBuilder to be able to create new list views with custom configuration
* Adding list view service tests for content and media
* Adding list view service tests base
* Consistency
* Clean up
* More cleanup
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Add endpoint for retrieving allowed media types for file extensions
* Moved paging into service
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Added code to block unnecessary resources
* Updated createFolder
* Bumped version of test helper
* Changed clickCreateButton to clickCreateLink due to UI changes
* Bumped version of json builder
* Reversed previous code
* Removed waitForTimeout
* Removed waitForTimeout after login
* Bumped version of json builder
* Changed delete folder method
* Bumped version of test helper
* Update create link
* Removed waitForTimeout
* Added skip tests since currently only can view relations
* Added more explicit wait
* Removed hard wait
* Removed invalid verification step due to paging
* Moved get set telemetry level from test to before/after test
* Bumped version of test helper
* Added smoke tags - not done
* Added smoke tags
* Fixed merge conflict
* Added code to run smoke E2E tests after each build instead of full E2E tests
* Updated command to run smoke test
* Added more smoke tag
* Added reload tree steps
* Bumped version
* Removed hard waits
* Reduced wait time
* Reversed hard waits
* Set up full test suite in nightly build
* Fixed conditions
* Changed config
* Added more waits
* Reversed yaml file
* Reversed yaml files
* Reversed YAML files
* Added .skip for failing tests due to RTE
* This fix ensures the claims added doing OnExternalLogin is persisted in the OpenIddict tokens
* Update comment
* Tiniest bit of formatting
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added media tests
* Bumped versions
* Bumped version of testhelpers
* Cleaned up
* Added additional media tests
* Bumped version of playwright and testHelpers
* add option to SecuritySettings.cs to allow the developer to set an authorized logout callback path in line with the login callback path
* allow clients using the "Umbraco back-office access" descriptor to return back to either the login path or the logout path
* Cache user by id
* Add todo
* Fix tests
* Clear cache after update
* Refer to base class cache instead of implementing own
* Dont hardcode cache key
* Update to be Payload cache refresher instead
* Migrate nofication chars to strings
* Add a length to the UserGroup2PermissionDto.Permission
* Remove StripWhitespace
It was only nececary when it was nchar
* Better name for migration
* Reuse dictionary in migrations
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Renamed the language item controllers to follow the current standard (they should not be called "entity")
* Renamed the webhook item controllers to follow the current standard (they should not be called "entity")
* Moved the webhook item controllers to the "/item" silo
* Renamed the user gorup controller base to be singular instead of plural
* Create member group endpoint should yield a 201 created response
* Update member endpoint should yield an empty 200 OK upon success
* Update UpdateUserDataController with correct action name and return an empty 200 OK upon success
* More item endpoints alignment
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Add blocks telemetry
* Use constants and update tests
* V13: Add property type information to telemetry (#16109)
* Add property type counts to telemetry
* Use constants and fix tests
* Update description
* Adds new functionality to the migrations.
This requires a migration to call Context.SetDone() on the migration context. This happens automatically on scoped migrations before the scope is completed. But migrations inheriting the UnScopedMigrationBase needs to call this manually, inside the scopes or when it is considered done.
Thereby, we minimize the risk (and eliminate it for SqlServer) that a migration is executed but the state is not saved.
If a migration is executed without the SetDone is called, the migration upgrader throws an error, so we do not start executing the next migration
* Updated tests
* Renamed after review suggestion
* Rename in test
* More renaming after review
* Remove public modifier from interface
* Add missing space in exception message
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Consider max login lifetime with access and refresh tokens
* Adding clarification comment
* Updated comment and added a little explanation for future clarity
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added mostly working linking methods to the backoffice controller
Cleanup still required
* Added proposed default error handling extionsion methods
* Cleanup, clarification and PR feedback
* More cleanup
* Transformed the OAuthOptionsExtensions into a helper class
this allows for proper DI for the dependencies
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Do not add index if it already exists
* Add the JsonObjectConverter by default. This is required by the block editor
* Update test to reflect that fact we have the json object converter applied
* Adding ISchemaIdHandler and core implementation enabling custom package implementations
* Adding IOperationIdSelector and refactoring core implementation to enable custom package implementations
* Adding OperationIdSelector core implementation enabling custom package
* Removing old way of Operation id extensibility
* Registering schema and operation id handlers
* Refactoring based on unnecessary param
* Obsoletion
* Refactoring SchemaIdSelector to make use of the new ISchemaIdHandler
* Update OpenApi.json
* Revert "Update OpenApi.json"
This reverts commit c9165f174b.
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Removed hard waits
* Updated tests for Template and Partial View - not done
* Added insert section tests
* Used defaultTemplateContent to avoid duplicate code
* Added insert section tests
* Added missing tests for Partial View
* Added missing tests for Scripts
* Added missing tests for Stylesheet
* Added missing tests for Template
* Changed method's name due to test helper changes
* Added skip tests
* Bumped version of test helper
* Reversed waits
* Changed createThreeDotsButton to createButton due to UI changes
* Removed List View - Members tests as the UI changes
* Added more waits
* Removed unnecessary waits
* update the login image to the v14 variant
* switch out the default value of the "alternative" logo to the dark version since it fits better in this version
* Ported over #15928 changes for 13.3 RC
* Use GetOrAdd()
* Lock dictionary initialization
---------
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
* Add async method to IContextCache
* Add async methods to IImageSourceParser and ILocalLinkParser
* Add async methods to IDataTypeConfigurationConnector, IServiceConnector and IValueConnector
* Obsolete non-aysnc methods
* Add cancellation tokens to new async methods
* Add ConfigureAwait(false) to awaits
* Use require modifier instead of setting null-suppressed default values
* Only remove read-only properties when IgnoreReadOnlyProperties is set
* Obsolete UmbracoPath property and remove work-around for obsolete setter
* Only add a SQL in statement if there are keys to filter on
* Improved faulty query fix by calling a cached path.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Implement using keymap for member
* Remove current usages of GetUserById
* User userId resolver to resolve user key
* Refactor user repository to use GUID not int
* Add happy path test
* Remove user in cache when user gets updated
* Use await in async method
* Fix up according to review
* Update IMetricsConsentService.cs to have async method
* Fix according to review
* Fix more according to comments
* Revert "Fix up according to review"
This reverts commit a75acaaa
* Get current backoffice user from method
* Update user repository delete functionality
* Fix up more test
* Try to get user by id if key fails
* Add user key as required claim
* Fix tests
* Don't set claim in BackofficeController
* Create constant for the Sub claim
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Ensure APIS only can produce one response type
* Ensure APIs document Unauthorized and Forbidden results
* If a controller constructor injects IAuthorizationService we assume the actions can return forbidden
* Updated OpenApi.json
* OpenApi.json
* Update OpenApi.json
* Update OpenApi.json
* Added a simpel circular reference check to templates
* Upgraded detecting to all levels
* Rename method and add comment to clarify why we have 2 similar methods
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* First go at the document url controller
Added optimizations for documenturlFactory
* Updated Document Url endpoint
Duplicated the endpoint for media
Cleaned up some code marked async that will never hit a long running operation
* Remove dupplicate attributes
* Rename resource sets to response model
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update JsonUdiConverter to support Udi, GuidUdi and StringUdi types
* Require boolean (like) value and rename to JsonFuzzyBooleanConverter
* Add read/write only JsonConverters and align naming
* Rename SystemTextJsonSerializer to DefaultJsonSerializer
* Rename SystemTextConfigurationEditorJsonSerializer to DefaultConfigurationEditorJsonSerializer
* Add JsonUdiRangeConverter
* Rename JsonFuzzyBooleanConverter back to JsonBooleanConverter
* Fix value type check in JsonObjectConverter
* Revert class names
* Updated tests
* Post fix after merge.
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Updated nuget packages + added migrations for OpenIddict - Currently can only be executed using unatttended installs
* Added new Premigration concept - Migrations that always runs unattended before other migrations
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fixed issue with SqlServer and optimized queries to not do the actual paging if total count is 0
* Cleanup
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Align FromArtifact return type with IDataType.ConfigurationData
* Align Alias nullability with interface
* Lazily initialize ArtifactDependency collection when not set
* Remove ShouldSerializeChecksum (not used by STJ)
* Remove obsolete methods and default interface implementations
* Order dependencies once when setting collection
* Update test to include artifact Checksum property
* Move manifests to their own API group and fix access policies
* Update OpenApi.json
* add an endpoint to fetch "private" packages, i.e. AllowPublicAccess=false
* Review comments
* update OpenAPI.json
* update OpenApi.json
* allow /umbraco/logout to be used for PostLogoutRedirectUris when logging out through the management api
* use the Umbraco.Extensions string extensions instead
* add constraints to the BackofficeDefaultController to handle the cases of 'install', 'upgrade', and 'logout'
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Added UserData and migrated tours data into it
* Remove tourdata from user
* Removed tour definition/manipulation classes
Fixed a userData error typo
* Removed toursettings
* Update openapi spec
* V13: Align database schemas of migrated and new database (#15934)
* Drop default constraint umbracoCacheInstruction table
* Align umbracoContentVersion table
* Update indexes on external login table
* Align node table
* Make relation type index unique
* Remove user-group default constraint
* Re-order methods
* Make webhook url not nullable
* Cleanup
* Cleanup
* Update OpenApi.json
* Update src/Umbraco.Cms.Api.Management/Controllers/UserData/UserDataControllerBase.cs
* Remove tour settings from schema
* Add cancelation tokens
* Dont inject, but take as parameter
* Remove some from injection
* Update schema
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
* Obsoletions related to Delivery API
* Fix TypeLoader and TypeFinder tests
* Remove obsolete and default implementations of IFileSource and IFileTypeCollection
* More Delivery API related obsoletions
* VariationContextAccessor related
* ValueFactories obsoletion and fix references
* ValueSetBuilders obsoletions
* ValueConverters obsoletions
* Other obsolete ctors and methods
* Forgotten VariationContextAccessor obsoletion
* More obsoletions
* XPath related obsoletions
* Revert XmlHelper changes
* Delete RenamedRootNavigator and its tests
* Fix test
* XmlHelper obsoletion
* Return null instead of GetXPathValue
* Obsolete entire class instead
* Remove XPath obsoletions from IPublishedCache
* Remove XPath-related if-block that is no longer needed
* Change obsolete msg for classes needed for NuCache
* Moving classes to NuCache and making them internal
* Remove more XPath-related obsoletions
* Remove NavigableNavigator and its tests
* Cleanup
* Remove Xpath references from tests
* Revert interface deletion in MediaCache
* Using XOR operation
Co-authored-by: Nuklon <Nuklon@users.noreply.github.com>
---------
Co-authored-by: Nuklon <Nuklon@users.noreply.github.com>
* Support containers for blueprints
* Update OpenApi.json
* Fix tree ordering
* Add CancellationToken to new endpoints
* Change to doc blueprint specific things
* Fix policies
* Cleanup
* Use ContentBlueprintEditingService methods instead of underlying ContentService
* Review comments
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Moved logic from FolderTreeControllerBase into EntityService and EntityRepository
* Custom sorting for data types, not media types
* Ensure ordering is the same for SQLite and SQLServer
---------
Co-authored-by: kjac <kja@umbraco.dk>
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
Sets the appropriate MIME type of the Created Package download,
this would be either an XML string or a ZIP file. The MIME type will
be used on the client-side to handle the responds accordingly.
* Fix wrong service name
* Move tests to correct place and fix naming
* Introducing a test base
* Tests IContentBlueprintEditingService
* Remove comment
* Adding Assert.Multiple
* More Assert.Multiple + Can_Create_With_Basic_Model() and Cannot_Create_When_Content_Type_Not_Found()
* remove the temp login screen
* set login build back to esm
* convert razor entrypoint to show new login screen
* enable loading a user defined stylesheet that can be overridden through RCL mechanics
* remove unused file
* for now, remove the call to the old `localizedtext` endpoint until a replacement has been built
* add fallback font
* remove login to the old backoffice
* change models for twoFactorView
* Send view that have to be used for 2fa.
* get 2fa providers from the login call directly
* Return 2fa providers
* map enabledTwoFactorProviderNames to the view
* use correct endpoints for 2fa
* Send link
* change key to id in querystring
* improve localization
* merge authUrl
* Added flow query parameter
* remove unused getter
* remove debug info
* fix fallback value
* fallback value
* Added invite url to email
* Clean up
* Added password configuration to the verify responses, so the client knows, and have confirmed the user is allwed to see it
* allow reset password
* Allow anonymous on invite create password
* open api
* check for invite
* fix fallback text
* validate invite token
* try to extract the problem details object
* add error logging
* fix invite user parameters
* Use correct id for performing user
* Allow password reset on yourself without the old password, if you are currently invited
* hardcode the authorize endpoint url for now
* fix handlers and disable icons for now
* import icons from backoffice client
* add backoffice path to icons
* fix handler for 2fa custom view
* update image temporarily
* remove old icon registry
* convert login components to UmbLitElement
* convert `UmbAuthContext` into a real context with a token
* cleanup dependencies
* optimise vite
* remove lit
* optimise external login component loader
* use generated resources for reset password
* use generated resources for all methods
* import and register the main bundle
* register localization
* change localization keys
* update all localization keys to new format
* replace tokens
* copy code
* added danish translations
* convert to lowercase
* all languages should have same weight
* added german translations
* add missing variable
* missing text
* added dutch translations
* added swedish translations
* added norwegian translations
* add temporary fix so the login app can be built
* make sure BuildLogin is run only after BuildBellissima has been run to ensure the dependencies are present on disk
* run the real login build in pipelines
* set vite language to en-us
* optimise msw warnings
* wait a bit before rendering the form so we know everything has been loaded
* Add external login endpoint + move models around
* Allow FORM submissions to the external login endpoint
* rename `IdentityProvider` back to `Provider` to avoid a breaking change from V13
* type in url for login-external manually (for now) since route attributes are no longer a thing
* move GET back to POST for external forms
* load in public manifests on boot of the login screen
* Clean up
* handle the case where an external login provider has disabled local login and show a message instead of the login form
* remove external login providers from the server login screen
* add more translations
* use the friendly greeting for the error layout
* show login form
* add mock handler for public manifest endpoint
* remove the external login layout
* fix test
* Added generic English localization
as a fallback language.
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Removed api tests for RelationType since it is impossible to create/update/delete relation type
* Fixed api tests for UserGroup
* Fixed api tests for UserAvatar
* Fixed api tests for User
* Fixed api tests for Temporary File
* Fixed api tests for Dictionary
* Fixed api tests for DataType
* Fixed api tests for DataTypeFolder
* Cleaned up
* Bumped version of test helper
* Update tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Dictionary/Dictionary.spec.ts
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Reversed the api tests for Relation Type
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Get blueprint by key
* Renaming
* Implementing DeleteBlueprintAsync
* Fixing tests to use the new method
* Making ContentControllerBase abstract
* Cleanup
* Implementing Delete blueprint endpoint
* Revert obsoletion in ContentService.cs
* More reverting
* Remove usings
* Introducing IContentBlueprintEditingService
* Refactor Get and Delete blueprint endpoints to use the new IContentBlueprintEditingService
* Fix base inheritance case in SchemaIdSelector
* Creating RequestModelBase for UpdateDocument to be reused in both document and blueprint models
* Creating DocumentResponseModelBase to be reused in both document and blueprint models
* Renamed blueprint response model for item endpoint to be aligned with the rest of the item models
* More renaming changes of the DocumentBlueprintItemResponseModel
* Refactor ByKeyDocumentBlueprintController to make use of the new blueprint models
* New blueprint models and mapping
* Adding UpdateAsync to ContentBlueprintEditingService
* Adding IDocumentBlueprintEditingPresentationFactory.cs
* Adding UpdateDocumentBlueprintController.cs
* Adding methods required from the base
* Fixing bug in document type mapping - mapping incorrect key
* Cleanup
* Fix item endpoint
* Adding MapCreateModel
* Adding create model
* Creating request model base + related classes
* Another request model
* Blueprint editing service
* Adding create controllers
* Adding DuplicateName operation status for blueprints and handling it
* Updating OpenApi.json
* Fix comment
* Fix mapping
* Adding comments
* Passing in id for create blueprint from document model
* Mapping default state to Draft - no need to calculate it, it will always be that for blueprints
* Cleanup
* Update OpenApi.json
* Review comments
* Fix policies
* More policy updates
* Rename/Move/duplicate PaginationService to facilitate conversion closer to the data layer
Duplication is because of internal modifier as we don't want to expose these temporary classes
* Move Guid to Int Extensions into core + add unittests
* Added Document version endpoints
Updated used services to use async methods
* Moved PaginationConverter into core so it can be used by the service layer
* Endpoint structure improvements
* Updating OpenApi.json
* Add greedy constructors for contentService tests
* Namespace changes and naming cleanup
* Update openapispec again...
* Refactor injected services
* PR suggestion updates
- Move endpoints into their own structural section as they are also in a different swagger section
- Naming improvements
- Allign PresentationFactories with similar classes
- Cleanup unused assignments
- Cleanup refactoring comments
- Improve obsoletion remarks
* Cleanup
* ResponseModel improvements
* OpenApi spec update
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Bumped version of test helper
* Changed clickCreateButton to clickCreateLink due to UI changes
* Bumped version of json builder
* Changed delete folder method
* Bumped version of test helper
* Added skip tests since currently only can view relations
* Made Relation types read only trough the management api
* Removed path from RelationTypeResponseModel
* Removed RelationTypes tree controllers
* Deleted ByChildRelationController as the usecase has been internalized
* Reworked RelationResponseModel
* Added the ID the toe relation response model
* RelationType.IsDeletable is no longer relevant for the management api
Since types are only managed trough code.
* Removed RelationType create/update leftovers
Brought RelationType responsemodels more in line with similar models
Update openapi spec
* Review improvements
* Renamed controller file to match class name
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: kjac <kja@umbraco.dk>
* Moved tracked references under their respective sources
Prepped the endpoints to be more inline with how we will optimize in the future
* Fixed some endpoint signature issues and update openapi spec
* Partial Revert "Moved tracked references under their respective sources"
This reverts the submodule update in commit 3819276a74.
* Fix duplicate line
* Rework for polymorphic output
* Improved endpoint naming
* Regenerate OpenApi.json
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Apply focusLockService to TourStepDirective
Apply focusLockService to TourStepDirective in order to ensure that
non-modal page contents are inert and do not interfere with focus on
modal dialog with regards to screen reading technologies.
* Add properties to umb-tour.html.
Add properties to umb-tour html page to ensure that it aligns with modal
dialog best practices.
* Add dialog properties to Umbraco tour .html files.
Add properties relating to dialog and accessibility to the Umbraco tour
.html files, including aria-label, role, and tab index.
* Handle sensitive properties in the Management API
* Use Assert.Multiple to catch all failing tests in one run
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
A new check for ContentVariation.Nothing is necessary when copying from
documents to ensure that if there is no content variation as defined by
the Nothing property, values are still copied even if variation is not
supported since the content itself will not vary.
* Remove explicit parent context in API outputs
* Add ancestor endpoints for document and data type (experimental for now)
* Add ancestor endpoints for doctypes, media, mediatypes, partial views, scripts, static files, stylesheets and templates
* Add unit tests for ancestor ID parsing
* Add ancestor endpoint for dictionary items
* Update OpenApi.json
* Fix merge and regenerate OpenApi.json
* Regenerate OpenApi.json
* Rename "folder" to "parent" for consistency
* Fix merge
* Fix merge
* Include "self" in ancestor endpoints
* Handle ancestors for root items correctly
* Remove "type" from recycle bin items
* Tests against fixed values instead of calculated ones.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Add reserved fields to documents
* Add member configuration endpoint
* Add reserved field to media configuration
* Refactor to use service instead on hardcoded methods
* Clean up, aligning
* Update OpenApi
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Created extension class so we can ensure native line endings
* Added usage of extension method for ensuring native line endings
* Added tests, to see if the snippets return the correct content
* Removed space
* Prevent user populated link names being removed
When selecting a node in a link picker, the "name" (Link title) field is always overridden with the selected node's name.
This change prevents the field from being overridden if it is user populated.
* Don't update for media either
If there is already a name, don't update when selecting media
* Deselect current node
When selecting media, deselect current node if there is one
* Change to suggested functionality
Update to more elaborate functionality which will always use the *current* node name. i.e If you change the node name then the link picker name changes also.
* Reapply changes
Repply changes after merge from contrib branch
* Use IsCulturePublished() and only track node name
* Fallback to node name in preview
* Fix setting media name
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Added missing locks, and ensure we have timeout on all of them
* Wrap the removable of objects from the hashset in a lock
* remove old comment
* Exit correct lock
This ensures keys are correctly assumed to be unique => safe for dictionary usage
Co-authored-by: Sven Geusens <sge@umbraco.dk>
(cherry picked from commit e267b41575)
* Extend EntitySlim with key
* Add ListView to GenericContentEntityDto and ContentEntitySlim
* Move ContentTypeKey and ListViewKey back to BaseDto
* Remove extra DB call when mapping to DocumentTypeReferenceResponseModel
* Remove extra DB call when mapping to MediaTypeReferenceResponseModel
* Remove duplicate db call for members
* Remove now redundant base class
* Fix comment
* Added ExecuteNonQuery(DbCommand command) on database to ensure we call OnExecutingCommand and OnExecutedCommand when executing DbCommands
* Added Cache Instructions lock, to avoid deadlocks
* Optimized read locks for nucache when only one content type is rebuilt
* Optimized the SqlServer locks, so only one command is executed (and thereby roundtrip) per lock instead of two
* Avoid breaking changes
* Cosmetic changes
* Take locks if everything is rebuild
* Use same lock in scopes, to avoid potential deadlocks between the two
* Use eager locks in PublishedSnapshotService.cs
* Added timeouts to some of the application locks
* Revert "Use eager locks in PublishedSnapshotService.cs"
This reverts commit 01873aae97.
* Revert "Added Cache Instructions lock, to avoid deadlocks"
This reverts commit e3fca7c12a.
* Use single readlock call to lock many
* Use eager locks for reads
* Eager write locks
* Ignore test of lazy locks
* Unique timeout exception messages
---------
Co-authored-by: kjac <kja@umbraco.dk>
(cherry picked from commit 2c23e67c65)
* Added ExecuteNonQuery(DbCommand command) on database to ensure we call OnExecutingCommand and OnExecutedCommand when executing DbCommands
* Added Cache Instructions lock, to avoid deadlocks
* Optimized read locks for nucache when only one content type is rebuilt
* Optimized the SqlServer locks, so only one command is executed (and thereby roundtrip) per lock instead of two
* Avoid breaking changes
* Cosmetic changes
* Take locks if everything is rebuild
* Use same lock in scopes, to avoid potential deadlocks between the two
* Use eager locks in PublishedSnapshotService.cs
* Added timeouts to some of the application locks
* Revert "Use eager locks in PublishedSnapshotService.cs"
This reverts commit 01873aae97.
* Revert "Added Cache Instructions lock, to avoid deadlocks"
This reverts commit e3fca7c12a.
* Use single readlock call to lock many
* Use eager locks for reads
* Eager write locks
* Ignore test of lazy locks
* Unique timeout exception messages
---------
Co-authored-by: kjac <kja@umbraco.dk>
(cherry picked from commit 2c23e67c65)
* Added ExecuteNonQuery(DbCommand command) on database to ensure we call OnExecutingCommand and OnExecutedCommand when executing DbCommands
* Added Cache Instructions lock, to avoid deadlocks
* Optimized read locks for nucache when only one content type is rebuilt
* Optimized the SqlServer locks, so only one command is executed (and thereby roundtrip) per lock instead of two
* Avoid breaking changes
* Cosmetic changes
* Take locks if everything is rebuild
* Use same lock in scopes, to avoid potential deadlocks between the two
* Use eager locks in PublishedSnapshotService.cs
* Added timeouts to some of the application locks
* Revert "Use eager locks in PublishedSnapshotService.cs"
This reverts commit 01873aae97.
* Revert "Added Cache Instructions lock, to avoid deadlocks"
This reverts commit e3fca7c12a.
* Use single readlock call to lock many
* Use eager locks for reads
* Eager write locks
* Ignore test of lazy locks
* Unique timeout exception messages
---------
Co-authored-by: kjac <kja@umbraco.dk>
(cherry picked from commit 2c23e67c65)
* Workaround for failing entity tree children
* Fix typo from original PR
* Expose and actually use GetPagedTrashedChildren on EntityService (the default implementation on the interface is currently used).
* Ensure that ID/Key mapping for recycle bins work
* Added ExecuteNonQuery(DbCommand command) on database to ensure we call OnExecutingCommand and OnExecutedCommand when executing DbCommands
* Added Cache Instructions lock, to avoid deadlocks
* Optimized read locks for nucache when only one content type is rebuilt
* Optimized the SqlServer locks, so only one command is executed (and thereby roundtrip) per lock instead of two
* Avoid breaking changes
* Cosmetic changes
* Take locks if everything is rebuild
* Use same lock in scopes, to avoid potential deadlocks between the two
* Use eager locks in PublishedSnapshotService.cs
* Added timeouts to some of the application locks
* Revert "Use eager locks in PublishedSnapshotService.cs"
This reverts commit 01873aae97.
* Revert "Added Cache Instructions lock, to avoid deadlocks"
This reverts commit e3fca7c12a.
* Use single readlock call to lock many
* Use eager locks for reads
* Eager write locks
* Ignore test of lazy locks
* Unique timeout exception messages
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Update filter to include membergroup name
* add filter by isApproved
* Add isLockedOut
* Implement member filter
* Move filter logic to repository
* Add more fields to sort by
* Update openApi
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* [WIP] Stop Udi leaking on ConterPicker
* Refined Udi conversion for contentPicker
Cleaned up base construcor usage to move away from the obsoleted one.
* Fixed Udi lieaking in MNTP
* Stopped Udi bleeding for MultiUrlPicker
* Remove unused assignment
* Resolved namespace issue
* Use correct configuration value for MNTP udi parsing
* Turn helper auto props into local helper function to avoid unnecesary serialization
* Remove Newtonsoft.Json from Multi URL picker
* Fixed MNTP configuration serialization
* Changed MNTP editor data from csv guid to EditorEntityReference[]
* Added remarks for the MNTP editor conversion logic
* Reworked MNTPPropertyEditor Unittests
changed intent of one
fixed bug because of 1 rework
* Update OpenApi.json
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Fix FIXMEs
* Bring AuthorizationPolicies.DenyLocalLoginIfConfigured authz policy to an action level as it doesn't apply to all
* Remove unnecessary policy
* Remove AuthorizationPolicies.DenyLocalLoginIfConfigured from base and apply to specific controllers
* Fix comment
* AllowAnonymous as it doesn't get it from the base anymore
* Reorder
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Rename Web.UI.New back to Web.UI
* Delete new backoffiec folder
* Rename client project
* Add new submodule
* Update template csproj
* Remove more mentions of new
* Add missing views
* Moving up the "Umbraco.Web.UI" proj reference, so that it is the first project listed in solution file (.sln) since it will be selected as startup one in VS by default.
* don't include grid
* Update with section of how to get started with backoffice
* Update .github/BUILD.md
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Add line about white page
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Default behavior:
If you have only one available module for an area Umbraco will
open a dialog for adding the module. If you have more than one
module you will get a dialog to choose a module and that dialog
will have a Paste option in the top right corner.
New behavior:
If there is a module in the clipboard, Umbraco will open a dialog
with the Paste option even thou there is only one available module
in the area. In other cases, it will work as usual.
Reported issue: https://github.com/umbraco/Umbraco-CMS/issues/15755
* Enabled Section authorization on member management endpoints
Changed filter endpoints from tree style auth to section as it returns the same model and be in line with other filter endpoints
* Clean up member filter base inheritance
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Add additional validation when removing a user from usergroup
* Add additional validation to UpdateUserGroups
* Don't re-implement operation results
* Add additional validation to the update user endpoint
* Complete scopes where it's safe to do so
* add checkboxlist to the list of migrations that should be converted
* Adds string-array type-checking
to the `ValueListUniqueValueValidator`.
As `value?.ToString()` would give you a literal string of the
object-type, e.g. `"System.Collections.Generic.List`1[System.String]"`.
* Clean up and add tests
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
Co-authored-by: kjac <kja@umbraco.dk>
* Applying [ApiController] to ManagementApiControllerBase and the rest derive it from it
* Removing [ApiController] from deriving controllers
* Removing [ApiVersion("1.0")] from controller base
* Cleanup
* [ApiController] from deriving DeliveryApiControllerBase controller
* Removed the "New" from all policy names now that the legacy backoffice is gone.
* more policy renaming
* more policy renaming
* Uncommenting tests
* Cleanup
* Removing unused policy names
* Renaming AdminUserEditsRequireAdmin to a more meaningful UserPermissionByResource
* Completing TODO and some alphabetical rearranging
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Implement endpoints
* Update to orderby and orderdirection
* Implement Filter endpoint
* Remove old ByEditorUiAlias endpoint
* Add clarifying comments
* Fix up according to review
* use model in reflection
* Remove leftover sorting
* remove ordering
* Implement skip and take directly in service
* Dont use GetAllAsync
* Update OpenApi
* Refactor get all to return full list if no keys are given
* Revert "Refactor get all to return full list if no keys are given"
This reverts commit 1dd3167e96.
* Use invariant contains
* A little query optimization
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Adding configuration options for segment settings
* Add "useSegments" to the document type configuration endpoint
* Adding additional configuration for creation of non-existing segments
* Migrate ObjectJsonExtensions
* Use more generic exception to not use Newtonsoft
It should matter if it's a JsonReaderException, if we can't read we can't read
* Remove obsoleted constructors
* Use more generic exception in ContentValueSetBuilder
* Fix constructors
* Remove UdiRangeJsonConverter
* Remove more legacy newtonsoft stuff
* Migrate away from newtonsoft in CacheInstructionService
* Remove unused model binders
* Remove more newtonsoft
* Remove newtonsoft from DatabaseServerMessenger
* Remove now irrelevant benchmark
* Remove the usage of Newtonsoft from ImageCropperTemplateCoreExtensions
The value converter will never return JObject, JsonDocument, or JsonNode
* Remove usages of newtonsoft in ComplexPropertyEditorContentNotificationHandler
JTokens are no longer returned, so we don't need to check for it
* Remove newtonsoft references
* Re-add newtonsoft dependency to Umbraco.Tests.Common
* Fix package references
* move dependency
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
When publishing, if the selected page does not yet have a page created,
handle the FailedPublishNothingToPublish error so that the user is not
presented with an exception. A warning is shown to the user that some
languages failed to publish due to nothing to publish and to check that
a page has been created for selected languages. Additionally fixed a
validation issue where publish would always succeed if all languages
were selected.
Issue: 15352
* Refactor to accept multiple cultures
* Add test
* Move logic into service
* Remember to complete scope
* Move scope creation.
* Add test
* Close scope on early return
* Handle invalid cultures with bad request
* Handle valid cultures based on content
* Change return type if a culture is required
* Refactor content publishing service to have 1 unpublish method
* Update tests
* Return better error
* Scope completes
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Refactored the Authorizers to be reuseable from core by now knowing about principal but only the IUser. Also moved them to core
* Fix multiple enumeration
* Fix more multiple enumerations
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Make create user endpoint work with the supplied id
Return 201 instead of 200 with correct resource identifier
* Add ResetPassword endpoint
* Bring changepassword route inline with other resource actions
* Fixed User endpoints not advertising all their possible response codes/ models
Fixed certain endpoints not authorizing targeted user(s) versus the admin needs admin authorization requirement
Fixed a user not found response bug for the update flow
Fix spacing
* Fixed CurrentUser endpoints not advertising all their possible response codes/ models
Fix incorrect responseStatus in UserService.GetPermissionsAsync
* Update OpenApi definition
Fix smal model oversights in previous commits
* Update incorrect Response type
* Check for duplicate id's in user create validation
* Remove unnecasary returnmodel from changepassword
Renamed the model to it's remaining usage
* rename bad constructor parameter
* Renamed method parameters for better readability and usage
* Fixed wrong userkey being passed down because of (refactored) bad naming
Technically doesn't change anything as the two id's should be the same in this case (reset with token is always for self)
* Fixed resetpassword bug
* Update openapi
* Update src/Umbraco.Core/Services/UserService.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Remove old password from change user password request model
Only makes sense when doing it for the logged in user => current endpoint
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Add models & mapping
* Add controller
* Add create async to service
* Add auth policy
* Implement delete
* Rename response model
* Implement updateAsync
* Refactor update to use own model
* Implement all async counterparts for IMemberService
* Add tests
* Implement update member group mapping
* Dont fail if updating the current user group
* Return not found if not found
* Add missing OperationResults to MemberGroupOperationStatusResult
* Add 404 to response type
* Update openapi
* Update OpenApi
* Update OpenApi.json
* Added tests for Examine Management tab
* Added tests for Heath Check
* Added tests for Models Builder
* Added tests for Profiling
* Added tests for Published Status
* Bumped version
* Added tests for Welcome Dashboard
* Updated test name
* Bumped version of test helper
* Bumped version of test helpers
* Replace " with '
* Fixed comments
* Bumped version of test helper
* Output notification handler messages as a header
* Make the notification contract public
* Moved the Notification type and added it to swagger schema
* Update swagger docs
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Removes lots of files used by the old backoffice and that is not needed for the management api
* A little clean-up
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added tests for Examine Management tab
* Added tests for Heath Check
* Added tests for Models Builder
* Added tests for Profiling
* Added tests for Published Status
* Bumped version
* Added tests for Welcome Dashboard
* Updated test name
* Bumped version of test helper
* Bumped version of test helpers
* Replace " with '
* It builds..
* Added granular permissions
* Added granular permissions
* Rename content to document
* Added migration
* Fixed issues causing the migration from v13 was not possible.
* Merged Permissions and Granular Permissions in viewmodel
* Prepared the viewmodel to a future where permissions can be more types.
* OpenApi
* Allow to translate a single char to many strings
* Use frontend friendly values for known permissions
* Validate the documents exist
* Allow setting non-document settings
* Add "$type" when required
* Rename to presentation model and update OpenApi.json
* OpenApi.json
* Fix tests
* OpenAPI
* Fixed issues with upgrades
* Add the discriminator name
* Fixed issues that only happended on SqlServer
* Fixed queries for SqlServer
* Clean up
* More cleanup
* Fix issue when migrating sqlserver
* Split fallback permissions into own concept in view model
* Also split on current user
* Added a extenable pattern for mappers between DTO => Granular Permission => ViewModel and ViewModel => Granular Permission
* Fixed issue with new exists method, that did not take duplicate keys into account.
* Added sections to current user response model
* Formatting fixes
* Move class to its own file
* xml comment
---------
Co-authored-by: Zeegaan <skrivdetud@gmail.com>
* Move magical route to management api
* Move auth around
* Remove "New" cookies, as they are no longer needed
* Move all installer related
* Remove BackOfficeServerVariables.cs and trees
* Move webhooks to management api
* Remove remainting controllers
* Remove last services
* Move preview to management api
* Remove mroe extensions
* Remove tours
* Remove old Auth handlers
* Remove server variables entirely
* Remove old backoffice controller
* Remove controllers namespace entirely
* Move rest of preview
* move last services
* Move language file extension
* Remove old backoffice entirely (Backoffice and Web.UI projects)
* Clean up unused security classes
* Fix up installer route
* Remove obsolete tests
* Fix up DI in integration test
* Add missing property mapping
* Move core mapping into core
* Add composers to integration test
* remove identity
* Fix up DI
* Outcomment failing test :)
* Fix up remaining test
* Update mapper
* Remove the actual project files
* Remove backoffice cs proj
* Remove old backoffice from yml
* Run belissima before login
* Remove caching
* Refactor file paths
* Remove belle from static assets
* Dont refer to old project in templates
* update gitignore
* Add missing files
* Remove install view as its no longer used
* Fix up failing test
* Remove outcommented code
* Update submodule to latest
* fix build
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Removing to ToLowerInvariant from culture and segments
* Adding ToLowerInvariant for DeliveryAPIIndex to not modify the stored data
* Fix failing test - remove ToLowerInvariant
* Added beforeEach() and remove .skip for the passed tests
* Fixed failed tests and add the tests to cover query builder
* Bumped version of test helper
* Updated api tests for Partial View as the endpoints are changed
* Fixed failed tests and remove .skip tests
* Updated test helper version and api tests for Partial View as the name of method changes
* Changed createButton() to createThreeDotsButton()
* Bumped version
* Bumped version of test helper
* Fixed comments
* Added more waits
* Splited tests out
* Changed verification method
* Added debug
* Removed console.log() and increased wait time
* Changed expect from toEqual to toBeTruthy
* Changed to use "" instead of ''
* more changes
* Updated the expectedPartialViewContent
* Changes
* Removed
* Fixed test
* Update PartialView.spec.ts
* Removed .skip
* Added code to detect os platform
* Updated expectedPartialViewContent varibale
* Added waits
* Bumped version of test helper
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Added Endpoint to get Document restore information
* Add media version of original paent recycle bin
update document permission
regisered interfaces
* Added restore endpoints
* PR feedback and other cleanup
* Update orignal root parent logic & shrank return model
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Do not allow ignoring start nodes for system data types
* Update OpenApi.json
* Update src/Umbraco.Cms.Api.Management/Mapping/DataType/DataTypeViewModelMapDefinition.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Regenerate OpenApi.json
---------
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Force system text json for IJSonSerializer
* Migrate ColorPickerValueConverter
* Move ColorPickerValueConverter
* Clean up ColorPickerValueConverter
* Remove obsoleted property editors
* Migrate FlexibleDropdownPropertyValueConverter to System.Text.Json
* Use IJsonSerializer instead and move the value converter to Core
* Migrate ImageCropperValueConverter to System.Text.Json
* Inject jsonserializer in test and obsolete old constructor
* Migrate JsonValueConverter to System.Text.Json
* Remove ContextualConfigurationEditorJsonSerializer
* Remove JsonNetSerializer
* Remove obsolete DeserializeSubset from JsonSerializer interface
* Fix FlexibleDropdownPropertyValueConverter
* Update test JSON to be actual valid json
* Update more test json
* Update time format to be valid
* Add JsonPropertyName to models
* Replace all IsContainer mentions with new ListView property
* Map the list view when creating and updating
* Implement list view migration
* Refactor listview to collection
* Do not assign listview if IsContainer is false
* Fix up HasContainerInPath query
* Update OpenApi.json
* fix up according to review
* Refactor duplicate code to use extension method instead
* Dont make new guid, check for null
* Make extension internal
* Fix up after merge
* Use ReferenceById static method instead of extension
* Fixing route for temp file
* Adding missing ApiController attribute
* Adding new filter view port
* Creating base classes for member and user filters
* Moving actual filter controllers to correct places
* Update OpenApi.json
* Only use datetimeoffset in API
* Updated publish endpoint to take schedule information
* Fixed test builds
* OpenApi updates
* Update OpenApi schema
* Fixed issues with publishing.
* Added validation before publishing. Had to move a lot of classes to core.
* added missing files
* Added validation info to error
* Typo
* Clean up and adding missing result
* Updating to AvailableCultures instead of PublishedCultures
* Handle time needs to be in the future
* validate only cultures that needs to be published
* Fix typos
* Filter out cultures that we are not trying to publish from the validation errors
* Don't filter out only the available cultures, to accommodate non-created variants
* Only allow publish of existing cultures
* Fixed issues found in test
* fixed build
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Introduced IDataTypeConfigurationCache
* Applied IDataTypeConfigurationCache to Property Editors and display mapping
* Invalidate new cache trough DataTypeConfigurationCacheRefresher
* Improve IDatatype service to use cached int path when fetching by guid (using idkeymap)
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Adding missing members policy
* Adding a member filter endpoint
* Adding response types to user filter endpoint
* Adding create multiple to factory
* Updating OpenApi.json
* Member response model must not have a name (its name is in the variants collection)
* update import map
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* register a new IPackageManifestReader to allow to scan the /umbraco/backoffice path for umbraco packages
* add constant
* add logic to extract the importmap from umbraco package manifests
* add html helper to render an importmap
* replace static importmap with new dynamic importmap
* update tests and be more specific about scopes
* remove recursion from PackageManifestReader.cs
* add extra test to validate the importmap
* combine all string manipulation to produce an importmap into HtmlHelperBackOfficeExtensions.cs
* rename IStaticFileHostGenerator to something reflecting its actual usage, and also fix the file names
* use auto properties where applicable
* add getter for BackOfficeHash and use to simplify BackofficeAssetsPath
* ensure BackOffice is always spelled with capital O
* add a way to replace the cachebuster for assets imported through an importmap and ensure magic strings are encapsulated into business logic or constants
* Review changes
* convert primary constructors to explicit and add comments
* convert primary constructor to explicit
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Fix authz status
* Adding another silo for list views
* Adding base classes and handling collection operation statuses
* Change signature to reuse functionality. Fix references
* Adding collection response models
* Adding content and media type collection response models
* Adding mapping
* Adding mapping for document and media types
* Adding list view page model
* Initial implementation
* Moving implementation to service base
* Adding content and media service interfaces for handling list views
* Registering and implementation
* Update controllers to use new services
* Renaming param
* Refactor to pass content type instead of content type key
* Handle the case where only data type is provided
* Add missing operation status
* Update OpenApi.json
* Added comment for a temp workaround
* Removing orderCulture from media interface as it is not yet supported
* Adding a base class for content type collection reference model
* Adding common collection controller base and moving the ContentCollectionOperationStatusResult to there
* Cleaning up controllers after implementing the base class
* Cleaning up concrete controller bases
* OpenApi.json updates
* Changing GetPagedChildren to return a paged model
* Fix ordering
* Adding ,
* Fix wording
* Append operation status to unsuccessful API responses
* A little bit of clean-up
* Update default orderBy value
* Update the default value of orderBy
* Adding missing owner and updater system fields
* Updating OpenApi.json with owner and updater props
* Create base and rename owner to creator
* Update OpenApi.json
* Reordering of properties
* "Owner" will be "creator"
* Fix comment
---------
Co-authored-by: kjac <kja@umbraco.dk>
* show external login errors as a subheadline on the login screen
* fix: migrate error handling from v12 for external login
* cleanup unused client-side javascript
* Create system text serializer
* Assign property names with system text
* Use the new serializer
* Impement AutoInterningStringConverter with System.Text.Json
* Implement TextAutoInterningStringKeyCaseInsensitiveDictionaryConverter
* Make CaseInsensitiveDictionaryConverter
* Force datetimes to be read as UTC
* Remove usages of Newtonsoft.Json
* Remove text prefixes
* Remove unused Newtonsoft converter
* Remove more newtonsoft
* Remove duplicate implementation
* Rmove usage of missing class in tests
* Ignore null values
* Fix tests
* Remove Newtonstoft reference from NuCache
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* update dependencies to latest (lit 3, vite 5) and fix related issues
* update ui library to 1.7.1
* mark all backoffice svg icons with fill="currentColor"
* set label on user.html
* Updated test to work. And skips tests unable to work until frontend is ready
* Decreased time for tests
* Update playwright.config.ts
Decreased to 40 seconds
Removed recursive call from the GetIndexValues method of NoopPropertyIndexValueFactory for backward compatibility and alignment with other property index value factory classes
* Trim update date to exclude Z character.
When picking media, the items from an SQL database contain an update
date that is formated in UTC-0 time by way of a Z character at the end
of the string. Removing this string will result in the update date
always displaying local time as expected.
Issue: 15209
* Use dateHelper instead of slicing Z from date string.
For most front end date formatting, dateHelper is used to get the local
date. The dateHelper is now passed in to the media picker controller and
used to format the date.
* Fixed failing tests
* Updated tests to use the updated helpers
* Clean up tests
* Enabled our pipeline for E2E testing
* Updated the CMS URl for our E2E tests
* Bumped version of our testHelpers
* Did some fixing, still a bit more to do
* Updated auth tests to use LoginUiHelper
* Updated Telemetry tests to use TelemetryUiHelper
* Updated LogViewer tests to use LogViewerUiHelper
* Updated api tests to apply AAA pattern and fix failed tests
* Removed unused import
* Fixed comments
* Bumped version of test helper
* Updated the version to 10 instead of 11
* Updated the package-lock.json file to contain the correct versions
* Added a waitForTimeout
The reason for this is that this test is failing on the pipeline
* V14 Added acceptance test for basic functions of Data Type, Approved Color and Label (#15551)
* Updated api tests for DataType
* Added ui tests for basic functions of DataType
* Added ui tests for Approved color
* Added ui tests for Label
* Fixed comments
* V14 Added acceptance tests for Date Picker (#15561)
* Updated api tests for DataType
* Added ui tests for basic functions of DataType
* Added ui tests for Approved color
* Added ui tests for Label
* Added ui tests for Date Picker
* Removed blank line
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* V14 Added acceptance test for List View (#15575)
* Updated api tests for DataType
* Added ui tests for basic functions of DataType
* Added ui tests for Approved color
* Added ui tests for Label
* Added ui tests for Date Picker
* Fix merged
* Updated DatePicker and Label tests to apply best practices
* Added ui tests for ListView
* V14 Added acceptance tests for Image Cropper, Numeric and Radiobox (#15599)
* Added ui tests for ImageCropper
* Added ui tests for Numeric
* Added ui tests for Radiobox
* Updated tests for Approved Color to change the way to arrange test data
* Change "" to '' and updated before/after methods
* V14 Added acceptance test for Textarea, Textstring, Upload (#15606)
* Added ui tests for Textarea
* Added ui tests for Textstring
* Added ui tests for Upload Article, Upload Audio, Upload File, Upload Vector Graphics, Upload Video
* Fixed failing tests due to api changes
* Changed propertyEditorAlias to editorAlias due to api changes
* Removed the step to check notification displays and changed string variables to numeric variables due to api changes
* Updated the skip tests
* Added skip tests and update method name due to test helper changes
* Splited tests out
* Bumped version
* Changed '' to '
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Remove clean xss from datatype name and alias.
* Edit / and \ to the exclusions argument
* Forgot to escape the backslash
---------
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
* Fixes#15136: Search includes fields from other cultures
Regex was updated to support block list fields
Unpublished nodes on the supplied culture are not filtered out
* Making the code non-breaking
* Fixed failing publish content query integration tests
The tests were not setting the content as publish in the specifed culture
causing the content items to be ignored
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Bugfix: MediaCacheRefresher needs to always clear the mediaCache no matter what the publishedState is
* fix: check correct permissions for deleteDocumentFromRecycleBin
* Fix: ImageCropper propertyValues should not hold invalid values.
* Added media delete endpoints
* PR comment fix: Do not schedule cleanup if we know the file does not exist.
* resolved forward merge build conflicts
namespace cleanup
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Re-modelling API models (take two)
* Do not use "content" - use "document" and "media" instead.
* Move "item" endpoints to their own silo
* Use "Id", not "Key"
* Regenerate OpenApi.json
* Rename user start node IDs from "content" to "document"
* Regererate OpenApi.json after forward merge
* update importmap
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Adding revoke user auth token handler and registering it
* Maintain method clarity by grouping new calls into its own method
* Rename functions to what they do
* Suggested linq function of tripple nesting
* Reduce nesting by early loop continuation
* Fix PR suggestion async typo
* Review suggestions
* Log msg alignment between members and users
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Members and member types in the Management API
* Add validation endpoints for members
* Include validation result in service response + add unit tests
* Regenerate OpenApi.json
* Regenerate OpenApi.json after merge
* Don't throw an exception when trying to set valid variation levels for member types
* Added missing ProducesResponseType
* Remove TODO, as that works
* Allow creation of member with explicit key
* Do not feature "parent" for member creation + add missing response type
* Do not feature a "Folder" in create member type (folders are not supported)
* Added missing build methods
* Fixed issue with mapping
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Previous slider min and max values caused home and end keys to behave
incorrectly. Min is now 0 to reflect 0% zoom and max is now 100 to
reflect max zoom. Additionally, adjusted step to 0.01 to avoid slow
adjustments when using arrow keys or page up / page down keys.
Issue: #15578
* Remove Linux only Docker build for E2E tests
* Fix cmsVersion variable
* Remove custom build number step (already done by Nerdbank.GitVersioning)
* Add and use global.json to configure .NET SDK version
* Only publish tests build output
* Only include unit tests and integration build output (without reference assemblies)
* Added "pr: none" to nightly trigger (#15044)
* Only run SQL Server Acceptance Tests on release builds or when parameter is set
* Use SQLite in-memory database and configure database optimizations (#15461)
* Disable content version cleanup and server election
* Reference Umbraco.Tests.AcceptanceTest.UmbracoProject instead of copying files
* Suspend/disable scheduled publishing
* Ensure all Playwright results are copied to the artifact staging directory
* Update E2E SQL Server job and also run on Linux
* Fix building acceptance test project
* Fix building acceptance test project (suing PrivateAssets)
* Explicitly disable building project references in E2E tests and use pre-built output
* Include obj folder of acceptance test project in build artifacts
* Download build artifacts
* Re-add PrivateAssets
* Revert to copying C# files to E2E application
* Disable Integrated Security for SQL Server on Linux
* Update SQL Server on Linux connection string
* Disable encryption on SQL Server for Linux
* Update SQL Server on Linux steps
* Add Database to SQL Server connection string on Linux
* Update Integration Tests and use SQL Server 2022 Docker image
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
(cherry picked from commit 0e1ca76d6e)
* Remove Linux only Docker build for E2E tests
* Fix cmsVersion variable
* Remove custom build number step (already done by Nerdbank.GitVersioning)
* Add and use global.json to configure .NET SDK version
* Only publish tests build output
* Only include unit tests and integration build output (without reference assemblies)
* Added "pr: none" to nightly trigger (#15044)
* Only run SQL Server Acceptance Tests on release builds or when parameter is set
* Use SQLite in-memory database and configure database optimizations (#15461)
* Disable content version cleanup and server election
* Reference Umbraco.Tests.AcceptanceTest.UmbracoProject instead of copying files
* Suspend/disable scheduled publishing
* Ensure all Playwright results are copied to the artifact staging directory
* Update E2E SQL Server job and also run on Linux
* Fix building acceptance test project
* Fix building acceptance test project (suing PrivateAssets)
* Explicitly disable building project references in E2E tests and use pre-built output
* Include obj folder of acceptance test project in build artifacts
* Download build artifacts
* Re-add PrivateAssets
* Revert to copying C# files to E2E application
* Disable Integrated Security for SQL Server on Linux
* Update SQL Server on Linux connection string
* Disable encryption on SQL Server for Linux
* Update SQL Server on Linux steps
* Add Database to SQL Server connection string on Linux
* Update Integration Tests and use SQL Server 2022 Docker image
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Fixed failing tests
* Updated tests to use the updated helpers
* Clean up tests
* Enabled our pipeline for E2E testing
* Updated the CMS URl for our E2E tests
* Bumped version of our testHelpers
* Did some fixing, still a bit more to do
* Updated auth tests to use LoginUiHelper
* Updated Telemetry tests to use TelemetryUiHelper
* Updated LogViewer tests to use LogViewerUiHelper
* Updated api tests to apply AAA pattern and fix failed tests
* Removed unused import
* Added api tests for RelationType
* Added ui tests for Relation Type
* Bumped test helper version
* Added api tests for Relation Types
* Updated ui tests for Relation types
* Updated method due to the test helper changes
* Bumped version
* Fixed merged
* Update tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Relation Types/RelationTypes.spec.ts
Added ;
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Update tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Relation Types/RelationTypes.spec.ts
Updated name of method
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Update tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Relation Types/RelationTypes.spec.ts
Updated name of method
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Clean up ContentControllerBase and move document related operations to DocumentControllerBase
* Rename content to document
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Don't add published infos if not published
* Unpublish all cultures as a whole
* Added tests
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Attempt to fix#15090. Save connection string in private variable after setup.
* Do not dispose ef core contexts when if the connectionstring changes.
A Ef core context is protected from creations when no connection string is present. If it changes that single instance will continue with the connection string it was initialized with.
* Clean up
* Review Equals methods
(cherry picked from commit 5146f05625)
* Attempt to fix#15090. Save connection string in private variable after setup.
* Do not dispose ef core contexts when if the connectionstring changes.
A Ef core context is protected from creations when no connection string is present. If it changes that single instance will continue with the connection string it was initialized with.
* Clean up
* Review Equals methods
* Property level validation for content - initial implementation
* Always succeed create/update regardless of property level validation errors
* Move old complex editor validation classes to Web.BackOffice so they will be deleted
* Include operation status and property validation errors in ProblemDetails
* Refactor property validation to its own service(s)
* Make the problem details builder a little more generic towards extensions
* Validation for item and branch publish
* Moved malplaced test
* Get rid of a TODO
* Integration tests for content validation service
* Simplify validation service
* Add missing response types to create and update for document and media
* Remove test that no longer applies
* Use "errors" for model validation errors (property validation errors)
* Split create/update and validation into their own endpoints
* Fix forward merge
* Correct wrong assumption for missing properties
* Remove localization from validation error messages - decreases dependencies, adds a lot of obsolete constructors
* Reuse existing validation service + support custom error messages
* Fix merge errors
* Review comments
* Run the same cleanup with scaffolding content as when copying.
- Added a new ContentScaffoldedNotification
- Published the notification when a new scaffold has been created from a blueprint (content template)
- Linked up the ComplextPEContent handler to do the same cleanup for the new notification as when copying.
- registered handlers to the event for blocklist, blockgrid and nested content
* PR pattern matching suggestion
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
(cherry picked from commit dff90c6ec0)
* Rename InstallVResponseModel to InstallRequestModel
* Align SettingsInstallController
* Rename split DatabaseInstallResponseModel in two
* Change UserInstallResponseModel to UserInstallViewModel
* Use PresentationModel instead of ViewModel
* Use operation status pattern when validating database
* Prepare for install to return a message
* Begin updating steps
* Make StepBase sharable between upgrade and install
* Update steps
* Use error message from install steps in install controller
* Use error message from upgrade steps in upgrade controller
* Use 500 for install/upgrade failed
It's entirely likely that it has nothing to do with the request
* Updated OpenApi.Json
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* First take at new models for improved mapping between client and server
* Add variants to Media
* Re-introduced lost names
* Start breaking apart "Id" reference properties in request models as well
* Refactor to fix OpenAPI spec
* Discard TODO (not relevant)
* Split recycle bin response models
* Delete unused marker interface
* Use reference properties for content and media type handling
* Rework document and media types to be explicit in relations (do not expose "content type", it is an implementation detail)
* Mapping for document and media type copy + move
* Ensure correct response model for Media
* Regenerate OpenAPI JSON after forward merge
* Fix forward merge issues
* Fix forward merge + regenerate OpenApi.json
* Added unit tests for content state helper
* Move "allowed document types" endpoint to document type silo, refactored services and added "allowed media types"
* Regenerate OpenApi.json after forward merge
* Do not include content state for media items
* Review fix
* Updated naming to route correctly
* Added a check for null
* Added another status code for the PublicAccess
* Added a check for null
* Updated naming to match route
* Added attempt pattern
* added a ProblemDetailsBuilder for the EntryNotFound
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* In progress tests
* Updated createdPackaged tests
* Added test for checking if we are able to see the marketplace
* Added tests for checking if the correct message is shown
* Made quite a lot of changes, used the locators in the testHelpers. Added additional tests
* Updated to match changes to the Ui TestHelpers
* Fixed test
* added package file
* Bumped versions
* Updated naming
* Fixed Acceptance Test to match patterns
* Updated locator in test.
* Added Act comment
* Followed comments from PR
* Added 2FA management endpoints
* Ensure not found do not lead to forbidden results
* Do not inherit the requirement to have access to users, from the current user base class
* Updated OpenApi.json
* Handle 2FA in login scenario (only backend)
* Added the endpoint to use for client to post 2FA code
* Fixed tests and allow injecting the authentication type settings
* fix test build
* Fallback to use Constants.Security.BackOfficeAuthenticationType
* remove unused variable
* Review fixes
* Build fix
* Update src/Umbraco.Cms.Api.Management/Controllers/User/Current/DisableTwoFactorProviderCurrentUserController.cs
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Handle case where 2fa provider is already setup
---------
Co-authored-by: Sven Geusens <geusens@gmail.com>
* Bumped version of TestHelper
* Added .udt test files
* Updated api tests for Dictionary
* Added ui tests for Dictionary
* Updated ui tets for Dictionary as TestHelper is changed
* Updated ui tests of Dictionary
* Updated verify step
* Fixed comments
* Imported crypto into Dictionary.spec.ts
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Fixed format
---------
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Implemented culture based authorization for content
* Implemented culture auth for create/update of documents
* Applied culture authorization to dictionary create/update
* Added an integration test to test an assumption about the ContentTypeEditingService.CreateAsync method
* Fix processing when result is already false;
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Refactor method to async + clarify and consilidate comments regarding dictionary locks
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Include automatic relation type aliases from factory and fix SQL parameter overflow (#15141)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations (#15160)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations
* Always get all automatic relation type aliases
* Do not set relation type alias for unknown entity types
* Get references from recursive (nested/block) properties
* Optimize relation tracking for adding new and keeping existing relations
* Optimize getting references by grouping by property editor alias and avoiding duplicate parsing of the same value
* First stab at a massive remake of file system based endpoints
* Do not prefix system paths with directory separator char
* Ensure correct and consistent response types
* Fix partial view snippets endpoints
* Clean up IO (path) operations
* Update OpenAPI JSON to match new endpoints
* Return 201 when renaming file system resources
* Add "IsFolder" to file system item endpoints
* Replace "parentPath" with a "parent" object for file system creation endpoints
* Update OpenAPI JSON
* Rewrite snippets
* Regenerate OpenAPI JSON after forward merge
* Remove stylesheet overview endpoint
* Regenerate OpenAPI JSON after forward merge
* add server-file-system module to importmap
* Expose generated resource identifier in 201 responses
---------
Co-authored-by: Mads Rasmussen <madsr@hey.com>
* Updaets `MigrationPlanExecutor.cs` to use serilog convention for strings
* Updaets `ExamineManagementController.cs` to use serilog convention for strings
* Updaets `HelpController.cs` to use serilog convention for strings
* Updaets `PreviewAuthenticationMiddleware.cs` to use serilog convention for strings
* Now properly checks the lockedoutdate
* Also fix Test (failed constructor)
* Processed feedback
* Added obsolete constructor
---------
Co-authored-by: Ambert van Unen <AvanUnen@ilionx.com>
* Include automatic relation type aliases from factory and fix SQL parameter overflow (#15141)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations (#15160)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations
* Always get all automatic relation type aliases
* Do not set relation type alias for unknown entity types
* Get references from recursive (nested/block) properties
(cherry picked from commit 5198e7c52d)
* Include automatic relation type aliases from factory and fix SQL parameter overflow (#15141)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations (#15160)
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Improve logging of invalid reference relations
* Always get all automatic relation type aliases
* Do not set relation type alias for unknown entity types
* Get references from recursive (nested/block) properties
* synchronize normal rte with grid-rte
* restore pinToolbar and unpinToolbar from v10 and update to tinymce v6 and apply to grid-rte
* linting
* Reverting `pinToolbar` from v8
* remove unused variable
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* synchronize normal rte with grid-rte
* restore pinToolbar and unpinToolbar from v10 and update to tinymce v6 and apply to grid-rte
* linting
* Reverting `pinToolbar` from v8
* remove unused variable
---------
Co-authored-by: leekelleher <leekelleher@gmail.com>
* Adding response/request models
* Adding mapping
* Adding factory
* Adding controllers
* Moved to correct (generic domain) namespace
* Renamed to reflect the correct domain + renamed IsAllowed to IsCompatible
* Renaming + TODO
* Removed presentation logic + TODO
* Fixed controller
* Attempt for generic implementation
* Enable composition of media types + refactor content/media type editing tests to prove it (and a little renaming of a mis-named property)
* Remove unused classes
* Introducing GetAvailableCompositionsAsync to EditingServices
* Implement GetAvailableCompositionsAsync
* Base share implementation
* Tests
* Tests
* Renaming
* Clean up controller
* Clean up test
* Remove redundant check
* Create and use generic models
* Add shared implementation
* Fix and rename doc type mapper
* Fix document Type factory
* Add missing response type
* Create a base request model
* Make key nullable when new item
* Media type response models
* Default isElement to false and remove isElement param from media type related things
* Create mappings for media type compositions
* Inject generic base service to reuse implementation amongst concrete services
* Add new composition endpoints for media type
* Use specific type
* Add a reference comment to other test suite
* Add more test cases
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added management API for dynamic root and query steps.
* Open API
* Split models, use required and rename a little
* Rename query steps
* Make request culture and segment optional
* Introduce explicit back-office variation context
* Simplify query endpoint path
* Correct field naming
* Updated OpenApi.json
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Fixed failing tests
* Updated tests to use the updated helpers
* Clean up tests
* Enabled our pipeline for E2E testing
* Updated the CMS URl for our E2E tests
* Bumped version of our testHelpers
* Did some fixing, still a bit more to do
* Updated auth tests to use LoginUiHelper
* Updated Telemetry tests to use TelemetryUiHelper
* Updated LogViewer tests to use LogViewerUiHelper
* Updated api tests to apply AAA pattern and fix failed tests
* Removed unused import
* Fixed comments
* Bumped version of test helper
* Updated the version to 10 instead of 11
* Updated the package-lock.json file to contain the correct versions
* Added a waitForTimeout
The reason for this is that this test is failing on the pipeline
* Bumped version of testhelpers
* Removed TODO
* Updated EnsurePathExists so we create the stylesheet and scripts folder
* Added a waits for response, otherwise our test would be too fast
* Sometimes it reloads before the save is complete
* Added timeout for locator
* Removed duplicate
* Wait until save
* This was an actual bug, so we should not use a workaround, we should fix it
* Skips the tests for script.
* Bug was fixed, so this can be used again
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Create new request models
* Create new structural operation status
* Handling of new structural operation status
* New CopyAsync and MoveAsync
* New endpoints
* Update schema
* Adding NotFound status
* Adding BadRequest response type
* Moving getbyid check to service
* Fix signature and implement get by id check in service
* Update OpenApi schema
* Use PUT instead of POST in "move" controllers
* Use PUT instead of POST in some more "move" controllers
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Begin migrating test to use new service calls
* Fix formatting
* Add todo to add timeout so our tests dont stall entirely
* Add timeout so tests can run
Still need to figure out why the index only seems to update sometimes
* Migrate BackOfficeExamineSearcherTests to use new service calls
* Remove unused imports
* Migrate to languageservice in external index searcher test
* Use seperate save and publish calls
* Use scopes in ExamineExternalIndexTests
* Use scopes in BackOfficeExamineSearcherTests
* Implement user configuration endpoint
* Add password configuration factory
* refactor users to use new password configuration model
* Implement current user configuration endpoint
* Add auth policy
* Refacor current user to use PasswordConfigurationReponseModel
* Implement configuration security controller
* Rename property to less confusing name
* Add version to ConfigurationSecurityController.cs
* Review changes
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Add item in requestcache when security stamp is already updated in request
* Propagate constructur obsoletion to implementing services and fix unit tests
---------
Co-authored-by: kjac <kja@umbraco.dk>
* bump tinymce from 6.8.1 to 6.8.2
* replace stateSelector with appropriate onSetup() functionality and replace addButton() with addToggleButton() to support toggling
* Run the same cleanup with scaffolding content as when copying.
- Added a new ContentScaffoldedNotification
- Published the notification when a new scaffold has been created from a blueprint (content template)
- Linked up the ComplextPEContent handler to do the same cleanup for the new notification as when copying.
- registered handlers to the event for blocklist, blockgrid and nested content
* PR pattern matching suggestion
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
(cherry picked from commit dff90c6ec0)
* Run the same cleanup with scaffolding content as when copying.
- Added a new ContentScaffoldedNotification
- Published the notification when a new scaffold has been created from a blueprint (content template)
- Linked up the ComplextPEContent handler to do the same cleanup for the new notification as when copying.
- registered handlers to the event for blocklist, blockgrid and nested content
* PR pattern matching suggestion
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Implement temporary file configuration endpoint
* Update MaxfileSize to be a string.
* Make max file size a nullable integer
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* add tinymce cloud api key to configuration
* forward apikey through proxied config object after retrieving it from the server
* load the plugins.min.js file from tiny.cloud if cloud api key is set
* bump tinymce from 6.7.3 to 6.8.1
* disable premium promotion and make plugins unique
* make sure tinymce local assets are loaded before trying to load the plugins.js from cloud and before configuring tinymce
* Allow Tree endpoints that query entities to return count without entity data
* Apply count by take 0 in FileSystem Endpoints
* Apply count by take 0 in Dictionary Endpoints
* Apply count by take 0 in RootRelationType Endpoints
* Revert PaginationService takeZero flag as it only guards against things that already blow up
* Mark PagedResult as Obsolete as we want to step away from classic pagination system to skip/take
* Pushed management api RelationType pagination and async preperation down to the service layer
* Scope fix and allocation optimizations
* Pushed management api dictionary pagination and down to the service layer
Also did some nice allocation optimizations
* PR feedback + related strange count behaviour
* Moved count by pagesize logic from EntryController to service
* A tiny bit of formatting and comments
* Fix bad count filter logic
* Added integration tests for creating datatypes in a folder
* Added tests for count testing on TreeControllers
- ChildrenDataType
- RootDataType
- ChildrenDictionary
- RootDictionary
- ChildrenDocument
- RootDocument
- RootBluePrint
- RootDocumentType
- ChildrenDocumentType
* Revert "Added tests for count testing on TreeControllers", should be on services
This reverts commit ee2501fe62.
This reverts commit 808d5b276f.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Rename information endpoint to troubleshooting
* Rename information endpoint to troubleshooting
* Add new information endpoint
* Fix bad merge
* Add InformationServerController.cs back
* Update serverTime offset to non hard-coded value.
* Add dictionary to swagger models
* Update OpenApi.json file
* Rename map definition
* Add ServerConfigurationBaseModel
* Implement ServerConfigurationBaseModel.cs
* Updated OpenApi
* Updated endpoint to return correct type in openapi
* Use explicit class for server information
* Remove version endpoint, as that is contained in server information.
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Add post and delete methods to user-group/id/users to add/remove users from group
* Update OpenApi contract
* PR feedbac
Moved fetch usergroup logic into service layer
Renamed methods to async
* Naming
* Introduced user not found on UserGroupOperationStatus, as otherwise the return message is wrong
* Added authentication
* Removed authorization from the service layer as its determined that that responsibiliity does not belong there.
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Added a temporary DataCollector for v14 editorAlias migrations
* PR feedback
Do not run the collector on subscribers or non running instances
Reduced logger noise
* Extra v14 sanity check
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Ensure that missing access rules do not break the site (#15081)
(cherry picked from commit 6777145079)
* Added Exception handling and replicated error and info message
* Update auth.resource.js
Fixed the message
* Changed Delay introduction to early phase to avoid repeating code.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: jey <jey@umbraco.dk>
Co-authored-by: Jey <cyaqublu@gmail.com>
* revert change to load commonjs version of uui
* revert to load uui
* build login first
* build login assets as iife to support loading inside the backoffice
* Ensure that missing access rules do not break the site (#15081)
(cherry picked from commit 6777145079)
* Added Exception handling and replicated error and info message
* Update auth.resource.js
Fixed the message
* Changed Delay introduction to early phase to avoid repeating code.
---------
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: jey <jey@umbraco.dk>
Co-authored-by: Jey <cyaqublu@gmail.com>
* Making ProblemDetails details more generic
* Adding authorizer that can be replaces for external authz in handlers. Adding handler and requirement for UserBelongsToUserGroupInRequest policy
* Adding method to get the GUID from claims
* Adding service methods to check user group authz
* Porting MustSatisfyRequirementAuthorizationHandler
* Adding controllers authz
* Fix return status code + produced response type
* Moving to folder
* Adding DenyLocalLogin policy scaffold
* Implement a temp DenyLocalLoginHandler
* Introducing a new Fobidden result
* Fix comment
* Introducing a helper class for authorizers
* Changed nullability for GetCurrentUser
* Changes from Attempt to Status + FIXME comments
* Create a UserGroupAuthorizationStatus to be used in the future
* Introduces a new authz status for checking media acess
* Introducing a new permission service for media
* Adding fixme
* Adding more policy configurations
* Adding Media policy requirement and handler
* Adding media authorizer
* Fix order of params
* Adding duplicate code comment
* Adding authz to media controllers
* Migrating more logic from MediaPermissions.cs
* Adding more MediaAuthorizationStatus-es
* Handling of new authorization status
* Fix comment
* Adding NotFound case
* Adding NewDenyLocalLoginIfConfigured policy && commenting [AllowAnonymous] where the policy is applied since it is already handled
* Changed Forbid() to Forbidden() to get the correct status code
* Remove policy that is applied on the base controller already
* Implement and apply NewUmbracoFeatureEnabled policy
* Renaming classes to add Permission in the name
* Register permission services
* Add FIXME
* Introduce new IUserGroupPermissionService and refactor accordingly
* Add single overload with default implementation
* Adding user permission policy and related
* Applying admin policy
* Register all new policies
* Better wording
* Add default implementation for a single overload
* Adding remarks to IContentPermissionService.cs
* Supporting null as key in ContentPermissionService
* Fix namespace
* Reverting back to not supporting null as content key, but having dedicated implementation
* Adding content authorizer with null values to represent root item
* Removing null key support and adding dedicated implementation
* Removing remarks
* Adding content resource with null support
* Removing null support
* Adding requirement and status
* Adding content authorizer + handlers
* Applying policies to content controllers
* Update comment
* Handling of Authorization Statuses
* More authz in controllers
* Fix comments
* New branch handler
* Obsolete old implementation
* Adding dedicated policies to root and bin
* Adding a branch specific namespace
* Bin specific requirement and namespace
* Root specific requirement and namespace
* Changing to new root policy
* Refactoring
* Save policies
* Fix null check/reference
* Add TODO comment
* Create media root- and bin-specific policies, handlers, etc.
* Apply correct policy in create and update media controllers
* Apply root policy to move and sort controllers
* Fix wording
* Adding UserGroupAuthorizationStatusResult
* Remove all AuthorizationStatusResult as we cannot get the specific AuthorizationStatus
* Fixing Umbraco feature policy
* Fix allow anonymous endpoints - the value returned from DenyLocalLoginHandler wasn't enough, we need to succeed DenyAnonymousAuthorizationRequirement as it is required for some of the endpoints that had the attribute
* Apply DenyLocalLoginIfConfigured policy to corresponding re-implementation of PostSetInvitedUserPassword
* Fix comment
* Renaming performingUser to user and fixing comments
* Rename helper method
* Fix references
* Re-add merge conflict deletion
* Adding Backoffice requirement and relevant
* Registering
* Added a simple policy test
* Fixed small test things and clean up
* Temp solution
* Added one more test and fix another static issue
* Fix another merge conflict
* Remove BackOfficePermissionRequirement and handler as they might not be necessary
* Comment out again [AllowAnonymous]
* Remove AuthorizationPolicies.BackOfficeAccessWithoutApproval policy as it might not be necessary
* Fix temp implementation
* Fix reference to correct handler
* Apply authz policy to new publish/unpublish controllers
* Fix comments
* Removing duplicate ProducesResponseTypes
* Added swagger documentation about the 401 and 403
* Added Resources to Media, User and UserGroup
* Handle root, recycle bin and branch in the same handler
* Handle both parent and target when moving
* Check Ids for all sort requests
* Xml docs
* Clean up
* Clean up
* Fix build
* Cleanup
* Remove TODO
* Added missing overload
* Use yield
* Adding some keys to check
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Disable transitive package version pinning
* Take top-level dependencies on Azure.Identity and System.Net.Http
* Take top-level dependencies on System.Security.Cryptography.Xml and System.Text.RegularExpressions
* Use named HttpClients
* Register as named client
* Set headers on request message.
* Add User agent header to http client
* Add headers within Try-catch
* Add using for HttpResponseMessage
* Update src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Log key instead of entire webhook
* Update src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Create constant for User agent header name
* Update src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Use datetime.now
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Use version overrides for ImageSharp 2
* Move Directory.Packages.props to root, use GlobalPackageReference and replace Microsoft.CSharp with Microsoft.CodeAnalysis.CSharp
* Replace NPoco.SqlServer with NPoco and remove unused System dependencies
* Fix package validation and MSBuild warnings
* Add nuget.config and enable package source mapping
* Remove explicitly set C# language version
* Add empty Directory.Packages.props file for acceptance test
* Downgrade SixLabors.ImageSharp back to 3.0.2 because of breaking changes
* Update ImageSharp/ImageSharp.Web to 3.1.0 and use ComputeHMAC
* ignore node_modules specifically to limit size of build_output
* build and publish backoffice artifacts
* instruct GitVersioning to output all variables such as npm to use in Pipelines
* use NBGV variables
* prepare npm package for nightlies
* instruct to deploy to MyGet for nightlies
* Deploy to npm only after Myget
* add public access to publish
* write scopes to .npmrc file
* add scope to registry.npmjs.org
* nightly param
* Move adding webhooks to extension methods
* Clean up WebhookEventCollectionBuilder
* Rename AddAllAvailableWebhooks to AddCmsWebhooks and internalize defaults
* Use fluent CmsWebhookEventCollectionBuilder for adding CMS specific webhook events
* Split media and media type webhook events
* Use fluent CmsUserWebhookEventCollectionBuilder for adding CMS user specific webhook events
* Rename extension methods and add onlyDefault parameter
* Remove duplicate UserForgotPasswordRequestedWebhookEvent
* Add document type webhook events and use fluent builders for content and content types
* Use fluent WebhookEventCollectionBuilderCmsMember for adding member/member group webhook events
* Use fluent WebhookEventCollectionBuilderCmsTemplate for template/partial view webhook events
* Use fluent WebhookEventCollectionBuilderCmsFile for file based webhook events (instead of only template/partial view)
* Move all webhook events to Umbraco.Cms.Core.Webhooks.Events namespace
* Reorder AddFile method and update documentation
* Move adding webhooks to extension methods
* Clean up WebhookEventCollectionBuilder
* Rename AddAllAvailableWebhooks to AddCmsWebhooks and internalize defaults
* Added the possibility for us to search through the external index
* Added ForceInstantExecution
* Added InternalIndex integration tests
* Added External Index integration tests
* Removed comments
* Remove unused internal field
* Add mechanism to wait for index rebuilding
* Remove some of the usages of sleep
* Remove sleeps
* Added comments from review
* Added a method for getting the IndexPath
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Expose the Delivery API CLR type
* Updated field naming and warnings
Addresses PR feedback
* Added default implementation to prevent breaking change
(cherry picked from commit 7f4378066d)
* Refactor acceptance tests for Partial View
* Refactor api tests for Partial View
* Bumped version of Test Helper
* Added suggestion from review
* Bumped version to testhelpers 2.0.8
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* add check for the presence of the ?logout=true parameter on the login screen to avoid autoredirect to external login
* refactor controller to eliminate need for duplicate defaultResponse and externalLoginResponse (they are always the same)
* refactor to reduce nesting
* Should fix#14890
* Set z-index of #leftcolumn to 0 when Tiny MCE is in fullscreen mode
---------
Co-authored-by: Jannik Anker <jaa@kfforsikring.dk>
Co-authored-by: Jason Elkin <jason@bumpdigital.co.uk>
* Cache block item constructors for block based editors
* Fix unit tests
* Fixed Grid unit tests
* Clear constructor caches when content types and data types change (to support InMemoryAuto models)
* Move localdb file management of PublishedSnapshotService into itself.
Added a way for the PublishedSnapshot service to clean up it's local files so (for example) Upgrade migrations have a reliable way of removing known invalid cache files without running into locking issues
* Small rename to differentiate existing method from simple getter
* Fix breaking change
Long live default implementations 🎉
* Another breaking change fix
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Added acceptance test for Stylesheets
* Updated api test for stylesheet using new helpers and apply AAA pattern
* Bumped version of Test Helpers
* Updated api and ui tests of Stylesheet after modifying TestHelper
* Updated stylesheets ui tests using openActionMenuAtRoot()
* Added suggestions from review
* Added wait for the flaky tests
* Fixed package-lock.json
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* Fix IWebhook and IEntity GetUdi extension method
* Refactor to use switch expressions
* Add GetUdiForWebhook test
* Added a webhook builder for unit tests.
---------
Co-authored-by: Andy Butland <abutland73@gmail.com>
* parse culture and segment for dynamic root.
* Handle new culture and segment parameters
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
* Create missing node for content type
* Change to Unknown instead of deleted
* Cleared contentTypes and removed console.log
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
* make CoreScopeProvider available for derived classes
* Create publish controller
* Add publish functionality
* Remove unneeded using
* Implement publish for multiple cultures
* support multiple cultures in controler
* Dont validate properties
* Refactor to use PublishingOperationStatus
* refactor to use proper publish async methods
* Refactor publish logic into own service
* Commit some demo code
* Add notes about what errors can happen when publishing
* Rework ContentPublishingService and introduce explicit Publish and PublishBranch methods in ContentService
* Fix merge
* Allow the publishing strategy to do its job
* Improved check for unsaved changes
* Make the old content controller work (as best possible)
* Remove SaveAndPublish (SaveAndPublishBranch) from all tests
* Proper guards for invalid cultures when publishing
* Fix edge cases for property validation and content unpublishing + add unpublishing to ContentPublishingService
* Clear out a few TODOs - we'll accept the behavior for now
* Unpublish controller
* Fix merge
* Fix branch publish notifications
* Added extra test for publishing unpublished cultures and added FIXME comments for when we fix the state of published cultures in content
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Added a webhookOperationStatus for noEvents
* Added a method for validating Webhooks. Currently checks if the webhooks has any events or not
* Added WebhookOperationStatus for NoEvents
* Update src/Umbraco.Core/Services/WebhookService.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Services/WebhookService.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Refactor to show icon and status code to make status more clear
* Fix up migration
* Add change log status migration
* Fix up frontend to display cross when fail
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Use code snippet component for request and response
* Change overlay size to medium
* Format log date
* Handle JS as JavaScript
* Try format JSON
* Update less syntax
* Add word wrap
* Formatting
* Update variable
* Remove unused editorService
* Add missing details controller and fix formatting in catch block
* Set data object
* Update overlay size to match umb-editor overlay
* Use editorService instead to show details on overlay
* Add general box header
(cherry picked from commit 13db9b308e)
* Use code snippet component for request and response
* Change overlay size to medium
* Format log date
* Handle JS as JavaScript
* Try format JSON
* Update less syntax
* Add word wrap
* Formatting
* Update variable
* Remove unused editorService
* Add missing details controller and fix formatting in catch block
* Set data object
* Update overlay size to match umb-editor overlay
* Use editorService instead to show details on overlay
* Add general box header
* fix: make sure isTimedOut state is forwarded to the login screen
* fix: make umb-custom-view work without attributeChangedCallback
* style subheadline
* add support for userViewState on external login custom views
* fix: subheadline should be a span
* check for isTimedOut on internal login screen
* reformat code
* add args to external login provider custom view
* send args to custom view
* set state to "logout" when clicking the logout button
* force user to new login page /umbraco/login?logout=true if logged out
* Update blocklist.blockconfiguration.overlay.less
Change noValue color
* Update blockgrid.blockconfiguration.overlay.less
Change noValue color for block-grid
* add new login images
* layout styling
* styling
* fix line height
* use image and logo
* add comments
* remove border and shadow
* change logos and images
* use styleMap and add dark logo property
* add new content setting for dark logo variant
* add loginLogoImageDark to angular server variables
* set logo-dark attribute on the auth element and rename "logo-image" to "logo-light"
* styling
* update auth element
* replace logo files with new brand logos
* use different logo on install screen
* no-nodes: move logo to img file
* use different logo for umb-avatar
* use different logo for backoffice
* use different logo for BootFailed
* tranparent background
* switch dark and light logo
* image flip horizontal
* fix background
* inject native inputs into auth element
* use native inputs in login
* get input values and submit on enter press
* wip validation
* wip custom login input. And inject entire form instead
* use external submit button
* use uui-labels instead
* style inputs
* cleanup
* convert to function
* add translations
* wait for slot update before getting form
* fix divider to work on transparent backgrounds
* background less transparent
* load css from file
* fix logo
* fix mobile padding
* add documentation and fix name of input field for username
* revert to old login background
* revert to old login background
* add labels for login fields
* fix label warning
* fix fallback for messages
* replace background image
* do not transform background image
* add mocked texts
* use new generic "Welcome" title
* use correct user_email for email field
* update "Welcome..." to "Welcome" to use with the new login screen
* reformat code
* update greeting headline
* update actions
* update mocks
* update fallback value
* update texts
* improve query safety
* add logoImageAlternative and ensure naming is correct from backend to frontend
* add remarks to avoid changing the color configuration of an external login button
* format
* update auth styles
* external login provider element
* auth layout
* external login providers layout
* login input element
* invite page
* login page
* new password page
* typesafe
* fix custom view login provider
* divider color
* prevent pink lines from overflowing image
* replace login background
* add umb prefix to css variables
* avoid using 'umbraco' in alt texts and add check for logo alternative
* adjust greeting size
* Revert "add umb prefix to css variables"
This reverts commit 005813cbfd.
* add new blue button color
* font-size on headlines
* align styling on all pages
* use error layout
* ts happy
* adjust divider to work better with rounded buttons
* add overflow to in case of very long forms
* adjust h2 size
* update mocks to match cms
* first headline on a page should be a h1
* first headline on a page should be a h1
* first headline on a page should be a h1
* copy styling to mfa page
* first headline on a page should be a h1
* make the blue logo default for Umbraco 13
* move background-color to auth-layout so it also takes effect inside the cms
* adjust padding on the internal div on the buttons
* reformat code
* fix async text for external login buttons
* align design of mfa page with the other screens
* align logos
* reformat code
* use white logo for nonodes
* add safety measure to returnPath
* lowercase the 'or' text
* force uui-select to use the background-color as other regular inputs
* match uui-select-height with other input fields
* revert back to default look for outline uui-button
* move background-color to layout element to span the entire browser
* align headlines across components
* adjust max-width on #content to better fit headlines
* align line-height on headlines across components
* allow error text a bit of top margin
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Adding a replacement to IUserGroupAuthorizationService
* Replacement for the implementation as well
* Adding AuthorizationStatus & mapping it to the corresponding OperationStatus
* Fix references
* Fix another reference
* Fix statuses
* Fix status result messages
* Fix wording
* Moving check for user part of user group earlier
* Review suggestion
* Fix section name
* Updated api script tests for using new helpers and the AAA pattern
* Added acceptance tests for the scripts
* updated naming
* Bumped version of testHelpers
* Added suggestions from review
* Created an extension for comparing the current and the outdated providerName for Sqlite
* Added usages for the CompareProviderNames
* Added another case if the providerName is the outdated SQLite
* Both cases use Sqlite, so there is no need to have duplicate code
(cherry picked from commit d0cd22b09d)
* Created an extension for comparing the current and the outdated providerName for Sqlite
* Added usages for the CompareProviderNames
* Added another case if the providerName is the outdated SQLite
* Both cases use Sqlite, so there is no need to have duplicate code
* V2 output expansion + field limiting incl. deprecation of V1 APIs
* Performance optimizations for Content and Block based property editors
* A little formatting
* Support API versioning in Delivery API endpoint matcher policy
* Add V2 "expand" and "fields" to Swagger docs
* Renamed route for "multiple items by ID"
* Review changes
* Update src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdMediaApiController.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Update src/Umbraco.Cms.Api.Delivery/Filters/SwaggerDocumentationFilterBase.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Update src/Umbraco.Cms.Api.Delivery/Filters/SwaggerDocumentationFilterBase.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Revert "Performance optimizations for Content and Block based property editors"
This reverts commit 0d5a57956b.
* Introduce explicit API cache levels for property expansion
* Friendly handling of bad expand/fields parameters
---------
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Implement persistence
* Start implementing repository
* Implement repository
* Implement request service
* Dont run WebhookFiring if not in runtime mode run
* Refactor repository and service to have full CRUD
* add tests for Request service
* Implement WebhookRequest lock
* Register hosted service
* Add try catch when firing HttpRequest
* Add migration
* Refactor to use renamed IWebhookService
* Refactor tests too
* Add setting to configure webhook firing period
* Update docs
* Review fixes
* Add column renaming migration
* Remove unused service
* run request in parralel
* Refactor to fire parallel in background
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Refactor jobs from HostedServices into BackgroundJobs
* Clean up generics and DI setup
* Add RecurringBackgroundJob Unit Tests
* Add ServiceCollection helper
* Add Obsolete attributes
* Add Notification Classes
* Add UnitTests for RecurringBackgroundJob HostedService
* Add NotificationEvents
* Add state to notifications
* Update UnitTests
* Add Obsolete Attributes to old hosted service classes
* Updated xmldoc in IRecurringBackgroundJob.cs
* Update Obsolete attribute messages to indicate classes will be removed in Umbraco 14
(cherry picked from commit c30ffa9ac3)
* Add edit page for webhook
* Remove function again
* Remove old edit in overlay
* Update language keys
* Update GetByKey to get model as camel case properties
* Localize "select event"
* Localize "create header"
* Don't show input field in header for now
* Add generic class to limit property editor width
* Remove loading check since already checked when loading entire editor view
* Add empty message
* Update col span
* Set edit name
* Map id property
* Return webhook model after update
* Translate speech bubble text
* Resolve content types
* Only push if not already exists
* Check webhook headers
* Set webhook enabled by default
* Updated existing locator as it was prone to failing
* Removed old tests from earlier versions
* Added a timeout and an await. This was because the locator sometimes failed
* Added missing import for crypto
* Updated locator as it sometimes failed.
* Updated the README to include information for using the UI mode for playwright
* Bumped the timeout time for our tests
* We updated the naming for out methods in our testHelpers, so we need to update the usage as well
* Added additional timeout
* Updated the config so it is easier to understand what you need to input
* Added UI acceptance tests for templates
* Added types/node, allows us to use crypto. Updated the testhelpers to use the newest version.
* fixed error with testhelper dependency
* Bumped testhelper version
* Moved to settings instead of templating
* make the login check a bit more robust to be able to handle both old postlogin and new management api response types
* v14 only: update the login url to work with the management api (this will still work with the old backoffice to some extent)
* Revert "v14 only: update the login url to work with the management api (this will still work with the old backoffice to some extent)"
This reverts commit 0639ca80f0.
* V14 only: additionally authenticate with the Management API to set the right cookies
* make the login check a bit more robust to be able to handle both old postlogin and new management api response types
* v14 only: update the login url to work with the management api (this will still work with the old backoffice to some extent)
* Revert "v14 only: update the login url to work with the management api (this will still work with the old backoffice to some extent)"
This reverts commit 0639ca80f0.
* V14 only: additionally authenticate with the Management API to set the right cookies
* Added webhooks to UdiEntityTypes and UdiGetterExtensions.
* Renamed IWebhookservice and amended signature of CreateAsync to allow returning of null.
Added notifications for webhooks.
* Further renames.
* Fixed failing unit test.
* Removed inadvertently added file.
* Refactor IWebhookEvent to contain event type.
* refactor frontend to filter on eventType.
* Display event names
* refactor to use eventNames
* remove npm from overview
* implement alias for WebhookEvents
* Implement [WebhookEvent] attribute
* Refactor IWebhookService to get by event alias and not name
* Rename parameter to fit method name
* to lower event type to avoid casing issues
* Apply suggestions from code review
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Change event names from constants to hard coded. And give more friendly names
* Refactor to not use event names, where it was not intended
* Add renaming column migration
* display event alias in logs
* Update migration to check if old column is there
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* add determineResource function to avoid duplicate code
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Include automatic relation type aliases from factory
* Remove unnessecary distinct and fix SQL parameter overflow issue
* Fixed assertions and test distinct aliases
* Simplified collection assertions
* Fix Umbraco.Web.UI.Login not showing up in solution
* Update PackageValidationBaselineVersion to 13.0.0-rc1 and remove all CompatibilitySuppressions.xml files
* Remove unnecessary package references
* Move Microsoft.EntityFrameworkCore.Design reference and add comment
* Disable package validation and fix override in tests
* Inherit package validation setting for EF Core projects
* Move localdb file management of PublishedSnapshotService into itself.
Added a way for the PublishedSnapshot service to clean up it's local files so (for example) Upgrade migrations have a reliable way of removing known invalid cache files without running into locking issues
* Small rename to differentiate existing method from simple getter
* Fix breaking change
Long live default implementations 🎉
* Another breaking change fix
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* add returnPath to 2fa custom views so they know where to redirect the user to
* fix(2fa): send back the user details in the login-success event emitter in case the login happens inside the backoffice overlay
* Align nullability of ILocalLinkParser with other rich text content parsers (IMacroParser and IImageSourceParser).
* Remove value/return nullability in IImageSourceParser, ILocalLinkParser and IMacroParser
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Added log viewer tests, not done yet
* Updated auth to work
* Updated the authentication test
* Cleaned up the Logviewer tests
* Removed old acceptance tests
* Fixed failing test
* Updated old tests and added additional log viewer tests
* Bumped version and deleted duplicate dependencies
* Fixed naming
* Added a TODO
* Rename FarthestDescendantOrSelfDynamicRootQueryStep to FurthestDescendantOrSelfDynamicRootQueryStep
* Rename FarthestAncestorOrSelfDynamicRootQueryStep to FurthestAncestorOrSelfDynamicRootQueryStep
* Update integration test and repo
* Update icons
* Update tree headers
* Cleanup and change icon name
* Use button element instead
* Disable button instead
* Fix overlay title
* Simplify labels
* Add datalist for common headers
* Use Utilties function
* Events in plural form
* Cleanup and formatting
* Formatting
* More formatting
* Stop event bubbling when clicking delete button
* Sync tree node and show loading indicator
* Add webhook icon
* Remove globe icon to not confuse with languages
* Update logs
* Remove extra column with delete button which shouldn't be there
* Use umb-icon and update titles
* Use content type picker
(cherry picked from commit 29be27ba46)
By not setting the type and format, it would remain integer is this case, which would result in an invalid specification as the enum members are strings.
* avoid duplicate id's on the login screen
this removes the id attr from the inner input element of umb-login-input
* disallow form to validate
the validate behavior is controlled by the UI library
* Refactor jobs from HostedServices into BackgroundJobs
* Clean up generics and DI setup
* Add RecurringBackgroundJob Unit Tests
* Add ServiceCollection helper
* Add Obsolete attributes
* Add Notification Classes
* Add UnitTests for RecurringBackgroundJob HostedService
* Add NotificationEvents
* Add state to notifications
* Update UnitTests
* Add Obsolete Attributes to old hosted service classes
* Updated xmldoc in IRecurringBackgroundJob.cs
* Update Obsolete attribute messages to indicate classes will be removed in Umbraco 14
* Update icons
* Update tree headers
* Cleanup and change icon name
* Use button element instead
* Disable button instead
* Fix overlay title
* Simplify labels
* Add datalist for common headers
* Use Utilties function
* Events in plural form
* Cleanup and formatting
* Formatting
* More formatting
* Stop event bubbling when clicking delete button
* Sync tree node and show loading indicator
* Add webhook icon
* Remove globe icon to not confuse with languages
* Update logs
* Remove extra column with delete button which shouldn't be there
* Use umb-icon and update titles
* Use content type picker
* Setting actionContext.Result when authz wasn't successful
* Taking into account permissions when it is a new node
* Cleanup
* Passing nodeId as path when new item
* pass in fields from outside login-page to make autofill APIs work
* remove unused property
* disable spellcheck for login form
* add name to login form
* remove unused property
* clean-up imports
* use inputmode instead of type=email
* refactor arguments into opts object
* insert umb rte block web component in rte
* First stab at moving the RTE markup to a nested "markup" property in the property value.
* initial work
* only rewrite markup
* transform RTE into component
* parse scope in grid.rte
* revert use a fallback instead
* block insertion and sync in place
* block picker partly impl
* remove test of old controller
* remove test of old controller
* block with block data
* proper block with api connection
* remove log
* styling
* Persist blocks data (still a temporary solution)
* styling allows for interaction
* block actions
* tinyMCE styling
* paste feature
* prevalue display Inline toggle
* inline mode in RTE
* todo note
* fixes wording
* preparation for editor communication
* remove val-server-match for now
* clean up blocks that does not belong in markup
* remove blocks not used in the markup
* liveEditing
* displayAsBlock formatting
* clean up
* TODO note
* Serverside handling for RTE blocks (incl. refactor of Block List and Block Grid)
* ensure rich text loads after block editor
* trigger resize on block init
* Handle RTE blocks output in Delivery API
* sanitize ng classes
* simplify calls to init blocks
* move sanitisation
* make validation work
* only warn when missing one
* clean up
* remove validation border as it does not work
* more clean up
* add unsupported block entry editor
* Revert breaking functionality for Block List and Grid
* prevent re-inits of blocks
* make sure delete blocks triggers an update
* Refactor RichTextPropertyIndexValueFactory to index values from blocks + clean up RichTextPropertyEditor dependencies
* first working cursor solution
* inline element approach
* Handle both inline and block level blocks
* Fix the RTE block parser regex so it handles multiple inline blocks.
* Fix reference and tags tracking, add tests, make the editor backwards compatible and make deploy happy
* Use RichTextPropertyEditorHelper serialization in tests
* Ensure correct model in Block Grid value converter (incl unit test to prove it)
* do not include umbblockpicker in grid
* make blocks the new default, instead of macros
* only send value of body from DOMParser
* Blocks of deleted ElementTypes shows unsupported
* do not edit a unsupported block
* remove trying to be smart on the init
* fix missing culture issue
* set dirty
* alert when no blocks
* Revert "make blocks the new default, instead of macros"
This reverts commit 283e8aa473.
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Adds additional parameter to IFileSource.GetFilesAsync allowing the caller to continue on a file not found exception.
* Moved redirect tracking and creation logic out of handler into a service, allowing for re-use in Deploy.
* Reverted breaking change in IFileSource by obsoleting old method and
* Temp commit.. Initial work on XPath alternative for dymamically finding start nodes
* First commit that goes all the way from ui to db for NearestAncestorOrSelf
* Added more filters + return null from controller instead of not found
* Bugfix
* rewrite query to make sqlserver happy?
* Added more tests
* clean up initial step
* Added tests and refactor
* Update endpoint to take model instead of json
* pick origin
* Use model for config instead of string
* append add filter button
* fix
* default filter
* rename json fields
* correct field names
* minor corrections
* Renaming..
* Rename endpoint
* initial work for appending query steps
* query steps ui
* more localization
* query step UI
* Use doc type keys instead of alias
* only for Documents
* change to send keys to anyOfDocTypeKeys
* Fix potential bug
* Fix when level is impossible to get
* correct prop to dynamicRoot
* noValidStartNode dialog
* custom query step
* Renaming
* Rollback unintended file change
* Fixed issue if no doc type is chosen
* Remove unintended file changes
* More unintended changes
* Renaming
* Optimizations
- IDE Recommendation for better source
- Renaming for better clarity
- Improving spacing/formatting
- Typo corrections
- Remove warnings concerning IEnumerable
* Fix failed attempt bug
---------
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Create webhook models
* Define interfaces for service and repository
* Create Webhook dto and corresponding factory
* implement WebhookRepository.cs
* Remove entity name from models, as that should be resolved in mapping instead
* Add new table to schema creator
* Register repo for DI
* Remove more mentions of entityname
* Refactor repository to guids
* Implement WebhookService
* Use scopes in service
* Start creating tests for service
* Refactor delete to use Id and not entire entity
* Rework Webhooks to be able to have multiple entity keys
* Implement GetAll functionality
* Implement webhook controller
* Imeplement get all events action
* Add equalityComparer deletegate to Webhook
* Add datacontract attirbutes to properties
* Implement backoffice webhooks tree
* Implement first webhooks menu
* Make WebHookController authorized
* Update to have tabs with webhooks and logs
* Enable create overlay
* Push to entityKeys array
* Fix up pagination
* Implement delete functionality
* remove pagination
* add log view
* Fix create to be able to select more than one content type
* implement type name resolving for content
* Refactor to use less duplication
* Implement update functionality in frontend
* Rename database table
* Make multiple events possible
* create new event picker
* Refactor to actually add new database table with proper name
* Make it possible to select multiple events
* Fix updating current items
* Fix up update functionality after db rework
* Add webhook icon
* Switch to match heartcore icons
* Refactor to use bases instead of Enum
* Refactor to make IWebhookEvent to Collection, so it can be injected instead of using reflection
* Fix up frontend to match new models
* Fix integration tests
* Remove obsolete entity key from webhookdto
* Introduce constants instead of hard coded strings
* Start implementation of firing mechanism
* Add new GetByEventName method
* Add 1 to many list on WebhookDto
* Implement new repository pattern
* Implement GetByEventName
* Fix up repository to use all async
* Refactor events to fire
* Refactor WebhookEvents to be more DRY
* Add custom header
* Start implementing log repository
* Implement GetPaged
* Implement WebhookLogService
* Implement GetLogs
* Add url to webhook log
* Implement log overview
* Formatting
* Implement details view
* Refactor to get actual retry count
* Refactor firing to fire only when Enabled
* Add Status code to detailed view
* Add configuration to disable webhooks entirely
* Implement custom headers frontend
* Implement persistence of custom headers
* Refactor retry service to also retry on non success status codes.
* Refactor registration of Webhooks, to also register as NotificationHandler
* Add webhooks migration
* Add key for adding webhook headers
* Fix up test
* Change event icon to flag
* Remember event, when editing what events you have chosen
* Refactor reflection to check if INotificationAsyncHandler instead
* Formatting
* Refactor webhook model to no longer derive from EntityBase
* Rename entityKeys to content keys
* Rename controller to lowercase H
* Add null check before trying to access selectedEvents
* Add configuration for maximum number of retries
* Add index to date
* Add webhook Key to logs
* Check for SchedulingPublisher before sending webhooks
* rename requestObject to payload
* Refactor event to send appropriate payloads
* Refactor logging to happen for every try.
* Order date by descending
* Add todo
* Change firing service to use String not ByteContent
* Update Headers to Interface instead of concrete implementation
* Dont return if a table exists already
* Rename updateModel to webhook
* Annotate WebhookController.cs with PluginController attribute
* Add danish translations
* Do not check if fail
* Dont filter when selecting custom items
* Remove delay from WebhookFiringService
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Bump tinymce from 6.7.0 to 6.7.1
* Ensure PackageVersion is set correctly before transforming template.json
* rerun watchers every time we reinit the data
* handle variant content with only one language
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* update versionSpec to nodejs 20 and avoid specifying minor and patch versions to improve Azure Pipelines stability
* update engines and package lock files
* update helpful displayNames for npm builds
* add retry to counter nodejs.org timeouts
add retryCountOnTaskFailure as suggested on https://developercommunity.visualstudio.com/t/NodeTool0-task-to-install-nodejs-fails/10455454
* implement interface
* add build targets for login screen
* package lock
* move components to pages folder
* load logo and background from property
* styling
* move mocks around
* remove unused vars
* add backoffice handlers
* install rxjs
* add mock data
* add element and context for localization
* mock data
* use umb-localize
* remove the extra logic with check for section_
* change key for login button
* add base to vite environment
* login styling
* cleanup and button styling
* use correct reset url
* change body of reset request
* validate password reset code
* redirect to /login/new on reset password code verify
* add obsolete messages
* remove inline scripts for old backoffice
* remove shadowdom from localize element
* Revert "remove shadowdom from localize element"
This reverts commit 46ae282f7c.
* hook up reset password to api
* rename pages to state as it is not actually used as different pages
* reset password styling
* more styling
* add confirmation page to new password
* set router to firstUpdated to avoid rAF
* set a custom baseUrl on the router to make sure it works without trailing slash
* use route parameters to redirect on the login page to ensure correct escaping
* add server variables
* make sure auth layout uses the provided properties for images
* format
* redirect to code expired page
* add missing properties
* use allowPasswordReset and allowInvite properties in routing and layout
* make ts happy
* cleanup
* init invite page
* hook up usernameIsEmail
* init external login providers
* add mock provider
* add padding to buttons
* replace uui button with normal button
* add external login providers as slot
* add disableLocalLogin property
* add form to external login providers
* remove unused method
* fix build errors
* add attributes for external login
* add custom view to external login
* add new custom icon registry
* attach two icon registries
* use relative paths
* use relative paths
* use main registry instead of providing directly
* add look and color to external login
* implement getIcons() method
* use getIcons() to request icons
* install remixicon to supplement backoffice icons (replacing font-awesome eventually)
* move icon registries to auth element
* Revert "install remixicon to supplement backoffice icons (replacing font-awesome eventually)"
This reverts commit 0c6659d8d9.
* add icons for common external providers
* add more icons
* remove resetCode hack as it is no longer needed
* add validation to new password
* get gretting from translation file
* add hack to get text left aligned in uui-button
* add custom router
* WIP Use router
* also change the URL during an action
* update login action to redirect to /new when needed
* redirect to login from reset and new if not allowed
* fix new password button href
* use property on login element instead of context
* check for redirect on invite-user
* move fake external login providers to index.html for use in dev server
* allow password reset on dev server
* add look and color
* only set styles for default view buttons
* suppress vite import warning
* check and inform for errors and show 'nothing' if a custom view fails to load
* fix mock path for localizedtext
* fix build errors
* ensure that msw (and all its dependencies) do not end up in the production bundle (saved ~500 KB)
* Revert AngularValueExternalLoginInfoScriptAsync removal
* forward the providerName to custom views
* change default icon
* add button look and color to external login provider options
* add obsolete to ButtonStyle and add a mapper to new values
* add required xml comments
* map external login providers to <umb-login-external />
* fix typo
* only show external login layout if there are slotted children
* pass on name as "provider"
* send externalLoginUrl to custom views
* cleanup
* global import
* hide external logins completely when empty
* cleanup
* setup redirect to invite
* rename pages to name-page
* fix names and paths
* use new password layout for invite and new password
* add comments
* cleanup and use confirmation element
* set parameters after successful verifyinvite
* map display-name and provider-name to the external element
* map display-name
* set up external login to handle correct display- and provider-name with documentation
* add support for disabling local login
* update path to handlers
* add more localization
* add handlers for 2fa
* router should support a factory for component
* push login to ?flow=mfa on 402 codes
* add page to handle 2fa/mfa
* add support for custom routing
* add fallback for welcome greeting
* handle AngularJS silliness
* fix typo
* fix router and replace custom umbroute:statechange event with native pushState
* simplify code and cleanup
* a11y improvements
* you can now navigate to anywhere from anywhere with pushState
* access the "twoFactorView" from the backend
* set the default implemented twoFactorView to NULL
* add initial logic to handle a custom mfa view
* roll back custom pushState changes
* add mocks for 2fa custom view
* use router redirect
* re-enable click url change
* cleanup
* remove debug buttons
* add unsafeHTML to localize element
* load mfa custom views
* load custom view
* improve external login custom views
* using optimisation
* add current culture
* only show mfa page if 402 code has been encountered in same session
* format
* remove unnesesary action
* add new user invite password
* remove console log
* fix getting stuck at new password page if you've triggered custom validity
* unify layouts
* add styling to buttons in error layout
* remove unused css
* add error message to new password page
* add error message to reset password
* add error message to invite page
* fix invite page not being rendered
* cleanup
* add obsolete notice to PostSetInvitedUserPassword
* add request model to set a new password for an invited user
* add new method to handle invited user password
* add get password config api call
* fix password config parameters and add invite call
* get invited user
* get password config
* assign unique guid to login project
* add userId to get password config and use the config as validation
* fix
* add alerts
* fix the new password layout
* auth redirects invite error to error page
* use password config on new password page
* remove console log
* move file and remove unused extension
* make ts happy
* file structure
* rename login-extern to external-login-provider
* update element name
* update dependencies
* export custom-view.element.ts
* remove debug
* use umb-custom-view to load custom views
* build types
* move @umbraco/uui to the login app and import from there in backoffice
* make the ui library and icon registry generally available as exports from the login app
* add mock handler for icons
* cleanup package
* use uui for external login providers in the backoffice
* add imports and enable the backoffice icon registry globally
* disable shadowdom
* default background image
* use undefined
* revert angular values
* remove legacy sys variables
* add logic to handle mfa in an overlay scenario without routing
* add new login screen to replace the overlay when logged in to the backoffice
* update spec to work with locators
* cleanup of legacy context
* ViewData is not always required
* add method to solely return the default view of the backoffice to simply BackofficeController as well as unit tests
* add test for the login view
* cleanup usings
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* remove 'remember me'
* add more contrast to external login divider
* update dependencies
* set "lang" attribute to lowercase
* remove default headline
* localize the "Or" divider and add aria-hidden
* remove Umbraco reference from logo and add aria-hidden
* add aria-hidden to uui-icon inside external login buttons
* format code
* update dependencies
* update dependencies
* add translations to invite user page
* use back to login button
* update localization-context.ts to match api from old LocalizeService in Angular
* add tsc to watch
* formatting
* add missing localizations
* fix a11y issues with muted text
* refresh current user after login
* remove unused variable
* add localization
* add localization for error messages
* remove unused var
* return user after login and set successful auth
* retry request queue after login
* add language keys for failed login
* add language keys for failed login
* render the views without a router so that it works inside a modal in the backoffice
* add autocomplete to reset password fields
* add autocomplete to login screen
* add generic error layout to new-password-page
* new-password-layout should be able to handle with and without username
* update language keys
* check for userId before trying to request invited user
* show error when no invited user is found
* place back-to-login button on all error layouts
* update lockfile
---------
Co-authored-by: Jesper Møller Jensen <26099018+JesmoDev@users.noreply.github.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Grant all users access to the content recycle bin
If users don't have access to the root node of the content section they now get access to the recycle bin.
* Content editors get access to their nodes and recycle bin
All users with access to the content section will get access to the recycle bin as well as the nodes they have access to, even if they don't have access to the root of the content section
* The second button shouldn't be highlighted automatically if it's in the second tab otherwise both the first and second tabs are highlighted
* Corrected the logic
When building and packaging at the same time, the original template.json file was still included in the generated NuGet package, which resulted in duplicate files with the same name. This change explicitly disables packaging the original file, ensuring only the transformed template.json file (containing the current Umbraco version) is included.
* add Audit Trail to the media info tab just alike the conten
* Change the tranlation from "content ..." to "Media ..."
---------
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
* Added missing Welsh translations
* added missing mfa en_us keys
* Removed outdated lang keys from the cy lang file
* Fixed some instances of </> to use actual angle brackets in the cy lang file.
* Use DotNetCoreCLI for dotnet pack command
* Use NBGV to get major version and set build number
* Use NBGV_PublicRelease to determine stable build
* Use latest Node patch versions
* Generate NuGet packages during build
currently checks the first group or tab (index 0) that was added to see if there are properties.
This doesn't work well when the tab has a single group, and the group is created after the tab, as the tab will be empty, even though the group has the properties.
there is also some interactions when composing tabs from other doc types, but I didn't have a good amount of time to test this.
* Expose editor UI alias in published property type, so custom value converters can use it
* Add default property value converters for all value types (#14869)
* Add default property value converters for all value types
* Clean up some left-over stuff
(cherry picked from commit ce86abe8ac)
* Added "plain" property editors for all (meaningful) value types
* made link to umbraco learning base youtube visible with underline style as per the other links on other dashboards.
* Update membersdashboardvideos.html
---------
Co-authored-by: Georgina Bidder <georgina.bidder@truedigital.co.uk>
Co-authored-by: georgebid <91198628+georgebid@users.noreply.github.com>
* Refactor OpenIddict for shared usage between APIs + implement member authentication and handling within the Delivery API
* Make SwaggerRouteTemplatePipelineFilter UI config overridable
* Enable token revocation + rename logout endpoint to signout
* Add default implementation of SwaggerGenOptions configuration for enabling Delivery API member auth in Swagger
* Correct notification handling when (un)protecting content
* Fixing integration test framework
* Cleanup test to not execute some composers twice
* Update paths to match docs
* Return Forbidden when a member is authorized but not allowed to access the requested resource
* Cleanup
* Rename RequestMemberService to RequestMemberAccessService
* Rename badly named variable
* Review comments
* Hide the auth controller from Swagger
* Remove semaphore
* Add security requirements for content API operations in Swagger
* Hide the back-office auth endpoints from Swagger
* Fix merge
* Update back-office API auth endpoint paths + add revoke and sign-out endpoints (as of now they do not exist, a separate task will fix that)
* Swap endpoint order to maintain backwards compat with the current login screen for new back-office (will be swapped back again to ensure correct .well-known endpoints, see FIXME comment)
* Make "items by IDs" endpoint support member auth
* Add 401 and 403 to "items by IDs" endpoint responses
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Added necesary classes to define the StringPropertyEditor
* Removed unnecesary code, baseclass takes care of everything
* More cleanup and added a propertyValueConverter
* Upped the expected default dataEditors in tests by 1 since we added one.
* Fixed a bad undo action
* PR feedback Removed unnecesary code and simplified methods
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* add button group for multiple preview urls
* generate default + sub buttons for urls
* allow button group to render label without a localisation key
* remove the existing preview button
* add data-element attr for buttons for tours + tests
* use info button style
* set the target of the new window
* get the additional preview urls from the active variant
* Revert "Make sure the property editor layout is contained within its container (prevent Z-index bleed-through) (#13583)"
This reverts commit 8463d906a7.
* remove seemingly unused attribute readonly
* contain everything with contain:layout
this is set if the property editor is in preview mode to make sure all overlays work
* Revert "remove seemingly unused attribute readonly"
This reverts commit 7a2743e8f6.
* Revert "Make sure the property editor layout is contained within its container (prevent Z-index bleed-through) (#13583)"
This reverts commit 8463d906a7.
* remove seemingly unused attribute readonly
* contain everything with contain:layout
this is set if the property editor is in preview mode to make sure all overlays work
* Revert "remove seemingly unused attribute readonly"
This reverts commit 7a2743e8f6.
* Change document delete into move-to-recycle-bin
* Make it possible to supply an explicit ID when creating content and media
* Change media delete into move-to-recycle-bin
* Merge "allowed child content types" controllers into one + fixed a bug that allowed all types if none were defined
* Update OpenAPI JSON to reflect merged endpoints
* Added a longer timeout for the tests. Also bumped the timeout for isSuccessNotificationVisible
* Added a longer timeout for our tests and the isSuccessNotificationVisible method
* Updated the locator for the flaky test. The locator we had before could sometimes find two elements, which resulted in flaky tests.
* Bumped version of playwright
* Updated to use isSuccessNotificationVisible()
* Added a wait for timeout
* Updated to use isSuccessNotificationVisible()
* Bumped the timeouts
* Bumped our timeouts
* Bumped version of our testhelpers
* Updated the button for save and publish and added an wait for timeout
* Added a missing save for the test
* The test could sometimes find two locators. It should be fixes now
* Removed old usage of notification to be visible
* Removed unnecessary timeouts since we have defined the timeouts in the test helpers
* Add visuallyHiddenTexts area and keys to swedish
Translations contributed by @plannero
* Add missing localizations.
* Revert prettier formatting
* Format in visual studio
* Change default UpgradeUnattended value to true (#13281)
* add labels to default en.xml + small glitch fix
* Added test for checking if a settings model contains default value.
Fixed tests
* Bumped version
* Moved createSliderWithDefaultValue function to our testHelpers. Removed the use of count in test since there was only one
Sometimes a tab, e.g. a "block list settings model" might register some default values, but if the user never clicks on the tab then they are not registered due to how AngularJS renders views with "ng-if".
* chore: Fix XML warnings
* docs: Fix XML warnings
* docs: Fix XML in resource designer
* docs: Fix XML warnings
* Revert "docs: Fix XML in resource designer"
This reverts commit 8ea61c51ac.
* Use interfaces for API media return values + introduce dedicated models for crops and focal points
* Move content and media controllers to their own namespaces
* WIP: Fix publish descendants and related notifications
* Removed related entitities from publish notification
* Fixed root not being saved when publishingWithDescendants
* Updated integrationtests to reflect the update view on when to save the root when its part of a branch
* PR formatting fix
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* PR Cleanup
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Spicing up the codebase with some PR pattern matching
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Add in-browser postman callback url
* Added a jsonconverter for property editor configuration boolean values that are persisted as numbers and serialized as strings...
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Revert "Change default UpgradeUnattended value to true (#13281)"
This reverts commit e5d6372dbd.
* Set UpgradeUnattended value to true for new projects
* Revert "Change default UpgradeUnattended value to true (#13281)"
This reverts commit e5d6372dbd.
* Set UpgradeUnattended value to true for new projects
This is needed so it can be used as a discriminator field by System.Text.Json
Changed both ApiElement and IApiElement to ensure not only ApiContentResponse,
but also ApiBlockItem, which uses the interface directly, are adjusted.
* Added attribute filter to ensure a request is taking a minimum time to response
* Added functionality to management api to send forgot password emails and verify these + do the actual reset using the token
* Renamed UserKey to UserId and updated OpenApi.json
* Update src/Umbraco.Core/Services/IUserService.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Cleanup
* Renaming param
* Fixing send user username instead of email + wrong EmailTypes
* Fixed issue with forgot password functionality after reusing other functionality
* Rename prop
* Adding docs and renaming param
* Handle password validation return types
* More cleanup
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* don't set label key to entire content model...
* Remove the default parameter value
---------
Co-authored-by: kjac <kja@umbraco.dk>
(cherry picked from commit 5dfb914e0f)
* Add content and media sorting to the Management API
* Rename "id" to "key" throughout the ContentEditingService
* Update Open API json file
* Use "key" instead of "id" in ContentEditingServiceBase
* Use "key" instead of "id" in IMediaEditingService and MediaEditingService
* Turn delegates into abstracts + fix bug that allowed deleting items outside of the recycle bin
* Use PUT instead of POST
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Services/MediaEditingService.cs
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Update Open API JSON
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* CRUD for content and media type folders + refactor data type folder CRUD controllers and services to match
* Correct response types + update OpenAPI JSON
* Review changes
* Review changes
* Update OpenAPI JSON after merge
* Fix IndexOutOfRangeException when converting single value to range in SliderValueConverter
* Fix NullReferenceException while deserializing empty value in TagsValueConverter
* Use invariant decimal parsing
* Handle converting from slider to single value
* Fix parsing range as single value
* Make Handle methods autonomous
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Introduce media API - controllers, services, tests, Swagger docs
* Add path to media API response + add "by path" endpoint
* Review comments
* Implement filtering and sorting
* Add explicit media access configuration
* Cleanup
* Adding default case as in the MediaApiControllerBase
* Update src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Swap sort order calculation to align with Content API
* Add CreateDate and UpdateDate to media responses
* Mirror Content Delivery API behavior for empty children selector
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Use minimal hosting model
* Make CoreRuntime backward compatible to the old hosting model
* Remove unneccessary methods from interface again
* Pushed the timeout for E2E test to 120 minutes instead of 60
* Updated the preview version from 6 to 7
* Explicitly call BootUmbracoAsync
* Add CreateUmbracoBuilder extension method
* Do not add IRuntime as hosted service when using WebApplication/WebApplicationBuilder
* Set StaticServiceProvider.Instance before booting
* Ensure Umbraco is booted and StaticServiceProvider.Instance is set before configuring middleware
* Do not enable static web assets on production environments
* Removed root namespace from viewImports
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Add GetAsync method
* Fix up delete document type controller
* Add scope to delete async
* Add some scaffolding
* Add create model
* Start working on validation
* Move validation to its own service
* Use GetAllAsync instead of GetAsync
* Add initial composition support
Still need to figure out some kinks
* Validate compositions when creating
* Add initial folder support
* Initial handling of generic properties
* Add operation status responses
* Move create operation into service
* Add first test
* Fix issued shown by test
* Ensure a specific key can be specified when creating
* Rename container id to container key
Let's try and be consistent
* Create basic composition test
* Ensure new property groups are created with the correct key
* Add test showing property type issue
* Fix property types not using the expected key.
* Validate against model fetched from content type service
Just to make sure nothing explodes on the round trip
* Make helper for creating create models
* Add helper for creating container
* Make helper methods simpler to use
* Add test for compositions using compositions
* Add more composition tests
* Fix bug allowing element types to be composed by non element types
* Remove validators
This can just be a part of the editing service
* Minor cleanup
* Ensure that multiple levels of inheritance is possible
* Ensure doctype cannot be used as both composition and inheritance on the same doctype
* Ensure no duplicate aliases from composition and that compositions exists
* Minor cleanup
* Address todos
* Add SaveAsync method
* Renamed some models
* Rename from DocumentType to ContentType
* Clarify ParentKey as being container only + untangle things a tiny bit
* Clean out another TODO (less duplicate code) + more tests
* Refactor for reuse across different content types + add media type editing service + unit tests
* Refactor in preparation for update handling
* More tests + fixed bugs found while testing
* Simplify things a bit
* Content type update + a lot of unit tests + some refactor + fix bugs found while testing
* Begin building presentation factories for mapping view models to editing models
* Use async save
* Mapping factories and some clean-up
* Rename Key to Id (ParentKey to ParentId)
* Fix slight typo
* Use editing service in document type controllers and introduce media type controllers
* Validate containers and align container aliases with the current backoffice
* Remove ParentId from response
* Fix scope handling in DeleteAsync
* Refactor ContentTypeSort
* A little renaming for clarity + safeguard against changes to inheritance
* Persist allowed content types
* Fix bad merge + update controller response annotations
* Update OpenAPI JSON
* Update src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Fix review comments
* Update usage of MapCreateAsync to ValidateAndMapForCreationAsync
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Obsolete constructor with deprecated IScopeProvider
* Add exclusion setting to typefinder settings
* The old TypeFinder constructor calls the new constructor now instead and excluded duplicates by using Union instead of Concat.
* Revert "The old TypeFinder constructor calls the new constructor now instead and excluded duplicates by using Union instead of Concat."
This reverts commit 87801c6c1c.
* Add changes to TypeFinder
* Do not use null when type is not nullable
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
The validation errors should not happen as the model mapping cleans up block data for entity types that do not longer exist (which is checked on the aformentioned key)
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Added new configuration "Umbraco:CMS:Examine:ExplicitlyIndexEachNestedProperty" that can be used to avoid nested properties like block grid to index each property individually.
* Moved the setting "Umbraco:CMS:Examine:ExplicitlyIndexEachNestedProperty" to "Umbraco:CMS:Indexing:ExplicitlyIndexEachNestedProperty" to make it more future proof
* Added missing registration
* Fixed registration
* Small readability improvement
---------
Co-authored-by: Sven Geusens <sge@umbraco.dk>
* Added explicit migration for AddOpenIddict and
* Renamed the UmbracoOpenIddictDbContextModelSnapshot to UmbracoDbContextModelSnapshot to align with the name of the DBContext
* Added comment to UmbracoDbContext about it is for internal use
* Only execute all migrations at initial install time
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Add position relative to button to fix issue with umb-outline on button element
* Add pattern attribute to get more specific virtual numeric keyboard on some devices as we expect integer values
* Fix missing localization of title attributes due missing @ prefix
* Fix incorrect end-closing tag
* V12: Dropzone should handle internal and external errors when uploading (#14579)
* fix: for safety measure check that a file is truthy before trying to upload it
* fix: push an error when file.$error is encountered to make sure it does not get uploaded
* fix: mark file as done if it errors
* format error messages
* fix: check for maxFileSize before uploading pasted images in tinymce
* remove the image from the DOM if any error is encountered
* feat: add property to fileManager to get and format the maxFileSize
* fix: make tinymce use fileManager to get maxFileSize
* fix(image cropper): check for maxFileSize before setting file to upload
* multiply by 1000 to get bytes
* V11/merge v10 into v11 (#14602)
* V10: Dropzone should handle internal and external errors when uploading (#14578)
* fix: mark files that result in error as processed
* fix: for safety measure check that a file is truthy before trying to upload it
* fix: push an error when file.$error is encountered to make sure it does not get uploaded
* fix: remove header from error messages since it is not being used anyway
* fix: check for maxFileSize before uploading pasted images in tinymce
* use stored blob variable
* feat: add property to fileManager to get and format the maxFileSize
* fix: make tinymce use fileManager to get maxFileSize
* fix(image cropper): check for maxFileSize before setting file to upload
* multiply by 1000 to get bytes
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Fix method invoke. (#14597)
* Ensure that the Slider does not crash the back-office (#14601)
* Ensure that the Slider does not crash the back-office
* Add field descriptions to config
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Adrian Cojocariu <95346674+acoumb@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Adrian Cojocariu <95346674+acoumb@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* V10: Dropzone should handle internal and external errors when uploading (#14578)
* fix: mark files that result in error as processed
* fix: for safety measure check that a file is truthy before trying to upload it
* fix: push an error when file.$error is encountered to make sure it does not get uploaded
* fix: remove header from error messages since it is not being used anyway
* fix: check for maxFileSize before uploading pasted images in tinymce
* use stored blob variable
* feat: add property to fileManager to get and format the maxFileSize
* fix: make tinymce use fileManager to get maxFileSize
* fix(image cropper): check for maxFileSize before setting file to upload
* multiply by 1000 to get bytes
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Fix method invoke. (#14597)
* Ensure that the Slider does not crash the back-office (#14601)
* Ensure that the Slider does not crash the back-office
* Add field descriptions to config
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Elitsa <elm@umbraco.dk>
Co-authored-by: Adrian Cojocariu <95346674+acoumb@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* fix: for safety measure check that a file is truthy before trying to upload it
* fix: push an error when file.$error is encountered to make sure it does not get uploaded
* fix: mark file as done if it errors
* format error messages
* fix: check for maxFileSize before uploading pasted images in tinymce
* remove the image from the DOM if any error is encountered
* feat: add property to fileManager to get and format the maxFileSize
* fix: make tinymce use fileManager to get maxFileSize
* fix(image cropper): check for maxFileSize before setting file to upload
* multiply by 1000 to get bytes
* fix: for safety measure check that a file is truthy before trying to upload it
* fix: push an error when file.$error is encountered to make sure it does not get uploaded
* fix: mark file as done if it errors
* format error messages
* fix: check for maxFileSize before uploading pasted images in tinymce
* remove the image from the DOM if any error is encountered
* feat: add property to fileManager to get and format the maxFileSize
* fix: make tinymce use fileManager to get maxFileSize
* fix(image cropper): check for maxFileSize before setting file to upload
* multiply by 1000 to get bytes
* Update rte-content.less
#14325 - Remove wildcard-background from RTE
* Update rte-content.less
I did an update. 🙂
The transparent background is there because the tinymce theme Oxide adds a background-color to all selected elements.
So the umbraco added transparent background makes white text not be visible.
https://github.com/tinymce/oxide/blob/012346905578b0d7e59f7000d447f56243243b4a/src/less/theme/content/selection/selection.less#L50C2-L50C2
So I put back the transparent background-color and added a @blueExtraDark as text-color
I have updated the issue with more details.
* Change the obsoletion messages for language IDs to target V14 instead of V13.
* Wrong Language file
* Add ISO codes required to migrate custom code from language IDs
* Population of the new language FallbackIsoCode prop
* Changing obsoletion msgs from v13 to v14
* Fix breaking changes
* Try undoing inheritance change
Just to see if the issue stems from there
* Try specifying order again
* Log something
* Maybe it's a culture thing
* That wasn't it
* Maybe content deliver need to exist as an applicationPart
* Order found types
* Cleanup
* Don't login after install
* Fail the install if database is not created
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Don't login after install
* Fail the install if database is not created
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Refactor GetPagedLogsAsync to not use ILogViewer
* Refactor GetPagedLogsAsync to not use ILogViewer
* Reorder using statements
* Introduce ILogViewerRepository
* Remove skip and take from repository
* Return IEnumerable instead of pagedModel
* Remove local GetLogs
* Return IEnumerable instead of pagedmodel
* Remove serilog entirely from ILogViewerService
* Move LogViewerService
* Inject LogViewerService as core service instead
* Implement LogViewerServiceTests.cs
* Add more happy path tests
* Add saved query tests
* Refactor private path fields to normal variables in setup method
* Capitalize logs for Unix systems
* Added missing documentation
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Added test for checking if a settings model contains default value.
Fixed tests
* Bumped version
* Moved createSliderWithDefaultValue function to our testHelpers. Removed the use of count in test since there was only one
* Cleaned up in Advanced
* Cleaned up in Areas
* Cleaned up in Content
* Cleaned up in Rendering
* Cleaned up in Settings
* Updated the timeout to 40 seconds, 30 seconds is not always enough anymore.
* Bumped version of testhelpers and builders
Sometimes a tab, e.g. a "block list settings model" might register some default values, but if the user never clicks on the tab then they are not registered due to how AngularJS renders views with "ng-if".
* Updated the package validation baseline version to 12 RC1
* Update PackageValidationBaselineVersion to 12.0.0 and remove CompatibilitySuppressions.xml files
* Clean up project files
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Implement GetEntryByContentKey
* Implement PublicAccessResponseModel
* Implement IPublicAccessPresentationFactory
* Rename MemberGroupItemReponseModel to MemberGroupItemResponseModel
* Refactor PublicAccessResponseModel to use Ids instead of entire content items
* Return attempt instead of PresentationModel
* Add missing statuses to PublicAccessOperationStatusResult
* Implement PublicAccessDocumentController.cs
* Refacotr PublicAccessResponseModel to use a base model
* Add CreatePublicAccessEntry method
* Refactor AccessRequestModel to use names not ids :(
* Rename ErrorPageNotFound to ErrorNodeNotFound
* Implement new SaveAsync method
* Introduce more OperationResults
* Implement PublicAccessEntrySlim
* Implement SaveAsync
* Remove CreatePublicAccessEntry from presentation factory
* Rename to CreateAsync
* Implement UpdateAsync
* Rename to async
* Implement CreatePublicAccessEntry
* Implement update endpoint
* remove PublicAccessEntrySlim mapping
* implement CreatePublicAccessEntrySlim method
* Refactor UpdateAsync
* Remove ContentId from request model as it should be in the request
* Use new service layer
* Amend method name in update controller
* Refactor create public access entry to use async method and return entity
* Refactor to use saveAsync method instead of synchronously
* Use presentation factory instead of mapping
* Implement deleteAsync endpoint
* Add produces response type
* Refactor mapping to not use UmbracoMapper, as that causes errors
* Update OpenApi.json
* Refactor out variables to intermediate object
* Validate that groups and names are not specified at the same time
* Make presentation factory not async
* Minor cleanup
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Update to .net 8 preview 1
* Update npoco to 5.7.0
* Update pipeline to use .net 8
* Revert "Update npoco to 5.7.0"
This reverts commit f7795afa77.
* Fix tests and updated OpenApi.json
* use dotnet 8 in linux container
* Updated templates and docker image to dotnet 8
* Bugfix
* R
Updated docker images to 8.0 preview 1
* linux docker images updated
* Force use c# 11, in hope of the acceptance tests will pass
* Do not use C# 8 :)
* Update to preview 2
* CompatibilitySuppressions
* updated templates
* Disable package validation
* Update to .net8 preview 4
* change EnableStrictModeForCompatibleFrameworksInPackage to false
* Package validation
* Added CompatibilitySuppressions.xml
* Fix up IP networks
* Updated to preview 5
* Update docker images
* Post merge fixes
* Try to update dotnet version of codeql
* Delete empty suppression files
* Remove dependency
* Cleanup
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Added functionality to verify user invite tokens and create the initial password
* Add response types
* Fail ValidateCredentialsAsync when user is not approved
* Enable user as part of initial password creating using validation token
* Adds documentation to badrequest and changed nocontent to ok, to align with other APIs
* Fixed tests and added a new one
---------
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Fix broken CookieAuthenticationRedirect caused by PR #14036 when not in an API controller
* Added Integration Tests for the MemberAuthorizationFilter
* Fix merge conflict
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* check section when determining package template path
* return sectionAlias as packageFolder and the route segment won't always match
* fix test
* adds PluginController attribute to StylesheetsTreeController
fixes actionUrl generation to ensure valid URL
find controller by fullname to avoid incorrect controller selection when multiple exist with same name
* Fix frontend breaking changes
* Adding missing PluginController attribute for ScriptsTreeController
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Adding default values to skip and take to align with the rest of the controllers
* Changing skip and take type from long to int to align with the rest
* Fixing wrong response type
* Remove double skip and take
* Update json file
* Implement allowed children of root
* Allow children by key controller
* Update to be document controlller instead
* Fix AllowedChildrenOfRootDocumentController
* Create GetAllAsync method in ContentTypeServiceBaseOfTRepositoryTItemTService
* Revert "Create GetAllAsync method in ContentTypeServiceBaseOfTRepositoryTItemTService"
This reverts commit b01b5b9240.
* Implement attemp pattern in IContentTypeService
* Create IContentCreatingService
* Use new contentCreatingService in controller
* Revert if statement
* Use total from attempt
* Throw exceptions instead of returning attempt
* Wrap in scope
* Rename to GetAllowedChildrenContentTypesAsync
* Fix summary
* Removed unneccessary await Task.FromResult
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Updated our dataType API tests to use our updated testHelpers
* Updated our dataTypeFolder API tests to use our updated testHelpers
* Updated our dictionary API tests to use our updated testHelpers
* Updated our language API tests to use our updated testHelpers
* Updated our partialView API tests to use our updated testHelpers
* Updated our partialViewFolder API tests to use our updated testHelpers
* Updated our script API tests to use our updated testHelpers
* Updated our scriptFolder API tests to use our updated testHelpers
* Updated our stylesheet API tests to use our updated testHelpers
* Updated our stylesheetFolder API tests to use our updated testHelpers
* Updated our telemetry API tests to use our updated testHelpers
* Updated our template API tests to use our updated testHelpers
* Updated our temporaryFile API tests to use our updated testHelpers
* Updated our user API tests to use our updated testHelpers
* Updated our userAvatar API tests to use our updated testHelpers
* Updated our userGroup API tests to use our updated testHelpers
* Fixed failing text
* Bumped to use the newest version of our testHelpers
* add extension method to rewrite requests meant for backoffice static assets
* add backoffice rewrites to application builder
* embed the umbraco hash into the static assets requested on the backoffice
* Added a IStaticFileHostGenerator so its possible to replace our logic
* add docs and ensure the path is uniform with single slashes
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Add OpenIddict tables to database (#14449)
* Added migrations to install EF Core OpenIddict tables
* Handle Install of ef core data (Needs to be outside of transaction
* Cleanup and renaming, as these things will be reused for more than openiddict in the future
* Cleanup
* Extract db context setup
* Minor cleanup
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Use OpenIddict from DB instead of InMemoryDb
* Do not try to clean up, while not it run mode
* Fixed tests
* Clean up
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section.
* Added acceptance tests for testing the API for the User section
* Bumped the version of our testhelpers!
* Added acceptance tests for testing the API for the Dictionary section.
* Added acceptance tests for testing the API for the Language section.
* Added acceptance tests for testing the API for the UserGroups section.
* Added acceptance tests for testing the API for the Template section
* Added acceptance tests for testing the API for the TemporaryFiles section
* Our first UI test for v14
Added acceptance tests for the telemetry section
* Removed page.pause
* Added migrations to install EF Core OpenIddict tables
* Handle Install of ef core data (Needs to be outside of transaction
* Cleanup and renaming, as these things will be reused for more than openiddict in the future
* Cleanup
* Extract db context setup
* Minor cleanup
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section.
* Added acceptance tests for testing the API for the User section
* Bumped the version of our testhelpers!
* Added acceptance tests for testing the API for the Dictionary section.
* Added acceptance tests for testing the API for the Language section.
* Added acceptance tests for testing the API for the UserGroups section.
* Added acceptance tests for testing the API for the Template section (#14450)
* Added acceptance tests for testing the API for the Template section
* Added acceptance tests for testing the API for the TemporaryFiles section (#14451)
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section.
* Added acceptance tests for testing the API for the User section
* Bumped the version of our testhelpers!
* Added acceptance tests for testing the API for the Dictionary section.
* Added acceptance tests for testing the API for the Language section.
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section.
* Added acceptance tests for testing the API for the User section
* Bumped the version of our testhelpers!
* Added acceptance tests for testing the API for the Dictionary section.
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section.
* Added acceptance tests for testing the API for the User section
* Bumped the version of our testhelpers!
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added simple acceptance tests for testing the API for the Script section
* Added acceptance tests for testing the API for the Stylesheet section. (#14442)
* Ensure path starts with forward slash in all cases
* Fix path in preview when getting by route
* Reintroduce path.length check
* Revert previous changes
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Added simple acceptance tests for testing the API for the PartialView section
* Added auth to gitignore
* Added a setup for logging in which allows us to save the token for the user
* Added simple acceptance test for testing our api for the DataTypes
* Add support for property value fallbacks in the delivery API
* Add dedicated tests for the IDeliveryApiPropertyValueConverter interface
* Rewrite for less impact and more streamlined with Razor output
* Clean up DistributedCache and add additional checks
* Add IEnumerable overloads to DistributedCacheExtensions
* Update handlers to use new IEnumerable overloads
* Move DistributedCacheExtensions to Core
* Restructure cache refreshers into folders
* Add IDistributedCacheNotificationHandler
* Rewrite DistributedCacheBinder into seperate IDistributedCacheNotificationHandler implementations
* Obsolete DistributedCacheBinder and use new IDistributedCacheHandler implementations
* Clean up ServerMessengerBase
* Ensure cache refreshers only process distinct values
* Add support for publishing multiple notifications and filter on handler type
* Suppress compatibility issues
* Remove DistributedCacheBinder and suppress compatibility issues
* Add ScopedNotificationPublisher<TNotificationHandler>
* Improve notification type lookup/enumeration
* Ensure INotificationAsyncHandler handles multiple notitications sequentially
* Minimize cache instruction JSON
* Chunk notifications by type to keep publish order
* Only serialize required RefreshInstruction properties
* update package templates with new umbraco-package.json format
* remove $schema for now because we dont know where people will locate this file (refer to documentation)
* Adding query params documentation
* Adding headers
* Rename file
* Added a few more descriptions and changed a few as well
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Load default icons to show them next to checkboxes in configuration of richtext editor
* More mapping of icons
* Fix vertical align items centered not reflected
* Wrap mapping in function
* Map a few more icons
* Cleanup and formatting
* Cleanup
* Cleanup
* Add period in description
* Load default icons to show them next to checkboxes in configuration of richtext editor
* More mapping of icons
* Fix vertical align items centered not reflected
* Wrap mapping in function
* Map a few more icons
* Cleanup and formatting
* Cleanup
* Cleanup
* Add period in description
* Load default icons to show them next to checkboxes in configuration of richtext editor
* More mapping of icons
* Fix vertical align items centered not reflected
* Wrap mapping in function
* Map a few more icons
* Cleanup and formatting
* Cleanup
* Cleanup
* Add period in description
* Load default icons to show them next to checkboxes in configuration of richtext editor
* More mapping of icons
* Fix vertical align items centered not reflected
* Wrap mapping in function
* Map a few more icons
* Cleanup and formatting
* Cleanup
* Cleanup
* Add period in description
* fix: #12253 Anchor picker does not appear
* Update ContentServiceExtensions.cs
fix: #12253#13492 ; implement PR suggestions, test the new changes to confirm that they fix the issue with the anchorlink implementation on RTE from blocklist, blockgrid and normal RTE properties
Co-Authored-By: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Removed unnecessary using and code
* Small adjustments
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Update the tour text to the correct text and to save confusion
* Added extra information to the delete language warning to inform the user that it will also delete all content related to the language
* Updated language files with same message re deletion
---------
Co-authored-by: Paul Seal <p.seal@clerkswell.com>
Co-authored-by: Emma Garland <emma.garland@rocksolidknowledge.com>
* update script to compile frontend api docs
* update backoffice submodule
* set the base path for the ui docs
* update env syntax
* remove Umbraco.Web.UI.Docs
* replace BASE_PATH in assets
* Make Upload API step able to run without releasing on nuget
* add dependOn Build to get major version number
* Disable sortable if readonly or max is set limited to one item
* Disable sortable on single URL picker
* Don't disable block list sorting based on validation limit, but do for single block mode
* Disable sorting in media picker 3 in single mode
* Remove extra whitespace
* Disable draggable
* Tweaked wording of "item(s)"
---------
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Emma Garland <emma.garland@rocksolidknowledge.com>
* Added secure to the UMB-XSRF-V cookie when global https is true.
* tweaked markdown handling
* added in link handling tweak for simpleMarkdown filter
* tweaked simple markdown filter to modify all links instead of just the first one
* moved transformation of markdown content in description into C# code
* Format of white space
* Reverted unecessary change.
* Removed unwanted framework version lines
* Reduce nesting of if statements.
* Changed to .Contains for readability.
---------
Co-authored-by: Corey Philipp <CPhilipp@dewpoint.com>
Co-authored-by: jaandrews <jaandrews88@gmail.com>
Co-authored-by: Emma Garland <emma.garland@rocksolidknowledge.com>
* Add alias to document item response
* Add master template key to detailed model
* Add mater template key as optiona parameter to Scaffolding
* Check for duplicate alias when creating templates directly
* Clean
* Ensure integration tests creates templates with unique aliases
* Perform mapping in presentation factory
* Add current user data endpoint
* Add Change password endpoint
* Add SetAvatar
* Add get node permissions
* Add endpoint for getting currently logged in users linked logins
* Add tour service
* Add get tours
* Add set tour endpoint
* Added PermissionNames to IReadOnlyUserGroup
* Only require backend auth on management api
* Use ISet in response model
* Fixed issue with saving null as startMediaId, where it was ignored
* Add get current user endpoint
* Fix missing linebreak
* Append "New" keyword to policies
* Update OpenApi
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Support draft-only content in the Delivery API query
* Allow outputting "entirely unpublished" content
* Make the preview path explicit to avoid clashing endpoints
* Handle trailing slash setting for preview URLs
* Update src/Umbraco.Infrastructure/Examine/DeliveryApiContentIndexValueSetBuilder.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Remove superfluous (and incorrect) unpublished route handling
* Make sure preview output includes routes for unpublished cultures
* Ensure that published content with unpublished ancestors are available in preview
* Fix route start item when previewing published content with unpublished parent
---------
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Add current user data endpoint
* Add Change password endpoint
* Add SetAvatar
* Add get node permissions
* Add endpoint for getting currently logged in users linked logins
* Add tour service
* Add get tours
* Add set tour endpoint
* Split permissions endpoint in two, one for media and one for document
* ignore output files
* add new umb-login element
* allow to build and clean 'login' assets
* remove unused AuthUrl since this is now coded into the frontend code for each context
* ensure the ReturnUrl has a fallback to the default installation directory, since if you accidentally hit the login page and login, nothing happens if there is no return url
* switch to DependsOnTargets to account for if this is the only target being run (we need node_modules installed)
* add UmbracoUrl property
* add taghelper to use asp-append-version on login static assets
* copy umbraco-package-schema.json over from the New.Client build
* when a project referencing Cms.Targets is building, we want to copy out the umbraco-package-schema.json file to the project directory if it does not exist
* ignore built output files
* fix typo
* add PackageReference to Umbraco.Cms.Targets to ensure dependent json schema files are copied over
* add to gitignore
* add target to remove the _UmbracoCmsPackageSchemaReference on clean
* Revert "add PackageReference to Umbraco.Cms.Targets to ensure dependent json schema files are copied over"
This reverts commit 339043a36f.
* generate umbraco-package-schema.json on demand in Cms.Targets
* add generated file to .gitignore
* Add VersionAssemblyName to package manifest
* Fix/improve nullability
* Ensure package version from manifest is set when package migration exists
* Set versionAssemblyName in umbracopackage template
* Use Assembly.Load instead of ITypeFinder
* Use AssemblyLoadContext to get asesmbly by name
* Add PackageId to package manifest
* Show ID on installed packages overview
* Fallback to package ID to get assembly version
* Include package ID in telemetry data
* Set id in umbracopackage template
* Add PackageId to PackageMigrationPlan
* Get version from package migration assembly
* Hide unknown package version
* Always use package name from manifest
* Use IPackagingService to return package telemety data
* Set versionAssemblyName in umbracopackage-rcl template
* Set id in umbracopackage-rcl template
* Add VersionAssemblyName to package manifest
* Fix/improve nullability
* Ensure package version from manifest is set when package migration exists
* Set versionAssemblyName in umbracopackage template
* Use Assembly.Load instead of ITypeFinder
* Use AssemblyLoadContext to get asesmbly by name
* Get version from package migration assembly
* Hide unknown package version
* Set versionAssemblyName in umbracopackage-rcl template
* Add variant information to the document tree model
* Add content type key to document tree and item
* Add sort order to PropertyTypeResponseModelBase
* Adding support for contains filters
* Making a dedicated name filter and making changes to the sort indexer
* Fixed the merge from release/12.0
* Make the "name" filter support OR for comma separated filter values
---------
Co-authored-by: kjac <kja@umbraco.dk>
* add .nvmrc to instruct NVM of preferred version
* update azure-pipelines.yml with node 18.16
* update "engines" section of package.json with preferred node.js 18.16
* update lockfiles in accordance with node 18 (lockfileVersion: 3)
* add .nvmrc to instruct NVM of preferred version
* update azure-pipelines.yml with node 18.16
* update "engines" section of package.json with preferred node.js 18.16
* update lockfiles in accordance with node 18 (lockfileVersion: 3)
* This moves around files and deletes the temp projects with files that are not moved to Core, Infrastructure etc.
Also moves the from new backoffice to static access, and override those with the old views in the legacy executeable
* Removes old files from the new executeable.
* Added missing files
* Added EF Core project to solution file
* fix build
* Implement available culture in Interface and base classes
* Add available cultures
* DI localizationService and use it
* Make the new method have default implementation to avoid breaking change
* Create implementations for old method
* Pass available cultures
* Pass localization service
* Create new method that takes available cultures
* Add ILocalizationService to DI
* implement missing method
* Add database for schema test
* Fixed issue with indexes not added correctly to nested types..
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Append start item to RTE markup
* Split the Examine specifics from API query service (#14257)
* Split the Examine specifics from API query service to a provider based model
* Review changes: Use paged model as provider return value + add logging
* Fix version
* Revert incidentally changed version number by targeting wrong branch
* Fix wrongly changed version number --- it's RC2 now
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Add Data directory as constants
* Use new constants instead of internal ones
* Replace data directory in connection string if its there
* Update src/Umbraco.Cms.Persistence.EFCore/Extensions/UmbracoEFCoreServiceCollectionExtensions.cs
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Split the Examine specifics from API query service to a provider based model
* Review changes: Use paged model as provider return value + add logging
* Re-added the postmigration from the migration context
* Minor cleanup
* Add executed migration contexts to the result object
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* The attribute we asserted on has been changed which failed our test. The test is updated to match with the correct url
* Updated so we use encodeURI instead of replacing the values in the path
* Remove test.only
* Try quick fix for test
* Fixed failing test so it now locates the correct class. Updated the locators aswell
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Rename Umbraco.Cms.Imaging.ImageSharp.V2 to Umbraco.Cms.Imaging.ImageSharp2
* Rename Umbraco.Cms.Imaging.ImageSharp to Umbraco.Cms.Imaging.ImageSharp3
* Rename Umbraco.Cms.Imaging.ImageSharp3 back to Umbraco.Cms.Imaging.ImageSharp
* Update to ImageSharp 2.1.0 and ImageSharp.Web 2.0.0-alpha.0.23
* Rename CachedNameLength to CacheHashLength and add CacheFolderDepth setting
* Replace PhysicalFileSystemProvider with WebRootImageProvider
* Support EXIF-orientation in image dimention extractor
* Remove virtual methods on FileProviderImageProvider
* Simplify FileInfoImageResolver
* Update to SixLabors.ImageSharp.Web 2.0.0-alpha.0.25 and remove custom providers
* Make CropWebProcessor EXIF orientation-aware
* Improve width/height sanitization
* Also use 'v' as cache buster value
* Add WebP to supported image file types
* Update to SixLabors.ImageSharp.Web 2.0.0-alpha.0.27 and fix test
* Fix rounding error and add test cases
* Update to newest and stable releases
* Move ImageSharpImageUrlGenerator to Umbraco.Web.Common
* Use IConfigureOptions to configure ImageSharp options
* Implement IEquatable on ImageUrlGenerationOptions classes
* Fix empty/null values in image URL generation and corresponding tests
* Use IsSupportedImageFormat extension method
* Remove unneeded reflection
* Add HMACSecretKey setting and add token when generating image URLs
* Ensure backoffice image URLs are generated by the server (and include a correct HMAC token)
* Abstract HMAC generation to IImageUrlTokenGenerator
* Change cache buster value to 'v' and use hexadecimal timestamp
* Update comments
* Fix backoffice thumbnail URL generation
* Update grid media thumbnail URL generation
* Remove breaking changes
* Strip unknown commands from image URL token
* Remove HMAC whitelisting possibility (not supported by ImageSharp)
* Update to SixLabors.ImageSharp 2.1.3
* Add comment to internal constructor
* Fix to support absolute image URLs
* Update to SixLabors.ImageSharp.Web 2.0.3-alpha.0.3
* Remove IImageUrlTokenGenerator and use ImageSharpRequestAuthorizationUtilities
* Move NuGet feed to config file
* Update to ImageSharp v3
* Move all routing tokens (incl. API versioning) to Cms.Web.Common, so the site can start without adding the delivery API in Startup
* Fixed merge
* Fix backwards compat
* Handle culture variance and add more options for indexing fields
* Workaround for missing DB on install
* Add a document per language to the delivery API content index
* Filters and Selectors must be able to match multiple values (as OR)
* A few review changes
* Change TODO for a note
* Workaround for lazily resolved field value types in Examine
* Make removal tracking more granular to cover both single and all culture deletion
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* check for completed transitions before accessing target state
* upgrader should be happy with initial and final state being the same value - only an empty final state should throw
* refactor
* reduce complexity
* Don't check for successfull
* Add test that runs migration twice
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Updated API version package and moved attribute to each controller as it cannot be inherited.
* Ignore "$type" on types implementing interfaces in the delivery api
* Make implementations sealed and internal if possible
* Remove usings
* Making some models sealed as well
* Making more models sealed
* Last model changes
* Un-seal ApiContentResponse
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Fix default sort for the query endpoint
* Revert changes in PathSortIndexer
* If no sort query option is provided, keep the index sorting as default
* Delete path sort and path sort indexer
---------
Co-authored-by: kjac <kja@umbraco.dk>
* updates @babel/* to 7.21.4
* update @microsoft/signalr to 7.0.5
* update @umbraco-ui/uui to 1.2.1
* update ace editor to 1.18.0
* update all build dependencies to latest version
* update jquery to 3.6.4
* update spectrum-colorpicker2 to 2.0.10
* Add icon for "styles" alias (style select)
* update tinymce to 6.4.2
Read more here: https://www.tiny.cloud/docs/tinymce/6/6.4.1-release-notes/
* updates @babel/* to 7.21.4
* update @microsoft/signalr to 7.0.5
* update @umbraco-ui/uui to 1.2.1
* update ace editor to 1.18.0
* update all build dependencies to latest version
* update jquery to 3.6.4
* update spectrum-colorpicker2 to 2.0.10
* Add icon for "styles" alias (style select)
* update tinymce to 6.4.2
Read more here: https://www.tiny.cloud/docs/tinymce/6/6.4.1-release-notes/
* updates @babel/* to 7.21.4
* update @microsoft/signalr to 7.0.5
* update @umbraco-ui/uui to 1.2.1
* update ace editor to 1.18.0
* update all build dependencies to latest version
* update jquery to 3.6.4
* update spectrum-colorpicker2 to 2.0.10
* Add icon for "styles" alias (style select)
* update tinymce to 6.4.2
Read more here: https://www.tiny.cloud/docs/tinymce/6/6.4.1-release-notes/
* Add member system fields to ListView
* Small fix
* Add sort options for new systemfield for members.
---------
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
* Update the delivery API content index at un/publish
* Make the query service use "itemId" instead of "id" when extracting GUIDs + only fetch that single field rather than all fields
* Simplify the code a little
* Making AncestorsSelectorIndexer sealed
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Taking into account the start item when no "fetch" selector is present
* Fix spacing
* Get rid of extra DefaultSelect method
* Remove comment for default selector
* Apply default sorting directly in HandleSorting()
* Get rid of nesting conditional logic
* Filter out disallowed content types from the delivery api content index
* Added .
* Allow children of disallowed content types in the index
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Make delivery API indexers and handlers public (sealed) so they can be overridden by custom ones
* Making the rest of the indexers public (sealed)
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Add scaffolding
* Entities not Entitys
* Remove unececary obsoleted constructor
* Implement create script
* Return a simplified ScriptFile instead of IScript
That file abstraction seems way too bloated, containing a lot of stuff that's not relevant for files, such as IDs and keys.
* Use IScript instead of custom return model
* Add validation when creating script
* Add Get script endpoint
* Add response types
* Add Delete
* Throw if user key not found
* Remove unused maapper
* Add update endpoint
* Add Get by path
* Add create folder endpoint
* Don't pass performingUserId to folder creation
* Remove update folder
* Add delete folder endpoint
* Use specific ScriptFolderOperationStatus instead of ScriptOperationStatus
* Add OperationStatusResult
* Check folder for invalid name
* Check name for invalid characters
* Add partial view snippet endpoint
* Start working on CreatePartialView
* Add create partial view endpoint
* Retrieve key from audit method
* Add operation status results
* Add Get endpoint
* Return 201 when creating
* Add update partial view endpoint
* Add delete endpoint
* Add response types
* Add folder base implementation
* Add folder endpoints
* User property for allowed file extensions
* Rename async method to async
* Break snippet into endpoint in two
* Make content non-nullable
* Remove IService
* Add get by path
* Add viewmodels
* Add create and update models
* Add create stylesheet
* Add update endpoint
* Rename StylesheetControllerBase to StylesheetControllerBase
* Add stylesheet delete
* Rename controller bases
* Add stylesheet folders
* Add status results
* Add response types to folders
* Add richtext rules endpoints
* Add Get all endpoint
* Add get rules by path endpoint
* Aling validates so they're not async
These are private methods, so there's no reason to make them preemptively async
* Add template obsoletions to interface
* Add stream methods
This is evidently used by deploy 🤷
* Obsolete stylesheet operations
* Add get and getall across all services
* Obsolete script operations
* Obsolete old partial view methods
* Add some method docs
* Add compatibility suppression
* Update OpenApi.json
* Rename action
* formatting
* Fix import
* add expression body
* Invert if
* Move base on own line
* Rename file
* Rename to all
* Change to stylesheet instead of script
* Add Umbraco.Code.MapAll to map definitions
* Add comment about auditing
* use publish cancelable async
* use expression body
* formatting
* fix to use pattern matching
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Introduce content index handlers for the Delivery API
* Do not add protected content to the index
* Re-introduce public collection builder extensions
* Add backwards compatible constructor to ConfigureIndexOptions
* Fix edge case for published children of unpublished parents
* Reduce number of hardcoded field names
* Fixed copy/paste comment
* Fix field definition type for date
* Do not add trashed items to the content index
* Don't expose protected content through the item endpoints
* Removing ReSharper comment
---------
Co-authored-by: Elitsa <elm@umbraco.dk>
* Only add version to operationId when the version is not the default version
* Updated OpenApi.json
* A little code formatting
* Update OpenAPI JSON so the tests pass
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Added functionality to split det swagger doc into multiple definitions. Most (maybe too much) is still shared between the apis.
* Fixed issue with duplicate operation ids when we have multiple versions of an endpoint
* use strong types instead of var
* Updated OpenApi.json
* Formatting
* formatting
* Delete old files that is not implemented in api.common
* Updated openAPi after merge
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Rename UsersController to UserController
* Rename namespace to User
* Rename UserGroupsControllerBase to UserGroupControllerBase
* Rename namespace to UserGroup
* New backoffice: User and member item endpoints (#14079)
* Implement ByKeys in MemberService
* Implement member item endpoint
* Add routing to static file item controller
* Implement user item endpoint
* Implement user group item endpoint
* return proper response model
* update OpenApi.json
* Add CompatibilitySuppressions
* Cleanup
* Update OpenApi
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Make user-group item endpoint singular
* Make user item endpoint singular
* Renamer user and user group folders
* Move from Users namespace to user
* Move from UserGroups namespace to UserGroup
* Update OpenApi.json
* Fix namespace after merge
* Move user item endpoint to singular namespace
* Move user group item endpoint to singular namespace
* Fix open api schema
---------
Co-authored-by: Nikolaj Geisle <70372949+zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa <elm@umbraco.dk>
* Add a dedicated (temporary) cookie setup for new backoffice logins, so old and new backoffice can co-exist behind separate logins
* use temp management api login endpoint for authentication
* Update OpenAPI JSON
---------
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Add the core parts of the headless PoC
* Add Content API project (WIP - loads of TODOs and dupes that need to be fixed!)
* Rename the content API project and namespaces
* Fixed bad merge
* Rename everything "Headless" to "ContentApi" or "Api"
* Refactor Content + Media: Key => Id, Name not nullable
* Make Content API property return value types independent of datatype configuration
* Clean up refactorings
* First stab at an expansion strategy using content picker as example implementation
* Use named JSON options for content API serialization
* Proper inclusion and registration of the content API
* Introduce API media builder
* Make MNTP return API content/media depending on configuration (instead of links) and support output expansion
* Content API: Get by controllers (#13740)
* Adding ContentApiControllerBase
* Adding get by id and url controllers
* Change route of get all test controller
* Rename to ContentApiController
* Refactoring
* Removing test controller
* Content API: Add start-node header value to deal with url collisions (#13746)
* Use start-node header value to deal with url collisions
* Cleanup
* Rename "url" param to "path"
* Adding a start node service to get the start-node header value
* Trim '/' from both beginning and end
* Content API: Support Accept-Language header (#13831)
* Move the content API JSON type resolver to an appropriate namespace
* Add localization based on Accept-Language header
* Content API: Output expansion (#13848)
* Implement request based output expansion strategy + expansion output cache at property level
* Slighty leaner implementation for default output expansion strategy
* Clarify the code a bit
* Fix bad merge
* Encapsulate content API dependencies in the DI
* Support multi-site and multi-culture routing + a little rename/refactor (#13882)
* Support multi-site and multi-culture routing + a little rename/refactor
* Make the by route controller handle root nodes
* Rename Url to Path in API content output
* Add a few comments for magic route creation
* Rename services from "Default" to "Noop"
* Ensure that Umbraco can boot without adding "AddContentApi()" to ConfigureServices
* Moved incorrectly placed media builder
* Fix API routes (#13915)
* Fix multi URL picker value converter trying to access disposed objects in edge cases
* Delivery API: Content routing and structure (#13984)
* Introduce content route instead of content path, rename and rework start item (previously start node) handling
* Strip out start node path in generated route path
* Make the start-item header take precedence over the request domain
* Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)
* Include umbraco properties (width, height, ...) in the Media Properties collection (#14023)
* Move umbraco properties (width, height, ...) to the Properties collection of the API Media model
* Don't output the umbracoFile property of media items
* Add content type deny list (#14025)
* Create a deny list of content types and utilize it for output generation
* Add unit tests
* Dedicated property cache level for Content API (#14027)
* Support redirect tracking (#14033)
* Create a deny list of content types and utilize it for output generation
* Add unit tests
* Handle redirect tracking in the content API
* Include start item routing info for redirects
* Add cultures and their routes to the API output (#14038)
* Create a deny list of content types and utilize it for output generation
* Add unit tests
* Handle redirect tracking in the content API
* Include start item routing info for redirects
* Add culture routes to root output (for HREFLANG support)
* Rename redirect service method to better match its purpose
* Review changes
* Delivery API: Query controller (#14041)
* Initial commit
* Custom ContentAPIFieldDefinitionCollection
* Make index IUmbracoContentIndex
* Add querying for children by parent id (key)
* Add missing interface
* Adding querying endpoint
* Test code
* Compose unpublishedValueSet, so that you get the correct data in the ContentAPI index
* Renaming
* Fix ancestorKeys index values
* Adding IApiQueryExtensionService to be able to query the ContentAPI index in a generic way
* Fix IApiQueryService and clean up QueryContentApiController using it
* Support querying for path
* Fix content API indexing
* Fix default sorting
* Implement concrete QueryOption implementations
* Introduce new ExecuteQuery that uses the Core OptionHandlers
* Implement ExecuteQuery
* Change ExecuteQuery signature and implementation
* Implement demo sorting and fetching
* Add query option handlers and collection builder for them
* Cleanup
* Revert "Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)"
This reverts commit 78e1f748e5.
* Revert "Delivery API: Content routing and structure (#13984)"
This reverts commit a0292ae535.
* Revert "Fix multi URL picker value converter trying to access disposed objects in edge cases"
This reverts commit 6b7c37a5bf.
* Revert "Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)"
This reverts commit 78e1f748e5.
* Revert "Delivery API: Content routing and structure (#13984)"
This reverts commit a0292ae535.
* Revert "Fix multi URL picker value converter trying to access disposed objects in edge cases"
This reverts commit 6b7c37a5bf.
* Fix multi URL picker value converter trying to access disposed objects in edge cases
* Delivery API: Content routing and structure (#13984)
* Introduce content route instead of content path, rename and rework start item (previously start node) handling
* Strip out start node path in generated route path
* Make the start-item header take precedence over the request domain
* Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)
* Test commit
* Refactored interfaces for the query handlers and for the selectors (that will handle the value of the fetch query option)
* Implemented a base class for the query options
* Refactored the names of the selectors and made use of the base class
* Refactored the ApiQueryService
* Refactored the QueryContentApiController.cs
* Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)
* Fixing merge gone wrong
* Fix multi URL picker value converter trying to access disposed objects in edge cases
* Delivery API: Content routing and structure (#13984)
* Introduce content route instead of content path, rename and rework start item (previously start node) handling
* Strip out start node path in generated route path
* Make the start-item header take precedence over the request domain
* Conditionally enabling the delivery API + add protection and preview support + refactor all services to be singletons + ensure no-op implementations for all required services (#13992)
* Make fetching work with the new setup
* Moving files to dedicated folders
* Removing ? for array
* Rename selector query method
* Implement FilterHandler and some filters
* Implement SortHandler and sort some sorts
* Refactoring
* Adding more fields to index due to querying
* Appending filtering and sorting queries
* Implementing a new ISelectorHandler without Examine types
* Re-implementing the collection to have a dedicated one for the selectors
* Implementing a new IFilterHandler without Examine types & refactoring the filters implementing it
* Adding a new collection dedicated to filters
* Renaming the old collection
* Implementing a new ISortHandler without Examine types & refactoring the sorts implementing it
* Adding a new collection for the sorts & adding all collections to UmbracoBuilder.Collections
* Refactoring the service to use the new collections and types
* Refactoring the fields in ContentApiFieldDefinitionCollection
* Remove nullability in Handlers
* Don't return null for selector
* Add TODO for having the filters support negation
* Changing the SortType to FieldType with our custom types on the SortOption
* Fix AncestorsSelector
* Fix ApiQueryService
* Documentation
* Fix Swagger docs
* Refactor the QueryContentApiController
* Adding handling for the IApiContentResponse in the JsonTypeResolver
* Refactor the service to use a safe fallback value in Examine queries
* Adding Noop for the IApiQueryService
* Cleanup
* Remove comment
* Fix name field for indexing
* Don't inherit QueryOptionBase in filters
* Fix casing for API index constant + swap FIXME with TODO
* Add TODO for handling missing fetch with start-item header
* Rename query handler parameters to not leak source (i.e. query string)
---------
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Elitsa <>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Delivery API: Adding pagination to query endpoint (#14083)
* Adding pagination to query endpoint
* Optimize the paging using Examine directly
* Fix comment
* Remove skip/take code duplication
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Add missing CompatibilitySuppressions.xml
* Make Delivery API packable
* Make Api.Common packable
* Renamed extension method and namespace so it is discoverable
* Untangle ApiVersion configuration into api.common, so delivery api do not require the management api to boot.
* configure options in management api
* RTE output as JSON for Content API (#14067)
* Conditionally serve RTE output as JSON instead of HTML
* Fixed merge
* Rename to Delivery API (#14119)
* Rename ContentApi to DeliveryApi
* Rename delivery API index implementation
* Update comments from "Content API" to "Delivery API"
* Rename project from Content to Delivery
* Add dedicated controller base for content delivery API
* Rename delivery API content index to include "content" specifically
* Fix compat suppressions
---------
Co-authored-by: kjac <kja@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Throw from IUserIdKeyResolver if id/key not found. This is too critical to not throw.
* Fixed tests
* Explicitly test that we can resolve super user key/ID from their counterparts
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Copy and Move API for Content and Media
* Update OpenAPI JSON schema
* Update OpenApi JSON file after merge
* Rename key to id
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Added is-used endpoints
* Updated CompatibilitySuppressions.xml
* Minor cleanup
* Fix issue where only document types was supported. Now also media and member types is supported
* CompatibilitySuppressions.xml
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* New Backoffice: Refactor migrations to allow for unscoped migrations (#13654)
* Remove PostMigrations
These should be replaced with Notification usage
* Remove outer scope from Upgrader
* Remove unececary null check
* Add marker base class for migrations
* Enable scopeless migrations
* Remove unnecessary state check
The final state of the migration is no longer necessarily the final state of the plan.
* Extend ExecutedMigrationPlan
* Ensure that MigrationPlanExecutor.Execute always returns a result.
* Always save final state, regardless of errors
* Remove obsolete Execute
* Add Umbraco specific migration notification
* Publish notification after umbraco migration
* Throw the exception that failed a migration after publishing notification
* Handle notification publishing in DatabaseBuilder
* Fix tests
* Remember to complete scope
* Clean up MigrationPlanExecutor
* Run each package migration in a separate scope
* Add PartialMigrationsTests
* Add unhappy path test
* Fix bug shown by test
* Move PartialMigrationsTests into the correct folder
* Comment out refresh cache in data type migration
Need to add this back again as a notification handler or something.
* Start working on a notification test
* Allow migrations to request a cache rebuild
* Set RebuildCache from MigrateDataTypeConfigurations
* Clean MigrationPlanExecutor
* Add comment explaining the need to partial migration success
* Fix tests
* Allow overriding DefinePlan of UmbracoPlan
This is needed to test the DatabaseBuilder
* Fix notification test
* Don't throw exception to be immediately re-caught
* Assert that scopes notification are always published
* Ensure that scopes are created when requested
* Make test classes internal.
It doesn't really matter, but this way it doesn't show up in intellisense
* Add notification handler for clearing cookies
* Add CompatibilitySuppressions
* Rename Execute to ExecutePlan
We have to do this to be able to obsolete :(
* Update CompatibilitySuppressions
* Update src/Umbraco.Infrastructure/Migrations/MigrationPlanExecutor.cs
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* generate compatability suppresion file
---------
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add user group keys to constants
* Update migration to assign the right keys
* Update DataCreator
* Fix FIXME with removing ExcludedUserGroupAliases
* Obsolete group aliases
* Implement ByQueryEndpoint
* Implement new async methods on tag service
* dont have nullable query
* Formatting
* Add default implementation to interface
* Allow nullable query in api
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Update default UmbracoVersion template value using MSBuild target
* Fix target order when using pack --no-build
* Use JsonPathUpdateValue MSBuild task to update default UmbracoVersion template value
* Update UmbracoVersion in Umbraco Package RCL
* Add specific not found results
* Add tests for the enable/disable not found tweak
* Cache ids and key in UserIdKeyResolver
* Don't cache null keys
* BackOffice not Backoffice
* Move fetching the user out of the ChangePasswordUsersController
* Move resolving user out of SetAvatar
* Move resolving user out of Update
* Return more specific notfound in bykey
* Use ErrorResult for all endpoints with unknown errors
* Split integration tests
* Add mappers
* Use ?: consistently
* Add reuseable iso code validator
* Validate ISO code
* Update supressions
* Use method from base to get current user key
* Rename ISo to Iso
* Use keys in services instead of user groups + Added a couple of new validations
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Ensure case insensitivity in tag name queries.
Use LIKE instead of = to ignore collation rules.
* Add integration test for creating tag relations with mixed casing.
* Changed some keys to ids and fixed so users can provide Ids when creating
* updated OpenApi.json
* Fixed issue with datatypes when wrong propertyEditorAlias was used and allow creating with key
* Updated OpenApi.json
* Handle duplicate names correct
* Fix for parent not found
* Handle if parent is not a container
* Update CompatibilitySuppressions
---------
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Fix CanForceCreateDatabase method and add some unit tests
* Fixed an old copy/paste error
* A little nitpicking over wording and formatting
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Fix CanForceCreateDatabase method and add some unit tests
* Fixed an old copy/paste error
* A little nitpicking over wording and formatting
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Support readonly set via SendingContentNotification
* Apply changes to second umb-property-editor as well
* Remove check on property.supportsReadOnly
* Disable allow unlock
* Add check on property.readonly
* Small adjustment in the order of preview checks
---------
Co-authored-by: Laura Neto <12862535+lauraneto@users.noreply.github.com>
* Add UserResponseModel
* Add factory to created UserResponseModel
* Add GetByKey controller
* Add GetAllUsers endpoint
* User proper response model
* Make naming consistent
* Order by username in GetAll
* Add user filter endpoint
* Fix includer user states
* Remove gravatar from the backend
* Send user avatars in response
* Add create user model
* start working on create
* Validate the create model
* Add authorization to create
* Use UserRepository instead of UserService to ValidateSessíonId
* Create IBackofficeUserStore interface
This is essentially a core-friendly version of the BackOfficeUserStore, additionally it contains basic methods for managing users, I.E. Get users, save users, create users, etc.
* Remove more usages of user service
* Remove usages of IUserService in BackofficeUserStore
* Add documentation
* Fix tests and DI
* add IBackOfficeUserStoreAccessor to resolve it in singleton services
* Resolve circular dependency
* Remove obsolete constructor
* Add core friendly user manager
* Finish createasync in user service
* Add WIP create endpoint
* Save newly creates users user groups
* Use service scope for user service
* Remove now unnecessary accessors
* Add response types
* Add update user endpoint
* Add EmailUserInviteSender
* Add technology free way of creating confirmation token
* Add invite uri provider
* Add invite user to user service
* Add invite user controller
* Add delete endpoint
* Add operation status responses
* Add operation status responses
* Added temporary file uploads including a repository implementation using local temp folder.
* Add Disable users endpoint
* missing files
* Fixed copy paste error
* Fix create users return type
* Updated OpenApi.json
* Updated OpenApi.json
* Handle if created failed in identity
* Add enable user
* Make users plural in enable/disable
We're doing the operation on multiple entities
* Added file extension check
* Add unlock user endpoint
* Clean up. Removed old TemporaryFileService and UploadFileService and updated dictionary items to use this new items
* Clean up
* Add reset password
* Add UpdateUserGroupsOnUsers method
* Add UpdateUserGroups
* Get rid of stream directly on TemporaryFileModel, and use delegate to open stream instead.
* Fix post merge
* Use keys instead of IDs
* Add ClearAvatar endpoint
* Review changes
* Moved models to their own files
* Reverted launch settings
* Move enlist extension to its own namespace
* Create set avatar endpoint
* Add reponse types
* Remove infrastructure extension after merge
* Add Cmapatibility suppressions
* Add test suppression
* Add integration tests
* Fix issue found in tests
* Add invited user to UserInvitationResult
* Add more tests
* Add update tests
* Hide different tests under parent
* Return DuplicatUserName user operation status if username matches an email
* Add update tests
* Change sorted set to HashSet
It doesn't work if it's not IComparable
* Change ID to Key when checking super
* Add get tests
* Add more GetAllTests
* Move tests to the right namespace
* Add filter test
* Fix including disabled users bug found by test
* Add test to ensure invited user state
* Add test case for UserState.All
* Add more filter tests
* Add enable disable tests
* Add resolver for keys and ids
* Replace usages of IUserService with IUserIdKeyResolver
* Add CompatibilitySuppressions
* Add UserIdKeyResolverTests
* Fix UserIdKeyResolver
* Add missing user operation results
* Updates from review
* ID not key
* Post instead of patch
* Use set instead of params for enable/disable
* Don't call to array
* Use sets for usergroup keys and user keys instead
* LanguageIsoCode instead of Language
* Update CompatibilitySuppressions after changin enumerable to set
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: kjac <kja@umbraco.dk>
* Fix total number of items for health check controllers
* Fix total amount of items for log viewer controller
* Fixing AllMigrationStatusPackageController
* Fixing total items for package controllers
* Adding default implementation
* Update Nerdbank.GitVersioning dependency to 3.5.119
---------
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Improve ImageSharpImageUrlGenerationTests
Removed a few "stale" tests that look to have been from code of old.
Add tests for all ImageUrlGenerationOptions.
Add some edge case tests to make the tests more sensitive.
Reduce scope for certain tests so the test is more focused on one thing rather than multiple
* Amending a mis-spelt variable.
---------
Co-authored-by: georgebid <91198628+georgebid@users.noreply.github.com>
* Add default super user key to migrations
* Start refactoring all interfaces signatures with ids
* Refactor datatype service to use userKey pattern instead
* Refactor ContentEditingService to use userkeys
* Refactor services to userKey
* Refactor more services to use userkey instead of id
* Refactor RelationService to use userKeys
* Refactor template service to use keys instead of ids
* Refactor fileservice to use keys instead of ids
* Refactor LocalizationService to use keys instead of ids
* Refactor PackagingService to use keys instead of ids
* Refactor TemplateController to use current user keys
* Refactor DataTypeContainerService.cs
* Refactor DataTypeService to use keys instead of ids
* Fix up tests
* Fix up media editing service to use userkey instead of ID
* Update service ctor to avoid ambigious ctors
* refactor DataTypeService
* Refactor DataTypeService to not have a default value for parentKey
* Apply suggestions from code review
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* Update comment
* Add suppression file
* Add backoffice CompatibilitySuppressions
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
* small wording change for Element Type description
* updated language files IRT Element Types
* replacing a duplicate Block List with Block Grid
---------
Co-authored-by: Rheannon <ral@umbraco.dk>
* Added temporary file uploads including a repository implementation using local temp folder.
* missing files
* Fixed copy paste error
* Updated OpenApi.json
* Updated OpenApi.json
* Added file extension check
* Clean up. Removed old TemporaryFileService and UploadFileService and updated dictionary items to use this new items
* Clean up
* Get rid of stream directly on TemporaryFileModel, and use delegate to open stream instead.
* Review changes
* Moved models to their own files
* Reverted launch settings
* Update open API JSON file
---------
Co-authored-by: kjac <kja@umbraco.dk>
* Updated the maximum Node version supported
Building the current version of the back office is only supported on Node v16 and earlier so have updated the docs to reflect that.
* Updated the .Net and VS requirements
For v11 you now need to be running .Net 7 and VS 2022 so have updated the docs to reflect that.
* Apply suggestions from code review
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
---------
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Jason Elkin <jasonelkin86@gmail.com>
* Add default super user key to migrations
* Minor tweaks
* Obsolete superuser id
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* API for domains and hostnames incl. unit tests
* Update Open API json
* Update other unit tests to use new domain service methods where applicable
* Fix merge + update models to new naming scheme
* Handle attempts to add the same domain twice + unit tests for duplicate domain handling
* Review fixes
* CRUD API for media + get by ID for media types
* A little housekeeping for documents (align with media)
* Update Open API json
* Add messages to NotFound results (both content and media)
* Review changes; use same model for content and media URLs + return bad request when trying to move something to trash that is already in trash
* Fix bad merge + rename base (response) classes appropriately between both media and content types
* Fix ViewContext.FormContext not being set during BeginUmbracoForm
Client validation is broken without this if there are multiple forms with the same field names on a page.
* Tweaked comment
* SQL Server Truncate when full nucache SQL rebuild.
* Optimize truncate for SQL Lite
* Remove comment.
* Use current DB Types
* I added a couple of formatting changes.
---------
Co-authored-by: georgebid <91198628+georgebid@users.noreply.github.com>
* Add IsNullOrWhiteSpace Extension method
IsNullOrWhiteSpace extension method for IHtmlEncodedString
* Move extension method
* Add a UnitTest for the IsNullOrWhiteSpace extension method
* Update unit test
* Moved deleteAllMedia to afterEach, the reason for that is that we delete all the media in each test.
* Added additional timeout and a WaitForTimeout(), the reason for the WaitForTimeout is because it can take a second for the modelsbuilder to update the view.
* Added more timeout for the isSuccessNotificationVisible. Updated the helper ensureNameNotExists so they actually delete the partialViews
* Updated the locators for deleting the UK language. Added an expect for checking if the UK language is visible in the UI
* Updated the position where the dragAndDrop drops to
* Changed the trace so we only save the trace on the first retry, it saves a lot of time when the tests are running, since we dont need to save the trace and then delete the trace after each successful test
* Updated locators. Added an expect so the test waits until the / is visible in the URL before going further into the test
* Changed back to retain on failure on the pipelines, the reason for that is if a test only fails once, then we wont see what the actual error was in the test when looking on the pipeline.
* Added an expect so we wait until the page is loaded for packages
* Updated the dragAndDrop so they hopefully work.
* Changed values for dragAndDrop
* Updated the dragAndDrop values
* Bumped playwright version
* Added tests for testing if the rendering is working as intended for the block grid editor
* Added Layout stylesheets for testing
* We are now using the page.toHaveScreenshot() which checks if the test looks the same as the pngs.
* Updated the toHaveScreenShot so they now take in a shorter name for the pngs
* Updated the page.goto so they new go the to baseUrl based on the umbracoConfig
* Added additional pngs for the Linux tests
* Updated the pngs for linux yet again
* Add parent key to CopyingNotification
* Use parentkey on notifications
* Implement ParentKeys for Copying notification
* Obsolete parentId
* Implement MoveToEventInfoBase
* Refactor MovingToRecycleBinNotification to use the new MoveEVentInfoBase
* Refactor MediaMovingToRecycleBinNotification
* Refactor MovedToRecycleBinNotification to use new MoveEventInfo
* Refactor ContentMovedToRecycleBinNotification to use new MoveEventInfo
* Start implementing parent key in moveinfo
* Add FIXME's to move methods
* Refactor Move to get parentKey for descendants
* Add FIXME for move method
* Use MoveToRecycleBinEventInfo in RelateOnTrashNotificationHandler
* Add fixme's to DataTypeRepository
* Add obsolete messages
* Revert changes in ContentTypeServiceBaseOfTRepositoryTItemTService.cs
* Fix bad indentation
* Pass the recursive variable
* Revert changes in ContentService.cs
* Refactor MoveEventInfo to not duplicate equals method
* Refactor Equals to not duplicate code
* Add UnitTests of Equals
* make equals public and add non-happy path tests
* Remvoe duplicate call to base
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Modified PostPublishById to handle content that is culture variant. Added model and modified the javascript function that call the api endpoint.
* Added separate method for publishing with cultures. Added if else statment to js function.
* Moved check for all cultures being published to the top of PostPublishByIdAndCulture. Added parameter to ngDoc. Added Where Query.
* Added test for the advanced section under the block grid editor in content
* Bumped versions
* Added fixture template and customView
* Updated naming of tests
* Adding migration to update the default GUID value of created packages
* Updating the GUID if it is the default value when a package is saved
* Adding PackageDefinitionViewModel for representing a package
* Adding a mapping for package representation
* Adding PackageControllerBase, GetAllCreated and GetEmpty endpoints
* Adding GetCreatedByKey endpoint
* Adding GetByKey implementation for created packages
* Include MapAll comment
* Adding Download package endpoint
* Saving created package endpoint
* Adding a factory to create a PackageDefinition from view model
* Cleanup
* Fix error message
* Check for duplicate package name
* Remove commented out DuplicateNameException
* Moving created packages to /created folder/base
* Implement delete endpoint
* Update OpenApi.json
* Fix package route
* Fix OpenApi.json
* Add Ok() around the result
* Create PackageBuilderExtensions
* Adding suppression changes
* Cleanup
* Use ProblemDetailsBuilder
* Extract collecting installed packages from package migration plans into its own method
* Use GetInstalledPackagesFromMigrationPlans to return all migration statuses
* Add Status to DictionaryControllerBase ProblemDetails
* Implement RunMigrationPackageController
* Adding more information to the log message
* Update OpenApi.json
* Change param name
* Fix OpenApi.json
* Fix response type for Log viewer endpoint
* Remove EmptyPackageController
* Rename to RunPendingPackageMigrations
* Introduce new PackageOperationStatus
* Making methods async and introducing new Create, Update and Delete methods
* Fix async calls
* Fix Mapper - multiple enumeration and cleanup
* Creating special action models
* Fixing the factory with new models changes
* Service implementation changes
* Removing SaveCreatedPackageController as the functionality is split between Create and UpdateCreatedPackageController
* Utilize the new DeleteCreatedPackageAsync
* Refactor DownloadCreatedPackageController as some responsibility is moved to the service
* Refactor PackagingService to use auditService
* Refactor PackagingService to use skip/take
* Refactor services to return pagedmodel
* Refactor controller to use new return value
* update OpenApi.json
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Implement AuditLogByTypeViewModel
* Add GetLogs endpoint
* Implement AuditLogViewModelFactory and use it
* Remove mapping and do that in ViewModelFactory
* Add Skip take pagination to AuditService.cs
* Get entity key from repository
* Only create filter if sincedate has value
* Refactor to handle enitity not being found
* Add by type route
* Rename AuditLogViewModel.cs
* Add CreateAuditLogWithUsernameViewModel method to factory
* Rename method in factory
* Fix up controllers to use async service
* Refactor to use pagedModel
* Update sincedate query
* Add FIXME
* Move entity call in scope
* Rename methods to async
* Update src/Umbraco.Core/PaginationHelper.cs
* Refactor to use IActionResult
* Audit log in two words
* Fix up by key
* Fix routing
* Fix ByType
* Update ByType routing
* Refactor to also pass DateStamp
* Add Key to WithUserNameViewModel
* Refactor extension method to call new GetAsync method
* use new GetAsync method
* Rename models and implement base class
* Update OpenApi.json
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Added test for testing the area of the blockGridDataType
* Bumped version of playwright, builders and the helpers
* Added additional test timeout
* Added additional timeout since some test can be slow and timeout
* Added additional mediaLibrary to the path
* Changed so we now use slow which increases the test timeout by three times
* Changed to slow instead of setting timeout
- Custom Macro Parameter with true as default value can be created for those prefering that in their project
Co-authored-by: Jo Mehmet Sollihagen <jomehmet@solsol.no>
* Add MSSQL migration
* Make upgrade possible when user doesn't have a key yet
* Migrate SQLite
* Migrate the external login column
* Fix logging in after migration
* Handle fake GUID correctly
* Make GetByKey async
* Resolve external logins by key instead of id
* Remove usage of naive UserIdToInt
* Dont use ToGuid for property type defaults
* Use constant GUID for user groups
* Ensure that the same GUID is used to create the root user.
* Add migration for two factor logins
* Add default implementations
* Fix unit test
* Remove TODO
* Fix integration tests
* Add default implementation instead of throwing
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Make SQLServer migration idempotent
* Add comment about SQLite
* Fix typo
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Removed path so we can generate templates
* Remove old proj ref to core from cs proj (#13870)
Co-authored-by: Zeegaan <nge@umbraco.dk>
---------
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Changed internal to public for ContentPickerValueConverter, which was the only property value converter defined as `internal`
Fixes issue umbraco#13858
* Updated miniprofiler and added a few configurations
* added fixme
* Remove file that should not have been committed
* added ignore list. We check the entire path and ignore client requests anyway
* Add key to UserGroupDto
* Fix renaming table in sqlite
The SqliteSyntaxProvider needed an overload to use the correct query
* Start work on user group GUID migration
* Add key index to UserGroupDto
* Copy over data when migrating sqlite
* Make sqlite column migration work
* Remove PostMigrations
These should be replaced with Notification usage
* Remove outer scope from Upgrader
* Remove unececary null check
* Add marker base class for migrations
* Enable scopeless migrations
* Remove unnecessary state check
The final state of the migration is no longer necessarily the final state of the plan.
* Extend ExecutedMigrationPlan
* Ensure that MigrationPlanExecutor.Execute always returns a result.
* Always save final state, regardless of errors
* Remove obsolete Execute
* Add Umbraco specific migration notification
* Publish notification after umbraco migration
* Throw the exception that failed a migration after publishing notification
* Handle notification publishing in DatabaseBuilder
* Fix tests
* Remember to complete scope
* Clean up MigrationPlanExecutor
* Run each package migration in a separate scope
* Add PartialMigrationsTests
* Add unhappy path test
* Fix bug shown by test
* Move PartialMigrationsTests into the correct folder
* Comment out refresh cache in data type migration
Need to add this back again as a notification handler or something.
* Start working on a notification test
* Allow migrations to request a cache rebuild
* Set RebuildCache from MigrateDataTypeConfigurations
* Clean MigrationPlanExecutor
* Add comment explaining the need to partial migration success
* Fix tests
* Allow overriding DefinePlan of UmbracoPlan
This is needed to test the DatabaseBuilder
* Fix notification test
* Don't throw exception to be immediately re-caught
* Assert that scopes notification are always published
* Ensure that scopes are created when requested
* Make test classes internal.
It doesn't really matter, but this way it doesn't show up in intellisense
* Add notification handler for clearing cookies
* Add CompatibilitySuppressions
* Use unscoped migration for adding GUID to user group
* Make sqlite migration work
It's really not pretty, square peg, round hole.
* Don't re-enable foreign keys
This will happen automatically next time a connection is started.
* Scope database when using SQLServer
* Don't call complete transaction
* Tidy up a couple of comment
* Only allow scoping the database from UnscopedMigrationBase
* Fix comment
* Remove remark in UnscopedMigrationBase as it's no longer true
* Add keys when creating default user groups
* Map database value from DTO to entity
* Fix migration
Rename also renamed the foreign keys, making it not work
* Make migration idempotent
* Fix unit test
* Update CompatibilitySuppressions.xml
* Add GetUserGroupByKey to UserService
* Add ByKey endpoint
* Add UniqueId to AppendGroupBy
Otherwise MSSQL grenades
* Ensure that languages are returned by PerformGetByQuery
* add POC displaying model
* Clean up by key controller
* Add GetAllEndpoint
* Add delete endpoint
* Use GetKey to get GUID from id
Instead of pulling up the entire entity.
* Add UserGroup2Permission table
* Fetch the new permissions when getting user groups
* Dont ToString int to parse it to a short
I'm pretty sure this is some way old migration type code that doesn't make any sense anymore
* Add new relation to GetDeleteClauses
* Persist the permissions
* Split UserGroupViewModel into multiple models
This is to make it possible to make endpoints more rest-ish
* Bootstrap create and update endpoints
* Make GetAllUserGroupController paged
* Add method to create IUserGroup from UserGroupSaveModel
* Add sanity check version of endpoint
* Fix persisting permissions
* Map section aliases to the name the frontend expects
This is a temporary fix till we find out how we really want to handle this
* Fix up post merge
* Make naming more consistent
* Implement initial update endpoint
* Fix media start node
* Clean name for XSS when mapping to IUserGroup
* Use a set instead of a list for permission names
We don't want dupes
* Make permission column nvarchar max
* Add UserGroupOperationStatuses
* Add IUserGroupAuthorizationService
* Add specific user group creation method to user service
* Move validating and authorizing into its own methods
* Add operation result to action result mapping
* Update create controller to use the create method
* Fix create end point
* Comment out getting current user untill we have auth
* Add usergroup service
* Obsolete usergroup things from IUserService
* Add update to UserGroupService interface
* User IUserGroupService in controllers
* User async notifications overloads
* Move authorize user group creation into its own service
* Add AuthorizeUserGroupUpdate method
* Make new service implementations internal and sealed
* Add update user
* Add GetAll to usergroup service
* Remove or obsolete usages of GetAllUserGroups
* Add usergroup service to DI
* Remove usage of GetGroupsByAlias
* Remove usages of GetUserGroupByAlias
* Remove usage of GetUserGroupById
* Add new table when creating a new database
* Implement Delete
* Add skip and take to getall
* Move skip take into the service
* Fixup suggestions in user group service
* Fixup unit tests
* Allow admins to change user groups they're not a part of
* Add CompatibilitySuppressions
* Update openapi
* Uppdate OpenApi.json
again
* Add missing compatibility suppression
* Added missing type info in ProducesResponseTypeAttribute
* Added INamedEntityViewModel and added on the relevant view models
* Fixed bug, resulting in serialization not being the same as swagger reported. Now all types objects implementing an interface, is serialized with the $type property
* updated OpenApi.json
* Added missing title in notfound response
* Typo
* .Result to .GetAwaiter().GetResult()
* Update comment to mention it should be implemented on CurrentUserController
* Validate that start nodes actually exists
* Handle not found consistently
* Use iso codes instead of ids
* Update OpenAPI
* Automatically infer statuscode in problemdetails
* Ensure that the language exists
* Fix usergroup 2 permission index
* Validate that group name and alias is not too long
* Only return status from validation
We're just returning the same usergroups, and this is less boilerplate code
* Handle empty and null group names
* Remove group prefix from statuses
* Add some basic validation tests
* Don't allow updating a usergroup to having a duplicate alias
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Updated OpenIddict to v4 and when through the migration guide.
(SetAuthorizationEndpointUris and SetTokenEndpointUris should not start with a leading / anymore)
* Fixed issue where the old backoffice did not build
* Fixed build
* Fake a change - hopefully npm can see the file now?
* try using npm install instead of npm ci
* Another trial
* remove build of old backoffice
* Oops build new backoffice - not the old
* rollback changes to static assets
* Foreach csproj file instead. Fix for breaking change in dotnet sdk 7.0.200
* Add sort order to IDomain, UmbracoDomain and DomainDto
* Add migration to create domain sort order column
* Add Sort method to domain service
* Set sort order when persisting new domain and order results
* Add multiple and block style support to umb-button-group
* Allow sorting domains in back-office, improve UI and rewrite PostSaveLanguageAndDomains for correctly sorting domains
* Ensure routing and cache keeps the domain sort order
* Update test to assert correct domain order
* Move migration to target 11.3 and cleanup plan
* Fix formatting/styling and make SelectDomains private
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
---------
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fixed issues where we returned incorrectly 201 with CreatedResultViewModel
* Updated OpenAPI Spec
* Fixed OpenApi
* Added response header to swagger when 201 result
* Clean up
* Introduce root key constant
* Do not enforce ProblemDetails on every non-success response from the API + remove invalid NotFoundResult response types from various endpoints
* Update OpenAPI JSON contract to reflect the new NotFound results
* Add move/copy operations to datatype API
* Add compat suppressions for new interface methods
* Regenerate OpenAPI JSON
* Update OpenApi.json
* Ensure we can copy a datatype to root + make the target key nullable (explicit) for move and copy operation models
* Handle parent not found status
* Update the OpenAPI spec to reflect new nullability
* Cleanup
---------
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* Sanitize dictionary overview and export actions
* Amend dictionary services with async and attempt pattern + isolate temporary file handling in its own service.
* Update OpenAPI schema to match new dictionary bulk actions
* Implement move API for dictionary items.
* Add unit tests for dictionary item move
* Fix merge
* Update OpenAPI json after merge
* Refactor AllHealthCheckGroupController to return just the names of the groups + changes in the HealthCheckFactory
* Introduce a new "get by name without results" endpoint
* Create a "check" endpoint
* View models changes
* Factory renaming changes
* Remove Task.FromResult
* Update OpenApi.json
* Minor updates
* Inject HealthCheckCollection directly into the factory
* update ace-builds from 1.14.0 to 1.15.0
* update eslint from 8.32.0 to 8.33.0
* update jsdom from 21.0.0 to 21.1.0
* update nouislider from 15.6.1 to 15.7.0
* Add DoesPrimaryKeyExist method
* Add primary key name to dto
* Add extension method PrimaryKeyExists
* Dont use sql_master table
* Implement DoesPrimaryKeyExists
* Rename without plural s
* Refactor to get proper primary key name and not column name
* Use primary key name and not column name
* Dont filter tables in memory
* Remove .Where
* Don't select all, select only sql
* throw NotImplementedException by default
* USe virtual instead of abstract to avoid breaking change
* Reinstert primary key attribute
---------
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add key to UserGroupDto
* Fix renaming table in sqlite
The SqliteSyntaxProvider needed an overload to use the correct query
* Start work on user group GUID migration
* Add key index to UserGroupDto
* Copy over data when migrating sqlite
* Make sqlite column migration work
* Remove PostMigrations
These should be replaced with Notification usage
* Remove outer scope from Upgrader
* Remove unececary null check
* Add marker base class for migrations
* Enable scopeless migrations
* Remove unnecessary state check
The final state of the migration is no longer necessarily the final state of the plan.
* Extend ExecutedMigrationPlan
* Ensure that MigrationPlanExecutor.Execute always returns a result.
* Always save final state, regardless of errors
* Remove obsolete Execute
* Add Umbraco specific migration notification
* Publish notification after umbraco migration
* Throw the exception that failed a migration after publishing notification
* Handle notification publishing in DatabaseBuilder
* Fix tests
* Remember to complete scope
* Clean up MigrationPlanExecutor
* Run each package migration in a separate scope
* Add PartialMigrationsTests
* Add unhappy path test
* Fix bug shown by test
* Move PartialMigrationsTests into the correct folder
* Comment out refresh cache in data type migration
Need to add this back again as a notification handler or something.
* Start working on a notification test
* Allow migrations to request a cache rebuild
* Set RebuildCache from MigrateDataTypeConfigurations
* Clean MigrationPlanExecutor
* Add comment explaining the need to partial migration success
* Fix tests
* Allow overriding DefinePlan of UmbracoPlan
This is needed to test the DatabaseBuilder
* Fix notification test
* Don't throw exception to be immediately re-caught
* Assert that scopes notification are always published
* Ensure that scopes are created when requested
* Make test classes internal.
It doesn't really matter, but this way it doesn't show up in intellisense
* Add notification handler for clearing cookies
* Add CompatibilitySuppressions
* Use unscoped migration for adding GUID to user group
* Make sqlite migration work
It's really not pretty, square peg, round hole.
* Don't re-enable foreign keys
This will happen automatically next time a connection is started.
* Scope database when using SQLServer
* Don't call complete transaction
* Tidy up a couple of comment
* Only allow scoping the database from UnscopedMigrationBase
* Fix comment
* Remove remark in UnscopedMigrationBase as it's no longer true
* Add keys when creating default user groups
* Map database value from DTO to entity
* Fix migration
Rename also renamed the foreign keys, making it not work
* Make migration idempotent
* Fix unit test
* Update CompatibilitySuppressions.xml
* Add UniqueId to AppendGroupBy
Otherwise MSSQL grenades
* Cleanup
* Update CompatibilitySuppressions
* Rename UniqueId to Key
* Cleanup
---------
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* let the server determine the type rather than assuming it is an image
this is especially useful for SVGs that would otherwise be uploaded as images instead of the more appropriate Vector Graphics default type
* do not start processing of the queue if a dialog is shown
return early if the dialog is shown (if _requestChooseMediaTypeDialog() does not immediately return false) because that means the user will pick the media type
* clean up of the scope for performance
remove 'handleFile' since it is not being used and make the other callbacks one-way bound since we are not changing them
* add jsdoc to improve understanding of the dropzone directive
* Mini-list view search by id,name & key is fixed.
Added multiple conditions in the query to consider id or name or key from the filter param(search bar from minilistview)
* make it more simple ,now using || instead of clause conditions.
---------
Co-authored-by: Dhanesh Kumar <dhanesh.kumar@phases.dk>
Co-authored-by: Michael <michael@crossingpaths.be>
* Added tests for the BlockGridEditorDataType
* Bumped versions
* Split the file into two, so we now have a file with the Blocks and one with the Configuration of the datatype
* Changed function variables to class variables.
Changed tests to use the ConstantHelpers
Changed naming
* Use language ISO code for language fallback instead of language ID
* Remove language and language ID from dictionary item and dictionary item translation
* ADd unit test for dictionary item translation value extension
* Make the internal service implementations sealed
* Rename translation ISO code to be more explicit in its origin (Language)
* Add breaking changes suppression
* Handle save of invalid fallback iso code
* Fixed test
* Only allow non-UserCustomCulture's
* Fixed and added tests
* Rename ISO code validation method
* Fix language telemetry test (create Swedish with the correct ISO code)
---------
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Make data type CRUD operations async using Attempt pattern
* Refactor data type container management to its own service + add unit tests for it
* Add compatability suppression for new interface methods and unit test changes
* Align the template services and API with the dictionary ones (use attempt pattern)
* A little controller clean-up
* Mimic old file service behavior, make unit tests happy
* Align CreateForContentTypeAsync return value with the rest of the TemplateService API
* Scaffold endpoint should no longer feature master templates
* Update the OpenAPI JSON
* Fixes#13715 issue with simple logviewer searches
* Update Logviewer test - to ensure MessageLike and simple equivalent returns same result count to help catch
* Rework language service and API
* Revert unintended commit of Directory.Build.props
* Create OS conditional test for invalid ISO codes
* Reintroduce and obsolete old Delete method on ILocalizationService + make new Delete method delete by ISO code + add obsoletion attrs to service implementation
* Review comments + utilize new Delete method
* Do not allow model reuse when creating a new language
* Fix bad merge
* Split localization service into dedicated services for language and dictionary item handling
* Replaced ILocalizationService usage in management API (as much as can be done for now)
* Ensure we can create dictionary items with explicit keys (but no duplicates)
* Fix culture controller so it works properly with pagination
* Update OpenAPI JSON
* Actually update the language being updated...
* Unit test for invalid ISO now no longer needs to differ between OS :)
* A little bit of code health improvements
* A litte less code duplication
* Remove duplicate validation
* Fixing a few nullable reference types for log viewer (#13634)
(cherry picked from commit b4ca2a6636)
* Adding LogControllerBase
* Migrating GetLogLevels()
* Migrating GetNumberOfErrors()
* Migrating GetLogLevelCounts()
* Migrating GetCanViewLogs()
* Migrating GetMessageTemplates()
* Migrating GetLogs()
* Migrating GetSavedSearches()
* Migrating PostSavedSearch()
* Migrating DeleteSavedSearch()
* Adding LoggerViewModel
* Adding LogViewModelMapDefinition
* Update OpenApi.json
* Cleanup
* V12: Change nullability for the log searches (#13647)
* Changing nullability
* Obsolete DeleteSavedSearch since the query param is not used
* Fix a bit more referenced
* Add default implementation for the new overload of DeleteSavedSearch
(cherry picked from commit 5e06f5a8a0)
* Updates based on nullability fix
* Adding GetSavedSearchByName
* Implementing ByName endpoint
* Refactoring Delete endpoint based on GetSavedSearchByName
* Refactoring Create endpoint to return the item's location
* Suppress new GetSavedSearchByName in ILogViewer interfaces
* Update OpenApi.json
* Adding github initials to FIXME
* Renaming
* Moving files to Core proj
* Adding GetLogs with skip and take
* Introducing ILogViewerService
* Supressing xml for ILogViewer.GetLogsAsPagedModel()
* Changing to our own Enum representation of LogLevel
* Creating ILogEntry needed for GetPagedLogs()
* Refactoring controllers to use the new logViewerService
* Removing base class methods since those have been moved to the new service
* Removing ErrorCountLogViewerController since the result can be calculated from another endpoint
* Refactoring the MapDefinition because of the new return types from the service
* Update OpenApi.json
* Obsoleting old methods in favor of the ILogViewerService
* Cleanup
* Fixing enum representation as strings for Swagger
* Adding documentation
* Changing enum representation to string in OpenApi.OpenApi.json
* Fix FIXME (use CreatedAtAction)
* Removing JsonStringEnumConverter as there should be another way to fix enum representation for Swagger
* Removing MappingBuilderExtensions and making specific LogViewerBuilderExtensions
* Changes to the .sln file
* Take only the result in the response
* Register the LogViewer extensions
* Update OpenApi.json
* Fix the supressions.xml
* Add inheritdoc
* Remove GetSavedSearchByName as it isn't necessary to introduce it anymore
* Obsolete interfaces
* Rename ViewPermission controller to ValidateLogFileSize
* Make rest of the methods async
* Route name change
* Remove methods obsoletion
* Introduce the "attempt" pattern
* Refactoring of ILogViewerService
* Refactoring controllers
* Another OpenApi.json update
* Adding fixme
* Re-add new client project
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Add improved log message when in memory compilation fails.
* Move LogCompilationFailure into its own method
And hopefully make codescene happeh
* Reduce nesting
* Replace null check with linq
* Rework dictionary CRUD operations
* Update OpenAPI json
* Move responsibility to localization service, introduce new attempt pattern for create and update operations, update unit tests accordingly
* Fix merge
* Rollback assumption that we can map entities from scratch (entity relations got in the way)
* Update OpenAPI JSON
* Add breakage supressions
* Add compat suppressions for integration test project
* Make dictionary item deletion follow same pattern as create and update
* Review comments + update delete to use new pattern
* Update breakage suppressions to match the new Delete method
* format preValues with DataTypeHelper.createPreValuesProps before rendering so they have the 'alias' prop used for input-id to umb-toggle
* preValues are now formatted on fetch so we do not need to do it again
* remove the onSetup for the macro button since we want to always be able to interact with the macro button (either insert or edit)
* let the onAction method find the currently selected macro by asking the active editor for its selection instead of relying on the NodeChanged event
* build(deps-dev): update development dependencies
* update the Umbraco UI library to 1.1.0
* update ace editor to 1.14.0
* update diff to 5.1.0
* update jquery to 3.6.3
* update tinymce to 6.3.1
* update underscore to 1.13.6
* update @microsoft/signalr to 7.0.2
* Obsolete chings changed in v13
* Fix tests
* Obsolete Execute and add ExecutePlan with default implementation.
This just calls the old implementation and creates an ExecutedMigrationPlan from the result
In V13 this has its own implementation.
* Mention notification in obsolete message
* Added a new executeable to new backoffice
* add new backoffice client as submodule
* add new backoffice client as project
* add bootstrap of backoffice client
* experimentally allow CORS from local vite app running the backoffice
* fix base path
* move new backoffice projects to NewBackoffice folder
* add support for redirect urls to login page (temporary)
* update references to v13
* override databaseinstall/index.cshtml
* copy ignore lines from normal project
* remove redirect to AuthorizeUpgrade
* codeql: checkout submodules
* Section catch-all route
* fixed tests
* remove starter-kit file
* remove grid views
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Refactored ManagementApiComposer into several extension classes
* ADd support for non-nullable reference types in OpenAPI doc
* Update OpenAPI JSON to reflect new (lack of) nullability
* Don't add factories twice :)
* Rework composing + move backoffice route detection for management API to core
* Remove PostMigrations
These should be replaced with Notification usage
* Remove outer scope from Upgrader
* Remove unececary null check
* Add marker base class for migrations
* Enable scopeless migrations
* Remove unnecessary state check
The final state of the migration is no longer necessarily the final state of the plan.
* Extend ExecutedMigrationPlan
* Ensure that MigrationPlanExecutor.Execute always returns a result.
* Always save final state, regardless of errors
* Remove obsolete Execute
* Add Umbraco specific migration notification
* Publish notification after umbraco migration
* Throw the exception that failed a migration after publishing notification
* Handle notification publishing in DatabaseBuilder
* Fix tests
* Remember to complete scope
* Clean up MigrationPlanExecutor
* Run each package migration in a separate scope
* Add PartialMigrationsTests
* Add unhappy path test
* Fix bug shown by test
* Move PartialMigrationsTests into the correct folder
* Comment out refresh cache in data type migration
Need to add this back again as a notification handler or something.
* Start working on a notification test
* Allow migrations to request a cache rebuild
* Set RebuildCache from MigrateDataTypeConfigurations
* Clean MigrationPlanExecutor
* Add comment explaining the need to partial migration success
* Fix tests
* Allow overriding DefinePlan of UmbracoPlan
This is needed to test the DatabaseBuilder
* Fix notification test
* Don't throw exception to be immediately re-caught
* Assert that scopes notification are always published
* Ensure that scopes are created when requested
* Make test classes internal.
It doesn't really matter, but this way it doesn't show up in intellisense
* Add notification handler for clearing cookies
* Add CompatibilitySuppressions
* Rename Execute to ExecutePlan
We have to do this to be able to obsolete :(
* Update CompatibilitySuppressions
* Update src/Umbraco.Infrastructure/Migrations/MigrationPlanExecutor.cs
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Template query builder API
* Create a dedicated template service (copy template operations from file service)
* CRUD API for templates
* Make file service consume the template service (remove duplicated code)
* Use the template service in the old template controller so we can track changes better (note: this is breaking, but it doesn't matter as the controller will be deleted)
* Add scaffolding to the template API
* Make the route differ between query settings and execution
* Get rid of ugly string constants
* Refactor query execution a little to improve code health
* Fix build checks (compat)
* Deduce the master template from the template contents
* Make template service async, move master template parsing into template service
* Fix open API test
* Make sure the unit tests use new template parsing
* Add FIXME for SetMasterTemplate
* added obsolete attributes
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Changing nullability
* Obsolete DeleteSavedSearch since the query param is not used
* Fix a bit more referenced
* Add default implementation for the new overload of DeleteSavedSearch
* Ensure border is set so it doesn't jump on selection
* Allow to hide color from icon picker
* Use CSS grid instead to fill icons and with minimum width
* Remove odd flex size
* Set minimum to 60px instead
* Add PropertyEditorUiAlias to datatype incl. migration for persistence
* Add configuration validation
* Folder CRUD (reusable for other folder trees) + datatype delete + more RESTish response from datatype create and update
* API for datatype references
* Clean up response types, swagger metadata and fix OpenAPI test
* Allow breakage in the build
* Use yield return pattern
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fix incorrect return type from references API
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
This is required for consumers that intend to use WithCustomMiddleware instead of WithMiddleware, as otherwise they are forced to re-implement this code
* fix for #13623 by hiding Member Edit Action Menu on Infinite editing for consistency
* added missing attribute to umb-editor-header for Member editing
* fixes data-element attribute on media section
* Revert "fixes data-element attribute on media section"
This reverts commit 2a35c9fbed.
* use property alias on members umb-property
Co-authored-by: Mario Lopez <mario@luminary.com>
* Moved refactor from V12 based branch
* Remove obsolete config property to avoid obsoletion warnings
* Clean up test models
* Make the datatype API a little less confusing by introducing explicit models for create and update
* Remame "Configuration" to "Data" to make FE happy :)
* Safeguard deserialization of empty configs
* Less strict number handling for deserialization
* Prepare for data type config migrations
* Attempt to have contextual config serializers
* Update OpenAPI spec with (temporary) data type controller
* Fix unit tests
* Update compat suppressions (allow breakage for datatype and configuration editor)
* Make the duplicate JsonObjectConverter implementation private
* Dont allow disable user when invited
* Use data instead of selection
* return succesfully disabled users
* Disable disable button when invited
* Add integration tests
* Remove unused usings
* Update src/Umbraco.Web.BackOffice/Controllers/UsersController.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Create DisabledUsersModel
* use data.disabledUsers
* Return OK if no users to be saved
* User disabledUsersModel
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Adding health check controllers - getAll & getGroupByName
* Adding HealthCheckGroup mapper
* Adding viewModels
* Adding a factory for building a health check group with result view model
* Registering the mapper and factory
* Updating OpenApi.json
* Remove unnecessary checks - we instantiate the target before calling the Map()
* Adding ProducesResponseType for GetAll()
* Fixing usings
* Making checks required for a health check group
* Adding OK() around result to be explicit
* Adding default values to skip and take
* Adding Umbraco.Code comments
* Removing ? from HealthCheckGroupWithResultViewModel return type
* Move the grouping creation to the factory
* Adding Actions[] for each health check + mapping
* Defaulting ValueRequired to false
* Refactoring routes - from health-check to health-check-group
* Move to HealthCheckGroup folder
* Fix OpenApi.json
* Changing class name and making Key of HealthCheckActionViewModel non-nullable
* Fixing namespace
* Migrating ExecuteAction endpoint
* Add execute-action endpoint to OpenApi.json
* Use Task.FromResult() around the action result
* Fixing namespaces and swagger group name
* Fixing naming of the key in the health check action
* Fix tag names in OpenApi.json
* Add status endpoint
* Refactor GetStatus to use a factory for the viewmodel
* Move controllers to correct namespace
* Add response type to GetStatus
* Create query endpoint
* Create GetAll endpoint
* Add by key
* Add delete by key
* Rename enabled controller
* Add SetEnabled endpoint
* Update OpenApi.json
* Replace query endpoint with a optional filter parameter
* Use enum to enabled and disable url tracking
* Update OpenApi.json
* Add bad request response type to GetAll endpoint
* Created a common library for the APIs and moved stuff that is required for the new content API. Also moved the versioned backoffice API route handling to the management API where it belongs.
* Remove test auth attribute from Media
* Bump version
* Add PrivateAssets="all" to mangement api project reference (#13249)
* Bump version
* Use the actual save function for saving the copy (#13066)
* Use the actual save function for saving the copy
* PR feedback
(cherry picked from commit 3802097a32)
* Unbreak breaking change in #13066 (#13288)
(cherry picked from commit e4741b0c64)
* Bump version to 10.3.2
* Parse lockId as invariant (#13284)
Co-authored-by: Zeegaan <nge@umbraco.dk>
(cherry picked from commit 272e922020)
* Allow for configuration of additional languages to install and ensure one is set as default. (#13290)
* Allow for configuration of additional languages to install and ensure one is set as default.
* Amended install default language method to handle invalid ISO codes and ensure the first specified language is always made the default.
* Removed unnecessary using.
* Apply suggestions from code review
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Clean up.
* Update src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Updated Smidge (#13331)
* Fix casing in fileSystemBasePath (#13306)
* Add guard statement (#13340)
* Move block grid single area rendering to its own dedicated view (#13359)
* Block Grid Editor Improvements (#13282)
* remove console log
* Updated references for Forms and Deploy in JSON schema project. (#13411)
* Enable single block mode (#13216)
* Enable single block mode
* Fixes tests, and adds test for single block mode output type
* Update src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/BlockListPropertyValueConverter.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/BlockListPropertyValueConverter.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fix breaking change
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Block Grid Editor: Removal of the forced placement feature (#13400)
* removal of the forceLeft/forceRight code
* removal of forced placement in css
* bring back removed code
* V10: AllowedUploadFiles appsetting not working (#13408)
* Add new Settings
* Use new settings instead of old ones
* Implement AllowedUploadedFiles value to be copied to AllowedUplayedFileExtensions
* Obsolete old settings
* Rename DisallowedUploadFileExtensions
* Implement same fix for DisallowedUploadFiles
* Use new settings for backoffice server variables
* Update the correct setting
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Feature: Media Picker drag and drop upload directly on property editor (#13393)
* prototype drag and drop upload
* Add upload image endpoint
* Add MediaPickerThreeController.cs
* Revert "Add upload image endpoint"
This reverts commit 4bb5865480.
* Update IIOHelper dependency
* show preview when uploading a new media item
* open uploaded media in media entry editor
* map data from uploaded media entry to support cropper
* add crop data to uploaded media item
* remove media library buttons for media entries not created in the media library
* Implement temp images save & add to media picker 3
* Implement ITemporaryImageService
* Remove save logic from MediaPicker3PropertyEditor
* Dont use a TempImageDto
* Add GetByAlias endpoint
* Add additonal xml doc
* Refactor to take array of aliases
* Add FromQuery attribute
* Formatting
* add resource to get media types by alias
* validate file size and file type based on server variables
* Update OpenApi.json
Add media picker three to BackOfficeServerVariables
* rename endpoint to upload media
* Use baseurl Method
* Dont upload in rte folder
* pass params correctly to end point
* queue files before uploading
* handle invalid files
* progress bar design adjustments
* only create data url for images
* disable edit and name buttons when uploading
* fix missing error messages for invalid files
* add temp location to media entry
* Add startNode to TemporaryImageService.cs
* Refactor get by alias
* Rename to GetAllFiltered
* use getAllFiltered method
* remove autoselect option
* fix missing alias when selecting media type
* fix file filter
* don't overwrite invalid entries from dropping new files
* add disallowed files to filter
* remove console.log
* move media uploader logic to reusable function
* fix missing tmp location
* attach media type alias to the mediaEntry
* support readonly mode
* show discard changes when files has been dropped
* add disabled prop to button group
* emit events when upload queue starts and ends
* pass node to media picker property editor
* add service to keep track of all uploads in progress
* add upload in progress to uploadTracker when the queue starts and ends
* disabled buttons when any upload is in progress
* return a subscription to align with eventsService
* Fix up cases where StartNodeId was null
* scope css
* Show filename in dialog for selecting media type
* reuse translation from media library dropzone
* Don't check for only images
* Remove composer
* Add mediaTypeAlias to TemporaryImageService
* Rename ITemporaryImageService to ITemporaryMediaService
* prefix client side only props with $ so we don't send unnecessary data to the server
* use prefixed dataURL in media entry editor
* render icon for non images
* fix auto select media type
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* V10: merge v8 blobstorage file deletion fix (#13415)
* Implement fix from v8 https://github.com/umbraco/Umbraco-CMS/pull/11998
* Clean-up
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* Bump socket.io-parser from 4.0.4 to 4.0.5 in /src/Umbraco.Web.UI.Client
Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-parser/compare/4.0.4...4.0.5)
---
updated-dependencies:
- dependency-name: socket.io-parser
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* update block grid panel name (#13325)
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Bump async from 2.6.3 to 2.6.4 in /src/Umbraco.Web.UI.Client
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)
---
updated-dependencies:
- dependency-name: async
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Bump minimist from 1.2.5 to 1.2.7 in /src/Umbraco.Web.UI.Client
Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.7.
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.7)
---
updated-dependencies:
- dependency-name: minimist
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Bump eventsource from 1.1.0 to 1.1.2 in /src/Umbraco.Web.UI.Client
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.1.0...v1.1.2)
---
updated-dependencies:
- dependency-name: eventsource
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* updated package-lock
* Bump minimatch from 3.0.4 to 3.1.2 in /src/Umbraco.Web.UI.Client
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)
---
updated-dependencies:
- dependency-name: minimatch
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Block Grid Editor sorting directive (#13391)
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Block Grid Editor adjust while sorting (#13442)
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* change let to const
* Revert "change let to const"
This reverts commit fe19f8c5ed.
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Block Grid Editor - make prevalue overlay medium sized (#13443)
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* make prevalue editor overlay medium size
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* block grid editor visual adjustments (#13446)
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* make prevalue editor overlay medium size
* more white borders on UI
* move Catalogue appearance to Advanced
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* Display media trashed state on custom view for image demo block (#13448)
* Block Grid Editor translations and Area size keyboard navigation (#13450)
* use custom prop for calculated width (#13451)
* Bump engine.io and socket.io in /src/Umbraco.Web.UI.Client
Bumps [engine.io](https://github.com/socketio/engine.io) and [socket.io](https://github.com/socketio/socket.io). These dependencies needed to be updated together.
Updates `engine.io` from 6.1.3 to 6.2.1
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/engine.io/compare/6.1.3...6.2.1)
Updates `socket.io` from 4.4.1 to 4.5.3
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/4.4.1...4.5.3)
---
updated-dependencies:
- dependency-name: engine.io
dependency-type: indirect
- dependency-name: socket.io
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
* Cherry pick #13373 to v10/dev
* remove the hidding of catelouge appearance as its not located under advance (#13456)
* Fix preview issue for new (empty) variants (#13455)
* Fix save and preview for new (unsaved) variants
* Rework & simplify
* Rollback improvements (#13452)
* Rollback improvements - hide draft version, allow rolling back to last published version
* UX improvements to rollback, revert some overly complex logic in favor of better UX
* Ensure title update when changing rollback version
* Clean up
* Fix rollback playwright text
* Cherry pick #13404 to v10
* Delete references using custom relation types (#13389)
undefined
* V11: Fix ordering by published in list of content (#13474)
* Update sort statement to use published field for invariant content
* Order by published if invariant
* Add support for tags in block editors and nested content (#13412)
* feat: add tags extension points and remove hardcoded tags handling
* feat: allow tags editor in nested content and block editors
* Update src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Ensure that all automatic relation types are updated (#13470)
* Make sure contexbar fits within the available space (#13467)
* Make sure contexbar fits within the available space
* Ensuring context bar moves above, no matter size of it.
* Fixing apperance of connection-fixers
* do not set layout gaps (#13496)
* V10/feature/fixing flaky acceptance test (#13473)
* Updated Forms dependency for JSON schema to the latest version. (#13505)
* Accessibility - Fix Packages - Modal - Empty buttons (#13114)
* Changing the way we create the temp file for SQLite file (#13439)
* Fix concurrency issue in UmbracoMapper (#13524)
* Add logging to UmbracoMapper
* Add NullLogger to tests
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Allow indexing variant nodes when not all variants are published - fixes issues 11383. (#12669)
* This fixes issues 11383.
The introduction of the new Examine library caused an unintended consequence that it stopped indexing of nodes with language variants on them when one of the variants was unpublished.
These changes align ValueSetValidationStatus.Filtered to indicate that a node is intended as filtered out of a search, not that parts of its contents had been excluded from the result.
This brings it inline with how it is used in Umbraco.Examine.Lucene/UmbracoContentIndex
Unit tests changed to indicate the intent of ValueSetValidationStatus.Filtered
Change to UmbracoViewPage to make model variable nullable (because the solution wouldn't build otherwise on 2022)
* revert to use explicit type instead of var
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* V11/feature/flaky test work (#13513) (#13527)
* Removed all the DeleteAllContent since I delete the doctypes in the before and after each functions which also deletes the content.
* fixed the test so it selects the specific button!
* I was dumb and forgot to remove the out commented code
* Added additional timeout so the pipeline has more time
* Removed language in settings because it was a duplicate of languages / languages
* Fixed the tests so they now check if each individual language that was created actually exists instead of checking for how many languages there are which could be flaky if another test touching the languages failed
* Bumped version
* Added a better locator for the buttons and increased timeouts
Signed-off-by: Zeegaan <nge@umbraco.dk>
Signed-off-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Fix for issue 13017 - BeginUmbracoForm doesn't work with custom umbraco routes (#13103)
* Fix issue with custom Umbraco routes not working after submitting to a Surface controller
* Added comments
* Fixed breaking changes
* Fixed test by using correct new ctor
* Fixed initializtion of UmbracoRouteValueTransformer due to ambiguous ctor
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Rollback project imports
* Remove duplicated lines in translations
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
Co-authored-by: patrickdemooij9 <patrickdemooij98@hotmail.com>
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Søren Kottal <sk@ecreo.dk>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Blake Watt <bkclerke@users.noreply.github.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: niekvanderreest <niekvanderreest@hotmail.com>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Rasmus John Pedersen <mail@rjp.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Jan Skovgaard <1932158+BatJan@users.noreply.github.com>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Jonny Muir <jonnymoo@hotmail.com>
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
Co-authored-by: Justin Neville <67802060+justin-nevitech@users.noreply.github.com>
* Fix issue with custom Umbraco routes not working after submitting to a Surface controller
* Added comments
* Fixed breaking changes
* Fixed test by using correct new ctor
* Fixed initializtion of UmbracoRouteValueTransformer due to ambiguous ctor
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Fix issue with custom Umbraco routes not working after submitting to a Surface controller
* Added comments
* Fixed breaking changes
* Fixed test by using correct new ctor
* Fixed initializtion of UmbracoRouteValueTransformer due to ambiguous ctor
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* Removed all the DeleteAllContent since I delete the doctypes in the before and after each functions which also deletes the content.
* fixed the test so it selects the specific button!
* I was dumb and forgot to remove the out commented code
* Added additional timeout so the pipeline has more time
* Removed language in settings because it was a duplicate of languages / languages
* Fixed the tests so they now check if each individual language that was created actually exists instead of checking for how many languages there are which could be flaky if another test touching the languages failed
* Bumped version
* Added a better locator for the buttons and increased timeouts
* This fixes issues 11383.
The introduction of the new Examine library caused an unintended consequence that it stopped indexing of nodes with language variants on them when one of the variants was unpublished.
These changes align ValueSetValidationStatus.Filtered to indicate that a node is intended as filtered out of a search, not that parts of its contents had been excluded from the result.
This brings it inline with how it is used in Umbraco.Examine.Lucene/UmbracoContentIndex
Unit tests changed to indicate the intent of ValueSetValidationStatus.Filtered
Change to UmbracoViewPage to make model variable nullable (because the solution wouldn't build otherwise on 2022)
* revert to use explicit type instead of var
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* This fixes issues 11383.
The introduction of the new Examine library caused an unintended consequence that it stopped indexing of nodes with language variants on them when one of the variants was unpublished.
These changes align ValueSetValidationStatus.Filtered to indicate that a node is intended as filtered out of a search, not that parts of its contents had been excluded from the result.
This brings it inline with how it is used in Umbraco.Examine.Lucene/UmbracoContentIndex
Unit tests changed to indicate the intent of ValueSetValidationStatus.Filtered
Change to UmbracoViewPage to make model variable nullable (because the solution wouldn't build otherwise on 2022)
* revert to use explicit type instead of var
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* update marketplace url to its final, live url
* Added various Block Grid translations (EN & NL) (#13488)
* Added various translations
* Added another translation
* Change request
* Revert breaking changes adding IContextCache to deploy connectors (#13489)
* Remove breaking changes in Deploy connector interfaces
* Add extension methods for calling the new interface methods in a backwards-compatible way
* Create and pack empty file to add TFM dependency (#13475)
* Change login image to new SVG. (#13493)
* Only add global usings when ImplicitUsings is enabled (#13491)
* bump to rc6
* V11: Allow changing logging directory from configuration (#13485)
* Allow changing logging directory from configuration
* Clean up
* Missing return statement
* Apply suggestions from code review
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Constants-SystemDirectories.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Move login.svg file
* Make sure contexbar fits within the available space (#13467)
* Make sure contexbar fits within the available space
* Ensuring context bar moves above, no matter size of it.
* Fixing apperance of connection-fixers
* Info panes not loading prerequisites (#13486)
* load relations immediately on init and remove call to non-existing function `appTabChange` on destroy
* load relations immediately on init and remove now not-used eventsService
* do not set layout gaps (#13496)
* Nuget updates (#13478)
* Updated nuget packages
* Remove npoco update
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Nuget updates (#13478)
* Updated nuget packages
* Remove npoco update
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
* Bump version to final
* V11/cherry pick flaky test (#13506)
* V10/feature/fixing flaky acceptance test (#13473)
* Bumped version
* Handle external authentication providers (#13487)
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Corné Hoskam <choskam@hotmail.com>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Niels Lyngsø <nsl@umbraco.dk>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
When Umbraco is configured with X-Content-Type-Options nosniff as is recommended (there's even a health check for it), any boot failure would simply show the html source code in the browser instead of properly rendering the html, as the content-type wasn't being set.
* load relations immediately on init and remove call to non-existing function `appTabChange` on destroy
* load relations immediately on init and remove now not-used eventsService
* Make sure contexbar fits within the available space
* Ensuring context bar moves above, no matter size of it.
* Fixing apperance of connection-fixers
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* make prevalue editor overlay medium size
* more white borders on UI
* move Catalogue appearance to Advanced
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* make prevalue editor overlay medium size
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
* Adjust columnSpan to context container, keep start columnSpan as the target for the calculation.
* change let to const
* Revert "change let to const"
This reverts commit fe19f8c5ed.
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* add lang keys for marketplace
* remove old 'repo' page and deprecate related services
* add new view for Umbraco Marketplace
* optimise margin/padding for other tabs
* mark Our Repository constants as obsolete
* improve css path to iframe slightly with more aliases and classnames
* remove style qs
* update URL of Marketplace
* add ng-controller with utitlities for future PostMessage API
* rename marketplace loaded function
* remove iframe postmessage logic for time being
* add handling of dynamic querystring params
* assume url does not change
* Added support for additional parameters for marketplace
* Update src/JsonSchema/AppSettings.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Configuration/Models/MarketplaceSettings.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Configuration/Models/MarketplaceSettings.cs
Make comment more descriptive
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Constants-Marketplace.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* make sure area border is on top of block views.
* rename class to avoid confusion
* change witch UI goes on top on hover
* Description informing all blocks are allowed when none is configured.
* add 'When empty'
* Sort mode
* ability to switch out property actions
* enter and exit sortmode from property actions
* gridsortblock
* rename block class to use sortblock
* Sort mode styling
* remove unused css selector
* fixing style for inline-creat button to appear above and not when hovering contextbar
* work on block grid inline editor
* use uui-button + enable installing demo blocks when its not the first dataType of this kind.
* improvements to inline editing POC
* update title of area config overlay editor
* reset columnSpan if no column span options is defined.
* Inline editing
* remove html comment
* remove code for transfer of stylesheets
* ability to hide label from directive
* inline editing using slots to render the umb-property in light dom
* remove property editor proxies when moving a block to a new area/block/context
* minor adjustments to custom views
* use individual slots for each area.
* Inline editing
* a little smaller rte min-height
* fire Custom focus/blur event for Block Grid Editor to catch for focus imitation
* disable inline editing prevalue field when custom view is set
* Fix scroll parent block into view
* initial work on sorter directive
* remove mediaBlock controller
* initial notes and structure
* further concept work
* remove consol log
* CSS for getting bigger areas
* removal of the forceLeft/forceRight code
* proven concept
* fix grid space detection. vertical/horizontal
* clean up and notes
* move into inner containers as well
* use last available index pr default
* boundary selector, for improved choise of dropping into an area
* hide last inline create button when dragging around
* remove console.log
* removal of forced placement in css
* default config and clean up
* notes
* bring back removed code
* show area ui when in dragging mode
* more specific selector
* drop allowance + clean up
* notes and clean up
* auto scroll
* turn --umb-block-grid--dragging-mode into conditional CSS Custom Property
* auto scroll
* refactoring
* fix condition mistake
* scope.config.resolveVerticalDirection
* wrap up simple setDragImage solution
* bring back vm.notifyVisualUpdate and clean up
* make draggableSelector optional, fallback to element
* implement umb-block-grid-sorter for Area PreValue editor
* remove sortableJS dependency
* remove sortableJs from dependencies
* wups, bring back the comma
* removed sortablejs from package-lock
* finished implementation of sorter for PreValue Block Areas
* fix for FireFox shadowDom issue, contains temprorary code.
* stop auto scroll
* make full thing dragable
* fix firefox issue (applying translateZ)
* comment
* make block fit in context columns
* revert element to where it came from if sync could not succeed + clean up
* ensure block does not push the amount of columns, this occourse when dragging item around.
* take horizontalPlaceAfter into account
* implement horizontalPlaceAfter in Areas Prevalue editor
* clean up dependencies
* Shift related el to first in row or last in row when there is no horizontal room
* clean up and correct calculation
* remove unused attribute
* revert to using el.getBoundingClientRect(), as the config.draggableSelector is not available for the placeholder item.
* bind model via dedicated binding to ensure it stay connected with the source model
* Update src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/umb-block-grid-area-editor.html
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* fix eslint issues
* ensure missingColumnWidth is above 0
* Do not allow dragging something thats not found in the model.
* remove as this is not an error.
* update to Flexbox solution
* as the complex model does not change we can use single way binding
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
* add lang keys for marketplace
* remove old 'repo' page and deprecate related services
* add new view for Umbraco Marketplace
* optimise margin/padding for other tabs
* mark Our Repository constants as obsolete
* improve css path to iframe slightly with more aliases and classnames
* remove style qs
* update URL of Marketplace
* add ng-controller with utitlities for future PostMessage API
* rename marketplace loaded function
* remove iframe postmessage logic for time being
* add handling of dynamic querystring params
* assume url does not change
* Added support for additional parameters for marketplace
* Update src/JsonSchema/AppSettings.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Configuration/Models/MarketplaceSettings.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Configuration/Models/MarketplaceSettings.cs
Make comment more descriptive
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Update src/Umbraco.Core/Constants-Marketplace.cs
Fix styling issue
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* prototype drag and drop upload
* Add upload image endpoint
* Add MediaPickerThreeController.cs
* Revert "Add upload image endpoint"
This reverts commit 4bb5865480.
* Update IIOHelper dependency
* show preview when uploading a new media item
* open uploaded media in media entry editor
* map data from uploaded media entry to support cropper
* add crop data to uploaded media item
* remove media library buttons for media entries not created in the media library
* Implement temp images save & add to media picker 3
* Implement ITemporaryImageService
* Remove save logic from MediaPicker3PropertyEditor
* Dont use a TempImageDto
* Add GetByAlias endpoint
* Add additonal xml doc
* Refactor to take array of aliases
* Add FromQuery attribute
* Formatting
* add resource to get media types by alias
* validate file size and file type based on server variables
* Update OpenApi.json
Add media picker three to BackOfficeServerVariables
* rename endpoint to upload media
* Use baseurl Method
* Dont upload in rte folder
* pass params correctly to end point
* queue files before uploading
* handle invalid files
* progress bar design adjustments
* only create data url for images
* disable edit and name buttons when uploading
* fix missing error messages for invalid files
* add temp location to media entry
* Add startNode to TemporaryImageService.cs
* Refactor get by alias
* Rename to GetAllFiltered
* use getAllFiltered method
* remove autoselect option
* fix missing alias when selecting media type
* fix file filter
* don't overwrite invalid entries from dropping new files
* add disallowed files to filter
* remove console.log
* move media uploader logic to reusable function
* fix missing tmp location
* attach media type alias to the mediaEntry
* support readonly mode
* show discard changes when files has been dropped
* add disabled prop to button group
* emit events when upload queue starts and ends
* pass node to media picker property editor
* add service to keep track of all uploads in progress
* add upload in progress to uploadTracker when the queue starts and ends
* disabled buttons when any upload is in progress
* return a subscription to align with eventsService
* Fix up cases where StartNodeId was null
* scope css
* Show filename in dialog for selecting media type
* reuse translation from media library dropzone
* Don't check for only images
* Remove composer
* Add mediaTypeAlias to TemporaryImageService
* Rename ITemporaryImageService to ITemporaryMediaService
* prefix client side only props with $ so we don't send unnecessary data to the server
* use prefixed dataURL in media entry editor
* render icon for non images
* fix auto select media type
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* remove typo of double PagedViewModel in response
* add providerProperties with custom formatter
* use a more descriptive variable name
* use a more descriptive variable name for property types
* generate new schema
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add new Settings
* Use new settings instead of old ones
* Implement AllowedUploadedFiles value to be copied to AllowedUplayedFileExtensions
* Obsolete old settings
* Rename DisallowedUploadFileExtensions
* Implement same fix for DisallowedUploadFiles
* Use new settings for backoffice server variables
* Update the correct setting
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add new Settings
* Use new settings instead of old ones
* Implement AllowedUploadedFiles value to be copied to AllowedUplayedFileExtensions
* Obsolete old settings
* Rename DisallowedUploadFileExtensions
* Implement same fix for DisallowedUploadFiles
* Use new settings for backoffice server variables
* Update the correct setting
Co-authored-by: Zeegaan <nge@umbraco.dk>
* update json-models-builders
* Add reporting to all before each loops
* Add commitId to env for pipelines
* Test reports correctly
* Bumb testhelper version
* Update playwright-testhelpers version
* Bumb playwright test-helper version
* Bumb playwright-testhelpers version
* Add AgentOs to yaml env
* Bumb playwright-testhelper version
* Try different AgentOS
* Revert "Try different AgentOS"
This reverts commit fc90620aef.
* Revert logo test
* Add missing semicolons
* Update package-lock.json
* Add reports to Blocklist tests
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Set higher z-index for TinyMCE overlays as they were set below that of our property editor overlays
Fixes#13414
* replace !important with more specificity
* Set higher z-index for TinyMCE overlays as they were set below that of our property editor overlays
Fixes#13414
* replace !important with more specificity
* add a custom operationId generator to swagger operations based on the name of the action
* mark 'total' and 'items' as required in all paged models seeing as they should be there always non-nullable
* fix action typo collect -> rebuild to avoid duplicates
* fix operations for server status + version
* add factory to format custom operation ids
* Revert "fix operations for server status + version"
This reverts commit 066a59e1c2.
* Throw exception if no relative path and remove template placeholders completely
* Revert "Throw exception if no relative path and remove template placeholders completely"
This reverts commit 40af0721d6.
* Move source generated regex statements to its own file (#13410)
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* combine 'inline' and 'distraction-free' modes with the quickbars plugin
* remove 'distraction-free' and map to 'inline'
* remove container overrides for 'distraction-free'
* combine 'inline' and 'distraction-free' modes with the quickbars plugin
* remove 'distraction-free' and map to 'inline'
* remove container overrides for 'distraction-free'
@Zeegaan We have a use case where we need to set a value in the AdditionalData dictionary in a NotificationHandler, but as it can be null, it requires reflection to make sure that is not the case. As such, it would be nice if the following change could be implemented to ensure it is never null.
* Allow simultaneous uploads
Upload files in batches for faster uploading
* Fix concurrency issue
Many requests to add files coming at the same time can cause duplicate folders to be created.
In some cases, SQL exceptions can throw, and cause the application to hang.
Add Semaphore to process files on a single thread.
* Replace Semaphore with a Scope Provider
As suggested in the PR comments, replaced Semaphore with ICoreScopeProvider
* Revert "Replace Semaphore with a Scope Provider"
This reverts commit 228e1010c6.
* Add comment to make configurable
Out of scope of the PR, but this should be configurable in appsettings
* Apply PR 13345
Apply PR 13345 to resolve "freezing" issue caused by unhandled errors
* Account for currently processing items
If you drag files into the dropzone whilst other files are uploading then the "total" count is incorrect.
* Created test for block list editor
* Added a couple of test for the block list editor
* Changed parts of builder
* Split the test into two files instead of one
* Updated and added test for blockListEditor
* Updated version
* Fixed so it now targets the correct selector
* Removed unnecessary login in the afterEach
* Fixed up the test so they are now using constants and the correct helpers
* Bumped version
* Updated the package-lock
* Added local function to battle code reuse!
* Updated the path of the image for the test 'can edit a block list editor'
* Placed an expect before the button so it waits to click the button till it's visible
* Yet another fix for the imagePath and a missing "
@Zeegaan We have a use case where we need to set a value in the AdditionalData dictionary in a NotificationHandler, but as it can be null, it requires reflection to make sure that is not the case. As such, it would be nice if the following change could be implemented to ensure it is never null.
* New backoffice: Cleanup management API routes (#13296)
* Rename ModelsBuilderDashboard folder to ModelsBuilder
* Fix modelsbuilder paths and related naming
* Rename analytics route to telemetry
* Fix controller bases - routes and tags
* Fix items route
* Fix more controllerbase routes
* Fix route
* Fix OpenApi file
* Merging DictionaryItem and Dictionary
* Fix TrackedReferences naming
* Update OpenApi file
* Rename Analytics* related types to Telemetry*
* New Backoffice: Return AnalyticsLevelViewModel from Telemetry/ (#13298)
* Return TelemetryLevelViewModel instead of TelemetryLevel
* Fix schema
* Change telemetry/current to telemetry/level
(cherry picked from commit f2b8494c669cbbf04b623753abbf1be211973aa9)
* Add contants for tree and recycle-bin subpaths
(cherry picked from commit 4449f56bc00832ea6d357a3854b454791c80e0e2)
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* OpenId Connect authentication for new management API (#13318)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Routing/UmbracoRequestPaths.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Use Swashbuckle instead of NSwag (#13350)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Replace NSwag with Swashbuckle and clean up unnecessary client secret workaround
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* A little niceness + export new OpenApi.json and fix path in contract unit test
* Redo after merge with v11/dev + filter out unwanted mime types
* Remove CreatedResult and NotFoundObjectResult where possible
* Custom schema IDs - no more "ViewModel" postfix and make generic lists look less clunky too
* A little more explanation for generic schema ID generation
* Force Swashbuckle to use enum string names
* Update OpenApi.json to match new enum string values
* Add clarifying comment about weird looking construct
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update UnPublishedContentPropertyCacheCompressionOptions to also accept Nvarchar
* Update DTOs to use nvarchar(max)
* Add Migration
* Simplify migration a bit
* Refactor column migration for reuse
* Add remaning column migrations
* Support non-nullable column
* Make it idempotent
* Skip SQLite
* Revert "Update UnPublishedContentPropertyCacheCompressionOptions to also accept Nvarchar"
This reverts commit d432d165de.
* Obsolete NTEXT
* Ignore case when checking column type
* Bump version
* Add IContextCache to deploy connectors (#13287)
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Add IContextCache to deploy connectors (#13287)
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Parse lockId as invariant (#13284)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Fix Sqlite database locking issue (#13246)
* Add locking for creating scope
* Lock the repository instead
* Add scope in action instead of locking in service
* Fix up post-merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Bump version to next minor
* Fix for UseExceptionHandler no longer working since v10.3 RC (#13218)
* Fix for UseExceptionHandler no longer working since v10.3 RC
* Update the management api path to match the new one
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* New backoffice: Cleanup management API routes (#13296)
* Rename ModelsBuilderDashboard folder to ModelsBuilder
* Fix modelsbuilder paths and related naming
* Rename analytics route to telemetry
* Fix controller bases - routes and tags
* Fix items route
* Fix more controllerbase routes
* Fix route
* Fix OpenApi file
* Merging DictionaryItem and Dictionary
* Fix TrackedReferences naming
* Update OpenApi file
* Rename Analytics* related types to Telemetry*
* New Backoffice: Return AnalyticsLevelViewModel from Telemetry/ (#13298)
* Return TelemetryLevelViewModel instead of TelemetryLevel
* Fix schema
* Change telemetry/current to telemetry/level
(cherry picked from commit f2b8494c669cbbf04b623753abbf1be211973aa9)
* Add contants for tree and recycle-bin subpaths
(cherry picked from commit 4449f56bc00832ea6d357a3854b454791c80e0e2)
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Updated Smidge, Npoco and MailKit (#13310)
* Updated Smidge, Npoco and MailKit
* Added missing command (after breaking interface in npoco)
* OpenId Connect authentication for new management API (#13318)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Routing/UmbracoRequestPaths.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* V11: Using IFileProvider to access assets added from packages (#13141)
* Creating a FileProviderFactory for getting the package.manifest and grid.editors.config.js files through a file provider
* Collecting the package.manifest-s from different sources
* Searching different sources for grid.editors.config.js
* Using an IFileProvider to collect all tours
* Refactoring IconService.cs
* Typo
* Optimizations when looping through the file system
* Moving WebRootFileProviderFactory to Umbraco.Web.Common proj
* Removes double registering
* pluginLangFileSources includes the localPluginFileSources
* Comments
* Remove linq from foreach
* Change workflow for grid.editors.config.js so we check first physical file, then RCL, then Embedded
* Clean up
* Check if config dir exists
* Discover nested package.manifest files
* Fix IFileInfo.PhysicalPath check
* Revert 712810e1fd as that way files in content root are preferred over those in web root
* Adding comments
* Refactoring
* Remove PhysicalPath check
* Fix registration of WebRootFileProviderFactory
* Use Swashbuckle instead of NSwag (#13350)
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Replace NSwag with Swashbuckle and clean up unnecessary client secret workaround
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* A little niceness + export new OpenApi.json and fix path in contract unit test
* Redo after merge with v11/dev + filter out unwanted mime types
* Remove CreatedResult and NotFoundObjectResult where possible
* Custom schema IDs - no more "ViewModel" postfix and make generic lists look less clunky too
* A little more explanation for generic schema ID generation
* Force Swashbuckle to use enum string names
* Update OpenApi.json to match new enum string values
* Add clarifying comment about weird looking construct
* add workflow to schema (#13349)
* add workflow to schema
* add licenses to CMSDefinition - intentionally only adding to schema, not registered as options
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
Co-authored-by: Ronald Barendse <ronald@barend.se>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Justin Neville <67802060+justin-nevitech@users.noreply.github.com>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Nathan Woulfe <nathan@nathanw.com.au>
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Replace NSwag with Swashbuckle and clean up unnecessary client secret workaround
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* A little niceness + export new OpenApi.json and fix path in contract unit test
* Redo after merge with v11/dev + filter out unwanted mime types
* Remove CreatedResult and NotFoundObjectResult where possible
* Custom schema IDs - no more "ViewModel" postfix and make generic lists look less clunky too
* A little more explanation for generic schema ID generation
* Force Swashbuckle to use enum string names
* Update OpenApi.json to match new enum string values
* Add clarifying comment about weird looking construct
* Creating a FileProviderFactory for getting the package.manifest and grid.editors.config.js files through a file provider
* Collecting the package.manifest-s from different sources
* Searching different sources for grid.editors.config.js
* Using an IFileProvider to collect all tours
* Refactoring IconService.cs
* Typo
* Optimizations when looping through the file system
* Moving WebRootFileProviderFactory to Umbraco.Web.Common proj
* Removes double registering
* pluginLangFileSources includes the localPluginFileSources
* Comments
* Remove linq from foreach
* Change workflow for grid.editors.config.js so we check first physical file, then RCL, then Embedded
* Clean up
* Check if config dir exists
* Discover nested package.manifest files
* Fix IFileInfo.PhysicalPath check
* Revert 712810e1fd as that way files in content root are preferred over those in web root
* Adding comments
* Refactoring
* Remove PhysicalPath check
* Fix registration of WebRootFileProviderFactory
* Creating a FileProviderFactory for getting the package.manifest and grid.editors.config.js files through a file provider
* Collecting the package.manifest-s from different sources
* Searching different sources for grid.editors.config.js
* Using an IFileProvider to collect all tours
* Refactoring IconService.cs
* Typo
* Optimizations when looping through the file system
* Moving WebRootFileProviderFactory to Umbraco.Web.Common proj
* Removes double registering
* pluginLangFileSources includes the localPluginFileSources
* Comments
* Remove linq from foreach
* Change workflow for grid.editors.config.js so we check first physical file, then RCL, then Embedded
* Clean up
* Check if config dir exists
* Discover nested package.manifest files
* Fix IFileInfo.PhysicalPath check
* Revert 712810e1fd as that way files in content root are preferred over those in web root
* Adding comments
* Refactoring
* Remove PhysicalPath check
* Fix registration of WebRootFileProviderFactory
* First attempt at OpenIddict
* Making headway and more TODOs
* Redo current policies for multiple schemas + clean up auth controller
* Fix bad merge
* Clean up some more test code
* Fix spacing
* Include AddAuthentication() in OpenIddict addition
* A little more clean-up
* Move application creation to its own implementation + prepare for middleware to handle valid callback URL
* Enable refresh token flow
* Fix bad merge from v11/dev
* Support auth for Swagger and Postman in non-production environments + use default login screen for back-office logins
* Add workaround to client side login handling so the OAuth return URL is not corrupted before redirection
* Add temporary configuration handling for new backoffice
* Restructure the code somewhat, move singular responsibility from management API project
* Add recurring task for cleaning up old tokens in the DB
* Fix bad merge + make auth controller align with the new management API structure
* Explicitly handle the new management API path as a backoffice path (NOTE: this is potentially behaviorally breaking!)
* Redo handle the new management API requests as backoffice requests, this time in a non-breaking way
* Add/update TODOs
* Revert duplication of current auth policies for OpenIddict (as it breaks everything for V11 without the new management APIs) and introduce a dedicated PoC policy setup for OpenIddict.
* Fix failing unit tests
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Cms.ManagementApi/Security/BackOfficeApplicationManager.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Update src/Umbraco.Core/Routing/UmbracoRequestPaths.cs
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
* Fix for UseExceptionHandler no longer working since v10.3 RC
* Update the management api path to match the new one
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Fix for UseExceptionHandler no longer working since v10.3 RC
* Update the management api path to match the new one
Co-authored-by: Nikolaj <nikolajlauridsen@protonmail.ch>
* Add locking for creating scope
* Lock the repository instead
* Add scope in action instead of locking in service
* Fix up post-merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Add IContextCache and implementations
* Update connector interfaces to use IContextCache
* Minor cleanup
* Move DeployContextCache prefix to constant
* Move default implementations to obsolete methods
* Remove DeployContextCache and DictionaryCache
Co-authored-by: Andy Butland <abutland73@gmail.com>
* Constant replacing string
SaveNode const created to replace string for saveNew action
* Hardcoded string for content replaced for const
* Const created for default alias
* Refactoring dupe constants
* Using constanthelper to refactor further
* Dupe consts for strings amalgamated
Cleaning up the few strings I have missed and duplicate constants with different name
Co-authored-by: emma burstow <emaburst@gmail.com>
* Additional info for running individual tests
* Ignore playwright test results from git
* Update README.md
These changes belong in a different PR #13274
* Change management api base path to /umbraco/management/api/
* Update OpenApi schema
* Fixing some more paths
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* Ensure Name and Children can never return null.
* Name should be empty not null
* Ensure Name and Children type queries never return null
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
* Fix broken selectable state for list view items (#13148)
* Add sync rendering extensions for block grid and async ones for block list (#13168)
* Re-add IsPackable to Umbraco.Tests.Integration
* Fix for potential race condition in packages search (#13153)
* search on input allowing to wait for copy/paste etc
* invoke resourcePromise() with correct parameters
* return the xhrStatus allowing the caller to check if the request was aborted
* fix: send in canceler.promise to allow the timeout to work
* catch any errors and ignore aborts if they happen
* move the logic to handle cancellations outside Angulars $scope.$apply
* remove file accidentally committed
* Fix for potential race condition in packages search (#13153)
* search on input allowing to wait for copy/paste etc
* invoke resourcePromise() with correct parameters
* return the xhrStatus allowing the caller to check if the request was aborted
* fix: send in canceler.promise to allow the timeout to work
* catch any errors and ignore aborts if they happen
* move the logic to handle cancellations outside Angulars $scope.$apply
* remove file accidentally committed
(cherry picked from commit 4a412bb432)
* V10: Fix request accessor memory leak (#13152)
* Dispose OnChange event registration when disposing the notification handler
* Ensure that the ApplicationUrl is only initialized once
Since notifications handlers are transient,_hasAppUrl and _isInit defaults to false on every request causing it to always be called.
* Make notification handler and EnsureApplicationUrl internal
* Add missing ForceLeft and ForceRight (#13190)
* V10: Fix request accessor memory leak (#13152)
* Dispose OnChange event registration when disposing the notification handler
* Ensure that the ApplicationUrl is only initialized once
Since notifications handlers are transient,_hasAppUrl and _isInit defaults to false on every request causing it to always be called.
* Make notification handler and EnsureApplicationUrl internal
* Add missing ForceLeft and ForceRight (#13190)
* Pass the node property to umb-property & umb-property-editor (#13151)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* V10: 13099 fix validation error (#13170)
* Add validation error message to Viewpicker
* Add help-inline class to make validation-text red
Co-authored-by: Zeegaan <nge@umbraco.dk>
* move clear:both; to the flexbox example (#13194)
* remove pointer-events from Image, to make drag n' drop work on firefox. (#13193)
* area permission min-max inputs width increase (#13195)
* Fix tags with CSV storage type (#13188)
* Fixing null check as default(NRT) is null => default(configuration?.Delimiter) is also null and we were counting on it being the same as default(char)
* Adding tests to check cases with multiple tags (or tag made of comma separated values)
* Fix tags with CSV storage type (#13188)
* Fixing null check as default(NRT) is null => default(configuration?.Delimiter) is also null and we were counting on it being the same as default(char)
* Adding tests to check cases with multiple tags (or tag made of comma separated values)
* Add documentation for default block grid partial views in the rendering extension methods (#13184)
* Add data-element to umb property so we can find it (#13199)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Add data-element to umb property so we can find it (#13199)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* V10/bugfix/create simple package test (#13162)
* Fixed assert to hopefully find the package each time so it isnt flaky anymore
* Updated so it retries 5 times instead of 2
* Dont submit html-report
* Dont have output defined in npm run
* Copy over playwright trace.zip files before publishing
* Updated assert so it looks after the package in the table
* updated so we get the first fail as the trace file
* Bumped version for testhelpers
* Updated so the test checks if the package actually exists. Added a wait that checks if the created packages button is visible
* Updated package lock
* Fixed so it now calls the correct testhelper
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Merge BjarneF fix into 10.3 (#13220)
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
* make Area fit within block row (#13221)
* 10.3.0-RC: Change grid area input to number + change generic label (#13203)
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
* move below center, to make room (#13222)
* highlight areas in dragging-mode for modern browsers (#13224)
* Collect new .xml language files from different sources (#13212)
* Collecting new language files from different sources
* Apply suggestions from review
* Adding TODO for merging the language files locations to one when packages are not concerned
* Collect new .xml language files from different sources (#13212)
* Collecting new language files from different sources
* Apply suggestions from review
* Adding TODO for merging the language files locations to one when packages are not concerned
* Resync editors if content model changed (#13230)
* Disable BlockGridEditor (#13229)
* Disable BlockGridEditor
* Fix typeloader test
* Update src/Umbraco.Core/Models/Blocks/BlockGridItem.cs
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* V10.4: Re-enable block grid editor (#13231)
* Revert "Disable BlockGridEditor (#13229)"
This reverts commit 4e9aa8dac2.
* Re-do xml comments fix
* Fix nullable reference error
* Fix acceptance test package.json and package-lock.json
* Re-add wait-on
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Niels Lyngsø <niels.lyngso@gmail.com>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Matt Darby <matt@darby.digital>
* Add null check
* Fix for potential race condition in packages search (#13153)
* search on input allowing to wait for copy/paste etc
* invoke resourcePromise() with correct parameters
* return the xhrStatus allowing the caller to check if the request was aborted
* fix: send in canceler.promise to allow the timeout to work
* catch any errors and ignore aborts if they happen
* move the logic to handle cancellations outside Angulars $scope.$apply
* remove file accidentally committed
* V10: Fix request accessor memory leak (#13152)
* Dispose OnChange event registration when disposing the notification handler
* Ensure that the ApplicationUrl is only initialized once
Since notifications handlers are transient,_hasAppUrl and _isInit defaults to false on every request causing it to always be called.
* Make notification handler and EnsureApplicationUrl internal
* Add missing ForceLeft and ForceRight (#13190)
* Fix tags with CSV storage type (#13188)
* Fixing null check as default(NRT) is null => default(configuration?.Delimiter) is also null and we were counting on it being the same as default(char)
* Adding tests to check cases with multiple tags (or tag made of comma separated values)
* Add data-element to umb property so we can find it (#13199)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* V10/bugfix/create simple package test (#13162)
* Fixed assert to hopefully find the package each time so it isnt flaky anymore
* Updated so it retries 5 times instead of 2
* Dont submit html-report
* Dont have output defined in npm run
* Copy over playwright trace.zip files before publishing
* Updated assert so it looks after the package in the table
* updated so we get the first fail as the trace file
* Bumped version for testhelpers
* Updated so the test checks if the package actually exists. Added a wait that checks if the created packages button is visible
* Updated package lock
* Fixed so it now calls the correct testhelper
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Update src/Umbraco.Core/PropertyEditors/DataValueEditor.cs
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
Co-authored-by: Elitsa Marinovska <elm@umbraco.dk>
* Make Examine API more REST-ish
* Undo bad renaming
* Move search endpoint under "searchers" route
* Update schema to match new API definition
* Update OpenAPI schema after merge
* Remove "examine" prefixes and change API route from "examine" to "search"
* Update OpenAPI json schema
* Fix for potential race condition in packages search (#13153)
* search on input allowing to wait for copy/paste etc
* invoke resourcePromise() with correct parameters
* return the xhrStatus allowing the caller to check if the request was aborted
* fix: send in canceler.promise to allow the timeout to work
* catch any errors and ignore aborts if they happen
* move the logic to handle cancellations outside Angulars $scope.$apply
* remove file accidentally committed
* V10: Fix request accessor memory leak (#13152)
* Dispose OnChange event registration when disposing the notification handler
* Ensure that the ApplicationUrl is only initialized once
Since notifications handlers are transient,_hasAppUrl and _isInit defaults to false on every request causing it to always be called.
* Make notification handler and EnsureApplicationUrl internal
* Add missing ForceLeft and ForceRight (#13190)
* Fix tags with CSV storage type (#13188)
* Fixing null check as default(NRT) is null => default(configuration?.Delimiter) is also null and we were counting on it being the same as default(char)
* Adding tests to check cases with multiple tags (or tag made of comma separated values)
* Add data-element to umb property so we can find it (#13199)
Co-authored-by: Zeegaan <nge@umbraco.dk>
* V10/bugfix/create simple package test (#13162)
* Fixed assert to hopefully find the package each time so it isnt flaky anymore
* Updated so it retries 5 times instead of 2
* Dont submit html-report
* Dont have output defined in npm run
* Copy over playwright trace.zip files before publishing
* Updated assert so it looks after the package in the table
* updated so we get the first fail as the trace file
* Bumped version for testhelpers
* Updated so the test checks if the package actually exists. Added a wait that checks if the created packages button is visible
* Updated package lock
* Fixed so it now calls the correct testhelper
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Andreas Zerbst <73799582+andr317c@users.noreply.github.com>
* Fix for potential race condition in packages search (#13153)
* search on input allowing to wait for copy/paste etc
* invoke resourcePromise() with correct parameters
* return the xhrStatus allowing the caller to check if the request was aborted
* fix: send in canceler.promise to allow the timeout to work
* catch any errors and ignore aborts if they happen
* move the logic to handle cancellations outside Angulars $scope.$apply
* remove file accidentally committed
* V10: Fix request accessor memory leak (#13152)
* Dispose OnChange event registration when disposing the notification handler
* Ensure that the ApplicationUrl is only initialized once
Since notifications handlers are transient,_hasAppUrl and _isInit defaults to false on every request causing it to always be called.
* Make notification handler and EnsureApplicationUrl internal
* Add missing ForceLeft and ForceRight (#13190)
* Fix tags with CSV storage type (#13188)
* Fixing null check as default(NRT) is null => default(configuration?.Delimiter) is also null and we were counting on it being the same as default(char)
* Adding tests to check cases with multiple tags (or tag made of comma separated values)
* Add data-element to umb property so we can find it (#13199)
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Elitsa Marinovska <21998037+elit0451@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* POC of a solution that works
* Add razor reference manager
* Ensure the compilation options are correct
* Move InMemory classes to its own namespace
These are all internal, so it should be fine.
* Throw proper exceptions when compilation fails
* Add CheckSumValidator
* Clear the ViewCompiler cache when models changed
This means we no longer need the RefreshingRazorViewEngine \o/
* Remove unused constructor injection
* Make UmbracoAssemblyLoadContext non internal
* Add WIP
* Clear the RazorViewEngine cache when generating new models
This uses reflection, which isn't super nice, however, the alternative is to clone'n'own the entire RazorViewEngine, which is arguably worse
* Fix circular dependency
* Remove ModelsChanged event
This is no longer necessary
* Fix precompiled views path
We need to normalize these paths to ensure they matches with the keys in _precompiledViews
* Clean
* Fix content tests
* Add logging
* Update the comment in UmbracoBuilderDependencyInjectionExtensions to reflect changes
* Remove RefreshingRazorViewEngine as its no longer needed
* Remove unused ViewEngine hack from DI
* Fix langversion
This is required since dotnet 7 is still in preview
* Add modelsbuilder tests
* Add more tests
* fixed comment
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
* New backoffice/add system text json configuration attribute (#12998)
* Add SystemTextJsonConfigurationAttribute
* Fix up formatting
* Rename classes for clearer purpose
Co-authored-by: Zeegaan <nge@umbraco.dk>
* UmbracoPath should no longer be configurable (#13032)
* UmbracoPath should no longer be configurable
* Remove UmbracoPath configuration from all tests
* Only contain style instead of full layout (#13033)
* Only contain style instead of full layout (#13033)
* Fix CodeQL duplicate "permissions" node and reformat
* add an extra check to ensure the pips exist before adding a class to them
* improve pip classList add/remove with no intermediary variable
* Only contain style instead of full layout (#13033)
* Ensure consistent margin on headings in tree root (#12992)
* Ensure consistent margin on headings in tree root (#12992)
(cherry picked from commit 88bfef9e0d)
* Bump version to 10.2.1
* Translate "User permissions for languages" feature to dutch (#12971)
* Translate 'sectionsHelp' to Dutch
* Translate 'selectLanguages' to Dutch
* Transkate 'allowAccessToAllLanguages' to Dutch
* Translate "User permissions for languages" feature to español (#12975)
* Translate 'selectLanguages' to Español
* Translate 'languagesHelp' to español
* Translate 'allowAccessToAllLanguages' to spanish
* Updated project references for Forms and Deploy in the JsonSchema project. (#13047)
* Updated project references for Forms and Deploy in the JsonSchema project. (#13047)
* UmbracoPath has been removed from the official schema store, remove temporary workaround from our schema generator as well (#13043)
* add an extra check to ensure the pips exist before adding a class to them
* improve pip classList add/remove with no intermediary variable
* pass in parameters needed to member service (#13020)
* Missing methods from IMemberService (#13022)
* Add back methods to interface
* Add default implementations to avoid breaking changes
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New endpoint for web profiling dashboard (#13038)
* Endpoint for web profiling dashboard
* Add profiling API contract
* New Backoffice: Published cache controller (#13034)
* Add published cache controller (endpoints for the Published Status dashboard)
* Update OpenAPI contract for published cache endpoints
* Fix OpenApi spec
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Bug fix for datepicker with offset time (#12847)
* https://github.com/umbraco/Umbraco-CMS/issues/12844
* remove "X" from ng-attr
Doing the test I killed the ng-if attr. But forgot it was there doing the commit
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
* Make sure swagger tags and operations are sorted alphabetically (#13055)
* Add spellcheck false to password inputs (#13059)
* Add null check for variants in Grid Layout (#13060)
This fixes a regression from 10.2.0 where the `variants` property was removed.
* Add null check for variants in Grid Layout (#13060)
This fixes a regression from 10.2.0 where the `variants` property was removed.
* Fixes#12972 for validating legacy member passwords (#12973)
* Fixes#12972 for validating legacy member passwords
* Removed unused variable
* removed unused variable
* Fix issue toggling boolean between true/false after Save without refreshing
* New backoffice: examine management controller (#12981)
* Add ExamineManagementControllerBase
* Add ExamineIndexModelFactory
* Add IndexesExamineManagementController
* Add proper attributes
* Implement ExamineIndexViewModel.cs
* formatting
* Add comment about it working in .NET 7
* Add SearchersExamineManagementController.cs
* Update comments about why it might throw errors
* Add SearchResultViewModel
* Add SearchExamineManagementController
* Add ExamineSearcherValidationService
* Rename ExamineSearcherValidationService.cs to ExamineSearcherFinderService.cs
* Rename interface aswell
* Add SearchExamineManagementController
* Refactor ExamineSearcherFinderService
* Add HasIndexRebuiltExamineManagementController.cs
* Fix up formatting
* Async actions
* Add RebuildIndexExamineManagementController.cs
* Rename IExamineIndexModelFactory to IExamineIndexViewModelFactory
* Refactor HasIndexRebuilt endpoint to Index endpoint
* Remove unused usings
* Fix up DetailsExplanation
* Create dedicated SearchersViewModel
* Rename action
* Rename RebuildIndex to Rebuild
* Dont have changes in ExamineIndexModel
* Make values strongly typed instead of generic lists of strings
* Rename to non-plural
* Rename to non-plural
* Rename controller
* Introduce ITemporaryIndexingService
* Introduce ITemporaryIndexingService
* Add SearcherName to view model
* Move to new ExamineManagementControllerBase.cs
* Refactor ExamineManagerService
* Use init instead of setters
* Make properties explicitly on models
* Add DI
* Apply suggestions from code review
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Rename to IndexExamineManagementController
* Return ViewModel instead of exception
* Make view models non-nullable
* Add examine management extension point
* Rename to IndexingRebuilderService
* Move rebuild logic to service
* Fix up usages in IIndexingRebuilderService
* Fix up DI
* Fix OpenApi contract
* Implement CanRebuild on IIndexingRebuilderService.cs
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
* Update build script
* Add BuildProjectReferences=false to dotnet pack
* Internalize Umbraco.Cms.ManagementApi references
* Make Searchers endpoint return ActionResult (#13068)
* New backoffice - trees design (#12963)
* Refactor: Add default versioned back office route attribute
* Tree controller bases and first draft implementations for document, media and doctype
* Move tree item view models to appropriate location
* Fix missing parent
* Refactor user entity access for testability
* A bit of clean-up + handle user start nodes for items endpoint
* Implement foldersOnly for folder tree
* Items endpoint for document type tree
* Strongly typed action results
* Content + media recycle bin
* Correct return type for swagger
* Member type tree
* Rename user start node handling to make a little more sense
* Revert to faked admin start nodes in document tree
* Media type tree
* Data type tree
* Relation type tree
* Remove unused dependency from member type tree
* Correct documentation for member type tree endpoint response types
* Use icon constants
* Add templates tree
* Member group tree
* Document blueprint tree
* Partial views, scripts and stylesheets trees
* Static files tree
* Clarify "folders only" state
* Comments and improved readability
* Rename TreeControllerBase and TreeItemViewModel
* Move recycle bin controller base to its own namespace
* Moved tree base controllers to their own namespace
* Common base class for tree view models
* Remove ProblemDetails response type declaration from all actions
* Add OpenApiTag
* Various review comments
* Dictionary item tree
* Renamed all tree controllers to follow action/feature naming convention
* Handle client culture state for document tree
* Support "ignore user start nodes" for content and media + refactor how tree states work to make things more explicit
* Fix or postpone a few TODOs
* Make entity service able to paginate trashed children
* Handle sorting explicitly
* Re-apply VersionedApiBackOfficeRoute to install and upgrade controllers after merge
* Use PagedViewModel instead of PagedResult for all trees
* Explain the usage of UmbracoObjectTypes.Unknown
* Introduce and apply GetMany pattern for dictionary items
* Add a note about relation type caching
* Fix broken test build + add unit tests for new localization service methods
* Use new management API controller base
* Entity repository should build document entities for document blueprints when getting paged entities (same as it does when getting specific entities)
* Use Media type for Media recycle bin
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Move shared relation service to concrete implementations
* Use inclusive language
* Add 401 response type documentation to applicable trees
* Refactor entity load for folder tree controller base + ensure that folders are only included in the first result page
* Add (in-memory) pagination to dictionary tree
* Make file system controller honor paging parameters
* Support pagination in relation type tree
* Clarify method name a bit for detecting tree root path requests
* Update Open API schema to match new trees
* Move from page number and page size to skip/take (with temporary workaround for lack of property skip/take pagination in current DB implementation)
* Update OpenAPI schema to match skip/take
* Update OpenAPI schema
* Don't return paginated view models from "items" endpoints
* Update OpenApi schema
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Use pattern matching to check if items is not `JArray`
* Bump Smidge up to v4.1.1
* Removing X-XSS-Protection healthcheck
* Redirect to a return URL if one is present on the querystring when logging into the back office
* Fix issue 13023 - Cannot read properties of undefined (reading 'allowedActions')
* Implement playwright acceptance tests instead of cypress (#13069)
* fix up dependencies in package.json
* Change configs to playwright
* update types
* remove cypress
* add playwright
* Fix up imports
* Move up test files
* Fix up scripts
* Update user import
* Remove allowEditInvariantFromNonDefault=True.spec.ts
* Update docker container
* Run playwright on pipelines
* Install playwright
* change urls
* change to run playwright
* Update reporter
* create .env file when installing
* update pipelines
* Remove @in yml
* Update Yaml script to use New-Item
* Pipe object to Value
* Update yaml to use "" not {}
* Update localhost to proper port
* Push package-lock.json
* include dotenv in package.json
* Add back umbraco.config.ts
* Dont change launchSettings.json
* Fix up pipelines
* Change working directory
* Add logging
* Actually name the file
* Remove .env from path
* Add working directory
* Add working directory to script
* check env content
* Update more working dir
* Try making newline in YAML
* add quotes
* Try multiline infront of script
* Move top statement
* use https
* Update to localhost 44331
* ignore https in config
* Change linux to https
* add timeouts for tests
* Fix up url for linux
* Update docker to use port 44331 -> 5000
* increase timeout
* Update yaml
* Remove Cypress references and fix URL/port mapping
* Update umbraco-linux.docker
* Generate ASP.NET HTTPS development certificate
* Enable HTTPS development certificate in Docker
* Dont run failing tests
* Update HTTPS development certificate generation
* Copy nuget.config to correct location in Docker file
* do not run flaky test
* update outputdir
* Remove flaky tests
* Update to dot reporter
* Update to json-models-builders package
* Check if results folder exists
* Remove logging
* Use bash to find folder
* Dont use junit to report
* only publish if folder exists
* Add 5 retries for CI
* search correct folder
* Remove unused json file
* Use line reporter
* Remove umbraco.config.ts
* Remove more flaky test
* Add waits so we dont bombard SQLite
* Add page as parameter
* add page as parameter
* Remove flaky macro test
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Ronald Barendse <ronald@barend.se>
* Fix comment of view property in `ConfigurationFieldAttribute` (#13077)
* Fix comment of view property in `ConfigurationFieldAttribute`
* Update description of key property as well
* Use char instead of string for DetectJson (#13019)
* Use char instead of string for DetectJson
* Use faster method
* Change DetectIsJon method
* Update acceptance test readme & scripts (#13078)
* Update readme to reflect the change to playwright
* Update test scripts
* update README
* update pipelines to run new script
* update package.json scripts
* dont include demo test in package.json
* Add creation of blueprint test
* Implement create test script
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Refactor event handler away from keyup to ng-change
* Don't use legacy icon for action delete
* Added nullability attribute to IsNullOrWhitespace
* Fixes umbraco/Umbraco-CMS.Accessibility.Issues #63 and #61
* Revert "Removing X-XSS-Protection healthcheck" (#13096)
This reverts commit 696475ebf2.
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: New Api controllers (#12983)
* Create migrate Language controller to Umbraco.Cms:ManagementApi
* Add proper language mapping
* Update mapping to handle if language name is null
* Uncomment code
* Add new language view model
* Add LanguageViewModelMapping
* Add mapper registration
* Fix up AddMappers extension method
* Implement mapping IEnumerable of languages
* Change action signatures to ViewModel instead of model
* Seperate logic from controller into service
* Move LanguageService.cs
* Register service
* Fix up mapping
* Add null check to mapping instead of controller
* Map to ILanguage instead of implementation
* Fix up null check
* Implement ProblemDetailsBuilder.cs
* Rename duplicate method
* Use builder in actions
* Implement new Paged models
* Create language controller base
* Use pagedModel for GetAllLanguages
* Create GetAllLanguagesPaged method
* Split language controller into single APIs
* Fix up controllers with API versions
* Map Total property
* Fix up route and naming for GetLanguageController.cs
* Fix up naming for language controllers
* New folder structure
* Add culture controllers
* Map CultureInfos to paged CultureViewModel
* Remove wierd include in csproj
* Refactor controller to return pagedViewModel instead of dictionary
* Fix up mapping to map single and enumerable
* Register mapping
* Add apiversion to controller
* Add inheritdoc
* Create DictionaryControllerBase.cs
* Add delete controller
* Only use HttpDelete for deletes
* Check also if language exists in service
* Split Save action into Create & Update actions
* Update Http attributes on Create and update controllers
* Proper routing for delete controller
* Add api version
* Make action async
* Implement CreateDictionaryController
* Create DictionaryViewModel.cs
* Use viewmodel instead of values
* Create get by int DictionaryController
* Add view models
* Rename controller
* Rename DictionaryViewModel to DictionaryItemViewModel
* use created instead of ID
* Apply DataContract/Datamember to view model
* change to guid instead of Guid
* Use proper responses instead of return models when creating/updating
* Implement new IDictionaryService
* Implement new MoveController
* Use new service in mapper
* Remove unused method
* Add DictionaryViewModelMapDefinition
* Create MoveOrCopyViewModel
* Proper Http action
* Create UpdateDictionary controller
* Map IDictionaryItem to DictionaryViewModel
* Add JsonPatching
* Add UpdateDictionaryController.cs
* Map DictionaryTranslationsDisplays properly
* ParentId should be nullable
* Add new DictionaryTranslationViewModel.cs
* Remove translationViewModel
* Add Id and Key to DictionaryTranslationDisplay.cs
* Implement IDictionaryFactory.cs
* Create DictionaryViewModels and do not use IEntity
* Map to new view models instead of displays
* Register the factiories in the service container
* Remove newtonsoft
* Add serializing to and from PatchDocs
* Use JsonPatchViewModel instead of object type
* Add JsonPatch.Net to csproj
* Implement JsonPatchService.cs
* Register JsonPatchService
* Make model non-nullable
* Update controllers to use new attributes
* Rename MoveViewModel.cs
* Remove NameIsDirty as that is legacy from how we used to handle updating
* Add GetAllDictionaryController
* Add todo to DictionaryControllerBase
* Add ExportDictionaryController
* Add ImportDictionaryController
* Remove unused umbraco mapper
* Add upload dictionary controller
* Create Dictionary import view models
* Update UploadDictionaryController with view models
* Remove unused using
* Implement pagedviewmodel for GetAllDictionaryController.cs
* Add dictionary overview viewmodels
* Add mapping for DictionaryOverViewModel
* Update Dictionary controller to use new viewmodel
* Fix up attributes for UploadDictionaryController
* Make actions async
* Make controller bases abstract
* Fix after merge
* New backoffice: Analytics controller (#12957)
* Add AnalyticsControllerBase
* Add AnalyticsViewModel
* Add GetAnalyticsController
* Update ViewModel to use System.Text.Json
* Add SetAnalyticsController
* Add AnalyticsLevelViewModel
* Add GetAllAnalyticsController
* Add viewmodel factory
* Register factory for DI
* Use factory for creation of ViewModel
* Fix up AnalyticsLevelViewModel.cs
* Use analyticsLevelViewModel
* Add Enum validation to controller
* Add OpenApi attributes
* Add routing to GetAllAnalyticsController
* Rename IPagedViewModelFactory
* use new renamed PagedViewModelFactory
* Make actions async
* Make controller base abstract
* Fix up after merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Help controller (#12958)
* Add HelpControllerBase
* Add HelpPageViewModel
* Add GetHelpController
* Add viewmodel factory
* Register factory for DI
* Use PagedViewModelFactory for controller
* Update baseurl to be nullable
* Rename IPagedViewModelFactory
* Use new renamed IPagedViewModelFactory
* Dont use httpclient as field
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Relation controller (#12961)
* Add relation controller base
* Add commen about auth
* Add GetRelationController
* Use mapping to viewmodel
* Add RelationViewModel
* Add RelationViewModelsMapDefinition.cs
* Add viewmodel factory
* Register factory for DI
* Rename IPagedViewModelFactory
* Add RelationViewModelFactory
* Remove unused service
* Add GetByChildRelationController
* Add relationViewModelFactory to DI
* Add MappingBuilderExtensions
* Add relationViewModelsMapDefinition to DI
* Use PagedViewModel for child relations
* Add CreateMultiple
* Update GetRelationController to use factory instead of direct mapping
* Update GetByChildRelationController to use relationViewModelFactory
* Fix up after merge
Co-authored-by: Zeegaan <nge@umbraco.dk>
* New backoffice: Tracked references controller (#12966)
* Add TrackedReferencesControllerBase.cs
* Add GetTrackedReferencesController
* Add relation model
* Add ITrackedReferencesRepository.cs
* Rename relation to RelationModel
* Add RelationMapDefinition.cs
* Add TrackedReferencesSkipTakeRepository
* Rename RelationModelMapDefinition
* Add new services to DI
* Rename RelationModel to RelationItemModel
* Implement TrackedReferencesSkipTakeService
* Formatting
* Add RelationItemViewModel.cs
* Add mapdefition
* Update TrackedReferencesController to use new PagedViewModel
* Add service to DI
* imlement proper routing
* Add async to GetTrackedReferencesController.cs
* Rename action to get
* Add DescendantTrackedReferencesController
* make filterMustBeIsDependency nullable
* Use count instead of capacity
* Rename controller
* Add MultipleTrackedReferencesController.cs
* Refactor TrackedReferencesService to not return pagedViewModel
* Remove TODO untill consensus on convention
* Formatting
* Delete old duplicate controller
* Fix up naming
* Fix up naming and fixed todo
* Fix up mapdefinition registrations
* Rename controllers
* Fix naming
* Fix nullable tree
* Fix up relation controller & action names
* Fix naming
* Fix up multiple to not be post
* Apply suggestions from code review
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Remove [ApiVersion] from each individual controller and added to base instead
* Added missing semi-colon
* Update all "non-async async" endpoints to return Task.FromResult
* Fixed up LanguageViewModels namespace
* Return proper status code
* Update xml documentation
* Rename GetAllCultureController
* Change return type attribute to proper Model
* Change return type attribute to correct model
* Add clarifying comment
* Change return type attribute to proper model
* Rename ById to by key
* Update DictionaryOverviewViewModel to use Key instead of ID
* Implement factory method to create viewModel instead of using services in mapper
* Fix up DictionaryItemViewModel to use Parent GUID instead of ID
* Update return type attribute to correct model
* Update key to actual GUID instead of string
* Update route to not include "delete"
* Remove redundant IActionResult specification
* Update responseType attribute to correct models
* Update OpenApiTag for DictionaryControllerBase
* Update ResponseType attribute to correct models
* update variable name to not be "XD"
* Update ResponseType attribute to correct model
* Update route to not include "update" as it is redundant
* Update produces responsetype attributes to correct models
* Use IJsonSerializer abstraction instead of JsonConvert directly
* Remove unused field
* Change ResponseType attribute to correct model
* change TrackedReferencesSkipTakeService to return pagedModels directly
* Remove duplicate DI
* change to better variable names
* Move RelationItemModel to core
* Remove empty folder
* Remove ITrackedReferencesSkipTakeService and add it to TrackedReferencesService
* remove TrackedReferencesSkipTakeRepository and add to TrackedReferencesRepository.cs
* Fix up TrackedReferencesService to not use SkipTake repository
* Remove AddRepositories from ManagementApiComposer
* Transition to ManagementApiBaseController
* Fixes ResponseType attribute to correct model
* Add loading files to service instead of having logic in controller
* Add todo comment
* Fix up routing for delete language
* Use problem details builder
* Add SystemTextJsonSerializer
* Add SystemTextJsonSerializer
* Remove unused usings
* Remove obsolete MoveDictionaryController
* Remove CreateDate and UpdateDate from DictionaryViewModel
* Change response type to correct model
* Remove PagedViewModelFactory.cs
* Add obsolete message
* Fix installer view models
A setter is required for the modelbinder to be able to do its work
* Update src/Umbraco.Cms.ManagementApi/Controllers/Analytics/SetAnalyticsController.cs
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
* Update ResponseType to correct Model
* Update comment
* Add FileUploadService
* Add DictionaryFactory.cs to handle creation of viewmodel
* Remove unused DI
* Rename actions & controllers to reflect eachother
* Update OpenApi.json
* Add dictionary to openapi
* Update in proper alphabetical order
* Add trackedReferences to openapi
* Fix open api doc
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
* Backport project cleanup from #12907
* Remove empty Directory.Build.props
* Fix GenerateAppsettingsSchema target
* Re-add empty Directory.Build.props to prevent inheritance
* Re-add missing JsonPatch.Net dependency
* Fix merge issues (redundant TargetFramework property and appsettings-schema.json generation)
* Fix and improve OpenAPI test assertion
Co-authored-by: Sebastiaan Janssen <sebastiaan@umbraco.com>
Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Kenn Jacobsen <kja@umbraco.dk>
Co-authored-by: Mads Rasmussen <madsr@hey.com>
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Co-authored-by: Bjarne Fyrstenborg <bjarne_fyrstenborg@hotmail.com>
Co-authored-by: Erik-Jan Westendorp <erikjanwestendorp@outlook.com>
Co-authored-by: Andy Butland <abutland73@gmail.com>
Co-authored-by: Sean <29239704+Bakersbakebread@users.noreply.github.com>
Co-authored-by: Lucas Bach Bisgaard <rammi@rammi.dk>
Co-authored-by: Lucas Bach Bisgaard <lom@novicell.dk>
Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
Co-authored-by: Busra Sengul <aysebusrasengul@gmail.com>
Co-authored-by: Justin Neville <justin@nevitech.co.uk>
Co-authored-by: Jeavon Leopold <jeavon@crumpled-dog.com>
Co-authored-by: Austin Gilbert <AGilbert@rbaconsulting.com>
Co-authored-by: patrickdemooij9 <patrickdemooij98@hotmail.com>
Co-authored-by: bakersbakebread <hello@seanthorne.co.uk>
Co-authored-by: Karl Butler <kbutler@carbonsix.digital>
* update 'tinymce' from v4 to v6
* add/remove plugin & file changes
* remove unsupported plugins
* update changes to tinymce api
* bump tinymce to 6.2.0
* reinstate fastdev task
* update rte prevalues
* fix styling of tinymce inline mode
* document new files
* update builtin allowed elements, plugins and styles
* update upload_image_handler to new format
* set correct startup plugins and config
* remove old config for "Paste from Word" which is no longer supported
* update naming in default toolbar
* replace fire() with dispatch()
* support resizing of other elements besides objects, e.g. tables
* replace fire() with dispatch()
* change classes for fullscreen styling
* handle special parsing of AngularJS json response
* remove deprecated tinymce options
* use EditorOptions API to get settings
* send in correct toolbar config
* update icons to use tinymce's new icon pack
* remove unused functions
* configure custom styles
* update docs
* add initial toolbars to grid rte
* change htmlId selector to support html id's with numbers
* remove pintoolbar as it is not compatible with tiny 6
* register custom option maxImageSize through the OptionsManager
* remove custom option
* Revert "register custom option maxImageSize through the OptionsManager"
This reverts commit 342354d6cd.
* register custom option maxImageSize and fetch through EditorOptions
* add rounding to forced image size
* remove fullscreen plugin as it is not available in prod build anyway and it does not work
* update API for uploadImages() function
* update string extensions IsFullPath to support more filepaths with new built-in Path.IsPathFullyQualified
* resolve TODO to switch to Path.IsPathFullyQualified supported from .NET Standard 2.1
* ensure that files are copied from the TEMP folder in the web root
* add dragstart event to drag-events series
* optimise isMediaPickerEnabled function with newer array function 'includes'
* add TEMP folder to gitignore (fx fileuploads)
* update selector for "Insert Macro" button in rte test
* remove old documentation
* Use content root instead of web root for uploaded images
* test IsFullPath without tricky UNC paths that are not useful
Co-authored-by: Bjarke Berg <mail@bergmania.dk>
@@ -13,6 +13,16 @@ 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
@@ -27,7 +37,7 @@ If you want to run a build without debugging, see [Building from source](#buildi
In order to build the Umbraco source code locally with Visual Studio Code, first make sure you have the following installed.
* [Visual Studio Code](https://code.visualstudio.com/)
@@ -40,18 +50,22 @@ You can also run the tasks manually on the command line:
```
cd src\Umbraco.Web.UI.Client
npm install
npm i
npm run dev
```
or
If you just want to build the UI Client to `Umbraco.Web.UI` then instead of running `dev`, you can do: `npm run build`.
The login screen is a different frontend build, for that one you can run it as follows:
```
cd src\Umbraco.Web.UI.Client
npm install
gulp dev
cd src\Umbraco.Web.UI.Login
npm i
npm run dev
```
If you just want to build the Login screen to `Umbraco.Web.UI` then instead of running `dev`, you can do: `npm run build`.
**The initial Gulp build might take a long time - don't worry, this will be faster on subsequent runs.**
You might run into [Gulp quirks](#gulp-quirks).
@@ -72,7 +86,7 @@ When the page eventually loads in your web browser, you can follow the installer
In order to build the Umbraco source code locally with Visual Studio, first make sure you have the following installed.
* [Visual Studio 2019 v16.8+ with .NET 6.0.2+](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)
* [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)
@@ -99,111 +113,33 @@ When the page eventually loads in your web browser, you can follow the installer
Did you read ["Are you sure"](#are-you-sure)?
### Quick!
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/`
To build Umbraco, fire up PowerShell and move to Umbraco's repository root (the directory that contains `src`, `build`, `LICENSE.md`...). There, trigger the build with the following command:
You may want to build a set of NuGet packages with your changes, this can be done using the dotnet pack command.
build/build.ps1
First enter the root of the project in a command line environment, and then use the following command to build the NuGet packages:
If you only see a build.bat-file, you're probably on the wrong branch. If you switch to the correct branch (v8/contrib) the file will appear and you can build it.
`dotnet pack -c Release -o Build.Out`
You might run into [Powershell quirks](#powershell-quirks).
This will restore and build the project using the release configuration, and put all the outputted files in a folder called `Build.Out`
If it runs without errors; Hooray! Now you can continue with [the next step](CONTRIBUTING.md#how-do-i-begin) and open the solution and build it.
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`
### Build Infrastructure
The Umbraco Build infrastructure relies on a PowerShell object. The object can be retrieved with:
$ubuild = build/build.ps1 -get
The object exposes various properties and methods that can be used to fine-grain build Umbraco. Some, but not all, of them are detailed below.
#### Properties
The object exposes the following properties:
*`SolutionRoot`: the absolute path to the solution root
*`VisualStudio`: a Visual Studio object (see below)
*`NuGet`: the absolute path to the NuGet executable
*`Zip`: the absolute path to the 7Zip executable
*`VsWhere`: the absolute path to the VsWhere executable
*`NodePath`: the absolute path to the Node install
*`NpmPath`: the absolute path to the Npm install
The Visual Studio object is `null` when Visual Studio has not been detected (eg on VSTS). When not null, the object exposes the following properties:
*`Path`: Visual Studio installation path (eg some place under `Program Files`)
*`Major`: Visual Studio major version (eg `15` for VS 2017)
*`Minor`: Visual Studio minor version
*`MsBuild`: the absolute path to the MsBuild executable
#### GetUmbracoVersion
Gets an object representing the current Umbraco version. Example:
$v = $ubuild.GetUmbracoVersion()
Write-Host $v.Semver
The object exposes the following properties:
*`Semver`: the semver object representing the version
*`Release`: the main part of the version (eg `7.6.33`)
*`Comment`: the pre release part of the version (eg `alpha02`)
*`Build`: the build number part of the version (eg `1234`)
#### SetUmbracoVersion
Modifies Umbraco files with the new version.
>This entirely replaces the legacy `UmbracoVersion.txt` file. Do *not* edit version infos in files.
The version must be a valid semver version. It can include a *pre release* part (eg `alpha02`) and/or a *build number* (eg `1234`). Examples:
$ubuild.SetUmbracoVersion("7.6.33")
$ubuild.SetUmbracoVersion("7.6.33-alpha.2")
$ubuild.SetUmbracoVersion("7.6.33+1234")
$ubuild.SetUmbracoVersion("7.6.33-beta.5+5678")
#### Build
Builds Umbraco. Temporary files are generated in `build.tmp` while the actual artifacts (zip files, NuGet packages...) are produced in `build.out`. Example:
$ubuild.Build()
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
**Note: web.config**
Building Umbraco requires a clean `web.config` file in the `Umbraco.Web.UI` project. If a `web.config` file already exists, the `pre-build` task (see below) will save it as `web.config.temp-build` and replace it with a clean copy of `web.Template.config`. The original file is replaced once it is safe to do so, by the `pre-packages` task.
#### Build-UmbracoDocs
Builds umbraco documentation. Temporary files are generated in `build.tmp` while the actual artifacts (docs...) are produced in `build.out`. Example:
Build-UmbracoDocs
Some log files, such as MsBuild logs, are produced in `build.tmp` too. The `build` directory should remain clean during a build.
#### Verify-NuGet
Verifies that projects all require the same version of their dependencies, and that NuSpec files require versions that are consistent with projects. Example:
Verify-NuGet
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.
At the very minimum, you want
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
git clean -Xdf src/Umbraco.Web.UI/App_Data
rm src/Umbraco.Web.UI/web.config
You only have to remove the connection strings from the appsettings, but removing the data folder ensures that the sqlite database gets deleted too.
Then, a simple 'Rebuild All' in Visual Studio will recreate a fresh `web.config` but should be quite fast (since it does not really need to rebuild anything).
The `clean` Git command force (`-f`) removes (`-X`, note the capital X) all files and directories (`-d`) that are ignored by Git.
Next time you run a build the `appsettings.json` file will be re-created in its default state.
This will leave media files and views around, but in most cases, it will be enough.
@@ -219,65 +155,12 @@ For git documentation see:
## Azure DevOps
Umbraco uses Azure DevOps for continuous integration, nightly builds and release builds. The Umbraco CMS project on DevOps [is available for anonymous users](https://umbraco.visualstudio.com/Umbraco%20Cms).
Umbraco uses Azure DevOps for continuous integration, nightly builds and release builds. The Umbraco CMS project on DevOps [is available for anonymous users](https://umbraco.visualstudio.com/Umbraco%20Cms)..
DevOps uses the `Build-Umbraco` command several times, each time passing a different *target* parameter. The supported targets are:
*`pre-build`: prepares the build
*`compile-belle`: compiles Belle
*`compile-umbraco`: compiles Umbraco
*`pre-tests`: prepares the tests
*`compile-tests`: compiles the tests
*`pre-packages`: prepares the packages
*`pkg-zip`: creates the zip files
*`pre-nuget`: prepares NuGet packages
*`pkg-nuget`: creates NuGet packages
All these targets are executed when `Build-Umbraco` is invoked without a parameter (or with the `all` parameter). On VSTS, compilations (of Umbraco and tests) are performed by dedicated DevOps tasks. Similarly, creating the NuGet packages is also performed by dedicated DevOps tasks.
Finally, the produced artifacts are published in two containers that can be downloaded from DevOps: `zips` contains the zip files while `nuget` contains the NuGet packages.
>During a DevOps build, some environment `UMBRACO_*` variables are exported by the `pre-build` target and can be reused in other targets *and* in DevOps tasks. The `UMBRACO_TMP` environment variable is used in `Umbraco.Tests` to disable some tests that have issues with DevOps at the moment.
The produced artifacts are published in a container that can be downloaded from DevOps called "nupkg" which contains all the NuGet packages that got built.
## Quirks
### PowerShell Quirks
There is a good chance that running `build.ps1` ends up in error, with messages such as
>The file ...\build.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies.
PowerShell has *Execution Policies* that may prevent the script from running. You can check the current policies with:
PS> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Policies can be `Restricted`, `AllSigned`, `RemoteSigned`, `Unrestricted` and `Bypass`. Scopes can be `MachinePolicy`, `UserPolicy`, `Process`, `CurrentUser`, `LocalMachine`. You need the current policy to be `RemoteSigned`—as long as it is `Undefined`, the script cannot run. You can change the current user policy with:
And *then* the script should run. It *might* however still complain about executing scripts, with messages such as:
>Security warning - Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message. Do you want to run ...\build.ps1?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"):
This is usually caused by the scripts being *blocked*. And that usually happens when the source code has been downloaded as a Zip file. When Windows downloads Zip files, they are marked as *blocked* (technically, they have a Zone.Identifier alternate data stream, with a value of "3" to indicate that they were downloaded from the Internet). And when such a Zip file is un-zipped, each and every single file is also marked as blocked.
The best solution is to unblock the Zip file before un-zipping: right-click the files, open *Properties*, and there should be a *Unblock* checkbox at the bottom of the dialog. If, however, the Zip file has already been un-zipped, it is possible to recursively unblock all files from PowerShell with:
PS> Get-ChildItem -Recurse *.* | Unblock-File
### Git Quirks
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).
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.
## Coding not your thing? Or want more ways to contribute?
## 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.
This document covers contributing to the codebase of the CMS but [the community site has plenty of inspiration for other ways to get involved.][get involved]
If you don't feel you'd like to make code changes here, you can visit our [documentation repository][docs repo] and use your experience to contribute to making the docs we have, even better.
We also encourage community members to feel free to comment on others' pull requests and issues - the expertise we have is not limited to the Core Collaborators and HQ. So, if you see something on the issue tracker or pull requests you feel you can add to, please don't be shy.
## Table of contents
- [Before you start](#before-you-start)
* [Code of Conduct](#code-of-conduct)
* [What can I contribute?](#what-can-i-contribute)
+ [Making larger changes](#making-larger-changes)
+ [Pull request or package?](#pull-request-or-package)
+ [Ownership and copyright](#ownership-and-copyright)
- [Finding your first issue: Up for grabs](#finding-your-first-issue-up-for-grabs)
- [Making your changes](#making-your-changes)
+ [Keeping your Umbraco fork in sync with the main repository](#keeping-your-umbraco-fork-in-sync-with-the-main-repository)
+ [Style guide](#style-guide)
+ [Questions?](#questions)
- [Creating a pull request](#creating-a-pull-request)
- [The review process](#the-review-process)
* [Dealing with requested changes](#dealing-with-requested-changes)
| Small PRs | Bug fixes and small improvements - can be recognized by seeing a small number of changes and possibly a small number of new files. |
| Large PRs | New features and large refactorings - can be recognized by seeing a large number of changes, plenty of new files, updates to package manager files (NuGet’s packages.config, NPM’s packages.json, etc.). |
We’re usually able to handle small PRs pretty quickly. A community volunteer will do the initial review and flag it for Umbraco HQ as “community tested”. If everything looks good, it will be merged pretty quickly [as per the described process][review process].
We would love to follow the same process for larger PRs but this is not always possible due to time limitations and priorities that need to be aligned. We don’t want to put up any barriers, but this document should set the correct expectations.
Not all changes are wanted, so on occasion we might close a PR without merging it but if we do, we will give you feedback why we can't accept your changes. **So make sure to [talk to us before making large changes][making larger changes]**, so we can ensure that you don't put all your hard work into something we would not be able to merge.
#### Making larger changes
[making larger changes]: #making-larger-changes
Please make sure to describe your larger ideas in an [issue (bugs)][issues] or [discussion (new features)][discussions], it helps to put in mock up screenshots or videos. If the change makes sense for HQ to include in Umbraco CMS we will leave you some feedback on how we’d like to see it being implemented.
If a larger pull request is encouraged by Umbraco HQ, the process will be similar to what is described in the small PRs process above, we strive to feedback within 14 days. Finalizing and merging the PR might take longer though as it will likely need to be picked up by the development team to make sure everything is in order. We’ll keep you posted on the progress.
#### Pull request or package?
[pr or package]: #pull-request-or-package
If you're unsure about whether your changes belong in the core Umbraco CMS or if you should turn your idea into a package instead, make sure to [talk to us][making larger changes].
If it doesn’t fit in CMS right now, we will likely encourage you to make it into a package instead. A package is a great way to check out popularity of a feature, learn how people use it, validate good usability and fix bugs. Eventually, a package could "graduate" to be included in the CMS.
#### Ownership and copyright
It is your responsibility to make sure that you're allowed to share the code you're providing us. For example, you should have permission from your employer or customer to share code.
Similarly, if your contribution is copied or adapted from somewhere else, make sure that the license allows you to reuse that for a contribution to Umbraco-CMS.
If you're not sure, leave a note on your contribution and we will be happy to guide you.
When your contribution has been accepted, it will be [MIT licensed][MIT license] from that time onwards.
## Finding your first issue: Up for grabs
Umbraco HQ will regularly mark newly created issues on the issue tracker with [the `community/up-for-grabs` tag][up for grabs issues]. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. We encourage anyone to pick them up and help out.
If you do start working on something, make sure to leave a small comment on the issue saying something like: "I'm working on this". That way other people stumbling upon the issue know they don't need to pick it up, someone already has.
## Making your changes
Great question! The short version goes like this:
The following steps are a quick-start guide:
1.**Fork**
Create a fork of [`Umbraco-CMS` on GitHub][UmbracoCMS repo]
Create a fork of [`Umbraco-CMS` on GitHub](https://github.com/umbraco/Umbraco-CMS)

1.**Clone**
2.**Clone**
When GitHub has created your fork, you can clone it in your favorite Git tool
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`.

1.**Switch to the correct branch**
3.**Switch to the correct branch**
Switch to the `v10/contrib` branch
Switch to the `contrib` branch
1.**Build**
4.**Build**
Build your fork of Umbraco locally as described in the build documentation: you can [debug with Visual Studio Code][build - debugging with code] or [with Visual Studio][build - debugging with vs].
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.
1.**Branch**
5.**Branch**
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 `v10/contrib`, create a new branch first.
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.
1.**Change**
6.**Change**
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback][questions].
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback](contributing-first-issue.md#questions).
1.**Commit and push**
7.**Commit and push**
Done? Yay! 🎉
Remember to commit to your new `temp` branch, and don't commit to `v10/contrib`. Then you can push the changes up to your fork on GitHub.
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.
#### Keeping your Umbraco fork in sync with the main repository
Once you've already got a fork and cloned your fork locally, you can skip steps 1 and 2 going forward. Just remember to keep your fork up to date before making further changes.
On GitHub, in your forked repository (`https://github.com/[YourUsername]/Umbraco-CMS`) you will see a banner saying that you pushed a new branch and a button to make a pull request. Tap the button and follow the instuctions.
To sync your fork with this original one, you'll have to add the upstream url. You only have to do this once:
Want to read further? [Creating a pull request and what happens next](contributing-creating-a-pr.md).
- [Other ways to contribute](contributing-other-ways-to-contribute.md)
```
git fetch upstream
git rebase upstream/v10/contrib
```
In this command we're syncing with the `v10/contrib` branch, but you can of course choose another one if needed.
[More information on how this works can be found on the thoughtbot blog.][sync fork ext]
#### Style guide
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
#### Questions?
[questions]: #questions
You can get in touch with [the core contributors team][core collabs] in multiple ways; we love open conversations and we are a friendly bunch. No question you have is stupid. Any question you have usually helps out multiple people with the same question. Ask away:
- If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward.
- If you want to ask questions on some code you've already written you can create a draft pull request, [detailed in a GitHub blog post][draft prs].
- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"][contrib forum] forum. The team monitors that one closely, so one of us will be on hand and ready to point you in the right direction.
## Creating a pull request
Exciting! You're ready to show us your changes.
We recommend you to [sync with our repository][sync fork] before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier.
GitHub will have picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.

We like to use [git flow][git flow] as much as possible, but don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to something, usually `v10/contrib`. If you are working on v9, this is the branch you should be targeting.
Please note: we are no longer accepting features for v8 and below but will continue to merge security fixes as and when they arise.
## The review process
[review process]: #the-review-process
You've sent us your first contribution - congratulations! Now what?
The [Core Collaborators team][Core collabs] can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request that you make some additional changes.
You will get an initial automated reply from our [Friendly Umbraco Robot, Umbrabot][Umbrabot], to acknowledge that we’ve seen your PR and we’ll pick it up as soon as we can. You can take this opportunity to double check everything is in order based off the handy checklist Umbrabot provides.
You will get feedback as soon as the [Core Collaborators team][Core collabs] can after opening the PR. You’ll most likely get feedback within a couple of weeks. Then there are a few possible outcomes:
- Your proposed change is awesome! We merge it in and it will be included in the next minor release of Umbraco
- If the change is a high priority bug fix, we will cherry-pick it into the next patch release as well so that we can release it as soon as possible
- Your proposed change is awesome but needs a bit more work, we’ll give you feedback on the changes we’d like to see
- Your proposed change is awesome but... not something we’re looking to include at this point. We’ll close your PR and the related issue (we’ll be nice about it!). See [making larger changes][making larger changes] and [pull request or package?][pr or package]
### Dealing with requested changes
If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco!
#### No longer available?
We understand you have other things to do and can't just drop everything to help us out.
So if we’re asking for your help to improve the PR we’ll wait for two weeks to give you a fair chance to make changes. We’ll ask for an update if we don’t hear back from you after that time.
If we don’t hear back from you for 4 weeks, we’ll close the PR so that it doesn’t just hang around forever. You’re very welcome to re-open it once you have some more time to spend on it.
There will be times that we really like your proposed changes and we’ll finish the final improvements we’d like to see ourselves. You still get the credits and your commits will live on in the git repository.
### The Core Collaborators team
[Core collabs]: #the-core-collaborators-team
The Core Contributors team consists of one member of Umbraco HQ, [Sebastiaan][Sebastiaan], who gets assistance from the following community members who have committed to volunteering their free time:
- [Nathan Woulfe][Nathan Woulfe]
- [Joe Glombek][Joe Glombek]
- [Laura Weatherhead][Laura Weatherhead]
- [Michael Latouche][Michael Latouche]
- [Owain Williams][Owain Williams]
These wonderful people aim to provide you with a reply to your PR, review and test out your changes and on occasions, they might ask more questions. If they are happy with your work, they'll let Umbraco HQ know by approving the PR. HQ will have final sign-off and will check the work again before it is merged.
> This is an early WIP and is set not to be packable since we don't want to release this yet. There will be breaking changes in these projects.
This solution folder contains the projects for the new backoffice. If you're looking to fix or improve the existing CMS, this is not the place to do it, although we do very much appreciate your efforts.
### Project structure
Since the new backoffice API is still very much a work in progress, we've created new projects for the new backoffice API:
* Umbrao.Cms.ManagementApi - The "presentation layer" for the management API
* "New" versions of existing projects, should be merged with the existing projects when the new API is released:
* Umbraco.New.Cms.Core
* Umbraco.New.Cms.Infrastructure
* Umbraco.New.Cms.Web.Common
This also means that we have to use "InternalsVisibleTo" for the new projects since these should be able to access the internal classes since they will when they get merged.
Umbraco is the friendliest, most flexible and fastest growing ASP.NET CMS, and used by more than 500,000 websites worldwide. Our mission is to help you deliver delightful digital experiences by making Umbraco friendly, simpler and social.
### 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.
Learn more at [umbraco.com](https://umbraco.com)
<p align="center">
<img src="img/logo.png" alt="Umbraco Logo" />
<img src="img/logo.png" alt="Umbraco Logo" />
</p>
See the official [Umbraco website](https://umbraco.com) for an introduction, core mission and values of the product and team behind it.
## <a name="install"></a>Looking to install Umbraco?
- [Getting Started](#getting-started)
- [Documentation](#documentation)
- [Community](#join-the-umbraco-community)
- [Contributing](#contributing)
You can get started using the following commands on Windows, Linux and MacOS (after installing the [.NET Runtime and SDK](https://docs.umbraco.com/umbraco-cms/fundamentals/setup/requirements)):
Please also see our [Code of Conduct](https://github.com/umbraco/.github/blob/main/.github/CODE_OF_CONDUCT.md).
## Getting Started
[Umbraco Cloud](https://umbraco.com/cloud) is the easiest and fastest way to use Umbraco yet, with full support for all your custom .NET code and integrations. You're up and running in less than a minute, and your life will be made easier with automated upgrades and a built-in deployment engine. We offer a free 14-day trial, no credit card needed.
If you want to DIY, then you can [download Umbraco]((https://our.umbraco.com/download)) either as a ZIP file or via NuGet. It's the same version of Umbraco CMS that powers Umbraco Cloud, but you'll need to find a place to host it yourself, and handling deployments and upgrades will be all up to you.
```
dotnet new install Umbraco.Templates
dotnet new umbraco --name MyProject
cd MyProject
dotnet run
```
## Documentation
The documentation for Umbraco CMS can be found [on Our Umbraco](https://docs.umbraco.com/). The source for the Umbraco docs is [open source as well](https://github.com/umbraco/UmbracoDocs) and we're happy to look at your documentation contributions.
Our [comprehensive documentation](https://docs.umbraco.com/umbraco-cms) takes you from the fundamentals on how to start with Umbraco to deploying it to production.
## Join the Umbraco community
Some important documentation links to get you started:
Our friendly community is available 24/7 at the community hub, we call ["Our Umbraco"](https://our.umbraco.com/). Our Umbraco features forums for questions and answers, documentation, downloadable plugins for Umbraco, and a rich collection of community resources.
- [Getting to know Umbraco](https://docs.umbraco.com/umbraco-cms/fundamentals/get-to-know-umbraco)
- [Tutorials for creating a basic website and customizing the editing experience](https://docs.umbraco.com/umbraco-cms/tutorials/overview)
Besides "Our", we all support each other also via Twitter: [Umbraco HQ](https://twitter.com/umbraco), [Release Updates](https://twitter.com/umbracoproject), [#umbraco](https://twitter.com/hashtag/umbraco)
## Get help
If you need a bit of feedback while building your Umbraco projects, we are [chatty on Discord](https://discord.umbraco.com). Our Discord server serves both a social space but also has channels for questions and answers. Feel free to lurk or join in with your own questions. Or just post your daily Wordle score, up to you!
## Contributing
## Looking to contribute back to Umbraco?
You came to the right place! Our GitHub repository is available for all kinds of contributions:
- [Create a bug report](https://github.com/umbraco/Umbraco-CMS/issues)
- [Create a feature request](https://github.com/umbraco/Umbraco-CMS/discussions)
Umbraco is contribution-focused and community-driven. If you want to contribute back to the Umbraco source code, please check out our [guide to contributing](CONTRIBUTING.md).
### Tip: You should not run Umbraco from source code found here. Umbraco is extremely extensible and can do whatever you need. Instead, [install Umbraco as noted above](#looking-to-install-umbraco) and then [extend it any way you want to](https://docs.umbraco.com/umbraco-cms/extending/).
Umbraco source code can be edited inside the browser with VSCode and CodeSpaces.
This development environment comes with all the tools you need to build Umbraco source code.
## Debugging and Running
From VSCode browse to the Run and Debug section and then click the green button. This will build the Umbraco source code and attach a debugger and launch the site.
## Default Umbraco credentials
Username: test@umbraco.com
Password: password1234
## Test Email Server
A SMTP4Dev instance for testing email is available on port 5000.
## SQLite Database
The SQLite extension is preinstalled and allows you to open, query, edit the data inside the Umbraco SQLite database for ease of use.
| Small PRs | Bug fixes and small improvements - can be recognized by seeing a small number of changes and possibly a small number of new files. |
| Large PRs | New features and large refactorings - can be recognized by seeing a large number of changes, plenty of new files, updates to package manager files (NuGet’s packages.config, NPM’s packages.json, etc.). |
We’re usually able to handle small PRs pretty quickly. A community volunteer will do the initial review and flag it for Umbraco HQ as “community tested”. If everything looks good, it will be merged pretty quickly [as per the described process][review process].
We would love to follow the same process for larger PRs but this is not always possible due to time limitations and priorities that need to be aligned. We don’t want to put up any barriers, but this document should set the correct expectations.
Not all changes are wanted, so on occasion we might close a PR without merging it but if we do, we will give you feedback why we can't accept your changes. **So make sure to [talk to us before making large changes][making larger changes]**, so we can ensure that you don't put all your hard work into something we would not be able to merge.
#### Making larger changes
[making larger changes]: #making-larger-changes
Please make sure to describe your larger ideas in an [issue (bugs)][issues] or [discussion (new features)][discussions], it helps to put in mock up screenshots or videos. If the change makes sense for HQ to include in Umbraco CMS we will leave you some feedback on how we’d like to see it being implemented.
If a larger pull request is encouraged by Umbraco HQ, the process will be similar to what is described in the small PRs process above, we strive to feedback within 14 days. Finalizing and merging the PR might take longer though as it will likely need to be picked up by the development team to make sure everything is in order. We’ll keep you posted on the progress.
#### Pull request or package?
[pr or package]: #pull-request-or-package
If you're unsure about whether your changes belong in the core Umbraco CMS or if you should turn your idea into a package instead, make sure to [talk to us][making larger changes].
If it doesn’t fit in CMS right now, we will likely encourage you to make it into a package instead. A package is a great way to check out popularity of a feature, learn how people use it, validate good usability and fix bugs. Eventually, a package could "graduate" to be included in the CMS.
#### Ownership and copyright
It is your responsibility to make sure that you're allowed to share the code you're providing us. For example, you should have permission from your employer or customer to share code.
Similarly, if your contribution is copied or adapted from somewhere else, make sure that the license allows you to reuse that for a contribution to Umbraco-CMS.
If you're not sure, leave a note on your contribution and we will be happy to guide you.
When your contribution has been accepted, it will be [MIT licensed][MIT license] from that time onwards.
The Core Contributors team consists of one member of Umbraco HQ, [Sebastiaan][Sebastiaan], who gets assistance from the following community members who have committed to volunteering their free time:
- [Busra Sengul][Busra Sengul]
- [Emma Garland][Emma Garland]
- [George Bidder][George Bidder]
- [Jason Elkin][Jason Elkin]
- [Laura Neto][Laura Neto]
- [Kyle Eck][Kyle Eck]
- [Michael Latouche][Michael Latouche]
- [Sebastiaan][Sebastiaan]
These wonderful people aim to provide you with a reply to your PR, review and test out your changes and on occasions, they might ask more questions. If they are happy with your work, they'll let Umbraco HQ know by approving the PR. HQ will have final sign-off and will check the work again before it is merged.
We recommend you to [sync with our repository][sync fork] before you submit your pull request. That way, you can fix any potential merge conflicts and make our lives a little bit easier.
GitHub will have picked up on the new branch you've pushed and will offer to create a Pull Request. Click that green button and away you go.

We like to use [git flow][git flow] as much as possible, but don't worry if you are not familiar with it. The most important thing you need to know is that when you fork the Umbraco repository, the default branch is set to `contrib`. This is the branch you should be targeting.
Please note: we are no longer accepting features for v8 and below but will continue to merge security fixes as and when they arise.
## The review process
[review process]: #the-review-process
You've sent us your contribution - congratulations! Now what?
The [Core Collaborators team][Core collabs] can now start reviewing your proposed changes and give you feedback on them. If it's not perfect, we'll either fix up what we need or we can request that you make some additional changes.
You will get an initial automated reply from our [Friendly Umbraco Robot, Umbrabot][Umbrabot], to acknowledge that we’ve seen your PR and we’ll pick it up as soon as we can. You can take this opportunity to double check everything is in order based off the handy checklist Umbrabot provides.
You will get feedback as soon as the [Core Collaborators team][Core collabs] can after opening the PR. You’ll most likely get feedback within a couple of weeks. Then there are a few possible outcomes:
- Your proposed change is awesome! We merge it in and it will be included in the next minor release of Umbraco
- If the change is a high priority bug fix, we will cherry-pick it into the next patch release as well so that we can release it as soon as possible
- Your proposed change is awesome but needs a bit more work, we’ll give you feedback on the changes we’d like to see
- Your proposed change is awesome but... not something we’re looking to include at this point. We’ll close your PR and the related issue (we’ll be nice about it!). See [making larger changes][making larger changes] and [pull request or package?][pr or package]
### Dealing with requested changes
If you make the corrections we ask for in the same branch and push them to your fork again, the pull request automatically updates with the additional commit(s) so we can review it again. If all is well, we'll merge the code and your commits are forever part of Umbraco!
#### No longer available?
We understand you have other things to do and can't just drop everything to help us out.
So if we’re asking for your help to improve the PR we’ll wait for two weeks to give you a fair chance to make changes. We’ll ask for an update if we don’t hear back from you after that time.
If we don’t hear back from you for 4 weeks, we’ll close the PR so that it doesn’t just hang around forever. You’re very welcome to re-open it once you have some more time to spend on it.
There will be times that we really like your proposed changes and we’ll finish the final improvements we’d like to see ourselves. You still get the credits and your commits will live on in the git repository.
[ Umbrabot ]: https://github.com/umbrabot
[git flow]: https://jeffkreeftmeijer.com/git-flow/ "An explanation of git flow"
Umbraco HQ will regularly mark newly created issues on the issue tracker with [the `community/up-for-grabs` tag][up for grabs issues]. This means that the proposed changes are wanted in Umbraco but the HQ does not have the time to make them at this time. We encourage anyone to pick them up and help out.
If you do start working on something, make sure to leave a small comment on the issue saying something like: "I'm working on this". That way other people stumbling upon the issue know they don't need to pick it up, someone already has.
## Making your changes
Great question! The short version goes like this:
1.**Fork**
Create a fork of [`Umbraco-CMS` on GitHub][Umbraco CMS repo]

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

1.**Switch to the correct branch**
Switch to the `contrib` branch
1.**Build**
Build your fork of Umbraco locally as described in the build documentation: you can [debug with Visual Studio Code][build - debugging with code] or [with Visual Studio][build - debugging with vs].
1.**Branch**
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.
1.**Change**
Make your changes, experiment, have fun, explore and learn, and don't be afraid. We welcome all contributions and will [happily give feedback][questions].
1.**Commit and push**
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.
#### Keeping your Umbraco fork in sync with the main repository
Once you've already got a fork and cloned your fork locally, you can skip steps 1 and 2 going forward. Just remember to keep your fork up to date before making further changes.
To sync your fork with this original one, you'll have to add the upstream url. You only have to do this once:
Then when you want to get the changes from the main repository:
```
git fetch upstream
git rebase upstream/contrib
```
In this command we're syncing with the `contrib` branch, but you can of course choose another one if needed.
[More information on how this works can be found on the thoughtbot blog.][sync fork ext]
#### Style guide
To be honest, we don't like rules very much. We trust you have the best of intentions and we encourage you to create working code. If it doesn't look perfect then we'll happily help clean it up.
That said, the Umbraco development team likes to follow the hints that ReSharper gives us (no problem if you don't have this installed) and we've added a `.editorconfig` file so that Visual Studio knows what to do with whitespace, line endings, etc.
#### Questions?
[questions]: #questions
You can get in touch with [the core contributors team][core collabs] in multiple ways; we love open conversations and we are a friendly bunch. No question you have is stupid. Any question you have usually helps out multiple people with the same question. Ask away:
- If there's an existing issue on the issue tracker then that's a good place to leave questions and discuss how to start or move forward.
- If you want to ask questions on some code you've already written you can create a draft pull request, [detailed in a GitHub blog post][draft prs].
- Unsure where to start? Did something not work as expected? Try leaving a note in the ["Contributing to Umbraco"][contrib forum] forum. The team monitors that one closely, so one of us will be on hand and ready to point you in the right direction.
<!-- Local -->
[build - debugging with vs]: BUILD.md#debugging-with-visual-studio "Details on building and debugging Umbraco with Visual Studio"
[build - debugging with code]: BUILD.md#debugging-with-vs-code "Details on building and debugging Umbraco with Visual Studio Code"
[sync fork ext]: http://robots.thoughtbot.com/post/5133345960/keeping-a-git-fork-updated "Details on keeping a git fork updated"
[draft prs]: https://github.blog/2019-02-14-introducing-draft-pull-requests/ "Github's blog post providing details on draft pull requests"
## Coding not your thing? Or want more ways to contribute?
This document covers contributing to the codebase of the CMS but [the community site has plenty of inspiration for other ways to get involved.][get involved]
If you don't feel you'd like to make code changes here, you can visit our [documentation repository][docs repo] and use your experience to contribute to making the docs we have, even better.
We also encourage community members to feel free to comment on others' pull requests and issues - the expertise we have is not limited to the Core Collaborators and HQ. So, if you see something on the issue tracker or pull requests you feel you can add to, please don't be shy.
While most changes are welcome, there are certain types of changes that are discouraged and might get your pull request refused.
Of course this will depend heavily on the specific change, but please take the following examples in mind.
- **Breaking changes (code and/or behavioral) 💥** - sometimes it can be a bit hard to know if a change is breaking or not. Fortunately, if it relates to code, the build will fail and warn you.
- **Large refactors 🤯** - the larger the refactor, the larger the probability of introducing new bugs/issues.
- **Changes to obsolete code and/or property editors ✍️**
- **Adding new config options 🦾** - while having more flexibility is (most of the times) better, having too many options can also become overwhelming/confusing, especially if there are other (good/simple) ways to achieve it.
- **Whitespace changes 🫥** - while some of our files might not follow the formatting/whitespace rules (mostly old ones), changing several of them in one go would cause major merge conflicts with open pull requests or other work in progress. Do feel free to fix these when you are working on another issue/feature and end up "touching" those files!
- **Adding new extension/helper methods ✋** - keep in mind that more code also means more to maintain, so if a helper is only meaningful for a few, it might not be worth adding it to the core.
While these are only a few examples, it is important to ask yourself these questions before making a pull request:
- How many will benefit from this change?
- Are there other ways to achieve this? And if so, how do they compare?
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<!-- Add dependencies that we force an update to, even that we do not use them explicitly and they seems to be taken from the framework instead of from Nuget -->
/// Generates a sanitized and consistent schema identifier for a given type following Umbraco's schema id naming conventions.
/// </summary>
protectedstringUmbracoSchemaId(Typetype)
{
varname=SanitizedTypeName(type);
name=HandleGenerics(name,type);
if(name.EndsWith("Model")==false)
{
// because some models names clash with common classes in TypeScript (i.e. Document),
// we need to add a "Model" postfix to all models
name=$"{name}Model";
}
// make absolutely sure we don't pass any invalid named by removing all non-word chars
returnRegex.Replace(name,@"[^\w]",string.Empty);
}
privatestringSanitizedTypeName(Typet)=>t.Name
// first grab the "non-generic" part of any generic type name (i.e. "PagedViewModel`1" becomes "PagedViewModel")
.Split('`').First()
// then remove the "ViewModel" postfix from type names
.TrimEnd("ViewModel");
privatestringHandleGenerics(stringname,Typetype)
{
if(!type.IsGenericType)
{
returnname;
}
// use attribute custom name or append the generic type names, ultimately turning i.e. "PagedViewModel<RelationItemViewModel>" into "PagedRelationItem"
Description=$"You can find out more about the {DeliveryApiConfiguration.ApiTitle} in [the documentation]({DeliveryApiConfiguration.ApiDocumentationContentArticleLink})."
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.