Commit Graph

2517 Commits

Author SHA1 Message Date
Kenn Jacobsen
21126b7ba6 Localize validation messages with user lang files (#15820)
* Localize validation messages with user lang files

* Fixed unit tests
2024-03-04 12:50:24 +01:00
Sven Geusens
129adf2699 Fix excessive datatype load times in propertyValueEditors and backoffice mapping (#15731)
* 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>
2024-02-21 09:05:44 +01:00
Mehmet
5d0486fddc Add missing list view usages to data type references (#14485) (#14617)
* Add missing list view usages to data type references (#14485)

* Added default implementation #14617
2024-02-06 14:50:16 +00:00
Bjarke Berg
088f907dcc Merge remote-tracking branch 'origin/v12/dev' into v13/dev
# Conflicts:
#	src/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollection.cs
#	src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs
#	src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyValueEditor.cs
#	tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueEditorReuseTests.cs
#	tests/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs
2024-01-23 13:40:07 +01:00
Ronald Barendse
ce22315520 Backport relation tracking fixes and get references from recursive (nested/block) properties (#15593)
* 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)
2024-01-19 20:06:41 +01:00
Jacob Overgaard
77861ae55b V13: Load TinyMCE premium plugins through tiny.cloud (#15367)
* 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
2024-01-08 08:58:57 +01:00
Bjarke Berg
8a9e6ee82d Merge remote-tracking branch 'origin/v12/dev' into v13/dev
# Conflicts:
#	global.json
#	src/Umbraco.Cms.StaticAssets/umbraco/UmbracoBackOffice/Default.cshtml
#	src/Umbraco.Cms.StaticAssets/wwwroot/App_Plugins/Umbraco.BlockGridEditor.DefaultCustomViews/umbBlockGridDemoRichTextBlock.html
#	src/Umbraco.Core/EmbeddedResources/Lang/da.xml
#	src/Umbraco.Core/EmbeddedResources/Lang/en.xml
#	src/Umbraco.Core/EmbeddedResources/Lang/fr.xml
#	src/Umbraco.Core/EmbeddedResources/Lang/tr.xml
#	src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
#	src/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJob.cs
#	src/Umbraco.Infrastructure/BackgroundJobs/RecurringBackgroundJobHostedServiceRunner.cs
#	src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs
#	src/Umbraco.Web.UI.Client/src/common/services/blockeditormodelobject.service.js
#	src/Umbraco.Web.UI.Client/src/common/services/editor.service.js
#	src/Umbraco.Web.UI.Client/src/views/components/application/umb-login.html
#	src/Umbraco.Web.UI/Startup.cs
#	tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Login/login.spec.ts
#	tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJobTests.cs
#	version.json
2023-12-13 09:55:34 +01:00
Bjarke Berg
cf2ec50d15 Merge remote-tracking branch 'origin/release/12.3.4' into v12/dev
# Conflicts:
#	version.json
2023-12-08 13:34:41 +01:00
Nikolaj Geisle
b50353b238 V13: Log webhook firing exceptions when they happen (#15393)
* Refactor Webhook logging to handle exceptions

* Add Exception occured property to WebhookLog.
2023-12-07 14:25:26 +01:00
Vitor Rodrigues
a4b4107190 Expose the Delivery API CLR type (#15150)
* 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)
2023-12-01 13:50:18 +01:00
Vitor Rodrigues
7f4378066d Expose the Delivery API CLR type (#15150)
* Expose the Delivery API CLR type

* Updated field naming and warnings

Addresses PR feedback

* Added default implementation to prevent breaking change
2023-12-01 13:43:39 +01:00
Kenn Jacobsen
016709eecd Add query string info to links in API output (#15327) 2023-11-30 10:36:53 +01:00
Nikolaj Geisle
8755703845 V13: Implement webook as i entity (#15267)
* Add webhook service to service context

* Refactor webhooks to implement IEntity

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-11-21 14:38:47 +01:00
Ronald Barendse
48bfbb00cd Clear cached PublishedDataTypes when content types are updated (#15253)
* Clear cached PublishedDataTypes when content types are updated

* Optimize published data type cache initialization
2023-11-21 10:28:26 +01:00
Bjarke Berg
c22783e45e Merge remote-tracking branch 'origin/release/13.0' into v13/dev 2023-11-14 12:43:11 +01:00
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
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
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
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
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
Jacob Overgaard
a27267e5d3 V13: New login screen (#14780)
* 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 46ae282f7ce9235c15f160d57d54acd5d3378668.

* 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 0c6659d8d9dfe0664314ec6a3acaa8e20cb606ed.

* 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>
2023-10-23 10:06:17 +02:00
kjac
3169ff9581 Merge branch 'v12/dev' into v13/dev
# Conflicts:
#	build/azure-pipelines.yml
#	src/Umbraco.Core/Configuration/Models/SecuritySettings.cs
#	version.json
2023-10-22 11:23:04 +02:00
Lucas Bach Bisgaard
738749b705 Fixes #14351 - Using Fallback to default langauge on a specific item changes the whole VariationContext (#14620) 2023-10-17 13:24:24 +02:00
Sebastiaan Janssen
13913cd9fb Merge branch 'v12/dev' into contrib
# Conflicts:
#	version.json
2023-10-16 12:53:07 +02:00
Kenn Jacobsen
4bd9baa2eb Backport Delivery API member auth from V14 (#14964)
* Backport Delivery API member auth from V14

* Add default implementations to avoid breakage

* Review changes
2023-10-16 11:25:29 +02:00
Bjarke Berg
8af8a2b755 Merge remote-tracking branch 'origin/v13/dev' into v13/dev 2023-09-12 09:57:41 +02:00
Nikolaj Brask-Nielsen
6d48091328 docs: XML warnings (#14663)
* 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 8ea61c51ac161e1853ae080db7fe1b4d4cb4d2be.
2023-09-06 20:08:17 +02:00
Kenn Jacobsen
280d0a236b Breaking changes for the Delivery API (#14745)
* Use interfaces for API media return values + introduce dedicated models for crops and focal points

* Move content and media controllers to their own namespaces
2023-09-06 09:49:44 +02:00
Vitor Rodrigues
efe00910f3 DeliveryApi: Ensure the ContentType property is serialized first
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.
2023-08-29 12:34:36 +02:00
Elitsa Marinovska
ba423a0108 V12: Add ISO codes to make the migration from language IDs easier (#14567)
* 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
2023-07-18 10:53:14 +02:00
Nikolaj Geisle
d116366b28 V12: Deprecate XPath (#14372)
* Deprecate all outward facing methods that uses XPath

* Add more obsolete messages

---------

Co-authored-by: Zeegaan <nge@umbraco.dk>
2023-07-07 11:12:04 +02:00
Kenn Jacobsen
fad710364c Add additional preview URLs option (#14479) 2023-06-30 08:26:31 +03:00
Bjarke Berg
f04b49a96c Merge remote-tracking branch 'origin/release/12.0' into v12/dev 2023-06-27 09:18:08 +02:00
Kenn Jacobsen
2c9d0b2cb1 Add create and update dates to Delivery API response (#14427)
Co-authored-by: Elitsa <elm@umbraco.dk>
2023-06-26 08:33:16 +03:00
Sebastiaan Janssen
8447350915 Merge branch 'v12/dev' into contrib 2023-06-08 10:24:39 +02:00
Bjarne Fyrstenborg
676efb9f89 Show summary of Examine search results (#14300) 2023-05-31 17:25:24 +02:00
Kenn Jacobsen
3b433e6658 Expose "expanding" state in API value conversion (#14312)
* Expose "expanding" state in API value conversion

* Add unit test

* Add non-breaking and obsoletion

* Add compat suppressions
2023-05-31 08:46:30 +02:00
Kenn Jacobsen
53e0227c98 Fix the namespace for PagedModel (#14296)
* Fix the namespace for PagedModel

* Add compat suppressions
2023-05-25 11:27:37 +02:00
Kenn Jacobsen
c5e524c9b9 Wrap RTE content in a dedicated model for future expansion (#14258) 2023-05-16 19:08:38 +02:00
Bjarke Berg
d48a8d7c75 Merge remote-tracking branch 'origin/v11/dev' into v12/dev
# Conflicts:
#	src/Umbraco.Cms.ManagementApi/ViewModels/Installer/InstallViewModel.cs
2023-05-15 07:57:45 +02:00
Bjarke Berg
a29d63475c Merge remote-tracking branch 'origin/v10/dev' into v11/dev 2023-05-15 07:55:39 +02:00
Andreas Zerbst
5b73fc19ee V10: Fix NoopPublishedValuefallback varation context member not implemented (#14227)
* Added missing VariationContextAccessor

* Fixed identation
2023-05-10 14:31:40 +02:00
Kenn Jacobsen
b0f42a2c86 Move the built-in properties back to the delivery API media model + support property expansion for other media properties (#14224)
Co-authored-by: Elitsa <elm@umbraco.dk>
2023-05-10 14:04:42 +02:00
Kenn Jacobsen
e3e6582715 Always use text elements in RTE JSON output (#14220)
* Always wrap text in #text elements for RTE JSON output

* Small cleanup

---------

Co-authored-by: Elitsa <elm@umbraco.dk>
2023-05-10 08:47:23 +02:00
Bjarke Berg
7ca6cb97d3 Merge remote-tracking branch 'origin/v12/dev' into v12/dev 2023-05-08 16:59:57 +02:00
Bjarke Berg
aee358330d Merge remote-tracking branch 'origin/v11/dev' into v12/dev
# Conflicts:
#	src/Umbraco.Cms.ManagementApi/Controllers/ModelsBuilder/BuildModelsBuilderController.cs
#	src/Umbraco.Cms.ManagementApi/DependencyInjection/MappingBuilderExtensions.cs
#	src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs
#	tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Tabs/tabs.spec.ts
2023-05-08 16:57:26 +02:00
Elitsa Marinovska
43e0dfc7c7 Delivery API: Make classes sealed (#14214)
* 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>
2023-05-08 13:20:02 +02:00
Lucas Bach Bisgaard
2aa9ceab1a Add member system fields to ListView (#14069)
* 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>
2023-04-28 16:37:22 +02:00
Kenn Jacobsen
ced4f84dfe JSON output from RTE - review changes (#14139) 2023-04-21 11:42:49 +02:00
Bjarke Berg
c06e89af64 Content Delivery API (#14051)
* 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 78e1f748e55383baecd123d06457111e18f13365.

* Revert "Delivery API: Content routing and structure (#13984)"

This reverts commit a0292ae5350362dd6c1c5bc9763deda928c78a75.

* Revert "Fix multi URL picker value converter trying to access disposed objects in edge cases"

This reverts commit 6b7c37a5bf7871bee93a2b2640bbc6ef591f14db.

* 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 78e1f748e55383baecd123d06457111e18f13365.

* Revert "Delivery API: Content routing and structure (#13984)"

This reverts commit a0292ae5350362dd6c1c5bc9763deda928c78a75.

* Revert "Fix multi URL picker value converter trying to access disposed objects in edge cases"

This reverts commit 6b7c37a5bf7871bee93a2b2640bbc6ef591f14db.

* 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>
2023-04-19 11:21:31 +02:00