Skip to content

Commit f09e4a9

Browse files
Merge pull request #2976 from dpfaffenbauer/studiov2
[Studio] implement Studio
2 parents 008bd57 + 4aaad0f commit f09e4a9

File tree

17 files changed

+318
-334
lines changed

17 files changed

+318
-334
lines changed

composer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@
149149
"phpstan/phpstan-webmozart-assert": "^2.0",
150150
"phpunit/phpunit": "^10.0",
151151
"pimcore/opensearch-client": "^2.1",
152+
"pimcore/generic-data-index-bundle": "2.x-dev",
153+
"pimcore/google-marketing-bundle": "^2.0",
154+
"pimcore/studio-backend-bundle": "^0.12.18",
155+
"pimcore/studio-ui-bundle": "^0.12.18",
152156
"robertfausk/behat-panther-extension": "^1.2",
153157
"symfony/browser-kit": "^6.4.14 || ^7.2",
154158
"symfony/css-selector": "^6.4.14 || ^7.2",

config/bundles.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
<?php
22

33
return [
4-
Pimcore\Bundle\SimpleBackendSearchBundle\PimcoreSimpleBackendSearchBundle::class => ['all' => true],
5-
Pimcore\Bundle\SeoBundle\PimcoreSeoBundle::class => ['all' => true],
64
Pimcore\Bundle\ApplicationLoggerBundle\PimcoreApplicationLoggerBundle::class => ['all' => true],
75
Pimcore\Bundle\StaticRoutesBundle\PimcoreStaticRoutesBundle::class => ['all' => true],
8-
Pimcore\Bundle\NewsletterBundle\PimcoreNewsletterBundle::class => ['all' => true],
96
Pimcore\Bundle\OpenSearchClientBundle\PimcoreOpenSearchClientBundle::class => ['all' => true],
107
Pimcore\Bundle\StudioUiBundle\PimcoreStudioUiBundle::class => ['all' => true],
11-
\Pimcore\Bundle\StudioBackendBundle\PimcoreStudioBackendBundle::class => ['all' => true],
8+
Pimcore\Bundle\StudioBackendBundle\PimcoreStudioBackendBundle::class => ['all' => true],
129
Pimcore\Bundle\GenericDataIndexBundle\PimcoreGenericDataIndexBundle::class => ['all' => true],
1310
Pimcore\Bundle\GenericExecutionEngineBundle\PimcoreGenericExecutionEngineBundle::class => ['all' => true],
14-
\Pimcore\Bundle\AdminBundle\PimcoreAdminBundle::class => ['all' => true],
1511
];

config/packages/security.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ security:
2525
http_basic: ~
2626

2727
# Pimcore Admin Bundle firewall
28-
pimcore_admin: '%pimcore_admin_bundle.firewall_settings%'
28+
# pimcore_admin: '%pimcore_admin_bundle.firewall_settings%'
2929
pimcore_studio: '%pimcore_studio_backend.firewall_settings%'
3030

3131

@@ -53,13 +53,13 @@ security:
5353

5454
access_control:
5555
# Pimcore admin ACl // DO NOT CHANGE!
56-
- { path: ^/admin/settings/display-custom-logo, roles: PUBLIC_ACCESS }
57-
- { path: ^/admin/login/2fa-verify, roles: IS_AUTHENTICATED_2FA_IN_PROGRESS }
58-
- { path: ^/admin/login/2fa-setup, roles: ROLE_PIMCORE_USER }
59-
- { path: ^/admin/login/2fa, roles: IS_AUTHENTICATED_2FA_IN_PROGRESS }
60-
- { path: ^/admin/login$, roles: PUBLIC_ACCESS }
61-
- { path: ^/admin/login/(login|lostpassword|deeplink|csrf-token)$, roles: PUBLIC_ACCESS }
62-
- { path: ^/admin, roles: ROLE_PIMCORE_USER }
56+
# - { path: ^/admin/settings/display-custom-logo, roles: PUBLIC_ACCESS }
57+
# - { path: ^/admin/login/2fa-verify, roles: IS_AUTHENTICATED_2FA_IN_PROGRESS }
58+
# - { path: ^/admin/login/2fa-setup, roles: ROLE_PIMCORE_USER }
59+
# - { path: ^/admin/login/2fa, roles: IS_AUTHENTICATED_2FA_IN_PROGRESS }
60+
# - { path: ^/admin/login$, roles: PUBLIC_ACCESS }
61+
# - { path: ^/admin/login/(login|lostpassword|deeplink|csrf-token)$, roles: PUBLIC_ACCESS }
62+
# - { path: ^/admin, roles: ROLE_PIMCORE_USER }
6363
- { path: ^/asset/webdav, roles: ROLE_PIMCORE_USER }
6464
- { path: "%coreshop.security.frontend_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] }
6565
- { path: "%coreshop.security.frontend_regex%/_partial", role: ROLE_NO_ACCESS }

config/reference.php

Lines changed: 11 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -125,19 +125,6 @@
125125
* ...<string, DefinitionType|AliasType|PrototypeType|StackType|ArgumentsType|null>
126126
* }
127127
* @psalm-type ExtensionType = array<string, mixed>
128-
* @psalm-type PimcoreSeoConfig = array{
129-
* sitemaps?: array{
130-
* generators?: array<string, bool|string|array{ // Default: []
131-
* enabled?: bool|Param, // Default: true
132-
* generator_id?: scalar|Param|null,
133-
* priority?: int|Param, // Default: 0
134-
* }>,
135-
* },
136-
* redirects?: array{
137-
* status_codes?: list<scalar|Param|null>,
138-
* auto_create_redirects?: bool|Param, // Auto create redirects on moving documents & changing pretty url, updating Url slugs in Data Objects. // Default: false
139-
* },
140-
* }
141128
* @psalm-type PimcoreStaticRoutesConfig = array{
142129
* definitions?: list<array{ // Default: []
143130
* name?: scalar|Param|null,
@@ -161,23 +148,6 @@
161148
* },
162149
* },
163150
* }
164-
* @psalm-type PimcoreNewsletterConfig = array{
165-
* sender?: array{
166-
* name?: scalar|Param|null,
167-
* email?: scalar|Param|null,
168-
* },
169-
* return?: array{
170-
* name?: scalar|Param|null,
171-
* email?: scalar|Param|null,
172-
* },
173-
* method?: scalar|Param|null, // Default: null
174-
* debug?: array{
175-
* email_addresses?: scalar|Param|null, // Default: ""
176-
* },
177-
* use_specific?: bool|Param, // Default: false
178-
* source_adapters?: array<string, scalar|Param|null>,
179-
* default_url_prefix?: scalar|Param|null, // Default: null
180-
* }
181151
* @psalm-type PimcoreOpenSearchClientConfig = array{
182152
* clients?: array<string, array{ // Default: []
183153
* name?: scalar|Param|null,
@@ -429,103 +399,6 @@
429399
* error_handling?: "continue_on_error"|"stop_on_first_error"|Param, // Error handling behavior which should be used by the job run. Overrides the global value.
430400
* }>,
431401
* }
432-
* @psalm-type PimcoreAdminConfig = array{
433-
* gdpr_data_extractor?: array{
434-
* dataObjects?: array{ // Settings for DataObjects DataProvider
435-
* classes?: list<array{ // MY_CLASS_NAME: include: true allowDelete: false includedRelations: - manualSegemens - calculatedSegments // Default: []
436-
* include?: bool|Param, // Set if class should be considered in export. // Default: true
437-
* allowDelete?: bool|Param, // Allow delete of objects directly in preview grid. // Default: false
438-
* includedRelations?: list<scalar|Param|null>,
439-
* }>,
440-
* },
441-
* assets?: array{ // Settings for Assets DataProvider
442-
* types?: list<array{ // asset types // Default: []
443-
* }>,
444-
* },
445-
* },
446-
* objects?: array{
447-
* notes_events?: array{
448-
* types?: list<scalar|Param|null>,
449-
* },
450-
* },
451-
* assets?: array{
452-
* notes_events?: array{
453-
* types?: list<scalar|Param|null>,
454-
* },
455-
* hide_edit_image?: bool|Param, // Default: false
456-
* disable_tree_preview?: bool|Param, // Default: true
457-
* },
458-
* documents?: array{
459-
* notes_events?: array{
460-
* types?: list<scalar|Param|null>,
461-
* },
462-
* email_search?: list<scalar|Param|null>,
463-
* },
464-
* notifications?: bool|array{
465-
* enabled?: bool|Param, // Default: true
466-
* check_new_notification?: bool|array{ // Can be used to enable or disable the check of new notifications (url: /admin/notification/find-last-unread).
467-
* enabled?: bool|Param, // Default: true
468-
* interval?: int|Param, // Interval in seconds to check new notifications // Default: 30
469-
* },
470-
* },
471-
* user?: array{
472-
* default_key_bindings?: list<array{ // Default: []
473-
* key: scalar|Param|null,
474-
* action: scalar|Param|null,
475-
* alt?: scalar|Param|null, // Default: false
476-
* ctrl?: scalar|Param|null, // Default: false
477-
* shift?: scalar|Param|null, // Default: false
478-
* }>,
479-
* },
480-
* admin_languages?: list<scalar|Param|null>,
481-
* csrf_protection?: array{
482-
* excluded_routes?: list<scalar|Param|null>,
483-
* },
484-
* admin_csp_header?: bool|array{ // Can be used to enable or disable the Content Security Policy headers.
485-
* enabled?: bool|Param, // Default: true
486-
* exclude_paths?: list<scalar|Param|null>,
487-
* additional_urls?: array{
488-
* default-src?: list<scalar|Param|null>,
489-
* img-src?: list<scalar|Param|null>,
490-
* script-src?: list<scalar|Param|null>,
491-
* style-src?: list<scalar|Param|null>,
492-
* connect-src?: list<scalar|Param|null>,
493-
* font-src?: list<scalar|Param|null>,
494-
* media-src?: list<scalar|Param|null>,
495-
* frame-src?: list<scalar|Param|null>,
496-
* },
497-
* },
498-
* custom_admin_path_identifier?: scalar|Param|null, // Default: null
499-
* custom_admin_route_name?: scalar|Param|null, // Default: "my_custom_admin_entry_point"
500-
* branding?: array{
501-
* login_screen_invert_colors?: bool|Param, // Default: false
502-
* color_login_screen?: scalar|Param|null, // Default: null
503-
* color_admin_interface?: scalar|Param|null, // Default: null
504-
* color_admin_interface_background?: scalar|Param|null, // Default: null
505-
* login_screen_custom_image?: scalar|Param|null, // Default: ""
506-
* },
507-
* session?: array{
508-
* attribute_bags?: array<string, array{ // Default: []
509-
* storage_key?: scalar|Param|null, // Default: null
510-
* }>,
511-
* },
512-
* translations?: array{
513-
* path?: scalar|Param|null, // Default: null
514-
* },
515-
* security_firewall?: mixed,
516-
* config_location?: array{
517-
* admin_system_settings?: array{
518-
* write_target?: array{
519-
* type?: "symfony-config"|"settings-store"|"disabled"|Param, // Default: "symfony-config"
520-
* options?: list<mixed>,
521-
* },
522-
* read_target?: array{
523-
* type?: "symfony-config"|"settings-store"|Param, // Default: null
524-
* options?: list<mixed>,
525-
* },
526-
* },
527-
* },
528-
* }
529402
* @psalm-type PimcoreCustomReportsConfig = array{
530403
* definitions?: list<array{ // Default: []
531404
* id?: scalar|Param|null,
@@ -3890,6 +3763,16 @@
38903763
* },
38913764
* }>,
38923765
* }
3766+
* @psalm-type WebpackEncoreConfig = array{
3767+
* output_path: scalar|Param|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath()
3768+
* crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false
3769+
* preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false
3770+
* cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false
3771+
* strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true
3772+
* builds?: array<string, scalar|Param|null>,
3773+
* script_attributes?: array<string, scalar|Param|null>,
3774+
* link_attributes?: array<string, scalar|Param|null>,
3775+
* }
38933776
* @psalm-type DebugConfig = array{
38943777
* max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500
38953778
* min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1
@@ -3905,27 +3788,6 @@
39053788
* intercept_redirects?: bool|Param, // Default: false
39063789
* excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt"
39073790
* }
3908-
* @psalm-type PrestaSitemapConfig = array{
3909-
* generator?: scalar|Param|null, // Default: "presta_sitemap.generator_default"
3910-
* dumper?: scalar|Param|null, // Default: "presta_sitemap.dumper_default"
3911-
* timetolive?: int|Param, // Default: 3600
3912-
* sitemap_file_prefix?: scalar|Param|null, // Sets sitemap filename prefix defaults to "sitemap" -> sitemap.xml (for index); sitemap.<section>.xml(.gz) (for sitemaps) // Default: "sitemap"
3913-
* items_by_set?: int|Param, // The maximum number of items allowed in single sitemap. // Default: 50000
3914-
* route_annotation_listener?: scalar|Param|null, // Default: true
3915-
* dump_directory?: scalar|Param|null, // The directory to which the sitemap will be dumped. It can be either absolute, or relative (to the place where the command will be triggered). Default to Symfony's public dir. // Default: "%kernel.project_dir%/public"
3916-
* defaults?: array{
3917-
* priority?: scalar|Param|null, // Default: 0.5
3918-
* changefreq?: scalar|Param|null, // Default: "daily"
3919-
* lastmod?: scalar|Param|null, // Default: "now"
3920-
* },
3921-
* default_section?: scalar|Param|null, // The default section in which static routes are registered. // Default: "default"
3922-
* alternate?: bool|array{ // Automatically generate alternate (hreflang) urls with static routes. Requires route_annotation_listener config to be enabled.
3923-
* enabled?: bool|Param, // Default: false
3924-
* default_locale?: scalar|Param|null, // The default locale of your routes. // Default: "en"
3925-
* locales?: list<scalar|Param|null>,
3926-
* i18n?: "symfony"|"jms"|Param, // Strategy used to create your i18n routes. // Default: "symfony"
3927-
* },
3928-
* }
39293791
* @psalm-type PimcoreElasticsearchClientConfig = array{
39303792
* es_clients?: array<string, array{ // Default: []
39313793
* name?: scalar|Param|null,
@@ -3964,16 +3826,6 @@
39643826
* default_cookie_lifetime?: int|Param, // Default lifetime of the cookie containing the JWT, in seconds. Defaults to the value of "framework.session.cookie_lifetime". // Default: null
39653827
* enable_profiler?: bool|Param, // Deprecated: The child node "enable_profiler" at path "mercure.enable_profiler" is deprecated. // Enable Symfony Web Profiler integration.
39663828
* }
3967-
* @psalm-type WebpackEncoreConfig = array{
3968-
* output_path: scalar|Param|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath()
3969-
* crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false
3970-
* preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false
3971-
* cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false
3972-
* strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true
3973-
* builds?: array<string, scalar|Param|null>,
3974-
* script_attributes?: array<string, scalar|Param|null>,
3975-
* link_attributes?: array<string, scalar|Param|null>,
3976-
* }
39773829
* @psalm-type KnpMenuConfig = array{
39783830
* providers?: array{
39793831
* builder_alias?: bool|Param, // Default: true
@@ -4627,15 +4479,12 @@
46274479
* imports?: ImportsConfig,
46284480
* parameters?: ParametersConfig,
46294481
* services?: ServicesConfig,
4630-
* pimcore_seo?: PimcoreSeoConfig,
46314482
* pimcore_static_routes?: PimcoreStaticRoutesConfig,
4632-
* pimcore_newsletter?: PimcoreNewsletterConfig,
46334483
* pimcore_open_search_client?: PimcoreOpenSearchClientConfig,
46344484
* pimcore_studio_ui?: PimcoreStudioUiConfig,
46354485
* pimcore_studio_backend?: PimcoreStudioBackendConfig,
46364486
* pimcore_generic_data_index?: PimcoreGenericDataIndexConfig,
46374487
* pimcore_generic_execution_engine?: PimcoreGenericExecutionEngineConfig,
4638-
* pimcore_admin?: PimcoreAdminConfig,
46394488
* pimcore_custom_reports?: PimcoreCustomReportsConfig,
46404489
* core_shop_menu?: CoreShopMenuConfig,
46414490
* jms_serializer?: JmsSerializerConfig,
@@ -4689,27 +4538,23 @@
46894538
* knp_paginator?: KnpPaginatorConfig,
46904539
* core_shop_core?: CoreShopCoreConfig,
46914540
* core_shop_storage_list?: CoreShopStorageListConfig,
4541+
* webpack_encore?: WebpackEncoreConfig,
46924542
* debug?: DebugConfig,
46934543
* web_profiler?: WebProfilerConfig,
4694-
* presta_sitemap?: PrestaSitemapConfig,
46954544
* pimcore_elasticsearch_client?: PimcoreElasticsearchClientConfig,
46964545
* mercure?: MercureConfig,
4697-
* webpack_encore?: WebpackEncoreConfig,
46984546
* knp_menu?: KnpMenuConfig,
46994547
* pimcore?: PimcoreConfig,
47004548
* "when@dev"?: array{
47014549
* imports?: ImportsConfig,
47024550
* parameters?: ParametersConfig,
47034551
* services?: ServicesConfig,
4704-
* pimcore_seo?: PimcoreSeoConfig,
47054552
* pimcore_static_routes?: PimcoreStaticRoutesConfig,
4706-
* pimcore_newsletter?: PimcoreNewsletterConfig,
47074553
* pimcore_open_search_client?: PimcoreOpenSearchClientConfig,
47084554
* pimcore_studio_ui?: PimcoreStudioUiConfig,
47094555
* pimcore_studio_backend?: PimcoreStudioBackendConfig,
47104556
* pimcore_generic_data_index?: PimcoreGenericDataIndexConfig,
47114557
* pimcore_generic_execution_engine?: PimcoreGenericExecutionEngineConfig,
4712-
* pimcore_admin?: PimcoreAdminConfig,
47134558
* },
47144559
* ...<string, ExtensionType|array{ // extra keys must follow the when@%env% pattern or match an extension alias
47154560
* imports?: ImportsConfig,

0 commit comments

Comments
 (0)