Commit Graph

12152 Commits

Author SHA1 Message Date
Kenn Jacobsen
4d98937af9 Delivery API nested property expansion and output limiting (#15124)
* 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 0d5a57956b36e94ce951f1dad7a7f3f43eb1f60b.

* 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>
2023-11-14 11:16:12 +01:00
Bjarke Berg
df4cd63962 https://github.com/umbraco/Umbraco-CMS/issues/15195 Fixed issue with media not cached correct (#15196) 2023-11-14 10:59:30 +01:00
Bjarke Berg
cea6c3f20e Merge remote-tracking branch 'origin/v12/dev' into v13/dev 2023-11-14 09:31:25 +01:00
Bjarke Berg
2cf2176613 Merge remote-tracking branch 'origin/v11/dev' into v12/dev 2023-11-14 09:30:15 +01:00
Bjarke Berg
4a8ffd1b37 Merge remote-tracking branch 'origin/v10/dev' into v11/dev 2023-11-14 09:29:59 +01:00
Bjarke Berg
151fccee97 Performance optimisations related to blocks (and multi url picker) (#15184)
* Added content types to property index value factory, because the deep cloning is too expensive to execute often

* Do not use entityservice in ToEditor, as it goes to the database. We need to use something that is cached.

* Small performance optimization for nested content too

* A little formatting and an obsoletion message

---------

Co-authored-by: kjac <kja@umbraco.dk>
2023-11-14 08:12:05 +01:00
Bjarke Berg
fee9bf12c0 Updated nuget packages 2023-11-13 18:56:57 +01:00
Bjarke Berg
633f649be9 Merge remote-tracking branch 'origin/v11/dev' into v12/dev
# Conflicts:
#	src/Umbraco.Cms.ManagementApi/Umbraco.Cms.ManagementApi.csproj
#	src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs
2023-11-13 18:40:11 +01:00
Bjarke Berg
74cfd9c9a0 Updated nuget packages 2023-11-13 18:38:15 +01:00
Nikolaj Geisle
0e8c92a6e7 V13: Refactor webhookservice to attempt pattern (#15180)
* Refactor IWebhookService to attempt pattern

* Remove unwanted file

* Fix up tests

* Fix after merge

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-11-13 18:36:05 +01:00
Bjarke Berg
d6751e2832 Merge remote-tracking branch 'origin/v10/dev' into v11/dev
# Conflicts:
#	version.json
2023-11-13 18:30:50 +01:00
Nikolaj Geisle
46df3a05a7 V13: request queueing (#15176)
* 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>
2023-11-13 15:49:02 +01:00
Bjarke Berg
e5de8bf56b Updated nuget packages (#15192) 2023-11-13 14:59:52 +01:00
Bjarne Fyrstenborg
1d43a67934 Add edit page for webhook (#15175)
* 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
2023-11-13 10:14:40 +01:00
Erik-Jan Westendorp
31678bb676 Translate webhooks keys to Dutch (#15091) 2023-11-10 10:41:31 +01:00
Andy Butland
8f8302358a Added notifications to the webhook service (#15174)
* 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.
2023-11-10 10:17:36 +01:00
Nikolaj Geisle
e143133bcf V13: Update IWebHookService to proper casing (#15169)
* Update to proper casing

* Fixed naming

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Andreas Zerbst <andr317c@live.dk>
2023-11-10 08:20:22 +01:00
Nikolaj Geisle
7bde16b4ef V13: Add eventype to webhookevents (#15157)
* 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>
2023-11-09 14:18:34 +01:00
Ronald Barendse
d0be4ab263 Publish ContentTreeChangeNotification after saving/deleting blueprints (#14898) 2023-11-09 13:51:05 +01:00
Bjarke Berg
836f173925 Merge remote-tracking branch 'origin/release/13.0' into v13/dev 2023-11-09 09:23:44 +01:00
Ronald Barendse
9f062e38eb 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
2023-11-09 08:42:22 +01:00
Ronald Barendse
d301679e53 Include Umbraco.Web.UI.Login project, update compatibility suppressions and remove unnecessary package references (#15163)
* 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
2023-11-09 08:39:42 +01:00
Bjarke Berg
1ba025cf8b Merge remote-tracking branch 'origin/v12/dev' into release/13.0
# Conflicts:
#	src/Umbraco.Web.UI.Client/package-lock.json
#	src/Umbraco.Web.UI.Client/package.json
#	version.json
2023-11-07 20:17:17 +01:00
Sven Geusens
997434cebb Move localdb file management of PublishedSnapshotService into itself. (#15085)
* 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>
2023-11-07 16:02:20 +01:00
Bjarne Fyrstenborg
90ddd63742 Add comments to methods in IWebHookService (#15151)
* Add comments to methods in IWebHookService

* Inherit doc
2023-11-07 11:14:06 +01:00
Ronald Barendse
289ab6740b Fix WithCollectionBuilder helper methods nullability (#15143)
* Fix WithCollectionBuilder helper methods nullability

* Remove unnecessary lamba expressions
2023-11-06 18:10:09 +01:00
Ronald Barendse
e7bab6995a Move IContextCache parameter to base Deploy interfaces and add checksum to artifact dependency (#15144)
* Move IContextCache parameter to base interfaces

* Add checksum to artifact dependency
2023-11-06 18:05:02 +01:00
Andy Butland
8d3883df14 Aligned parameters on sync and async methods on IFileSource. (#15128) 2023-11-06 17:59:30 +01:00
Andy Butland
fee32bd6ec Remove parameter value/return nullability in IImageSourceParser, ILocalLinkParser and IMacroParser (#15130)
* 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>
2023-11-06 17:58:01 +01:00
Erik-Jan Westendorp
c0ca4685e8 Fix FurthestAncestorOrSelfDynamicRootQueryStep and FurthestDescendantOrSelfDynamicRootQueryStep (#15113)
* Rename FarthestDescendantOrSelfDynamicRootQueryStep to FurthestDescendantOrSelfDynamicRootQueryStep

* Rename FarthestAncestorOrSelfDynamicRootQueryStep to FurthestAncestorOrSelfDynamicRootQueryStep

* Update integration test and repo
2023-11-06 10:44:12 +01:00
Erik-Jan Westendorp
913f48806a AddWebhookEvent to UmbracoBuilderExtensions (#15099) 2023-11-06 08:54:29 +01:00
Bjarne Fyrstenborg
5f3c0c56cc Update webhook log table using constant (#15101)
(cherry picked from commit f7d1ef722e)
2023-11-06 08:24:11 +01:00
Bjarne Fyrstenborg
79d9ac759b V13: Webhook corrections (#15077)
* 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)
2023-11-06 08:24:10 +01:00
Kevin Jump
c31df57bdc New WebhookEventBase class (#15129)
(cherry picked from commit 145107be45)
2023-11-06 08:23:34 +01:00
Matthew Wise
a2a2680def String comparision was using current culture which resulting in incorrect resuts for some languages 2023-11-03 14:00:59 +00:00
Kevin Jump
145107be45 New WebhookEventBase class (#15129) 2023-11-03 14:30:13 +01:00
Mike Masey
a907be54b4 fix: add select all sr-only text to umb table select all button 2023-11-02 17:02:14 +01:00
Nikolaj Geisle
ff05886e43 Remove setter from WebhookEvent (#15106)
Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-11-02 14:37:28 +01:00
Bjarne Fyrstenborg
f7d1ef722e Update webhook log table using constant (#15101) 2023-11-02 13:27:48 +01:00
Bjarne Fyrstenborg
29be27ba46 V13: Webhook corrections (#15077)
* 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
2023-11-01 16:55:03 +01:00
Bjarke Berg
6bd4642bb2 Merge remote-tracking branch 'origin/v12/dev' into v13/dev
# Conflicts:
#	src/Umbraco.Web.UI.Client/package-lock.json
#	src/Umbraco.Web.UI.Client/package.json
2023-11-01 12:26:08 +01:00
Bjarke Berg
c6e760c114 Merge remote-tracking branch 'origin/v11/dev' into v12/dev 2023-11-01 12:24:04 +01:00
Bjarke Berg
1ce71b6760 Merge remote-tracking branch 'origin/v10/dev' into v11/dev 2023-11-01 12:21:12 +01:00
Elitsa Marinovska
fc81cc8f38 Check content permissions before performing action (#15043)
* 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
2023-11-01 11:50:24 +01:00
Nikolaj Geisle
52fd853d52 Move to core (#15084) 2023-11-01 11:47:27 +01:00
Elitsa Marinovska
92af8ac881 Check content permissions before performing action (#15043)
* 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
2023-11-01 11:30:32 +01:00
Niels Lyngsø
ae84d324ab V13/feature/blocks in rte (#15029)
* 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 283e8aa473fdfde075197d34aa47e35dfc64a8ae.

---------

Co-authored-by: kjac <kja@umbraco.dk>
2023-10-31 12:52:35 +01:00
Andy Butland
d08d141bcf Updates and support for re-use of CMS logic in Deploy (#14990)
* 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
2023-10-31 12:38:44 +01:00
Bjarke Berg
6658a521b2 Dynamic Root (Alternative to XPath in MNTP) (#15035)
* 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>
2023-10-31 11:38:24 +01:00
Nikolaj Geisle
1b34d33eb7 Webhooks administration from Backoffice (#15050)
* 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>
2023-10-31 10:06:14 +01:00