From bd020fa3fd73d0e4114b6420ce6da02540e935c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Wed, 2 Sep 2026 15:10:49 +0200 Subject: [PATCH 1/5] First batch of removal for SaaS --- .../config/packages/custom_routes.yaml | 4 - .../api/commerce/src/Command/CartCommand.php | 143 -- .../api/commerce/src/Command/OrderCommand.php | 119 - .../commerce/src/Command/PaymentCommand.php | 106 - .../src/Command/PaymentMethodCommand.php | 120 - .../commerce/src/Command/ShipmentCommand.php | 123 -- .../src/Command/ShippingMethodCommand.php | 146 -- .../Controller/CustomCheckoutController.php | 51 - .../checkout/custom_checkout.html.twig | 3 - .../assets/scss/notifications.scss | 7 - .../config/packages/notifications.yaml | 69 - .../api/notifications/config/services.yaml | 4 - .../api/notifications/notification_send.php | 16 - .../src/Command/NotificationSenderCommand.php | 67 - .../NotificationSenderController.php | 28 - .../src/Notifications/CommandExecuted.php | 54 - .../src/Notifications/ControllerFeedback.php | 9 - .../src/Notifier/Channel/LogChannel.php | 30 - .../notification-sender-controller.html.twig | 1 - .../notification-sender-controller.html.twig | 1 - .../api/notifications/webpack.config.js | 62 - .../collaboration/config/services.yaml | 48 - .../ibexa_collaboration_cart.mysql.sql | 7 - .../ibexa_collaboration_cart.postgresql.sql | 7 - .../Cart/CartResolverDecorator.php | 52 - .../src/Collaboration/Cart/CartSession.php | 31 - .../Cart/CartSessionCreateStruct.php | 29 - .../Collaboration/Cart/CartSessionType.php | 36 - .../Cart/CartSessionUpdateStruct.php | 13 - .../Cart/Mapper/CartProxyMapper.php | 37 - .../Cart/Mapper/CartProxyMapperInterface.php | 10 - .../Cart/Mapper/CartSessionDomainMapper.php | 43 - .../Mapper/CartSessionPersistenceMapper.php | 51 - .../Cart/PermissionResolverDecorator.php | 94 - .../Persistence/Gateway/DatabaseGateway.php | 71 - .../Persistence/Gateway/DatabaseSchema.php | 16 - .../Collaboration/Cart/Persistence/Mapper.php | 38 - .../Cart/Persistence/Values/CartSession.php | 27 - .../Values/CartSessionCreateStruct.php | 37 - .../Values/CartSessionUpdateStruct.php | 14 - .../Controller/ShareCartCreateController.php | 78 - .../Controller/ShareCartJoinController.php | 37 - .../src/Form/Data/ShareCartData.php | 21 - .../src/Form/Type/ShareCartType.php | 32 - .../themes/storefront/cart/share.html.twig | 9 - .../storefront/cart/share_result.html.twig | 10 - .../themes/storefront/cart/view.html.twig | 8 - .../examples/create_payment_method.yaml | 19 - .../examples/create_shipping_method.yaml | 45 - .../discounts/discount_code_create.yaml | 7 - .../examples/discounts/discount_create.yaml | 37 - .../examples/discounts/discount_update.yaml | 29 - code_samples/discounts/REST/Discount.json | 45 - .../src/Command/ManageDiscountsCommand.php | 87 - .../src/Command/OrderPriceCommand.php | 113 - .../Condition/IsAccountAnniversary.php | 33 - .../IsAccountAnniversaryConditionFactory.php | 16 - .../CurrentUserRegistrationDateResolver.php | 27 - .../IsAnniversaryResolver.php | 41 - .../RecentDiscountPrioritizationStrategy.php | 21 - .../Rule/PurchaseParityValueFormatter.php | 17 - .../Rule/PurchasingPowerParityRule.php | 44 - .../Rule/PurchasingPowerParityRuleFactory.php | 14 - .../Step/AnniversaryConditionStep.php | 14 - .../AnniversaryConditionStepFormListener.php | 37 - ...nniversaryConditionStepEventSubscriber.php | 51 - ...nniversaryConditionStepEventSubscriber.php | 71 - .../Form/Data/PurchasingPowerParityValue.php | 10 - ...PowerParityDiscountValueFormTypeMapper.php | 26 - .../PurchasingPowerParityFormMapper.php | 31 - .../PurchasingPowerParityValueMapper.php | 62 - .../Type/AnniversaryConditionStepType.php | 44 - .../PurchasingPowerParityValueType.php | 74 - code_samples/discounts/src/Query/Search.php | 29 - .../shop/checkout/assets/styles/checkout.css | 95 - .../checkout/config/packages/checkout.yaml | 109 - .../Controller/Checkout/OnePageCheckout.php | 52 - .../Step/SelectSeatStepController.php | 52 - .../src/Form/Type/OnePageCheckoutType.php | 76 - .../checkout/src/Form/Type/SelectSeatType.php | 27 - .../storefront/checkout/checkout.html.twig | 36 - .../checkout/step/select_seat.html.twig | 73 - .../themes/storefront/layout.html.twig | 20 - .../config/packages/ibexa.yaml | 74 - .../shop/payment/config/packages/ibexa.yaml | 39 - .../front/shop/payment/config/services.yaml | 26 - .../src/Form/Type/PayPalOptionsType.php | 24 - .../PayPal/OptionsFormMapper.php | 19 - .../src/PaymentMethodType/PayPal/PayPal.php | 20 - .../PayPal/UrlOptionValidator.php | 24 - .../config/services/payment_method.yaml | 14 - .../Voter/NewPaymentMethodTypeVoter.php | 19 - .../render_product/config/packages/views.yaml | 9 - .../templates/full/product.html.twig | 24 - .../shop/shipping/config/packages/ibexa.yaml | 89 - .../front/shop/shipping/config/services.yaml | 38 - .../Cost/CustomCostFormatter.php | 16 - .../CustomerNotNullValidator.php | 36 - .../Type/CustomShippingMethodOptionsType.php | 39 - .../Storage/StorageConverter.php | 24 - .../Storage/StorageDefinition.php | 23 - .../Storage/StorageSchema.php | 14 - .../ShippingMethodType/Voter/CustomVoter.php | 17 - .../translations/ibexa_shipping.en.yaml | 1 - .../storefront/config/packages/ibexa.yaml | 34 - .../BreadcrumbsMenuSubscriber.php | 27 - .../storefront/knp_menu/breadcrumbs.html.twig | 24 - .../storefront/storefront/product.html.twig | 19 - .../assets/js/add-to-shopping-list.ts | 18 - .../config/packages/views.yaml | 10 - .../src/Controller/ProductViewController.php | 35 - .../themes/standard/full/product.html.twig | 57 - .../add_to_shopping_list/webpack.config.js | 61 - .../shopping_list/install/schema.mysql.sql | 32 - .../install/schema.postgresql.sql | 35 - .../Ibexa/migrations/shopping_list_user.yaml | 33 - .../src/Command/ShoppingListFilterCommand.php | 69 - .../src/Command/ShoppingListMoveCommand.php | 75 - .../CartShoppingListTransferController.php | 96 - .../shopping_list/search/criteria.php | 15 - .../shopping_list/search/sort_clauses.php | 16 - .../shopping_list/shopping_list_rest_api.sh | 48 - code_samples/workflow/services/workflow.yaml | 5 - .../workflow/strategy/NewWorkflow.php | 25 - .../strategy/NewWorkflowConditionalStep.php | 25 - composer.json | 10 - .../back_office_elements/custom_components.md | 30 - .../back_office/notifications.md | 6 - .../dashboard/customize_dashboard.md | 4 +- .../project_organization/bundles.md | 19 +- .../recent_activity/recent_activity.md | 2 +- docs/api/event_reference/cart_events.md | 26 - docs/api/event_reference/discounts_events.md | 79 - docs/api/event_reference/event_reference.md | 4 - .../order_management_events.md | 16 - docs/api/event_reference/other_events.md | 2 +- docs/api/event_reference/payment_events.md | 29 - .../event_reference/shopping_list_events.md | 23 - docs/api/notification_channels.md | 299 --- docs/commerce/cart/cart.md | 134 -- docs/commerce/cart/cart_api.md | 211 -- .../cart/img/quick_order_add_order.png | Bin 23104 -> 0 bytes docs/commerce/cart/img/quick_order_list.png | Bin 14278 -> 0 bytes docs/commerce/cart/quick_order.md | 87 - docs/commerce/checkout/checkout.md | 59 - docs/commerce/checkout/checkout_api.md | 65 - docs/commerce/checkout/configure_checkout.md | 61 - docs/commerce/checkout/customize_checkout.md | 312 --- .../checkout/img/additional_checkout_step.png | Bin 102722 -> 0 bytes docs/commerce/checkout/img/checkout.png | Bin 36190 -> 0 bytes docs/commerce/checkout/img/reorder_button.png | Bin 127985 -> 0 bytes .../checkout/img/reorder_timeline.png | Bin 38867 -> 0 bytes .../checkout/img/single_page_checkout.png | Bin 48806 -> 0 bytes .../checkout/img/virtual_product_purchase.png | Bin 45098 -> 0 bytes docs/commerce/checkout/reorder.md | 128 -- docs/commerce/commerce.md | 52 - .../configure_order_management.md | 64 - .../order_management/order_management.md | 20 - .../order_management/order_management_api.md | 65 - docs/commerce/payment/configure_payment.md | 54 - .../payment/enable_paypal_payments.md | 45 - .../payment/enable_stripe_payments.md | 46 - docs/commerce/payment/extend_payment.md | 104 - .../payment/img/custom_payment_type.png | Bin 42987 -> 0 bytes .../payment/img/new_payment_method_type.png | Bin 104099 -> 0 bytes docs/commerce/payment/payment.md | 29 - docs/commerce/payment/payment_api.md | 65 - docs/commerce/payment/payment_method_api.md | 90 - .../payment/payment_method_filtering.md | 58 - docs/commerce/payment/payum_integration.md | 80 - .../shipping_management/configure_shipment.md | 47 - .../shipping_management/extend_shipping.md | 179 -- .../img/custom_shipping_method_type.png | Bin 178420 -> 0 bytes .../img/custom_shipping_type_validator.png | Bin 20363 -> 0 bytes .../img/shipping_method_cost_tab.png | Bin 84491 -> 0 bytes .../img/shipping_method_type_selection.png | Bin 35727 -> 0 bytes .../shipping_management/shipment_api.md | 63 - .../shipping_management.md | 27 - .../shipping_method_api.md | 71 - .../shopping_list/img/add_to_cart.png | Bin 54128 -> 0 bytes .../img/add_to_shopping_list_widget.png | Bin 18761 -> 0 bytes .../img/create_from_management.png | Bin 60897 -> 0 bytes .../shopping_list/img/create_from_product.png | Bin 20287 -> 0 bytes .../img/create_from_shopping_list.png | Bin 36630 -> 0 bytes .../shopping_list/img/move_to_my_wishlist.png | Bin 38979 -> 0 bytes .../img/shopping_list_belonging_1.png | Bin 10469 -> 0 bytes .../img/shopping_list_belonging_2.png | Bin 10488 -> 0 bytes .../shopping_list/install_shopping_list.md | 100 - docs/commerce/shopping_list/shopping_list.md | 31 - .../shopping_list/shopping_list_api.md | 149 -- .../shopping_list/shopping_list_design.md | 261 --- .../shopping_list/shopping_list_guide.md | 78 - .../storefront/configure_storefront.md | 95 - docs/commerce/storefront/extend_storefront.md | 119 - docs/commerce/storefront/storefront.md | 45 - .../extend_transactional_emails.md | 164 -- .../transactional_emails.md | 104 - .../transactional_emails_parameters.md | 65 - .../collaborative_editing.md | 1 - .../extend_collaborative_editing.md | 322 --- .../data_migration/importing_data.md | 49 +- .../images/add_image_asset_from_dam.md | 2 +- docs/content_management/locations.md | 2 +- .../pages/page_builder_guide.md | 6 +- docs/css/pills.css | 7 - .../customer_portal_guide.md | 2 +- docs/discounts/configure_discounts.md | 87 - docs/discounts/discounts.md | 37 - docs/discounts/discounts_api.md | 185 -- docs/discounts/discounts_guide.md | 173 -- docs/discounts/extend_discounts.md | 231 -- docs/discounts/extend_discounts_wizard.md | 174 -- docs/discounts/img/discount_list.png | Bin 138419 -> 0 bytes docs/getting_started/getting_started.md | 1 - docs/getting_started/install_cohesivo.md | 49 +- docs/getting_started/install_with_ddev.md | 7 +- docs/getting_started/requirements.md | 393 ---- docs/ibexa_cloud/ddev_and_ibexa_cloud.md | 111 - docs/ibexa_cloud/environment_variables.md | 144 -- docs/ibexa_cloud/ibexa_cloud.md | 17 - docs/ibexa_cloud/ibexa_cloud_cli.md | 78 - docs/ibexa_cloud/ibexa_cloud_guide.md | 131 -- docs/ibexa_cloud/install_on_ibexa_cloud.md | 118 - docs/ibexa_products/editions.md | 10 - docs/ibexa_products/ibexa_commerce.md | 129 -- docs/ibexa_products/ibexa_experience.md | 4 +- docs/index.md | 17 - .../cache/http_cache/reverse_proxy.md | 4 +- .../cache/persistence_cache.md | 4 - .../clustering/clustering.md | 4 +- .../clustering/clustering_with_ddev.md | 4 +- .../infrastructure_and_maintenance/logging.md | 20 - .../security/security_checklist.md | 4 +- .../sessions.md | 3 - docs/multisite/multisite_configuration.md | 2 +- .../siteaccess/siteaccess_matching.md | 4 +- docs/permissions/limitation_reference.md | 67 +- docs/permissions/permission_use_cases.md | 114 +- docs/permissions/policies.md | 146 +- docs/product_catalog/price_api.md | 3 +- docs/product_catalog/prices.md | 6 +- docs/product_catalog/product_catalog_guide.md | 10 +- docs/product_catalog/quable/quable_api.md | 2 - docs/product_catalog/quable/quable_guide.md | 1 - docs/product_guides/product_guides.md | 3 - .../raptor_integration/tracking_php_api.md | 2 +- docs/release_notes.md | 30 + docs/release_notes/ez_platform_v1.10.0.md | 112 - docs/release_notes/ez_platform_v1.11.0.md | 94 - docs/release_notes/ez_platform_v1.12.0.md | 91 - docs/release_notes/ez_platform_v1.13.0_lts.md | 62 - docs/release_notes/ez_platform_v1.7.0_lts.md | 102 - docs/release_notes/ez_platform_v1.8.0.md | 92 - docs/release_notes/ez_platform_v1.9.0.md | 82 - docs/release_notes/ez_platform_v2.0.0.md | 52 - docs/release_notes/ez_platform_v2.1.0.md | 87 - docs/release_notes/ez_platform_v2.2.0.md | 138 -- docs/release_notes/ez_platform_v2.3.md | 119 - docs/release_notes/ez_platform_v2.4.md | 240 -- docs/release_notes/ez_platform_v2.5.md | 281 --- docs/release_notes/ez_platform_v3.0.md | 340 --- .../ez_platform_v3.0_deprecations.md | 975 --------- docs/release_notes/ez_platform_v3.1.md | 154 -- docs/release_notes/ibexa_dxp_v3.2.md | 115 - docs/release_notes/ibexa_dxp_v3.3.md | 94 - docs/release_notes/ibexa_dxp_v4.0.md | 119 - .../ibexa_dxp_v4.0_deprecations.md | 272 --- docs/release_notes/ibexa_dxp_v4.1.md | 91 - docs/release_notes/ibexa_dxp_v4.2.md | 271 --- docs/release_notes/ibexa_dxp_v4.3.md | 171 -- docs/release_notes/ibexa_dxp_v4.4.md | 152 -- docs/release_notes/ibexa_dxp_v4.5.md | 252 --- docs/release_notes/ibexa_dxp_v4.6.md | 1946 ----------------- docs/release_notes/ibexa_dxp_v5.0.md | 1246 ----------- .../ibexa_dxp_v5.0_deprecations.md | 690 ------ .../img/2.1_object_state_lock.png | Bin 33158 -> 0 bytes .../img/2.2_block_settings_styling.png | Bin 14929 -> 0 bytes docs/release_notes/img/2.2_page_builder.png | Bin 1052166 -> 0 bytes .../img/2.2_page_builder_edit_fields.png | Bin 25034 -> 0 bytes .../img/2.2_permissions_in_user_view.png | Bin 20958 -> 0 bytes .../img/2.2_placeholder_generic_provider.png | Bin 171439 -> 0 bytes .../img/2.3_content_scheduler.png | Bin 49729 -> 0 bytes docs/release_notes/img/2.3_form_builder.png | Bin 44824 -> 0 bytes .../img/2.3_form_builder_submissions.png | Bin 41402 -> 0 bytes docs/release_notes/img/2.3_image_asset.png | Bin 13743 -> 0 bytes docs/release_notes/img/2.3_schedule_tab.png | Bin 15671 -> 0 bytes docs/release_notes/img/2.3_timeline_list.png | Bin 37341 -> 0 bytes docs/release_notes/img/2.3_udw_selection.png | Bin 31883 -> 0 bytes .../img/2.3_user_preferences.png | Bin 28731 -> 0 bytes .../img/2.4_content_type_translations.png | Bin 24872 -> 0 bytes .../img/2.4_drafts_admin_user.png | Bin 27128 -> 0 bytes .../release_notes/img/2.4_form_on_the_fly.png | Bin 58155 -> 0 bytes docs/release_notes/img/2.4_formatted_text.png | Bin 4812 -> 0 bytes docs/release_notes/img/2.4_link_in_image.png | Bin 89495 -> 0 bytes docs/release_notes/img/2.4_oe_menu.png | Bin 4058 -> 0 bytes docs/release_notes/img/2.4_policy_verbs.png | Bin 38625 -> 0 bytes .../release_notes/img/2.4_rich_text_block.png | Bin 29467 -> 0 bytes .../img/2.4_subitems_limit_pref.png | Bin 41267 -> 0 bytes docs/release_notes/img/2.4_translated_ct.png | Bin 19966 -> 0 bytes .../img/2.4_workflow_events_timeline.png | Bin 38204 -> 0 bytes .../img/2.5_back_office_improvements.png | Bin 56567 -> 0 bytes docs/release_notes/img/2.5_create_button.png | Bin 7377 -> 0 bytes .../img/2.5_hide_content_icon.png | Bin 4565 -> 0 bytes docs/release_notes/img/2.5_matrix_ft.png | Bin 31255 -> 0 bytes .../release_notes/img/2.5_product_version.png | Bin 28778 -> 0 bytes docs/release_notes/img/2.5_user_settings.png | Bin 38326 -> 0 bytes .../img/2.5_workflow_diagram.png | Bin 50140 -> 0 bytes .../release_notes/img/3.0_duplicate_roles.png | Bin 35016 -> 0 bytes .../img/3.1_collapsible_fields.png | Bin 34210 -> 0 bytes .../img/3.1_collapsible_fields_edit.png | Bin 23411 -> 0 bytes .../img/3.2_commerce_cockpit.png | Bin 51399 -> 0 bytes docs/release_notes/img/3.2_new_login_page.png | Bin 245681 -> 0 bytes .../img/3.2_new_ui_content_structure.png | Bin 71745 -> 0 bytes .../release_notes/img/3.2_targeting_block.png | Bin 21607 -> 0 bytes docs/release_notes/img/3.3_perso_ui.png | Bin 396945 -> 0 bytes .../img/3_1_Content_browser_Tree_view.png | Bin 27646 -> 0 bytes docs/release_notes/img/3_1_URL_Management.png | Bin 92398 -> 0 bytes .../release_notes/img/3_1_filter_elements.png | Bin 7313 -> 0 bytes docs/release_notes/img/4.0_catalog.png | Bin 56450 -> 0 bytes docs/release_notes/img/4.0_new_ui.png | Bin 94643 -> 0 bytes docs/release_notes/img/4.0_product_price.png | Bin 61624 -> 0 bytes docs/release_notes/img/4.1_content_tree.png | Bin 49259 -> 0 bytes .../img/4.1_measurement_attribute.png | Bin 6445 -> 0 bytes docs/release_notes/img/4.1_measurement_ft.png | Bin 22967 -> 0 bytes .../4.1_page_builder_dynamic_targeting.png | Bin 55500 -> 0 bytes .../img/4.1_taxonomy_lang_switcher.png | Bin 18357 -> 0 bytes .../img/4.2_address_field_type.png | Bin 116697 -> 0 bytes .../img/4.2_catalogs_product_list.png | Bin 41277 -> 0 bytes .../img/4.2_cdp_control_panel.png | Bin 659415 -> 0 bytes .../img/4.2_content_edit_tabs.png | Bin 30176 -> 0 bytes .../release_notes/img/4.2_customer_center.png | Bin 1170333 -> 0 bytes .../release_notes/img/4.2_customer_portal.png | Bin 915051 -> 0 bytes docs/release_notes/img/4.2_invite_users.png | Bin 602020 -> 0 bytes .../img/4.2_online_editor_dnd_image.png | Bin 50772 -> 0 bytes .../img/4.2_page_block_nested.png | Bin 38860 -> 0 bytes docs/release_notes/img/4.2_product_assets.png | Bin 282622 -> 0 bytes .../img/4.2_product_categories_rn.png | Bin 137459 -> 0 bytes .../img/4.2_product_completeness.png | Bin 45676 -> 0 bytes .../img/4.2_product_variants_generate.png | Bin 37875 -> 0 bytes docs/release_notes/img/4.3_collection_dnd.png | Bin 134109 -> 0 bytes .../img/4.3_edit_product_price.png | Bin 11454 -> 0 bytes .../img/4.3_self_registration.png | Bin 652973 -> 0 bytes .../img/4.4_connect_scenario_example.png | Bin 63919 -> 0 bytes docs/release_notes/img/4.4_new_cart.png | Bin 167103 -> 0 bytes docs/release_notes/img/4.4_new_checkout.png | Bin 36454 -> 0 bytes docs/release_notes/img/4.4_welcome_page.png | Bin 1715197 -> 0 bytes .../img/4.5_bestsellers_block.png | Bin 10916 -> 0 bytes .../release_notes/img/4.5_comparison_view.png | Bin 123624 -> 0 bytes docs/release_notes/img/4.5_order_list.png | Bin 110655 -> 0 bytes .../img/4.5_page_builder_b2b.png | Bin 126464 -> 0 bytes .../release_notes/img/4.5_payment_methods.png | Bin 90007 -> 0 bytes .../img/4.5_product_categories.png | Bin 81388 -> 0 bytes .../img/4.5_product_category_tree.png | Bin 82214 -> 0 bytes .../release_notes/img/4.5_react_app_block.png | Bin 10869 -> 0 bytes .../img/4.5_segment_management.png | Bin 87233 -> 0 bytes .../img/4.5_shipping_methods.png | Bin 111613 -> 0 bytes docs/release_notes/img/4.6_activity_list.png | Bin 215024 -> 0 bytes .../img/4.6_catalog_vat_rates.png | Bin 46486 -> 0 bytes .../img/4.6_content_type_icons.png | Bin 27508 -> 0 bytes .../img/4.6_customizable_dashboard.png | Bin 348386 -> 0 bytes docs/release_notes/img/4.6_discounts.png | Bin 99825 -> 0 bytes .../img/4.6_distraction_free_mode.png | Bin 217279 -> 0 bytes docs/release_notes/img/4.6_drafts.png | Bin 103444 -> 0 bytes .../4.6_editing_embedded_content_items.png | Bin 54877 -> 0 bytes docs/release_notes/img/4.6_focus_mode.png | Bin 196262 -> 0 bytes .../img/4.6_improved_editing.png | Bin 93967 -> 0 bytes .../img/4.6_page_builder_interface.png | Bin 162421 -> 0 bytes .../img/4.6_publishing_options.png | Bin 49714 -> 0 bytes docs/release_notes/img/4.6_quick_order.png | Bin 86641 -> 0 bytes docs/release_notes/img/4.6_shipments.png | Bin 184806 -> 0 bytes docs/release_notes/img/4.6_site_selector.png | Bin 64703 -> 0 bytes .../img/4.6_special_characters.png | Bin 32618 -> 0 bytes docs/release_notes/img/4.6_sub_items_tab.png | Bin 70536 -> 0 bytes .../img/5.0_Repository.PermissionResolver.png | Bin 174664 -> 0 bytes .../5.0_StepBuilder.AbstractStepFactory.png | Bin 132748 -> 0 bytes .../5.0_StepBuilder.StepFactoryInterface.png | Bin 55492 -> 0 bytes ....ReferenceDefinition.ResolverInterface.png | Bin 61908 -> 0 bytes .../img/5.0_collaborative_invitation.jpg | Bin 34568 -> 0 bytes .../img/5.0_open_in_profiler.png | Bin 188354 -> 0 bytes .../img/502_ai_connector_gpt_50.png | Bin 21708 -> 0 bytes .../img/502_notifications_screen.png | Bin 55966 -> 0 bytes docs/release_notes/img/Palpha1.gif | Bin 119875 -> 0 bytes docs/release_notes/img/add_translation.gif | Bin 776003 -> 0 bytes docs/release_notes/img/bookmark.png | Bin 13189 -> 0 bytes docs/release_notes/img/button.png | Bin 614 -> 0 bytes docs/release_notes/img/catsfromtheMET.gif | Bin 2065485 -> 0 bytes docs/release_notes/img/collection_block.png | Bin 42327 -> 0 bytes docs/release_notes/img/compare_results.png | Bin 30791 -> 0 bytes docs/release_notes/img/content_download.PNG | Bin 12138 -> 0 bytes docs/release_notes/img/contentbrowse.gif | Bin 2757169 -> 0 bytes docs/release_notes/img/contenttypeviews.png | Bin 80720 -> 0 bytes .../release_notes/img/copy_subtree_button.png | Bin 10512 -> 0 bytes docs/release_notes/img/cotf.png | Bin 36573 -> 0 bytes docs/release_notes/img/delete-form.gif | Bin 45428 -> 0 bytes .../img/demo-product-filters.png | Bin 803940 -> 0 bytes docs/release_notes/img/draft_conflict.png | Bin 20279 -> 0 bytes docs/release_notes/img/eztags.gif | Bin 6163060 -> 0 bytes docs/release_notes/img/filtered_search.png | Bin 44175 -> 0 bytes docs/release_notes/img/forgot_password.png | Bin 9567 -> 0 bytes docs/release_notes/img/form-builder-1.png | Bin 21663 -> 0 bytes docs/release_notes/img/formb.png | Bin 78492 -> 0 bytes .../img/future_publication_window.png | Bin 13492 -> 0 bytes docs/release_notes/img/i18n.png | Bin 57182 -> 0 bytes docs/release_notes/img/left_menu_tree.png | Bin 45286 -> 0 bytes docs/release_notes/img/link-options-oe.png | Bin 10816 -> 0 bytes docs/release_notes/img/link_manager.png | Bin 68051 -> 0 bytes docs/release_notes/img/newdesigntable.png | Bin 91406 -> 0 bytes docs/release_notes/img/notifications.gif | Bin 173159 -> 0 bytes .../img/oe-formatting-new-options.png | Bin 2734 -> 0 bytes docs/release_notes/img/participants_list.png | Bin 413516 -> 0 bytes .../img/personalizationblock.png | Bin 115942 -> 0 bytes docs/release_notes/img/platformui-table.gif | Bin 686059 -> 0 bytes docs/release_notes/img/productcontenttype.png | Bin 411332 -> 0 bytes .../img/relation_single_allowed_cts.png | Bin 14592 -> 0 bytes docs/release_notes/img/search.png | Bin 31843 -> 0 bytes docs/release_notes/img/section-details.png | Bin 7590 -> 0 bytes docs/release_notes/img/sub-items-improved.png | Bin 11437 -> 0 bytes docs/release_notes/img/subitem-sorting.png | Bin 17170 -> 0 bytes .../img/taxonomy_suggestions_content.png | Bin 46870 -> 0 bytes docs/release_notes/img/udw.png | Bin 111684 -> 0 bytes docs/release_notes/img/udwre.png | Bin 178954 -> 0 bytes docs/release_notes/img/url_aliases.png | Bin 18871 -> 0 bytes .../img/user_profile_preview.png | Bin 163643 -> 0 bytes docs/release_notes/img/v2_general_screen.png | Bin 57700 -> 0 bytes .../img/workflow_content_under_review.png | Bin 50316 -> 0 bytes docs/release_notes/release_notes.md | 13 - .../contributing/package_structure.md | 18 +- docs/resources/new_in_doc.md | 22 +- docs/resources/phpstorm_plugin.md | 5 +- .../order_company_associated_criterion.md | 25 - .../order_company_name_criterion.md | 25 - .../order_created_criterion.md | 29 - .../order_currency_code_criterion.md | 25 - .../order_customer_name_criterion.md | 25 - .../order_identifier_criterion.md | 25 - .../order_owner_criterion.md | 48 - .../order_price_criterion.md | 29 - .../order_search_criteria.md | 25 - .../order_source_criterion.md | 25 - .../order_status_criterion.md | 25 - .../payment_createdat_criterion.md | 27 - .../payment_currency_criterion.md | 24 - .../payment_id_criterion.md | 24 - .../payment_identifier_criterion.md | 24 - .../payment_logicaland_criterion.md | 29 - .../payment_logicalor_criterion.md | 29 - .../payment_method_createdat_criterion.md | 27 - .../payment_method_enabled_criterion.md | 24 - .../payment_method_id_criterion.md | 24 - .../payment_method_identifier_criterion.md | 24 - .../payment_method_logicaland_criterion.md | 29 - .../payment_method_logicalor_criterion.md | 28 - .../payment_method_name_criterion.md | 24 - .../payment_method_search_criteria.md | 25 - .../payment_method_type_criterion.md | 27 - .../payment_method_updatedat_criterion.md | 27 - .../payment_order_criterion.md | 27 - .../payment_payment_method_criterion.md | 27 - .../payment_search_criteria.md | 26 - .../payment_status_criterion.md | 24 - .../payment_updatedat_criterion.md | 27 - .../price_logicaland_criterion.md | 1 - .../price_logicalor_criterion.md | 1 - .../shipment_createdat_criterion.md | 29 - .../shipment_currency_criterion.md | 25 - .../shipment_id_criterion.md | 25 - .../shipment_identifier_criterion.md | 25 - .../shipment_logicaland_criterion.md | 28 - .../shipment_logicalor_criterion.md | 28 - .../shipment_owner_criterion.md | 45 - .../shipment_search_criteria.md | 25 - .../shipment_shipping_method_criterion.md | 26 - .../shipment_status_criterion.md | 25 - .../shipment_updatedat_criterion.md | 29 - .../discounts_criteria.md | 42 - .../discounts_sort_clauses.md | 36 - .../shopping_list_criteria.md | 38 - .../shopping_list_sort_clauses.md | 25 - .../order_created_sort_clause.md | 29 - .../order_id_sort_clause.md | 29 - .../order_sort_clauses.md | 17 - .../order_status_sort_clause.md | 29 - .../order_updated_sort_clause.md | 29 - .../payment_createdat_sort_clause.md | 29 - .../payment_id_sort_clause.md | 29 - .../payment_identifier_sort_clause.md | 29 - .../payment_method_createdat_sort_clause.md | 29 - .../payment_method_enabled_sort_clause.md | 29 - .../payment_method_id_sort_clause.md | 29 - .../payment_method_identifier_sort_clause.md | 29 - .../payment_method_sort_clauses.md | 20 - .../payment_method_updatedat_sort_clause.md | 29 - .../payment_sort_clauses.md | 19 - .../payment_status_sort_clause.md | 29 - .../payment_updatedat_sort_clause.md | 29 - .../shipment_createdat_sort_clause.md | 28 - .../shipment_id_sort_clause.md | 28 - .../shipment_identifier_sort_clause.md | 28 - .../shipment_sort_clauses.md | 20 - .../shipment_status_sort_clause.md | 28 - .../shipment_updatedat_sort_clause.md | 28 - docs/snippets/catalog_permissions_note.md | 4 - docs/snippets/commerce_badge.md | 1 - docs/snippets/release_46.md | 13 - docs/snippets/release_50.md | 13 - docs/snippets/update/check_out_version.md | 88 - docs/snippets/update/db/db_backup_warning.md | 9 - docs/snippets/update/db/update_db_2.5-3.3.md | 23 - docs/snippets/update/finish_the_update.md | 62 - docs/snippets/update/merge_composer.md | 54 - docs/snippets/update/notify_support.md | 6 - .../snippets/update/temporary_v4_conflicts.md | 10 - docs/snippets/update/update_app.md | 14 - .../update/vcl_configuration_for_fastly_v3.md | 13 - .../update/vcl_configuration_for_fastly_v4.md | 14 - docs/templating/components.md | 5 +- .../layout/customize_storefront_layout.md | 277 --- .../render_content/customize_product_view.md | 76 - .../cart_twig_functions.md | 19 - .../checkout_twig_functions.md | 78 - .../discounts_twig_functions.md | 101 - .../recommendations_twig_functions.md | 2 +- .../storefront_twig_functions.md | 124 -- .../twig_function_reference.md | 4 - .../urls_and_routes/custom_breadcrumbs.md | 72 - .../urls_and_routes/urls_and_routes.md | 11 +- .../1_implement_the_point2d_value_class.md | 2 +- .../from_1.x_2.x/update_app_to_2.5.md | 39 - .../from_1.x_2.x/update_db_to_2.5.md | 949 -------- .../from_1.x_2.x/update_from_1.x_2.x.md | 21 - .../from_2.5/adapt_code_to_v3.md | 103 - docs/update_and_migration/from_2.5/to_3.2.md | 29 - docs/update_and_migration/from_2.5/to_3.3.md | 162 -- .../update_code/1_update_templates.md | 45 - .../update_code/2_update_configuration.md | 66 - .../update_code/3_update_field_types.md | 55 - .../update_code/4_update_signal_slots.md | 39 - .../update_code/5_update_online_editor.md | 15 - .../from_2.5/update_code/6_update_workflow.md | 11 - .../update_code/7_update_extensions.md | 12 - .../from_2.5/update_code/8_update_rest.md | 57 - .../from_2.5/update_code/9_update_other.md | 68 - .../from_2.5/update_from_2.5.md | 21 - docs/update_and_migration/from_3.3/to_4.0.md | 289 --- .../from_3.3/update_from_3.3.md | 559 ----- docs/update_and_migration/from_4.0/to_4.1.md | 303 --- .../from_4.1/update_from_4.1.md | 148 -- .../from_4.2/update_from_4.2.md | 172 -- .../from_4.3/update_from_4.3.md | 22 - .../from_4.3/update_from_4.3_new_commerce.md | 433 ---- .../from_4.3/update_from_4.3_old_commerce.md | 224 -- .../from_4.4/update_from_4.4.md | 246 --- .../from_4.5/update_from_4.5.md | 496 ----- .../ibexa_oss_4.6.latest-to-5.0.0_mysql.sql | 252 --- ...exa_oss_4.6.latest-to-5.0.0_postgresql.sql | 285 --- .../from_4.6/update_from_4.6.md | 1001 --------- .../from_4.6/update_to_5.0.md | 1110 ---------- .../from_5.0/update_from_5.0.md | 540 ----- .../diagram_source/folder_structure_v3.xml | 1 - .../img/folder_structure_v3.png | Bin 27088 -> 0 bytes .../migrate_to_ibexa_dxp/common_issues.md | 85 - .../migrating_from_ez_publish.md | 70 - .../migrating_from_ez_publish_platform.md | 626 ------ docs/update_and_migration/update_system.md | 41 - docs/users/customer_groups.md | 4 +- .../img/notification-browser-storefront.png | Bin 14584 -> 0 bytes main.py | 2 +- mkdocs.yml | 238 +- phpstan-baseline.neon | 72 - plugins.yml | 88 +- scss/_variables.scss | 1 - scss/pills.scss | 1 - tests/python/test_page_metadata.py | 18 +- tests/python/test_preprocess.py | 10 +- tests/yaml-validation-baseline.yaml | 105 - theme/main.html | 4 +- tools/extract-inline-php.php | 4 +- tools/llms_txt/llmstxt_preprocess.py | 6 +- 578 files changed, 133 insertions(+), 32383 deletions(-) delete mode 100644 code_samples/api/commerce/config/packages/custom_routes.yaml delete mode 100644 code_samples/api/commerce/src/Command/CartCommand.php delete mode 100644 code_samples/api/commerce/src/Command/OrderCommand.php delete mode 100644 code_samples/api/commerce/src/Command/PaymentCommand.php delete mode 100644 code_samples/api/commerce/src/Command/PaymentMethodCommand.php delete mode 100644 code_samples/api/commerce/src/Command/ShipmentCommand.php delete mode 100644 code_samples/api/commerce/src/Command/ShippingMethodCommand.php delete mode 100644 code_samples/api/commerce/src/Controller/CustomCheckoutController.php delete mode 100644 code_samples/api/commerce/templates/theme/storefront/checkout/custom_checkout.html.twig delete mode 100644 code_samples/api/notifications/assets/scss/notifications.scss delete mode 100644 code_samples/api/notifications/config/packages/notifications.yaml delete mode 100644 code_samples/api/notifications/config/services.yaml delete mode 100644 code_samples/api/notifications/notification_send.php delete mode 100644 code_samples/api/notifications/src/Command/NotificationSenderCommand.php delete mode 100644 code_samples/api/notifications/src/Controller/NotificationSenderController.php delete mode 100644 code_samples/api/notifications/src/Notifications/CommandExecuted.php delete mode 100644 code_samples/api/notifications/src/Notifications/ControllerFeedback.php delete mode 100644 code_samples/api/notifications/src/Notifier/Channel/LogChannel.php delete mode 100644 code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig delete mode 100644 code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig delete mode 100644 code_samples/api/notifications/webpack.config.js delete mode 100644 code_samples/collaboration/config/services.yaml delete mode 100644 code_samples/collaboration/ibexa_collaboration_cart.mysql.sql delete mode 100644 code_samples/collaboration/ibexa_collaboration_cart.postgresql.sql delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/CartResolverDecorator.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/CartSession.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/CartSessionCreateStruct.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/CartSessionType.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/CartSessionUpdateStruct.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapper.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapperInterface.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionDomainMapper.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionPersistenceMapper.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/PermissionResolverDecorator.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseGateway.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseSchema.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Mapper.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSession.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionCreateStruct.php delete mode 100644 code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionUpdateStruct.php delete mode 100644 code_samples/collaboration/src/Controller/ShareCartCreateController.php delete mode 100644 code_samples/collaboration/src/Controller/ShareCartJoinController.php delete mode 100644 code_samples/collaboration/src/Form/Data/ShareCartData.php delete mode 100644 code_samples/collaboration/src/Form/Type/ShareCartType.php delete mode 100644 code_samples/collaboration/templates/themes/storefront/cart/share.html.twig delete mode 100644 code_samples/collaboration/templates/themes/storefront/cart/share_result.html.twig delete mode 100644 code_samples/collaboration/templates/themes/storefront/cart/view.html.twig delete mode 100644 code_samples/data_migration/examples/create_payment_method.yaml delete mode 100644 code_samples/data_migration/examples/create_shipping_method.yaml delete mode 100644 code_samples/data_migration/examples/discounts/discount_code_create.yaml delete mode 100644 code_samples/data_migration/examples/discounts/discount_create.yaml delete mode 100644 code_samples/data_migration/examples/discounts/discount_update.yaml delete mode 100644 code_samples/discounts/REST/Discount.json delete mode 100644 code_samples/discounts/src/Command/ManageDiscountsCommand.php delete mode 100644 code_samples/discounts/src/Command/OrderPriceCommand.php delete mode 100644 code_samples/discounts/src/Discounts/Condition/IsAccountAnniversary.php delete mode 100644 code_samples/discounts/src/Discounts/Condition/IsAccountAnniversaryConditionFactory.php delete mode 100644 code_samples/discounts/src/Discounts/ExpressionProvider/CurrentUserRegistrationDateResolver.php delete mode 100644 code_samples/discounts/src/Discounts/ExpressionProvider/IsAnniversaryResolver.php delete mode 100644 code_samples/discounts/src/Discounts/RecentDiscountPrioritizationStrategy.php delete mode 100644 code_samples/discounts/src/Discounts/Rule/PurchaseParityValueFormatter.php delete mode 100644 code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRule.php delete mode 100644 code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRuleFactory.php delete mode 100644 code_samples/discounts/src/Discounts/Step/AnniversaryConditionStep.php delete mode 100644 code_samples/discounts/src/Discounts/Step/AnniversaryConditionStepFormListener.php delete mode 100644 code_samples/discounts/src/Discounts/Step/Step1/AnniversaryConditionStepEventSubscriber.php delete mode 100644 code_samples/discounts/src/Discounts/Step/Step2/AnniversaryConditionStepEventSubscriber.php delete mode 100644 code_samples/discounts/src/Form/Data/PurchasingPowerParityValue.php delete mode 100644 code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityDiscountValueFormTypeMapper.php delete mode 100644 code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityFormMapper.php delete mode 100644 code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityValueMapper.php delete mode 100644 code_samples/discounts/src/Form/Type/AnniversaryConditionStepType.php delete mode 100644 code_samples/discounts/src/Form/Type/DiscountValue/PurchasingPowerParityValueType.php delete mode 100644 code_samples/discounts/src/Query/Search.php delete mode 100644 code_samples/front/shop/checkout/assets/styles/checkout.css delete mode 100644 code_samples/front/shop/checkout/config/packages/checkout.yaml delete mode 100644 code_samples/front/shop/checkout/src/Controller/Checkout/OnePageCheckout.php delete mode 100644 code_samples/front/shop/checkout/src/Controller/Checkout/Step/SelectSeatStepController.php delete mode 100644 code_samples/front/shop/checkout/src/Form/Type/OnePageCheckoutType.php delete mode 100644 code_samples/front/shop/checkout/src/Form/Type/SelectSeatType.php delete mode 100644 code_samples/front/shop/checkout/templates/themes/storefront/checkout/checkout.html.twig delete mode 100644 code_samples/front/shop/checkout/templates/themes/storefront/checkout/step/select_seat.html.twig delete mode 100644 code_samples/front/shop/checkout/templates/themes/storefront/layout.html.twig delete mode 100644 code_samples/front/shop/order-management/config/packages/ibexa.yaml delete mode 100644 code_samples/front/shop/payment/config/packages/ibexa.yaml delete mode 100644 code_samples/front/shop/payment/config/services.yaml delete mode 100644 code_samples/front/shop/payment/src/Form/Type/PayPalOptionsType.php delete mode 100644 code_samples/front/shop/payment/src/PaymentMethodType/PayPal/OptionsFormMapper.php delete mode 100644 code_samples/front/shop/payment/src/PaymentMethodType/PayPal/PayPal.php delete mode 100644 code_samples/front/shop/payment/src/PaymentMethodType/PayPal/UrlOptionValidator.php delete mode 100644 code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml delete mode 100644 code_samples/front/shop/payment/src/lib/PaymentMethod/Voter/NewPaymentMethodTypeVoter.php delete mode 100644 code_samples/front/shop/render_product/config/packages/views.yaml delete mode 100644 code_samples/front/shop/render_product/templates/full/product.html.twig delete mode 100644 code_samples/front/shop/shipping/config/packages/ibexa.yaml delete mode 100644 code_samples/front/shop/shipping/config/services.yaml delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Cost/CustomCostFormatter.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/CustomerNotNullValidator.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageConverter.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageDefinition.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageSchema.php delete mode 100644 code_samples/front/shop/shipping/src/ShippingMethodType/Voter/CustomVoter.php delete mode 100644 code_samples/front/shop/shipping/translations/ibexa_shipping.en.yaml delete mode 100644 code_samples/front/shop/storefront/config/packages/ibexa.yaml delete mode 100644 code_samples/front/shop/storefront/src/EventSubscriber/BreadcrumbsMenuSubscriber.php delete mode 100644 code_samples/front/shop/storefront/templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig delete mode 100644 code_samples/front/shop/storefront/templates/themes/storefront/storefront/product.html.twig delete mode 100644 code_samples/shopping_list/add_to_shopping_list/assets/js/add-to-shopping-list.ts delete mode 100644 code_samples/shopping_list/add_to_shopping_list/config/packages/views.yaml delete mode 100644 code_samples/shopping_list/add_to_shopping_list/src/Controller/ProductViewController.php delete mode 100644 code_samples/shopping_list/add_to_shopping_list/templates/themes/standard/full/product.html.twig delete mode 100644 code_samples/shopping_list/add_to_shopping_list/webpack.config.js delete mode 100644 code_samples/shopping_list/install/schema.mysql.sql delete mode 100644 code_samples/shopping_list/install/schema.postgresql.sql delete mode 100644 code_samples/shopping_list/install/src/Migrations/Ibexa/migrations/shopping_list_user.yaml delete mode 100644 code_samples/shopping_list/php_api/src/Command/ShoppingListFilterCommand.php delete mode 100644 code_samples/shopping_list/php_api/src/Command/ShoppingListMoveCommand.php delete mode 100644 code_samples/shopping_list/php_api/src/Controller/CartShoppingListTransferController.php delete mode 100644 code_samples/shopping_list/search/criteria.php delete mode 100644 code_samples/shopping_list/search/sort_clauses.php delete mode 100644 code_samples/shopping_list/shopping_list_rest_api.sh delete mode 100644 code_samples/workflow/services/workflow.yaml delete mode 100644 code_samples/workflow/strategy/NewWorkflow.php delete mode 100644 code_samples/workflow/strategy/NewWorkflowConditionalStep.php delete mode 100644 docs/api/event_reference/cart_events.md delete mode 100644 docs/api/event_reference/discounts_events.md delete mode 100644 docs/api/event_reference/order_management_events.md delete mode 100644 docs/api/event_reference/payment_events.md delete mode 100644 docs/api/event_reference/shopping_list_events.md delete mode 100644 docs/api/notification_channels.md delete mode 100644 docs/commerce/cart/cart.md delete mode 100644 docs/commerce/cart/cart_api.md delete mode 100644 docs/commerce/cart/img/quick_order_add_order.png delete mode 100644 docs/commerce/cart/img/quick_order_list.png delete mode 100644 docs/commerce/cart/quick_order.md delete mode 100644 docs/commerce/checkout/checkout.md delete mode 100644 docs/commerce/checkout/checkout_api.md delete mode 100644 docs/commerce/checkout/configure_checkout.md delete mode 100644 docs/commerce/checkout/customize_checkout.md delete mode 100644 docs/commerce/checkout/img/additional_checkout_step.png delete mode 100644 docs/commerce/checkout/img/checkout.png delete mode 100644 docs/commerce/checkout/img/reorder_button.png delete mode 100644 docs/commerce/checkout/img/reorder_timeline.png delete mode 100644 docs/commerce/checkout/img/single_page_checkout.png delete mode 100644 docs/commerce/checkout/img/virtual_product_purchase.png delete mode 100644 docs/commerce/checkout/reorder.md delete mode 100644 docs/commerce/commerce.md delete mode 100644 docs/commerce/order_management/configure_order_management.md delete mode 100644 docs/commerce/order_management/order_management.md delete mode 100644 docs/commerce/order_management/order_management_api.md delete mode 100644 docs/commerce/payment/configure_payment.md delete mode 100644 docs/commerce/payment/enable_paypal_payments.md delete mode 100644 docs/commerce/payment/enable_stripe_payments.md delete mode 100644 docs/commerce/payment/extend_payment.md delete mode 100644 docs/commerce/payment/img/custom_payment_type.png delete mode 100644 docs/commerce/payment/img/new_payment_method_type.png delete mode 100644 docs/commerce/payment/payment.md delete mode 100644 docs/commerce/payment/payment_api.md delete mode 100644 docs/commerce/payment/payment_method_api.md delete mode 100644 docs/commerce/payment/payment_method_filtering.md delete mode 100644 docs/commerce/payment/payum_integration.md delete mode 100644 docs/commerce/shipping_management/configure_shipment.md delete mode 100644 docs/commerce/shipping_management/extend_shipping.md delete mode 100644 docs/commerce/shipping_management/img/custom_shipping_method_type.png delete mode 100644 docs/commerce/shipping_management/img/custom_shipping_type_validator.png delete mode 100644 docs/commerce/shipping_management/img/shipping_method_cost_tab.png delete mode 100644 docs/commerce/shipping_management/img/shipping_method_type_selection.png delete mode 100644 docs/commerce/shipping_management/shipment_api.md delete mode 100644 docs/commerce/shipping_management/shipping_management.md delete mode 100644 docs/commerce/shipping_management/shipping_method_api.md delete mode 100644 docs/commerce/shopping_list/img/add_to_cart.png delete mode 100644 docs/commerce/shopping_list/img/add_to_shopping_list_widget.png delete mode 100644 docs/commerce/shopping_list/img/create_from_management.png delete mode 100644 docs/commerce/shopping_list/img/create_from_product.png delete mode 100644 docs/commerce/shopping_list/img/create_from_shopping_list.png delete mode 100644 docs/commerce/shopping_list/img/move_to_my_wishlist.png delete mode 100644 docs/commerce/shopping_list/img/shopping_list_belonging_1.png delete mode 100644 docs/commerce/shopping_list/img/shopping_list_belonging_2.png delete mode 100644 docs/commerce/shopping_list/install_shopping_list.md delete mode 100644 docs/commerce/shopping_list/shopping_list.md delete mode 100644 docs/commerce/shopping_list/shopping_list_api.md delete mode 100644 docs/commerce/shopping_list/shopping_list_design.md delete mode 100644 docs/commerce/shopping_list/shopping_list_guide.md delete mode 100644 docs/commerce/storefront/configure_storefront.md delete mode 100644 docs/commerce/storefront/extend_storefront.md delete mode 100644 docs/commerce/storefront/storefront.md delete mode 100644 docs/commerce/transactional_emails/extend_transactional_emails.md delete mode 100644 docs/commerce/transactional_emails/transactional_emails.md delete mode 100644 docs/commerce/transactional_emails/transactional_emails_parameters.md delete mode 100644 docs/content_management/collaborative_editing/extend_collaborative_editing.md delete mode 100644 docs/discounts/configure_discounts.md delete mode 100644 docs/discounts/discounts.md delete mode 100644 docs/discounts/discounts_api.md delete mode 100644 docs/discounts/discounts_guide.md delete mode 100644 docs/discounts/extend_discounts.md delete mode 100644 docs/discounts/extend_discounts_wizard.md delete mode 100644 docs/discounts/img/discount_list.png delete mode 100644 docs/getting_started/requirements.md delete mode 100644 docs/ibexa_cloud/ddev_and_ibexa_cloud.md delete mode 100644 docs/ibexa_cloud/environment_variables.md delete mode 100644 docs/ibexa_cloud/ibexa_cloud.md delete mode 100644 docs/ibexa_cloud/ibexa_cloud_cli.md delete mode 100644 docs/ibexa_cloud/ibexa_cloud_guide.md delete mode 100644 docs/ibexa_cloud/install_on_ibexa_cloud.md delete mode 100644 docs/ibexa_products/ibexa_commerce.md delete mode 100644 docs/infrastructure_and_maintenance/logging.md create mode 100644 docs/release_notes.md delete mode 100644 docs/release_notes/ez_platform_v1.10.0.md delete mode 100644 docs/release_notes/ez_platform_v1.11.0.md delete mode 100644 docs/release_notes/ez_platform_v1.12.0.md delete mode 100644 docs/release_notes/ez_platform_v1.13.0_lts.md delete mode 100644 docs/release_notes/ez_platform_v1.7.0_lts.md delete mode 100644 docs/release_notes/ez_platform_v1.8.0.md delete mode 100644 docs/release_notes/ez_platform_v1.9.0.md delete mode 100644 docs/release_notes/ez_platform_v2.0.0.md delete mode 100644 docs/release_notes/ez_platform_v2.1.0.md delete mode 100644 docs/release_notes/ez_platform_v2.2.0.md delete mode 100644 docs/release_notes/ez_platform_v2.3.md delete mode 100644 docs/release_notes/ez_platform_v2.4.md delete mode 100644 docs/release_notes/ez_platform_v2.5.md delete mode 100644 docs/release_notes/ez_platform_v3.0.md delete mode 100644 docs/release_notes/ez_platform_v3.0_deprecations.md delete mode 100644 docs/release_notes/ez_platform_v3.1.md delete mode 100644 docs/release_notes/ibexa_dxp_v3.2.md delete mode 100644 docs/release_notes/ibexa_dxp_v3.3.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.0.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.0_deprecations.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.1.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.2.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.3.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.4.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.5.md delete mode 100644 docs/release_notes/ibexa_dxp_v4.6.md delete mode 100644 docs/release_notes/ibexa_dxp_v5.0.md delete mode 100644 docs/release_notes/ibexa_dxp_v5.0_deprecations.md delete mode 100644 docs/release_notes/img/2.1_object_state_lock.png delete mode 100644 docs/release_notes/img/2.2_block_settings_styling.png delete mode 100644 docs/release_notes/img/2.2_page_builder.png delete mode 100644 docs/release_notes/img/2.2_page_builder_edit_fields.png delete mode 100644 docs/release_notes/img/2.2_permissions_in_user_view.png delete mode 100644 docs/release_notes/img/2.2_placeholder_generic_provider.png delete mode 100644 docs/release_notes/img/2.3_content_scheduler.png delete mode 100644 docs/release_notes/img/2.3_form_builder.png delete mode 100644 docs/release_notes/img/2.3_form_builder_submissions.png delete mode 100644 docs/release_notes/img/2.3_image_asset.png delete mode 100644 docs/release_notes/img/2.3_schedule_tab.png delete mode 100644 docs/release_notes/img/2.3_timeline_list.png delete mode 100644 docs/release_notes/img/2.3_udw_selection.png delete mode 100644 docs/release_notes/img/2.3_user_preferences.png delete mode 100644 docs/release_notes/img/2.4_content_type_translations.png delete mode 100644 docs/release_notes/img/2.4_drafts_admin_user.png delete mode 100644 docs/release_notes/img/2.4_form_on_the_fly.png delete mode 100644 docs/release_notes/img/2.4_formatted_text.png delete mode 100644 docs/release_notes/img/2.4_link_in_image.png delete mode 100644 docs/release_notes/img/2.4_oe_menu.png delete mode 100644 docs/release_notes/img/2.4_policy_verbs.png delete mode 100644 docs/release_notes/img/2.4_rich_text_block.png delete mode 100644 docs/release_notes/img/2.4_subitems_limit_pref.png delete mode 100644 docs/release_notes/img/2.4_translated_ct.png delete mode 100644 docs/release_notes/img/2.4_workflow_events_timeline.png delete mode 100644 docs/release_notes/img/2.5_back_office_improvements.png delete mode 100644 docs/release_notes/img/2.5_create_button.png delete mode 100644 docs/release_notes/img/2.5_hide_content_icon.png delete mode 100644 docs/release_notes/img/2.5_matrix_ft.png delete mode 100644 docs/release_notes/img/2.5_product_version.png delete mode 100644 docs/release_notes/img/2.5_user_settings.png delete mode 100644 docs/release_notes/img/2.5_workflow_diagram.png delete mode 100644 docs/release_notes/img/3.0_duplicate_roles.png delete mode 100644 docs/release_notes/img/3.1_collapsible_fields.png delete mode 100644 docs/release_notes/img/3.1_collapsible_fields_edit.png delete mode 100644 docs/release_notes/img/3.2_commerce_cockpit.png delete mode 100644 docs/release_notes/img/3.2_new_login_page.png delete mode 100644 docs/release_notes/img/3.2_new_ui_content_structure.png delete mode 100644 docs/release_notes/img/3.2_targeting_block.png delete mode 100644 docs/release_notes/img/3.3_perso_ui.png delete mode 100644 docs/release_notes/img/3_1_Content_browser_Tree_view.png delete mode 100644 docs/release_notes/img/3_1_URL_Management.png delete mode 100644 docs/release_notes/img/3_1_filter_elements.png delete mode 100644 docs/release_notes/img/4.0_catalog.png delete mode 100644 docs/release_notes/img/4.0_new_ui.png delete mode 100644 docs/release_notes/img/4.0_product_price.png delete mode 100644 docs/release_notes/img/4.1_content_tree.png delete mode 100644 docs/release_notes/img/4.1_measurement_attribute.png delete mode 100644 docs/release_notes/img/4.1_measurement_ft.png delete mode 100644 docs/release_notes/img/4.1_page_builder_dynamic_targeting.png delete mode 100644 docs/release_notes/img/4.1_taxonomy_lang_switcher.png delete mode 100644 docs/release_notes/img/4.2_address_field_type.png delete mode 100644 docs/release_notes/img/4.2_catalogs_product_list.png delete mode 100644 docs/release_notes/img/4.2_cdp_control_panel.png delete mode 100644 docs/release_notes/img/4.2_content_edit_tabs.png delete mode 100644 docs/release_notes/img/4.2_customer_center.png delete mode 100644 docs/release_notes/img/4.2_customer_portal.png delete mode 100644 docs/release_notes/img/4.2_invite_users.png delete mode 100644 docs/release_notes/img/4.2_online_editor_dnd_image.png delete mode 100644 docs/release_notes/img/4.2_page_block_nested.png delete mode 100644 docs/release_notes/img/4.2_product_assets.png delete mode 100644 docs/release_notes/img/4.2_product_categories_rn.png delete mode 100644 docs/release_notes/img/4.2_product_completeness.png delete mode 100644 docs/release_notes/img/4.2_product_variants_generate.png delete mode 100644 docs/release_notes/img/4.3_collection_dnd.png delete mode 100644 docs/release_notes/img/4.3_edit_product_price.png delete mode 100644 docs/release_notes/img/4.3_self_registration.png delete mode 100644 docs/release_notes/img/4.4_connect_scenario_example.png delete mode 100644 docs/release_notes/img/4.4_new_cart.png delete mode 100644 docs/release_notes/img/4.4_new_checkout.png delete mode 100644 docs/release_notes/img/4.4_welcome_page.png delete mode 100644 docs/release_notes/img/4.5_bestsellers_block.png delete mode 100644 docs/release_notes/img/4.5_comparison_view.png delete mode 100644 docs/release_notes/img/4.5_order_list.png delete mode 100644 docs/release_notes/img/4.5_page_builder_b2b.png delete mode 100644 docs/release_notes/img/4.5_payment_methods.png delete mode 100644 docs/release_notes/img/4.5_product_categories.png delete mode 100644 docs/release_notes/img/4.5_product_category_tree.png delete mode 100644 docs/release_notes/img/4.5_react_app_block.png delete mode 100644 docs/release_notes/img/4.5_segment_management.png delete mode 100644 docs/release_notes/img/4.5_shipping_methods.png delete mode 100644 docs/release_notes/img/4.6_activity_list.png delete mode 100644 docs/release_notes/img/4.6_catalog_vat_rates.png delete mode 100644 docs/release_notes/img/4.6_content_type_icons.png delete mode 100644 docs/release_notes/img/4.6_customizable_dashboard.png delete mode 100644 docs/release_notes/img/4.6_discounts.png delete mode 100644 docs/release_notes/img/4.6_distraction_free_mode.png delete mode 100644 docs/release_notes/img/4.6_drafts.png delete mode 100644 docs/release_notes/img/4.6_editing_embedded_content_items.png delete mode 100644 docs/release_notes/img/4.6_focus_mode.png delete mode 100644 docs/release_notes/img/4.6_improved_editing.png delete mode 100644 docs/release_notes/img/4.6_page_builder_interface.png delete mode 100644 docs/release_notes/img/4.6_publishing_options.png delete mode 100644 docs/release_notes/img/4.6_quick_order.png delete mode 100644 docs/release_notes/img/4.6_shipments.png delete mode 100644 docs/release_notes/img/4.6_site_selector.png delete mode 100644 docs/release_notes/img/4.6_special_characters.png delete mode 100644 docs/release_notes/img/4.6_sub_items_tab.png delete mode 100644 docs/release_notes/img/5.0_Repository.PermissionResolver.png delete mode 100644 docs/release_notes/img/5.0_StepBuilder.AbstractStepFactory.png delete mode 100644 docs/release_notes/img/5.0_StepBuilder.StepFactoryInterface.png delete mode 100644 docs/release_notes/img/5.0_StepExecutor.ReferenceDefinition.ResolverInterface.png delete mode 100644 docs/release_notes/img/5.0_collaborative_invitation.jpg delete mode 100644 docs/release_notes/img/5.0_open_in_profiler.png delete mode 100644 docs/release_notes/img/502_ai_connector_gpt_50.png delete mode 100644 docs/release_notes/img/502_notifications_screen.png delete mode 100644 docs/release_notes/img/Palpha1.gif delete mode 100644 docs/release_notes/img/add_translation.gif delete mode 100644 docs/release_notes/img/bookmark.png delete mode 100644 docs/release_notes/img/button.png delete mode 100644 docs/release_notes/img/catsfromtheMET.gif delete mode 100644 docs/release_notes/img/collection_block.png delete mode 100644 docs/release_notes/img/compare_results.png delete mode 100644 docs/release_notes/img/content_download.PNG delete mode 100644 docs/release_notes/img/contentbrowse.gif delete mode 100644 docs/release_notes/img/contenttypeviews.png delete mode 100644 docs/release_notes/img/copy_subtree_button.png delete mode 100644 docs/release_notes/img/cotf.png delete mode 100644 docs/release_notes/img/delete-form.gif delete mode 100644 docs/release_notes/img/demo-product-filters.png delete mode 100644 docs/release_notes/img/draft_conflict.png delete mode 100644 docs/release_notes/img/eztags.gif delete mode 100644 docs/release_notes/img/filtered_search.png delete mode 100644 docs/release_notes/img/forgot_password.png delete mode 100644 docs/release_notes/img/form-builder-1.png delete mode 100644 docs/release_notes/img/formb.png delete mode 100644 docs/release_notes/img/future_publication_window.png delete mode 100644 docs/release_notes/img/i18n.png delete mode 100644 docs/release_notes/img/left_menu_tree.png delete mode 100644 docs/release_notes/img/link-options-oe.png delete mode 100644 docs/release_notes/img/link_manager.png delete mode 100644 docs/release_notes/img/newdesigntable.png delete mode 100644 docs/release_notes/img/notifications.gif delete mode 100644 docs/release_notes/img/oe-formatting-new-options.png delete mode 100644 docs/release_notes/img/participants_list.png delete mode 100644 docs/release_notes/img/personalizationblock.png delete mode 100644 docs/release_notes/img/platformui-table.gif delete mode 100644 docs/release_notes/img/productcontenttype.png delete mode 100644 docs/release_notes/img/relation_single_allowed_cts.png delete mode 100644 docs/release_notes/img/search.png delete mode 100644 docs/release_notes/img/section-details.png delete mode 100644 docs/release_notes/img/sub-items-improved.png delete mode 100644 docs/release_notes/img/subitem-sorting.png delete mode 100644 docs/release_notes/img/taxonomy_suggestions_content.png delete mode 100644 docs/release_notes/img/udw.png delete mode 100644 docs/release_notes/img/udwre.png delete mode 100644 docs/release_notes/img/url_aliases.png delete mode 100644 docs/release_notes/img/user_profile_preview.png delete mode 100644 docs/release_notes/img/v2_general_screen.png delete mode 100644 docs/release_notes/img/workflow_content_under_review.png delete mode 100644 docs/release_notes/release_notes.md delete mode 100644 docs/search/criteria_reference/order_company_associated_criterion.md delete mode 100644 docs/search/criteria_reference/order_company_name_criterion.md delete mode 100644 docs/search/criteria_reference/order_created_criterion.md delete mode 100644 docs/search/criteria_reference/order_currency_code_criterion.md delete mode 100644 docs/search/criteria_reference/order_customer_name_criterion.md delete mode 100644 docs/search/criteria_reference/order_identifier_criterion.md delete mode 100644 docs/search/criteria_reference/order_owner_criterion.md delete mode 100644 docs/search/criteria_reference/order_price_criterion.md delete mode 100644 docs/search/criteria_reference/order_search_criteria.md delete mode 100644 docs/search/criteria_reference/order_source_criterion.md delete mode 100644 docs/search/criteria_reference/order_status_criterion.md delete mode 100644 docs/search/criteria_reference/payment_createdat_criterion.md delete mode 100644 docs/search/criteria_reference/payment_currency_criterion.md delete mode 100644 docs/search/criteria_reference/payment_id_criterion.md delete mode 100644 docs/search/criteria_reference/payment_identifier_criterion.md delete mode 100644 docs/search/criteria_reference/payment_logicaland_criterion.md delete mode 100644 docs/search/criteria_reference/payment_logicalor_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_createdat_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_enabled_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_id_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_identifier_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_logicaland_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_logicalor_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_name_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_search_criteria.md delete mode 100644 docs/search/criteria_reference/payment_method_type_criterion.md delete mode 100644 docs/search/criteria_reference/payment_method_updatedat_criterion.md delete mode 100644 docs/search/criteria_reference/payment_order_criterion.md delete mode 100644 docs/search/criteria_reference/payment_payment_method_criterion.md delete mode 100644 docs/search/criteria_reference/payment_search_criteria.md delete mode 100644 docs/search/criteria_reference/payment_status_criterion.md delete mode 100644 docs/search/criteria_reference/payment_updatedat_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_createdat_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_currency_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_id_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_identifier_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_logicaland_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_logicalor_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_owner_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_search_criteria.md delete mode 100644 docs/search/criteria_reference/shipment_shipping_method_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_status_criterion.md delete mode 100644 docs/search/criteria_reference/shipment_updatedat_criterion.md delete mode 100644 docs/search/discounts_search_reference/discounts_criteria.md delete mode 100644 docs/search/discounts_search_reference/discounts_sort_clauses.md delete mode 100644 docs/search/shopping_list_search_reference/shopping_list_criteria.md delete mode 100644 docs/search/shopping_list_search_reference/shopping_list_sort_clauses.md delete mode 100644 docs/search/sort_clause_reference/order_created_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/order_id_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/order_sort_clauses.md delete mode 100644 docs/search/sort_clause_reference/order_status_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/order_updated_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_createdat_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_id_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_identifier_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_method_createdat_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_method_enabled_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_method_id_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_method_identifier_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_method_sort_clauses.md delete mode 100644 docs/search/sort_clause_reference/payment_method_updatedat_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_sort_clauses.md delete mode 100644 docs/search/sort_clause_reference/payment_status_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/payment_updatedat_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/shipment_createdat_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/shipment_id_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/shipment_identifier_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/shipment_sort_clauses.md delete mode 100644 docs/search/sort_clause_reference/shipment_status_sort_clause.md delete mode 100644 docs/search/sort_clause_reference/shipment_updatedat_sort_clause.md delete mode 100644 docs/snippets/catalog_permissions_note.md delete mode 100644 docs/snippets/commerce_badge.md delete mode 100644 docs/snippets/release_46.md delete mode 100644 docs/snippets/release_50.md delete mode 100644 docs/snippets/update/check_out_version.md delete mode 100644 docs/snippets/update/db/db_backup_warning.md delete mode 100644 docs/snippets/update/db/update_db_2.5-3.3.md delete mode 100644 docs/snippets/update/finish_the_update.md delete mode 100644 docs/snippets/update/merge_composer.md delete mode 100644 docs/snippets/update/notify_support.md delete mode 100644 docs/snippets/update/temporary_v4_conflicts.md delete mode 100644 docs/snippets/update/update_app.md delete mode 100644 docs/snippets/update/vcl_configuration_for_fastly_v3.md delete mode 100644 docs/snippets/update/vcl_configuration_for_fastly_v4.md delete mode 100644 docs/templating/layout/customize_storefront_layout.md delete mode 100644 docs/templating/render_content/customize_product_view.md delete mode 100644 docs/templating/twig_function_reference/cart_twig_functions.md delete mode 100644 docs/templating/twig_function_reference/checkout_twig_functions.md delete mode 100644 docs/templating/twig_function_reference/discounts_twig_functions.md delete mode 100644 docs/templating/twig_function_reference/storefront_twig_functions.md delete mode 100644 docs/templating/urls_and_routes/custom_breadcrumbs.md delete mode 100644 docs/update_and_migration/from_1.x_2.x/update_app_to_2.5.md delete mode 100644 docs/update_and_migration/from_1.x_2.x/update_db_to_2.5.md delete mode 100644 docs/update_and_migration/from_1.x_2.x/update_from_1.x_2.x.md delete mode 100644 docs/update_and_migration/from_2.5/adapt_code_to_v3.md delete mode 100644 docs/update_and_migration/from_2.5/to_3.2.md delete mode 100644 docs/update_and_migration/from_2.5/to_3.3.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/1_update_templates.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/2_update_configuration.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/3_update_field_types.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/4_update_signal_slots.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/5_update_online_editor.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/6_update_workflow.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/7_update_extensions.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/8_update_rest.md delete mode 100644 docs/update_and_migration/from_2.5/update_code/9_update_other.md delete mode 100644 docs/update_and_migration/from_2.5/update_from_2.5.md delete mode 100644 docs/update_and_migration/from_3.3/to_4.0.md delete mode 100644 docs/update_and_migration/from_3.3/update_from_3.3.md delete mode 100644 docs/update_and_migration/from_4.0/to_4.1.md delete mode 100644 docs/update_and_migration/from_4.1/update_from_4.1.md delete mode 100644 docs/update_and_migration/from_4.2/update_from_4.2.md delete mode 100644 docs/update_and_migration/from_4.3/update_from_4.3.md delete mode 100644 docs/update_and_migration/from_4.3/update_from_4.3_new_commerce.md delete mode 100644 docs/update_and_migration/from_4.3/update_from_4.3_old_commerce.md delete mode 100644 docs/update_and_migration/from_4.4/update_from_4.4.md delete mode 100644 docs/update_and_migration/from_4.5/update_from_4.5.md delete mode 100644 docs/update_and_migration/from_4.6/sql/ibexa_oss_4.6.latest-to-5.0.0_mysql.sql delete mode 100644 docs/update_and_migration/from_4.6/sql/ibexa_oss_4.6.latest-to-5.0.0_postgresql.sql delete mode 100644 docs/update_and_migration/from_4.6/update_from_4.6.md delete mode 100644 docs/update_and_migration/from_4.6/update_to_5.0.md delete mode 100644 docs/update_and_migration/from_5.0/update_from_5.0.md delete mode 100644 docs/update_and_migration/img/diagram_source/folder_structure_v3.xml delete mode 100644 docs/update_and_migration/img/folder_structure_v3.png delete mode 100644 docs/update_and_migration/migrate_to_ibexa_dxp/common_issues.md delete mode 100644 docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish.md delete mode 100644 docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform.md delete mode 100644 docs/update_and_migration/update_system.md delete mode 100644 docs/users/img/notification-browser-storefront.png diff --git a/code_samples/api/commerce/config/packages/custom_routes.yaml b/code_samples/api/commerce/config/packages/custom_routes.yaml deleted file mode 100644 index ae17749f4aa..00000000000 --- a/code_samples/api/commerce/config/packages/custom_routes.yaml +++ /dev/null @@ -1,4 +0,0 @@ -custom_checkout: - path: /custom_checkout - defaults: - _controller: App\Controller\CustomCheckoutController::showContentAction diff --git a/code_samples/api/commerce/src/Command/CartCommand.php b/code_samples/api/commerce/src/Command/CartCommand.php deleted file mode 100644 index 7d4bc1a02e8..00000000000 --- a/code_samples/api/commerce/src/Command/CartCommand.php +++ /dev/null @@ -1,143 +0,0 @@ -permissionResolver->setCurrentUserReference( - $this->userService->loadUserByLogin('admin') - ); - - // Query for carts - $cartQuery = new CartQuery(); - $cartQuery->setOwnerId(14); // carts created by User ID: 14 - $cartQuery->setLimit(20); // fetch 20 carts - - $cartsList = $this->cartService->findCarts($cartQuery); - - $cartsList->getCarts(); // array of CartInterface objects - $cartsList->getTotalCount(); // number of matching carts regardless of the limit - - foreach ($cartsList as $cart) { - $output->writeln($cart->getIdentifier() . ': ' . $cart->getName()); - } - - // Get a single cart - $cart = $this->cartService->getCart('1844450e-61da-4814-8d82-9301a3df0054'); - - $output->writeln($cart->getName()); - - // Create a new cart - $currency = $this->currencyService->getCurrencyByCode('EUR'); - - $cartCreateStruct = new CartCreateStruct( - 'Default cart', - $currency // Ibexa\Contracts\ProductCatalog\Values\CurrencyInterface - ); - - $cart = $this->cartService->createCart($cartCreateStruct); - - $output->writeln($cart->getName()); // prints 'Default cart' to the console - - // Update a cart - $newCurrency = $this->currencyService->getCurrencyByCode('PLN'); - - $cartUpdateMetadataStruct = new CartMetadataUpdateStruct(); - $cartUpdateMetadataStruct->setName('New name'); - $cartUpdateMetadataStruct->setCurrency($newCurrency); - - $updatedCart = $this->cartService->updateCartMetadata($cart, $cartUpdateMetadataStruct); - - $output->writeln($updatedCart->getName()); // prints 'New name' to the console - - // Empty a cart - $this->cartService->emptyCart($cart); - - // Validate a cart - $violationList = $this->cartService->validateCart($cart); // Symfony\Component\Validator\ConstraintViolationListInterface - - // Add product to a cart - $product = $this->productService->getProduct('desk1'); - - $entryAddStruct = new EntryAddStruct($product); - $entryAddStruct->setQuantity(10); - - $cart = $this->cartService->addEntry($cart, $entryAddStruct); - - $entry = $cart->getEntries()->first(); - $output->writeln($entry->getProduct()->getName()); // prints product name to the console - - // Remove an entry from a cart - // find entry you would like to remove from cart - $entry = $cart->getEntries()->first(); - - $cart = $this->cartService->removeEntry($cart, $entry); // updated Cart object - - // Update entry in a cart - $entryUpdateStruct = new EntryUpdateStruct(5); - $entryUpdateStruct->setQuantity(10); - - $cart = $this->cartService->updateEntry( - $cart, - $entry, - $entryUpdateStruct - ); // updated Cart object - - // Delete a cart permanently - $this->cartService->deleteCart($cart); - - // Get the order with items that should be reordered - $orderIdentifier = '2e897b31-0d7a-46d3-ba45-4eb65fe02790'; - $order = $this->orderService->getOrderByIdentifier($orderIdentifier); - - // Get the cart to merge - $existingCart = $this->cartResolver->resolveCart(); - - $reorderCart = $this - ->reorderService - ->addToCartFromOrder($order, $this->reorderService->createReorderCart($order)); - - // Merge the carts into the target cart and delete the merged carts - $reorderCart = $this->cartService->mergeCarts($reorderCart, true, $existingCart); - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Command/OrderCommand.php b/code_samples/api/commerce/src/Command/OrderCommand.php deleted file mode 100644 index 15eb8206f56..00000000000 --- a/code_samples/api/commerce/src/Command/OrderCommand.php +++ /dev/null @@ -1,119 +0,0 @@ -userService->loadUserByLogin('admin'); - $this->permissionResolver->setCurrentUserReference($currentUser); - - // Get order by identifier - $orderIdentifier = '2e897b31-0d7a-46d3-ba45-4eb65fe02790'; - $order = $this->orderService->getOrderByIdentifier($orderIdentifier); - - $output->writeln(sprintf('Order %s has status %s', $orderIdentifier, $order->getStatus())); - - // Get order by id - $orderId = 1; - $order = $this->orderService->getOrder($orderId); - - $output->writeln(sprintf('Order %d has status %s', $orderId, $order->getStatus())); - - // OrderCreateStruct parameters - $items = [ - new OrderItem( - 10, - new OrderItemValue( - new Money\Money(12, new Money\Currency('EUR')), - new Money\Money(10, new Money\Currency('EUR')), - '12', - new Money\Money(24, new Money\Currency('EUR')), - new Money\Money(20, new Money\Currency('EUR')), - ), - new OrderItemProduct( - 1, - 'desk1', - 'Desk 1' - ) - ), - ]; - - $value = new OrderValue( - new Money\Money(20, new Money\Currency('EUR')), - new Money\Money(120, new Money\Currency('EUR')), - new Money\Money(100, new Money\Currency('EUR')), - ); - - $user = new OrderUser(14, 'johndoe', 'jd@example.com'); - $currency = new OrderCurrency(1, 'EUR'); - - // Create order - $orderCreateStruct = new OrderCreateStruct( - $user, - $currency, - $value, - 'local_shop', - $items - ); - - $order = $this->orderService->createOrder($orderCreateStruct); - - $output->writeln(sprintf('Created order with identifier %s', $order->getIdentifier())); - - // Update order - $orderUpdateStruct = new OrderUpdateStruct('processed'); - $this->orderService->updateOrder($order, $orderUpdateStruct); - - $output->writeln(sprintf('Changed order status to %s', $order->getStatus())); - - // Query for orders - $orderCriterions = [ - new IdentifierCriterion('c328773e-8daa-4465-86d5-4d7890f3aa86'), - new CompanyNameCriterion('IBM'), - new CustomerNameCriterion('foo_user'), - ]; - $orderQuery = new OrderQuery(new LogicalOr(...$orderCriterions)); - $orders = $this->orderService->findOrders($orderQuery); - - $output->writeln(sprintf('Found %d orders with provided criteria', count($orders))); - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Command/PaymentCommand.php b/code_samples/api/commerce/src/Command/PaymentCommand.php deleted file mode 100644 index 0e6ff5ba646..00000000000 --- a/code_samples/api/commerce/src/Command/PaymentCommand.php +++ /dev/null @@ -1,106 +0,0 @@ -userService->loadUserByLogin('admin'); - $this->permissionResolver->setCurrentUserReference($currentUser); - - // Get a single payment - $paymentId = 1; - $payment = $this->paymentService->getPayment($paymentId); - - $output->writeln(sprintf('Payment %d has status %s', $paymentId, $payment->getStatus())); - - // Get a single payment by identifier - $paymentIdentifier = '4ac4b8a0-eed8-496d-87d9-32a960a10629'; - $payment = $this->paymentService->getPaymentByIdentifier($paymentIdentifier); - - $context = $payment->getContext(); - // Will be overridden later but used to illustrate `getContext()` - - $output->writeln(sprintf('Your payment for transaction has status %s', $payment->getStatus())); - - // Query for payments - $paymentCriterions = [ - new Currency('USD'), - new Currency('CZK'), - ]; - - $paymentQuery = new PaymentQuery(new LogicalOr(...$paymentCriterions)); - $paymentQuery->setLimit(10); - - $paymentsList = $this->paymentService->findPayments($paymentQuery); - - $paymentsList->getPayments(); - $paymentsList->getTotalCount(); - - foreach ($paymentsList as $payment) { - $output->writeln($payment->getIdentifier() . ': ' . $payment->getOrder()->getIdentifier() . ': ' . $payment->getOrder()->getValue()->getTotalGross()->getAmount()); - } - - // Create a new payment - $context = [ - 'transaction_id' => '5e5fe187-c865-49£2-b407-a946fd7b5be0', - ]; - - $paymentCreateStruct = new PaymentCreateStruct( - $this->paymentMethodService->getPaymentMethodByIdentifier('bank_transfer_EUR'), - $this->orderService->getOrder(135), - new Money\Money(100, new Money\Currency('EUR')) - ); - $paymentCreateStruct->setContext(new ArrayMap($context)); - - $payment = $this->paymentService->createPayment($paymentCreateStruct); - - $output->writeln(sprintf('Created payment %s for order %s', $payment->getIdentifier(), $payment->getOrder()->getIdentifier())); - - // Update existing payment - $paymentUpdateStruct = new PaymentUpdateStruct(); - $paymentUpdateStruct->setTransition('pay'); - - $this->paymentService->updatePayment($payment, $paymentUpdateStruct); - - $output->writeln(sprintf('Changed payment status to %s', $payment->getStatus())); - - // Delete existing payment permanently - $this->paymentService->deletePayment($payment); - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Command/PaymentMethodCommand.php b/code_samples/api/commerce/src/Command/PaymentMethodCommand.php deleted file mode 100644 index 4f4d6054e7d..00000000000 --- a/code_samples/api/commerce/src/Command/PaymentMethodCommand.php +++ /dev/null @@ -1,120 +0,0 @@ -userService->loadUserByLogin('admin'); - $this->permissionResolver->setCurrentUserReference($currentUser); - - // Get a single payment method by ID - $paymentMethodId = 1; - $paymentMethod = $this->paymentMethodService->getPaymentMethod($paymentMethodId); - - $output->writeln(sprintf('Payment method %d has type "%s"', $paymentMethodId, $paymentMethod->getType()->getIdentifier())); - - // Get a single payment method by identifier - $paymentMethodIdentifier = 'cash'; - $paymentMethod = $this->paymentMethodService->getPaymentMethodByIdentifier($paymentMethodIdentifier); - - $output->writeln(sprintf('Availability status of payment method "%s" is "%s".', $paymentMethodIdentifier, $paymentMethod->isEnabled())); - - // Find payment methods - $offlinePaymentType = new PaymentMethodType('offline', 'Offline'); - $paymentMethodCriterions = [ - new Type($offlinePaymentType), - new Enabled(true), - ]; - - $paymentMethodQuery = new PaymentMethodQuery((new LogicalAnd(...$paymentMethodCriterions))); - $paymentMethodQuery->setLimit(10); - - $paymentMethods = $this->paymentMethodService->findPaymentMethods($paymentMethodQuery); - - $paymentMethods->getPaymentMethods(); - $paymentMethods->getTotalCount(); - - foreach ($paymentMethods as $paymentMethod) { - $output->writeln($paymentMethod->getIdentifier() . ': ' . $paymentMethod->getName() . ' - ' . $paymentMethod->getDescription()); - } - - // Create a new payment method - $paymentMethodCreateStruct = new PaymentMethodCreateStruct( - 'bank_transfer_EUR', - $offlinePaymentType, - ); - $paymentMethodCreateStruct->setName('eng-GB', 'Bank transfer EUR'); - $paymentMethodCreateStruct->setEnabled(false); - - $paymentMethod = $this->paymentMethodService->createPaymentMethod($paymentMethodCreateStruct); - - $output->writeln(sprintf('Created payment method with name %s', $paymentMethod->getName())); - - // Update the payment method - $paymentMethodUpdateStruct = new PaymentMethodUpdateStruct(); - $paymentMethodUpdateStruct->setEnabled(true); - - $this->paymentMethodService->updatePaymentMethod($paymentMethod, $paymentMethodUpdateStruct); - - $output->writeln(sprintf( - 'Updated payment method "%s" by changing its availability status to "%s".', - $paymentMethod->getName(), - $paymentMethod->isEnabled() - )); - - // Delete the payment method - $this->paymentMethodService->deletePaymentMethod($paymentMethod); - $output->writeln(sprintf( - 'Deleted payment method with ID %d and identifier "%s".', - $paymentMethod->getId(), - $paymentMethod->getIdentifier() - )); - - // Check whether the payment method is used - $isUsed = $this->paymentMethodService->isPaymentMethodUsed($paymentMethod); - - if ($isUsed) { - $output->writeln(sprintf( - 'Payment method with ID %d is currently used.', - $paymentMethod->getId() - )); - } else { - $output->writeln(sprintf( - 'Payment method with ID %d is not used.', - $paymentMethod->getId() - )); - } - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Command/ShipmentCommand.php b/code_samples/api/commerce/src/Command/ShipmentCommand.php deleted file mode 100644 index 6dc246ee3e4..00000000000 --- a/code_samples/api/commerce/src/Command/ShipmentCommand.php +++ /dev/null @@ -1,123 +0,0 @@ -userService->loadUserByLogin('admin'); - $this->permissionResolver->setCurrentUserReference($currentUser); - - // Get a single shipment - $id = 1; - $shipment = $this->shipmentService->getShipment($id); - - $output->writeln( - sprintf( - 'Shipment %d has status %s', - $id, - $shipment->getStatus() - ) - ); - - // Get a single shipment by identifier - $identifier = '4ac4b8a0-eed8-496d-87d9-32a960a10629'; - $shipment = $this->shipmentService->getShipmentByIdentifier($identifier); - - $output->writeln( - sprintf( - 'Your shipment has status %s', - $shipment->getStatus() - ) - ); - - // Query for shipments - $shipmentCriteria = [ - new ShippingMethod($this->shippingMethodService->getShippingMethod('free')), - new CreatedAt(new \DateTime('2023-03-24 15:09:16')), - new UpdatedAt(new \DateTime('2023-03-25 09:00:15')), - ]; - - $shipmentQuery = new ShipmentQuery(new LogicalOr(...$shipmentCriteria)); - $shipmentQuery->setLimit(20); - - $shipmentsList = $this->shipmentService->findShipments($shipmentQuery); - - $shipmentsList->getShipments(); - $shipmentsList->getTotalCount(); - - foreach ($shipmentsList as $shipment) { - $output->writeln( - $shipment->getIdentifier() . ': ' . $shipment->getStatus() - ); - } - - // Create a new shipment - $shipmentCreateStruct = new ShipmentCreateStruct( - $this->shippingMethodService->getShippingMethod('free'), - $this->orderService->getOrder(135), - new Money\Money(100, new Money\Currency('EUR')) - ); - - $shipment = $this->shipmentService->createShipment($shipmentCreateStruct); - - $output->writeln( - sprintf( - 'Created shipment with identifier %s', - $shipment->getIdentifier() - ) - ); - - // Update existing shipment - $shipmentUpdateStruct = new ShipmentUpdateStruct(); - $shipmentUpdateStruct->setTransition('send'); - - $this->shipmentService->updateShipment($shipment, $shipmentUpdateStruct); - - $output->writeln( - sprintf( - 'Changed shipment status to %s', - $shipment->getStatus() - ) - ); - - // Delete existing shipment permanently - $this->shipmentService->deleteShipment($shipment); - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Command/ShippingMethodCommand.php b/code_samples/api/commerce/src/Command/ShippingMethodCommand.php deleted file mode 100644 index 85368142f84..00000000000 --- a/code_samples/api/commerce/src/Command/ShippingMethodCommand.php +++ /dev/null @@ -1,146 +0,0 @@ -userService->loadUserByLogin('admin'); - $this->permissionResolver->setCurrentUserReference($currentUser); - - // Get a single shipping method by ID - $shippingMethodId = 1; - $shippingMethod = $this->shippingMethodService->getShippingMethodById($shippingMethodId); - - $output->writeln( - sprintf( - 'Availability status of shipping method %d is "%s"', - $shippingMethodId, - $shippingMethod->isEnabled() - ) - ); - - // Get a single shipping method by identifier - $shippingMethodIdentifier = 'cash'; - $shippingMethod = $this->shippingMethodService->getShippingMethod($shippingMethodIdentifier); - - $output->writeln( - sprintf( - 'Got shipping method by identifier "%s" and type "%s".', - $shippingMethodIdentifier, - $shippingMethod->getType()->getIdentifier() - ) - ); - - // Find shipping methods - $shippingMethodQuery = new ShippingMethodQuery(new ShippingMethodRegion($this->regionService->getRegion('default'))); - $shippingMethodQuery->setLimit(10); - - $shippingMethods = $this->shippingMethodService->findShippingMethods($shippingMethodQuery); - - $shippingMethods->getShippingMethods(); - $shippingMethods->getTotalCount(); - - foreach ($shippingMethods as $shippingMethod) { - $output->writeln( - sprintf( - '%s: %s- %s', - $shippingMethod->getIdentifier(), - $shippingMethod->getName(), - $shippingMethod->getDescription() - ) - ); - } - - // Create a new shipping method - $shippingMethodCreateStruct = $this->shippingMethodService->newShippingMethodCreateStruct( - 'courier', - ); - - $shippingMethodCreateStruct->setType( - new ShippingMethodType('flat_rate') - ); - $shippingMethodCreateStruct->setRegions(([new Region('default')])); - $shippingMethodCreateStruct->setOptions( - ['currency' => 1, 'price' => 1200] - ); - $shippingMethodCreateStruct->setVatCategoryIdentifier('standard'); - $shippingMethodCreateStruct->setEnabled(true); - $shippingMethodCreateStruct->setName('eng-GB', 'Courier'); - - $shippingMethod = $this->shippingMethodService->createShippingMethod($shippingMethodCreateStruct); - - $output->writeln( - sprintf( - 'Created shipping method with name %s', - $shippingMethod->getName() - ) - ); - - // Update the shipping method - $shippingMethodUpdateStruct = $this->shippingMethodService->newShippingMethodUpdateStruct(); - $shippingMethodUpdateStruct->setEnabled(false); - $shippingMethodUpdateStruct->setOptions( - ['currency' => 1, 'price' => 800] - ); - $shippingMethodUpdateStruct->setVatCategoryIdentifier('standard'); - $shippingMethodUpdateStruct->setName('eng-GB', 'Courier'); - - $this->shippingMethodService->updateShippingMethod($shippingMethod, $shippingMethodUpdateStruct); - - $output->writeln(sprintf( - 'Updated shipping method "%s"', - $shippingMethod->getName(), - )); - - // Delete the shipping method - $this->shippingMethodService->deleteShippingMethod($shippingMethod); - $output->writeln(sprintf( - 'Deleted shipping method with ID %d and identifier "%s".', - $shippingMethod->getId(), - $shippingMethod->getIdentifier() - )); - - // Delete shipping method translation - $languageCode = 'eng-GB'; - $shippingMethodDeleteTranslationStruct = new ShippingMethodDeleteTranslationStruct($shippingMethod, $languageCode); - $this->shippingMethodService->deleteShippingMethodTranslation($shippingMethodDeleteTranslationStruct); - - $output->writeln(sprintf( - 'Deleted translation for shipping method "%s" and language "%s".', - $shippingMethod->getName(), - $languageCode - )); - - return self::SUCCESS; - } -} diff --git a/code_samples/api/commerce/src/Controller/CustomCheckoutController.php b/code_samples/api/commerce/src/Controller/CustomCheckoutController.php deleted file mode 100644 index 6dead11eb5d..00000000000 --- a/code_samples/api/commerce/src/Controller/CustomCheckoutController.php +++ /dev/null @@ -1,51 +0,0 @@ -cartService->getCart('d7424b64-7dc1-474c-82c8-1700f860d55e'); - - $checkoutForCart = $this->checkoutService->getCheckoutForCart($cart); - $checkoutIdentifier = $checkoutForCart->getIdentifier(); - - // Get checkout by checkout ID - $checkout = $this->checkoutService->getCheckout($checkoutIdentifier); - - // Create a new checkout - $newCart = $this->cartService->getCart('1844450e-61da-4814-8d82-9301a3df0054'); - - $checkoutCreateStruct = $this->checkoutService->newCheckoutCreateStruct($newCart); - $newCheckout = $this->checkoutService->createCheckout($checkoutCreateStruct); - - $newCheckoutIdentifier = $newCheckout->getIdentifier(); - - // Update a checkout - $checkoutUpdateStruct = $this->checkoutService->newCheckoutUpdateStruct('select_address'); - $this->checkoutService->updateCheckout($newCheckout, $checkoutUpdateStruct); - - // Delete a checkout - $this->checkoutService->deleteCheckout($newCheckout); - - return $this->render('@ibexadesign/checkout/custom_checkout.html.twig', [ - 'checkout_id' => $checkoutIdentifier, - 'new_checkout_id' => $newCheckoutIdentifier, - ]); - } -} diff --git a/code_samples/api/commerce/templates/theme/storefront/checkout/custom_checkout.html.twig b/code_samples/api/commerce/templates/theme/storefront/checkout/custom_checkout.html.twig deleted file mode 100644 index 48f56bc9b4d..00000000000 --- a/code_samples/api/commerce/templates/theme/storefront/checkout/custom_checkout.html.twig +++ /dev/null @@ -1,3 +0,0 @@ -

Custom checkout

-

Checkout ID: {{ checkout_id }}

-

New checkout ID: {{ new_checkout_id }}

diff --git a/code_samples/api/notifications/assets/scss/notifications.scss b/code_samples/api/notifications/assets/scss/notifications.scss deleted file mode 100644 index 70e58d26122..00000000000 --- a/code_samples/api/notifications/assets/scss/notifications.scss +++ /dev/null @@ -1,7 +0,0 @@ -@use '@ibexa-admin-ui/src/bundle/Resources/public/scss/_alerts.scss' as *; - -.ibexa-alert { - &--notification { - @extend .ibexa-alert--info; - } -} diff --git a/code_samples/api/notifications/config/packages/notifications.yaml b/code_samples/api/notifications/config/packages/notifications.yaml deleted file mode 100644 index 68473810a29..00000000000 --- a/code_samples/api/notifications/config/packages/notifications.yaml +++ /dev/null @@ -1,69 +0,0 @@ -framework: - notifier: - chatter_transports: - slack: '%env(SLACK_DSN)%' -ibexa: - system: - default: - notifier: - subscriptions: - # The configuration below is added to the `default` scope without overriding the one defined in ibexa.yaml - # Custom subscriptions: - Ibexa\OrderManagement\Notification\OrderStatusChange: - channels: - - chat - Ibexa\Payment\Notification\PaymentStatusChange: - channels: - - chat - Ibexa\Shipping\Notification\ShipmentStatusChange: - channels: - - chat - App\Notifications\CommandExecuted: - channels: - - ibexa - - email - - log - admin_group: - notifier: - subscriptions: - # The configuration below is added to the `admin_group` scope without overriding the one defined in ibexa_admin_ui.yaml - # Custom subscriptions: - App\Notifications\CommandExecuted: - channels: - - ibexa - - email - - log - App\Notifications\ControllerFeedback: - channels: - - browser - storefront_group: - notifier: - subscriptions: - # The configuration defined in ibexa.yaml for `default` scope is repeated as the configuration below overrides it - Ibexa\Contracts\User\Notification\UserPasswordReset: - channels: - - email - Ibexa\Contracts\User\Notification\UserInvitation: - channels: - - email - Ibexa\Contracts\FormBuilder\Notifications\FormSubmitted: - channels: - - email - # Custom subscriptions: - Ibexa\OrderManagement\Notification\OrderStatusChange: - channels: - - chat - Ibexa\Payment\Notification\PaymentStatusChange: - channels: - - chat - Ibexa\Shipping\Notification\ShipmentStatusChange: - channels: - - chat - App\Notifications\CommandExecuted: - channels: - - ibexa - - email - - log - App\Notifications\ControllerFeedback: - channels: - - browser diff --git a/code_samples/api/notifications/config/services.yaml b/code_samples/api/notifications/config/services.yaml deleted file mode 100644 index 51d97cdfbe6..00000000000 --- a/code_samples/api/notifications/config/services.yaml +++ /dev/null @@ -1,4 +0,0 @@ -services: - App\Notifier\Channel\LogChannel: - tags: - - { name: 'notifier.channel', channel: 'log' } diff --git a/code_samples/api/notifications/notification_send.php b/code_samples/api/notifications/notification_send.php deleted file mode 100644 index c0d4b421698..00000000000 --- a/code_samples/api/notifications/notification_send.php +++ /dev/null @@ -1,16 +0,0 @@ -send( - new SymfonyNotificationAdapter(new MyNotification($subject)), - [new SymfonyRecipientAdapter(new UserRecipient($userService->loadUser($permissionResolver->getCurrentUserReference()->getUserId())))], -); diff --git a/code_samples/api/notifications/src/Command/NotificationSenderCommand.php b/code_samples/api/notifications/src/Command/NotificationSenderCommand.php deleted file mode 100644 index ddd75f2e24e..00000000000 --- a/code_samples/api/notifications/src/Command/NotificationSenderCommand.php +++ /dev/null @@ -1,67 +0,0 @@ - $recipientLogins */ - public function __construct( - private readonly NotificationServiceInterface $notificationService, - private readonly UserService $userService, - private readonly array $recipientLogins = ['admin'], - ) { - parent::__construct(); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - /** @var array $exceptions */ - $exceptions = []; - - try { - // Do something - if (random_int(0, 1) == 1) { - throw new \RuntimeException('Something went wrong'); - } - $exitCode = Command::SUCCESS; - } catch (\Exception $exception) { - $exceptions[] = $exception; - $exitCode = Command::FAILURE; - } - - $recipients = []; - foreach ($this->recipientLogins as $login) { - try { - $user = $this->userService->loadUserByLogin($login); - $recipients[] = new UserRecipient($user); - } catch (\Exception $exception) { - $exceptions[] = $exception; - } - } - - $this->notificationService->send( - new SymfonyNotificationAdapter(new CommandExecuted($this, $exitCode, $exceptions)), - array_map( - static fn (RecipientInterface $recipient): SymfonyRecipientAdapter => new SymfonyRecipientAdapter($recipient), - $recipients - ) - ); - - return $exitCode; - } -} diff --git a/code_samples/api/notifications/src/Controller/NotificationSenderController.php b/code_samples/api/notifications/src/Controller/NotificationSenderController.php deleted file mode 100644 index 2f8ee320377..00000000000 --- a/code_samples/api/notifications/src/Controller/NotificationSenderController.php +++ /dev/null @@ -1,28 +0,0 @@ -notificationService->send( - new SymfonyNotificationAdapter((new ControllerFeedback('Message sent from controller'))->emoji('👍')), - ); - - return $this->render('@ibexadesign/notification-sender-controller.html.twig'); - } -} diff --git a/code_samples/api/notifications/src/Notifications/CommandExecuted.php b/code_samples/api/notifications/src/Notifications/CommandExecuted.php deleted file mode 100644 index 6f01028477d..00000000000 --- a/code_samples/api/notifications/src/Notifications/CommandExecuted.php +++ /dev/null @@ -1,54 +0,0 @@ - $exceptions */ - public function __construct( - private readonly Command $command, - private readonly int $exitCode, - private readonly array $exceptions - ) { - parent::__construct((Command::SUCCESS === $this->exitCode ? '✔' : '✖') . $this->command->getName()); - $this->importance(Command::SUCCESS === $this->exitCode ? Notification::IMPORTANCE_LOW : Notification::IMPORTANCE_HIGH); - } - - public function asEmailMessage(EmailRecipientInterface $recipient, ?string $transport = null): ?EmailMessage - { - $body = ''; - foreach ($this->exceptions as $exception) { - $body .= $exception->getMessage() . '
'; - } - - $email = NotificationEmail::asPublicEmail() - ->to($recipient->getEmail()) - ->subject($this->getSubject()) - ->html($body); - - return new EmailMessage($email); - } - - public function asSystemNotification(UserRecipientInterface $recipient, ?string $transport = null): ?SystemMessage - { - $message = new SystemMessage($recipient->getUser()); - $message->setContext([ - 'icon' => Command::SUCCESS === $this->exitCode ? 'check-circle' : 'discard-circle', - 'subject' => $this->command->getName(), - 'content' => 'Number of errors: ' . count($this->exceptions), - ]); - - return $message; - } -} diff --git a/code_samples/api/notifications/src/Notifications/ControllerFeedback.php b/code_samples/api/notifications/src/Notifications/ControllerFeedback.php deleted file mode 100644 index 0c82a0be117..00000000000 --- a/code_samples/api/notifications/src/Notifications/ControllerFeedback.php +++ /dev/null @@ -1,9 +0,0 @@ -logger)) { - $this->logger->info($notification->getSubject(), [ - 'class' => $notification::class, - 'importance' => $notification->getImportance(), - 'content' => $notification->getContent(), - ]); - } - } - - public function supports(Notification $notification, RecipientInterface $recipient): bool - { - return true; - } -} diff --git a/code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig b/code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig deleted file mode 100644 index 563a43accd9..00000000000 --- a/code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig +++ /dev/null @@ -1 +0,0 @@ -{% extends '@ibexadesign/ui/layout.html.twig' %} diff --git a/code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig b/code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig deleted file mode 100644 index 89078dd2367..00000000000 --- a/code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig +++ /dev/null @@ -1 +0,0 @@ -{% extends '@ibexadesign/storefront/layout.html.twig' %} diff --git a/code_samples/api/notifications/webpack.config.js b/code_samples/api/notifications/webpack.config.js deleted file mode 100644 index ddb7f0a1d06..00000000000 --- a/code_samples/api/notifications/webpack.config.js +++ /dev/null @@ -1,62 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const Encore = require('@symfony/webpack-encore'); -const getWebpackConfigs = require('@ibexa/frontend-config/webpack-config/get-configs'); -const customConfigsPaths = require('./var/encore/ibexa.webpack.custom.config.js'); - -const customConfigs = getWebpackConfigs(Encore, customConfigsPaths); -const isReactBlockPathCreated = fs.existsSync('./assets/page-builder/react/blocks'); - -Encore.reset(); -Encore - .setOutputPath('public/build/') - .setPublicPath('/build') - .enableSassLoader() - .enableReactPreset((options) => { - options.runtime = 'classic'; - }) - .enableSingleRuntimeChunk() - .copyFiles({ - from: './assets/images', - to: 'images/[path][name].[ext]', - pattern: /\.(png|svg)$/, - }) - .configureBabelPresetEnv((config) => { - config.useBuiltIns = 'usage'; - config.corejs = 3; - }); - -// Welcome page stylesheets -Encore.addEntry('welcome-page-css', [ - path.resolve(__dirname, './assets/scss/welcome-page.scss'), -]); - -// Welcome page javascripts -Encore.addEntry('welcome-page-js', [ - path.resolve(__dirname, './assets/js/welcome.page.js'), -]); - -if (isReactBlockPathCreated) { - // React Blocks javascript - Encore.addEntry('react-blocks-js', './assets/js/react.blocks.js'); -} - -Encore.addEntry('app', './assets/app.js'); - -const projectConfig = Encore.getWebpackConfig(); - -projectConfig.name = 'app'; - -const ibexaConfigManager = require('@ibexa/frontend-config/webpack-config/manager'); -const getIbexaConfig = require('@ibexa/frontend-config/webpack-config/ibexa'); -const ibexaConfig = getIbexaConfig(); - -ibexaConfigManager.add({ - ibexaConfig, - entryName: 'ibexa-admin-ui-layout-css', - newItems: [ - path.resolve(__dirname, './assets/scss/notifications.scss'), - ], -}); - -module.exports = [ibexaConfig, ...customConfigs, projectConfig]; diff --git a/code_samples/collaboration/config/services.yaml b/code_samples/collaboration/config/services.yaml deleted file mode 100644 index c6d81568ae5..00000000000 --- a/code_samples/collaboration/config/services.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# This file is the entry point to configure your own services. -# Files in the packages/ subdirectory configure your dependencies. - -# Put parameters here that don't need to change on each machine where the app is deployed -# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration -parameters: - -services: - # default configuration for services in *this* file - _defaults: - autowire: true # Automatically injects dependencies in your services. - autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. - - # makes classes in src/ available to be used as services - # this creates a service per class whose id is the fully-qualified class name - App\: - resource: '../src/' - - # add more service definitions when explicit configuration is needed - # please note that last definitions always *replace* previous ones - - App\Collaboration\Cart\Persistence\Gateway\DatabaseGateway: - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - name: 'ibexa.collaboration.persistence.session.gateway' - discriminator: !php/const App\Collaboration\Cart\Persistence\Gateway\DatabaseGateway::DISCRIMINATOR - - App\Collaboration\Cart\Persistence\Mapper: - tags: - - name: 'ibexa.collaboration.persistence.session.mapper' - discriminator: !php/const App\Collaboration\Cart\Persistence\Gateway\DatabaseGateway::DISCRIMINATOR - - App\Collaboration\Cart\Mapper\CartSessionDomainMapper: - tags: - - name: 'ibexa.collaboration.service.session.domain.mapper' - type: App\Collaboration\Cart\Persistence\Values\CartSession - - App\Collaboration\Cart\Mapper\CartSessionPersistenceMapper: - tags: - - name: 'ibexa.collaboration.service.session.persistence.mapper' - type: !php/const App\Collaboration\Cart\CartSessionType::IDENTIFIER - - App\Collaboration\Cart\PermissionResolverDecorator: - decorates: Ibexa\Contracts\ProductCatalog\PermissionResolverInterface - - App\Collaboration\Cart\CartResolverDecorator: - decorates: Ibexa\Contracts\Cart\CartResolverInterface diff --git a/code_samples/collaboration/ibexa_collaboration_cart.mysql.sql b/code_samples/collaboration/ibexa_collaboration_cart.mysql.sql deleted file mode 100644 index 74b94b6a62b..00000000000 --- a/code_samples/collaboration/ibexa_collaboration_cart.mysql.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE ibexa_collaboration_cart ( - id INT NOT NULL PRIMARY KEY, - cart_identifier VARCHAR(255) NOT NULL, - CONSTRAINT ibexa_collaboration_cart_ibexa_collaboration_id_fk - FOREIGN KEY (id) REFERENCES ibexa_collaboration (id) - ON DELETE CASCADE -) COLLATE = utf8mb4_general_ci; diff --git a/code_samples/collaboration/ibexa_collaboration_cart.postgresql.sql b/code_samples/collaboration/ibexa_collaboration_cart.postgresql.sql deleted file mode 100644 index a073132fcaa..00000000000 --- a/code_samples/collaboration/ibexa_collaboration_cart.postgresql.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE ibexa_collaboration_cart ( - id INTEGER NOT NULL PRIMARY KEY, - cart_identifier VARCHAR(255) NOT NULL, - CONSTRAINT ibexa_collaboration_cart_ibexa_collaboration_id_fk - FOREIGN KEY (id) REFERENCES ibexa_collaboration (id) - ON DELETE CASCADE -); diff --git a/code_samples/collaboration/src/Collaboration/Cart/CartResolverDecorator.php b/code_samples/collaboration/src/Collaboration/Cart/CartResolverDecorator.php deleted file mode 100644 index e4b3f1d664c..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/CartResolverDecorator.php +++ /dev/null @@ -1,52 +0,0 @@ -hasSharedCart()) { - return $this->getSharedCart() ?? $this->innerCartResolver->resolveCart($user); - } - - return $this->innerCartResolver->resolveCart($user); - } - - private function getSharedCart(): ?CartInterface - { - try { - $session = $this->sessionService->getSessionByToken( - $this->requestStack->getSession()->get(PermissionResolverDecorator::COLLABORATION_SESSION_ID) - ); - - if (!$session instanceof CartSession) { - return null; - } - - return $session->getCart(); - } catch (NotFoundException|UnauthorizedException) { - return null; - } - } - - private function hasSharedCart(): bool - { - return $this->requestStack->getSession()->has(PermissionResolverDecorator::COLLABORATION_SESSION_ID); - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/CartSession.php b/code_samples/collaboration/src/Collaboration/Cart/CartSession.php deleted file mode 100644 index dcacef41309..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/CartSession.php +++ /dev/null @@ -1,31 +0,0 @@ -cart; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/CartSessionCreateStruct.php b/code_samples/collaboration/src/Collaboration/Cart/CartSessionCreateStruct.php deleted file mode 100644 index 9594b61cd79..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/CartSessionCreateStruct.php +++ /dev/null @@ -1,29 +0,0 @@ -cart; - } - - public function setCart(CartInterface $cart): void - { - $this->cart = $cart; - } - - public function getType(): string - { - return CartSessionType::IDENTIFIER; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/CartSessionType.php b/code_samples/collaboration/src/Collaboration/Cart/CartSessionType.php deleted file mode 100644 index 93c9ab3023d..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/CartSessionType.php +++ /dev/null @@ -1,36 +0,0 @@ -getScopes(), true); - } - - public function getScopes(): array - { - return [ - self::SCOPE_VIEW, - self::SCOPE_EDIT, - ]; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/CartSessionUpdateStruct.php b/code_samples/collaboration/src/Collaboration/Cart/CartSessionUpdateStruct.php deleted file mode 100644 index ecf38e2f5ec..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/CartSessionUpdateStruct.php +++ /dev/null @@ -1,13 +0,0 @@ -repository->sudo(fn (): CartInterface => $this->cartService->getCart($identifier)); - - return true; - }; - - return $this->proxyGenerator->createProxy(CartInterface::class, $initializer); - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapperInterface.php b/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapperInterface.php deleted file mode 100644 index 37f4bc18ed2..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapperInterface.php +++ /dev/null @@ -1,10 +0,0 @@ - - */ -final readonly class CartSessionDomainMapper implements SessionDomainMapperInterface -{ - public function __construct( - private CartProxyMapperInterface $cartProxyMapper, - private UserProxyDomainMapperInterface $userDomainMapper, - private ParticipantCollectionDomainMapperInterface $participantCollectionDomainMapper - ) { - } - - /** - * @param \App\Collaboration\Cart\Persistence\Values\CartSession $data - */ - public function fromPersistence(SessionData $data): SessionInterface - { - return new CartSession( - $data->getId(), - $this->cartProxyMapper->createCartProxy($data->getCartIdentifier()), - $data->getToken(), - $this->userDomainMapper->createUserProxy($data->getOwnerId()), - $this->participantCollectionDomainMapper->createParticipantCollectionProxy($data->getId()), - $data->isActive(), - $data->hasPublicLink(), - $data->getCreatedAt(), - $data->getUpdatedAt(), - ); - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionPersistenceMapper.php b/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionPersistenceMapper.php deleted file mode 100644 index 380ecf6b060..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionPersistenceMapper.php +++ /dev/null @@ -1,51 +0,0 @@ -getToken(); - $owner = $createStruct->getOwner(); - $hasPublicLink = $createStruct->hasPublicLink(); - - assert($token !== null); - assert($owner !== null); - assert($hasPublicLink !== null); - - return new CartSessionCreateStruct( - $token, - $createStruct->getCart()->getIdentifier(), - $owner->getUserId(), - $createStruct->isActive(), - $hasPublicLink, - new \DateTimeImmutable(), - new \DateTimeImmutable() - ); - } - - public function toPersistenceUpdateStruct( - SessionInterface $session, - SessionUpdateStruct $updateStruct - ): PersistenceSessionUpdateStruct { - return new CartSessionUpdateStruct( - $session->getId(), - $updateStruct->getToken(), - ($updateStruct->getOwner() ?? $session->getOwner())->getUserId() - ); - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/PermissionResolverDecorator.php b/code_samples/collaboration/src/Collaboration/Cart/PermissionResolverDecorator.php deleted file mode 100644 index 8aba2621ecb..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/PermissionResolverDecorator.php +++ /dev/null @@ -1,94 +0,0 @@ -getObject(); - if ($this->nested === false && $this->isCartPolicy($policy) && $object instanceof CartInterface && $this->isSharedCart($object)) { - return true; - } - - return $this->innerPermissionResolver->canUser($policy); - } - - public function assertPolicy(PolicyInterface $policy): void - { - $object = $policy->getObject(); - if ($this->nested === false && $this->isCartPolicy($policy) && $object instanceof CartInterface && $this->isSharedCart($object)) { - return; - } - - $this->innerPermissionResolver->assertPolicy($policy); - } - - private function isCartPolicy(PolicyInterface $policy): bool - { - return $policy instanceof CartView || $policy instanceof CartEdit; - } - - private function isSharedCart(?CartInterface $cart): bool - { - if ($cart === null) { - return false; - } - - try { - $this->nested = true; - - /** @var \App\Collaboration\Cart\CartSession $session */ - $session = $this->getCurrentCartCollaborationSession(); - if ($session !== null) { - try { - return $cart->getId() === $session->getCart()->getId(); - } catch (NotFoundException) { - } - } - } finally { - $this->nested = false; - } - - return false; - } - - private function getCurrentCartCollaborationSession(): ?CartSession - { - $token = $this->requestStack->getSession()->get(self::COLLABORATION_SESSION_ID); - if ($token === null) { - return null; - } - - try { - $session = $this->sessionService->getSessionByToken($token); - if ($session instanceof CartSession) { - return $session; - } - } catch (NotFoundException|UnauthorizedException) { - } - - return null; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseGateway.php b/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseGateway.php deleted file mode 100644 index 8ecca9a74b4..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseGateway.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * @template-implements \Ibexa\Collaboration\Persistence\Session\Inner\GatewayInterface - */ -final class DatabaseGateway extends AbstractDoctrineDatabase implements GatewayInterface -{ - public const string DISCRIMINATOR = 'cart'; - - protected function buildMetadata(): DoctrineSchemaMetadataInterface - { - return new DoctrineSchemaMetadata( - $this->connection, - null, - $this->getTableName(), - [ - DatabaseSchema::COLUMN_ID => Types::INTEGER, - DatabaseSchema::COLUMN_CART_IDENTIFIER => Types::STRING, - ], - [DatabaseSchema::COLUMN_ID] - ); - } - - protected function getTableName(): string - { - return DatabaseSchema::TABLE_NAME; - } - - public function getDiscriminator(): string - { - return self::DISCRIMINATOR; - } - - /** - * @param \App\Collaboration\Cart\Persistence\Values\CartSessionCreateStruct $createStruct - */ - public function create(int $sessionId, AbstractSessionCreateStruct $createStruct): void - { - $this->doInsert([ - DatabaseSchema::COLUMN_ID => $sessionId, - DatabaseSchema::COLUMN_CART_IDENTIFIER => $createStruct->getCartIdentifier(), - ]); - } - - /** - * @param \Ibexa\Collaboration\Persistence\Values\AbstractSessionUpdateStruct $updateStruct - */ - public function update(AbstractSessionUpdateStruct $updateStruct): void - { - // There is nothing to update - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseSchema.php b/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseSchema.php deleted file mode 100644 index 87a556f2698..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseSchema.php +++ /dev/null @@ -1,16 +0,0 @@ - - */ -final class Mapper implements MapperInterface -{ - public function extractFromRow(array $row): AbstractSession - { - return new CartSession( - $row['id'], - $row['cart_cart_identifier'], - $row['token'], - $row['owner_id'], - $row['is_active'], - $row['has_public_link'], - $row['created_at'], - $row['updated_at'] - ); - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSession.php b/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSession.php deleted file mode 100644 index dd58482adf3..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSession.php +++ /dev/null @@ -1,27 +0,0 @@ -cartIdentifier; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionCreateStruct.php b/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionCreateStruct.php deleted file mode 100644 index 875dc6a87a3..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionCreateStruct.php +++ /dev/null @@ -1,37 +0,0 @@ -cartIdentifier; - } - - public function setCartIdentifier(string $cartIdentifier): void - { - $this->cartIdentifier = $cartIdentifier; - } - - public function getDiscriminator(): string - { - return CartSessionType::IDENTIFIER; - } -} diff --git a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionUpdateStruct.php b/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionUpdateStruct.php deleted file mode 100644 index 471a5f7fbd5..00000000000 --- a/code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionUpdateStruct.php +++ /dev/null @@ -1,14 +0,0 @@ -createForm( - ShareCartType::class, - null, - [ - 'method' => 'POST', - ] - ); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - /** @var \App\Form\Data\ShareCartData $data */ - $data = $form->getData(); - - // Handle the form submission - $cart = $this->cartResolver->resolveCart(); - - $session = $this->sessionService->createSession( - new CartSessionCreateStruct($cart) - ); - - $email = $data->getEmail(); - if ($email === null) { - throw new InvalidArgumentException('Email cannot be null'); - } - - $this->sessionService->addParticipant( - $session, - new ExternalParticipantCreateStruct( - $email, - CartSessionType::SCOPE_EDIT - ) - ); - - return $this->render( - '@ibexadesign/cart/share_result.html.twig', - [ - 'session' => $session, - ] - ); - } - - return $this->render( - '@ibexadesign/cart/share.html.twig', - [ - 'form' => $form->createView(), - ] - ); - } -} diff --git a/code_samples/collaboration/src/Controller/ShareCartJoinController.php b/code_samples/collaboration/src/Controller/ShareCartJoinController.php deleted file mode 100644 index 4c9ecc209b9..00000000000 --- a/code_samples/collaboration/src/Controller/ShareCartJoinController.php +++ /dev/null @@ -1,37 +0,0 @@ -sessionService->getSessionByToken($token); - if ($session instanceof CartSession) { - $request->getSession()->set(self::CURRENT_COLLABORATION_SESSION, $session->getToken()); - - return $this->redirectToRoute('ibexa.cart.view', [ - 'identifier' => $session->getCart()->getIdentifier(), - ]); - } - - throw $this->createAccessDeniedException(); - } -} diff --git a/code_samples/collaboration/src/Form/Data/ShareCartData.php b/code_samples/collaboration/src/Form/Data/ShareCartData.php deleted file mode 100644 index 37c2e0cc2c0..00000000000 --- a/code_samples/collaboration/src/Form/Data/ShareCartData.php +++ /dev/null @@ -1,21 +0,0 @@ -email; - } - - public function setEmail(?string $email): void - { - $this->email = $email; - } -} diff --git a/code_samples/collaboration/src/Form/Type/ShareCartType.php b/code_samples/collaboration/src/Form/Type/ShareCartType.php deleted file mode 100644 index 86f2369bcbb..00000000000 --- a/code_samples/collaboration/src/Form/Type/ShareCartType.php +++ /dev/null @@ -1,32 +0,0 @@ - - */ -final class ShareCartType extends AbstractType -{ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $builder->add('email', EmailType::class, [ - 'label' => 'E-mail', - ])->add('submit', SubmitType::class, [ - 'label' => 'Share', - ]); - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => ShareCartData::class, - ]); - } -} diff --git a/code_samples/collaboration/templates/themes/storefront/cart/share.html.twig b/code_samples/collaboration/templates/themes/storefront/cart/share.html.twig deleted file mode 100644 index f4ba2e29139..00000000000 --- a/code_samples/collaboration/templates/themes/storefront/cart/share.html.twig +++ /dev/null @@ -1,9 +0,0 @@ -{% extends '@ibexadesign/storefront/layout.html.twig' %} - -{% block content %} - {{ form_start(form) }} - {{ form_label(form.email, null, { 'label_attr': { 'class': 'ibexa-store-label' }}) }} - {{ form_widget(form.email, { 'attr': { 'class': 'ibexa-store-input' } }) }} - {{ form_widget(form.submit, { 'attr': { 'class': 'ibexa-store-btn ibexa-store-btn--primary' } }) }} - {{ form_end(form) }} -{% endblock %} diff --git a/code_samples/collaboration/templates/themes/storefront/cart/share_result.html.twig b/code_samples/collaboration/templates/themes/storefront/cart/share_result.html.twig deleted file mode 100644 index a830a4d7684..00000000000 --- a/code_samples/collaboration/templates/themes/storefront/cart/share_result.html.twig +++ /dev/null @@ -1,10 +0,0 @@ -{% extends '@ibexadesign/storefront/layout.html.twig' %} - -{% block content %} -

- Cart has been shared successfully! Link to session:  - - {{ url('app.shared_cart.join', { token: session.getToken() }) }} - -

-{% endblock %} diff --git a/code_samples/collaboration/templates/themes/storefront/cart/view.html.twig b/code_samples/collaboration/templates/themes/storefront/cart/view.html.twig deleted file mode 100644 index 922e21be241..00000000000 --- a/code_samples/collaboration/templates/themes/storefront/cart/view.html.twig +++ /dev/null @@ -1,8 +0,0 @@ -{% extends '@IbexaStorefront/themes/storefront/cart/view.html.twig' %} - -{% block content %} -
- Share cart -
- {{ parent() }} -{% endblock %} diff --git a/code_samples/data_migration/examples/create_payment_method.yaml b/code_samples/data_migration/examples/create_payment_method.yaml deleted file mode 100644 index c9ee7c030e4..00000000000 --- a/code_samples/data_migration/examples/create_payment_method.yaml +++ /dev/null @@ -1,19 +0,0 @@ -- type: payment_method - mode: create - paymentType: online - name: - - - languageCode: eng-GB - value: PaymentMethodName - - - languageCode: ger-DE - value: PaymentMethodNameGerman - identifier: PaymentMethodIdentifier - enabled: true - description: - - - languageCode: eng-GB - value: PaymentMethodDescription - - - languageCode: ger-DE - value: PaymentMethodDescriptionGerman diff --git a/code_samples/data_migration/examples/create_shipping_method.yaml b/code_samples/data_migration/examples/create_shipping_method.yaml deleted file mode 100644 index 266a13ad7ca..00000000000 --- a/code_samples/data_migration/examples/create_shipping_method.yaml +++ /dev/null @@ -1,45 +0,0 @@ -- type: shipping_method - mode: create - name: - - - languageCode: eng-GB - value: TestName - description: - - - languageCode: eng-GB - value: TestDescription - vatCategory: standard - identifier: TestIdentifier - enabled: false - shippingType: free - options: - currency: 1 - price: '12.34' - regions: - - germany - -- type: shipping_method - mode: create - name: - - - languageCode: eng-GB - value: TestName - - - languageCode: ger-DE - value: TestNameGerman - description: - - - languageCode: eng-GB - value: TestDescription - - - languageCode: ger-DE - value: TestDescriptionGerman - vatCategory: standard - identifier: TestIdentifier2 - shippingType: flat_rate - options: - price: '12.34' - currency: 'PLN' - regions: - - germany - - france diff --git a/code_samples/data_migration/examples/discounts/discount_code_create.yaml b/code_samples/data_migration/examples/discounts/discount_code_create.yaml deleted file mode 100644 index 7b2358d364c..00000000000 --- a/code_samples/data_migration/examples/discounts/discount_code_create.yaml +++ /dev/null @@ -1,7 +0,0 @@ -type: discount_code -mode: create -code: summer10 -global_usage_limit: 100 # Optional -user_usage_limit: 5 # Optional -created_at: '2023-01-01T12:00:00+00:00' # Optional -creator_id: 42 # Optional diff --git a/code_samples/data_migration/examples/discounts/discount_create.yaml b/code_samples/data_migration/examples/discounts/discount_create.yaml deleted file mode 100644 index e3000b4ec7e..00000000000 --- a/code_samples/data_migration/examples/discounts/discount_create.yaml +++ /dev/null @@ -1,37 +0,0 @@ -- type: discount - mode: create - identifier: summer_sale_2025 - translations: - - - language_code: eng-GB - name: "Summer Sale 2025" - description: "-10% on laptops" - label: "HOT DEAL: Summer Sale!" - label_description: "Get 10% off on selected items!" - discount_type: cart - priority: 8 - enabled: true - user: admin - startDate: '2024-01-01T00:01:00+00:00' - endDate: null - createdAt: null - updatedAt: null - rule: - type: percentage - expressionValues: - discount_percentage: 10 - conditions: - - - identifier: is_in_currency - expressionValues: - currency_code: EUR - - - identifier: is_product_in_array - expressionValues: - product_codes: - - product_code_book_0 - - product_code_book_1 - - - identifier: is_product_in_quantity_in_cart - expressionValues: - quantity: 2 diff --git a/code_samples/data_migration/examples/discounts/discount_update.yaml b/code_samples/data_migration/examples/discounts/discount_update.yaml deleted file mode 100644 index 6c40304fc20..00000000000 --- a/code_samples/data_migration/examples/discounts/discount_update.yaml +++ /dev/null @@ -1,29 +0,0 @@ -- type: discount - mode: update - match: - field: identifier - value: summer_sale_2025 - identifier: summer_sale_2025_updated - translations: - eng-GB: - language_code: eng-GB - name: Updated name - description: Updated description - label: Updated promotion label - label_description: Updated promotion description - priority: 5 - active: true - user: admin - startDate: '2024-01-01T00:00:00+00:00' - endDate: null - createdAt: null - updatedAt: null - rule: - type: percentage - expressionValues: - discount_percentage: '10' - conditions: - - - identifier: is_product_in_quantity_in_cart - expressionValues: - quantity: 2 diff --git a/code_samples/discounts/REST/Discount.json b/code_samples/discounts/REST/Discount.json deleted file mode 100644 index 4082970a0d5..00000000000 --- a/code_samples/discounts/REST/Discount.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "Discount": { - "_media-type": "application/vnd.ibexa.api.Discount+json", - "id": 1, - "identifier": "summersale2025", - "name": "SummerSale2025", - "type": "catalog", - "label": "Summer Sale 2025", - "labelDescription": "Summer Sale 2025", - "priority": 1, - "isEnabled": true, - "createdAt": "2025-06-10T09:43:42+00:00", - "updatedAt": "2025-06-10T09:48:23+00:00", - "startDate": "2025-07-01T09:34:19+00:00", - "endDate": "2025-07-31T12:00:00+00:00", - "DiscountExpressionAware": { - "_media-type": "application/vnd.ibexa.api.DiscountExpressionAware+json", - "expressionValues": { - "discount_amount": "10" - } - }, - "DiscountConditions": [ - { - "_media-type": "application/vnd.ibexa.api.DiscountExpressionAware+json", - "expressionValues": { - "currency_code": "USD" - } - } - ], - "DiscountTranslations": [ - { - "_media-type": "application/vnd.ibexa.api.DiscountTranslation+json", - "languageCode": {}, - "name": "SummerSale2025", - "description": null, - "label": "Summer Sale 2025", - "labelDescription": "Summer Sale 2025" - } - ] - }, - "isDiscountCodeAware": { - "_media-type": "application/vnd.ibexa.api.isDiscountCodeAware+json", - "isDiscountCodeAware": false - } -} diff --git a/code_samples/discounts/src/Command/ManageDiscountsCommand.php b/code_samples/discounts/src/Command/ManageDiscountsCommand.php deleted file mode 100644 index 88755ae611a..00000000000 --- a/code_samples/discounts/src/Command/ManageDiscountsCommand.php +++ /dev/null @@ -1,87 +0,0 @@ -permissionResolver->setCurrentUserReference( - $this->userService->loadUserByLogin('admin') - ); - - $now = new DateTimeImmutable(); - - $discountCodeCreateStruct = new DiscountCodeCreateStruct( - 'summer10', - 10, // Global usage limit - null, // Unlimited usage per customer - $this->permissionResolver->getCurrentUserReference()->getUserId(), - $now - ); - $discountCode = $this->discountCodeService->createDiscountCode($discountCodeCreateStruct); - - $discountCreateStruct = new DiscountCreateStruct(); - $discountCreateStruct - ->setIdentifier('discount_identifier') - ->setType(DiscountType::CART) - ->setPriority(10) - ->setEnabled(true) - ->setUser($this->userService->loadUserByLogin('admin')) - ->setRule(new FixedAmount(10)) - ->setStartDate($now) - ->setConditions([ - new IsInRegions(['germany', 'france']), - new IsProductInArray(['product-1', 'product-2']), - new IsInCurrency('EUR'), - new IsValidDiscountCode( - $discountCode->getCode(), - $discountCode->getGlobalLimit(), - $discountCode->getUsedLimit() - ), - ]) - ->setTranslations([ - new DiscountTranslationStruct('eng-GB', 'Discount name', 'This is a discount description', 'Promotion Label', 'Promotion Description'), - new DiscountTranslationStruct('ger-DE', 'Discount name (German)', 'Description (German)', 'Promotion Label (German)', 'Promotion Description (German)'), - ]) - ->setEndDate(null) // Permanent discount - ->setCreatedAt($now) - ->setUpdatedAt($now) - ->setContext(new ArrayMap(['custom_context' => 'custom_value'])); - - $this->discountService->createDiscount($discountCreateStruct); - - return Command::SUCCESS; - } -} diff --git a/code_samples/discounts/src/Command/OrderPriceCommand.php b/code_samples/discounts/src/Command/OrderPriceCommand.php deleted file mode 100644 index 748a886c46d..00000000000 --- a/code_samples/discounts/src/Command/OrderPriceCommand.php +++ /dev/null @@ -1,113 +0,0 @@ -permissionResolver->setCurrentUserReference($this->userService->loadUserByLogin('admin')); - - $productCode = 'product_code_control_unit_0'; - $orderIdentifier = '4315bc58-1e96-4f21-82a0-15f736cbc4bc'; - $currencyCode = 'EUR'; - - $output->writeln('Product data:'); - $product = $this->productService->getProduct($productCode); - $currency = $this->currencyService->getCurrencyByCode($currencyCode); - - $basePrice = $this->productPriceService->getPriceByProductAndCurrency($product, $currency); - $resolvedPrice = $this->priceResolver->resolvePrice($product, new PriceContext($currency)); - - if ($resolvedPrice === null) { - throw new Exception('Could not resolve price for the product'); - } - - $output->writeln(sprintf('Base price: %s', $this->formatPrice($basePrice->getMoney()))); - $output->writeln(sprintf('Discounted price: %s', $this->formatPrice($resolvedPrice->getMoney()))); - - if ($resolvedPrice instanceof PriceEnvelopeInterface) { - /** @var \Ibexa\Discounts\Value\Price\Stamp\DiscountStamp $discountStamp */ - foreach ($resolvedPrice->all(DiscountStamp::class) as $discountStamp) { - $output->writeln( - sprintf( - 'Discount applied: %s , new amount: %s', - $discountStamp->getDiscount()->getName(), - $this->formatPrice( - $discountStamp->getNewPrice() - ) - ) - ); - } - } - - $output->writeln('Order details:'); - - $order = $this->orderService->getOrderByIdentifier($orderIdentifier); - foreach ($order->getItems() as $item) { - /** @var ?DiscountsData $discountData */ - $discountData = $item->getContext()['discount_data'] ?? null; - if ($discountData instanceof DiscountsData) { - $output->writeln( - sprintf( - 'Product bought with discount: %s, base price: %s, discounted price: %s', - $item->getProduct()->getName(), - $this->formatPrice($discountData->getOriginalPrice()), - $this->formatPrice( - $item->getValue()->getUnitPriceGross() - ) - ) - ); - } else { - $output->writeln( - sprintf( - 'Product bought with original price: %s, price: %s', - $item->getProduct()->getName(), - $this->formatPrice( - $item->getValue()->getUnitPriceGross() - ) - ) - ); - } - } - - return Command::SUCCESS; - } - - private function formatPrice(Money $money): string - { - return $this->moneyFactory->getMoneyFormatter()->format($money); - } -} diff --git a/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversary.php b/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversary.php deleted file mode 100644 index 506a7351e82..00000000000 --- a/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversary.php +++ /dev/null @@ -1,33 +0,0 @@ - $tolerance ?? 0, - ]); - } - - public function getTolerance(): int - { - return $this->getExpressionValue('tolerance'); - } - - public function getIdentifier(): string - { - return self::IDENTIFIER; - } - - public function getExpression(): string - { - return 'is_anniversary(current_user_registration_date, tolerance)'; - } -} diff --git a/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversaryConditionFactory.php b/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversaryConditionFactory.php deleted file mode 100644 index 4d2ede841ee..00000000000 --- a/code_samples/discounts/src/Discounts/Condition/IsAccountAnniversaryConditionFactory.php +++ /dev/null @@ -1,16 +0,0 @@ - $this->userService->loadUser( - $this->permissionResolver->getCurrentUserReference()->getUserId() - )->getContentInfo()->publishedDate, - ]; - } -} diff --git a/code_samples/discounts/src/Discounts/ExpressionProvider/IsAnniversaryResolver.php b/code_samples/discounts/src/Discounts/ExpressionProvider/IsAnniversaryResolver.php deleted file mode 100644 index 1b7449da302..00000000000 --- a/code_samples/discounts/src/Discounts/ExpressionProvider/IsAnniversaryResolver.php +++ /dev/null @@ -1,41 +0,0 @@ -unifyYear(new DateTimeImmutable()); - $d2 = $this->unifyYear($date); - - $diff = $d1->diff($d2, true)->days; - - // Check if the difference between dates is within the tolerance - return $diff <= $tolerance; - } - - private function unifyYear(DateTimeInterface $date): DateTimeImmutable - { - // Create a new date using the reference year but with the same month and day - $newDate = DateTimeImmutable::createFromFormat( - self::YEAR_MONTH_DAY_FORMAT, - self::REFERENCE_YEAR . '-' . $date->format(self::MONTH_DAY_FORMAT) - ); - - if ($newDate === false) { - throw new \RuntimeException('Failed to unify year for date.'); - } - - return $newDate; - } -} diff --git a/code_samples/discounts/src/Discounts/RecentDiscountPrioritizationStrategy.php b/code_samples/discounts/src/Discounts/RecentDiscountPrioritizationStrategy.php deleted file mode 100644 index 7805cfab002..00000000000 --- a/code_samples/discounts/src/Discounts/RecentDiscountPrioritizationStrategy.php +++ /dev/null @@ -1,21 +0,0 @@ -inner->getOrder() - ); - } -} diff --git a/code_samples/discounts/src/Discounts/Rule/PurchaseParityValueFormatter.php b/code_samples/discounts/src/Discounts/Rule/PurchaseParityValueFormatter.php deleted file mode 100644 index b569b187cb9..00000000000 --- a/code_samples/discounts/src/Discounts/Rule/PurchaseParityValueFormatter.php +++ /dev/null @@ -1,17 +0,0 @@ - 100, - 'germany' => 81.6, - 'france' => 80, - 'spain' => 69, - ]; - - /** @param ?array $powerParityMap */ - public function __construct(?array $powerParityMap = null) - { - parent::__construct( - [ - 'power_parity_map' => $powerParityMap ?? self::DEFAULT_PARITY_MAP, - ] - ); - } - - /** @return array */ - public function getMap(): array - { - return $this->getExpressionValue('power_parity_map'); - } - - public function getExpression(): string - { - return 'amount * (power_parity_map[get_current_region().getIdentifier()] / power_parity_map["default"])'; - } - - public function getType(): string - { - return self::TYPE; - } -} diff --git a/code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRuleFactory.php b/code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRuleFactory.php deleted file mode 100644 index a173345d013..00000000000 --- a/code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRuleFactory.php +++ /dev/null @@ -1,14 +0,0 @@ -getStepData() instanceof AnniversaryConditionStep; - } - - public function addFields(FormInterface $form, DiscountStepData $data, PreSetDataEvent $event): void - { - $form->add( - 'stepData', - AnniversaryConditionStepType::class, - [ - 'label' => false, - ] - ); - } - - public static function getTranslationMessages(): array - { - return [ - (new Message('discount.step.custom.label', 'discount'))->setDesc('Custom'), - ]; - } -} diff --git a/code_samples/discounts/src/Discounts/Step/Step1/AnniversaryConditionStepEventSubscriber.php b/code_samples/discounts/src/Discounts/Step/Step1/AnniversaryConditionStepEventSubscriber.php deleted file mode 100644 index 8765383d454..00000000000 --- a/code_samples/discounts/src/Discounts/Step/Step1/AnniversaryConditionStepEventSubscriber.php +++ /dev/null @@ -1,51 +0,0 @@ - 'addAnniversaryConditionStep', - MapDiscountToFormDataEvent::class => 'addAnniversaryConditionStep', - ]; - } - - /** - * @param \Ibexa\Contracts\Discounts\Event\CreateFormDataEvent|\Ibexa\Contracts\Discounts\Event\MapDiscountToFormDataEvent $event - */ - public function addAnniversaryConditionStep(Event $event): void - { - $data = $event->getData(); - if ($data->getType() !== DiscountType::CART) { - return; - } - - /** @var \App\Discounts\Condition\IsAccountAnniversary $discount */ - $discount = $event instanceof MapDiscountToFormDataEvent ? - $event->getDiscount()->getConditionByIdentifier(IsAccountAnniversary::IDENTIFIER) : - null; - - $conditionStep = $discount !== null ? - new AnniversaryConditionStep(true, $discount->getTolerance()) : - new AnniversaryConditionStep(); - - $event->setData( - $event->getData()->withStep( - $conditionStep, - AnniversaryConditionStep::IDENTIFIER, - 'Anniversary Condition', - -45 // Priority - ) - ); - } -} diff --git a/code_samples/discounts/src/Discounts/Step/Step2/AnniversaryConditionStepEventSubscriber.php b/code_samples/discounts/src/Discounts/Step/Step2/AnniversaryConditionStepEventSubscriber.php deleted file mode 100644 index 8f60118ad1d..00000000000 --- a/code_samples/discounts/src/Discounts/Step/Step2/AnniversaryConditionStepEventSubscriber.php +++ /dev/null @@ -1,71 +0,0 @@ - 'addAnniversaryConditionStep', - MapDiscountToFormDataEvent::class => 'addAnniversaryConditionStep', - CreateDiscountCreateStructEvent::class => 'addStepDataToStruct', - CreateDiscountUpdateStructEvent::class => 'addStepDataToStruct', - ]; - } - - /** - * @param \Ibexa\Contracts\Discounts\Event\CreateFormDataEvent|\Ibexa\Contracts\Discounts\Event\MapDiscountToFormDataEvent $event - */ - public function addAnniversaryConditionStep(Event $event): void - { - $data = $event->getData(); - if ($data->getType() !== DiscountType::CART) { - return; - } - - /** @var \App\Discounts\Condition\IsAccountAnniversary $discount */ - $discount = $event instanceof MapDiscountToFormDataEvent ? - $event->getDiscount()->getConditionByIdentifier(IsAccountAnniversary::IDENTIFIER) : - null; - - $conditionStep = $discount !== null ? - new AnniversaryConditionStep(true, $discount->getTolerance()) : - new AnniversaryConditionStep(); - - $event->setData( - $event->getData()->withStep( - $conditionStep, - AnniversaryConditionStep::IDENTIFIER, - 'Anniversary Condition', - -45 // Priority - ) - ); - } - - public function addStepDataToStruct(DiscountStructEventInterface $event): void - { - /** @var AnniversaryConditionStep $stepData */ - $stepData = $event - ->getData() - ->getStepByIdentifier(AnniversaryConditionStep::IDENTIFIER)?->getStepData(); - - if ($stepData === null || !$stepData->enabled) { - return; - } - - $discountStruct = $event->getStruct(); - $discountStruct->addCondition(new IsAccountAnniversary($stepData->tolerance)); - } -} diff --git a/code_samples/discounts/src/Form/Data/PurchasingPowerParityValue.php b/code_samples/discounts/src/Form/Data/PurchasingPowerParityValue.php deleted file mode 100644 index bf7f19ec2dd..00000000000 --- a/code_samples/discounts/src/Form/Data/PurchasingPowerParityValue.php +++ /dev/null @@ -1,10 +0,0 @@ -setDesc('Regional'), - ]; - } -} diff --git a/code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityValueMapper.php b/code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityValueMapper.php deleted file mode 100644 index 50a51c63e71..00000000000 --- a/code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityValueMapper.php +++ /dev/null @@ -1,62 +0,0 @@ -getRule(); - if (!$discountRule instanceof PurchasingPowerParityRule) { - throw new LogicException('Not implemented'); - } - - return new PurchasingPowerParityValue(); - } - - public function mapCreateDataToStruct( - DiscountValueInterface $data, - DiscountCreateStruct $struct - ): void { - $this->addRuleToStruct($data, $struct); - } - - public function mapUpdateDataToStruct( - DiscountInterface $discount, - DiscountValueInterface $data, - DiscountUpdateStruct $struct - ): void { - $this->addRuleToStruct($data, $struct); - } - - /** - * @param \Ibexa\Contracts\Discounts\Value\Struct\DiscountCreateStruct|\Ibexa\Contracts\Discounts\Value\Struct\DiscountUpdateStruct $struct - */ - private function addRuleToStruct(DiscountValueInterface $data, $struct): void - { - if (!$data instanceof PurchasingPowerParityValue) { - throw new LogicException('Not implemented'); - } - - $rule = new PurchasingPowerParityRule(); - $struct->setRule($rule); - } -} diff --git a/code_samples/discounts/src/Form/Type/AnniversaryConditionStepType.php b/code_samples/discounts/src/Form/Type/AnniversaryConditionStepType.php deleted file mode 100644 index 004d1d1a7f3..00000000000 --- a/code_samples/discounts/src/Form/Type/AnniversaryConditionStepType.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -final class AnniversaryConditionStepType extends AbstractType -{ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $builder->add( - 'enabled', - CheckboxType::class, - [ - 'label' => 'Enable anniversary discount', - 'required' => false, - ] - )->add( - 'tolerance', - NumberType::class, - [ - 'label' => 'Tolerance in days', - 'required' => false, - ] - ); - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => AnniversaryConditionStep::class, - ]); - } -} diff --git a/code_samples/discounts/src/Form/Type/DiscountValue/PurchasingPowerParityValueType.php b/code_samples/discounts/src/Form/Type/DiscountValue/PurchasingPowerParityValueType.php deleted file mode 100644 index d957d5037f1..00000000000 --- a/code_samples/discounts/src/Form/Type/DiscountValue/PurchasingPowerParityValueType.php +++ /dev/null @@ -1,74 +0,0 @@ - - */ -final class PurchasingPowerParityValueType extends AbstractType -{ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $availableRegionHandler = static function (FormInterface $form, PurchasingPowerParityValue $data): void { - $regions = $data->getDiscountData()->getGeneralProperties()->getRegions(); - $regionNames = implode(', ', array_map(static fn (RegionInterface $region): string => $region->getIdentifier(), $regions)); - - $options = [ - 'required' => false, - 'disabled' => true, - 'label' => 'This discount applies to the following regions', - 'data' => $regionNames, - ]; - - $form->add('value', TextType::class, $options); - }; - - $builder->add('type', FormType::class, [ - 'mapped' => false, - 'label' => false, - ]); - - $builder->addEventListener( - FormEvents::PRE_SET_DATA, - static function (PreSetDataEvent $event) use ($availableRegionHandler): void { - $form = $event->getForm(); - $availableRegionHandler($form, $event->getData()); - }, - ); - $builder->get('type')->addEventListener( - FormEvents::POST_SUBMIT, - static function (PostSubmitEvent $event) use ($availableRegionHandler): void { - $form = $event->getForm()->getParent(); - assert($form !== null); - $availableRegionHandler($form, $form->getData()); - }, - ); - } - - #[\Override] - public function getParent(): string - { - return DiscountValueType::class; - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'data_class' => PurchasingPowerParityValue::class, - ]); - } -} diff --git a/code_samples/discounts/src/Query/Search.php b/code_samples/discounts/src/Query/Search.php deleted file mode 100644 index 9a6af404152..00000000000 --- a/code_samples/discounts/src/Query/Search.php +++ /dev/null @@ -1,29 +0,0 @@ -findDiscounts($query); diff --git a/code_samples/front/shop/checkout/assets/styles/checkout.css b/code_samples/front/shop/checkout/assets/styles/checkout.css deleted file mode 100644 index 4990dad7028..00000000000 --- a/code_samples/front/shop/checkout/assets/styles/checkout.css +++ /dev/null @@ -1,95 +0,0 @@ -.ibexa-store-main-menu .ibexa-store-container { - display: grid; - justify-content: space-between; -} - -.ibexa-store-minicart-wrapper { - grid-column-start: 2; - grid-column-end: 2; -} - -.ibexa-store-main-menu-items { - grid-column-start: 1; - grid-column-end: 1; -} - -.ibexa-store-main-menu-items ul { - margin: 0; - padding: 0 -} - -.ibexa-store-main-menu-items li { - padding: 10px 8px; - display: inline-block; -} - -.seats-selection-container { - padding: 20px 0; - display: grid; - grid-auto-columns: auto; -} - -.seat { - display: inline-block; - padding: 15px; - border: 1px solid #ccc; -} - -.seat-null { - background: #EEEEEE; -} - -.seat-available { - background: #98de98; - cursor: pointer; -} - -.seat-not-available { - background: #d38e8e; -} - -.seat-selected { - background: #0a410a; -} - -.seats-map { - grid-column: 1 / 3; - grid-row: 1; -} - -.seats-input { - grid-column: 2 / 3; - grid-row: 1; -} - -.checkout-header { - margin-bottom: 40px; -} - -.checkout-field-group { - border: none; - background: #f9f9fa; - border-radius: 3px; - padding: 24px; - margin-bottom: 20px; -} - -.checkout-field-group-header { - margin-bottom: 20px; -} - -.checkout-field-group-label { - font-size: 1.5em; -} - -.checkout-field-group-step { - display: inline-block; - border: 1px solid #666; - border-radius: 20px; - width: 40px; - height: 40px; - padding: 10px; - text-align: center; - margin-right: 10px; -} - diff --git a/code_samples/front/shop/checkout/config/packages/checkout.yaml b/code_samples/front/shop/checkout/config/packages/checkout.yaml deleted file mode 100644 index af7c92006be..00000000000 --- a/code_samples/front/shop/checkout/config/packages/checkout.yaml +++ /dev/null @@ -1,109 +0,0 @@ -ibexa: - repositories: - default: - checkout: - workflow: one_page_checkout - system: - default: - product_catalog: - currencies: - - EUR - - PLN - - CZK - regions: - - Germany - - Poland - - Czechia - -framework: - workflows: - one_page_checkout: - type: state_machine - audit_trail: - enabled: false - marking_store: - type: method - property: status - supports: - - Ibexa\Contracts\Checkout\Value\CheckoutInterface - initial_marking: initialized - places: - - initialized - - completed - transitions: - checkout_data: - from: [ initialized, completed ] - to: completed - metadata: - controller: App\Controller\Checkout\OnePageCheckoutController - seat_selection_checkout: - type: state_machine - audit_trail: - enabled: false - marking_store: - type: method - property: status - supports: - - Ibexa\Contracts\Checkout\Value\CheckoutInterface - initial_marking: initialized - places: - - initialized - - seat_selected - - address_selected - - shipping_selected - - summarized - - completed - transitions: - select_seat: - from: - - initialized - - seat_selected - - address_selected - - shipping_selected - - summarized - to: seat_selected - metadata: - next_step: select_address - controller: App\Controller\Checkout\Step\SelectSeatStepController - label: 'Select your seats' - select_address: - from: - - seat_selected - - address_selected - - shipping_selected - - summarized - to: address_selected - metadata: - next_step: select_shipping - controller: Ibexa\Bundle\Checkout\Controller\CheckoutStep\AddressStepController::renderStepView - label: 'Billing & shipping address' - select_shipping: - from: - - address_selected - - seat_selected - - shipping_selected - - summarized - to: shipping_selected - metadata: - next_step: summary - controller: Ibexa\Bundle\Checkout\Controller\CheckoutStep\ShippingStepController::renderStepView - label: 'Shipping & payment method' - summary: - from: - - shipping_selected - - summarized - to: summarized - metadata: - next_step: complete - controller: Ibexa\Bundle\Checkout\Controller\CheckoutStep\SummaryStepController::renderStepView - label: 'Payment & summary' - complete: - from: summarized - to: completed - metadata: - controller: Ibexa\Bundle\Checkout\Controller\CheckoutStep\CompleteStepController::renderCompleteView - label: 'Order confirmation' - -ibexa_design_engine: - design_list: - storefront: [storefront] diff --git a/code_samples/front/shop/checkout/src/Controller/Checkout/OnePageCheckout.php b/code_samples/front/shop/checkout/src/Controller/Checkout/OnePageCheckout.php deleted file mode 100644 index 3bc1896bb31..00000000000 --- a/code_samples/front/shop/checkout/src/Controller/Checkout/OnePageCheckout.php +++ /dev/null @@ -1,52 +0,0 @@ -createForm( - OnePageCheckoutType::class, - $checkout->getContext()->toArray(), - [ - 'cart' => $this->getCart($checkout->getCartIdentifier()), - ] - ); - - if ($form->isSubmitted() && $form->isValid()) { - $formData = $form->getData(); - $stepData = [ - 'shipping_method' => [ - 'identifier' => $formData['shipping_method']->getIdentifier(), - 'name' => $formData['shipping_method']->getName(), - ], - 'payment_method' => [ - 'identifier' => $formData['payment_method']->getIdentifier(), - 'name' => $formData['payment_method']->getName(), - ], - ]; - - return $this->advance($checkout, $step, $stepData); - } - - return $this->render( - '@storefront/checkout/checkout.html.twig', - [ - 'form' => $form, - 'checkout' => $checkout, - ] - ); - } -} diff --git a/code_samples/front/shop/checkout/src/Controller/Checkout/Step/SelectSeatStepController.php b/code_samples/front/shop/checkout/src/Controller/Checkout/Step/SelectSeatStepController.php deleted file mode 100644 index b2479c371af..00000000000 --- a/code_samples/front/shop/checkout/src/Controller/Checkout/Step/SelectSeatStepController.php +++ /dev/null @@ -1,52 +0,0 @@ -createStepForm($step, SelectSeatType::class); - - $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { - return $this->advance($checkout, $step, $form->getData()); - } - - return $this->render( - '@ibexadesign/checkout/step/select_seat.html.twig', - [ - 'layout' => $this->getSeatsLayout(), - 'current_step' => $step, - 'checkout' => $checkout, - 'form' => $form, - ] - ); - } - - private function getSeatsLayout(): array - { - return [ - 'A' => 'X,X,0,0,1,1,1,1,X,X,X,X', - 'B' => '0,0,X,0,0,1,1,1,1,X,X,X', - 'C' => '1,1,1,1,0,0,0,0,0,0,0,0', - 'D' => '1,1,1,1,0,1,0,0,0,0,0,0', - 'E' => '1,1,1,1,0,1,0,1,0,0,0,0', - 'F' => '1,1,1,1,0,1,1,0,0,1,1,0', - 'G' => '1,1,1,1,1,1,1,1,1,1,1,1', - 'H' => '1,1,1,1,1,1,1,1,1,1,1,1', - 'I' => '1,1,1,1,1,1,1,1,1,1,1,1', - ]; - } -} diff --git a/code_samples/front/shop/checkout/src/Form/Type/OnePageCheckoutType.php b/code_samples/front/shop/checkout/src/Form/Type/OnePageCheckoutType.php deleted file mode 100644 index 08d23273a65..00000000000 --- a/code_samples/front/shop/checkout/src/Form/Type/OnePageCheckoutType.php +++ /dev/null @@ -1,76 +0,0 @@ -add( - 'payment_method', - PaymentMethodChoiceType::class, - [ - 'constraints' => [ - new NotBlank(), - ], - 'label' => 'Payment Method', - ], - ); - - $builder->add( - 'billing_address', - AddressType::class, - [ - 'type' => 'billing', - 'constraints' => [ - new NotBlank(), - ], - 'label' => 'Billing Address', - ] - ); - - $builder->add( - 'shipping_method', - ShippingMethodChoiceType::class, - [ - 'cart' => $options['cart'], - 'constraints' => [ - new NotBlank(), - ], - 'label' => 'Shipping Method', - ] - ); - - $builder->add( - 'shipping_address', - AddressType::class, - [ - 'type' => 'shipping', - 'constraints' => [ - new NotBlank(), - ], - 'label' => 'Shipping Address', - ] - ); - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults([ - 'cart' => null, - ]); - - $resolver->setAllowedTypes('cart', ['null', CartInterface::class]); - } -} diff --git a/code_samples/front/shop/checkout/src/Form/Type/SelectSeatType.php b/code_samples/front/shop/checkout/src/Form/Type/SelectSeatType.php deleted file mode 100644 index 6d73df05526..00000000000 --- a/code_samples/front/shop/checkout/src/Form/Type/SelectSeatType.php +++ /dev/null @@ -1,27 +0,0 @@ -add( - 'selection', - TextType::class, - [ - 'constraints' => [ - new NotBlank(), - ], - 'label' => 'Selected seats: ', - ] - ); - } -} diff --git a/code_samples/front/shop/checkout/templates/themes/storefront/checkout/checkout.html.twig b/code_samples/front/shop/checkout/templates/themes/storefront/checkout/checkout.html.twig deleted file mode 100644 index c014f6f4261..00000000000 --- a/code_samples/front/shop/checkout/templates/themes/storefront/checkout/checkout.html.twig +++ /dev/null @@ -1,36 +0,0 @@ -{% extends '@ibexadesign/storefront/layout.html.twig' %} - -{% form_theme form '@ibexadesign/storefront/form_fields.html.twig' %} - -{% block content %} - {{ form_start(form) }} - {{ form_widget(form._token) }} - -
-

Single-page checkout

-

A single-page checkout uses one page to display all the elements of a standard checkout process, - including payment details, billing and shipping addresses, and shipping options.

-
- -
- {% for child in form %} - {% if not child.rendered %} -
-
{{ loop.index }}
-

{{ child.vars.label }}

-
- -
-
- {{ form_widget(child) }} -
-
- {% endif %} - {% endfor %} -
- - - {{ form_end(form) }} -{% endblock %} diff --git a/code_samples/front/shop/checkout/templates/themes/storefront/checkout/step/select_seat.html.twig b/code_samples/front/shop/checkout/templates/themes/storefront/checkout/step/select_seat.html.twig deleted file mode 100644 index 9a8014fc097..00000000000 --- a/code_samples/front/shop/checkout/templates/themes/storefront/checkout/step/select_seat.html.twig +++ /dev/null @@ -1,73 +0,0 @@ -{% extends '@ibexadesign/checkout/layout.html.twig' %} - -{% block content %} - {{ form_start(form) }} - {% include '@ibexadesign/checkout/component/quick_summary.html.twig' with { entries_count : 1} %} - -

Please select your seats

-

If you prefer not to book one, we will assign a random seat for you 48 hours before the event.

- -
-
- {% set class_map = { - 'X': 'null', - '1': 'available', - '0': 'not-available' - } %} - - {% for row_idx, row in layout %} -
- {% for col_idx, seat in row|split(',') %} - {% set seat_id = '%s%d'|format(row_idx, col_idx + 1) %} - - - {% endfor %} -
- {% endfor %} -
-
- {{ form_row(form.select_seat.selection) }} -
-
- - {% include '@ibexadesign/checkout/component/actions.html.twig' with { - label: 'Go to Billing & shipping address', - href: ibexa_checkout_step_path(checkout, 'select_address'), - } %} - {{ form_end(form) }} -{% endblock %} - -{% block stylesheets %} - {{ parent() }} - {{ encore_entry_link_tags('checkout') }} -{% endblock %} - -{% block javascripts %} - {{ parent() }} - {{ encore_entry_script_tags('checkout') }} - - -{% endblock %} diff --git a/code_samples/front/shop/checkout/templates/themes/storefront/layout.html.twig b/code_samples/front/shop/checkout/templates/themes/storefront/layout.html.twig deleted file mode 100644 index bf0c12ae37f..00000000000 --- a/code_samples/front/shop/checkout/templates/themes/storefront/layout.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends '@IbexaStorefront/themes/storefront/storefront/layout.html.twig' %} - -{% block stylesheets %} - {{ parent() }} - {{ encore_entry_link_tags('app') }} -{% endblock %} - -{% block javascripts %} - {{ parent() }} - {{ encore_entry_script_tags('app') }} -{% endblock %} - -{% block main_menu %} - {% set main_menu_alias = ibexa_storefront_get_main_menu_alias() %} - {% set main_menu_options = ibexa_storefront_get_main_menu_options() %} - -
- {{ knp_menu_render(main_menu_alias, main_menu_options) }} -
-{% endblock %} diff --git a/code_samples/front/shop/order-management/config/packages/ibexa.yaml b/code_samples/front/shop/order-management/config/packages/ibexa.yaml deleted file mode 100644 index 310eaca7c35..00000000000 --- a/code_samples/front/shop/order-management/config/packages/ibexa.yaml +++ /dev/null @@ -1,74 +0,0 @@ -framework: - workflows: - custom_order_workflow: - type: state_machine - audit_trail: - enabled: "%kernel.debug%" - marking_store: - type: method - property: status - supports: - - Ibexa\Contracts\OrderManagement\Workflow\WorkflowSubjectInterface - initial_marking: created - places: - created: - metadata: - reduce_stock: true - label: 'order.status.label.created' - translation_domain: 'order_management' - primary_color: '#F4B65F' - secondary_color: '#FEEED9' - verified: - metadata: - label: 'order.status.label.verified' - translation_domain: 'order_management' - primary_color: '#2B6875' - secondary_color: '#CCDBDE' - in_progress: - metadata: - label: 'order.status.label.in_progress' - translation_domain: 'order_management' - primary_color: '#FF9071' - secondary_color: '#FFDACF' - completed: - metadata: - label: 'order.status.label.completed' - translation_domain: 'order_management' - primary_color: '#33B655' - secondary_color: '#E5F5E9' - dropped: - metadata: - restore_stock: true - label: 'order.status.label.dropped' - translation_domain: 'order_management' - primary_color: '#5A5A5D' - secondary_color: '#E6E6ED' - transitions: - verify: - from: - - created - to: - - verified - advance: - from: - - verified - to: - - in_progress - finish: - from: - - in_progress - to: - - completed - drop: - from: - - created - to: - - dropped - -# ... - -ibexa: - repositories: - default: - order_management: - workflow: custom_order_workflow diff --git a/code_samples/front/shop/payment/config/packages/ibexa.yaml b/code_samples/front/shop/payment/config/packages/ibexa.yaml deleted file mode 100644 index bf5cb21abc1..00000000000 --- a/code_samples/front/shop/payment/config/packages/ibexa.yaml +++ /dev/null @@ -1,39 +0,0 @@ -ibexa: - repositories: - default: - payment: - workflow: custom_payment_workflow - - -framework: - workflows: - custom_payment_workflow: - type: state_machine - audit_trail: - enabled: "%kernel.debug%" - marking_store: - type: method - property: status - supports: - - Ibexa\Contracts\Payment\Payment\Workflow\WorkflowSubjectInterface - initial_marking: open - places: - open: - metadata: - label: ibexa.payment.workflow.place.open.label - primary_color: '#F4B65F' - secondary_color: '#FEEED9' - translation_domain: ibexa_payment_workflow - paid: - metadata: - label: ibexa.payment.workflow.place.paid.label - primary_color: '#2B6875' - secondary_color: '#CCDBDE' - translation_domain: ibexa_payment_workflow - transitions: - pay: - from: - - open - to: paid - metadata: - exposed: false diff --git a/code_samples/front/shop/payment/config/services.yaml b/code_samples/front/shop/payment/config/services.yaml deleted file mode 100644 index e1d63dc7b4e..00000000000 --- a/code_samples/front/shop/payment/config/services.yaml +++ /dev/null @@ -1,26 +0,0 @@ -services: - App\Payment\PayPal: - tags: - name: ibexa.payment.payment_method.type - alias: paypal - - app.payment.type.paypal: - class: Ibexa\Contracts\Payment\PaymentMethod\Type\TypeInterface - factory: [ '@Ibexa\Contracts\Payment\PaymentMethod\Type\TypeFactoryInterface', 'createType' ] - arguments: - $identifier: 'paypal' - $name: 'PayPal' - tags: - - name: ibexa.payment.payment_method.type - alias: paypal - - App\Form\Type\OptionsFormMapper: - tags: - - name: ibexa.payment.payment_method.options.form_mapper - type: paypal - - App\Form\Type\OptionsValidator: - tags: - - name: ibexa.payment.payment_method.options.validator - type: paypal - \ No newline at end of file diff --git a/code_samples/front/shop/payment/src/Form/Type/PayPalOptionsType.php b/code_samples/front/shop/payment/src/Form/Type/PayPalOptionsType.php deleted file mode 100644 index 42bee9d822c..00000000000 --- a/code_samples/front/shop/payment/src/Form/Type/PayPalOptionsType.php +++ /dev/null @@ -1,24 +0,0 @@ -add('base_url', UrlType::class, [ - 'constraints' => [new NotBlank()], - ]); - - // ... - } -} diff --git a/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/OptionsFormMapper.php b/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/OptionsFormMapper.php deleted file mode 100644 index fe12cd972c9..00000000000 --- a/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/OptionsFormMapper.php +++ /dev/null @@ -1,19 +0,0 @@ -add($name, PayPalOptionsType::class); - } -} diff --git a/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/PayPal.php b/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/PayPal.php deleted file mode 100644 index e6344e36963..00000000000 --- a/code_samples/front/shop/payment/src/PaymentMethodType/PayPal/PayPal.php +++ /dev/null @@ -1,20 +0,0 @@ -get('base_url'))) { - $errors[] = new OptionsValidatorError('base_url', 'Base URL cannot be blank'); - } - - // Add gateway implementation here - - return $errors; - } -} diff --git a/code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml b/code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml deleted file mode 100644 index ef3b33c8173..00000000000 --- a/code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml +++ /dev/null @@ -1,14 +0,0 @@ -services: - app.payment.type.new_payment_method_type: - class: Ibexa\Contracts\Payment\PaymentMethod\Type\TypeInterface - factory: ['@Ibexa\Contracts\Payment\PaymentMethod\Type\TypeFactoryInterface', 'createType'] - arguments: - $identifier: new_payment_method_type - $name: New Payment Method Type - $domain: - tags: - - { name: ibexa.payment.payment_method.type, alias: new_payment_method_type } - - App\Payment\PaymentMethod\Voter\NewPaymentMethodTypeVoter: - tags: - - { name: ibexa.payment.payment_method.voter, type: new_payment_method_type } diff --git a/code_samples/front/shop/payment/src/lib/PaymentMethod/Voter/NewPaymentMethodTypeVoter.php b/code_samples/front/shop/payment/src/lib/PaymentMethod/Voter/NewPaymentMethodTypeVoter.php deleted file mode 100644 index 432752221e4..00000000000 --- a/code_samples/front/shop/payment/src/lib/PaymentMethod/Voter/NewPaymentMethodTypeVoter.php +++ /dev/null @@ -1,19 +0,0 @@ -{{ ibexa_content_name(content) }} -

Code: {{ product.code }}

- -

{{ ibexa_render_field(content, 'description') }}

- -{{ ibexa_render_field(content, 'image', {'parameters': {'alias': 'medium'}}) }} - -

Price: {{ product.price }}

- -
- - - - -
- -

Specification

-
    - {% for attribute in product.attributes %} -
  1. {{ attribute.getAttributeDefinition().getName }}: {{ attribute|ibexa_format_product_attribute }}
  2. - {% endfor %} -
diff --git a/code_samples/front/shop/shipping/config/packages/ibexa.yaml b/code_samples/front/shop/shipping/config/packages/ibexa.yaml deleted file mode 100644 index e2a418bb007..00000000000 --- a/code_samples/front/shop/shipping/config/packages/ibexa.yaml +++ /dev/null @@ -1,89 +0,0 @@ -ibexa: - repositories: - default: - shipping: - shipment_workflow: custom_shipment_workflow - -# ... - -framework: - workflows: - custom_shipment_workflow: - type: state_machine - audit_trail: - enabled: "%kernel.debug%" - marking_store: - type: method - property: status - supports: - - Ibexa\Contracts\Shipping\Shipment\ShipmentInterface - - Ibexa\Contracts\Shipping\Shipment\ShipmentCreateStruct - initial_marking: pending - places: - pending: - metadata: - label: ibexa.shipment.workflow.place.pending.label - primary_color: '#F4B65F' - secondary_color: '#FEEED9' - translation_domain: ibexa_shipment_workflow - ready_for_clearance: - metadata: - label: ibexa.shipment.workflow.place.ready_for_clearance.label - primary_color: '#DB2C54' - secondary_color: '#F7CCD6' - translation_domain: ibexa_shipment_workflow - in_customs: - metadata: - label: ibexa.shipment.workflow.place.in_customs.label - primary_color: '#DB2C54' - secondary_color: '#F7CCD6' - translation_domain: ibexa_shipment_workflow - passed_customs_clearance: - metadata: - label: ibexa.shipment.workflow.place.passed_customs_clearance.label - primary_color: '#1beb17' - secondary_color: '#c5f2c4' - translation_domain: ibexa_shipment_workflow - shipped: - metadata: - label: ibexa.shipment.workflow.place.shipped.label - primary_color: '#5A5A5D' - secondary_color: '#E6E6ED' - translation_domain: ibexa_shipment_workflow - delivered: - metadata: - label: ibexa.shipment.workflow.place.delivered.label - primary_color: '#2B6875' - secondary_color: '#CCDBDE' - translation_domain: ibexa_shipment_workflow - transitions: - prepare: - from: - - pending - to: ready_for_clearance - metadata: - exposed: false - sent_to_customs: - from: - - ready_for_clearance - to: in_customs - metadata: - exposed: false - clear_at_customs: - from: - - in_customs - to: passed_customs_clearance - metadata: - exposed: false - send: - from: - - passed_customs_clearance - to: shipped - metadata: - exposed: false - deliver: - from: - - shipped - to: delivered - metadata: - exposed: false diff --git a/code_samples/front/shop/shipping/config/services.yaml b/code_samples/front/shop/shipping/config/services.yaml deleted file mode 100644 index 6d46fa2ca64..00000000000 --- a/code_samples/front/shop/shipping/config/services.yaml +++ /dev/null @@ -1,38 +0,0 @@ -services: - app.shipping.shipping_method_type.custom: - class: Ibexa\Shipping\ShippingMethod\ShippingMethodType - arguments: - $identifier: 'custom' - tags: - - name: ibexa.shipping.shipping_method_type - alias: custom - app.shipping.shipping_method.custom.form_mapper.options: - class: Ibexa\Bundle\Shipping\Form\ShippingMethod\OptionsFormMapper - arguments: - $formType: 'App\ShippingMethodType\Form\Type\CustomShippingMethodOptionsType' - tags: - - name: ibexa.shipping.shipping_method.form_mapper.options - type: custom - app.shipping.shipping_method.options.custom_compound_validator: - class: Ibexa\Shipping\Validation\Validator\CompoundValidator - arguments: - $validators: !tagged_iterator { tag: 'ibexa.shipping.shipping_method.options.validator.custom' } - tags: - - name: ibexa.shipping.shipping_method.options.validator - type: custom - App\ShippingMethodType\CustomerNotNullValidator: - tags: - - name: ibexa.shipping.shipping_method.options.validator.custom - App\ShippingMethodType\Storage\StorageConverter: - tags: - - { name: 'ibexa.shipping.shipping_method.storage_converter', type: 'custom' } - App\ShippingMethodType\Storage\StorageDefinition: - tags: - - { name: 'ibexa.shipping.shipping_method.storage_definition', type: 'custom' } - App\ShippingMethodType\Voter\CustomVoter: - tags: - - { name: ibexa.shipping.shipping.voter, method: custom } - App\ShippingMethodType\Cost\CustomCostFormatter: - tags: - - name: ibexa.shipping.shipping_method.formatter.cost - type: custom diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/Cost/CustomCostFormatter.php b/code_samples/front/shop/shipping/src/ShippingMethodType/Cost/CustomCostFormatter.php deleted file mode 100644 index cd9b959179f..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/Cost/CustomCostFormatter.php +++ /dev/null @@ -1,16 +0,0 @@ -getOptions()->get('customer_identifier'); - } -} diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/CustomerNotNullValidator.php b/code_samples/front/shop/shipping/src/ShippingMethodType/CustomerNotNullValidator.php deleted file mode 100644 index da4e59ba1eb..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/CustomerNotNullValidator.php +++ /dev/null @@ -1,36 +0,0 @@ -get('customer_identifier'); - - if ($customerIdentifier === null) { - return [ - new OptionsValidatorError('[customer_identifier]', self::MESSAGE), - ]; - } - - return []; - } - - public static function getTranslationMessages(): array - { - return [ - Message::create(self::MESSAGE, 'validators')->setDesc('Customer identifier value cannot be null'), - ]; - } -} diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php b/code_samples/front/shop/shipping/src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php deleted file mode 100644 index d331e377812..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php +++ /dev/null @@ -1,39 +0,0 @@ -add('customer_identifier', TextType::class); - } - - public function configureOptions(OptionsResolver $resolver): void - { - $resolver->setDefaults(['translation_mode' => false]); - $resolver->setAllowedTypes('translation_mode', 'bool'); - } - - public static function getTranslationMessages(): array - { - return [ - Message::create('ibexa.shipping_types.custom.name', 'ibexa_shipping')->setDesc('Custom'), - ]; - } -} diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageConverter.php b/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageConverter.php deleted file mode 100644 index 59964d122b7..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageConverter.php +++ /dev/null @@ -1,24 +0,0 @@ - $value['customer_identifier'], - ]; - } -} diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageDefinition.php b/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageDefinition.php deleted file mode 100644 index 2bdcb055f2a..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageDefinition.php +++ /dev/null @@ -1,23 +0,0 @@ - Types::INTEGER, - StorageSchema::COLUMN_CUSTOMER_ID => Types::STRING, - ]; - } - - public function getTableName(): string - { - return StorageSchema::TABLE_NAME; - } -} diff --git a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageSchema.php b/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageSchema.php deleted file mode 100644 index 96470cb038b..00000000000 --- a/code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageSchema.php +++ /dev/null @@ -1,14 +0,0 @@ -getOptions()->get('customer_identifier') === 'Acme'; - } -} diff --git a/code_samples/front/shop/shipping/translations/ibexa_shipping.en.yaml b/code_samples/front/shop/shipping/translations/ibexa_shipping.en.yaml deleted file mode 100644 index 3c6b2fe4b14..00000000000 --- a/code_samples/front/shop/shipping/translations/ibexa_shipping.en.yaml +++ /dev/null @@ -1 +0,0 @@ -ibexa.shipping_types.custom.name: 'Custom Type' diff --git a/code_samples/front/shop/storefront/config/packages/ibexa.yaml b/code_samples/front/shop/storefront/config/packages/ibexa.yaml deleted file mode 100644 index d3cfe06896f..00000000000 --- a/code_samples/front/shop/storefront/config/packages/ibexa.yaml +++ /dev/null @@ -1,34 +0,0 @@ -ibexa: - system: - site_group: - translation_siteaccesses: - - site - - site_pl - - site_fr - - site_de - page_layout: '@ibexadesign/storefront/layout.html.twig' - product_catalog: - currencies: - - EUR - - PLN - - USD - regions: - - poland - - france - - germany - - norway - storefront: - name: Ibexa - logo: 'bundles/ibexaadminui/img/ibexa-logo.svg' - catalog: - default: main - customer_group: - vip: vip - product_list_limit: 9 - product_list_filters: - - product_type - - product_availability - - product_price - product_render_action: 'Ibexa\Bundle\Storefront\Controller\ProductRenderController::renderAction' - user_settings_groups: - - location diff --git a/code_samples/front/shop/storefront/src/EventSubscriber/BreadcrumbsMenuSubscriber.php b/code_samples/front/shop/storefront/src/EventSubscriber/BreadcrumbsMenuSubscriber.php deleted file mode 100644 index 5bd8acf1b0e..00000000000 --- a/code_samples/front/shop/storefront/src/EventSubscriber/BreadcrumbsMenuSubscriber.php +++ /dev/null @@ -1,27 +0,0 @@ - ['onBreadcrumbsMenuConfigure', 0], - ]; - } - - public function onBreadcrumbsMenuConfigure(ConfigureMenuEvent $event): void - { - $menu = $event->getMenu(); - - // Replace link to home with link to product catalog root - $menu->getChild('location_2')->setUri('/product-catalog'); - } -} diff --git a/code_samples/front/shop/storefront/templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig b/code_samples/front/shop/storefront/templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig deleted file mode 100644 index df2bfd79426..00000000000 --- a/code_samples/front/shop/storefront/templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'knp_menu.html.twig' %} - -{% block item %} - {% if item.displayed %} - {%- set attributes = item.attributes %} - {% import _self as knp_menu %} - - {%- if item.uri is not empty and (not matcher.isCurrent(item) or options.currentAsLink) %} - {{ block('linkElement') }} - {%- else %} - {{ block('spanElement') }} - {%- endif %} - - {% endif %} -{% endblock %} - -{% block linkElement %} - {%- set classes = ['breadcrumb_link'] -%} - - - {{ block('label') }} - - -{% endblock %} diff --git a/code_samples/front/shop/storefront/templates/themes/storefront/storefront/product.html.twig b/code_samples/front/shop/storefront/templates/themes/storefront/storefront/product.html.twig deleted file mode 100644 index d84399598c5..00000000000 --- a/code_samples/front/shop/storefront/templates/themes/storefront/storefront/product.html.twig +++ /dev/null @@ -1,19 +0,0 @@ -{% extends no_layout == true ? view_base_layout : page_layout %} - -{% trans_default_domain 'storefront' %} - -{% block content %} - {% set breadcrumbs_menu = knp_menu_get('ibexa_storefront.menu.breadcrumbs.product', [], { - 'product': product - }) %} - - {{ knp_menu_render(breadcrumbs_menu, { - template: '@ibexadesign/storefront/knp_menu/breadcrumbs.html.twig', - }) }} - - {% include '@ibexadesign/storefront/component/product_view.html.twig' %} -{% endblock %} - -{% block javascripts %} - {{ parent() }} -{% endblock %} diff --git a/code_samples/shopping_list/add_to_shopping_list/assets/js/add-to-shopping-list.ts b/code_samples/shopping_list/add_to_shopping_list/assets/js/add-to-shopping-list.ts deleted file mode 100644 index 05cba827786..00000000000 --- a/code_samples/shopping_list/add_to_shopping_list/assets/js/add-to-shopping-list.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Shopping list service -import ShoppingList from '@ibexa-shopping-list/src/bundle/Resources/public/js/component/shopping.list'; -// The Add to shopping list interaction -import { AddToShoppingList } from '@ibexa-shopping-list/src/bundle/Resources/public/js/component/add.to.shopping.list'; -// List of all user's shopping lists -import { ShoppingListsList } from '@ibexa-shopping-list/src/bundle/Resources/public/js/component/shopping.lists.list'; - -(function (global: Window, doc: Document) { - const shoppingList = new ShoppingList(); - shoppingList.init(); // Fetch user's shopping lists - - const addToShoppingListsNodes = doc.querySelectorAll('.ibexa-sl-add-to-shopping-list'); - addToShoppingListsNodes.forEach((addToShoppingListNode) => { - const addToShoppingList = new AddToShoppingList({ node: addToShoppingListNode, ListClass: ShoppingListsList }); - - addToShoppingList.init(); - }); -})(window, window.document); diff --git a/code_samples/shopping_list/add_to_shopping_list/config/packages/views.yaml b/code_samples/shopping_list/add_to_shopping_list/config/packages/views.yaml deleted file mode 100644 index 753bb3b616e..00000000000 --- a/code_samples/shopping_list/add_to_shopping_list/config/packages/views.yaml +++ /dev/null @@ -1,10 +0,0 @@ -ibexa: - system: - default: - content_view: - full: - product: - controller: 'App\Controller\ProductViewController::viewAction' - template: '@ibexadesign/full/product.html.twig' - match: - '@Ibexa\Contracts\ProductCatalog\ViewMatcher\ProductBased\IsProduct': true diff --git a/code_samples/shopping_list/add_to_shopping_list/src/Controller/ProductViewController.php b/code_samples/shopping_list/add_to_shopping_list/src/Controller/ProductViewController.php deleted file mode 100644 index 6a4ee6cde47..00000000000 --- a/code_samples/shopping_list/add_to_shopping_list/src/Controller/ProductViewController.php +++ /dev/null @@ -1,35 +0,0 @@ -productService->getProductFromContent($view->getContent()); - if ($product->isBaseProduct()) { - $view->addParameters([ - 'variants' => new BatchIterator(new ProductVariantFetchAdapter( - $this->productService, - $product, - new ProductVariantQuery(), - )), - ]); - } - - return $view; - } -} diff --git a/code_samples/shopping_list/add_to_shopping_list/templates/themes/standard/full/product.html.twig b/code_samples/shopping_list/add_to_shopping_list/templates/themes/standard/full/product.html.twig deleted file mode 100644 index a6fd4e279e0..00000000000 --- a/code_samples/shopping_list/add_to_shopping_list/templates/themes/standard/full/product.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{% extends '@ibexadesign/pagelayout.html.twig' %} - -{% set product = content|ibexa_get_product %} - -{% block meta %} - {% set token = csrf_token ?? csrf_token(ibexa_get_rest_csrf_token_intention()) %} - - -{% endblock %} - -{% block content %} - {{ ibexa_content_name(content) }} - {{ product.code }} - {% if not product.isBaseProduct() and can_view_shopping_list and can_edit_shopping_list %} - {% set component %} - {% include '@ibexadesign/shopping_list/component/add_to_shopping_list/add_to_shopping_list.html.twig' with { - product_code: product.code, - } %} - {% endset %} - {{ _self.add_to_shopping_list(product, component) }} - {% endif %} - - {% if product.isBaseProduct() %} -
    - {% for variant in variants %} -
  • - {{ variant.name }} - {{ variant.code }} - {% if can_view_shopping_list and can_edit_shopping_list %} - {% set component %} - {% include '@ibexadesign/shopping_list/component/add_to_shopping_list/add_to_shopping_list.html.twig' with { - product_code: variant.code, - } %} - {% endset %} - {{ _self.add_to_shopping_list(variant, component) }} - {% endif %} -
  • - {% endfor %} -
- {% endif %} -{% endblock %} - -{% block javascripts %} - {{ encore_entry_script_tags('add-to-shopping-list-js') }} -{% endblock %} - -{% macro add_to_shopping_list(product, component) %} - {% set widget_id = 'add-to-shopping-list-' ~ product.code|slug %} -
- - -
-{% endmacro %} diff --git a/code_samples/shopping_list/add_to_shopping_list/webpack.config.js b/code_samples/shopping_list/add_to_shopping_list/webpack.config.js deleted file mode 100644 index 45f5b9bb771..00000000000 --- a/code_samples/shopping_list/add_to_shopping_list/webpack.config.js +++ /dev/null @@ -1,61 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const Encore = require('@symfony/webpack-encore'); -const getWebpackConfigs = require('@ibexa/frontend-config/webpack-config/get-configs'); -const customConfigsPaths = require('./var/encore/ibexa.webpack.custom.config.js'); - -const customConfigs = getWebpackConfigs(Encore, customConfigsPaths); -const isReactBlockPathCreated = fs.existsSync('./assets/page-builder/react/blocks'); - -Encore.reset(); -Encore - .setOutputPath('public/build/') - .setPublicPath('/build') - .enableSassLoader() - .enableReactPreset((options) => { - options.runtime = 'classic'; - }) - .enableSingleRuntimeChunk() - .copyFiles({ - from: './assets/images', - to: 'images/[path][name].[ext]', - pattern: /\.(png|svg)$/, - }) - .configureBabelPresetEnv((config) => { - config.useBuiltIns = 'usage'; - config.corejs = 3; - }); - -// Welcome page stylesheets -Encore.addEntry('welcome-page-css', [ - path.resolve(__dirname, './assets/scss/welcome-page.scss'), -]); - -// Welcome page javascripts -Encore.addEntry('welcome-page-js', [ - path.resolve(__dirname, './assets/js/welcome.page.js'), -]); - -if (isReactBlockPathCreated) { - // React Blocks javascript - Encore.addEntry('react-blocks-js', './assets/js/react.blocks.js'); -} - -//Encore.addEntry('app', './assets/app.js'); - -Encore - .enableTypeScriptLoader() - .addAliases({ - '@ibexa-shopping-list': path.resolve('./vendor/ibexa/shopping-list'), - '@ibexa-admin-ui': path.resolve('./vendor/ibexa/admin-ui'), // @ibexa-admin-ui/…/text.helper dependency - }) - .addEntry('add-to-shopping-list-js', [ - path.resolve(__dirname, './assets/js/add-to-shopping-list.ts'), - ]) -; - -const projectConfig = Encore.getWebpackConfig(); - -projectConfig.name = 'app'; - -module.exports = [...customConfigs, projectConfig]; diff --git a/code_samples/shopping_list/install/schema.mysql.sql b/code_samples/shopping_list/install/schema.mysql.sql deleted file mode 100644 index 3a26f10d8eb..00000000000 --- a/code_samples/shopping_list/install/schema.mysql.sql +++ /dev/null @@ -1,32 +0,0 @@ -CREATE TABLE ibexa_shopping_list ( - id INT AUTO_INCREMENT NOT NULL, - owner_id INT NOT NULL, - identifier CHAR(36) NOT NULL COMMENT '(DC2Type:guid)', - name VARCHAR(190) DEFAULT NULL, - created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', - updated_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', - is_default TINYINT(1) DEFAULT 0 NOT NULL, - UNIQUE INDEX ibexa_shopping_list_identifier_idx (identifier), - INDEX ibexa_shopping_list_owner_idx (owner_id), - INDEX ibexa_shopping_list_default_idx (is_default), - PRIMARY KEY(id) -) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -CREATE TABLE ibexa_shopping_list_entry ( - id INT AUTO_INCREMENT NOT NULL, - shopping_list_id INT NOT NULL, - product_code VARCHAR(64) NOT NULL, - identifier CHAR(36) NOT NULL COMMENT '(DC2Type:guid)', - added_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', - UNIQUE INDEX ibexa_shopping_list_entry_identifier_idx (identifier), - INDEX ibexa_shopping_list_entry_list_idx (shopping_list_id), - INDEX ibexa_shopping_list_entry_product_idx (product_code), - INDEX ibexa_shopping_list_entry_added_at_idx (added_at), - UNIQUE INDEX ibexa_shopping_list_entry_unique (shopping_list_id, product_code), - PRIMARY KEY(id) -) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_520_ci` ENGINE = InnoDB; -ALTER TABLE ibexa_shopping_list - ADD CONSTRAINT ibexa_shopping_list_owner_fk FOREIGN KEY (owner_id) REFERENCES ibexa_user (contentobject_id) ON UPDATE CASCADE ON DELETE CASCADE; -ALTER TABLE ibexa_shopping_list_entry - ADD CONSTRAINT ibexa_shopping_list_entry_list_fk FOREIGN KEY (shopping_list_id) REFERENCES ibexa_shopping_list (id) ON UPDATE CASCADE ON DELETE CASCADE; -ALTER TABLE ibexa_shopping_list_entry - ADD CONSTRAINT ibexa_shopping_list_entry_product_fk FOREIGN KEY (product_code) REFERENCES ibexa_product (code) ON UPDATE CASCADE ON DELETE CASCADE; diff --git a/code_samples/shopping_list/install/schema.postgresql.sql b/code_samples/shopping_list/install/schema.postgresql.sql deleted file mode 100644 index f2c3e8f3584..00000000000 --- a/code_samples/shopping_list/install/schema.postgresql.sql +++ /dev/null @@ -1,35 +0,0 @@ -CREATE TABLE ibexa_shopping_list ( - id SERIAL NOT NULL, - owner_id INT NOT NULL, - identifier UUID NOT NULL, - name VARCHAR(190) DEFAULT NULL, - created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, - updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, - is_default BOOLEAN DEFAULT false NOT NULL, - PRIMARY KEY (id) -); -CREATE UNIQUE INDEX ibexa_shopping_list_identifier_idx ON ibexa_shopping_list (identifier); -CREATE INDEX ibexa_shopping_list_owner_idx ON ibexa_shopping_list (owner_id); -CREATE INDEX ibexa_shopping_list_default_idx ON ibexa_shopping_list (is_default); -COMMENT ON COLUMN ibexa_shopping_list.created_at IS '(DC2Type:datetime_immutable)'; -COMMENT ON COLUMN ibexa_shopping_list.updated_at IS '(DC2Type:datetime_immutable)'; -CREATE TABLE ibexa_shopping_list_entry ( - id SERIAL NOT NULL, - shopping_list_id INT NOT NULL, - product_code VARCHAR(64) NOT NULL, - identifier UUID NOT NULL, - added_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, - PRIMARY KEY (id) -); -CREATE UNIQUE INDEX ibexa_shopping_list_entry_identifier_idx ON ibexa_shopping_list_entry (identifier); -CREATE INDEX ibexa_shopping_list_entry_list_idx ON ibexa_shopping_list_entry (shopping_list_id); -CREATE INDEX ibexa_shopping_list_entry_product_idx ON ibexa_shopping_list_entry (product_code); -CREATE INDEX ibexa_shopping_list_entry_added_at_idx ON ibexa_shopping_list_entry (added_at); -CREATE UNIQUE INDEX ibexa_shopping_list_entry_unique ON ibexa_shopping_list_entry (shopping_list_id, product_code); -COMMENT ON COLUMN ibexa_shopping_list_entry.added_at IS '(DC2Type:datetime_immutable)'; -ALTER TABLE ibexa_shopping_list - ADD CONSTRAINT ibexa_shopping_list_owner_fk FOREIGN KEY (owner_id) REFERENCES ibexa_user (contentobject_id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_shopping_list_entry - ADD CONSTRAINT ibexa_shopping_list_entry_list_fk FOREIGN KEY (shopping_list_id) REFERENCES ibexa_shopping_list (id) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; -ALTER TABLE ibexa_shopping_list_entry - ADD CONSTRAINT ibexa_shopping_list_entry_product_fk FOREIGN KEY (product_code) REFERENCES ibexa_product (code) ON UPDATE CASCADE ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; diff --git a/code_samples/shopping_list/install/src/Migrations/Ibexa/migrations/shopping_list_user.yaml b/code_samples/shopping_list/install/src/Migrations/Ibexa/migrations/shopping_list_user.yaml deleted file mode 100644 index ed3e6784bb5..00000000000 --- a/code_samples/shopping_list/install/src/Migrations/Ibexa/migrations/shopping_list_user.yaml +++ /dev/null @@ -1,33 +0,0 @@ -- type: reference - mode: load - filename: references/customer_group_references.yml - -- type: role - mode: create - metadata: - identifier: Shopping List User - policies: - - module: shopping_list - function: create - limitations: - - identifier: ShoppingListOwner - values: [self] - - module: shopping_list - function: view - limitations: - - identifier: ShoppingListOwner - values: [self] - - module: shopping_list - function: edit - limitations: - - identifier: ShoppingListOwner - values: [self] - - module: shopping_list - function: delete - limitations: - - identifier: ShoppingListOwner - values: [self] - actions: - - action: assign_role_to_user_group - value: - id: 'reference:ref__checkout__customers_user_group__content_id' diff --git a/code_samples/shopping_list/php_api/src/Command/ShoppingListFilterCommand.php b/code_samples/shopping_list/php_api/src/Command/ShoppingListFilterCommand.php deleted file mode 100644 index 9001e099be2..00000000000 --- a/code_samples/shopping_list/php_api/src/Command/ShoppingListFilterCommand.php +++ /dev/null @@ -1,69 +0,0 @@ -userService->loadUserByLogin($login); - $this->permissionResolver->setCurrentUserReference($user); - - $list = $this->shoppingListService->createShoppingList(new ShoppingListCreateStruct($name)); - - $list = $this->shoppingListService->addEntries($list, [new EntryAddStruct($desiredProductCodes[1])]); - - $filteredProductCodes = array_filter( - $desiredProductCodes, - static fn ($productCode): bool => !$list->getEntries()->hasEntryWithProductCode($productCode) - ); - $list = $this->shoppingListService->addEntries( - $list, - array_map( - static fn ($productCode): EntryAddStruct => new EntryAddStruct($productCode), - $filteredProductCodes - ) - ); - - $this->displayList($output, $list); - - $this->shoppingListService->deleteShoppingList($list); - - return Command::SUCCESS; - } - - private function displayList(OutputInterface $output, ShoppingListInterface $list): void - { - $output->writeln("{$list->getOwner()->getName()} ({$list->getOwner()->getLogin()})"); - $output->writeln("{$list->getName()} ({$list->getIdentifier()})" . ($list->isDefault() ? ' [default]' : '')); - $entries = $list->getEntries(); - $output->writeln(count($entries) . (count($entries) > 1 ? ' entries' : ' entry')); - foreach ($entries as $entry) { - $output->writeln("- {$entry->getProduct()->getName()} ({$entry->getProduct()->getCode()})"); - } - } -} diff --git a/code_samples/shopping_list/php_api/src/Command/ShoppingListMoveCommand.php b/code_samples/shopping_list/php_api/src/Command/ShoppingListMoveCommand.php deleted file mode 100644 index 8d02d055b5e..00000000000 --- a/code_samples/shopping_list/php_api/src/Command/ShoppingListMoveCommand.php +++ /dev/null @@ -1,75 +0,0 @@ -userService->loadUserByLogin($login); - $this->permissionResolver->setCurrentUserReference($user); - - $sourceList = $this->shoppingListService->createShoppingList(new ShoppingListCreateStruct($prefix . '-source')); - $targetList = $this->shoppingListService->createShoppingList(new ShoppingListCreateStruct($prefix . '-target')); - - $sourceList = $this->shoppingListService->addEntries($sourceList, [new EntryAddStruct($productCodes[0]), new EntryAddStruct($productCodes[1])]); - $targetList = $this->shoppingListService->addEntries($targetList, [new EntryAddStruct($productCodes[1])]); - - $entriesToRemove = []; - $entriesToAdd = []; - foreach ($movedProductCodes as $productCode) { - if ($sourceList->getEntries()->hasEntryWithProductCode($productCode)) { - $entriesToRemove[] = $sourceList->getEntries()->getEntryWithProductCode($productCode); - if (!$targetList->getEntries()->hasEntryWithProductCode($productCode)) { - $entriesToAdd[] = new EntryAddStruct($productCode); - } - } - } - $sourceList = $this->shoppingListService->removeEntries($sourceList, $entriesToRemove); - $targetList = $this->shoppingListService->addEntries($targetList, $entriesToAdd); - - $this->displayList($output, $sourceList); - $this->displayList($output, $targetList); - - $this->shoppingListService->deleteShoppingList($sourceList); - $this->shoppingListService->deleteShoppingList($targetList); - - return Command::SUCCESS; - } - - private function displayList(OutputInterface $output, ShoppingListInterface $list): void - { - $output->writeln("{$list->getOwner()->getName()} ({$list->getOwner()->getLogin()})"); - $output->writeln("{$list->getName()} ({$list->getIdentifier()})" . ($list->isDefault() ? ' [default]' : '')); - $entries = $list->getEntries(); - $output->writeln(count($entries) . (count($entries) > 1 ? ' entries' : ' entry')); - foreach ($entries as $entry) { - $output->writeln("- {$entry->getProduct()->getName()} ({$entry->getProduct()->getCode()})"); - } - } -} diff --git a/code_samples/shopping_list/php_api/src/Controller/CartShoppingListTransferController.php b/code_samples/shopping_list/php_api/src/Controller/CartShoppingListTransferController.php deleted file mode 100644 index e65fce2e1db..00000000000 --- a/code_samples/shopping_list/php_api/src/Controller/CartShoppingListTransferController.php +++ /dev/null @@ -1,96 +0,0 @@ -userService->loadUser($this->permissionResolver->getCurrentUserReference()->getUserId()); - $name = 'cart-shopping-list-transfer-test'; - - $cartQuery = new CartQuery(); - $cartQuery->setOwnerId($user->getId()); - $cartsList = $this->cartService->findCarts($cartQuery); - $cart = null; - foreach ($cartsList->getCarts() as $cartItem) { - if ($cartItem->getName() === $name) { - $cart = $cartItem; - break; - } - } - if (null === $cart) { - $cart = $this->cartService->createCart(new CartCreateStruct($name, $this->currencyService->getCurrencyByCode($currency), $user)); - } - - $lists = $this->shoppingListService->findShoppingLists(new ShoppingListQuery(new NameCriterion($name))); - if ($lists->getTotalCount() > 0) { - $list = $lists->getShoppingLists()[0]; - } else { - $list = $this->shoppingListService->createShoppingList(new ShoppingListCreateStruct($name)); - } - - $this->cartService->emptyCart($cart); - $list = $this->shoppingListService->clearShoppingList($list); - - $list = $this->shoppingListService->addEntries($list, [new ShoppingListEntryAddStruct($productCode)]); - - $entry = $list->getEntries()->getEntryWithProductCode($productCode)->getIdentifier(); // Get entry's automatically generated identifier - $cart = $this->cartShoppingListTransferService->addSelectedEntriesToCart($list, [$entry], $cart); - $cart = $this->cartShoppingListTransferService->addSelectedEntriesToCart($list, [$entry], $cart); - - dump( - $list->getEntries()->hasEntryWithProductCode($productCode), // true as the entry is copied and not moved - $cart->getEntries()->getEntryForProduct($this->productService->getProduct($productCode))->getQuantity() // 2 as the entry was added twice - ); - - $list = $this->shoppingListService->clearShoppingList($list); // Empty the list to avoid duplicate and test the move from cart - - $list = $this->cartShoppingListTransferService->moveCartToShoppingList($cart, $list); - $cart = $this->cartService->getCart($cart->getIdentifier()); // Refresh local object from persistence - - dump( - $list->getEntries()->hasEntryWithProductCode($productCode), // true as, after the clear, the entry is moved from cart - $cart->getEntries()->hasEntryForProduct($this->productService->getProduct($productCode)) // false as the entry was moved - ); - - return new Response(''); - } -} diff --git a/code_samples/shopping_list/search/criteria.php b/code_samples/shopping_list/search/criteria.php deleted file mode 100644 index 18c0ae2429a..00000000000 --- a/code_samples/shopping_list/search/criteria.php +++ /dev/null @@ -1,15 +0,0 @@ -getCurrentUserReference()), - new Query\Criterion\IsDefaultCriterion(false) - ), - [ - new Query\SortClause\Name(), - ] -); diff --git a/code_samples/shopping_list/search/sort_clauses.php b/code_samples/shopping_list/search/sort_clauses.php deleted file mode 100644 index 4927957c09b..00000000000 --- a/code_samples/shopping_list/search/sort_clauses.php +++ /dev/null @@ -1,16 +0,0 @@ -findShoppingLists( - new ShoppingListQuery( - null, - [ - new IsDefault(IsDefault::SORT_DESC), - new Name(), - ] - ) -); diff --git a/code_samples/shopping_list/shopping_list_rest_api.sh b/code_samples/shopping_list/shopping_list_rest_api.sh deleted file mode 100644 index 416487a9e49..00000000000 --- a/code_samples/shopping_list/shopping_list_rest_api.sh +++ /dev/null @@ -1,48 +0,0 @@ -BASE_URL='TODO' -CUSTOMER_USERNAME='admin' -CUSTOMER_PASSWORD='publish' -PRODUCT_CODE='TODO' - -# Log in and store CSRF Token -csrf_token=`curl -s -c cookie.txt -X 'POST' \ - "$BASE_URL/api/ibexa/v2/user/sessions" \ - -H 'accept: application/vnd.ibexa.api.Session+json' \ - -H 'Content-Type: application/vnd.ibexa.api.SessionInput+json' \ - -d "{ - \"SessionInput\": { - \"login\": \"$CUSTOMER_USERNAME\", - \"password\": \"$CUSTOMER_PASSWORD\" - } -}" | jq -r '.Session.csrfToken'` - -# Get default shopping list identifier if it exists -default_list_identifier=`curl -s -b cookie.txt -X 'GET' \ - "$BASE_URL/api/ibexa/v2/shopping-list?isDefault=true" \ - -H 'accept: application/vnd.ibexa.api.ShoppingListCollection+json' \ - | jq -r '.ShoppingListCollection.ShoppingList[0].identifier'` - -# Clear default shopping list -if [ "" != "$default_list_identifier" ]; then - curl -s -b cookie.txt -X 'POST' \ - "$BASE_URL/api/ibexa/v2/shopping-list/$default_list_identifier/clear" \ - -H 'accept: application/vnd.ibexa.api.ShoppingList+json' \ - -H "X-CSRF-Token: $csrf_token" | jq -fi - -# Add entries to the default shopping list, -# create it if it doesn't exist yet, -# and get the updated data -curl -s -b cookie.txt -X 'POST' \ - "$BASE_URL/api/ibexa/v2/shopping-list/default/entries" \ - -H 'accept: application/vnd.ibexa.api.ShoppingList+json' \ - -H "X-CSRF-Token: $csrf_token" \ - -H 'Content-Type: application/vnd.ibexa.api.ShoppingListEntriesAdd+json' \ - -d "{ - \"ShoppingListEntriesAdd\": { - \"entries\": [ - { - \"productCode\": \"$PRODUCT_CODE\" - } - ] - } -}" | jq diff --git a/code_samples/workflow/services/workflow.yaml b/code_samples/workflow/services/workflow.yaml deleted file mode 100644 index 4c132b05511..00000000000 --- a/code_samples/workflow/services/workflow.yaml +++ /dev/null @@ -1,5 +0,0 @@ -services: - App\Checkout\Workflow\Strategy\NewWorkflow: - tags: - - name: ibexa.checkout.workflow.strategy - priority: 100 \ No newline at end of file diff --git a/code_samples/workflow/strategy/NewWorkflow.php b/code_samples/workflow/strategy/NewWorkflow.php deleted file mode 100644 index 6d15c010ce9..00000000000 --- a/code_samples/workflow/strategy/NewWorkflow.php +++ /dev/null @@ -1,25 +0,0 @@ -getCurrency()->getCode() === 'EUR'; - } -} diff --git a/code_samples/workflow/strategy/NewWorkflowConditionalStep.php b/code_samples/workflow/strategy/NewWorkflowConditionalStep.php deleted file mode 100644 index 1fa93235d73..00000000000 --- a/code_samples/workflow/strategy/NewWorkflowConditionalStep.php +++ /dev/null @@ -1,25 +0,0 @@ -getCurrency()->getCode() === 'EUR'; - } -} diff --git a/composer.json b/composer.json index 0d241634afd..f41e5e3dea8 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,6 @@ "ibexa/connector-openai": "6.0.x-dev", "ibexa/mcp": "6.0.x-dev", "ibexa/migrations": "6.0.x-dev", - "ibexa/cart": "6.0.x-dev", "ibexa/installer": "6.0.x-dev", "ibexa/product-catalog": "6.0.x-dev", "ibexa/graphql": "6.0.x-dev", @@ -57,18 +56,13 @@ "ibexa/segmentation": "6.0.x-dev", "ibexa/fieldtype-page": "6.0.x-dev", "ibexa/page-builder": "6.0.x-dev", - "ibexa/order-management": "6.0.x-dev", "ibexa/calendar": "6.0.x-dev", - "ibexa/payment": "~6.0.x-dev", - "ibexa/shipping": "6.0.x-dev", "ibexa/fieldtype-matrix": "6.0.x-dev", - "ibexa/storefront": "6.0.x-dev", "ibexa/seo": "6.0.x-dev", "ibexa/core": "6.0.x-dev", "ibexa/admin-ui": "6.0.x-dev", "ibexa/activity-log": "6.0.x-dev", "ibexa/workflow": "6.0.x-dev", - "ibexa/checkout": "6.0.x-dev", "ibexa/elasticsearch": "6.0.x-dev", "ibexa/oauth2-client": "6.0.x-dev", "ibexa/oauth2-server": "6.0.x-dev", @@ -79,8 +73,6 @@ "ibexa/connector-dam": "~6.0.x-dev", "ibexa/twig-components": "~6.0.x-dev", "ibexa/tree-builder": "~6.0.x-dev", - "ibexa/discounts": "~6.0.x-dev", - "ibexa/discounts-codes": "~6.0.x-dev", "ibexa/core-search": "~6.0.x-dev", "ibexa/product-catalog-symbol-attribute": "~6.0.x-dev", "ibexa/messenger": "~6.0.x-dev", @@ -88,7 +80,6 @@ "ibexa/share": "~6.0.x-dev", "ibexa/phpstan": "~6.0.-dev", "ibexa/connector-quable": "6.0.x-dev", - "ibexa/shopping-list": "~6.0.x-dev", "deptrac/deptrac": "^3.0", "ibexa/cdp": "~6.0.x-dev", "ibexa/connector-raptor": "~6.0.x-dev", @@ -99,7 +90,6 @@ "ibexa/site-factory": "~6.0.x-dev", "ibexa/ckeditor-premium": "~6.0.x-dev", "ibexa/measurement": "~6.0.x-dev", - "ibexa/connector-actito": "~6.0.x-dev", "ibexa/fastly": "~6.0.x-dev", "ibexa/connect": "~6.0.x-dev", "ibexa/connector-qualifio": "~6.0.x-dev", diff --git a/docs/administration/back_office/back_office_elements/custom_components.md b/docs/administration/back_office/back_office_elements/custom_components.md index cc18410c1cf..b19cf8fa2d4 100644 --- a/docs/administration/back_office/back_office_elements/custom_components.md +++ b/docs/administration/back_office/back_office_elements/custom_components.md @@ -99,38 +99,8 @@ For more information, see [this example using few of those components](component |---|---| |`admin-ui-infobar-options-before`| `vendor/ibexa/page-builder/src/bundle/Resources/views/page_builder/infobar/base.html.twig` | -## Order Management [[% include 'snippets/commerce_badge.md' %]] - -| Group name | Template file | -|---|---| -|`admin-ui-order-details-summary-stats`| `vendor/ibexa/order-management/src/bundle/Resources/views/themes/admin/order_management/order/details_summary.html.twig` | -|`admin-ui-order-details-summary-grid`| `vendor/ibexa/order-management/src/bundle/Resources/views/themes/admin/order_management/order/details_summary.html.twig` | - -## Payments [[% include 'snippets/commerce_badge.md' %]] - -| Group name | Template file | -|---|---| -|`admin-ui-payment-method-tabs`| `vendor/ibexa/payment/src/bundle/Resources/views/themes/admin/payment_method/view.html.twig` | - -## Shipping [[% include 'snippets/commerce_badge.md' %]] - -| Group name | Template file | -|---|---| -|`admin-ui-shipment-summary-grid`| `vendor/ibexa/shipping/src/bundle/Resources/views/themes/admin/shipment/tab/summary.html.twig` | -|`admin-ui-shipping-method-block`| `vendor/ibexa/shipping/src/bundle/Resources/views/themes/admin/shipping/shipping_method/view.html.twig` | - ## AI Actions | Group name | Template file | |---|---| |`admin-ui-action-configuration-tabs`| `vendor/ibexa/connector-ai/src/bundle/Resources/views/themes/admin/connector_ai/action_configuration/view.html.twig` | - -## Discounts [[% include 'snippets/commerce_badge.md' %]] - -| Group name | Template file | -|---|---| -|`admin-ui-discount-block`| `vendor/ibexa/discounts/src/bundle/Resources/views/themes/admin/discounts/view.html.twig` | -|`admin-ui-discount-condition-summary`| `vendor/ibexa/discounts/src/bundle/Resources/views/themes/admin/discounts/tab/details.html.twig` | -|`admin-ui-discount-condition-code-usage-summary`| `vendor/ibexa/discounts/src/bundle/Resources/views/themes/admin/discounts/tab/details.html.twig` | -|`admin-ui-discount-condition-code-summary`| `vendor/ibexa/discounts/src/bundle/Resources/views/themes/admin/discounts/tab/details.html.twig` | -|`admin-ui-discount-condition-code-usage-limit-summary`| `vendor/ibexa/discounts/src/bundle/Resources/views/themes/admin/discounts/tab/details.html.twig` | diff --git a/docs/administration/back_office/notifications.md b/docs/administration/back_office/notifications.md index 352934598ab..dcef586d5a4 100644 --- a/docs/administration/back_office/notifications.md +++ b/docs/administration/back_office/notifications.md @@ -12,8 +12,6 @@ You can send two types of notifications to the users: - [User notifications](#user-notifications) are sent to a specific user. They appear in their profile in the back office. -To send notification to other channels, see [Notification channels](notification_channels.md). - ## Notification bars Notifications are displayed as a message bar in the back office. @@ -78,8 +76,6 @@ The values shown above are the defaults. To send notification bars, you can also subscribe to a notification with the `browser` channel. -For more information, see [Notifications channels](notification_channels.md). - ## User notifications You can send notifications to users which are displayed in the user menu. @@ -134,5 +130,3 @@ The example below presents a modified renderer that uses Twig to render a list v ### `ibexa` notification channel To send user notifications, you can also subscribe to a notification with the `ibexa` channel. - -For more information, see [Notifications channels](notification_channels.md). diff --git a/docs/administration/dashboard/customize_dashboard.md b/docs/administration/dashboard/customize_dashboard.md index 44e91b00c76..8bd0d5804c1 100644 --- a/docs/administration/dashboard/customize_dashboard.md +++ b/docs/administration/dashboard/customize_dashboard.md @@ -7,7 +7,7 @@ edition: experience !!! note - The Dashboard Builder is available only in the Experience and Commerce editions. + The Dashboard Builder is available only in the Experience edition. The dashboard from the Headless edition can be customized using [Twig Components](components.md). You can customize the dashboard depending on your needs using Dashboard Builder. @@ -31,8 +31,6 @@ While opening Dashboard Builder, layout window appears - you can choose one from You can also add custom layout that then can be available in Dashboard Builder. -For more information, see [Customize storefront layout](customize_storefront_layout.md). - ## Create custom blocks Dashboard Builder provides set of ready-to-use blocks, for example, Common content, Quick actions, or [[= product_name =]] News. diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index b374e70b85a..7e39c05c504 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -54,7 +54,7 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |[ibexa/http-cache](https://github.com/ibexa/http-cache)|[HTTP cache handling](http_cache.md), using multi tagging| |[ibexa/i18n](https://github.com/ibexa/i18n)|Centralized translations to ease synchronization with Crowdin| |[ibexa/messenger](https://github.com/ibexa/messenger)|[Background and asynchronous task processing](background_tasks.md) using Symfony Messenger| -|[ibexa/notifications](https://github.com/ibexa/notifications)| Sending [notifications to channels](notification_channels.md)| +|[ibexa/notifications](https://github.com/ibexa/notifications)| Sending notifications to channels| |[ibexa/post-install](https://github.com/ibexa/post-install)|Apache and nginx templates| |[ibexa/rest](https://github.com/ibexa/rest)|REST API| |[ibexa/search](https://github.com/ibexa/search)|Common search functionalities| @@ -115,22 +115,6 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |ibexa/site-factory|Enables configuration of sites from UI| |ibexa/engage|Enables integration with [[[= product_name_engage =]]](https://developers.qualifio.com/docs/engage/)| -## [[= product_name_com =]] packages - -|Bundle|Description| -|---------|-----------| -|ibexa/experience|Metapackage for Symfony Flex-based [[= product_name =]] Experience installation| -|ibexa/cart|Main store functionalities| -|ibexa/checkout|Store checkout functionality| -|ibexa/corporate-account-commerce-bridge|Additional functionality for [corporate accounts](corporate_admin_panel.md)| -|ibexa/discounts|Adds [discounts](discounts.md) functionality| -|ibexa/discounts-codes|Adds the possibility to use discount codes with the [Discounts](discounts.md) functionality| -|ibexa/storefront|A storefront starting kit| -|ibexa/order-management|Order management| -|ibexa/payment|Payment handling| -|ibexa/shipping|Shipping handling| -|ibexa/connector-payum|[Payum integration](payum_integration.md)| - ## Optional packages The following packages are optional and can be installed independently. @@ -139,6 +123,5 @@ The following packages are optional and can be installed independently. |---------|-----------| |[ibexa/automated-translation](https://github.com/ibexa/automated-translation)|Automated translation of content using [Google Translate or DeepL](automated_translations.md)| |ibexa/cdp|Integration with [[[= product_name_cdp =]]](../../raptor_cdp/raptor_cdp.md)| -|[ibexa/cloud](https://github.com/ibexa/cloud)|Integration with [[[= product_name_cloud =]]](/ibexa_cloud/ibexa_cloud.md)| In addition, you can extend the capabilities of your project by installing additional [LTS Updates](editions.md#lts-updates). diff --git a/docs/administration/recent_activity/recent_activity.md b/docs/administration/recent_activity/recent_activity.md index 59a00dd93bc..791da176345 100644 --- a/docs/administration/recent_activity/recent_activity.md +++ b/docs/administration/recent_activity/recent_activity.md @@ -75,7 +75,7 @@ The [`activity_log/read`](policies.md#activity-log) policy gives a role the acce It can be limited to "Only own logs" ([`ActivityLogOwner`](limitation_reference.md#activity-log-owner-limitation)). The policy should be given to every roles having access to the back office, at least with the `ActivityLogOwner` owner limitation, to allow them to use the "Recent activity" block in the [default dashboard](configure_default_dashboard.md) or their [custom dashboard](customize_dashboard.md). -This policy is required to view [activity log in user profile]([[= user_doc =]]/getting_started/get_started/#view-and-edit-user-profile), if [profile is enabled](update_from_4.5.md#user-profile). +This policy is required to view [activity log in user profile]([[= user_doc =]]/getting_started/get_started/#view-and-edit-user-profile), if the user profile is enabled. !!! caution diff --git a/docs/api/event_reference/cart_events.md b/docs/api/event_reference/cart_events.md deleted file mode 100644 index c35ac86f6af..00000000000 --- a/docs/api/event_reference/cart_events.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -description: Events that are triggered when working with carts. -edition: commerce -page_type: reference ---- - -# Cart events - -| Event | Dispatched by | Properties | -|---|---|---| -|`AddEntryEvent`|`CartService::addEntry`|`CartInterface $cart`
`EntryAddStruct $entryAddStruct`
`CartInterface $cartResult`| -|`BeforeAddEntryEvent`|`CartService::addEntry`|`CartInterface $cart`
`EntryAddStruct $entryAddStruct`
`?CartInterface $cartResult = null`| -|`BeforeCreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct`
`?CartInterface $cartResult = null`| -|`BeforeDeleteCartEvent`|`CartService::deleteCart`|`CartInterface $cart`| -|`BeforeEmptyCartEvent`|`CartService::emptyCart`|`CartInterface $cart`| -|`BeforeMergeCartsEvent`|`CartService::mergeCarts`|`CartInterface $targetCart`
`array $cartsToMerge`
`bool $deleteMergedCarts`| -|`BeforeRemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart`
`EntryInterface $entry`
`?CartInterface $cartResult = null`| -|`BeforeUpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart`
`CartMetadataUpdateStruct $cartUpdateStruct`
`?CartInterface $cartResult = null`| -|`BeforeUpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart`
`EntryInterface $entry`
`EntryUpdateStruct $entryUpdateStruct`
`?CartInterface $cartResult = null`| -|`CreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct`
`CartInterface $cartResult`| -|`DeleteCartEvent`|`CartService::deleteCart`|`CartInterface $cart`| -|`EmptyCartEvent`|`CartService::emptyCart`|`CartInterface $cart`| -|`MergeCartsEvent`|`CartService::mergeCarts`|`CartInterface $cartResult`| -|`RemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart`
`EntryInterface $entry`
`CartInterface $cartResult`| -|`UpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart`
`CartMetadataUpdateStruct $cartUpdateStruct`
`CartInterface $cartResult`| -|`UpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart`
`EntryInterface $entry`
`EntryUpdateStruct $entryUpdateStruct`
`CartInterface $cartResult`| diff --git a/docs/api/event_reference/discounts_events.md b/docs/api/event_reference/discounts_events.md deleted file mode 100644 index d7c400b6306..00000000000 --- a/docs/api/event_reference/discounts_events.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -description: Events that are triggered when working with discounts. -page_type: reference -editions: - - commerce -month_change: false ---- - -# Discounts events - -## Discount management - -The events below are dispatched when managing [discounts](discounts.md): - -| Event | Dispatched by | -|---|---| -|[`BeforeCreateDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeCreateDiscountEvent.html)| [`DiscountServiceInterface::createDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_createDiscount) | -|[`CreateDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateDiscountEvent.html)| [`DiscountServiceInterface::createDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_createDiscount) | -|[`BeforeEnableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeEnableDiscountEvent.html)| [`DiscountServiceInterface::enableDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_enableDiscount) | -|[`EnableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-EnableDiscountEvent.html)| [`DiscountServiceInterface::enableDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_enableDiscount) | -|[`BeforeDisableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeDisableDiscountEvent.html)| [`DiscountServiceInterface::disableDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_disableDiscount) | -|[`DisableDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-DisableDiscountEvent.html)| [`DiscountServiceInterface::disableDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_disableDiscount) | -|[`BeforeDeleteDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeDeleteDiscountEvent.html)| [`DiscountServiceInterface::deleteDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_deleteDiscount) | -|[`DeleteDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-DeleteDiscountEvent.html)| [`DiscountServiceInterface::deleteDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_deleteDiscount) | -|[`BeforeUpdateDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeUpdateDiscountEvent.html)| [`DiscountServiceInterface::updateDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_updateDiscount) | -|[`UpdateDiscountEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-UpdateDiscountEvent.html)| [`DiscountServiceInterface::updateDiscount()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_updateDiscount) | - -## Form events - -### Form - -The events below allow you to [customize the discounts creation wizard](extend_discounts_wizard.md). - -| Event | Dispatched by | -|---|---| -|[`CreateDiscountCreateStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateDiscountCreateStructEvent.html) | [`DiscountFormMapperInterface::mapCreateDataToStruct()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapCreateDataToStruct)| -|[`CreateDiscountUpdateStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateDiscountUpdateStructEvent.html) | [`DiscountFormMapperInterface::mapUpdateDataToStruct()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapUpdateDataToStruct)| -|[`CreateFormDataEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateFormDataEvent.html) | [`DiscountFormMapperInterface::createFormData()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_createFormData)| -|[`MapDiscountToFormDataEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-MapDiscountToFormDataEvent.html) | [`DiscountFormMapperInterface::mapDiscountToFormData()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapDiscountToFormData) | - -### Form steps - -The following events are dispatched when rendering each step of the discount wizard, allowing you to add new fields to it: - -| Event | Event name | -|---|---| -|[`CreateFormDataEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-Step-CreateFormDataEvent.html)| `ibexa.discounts.form_mapper..create_form_data`| -|[`MapCreateDataToStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-Step-MapCreateDataToStructEvent.html)|`ibexa.discounts.form_mapper..map_create_data_to_struct`| -|[`MapDiscountToFormDataEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-Step-MapDiscountToFormDataEvent.html)| `ibexa.discounts.form_mapper..map_discount_to_form_data`| -|[`MapUpdateDataToStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-Step-MapUpdateDataToStructEvent.html)|`ibexa.discounts.form_mapper..map_update_data_to_struct`| - -The event classes are shared between steps, but they are dispatched with different names. -Each step form mapper dispatches its own set of events. - -You can use the names specified above or generate them using the `createEventName` method, for example `CreateFormDataEvent::createEventName(GeneralPropertiesInterface::IDENTIFIER)` returns `ibexa.discounts.form_mapper.general_properties.create_form_data`. - -| Form mapper | Step identifier | -|---|---| -| [`ConditionsMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-FormMapper-ConditionsMapperInterface.html)| [`conditions`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-ConditionsInterface.html#constant_IDENTIFIER) | -| [`GeneralPropertiesMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-FormMapper-GeneralPropertiesMapperInterface.html)| [`general_properties`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-GeneralPropertiesInterface.html#constant_IDENTIFIER) | -| [`ProductConditionsMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-FormMapper-ProductConditionsMapperInterface.html)| [`products`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-ProductConditionInterface.html#constant_IDENTIFIER) | -| [`UserConditionsMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-FormMapper-UserConditionsMapperInterface.html)| [`target_group`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-UserConditionInterface.html#constant_IDENTIFIER) | - -### Back office - -These events are dispatched by the back office controllers after user chooses the "Save" action when creating or updating a discount. - -| Event | Dispatched by | Description | -|---|---|---| -|[`PreDiscountCreateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Event-PreDiscountCreateEvent.html) | `Ibexa\Bundle\Discounts\Controller\DiscountCreateController` | Dispatched when the discount creation is finished in the back office form | -|[`PreDiscountUpdateEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Event-PreDiscountUpdateEvent.html) | `Ibexa\Bundle\Discounts\Controller\DiscountEditController` | Dispatched when the discount modifications is finished in the back office form | - -## Discount codes - -The event below allows you to inject your custom logic before the discount code is applied to a product in cart: - -| Event | Dispatched by | Description | -|---|---|---| -|[`BeforeDiscountCodeApplyEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Event-BeforeDiscountCodeApplyEvent.html)|`Ibexa\Bundle\DiscountsCodes\Controller\REST\DiscountCodeController`| Dispatched before a discount code is applied in the cart | diff --git a/docs/api/event_reference/event_reference.md b/docs/api/event_reference/event_reference.md index 99bab1fa3a3..b93358d5945 100644 --- a/docs/api/event_reference/event_reference.md +++ b/docs/api/event_reference/event_reference.md @@ -18,20 +18,16 @@ For example, copying a content item is connected with two events: `BeforeCopyCon [[= cards([ "api/event_reference/ai_action_events", - "api/event_reference/cart_events", "api/event_reference/product_catalog_events", "api/event_reference/collaboration_events", "api/event_reference/content_events", "api/event_reference/content_type_events", - "api/event_reference/discounts_events", "api/event_reference/integrated_help_events", "api/event_reference/language_events", "api/event_reference/location_events", "api/event_reference/object_state_events", - "api/event_reference/order_management_events", "api/event_reference/other_events", "api/event_reference/page_events", - "api/event_reference/payment_events", "api/event_reference/role_events", "api/event_reference/section_events", "api/event_reference/segmentation_events", diff --git a/docs/api/event_reference/order_management_events.md b/docs/api/event_reference/order_management_events.md deleted file mode 100644 index f68009e320c..00000000000 --- a/docs/api/event_reference/order_management_events.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Events that are triggered when working with orders. -edition: commerce -page_type: reference ---- - -# Order management events - -| Event | Dispatched by | Properties | -|---|---|---| -|`BeforeCreateOrderEvent`|`OrderService::createOrder`|`OrderCreateStruct $createStruct`
`?OrderInterface $orderResult = null`| -|`CreateOrderEvent`|`OrderService::createOrder`|`OrderCreateStruct $createStruct`
`OrderInterface $orderResult`| -|`BeforeUpdateOrderEvent`|`OrderService::updateOrder`|`OrderInterface $order`
`OrderUpdateStruct $updateStruct`
`?OrderInterface $orderResult = null`| -|`UpdateOrderEvent`|`OrderService::updateOrder`|`OrderInterface $order`
`OrderUpdateStruct $updateStruct`
`OrderInterface $orderResult`| -|`BeforeCancelOrderEvent`|`OrderService::cancelOrder`|`OrderInterface $order`| -|`CancelOrderEvent`|`OrderService::cancelOrder`|`OrderInterface $order`| diff --git a/docs/api/event_reference/other_events.md b/docs/api/event_reference/other_events.md index 020996a7b23..1423032a306 100644 --- a/docs/api/event_reference/other_events.md +++ b/docs/api/event_reference/other_events.md @@ -71,7 +71,7 @@ For more information, see [Customizing image optimizers with an event](images.md |---|---|---| |[`ConfigureImageOptimizersEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ImageEditor-Event-ConfigureImageOptimizersEvent.html)|`SpatieChainOptimizer::`
`optimize`|`array $optimizers`| -## Form Builder [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] +## Form Builder [[% include 'snippets/experience_badge.md' %]] | Event | Dispatched by | Properties | |---|---|---| diff --git a/docs/api/event_reference/payment_events.md b/docs/api/event_reference/payment_events.md deleted file mode 100644 index 313373447d3..00000000000 --- a/docs/api/event_reference/payment_events.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -description: Events that are triggered when working with payments and payment methods. -edition: commerce -page_type: reference ---- - -# Payment events - -## Payments - -| Event | Dispatched by | Properties | -|---|---|---| -|`BeforeCreatePaymentEvent`|`PaymentService::createPayment`|`PaymentCreateStruct $createStruct`
`?PaymentInterface $paymentResult = null`| -|`CreatePaymentEvent`|`PaymentService::createPayment`|`PaymentCreateStruct $createStruct`
`PaymentInterface $paymentResult`| -|`BeforeUpdatePaymentEvent`|`PaymentService::updatePayment`|`PaymentInterface $payment`
`PaymentUpdateStruct $updateStruct`
`?PaymentInterface $paymentResult = null`| -|`UpdatePaymentEvent`|`PaymentService::updatePayment`|`PaymentInterface $payment`
`PaymentUpdateStruct $updateStruct`
`PaymentInterface $paymentResult`| -|`BeforeDeletePaymentEvent`|`PaymentService::DeletePayment`|`PaymentInterface $payment`| -|`DeletePaymentEvent`|`PaymentService::DeletePayment`|`PaymentInterface $payment`| - -## Payment methods - -| Event | Dispatched by | Properties | -|---|---|---| -|`BeforeCreatePaymentMethodEvent`|`PaymentMethodService::createPaymentMethod`|`PaymentMethodCreateStruct $createStruct`
`?PaymentMethodInterface $paymentMethodResult = null`| -|`CreatePaymentMethodEvent`|`PaymentMethodService::createPaymentMethod`|`PaymentMethodCreateStruct $createStruct`
`PaymentMethodInterface $paymentMethodResult`| -|`BeforeUpdatePaymentMethodEvent`|`PaymentMethodService::updatePaymentMethod`|`PaymentMethodInterface $paymentMethod`
`PaymentMethodUpdateStruct $updateStruct`
`?PaymentMethodInterface $paymentMethodResult = null`| -|`UpdatePaymentMethodEvent`|`PaymentMethodService::updatePaymentMethod`|`PaymentMethodInterface $paymentMethod`
`PaymentMethodUpdateStruct $updateStruct`
`PaymentMethodInterface $paymentMethodResult`| -|`BeforeDeletePaymentMethodEvent`|`PaymentMethodService::DeletePaymentMethod`|`PaymentMethodInterface $paymentMethod`| -|`DeletePaymentMethodEvent`|`PaymentMethodService::DeletePaymentMethod`|`PaymentMethodInterface $paymentMethod`| diff --git a/docs/api/event_reference/shopping_list_events.md b/docs/api/event_reference/shopping_list_events.md deleted file mode 100644 index 354ff24b1d9..00000000000 --- a/docs/api/event_reference/shopping_list_events.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: Events that are triggered while managing shopping lists. -page_type: reference -editions: lts-update commerce -month_change: false ---- - -# Shopping list events - -| Event | Dispatched by | Description | -|--------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| -| [`BeforeCreateShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeCreateShoppingListEvent.html) | [`ShoppingListService::`
`createShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_createShoppingList) | Dispatched before a shopping list is created. Allows to modify or prevent creation. | -| [`CreateShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-CreateShoppingListEvent.html) | [`ShoppingListService::`
`createShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_createShoppingList) | Dispatched after a shopping list is created. | -| [`BeforeUpdateShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeUpdateShoppingListEvent.html) | [`ShoppingListService::`
`updateShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_updateShoppingList) | Dispatched before a shopping list is updated. Allows to modify or prevent update. | -| [`UpdateShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-UpdateShoppingListEvent.html) | [`ShoppingListService::`
`updateShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_updateShoppingList) | Dispatched after a shopping list is updated. | -| [`BeforeDeleteShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeDeleteShoppingListEvent.html) | [`ShoppingListService::`
`deleteShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_deleteShoppingList) | Dispatched before a shopping list is deleted. Allows to prevent deletion. | -| [`DeleteShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-DeleteShoppingListEvent.html) | [`ShoppingListService::`
`deleteShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_deleteShoppingList) | Dispatched after a shopping list is deleted. | -| [`BeforeClearShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeClearShoppingListEvent.html) | [`ShoppingListService::`
`clearShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_clearShoppingList) | Dispatched before a shopping list is cleared. Allows to modify or prevent clearing. | -| [`ClearShoppingListEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-ClearShoppingListEvent.html) | [`ShoppingListService::`
`clearShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_clearShoppingList) | Dispatched after a shopping list is cleared. | -| [`BeforeAddEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeAddEntriesEvent.html) | [`ShoppingListService::`
`addEntries()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_addEntries) | Dispatched before entries are added to a shopping list. Allows to modify or prevent addition. | -| [`AddEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-AddEntriesEvent.html) | [`ShoppingListService::`
`addEntries()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_addEntries) | Dispatched after entries are added to a shopping list. | -| [`BeforeRemoveEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeRemoveEntriesEvent.html) | [`ShoppingListService::`
`removeEntries()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_removeEntries) | Dispatched before entries are removed from a shopping list. Allows to modify or prevent removal. | -| [`RemoveEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-RemoveEntriesEvent.html) | [`ShoppingListService::`
`removeEntries()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_removeEntries) | Dispatched after entries are removed from a shopping list. | diff --git a/docs/api/notification_channels.md b/docs/api/notification_channels.md deleted file mode 100644 index c081f8549d9..00000000000 --- a/docs/api/notification_channels.md +++ /dev/null @@ -1,299 +0,0 @@ ---- -description: Notify users through several channels. -month_change: false ---- - -# Notification channels - -The `ibexa/notifications` package integrates the [Symfony Notifier]([[= symfony_doc =]]/notifier.html) with [[= product_name =]]. -You can use it to create notifications and send them through various channels such as email, SMS, communication platforms, -and the [back office user notifications](notifications.md#user-notifications). - -These notifications must not be confused with the [notification bars](notifications.md#notification-bars) or the [user notifications](notifications.md#user-notifications): - -| Notification category | Sent with | Description | -|------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| -| [Notification bars](notifications.md#notification-bars) | [`TranslatableNotificationHandlerInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Notification-TranslatableNotificationHandlerInterface.html) | Rendered as a message bar in the bottom-right corner. | -| [User notifications](notifications.md#user-notifications) | [`NotificationService`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html) | Rendered as [back office notification]([[= user_doc =]]/getting_started/notifications/). | -| [Channel-based notifications](#subscribe-to-notifications) | [`NotificationServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Service-NotificationServiceInterface.html) | Rendering depends on the channel assigned to the notification type. | - -Unlike notification bars and user notifications, channel-based notifications don't have a predefined channel. -You can configure how they are delivered to the user by using YAML configuration. -Several channels are provided, and you can create your own. - -The [`Ibexa\Contracts\Notifications\Service\NotificationServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Service-NotificationServiceInterface.html) -sends notifications, objects extending the `Symfony\Component\Notifier\Notification\Notification` class. -You can inject this notification service into your code to send the built-in or custom notification types. -Channel services implementing `Symfony\Component\Notifier\Channel\ChannelInterface` subscribe to a selection of notification types -and deliver notifications to users through various transports. - -## Subscribe to notifications - -Some events generate notifications that you can deliver to the users through one or more channels. - -### Available notification types - -- [`Ibexa\Contracts\FormBuilder\Notifications\FormSubmitted`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-FormBuilder-Notifications-FormSubmitted.html) -- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotification.html) -- [`Ibexa\Contracts\OrderManagement\Notification\OrderStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-Notification-OrderStatusChange.html) -- [`Ibexa\Contracts\Payment\Notification\PaymentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Payment-Notification-PaymentStatusChange.html) -- [`Ibexa\Contracts\Shipping\Notification\ShipmentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Shipping-Notification-ShipmentStatusChange.html) -- [`Ibexa\Contracts\User\Notification\UserInvitation`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserInvitation.html) -- [`Ibexa\Contracts\User\Notification\UserPasswordReset`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserPasswordReset.html) -- [`Ibexa\Contracts\User\Notification\UserRegister`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserRegister.html) -- `Ibexa\Share\Notification\ContentEditInvitationNotification` -- `Ibexa\Share\Notification\ContentViewInvitationNotification` -- `Ibexa\Share\Notification\ExternalParticipantContentViewInvitationNotification` - -### Available notification channels - -You can list the notification channel services with the following command: - -```bash -php bin/console debug:container --tag=notifier.channel -``` - -- `actito` - Notification forwarded as [transactional email](transactional_emails.md) -- `browser` - Notification forwarded as [flash message]([[= symfony_doc =]]/session.html#flash-messages) -- [`chat`]([[= symfony_doc =]]/notifier.html#chat-channel) - Notification forwarded to a communication platform like Slack, Microsoft Teams, or Google Chat -- [`desktop`]([[= symfony_doc =]]/notifier.html#desktop-channel) - Notification forwarded to desktop applications like JoliNotif -- [`email`]([[= symfony_doc =]]/notifier.html#email-channel) - Notification forwarded to email addresses -- `ibexa` - Notification forwarded as [back office user notifications](notifications.md#user-notifications) -- [`push`]([[= symfony_doc =]]/notifier.html#push-channel) - Notification forwarded to specific applications -- [`sms`]([[= symfony_doc =]]/notifier.html#sms-channel) - Notification forwarded to phone numbers - -### Subscriptions configuration - -You can find the default configuration in `config/packages/ibexa.yaml` and `config/packages/ibexa_admin_ui.yaml`. -You can modify it to define your own subscriptions. -This page contains several examples of subscriptions configuration. - -!!! caution "Scopes may not merge as expected" - - Subscriptions defined for a scope may not merge with subscriptions from other scopes or from other files. - For example, `default` scope might not be merged within a siteaccess group scope. - To ensure you don't unsubscribe channels by mistake, - always use the following command to check subscriptions for a siteaccess before and after any changes: - - ```bash - php bin/console ibexa:debug:config notifications.subscriptions --siteaccess= - ``` - -#### Subscription example - -The following example shows how you can deliver notifications about Commerce-related activities through Slack: - -1. Install the Slack Notifier package: - - ```bash - composer require symfony/slack-notifier - ``` - -2. In a .env file, [set the DSN to target a Slack channel or a Slack user](https://github.com/symfony/slack-notifier?tab=readme-ov-file#dsn-example): - - ```dotenv - SLACK_DSN=slack://xoxb-token@default?channel=ibexa-notifications - ``` - -3. Subscribe to notification types related to Commerce, such as order, payment, and shipment status changes. - For example, define the following configuration in a new `config/packages/notifications.yaml` file: - - ``` yaml hl_lines="12-20" - [[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 1, 20, indent_level=1) =]] - ``` - -## Create notification class - -You can define a new notification type and assign a new set of channels to it, customizing how it's delivered. -It must extend the `Symfony\Component\Notifier\Notification\Notification` class -and can optionally implement interfaces required by specific channels. - -- Some channels don't accept the notification if it doesn't implement their specific notification interface. - These interfaces come with a method to specifically format the notification for the channel. -- Some channels accept every notification and have a default formatting if the notification doesn't implement their specific notification interface. - -| Channel | Specific notification interface | Accepts any notification object | -|:----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| -| `actito` | `Symfony\Component\Notifier\Notification\EmailNotificationInterface` | **No** | -| `chat` | `Symfony\Component\Notifier\Notification\ChatNotificationInterface` | Yes | -| `desktop` | `Symfony\Component\Notifier\Notification\DesktopNotificationInterface` | Yes | -| `email` | `Symfony\Component\Notifier\Notification\EmailNotificationInterface` | **No** | -| `ibexa` | [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotificationInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotificationInterface.html) | **No** | -| `push` | `Symfony\Component\Notifier\Notification\PushNotificationInterface` | Yes | -| `sms` | `Symfony\Component\Notifier\Notification\SmsNotificationInterface` | **No** | - -The `ibexa` channel sends notifications to users through their profile menu, exactly as [user notifications](notifications.md#user-notifications). -The [`SystemNotificationChannel` uses the core `NotificationService`](https://github.com/ibexa/notifications/blob/6.0/src/lib/SystemNotification/SystemNotificationChannel.php#L51) to do so. - -Some channels don't need a recipient: - -- `browser`: Always sends a flash message to the current user -- `chat`: Always sends a message to the same connection resource - -### Notification sending - -Use the objects from the [`Ibexa\Contracts\Notifications`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-notifications.html) namespace to work with notifications. - -The [`…\Service\NotificationServiceInterface::send()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Service-NotificationServiceInterface.html#method_send) expects two arguments: - -- The first argument is an [`…\Value\NotificationInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-NotificationInterface.html). - This interface is implemented by the [`…\Value\Notification\SymfonyNotificationAdapter`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Notification-SymfonyNotificationAdapter.html) - which allows you to wrap any class extending `Symfony\Component\Notifier\Notification\Notification`. -- The optional second argument is an array of [`…\Value\RecipientInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-RecipientInterface.html). - This interface is implemented by the [`…\Value\Recipent\SymfonyRecipientAdapter`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-SymfonyRecipientAdapter.html) - used to wrap `Symfony\Component\Notifier\Recipient\RecipientInterface`. - - This Symfony interface is implemented by [`…\Value\Recipent\UserRecipient`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipient.html) - which can wrap classes implementing the [`Ibexa\Contracts\Core\Repository\Values\User\UserReference` interface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-User-UserReference.html), - - The [`UserService` methods to load a user](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-UserService.html#method_loadUser) are returning objects implementing this `UserReference` interface. - - The [`PermissionResolver::getCurrentUserReference()` method](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-PermissionResolver.html#method_getCurrentUserReference) is returning objects implementing this `UserReference` interface. - -For example, to send a notification, you often use a combination like the following: - -``` php hl_lines="11-14" -[[= include_code('code_samples/api/notifications/notification_send.php', 2) =]] -``` - -### `CommandExecuted` example - -The following example is a command that sends a notification to users on several channels simultaneously. -This example could be a scheduled task or cron job that warns users about its result. - -1. First, create a `CommandExecuted` notification type. - It supports two channels (`ibexa`, `email`), but could be extended to support more. - As constructor arguments, an instance takes the command itself, the exit code of the run, and any caught exceptions. - - ``` php - [[= include_code('code_samples/api/notifications/src/Notifications/CommandExecuted.php', indent_level=1) =]] - ``` - -2. Assign channels subscribed to this notification in `config/packages/notifications.yaml`: - - ``` yaml hl_lines="17-20" - [[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 5, 24, indent_level=1) =]] - ``` - -3. Create a command sending a `CommandExecuted` notification at the end of execution: - It randomly succeeds or fails to demonstrate how notifications can communicate different execution results. - It could be declared as a service to set the list of recipients' logins (`$recipientLogins`) from a configuration file. - - ``` php - [[= include_code('code_samples/api/notifications/src/Command/NotificationSenderCommand.php', indent_level=1) =]] - ``` - -When you execute this command, it fails randomly and notifies the Administrator user about the result. - -![Ibexa notification example](notification-ibexa.png "Command notifications shown in the `ibexa` channel, the back office user notification menu") - -### `ControllerFeedback` example - -The following example shows a custom notification sent by a controller and displayed as a flash message on the corresponding page in the browser. - -The following `ControllerFeedback` notification type is a class that only extends the base: - -``` php -[[= include_code('code_samples/api/notifications/src/Notifications/ControllerFeedback.php') =]] -``` - -The `ControllerFeedback` notification is sent in a controller action: - -``` php -[[= include_code('code_samples/api/notifications/src/Controller/NotificationSenderController.php') =]] -``` - -For the example, the notification is sent in a back office context for all editions and on the front end for Commerce edition. -An empty template only extending the page layout is used for the demonstration. - -`templates/themes/admin/notification-sender-controller.html.twig`: - -``` twig -[[= include_code('code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig') =]] -``` - -`templates/themes/storefront/notification-sender-controller.html.twig`: - -``` twig -[[= include_code('code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig') =]] -``` - -In the back office, a notification sent as a flash message has the `ibexa-alert--notification` CSS class. -This doesn't have a default style. -For this example, the style is the same as an existing alert message type. - -The `assets/scss/notifications.scss` declares the CSS class `ibexa-alert--notification` as being the same as the `ibexa-alert--info` CSS class - -``` scss -[[= include_code('code_samples/api/notifications/assets/scss/notifications.scss') =]] -``` - -This `assets/scss/notifications.scss` is added to the Admin UI layout in `webpack.config.js`: - -``` javascript -[[= include_code('code_samples/api/notifications/webpack.config.js', 50) =]] -``` - -On the storefront, a notification sent as a flash message has the `ibexa-store-notification--notification` CSS class. -This class already has a default style applied. - -Subscribe to this new notification type in `config/packages/notifications.yaml`: - -- In the `admin_group` scope with the `browser` channel -- For Commerce edition, in the `storefront_group` scope with the `browser` channel - -``` yaml hl_lines="13-15 43-45" -[[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 5, 6) =]] - # … -[[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 26, 34) =]] -[[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 36, 65) =]] -[[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 67) =]] -``` - -!!! note "Subscriptions for `storefront_group`" - - Note that when introducing subscriptions configuration for the `storefront_group` scope that comes with Commerce edition, - several subscriptions had to be copy-pasted into this SiteAccess group to have the same subscriptions as before - when it was configured only by the `default` scope. - For example, the subscriptions for the `site` SiteAccess belonging to this group - can be checked with the following command during configuration: - ```bash - php bin/console ibexa:debug:config notifications.subscriptions --siteaccess=site - ``` - -Visiting this controller's route in the back office (at `/admin/notification-sender`) triggers the notification as a flash message in the bottom-right corner: - -![Notification in back office](notification-browser-admin.png "Controller message displayed as a flash message in the browser") - -Visiting the controller's route in the default SiteAccess on Commerce edition (at `/notification-sender`) also triggers the notification as a flash message in the bottom-right corner: - -![Notification in storefront](notification-browser-storefront.png "Controller message displayed as a flash message in the browser") - -## Create custom channel - -You may need to create new channels to subscribe to notifications and send them to new destinations. -For example, you could create a new channel for Slack that takes more than one DSN for finer dispatching. - -A channel is a service implementing `Symfony\Component\Notifier\Channel\ChannelInterface`, and tagged `notifier.channel` alongside a `channel` identifier. - -The following example is a custom channel that sends notifications to the logger. - -``` php -[[= include_code('code_samples/api/notifications/src/Notifier/Channel/LogChannel.php') =]] -``` - -``` yaml -[[= include_code('code_samples/api/notifications/config/services.yaml') =]] -``` - -Now, the [`CommandExecuted` notification](#commandexecuted-example) can be subscribed to the `log` channel: - -``` yaml hl_lines="5" -[[= include_code('code_samples/api/notifications/config/packages/notifications.yaml', 21, 25) =]] -``` - -The log contains the notifications -(in `var/log/dev.log` when run in the `dev` Symfony environment): - -```console -% tail -Fn0 var/log/dev.log | grep --line-buffered CommandExecuted -[2026-03-26T01:01:23.888014+01:00] app.INFO: ✖app:send_notification {"class":"App\\Notifications\\CommandExecuted","importance":"high","content":""} [] -[2026-03-27T01:02:54.123431+01:00] app.INFO: ✔app:send_notification {"class":"App\\Notifications\\CommandExecuted","importance":"low","content":""} [] -``` diff --git a/docs/commerce/cart/cart.md b/docs/commerce/cart/cart.md deleted file mode 100644 index be7f71c43d8..00000000000 --- a/docs/commerce/cart/cart.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -description: The cart component covers adding items to the shopping cart, and previewing or modifying the cart information. -edition: commerce ---- - -# Cart - -The cart component is a foundation of the Commerce offering delivered as part of [[= product_name_com =]]. -It covers actions related to the creation and handling of a list of products that the buyer intends to purchase. - -The component exposes the following: - -- [PHP API](cart_api.md) that allows for managing carts and cart entries, or checking cart validity -- [REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart) that helps get cart and products information over HTTP -- [Twig functions](cart_twig_functions.md) that enable checking whether product can be added to cart and formatting the price - -There is no specific configuration related to the cart component. -All configuration is done at the checkout and storefront level. - -Cart constructor takes the following arguments: - -- `userId` - by default, read from the header's meta element with `name="UserId"`, where variable type must be integer -- `currencyCode` - by default, read from the header's meta element with `name="ActiveCurrencyCode"` -- `lang` - by default, read from the document element's `lang` attribute - -## Cart data handling - -Cart data is handled by two storages, depending on whether the buyer is anonymous or has been authenticated. -Information that relates to anonymous users is stored in the PHP session, while registered user data is stored in a database. - -By default, anonymous users can add items to cart, but to display the cart view, they have to log in and transition into an authenticated user. - -!!! note - - For information about roles and permissions that control access to the cart, see [Permission use cases](permission_use_cases.md#commerce). - -### Cart data merging - -When a buyer browses the storefront anonymously and fills the cart with items, anonymous cart data is stored in the PHP session storage. -Then, when an anonymous user logs into the storefront, cart data from the PHP session storage is persisted and merged with any cart information that might already exist in the database for this authenticated user. - -If no previous cart data exists, a new cart is created. - -### Cart data validation - -When a buyer tries to add products to the cart, increase cart item quantity, or proceed to checkout, the cart component performs cart item validation and checks whether: - -- the product is available -- the requested quantity of product is available -- the product is available at a price in the currency selected for the cart - -## Front-end perspective - -From the front-end perspective, the cart consists of a main `Cart` object and several widgets. -`Cart` is a standalone JavaScript object that manages cart data and has no user interface, while widgets consist of JavaScript code and accompanying Twig templates. - -### Cart service object - -The `Cart` service object stores cart entry data and a cart summary, which contains additional entry data, like, for example, formatted gross price or validation errors. -The object exposes several methods, which you can use to get and modify cart entries. -Only one instance of a `Cart` service object can be created. - -### Cart events - -When cart data is changed or loaded, the `ibexa-cart:cart-data-changed` event is triggered on `body`. -The reference to the Cart is sent in the event's `detail`. - -```js -document.body.addEventListener( - 'ibexa-cart:cart-data-changed', - ({ detail: { cart } }) => { - refreshMyWidget(cart); - }, - false, -); -``` - -### Cart service - -The Cart package provides `Ibexa\Contracts\Cart\CartServiceInterface` Symfony service, which is the entrypoint for calling the [backend API](cart_api.md). - -You can import the service with the following code: - -```js -import * as cartService from '@ibexa-cart/src/bundle/Resources/public/js/service/cart'; -``` - -Use the service in your code as follows: - -```js -cartService.deleteCartEntry(cartIdentifier, entryIdentifier); -``` - -Every cart service function returns a `Promise` object with a parsed response. -When the request isn't `OK`, it can throw an error with the response `statusText`. - -- `loadUserCarts(ownerId)` - loads 10 user carts -- `loadCartSummary(cartIdentifier)` - load cart summary data -- `createCart(currencyCode)` - creates a new cart -- `deleteCart(cartIdentifier)` - deletes the cart -- `createCartEntry(cartIdentifier, productCode, quantity)` - creates a new cart entry for the specified product -- `updateProductQuantity(cartIdentifier, entryIdentifier, quantity)` - updates product quantity to a new value -- `deleteCartEntry(cartIdentifier, entryIdentifier)` - deletes cart entry -- `emptyCart(cartIdentifier)` - empties cart by removing all entries, returns Promise - -To import and initialize cart (without extending it or passing any options), add the following: - -```js -import Cart from '@ibexa-cart/src/bundle/Resources/public/js/component/cart'; - -new Cart(); -``` - -### Change request before sending - -Before every request is sent by `cartService`, the `ibexa-cart:prepare-request` event is triggered on `document`, so you can change request object by assigning a new one to `detail.request`: - -```js -document.addEventListener( - 'ibexa-cart:prepare-request', - (event) => { - event.detail.request = modifiedRequest; - }, - false, -); -``` - -### Widgets - -[[= product_name =]] comes with a number of components that are interfaces to various functionalities exposed by the Cart. -For a list of default components available in the storefront, see [Default UI components](storefront.md#default-ui-components). - -To customize your store, you can override the Twig templates and extend their logic. -For more information, see [Customize storefront layout](customize_storefront_layout.md). diff --git a/docs/commerce/cart/cart_api.md b/docs/commerce/cart/cart_api.md deleted file mode 100644 index 1b89eec34e7..00000000000 --- a/docs/commerce/cart/cart_api.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -description: Use PHP API and REST API to work with carts in Commerce, manage cart entries, or validate products. -edition: commerce ---- - -# Cart API - -!!! tip "Cart REST API" - - To learn how to manage carts with the REST API, see the [REST API reference](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart). - -To get carts and work with them, use the `Ibexa\Contracts\Cart\CartServiceInterface` interface. - -`CartService` uses two storage methods and handles switching between storages: - -- carts of registered users use database-based storage -- anonymous user carts are stored in the PHP session - -From the developer's perspective, carts and entries are referenced with a UUID identifier. - -## Get single cart by identifier - -To access a single cart, use the `CartServiceInterface::getCart` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/CartCommand.php', 64, 66, remove_indent=True) =]] -``` - -## Get multiple carts - -To fetch multiple carts, use the `CartServiceInterface::findCarts` method. -It follows the same search Query pattern as other APIs: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 10, 11) =]] -// ... - -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 49, 57) =]] -``` - -## Create cart - -To create a cart, use the `CartServiceInterface::createCart` method and provide it with `Ibexa\Contracts\Cart\Value\CartCreateStruct` that contains metadata (name, currency, owner): - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 8, 9) =]] -// ... - -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 70, 78) =]] -``` - -## Update cart metadata - -You can update cart metadata after the cart is created. -You could do it to support a scenario when, for example, the user changes a currency and the cart should recalculate all item prices to a new currency. -To update cart metadata, use the `CartServiceInterface::updateCartMetadata` method: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 9, 10) =]] -// ... - -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 82, 89) =]] -``` - -You can also use this method to change cart ownership: - -``` php -use Ibexa\Contracts\Cart\Value\CartMetadataUpdateStruct; - -// ... - -/** - * @var \Ibexa\Contracts\Core\Repository\UserService $userService - * @var \Ibexa\Contracts\Cart\CartServiceInterface $cartService - * @var \Ibexa\Contracts\Cart\Value\CartInterface $cart - */ -$updateMetadataStruct = new CartMetadataUpdateStruct(); -$updateMetadataStruct->setOwner($userService->loadUserByLogin('user')); - -$cart = $cartService->updateCartMetadata($cart, $updateMetadataStruct); -``` - -## Delete cart - -To delete a cart permanently, use the `CartServiceInterface::deleteCart` method and pass the `CartInterface` object: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 124, 125) =]] -``` - -## Empty cart - -To remove all products from the cart in a single operation, use the `CartServiceInterface::emptyCart` method: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 91, 92) =]] -``` - -## Check cart validity - -Items in cart can become invalid, for example, when item price is unavailable in cart currency, or the product is no longer available. -To prevent checking out a cart with invalid items, check cart validity first. -To validate the cart, use the `CartServiceInterface::validateCart` method. -Validation is done with help from the `symfony/validator` component, and the method returns a `Symfony\Component\Validator\ConstraintViolationListInterface` object. - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 94, 95) =]] -``` - -## Add entry to cart - -To add entries (products) to the cart, create an `Ibexa\Contracts\Cart\Value\EntryAddStruct`, where you specify the requested quantity of the product. -Then pass it to the `CartServiceInterface::addEntry` method: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 11, 12) =]] -// ... - -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 99, 106) =]] -``` - -## Remove entry from cart - -To remove an entry from the cart, use the `CartServiceInterface::removeEntry` method. - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 109, 112) =]] -``` - -## Update entry metadata - -Entries have their own metadata, for example, quantity. -To change entry metadata, use the `CartServiceInterface::updateEntry` method and provide it with `Ibexa\Contracts\Cart\Value\EntryUpdateStruct`. - -``` php -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 12, 13) =]] -// ... - -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 63, 64) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 109, 110) =]] -[[= include_file('code_samples/api/commerce/src/Command/CartCommand.php', 114, 122) =]] -``` - -## Adding context data - -Context data is an extra information that you can attach to the cart or cart entries to provide additional details or attributes related to the shopping experience. -It can include any relevant information that you want to associate with a particular cart or cart entry, for example, coupon codes, custom products attributes, or user preferences. - -### Adding context data to cart - -To add context data to a cart, follow this example: - -``` php -use Ibexa\Contracts\Cart\Value\CartCreateStruct; -use Ibexa\Contracts\Core\Collection\ArrayMap; -use Ibexa\Contracts\ProductCatalog\Values\CurrencyInterface; - -/** - * @var \Ibexa\Contracts\Cart\CartServiceInterface $cartService - * @var CurrencyInterface $currency - */ -$createStruct = new CartCreateStruct('My Cart', $currency); -$createStruct->setContext(new ArrayMap([ - 'coupon_code' => 'X1MF7699', -])); - -$cart = $cartService->createCart($createStruct); -``` - -In the above example, you create a cart with the `CartCreateStruct` method, and set the context data with `setContext`. -You also add "X1MF7699" coupon code as context data to the cart. - -### Adding context data to cart entry - -To attach context data to a cart entry, proceed as follows: - -``` php -use Ibexa\Contracts\Cart\Value\EntryAddStruct; -use Ibexa\Contracts\Core\Collection\ArrayMap; -use Ibexa\ProductCatalog\Local\Repository\Values\Product; - -/** - * @var \Ibexa\Contracts\Cart\CartServiceInterface $cartService - * @var \Ibexa\Contracts\Cart\Value\CartInterface $cart - * @var Product $product - */ -$entryAddStruct = new EntryAddStruct($product); -$entryAddStruct->setContext(new ArrayMap([ - 'tshirt_text' => 'EqEqEqEq', -])); - - $cartService->addEntry($cart, $entryAddStruct); -``` - -In the above example, you create a cart entry by using the `EntryAddStruct` method. -The `setContext` method allows you to attach context data to the cart entry. -In this case, you attach a "tshirt_text" attribute to the cart entry, which might represent custom text for a T-shirt. - -## Merge carts - -To combine the contents of multiple shopping carts into a target cart, use the `CartServiceInterface::mergeCarts` method. -This operation is helpful when you want to consolidate items from a reorder cart and a current cart into a single order. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/CartCommand.php', 127, 139, remove_indent=True) =]] -``` diff --git a/docs/commerce/cart/img/quick_order_add_order.png b/docs/commerce/cart/img/quick_order_add_order.png deleted file mode 100644 index f0a297cbadc27319916df0b0a0ce7d6715b033ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23104 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 diff --git a/docs/commerce/cart/quick_order.md b/docs/commerce/cart/quick_order.md deleted file mode 100644 index be5aa30eb3c..00000000000 --- a/docs/commerce/cart/quick_order.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: Allows users to provide or upload a list of products, with their quantities, intended for purchase. -edition: commerce ---- - -# Quick order - -The quick order form allows users to efficiently process orders with multiple items in bulk through the storefront. -Customers don't need to browse the countless store pages, they can fill in a provided form with product code (SKU) and quantity, or upload their own list into the system directly. -Quick order forms can be used by registered and guest users. - -## Quick order flows - -Customers can use one or both of the following methods to specify products and place a quick order. - -### Customer enters individual products - -1\. Customer clicks the **Quick order** link. - -2\. Provides product code and quantity. At this point, no validation is provided. - -![Customer enters individual products](img/quick_order_list.png) - -3\. Customer clicks **Add to cart** to add items to the cart and finish an ordering process. - -4\. In the cart section, the availability of the entered product is checked, and the customer is informed if any of them is unavailable or quantity is insufficient. - -### Customer uploads list of products - -1\. Customer clicks the **Quick order** link. - -2\. Downloads a sample file from **Add your order** section. - -3\. Uses the template to fill in their order with product code and quantity. - -4\. Uploads the filled in quick order file back to the system by drag and drop or file selection. - -5\. The file name appears in the **Add your order** section. At this point, only file validation is provided. Product codes and availability aren't validated. - -![Customer uploads list of products](img/quick_order_add_order.png) - -6\. Customer clicks **Add to cart** to add items to the cart and finish an ordering process. - -7\. In the cart section, the file format and provided data are validated, the availability of the entered product is checked, and the customer is informed if any of them is unavailable or quantity is insufficient. - -## Validation - -Orders from quick order are validated in the cart. -There, the system checks if: - -- provided product code is valid -- provided products are available for purchase -- requested quantities of products are available - -## Layout - -To change the quick order form template, go to [customize storefront layout](customize_storefront_layout.md). - -## Configuration - -You can configure a quick order form in the following ways. - -### Size limit - -To change the size limit for the uploaded order file, add new value under the `ibexa.system..cart` [configuration key](configuration.md#configuration-files): - -```yaml -ibexa: - system: - : - cart: - batch_order: - file_size_limit: 512k -``` - -### Processed records limit - -To change the size limit for the processed records, add new value under the `ibexa.system..cart` [configuration key](configuration.md#configuration-files): - -```yaml -ibexa: - system: - : - cart: - batch_order: - processed_records_limit: 2000 -``` diff --git a/docs/commerce/checkout/checkout.md b/docs/commerce/checkout/checkout.md deleted file mode 100644 index 5759a6c2889..00000000000 --- a/docs/commerce/checkout/checkout.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -description: The checkout component covers providing shipping and billing addresses, and selecting payment and shipping methods. -edition: commerce ---- - -# Checkout - -Checkout is a crucial component of the Commerce offering delivered as part of [[= product_name_com =]]. -In a course of a multi-step process, it collects necessary transaction data, such as billing and shipping addresses, payment and shipping information. - -From the front-end perspective, it's a reusable component that provides access to the workflow and allows buyers to place an order for cart items. - -![Address selection stage](checkout.png "Checkout stages") - -Depending on the model of shopping process that you need to use, the checkout process can range between a straightforward and extremely complicated one. -To allow for this variation, the component is highly configurable and extensible: - -- Like the editorial workflow, it relies on [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html) -- It exposes [PHP API](checkout_api.md) that allows for workflow manipulation -- It exposes Twig functions used for checkout rendering - -In a default implementation, users go through a series of steps. -They first select a billing and shipping address, then select shipping and payment methods, later they review summary, and confirm their choices, to finally receive a simulated order confirmation. - -Until the checkout process is complete, at any point of the process, users can go back to the cart and modify cart information, for example, cart item quantities. -They can also navigate back and forth between checkout steps, with an exception of the "Checkout complete" step, which always ends the process. - -You can modify these steps according to your needs. -For more information, see [Configure checkout](configure_checkout.md). - -## Shipping and billing address assignment logic - -As far as shipping details are concerned, checkout can behave differently, depending on whether the buyer is a corporate account member, a registered customer, or an individual. - -- Corporate account members can see a company's billing address, and several shipping addresses to pick from, as predefined in the company profile. -- Registered customers are able see and modify the addresses that they defined at registration -- Individuals are able to enter both addresses at checkout - -For more information about shipping and billing addresses, see [Configure checkout](configure_checkout.md#configure-shipping-and-billing-address-field-format). - -## Virtual Products checkout - -Virtual product is a special type of a [product](products.md). Virtual products are non-tangible items such as memberships, services, warranties. -They can be sold individually, or as part of a product bundle. - -Virtual products don’t require shipment when they're purchased individually. -While purchasing virtual product, you only have to fill in the billing address and select relevant payment method. - -![`Virtual product purchasing`](virtual_product_purchase.png "Virtual product purchasing") - -## Reorder - -Reorder functions as the variant for the checkout workflow and is accessible solely to logged-in users. -It initiates from the user's order history, where they can click **Reorder** and trigger the flow. -Next, the user is moved to cart where the system validates the order against existing stock. -If everything is available, customer can move to payment and summary. -The system uses information from the past order to pre-fill address, shipping method, and payment details. - -For more information, see [reorder documentation](reorder.md). diff --git a/docs/commerce/checkout/checkout_api.md b/docs/commerce/checkout/checkout_api.md deleted file mode 100644 index cfcdb2655c8..00000000000 --- a/docs/commerce/checkout/checkout_api.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Use PHP API to work with checkouts in Commerce. -edition: commerce ---- - -# Checkout API - -To get checkouts and manage them, use the `Ibexa\Contracts\Checkout\CheckoutServiceInterface` interface. - -With `CheckoutServiceInterface`, you manipulate checkouts that are stored in sessions. -Checkouts are containers for the `Ibexa\Contracts\Cart\Value\CartInterface` object and all the data provided at each step of the [configurable checkout process](configure_checkout.md). - -The checkout process relies on Symfony Workflow, and you can customize each of its steps. -Each checkout step has its own controller that allows adding forms and external API calls that process data and pass them to `CheckoutService`. -Completing a step results in submitting a form and updating the current checkout object. -At this point Symfony Workflow advances, the next controller takes over, and the whole process continues. - -From the developer's perspective, checkouts are referenced with an UUID identifier. - -## Get single checkout by identifier - -To access a single checkout, use the `CheckoutServiceInterface::getCheckout` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Controller/CustomCheckoutController.php', 29, 29, remove_indent=True) =]] -``` - -## Get single checkout for specific cart - -To fetch checkout for a cart that already exists, use the `CheckoutServiceInterface::getCheckoutForCart` method. -You can use it when you want to initiate the checkout process right after products are successfully added to a cart. - -``` php -[[= include_code('code_samples/api/commerce/src/Controller/CustomCheckoutController.php', 23, 26, remove_indent=True) =]] -``` - -## Create checkout - -To create a checkout, use the `CheckoutServiceInterface::createCheckout` method and provide it with a `CheckoutCreateStruct` struct that contains a `CartInterface` object. - -``` php -[[= include_code('code_samples/api/commerce/src/Controller/CustomCheckoutController.php', 32, 37, remove_indent=True) =]] -``` - -## Update checkout - -You can update the collected data after the checkout is created. -The data is stored within the `CheckoutInterface::context` object. -The last update time and status are also stored. - -To update the checkout, use the `CheckoutServiceInterface::updateCheckout` method and provide it with the `CheckoutUpdateStruct` struct that contains data collected at each step of the workflow, and a transition name to identify what step follows. - -All data is placed in session storage. - -``` php -[[= include_code('code_samples/api/commerce/src/Controller/CustomCheckoutController.php', 40, 41, remove_indent=True) =]] -``` - -## Delete checkout - -To delete a checkout from the session, use the `CheckoutServiceInterface::deleteCheckout` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Controller/CustomCheckoutController.php', 44, 44, remove_indent=True) =]] -``` diff --git a/docs/commerce/checkout/configure_checkout.md b/docs/commerce/checkout/configure_checkout.md deleted file mode 100644 index d302f9e55ad..00000000000 --- a/docs/commerce/checkout/configure_checkout.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -description: Configure checkout, modify the default checkout workflow. -edition: commerce ---- - -# Configure checkout - -When you work with your Commerce implementation, you can review and modify the checkout configuration. - -!!! note "Permissions" - - When you modify the workflow configuration, make sure you properly set user [permissions](permission_use_cases.md#commerce) to the checkout component. - -## Configure checkout workflow - -Checkout workflow relies on [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). -Each transition represents a separate checkout step. - -By default, the checkout process is configured to render each step based on a separate set of libraries and templates. -Each checkout step is handled by a controller that you configure in workflow metadata. - -Custom workflow implementations are defined under the `framework.workflows` key, and they must support the `Ibexa\Contracts\Checkout\Value\CheckoutInterface`. -The default fallback workflow is `ibexa_checkout`, which is prepended at bundle level. -The `checkout.workflow` parameter is repository-aware. - -To customize your configuration, place it in a YAML file, under the `framework.workflows.` key, and reference it with `ibexa.repositories..checkout.workflow: your_workflow_name`. -The system can then identify which of your configured workflows handles the checkout process. - -!!! note - - When you modify or create a controller, to ensure that no user data is lost, extend the `Ibexa\Bundle\Checkout\Controller\AbstractStep` controller and call the `advance()` method. - -Each step configuration includes the following settings: - -- `controller` - A mandatory setting pointing to a library that governs the behavior of the process. -The controller contains all the required business logic and submits the whole step, so that a transition can happen. -- `next_step` - An optional name of the next workflow transition. -If not provided, the next workflow-enabled transition is processed. -- `label` - An optional name of the step that can be displayed in the Twig helper. -- `translation_domain` - A optional setting that defines the domain for a site with translated content. By default it's set to `checkout`. - -### Checkout customization example - -For more information about the results you can achieve by customizing checkout, see [Customize checkout](customize_checkout.md). - -## Configure shipping and payment methods - -You can define the shipping and payment methods in the user interface. -For more information, see [Work with shipping methods]([[= user_doc =]]/commerce/shipping_management/work_with_shipping_methods/) and [Work with payment methods]([[= user_doc =]]/commerce/payment/work_with_payment_methods/). - -## Configure shipping and billing address field format - -In your implementation, you may need to create custom format configurations for the shipping or billing address fields, for example, to use different address formats based on the buyer's geographical location. - -Field formats for the billing and shipping addresses comply with the [FieldType Address](addressfield.md#formats) specification and can be controlled with the `billing_address_format` and `shipping_address_format` flags. -They fall back to `billing` and `shipping` predefined formats by default: - -- `billing` is part of the `ibexa/corporate-accounts` repository -- `shipping` is part of the `ibexa/checkout` bundle's default configuration - -To modify address formats you create custom ones. diff --git a/docs/commerce/checkout/customize_checkout.md b/docs/commerce/checkout/customize_checkout.md deleted file mode 100644 index d6bdbead28e..00000000000 --- a/docs/commerce/checkout/customize_checkout.md +++ /dev/null @@ -1,312 +0,0 @@ ---- -description: Customize the existing checkout functionality to support additional functions. -edition: commerce ---- - -# Customize checkout - -When you work with your Commerce implementation, you can review and modify the checkout configuration. - -Checkout is an essential component of the Commerce offering. -It collects data that is necessary to create an order, including: - -- payment method -- shipping method -- billing / delivery address - -It could also collect any other information that you find necessary. - -Depending on your needs, the checkout process can be either complex or straightforward. -For example, if the website is selling airline tickets, you may need several [additional steps](#add-checkout-step) with passengers defining their special needs. -On the other side of the spectrum would be a store that sells books with personal pickup, where [one page checkout](#create-a-one-page-checkout) would be enough. - -Several factors make checkout particularly flexible and customizable: - -- it's based on Symfony workflow -- it exposes a variety of APIs -- it exposes Twig functions that help you render the steps - -The most important contract exposed by the package is the `CheckoutServiceInterface` interface. -It exposes a number of methods that you can call, for example, to load checkouts based on checkout identifier or for a specific cart. -Other methods help you create, update, or delete checkouts. - -For more information, see [Checkout API](checkout_api.md). - -## Add checkout step - -By default, [[= product_name =]] comes with a multi-step checkout process, which you can expand by adding steps. -For example, if you were creating a project for selling theater tickets, you could add a step that allows users to select their seats. - -### Define workflow - -You can create workflow definitions under the `framework.workflows` [configuration key](configuration.md#configuration-files). -Each workflow definition consists of a series of steps and a series of transitions between the steps. - -To create a new workflow, for example, `seat_selection_checkout`, use the default workflow that comes with the storefront module as a basis, and add a `seat_selected` step. - -``` yaml hl_lines="3 15" -[[= include_file('code_samples/front/shop/checkout/config/packages/checkout.yaml', 17, 19) =]] [[= include_file('code_samples/front/shop/checkout/config/packages/checkout.yaml', 38, 54) =]] -``` - -Then, add a list of transitions. -When defining a new transition, within its metadata, map the transition to its controller, and set other necessary details, such as the next step and label. - -``` yaml hl_lines="2 12" -[[= include_file('code_samples/front/shop/checkout/config/packages/checkout.yaml', 55, 68) =]] -``` - -### Create controller - -At this point you must add a controller that supports the newly added step. -In this case, you want users to select seats in the audience. - -In the `src/Controller/Checkout/Step` folder, create a file that resembles the following example. - -The controller contains a Symfony form that collects user selections. -It can reuse fields and functions that come from the checkout component, for example, after you check whether the form is valid, use the `AbstractStepController::advance` method to go to the next step of the process. - -``` php hl_lines="23 24" -[[= include_code('code_samples/front/shop/checkout/src/Controller/Checkout/Step/SelectSeatStepController.php') =]] -``` - -#### Create a form - -In the `src/Form/Type` folder, create a corresponding form: - -``` php -[[= include_code('code_samples/front/shop/checkout/src/Form/Type/SelectSeatType.php') =]] -``` - -### Create Twig template - -You also need a Twig template to render the Symfony form. -In `templates/themes/storefront/checkout/step`, create a layout that uses JavaScript to translate clicking into a grid to a change in value: - -```html+twig -[[= include_file('code_samples/front/shop/checkout/templates/themes/storefront/checkout/step/select_seat.html.twig') =]] -``` - -In `assets/styles/checkout.css`, add styles required to properly display your template. - -```css -[[= include_file('code_samples/front/shop/checkout/assets/styles/checkout.css', 25, 63) =]] -``` - -!!! note - - Remember to [add the new asset file to your Webpack configuration](assets.md#configure-assets). - -### Select supported workflow - -Next, you must inform the application that the configured workflow is used in your repository. - -You do it in repository configuration, under the `ibexa.repositories..checkout.workflow` [configuration key](configuration.md#configuration-files): - -``` yaml -ibexa: - repositories: - default: - checkout: - workflow: seat_selection_checkout -``` - -### Restart application - -you're now ready to see the results of your work. -Shut down the application, clear browser cache, and restart the application. -You should be able to see a different checkout applied after you have added products to a cart. - -![Additional checkout step](img/additional_checkout_step.png "Additional checkout step") - -## Hide checkout step - -By default, [[= product_name =]] comes with a multi-step checkout process, which you can scale down by hiding steps. -To do it, modify workflow under the `framework.workflows` [configuration key](configuration.md#configuration-files). - -This example shows how to hide a 'Billing & shipping address' step. -It can be used for logged-in users with billing data stored in their accounts. - -```yaml hl_lines="14" -framework: - workflows: - ibexa_checkout: - transitions: - select_address: - metadata: - next_step: select_shipping - controller: Ibexa\Bundle\Checkout\Controller\CheckoutStep\AddressStepController::renderStepView - label: 'Billing & shipping address' - translation_domain: checkout - physical_products_step: true - hidden: true -``` - -## Create a one page checkout - -Another way of customizing the process would be to implement a one page checkout. -Such solution could work for certain industries, where simplicity is key. -It's basic advantage is simplified navigation with less clicks to complete the transaction. - -### Define workflow - -To create a one page checkout, define a workflow that has two steps, `initialized` and `completed`, and one transition, from `initialized` or `completed` to `completed`. - -``` yaml hl_lines="3 18 19" -[[= include_file('code_samples/front/shop/checkout/config/packages/checkout.yaml', 17, 38) =]] -``` - -### Create controller - -Add a regular Symfony controller in project code, which reuses classes provided by the application. -Within the controller, create a form that contains all the necessary fields, such as the shipping and billing addresses, together with shipping and billing methods. - -In the `src/Controller/Checkout` folder, create a file that resembles the following example: - -``` php -[[= include_code('code_samples/front/shop/checkout/src/Controller/Checkout/OnePageCheckout.php') =]] -``` - -The controller can reuse fields and functions that come from the checkout component, for example, after you check whether the form is valid, use the `AbstractStepController::advance` method to go to the next step of the process. - -#### Create a form - -In the `src/Form/Type` folder, create a corresponding form: - -``` php -[[= include_code('code_samples/front/shop/checkout/src/Form/Type/OnePageCheckoutType.php') =]] -``` - -### Create Twig template - -Create a Twig template to render the Symfony form. -In `templates/themes/storefront/checkout`, create a layout that iterates through all the fields and renders them. - -```html+twig -[[= include_file('code_samples/front/shop/checkout/templates/themes/storefront/checkout/checkout.html.twig') =]] -``` - -In `assets/styles/checkout.css`, add styles required to properly display your template. - -!!! note - - Remember to [add the new asset file to your Webpack configuration](assets.md#configure-assets). - -### Select supported workflow - -Then you have to map the single-step workflow to the repository, by replacing the default `ibexa_checkout` reference with one of `one_page_checkout`: - -``` yaml -[[= include_file('code_samples/front/shop/checkout/config/packages/checkout.yaml', 0, 5) =]] -``` - -### Restart application - -To see the results of your work, shut down the application, clear browser cache, and restart the application. -You should be able to see a one page checkout applied after you add products to a cart. - -![One page checkout](img/single_page_checkout.png "One page checkout") - -## Create custom strategy - -Create a PHP definition of the new strategy that allows for workflow manipulation. -In this example, custom checkout workflow applies when specific currency code ('EUR') is used in the cart. - -``` php -[[= include_code('code_samples/workflow/strategy/NewWorkflow.php', 1, 25, remove_indent=True) =]] -``` - -### Add conditional step - -Defining strategy allows to add conditional step for workflow if needed. -If you add conditional step, the checkout process uses provided workflow and goes to defined step if the condition described in the strategy is met. -By default conditional step is set as null. - -To use conditional step you need to pass second argument to constructor in the strategy definition: - -``` php hl_lines="18" -[[= include_code('code_samples/workflow/strategy/NewWorkflowConditionalStep.php', 1, 25, remove_indent=True) =]] -``` - -### Register strategy - -Now, register the strategy as a service: - -``` yaml -[[= include_file('code_samples/workflow/services/workflow.yaml', 0, 5) =]] -``` - -### Override default workflow - -Next, you must inform the application that the configured workflow is used in your repository. - -!!! note - - The configuration allows to override the default workflow, but it's not mandatory. Checkout supports multiple workflows. - -You do it in repository configuration, under the `ibexa.repositories..checkout.workflow` [configuration key](configuration.md#configuration-files): - -``` yaml -ibexa: - repositories: - : - checkout: - workflow: new_workflow -``` - -## Manage multiple workflows - -When you have multiple checkout workflows, you can specify which one to use by passing an argument with the name of the selected checkout workflow to a button or link that triggers the checkout process. - -```twig -{% set checkout_path = path('ibexa.checkout.init', { - cartIdentifier: cart_identifier, - checkoutName: 'selected_checkout_name' # Reference your workflow name here -}) %} - -``` - -With this setup, you can specify which workflow to use by clicking the button or link that starts the checkout. -The argument passed determines which workflow is used, providing flexibility in workflow selection. - -## Define custom Address field type formats - -To create custom Address field type formats to be used in checkout, make the following changes in the project configuration files. - -First, define custom format configuration keys for `billing_address_format` and `shipping_address_format`: - -``` yaml -ibexa: - repositories: - : - checkout: - #"billing" by default - billing_address_format: - #"shipping" by default - shipping_address_format: - #used in registration, uses given shipping/billing addresses to pre-populate address forms in select_address checkout step, "customer" by default - customer_content_type: -``` - -Then, define custom address formats, which, for example, don't include the `locality` field: - -``` yaml -ibexa_field_type_address: - formats: - : - country: - default: - - region - - street - - postal_code - - email - - phone_number - - : - country: - default: - - region - - street - - postal_code - - email - - phone_number -``` diff --git a/docs/commerce/checkout/img/additional_checkout_step.png b/docs/commerce/checkout/img/additional_checkout_step.png deleted file mode 100644 index bc8d10c2ac3cafe1905793229dbc6c1a943dae92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102722 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

O4mhwNOdk#7C& zd-GNbgWPnPbefo0pe~v)7&W1#71)5PYa1vHRZWVK30C!|)7PX?Od)ibY-rwUtIx-T zV^x~jaJmSk*B~~=dV)!G;3YBs64Esk$$P{5TRp3xrnNFnKAIRGk@wr;B2L>wY&t&% z>44$~f&Mpt-}M6V5Q$O0z0m6xtLr2c9)oq`Nc|6Z4LOn#+CMGPD8M3_j-#=?J^Zm-~XK?YgGnua5Tb~C9G3QJbAc1 zOCn(heJ-;98)Zz^Is=p2>&tSO$?Nu?eGkM$n?PseL=DDbH` zV$XLMq@hYoMNJ~-4K@S#JcISPq+#;`ltNl51X1l)y!8^VGc5@5v!W*x1vPi=`!NA5T z6z|z*CGp1Zch?-BA^P##iPDCq2~h!-|cUtw!mG0)_948Grx`yqzQ1 z?Y6*DlfQ4N7ahj?7G2nyh{M5$$G*}OT_9}i)z5_a*gZ`Bv}@ePr>97_&hXE7=&w-J zXQ>*vHptR6A}nNUTNGzYoGo!*P?{NBu9aGEJV@7xWZH+Kkj4RNoyF#+z;|6Tf4afH zU!&Z{m_Cs1$v+O#l<7qyxcfa{hHSU$`TRn_PtmcLp*c8QTa_N1inpo2)^DFP0z zIh4Nh_v}8~4iF7^X2`L>q_L{p0<68kia_?(^$={)xX7BLonE=lkETRV!OZx7eWiw_ zTAX%2&KN|vc!V92g4j~d__llmV`iB(YMNl-k&QNSBP`YQIri~Z>%dg4I5>4}XBKx9B%;O#ZAPd7yn2@^;;^8Ma3KxYnYTOQ4M8?0*PnHLkFQ=@8sZ7xgeA0~Cx{yv!ThUg5W7L|9C08+Hum0Vj91>PF z7Qov&r$nq~Ry)bk8aVKAe0xjFWLs=)S>y*rmDA^)tmOipLP|9A4HR?%I_5zcC>LI} zvT?QV-q^=%1oO$w1?91eQA&-K$#T5)=^EyGYORJRf|LQl?TR{GW#*QD4BM7@?ARL3 z{VGbmXou(bjdE2qNo_9|F6UeIeN#Y9qfvLZI?C;piH;`Lx=I6v)@xz(3s9|%1z-Nu zm*YHL_^u*5pi!XDa&4X4HND3)h!X85rTp{k#A>0Wx%64%j&VLJ0-nbV(CU;Sr#ein zU+HP&ye3=)Vv?bq%k9aAaBP0R$i7Vw+TU8%O^FbM!}t;bHL+zPN~6 zcf^#SOBYfj+UfHc2(9;6XU#{~7lk$WCA|ldhQET?VLge}ZqcNFW&V zeti3ND&TE=8(}y^iYBhL11mrza_9r3|t!wb^v!H*E$ z3G(GYDa$D>EfUYE2_68$gc9F;ge*~G?p>{AgT$`SOg#e*<+Y+V=C&e&CWZO2g>EzS zU3R_2>vj*|@g+T3aP_xE{EafZN#qkOkb8=L%8F<0#&M2wxGw2+k|m=UK5i)9!=;d* zQRWJGUqE;0fU2dP%dXCiw5Gd0NDDiF=rum`eK7Zckhu~o3+xz%ntc*adVWa)pR z6`;f70KcR+@(M&}M;5=NyPAovedE0PG%gUhTXYrYdb5M7fadhk6vjyiTS&lT;=0g( zgdfSe@_x>BsoK`yDb{+|WrxJnC^FgCHqdta0#m1F>5ex+jd*-JvE4^VV zcI_L{$q4bHPi`lU0-l!`=Do%G(QhD~CTzsxcJR?E6-#^oB2j{?m8@aY<9xx4Vu-{z z$9=SV-ZpGYzLcojrFQawi^0v@d`1S<)Uuwt`3YsYVj#N~&Q{*DfmLtqp1)zlTPzwD z{a{C7H~V0yqMFl1n0c47@Jo{aDd{%m>mWpdS+g3={Pr!i>*>bUG5pc+gP)3j|E&9+Gt*tE0yG`q&rT=YvDVu2ws}Pi!O=`RjkGktO4ex&*ljf43r|*e%MYskoubBB z41Qo0A{!RH?wpntV`6agD?jlOquz@`xkqoJn9dUvy%IWyo_B&8!JPHCPt#jwxrGbY zkkb7#d?woE9skT|*_l(7Z~*Zm%SgY0u70YJq6>0TGe&8J5?QYOu* z&4Gi<`hGWmXQZ=KT4#*)eSF(%Y4@lVzeyb7ox~-?r!@ARv>j@cnT+Mbs8DqiM zsBJWaFML}dg;Se4!#uly;`94mFj!94V*`*oG9e&R z^A;z;G$a%LZ2}f%yO6ZvsjP~vu3jJZsrv@d?v8R?UM7OzNS9i1RQZ)Zm_K+?$Cl<*)+q9|t#Ji2s#mn|&mcEdXq_+B4IDdZ#S`|%v*%bb z0yNt#E3Qkmq)6$}(HDWii|odUl7Yl}E!c|4FILY*nC)*b3JiF7ENq>RLcYiZ^d5Un zS}Lo5-F{|@2T2`rTW$)NYQrJRh~x*X{o5@Fr&y`wb-Vh%*n6v}xUzL^8213dT>=Dm zcMDFi5L|-?2o&xv!6i6_1xTS z*P5@dHRtop5FW>GNP3NNJnw}Ea469~s+6naNc0KVr*B%E;oF93ik_l)^n*f5cdH8D z!_I`gqqD`Pv{|VTWOs6gG8b1sZPF~_eS^7bj)^_-l-JQ;BSHe75z%9Pqgr-g{fHeq z^@%z1JJ3J-c_Jkthe0D1FtFdjGOA9qU{&bNyoE9PcB-BnR=I~Muec>B74QhB<)-*5< zO+NN8NjA1u8-sYa)Z+M{Ss9XSyv(vP`-ux)8KK=+(_8uR)7s2fR?BTuU)9PjCQZ>w zV~@G69fRsE0PlNB+dFu^r}UtOi36dRl#q=i#4 z;Thc*-f$+t64C%3?>r$u`JDd!tr9yyqy~+J{D7giQBjQG(z~tqMY5RdXOc!$qU@{4 zBva>O`9u+XMoQcryZ40=6Rm*+tCmJYdsml28+G6BH&Vd~xlIu;S(8;?N)82GpJrNc z73*E=J&Rz0C-64KPwFI`FwZI#sj~Q^9#2vrr?=Wn}$Q*~>2$ zFU?zGM?TIiP1lONQ+WKoT}!k)kVGEiMNV}S4Bv!fDedaWavMJ$ZZO|8R?`TSx)=ms zWgpbkyR4o@($P)JU9+o4O{nf94zJjd=GlR6W>zd|si*12ecDp>MTX?fz{6qu6LTM2 z9G-}S8)J%Gn1cZ^6n6qs@l;ZbEQe0+vj7wy;Je)k`W9q5drW_t`-|t#JF}S4(a$CX zKX4-*C*fW&TRE*WQl(R5zRt=>u#KBI-o6jydwYs5W z+N?zc^6K+;@!y4zRJlrisNYsLl^6IT&h~U{1lm3F;*u43Z1(cd)IB63)@_K7-+%h~ zs%6uyi!hXS1+#Wu$FPK{p8YwYhV=HzCSo9B2y@10LY<8Rh@@jtvA4R2S%rn;_}=2IJ}uh+DJ?qa3jLhVOpIX5K9 zqffJsh<+xiN$$-*zH%rz@2CX!rilAt9P&F;b?^y5feYW9BD-fk8-|(&$i;Yu>A0UE z+jw0Ly`H6s#mhVl+yL5M5gUwEWI6Q^D8H*?lWVX3h2=zjTQSm4ynt^2>xYh6?AZBl+>W*&pQ4|7Z`cW7mRq$e72$0| zxh~m+o~djnhMbWn0b#b8sviub^k{SgKy|-lRE4>z z+r(EBg^Li!5@6&Ik!90TSJ5^iP1GgC2>ZSdmx|1J!vfG%tgs(QRI^mVp~V_mh}ob6 z2H(%oMkm|_Lm_K8)+Nj}e6(X&ZQwJNj1Bnu5KjAx12oTUOf>eGxHv|??)n0rNI^>ZC!V_CXUC~Yd+pKNZZ2G> zFs$2WO*6DKK7*amJWyRtz-dDf=<+&rm^w2hFH-0>^YQL6Iw(<%)l~bc)L|n}VINrW zkwJQLoLG{EO2N#cbxU8PP_QSxT|K{qL9@=hxZ9KTs%r(Bz7%Ew@;Oa)Y5~-e+zNV| z91Yvlf;u3bT05iGvC%^Dj$NppJLx2!{f~oLI8b-)RD?-qgPK^c9U6{ZOfe9V6Rp_O z$+(nC!8cvkk;hNhpep4BVJZWdmNqERP(lxr`avI+frnHzrj=7k>&Ne<2|)af*c3^1 zTAQtrZRhca@ioIl6(@GF#7H_U7$rCveL1pIt0-qTcBfkRS+)t1+P-~ST^Oh|5)vprpCbN zlmV7V_Px^80AJma!RFV>spmMu7$l_eob_v6e3zNmmJRG_b?ilqiM#st?3R)}Wx{t- zM9**oU8>i1z^>H*kxuo`&tiSp21gSaUwbyymZdFFc6}5i(#@#AI|G4jJhJ-yojnTVayxMN6SAllWAD+t zW$fZ`g`3gl%TJnDZRWANZQQ9Ono$mx8#M45zEdre=Zj*{F}wiqSTd^=b)$0Kw#W=5 z`m@^34oL%{j~mkWltkH0g)3p(L?iCqq^IknCZNuaUs5=>b{2FW1uK{{204uCQAVD& z=oh(@ZM85)>7inI=z3JB>mY(tSB3Yr|KI{pV2kyjiZI~9<+>;bSN`frl15gW!RKH# zqC%6x)pe}xwI6Q0cDio{*9o{1qvTE{3uR)o$kdaJ*qIbsYkVpm+1{c#+YC}uYc`yiA*nFeIrKvMRC$*J*2}oFs z?CldiejTjJuaTW3$7PBwNB8O(<jtYc>-@>B@9_gwp6nQ;7JkG+4+(%|dW{FUq7< zMGd`bbTsLhgBq{|d>!9xeS^vo*Gi^GkTF0FogtQea~z9`+DEKa!lDki${|GP;h7%0 zjz=Osg@0BQPD{!>^gBc?l2JgMT2b5@xv-}W+<|7+e*0Brp<;}rHdTd;9<^;2e1mwU zRrJJgU?4w;*Pv7~NWMKIBRxvYXJPPL!1c{p!}um^{`6|DrJbf2XL5WrQ%bqG2Dp;lv+U$LNbcL94 z)S1xn0chX+xToLK)*UY z(0UOqJ8#Ox;?i+cpi1LW^9R7&N_2*B)#2KA_=vz>~T+n712@k&sS)E3tpyZ+vXP zY%r_W^Lad-_Hd;6k*z$CK>-5d?{Z0!xFTA;t}jF=2)Ry&_0ZO)J+f7bSuQdch#&3g%Z5f3$wB&&VHH*5c-}9^hI~Ipm;uH@Z1Qa z1?$bjJ?hnM?khL+;E7>%Mj_VWh?&oWD1Bh!)9MNU zUszzSCL<~m?2|W&M_N#ad?&a3FyPR|*BMW37GRJ+cnbOWRD=w9wnWHaSh!XxB@a)* zn!y^4%aBSMzN;~`y+k;J&=U08xHlK&K%1F^u;kL2!@dQlPBT-k4KtPs$3m#Wz33&C zNknOgf|qC-1EXVcol~9T-6)6Xd3m2h|3|EY1dn$)X$znk)Db#vx%Ovi0IDh2a0@xM zzEb6HogDBzBnA?&aS6X-ywOpCo1c_$#KpIZCLzA?m@?VJvze;LgJ3$%sNx zF?PmNXeim7B}^)_NqgZSgh|F!yB}-x%B_LV&Rz6QS@s(;TCW-Yo92jk{tVrZyW{Q6 zym=!%B7{RQH!6uuhP6);ytvn=@dG-%`CNmyI)>&Mc`kXUBCN6A_T|_ z$OMTp!IF*i=-x&;gLtIoKJW15SnzAB&Ae$?x)Kf>_peH&)4aG?w}P;YFQ zd{q7(=g*ZzdadjFY0;Kr#4_M^5-YQ=WJAv|pB4y$Vs?{#WI5Qg?DaJPRtSS#g>ROP4I`un9Mz% zB-j}~r>XcZmGX<4DBx%AHkFWvGCpuuZq#{HY|=;-EUvY8PoyCJ<4te!O`;TycKC_fdxJ96`sd9! zD4|hz2A`VG&*7W2Ah(V+IC}VON{u=w=&L&@sCQ*52KCAc$%K+U(YROvL*Azib1!jy z0Si2Lr96NrK3BJd@vT53xgr1fk?S;P+F{I9I|?AxhWG+1jBc&eQn{dg3G?_mJ=2tE zSG3xdFY+FeI5JOa<@T%ld<-+Nft`_N6~DTYnU}e`(X0NKNYNbDWye!=?~}Zb3_F37 zcu%o4f?OYYIg=&u<6wg6{GHOjzapq&6FZcNyLN@}ToIUS>^Jjm={F(r+ESi%K-z{M zB1Vo{%#*)v_In7*un%%+D+fr65{N3`BvZ#EO0sb6pS}c+F;Kg4q*v zqRx`jNH+D9`wV%F(C9$4$y*_~-;ZCq{qD1LCUU!#+b2Z~w$UImH8=RGsO2H|t(Vr0vRWp0 zaMVmh|K8Np2AaK*!E^cdiPUx{bKsvmY&J({Pi|C#XTyhCA~9%UyIk|*``Aa4^>D}K z=K?Vpef#87ABOD8!TDlrEz1TpZRPnvB&sHk;>W-Sw^iuWAZIQLlS9Rg&TfgtnZJQM zD~q|u26UmRlqXq@?=mV(G?G7`u>~LNEYqcpNhz}i$AqAN`s#)pljdO~?CZJqXz-9g z>Uhg&y)eKhprGU&BLCw{s{pw6X7yb4{EJG~G*yD5$xgsEpoPWb+}OV6@s#tff3B0@ zHbJCatlg@$@lGUILG7w{{E`_VcZe8WNNsB21UXxi!^ z((Czhhd6q#GYCIRQrsN@m?1cew>q;UXBiQTwI&8C@7|WfsvOO}J2WP@Uss}dn15{k z*yA51{*nvK!D(%bVjIwq>FP7cE%mvvjhn6Mm6EMNm?7^knd2Di>2)hEYW!58F@7#_ z2YEx~2-;(La!Y!gJ*9^t+!JQgCQX}*b)Hbd`}UxClJWsD-j1l4Nk( z(Ytxi9d--GlK|uzRD6289LAxTumqP_a z$|3S5=x0&V)2Wk$8Hi$M)UfQ%xj6mnV$>4=3sizUB{o~U#+{1WcU)lejEBo%cYwV| za$JN9Np5BO?Ce5WlXN%~m&4pFU#e&C=Fm5~`6OvXmO@Ir1ELh%D#8Jtc75o-bPZ@9 zO$?u-6~rtDbS5%2nco~HWCwBM(2>VykxZZ5p07@yG)j)1ug^@|1>hxt`)~TTZA@C# zB~EA;1vn@b#qwRE-k29`?6paQr+mrh3vTm8YvLf|&37{l#^&QAd-7om(rRS&R z`IuM~`nnT+d$z@b71#&sp7GdT2qaH4N|IKB8W%zYOu!=TNlWZy-mN00QRfRIMk|uj zmlvA>senOh4Yk%rKi?qrafeMeRL%Ps*wpa8N9(LKQax}+dglq3Qht;H?vD!8456ty zyphi7C)Jf~6Au`*gjcv(cN)z<-Y9M4+Nj+Q2sm5=^6XDtx9P4l3Tm>WNTNR&O+?dfNF7g5K{>X8@+tFb%Pf&84Xr-uN@7`->9#WSVfI9XOv{k5DXUM zCk!WHH&th8pInmH-LmLNZI5V{i|N`(R}&KR&nAIxD_;e!&yt;;2&rexXcD`xszvEv zQ)Q^h))n&%`eRK?eb+K=w>FUKRGT_o(Cqwj?9EWcarVU+1xPy6^mSl{nBUUCABXrA z#!n`sJ5A3yn_<;2lXNm0+0uh*ZVC8^`nD!o)hQ=?PtR?fumqrs zJaBLW59SC}L*CfN$$n8E`m#IL_LtTamF1FKh)dIoe@F+y8q;GAuy zh4X{cg{A7V_5CaFsSG|0YX{D-n0G?&9gV7s4a;*fP7TUO=Az*LW229IKCuQ;tQ4im zwx>m{*KL$HN#1*<>3H3cv7ypyWnv8K>15ioasI(k_a_ELhVwV>N^PC!<=?O*@T=hL zaB2eS8Gl2d6lVM$Vsedr{x?WVg&G{UGQ*Uks`ht*{~96?Q6T&q+6Asq_(B`O%TlJl z3;aFw78Cdp6Y;;FexCpisP>F0nnzh5e({&>Aj9Q5lOg_ zN+ejDd;dJq73HV{C+0I%)~grm0A(UyJDRKW`Al^xy8@RV#}b|9lD7GW5;w^;Ll=^W z*U~@l-}q_vOjizlZ545_qz8#ir>ReEiW+)amRL4V-^_q#cl-<-s7msSBv=I;e5Z~P z9-Wqv?;D6EyQGeD$En*H~!R{2SE-E%K*B94>U0+%T_P<+@A6Y3#x!JRG8g9 z@6_esyw&Nn9&QnF*eio7U~X+H2Fe$&RA-C!ZN1D-u&dqaoCOOn!`%Y^XC3Jj_`(~a6Ii3?qxsiHGQ~q>qKzs9!VzT#X zVpm5dy>>dXdn|?oZp^de-kt}QUceRJr-cs#*Ixz}xr47I;vM+{HHTq%f}kvTgC*eT zR>h@ZWH87*CcyNe(MLnil+0oCVEGb*6sqzN7I(%_4=nhAb(k z@yWS5s~b@LNQz58Kr?L1ol9r&9^sI<|Lfz+AxT z%32L{vm9DJv!^xnDN*QO*3c^huF1OAs89$NSq7n(sv)!KPr$&(nR9C){gN@G(lE#z9ADJ9By#`5ycI_0NQ_tmmUN{lTtSP zJTlj_d4IlwzG!XsaHy|Yn^$es_`-m>p?H#Y0USU;!c#$3E1jAXYz2Q%)0UGa(w$_dv7f@sEjd=tQMYxQ|co9$&O9zw=x z`oFX_iU17iC5CE6Xz{=^U|$i~roYqx7gzM%z(vrpe))!=`EpkOF?C$Hsg)n-`U?ay z?%;XJQ|?J|tFMoqG~oDhWEUWTr@3~1)#&31vR(vG00PR-1E3 z`F47u0Mvx9iqX`lIWxQw&^&N?FTuf8JbglOHz%Oc>68D?MCi6}+$?{8%GD3#M*-dR z$pJv8_xo;+B!1oOTekZJXioP?)WByjZJ%lxa3vstmjs!cm+rhiX>>Hv&@AwPZi;uz z6*LAF9IH}@;a&TifiLc}J%S24ewc37ibxXljzf>~66cx|gO0aVioYa2*WfNYKjV|| z(vX)1CDmvgTw>^P5d2(*dy18VM6T;)^!}MA1xTz)`Y!$9G*GHlASVEDUb^vs9;g4o zRg;}7bM0=%;Xdc$8nQLB2mUfW!QJVd1J4DTQ~IP{wT)+ek|vMVp4-PJ1r~%vqC9ZT1S}Yj}ESd}uH01LTM#-K_S& zD5CqW(XpAGrE*Gw&qT+VH3s%l^~=2VT}b2$97N_uX>XlK%=3W_u+qW2EVLRwSu?>y2G@OOoZQa8Pk z<$ritphMAtH?0|1aT1Y#w9JTqw8NKi@UHr{&$#994fp?D^uNsE|Bs4b(YSP`%YXfv z6_u5z=ds62y_IW9^e~L&Pu>4dI-lr$n(UNs8G`l+*rKCnVy#EEaJ6f$?Xa`)b$f$h z=H@kvL7CHQJuNN#ps$=(rv2w`Maoag)IANQ|MP`xg6HY`ZLiGltRJ469&Q7sc2iFi zze3Q;fsu;x2U@&Kol8z5xD7AGe=L6Eb6lFLq^@4|NoU;QKENs*^d+NAmv+&eBC$pO zbiy0R=4Z1_PJwsch7YQDZQ#6R{Cs|*)}F(+N~&JY?^P|rUyaSb zcLFA5=B)6~I1Mi%<<<>UGOLPF4KEZFnAt!QWW&>Kh&WuFgm{QK8_n%y%D$T$qRNjN z(MeGP6Kbt$791OXBp%oZ)z>VTm24+`D3ZDWDJUp3S%MYW**W>yUQ`)61J7*of3bvPcAbTof0Brq8mmh||TVT2hsyr)obc7(Qktp6)8kNAjjQ_b58f zR%U;FJHwZ08>JfjpTQ%u@=PW>e|Tom*%m)3oIToPwJg$b?uvXNcRX$GQ*Fn|Q)?KF zZ8&{F@ck#lYh3bToEHuZ)WHJPjMU&(?0yn!An})QVOYhow#QCV1{J7$(;!U1TVA*@ z1>%|@XqMR1Vk;2dqf&$mCaADQaQM#FAYQ;$E38L4AE9CUDAqLGDbYMkBBSD%=qjY% zkg6VjjFff%t2Zgg(3F|Qrm?+_cXz;lN>&*2NzgO{s!*V|tk$S1KU%fXTtqA}ap6J( zWd4_V$8_gIdGNb~xhlNj31EwRc-YUfm$^Ws+1A(Wj=8Uw$ud<*iJ95ls_+$!^aqud zq@~(6XFn=n!_lEtUmaG&dM$tBS7QQlP$_CKh{fLAPK|IcmFk00j zv%}fPM;tD|PjD8uz6J$1bv^7wBDLN9Lb_XmU^xvllQX>+_(9+Ht?#qQ@MG{zVb`qF z7>k~?@3hmNAB!7?alKHngs1(7*VXmgFD~dHP4;L|8Z2{mgQYCy^xTXS$Gpqp?(OZO zY8jhKCi|stQQy&SzaMTFDoFk0RrYSAj-BK&L3m<+#3ksDmUC`v;zDL|C2BBy>%qH( z+_(Rm83@E)rD99VC3MF?;oV1KkggTkWFOKHrN6-1Guedz`_W>HSD4}=UOHS60DET? zYU&yAyb67lyY>ru_75Y6s}*!Cr#B$BwjFDhK;`#~!o;oe0A1j)s+#lEUioiCjT0fW zdTk0rQUiRQccSz9n{;FFBP6&Hz870I^zGBM;@4mFm&_)-4;FtIb-hy?Sscp~uM$nG zhLdw!*cNvCUF;&FeX3_t%P=_K`B4Q2Nr^@}pJ#A3*^JmaE_`H4YxJW3ae2T$Y~je_ z^iIL5g~o5ovh8kF+TePO+G!w>`a2Ty_Mw)Me&c_1lF_jU+k2{mhq;9au!RyfN`8dl ziR$<_FMM-jrxXolW}QRdpxC@c!QoSQFaIb$&U26ec}@A_0rC~8ZO5mfF5I;Y+1iuM z!{mt)po8q%xEAI>dRBN^CK%5X4;8!wIr87;MwIbcn z7387tnnj+nS9%f4C|rANe!bCEHntef?T|>I`@NKb7Y2_S!mM)02%HKLdp0ZZ zI05Od0n?r+7MW&lbsaaG zaaVEXu-V&-BO7N+*lnEjBflf!_CfG5G>_A~Zc5Da(Bd~Wfv{O{LV9sM9O*xu!DVdw zZN)DR4y1g2by}J9i&+|$?PBUyT&NdTD%4=nq5LM+`~u$~$BKBcsxx;Km{dRAeOY`O8i2FF%#$u&WH=7-x#5 z{XTJKp1j@mE$WS~iA8YlaLY)Yr^DPTn?F%h+7~+TtJQ+Gp~E`E*H`r2(%we>a(cK7 zxYwl};%kRZU}yC8Uqv%s@8bI9k&pV4 z7QI8w0l|GSw(e27hR0*J#@??NOlyc1IRqxkwL1IdMIBL}+?()p8`)2PsAD_>RrfBw z=6OLbu;VF?br_jG5Aq6I2v+Y}ME(}*5+G=|E4l=hLf@wlo_Dd?5i5r z+Sdi%<(k8ZC(!1*QLzs-ANS!a@38B6I6C&wKlpO)YU_jM0;l;+`%7QD&z?uiLk~xH z!PIHZuQc-QA7Rqo3!sN{>4lM+_BYZu1HpB05F`tWw+RyT5q1*Y7uzKwYO9&t;H=d;u&h+=b_7wel5@Xao;%n;2%p+oPo;8sQpwhZVbUIcH*J+U5~q=#`Zh_)zM#&suJ=@P?g|H=z0Qc!hx@SmJuw z{a2Wyl%qU4UK4u_&T*&ykEHQxdOQdfGKJX3+A>1gI%uQQIm$}PH=W{GmNV*Rzh z`iYE0Bz@;uQ7>!oX%=mki{_$^AmhvHWYBmh(k$vYVNvDEBzr?g40?p?SE}nGfH_&; zVl~hF34ThIfu)jYfq%bVWi%C@;e(FBywBi!TBJdDmS)|v%a%dpVGDG!0I#DTgZ-J8 z5uxa@W_SjtyJC&QECG_Iqt35%$DZ+u$?J{>Qv%)kzZOXt0*KS9oNN66v}BYqGQ@JA zbr^8l_S?Ell3e4}&6urS58o_-?GWkY#E~3f*VHWH2z`roax6I_#ORgL;5zYaT0Q-N z9IyLf-g9MrN@v5ZPX7B0M>X-5P>2V21d9;Fv1Igb|Z1lc(8)Y%JxA%4G z?KH|M@kMrjye0fkxp4Kt(DEu@#++Q@qOuZtOGm`Qq9Fnrv$d!pO<+p<#ooXUUX&s7 z5=}o7I}Q{lJpLrnmw4vyxQj#7c5Sgu?TIpc3yM;Bhnm*lIG}In$O1U7k|i6KE3M|w zhj}P+u~^;y6eO#`+Tb{!^kUIK1|WpfotLDin0|2*?((yuzj|LaDzLA?qW`5XHmRJ8 z3u%yc!;hqKjn))-dW#VuE=u<21W%>*gyY0uyAFA=dsj+=CsLp&l3P4@8K1@RI@;m1 z5RYb1Rv#zw;Hv|z#U}=Vm(4};(TnYp^gI;UUHw>Hh0?fUtkIqn1RSmYc>Y14*>*Nn^wDa-Vpy9?n{&h>hSKS)3msnfl+&?Hy>GNohpIxsl zAts9N4~Ac_awg=gu>4wDVFbY*${Sl+zM8CDusOREd|kPq%q6Kl?b(T8T~CY(n@b{O z{ybahH^X+e5)m_XSvNK@L7ndCV$Yy?eZ=-{Wl?V&tZF&Wf;lHREX`LpUTdsqi$R7I z6+&eKE4M1DrWJ&7)ftlVl3DY6nA<6eY5W4qL2-|2Hj1gJ*y|4{ zMI7qC#ssLsaZgS*iUASP{G9%5VnPvN#E97)x?2anD%ON(j))J~@|+o%$Ulo?j!~=! zQIv;yZ0>Qx49m$t3RlpG#fN)S;7<-b~tk{+icXuqqv=17FvnR60#$!PxowtNd+7( zkbFLW|=ACjy{PAP3Yz7(Ky-59Q7dPz(}SQTqA;(DN0>mS~d49LSoGW7#c^Xz<8!az4YIe5z>ropV0^S|m2<+gVg5V4Xr*#;2Ce zxvpy&{wC_r<1qY>71|?67NUi^zBIiuRZB;BVxYkO(5-I-ECDGybZB8Zg1=OuKakFJ zS&2Ng_#nbhXRUZxlea^S(zYMf3PTh(qPyH>_5@QB#VWMbBJtQxtSgm@(vv63 zyeV<*bII1OD7H}GAJAp-CIXacpA^r=k4gEc$0*);cHI-M(i_@+*8QYCfH{++KzYye zXb%l?Je>Qt>i(rj5n&A1j^VFDNjMTZwI8`L(8R9RbF#WA=k_G{3f7(#^YjN-FYV=} zgoaVf{oInz4ppj#4TVESAvpzWVpgl#EVfxnp$U*Q>?|}AjnJ}R#mnDY4f8!9VkSSk z$-mPzQ_(Gkvduq@$QqN~EPQIBI)lDEf92j4CqqEz zXJ%;u?Bc`sczCsrg>A~wlMqtE1m6OC++N*_p3}%i&aU*xEcKG*AikKWa}%98pv42r zSfkL*L870VQtEo-rX76lF429##Tg)B8k9A=`Pb9~Pefh83Lyt>SZ^l7c3}Q{l_eWY zf^)D`1nRj9OCyr!Ess6QEH8>|-pT#KPQNcuk%sy#d_iK^`&0Yzmwg+#}S_LY>e)N{=*O{0@8D!DMGl#%ReLUFL4;b zpNsrobNHQ1O%O1$T)hx+!UVtnm)HFkLOAAx`|n%-nS5Ol=`6YzPe8j|9_p7Yeu(WDt6)CKTeB_8f8pJ z29wmeV%AEoMFN^r%bcNJ=i8X7Nq9Qwfg!DDYqnP3(p zg@=Qf?}vPtP!u59UV=c|DD#+fF5o4zbBV-9ibmYt&69Ziwswq9Q#>>$2;5cTa)lDz z_wvwD2Hri>WkD(BxD!Bh#6I554M!lp!Tb1UvIjCIzDkJ_lhqr{yW#BkqOD@ZlPwad zX!k?>-Q$o%q z5}57zl5(Ev&P~4_L=`>I3zPA+(EDbg76ykfk@uUUcv}vJB(@UW%9>A;fVaN4xhHrB z7FskxKWXQbZ$W39ljz$FHij)tln}AmlBANBs6KMi%<;3+eVp5Ii3kjbEcF`W?c)#j z#Hy4##6#G83=m8BDV`W!i4s8C9rAaeV!(D!LR`2*iKLNGMVG>xq{(3(VX{|qiYM;w z&rHgv2wW6zdcx|W=S9i5SIWD&p=ivL41ilaf)4Lgf#s$NU#fUzl2675ZZ^tE>x zkSO@n-eY(cq0zZ*e|BZ z?F^M5_QxB1l=;!!ZG|{V?R|kw%nMqdnzTaEP!)~+JHI!>wq=NM|o2e6NM|xWZ zqOzh!BA51V>;o$Xw?+NxCw6x6HWSeXlvCHl=FA>B20bnS_6+LTBp@?=6BU_4Cx&)v zJjvD%T8R4k92P9sGMl8HA*Be-FrncjCklA4 z@MSY53N4d9Zxv!OjmVs;S7($~X=Y%QP*AS7_>Pp32?sXkhmF?%Q^G+RLr20U<^YO*qlx`-O1h2pz^s0>h^0gH=5lG z@In^(_)G1^`z&c^f`(2K4F>ZLAHPLlr&@iA^ByRVS=I3ccCFF0S^7rmMk_>rf5Q1fr^ zIu2LbG#yyF0EQ3}KM6SCGiz(S0PhjHogloHXutNxVaz3y+w{mX-kj`SC**YEdUZ~N ze{J%^*?_yUEGl@fIvccOcu@!D8W&^wFpG&tQd zFechBCN|_{9n96pfe+))fb0Wxpk(T71?yo%0LHa2YYS^+H(7*}~w{Gu_8dol-X@^2) zFN(`~(w@Iu4B_zHH)uC~*7Aa#lJiIU25(V7=GYGO4qu@^{?6pH9!M^KcM{vSvJ?O4 ztXrbz)IbW;5vrj8J|oy9*YF1DM-2p{gQydq1COUnM7?RsL`@}($TN3tqI^+&H(vCb z`n7M-!F1cZZKzg4k%0#sl+pnhk?~*N_I+rH3d%SG{Z^3PjZza zR;$5m$%c}bA5__1J3V84Rgz2_oX;RW$C;tC%{CMR9w>Fr%`FXpy6IFqk((|@lI}8V z+#=;Wem1^W;4gJ^C;i-_R}Xu;=pa3+31#Be^Qq=SjY zA)I#Ni0ITk{4~1}EYhEAR1dqu8&slAO7#sMO_lIrQHjkjQUUuj1i8OK<0Xt z2CN6dPRYeeiK=Y&!Lh`g&vx<}oeE$QrfLpz+tTN6d{sY0ek7`dV)@amk(pmY_SF6wttQEBp3 z^?H$74C9ps#?!I|C}T~^z5 z5bjQO%G9CUX1$&Z^~C#!;c{9T9NDEP>PqL3k@8<9_#}=&B#yNECmV8-99{6R*U#WI zr>7Ktms&iKsM^}NS7M(+#u^rU25^3Iy*FP6uDAU`VHo*n+U8Ykh5-?EQ&r!POBMI7 zE?fbPX3?(&3TiOga1rAMKY}$!Qv|w$;N64r9mUSL7%tKyd|mME%7C_J>&0G(qjnx) zVg}5t)v1L_)a`|mB(XpZQ!ME;A5i>oEl1GN20EN>zs5z3b-p!L902c8K8uLrydSu| zq_iHHt;%9o;T_QV!pa40z7;7Da$c--XH|&Z()p}AgaDrDvKY9^OXcw8V>SIu1Y9af zgD+1GuVIs{Q_Lr35@)KkxY;0^i4~^MG7A94I0qykWQR-NG^w{HeAPmcpch7}G|U{ z*8Sy84qohCqcAuOYP-OX*=QUD@QpO8xQOxWV%#npsb(#)Gab%L-_V_EF)k>CS`^P! zroZ}YCfShZ`+8Xn$sO`zwRq>zN&bkaNLt5b!9@$(EvYg`WT)^6iQtd zJ|{#gv{+GJ?%twDv#x?y^4||D@sV7>&q)~Sc_X%t7}^`|keyj7vsYmg)hRtH?sHN& z)pqJzsWumKm5qojc#Lx5ZN=kwMO8ET`Ug@Dk6Fi^)Sj#b=1mKq>;0zZ@uc`$@{C8P z3xh^*aw6)uJ1NHoF^Ar)T3(d}kWczvWYR^`nnv`&|N7TCg+L1z?k_keFnGcZr`tKO zQq3FBj5QstJNo)3|9Jn9cVj8nm!pJ&lkln2=q$c~lkd@pf%#c{G>tEEj{4u;C^3Wu zsAQ5t@18-KJIc`|NVk6EK7PACs9g9idO&@8%8bZOS95wY-mMVVZv3u;VMO$W${$<+ z8su|k@7tR-^3T1F7YK<&LwJL(J1n*Lrnk6u0z*YN7k^>>$bx>EP2n?E|LL}pzq>7a z;kDa z9bQTRXr(CpXSqf~0jggWTmdcVKgkO6`J9glpBY3rP+X_lgg+ldZJmxzNf%G>E9u`n zM#V0j+9uvU;OQlFd{7f zy-@w3+jl$az<5yI{@BEz-Xq(@u%>!6TlDqknf7ib^Z`M&$5iBr)fO=!nFhdgmG|%n zw-mPxyRM$tTy@r_&30T}aY;an+eBF9gajS+$(snsA+4a&I1Uvfx6~uhMDJ5;$(Rux zZr-6OdvRw@q0#e9URV#M6EzmKYnCpNz#6>as-CUc z&9vehr4(n$S;08VkwAN6gVh;zEJCn?{Y)wTlBY7=!%!ASv1Y~${K4|L~3ANih5{g^Mj^m1ZSO9sa?xz0MxH6hj)8j@;vbN)>9_aFO5Sy}M?dt$J~=`((< zm@g6{_zKe#P2=}#o99AyXWB3B_gIO+O+P5uo`0YeeCT-5I58JB0iXb5U`bW66^`g8 zZ^+~0BUQ6b!=iu!>f}5|x%k5_om3no0oU*Mnyw4J&01#BC5v5DX$jv?;0^WYlWex0 zunu-J4lrvRXDZ*K$`LVpV9-FGi8>ZtV-Amid;NfGxA^ieY&2u=CcQ8g)%4e`AMIYb zPN{l~NBwd~JrlLA4<~w?f!xy*mERJIy4rZlX1dU`)={V1q}YODx>3uU?r%Zc4kzHd zB<_Hndp<*7$<=4p@nu`yI4L=S@IpbyB~=9?e|a@>C5Q&u3it!Z&nMOPi?Vy?gK}pB zIUhdF6;y3C?_iJA25zeqvcKMnQwI#A<1`SEKCy66kbNtbKSZVW0-K1c+!NITk;Gs4 zJs%=qwSNuSf@vrW-AV7@@V$Vq`|;oJm?p+Zqo(&HsLegoSXJkH>#3n{tC5^Kk(*(G*hM4r{ zs?lswLlNxjo{*vzf=1}v$7_CirKwGKN*=?xsvE@?>B$edK_5=a6N**i4tZM(*tSnP z)kDk{H3M=4KA<}7zK+j|65o9TRkTDGF2k~BN8?1AYlx_3)TGxNpAHJ;Ao>ebdIplr_)hYpx#=S- z#&mb*_L#0g+vGf~Z|K8D-QMgxbjI^6pkz89cscb{!Y%-3otsEf!vuJip3L^KG}v1W zL5=bIwa<^4^Cd6;4}*M`(u(5X55md$`b99s-&HMy>Aph(JM;V}9amCH!Mtu$pVT56 zx;Zq<+ZsJ~)W;YcU+0Cx#+3tCtB>@9)S~W*MU$UuaDDpHxo(PDGa;L4Qa0vQGWlf|2)+iM z_Pf$;q{piyZ*gZS>w)nLwTwm|=3yN;9yxr>q*y%zm}u#LEH>FU2ZW?^} z*YDC7)ogLWWb8af4Idh$hsak)@Twziu!*JuTEXLKwihj6@qaJ2`d+Sms(sufej2Gl zD99oHq?jJCGT+Ut1fNRzl@PW!%_7r_$TKpj$=jCq3yHC|Tm6_i&UXk6B<@`NG@jX9 zin)O8q|vXMHnaC7y^MB+(_wuOEmGH(T&t`hhD!V}EUw-atA1hk zF-3L4)x2hyy?`>4idWN6_qhr4ulK*8*Y?djmEr|<)BU_dqf{bFxk}J;HtCXWtFhw? zd*{o&T|Rr|6b3mguT*+AL>Iwfb-Cd~<3yTLGG`4-R(ZscWv*qsSkmxts7vP;Q9UQn z)>ijT?7jR{9_V+M-S=3f=Uxll?imfoKiI9lm-O>uX8xEMjUK1ib!GSv?pbR|V!PH9 z{BG*m@DNFWw7w8JPyT*+n4+m=qFl8G9uaLWTxNN1B2>cckTssYoiiNqES>&%q2_~7 zu4!0h2_$c-@@TA7(meC1AYz)EY=9Bc`1kgm~t z#YnAbZ}2Uiev@n5CYG~jUH96yN`0x$IT%$T!|!&-qgC)JK+0P2+tYO>w+X~0(}?T<2`t0Un=&l`w9fy_OJ)slwv0n#y5XB7%J z$9W=uo+B;^_v^zM@F2Sn{wdZZ?bKk$Q2-q@dfAo>kN62Hmfu#q%`ZN z7)}@BWWbcbSWQQ~fsEA2guOl`Q)QR}p%rlS9fFLTnR@OhaXeO{{4vCoD$fsKx37A` z`Dt1DK4Ju6Z1-VV_S#l(G`V1zkA~O-mDzL zoS%&uZ!1tFD{ z;9zt=IebcOGFnXX&7rDUd4NkdXrm<}+OM)mH6y0oa?9#Zd?#N=G&AE$w*XVf>7TWJ zC5=-Oa=f;$#61$@y7NSD!S0*C11qyC{afiz`3pkBr*JJL09P)LL2_E9o@`=@AjzsTB4?JS4V#TA(3xt}Dy1s;LLrLZ-XuYi~S&R;hn$N04cfZ%b4 zb6#|XCg{@VwZ4fGa|{t%{ZI;Cx)J>AC@i^#HhE^brJ0*xG~io!@D{GoZ}Ymu(SU#d zbj_o8RS*3w7ZLj|c{FW3YRz{jQ}oyZ!WI12LO6iBiD)w~J#sYDhZ^z*&HTP}YwGr( z#ufNpVT{7AR1rAS^`1l)EvDyrCn~u-BA?kR8J&1Ec|Vr!RHt{G#lDG1uEE#>+deec9)! z}KDFF}yt=M4FQM{xkRrZhP?JBj7zCIw& zRSr;xWpPyyGu>H1+A0;eERsrVRLG0CmjZ`CeQh+2tKBhJAsV4P{XXV?r}2{Vx|V)7 zqp0tpnkaBZlti8G-3hw%_`?Q1MCrEmBoVUyHQxowpj8BxS#0COme9ET!aCmS$<3-E z!;|$=<@9VF?kxFf;y1)BQ)3W5sDdKg_~shkK2-;^%Z?@ z&ND$C2On>^q{fG?t!Op=$Jlg@(^t9li2u^3SAFbhCjBc4ZhIY!5KJINW`GbQhqPSzp)>5$s*&psVL2@QjO9vz5t^rhIUt&*jU3shy;F=AZOW z;X3P|eTtiP5Prp7urSv13bnXI`uaF_NR>~@LIF>p7mqncE(z^WC z#TgIfrRy6jrCN*7-}*!>Ej&aIZ=@HyJOgTjVf_KFbQ{}ahMo_Thys_Mbl~diz5ggTUgU01bDO=Ynsad9y*&$eZ7e7qM1&c+XTlq=F-&(u|b z!-8v{5eYPX1tRxsZBO_Q@{*iaBLcs;2(9~BsOY*Rf|34XfaTYA!-CBhm6d0c6G2+U z$53Q6*PIL*2hSzM(WqSsZ*#1|;Me)yw9-z@)w|*dxKpXrWXi-zDFoN}NNmT$9L$Ncm>- zS>k_wtf2BWs-)kCqs+sPCe@bHo1ul~ANyTcVX zuQ4_K{A(B7l#3iYQv<W>3yL)rXadfcuvrYotZy zAvgQ|9m-qEB~{kdX5Q$ud%r4vRx6h8%ajdO+rxy|3|oFULiaK#=PC?Yd0DOW@zR}^ zpQLCk6qkJ(?mI#CinflZxt{g-`(T*($SbE*g}R-Y0*&4mH=J$7daT3){aTrD1wA#S zFeom)4+1*Z85M?)qemEKbb`9-l$S|K-}cpKAaa)a-@L>n`4cJ5;4hk4q5VrsX)Q?m zRjS)VVYdnnUee1K%(`(-3+c%~ozR833s82`)-_9P zU+`FwKmNvc4Dt90xh~F${`P_V_O>nE>mDLmZ8}cde(<5=rB(ac_1j>kq4n3%FnhYn z^N8!pbCslu-M$QQcF{G0-jjEBqL_aA{F$g1@mNe=GALub;T_#Ne zGZGu_x_D6OQkX+-=FjV(ovy6o;5*TDAK5`vNdbOiJk6?+HvCe?pSVS^-TH__68uG6 zUEelK(q|$nf!sMHBVXhEkmOu9ZTa8u;~Q<1LJ$t1;5oexEDDNLY4mycv^gk(Ux(5i z*{M_Lw)e;jNhf_3$tR5_ByaRmzT|K;y3g8Ic|%!Yr$jstYri1918EqS9J-Zf2GFTv z({l{~FQ&YZ^s&;n4U3>ETIAFYlcn)6Ig7q&#k~RS=R!gw;Mi((ym=0AE1EY8LLru8^^=xzUAo_#(uZ>1uRyCR8_vi2ix zqyKs1ZOYh?Ir7l{nveu_wDnC~bt%#q-ES(6HbEk;W!_B$Ol(QrzMVf5#PmErOgTpD z+kIXp0XnlyNQJyv)jQ{qZos6IoU2Wnh-q8sP2zDe`4dtX!wU0!Tl@L1fs^f?$C|I){)&)O(_;g}ovZm9f$Co92 z7egg=6LrZnKm)02N&xK42BZeLo4B4NXBdu(8=JMSjMP7az5Spo=J9jStie%#jgmED z6Z3(f(trJ7GSLfT8)-cgxVDCt3M`5m&1#D$@%J*}`FqzLN#K>)dxE}={t&hv6`muv z*0{4EY~q)BB`EXBpMZ1ZK8|?9t9(&$$~F5L_4w;!yX88&1joL+AWdu%Xkz?p{(cZ& zZ1+psPX2nje{ZQva5#;cG^ZiTB9=;xwo$|P(oF77gD9z~{E@Pk{Pokx3)Z5fND7oFfHuF10=yLF!?Ba4llU`3040fYbk z;kZ9O&2;@dM4mp zEN*V%fQ|Q_N40taHRKO=^}>VdRP)~`M3D8}{GPPb;VsjyPridMt2S2{8 ztisM2jZ>&|WM)<0L8v>WWtRFW}~ap=fk{>BFSK7|&PmF*Qzl`6pKxVTE_pMTRJkpc|# zZar59Of!*clsL-n#c0SPZPJf5BBvpQa}+r{d*k^@ZbuFI|5_1t?LGSkX4_lL5&wRT z-y15D!)APUX47C4ZMy$>;xQ|hWrK4)c{0%AnX=lR-IZNV+H!TO-LnXCj;Z;dfaf?h zIz_bW=T&0fehO0bW;lbp&nIme&et6oI^}xr!C#u=#ZWy&l2#PjHsyT(9@4|#yd)NJ zh@k&g()*4uNICs#K5(;V7hBRqONI&RLVw(?Ei&=y1qxjoQv|Jjwzq>A#=Y* z3ZuVYjQ{(uXerX~6|Tx0q5 zVLYA1LGJ(hphg7$Frs`>@%5Ac`fmStmAFAD@U(R^VnOVGn=<}?{q=%2ZI zc&5o~6!Cd6=#fHBY`hj1*?csayLFv8!siO}=LRV_T!kf*AA8HfJ^pUHO75gzJ*Gno zCnzo%b`_@zHlRlj^Y60t{bj@%uRbNa+chz~b!r`X?CfZOG|+Mm1U5VdPGalMr$v8# z|NprszR9hXhyA_=$VgSkTdZ%O%QxbKp23!eEbkg35Dye?c;UEQoa#vw6;96U#DUFV1OprdBxtaGeXh{3A_Q;Yd?jND(cHzduCUmaT@!$s&>E2S)X# z17fQJNF%tA)PLQZI}|~BcKgyZFyIdq$diD|_a2(7SoT!f0}{ja1^!}kQ}pa`OFqCo z1&fDcb10;2G6Bn|sbr)_{&5hs1qd$f^^~z-a&Ku1J%be^G9zUh7-~S1OK+u6$W^@B zE;a=jL5=M|vY9dbz@r(C81&c~H?FnZ8Gk44&oDMQAl=VHH*RC7uH%w=Y1Btjdf?gC zyR{OWe9uaRsyDhks`a}%E`cemuAi;9X|=K+W-C| z95$cnB;3@`ijf z__JRIXxp+PefCTQUwmjo4W z#dc{$bv=rlXPMXpllvmHoj7GBR>s+9L^<@p3U0;c++CbvrwrFh4`4m>z6|Mb2W=1!x0zXXLFRNUmMJktTOli9IAb2F&Q(hxLA- zsb6N~%}qjFlQ;mOnTJC=BFexd6-(l?)+&)~zLJ%Y{0ROEH(x#(DlYVDCF19p`n=6| zx;t#!+SR+oCbJvixh~Of+}aC@63^xgIA7rNU--?%?fPs8VL1rv91$m@)4f{qI@qkK zl+=00*ojKcIh9zcbj@_~lAxiDC9sr!)aqZ)Sw|tIGM$19XC&NoF#^l=87^lpdM?7@ zIK>?6odLYUFC|jRxDUob1oLz`;Yb2i)~v_~q!5s`;IX zBp|iK?d-IE|umxQi5 z$xG>V&;H&fk(+C$$iPlFtEOG+m8@1@^^J$~_0wllxr<}`8?g7afsbfo-$$Uu){Cwg zGyotB@p&ta!r4*;g&V^l{P2)gY4F1zT@*s{Lgw;pi(@lsel_tyLz;txRgI`W{DPNe z0KO;_V$~gt={tVwd?zHbbbav~pz6T@KJNd4bfk8R>K|C|qEL>NSe5%&ZnW3P$dBFA zM$3idRqwb3(EQlR4t!rKWXGIPq&n-zHqzA4B$n3SaGL4l;nRF~?awHQF&zt(EJde> zusyjvye;S`SQkBTJ96LQ?9KI(-$*A$!k3>l1G3L=pLYgixB6K%#qet6Ksu`eFQYvj zh3z>1%lc+ygu|pP;$f_k!ypNCetGqG*@VA9g9mkxrbs{Dsr(MizH2v{t*enDz5X%L z7$dUZiv{>zpkz`1b|{`1|Lg^;NUYmK>nScd%qWw$DWYmR zy$#T9MjfarFs7!0v4 zdON7uq{+}+E(?mL>$TWfsL7|2{w{n+DrB_g=mp-GS0T_#DTC1ViZqEJlX!GLekW(k zD_=uYw~bbzp0E!E`+LhA9O<4{={@6rYB1hcMG z=Y^-L)xD2z$bkZ#fCuBQi?}FC8&TjrA`pSQ^aNeIkemXw!_@Ij-jcSvKG`Q~j0i2$ zt%`$_6c1h&dTfm^J11?50c$)`B#iuw_2*g6tfZ!C1Ls-1Kdok*5QGu?XfAuv%-^Bm zgzioKX-KeAf&>l>%>JO6er%#z#(+ zl5%Q30o=~qkRvi&I(2VQ{)~M&J5-H2KWJZ&&9Eq{+_=$10nD$(qLH1~qcoW(pBTO! zhEL9!n3~$-+u=J#W$e?}*Y^}aEp+KJ!D-U=)=rvQQbEn)dmky9+H+3Lhl$Vk@Bz9~ z_^*%kr5zUm-n+LqSZR2zFV{Lz`<)kO`_w)(zQhwm?|#KI!@JbEEeE1eRD1vMC9Qa& z+0Wp3b{%%4)A5NcNiH(*kt<({ma9-D3GXR=I_ysHo`RFNVfY$XdXTBDa66dQC0k-C z;{Nsu|22*|+3&4Z!6x;RrB=Z^M>-_=-Dge_6o8)Z z#Dg+)bac}STzc4k>`1Zdicc+6&k`HoFk>A(u^xL+qX5DNVpGU?hb-u(zQkBIS!}Vt z5ZxE}ljWit`9!zz>ouYZbjEfgF-(bU3ukCp|lC=y-B ziK=2b>CviR^@XH0!F~?oqQ|F{!^PUY%ryQB*4LPudV!ImaagEM62*z|$u8fO9n&st z*I3g2rh+aSSa1*AD>CllV15LZy`WNKA@60Pc5BzdY0{#N;`&R^q5je`@n(0wf37Me z6unu7f4j_)C0|y~HmY{)%gp-PfO5&04kRzFieB>=wfup=YSZ|h&^ z%;8nYjFrAW{|&yFonMN*Ln7RoHllEMhKf^dJ`|~<#Gv_o9}g*URi#Jq$`n+T$e>H- zSdts6mlZ{j$&7nccDT(dQjldlqcXK6aN@W??X1QvJ(Zvr@^x}O7vKjjP-Lx#hfvJ z=#SE>uqRt7CLcsp0TN=NfgkYJZ=f~)8R;zZfOAh%mjm|3@9VUmr2!w?_--*-QiA5AD>!uLfeS_Tro7A>H7>lY8^jViirP z#!thEe6}P5o}&wH?vTIU-&2@g9MjodP#MM`K?D$)RYn_&QLojXP#S@B$=EKv(rxOU zHftl-D`4{dc7{v6G|KMMFIil77bb;BU%StNDGT^njJq+i^h)38eHF&+MX8B2`Oxk0 zB$VT9s9fLUJbk16H|e&Z=_`rJvMPH`@1vz(S9q%tT>lvm7H}Mw8`P+GJJVI(8veCN zyM5PWTR71z&qJ|4Q$oh6sY$2xDebw-IC6se8)h7SRFz>P5b)!#``CrBT=hHVivv?O z46OEoNRKJEpBJ;j(B_x5Xf9u%U~fwDmmOK1BYM@YKT*UxH~AxLf%9LE+!_Z4DEPL* z8u8PRFjAIVWPi4z48KC^K6?gp>Vhl1?2QnaOI-7t!B|X10~{?!aSAIsqDLG+hxBH{ z=Oa&V|Gh(DZgFflO^7T~o=sQ5#R*C=HF?jjQ_70ieyrFcviO-U=_fQxKI=SVG?0m3?0W6C z!DQ!l(5}_)>qVwqX$LAR*Z=*IqJ*dIE`7y);GUQz5%GNZH>FPN{F+NFc*@$UCq zXQ$G(yAXelpi3`X%ZXSNdzO-5gXQQvm^f3(sQ& zFeoaF95ETD#{Z_y@BOTCTy0Cc+`~wf=5Kr0HYB!fP#Q_*V)97lEY-=w)%|qkE{gPnb%(HHQ(a4aJ1M80=5P`ZtC1&9 z*czR*ra(_~U)XI4q<@_XUd0u`wzp%>VEPjbB3lt{bbD5|rYKV<6LRA|b_6KZR9bR* z-{D(N)uLIYSCeNF;+)-fb3@IKwOvI>m7A5CgF>ZAY^_W{M_w;#y;-eK z9H5Sf{j&62W2j1&SiRMHPau=-c>L~&yWK){5CN@_Z2v~sQw+DAwzc|+#>eS+(#RQd zuJpb7cR|_y`zQlUE=;2NeRd$6%y{?rp?aI`Pffr33$D#Fmw}KS5vAyqcYJzJpc75x zl}F0)jDDZv?Q_Y)dv0+FB*Gl=V5Ade+Lb(orxryPe?~UXI1HZ75B4d2C{W$w_=LUR zd{{d|L)|`be>b9vyvcA8jP5x^1=3YssoVdd7IvuMQQw~}W4*^BAUY252)I=X`#A6w zVYPev0Ny~)MnLRPbMpb)(Mb!fr5mP6@ZrSEnQJM}c{Tp?c60Ww%HGImYD1GM(6QKB zB*9s8zK080sL$W|U&iAhA*O_gyvI)K;WtXDl!@K%w zA*TK(QgIy3G{{CTU!n0JlYXqK=>h6PJ&mczRmS#iL}_a{NoQ>a{nGOPZ8crp=)bgM0UsfP zW@x_(h<)2KmR66QR@?L;@Q>5IhNE8y>)uceps#S~mBvRj!hlc3c)V-yR@3VpByEY? zZpEZ%Cgd{KlB$dhAwTa=Z!QDb2Qwu7h-}3{KG&FbQQ*6wS0^>xe?tV@hOYKswL0f0E+HsF9 zVf*Wx#>Jr>g@CV?Y3Dmxw+)0O4_JZjbEwwLJ7cmNTbi?k zKd(^8m_*#todu-vVNjmvf@=atLbeBQ|1rPSKRI0}uImfwo(++2oPSuwmcTIuK9xS{ zR*&^XfuitSozq;m3+MKG=O~EzNq2;}A5WV|-|}ypDr~O2xf&n%^R2Cb7RkwxUc=7- z1FkBsjOF%&%FdyX%h3>p{*jMOZF5MJlLpj&b3Xr44*J*yYqRj#UfgMmRg9SuS>EoC z!d;NtHJ>~(H$SLv&2Jx&lDHrJy~-H-dGgYh;chhNv9ST4=ebcl5WD>}51TMNxlF&2 zZ%LYU(8XQN!%2W-3A)TTuIG6&ITB*ckW1LON572~igkiAHT10n^5?q6c|)nU|1LgA zc~jBAi&hO=o!h-{jcFxttkNGAV8)W;*c3O?7g5+_Kd`yVS<@`r{-}U6Md?HVDQh%K zoEo)c7xeVDd<_-W?ft+yO<%&(C8Gw%=4}~EY@;(Dz48NOBQ*L-OnOcpcI<13{7iYU zlTBBCMK;z4IAM&>55?xf?Kg{6gmKP%ExFD3XfpwH@S3ahFE$sM9>JExM3wEtPupHvmD!S4*$kP`ApEOhJXlBZ zDSQG;-#5lZq&xwJD!QDiR5fu%-7<|HC|+dVd(ZbRKsryc2xtoSr0=ftEjIA{!;o(r zkpL%UUJc{cQ;U(-osJlw;P=X}SA&*+&mUAD9Pz7OQylxRF`$HHTwg%BR#{M^{Ve;~ z#>H^+14KIVLc;H111OkCwF40Rv06Xoa-Lg5G_`;|Pc;5}Nmr;_ZxrwBq+=(*342t% z{(fR%-ydxbVDjCFInlX)RNuD(5qg!oL00NF(S<1?G7p#4gk+coG9K^1g4@P-S#vPJ zK$Hvh-9Z<=_?YzPmClpXj+NX!FQ7@e?G0+t)ON?r0YY&CQyx5xep)>bFiQ#-6Hv zBh(vRbMh+3F54XPzxB2c*`F`XWBCg9(?2+?wMP#NYnkcE2%vB;Q_{j}`}X&sldykz zfS&%ljiKxQOP{r0-;%|P^_AV*aINVj>y2XY$GV4gO2Zl}^Jkv!@Q&J+RGeb0`U1tu z-{bJV)Q=q0SkRWnEc&=&IZ>fVH=AmP_R)#J2bHTos&E?7`7}y8*zC}@n6*`s|;SCs6_{Vnc3@k;}9nAe3PtwOX<9SR? zQVOjzTnK3^ckCt`ce4ErV8qWa2Bprp1Te;28+r>O()lRZO+K1PnrZ!3Iphb`D|Ru-AIBvd@M1;aj#cf?l%h>fY?UTCX?A8C1qt5^ z>gOS~>)Dgc=2Eq9TO6)TUYxGr`=|tJ1AR&a>ez?bdB-a74D4-0b}HLTYwVR+G}6L_ zH2QRe=I;tnNrt}#b$HvkM0J4f*gn0Ha>S+g zx`F7++A*k0uc%UarSsCe5lzeM@d-fa(!k!tr`Zw%CD2sn!e3_^XYTb^+eFhogi|YN z9&OKtTQ#2<9GwhkXmg3|u#W}2p!eKe@tVgTYf_=$;0%9R2 zsk;oY>CwbUQ_AKm;X-keM3YdOvXj)UY6b9?G&}HhsczE6fv~IxNL35w>oLz9+lJlJ z>bbYUr`6N2i47CS$>#?U?ZbXthkgW+b?k^xdjC!+~B|hR#jN7ZyqS!ec zaKL)lvr%;cd#Ni0f!!v{N}1DX4|~U|a(%Ycvc6)YA<9AzzmNf$*02g0}GjR@10a4XmYs zaJCV#lCIbZbpUWj%Nww<tKyBytv%iw4+PL;DiJ zN-^jh7ef^iD@Uf;qBV*=V6Wj1yFc|sR2*o}+L zjf2Wo05UoCtp0!*ZM~%DP=A*rMN3Y*_^E69-c$O6NJ0OOz4$f=cH5E)sw((FFemt!qUyi^AMI&>wip41@R7&A?S*AG>HB*g!ozr@qvHwu{E zBIC3c=s7>vJ$&zKPOA#B9ac=Juraj?bF@JPkBPh0X%u1(!KMJ%cI`sLuutCL-_rBgMyeM>ut+ZEfb?zkxJuE)( zB1#VyFcr@%a$V0?Z|R1y>0*NL6j;xj6bc&MO&Y}nA$azb0w?>M z)fs|=@FipD)D-pzBGBosFx@n!GEUlJ??~+3XDdeXr{F<;TbJS|?}PGsCB4hoHVSZ| zyB+-LKizUj#$JBo7z=HtggtN{Uzq2nm9&n>Gv|LmQ_I3$IsQ);z#N^aEu3V9CU{QS z+1{T~m9%kp!?TYyKh!Tp_D>y((Wfz9TWx2X4u~6)zAo}Pn5!V^m@vy_Gq1)QXyzgI zWp^A+Z^Xf$_AiO#p;aHuK~UsHE6qlIJ_G!oRUNz7N-^DecR+0z98!#bUu`yY(DT=! zj_0RCj*}HtRiRY7@0*1t4SVCox8GrZo?y=O6mlq?0RIL%q&saJ6^RNAd_~ucp;`RI zcX`cAER1JM(0x&ClWCw-=Tsi+V>9|gea!8kJ1X7$+0&mA%^v%ijL{Y$p27nwZCkHh zO(R-2qZ=bOT83DJ>l`b$*iI{qnzdkei%}^|C@Ory|9hLp>DCwgYLTw{xlRg^hlxHM z!P&GSOw zQy+eTKX38hul_n6ybrf0fy%J(i~75>`ix+{yi@+Gs!p#!Qjlh9QP-cYW>uNrM_j@x z)OS~V%XHg|Jj3`QV3Idenv@o%jlBmvR|)*1>5{qz_4Y4DubgA0ORu!XqV7(C>!Es5 zkwT7(KPB);PfrXH>tR#vT{sYz@t?+imns<rI{!<6SR|IAm=sZqZ_>Vz``_`@ROUeRMEWkRY^ZfX&nqMX;i3+$gS$7Y*`Hoq#Pn_YtAW{&Nuc_cZ=Yxz{b&n})f8XqDc5IgYBL`Fd>^kC``a(C1f421cg5-1Na8PQ0CuekVKC(LYLQ;Zbn4-5xO zTbJh39)qaQdq}46od-p|p*{z+w)k2@Rtt^t*nq&X>>^oCkk%`Gl%aqdHMariLP&;9;|-%KWx znY{1h&E9LT@~mgA<#=awEiP##uB-Qfx7PlB%tLSus+N4$Yp(&9%+##=a8?*ytO>JR zofL%RXGS+aefOo1=nR$d`v#5n@eTs-b&u80%oO3h8l9BG(&R^q%!YcX$avjI2|S{O zE1}yLe74cTHjTJi_EhOR7YM?pV(h1K$Gp41%kqZP<7Ic!NeXGBfKq1!p%;2J?VHf* z;#I@r`vUIZVNLf_xA*HjDPJ27t|)N&(OWCb$-(Rz>Ao&X<_YddE&m0%?o5jReAafR z*P*-jE>kKoB09IyCk($0__3q>drOjncLinQ8O&OmeAy zrfrW|2Q3rjlb*QlGzp|b9b3gd3UMrX)kBc;_Wk2>ypWEb@m6dCu?{UNz$=^PM6k^R zyTQ5aNXtD)9OoFa@)Mgm4AzZFc0qkX5S%Zj9@As)IJl;GO!DQv9K7eLyLU7;W{=bt zSos<`i#j0s&v( z7I3{W<8)oy;V{tHAB74y>(FIy2){tGyIVu0Xgu$ow~GFx&vE`w-`$$@`|o0_rK*xi z0BpC)O5PMVo_@kP++7R)$+SDknxIX`DF2Sf6xPT4>c1>_&F8m;ytrj?#okK&txF-K zopDoR$cI!Xn+YL|0^vaZ;r{-|H-zTAl0J4k3rGy#pH)b_O~$JBnnL|Jar~F8dhKaq zf#c%u)5n3|48$tFk+85aZcP+r>S8tsY=rUsx%Q)f*#;aGE=fjS-;HnUzA5*(_B>-+ z(cpIISb(C#Z?QwULai@Rx);Q>9iI;ixB=_GQxmD#es8`EogX!GmR$5F-C%=?Wspc! z!5)(5s^ln4Rwwd6o`Ko!{ZRj<{1#0X%AMG!X!w!Lv#OOR@HG*IZHh2DTR?l|OKWHO zST3)vUE>`??XFVn*p%W_W_-UC2SL{U+n+T6@;FuwMiyCirxOcxbzA2ts^@rwB2+)j zhhfkA{qB&nEF^7FgY%bT$p%=d2{}2x{_;$SKBO0UsNCYZ*+DV(Jc1;_4{eXv_W1$q z=ksV8fjpUbmivAM)uhvQ3I2BPdg_@ElHo@5E_8zlI z<1YccZ+b@P-)U#1wTek7S?_cS^ zXT4NLQJrPH4b3HwmDXjyOHKcIOQfV+XH1dbZ0a3F=h!jsv5BW1Pr7Z+^q041(5>Z< zS{&59RBwnBie7kKX9y=c`IKSu3J*i6lJ#Xlgr0Zn7hj0+hT_ug`Hevz4v7-~o!M%2 zc2`eM@ki{0?y`NitnCMPb;jzKaBQxuSJYucD)~nupLnwG_fU*-w)Bu;U!|vRYozY1 z9YzD0?lc_FxI3VzKFanSWF(+ywb>h(6wOw!-yBK|GCO}H#dO^}3z4^w?{apyH<7C; zt2b3j+CFbClpCI_l$o7){*XSxB_&byB(6Io2RAe#i@A2?JU96$bn(nz&sXgfxi=nOsV|m?xbJWexSRC|dSTeND5DLB zcPIGDW~9O>`}cdkvl6frD+1j)J+UW~u^?0ijH-!x`A4~YQ*K6(qScz8Nol0}(Q}%{ zB3y5am+jPF7x;|2?sxcodfs$9ga6HG4A5;Jp2TaLuKQ`dwU)31$#s8s8Y2I&DoFzi zKAp!KDlaHLyH2t9NSJ4ekx_W^iSG3~-}?{WCq_O~e#~&_In}E&wBCkMPgD4qnx32f zBA57W8J$AneY$6K{R!gHG6{V~?v2<~kDlu@9gpi%O;e=TfT(er79;ZeT>XUZ>X}aS z;QaakCdF%DX0l-c-Ad(#scX9>mrY_OFYa-GP(3G?X-AEY3Oser)IaVLJ75 z%?cYq&BLYNpx;YI6<+zkGchuF+743z#MZ8vHTRaJGmRV1!9!1o8&vUa6%Q=e`YrDJ@_EJllsnNbJYDFqBKBT+( zkj{5idf~^F*0~Uyzn0nN!jajZNP5-^)}_zfU&4-gQIPBkq}2MYe#Y4vY+! zPMo)^4SPR(o-Kxh_X#bXYmxAtU3w4(swp!4tZ%ERnTBbV}kVktaWzE+)`5H0`qjvHRnS?`^Ppw#XjjrN$z0srKgG`&&C1_|oXXjc_ zIWl6|M8z{1GWVfYGervPNmD8@WYQ|;H@B{he&%)tYC^E8_227U2q}w?nHH}c*F>%~ zoQA*-WW2C^&0$R^1IC$E=Ra!XuBUq9nEKgm*z=%zlU-^J0QkGBN|UO~ChzH)s68a4 zWk>O1n6wdz$m>7{u;RxajD>*s*jG#nhR@xPLMJC-2JSM{OWy6)n4JleTBM0_#UlK& z+}R+H zm3QGh<|hKQem8)x545sIVxQz6E*XKz-$}RH*?>9=OHqP5vxV3c;c!vNt|?^1`X&@e zWx86U;B2*1>5!KyS#j}F>>e`wXx-w7=lTmZJA7yHNiV~Bz}34_^X_5~Sh#!aFsQ1C zed-d$1ZFL%Lpfm%%D~?#nzz+zS6BJpxTIgYZE={ktq~=unVx>YbF;oPkTPB`Xa=GR zn)8%7q*>lKT<0>^ZsZ%IpMC-ZfdjoNo_1WM53Es4N>EuDG)%vl#xPC)ev;*yv}suQ ztA+-W`htGZFcETcMY@5ASns+%&jZ={QqHsd)_Ks!UrKTOmh$M0SEFE3)#?ulZ>zhV znu22LQ+!}65zI1tYiG);y*7b%YnY;Y&6=;M-zpJMkr@WE#7XV}Is6JFwb z>I#ARd%w7Vw~C0|vzXf!eEN@gOyGZNaxj@chio5^`loG!?p|j4K?#;TZl2c=J4cuE zp=_O(_=a|?JK#TQNFR3E1fM^NMp9UZKO|rHQC^Z@)J&E%GzzJ*yUr+fEG4{6eygd9 zii++2(us^UAA1GEiF6|aifT{2gmxKN$!b(RfBtpqd|5GKkivm{O0teAdE4 zv_H#zY?0`ws`diApYjmlj_|^jrRCKw_-(cQD1vYw9a-~@g1lxZNBe4?*So5YK~`HV z?Cotg%v2tRzDXf0;nsQww{DeJrZIV3a%O5iDYCsp->!+xU1FeEetIUcunLt+ESRJUHjP(qetO8g+Jt!rF6t z386rjNdZvds{B<{`G;H2#cw??6~Nyf(41}66dr8{-zULl&J-eeta%H%y+dVNSmRD~ zj-1JNLWM^=RF^B8YZ^w?meI0FFLt7C5J%!(Ej>*7t(r~>3vB3sufe}6ZgEffv%*rc zb&{Bmelht#*G0x-be6@4boa!Sl7RHkx&J)`)oP&uD!M)D+qlXpJ&|KE$w_l7?V|3%^7O5%@d z{`=+I!Pv53RrXB<`u|_=ga7b0hk&fl?^pj^`OhsHR=4gB{9pbFaj~Bfs(-fp&#phm zfAu|N%jB3Tb=FZ4r|#aCU$rXj3+I)bz~(wJ%Zl=elA<0HpxWumrv8D!WBoSeMj=an z0Cm#6o&!OR`V;?4==|wl=V;P51`l&sW&8bc!=<(Bt#) zZmiTw9fNNbLRSymg{9`@)1;P*`nNyPmcYx9Yw^q0S9T4cnaE4`X6g#Y>*C45Emr6( zza>d!^~hkg@$!$DKk_+p-;7y+Ilfn!gAMp14Di6LYiO7BDSrP6- z78?^CE|C=1FE8&^c2t%gIL)gS7sOXI{q9F#>aG==$odhFRV4a;TC;ikks|CR0GT~q zCJ3LsM2}6r`2OB6twMz@{?R2JYoJuMuD__L=q@i2m|PN1=mWEVOJ85%<2zqBFdCGw zHI_lOTmJrdyS8i-cgFbv18TOL6u3WT|8z+03m+dJ z1xIgjT6q|{>%svJHWGIEM+#yes4xG)*=(vS>S!YW;o2z6l~NY{7An~PZO?VnaZ$k4Mv)a zcyDmJEsRwgrK|Jy=#PI3B5OTbuTa5uwSQ!|hL<^$j z^wzD**}w%WdHO zcdE2;mg)D$y{#$JYOZLZ7wa%LO6IgElGW&UnYrHLhBc-i-ve({eFk$qB+m!tta=jP z;^tWt65sdLe--|gQCF`{C2JbP=hCyGiE?Jns6a3EbN`Fo-G{sgZ~y7A7;n6 zpE(Om8D8A5c~FX?JXJ^$Vik5tU7o+Y5l6cdEzXP|K`mHp`!FrGNQ?h1#6yd6u<6gy zAG+sT<At*Q&Bw8~&mX8Gd@% zwegupxb8idWLvaTYucWHvE1i*0W{lftj#C z8#wtCnzL%HKoz<#^x*5b*8DfAk*Sb*(Y%EVhq}m#@t2IzW30h1wkoG@zrio{75U(5 zIyDW4ABU9MvU=|Zk$E@96?IRKwbr768(F=kFHQHceAsUZW}Au(J?D0MpO2*TrKB{? zy7u>e0cVp75pKy7-YA|MonMSA`&^5#0$7G zsc8nxP+-ZqHGLXllcO(rZOrf^A!G*!N6Q>`!FxtCK1v{|LZHwKU^JNZ|cm=ru@(-gD)fC#kUFm-@=riSw{1N)d5 zC|~H8ktwjf3s!gjLjB@7%2B_n_NP-x?OI?ag{~ohV)&&Qi$D_Wt)YapFv>^&=d^h1 zKtYNYT`J`JL>eh>JSWqnl)kA$h2WUFc?p3_W4b|8rOB`Nt!tDZTU@OTHOa`#XsFgY z=Rckbt8a%_ud}&VQD)N<=0Ty6LV3EDBPG0Fb!tUVl_dsuWA zo8e2=v{|&a<6!Pphchn;6G!gn$tD%E(C`z7N%B)kI=>c{Qq3Jz+lCY7jZUt#%Q4fH zFz-QfJ`M^nE6@C1sC@%C;sH-MC zCrx}8UY|zuXh{FZRq74Lc|@zuQUV}cm`e7x#m~>y8`ZpWg1nYO=cRdtYGaqwyNIqZ zw!GrRyTLydzL@3!@6(9czqvY_MJ_rc0@@~+HYljIMD54ugC!$cRu@_&fA(AGO)@>@ z;7WQ67|?ZxBkY&XiGPIMdU4d+Sua(B=+pvRo?XmdrcE`2XYL^}7g!EHZ>v*Bsp8-T z6!dBXx>7Z36O)EcNQy~mdLnGUv>f7(hi4NuEe#2SN5s2sx2RtqSsvP^ z)hl=(u!2jRkJ*4t+y%rERND)jOmXSq!X~aCZ(|xSXH4Hpq#%ht)d+vpk-ETODxn0i zOIsHgL?1yyz6$%c7WqQB9uG>yw%D|0mgXzw=I85sbClNF0kxSlN53!cd=)f>YfOn; zUNY;ULoVADE(7KqN9A@0641v)kbNTiZie_SVI*1}-O1ndR9)NdYkg>y+mT6i9^eV* zKc4n`h89SN+E&7HgNzS;9N?x%&~B1mlLA}Kf&xNqKi*RAg~$=5LVR=Wx^C_IJamJeTx#W1-K%=; zs%LiYag*zHbMN)pY%?>}L`jT}LjA|JHOKgmfY`_{L3eIa?JhMgUpL7{m|dMeB3hAi z!SU?Z#$CF*V{%q#Am?mu=Zirnlu>PmqhPe5#WEK{_cEYiM;#*hh3VeWc}LncW$o&k zde_C(A>Lv2-Ze?Wco42dYDj#~nfIX1;T7p+<=pk2-U!rPzKi4-9R@Br!Xl6tUV!cF zRetZCc!Wr_H^9uNPBM)`Ft=~tka)1YoqLr|ZQCDdrf9Ad4cDP#NEq8TVa@|89Snn*_ zParA@{78-KIYK~tk?Q(d_o|#q=SHAuug-P3*2%zV?O_H*qoPgyk<+0A7;RFEorJt? zW_Fh1+mvh|rNLR}6kOHa3iSF%p=RTIu>zOj`Kt(UoC4$$Wb}Sd*LoJ?=(aGc7r8TA z)yu1{#{jyXROph`z5MK!HgGVScK&1K5VEvp0>W!pPbKY%!EkniuVLVc`j4hYRUD|9 z>y^RzOqY?vLw?Y?Ec)2=N^aM+pR}jC$v%zb2ILTqWTDV;jk;W)Y+@{NMT#k(Qp+zvd*6JgLyrwZ9Nx}}7NoT-;(^Y6 z{!Dhb2NGi$bf19D!Ksj#iRvC%J&dx;RM*3f_{N=PekFVf{M{VD`U( zw9%$q{|0-GLwnZnb+79tdzvAe;FZklbI!(0n7n^nNj)V*6Py~_zVozk`6Q6PNyesOk%6tN z?&ws#hoHVVIMqBSDw+y1uF5{Nuw8nQsx6ZSudzm{A*>9wt-W+iOi6^!1~;X7&$|7Q z7*e;xZvWj~I&6i=an ziqCNK;=kJ?NJ^~FX*luirtac{bL3M(nv(d7lZpzpss|9FZPXF8qFYu=y9oqI#eU8I ziHh|J9_oLox}^Zj!G-swp0_o`eHIpa*1-z%*G*?#MBvK@*o}Em*Cw~=93mNjL6rY4 z^iKN#UOHC*T~M5*Ib{A|L^zP_sYMK(V z>;R5%L9*I<%+9VDvwI|5%p+)A=AJgAlbT;PpISCEf-a`uD?7H3`Z>ro)<$4A^iMO$ z5CFJbXzj=R!OQQ*nXZ_!RuXm*y{pTTt4}udtJy$EAR*C8Drtkl{2>g?Fz9^>(}s9X zTD;p!-SPMg8FTUX9<#f?!n5y{D+%6GoXU4;@m?1NMT4%(K*LZ0n;3-q`fd#9S{m>K zxr*83nSgdjSgjxLt=KW=|SjyQTt)H^$nd0R(qIfb-KiCQS}^) z-sKY3PuPZ3>^#!*0H*iF8H2f4;ns6&Df79}q|PTK^a_0335vz_O#QU4BNEmj&2Vtr zH=K&E#_c)ww+<)1*}L1f?5gimg>KI`YE{`HcenVhXPytbc5-Lbn-)j^D|wG_lIN#D zn+_`DI>_s`!%UZE`O_`w+mJ<8aE?n|Dyj+jeKZ9KS?LFF`=zB}(bYXDQO4a z9_Daz1#J&uIg#m^+h|=%JTJIjQ!5I z`c@}HTKr_=t_K29rHARL?y`jJORp4QQfjY!#RTn-11__@&vry1R}_a6dKgtVgyn8* z2?VS43{_R@bJu0qd$GUdyRa_S>rkuts@bTBFuVD}V=q#D&b9G!GS#+s?=lVP;4<%x zR`*8i+(2L0UeoYHv-CPXE6rc7@%N(iuHA7tM5wk4!fE$>-ed2(18=0~o(Gay@BBB# z-0pXFw{F>F;){Fw(V`Robr|R(hh3f`){UHZX2y>_55yI%62kVx7U%_2uKa@!T=~h- zf%_>R8w^8SWXc{p{LxgJ8PGp~P#3N3HVV!ytf3A1_Ic;unW zIy(qPCQM(Pl=Ln_(59PuFtwg7>717Zdx?V^@VJ3Sl*dXk3A^JOt?TD%PxCDp*GK^< z>XpkH-dz)zU_vrYJViv)2ev74Gf&fNJp1bvQ{~aFyv_g%ZEpKa?F#JYb+{x^6TKew zb?n`+CuX4B-c4T!Joe!C?eV-%TWPrU3c04aw^{w)f0y zXUT?&_D!R4uZc^Me*HzG2gvTjM4|2u-(`ywea&c<-d^+~eUPN2E*ZaO1`G^2}bH<4@6GYyLTXD@n! zQ`P%O*Pje}wz)NJ{3e;3qIZwK?{Yuwv?8b0hfG-Uv*oocuWQ9|7d^DM%34cXc0!EPQQJsqk}K@Nk1g;ONRu``duS!1K~M;thM3T7{@1m0PYS1YP`8+jS$3v9OpH6ugr{lQW`_e_xw7qIr#t^3m%US zPSu{g1rqQ1tvbf|6<%%F5V*=#k-?5ICXU6LSnr@~I5n<{EoJlvf5yojtBFOPhT0{> znkQdLeLQHv06#FD4-}uO*c0jf?wt5#O&8s zeC+i9Y&saWS!^;+^Jv{s9hP7SPqt-1@D_~*Ab_SPPb;Sc`$x3R93U;t&+61U*-3*UxY9;3Jn&wrAVvbGEypGTHUo9Y%MrPV85Y|YW9en12PYpcoU!(eS0v*( z29msUP7j)$MP?_Oy!~}!7Huk>Q`mUkR{c4M;yHg1(^9%O3p~8MtK_yR^0y$zr3h|k zbU8kNrF>+fC9XH_&|TURag>U~^VrA_bcinE=Pu}X#2(~8+KalwJ3vmj=C>zLBupf# z;k##-Pd+v4P9Pm)jyH}V_o<~q?}bSpT5G20l^DmorZwLnpN&&HD~jtSQJ2L9%+-iu zHcy-sixjY!FvGa!w8o$8=rF{e>3*;447N$KHP2GuH5r|JqFNtUDhJ`ed@}B!Pps9s ztn{eH`vHez;y$JY1rT1DzI9W0f3eb6|G6AssskG*ubERn?@>OKNp+ zPp#<>5_pBbf8TabVfHYM!_;-+Q43Q2qTXXdSeEEdAWz_1mFi%!r#K5@?M*tkJ!t(p z#Mbc!)$OirsD3>#eC?L?nOzmf>n+b|ZKR=xiVY_Z^@z>wR$^onnNI zd&{exOt)**_4jN`R%=ZbmpnLw!vBsH|GbxK6IYNWvrhar<#eno8n(WuDa{?e>*E+AlXgt(ZTzYL>I~;SPh}0ZIJz@<9=_v69O~zp9z`+f1y<`YCIGwDh{ zn7by1cgo!))9ubTo(c+F8D$w%vGB|F7SYy@Pm6elv(nER^>(rrUql%Ot#+5;MFpNn z(|4Zd=_ZX|0F#2MdnV+x5c`>MXqPYd#kzTVGnhQZ&Z_R4v32{|mpdJPR=}BOvwYTV z9D;U-0UzY#iJjFypk^v*p7PtwZScsaifroA<2*3_4krw-T1N$!9$3{ynOiLI*5C?! z6A^kTl9zA)1Hj-mwl`T^wlx9GCCp79Bz7XRIlS}xSF=JIX<*7`VI|)gMXFhuVQd+< z-dniAPq9qjk*=hxq>UbcoU%`+sTiy1rxFDQr$OBKh|c=Ah2+~$usSq%5*4NFz2qc8 zLL%H^Y?9#P>=y!UpC8{;ZJw#N=O{lxYS7KbPn$Xkd&wFGk@mKdBAD^0`0k`StgV?p zs*pFZ8IOYIo{?5as_`rQ7$&g3rrL|}gOz1Ue_Zy@FZ-z`2^W(334qy}L}d=471$oDmqmW$~ z70(UJS;1TumA}1~6yo)Izng}M)t~j=emG_R8!z{#oz5=f@P1!{FfNJj75@9Bo59*@ zx!kqntBp3L2SfTEUfW-SP&Ejn$zqaQysmztv34{$dA@)T_XQT=4|x>R;y|TeC(BC= zKKp%0sxB@b|>8qZY93=<~WbtSck_su^c$Ik!5+g zFfNNRi@L3twItGOS#V*`j+RU0i;4Fzr| zD-Yk_>~;fw3Is{!nd7rR-7kwJdnhRN5VqUPKmkFG`%CaiDK8P$#|_ixHLTR}$BXqh z*&9_T_~(9?9nq^t*@vlW;>n)J#Sz;4>fn8a`C>W8$y}SpvCtCm$*v1SKZ&nZYMGZ& z7-H`vf&+MQfoyzzh5ddOQA({>yL25Qg!gTCGFP#Y^_C+$d-&=nAjX zuCcWWt08Xepz-3Y#58s%oS;5}vq@Pk`~wkCzzqXlGjac68y;w}Ttfq1nzG=T`wF{H z@Rx!8&!0VfrszddAMQqgI#g3zKYE)neEYD$NIK3#j+KIHy5)CS!q=VGUWJImM47-x zW<1cuE2n!LV%>py>+z@`<{F4EBETIYHK4P6WZ6{{02w?{&*oiU@UFB{QPqt8i5N1t zer`>j-KerkbS&3k$vq(O=}4GVrkGj5sLf>JYGsV2=L)o}e3fqmeA+wFq!>XYd$C+- z<>u+xh;aoA%m2PbwVOlBL)Dl3FGC~lsW0wi)fIFaZ){A9{MujZnciMfndDEM%h|2X zS^ux{R}j2KLujfXsO$LS-<$tN!0KN6v}&rCj=cEG!2G=wf4x^o;l8kJm`eJ;dq?`w z0?X)kHv*}8^ZL+HG3F2Klot$-#F*u&QvO4W`I|~ti!Ven@QUogMV>+WNt`yPh}0S; zDEx)iVXv+Zhc@J5#{_oSWyf;GWx<@vm4EYMXj6keNp39HO#Cz04yy)@*?!aH8&4op1U$X)C)RN5 zQ*v}7zKi`S7f%m>ypgj1o@~Ud884e6Fa}bpE<6Z?(f4FA<`G`00F;W3aXk}W6&9|j zg4QKF8nYAgcpUV-Th#g@mES8#TIY#+eIM)VDdt}>&vJMEkn;!ti^>|#Eh6i$*sjRv z{wtmRH?t;^(HH$diF@L~&<6$7VC*}+=8qw7!^yb5S?WNhgMS&1aNc5{I(mdrH8IKJ z5`3zhZ;`H`pZSng&CaTKBC8zsT{Zlh3=MTyAWc>>;j?oI3&)@vE;37@hWsxszkW4P z!xNu+_5Hn)$}ep-gx%^G#g`HCBnhX1%Bp@M6vYz~3+CFw85PFw_8%lsTV_0o^(6-D zIT>QHKb4BB)UsG$)8?D~IP~Be^&(G^Eh%O?EEO3{So3jYa!ByPB`sNs(EB)RorotE z%3${RV>zu10sqz1orj{??22!kWhX1<@sG zeW`iXrFlmGmQtqzj5rxPX(SqMvQq~7_aw6L`kvyPs|-HtxG=)o8eOJ5HzZtRD+)s< z8E7pRo{w^Cbc`QP)yQz6CS)1(#>Im)N)ip5`+K^$sf-b5^CL{+--(VxN2^zY^2{zk=~N0>y6Dz z((ogcMPIccUW`UQ;lSn=@9x~EL2W^HOH;mHMdNqxjqy#x3ukgMZt|KZefQou=Wa;svLFUJsRAe9i ztK6QKj@&kK-kaaCfo{)K7HrniM<&4ZJHtC?mxboOXZlT;Yx1W z%R5v_+CFWC)YI0^Z_z;G2>GWeUFt4f4w9%Rl=<;3-1Q0y%*%M{c7jRL>+X{H(%JAh zb3f&%UTDw~8rvY(oMHG^k^G{^S^l-`&{td~1U#sZyz zk4u63t)70Fuh=0G6N7_Frz%6>5plX~aA&Cn#khoCuNSlTv@JY2YJc_?&*VM8&4h3vSP+V4Q_Bi_PFXU76*lV1)1SODd@F*N~P23R!U z(t1T(Fk@-a8YSn_wLxPk>#Q?v_o=odDo$?Zf0Vk-BOLLCguI^INJH1Q&fCL&ntZV7 zYbQ{~`BDhBGKpSIZ&b@n;IyNvgxi7di)-Fj1@tTlRr2Lymrf4sQb~21=r=Ai0#kef z(bK=*)6cxfwchwb6du}|@4spHKMTn6%D2i7W{x<$YEM|MD@Y?Gt+YL?=6BPm z;%&1uc6FVa{xNKQ3{4Y@tLxlah?B>?%`{RvB%14a@Z|r2WL2NuMddys{a? z#mW8D4V#(@amg1|Y}LuG>D*MwG1}^*L}*K<5mC&)w44;{Y=uVevIrIm^FbO)hDHw9Y;-OfeKMH>g#V0Ma{B5ZmOi-y9DSl59`n*-qp#Q9t9ZJGb7t7_v!`~aeCmfm z((x8T5lem>#qh1-$a_G@f3g5L*QbSxX-N4?AXI&kZK!=L!1HvU=?z9UdYp9v!JWE= zSSedzosV!IGmn7M_4mp5hJV+}T(GitR~BHm9CFtD!!JLt=00e2nK&+~6^GY6WLX^bH8_ zh4{giFV1?epjTcNz}wo{yfp%65yF`*o9DiGhwaGgl)Gk;F@d1$vgPk3Aw2TbA}^qj zbIFks;Ob)yK>&cQ3UbDrxv;&m*mgJ-B=!OeEM1ffl8-UBsy~@{At3Cw5-fsg_4uWS zSH;6yHSg$vi`B&3Kb+2cK#x&Wj8oGUF#&MyE-Q&OM=Gpo(;BZ5E_v2Y>~?N@ErkgZ zf>ij94oPeFZSr9hu651s*6=gWA!_9r2h09Pm%qdRbZ5XyUen7&qe%f&HK#t&^0I&w zUTOB*y&`Uz(nzqo?naMPqEuN)YzX0Y2XAsQMrpU#Eb`l4tK(Xb`O2}xa9pXXXO$kr z-BE=o$AEQbRi54-!6ga++$lo~@;!Z1)Dgb(!so_mSGzLx;4@f&eaXC%teoVYO{`-E zFR;#s^m53wGw%z~n~o>nnCyI*1Y5!5nBiLC%aEqJk1uX%E?RxGcsX=r^>RcJJTjh( z!L_RF8*s}3wl!^-~EgJ_)!W}ku(}a zxa?a`!=U4}WiPk$ks@_~c59rE_Cs=D;HOVq;XX0mg=O2x)}Z)%>RSeMl-!wGr|Q2= z+s&&Z9@4Vtwzk2rSt#=$?6P{V7qEmgp_`-oKSN05nka3y;SypdI9jf z+t8Lw$OY{lcrf0gnNpC&b6#3+n;feDL~~&P)LmE^@I?=QBgFOpA8iQyQB&n9|3VUP z@;jlbchaQwV#d9`1prB<>VecB&yK=|n zO_sX#E$z?xH7B6JC68A$2#~n`;#Hf+Q6;f6bClGqtYo1fqBv|ox9H6Vm7`E8X_7p> z{GFyvs91#-*n|AC{a8z^{g&vJok;Kxuay)=Gh6^D^ETa5h}YVhS^%(GJgFeZbzy!U z1xWCCSo~uRJ>;ggw2pVrNwUrKt343tid~{_+sCt2Y*+3Wx2!LrLBSS&jt<4&9x#6k z`SC9&9!CJ!*sq#gaxLt2m22IrAnVUxHJ{xJY+R{joXjrPb1?m-f+BX1&$ZC%SWC?A z&t{4#H_NDP@5we5C^7u=!A+7%Z9#;^sB=J7QW5}6>3sbR&3QN6k!L)0}o^wKOh1-kJ)s`7{%m zOF#O>qBpn9y?adP;doBR9kIzWGIOV{j_Ew7Ov%urAoZ(|5wINwt;ixMdlZ)DkZ5A!yRRb zV~V{H!_m^FBca;BmIyK(kRDS7Kr3H`-XG7b0Mt6C-|qecu=4I?%U^A>5I7KD+9PHB zD!%~ir_JmYn!NqVB6UNl!H>IJ@M4Y?&tz!=Q%h zfq+Iae^jUYqNADRIV`e&D|aYc{egLaLnY&s)!VkT>goL>ACDchnQB`#1-m*ncf18P zGT_FrW;iD`Qie7@MO0G4486s3C;>3a$xxo2n&PD*5yt;Ypzn8y^rD5rLXx}@t8M~f zjmtQMMVH!}18Ta$fuM&I=5gaK1gAZ9rR7Gz(v)G$r|_XHEls%9GDnjT32z9@0zN9P zuNhE0BQsXoP3PiV^qYs3bQWfOA_;k)3hGENE+l-~txe-f^sEKa5i{UDnS@r_rB`9vxB&=jo&Ed_FDRXuk1qroUD# zbHz~(4~sQ2lp_Mh6$0RDo!cZBl~?}nBfnh5XiPsrR_Rq8#A!iter|`_sS&TYZ6^RA zSGn9taazsd^oyRkg!820^mIH~?PyLhF}6_^mAnhi zbRhjt9DCq{lcb@(xRjK13J8b9bMXo$)Pb=1oIr~Y`JG1mJeUh($MIL|MB9=~MW{Pc zb}m-q`QszAlPI1R;)an4A5t$bFL_*7h`&>~e`BLlIKoBJXRX$0dzaljuI4Ri(X>~z zql0hhed@I?uO>1Uv+w_7H(FGZdvD(hoLHfEUL*mIOBf4^CO*oV9eKc^ z1)}Tm7Ta6CXoHhF&q)dA$6?j<&8)iW9@^uT7z?>0hOiUtu{6dRTaGJ44d2#C%bKf3 z#m8W(wAN=&dSy47jn28e^Wl^aKSo|}|@o92u^9Rd9&SpruR*BdTCr=w+sZ373XY)+n$#W%w7bjK>vtdMU zf)jzPQp*#|@a&Nn3a6P-zp|=ab+%n^f`R>{)|{5zh@>I29{KW<^eWHzF;12fwQG{nq}|{03`b)2?CQtRB<~@f+{Su_M;mII&CZQf&c{Pf1szsO zkB^V@2~Q=g^a$1klDd25=8_AitK=qZrxti3sKL+Rj1gn!!@=KhB}@i=XNJpNCet-G znWF;EE5XTPjvU6|JLT@ZYSX3WF{1+B$GOQuw*kq}3Jo%&@io?RyCahvyQL{kLG(&Y zo@JQL3`Hop#MT~A?>oa!T#I&td$hYX9`U1r}uxfnqnogZ-} z5nf6?*tgx^os?GjmZ~Nuj>2}i1Vn`yN;c|6?+lpS;XX_=Jd@39rbF99*|tg}ZNSE= zh8E7sx)T@qF9ecU`|>;Ev!=kyJdQDYrv#4Ac^FNZRytGvq*5|tf>y7(6?)C~ED%xU zQ&C=b2eyi#k6_F8l2?EHbcgd&>ht{|BYlL>OY_KCVx~f<13LLbnh>jKiHFzYWSTSq z#m6j@p^z66^kMB;$OTPKR>;M+j1w6bw z!QFEwqDo)*if_Vwp}C-fljQjKDQTnt?QCdTq_xW&C4uRq9QkhF=8NFF8^r;eX2)H9 z2ZrUV->aotr&l&d?HBg0&=m0~Mkk6Pyz70X z&B^5oo;64H-b&;dmQA4TWNx?t!GaF`*DW9q`g4AE@1L9;%V<&@)V|l1OuXj@Y$z+z zI#fTd)wylMA{g$O_V}b&ttrDrP-x7@+G=voQoLG$w;cWcezLL95nfejzHdvLvOL8v ztSA=OcT3f)XwT?ZZejYc-fmjXu&@A~XdS?v@9x0m+dRE0H_ZsX=Sk!dFrjr_odrx` zG6;Qqc_XvwIrw9>bhY^4+L4XC%n`08*?2wRjO72(_SR8Rt?&D=fPzX{2n-B}NJvV< z&>|pR(k&o0G((4gf^>IF!_eIz(%s$7(8JK+Z#bTF@N>TJzwcUm&6>q#p4!j8@9Vnj zS$?xV)RfYl-+7j)4qNBNHZ_fCAt|F1)y_(V)8+6Qss55pDfB9te{TFavLTb6kXA$apsAD8;tIA}z<9bb9~dxo$nObL`MOTr z&oA*&w!c7ok9EIBVqpKG_;-rxUs9$!7P&;RHuv+$E_`{)R%vO#v0tU5!nVo`?;)C> zKN%Yqsb=RcYWwMeV#c97jEfyJD?5Mobduefy$vJ^EYorA(fZL&E;PH5<_+&TWp|-( zY{*p&78SodElOu<7~I9Uzo`OJkZg71W7a z`pN4`7n%M}&!K+6*Vbuhpa)p})NXwwJh|zBmfv@_mxv47gXF(PidA%YOQ8@~6*$rg zEzpU5)}deLXZoklZXJqdEp8g*d~+;pjoE_uJuj*AmaP$uWo2IM>mK0s8+r?;XX5HoW69b z1ls}**pXJxO1)K;_$jf&SJmvD-WL6g$kZ}X#6YBm%;k^HY+kbBBq@@y;$@XyZo*DD zRs^7&qL(7U9e9=g7#sFt&*A5q?y;u25N0nM%*ykO`jjZj*{`T(Q*dDCOWv_@At>Y(O_WJATc3uvntg-XVmSx@mnVky=+>bqYo<+x>Y*A zwGZ%-j^!8%56-Qv?>DCND7(q?^?$W<6KC+}C4h04AOUhGSm-uD;J4O)L61xT9(pOp z{jXa4`^x|d60rlDmSu1C&2O6X-XEE2Q}%uc=YM-ZhQ$dWeN7nqoDu)OPUB{+GSD1| z#Ze9MJThFE=rWE~Ax}2{3e3Bia+5e^h=u(jArR@b#ygZAS0pU={I&FYAV!;XZ~XGW zMP0g*xv{}9UQ4E2p+ER@#CT=zM@roS^W$UMa8JgfP#vm$`g<1;S6m2eV;rbdh@t>- z`?&@_e(C}>%++-b1BOeQm>SXL4045yJUWf`_MYk(DfK#cGV3hO&CkErGSR*o^-7;&$k79+S5gd?QAj-kv`aw$v-pxhTE-n7`r@C zsz2C)|A@_b%zN37&}te26ofy~qFxUe)wCALrNCTuiF3IXvS@DLHX z+Bf^z4O!bu2xiS3RqFioDnnlE(}zlqVa8T#CI`Lw?eEc(Wn5`}7VX8+C6fuI_~X=) zQsU-10**P}sm8`2G(>+WdTw2%H=NR{Fp5-63usS&n4a**9 zEV(GD)|2c{f#V~u>mTvrGp7}@l`A$|#pvKe_s=DT_3V_^ShJ7VB>lN=Ullt0n?*va zzdD==&3hG(8*Qp$dPZA$YDNCAz(T~2SD285z}M+Gugyk8>y35`Se+#BKBgE#%_sOn zFQTWjqsfT%dm&N-7DPz$@_$cKdsBNbqhHP!kIkxt4fPW-C!TsWu5TWZG=Sv+=5w#6_o^fg0azbwi`DT2@t>Aiv-Z$BJZ(zE(4@v+f5=>C zXEtIuyWmuv33W4iBRd|PUHP0RT#gIcGBtCl!d=AxU@OtBKex(S7ae)_{L&vw@r_aE zCDug@=~vGH^9h|qef@fq88@G-$CbvKt{Ae0YFh5vdc%}N8&zh`qdP+iCoVsC&MI6r z>0!Tik#$9TS_cXEdW7KFvXs z<;9=!w1V8CY@vrgrWxx21nK}{VC2sHm3ZLnhZbanB}}*4SS`qjHeNc#W51-baUL6L z*voc^%pU(o9@4R(#?IE-*GBdhXx2tej&K71E8;jW9&AsRwsTF6C9(uy&8@P_9^+I1 zE5ny-1m=G#yAfJ)y>rdVx4sYQJk=wauBN#}hV-@fp2q zv3M>t`-F+%=v%Ni#jE(pRi$+RLb=F8C}l8#lzoWqE8IWVHNzx%BY|}vt-cq()C75& z#ii4@_jKfLR0hdcfR*~jICZPp_demj# z(z)<Yoeu?l?m;B_(3Sz`T2|`#aZIPqsPmB?B z1H(`~&YJH;i32IGenhJi=f~+yM1mv*5W7t(mr&{8wl0`LrNBl{P$V-_LHTCt6nX-53%kvxZP1NN{^GfUN^v#+) z`NsMW9e#ZZTGk7Uv>>&+bVGDCB+a)MidH9~Pk|FwF-KE*Un{bChRmFw+QCLC5XB90 z1&rS|*s>$9322co!@>EPncL)^KYpU|$O!yj=8Cj1F(LgPEObsa_4}!9Ka{bf`l?{> zlrT$6Nc0U}J@05)SOYsGGA_K1ztw;`lQ(q|;zxmlZEgKVvJ0*}IZvaH^3Sbv=vstY zm^nE&=TR!swf?*S$b`erj(+%45n3Kqu_M`P2qqh;Ir9MPN@ynTFTza1P{#U{ln@s}(n z3b2f5nY&@(d|;zYVdCAf+m(3Mobshwgyp@F7wJ`v|7yqkqRF10Kfg#yOM|d6&C?Fp z?s?&VKzH@3%1ovlfWjiq7pY!+xJcYODUFxS`sIKWgNQ8}_N&u3c;|z% zErXHnhcvrYN}06p03_(t73VSM((ILX`XFbsMajqy$1VyB5l$$N7x?X`Ze(aY3^9{4y@dGY45}GhKVf|KpJlCE{AlW?5dE{DwKvFhGBDb zS9@_MwxyfPTyLWNdf9sIX|loa<+YJypL7QTW*!Fj?z0C3lRAHB;IT?Zx>X)lytTj! zZ@jjJmY@d0#u_vj2x<2esaAZ0uj{d(T4_*uhgY9>?{KT^O zWWT!y%z3+$YPC4nMFpKzpy~Le0imylFlCA-zT|Y2ub6f5572O{hPhl02s$1Kk%oDM z%AIU@v$B5rpx524O_rvtvB)Y-!u8Ub-=Xlx^mEYXEHmu&FAY{H7T(X;WZl~G8kL<| z5(Q*PcxiCwZ~Qm$ggHh%y`2f@ZUX|A-thRTct(WGQ}tUD&kHZ zBYDlS40T0dQ~SlWs2@c>zv==}Q$iK62Q@1Z2YS+}EZEqndH_P~ho$wZovf*gYsPn2 zWk5`p8He}5vb}_dV$Wy;6QUYWYn@L+%0xDzcr6nff z>SeHYmGZF+>6l&Vgi{dQwYjJv)>5Q>3t`fkh>HLfP9ZMeP>LNMz{3@|t@y2-#??p@ zQUGw(NlB!oriD11HJo)n^8u@+=3=#%*lY9gAX6up3hyut@m+DZqGv@tfow2zMF);MNB(tj2F3C#WP~L-P^F1U10P=QSkG^ zy$2gh{jFV5X}nB1*c1L)pB0)+$@sx@MT^n1#nMfhYzy+?M{{(x2VU>lqr%qAAW;`W z#7}vts+Ngl@-D`Wt3rlTMEAh0S&#P;ECW<1@=%71<^g7|KhE@KQ*Pas@>CX9f-6f_GavVdv%Zl#4Yk!o2KddM7Q=kbeCRaHz1T#5y`Sb@ z_qF?Bb--@FO|a?vfy4@1CP?^JL8^@1oxilL%`$$(0-1tu&`+JlU?>;wAKJmz+yTu~ELCGnSoSm_%+#2TpW^)us{s;DL zQusf_&;?1_TmW>pB=R@5X?pS)nT_~v;kCpc!~e^Wz=tGreArR9y6?B<)bT~~MfI2a z5&tEUD9LxcSd!7ZZfY6Io^u&xh5%hzPsyYiGIXmwKQ---${f?dsYb z$yJYDvq@xRJ=EDdLkR@)F-|6&f6p7v_2C>KhpOZcb#+{QvCFsVt%mA5JK1JqdlHV0 z+JxR?+)*<-2xL_**wC3kL1s%t$jzriz&VwIWzmj~^IqLH?d7SFL ziltWR+3DH+{_3sw50uS~FdccmuBDk|b(**3ycYz3=4Y3 z(rhbMp^QA&drG6KeCaJz!VkZ`)yJ55NQH3OVAEhwEZoc%^8Xr!E@j29Gj42@lqq7> zhm1o>h=3lpz>2TFG>LhQ#uCOVu;2eif6pzuZQl|ED9vS38Q?6;{r?CjZvpzi;nDYZ zi5Ci#_vf513YKQ!Zwp@3pEY#6*TT11&q4PjybDY;)mPM0I(IrZWwl#lln?YX(N`FZ zQ4GAk6i8YduV&r(c7UTqnKvl@b1bX^$3wi3cQEboM0vGY?zs0q5pFx zge`BZqjnzN&dmBnCk5X0I;;8c^t1}B(nvP6pui0i`i65zt`W zk267R$on+~%aq3a;5A)*n1T)8S|Z$1BmLfVpHZYg_m|lslw`6m-tlMvy>*u)(hYy} zfw%7I*^h|N8+E5Ieb+L^BgOzkMRE2!abiTvJpu|uVOs-1`ew)l5F~g1Lku2L6dCrD za8z%pPtf<^VdhEBDaq1ffd|-%l*+3^M9K}((uy-h06P=@vGzVzfzUa`Kw)V{+?w$h zln<|#Kn^6jazrvp>nDiX)Yzp3<|o z9TuIq@bj>^Y169jPM47(%a)F^{DJTB-rfjK`v)`JON%tfa_b|O`Q*{P-t^XJfw^L) zm2syBZxKe7Oqq*Y35@JDZsvNhllyAWWaB2>ygdHrJTSO_aHXC$d5!63ZoDD`H{Db} z>$H2OQnegf?WcfDQ@5YN`6Q0=>UDiVuGj(45&^;o;7cdv*nQd@8QFEyyY|(nbZ^4m z@tHqpe?P_nQWEi~S5s14vy$*YrnBHC_LJx}-JKr!#LGyYEdQL`(mqzc(g!)gp&d1Dfa1QR~{iHnR!T!R=nt z!ZgA?!{tz_@>a;@wHuc)bl!Z`fqx=+Ty@@LE=JqsvQBR_8(lkrjRnd3$_*{Lt!a}6GJPknFUPxw7Oc<=r zOjgLZg{fOeQd-m!=VUA7#TM7AWKCqs)pourK)$O^`%rLREnWlN#`RMohP-Bs3Kn}ap(-zk;MaKnlo65=Qi5L!$9JOc=CDMo%a}5yZ>?x z8|=j^HQ2WP21GS`u(`fZM9V61z&-*KeF;fr&r{dow-{zCF@v*@pY==_pDi_9ygTp8 z^)NIY9e#81X?ncGI)w=>Fi^Skn0~#=yZC_VY-u?;Qd|?8D0s&95@e+Iki9=9DKUzc zy-vUm%sbAu?RqHasI#rkJi?tWh+>CP#`KBNc+SXw90TOQH!-pu!DD{~H(0NLYpg!S z<$dMzYgxi`7N^_X)M@yBTiLPt)d29mAtj|jJ7!@d5MN`%o8M{w@mV2@cDNvdd}4JV zIXTi*6OPi-s~q9g;6WOGxLrO^fuHcy=%$w7*;-CvmrgP=FD=<6u}bPFZ~Jnx21SzgkD>Q-%?$mmI5t4Zrs%$3V-2AgHv-DxVB8GG$5 zKz#CvOZAJHs`XBCj1~T1cQN#H^m_QBOk-553x7WE!Z*V{sppidC8360!+n_S$oUDB&)3JtbCq$xX?XqDw1$xGTioGRSGuTe zi*mbHXcc&*FYQ{r?MukXq?7Vt@8AyY|+6iOK>N*dY~$0k3>EhNWGnO#)UPq(F_p1lFA?(z+P*hbwu>$)Nn)5n#$KzF{<$~g;u096Yg>X?+g1q7$$9KjW%)k4x%6;aV70@=rKXUZEVoR+7M0GW^XE1YSdqkL|u!J!c@o4!h zTP6(>@N78QDIIY=Ff#Z9%;EiohhZ5>;>qYz=S)BS7^G)4^Vwa;?>*m5(A`;g$LKVE zpIpll?T0>BJs!+`28gke$xu#iOedm=8pUPIHkl+sAd5oc(Vkn$RF+`T>C>JEGE@$RAK;wb!kyre{|^=Zc^7(6a?D3 zCS$xwIK-F__i7^#YveptG*eDoP^eJau;1`&aKFJ(wIN}VwS8Y)vYmW?0D1`_&u6uM zkBkKuth_c^8o>Fad}q(r8G@}z{A|&sswt-h9vWU(D?Q5>o=R^C%Rj0$tyI9);6HT^ z9UqTR-ai-$Kv&pxv3+#s$0w0_;=z9Xt=Z$PQY=^cKlst_G(j%~gV&q2CxCB8`yST4 zs8x7{5VCI;dd*PPWrv`BnmAk#L9o^f_cCV5c zVW*NL@c(q>dx64hkAELU@mWG@DW(3zW8C>oK~d%Wdpxi%-t{iU4;Q)tl!mxhX&eYC+g-G98i!1fJRc~z_S#s`j~R3)uD zE}x!CpJ>#C^H#YIeSeuMySZ|~X_&lLY4AZ{+Yg+}nz)AC@BL!7Gw^c2o7Vr0k3d#V zE;4!eHZTY^h>}{@bu0(HO%%o>GrTo4u;0_>=OKQG^-(jPQ?krUxbfxd0)}QVc7>GObjr%Fd#dX|k*cP$^NO6rw&$3xVlEr*k zsLz^aBtkSXQd6j=F+efD%J}qYNzIt`M4?(v)Jxj7PTYzCm0>oXeV7YnD)#vHiSIj= zKUtql%DF0(ecg|vB)0D@s)XIgXi10I=cc9h zJu>wFa{Lz_6qHTeh7vBQ)H44i+b^0H0>)APOY-T^kfc4TS#06itu^j%`*ky6;Xj@I z+r0|<4b%1tZ+iW&Lne4>N~ocx-d|!BFX-_wrcRSbWL2BeyIr~ zW0C3Wfq_kf?l2iaWGYX!BjDv3Sc_&--UP5u9-q@z*T*s1u^B9(h~GQ9W@8Z9yEc=+ zk|csGJMZN5D&7KS+c(_5Ro$CgKLt-+rxxb7-ol6(FbZ#3=Ycbues>RRwVy zxRmA)?6_~k@ruxnIs2n((gxLA9*z^7a(T-S;fLl_hQc8CxOEh5c93~fhL$}7DQJOU z;j@Lkuagh69w_Zj-D|O~4(xOm(y5h?vKB8y>u2`Aed{Qj( z!5h}uX`P=+31g8U1<8shU&G#-xf};PE4|m5^*uB)=STW8Q&yV3;OZGk8UUAOip(?0 zbQS116NhpL%U6ZI!jIKzq+C-UQT)}5f=wk!d2=hVY2@SLZA^`31dGbcXs10kdtoWq zYCc;D4CaQ?NzhShZ@273*2|7OQoVb;jTv0=p*?u(5u;*>4iprDb$a~c+N0Do$+3E( z6bdwAV*TMQAHfSePlA?RG=xrR!S+zr>=-^fNx!deN6_pNz1P?PV#pKWcWEY{<$l${ zQ4CCD11zv-jw^DdxoyCThrcvojT@8gouwAyjo`7^c#i8)y{1)lrSBJ$NtNkB=E?QTD`Z1626JzhdHp2~ZwOSl_d zJ1H(ZI$h8W7`2=0OJY_DDRkiJ>+7)QYVlVI7Ua&n82Ew8VLVF+(Mq{fXoc|zkcO7` zeU6-nqce(oFDz+JD@W%s5dYwL+2D)Dg-TOGdyh5N2?DiJ%B^xcoq7#LlNC|;dh3ZE zLO@Zkw@Ix!cj7&H9MS-*t(QMl&RS=e53auIJBLE`SR8+vD2cF}e-pX!n5t_*M4bUK zRqod>vFi)i&HPwJ&XqeOy~b-{U5W5)gVZ0F@Ric3H&sl`pU1l*y%?kB>a>)#1n?k6 zIVtW`tQ%wT3+8?7wmSOnDrSynhtdSiGq4QvGg^tIU&yx*JyY9;?O6=osr`fL4n6Ha z7E2@Q227Tljt}*Fv-~4~{*j#?Sp*)u&c~d=dD;<C0sXB|r{lhHq%;=<5OT4&iIDJIe%5z7 z+7w-s_Dgi|t|hdoX+8T2V?YWlPt84~mvDvKCnfbjjRsJImTGS5-aO@Ruzao~TI1{c z;Ow}0_T_8i1wy&f0Tr86@Kn(x*`)o3m7}$Fqs~dEbS1e@vw)sbpSEi%c&@6|n8(T? znK;JbB_uF0k1-^ls1g)-C3@U_UEH2g$U(txE7~#n1Da5aES^$f96#)E*nu+1ajdch z;1;p(I__QP4D=FBj%e@a0TgXHVEoWI>6xrnqB6V*N$3T$OHeQnBx+|qyLl7Vxy0&Zn>8qHZ~D__s7PH;IN8KP~{xwS;;Fr7e9t!28;+$h+WDV6i zp)qS0A-b>tiY$QQ)#JOK6nc`UDro3FxYI>NFhkN(@OeWyzFxrODw8fY0a)_UlbBb} zLce?&2q^ioL>)kxwOdg3>sK{GDY3@2HY>MAWNYg>S#G@gxjD%;BEVY9zRBF;pJ!=7W@+jdxn71jJD-E_((=tl?E}CPwkzj)7`VK1 zOclLRfeb$P#FDq0s_iNRH7)$DCC-0zLFfoq?U2VhRoK{y{(^k|^?m50(fg!%O$T&y z(%RRI8VXiZ(1xP| z2ZoAMfj)rK z7nYp>Mn5b3ku4T|adm68LJ~p>C$;St<38{Db|FTk9>F|(x6jn(LH-2f8L~K4t?7ir{+%+jJQ-fkNU z%Wo;oK$f5FGL&%Gk0eA7HOiA@j(tvq9o(`eNXy7K78d6NADuX=bWJe=bJl5!(fZZL znwRHdq(AZ~W5xC}B-DNw=Tr`sny4sq!}BgakpnnU~++oQls+8x>g zdHwwMX>CfUWF<$p5CoE5bKudsHmzIH<&p7EY4Z2&Tmq~;PqBc4>~NMtkn-m+=zPRr zosq9mw*`egWHcm{tUiOEr4*AsynGmb9F5a~{asTAzn4V0jEua)6e3v~bK=aB8jWd@ z)hFJ+t&bL;gK*9ohRGTtpE`^4zzR`RmRnR^(V&YMc!c{xjB; zMzh8$;Axb&D>5{{lrQ_crx>J z;3;B;B^d`Wx;LDPKZ5>G8y@S?P0tcbYeomJS8RR}4&eg9l{D3fJkQnoYY3P6S1Ppu_6A;_^*_`b7&rySu=Md-TP?A{=AiAOP4Shu23% zv^K;IW`r=6z`giZk(zw2FNy-462f^sfE~1bl2am{Eh~CAv0rT?7}a)v($qqb!#>l5gX7ARgHc;LsvkgWeVpRF!QuEhIq2tNAvIUMA6&_-z|)P``Dj zSB4;eI!LOx@&24=XmBI=86(LKCs65!d^r9= zVYErzY@nv#9i)*?9!02)p&RbPYD-76=ix11s`CKnFz)d2Q1e6%F<~Pa~I19k4mz zb!V`(H7^#w6-iBSi4=Q$|KWR=di$K!5`4V$w8v#t<_T-oF>9M7hO3T%<*EejtYurr zwF~Wpc373UM%!?G-MsVmrZJ&ajdm97ly~_^o30<$ZoFBOv~Ilwa^sZ)_MdPvw3i*Z zg6I?boqzdvA5IBrQ00LWk`;Z7RS|X2_4eZR>TTb{p)ipq;?5V7g%}lO{n_F73~oRkB-ul%EsWZ4DvCt#|#x@1!P%P zK0PWY`k=b&cZYF1;Ef~a!gXvh*nM@EWzC8g9Q1W^u@C~DX#;1cu=qZUVsThXFGB#c zW>WV7=O;p2XS6s7<(MEL!}#)xN-}b3xM{FZ^`|Q^kZ$_9Wq*2R0B57sjw4B_n>BE= zNnWWzogjCih48LsXpf5bdaJ?mr4{JKD8zv)*bDlpHmtUDrQ~irTP)6Vqpok@`$Nlh zAtCpV4y}5&iJzT?wH(>3j!uKcVDPut^@C@ri!W_y;ivPK((Rfl-f7Ad;hh^+(CS@U?c)+l+s+|L2Fjel}8HscC!3jMTO(KUJ zP{wc@!V@%HM-0Thh7Z&nM!f114<4qh`Lq)g84aH(|9LX2l?8cq!rB<5p8Yis$pVY#C@q{qj|chN2j( zfbl7Mn6?q;xq4@wcopEzl7SJ!N*+`76Yy?nPzil}DT^ zYPZr|pn8fP+!&6gJ-MG)|KKFir-@62yzlV zNc&EL#_@}QaMlzbkI@2T=q!4S4jkn&pnWT9eJ#HSsyb*&8l1J0yDpbn2kYDZG@rV} z%5BZy!gJ!wjG&?z*_fD{@zhKv{$c_Y|tCZ^iDRU)s@{9hq;_h+C^&J z#${6Um~6}Xa<+=Oe~8d=i`q{(mP;UiJj|U`VrqY#-4Cjm<|>zn>m$V2Y@Bc_rzhUc zLe3Dn)r#zRxKHXBZl)~Q{=K1iim75&ORl!UayGK2~2-KIFu=((ho< z+^@;BsW2O7zc`D^1JCVWzMdK!3MG9#NdafT?TghYea%OZ%ka-m+)sG2(aF`Vcbv)k z#VggPXj&J$6m5|ERef2KkF0Vr2Y-LY;R5K8^Sd984!xSlra_IbO$hIo(wZN;mVth@ z4}HAFqli3r7xXKR?8&FQ*NSUjL7u(ATu7CD2e6Is_KVuPBG$(DImWltIerHc9~i7f zgNZZme3la0fIk6GCWFLVu7(ADybKe{5u!zD`mF<`3WmZ!p;#mufu=?1ivGwQ!}m$B zOSj#3#BmKmt97KDd4_r|9sA7T*ykvlHzq|Jj zj6``%zO(ttxdAW+^T+5A3XM z5t787555&k7d4&DOkG2QBEIwlT++fQQxZ=i#-GQ`$p8r!gG$jJ&hj0`l>h}XR*G=H zKhozo*WUt7RNf(h8I^bjD)6YpTDNe63Huc{_V^||t|S1Ul5?KoLdL7m1C7V(4h26> z$hXoN7`=$QaOZ=Mckg2n^%rC$!x)ZUfhMvh`_1vcfB0}K_>wqKdASW6y44cXL<5RW zxgsB}2%~Dy*w@2+f;5blPnBwbvZy;qz*fd4B=V7nPq#Y)^$P2-snK>LFDQj9pWN7e zU>Jk@$=EXF6_p)T%@DgCgw&YfQO7g8yPgR}{$OWqTPopqp&!R&H)Eme-ZiHk zNb-|?kMa3M8295m-=PzV!rIGq5ea*QHfAgcJ9;!Ew`X+n!&{e7b z*_nT{n&}4}T=6?HpSSV5i1Yxh(nLJnSDr_K6$GUP`YXgk0Ss`M=s4_C)d^ z<3VhbFSqdcFA4^xLb8+!ev}gJ+tt2lR7dTG@6gu>2HpadzXlPrgY3Kam`dQ-{~vyL z)6nPpl9)&$lqt-S{rEq9mnI_np1i)>;dZ+%ZyNP57DTeSvJG^$xBuz8;wiH4>Et_; zjQ?2>dL(O$e?FTc^1I7_KYQ$M_6Ju8yfNo(kD&Zvp{D#x~`=L^JNtaAi)FVR1ykt-bf+{YYinjKheNITU#B^xGp7he`&|Kw?H7~^F zj6uP3;$TS4b+DjPVpHzm05pM%jgYI>VtoC&HeXEIPOEb2$?L1o(R}mB+h^pF^Mv~N zWlE4Z+hyL8cHiM54OSh9@M&=gMpU~iuQD$465aF8k>&uA`ihuMtY=F*`>;ncP_L+w zkKEK$66nLrA?6r|9qA;1K^m1_#kZgxC4AX>2dcY6>tuOWw_fg(8I&*>bS!!Fcqr`pPM)pNh?!o@SSLsdxE*K* zTvWvby{Fj$j^054nS0L zJ`)Ap$JJ4HR}GbLl}`6^#iyLCFmZ#|rF47J(?%~rjHKCxglZ4op97Cs0s z1xK{cp&_e5S3?+TK{s*E?4ZF6u56o(A5N4ZMgVTHTGpJuBIbRc?82iNpu& zhSJPk^wHfF$N)TcV8m3IkXZgj3IVBD?mUIndm&+*H&nxeTC}+nB}WD>_WS7p`vT_S_b{KU~Hm=Pat6PD60;^y5-%U;ts=j#mFLLHps;*-&7I zL87$nPiDv71@=?O`=6pUyy2VsAd9NycskFC3H>U5d(_Fq4h$y4t zZ{72+1aC@tykWc+z;gGXaOfIVPDDE2KHfv>o}7LP6;f#91O{3!zj6qqn-oi`99>qz z1}_adSTIQYPjB3;&ys00Z!A#Dn?7*0bv$D8grwam?D9CFieICoedkafG305rhu}GW zc`>xO$`i!aI^J_~A#Gd56RZy5&A@XeQP8Mp*P`jhv5<3iEnKY5pRlQO$qZ`4vIH?| zMxQXW!+C;WZR4rZM_2FHtACcwj9r}q3Rr^B@~rI2#?3ly^Ou*|V_%zc@8Cu+p7Tg& z!5iwoYP~JK)pU~XHy~*0(W}h~htC92)?}&Sy`Z6BVHIyYY_-y;ua3Z=NbbQ!iLQyZ zBgAQ${sVHzPrEX+u~clqI?Om;yi!1=st@~JW4ff3VPxn+8QFU{)6m!3_5;WVB5l^B ze+FrCZ)XK-e$B5p4a`4sJ>{2n6MZlv?!LG2EwOg%Bey<+EVZvslY6H<`1%eg*LC{l z774fEs<7RLpwB&Et=-;3kV#8qgIPwSp?+mz{nA@*m)^&M?Lz%LMwL5t&CjtIOH7h0 zhUT$>g(_|hK*xPK!SFYuH#&I_D9k=T|Gk#Hk&LVo(Lx@{}S7 zYu92)r)CzbT_?qp*Sl9mFzv2WqbCkiSDOV#B-NCHX{G)_2s)rA8(mzcfX}2Yc@)G@ zo)2xR?=!{-^*e)CdOybE7n8OhR`oB^m72KH{p;o$93;g?7ag*U@Z}XtqOcEy5p;zC2!UW~IA6rqtPL zC3vG2q{+5CKMxI()h4|KY;W$|b+Yc`++Ac`Je6vE%t2>H6avw4O>=3GHvVe0ob!q; z!|S7_49G4ri6k;n5(5G+q}T5->JHX-cBc0FHPko)e`J6p_dhv*X=JPEwTXsQhHk;|rY zhF?F#4v^+}&Eo*2t6t=+8>B-VznR}|#wAh^y$?Y<9 zMvzB%?x!q)$$Dyt(iMle_GeEt+kZ70Aw-~J<9{qn{eu9~*N_RVAm7Wv7MiEemtSz5 zjcdIMB@JwtDs`^v4qH{yUxnm-e92t`g(=y|Cxw-~4NFRlR&*;V`_kc{dNmT7&p$ZB zzSPGsp-Z!(OM7}8(qPfQbKQ4Qp;?e+$H=Hi{td{OKZ?KOq)=X41uXQs8jzj;n&9gv zFK?$Fp0Hi#n=TcR^nNoK>T64_`Oga>aQ7G=X%#BH8hz1;_rEmZk;mkFB*F%7Lni6| z1EhCufV7?Fcl7@#f*z3@Z-!oB_orL6@f)j)-e7gu6Snua9sk7>*qXKl$Hj#01_jjyA36-v6{T9CSl! z#wkofZbk78%4`C^LXsNx;~Ma-AMH1HvAf|-wG47zw@~7@*N5E0!?JJdqS){_Yx`<+ zTM!Jt{#eXd{j@la+Ex3orrX`T%yv98RvnZ|zs6GOV-Wjyk3BA^ty)q&gx8}jS;$0} zycZ)9>1Ew1bs=+9zygX{$?@jPbjg}`>nDBWz2A*V!Ld)M1GqIsYZP5a2RB0PfCB>? zm~9H>s4#vC;x@Ck50p@q~|^0iJ6zqBX;VGVGEpN)I#Od~VM3CEhKE>jzdSi5x6W`i0dtVoC06r1qMD;-CXmBW#fiprL;A_j^>d zZv66Q5a4!rjvEIxEx#5oaCbmD+|c5?`c6&e76t-G_RsmplRLxelR>WAf7# z^^T?ENk?Ah8y?O8>K+O=1#)C#I9_J~;_B*cjE=>PW| z&(F8-p7;N}$dMO0^0~)#U*~n5*LmGha-}`4n%3Ufzp~QW>brG#?Gcw-_%ep8ccA)s z^*i#EYc#4Y{)El#bif_v=^K_muJXAl;&^F=aD`sul=>7mEqiZBY`sfAwqMYjn_o5K z4k}wwhqPdvd997)TdYx^@6u!H+x!QmoxKxBdcs5w#`vv`luAdIdpSzVJm`2k zkAEA;)D&2b1uw$0jmK>vH>$my*2v}VNEt{e9j{-7U|&Li>BK2~_a7Tnn7zp|YM_B% z+{DQzB3fooByvMe;w)BgC$4sO<*85)+ZNv5kG?D>Jj|zpe@D+_ZKExm; z+^qjOzJC@IE;>u%=amb|eorf0aw335+N3S*h|rgfZoEJv~S zjRWV>l!VILJvs@)6{W1nL6>OK^dv|AP)cz{kHF;HetUzB$Kc1{R~vtc&U<1`!#i^V47C^=WC?)tc7?Tr(MU5BlOew37KUVT=7;MNu2BmdV}gZ_vI%<3Pq`~~T$-G8ufVfvlpUt^`#IGtRp z`#bI%e@!m&4~N*@Bs%feiqnOkPA+KmhTIvN^?v~Ue>dXHUIhK`Mw~S?+5i6&5j3wY zuk)`%tu0BlqcolvHNLRRr)kJ*?4uG_d86Re*%*2#e@(0qYiFH!_aU{@o2@(Yv@|`c z+Z)~MlLqcDRUyelLmu?rkbN6n3-#qqnHlwX>HOZI=QVMj?Cz7?{H8}cX+tJ;pjCCV zf~_D=yZ+1VDG9ZOObWx#(YvC_BXssFD!pg*o z#CLCq^J@mSnS7=w>q8|`wLeARCO)jrkBT1ctAY|drl`eT58ly?m2{c;#y!=n>;mWa zGHeA6(cqaQA_KWe_yYpva;Fa`1hz(*ke#*ym#K|Yure*4B<-=>|uhD;X z`0!ck5#z#K7;l+~t)z;wvn|N9>O~Y=O;iODa_nzlF4PzYSq) z@&vsDoB%^#N>aL%7kowPF%93CVU48P<8oQ2FXQ|kEjR0a*s2pyZ?O?g#z}C?Lzwu60!~~y zk9}TD0}K+J4<3?Vbtj<}zszZAYJR4;-g*0iCo#-TGjiuBjv!K#(pvA@=Oa+0^j||C zIc^()cEN>jjwbr zUN)EE>LZ>o9vjrXt4$mIl@n-=@EF_4r~|ykt+-{c<&` zb^Ee9M>s@&BS?#ITg;_#e=a>{PHQmF*+xa&;e%`k*JqUc2u^D>X1guluykZgw0pAGz&&EROv%LKZ!PuB77k0-bbh6WDI$nzcOl2|w^MI1^4oRZ)0B!H`)mIkEXk_8kqmNWoKN&Z5~oagD~W*KG27{zR#8h!ICET= z><@55Tb9i9@Z0pLDeqv*F3Ic71=`q}oixYOf4X~tR&^bFoO+i`knACKJM# z%{e|b<(js6cCYEYlqoIY zeF!|cX#?5)<)}M`%giT`N{A6{(L5p_AvSi08-<#r2t)Q> z^&B`6p6D*@#5y~_P#Yfya!qGDS)iL>%er{M(q7WwQn9imv9S|6sd{@9&1L(crwo3S zD2F)e?le;_`Yn%blJyC{d;et^?*sqCwFU6&?agA!T5?bLkQ8m#Cgaqi7!w+Aa z&24(8?wv)c;T=aYx5LBw_u@hMU54emjqmM5lb591^(yuKt^3eE<|6>Zw>2|IMHNS5 ztF(}{yR<7M6A84K>~Ak?Xya?<%0D-e8?4DaYY$<41oQBiUP1P=0ZXA;ka_gP-a!^!48e?%GXw?13%FU#= z%Z~Wlel|}|t5uvUW>1`pf*d)Kcj&U%k54aVyWdmDHq4?w`p7V8l~iGvwEvQ}dAO5Q znWM6qaCGaQFJ82VaAm+*+m3AaTpw*X%*`O7PJrc;N`~r>ibQ)!`NFSA6^n{wU1v~m z$n#1y@4LuYMFuO@X@uU;@xd}XLg9Cp=_OStWJ}#GW8}tVNfcTr^E$R&fnL^}sk~~d zn*MWF|80}dHR&Wj=8QP8pbh;jy{dgTSNLGX2kS}c1mS^zMfB&RDeG$pMl}0JLJ;)P z$~D@Z>u2ITDRD+-^Oag^Y}1YbOW4c=OH0E9l5>|g#AVjE!*}r-&1pW5?YZ~xb^OJy z7SQo6ZO&))`KT>x&OQX_)m8qBC^yVTdxLAnc}wuCFP9hWes_M61(o_cI7~?(j~SHj zH$=j_4|Pi1bCxySNSMQ0xgeyFP@vj4=k?=0uOj-&c1 zZ%Y>f_8rtarj4k2A|Pd7g_=N$dHQ}*{gAIM5=AZ?xQ!Ialo(Jt0#p?dTf+q|ny>nT zpR}||DBETQe!a4lJ1BtY6@*2WCB=&`yS8_F0sE;_Km@IMGdocG>3OM$?Vf0m)Uo-w zM_54y$XVEej4Hpb;NtxGD;zQ=X*ZGmP8?iAME)Z7PsX~fF&_Ib2l<7v- znZ*wHemx|_wa1VeWy!GU+4?3|RvM_ou302D;8Q$+I37|o3}g8%q0$_vZyg_adPBh| zE*$lnbkQm+RHG^&a>UrQ`ICjFrOdpX7ax{-S+U4U!F;$8KlQA#9X22j<&rjHG&(t6ylWK4 z_zrLGiZuWmn0GN!iG;{H9SZ8oSmp8x0E@Hf5{H3(W17eXNR9qFCD@1lwh-^lWJ^rc zL8EQ%@FRqxzim!MQy&oU*Bff|aLd3^ zD7!B}#`~OnPPBXzWd@T!u`6VlOKsD|&fPH#dE9inE};u<;ulS>(&-17+^z9_3A}8Evkzi#Y5T=~={OvL$5k zJQ(zV|4Zc=$e_$Y1Ewg{_y)-6Z#oH15bvsWrMJm@$cbf_wmY6tyD^~vv-#C#7kkjY+1_PCaQtar(E}4E%zYr)pS8c7ls}z)}{s& zhZ!|+#ZFAcH_++yv3)#w5{(+=%dR1BDg6NQ7muZfxWccvmmPwtBIIH37wTtzLMc%T zfiB`jE01Si*opG;DRmf?2giJKnsvWIn5HQ5rfJldxKGNQja{9gSmqEU8e$MkR)Zy# z0)m-g%x~S@o8S273)TbBBk&a^&SUDVtDf)`;31v%hI+=zHRC|nUUMem{=v_$Wq1Xn za>(J62NTZ7-%8aXJ5CzYUwPKx^OUp@O1N>He!)h_uwvw47{#$1IIbvgIcl&l0-k0Z z_aK+u4qIoYWt;395SBK?GOIad`(8IT&|g(o?XF?4DxITY)J+oq#GTk9fZbD1%Jp+B zio~$HX z2AY*$Wg5rA$pRakJm0bcw;p-nb2=oi34=_^$Yt6DXQz^I&u%`tP5Q0)^-k&vs>f=c z_mKYlrb!B|ijCM$^+)?_;lU{ljGHTsQ`_MQS(M9Le9FqGIVLvv!yt(>%qDBlszzY@ z?PkkrcFRUNPF%q3I}N1EUN1g&tZ7f$pFQ)9V0q=P1}8?c?c?5qXbv^lZDed%`;HW$ z#YMkA+5Gi`h-k~c8~29roxq(^)vs2fQt_(9xpd>G78RKP@q7WTQKgtI4`1n+C*Q{j zN=~R-a(K{w=C`@urvfwgzLI^%sp-%M!8LQQKaMtkd}Z3yWTS6UxTFBvjMYTI_nDbZW=wLdI#E907GU0|_`QdRZ8$}TfT%ELBRJ3+fq>F`rz)CX!yDT)ZMec-7Kiu z?NY>g(UflR3|ZRS^`=cMDR4**mTK240p@UzS49{O=~=!!eAd@I#mEERX#QOtIYmF^ z+!5N<4V$dSb&t{KCIZ$*cAu{cfIkTf;QKngwKG%wI4xi4MEU~zB3#0!LNfZB5n5v# z_tY9)9!Y?U1T7WGH1b>d#`@F7Opce0s&}JGMRJ|p;NqZ8jdIP-gQ8b+tu{)URY6}C zrUUD9S{%PR`-7hh9!0PtfU|}e#)!AE(}1#2Q%C-;HJ!}+<&-9I|V(JS?o#A`v();%an9+g#f! zV?{9!y>f`^Nra9l9kD-r|xAH>#^)Nk!6_zDh=c8GnS+7azt z#EPGH2Cy^*X^TsM_?_kFwCSlpV=kX2#5wUtEXnwC&W}g+^=-rH`nZe$WL>{ zou7K86GQnA)%JTVF#5CCi>vEbI=vx_uOt2D>DeKy`TsP3siq6@+_;Rk4s-zaPJp7d zN|7{erWX0Nf&ej0C8lHJ{WGm(IAPQZYJW^;qEMF<3hYumm~1r z1`7EJanu_L7Znx+gCp`^&u3aOmLB4e=Sosq&)3fPB^>2IG}oE6O*08`&0HAj%Jzkz# z5R$(uW;F#wz2a~mN;IU3h+yOOM7}wQB1XX_^om`6IdgSQW;&7&zrBMs|8mfg9J>b= z5tT}F-FRaYupO`xX<)au>nt&G2^`Gdd^2su?C1q-9*r97#2*k+zupNrq#W<@9}jJm zOQlhCaO{^jAwK~}dLx()gC_VocY-i!yp^%;(Qx(YTfGGMxbzDId9({hv$A-nC+I#_ zD7dsEHLJM|)gm2U@Y=(O1+vi@Jx04yI@4e!0?L;I9>I^hMMBqaFJ`EnmoC1xRRnwYrCnwy+aApS!MMn?FhJ(Df z%i_ZI`_+J=b0e}|6Q{Ss^2|i=`2ANXcPgsnp#n|1(uInS=~+JRi<#T#dfFx{Rk@8w zrGzX|G}Z^F#eDf?sVLy@u7=%v?}tyZMy$VJCwHCNHCFT?{Jcp{9pN~gm%3=dbguDm zjh7ulF>G&&+^;*q_sfwF?%qXEnuP7+URaXyj6TD~_1v-|uo?cbhKW3z5)*GZm zx3X6GWa^jN`V+l&+aA#P3o?B-w z6o(!iNzL*>4cveqWjrK3ZH$A{B&(SKmaRC^zcibbxu>TNel&!apXalg6QTA{bo<6o zQPSRr&QE;}rrrVPlQd1azRk3Hd-0Cn7OGKW)MRGg2u^h6?&`}=ovJ_7vV>m*o8Prb zW&Dt>nNu=ubdm>MwuIw`oq4NI%Xa=m^gpQ`vtAimfc?lHys6K<$qFc3mKS~_zm&Ja z)4cGvtpWGHV~L`jky9Od4o z-GK1Q?av&Sa4_v!Upm>qla1KVQ+w5UWgilBM2;Ah6zSFJZ8c9oUkFZj8v(K|IX=X) ztl;wFo;rgBujc~WWQUSs%t%TKZvI(RHIEKHBW@tVy5I!XpW3u;`=WvF%koNqx;xBu zj6cro$||)fFXIuRX7CX`?xSS%_>9H!?yl)gD?G&j2k$=&JdAuholnTTjgVSK*;qW} zE2~i8F_k95@6td|h7?adE%5hkse%x+ZOx3pmWfaN!+7`LHq-p(8R9RZ@l9ey@aO}S z$;_I!su?SZun9%C zy4Gk&5ubLw&L(qb(iAO3!Kz4Rg-abFL=vk|$jVh*aAIo~gQ8NYbk}9FUEgn5eq9Ud z%gxl#wr0A%)(Qo%XxwdJ?~f<5PvroH?R4A**iSFTL(%huzdo>lO@7)~Of3KNIGgP!c*ln1# zYeiLTg503>5cV)Kj~BGu%!}^W`q*n&lfr9UCMrGAv5V88jl!FkhI?bm@XP$5>KP=V z-(fDW4~65K@P(L2*3-sLi`%tJRM|^|1eES51ESU!Ax>3mHez855QiD{zNsM~itwms z=8Z?l=uE_-ugHm9V{fPN&$!^q&VIR-q}a<#36GP>=aXf)Q%g_;wejAxzL2t;1jaru zKOO);(S%7zaP!Xo#wC{@ZwiPHY*IpY^yk!%B$5+la_!;FoNsM{r4cCS6a_`Pq^ydBRm3N8NBY)dTyg88HK~N@;yy<0W9_OI`UY z(|U?T?}l>~11>(*mRMhaPNGcIp!&`BB2qqdXs$H%5r4+2n&no>r+W_fHxV4)5x}i) zMbadtRWMr1vAQY7s8@8s2q1`J;QET*l8!NQ({hh47NXw~w}q5?t}BQc#B zTE}2JmeOCjQYbG^v-pA3(h?Y}&T?cBwSRL!mwJ(awkEQ2PDTl>Jw=ZSI#{8pXa-go z=GY@<&3w5U#GA7^pF}`%?eg?lJxedE{tB%5q1p58xCc?u(C(oe8pQKUa2_*w(a`4=*h5 zw|X819e@0uI@srCq7G|XY=UBsYj`pD7=A~zEW$c2w4^TeZ9eF?P43~7UzED{e(Dvy8p&_PJT*o z#A?qSdF9|HT8hVkbA!i=yC~dJgagUet7ucjl#}t$1aYtXm_GTTKObPKS557eX(!~h z?=Jq?37wYcR<0@|eF`4=B%p;l{o`3)_A=D~kdogwCz>l6Z+6d$ZTf)^|FrRe1GEjM zn*7!eq_ueoxt}`>r=}Zn@0yPKx;D@*_MJb+sH1up%*KHa;*BsAM87n5?XR}nY-E+a zDs1V-)T{ufCwQMQ{%qi^1UqYL7tO(OQeGEF&s(tKvCtj}eWiOqAj|LO;7=%>fjquxxr-Z7h@ zk#Yi{DS`S+)r&dEG4siXCw?3N^Ez(0LdQ0}t-8FqY;+5f&=@6szj^i|jytv>+P&8Q z(4jG8`*J3y*a)`a8OogE$N{(Dcf$6f;UZp{H&%r~m7r@4@wKLveRvnb6yn&d;j!4y z-f%ty=EQKj$c{3T!s!sX*_HCHt@yk`a>KGqCKf@BmJg|HjZpz-+!2P+jJm_YAsyFz z+(}@qPWJ=qmoncSuC}`&i_iB&x1KkM9@^D+DjqjCc(v~Wbw#p(YcrjBpvz?F%kUb8 z-8hR+)1K0ZZF%VDUFjr2VJ8ch#jn;7;Hf7>C7{%T1gp7qR&7=kfdJsH(Vic;kjZS= zQ;Mv)=&KMD;Qr65HcVJEn>~Dj)ou4~v&LN>J!Bnun_UAl3ykH`p*UHa_zb57B~95W z@D>d;dNZIcRK+R}uO@RI>o+CFfhsFtZ8?JX$J_crrpt8W@{{-pTH1ua&nyB#8+u=Yu4Tp5cU8H-YAVaR=l+3$3Dd-KvT(AB|Iuj=R>WeGbLU$VXT=6ic`m~^*(~Sa{FA3(-08gU z??M)Sm6{I7kDWF*lf{kxWhyr3DNUC;Z>^nl=v4@P~_1!lq^F`9S$4Rf7niTU;xFkj;&G9kY?yKkrF z#UMRi$L$EF0@*=;t*SKWsV2J_3Ggi~WPQW@vJWduXvIMboKxsRlV(QSQGucR7}-=_1vwzU+sQfX!baQ-&- z0>fdU)NsM-XiMtRqJ@uZpI6>1WXEr=szsLo6N(&c8LDdeik-o|S>QSM*-QDjFzm9!FWWEQ%1jEFRIPu*N+5a*=pbuQZizT4B1($w2enX^{| z&0MecCBVwGxx_TNMq95VL*tq_b*R^--WYz~@seDHda2X58_v&W0eIK8oG&T>&AK9c z2`eHXCVK3B=558nX%_FeHY6BynkiJD=c6oDydS{4syUy&lXK_b$;bA^D5LlXsPaKO zAkeNb+tVz0O}TG&YFm9I`Tev*`G|_A;$iD<4~YtcMT;r?&Xsi$U$A^H4!X>1lV&zL z93OBllM_I??gqitGdj+^k#D4V85;(Yh_RZ`YwOMDd|?A10N z(c>QPck;)KA^Z)>IgmjRu0DTi6MTnG6n`W1`!R{$k`#gQAZTai!=<3}GLMwZ@_2?E0Jy_>prLAS0tJts7GQ;^cxULa74)9FNFC(XIVzCa>{!EFJyc`byoJ4 zw{J5%Xhc$gDZ^mg-mH_KwHldhdRswnB)lsBJJ9u);5y~P+-n60ORRun{#RciAtqO} zP=3DhS>4N#4u$26RLpR1Uz$R!447g`jGh|R3VQB#DOihMab=Mr1Fs~VMQwLA!c}ZQ zoy#365@Nj)TE=Hv7Y~vLnm2*V0KDLydl#wJest%`-lLE5o_rZxQJa4?rP~{kzBTwm2S*twO3$*8gH6A!=6>h`T!oWR6BIjhqKm?j2h4-eDK6@TUTZJJzWS{E!Uu|bn4AB_FGyibwE8vY4v zTdXUcv>0O1m9!e)Tb%TsrYU1wH6>zZdBEs!Figh8NJqrL6KA8L?)=*E`fb zYd+?y8!fBkE(9jKGuY6r-tRatHhH~u%ka4dFLOC`G-aWRaC_{Y%2Ma9i_z+bK?Ozv zmuCG6b(go3Xo3dfXnIjP3%Op9*v8d4VgSD{yn7zKWPbDsV)Jt~NXAa!p{!CR zIdVTazrD@)(z5w)TZPO^GD??vFP|ct{OX`k>DyI%moYKFKHZcUJa!FMCePhoby@Vn zh7RpSj*~_5y2;4;Vl*G`6N$f|CG_>l+WNNe8a;6SLX!LgsM}8 zWLU+*hu+h6fNz-8AtvwgHut%%rp!vlR*|#f^jruP2=QZoR-L2{r3-SYy-i1{1kSwG z-W4G*cwK8C)%y8_^8=hh&Ns`6d3AaRiScey0dd|n(YTV&wy!oykXnc-WBEr|C>QCL zZ8GYja@1Jcv+@UbuiI5pP|z?uxO3}yFKf+_=6zLRh3X(X!tI`aiT;9g81^WRt)N<} zp>I{_KO7Rbb*%crWlp0hw~m(8)~*@y!%Eu;p&qT2ESzff?!NmSVF$|=!iq29sFr7| zd8#*7f<`kFU?hA?);8<$Q?9e8JeC0#!W5qGvh)k0+cQz*5{MtepeGfct+>ah-ybSs zUI+$7mB_Qjg+VXhP3f-pgG( zFqVtAs*^MKc-0{sx5Cp)DuBRPZ=#pqTUM7+`$F_SoGO-B7zVFn>4Ybzb5Kk#gW5Z1 zT=cqQJLcS{z&1DUqQ`EoJeE6i(Tfc?rRQL>g>ai^j+&KiOYSQkzOQ46sV_d-7saRj znyR3W9eWCjJ)(kAxE|(tXGAl}<*SNMZomJ~fo!mmn*})L!2`+vnh>1#fZ*%z2bM-%S_cFkC*6PFVJ#9 zsdoVF5#ulF9F>R~ zP|A`&mKxGJT{kAVk$)-KQUm#C*L40tvA=jsLl>=nNPS20kKpa^ubm3s?2YxG)1FVg zM#C-qr0;@*b>W%${HNdi*`Edzd(=n6v+nftb7j<@29uGQ3cbG?Ow#|fsyu?+>;JpK z#Q2Y>w&XbZ+h4ylob;!`WL)}H^1mP6io0?u&xP;Q6rVMUQ;~6MAx-*nrX!}zJYD|D u-;ZGpO4C)BwUup&v(EeL_b6ERTCUyys<8hXrA~4BdT>|gPRVVv;Qs@DV~Pv_ diff --git a/docs/commerce/checkout/img/checkout.png b/docs/commerce/checkout/img/checkout.png deleted file mode 100644 index 344dd6e5949b57f81cc2e76a13863038702bae7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36190 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 diff --git a/docs/commerce/checkout/img/reorder_button.png b/docs/commerce/checkout/img/reorder_button.png deleted file mode 100644 index 91054c67048d6df7a07989d1756b4ccbcefac2fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127985 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 diff --git a/docs/commerce/checkout/img/virtual_product_purchase.png b/docs/commerce/checkout/img/virtual_product_purchase.png deleted file mode 100644 index 771f139ff6af37e46cb08735b5dfe55d89c28ecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45098 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 diff --git a/docs/commerce/checkout/reorder.md b/docs/commerce/checkout/reorder.md deleted file mode 100644 index 96f83c6beda..00000000000 --- a/docs/commerce/checkout/reorder.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -description: Reorder allows users to easily recreate their past orders. -edition: commerce ---- - -# Reorder - -The reorder feature allows customers to streamline the process of repeating purchases. -Based on a past order identifier, the cart is recreated and validated to be eligible for reordering. - -## Reorder workflow - -Reorder is a variant of the checkout workflow accessible exclusively to logged-in users. -It has the same [configuration](configure_checkout.md) and [customization](customize_checkout.md) options as checkout. - -Customers can use the following workflow to specify orders they want to reorder and complete the purchase. - -1\. Logged in customer clicks **Orders** on their personal menu. - -2\. Selects order they want to repurchase from the list. - -3\. On the order details site, customer clicks **Reorder**. - -![Order details site - reorder](img/reorder_button.png) - -4\. A new cart is created based on the past order identifier, and the availability of the products in the cart is validated. - -5\. Customer clicks **Checkout**. - -6\. The system pre-fills address, shipping method, and payment details using information from the past order. - -7\. The customer is redirected to Payment and summary section where they can edit the specified address and the payment method by clicking steps on the workflow timeline. - -![Reorder workflow timeline](img/reorder_timeline.png) - -8\. The customer pays for the order and completes the workflow. - -## Configuration - -Reorder is a part of checkout and as such has the same [configuration](configure_checkout.md) and [customization](customize_checkout.md) options as checkout. -Below, you can find a few examples that demonstrate how you can modify this feature. - -### Customize reorder - -You can modify workflow under the `framework.workflows` [configuration key](configuration.md#configuration-files). -Each workflow definition consists of a series of steps and a series of transitions between the steps. - -Below example shows how to set up `can_be_reordered` flag for specific order statuses. - -```yaml -framework: - workflows: - ibexa_order: - places: - !php/const Ibexa\OrderManagement\Value\Status::COMPLETED_PLACE: - metadata: - # ... - can_be_reordered: true - !php/const Ibexa\OrderManagement\Value\Status::CANCELLED_PLACE: - metadata: - # ... - can_be_reordered: true - -``` - -## Reorder PHP API - -You can manage and modify reorder with a dedicated checkout and cart PHP API. - -### Checkout PHP API - -Reorder comes with the dedicated `Ibexa\Contracts\Checkout\Reorder\ReorderService` interface. -It contains helper methods and facades added over existing API to ease the order manipulation process. -The following methods can be used to modify the reorder flow to fit your business needs: - -#### `ReorderService:addToCartFromOrder` - -Allows you to add items from a previous order to a cart. -It uses historical data from previously ordered items even if they're no longer available. -Those items are validated against available stock. -The method uses the following parameters: - -- `$order` (OrderInterface) - the source order from which items are added to the cart -- `$reorderCart` (CartInterface) - the shopping cart to which items are added - -Return value: - -- `CartInterface` - the modified shopping cart containing the items from the order - -#### `ReorderService:copyContext` - -Copies context information from a source order to a target checkout. -This can include additional information or settings associated with the source order, for example, address. -The method uses the following parameters: - -- `$sourceOrder` (OrderInterface) - the source order from which context is copied -- `$targetCheckout` (CheckoutInterface) - the target checkout to which context is copied - -#### `ReorderService:createReorderCart` - -Creates a new shopping cart for reordering items from a past order in the same currency. -The method uses the following parameters: - -- `$order` (OrderInterface) - the order for which a reorder cart is being created -- `$newCartName` (optional string) - an optional name for the new cart - -Return value: - -- `CartInterface` - the newly created shopping cart - -#### `ReorderService:canBeReordered` - -Checks if a given order can be reordered. -It evaluates criteria such as the order's status to determine reorder eligibility. -The method uses the following parameters: - -- `$order` (OrderInterface) - reorder eligibility - -Return value: - -- `bool` - true if the order can be reordered, otherwise, false - -For more information on how to modify checkout, see [Checkout API documentation](checkout_api.md). - -### Cart PHP API - -Reorder also facilitates `Ibexa\Contracts\Cart\CartServiceInterface` interface `mergeCarts` method. -For more information on it, see [Cart API documentation](cart_api.md#merge-carts). diff --git a/docs/commerce/commerce.md b/docs/commerce/commerce.md deleted file mode 100644 index 9e84ecfb728..00000000000 --- a/docs/commerce/commerce.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -description: The commerce component of Cohesivo covers various steps of making a transaction from listing available products, through adding products to a cart, to checkout and confirmation. -edition: commerce -page_type: landing_page ---- - -# Commerce - -The commerce component of [[= product_name =]] covers various areas of managing an e-commerce presence: from configuring payment and shipping methods, through processing a transaction (listing available products, adding products to a cart, processing checkout, and sending confirmation), all the way to order management. - -[[= cards([ - "commerce/cart/cart", - "commerce/shopping_list/shopping_list", - "commerce/checkout/checkout", - "commerce/order_management/order_management", - "commerce/payment/payment", - "commerce/shipping_management/shipping_management", - "commerce/storefront/storefront", - "commerce/transactional_emails/transactional_emails", -], columns=4) =]] - -## Configure - -[[= cards([ - "commerce/checkout/configure_checkout", - "commerce/order_management/configure_order_management", - "commerce/payment/configure_payment", - "commerce/shipping_management/configure_shipment", - "commerce/storefront/configure_storefront", -], columns=4) =]] - -## Extend - -[[= cards([ - "commerce/checkout/customize_checkout", - "commerce/payment/extend_payment", - "commerce/shipping_management/extend_shipping", - "commerce/storefront/extend_storefront", - "commerce/transactional_emails/extend_transactional_emails", -], columns=4) =]] - -## Explore Commerce API - -[[= cards([ - "commerce/cart/cart_api", - "commerce/checkout/checkout_api", - "commerce/order_management/order_management_api", - "commerce/payment/payment_api", - "commerce/payment/payment_method_api", - "commerce/shipping_management/shipping_method_api", - "commerce/shipping_management/shipment_api", -], columns=4) =]] diff --git a/docs/commerce/order_management/configure_order_management.md b/docs/commerce/order_management/configure_order_management.md deleted file mode 100644 index 05be3fa4ea8..00000000000 --- a/docs/commerce/order_management/configure_order_management.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Configure order processing, modify the default workflow. -edition: commerce ---- - -# Configure order processing - -When you work with your Commerce implementation, you can modify and customize the order processing configuration. - -!!! note "Permissions" - - When you modify the workflow configuration, make sure you properly set user [permissions](permission_use_cases.md#commerce) for the Order management component. - -## Configure order processing workflow - -Order processing workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). -Each transition represents a separate order processing step. - -### Default order processing configuration - -The default order processing workflow is called `ibexa_order`. -To see the default workflow configuration, in your project directory, go to: `vendor/ibexa/order-management/src/bundle/Resources/config/prepend.yaml`. - -The default workflow uses keys defined in `Ibexa\OrderManagement\Value\Status` class as place and transition names, for example, `PENDING_PLACE` translates into `pending`. - -You can replace the default workflow configuration with a custom one if needed. - -### Custom order processing workflows - -You define custom workflow implementations under the `framework.workflows` key. -If your installation supports multiple languages, for each place in the workflow, you can define a label that is pulled from a XLIFF file based on the [translation domain setting](back_office_translations.md). -You can also define colors that are used for status labels. - -To customize your configuration, place it under the `framework.workflows.` [configuration key](configuration.md#configuration-files): - -``` yaml -[[= include_file('code_samples/front/shop/order-management/config/packages/ibexa.yaml', 0, 66) =]] -``` - -Then reference it with `ibexa.repositories..order_management.workflow: `, so that the system can identify which of your configured workflows handles the ordering process. - -``` yaml -[[= include_file('code_samples/front/shop/order-management/config/packages/ibexa.yaml', 69, 74) =]] -``` - -### Define cancel order - -You can define a status and transition in which the order can be canceled by modifying workflow under the `framework.workflows` [configuration key](configuration.md#configuration-files). - -```yaml -framework: - workflows: - ibexa_order: - metadata: - cancel_status: !php/const Ibexa\OrderManagement\Value\Status::CANCELLED_PLACE - cancel_transition: !php/const Ibexa\OrderManagement\Value\Status::CANCEL_TRANSITION -``` - -### PIM integration - -By default, the component integration mechanism reduces product stock values when an order is made (in status "pending") and reverts it to the original value when an order is cancelled. -In your implementation, you may want the reduction/restoration of stock to happen at other stages of the order fulfillment process. -For this to happen, place the `reduce_stock: true` and/or `restore_stock: true` keys in other places of the workflow. -Make sure that either of these keys is used only once. diff --git a/docs/commerce/order_management/order_management.md b/docs/commerce/order_management/order_management.md deleted file mode 100644 index 499b4c9f23c..00000000000 --- a/docs/commerce/order_management/order_management.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: The order management component covers creating orders and managing their lifecycle. -edition: commerce ---- - -# Order management - -The order management component enables users to search for orders and filter search results. -Depending on their role, users can also track the status of their orders, review order details, and cancel orders. - -From the development perspective, the component enables customization of the order management workflow and integration with external systems to exchange order information. - -The component exposes the following: - -- [PHP API](order_management_api.md) that allows for managing orders -- [REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Orders) that helps get order information over HTTP - -## Order management service - -The Order Management package provides the `Ibexa\Contracts\OrderManagement\OrderServiceInterface` service, which is the entrypoint for calling the [backend API](order_management_api.md). diff --git a/docs/commerce/order_management/order_management_api.md b/docs/commerce/order_management/order_management_api.md deleted file mode 100644 index 2dd2863c612..00000000000 --- a/docs/commerce/order_management/order_management_api.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Use PHP API and REST API to manage orders in Commerce. -edition: commerce -month_change: false ---- - -# Order management API - -!!! tip "Order management REST API" - - To learn how to manage orders with the REST API, see the [REST API reference](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Orders). - -To get orders and manage them, use the [`Ibexa\Contracts\OrderManagement\OrderServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html) interface. - -## Get single order - -### Get single order by identifier - -To access a single order by using its string identifier, use the [`OrderServiceInterface::getOrderByIdentifier`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html#method_getOrderByIdentifier) method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/OrderCommand.php', 48, 51, remove_indent=True) =]] -``` - -Use the returned [`OrderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-Value-Order-OrderInterface.html) value object to access details about the order. - -See the [Discounts API](discounts_api.md#retrieve-applied-discounts) to learn how to retrieve applied discount details from the order's context. - -### Get single order by ID - -To access a single order by using its numerical ID, use the [`OrderServiceInterface::getOrder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html#method_getOrder) method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/OrderCommand.php', 54, 57, remove_indent=True) =]] -``` - -## Get multiple orders - -To fetch multiple orders, use the [`OrderServiceInterface::findOrders`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html#method_findOrders) method. -It follows the same search query pattern as other APIs: - -``` php -[[= include_file('code_samples/api/commerce/src/Command/OrderCommand.php', 8, 9) =]][[= include_file('code_samples/api/commerce/src/Command/OrderCommand.php', 10, 14) =]] - -// ... -[[= include_file('code_samples/api/commerce/src/Command/OrderCommand.php', 106, 115) =]] -``` - -## Create order - -To create an order, use the [`OrderServiceInterface::createOrder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html#method_createOrder) method and provide it with the [`Ibexa\Contracts\OrderManagement\Value\Struct\OrderCreateStruct`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-Value-Struct-OrderCreateStruct.html) object that contains a list of products, purchased quantities, product, total prices, and tax amounts. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/OrderCommand.php', 88, 98, remove_indent=True) =]] -``` - -## Update order - -You can update the order after it's created. -You could do it to support a scenario when, for example, the order is processed manually and its status has to be changed in the system. -To update order information, use the [`OrderServiceInterface::updateOrder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html#method_updateOrder) method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/OrderCommand.php', 101, 104, remove_indent=True) =]] -``` diff --git a/docs/commerce/payment/configure_payment.md b/docs/commerce/payment/configure_payment.md deleted file mode 100644 index 1bb7cdc5b03..00000000000 --- a/docs/commerce/payment/configure_payment.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -description: Configure payments, modify the default payment processing workflow. -edition: commerce ---- - -# Configure payment - -When you work with your Commerce implementation, you can review and modify the payment configuration. - -!!! note "Permissions" - - When you modify the workflow configuration, make sure you properly set user [permissions](permission_use_cases.md#commerce) for the Payment component. - -## Configure payment workflow - -Payment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). -Each transition represents a separate payment step. - -### Default payment workflow configuration - -The default payment workflow is called `ibexa_payment`. -To see the default workflow configuration, in your project directory, go to: `vendor/ibexa/payment/src/bundle/Resources/config/prepend.yaml`. - -You can replace the default workflow configuration with a custom one if needed. - -### Custom payment workflows - -You define custom workflow implementations under the `framework.workflows` key. -They must support the `Ibexa\Contracts\Checkout\Value\CheckoutInterface`. - -If your installation supports multiple languages, for each place in the workflow, you can define a label that is pulled from an XLIFF file based on the translation domain setting. -You can also define colors that are used for status labels. -The `primary_color` key defines a color of the font used for the label, while the `secondary_color` key defines a color of its background. - -Additionally, you can decide whether users can manually transition between places. -You do this by setting a value for the `exposed` key. -If you set it to `true`, a button is displayed in the UI that triggers the transition. -Otherwise, the transition can only be triggered by means of the API. - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/packages/ibexa.yaml', 7, 39) =]] -``` - -After you configure a custom workflow, reference it under the `ibexa.repositories..payment.workflow` [configuration key](configuration.md#configuration-files), -so that the system can identify which of your workflows handles the payment process. - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/packages/ibexa.yaml', 0, 5) =]] -``` - -## Configure payment methods - -You can define payment methods [in the UI]([[= user_doc =]]/commerce/payment/work_with_payment_methods/). -There is only one default payment method type available: `offline`, but you can configure more by [integrating with Payum](payum_integration.md), or [add custom ones](extend_payment.md). diff --git a/docs/commerce/payment/enable_paypal_payments.md b/docs/commerce/payment/enable_paypal_payments.md deleted file mode 100644 index 945f4a86068..00000000000 --- a/docs/commerce/payment/enable_paypal_payments.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: Use Payum to integrate the PayPal payment processing service. -edition: commerce ---- - -# Enable PayPal payments with Payum - -By using Payum to integrate PayPal into your application, you can offer your customers a versatile payment processing service that supports various payment methods, including credit cards, debit cards, Pay Later options, and alternative payment methods. - -Before you can proceed with integrating PayPal, you must [create a PayPal business account](https://www.paypal.com/bizsignup/#/singlePageSignup) and obtain API credentials. - -Install the PayPal package and the required dependencies: - -```bash -composer require payum/paypal-express-checkout-nvp php-http/guzzle7-adapter php-http/message php-http/message-factory -``` - -Then, add the following configuration to your YAML configuration file (`payum.yaml` or similar): - -```yaml -payum: - gateways: - pp_express_checkout: - factory: paypal_express_checkout - username: - password: - signature: -``` - -!!! tip - - You can replace `pp_express_checkout` with a different unique identifier. - -Ensure that the `username`, `password,` and `signature` fields contain the PayPal API credentials obtained from your PayPal business account. - -You can now provide language translations for the PayPal payment service name. -To do it, within the `ibexa_payment_type` namespace in your translation files, use the provided translation key structure for each of your supported languages: - -```yaml -ibexa: - payment_method: - type: - pp_express_checkout: - name: "Translated PayPal Express Checkout name" -``` diff --git a/docs/commerce/payment/enable_stripe_payments.md b/docs/commerce/payment/enable_stripe_payments.md deleted file mode 100644 index 5d03bd88290..00000000000 --- a/docs/commerce/payment/enable_stripe_payments.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -description: Use Payum to integrate the Stripe payment processing service. -edition: commerce ---- - -# Enable Stripe payments with Payum - -Stripe is a comprehensive payment platform that offers a suite of tools to handle online and in-person payments, subscriptions, fraud prevention, and more. -By using Payum to integrate Stripe into your application, you can securely process payments with credit cards, bank transfers, and alternative payment methods. - -Before you can proceed with integrating Stripe, [sign up for a Stripe account](https://dashboard.stripe.com/register) and obtain the API keys required for integration. - -Install the Stripe package and the required dependencies: - -```bash -composer require payum/stripe php-http/guzzle7-adapter php-http/message php-http/message-factory -``` - -Then, add the following configuration to your YAML configuration file (`payum.yaml` or similar): - -```yaml -payum: - gateways: - strp_checkout: - factory: stripe_checkout - publishable_key: - secret_key: - -``` - -!!! tip - - You can replace `strp_checkout` with a different unique identifier. - -Ensure that the `publishable_key` and `secret_key` fields contain the Stripe API keys. - -You can now provide language translations for the Stripe payment platform name. -To do it, within the `ibexa_payment_type` namespace in your translation files, use the provided translation key structure within your translation files: - -```yaml -ibexa: - payment_method: - type: - strp_checkout: - name: "Translated Stripe Checkout name" -``` diff --git a/docs/commerce/payment/extend_payment.md b/docs/commerce/payment/extend_payment.md deleted file mode 100644 index 0b3eacf71a3..00000000000 --- a/docs/commerce/payment/extend_payment.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -description: Extend Payment with custom payment method types. -edition: commerce ---- - -# Extend Payment - -You can extend your Payment module implementation: - -- by creating a custom payment method type -- by attaching custom data to a payment - -You can also [customize the payment processing workflow](configure_payment.md#custom-payment-workflows). - -## Create custom payment method type - -If your application needs payment methods of other type than the default `offline` one, or ones offered by Payum, you can create custom payment method types. -Code samples below show how this could be done if your organization wants to use PayPal independently. - -!!! note "Gateway integration requirement" - - [[= product_name =]] doesn't come with gateway redirects. Whether you're an integrator or an end customer, it's your responsibility to implement payment gateway integration. - -### Define custom payment method type - -Create a PHP definition of the payment method type. - -``` php -[[= include_code('code_samples/front/shop/payment/src/PaymentMethodType/PayPal/PayPal.php') =]] -``` - -Make sure that `getName()` returns a human-readable name of the payment method type, the way you want it to appear on the list of available payment method types. - -Now, register the definition as a service: - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/services.yaml', 0, 5) =]] -``` - -As an alternative, instead of creating a custom class, you can use a built-in type factory to define the payment method type in the service definition file: - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/payment/config/services.yaml', 6, 15) =]] -``` - -At this point a custom payment method type should be visible in the user interface. - -### Create options form - -Create a corresponding form type: - -``` php -[[= include_code('code_samples/front/shop/payment/src/Form/Type/PayPalOptionsType.php') =]] -``` - -Next, create a mapper that maps the information that the user inputs in the form into attribute definition. - -``` php -[[= include_code('code_samples/front/shop/payment/src/PaymentMethodType/PayPal/OptionsFormMapper.php') =]] -``` - -Then, register `OptionsFormMapper` as a service: - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/payment/config/services.yaml', 16, 20) =]] -``` - -### Create options validator - -You might want to make sure that data provided by the user is validated. -To do that, create an options validator that checks user input against the constraints and dispatches an error when needed. - -``` php -[[= include_code('code_samples/front/shop/payment/src/PaymentMethodType/PayPal/UrlOptionValidator.php') =]] -``` - -Then, register the validator as a service: - -``` yaml -[[= include_file('code_samples/front/shop/payment/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/payment/config/services.yaml', 21, 25) =]] -``` - -### Restart application - -Shut down the application, clear browser cache, and restart the application. -Then, try creating a payment of the new type. - -![Payment method of custom type](custom_payment_type.png "Payment method of custom type") - -## Attach custom data to payments - -When you create a payment, you can attach custom data to it, for example, you can pass an invoice number or a proprietary transaction identifier. - -You add custom data by using the `setContext` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 78, 89, remove_indent=True) =]] -``` - -Then, you retrieve it with the `getContext` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 51, 54, remove_indent=True) =]] -``` diff --git a/docs/commerce/payment/img/custom_payment_type.png b/docs/commerce/payment/img/custom_payment_type.png deleted file mode 100644 index 8076453d14305e1480e8344af1e347736a7e42e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42987 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 F{tx~t><0h< diff --git a/docs/commerce/payment/img/new_payment_method_type.png b/docs/commerce/payment/img/new_payment_method_type.png deleted file mode 100644 index fedd15b96126ba0c4e6cb8934208e498c74ccd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104099 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%0DOI*$18jVtKlkH@!ZtfTW?exF&7 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 diff --git a/docs/commerce/payment/payment.md b/docs/commerce/payment/payment.md deleted file mode 100644 index fd0bd15eafd..00000000000 --- a/docs/commerce/payment/payment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -description: The payment component covers defining and managing payment methods, together with managing payments and their lifecycle. -edition: commerce ---- - -# Payment - -With the Payment component users can define and manage payment methods, create and manage payments, search for payment methods and payments, and filter payment search results. -Depending on their role, users can also enable or disable payment methods, modify payment information, and cancel payments. - -Available payment method types: - -- offline – out of the box -- online payment services – through [integration with Payum](payum_integration.md) - -From the development perspective, the component enables [customization of the payment workflow](configure_payment.md#custom-payment-workflows). - -The component exposes the following APIs: - -- [Payment method PHP API](payment_method_api.md) that allows for managing payment methods -- [Payment method REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Payments) that helps manage payment methods over HTTP -- [Payment PHP API](payment_api.md) that allows for managing payments - -## Services - -The Payment package provides the following services, which are entry points for calling backend APIs: - -- `Ibexa\Contracts\Payment\PaymentMethodServiceInterface` -- `Ibexa\Contracts\Payment\PaymentServiceInterface` diff --git a/docs/commerce/payment/payment_api.md b/docs/commerce/payment/payment_api.md deleted file mode 100644 index a0e4a8d6e41..00000000000 --- a/docs/commerce/payment/payment_api.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Use PHP API to manage payments in Commerce. You can create, update and delete payments. -edition: commerce ---- - -# Payment API - -To get payments and manage them, use the `Ibexa\Contracts\Payment\PaymentServiceInterface` interface. - -By default, UUID is used to generate payment identifiers. -You can change that by providing a custom payment identifier in `Ibexa\Contracts\Payment\Payment\PaymentCreateStruct` or `Ibexa\Contracts\Payment\Payment\PaymentUpdateStruct`. - -## Get single payment - -### Get single payment by ID - -To access a single payment by using its numerical ID, use the `PaymentServiceInterface::getPayment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 45, 48, remove_indent=True) =]] -``` - -### Get single payment by identifier - -To access a single payment by using its string identifier, use the `PaymentServiceInterface::getPaymentByIdentifier` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 51, 52, remove_indent=True) =]] -``` - -## Get multiple payments - -To fetch multiple payments, use the `PaymentServiceInterface::findPayments` method. -It follows the same search query pattern as other APIs: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 60, 75, remove_indent=True) =]] -``` - -## Create payment - -To create a payment, use the `PaymentServiceInterface::createPayment` method and provide it with the `Ibexa\Contracts\Payment\Payment\PaymentCreateStruct` object that takes the following arguments: `method`, `order` and `amount`. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 78, 91, remove_indent=True) =]] -``` - -## Update payment - -You can update payment information after the payment is created. -You could do it to support a scenario when, for example, an online payment failed, has been processed by using other means, and its status has to be updated in the system. -The `Ibexa\Contracts\Payment\Payment\PaymentUpdateStruct` object takes the following arguments: `transition`, `identifier`, and `context`. -To update payment information, use the `PaymentServiceInterface::updatePayment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 94, 99, remove_indent=True) =]] -``` - -## Delete payment - -To delete a payment from the system, use the `PaymentServiceInterface::deletePayment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentCommand.php', 102, 102, remove_indent=True) =]] -``` diff --git a/docs/commerce/payment/payment_method_api.md b/docs/commerce/payment/payment_method_api.md deleted file mode 100644 index 998dcd20900..00000000000 --- a/docs/commerce/payment/payment_method_api.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -description: Use PHP API and REST API to manage payment methods in Commerce. You can create, modify and delete payment methods. -edition: commerce ---- - -# Payment method API - -!!! tip "Order management REST API" - - To learn how to manage payment methods with the REST API, see the [REST API reference](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Payments). - -To get payment methods and manage them, use the `Ibexa\Contracts\Payment\PaymentMethodServiceInterface` interface. - -From the developer's perspective, payment methods are referenced with identifiers defined manually at method creation stage in user interface. - -!!! note "Support for multilingual applications" - - The `getPaymentMethodByIdentifier`, `getPaymentMethod` and `findPaymentMethods` methods take a second argument, `$prioritizedLanguages`, that can be an array of language codes or `null`. - If there are language codes in an array, methods return payment method name translations in the specified languages. - Translations come from the database. - -## Get single payment method - -### Get single payment method by identifier - -To access a single payment method by using its string identifier, use the `PaymentMethodService::getPaymentMethodByIdentifier` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 47, 50, remove_indent=True) =]] -``` - -### Get single payment method by ID - -To access a single payment method by using its numerical ID, use the `PaymentMethodService::getPaymentMethod` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 41, 44, remove_indent=True) =]] -``` - -## Get multiple payment methods - -To fetch multiple payment methods, use the `PaymentMethodService::findPaymentMethods` method. - -It follows the same search query pattern as other APIs: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 53, 69, remove_indent=True) =]] -``` - -## Create payment method - -To create a payment method, use the `PaymentMethodService::createPaymentMethod` method and provide it with an `Ibexa\Contracts\Payment\PaymentMethod\PaymentMethodCreateStruct` object that takes the following parameters: - -- `identifier` string -- `type` TypeInterface object -- `names` array of string values -- `descriptions` array of string values -- `enabled` boolean value -- `options` object. - -``` php -[[= include_file('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 52, 53) =]][[= include_file('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 71, 81) =]] -``` - -## Update payment method - -You can update the payment method after it's created. -An `Ibexa\Contracts\Payment\PaymentMethod\PaymentMethodUpdateStruct` object can take the following arguments: `identifier` string, `names` array of string values, `descriptions` array of string values, `enabled` boolean value, and an `options` object. - -To update payment method information, use the `PaymentMethodServiceInterface::updatePaymentMethod` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 84, 93, remove_indent=True) =]] -``` - -## Delete payment method - -To delete a payment method from the system, use the `PaymentMethodService::deletePayment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 96, 101, remove_indent=True) =]] -``` - -## Check whether payment method is used - -To check whether a payment method is used, for example, before you delete it, use the `PaymentMethodService::isPaymentMethodUsed` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/PaymentMethodCommand.php', 104, 116, remove_indent=True) =]] -``` diff --git a/docs/commerce/payment/payment_method_filtering.md b/docs/commerce/payment/payment_method_filtering.md deleted file mode 100644 index 6121309777c..00000000000 --- a/docs/commerce/payment/payment_method_filtering.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -description: Implement payment method filtering. -edition: commerce ---- - -# Implement payment method filtering - -You can use payment method filtering to decide, whether selected payment method can be used and displayed in checkout process. -To allow this filtering, you need to create a custom payment method type and register new voter. - -## Create custom payment method type - -You can extend your Payment module implementation in different ways. -One of them is to [create a custom payment method type](extend_payment.md). - -The following example shows, how to create `New Payment Method Type`. - -### Define custom payment method type - -First, register the new payment method type as a service: - -``` yaml -[[= include_file('code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml', 0, 10) =]] -``` - -In the `arguments` list provide a name of the payment method type, the way you want it to appear on the list of available payment method types, in the following example: `New Payment Method Type`. - -Now new custom payment method type should be visible in **Commerce** -> **Payment methods**. - -### Create voter for new payment method type - -Next, create a `NewPaymentMethodTypeVoter.php` file with the voter definition for your new payment method type: - -``` php -[[= include_code('code_samples/front/shop/payment/src/lib/PaymentMethod/Voter/NewPaymentMethodTypeVoter.php') =]] -``` - -Created voter decides, if selected payment method type can be used and displayed in checkout process. - -#### Register new voter - -Register new voter as a service: - -``` yaml -[[= include_file('code_samples/front/shop/payment/src/bundle/Resources/config/services/payment_method.yaml', 11, 14) =]] -``` - -#### Clear cache - -Now, clear the cache by running the following command: - -``` bash -php bin/console cache:clear -``` - -Then, you can create a payment of the new type. - -![New payment method type](new_payment_method_type.png "New payment method type") diff --git a/docs/commerce/payment/payum_integration.md b/docs/commerce/payment/payum_integration.md deleted file mode 100644 index b665e135c0c..00000000000 --- a/docs/commerce/payment/payum_integration.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -description: Add new payment methods through Payum such as Stripe or PayPal. -edition: commerce ---- - -# Payum integration - -[Payum](https://payum.gitbook.io/payum) is a payment processing solution that simplifies the integration of various payment services like Stripe and PayPal into your application. -These services provide security of online transactions, and allow you to accept multiple payment methods while ensuring a seamless experience for the customers. -By configuring service gateways, mapping workflow actions and translating payment service names, you streamline the online payment process, and can offer a diverse payment experience. - -## General Payum configuration - -In your Payum configuration file, for example, `payum.yaml`, set up a payment service gateway by specifying the factory, credentials and other necessary settings. -Replace `` with a unique identifier of the method provided by the payment service. - -```yaml -payum: - gateways: - : - factory: - # Add specific configuration fields for the gateway - credential_1: - credential_2: -``` - -## Workflow mapping - -In [[= product_name =]], the default payment workflow has certain places, such as `pending`, `failed`, `paid`, or `cancelled`, and their corresponding transitions. - -However, for your application to use other transitions and places, for example, `authorized`, `notified`, or `refunded`, and to present them in the user interface, you need to: - -- override the default payment workflow -- create a custom workflow and enable it by using semantic configuration - -For more information, see [Custom payment workflows](configure_payment.md#custom-payment-workflows). - -For these places to be supported by the Payum integration, you have to map Payum statuses on the existing or additional places in the workflow, for example: - -```yaml -ibexa_connector_payum: - status_mapping: - refunded: cancelled - captured: pending - authorized: authorized -# ... -``` - -## Payment service name translations - -Within the `ibexa_payment_type` namespace in your translation files, add translations for each payment service that you configure. -For language translations of payment service names, structure the translation files as follows: - -```yaml -ibexa: - payment_method: - type: - : - name: "Translated payment service name" - -``` - -!!! note - - Replace `` with the identifier used in the Payum configuration. - -## Implementation - -When you implement the online payment solution, take the following consideration into account: - -- To learn what credentials must be provided and what specific settings must be made, refer to the each payment service gateway's specific documentation. -- To customize the online payment UI, see [Creating custom views](https://github.com/Payum/Payum/blob/master/docs/symfony/custom-payment-page.md) in Payum documentation. -- When you modify the payment process, you may need to subscribe to events dispatched by Payum. -For a list of events, see [Event dispatcher](https://github.com/Payum/Payum/blob/master/docs/event-dispatcher.md) in Payum documentation. - -!!! caution - - In certain cases, depending on the payment processing service, when a customer closes the payment page in a browser and the bank has not processed the payment yet, the payment status can remain unchanged. - Depending on how your checkout process is configured, it may result in unwanted effects, for example, cause that the cart doesn't purge after the purchase. - Make sure that you account for this fact in your implementation. diff --git a/docs/commerce/shipping_management/configure_shipment.md b/docs/commerce/shipping_management/configure_shipment.md deleted file mode 100644 index 9bc88d3915d..00000000000 --- a/docs/commerce/shipping_management/configure_shipment.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -description: Configure shipping, modify the default shipment workflow. -edition: commerce ---- - -# Configure shipping - -When you work with your Commerce implementation, you can review and modify the shipping configuration. - -!!! note "Permissions" - - When you modify the workflow configuration, make sure you properly set user [permissions](permission_use_cases.md#commerce) for the shipping component. - -## Configure shipment workflow - -Shipment workflow relies on a [Symfony Workflow]([[= symfony_doc =]]/components/workflow.html). -Each transition represents a separate shipment step. - -The default fallback workflow is `ibexa_shipment`, which is prepended at bundle level. - -### Default shipment workflow configuration - -The default payment workflow configuration is called `ibexa_shipment`, you can replace it with your custom workflow identifier if needed. - -To see the default workflow, in your project directory, navigate to the following file: `vendor/ibexa/shipping/src/bundle/Resources/config/workflow.yaml`. - -### Custom shipment workflows - -You define custom workflow implementations under the `framework.workflows` [configuration key](configuration.md#configuration-files). -The `shipping.shipment_workflow` parameter is repository-aware. - -To customize your configuration, place it under the `framework.workflows.` [configuration key](configuration.md#configuration-files): - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/packages/ibexa.yaml', 8, 89) =]] -``` - -Reference it with `ibexa.repositories..shipment.workflow: your_workflow_name`, so that the system can then identify which of your configured workflows handles the shipment process. - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/packages/ibexa.yaml', 0, 5) =]] -``` - -## Configure shipping methods - -You can define the shipping methods [in the UI]([[= user_doc =]]/commerce/shipping_management/work_with_shipping_methods/). -The following shipping method types are available by default: `flat rate` and `free`. diff --git a/docs/commerce/shipping_management/extend_shipping.md b/docs/commerce/shipping_management/extend_shipping.md deleted file mode 100644 index 92aa657a446..00000000000 --- a/docs/commerce/shipping_management/extend_shipping.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -description: Extend Shipping with custom shipping method type and other extra features. -edition: commerce ---- - -# Extend shipping - -You can extend or customize your Shipping module implementation in different ways. - -Here, you can learn about the following ideas to make your Commerce solution more powerful: - -- create a custom shipping method type -- toggle shipping method availability in checkout based on a condition -- display shipping method parameters on the shipping method details page - -You can also [customize the shipment processing workflow](configure_shipment.md#custom-shipment-workflows). - -## Create custom shipping method type - -If your application needs shipping methods of other type than the default ones, you can create custom shipping method types. -See the code samples below to learn how to do it. - -### Define custom shipping method type class - -Create a definition of the shipping method type. -Use a built-in type factory to define the class in `config/services.yaml`: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 1, 8) =]] -``` - -At this point a custom shipping method type should be visible on the **Create shipping method** modal, the **Method type** list. - -![Selecting a shipping method type](img/shipping_method_type_selection.png "Selecting a shipping method type") - -### Create options form - -To let users create shipping methods of a custom type within the user interface, you need a Symfony form type. -Create a `src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php` file with a form type. - -Next, define a name of the custom shipping method type in the file, by using the `getTranslationMessages` method. - -``` php hl_lines="32" -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Form/Type/CustomShippingMethodOptionsType.php') =]] -``` - -Create a translations file `translations/ibexa_shipping.en.yaml` that stores a name value for the custom shipping method type: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/translations/ibexa_shipping.en.yaml') =]] -``` - -Next, use the type factory to define an options form mapper class in `config/services.yaml`: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 8, 15) =]] -``` - -At this point you should be able to create a shipping method based on a custom shipping method type. - -![Creating a shipping method of custom type](img/custom_shipping_method_type.png "Creating a shipping method of custom type") - -!!! note - - To use this example, you must have regions. - If you don't have regions, refer to [Enable purchasing products](enable_purchasing_products.md) for instructions on how to add them. - -### Create options validator - -You might want to validate the data provided by the user against certain constraints. -Here, you create an options validator class that checks whether the user provided the `customer_identifier` value and dispatches an error when needed. - -Use the type factory to define a compound validator class in `config/services.yaml`: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 15, 22) =]] -``` - -Then, create a `src/ShippingMethodType/CustomerNotNullValidator.php` file with a validator class: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/CustomerNotNullValidator.php') =]] -``` - -Finally, register the validator as a service: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 22, 25) =]] -``` - -Now, when you create a new shipping method and leave the **Customer identifier** field empty, you should see a warning. - -![Option validator in action](img/custom_shipping_type_validator.png "Option validator in action") - -### Create storage converter - -Before form data can be stored in database tables, field values must be converted to a storage-specific format. -Here, the storage converter converts the `customer_identifier` string value into the `customer_id` numerical value. - -Create a `src/ShippingMethodType/Storage/StorageConverter.php` file with a storage converter class: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageConverter.php') =]] -``` - -Then, register the storage converter as a service: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 25, 28) =]] -``` - -#### Storage definition - -Now, create a storage definition class and a corresponding schema. -The table stores information specific for the custom shipping method type. - -!!! note "Create table" - - Before you can proceed, in your database, create a table that has columns present in the storage definition, for example: - - `CREATE TABLE ibexa_shipping_method_region_custom(id int auto_increment primary key, customer_id text, shipping_method_region_id int);` - -Create a `src/ShippingMethodType/Storage/StorageDefinition.php` file with a storage definition: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageDefinition.php') =]] -``` - -Then, create a `src/ShippingMethodType/Storage/StorageSchema.php` file with a storage schema: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Storage/StorageSchema.php') =]] -``` - -Then, register the storage definition as a service: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 28, 31) =]] -``` - -## Toggle shipping method type availability - -When you implement a web store, you can choose if a certain shipping method is available for selection during checkout. -Here, you limit shipping method availability to customers who meet a specific condition. In this case, they must belong to the Acme company. -Create a `src/ShippingMethodType/Vote/CustomVoter.php` file with a voter class: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Voter/CustomVoter.php') =]] -``` - -Register the voter as a service: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 31, 34) =]] -``` - -## Display shipping method parameters in details view - -You can extend the default shipping method details view by making shipping method visible on the **Cost** tab. -To do this, create a `src/ShippingMethodType/Cost/CustomCostFormatter.php` file with a formatter class: - -``` php -[[= include_code('code_samples/front/shop/shipping/src/ShippingMethodType/Cost/CustomCostFormatter.php') =]] -``` - -Then register the formatter as a service: - -``` yaml -[[= include_file('code_samples/front/shop/shipping/config/services.yaml', 0, 1) =]][[= include_file('code_samples/front/shop/shipping/config/services.yaml', 34, 38) =]] -``` - -You should now see the parameter, in this case it's a customer identifier, displayed on the **Cost** tab of the shipping method's details view. - -![Shipping method parameters in the Cost tab](img/shipping_method_cost_tab.png "Shipping method parameters in the Cost tab") - -!!! note "Non-matching label" - - This section doesn't discuss overriding the default form, therefore the alphanumerical customer identifier is shown under the **Cost value** label. - For more information about working with forms, see [Page and Form tutorial](../../tutorials/page_and_form_tutorial/5_create_newsletter_form.md). diff --git a/docs/commerce/shipping_management/img/custom_shipping_method_type.png b/docs/commerce/shipping_management/img/custom_shipping_method_type.png deleted file mode 100644 index e3a819107ba7e78f9cc20504defe180ef5a8b4be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178420 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 diff --git a/docs/commerce/shipping_management/img/shipping_method_type_selection.png b/docs/commerce/shipping_management/img/shipping_method_type_selection.png deleted file mode 100644 index 307453c49154faa47da86974acadf08bc9c04fea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35727 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 G@P7deXG;|T diff --git a/docs/commerce/shipping_management/shipment_api.md b/docs/commerce/shipping_management/shipment_api.md deleted file mode 100644 index 2ea3f1b38d2..00000000000 --- a/docs/commerce/shipping_management/shipment_api.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -description: Use PHP API to manage shipments in Commerce. Create, update and delete shipments. -edition: commerce ---- - -# Shipment API - -To get shipments and manage them, use the `Ibexa\Contracts\Shipping\ShipmentServiceInterface` interface. - -From the developer's perspective, shipments are referenced with a UUID identifier. - -## Get single shipment - -### Get single shipment by identifier - -To access a single shipment by using its string identifier, use the `ShipmentService::getShipmentByIdentifier` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 58, 66, remove_indent=True) =]] -``` - -### Get single shipment by id - -To access a single shipment by using its numerical id, use the `ShipmentService::getShipment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 46, 55, remove_indent=True) =]] -``` - -## Get multiple shipments - -To fetch multiple shipments, use the `ShipmentService::findShipments` method. -It follows the same search query pattern as other APIs: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 69, 87, remove_indent=True) =]] -``` - -## Create shipment - -To create a shipment, use the `ShipmentService::createShipment` method and provide it with an `Ibexa\Contracts\Shipping\Value\ShipmentCreateStruct` object that takes two parameters, a `shippingMethod` string and a `Money` object. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 90, 103, remove_indent=True) =]] -``` - -## Update shipment - -You can update the shipment after it's created. -You could do it to support a scenario when, for example, the shipment is processed offline and its status has to be updated in the system. -To update shipment information, use the `ShipmentService::updateShipment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 106, 116, remove_indent=True) =]] -``` - -## Delete shipment - -To delete a shipment from the system, use the `ShipmentService::deleteShipment` method: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShipmentCommand.php', 119, 119, remove_indent=True) =]] -``` diff --git a/docs/commerce/shipping_management/shipping_management.md b/docs/commerce/shipping_management/shipping_management.md deleted file mode 100644 index 9a3a845bd63..00000000000 --- a/docs/commerce/shipping_management/shipping_management.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -description: The shipping component covers defining and managing shipping methods, together with managing shipments and their lifecycle. -edition: commerce ---- - -# Shipping - -The shipping component enables users to define and manage shipping methods of different types, create and manage shipments, search for shipments, and filter search results. -Depending on their role, users can also enable or disable shipping methods, change status of shipments, and cancel shipments. - -!!! note "Shipping method types" - - Two types of shipping methods are available by default: `flat rate` and `free`. - -From the development perspective, the component enables customization of the shipment workflow. - -The component exposes the following: - -- [Shipping method PHP API](shipping_method_api.md) that allows for managing shipping methods -- [Shipment PHP API](shipment_api.md) that allows for managing shipments - -## Services - -The Shipping package provides the following services, which are entry points for calling backend APIs: - -- `Ibexa\Contracts\Shipping\ShippingMethodServiceInterface` -- `Ibexa\Contracts\Shipping\ShipmentServiceInterface` diff --git a/docs/commerce/shipping_management/shipping_method_api.md b/docs/commerce/shipping_management/shipping_method_api.md deleted file mode 100644 index 07ffb64da00..00000000000 --- a/docs/commerce/shipping_management/shipping_method_api.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -description: Use PHP API to manage shipping methods in Commerce. Create and update shipping methods, delete shipping methods and their translations. -edition: commerce ---- - -# Shipping method API - -To get shipping methods and manage them, use the `Ibexa\Contracts\Shipping\ShippingMethodServiceInterface` interface. - -Shipping methods are referenced with identifiers defined manually at method creation stage in user interface. - -## Get shipping method - -### Get shipping method by identifier - -To access a shipping method by using its identifier, use the `ShippingMethodServiceInterface::getShippingMethod` method. -The method takes a string as `$identifier` parameter and uses a prioritized language from SiteAccess settings unless you pass another language as `forcedLanguage`. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 53, 62, remove_indent=True) =]] -``` - -### Get shipping method by ID - -To access a shipping method by using its ID, use the `ShippingMethodServiceInterface::getShippingMethod` method. -The method takes a string as `$id` parameter and uses a prioritized language from SiteAccess settings unless you pass another language as `forcedLanguage`. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 41, 50, remove_indent=True) =]] -``` - -## Get multiple shipping methods - -To fetch multiple shipping methods, use the `ShippingMethodServiceInterface::getShippingMethod` method. -It follows the same search query pattern as other APIs: - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 65, 82, remove_indent=True) =]] -``` - -## Create shipping method - -To create a shipping method, use the `ShippingMethodServiceInterface::createShippingMethod` method and provide it with the `Ibexa\Contracts\Shipping\Value\ShippingMethodCreateStruct` object that you created by using the `newShippingMethodCreateStruct` method. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 85, 107, remove_indent=True) =]] -``` - -## Update shipping method - -To update a shipping method, use the `ShippingMethodServiceInterface::updateShippingMethod` method and provide it with the `Ibexa\Contracts\Shipping\Value\ShippingMethodUpdateStruct` object that you created by using the `newShippingMethodUpdateStruct` method. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 110, 123, remove_indent=True) =]] -``` - -## Delete shipping method - -To update a shipping method, use the `ShippingMethodServiceInterface::deleteShippingMethod` method. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 126, 131, remove_indent=True) =]] -``` - -## Delete shipping method translation - -To delete shipping method translation, use the `ShippingMethodServiceInterface::deleteShippingMethodTranslation` method. - -``` php -[[= include_code('code_samples/api/commerce/src/Command/ShippingMethodCommand.php', 134, 142, remove_indent=True) =]] -``` diff --git a/docs/commerce/shopping_list/img/add_to_cart.png b/docs/commerce/shopping_list/img/add_to_cart.png deleted file mode 100644 index d956d3791625dd690b0ae8fd8c4c665b94caf4ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54128 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 &W) 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 diff --git a/docs/commerce/shopping_list/img/create_from_management.png b/docs/commerce/shopping_list/img/create_from_management.png deleted file mode 100644 index 75669841a8b15aaaddfcf175bdb34a7a3fcbe330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60897 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%0At>0S0&lo6PH`t(YfmeC=fkc1uzdM*o;;1{&?_ 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 diff --git a/docs/commerce/shopping_list/img/create_from_product.png b/docs/commerce/shopping_list/img/create_from_product.png deleted file mode 100644 index 3343d79c00db05d0465354fd7ff47d94f5cab842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20287 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%0DXxRlp=OFfZ@R-J6LYPH%_COwaJt*zO>)a;x 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 YpG%Zs>Pgqx{%NbGchwMHtZ5tm9|6vPwEzGB diff --git a/docs/commerce/shopping_list/img/create_from_shopping_list.png b/docs/commerce/shopping_list/img/create_from_shopping_list.png deleted file mode 100644 index 5c230d0369e13fdf57b20a2e1e878857e128eddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36630 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 diff --git a/docs/commerce/shopping_list/img/shopping_list_belonging_1.png b/docs/commerce/shopping_list/img/shopping_list_belonging_1.png deleted file mode 100644 index afc5bb4dcc2257c2e913d040ea70171dc1285b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10469 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 diff --git a/docs/commerce/shopping_list/img/shopping_list_belonging_2.png b/docs/commerce/shopping_list/img/shopping_list_belonging_2.png deleted file mode 100644 index cbad006656ec262fe9ffde8630ac15df06f23cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10488 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 diff --git a/docs/commerce/shopping_list/install_shopping_list.md b/docs/commerce/shopping_list/install_shopping_list.md deleted file mode 100644 index 1c5d0829caf..00000000000 --- a/docs/commerce/shopping_list/install_shopping_list.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -description: Install the Shopping list LTS update. -editions: lts-update commerce -month_change: false ---- - -# Install shopping list - -## Install framework - -Run the following command to install the package: - -``` bash -composer require ibexa/shopping-list -``` - -The associated Symfony Flex recipe configures the bundle and its routes. - -Check that the following line has been added by the recipe to `config/bundles.php` file's array: - -``` php -return [ - // ... - Ibexa\Bundle\ShoppingList\IbexaShoppingListBundle::class => ['all' => true], -]; -``` - -And that you have a `config/routes/ibexa_shopping_list.yaml` file configuring the following routes: - -```yaml -ibexa.shopping_list: - resource: '@IbexaShoppingListBundle/Resources/config/routing.php' - -ibexa.rest.shopping_list: - resource: '@IbexaShoppingListBundle/Resources/config/routing_rest.php' - prefix: '%ibexa.rest.path_prefix%' -``` - -## Modify database schema - -Add the tables needed by the bundle: - -=== "MySQL" - - ```sql - [[= include_file('code_samples/shopping_list/install/schema.mysql.sql', 0, None, ' ') =]] - ``` - -=== "PostgreSQL" - - ```sql - [[= include_file('code_samples/shopping_list/install/schema.postgresql.sql', 0, None, ' ') =]] - ``` - -The script creates the required data structures, but doesn't add any data to the database. - -The users don't have any shopping lists, not even the default “My Wishlist” list. -The default shopping list is created automatically when the user triggers the "Add to wishlist" action for the first time. - -## Configure - -By default, the maximum shopping list count per user is 10 and the maximum entries per list is 100. -When listing their shopping lists, the user see 25 lists per page -(and as it's over the shopping list count, there is always one page of shopping lists in this default scenario). - -You can override the following parameters to change their values: - -```yaml -parameters: - ibexa.site_access.config.default.shopping_list.limits.max_lists_per_user: 10 - ibexa.site_access.config.default.shopping_list.limits.max_entries_per_list: 100 - ibexa.site_access.config.default.shopping_list.pagination.list_per_page_limit: 25 -``` - -!!! caution "Max lists per user and default shopping list" - - The customer can always create the default shopping list if it doesn't exist yet, even if they have already reached the limit defined by `max_lists_per_user`. - So, for 10 as the default limit, the user may have 11 lists if the user created 10 custom lists before creating the default one. - If you want to restrict users to only the default shopping list, you can set `max_lists_per_user` to 0. - -### Shopping list user role - -To allow customers to use the shopping list feature, create a new role and assign it to registered customer groups. -To restrict authenticated users access to only their own lists, you must grant the four functions from the Shopping List module with the limitation 'Shopping List Owner: Self'. -Otherwise, they will be able to interact with all shopping lists existing in the system. -Anonymous users can't have shopping lists as they're internally sharing the same account. - -To create such role, you can use a [migration file](importing_data.md#roles), for example, with the following content: - -``` yaml -[[= include_file('code_samples/shopping_list/install/src/Migrations/Ibexa/migrations/shopping_list_user.yaml', 4, 29) =]] -``` - -On a clean install, you can, for example, assign this "Shopping List User" role to the "Customers" user group. - -After placing the migration content in `src/Migrations/Ibexa/migrations/shopping_list_user.yaml`, you can import and execute it with: - -```bash -php bin/console ibexa:migrations:migrate --file=shopping_list_user.yaml --siteaccess=admin -``` diff --git a/docs/commerce/shopping_list/shopping_list.md b/docs/commerce/shopping_list/shopping_list.md deleted file mode 100644 index 5fe7f1870fa..00000000000 --- a/docs/commerce/shopping_list/shopping_list.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: Shopping list allows users to save potential purchases, recurring product sets, and other items for future use in the cart. -page_type: landing_page -editions: lts-update commerce ---- - -# Shopping list - -A shopping list allows users to save potential purchases, recurring product sets, and other items for future use in the cart. -A user can have several shopping lists, including a default one named "My Wishlist". - -## Getting Started - -[[= cards([ -"commerce/shopping_list/shopping_list_guide", -"commerce/shopping_list/install_shopping_list", -], columns=2) =]] - -## Development - -[[= cards([ -"commerce/shopping_list/shopping_list_design", -"commerce/shopping_list/shopping_list_api", -("api/php_api/php_api_reference/namespaces/ibexa-contracts-shoppinglist.html", "PHP API Reference", "Ibexa\Contracts\ShoppingList"), -"api/event_reference/shopping_list_events/", -"search/shopping_list_search_reference/shopping_list_criteria/", -"search/shopping_list_search_reference/shopping_list_sort_clauses/", -"permissions/policies/#shopping-lists", -"permissions/limitation_reference/#shopping-list-limitation", -("api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List", "REST API Reference", "commerce/shopping-list resources"), -], columns=2) =]] diff --git a/docs/commerce/shopping_list/shopping_list_api.md b/docs/commerce/shopping_list/shopping_list_api.md deleted file mode 100644 index 3674c8e5ea8..00000000000 --- a/docs/commerce/shopping_list/shopping_list_api.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -description: Manage shopping lists from PHP API or REST API. -editions: lts-update commerce -month_change: false ---- - -# Shopping list APIs - -The shopping list APIs allow managing shopping lists. -The cart APIs includes methods to move products from cart to shopping list and vice versa. - -## About the default shopping list - -There is one default shopping list per user. This default shopping list is created only when a user uses it for the first time. - -The default shopping list is created by [`\Ibexa\Contracts\ShoppingList\ShoppingListServiceInterface::getOrCreateDefaultShoppingList()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_getOrCreateDefaultShoppingList). -For example, starting to use the default list from REST API will create it if it doesn't exist, as during a call -to [`POST /shopping-list/default/entries`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List/operation/api_shopping-listdefaultentries_post) -or [`POST /cart/{identifier}/move-to-shopping-list`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart/operation/api_cart_identifiermove-to-shopping-list_post). - -Note that `default` isn't the default shopping list identifier. Each user's default shopping list has a unique identifier, a hash string like `01234567-89ab-cdef-0123-456789abcdef`. - -When a user has permissions to create shopping lists [`shopping_list/create`](policies.md#shopping-lists), -they can always create a default shopping list, regardless of the maximum shopping list count per user configuration [`max_lists_per_user`](install_shopping_list.md#configure). - -## PHP API - -In the [`Ibexa\Contracts\ShoppingList`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-shoppinglist.html) namespace are the interfaces to manipulate shopping lists. -The [`Ibexa\Contracts\ShoppingList\ShoppingListServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html) defines methods to -create, get, find, update, clear, and delete shopping lists, and to add, get, move, and remove entries. - -### List and search shopping lists - -Shopping list search can be done with -[`ShoppingListServiceInterface::findShoppingLists()` method](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-ShoppingListServiceInterface.html#method_findShoppingLists) -with a [`ShoppingListQuery`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Value-ShoppingListQuery.html) -built with criteria from the [`Criterion` namespace](/api/php_api/php_api_reference/namespaces/ibexa-contracts-shoppinglist-value-query-criterion.html) -implementing the [`CriterionInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Value-Query-CriterionInterface.html), -and with sort clauses from the [`SortClause` namespace](/api/php_api/php_api_reference/namespaces/ibexa-contracts-shoppinglist-value-query-sortclause.html). - -To get all shopping lists (of the current user or of the whole repository depending on the current user limitation), use the search method without criterion: - -``` php -use Ibexa\Contracts\ShoppingList\ShoppingListServiceInterface; -use Ibexa\Contracts\ShoppingList\Value\ShoppingListQuery; - -/** @var ShoppingListServiceInterface $shoppingListService */ -$lists = $shoppingListService->findShoppingLists(new ShoppingListQuery()); -``` - -For more information about the shopping list search, -see [Shopping list criteria](shopping_list_criteria.md), -and [Shopping list sort clauses](shopping_list_sort_clauses.md) -references. - -### Manage shopping lists entries - -Methods editing the shopping list first store the change in the persistence layer then return the updated shopping list object. -If you forgot to retrieve this result in your variable, the local object isn't synchronized with the database. -In the following example, if some assignments (`$list =`) are removed, the dumped `$list` object doesn't contain the stored shopping list at that time. -If only the middle assignment is removed, the last dumped variable contains the up-to-date shopping list. - -``` php -use Ibexa\Contracts\ShoppingList\ShoppingListServiceInterface; -use Ibexa\Contracts\ShoppingList\Value\EntryAddStruct; - -/** - * @var ShoppingListServiceInterface $shoppingListService - * @var string $productCode - */ -$list = $shoppingListService->getOrCreateDefaultShoppingList(); -dump($list); -$list = $shoppingListService->clearShoppingList($list); -dump($list); -$list = $shoppingListService->addEntries($list, [new EntryAddStruct($productCode)]); -dump($list); -``` - -When adding array of entries with `ShoppingListService::addEntries()`, -an exception is thrown if at least product is already in the shopping list and no entries are added to the list. - -The following example adds products to a shopping list while avoiding error on duplicated entries. -In this example the duplicates are ignored, but you could extend it to, for example, notify the user about each found duplicate. - -``` php -[[= include_code('code_samples/shopping_list/php_api/src/Command/ShoppingListFilterCommand.php', 40, 50, remove_indent=True) =]] -``` - -The following example moves products from a source shopping list to a target shopping list after filtering out products already in the target list: - -``` php -[[= include_code('code_samples/shopping_list/php_api/src/Command/ShoppingListMoveCommand.php', 43, 54, remove_indent=True) =]] -``` - -### Transfer between shopping list and cart - -Interactions between shopping list and cart are managed by -[`Ibexa\Contracts\Cart\CartShoppingListTransferServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-CartShoppingListTransferServiceInterface.html) - -The following example starts with an empty cart and an empty shopping list, -then adds a product to the shopping list and copies it twice to the cart. -It continues with moving the whole cart to an empty list. - -``` php -[[= include_code('code_samples/shopping_list/php_api/src/Controller/CartShoppingListTransferController.php', 70, 92, remove_indent=True) =]] -``` - -### Events - -When the shopping list service methods are called, event are dispatched before and after the action so its parameters or results can be customized. -For more information, see [Shopping list event reference](shopping_list_events.md). - -There is no specific event for the transfer operations. - -- When adding from shopping list to cart, the [`Ibexa\Contracts\Cart\Event\BeforeAddEntryEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Event-BeforeAddEntryEvent.html) and [`Ibexa\Contracts\Cart\Event\AddEntryEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Event-AddEntryEvent.html) are dispatched for each entry that wasn't previously in the cart. -- When moving from cart to shopping list, single [`Ibexa\Contracts\ShoppingList\Event\BeforeAddEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-BeforeAddEntriesEvent.html) and [`Ibexa\Contracts\ShoppingList\Event\AddEntriesEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Event-AddEntriesEvent.html) events are dispatched for the batch of entries, - then [`Ibexa\Contracts\Cart\Event\BeforeRemoveEntryEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Event-BeforeRemoveEntryEvent.html) and [`Ibexa\Contracts\Cart\Event\BeforeRemoveEntryEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Event-RemoveEntryEvent.html) are dispatched for each entry removed from the cart. - -## REST API - -The REST API provides resources for managing shopping lists and their entries, -as well as for moving products between the cart and the shopping list. - -These resources start with [`/shopping-list/*`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List). -In Symfony's `dev` environment, you can consult and test the REST API at `/api/ibexa/v2/doc#/Shopping%20List`. - -The following REST example uses `curl` and [`jq`](https://jqlang.org/) to: - -- log in a user -- search for the default shopping list to get its identifier -- clear the default shopping list if it exists using its identifier -- add a product to the default shopping list - -```bash -[[= include_file('code_samples/shopping_list/shopping_list_rest_api.sh', 5) =]] -``` - -### Transfer between shopping list and cart - -You can use: - -- [`POST /shopping-list/{identifier}/add-entries-to-cart`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List/operation/api_shopping-list_identifieradd-entries-to-cart_post) to add some shopping list entries to the default cart -- [`POST /shopping-list/{identifier}/add-entries-to-cart/{cartIdentifier}`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List/operation/api_shopping-list_identifieradd-entries-to-cart_cartIdentifier_post) to add some shopping list entries to a specific cart -- [`POST /shopping-list/{identifier}/add-to-cart`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List/operation/api_shopping-list_identifieradd-to-cart_post) to add all entries from a shopping list to the default cart -- [`POST /shopping-list/{identifier}/add-to-cart/{cartIdentifier}`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Shopping-List/operation/api_shopping-list_identifieradd-to-cart_cartIdentifier_post) to add all entries from a shopping list to a specific cart -- [`POST /cart/{identifier}/move-entries-to-shopping-list`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart/operation/api_cart_identifiermove-entries-to-shopping-list_post) to move some cart entries to the default shopping list -- [`POST /cart/{identifier}/move-entries-to-shopping-list/{shoppingListIdentifier}`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart/operation/api_cart_identifiermove-entries-to-shopping-list_shoppingListIdentifier_post) to move some cart entries to a specific shopping list -- [`POST /cart/{identifier}/move-to-shopping-list`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart/operation/api_cart_identifiermove-to-shopping-list_post) to move all entries from a cart to the default shopping list -- [`POST /cart/{identifier}/move-to-shopping-list/{shoppingListIdentifier}`](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Cart/operation/api_cart_identifiermove-to-shopping-list_shoppingListIdentifier_post) to move all entries from a cart to a specific shopping list diff --git a/docs/commerce/shopping_list/shopping_list_design.md b/docs/commerce/shopping_list/shopping_list_design.md deleted file mode 100644 index b7cc250ab4b..00000000000 --- a/docs/commerce/shopping_list/shopping_list_design.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -description: Learn how to integrate the shopping list features to your own online store design. -editions: lts-update commerce -month_change: false ---- - -# Shopping list design - -To integrate the shopping list features to your own online store design, you can - -- look at the default shopping list templates for the `standard` theme in -`vendor/ibexa/shopping-list/src/bundle/Resources/views/themes/standard/shopping_list/` directory -- look at their overrides and complements in the [`storefront` theme](storefront.md) at -`vendor/ibexa/storefront/src/bundle/Resources/views/themes/storefront/shopping_list/` - -## "Add to shopping list" widget - -This widget contains a list of shopping lists indicating whether a product belongs to given list and allows to create a new shopping list on the fly. -It's used in the `storefront` theme in several places, embedded within a drop-down menu or a modal. -!["Add to shopping list" belonging menu with "Bikes" selected](img/shopping_list_belonging_2.png "List of shopping lists for a product belonging to a "Bikes" shopping list") - -You can use the following Twig and TypeScript components to insert an "Add to shopping list" widget for a product into your storefront: - -- `vendor/ibexa/shopping-list/src/bundle/Resources/views/themes/standard/shopping_list/component/add_to_shopping_list/add_to_shopping_list.html.twig` displays a list of shopping lists preceded with checkboxes showing if the product is in it. -- `vendor/ibexa/shopping-list/src/bundle/Resources/public/js/component/add.to.shopping.list.ts` handles the interaction with the list of shopping lists' checkboxes and the new shopping list creation on the fly. -- `vendor/ibexa/shopping-list/src/bundle/Resources/public/js/component/shopping.list.ts` handles the REST API calls. -- `vendor/ibexa/shopping-list/src/bundle/Resources/public/js/component/shopping.lists.list.ts` handles the list of shopping lists. - -The following example shows the setup of an "Add to shopping list" widget on a product full view page in the `standard` theme without implying the `storefront` theme. -For a base product, the variants are listed with an instance of the widget to demonstrate that it can be used several time on the same page. - -Create an `assets/js/add-to-shopping-list.ts` that initializes the `ShoppingList` object and imports the script handling the widget interactions: - -``` ts -[[= include_file('code_samples/shopping_list/add_to_shopping_list/assets/js/add-to-shopping-list.ts') =]] -``` - -Edit the `webpack.config.js` to enable TypeScript, set the aliases used in `add-to-shopping-list.ts`, and create an entry for it: - -``` js hl_lines="5-14" -// […] - -[[= include_file('code_samples/shopping_list/add_to_shopping_list/webpack.config.js', 43) =]] -``` - -Then, you can use the component in your template as in the following example: - -```twig hl_lines="4 5 9-11 14" -{% block meta %} - {{ parent() }} - {# The CSRF token and SiteAccess are needed for the REST API calls #} - - -{% endblock %} -{% block content %} - {{ product.name }} - {% include '@ibexadesign/shopping_list/component/add_to_shopping_list/add_to_shopping_list.html.twig' with { - product_code: product.code, - } %} -{% endblock %} -{% block javascripts %} - {{ encore_entry_script_tags('add-to-shopping-list-js') }} -{% endblock %} -``` - -To have a more complete example, let's continue with a product full view template which could work on a fresh installation. - -In `src/Controller/ProductViewController.php`, create a new controller to add the variants to the product view: - -``` php hl_lines="24-30" -[[= include_code('code_samples/shopping_list/add_to_shopping_list/src/Controller/ProductViewController.php') =]] -``` - -In `templates/themes/standard/full/product.html.twig`, create a template to render the product in full view: - -``` twig hl_lines="7 8 16-18 31-33 44" -[[= include_file('code_samples/shopping_list/add_to_shopping_list/templates/themes/standard/full/product.html.twig') =]] -``` - -Because the component uses global variables, it can't be used directly in a macro. - -In `config/packages/views.yaml`, configure the controller and template used to render the product full view: - -``` yaml hl_lines="7 8" -[[= include_file('code_samples/shopping_list/add_to_shopping_list/config/packages/views.yaml') =]] -``` - -![Preview of this “Add to shopping list” widget example](img/add_to_shopping_list_widget.png "Preview of this “Add to shopping list” widget example") - -## `ShoppingList` JS class and `ibexaShoppingList` global - -The `ShoppingList` class is responsible for handling the shopping lists data and interactions with the REST API. -An object of this class contains the shopping lists and their entries, and has methods to manipulate the shopping lists. - -An object of this class can be initialized with the `shoppingList.init()` function only once. -This initialization creates the `window.ibexaShoppingList` global variable pointing to the object. -If you have several scripts needing an instance of `ShoppingList` class, `window.ibexaShoppingList` is the indicator if it has been initialized already and it points to the object you should use. -Preferably initialize an object of class `ShoppingList` on the top of the script, then use `window.ibexaShoppingList` in the next lines. - -It has the following methods: - -- `createShoppingList(name)` creates a new shopping list, updates the local `window.ibexaShoppingList.shoppingLists` property, - and returns a [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving to an array with - - at index 0, the created shopping list - - at index 1, the whole `ShoppingList` object with all the user's shopping lists -- `getShoppingLists()` returns the local `window.ibexaShoppingList.shoppingLists` property -- `loadShoppingLists()` loads the shopping lists from the server, then updates the local `window.ibexaShoppingList.shoppingLists` property, and returns it -- `loadShoppingList(list_identifier: string)` returns a `Promise` for the shopping list with the given identifier -- `addShoppingListEntries(list_identifier: string, product_codes: string[])` adds entries to the given shopping list for the given product codes, and returns a `Promise` for the [`Response`](https://developer.mozilla.org/docs/Web/API/Response) -- `removeShoppingListEntries(list_identifier: string, entry_identifiers: string[])` remove from the given shopping list the given entries, and returns a `Promise` resolving to a `Response` - -`window.ibexaShoppingList.shoppingLists` has the following data structure: - -```js -shoppingLists_Mockup = { - totalCount: 2, - count: 2, - ShoppingList: [ - { - identifier: "12345678-1234-1234-1234-123456789abc", - name: "My Wishlist", - isDefault: true, - owner: {_href: "/api/ibexa/v2/user/users/…", '_media-type': "application/vnd.ibexa.api.User+json"}, - entries: [ - { - identifier: "…", - product: { - _href: "/api/ibexa/v2/product/catalog/products/PRODUCT_CODE", - '_media-type': "application/vnd.ibexa.api.Product+json", - code: "PRODUCT_CODE", - name: "Product name" - }, - addedAt: "YYYY-MM-DD hh:mm:ss" - } - ], - createdAt: "YYYY-MM-DD hh:mm:ss", - updatedAt: "YYYY-MM-DD hh:mm:ss" - }, - { - identifier: "325d1f8d-877d-40bf-9389-e8eb3e0de58a", - name: "My own custom list", - isDefault: false, - owner: {_href: "/api/ibexa/v2/user/users/…", '_media-type': "application/vnd.ibexa.api.User+json"}, - entries: [ - { - identifier: "…", - product: { - _href: "/api/ibexa/v2/product/catalog/products/ANOTHER_PRODUCT_CODE", - '_media-type': "application/vnd.ibexa.api.Product+json", - code: "ANOTHER_PRODUCT_CODE", - name: "Another product name" - }, - addedAt: "YYYY-MM-DD hh:mm:ss" - } - ], - createdAt: "YYYY-MM-DD hh:mm:ss", - updatedAt: "YYYY-MM-DD hh:mm:ss" - } - ] -}; -``` - -Remember that a `ShoppingList` object like the `window.ibexaShoppingList` has its data updated by the `ShoppingList.createShoppingList` and `ShoppingList.loadShoppingLists` methods. - -The following script creates a shopping list, adds a product to it, then refreshes the local `window.ibexaShoppingList.shoppingLists` (as `addShoppingListEntries` method doesn't do it): - -```javascript hl_lines="6-8" -if (!window.ibexaShoppingList) { - throw new Error('ShoppingList object not initialized, window.ibexaShoppingList not defined'); -} -let product_code = ''; -let shopping_list_name = ''; -window.ibexaShoppingList.createShoppingList(shopping_list_name).then((data) => { - window.ibexaShoppingList.addShoppingListEntries(data[0].identifier, [product_code]).then(() => { - window.ibexaShoppingList.loadShoppingLists(); // Refresh local object - }); -}); -``` - -If the "Add to shopping list" widget is used, it could be updated with the following addition to the previous script: - -```javascript hl_lines="4-7" -window.ibexaShoppingList.createShoppingList(shopping_list_name).then((data) => { - let shopping_list_identifier = data[0].identifier; - window.ibexaShoppingList.addShoppingListEntries(shopping_list_identifier, [product_code]).then(() => { - window.ibexaShoppingList.loadShoppingLists().then(() => { - let selector = '.ibexa-sl-add-to-shopping-list[data-product-code="' + product_code + '"] input[type="checkbox"][value="' + shopping_list_identifier + '"]'; - document.querySelector(selector).checked = true; // Check the new list in product's "Add to shopping list" widget - }); - }); -}); -``` - -## JavaScript events - -### Shopping lists data changed event - -The `ibexa-shopping-list:shopping-lists-data-changed` event is dispatched by the `document.body` - -- on `ShoppingList.init()` (and the `window.ibexaShoppingList` global variable is set) -- on `ShoppingList.createShoppingList()` (and the `window.ibexaShoppingList` global variable is updated) -- on `ShoppingList.addShoppingListEntries()` -- on `ShoppingList.removeShoppingListEntries()` - -```javascript -document.body.addEventListener('ibexa-shopping-list:shopping-lists-data-changed', (event) => { - console.log(event, window.ibexaShoppingList); -}) -``` - -### Prepare request event - -The `ibexa-shopping-list:prepare-request` event is dispatched by the `document` before each REST API call, -with the request details in the event's `detail` property. - -```javascript -document.addEventListener('ibexa-shopping-list:prepare-request', (event) => { - console.log(event, event.detail.request); -}) -``` - -## Built-in views - -Some routes lead to views (when used with `GET` method) through controllers from the `\Ibexa\Bundle\ShoppingList\Controller` namespace. -Each uses a template which receives one or several variables, including forms to handle user interactions. - -| Route path,
name,
and controller | Template | Available variables | Description | -|-------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------| -| `GET /shopping-list`
`ibexa.shopping_list.list`
`ShoppingListListController` | `@ibexadesign/shopping_list/list.html.twig` | `shopping_lists` (`Pagerfanta`),
`bulk_delete_form`,
`filter_form` | List of shopping lists | -| `GET /shopping-list/create`
`ibexa.shopping_list.create`
`ShoppingListCreateController` | `@ibexadesign/shopping_list/create.html.twig` | `form` | Form to create a new shopping list | -| `GET /shopping-list/{identifier}`
`ibexa.shopping_list.view`
`ShoppingListViewController` | `@ibexadesign/shopping_list/view.html.twig` | `move_entries_form`,
`remove_entries_form`,
`clear_form`,
`delete_form` | Shopping list display | -| `GET /shopping-list/{identifier}/update`
`ibexa.shopping_list.update`
`ShoppingListUpdateController` | `@ibexadesign/shopping_list/update.html.twig` | `shopping_list`,
`form` | Form to rename a shopping list | -| `GET /shopping-list/add`
`ibexa.shopping_list.add`
`AddProductToShoppingListController` | `@ibexadesign/shopping_list/add.html.twig` | `products` ([`ProductListInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-ProductListInterface.html)),
`forms` (associative array of forms indexed on product code) | List of products with for each the form to add it to a shopping list | - -For all those templates (except `add.html.twig`), you'll find two implementations: - -- a generic one for the `standard` theme in `vendor/ibexa/shopping-list/src/bundle/Resources/views/themes/standard/` -- a more advanced demo one for the `storefront` theme in `vendor/ibexa/storefront/src/bundle/Resources/views/themes/storefront/` - -Instead of using the `add` route, you should consider using the ["Add to shopping list" widget](#add-to-shopping-list-widget) first. - -The following example shows how to link to the shopping list listing page, using a heart icon: - -```twig -
- - -``` - -The `\Ibexa\Bundle\Storefront\EventSubscriber\ShoppingList\DetailsViewSubscriber` passes an additional `selected_entries_form` variable to the template. -This form allows to have "Add to cart" button for selected entries on top of the shopping list view in `storefront` theme -through `vendor/ibexa/storefront/src/bundle/Resources/views/themes/storefront/shopping_list/view.html.twig`. - -## User menu - -The `\Ibexa\Bundle\Storefront\EventSubscriber\ShoppingList\UserMenuSubscriber` is responsible for -adding the "Shopping lists" item between "Orders" and "Change password" to the user menu -previously initiated by the `\Ibexa\Bundle\Storefront\Menu\Builder\UserMenuBuilder`. -You can look at how this subscriber tests that the user isn't anonymous -and then has the [`shopping_list/view` policy](policies.md#shopping-lists) ([`\Ibexa\Contracts\ShoppingList\Permission\Policy\ShoppingList\View`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ShoppingList-Permission-Policy-ShoppingList-View.html)) -before adding the "Shopping lists" item. diff --git a/docs/commerce/shopping_list/shopping_list_guide.md b/docs/commerce/shopping_list/shopping_list_guide.md deleted file mode 100644 index 349f0d59601..00000000000 --- a/docs/commerce/shopping_list/shopping_list_guide.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -description: A shopping list allows users to save potential purchases, recurring product sets, and other items for future use in the cart. -editions: lts-update commerce -month_change: false ---- - -# Shopping list feature guide - -Shopping lists give logged-in customers a simple yet powerful way to manage future purchases. -They can use it to save potential purchases, recurring product sets, and other items for future use in the cart. - -## Availability - -The shopping list feature is available for [Commerce edition](ibexa_commerce.md) as an [LTS update](editions.md#lts-updates) since v5.0.6. - -## Use cases - -Shopping lists can be used in various ways, depending on the customer's needs and preferences. -Here are some examples. - -### Recurrent purchases - -Every quarter, almost the same consumables must be bought. -Thanks to a dedicated shopping list, the cart can be quickly drafted and filled with all the necessary products. -Only quantities need to be adjusted afterward in the cart, for example, depending on what's left from previous quarter and known consumption for the same period from previous years. - -### Project wishlist - -A customer can store every purchase needed by an incoming project in a dedicated shopping list, -even several products fulfilling the same purpose to decide later which ones to keep in the final cart. - -## Shopping list management overview - -Use policies to control rights to create, view, edit, and delete shopping lists. -Authenticated customers can be granted with these rights, and additionally restricted to interact only with their own shopping lists. -For more information, see [Shopping list user role](install_shopping_list.md#shopping-list-user-role). - -A customer always have a default shopping list named “My Wishlist” -which is created automatically on first use. -It can't be renamed and can't be deleted. - -You can configure how many shopping lists a customer can have, and how much products they can contain. -For more information, see [Configure shopping list](install_shopping_list.md#configure). - -A shopping list only stores product codes. -A shopping list doesn't store quantities. - -In the out-of-the-box [storefront](storefront.md), a shopping list user can: - -- Create a shopping list - - in shopping lists management interface - ![Shopping lists management interface with an highlight on the "Create" button](img/create_from_management.png "Create a new shopping list from the shopping lists management interface") - - from catalog when adding a product to a shopping list - ![Product "Add to cart" button and "Add to list" drop-down menu zone with an highlight on the "+ Create an new shopping list" option](img/create_from_product.png "Create a new shopping list from the product page") - - from a shopping list when adding a product to another shopping list - ![Shopping list product list with three-dots drop-down menu having "Add to shopping list", the "Add to shopping list" pop-in modal with an highlight on the "+ Create an new shopping list" option](img/create_from_shopping_list.png "Create a new shopping list from another shopping list") -- Manage to which shopping lists a product (or product variant) belongs to, from a product page or from a shopping list's product list - !["Add to shopping list" belonging menu with "My Wishlist" selected](img/shopping_list_belonging_1.png "The product belongs to “My Wishlist”") !["Add to shopping list" belonging menu with "Bikes" selected](img/shopping_list_belonging_2.png "The product has been moved by unchecking the default list and checking a custom one") -- Rename a shopping list (except the default “My Wishlist”) -- View the list of their shopping lists -- View a shopping list and its product list -- Copy product from a shopping list to cart (product is kept in shopping list while added to the cart, quantity in the cart is incremented by 1 each time) -- Copy a whole shopping list to cart - - products are kept in shopping list while added to the cart - - products out-of-stock aren't copied and the user is warned - - product quantities are incremented by 1, the user can adjust quantities in the cart - ![Shopping list product list with highlights on "Add to cart" and "Add all to cart" buttons](img/add_to_cart.png "“Add to cart” and “Add all to cart” buttons") -- Move a product from cart to “My Wishlist” (product is removed from cart and added to the default shopping list) -- Move the whole cart to “My Wishlist” (products are removed from cart and added to the default shopping list) - ![Cart's product list with highlights on "Move to My Wishlist" and "Move all to wishlist" buttons](img/move_to_my_wishlist.png "“Move to My Wishlist” and “Move all to wishlist” buttons") -- Delete a shopping list - -## Extensibility - -The shopping list's [PHP API](shopping_list_api.md#php-api) and [REST API](shopping_list_api.md#rest-api) already offer few functionalities not used in the default storefront, -such as emptying shopping lists, or moving products from a cart to a specific shopping list. - -You can use these APIs to implement custom feature, or extend them even further to cover more use cases. diff --git a/docs/commerce/storefront/configure_storefront.md b/docs/commerce/storefront/configure_storefront.md deleted file mode 100644 index 9203b5d5c6c..00000000000 --- a/docs/commerce/storefront/configure_storefront.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -description: Configure Storefront, including catalogs used, customer groups and user accounts. -edition: commerce ---- -# Configure Storefront - -The Storefront is accessible under the `/product-catalog`. - -## Catalog configuration - -With the `ibexa/storefront` package, you can configure the product catalog and make it available to your shop users. - -Before you start configuring the Storefront, make sure you have created, configured, and published [catalogs]([[= user_doc =]]/product_catalog/work_with_catalogs/#create-catalogs) in the back office. - -The configuration is available under the `ibexa.system..storefront.catalog` [configuration key](configuration.md#configuration-files). -It accepts the following values: - -1\. All products available for all users: - -```yaml -ibexa: - system: - site: - storefront: - catalog: ~ -``` - -If `null`is provided as the value, the Storefront makes the main product catalog (with all products) visible for all users. - -2\. To expose a single catalog with an identifier to all users, provide a string value of the catalog identifier: - -```yaml -ibexa: - system: - site: - storefront: - catalog: custom_catalog -``` - -3\. Specific catalog for the defined customer group - -You can expose different catalogs based on a customer group assigned to the current user. - -To do it, provide the following configuration: - -```yaml -ibexa: - system: - site: - storefront: - catalog: - default: standard - customer_group: - retailer: retailer_catalog - wholesale: wholesaler_catalog -``` - -The basic configuration of the Storefront can look as follows: - -``` yaml -[[= include_file('code_samples/front/shop/storefront/config/packages/ibexa.yaml') =]] -``` - -## Retrieve catalog assigned to user - -The [`\Ibexa\Contracts\Storefront\Repository\CatalogResolverInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Storefront-Repository-CatalogResolverInterface.html) interface allows retrieving the product catalog available for a specific user. - -To retrieve catalog assigned for the current user, pass `null`. - -### Configure user account - -The following user settings mechanisms used in `ibexa/storefront` are reused from `ibexa/user` package: - -- [change password feature](passwords.md) -- user avatar - -Settings for a Storefront user are configured under the `ibexa.system..storefront.user_settings_groups` [configuration key](configuration.md#configuration-files): - -```yaml -ibexa: - system: - site_group: - storefront: - user_settings_groups: - - location - - custom_group -``` - -By default, only the `location` user settings is provided: - -- Currency (from `ibexa/storefront`) -- Time zone -- Short date and time format -- Long date and time format -- Language diff --git a/docs/commerce/storefront/extend_storefront.md b/docs/commerce/storefront/extend_storefront.md deleted file mode 100644 index 317f417e2d3..00000000000 --- a/docs/commerce/storefront/extend_storefront.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -description: Extend Storefront with new menus. -edition: commerce ---- - -# Extend Storefront - -## Built-in menus - -With the `ibexa/storefront` package come the following built-in menus: - -| Item | Value | Description | -|------------|----------|---------| -| [Breadcrumbs](#breadcrumbs-menu)| | Renders breadcrumbs for content tree root, Taxonomy Entry, product, user settings, and user settings group | -| [Taxonomy](#taxonomy-menu)| | It can render a menu for product categories or tags | -| Currency| `currency_menu` | Renders a menu to change the active currency | -| Language| `language_menu` | Renders a menu to change the active language | -| Region | `region_menu` | Renders a menu to change the active region | - -Usage example: - -```html_twig -{% set currency_menu = knp_menu_get('ibexa_storefront.menu.currency') %} - -{{ knp_menu_render(currency_menu) }} -``` - -### Breadcrumbs menu - -To modify the items in the menu, you need to use an event subscriber. -This subscriber replaces the URI under the `Home` link. - -Create an event subscriber in `src/EventSubscriber/BreadcrumbsMenuSubscriber.php`: - -``` php -[[= include_code('code_samples/front/shop/storefront/src/EventSubscriber/BreadcrumbsMenuSubscriber.php') =]] -``` - -Next, create the `templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig` template: - -```html+twig -[[= include_file('code_samples/front/shop/storefront/templates/themes/storefront/storefront/knp_menu/breadcrumbs.html.twig') =]] -``` - -Next, extend the `templates/themes/storefront/storefront/product.html.twig` template to include the breadcrumbs: - -```html+twig hl_lines="6-12" -[[= include_file('code_samples/front/shop/storefront/templates/themes/storefront/storefront/product.html.twig') =]] -``` - -### Taxonomy menu - -You can build a taxonomy menu for, for example, product categories or tags. - -See the usage example: - -```html+twig -{% set categories_menu = knp_menu_get( - 'ibexa_storefront.menu.taxonomy', - [], - { - parent: category, - depth: 3 - } -) %} - -{{ knp_menu_render(categories_menu) }} -``` - -It takes the following parameters: - -| Name | Type | Default | -|------------|----------|-----------------------------------------------| -| `parent`| `\Ibexa\Contracts\Taxonomy\Value\TaxonomyEntry` | The root entry of the specified taxonomy. | -| `depth` | `int` | Default: 1 | -| `taxonomy_name` | `string` | product_categories | - -## Create menu items - -`\Ibexa\Contracts\Storefront\Menu\ItemFactoryInterface` provides convenient methods to build menu item based on repository objects, including: - -- Content -- Content ID -- Location -- Location ID -- Taxonomy Entry -- Product - -## Generate custom product preview path - -By default, the `ProductRenderController` controller passes only the product object for rendering. -You can modify the controller file to make it pass parameters to the [`path`]([[= symfony_doc =]]/reference/twig_reference.html#path) Twig helper function, which is used by the `product_card.html.twig` and `product_card.html.twig` [templates](customize_storefront_layout.md) to generate the user path. -After you modify the controller, it can also pass the following parameters: - -- `route` - the route, under which product preview is available. -- `parameters` - parameters to be used, for example, to render the view. -- `is_relative` - Boolean that decides whether the URL is relative or absolute. - -Define your own logic in a custom controller. -Refer to the code snippet below and create your own file, for example, `CustomProductRenderController.php`: - -``` php -use Ibexa\Contracts\ProductCatalog\Values\ProductInterface; -use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\Response; - -class CustomProductRenderController extends AbstractController -{ - public function renderAction(ProductInterface $product): Response - { - return $this->render('@ibexadesign/storefront/product_card.html.twig', [ - 'content' => $product, - 'route' => 'some.path', - 'parameters' => ['some.parameter' => 123], - 'is_relative' => true, - ]); - } -} -``` diff --git a/docs/commerce/storefront/storefront.md b/docs/commerce/storefront/storefront.md deleted file mode 100644 index 4f7232a0f7d..00000000000 --- a/docs/commerce/storefront/storefront.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: Storefront covers actions related to the purchase process. -edition: commerce ---- - -# Storefront - -The Storefront package provides a starting kit for the developers. -It's a set of components that serves as a basis, which developers can customize and extend to create their own implementation of a web store. - -## Default UI components - -The Storefront package contains the following default UI components and widgets. -You can modify them when you build your own web store. - -| Component | Description | -|------------|----------| -|Cancel order|Allows logged-in users to cancel their orders in a pending status.| -| Cart summary | Displays a subtotal net value of cart lines, a shipping cost disclaimer, a series of tax values applicable to products in cart, a composition of different taxes, and a total cart value (gross, shipping and taxes included). | -| Checkout | Displays a series of screens that allow buyers to place an order for cart items. | -| Currency menu | Enables selecting between currencies, to dynamically change the contents of the product listing page. | -| Language menu | Enables selecting between languages, to change an active language. | -| Login/register page | Provides user interface for the login/registration page that enables buyers to access the Product catalog.| -| Main cart component | Main UI component of the cart. Displays a list of items selected for purchase and requested cart item quantities. Users can remove individual items. | -| Mini cart widget | Consists of a counter that displays a total number of items added to a cart. | -|Orders list|Displays a list of orders with such information as status, date, value, order ID. | -| Product category page | Displays products that belong to a specific category. | -| Product filters component | Allows for narrowing the list of products displayed in the listing by using different filters, such as product type, availability, and price. | -| Product listing page | Allows for browsing through products, displays product name, code, price, and image. | -| Region menu | Enables selecting between regions, to dynamically change the contents of the product listing page. | -| Reorder |Allows logged-in users to repurchase previously bought items. | -|Searching and filtering of orders| Allows logged-in users to search and filter their past orders on the orders page.| -| Search for specific product component | Allows for searching for products, for example on the product listing page. | -| Sort products component | Enables sorting products based on different criteria on a product listing page. | -| Quick order |Enables buyer to provide or upload a list of products, with their quantities, intended for purchase.| - -To become familiar with a complete set of templates that covering all functionalities of a store, visit the `vendor/ibexa/storefront/src/bundle/Resources/views/themes/storefront` directory of your installation. - -!!! note "Customization and permissions" - - For more information about modifying the storefront components, whether by changing their appearance or modifying the underlying logic, see [Customize the storefront layout](../../templating/layout/customize_storefront_layout.md). - - For more information about overriding the default checkout component, see [Customize checkout](../checkout/customize_checkout.md). - - For information about roles and permissions that control access to various components of the purchase process, see [Permission use cases](permission_use_cases.md#commerce). diff --git a/docs/commerce/transactional_emails/extend_transactional_emails.md b/docs/commerce/transactional_emails/extend_transactional_emails.md deleted file mode 100644 index 014288ed1b3..00000000000 --- a/docs/commerce/transactional_emails/extend_transactional_emails.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -description: Customize transactional emails to meet your specific business requirements. -edition: commerce ---- - -# Customize transactional emails - -Customizing the transactional email feature allows for better alignment with your specific business requirements. - -## Configure workflows - -[[= product_name =]] uses workflows to define processes in various Commerce components. -Predefined workflows exist for [order processing](../order_management/configure_order_management.md#default-order-processing-configuration), [payment](../payment/configure_payment.md#default-payment-workflow-configuration) and [shipment](../shipping_management/configure_shipment.md#default-shipment-workflow-configuration). -You can customize those workflows to trigger pushing notifications at various places of these workflows, for example: - -``` yaml -framework: - workflows: - ibexa_payment: - # ... - places: - pending: - metadata: - # ... - trigger_notification: true # true or false -``` - -## Define additional variables - -[[= product_name =]] comes with a predefined [set of variables](transactional_emails_parameters.md) that you can use when building a template for your transactional email campaign at Actito. -If this list isn't sufficient, you can use Events to include additional variables: - -``` php - 'onParametersFactoryEvent', - ]; - } - - public function onParametersFactoryEvent(ParametersFactoryEvent $event): void - { - $event->addParameter( - new SimpleParameter( - 'newVariable', - ['value'], - ), - ); - - $event->addParameter( - new SimpleParameter( - 'anotherVariable', - ['multiple', 'values'], - ), - ); - } -} -``` - -## Customize Actito end-user profile - -The Actito platform offers many features for customer data collection, including segmentation, subscriptions, and interaction tracking. -This information can be later user for generating statistics, establishing trends, or used to calculate recommendations. -To use these features you need to provide profile data to API requests yourself. -You do it by means of events that are triggered during profile building. - -For example, the `Ibexa\Contracts\ConnectorActito\Event\TransactionalMailRequest\ProfileFactoryEvent` event is triggered for every transactional notification, and it lets you set required data that is passed to Actito API: - -``` php - 'onProfileFactoryEvent', - ]; - } - - public function onProfileFactoryEvent(ProfileFactoryEvent $event): void - { - $recipient = $event->getRecipient(); - $profile = $event->getProfile(); - $user = $recipient->getUser(); - - // Provide additional data if your profile has more attributes: - $attributes = $profile->getAttributes(); - $attributes[] = new Attribute('name', $user->getName()); - $profile->setAttributes($attributes); - - // Passing segmentation data to the profile - $segmentations = [ - new Segmentation( - 'Frequent visitors', - 'storefront_users', - true, - ), - ]; - $profile->setSegmentations($segmentations); - - // Use the same mechanism to pass other profile data - // $profile->setSubscriptions($subscriptions); - // $profile->setDataCollection($dataCollection); - } -} -``` - -## Send emails in language of commerce presence - -Actito supports sending out emails in one language only per campaign. -To send emails in different languages from one notification, for example, because your application serves end-users from different locales, for each notification and language pair, you must create a separate campaign. -You could do it by adding a language suffix to a campaign name. - -On [[= product_name =]] side, to support this scenario, you must use an Event Subscriber on `Ibexa\Contracts\ConnectorActito\Event\ResolveCampaignEvent`: - -``` php - 'onCampaignResolve', - ]; - } - - public function onCampaignResolve(ResolveCampaignEvent $event): void - { - // you can use below data in your logic - $resolvedCampaign = $event->getCampaign(); - $recipient = $event->getRecipient(); - $notification = $event->getNotification(); - - // when new campaign was determined, set it to the event - $campaign = new Campaign('new_order_created_12-2023_en-US'); - $event->setCampaign($campaign); - } -} -``` diff --git a/docs/commerce/transactional_emails/transactional_emails.md b/docs/commerce/transactional_emails/transactional_emails.md deleted file mode 100644 index 275c486b71a..00000000000 --- a/docs/commerce/transactional_emails/transactional_emails.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -description: With transactional emails you can notify end users about changes in the status of user registration, password recovery, orders, payments, shipments, and more. -edition: commerce ---- - -# Transactional emails - -Transactional emails are messages that [[= product_name =]] can send through [Actito](https://www.actito.com/en-BE/) gateway to your end-users to notify them about changes in the status of various actions taken in relation to your commerce presence. - -By default, notifications are sent in relation to the following events, to an email address of the end-user who has originated these events: - -- Order processing: - - order is created - - order is processing - - order is completed - - order is cancelled -- Payment: - - payment failed - - payment has been cancelled -- Shipment: - - order is shipped -- User registration: - - user has been registered -- Password reset: - - password reset request has been submitted - -You can [change the events](extend_transactional_emails.md#configure-workflows) that trigger sending a transactional email. - -## Configure transactional emails - -### Install package - -Transactional email support comes as an additional package that needs to be downloaded separately: - -```bash -composer require ibexa/connector-actito -``` - -Symfony Flex installs and activates the package. - -### Configure Actito integration - -Before you can start configuring the notifier engine to process and dispatch notifications to be forwarded as transactional emails, you must first obtain and configure an [Actito license](https://www.actito.com/en-BE/pricing/nk). - -Once you gain access to the Actito dashboard: - -1\. Configure the API to make calls with the GET method. - -2\. Get the [API key](https://cdn3.actito.com/fe/actito-documentation/docs/Managing_API_users/) and entity name. - -3\. Set these values in the YAML configuration files, under the `ibexa.system.default.connector_actito` key: - -``` yaml -ibexa: - system: - default: - connector_actito: - api_key: 12ea56789o1ea56789012ea56789o12e - entity: -``` - -4\. Define profile table in Actito database for storing notification attributes. - -!!! note - - By default, a trigger message coming from [[= product_name =]] contains the following attributes with information about the end-user: name, surname, and email. - - Those attributes can then be used to present statistics in the Actito dashboard. - If this set of attributes is insufficient for your needs, you can [add more attributes to the trigger message](extend_transactional_emails.md#customize-actito-end-user-profile). - -### Create email campaigns - -Create campaigns of transactional email type, one for each notification type that you want to deliver. -When you build a campaign template, make sure that you use the variables supported by [[= product_name =]]. -For a complete list of parameters, see [Transactional email variables reference](transactional_emails_parameters.md). - -!!! tip - - When you invent names for your campaigns, keep them simple, and don't use special characters or spaces. - -Campaign emails can be sent in one language only. -To send emails in different languages, for example, because your application serves end-users from different locales, for each notification and language pair, you must create a separate campaign and [extend the solution to support that](extend_transactional_emails.md#send-emails-in-language-of-commerce-presence). - -### Configure mapping - -After you create and configure campaigns in Actito user interface, one for each type of notifications coming from [[= product_name =]], in YAML configuration files, under the `ibexa.system.default.connector_actito.campaign_mapping` key, you define mappings between notifications and email campaigns, for example: - -``` yaml -campaign_mapping: - Ibexa\Contracts\Payment\Notification\PaymentWorkflowStateChange: - campaign: - - Ibexa\Contracts\OrderManagement\Notification\OrderWorkflowStateChange: - campaign: - - Ibexa\Contracts\Shipping\Notification\ShipmentWorkflowStateChange: - campaign: - - Ibexa\Contracts\User\Notification\UserPasswordReset: - campaign: - - Ibexa\Contracts\User\Notification\UserRegister: - campaign: -``` diff --git a/docs/commerce/transactional_emails/transactional_emails_parameters.md b/docs/commerce/transactional_emails/transactional_emails_parameters.md deleted file mode 100644 index e76f85f9535..00000000000 --- a/docs/commerce/transactional_emails/transactional_emails_parameters.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: You use transactional email variables when building an Actito campaign template. -edition: commerce ---- - -# Transactional email variables reference - -The following variables are provided with an installation of [[= product_name_base =]]. -You can use them when you create a template within an Actito transactional email campaign. -If this extensive list of variables isn't sufficient, you can [extend it to include additional variables](extend_transactional_emails.md#define-additional-variables). - -|Category|Variable|Description|Example values|Notes| -|:----|:----|:----|:----|:----| -|Order processing|orderId|Order numerical ID|123| | -| |orderIdentifier|Order identifier|660575f7-aa75-47af-b4d3-db2693f7e37c| | -| |orderCurrency|Currency code|EUR| | -| |orderSource|Order source|storefront| | -| |orderValueNet|Total value (net)|€700,00| | -| |orderValueGross|Total value (gross)|€749,50| | -| |orderValueVat|Vat value|€49,50| | -| |shippingAddressCountry|Country code|US| | -| |shippingAddressRegion|Region|California| | -| |shippingAddressLocality|City|Los Angeles| | -| |shippingAddressStreet|Street|10250 Santa Monica Blvd| | -| |shippingAddressPostalCode|Postal code|90067| | -| |shippingAddressFirstName|Addressee's first name|John| | -| |shippingAddressLastName|Addressee's last name|Doe| | -| |shippingAddressEmail|E-mail address|user@example.com| | -| |shippingAddressPhoneNumber|Phone number|123456789| | -| |billingAddressCountry|Country code|US| | -| |billingAddressTaxId|Tax Identification Number i.e. VAT|12345678| | -| |billingAddressRegion|Region|California| | -| |billingAddressLocality|City|Los Angeles| | -| |billingAddressStreet|Street|10250 Santa Monica Blvd| | -| |billingAddressPostalCode|Postal code|90067| | -| |billingAddressFirstName|Payer's first name|John| | -| |billingAddressLastName|Payer's last name|Doe| | -| |billingAddressEmail|E-mail address|user@example.com| | -| |billingAddressPhoneNumber|Phone number|123456789| | -|Payment|paymentMethodIdentifier|Technical identifier of payment method| | | -| |paymentMethodName|Human readable name of payment method| | | -| |paymentMethodDescription|Human readable description of payment method|Prepaid cards and gift cards (offline version)| | -| |paymentMethodTypeName|Human readable name of payment method type|Offline| | -| |paymentStatus|Technical identifier of payment status|pending, failed|Only available in PaymentStatusChange notification| -|Shipment|shippingMethodIdentifier|Technical identifier of shipping method| | | -| |shippingMethodName|Human readable name of shipping method| | | -| |shippingMethodDescription|Human readable description of shipping method| | | -| |shippingMethodTypeName|Technical name of shipping method type| | | -| |shipmentStatus|Technical identifier of shipment status| |Only available in ShipmentStatusChange notification| -|Product information|products.id|Product numerical ID|123| | -| |products.code|Product code (SKU)|123456| | -| |products.name|Product name|iPhone 15 Pro 256GB Space Gray| | -| |products.url|Product view URL|https://example.com/product/iphone-15-pro-256gb-space-gray/| | -| |products.thumbnail|Product thumbnail URL|https://example.com/assets/images/iphone-15-pro-256gb-space-gray.jpg| | -| |products.quantity|Quantity|5| | -| |products.unitPriceNet|Unit price (net)|€700,00| | -| |products.unitPriceGross|Unit Price (gross)|€749,50| | -| |products.subtotalPriceNet|Subtotal price (net), quantity * unit price (net)|€2700,00| | -| |products.subtotalPriceGross|Subtotal price (gross), quantity * unit price (gross)|€2749,50| | -|User information|userId|Numerical ID|255| | -| |userLogin|User login|john.doe| | -| |userEmail|User e-mail address|john.doe@example.com| | -| |userName|User name|John Doe| | -|Password reset|token|Token used to reset password|5bcc871f1a966db58c06187369813447| | -| |passwordResetUrl|Absolute URL to reset password|http://example.com/user/reset-password/5bcc871f1a966db58c06187369813447| | diff --git a/docs/content_management/collaborative_editing/collaborative_editing.md b/docs/content_management/collaborative_editing/collaborative_editing.md index b48c9c39c18..39f10d5f73d 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing.md +++ b/docs/content_management/collaborative_editing/collaborative_editing.md @@ -30,7 +30,6 @@ This feature also introduces new dashboard tabs for managing shared drafts and j "content_management/collaborative_editing/collaborative_editing_api", "api/event_reference/collaboration_events", ("https://doc.ibexa.co/en/6.0/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Collaboration-Sessions", "REST API Reference", "See the available endpoints for Collaborative editing"), -"content_management/collaborative_editing/extend_collaborative_editing", "search/collaboration_search_reference/collaboration_criteria", "search/collaboration_search_reference/collaboration_sort_clauses", ], columns=4) =]] diff --git a/docs/content_management/collaborative_editing/extend_collaborative_editing.md b/docs/content_management/collaborative_editing/extend_collaborative_editing.md deleted file mode 100644 index 065d9656e11..00000000000 --- a/docs/content_management/collaborative_editing/extend_collaborative_editing.md +++ /dev/null @@ -1,322 +0,0 @@ ---- -description: Extend Collaborative editing -month_change: false ---- - -# Extend Collaborative editing - -Thanks to the ability to extend the [Collaborative editing](collaborative_editing_guide.md) feature, you can introduce additional functionalities to enhance workflows not only in the context of content editing but also when working with products. -The example below demonstrates how to extend the feature to enable a shared Cart functionality in the Commerce system. - -!!! tip - - If you prefer learning from videos, watch the Ibexa Summit 2025 presentation that covers the Collaborative editing feature: - - [_Collaboration: greater than the sum of the parts_](https://www.youtube.com/watch?v=dRB-SDlgX0I) by Marek Nocoń - -## Create tables to hold Cart session data - -First, set up the database layer and define the collaboration context, in this example, Cart. -Create the necessary tables to store the data and to link the collaboration session with the Cart you want to share. - -In the `data/schema.sql` file, create a database table to store a reference to the session context. -In this example, the context is a shopping Cart, identified by `cart_identifier` and linked to the collaboration session through the Cart’s numeric ID stored in the database. - -=== "MySQL" - - ``` sql - [[= include_file('code_samples/collaboration/ibexa_collaboration_cart.mysql.sql', 0, None, ' ') =]] - ``` - -=== "PostgreSQL" - - ``` sql - [[= include_file('code_samples/collaboration/ibexa_collaboration_cart.postgresql.sql', 0, None, ' ') =]] - ``` - -## Set up persistence layer - -Now you need to prepare the persistence layer, which is responsible for storing, retrieving, and managing collaboration session and Cart data in the database. - -It ensures that when a user creates, joins, or updates a Cart session, the system can track session status, participants, and permissions. - -### Implement persistence gateway - -The Gateway is the layer that connects the collaboration feature to the database. -It handles all the create, read, update, and delete operations for collaboration sessions, ensuring that session data is stored and retrieved correctly. - -It also uses a Discriminator to specify the session type. -Based on the type, the Gateway interacts with the appropriate tables and data structures. -This way, the system uses the correct Gateway to get or save data for each session type. - -When creating the Database Gateways and mappers, you can use the built-in service tag: - -- `ibexa.collaboration.persistence.session.gateway` - for the database gateway: - - ```yaml - tags: - - { name: 'ibexa.collaboration.persistence.session.gateway', discriminator: 'my_session_type' } - ``` - -- `ibexa.collaboration.persistence.session.mapper` - for the mapper that creates a session from a persistence raw row: - - ```yaml - tags: - - { name: 'ibexa.collaboration.persistence.session.mapper', discriminator: 'my_session_type' } - ``` - -- `ibexa.collaboration.service.session.domain.mapper` - for the mapper that creates a session from a persistence object: - - ```yaml - tags: - - { name: 'ibexa.collaboration.service.session.domain.mapper', type: App\…\MyPersistentSession } - ``` - -- `ibexa.collaboration.service.session.persistence.mapper` - for the mapper that converts a session into a structure used to create or update persistence: - - ```yaml - tags: - - { name: 'ibexa.collaboration.service.session.persistence.mapper', type: 'my_session_type' } - ``` - -In the `src/Collaboration/Cart/Persistence/Gateway/` directory, create the following files: - -- `DatabaseSchema` - defines the database tables needed to store shared Cart collaboration session data: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseSchema.php') =]] -``` - -- `DatabaseGateway` - implements the gateway logic for getting and retrieving shared Cart collaboration data from the database. It uses a Discriminator to identify the type of session (in this case, a Cart session): - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Gateway/DatabaseGateway.php') =]] -``` - -### Define persistence Value objects - -Value objects describe how collaboration session data is represented in the database. -Persistence gateway uses them to store, retrieve, and manipulate session information, such as the session ID, associated Cart, participants, and scopes. - -``` yaml -[[= include_file('code_samples/collaboration/config/services.yaml', 33, 38) =]] -``` - -In the `src/Collaboration/Cart/Persistence/Values/` directory, create the following Value Objects: - -- `CartSession` - represents the Cart collaboration session data: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSession.php') =]] -``` - -- `CartSessionCreateStruct` - defines the data needed to create a new Cart collaboration session: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionCreateStruct.php') =]] -``` - -- `CartSessionUpdateStruct` - defines the data used to update an existing Cart collaboration session: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Values/CartSessionUpdateStruct.php') =]] -``` - -### Create Cart session Struct objects - -The next step is to integrate the Public API with the database so that it can store and retrieve data from the tables created earlier. -You need to create new files to define the data that is passed into the public API. -This data is then used by the [`SessionService`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html) and public API handlers. - -In the `src/Collaboration/Cart/` directory, create the following Session Structs: - -- `CartSessionCreateStruct` - holds all necessary properties (like session token, participants, scopes, and the Cart reference) needed by the `SessionService` to create the shared Cart session: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/CartSessionCreateStruct.php') =]] -``` - -- `CartSessionUpdateStruct` - defines the properties used to update an existing Cart collaboration session, including participants, scopes, and metadata: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/CartSessionUpdateStruct.php') =]] -``` - -- `CartSession` - represents a Cart collaboration session, storing its ID, token, associated Cart, participants, and scope: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/CartSession.php') =]] -``` - -- `CartSessionType` - defines the type of the collaboration session (in this case it indicates it’s a Cart session): - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/CartSessionType.php') =]] -``` - -## Create mappers - -Mappers convert session data into the format required by the database and pass it to the repository. - -In the `src/Collaboration/Cart/Mapper/` directory, create following mappers: - -- `CartProxyMapper` - creates a simplified version of the Cart with only the necessary data to reduce memory usage in collaboration sessions: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapper.php') =]] -``` - -- `CartProxyMapperInterface` - defines how a Cart should be converted into a simplified object that is used in collaboration session and specifies what methods the mapper must implement: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Mapper/CartProxyMapperInterface.php') =]] -``` - -- `CartSessionDomainMapper` - builds the session object from persistence object: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionDomainMapper.php') =]] -``` - -- `CartSessionPersistenceMapper` - prepares session data to be saved or updated in the database: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Mapper/CartSessionPersistenceMapper.php') =]] -``` - -Then, in the `src/Collaboration/Cart/Persistence/` directory, create the following mapper: - -- `Persistence/Mapper` - builds the session object from persistence row: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/Persistence/Mapper.php') =]] -``` - -In `services.yaml`, declare and tags the gateway and the mappers: - -``` yaml -services: - # … -[[= include_file('code_samples/collaboration/config/services.yaml', 21, 42) =]] -``` - -## Allow participants to access Cart - -To enable collaboration, you must configure the appropriate permissions. -This involves decorating the `PermissionResolver` and `CartResolver`. - -This ensures that when a Cart is part of a Cart collaboration session, users can access it based on the defined permissions. -In all other cases, the system falls back to the default implementation. - -!!! caution "Decorating permissions" - - When decorating permissions, be careful to change the behavior only as necessary, to ensure that the Cart is shared only with the intended users. - -In the `src/Collaboration/Cart/` directory, create the following files: - -- `PermissionResolverDecorator` – customizes the permission resolver to handle access rules for Cart collaboration sessions. It allows participants to view or edit shared Carts while preserving default permission checks for all other cases. Here you can decide what scope is available for this collaboration session by choosing between `view` or `edit`: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/PermissionResolverDecorator.php') =]] -``` - -- `CartResolverDecorator` – resolves the shared Carts in collaboration sessions by checking if a Cart belongs to a collaboration session: - -``` php -[[= include_code('code_samples/collaboration/src/Collaboration/Cart/CartResolverDecorator.php') =]] -``` - -In `services.yaml`, declare those decorator services associated with what they decorate: - -``` yaml -services: - # … -[[= include_file('code_samples/collaboration/config/services.yaml', 43) =]] -``` - -## Build dedicated controllers to manage Cart sharing flow - -To support Cart sharing, create controllers which handle the collaboration flow. -They are responsible for starting a sharing session, adding participants, and allowing users to join an existing shared Cart. - -You need to create two controllers: - -- `ShareCartCreateController` - creates the Cart collaboration session and adds participants -- `ShareCartJoinController` - allows to join the session - -### `ShareCartCreateController` - -This controller handles the request when you enter an email address of the user that you want to invite and submit it. -It captures the email address and checks whether the form has been submitted. -If yes, the form data is retrieved, and the `cartResolver` verifies whether there is currently a shared Cart. - -If a shared Cart exists, the Cart is retrieved and a session is created (`$cart` becomes the session context). -In the `addParticipant` step, the user whose email address was provided is added to the session and assigned a scope (either `view` or `edit`). - -``` php -[[= include_code('code_samples/collaboration/src/Controller/ShareCartCreateController.php') =]] -``` - -### `ShareCartJoinController` - -It enables joining a Cart session. -The session token created earlier is passed in the URL, and in the `join` action, the system attempts to retrieve the session associated with that token. -If the token is invalid, an exception is thrown to indicate that the session cannot be accessed. -If the session exists, the session parameter (`collaboration_session`) is retrieved and the session stores the token. -Finally, `redirectToRoute` redirects the user to the Cart view and passes the identifier of the shared Cart. - -``` php -[[= include_code('code_samples/collaboration/src/Controller/ShareCartJoinController.php') =]] -``` - -!!! caution "Session parameter" - - Avoid using a generic session parameter name such as `collaboration_session` (it's used here only for example purposes). - The user can participate in multiple sessions simultaneously (of one or many types), so using such name would cause the parameter to be constantly overwritten. - Therefore, active sessions should not be resolved based on such parameter. - -## Integrate with Symfony forms by adding forms and templates - -To support inviting users to a shared Cart, you need to create a dedicated form and a data class. -The form collects the email address of the user that you want to invite, and the data class is used to safely pass that information from the form to the controller. - -- `ShareCartType` - a simple form for entering an email address of the user you want to invite to share the Cart. The form contains a single input field where you enter the email address manually: - -``` php -[[= include_code('code_samples/collaboration/src/Form/Type/ShareCartType.php') =]] -``` - -- `ShareCartData` - a class that holds the email address submitted through the form and passes it to the controller: - -``` php -[[= include_code('code_samples/collaboration/src/Form/Data/ShareCartData.php') =]] -``` - -The last step is to integrate the new session type into your application by adding templates. -In this step, the view is rendered. - -You need to add the following Twig templates in the `src/templates/themes/storefront/cart/` directory: - -- `share` - defines the view for the Cart sharing form. It renders the form where a user can enter an email address to invite someone to collaborate on the Cart: - -``` php -[[= include_file('code_samples/collaboration/templates/themes/storefront/cart/share.html.twig') =]] -``` - -![Share email](img/share_email.png) - -- `share_result` - renders the result page after a Cart has been shared. If the shared Cart exists in the system, the created session object is passed to the view and displayed. A message like "Cart has been shared…" is displayed, along with a link to access the session: - -``` php -[[= include_file('code_samples/collaboration/templates/themes/storefront/cart/share_result.html.twig') =]] -``` - -![Share message](img/share_message.png) - -- `view` - shows the Cart page. It displays the Cart content and includes the “Share Cart” button: - -``` php -[[= include_file('code_samples/collaboration/templates/themes/storefront/cart/view.html.twig') =]] -``` - -![Share button](img/share_button.png) diff --git a/docs/content_management/data_migration/importing_data.md b/docs/content_management/data_migration/importing_data.md index 73ff2fea86c..e1e14f834d2 100644 --- a/docs/content_management/data_migration/importing_data.md +++ b/docs/content_management/data_migration/importing_data.md @@ -56,13 +56,10 @@ The following data migration step modes are available: | `content` | ✔ | ✔ | ✔ | | | | `currency` | ✔ | ✔ | ✔ | | | | `customer_group` | ✔ | ✔ | ✔ | | | -| `discount` | ✔ | ✔ | | | | -| `discount_code` | ✔ | | | | | | `language` | ✔ | | | | | | `location` | | ✔ | | ✔ | ✔ | | `object_state` | ✔ | | | | | | `object_state_group` | ✔ | | | | | -| `payment_method` | ✔ | | | | | | `product_asset` | ✔ | | | | | | `product_availability` | ✔ | | | | | | `product_price` | ✔ | | | | | @@ -72,7 +69,6 @@ The following data migration step modes are available: | `segment` | ✔ | ✔ | ✔ | | | | `segment_group` | ✔ | ✔ | ✔ | | | | `setting` | ✔ | ✔ | ✔ | | | -| `shipping_method` | ✔ | | | | | | `user` | ✔ | ✔ | | | | | `user_group` | ✔ | ✔ | ✔ | | | @@ -575,25 +571,7 @@ The following example shows how to create a currency: [[= include_file('code_samples/data_migration/examples/create_currency.yaml') =]] ``` -### Commerce [[% include 'snippets/commerce_badge.md' %]] - -#### Payment methods - -The following example shows how to create a payment method: - -``` yaml -[[= include_file('code_samples/data_migration/examples/create_payment_method.yaml') =]] -``` - -#### Shipping methods - -The following example shows how to create a shipping method: - -``` yaml -[[= include_file('code_samples/data_migration/examples/create_shipping_method.yaml') =]] -``` - -### Segments [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] +### Segments [[% include 'snippets/experience_badge.md' %]] The following example shows how to create a segment group and add segments in it: @@ -662,31 +640,6 @@ When updating a content type, use: [[= include_file('code_samples/data_migration/examples/ai/action_configuration_delete.yaml') =]] ``` -### Discounts - -The following example shows how you can create a new [discount](discounts_guide.md) in your system: - -``` yaml -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml') =]] -``` - -Use the `update` mode to modify an existing discount as in the example below. -The provided conditions overwrite any already existing ones. - -``` yaml -[[= include_file('code_samples/data_migration/examples/discounts/discount_update.yaml') =]] -``` - -For a list of available conditions, see [Discounts API](discounts_api.md#conditions). - -### Discount codes - -You can create a discount code as in the following example: - -``` yaml -[[= include_file('code_samples/data_migration/examples/discounts/discount_code_create.yaml') =]] -``` - ## Criteria When using `update` or `delete` modes, you can use criteria to identify the objects to operate on. diff --git a/docs/content_management/images/add_image_asset_from_dam.md b/docs/content_management/images/add_image_asset_from_dam.md index b8a8271fe27..570e53e0492 100644 --- a/docs/content_management/images/add_image_asset_from_dam.md +++ b/docs/content_management/images/add_image_asset_from_dam.md @@ -25,7 +25,7 @@ You can use the provided example DAM connector for [Unsplash](https://unsplash.c To add the Unsplash connector to your system, add the `ibexa/connector-unsplash` bundle to your installation. -## Add Image Asset in Page Builder [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] +## Add Image Asset in Page Builder [[% include 'snippets/experience_badge.md' %]] To add Image Assets directly in the Page Builder, you can do it by using the Embed block. The example below shows how to add images from [Unsplash](https://unsplash.com/). diff --git a/docs/content_management/locations.md b/docs/content_management/locations.md index 06aba8b18a0..585fb7a4fe3 100644 --- a/docs/content_management/locations.md +++ b/docs/content_management/locations.md @@ -73,7 +73,7 @@ which can be viewed by selecting the **Users** tab in the **Admin** Panel. The default ID number of the **Users** location is 5. It contains user group content items. -### Forms [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] +### Forms [[% include 'snippets/experience_badge.md' %]] **Forms** is the top level location that is intended for Forms created using the [Form Builder]([[= user_doc =]]/content_management/work_with_forms/#create-forms). diff --git a/docs/content_management/pages/page_builder_guide.md b/docs/content_management/pages/page_builder_guide.md index c788655ffc6..97e62c442ee 100644 --- a/docs/content_management/pages/page_builder_guide.md +++ b/docs/content_management/pages/page_builder_guide.md @@ -221,8 +221,4 @@ B. **PIM** blocks: - Product collection - displays a list of specifically selected products. - Product embed - displays a specific product. -C. **Commerce** blocks: - -- Orders - displays a list of orders associated with a particular company or individual customer. - -D. [**Recommendations** blocks](recommendation_blocks.md) - presents content recommendations delivered by Raptor integration. +C. [**Recommendations** blocks](recommendation_blocks.md) - presents content recommendations delivered by Raptor integration. diff --git a/docs/css/pills.css b/docs/css/pills.css index e8286967eec..11650e1c044 100644 --- a/docs/css/pills.css +++ b/docs/css/pills.css @@ -21,13 +21,6 @@ .pill--experience::after { content: "Experience"; } -.pill--commerce { - color: #A32768; - border-color: #A32768; -} -.pill--commerce::after { - content: "Commerce"; -} .pill--lts-update { color: #5DA7C0; border-color: #5DA7C0; diff --git a/docs/customer_management/customer_portal_guide.md b/docs/customer_management/customer_portal_guide.md index b81e830a90d..5fdb5470ee0 100644 --- a/docs/customer_management/customer_portal_guide.md +++ b/docs/customer_management/customer_portal_guide.md @@ -15,7 +15,7 @@ With this feature, your customers can self-register, edit their organization inf ## Availability -Customer Portal is available in [[= product_name_exp =]]. It's also compatible with Product catalog, Commerce and [[= product_name_connect =]]. +Customer Portal is available in [[= product_name_exp =]]. It's also compatible with Product catalog and [[= product_name_connect =]]. ## How does Customer Portal work? diff --git a/docs/discounts/configure_discounts.md b/docs/discounts/configure_discounts.md deleted file mode 100644 index 00868134f2e..00000000000 --- a/docs/discounts/configure_discounts.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: Customize the behavior of the Discounts feature. -month_change: true -editions: - - commerce ---- - -# Customize Discounts - -You can customize the behavior of the Discounts feature by using the following [configuration](configuration.md): - -## Back Office pagination - -Use the built-in SiteAccess-aware parameters to change the default pagination settings. - -The following parameters are available: - -- `list_per_page_limit` controls the number of discounts displayed on a single page in discount list view -- `products_list_per_page_limit` controls the number of products displayed on a single page in a discount details view - -You can set them as in the following example: - -``` yaml -ibexa: - system: - admin_group: - discounts: - pagination: - list_per_page_limit: 10 - products_list_per_page_limit: 15 -``` - -## Discount re-indexing - -Discounts feature uses [[= product_name_base =]] Messenger to reindex discounts and product prices as [background tasks](background_tasks.md). -This way changes are processed efficiently without slowing down the system and disrupting the user experience. - -When triggered periodically, the `ibexa:discounts:reindex` command identifies discounts that require re-indexing, ensuring prices always remain up-to-date. -If there are edits to discounts that should result in changed product catalog prices, messages are dispatched to the [[= product_name_base =]] Messenger's queue and consumed by a background worker. -The worker passes the messages to the handler, which then starts the re-indexing process at the most convenient moment. - -To run discount re-indexing in the background: - -1\. Make sure that the transport layer is [defined properly](background_tasks.md#configure-package) in [[= product_name_base =]] Messenger configuration. - -2\. Make sure that the [worker starts](background_tasks.md#start-worker) together with the application to watch the transport bus: - -``` bash -php bin/console messenger:consume ibexa.messenger.transport --bus=ibexa.messenger.bus -``` - -3\. Run the following command periodically, at least once a day: - -``` bash -php bin/console ibexa:discounts:reindex -``` - -For more information about command scheduling, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). - -!!! note "Deploying Symfony Messenger" - - For more information about deploying the Messenger to production, see [Symfony documentation]([[= symfony_doc =]]/messenger.html#deploying-to-production). - -## Rate limiting - -To prevent malicious actors from trying all the possible discount code combinations using brute-force attacks, the [`/discounts_codes/{cartIdentifier}/apply` endpoint](/api/rest_api/rest_api_reference/rest_api_reference.html#discount-codes-apply-discount-to-cart) is rate limited using the [Rate Limiter Symfony component]([[= symfony_doc =]]/rate_limiter.html). - -You can adjust the default configuration by modifying the `config/packages/ibexa_discounts_codes.yaml` file created during installation process. - -The limiter uses the following pattern: `user_%d_ip_%s`, using Customer ID and Customer IP address to track usage of both logged-in and anonymous customers. -To cover additional use cases, you can add your own logic by listening to the [`BeforeDiscountCodeApplyEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Event-BeforeDiscountCodeApplyEvent.html) event. - -## Checkout error-handling - -A discount can be valid when customer enters the cart, but later become invalid before the checkout process is completed. - -For example, this event could occur if the discount expired, was modified, disabled, or deleted before the customer completed the checkout process. - -To prevent customers from placing such orders, the Discounts feature comes with built-in error-handling. -Once it detects that a discount that can no longer be used is applied to a product, it stops the checkout process and informs the customer. - -This error handling is provided by two event subscribers: - -- `Ibexa\Bundle\Checkout\EventSubscriber\DiscountsHaveChangedExceptionSubscriber` -- `Ibexa\Bundle\DiscountsCodes\EventSubscriber\DiscountCodeUnusableExceptionSubscriber` - -You can disable this behavior by setting the `ibexa_checkout.error_handlers.enabled` container parameter to `false`, which allows you to provide your own solution for these cases. diff --git a/docs/discounts/discounts.md b/docs/discounts/discounts.md deleted file mode 100644 index 71c8331b889..00000000000 --- a/docs/discounts/discounts.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -description: Discounts help store managers reduce prices on products or product categories. -page_type: landing_page -editions: - - commerce -month_change: false ---- - -# Discounts - -With the Discounts feature, store managers can reduce prices on specific products or categories for all or selected customers. -After you install it, temporary or permanent discounts can be applied against items from the product catalog or cart. - -You can also extend the feature, for example, by creating custom pricing rules, application conditions, or changing discount priorities. - -## Getting Started - -[[= cards([ -"discounts/discounts_guide", -"discounts/configure_discounts", -("permissions/policies#discounts", "Policies", "Learn about the available Discounts policies"), -("https://doc.ibexa.co/projects/userguide/en/5.0/commerce/discounts/work_with_discounts/"), -], columns=2) =]] - -## Development - -[[= cards([ -"discounts/discounts_api", -"discounts/extend_discounts", -"discounts/extend_discounts_wizard", -"api/event_reference/discounts_events", -("https://doc.ibexa.co/en/5.0/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Discounts", "REST API Reference", "See the available endpoints for Discounts"), -"templating/twig_function_reference/discounts_twig_functions", -"search/discounts_search_reference/discounts_criteria", -"search/discounts_search_reference/discounts_sort_clauses", -("content_management/data_migration/importing_data#discounts", "Importing Discounts", "Learn how to manage Discounts using data migrations"), -], columns=4) =]] diff --git a/docs/discounts/discounts_api.md b/docs/discounts/discounts_api.md deleted file mode 100644 index 640253b0166..00000000000 --- a/docs/discounts/discounts_api.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -description: Discounts enable reducing prices on products or product categories based on a detailed logic resolution. -month_change: false -editions: - - commerce ---- - -# Discounts API - -## Manage discounts and discount codes - -By integrating with the [Discount feature](discounts_guide.md) you can automate the process of managing discounts, streamlining the whole process and automating business rules. - -For example, you can automatically create a discount when a customer places their 3rd order, encouraging them to make another purchase and increase their chances of becoming a loyal customer. - -You can manage discounts using [data migrations](importing_data.md#discounts), [REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#discounts), or the PHP API by using the [`Ibexa\Contracts\Discounts\DiscountServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html) service. - -The core concepts when working with discounts through the APIs are listed below. - -### Types - -When using the PHP API, the discount type defines where the discount can be applied. - -Discounts are applied in two places, listed in the [`DiscountType`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-DiscountType.html) class: - -- **Product catalog** - `catalog` discounts are activated when browsing the product catalog and do not require any action from the customer to be activated -- **Cart** - `cart` discounts can activate when entering the [cart](cart.md), if the right conditions are met. They may also require entering a discount code to be activated - -Regardless of activation place, discounts always apply to products and reduce their base price. - -To define when a discount activates and how the price is reduced, use rules and conditions. -They use the [Symfony Expression language]([[= symfony_doc=]]/components/expression_language.html) to express their logic. - -### Rules - -Discount rules define how to calculate the price reduction. -The following discount rule types are available in the `\Ibexa\Discounts\Value\DiscountRule` namespace: - -| Rule type
(identifier) | Description | Required expression value | -|---|---|---| -| `FixedAmount`
(`fixed_amount`) | Deducts the specified amount, for example 10 EUR, from the base price | `discount_amount` | -| `Percentage`
(`percentage`) | Deducts the specified percentage, for example -10%, from the base price | `discount_percentage` | - -Only a single discount can be applied to a given product, and a discount can only have a single rule. - -When creating a rule, not with the user interface but an API, you must pass the required expression values for the rule to be valid: - -- using PHP, the values are passed through the constructor which converts them into an expression variable -- using data migrations and the REST API, the values are specified using the `expressionValues` key - -See the following examples for data migrations and the REST API usage: - -- creating discounts with [data migrations](importing_data.md#discounts): - -``` yaml hl_lines="4-7" -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 0, 2) =]]# ... -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 18, 22) =]] -``` - -- parsing responses from the [REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#discounts): - -``` json hl_lines="16-21" -[[= include_file('code_samples/discounts/REST/Discount.json', 0, 21) =]] -[[= include_file('code_samples/discounts/REST/Discount.json', 44, 45) =]] -``` - -### Conditions - -With conditions you can narrow down the scenarios in which the discount applies. The following conditions are available in the `\Ibexa\Discounts\Value\DiscountCondition` and `\Ibexa\DiscountsCodes\Value\DiscountCondition` namespaces: - -| Condition
(identifier) | Applies to | Description | Required expression values | -|---|---|---|---| -| `IsInCategory`
(`is_in_category`) | Cart, Catalog | Checks if the product belongs to specified [product categories]([[= user_doc =]]/product_catalog/work_with_product_categories/) | `categories` | -| `IsInCurrency`
(`is_in_currency`) | Cart, Catalog | Checks if the product has price in the specified currency | `currency_code` | -| `IsInRegions`
(`is_in_regions`) | Cart, Catalog | Checks if the customer is making the purchase in one of the specified regions | `regions` | -| `IsProductInArray`
(`is_product_in_array`) | Cart, Catalog | Checks if the product belongs to the group of selected products | `product_codes` | -| `IsUserInCustomerGroup`
(`is_user_in_customer_group`) | Cart, Catalog | Check if the customer belongs to specified [customer groups](customer_groups.md) | `customer_groups` | -| `IsProductInQuantityInCart`
(`is_product_in_quantity_in_cart`) | Cart | Checks if the required minimum quantity of a given product is present in the cart | `quantity` | -| `MinimumPurchaseAmount`
(`minimum_purchase_amount`) | Cart | Checks if purchase amount in the cart exceeds the specified minimum | `minimum_purchase_amount` | -| `IsValidDiscountCode`
(`is_valid_discount_code`) | Cart | Checks if the correct discount code has been provided and how many times it was used by the customer | `discount_code`,
`usage_count` | - -When multiple conditions are specified, all of them must be met. - -As with rules, when creating a condition through other means than the user interface, you must pass the required expression values for the condition to be valid: - -- using PHP, the values are passed through the constructor which converts them into an expression variable -- using data migrations and the REST API, the values are specified using the `expressionValues` key - -See the following examples for data migrations and the REST API usage: - -- creating discounts with [data migrations](importing_data.md#discounts): - -``` yaml hl_lines="4-14" -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 0, 2) =]]# ... -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 22, 33) =]] -``` - -- parsing responses from the [REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#discounts): - -``` json hl_lines="16-23" -[[= include_file('code_samples/discounts/REST/Discount.json', 0, 15) =]][[= include_file('code_samples/discounts/REST/Discount.json', 21, 29) =]] -[[= include_file('code_samples/discounts/REST/Discount.json', 44, 45) =]] -``` - -### Priority - -You can set discount priority as a number between 1 and 10 to indicate which discount should have [higher priority](discounts_guide.md#discounts-priority) when choosing the one to apply. - -### Start and end date - -Discounts can be permanent, or valid only in a specified time frame. - -Every discount has a start date, which defaults to the date when the discount was created. -The end date can be set to `null` to make the discount permanent. - -### Status - -You can disable a discount anytime to stop it from being active, even if the conditions enforced by start and end date are met. - -Only disabled discounts can be deleted. - -### Discount translations - -The discount has four properties that can be translated: - -| Property | Usage | -|---|---| -| Name | Internal information for store managers | -| Description | Internal information for store managers | -| Promotion label | Information displayed to customers | -| Promotion description | Information displayed to customers | - -Use the [`DiscountTranslationStruct`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Struct-DiscountTranslationStruct.html) to provide translations for discounts. - -### Discount codes - -To activate a cart discount only after a proper discount code is provided, you need to: - -1. Create a discount code using the [`DiscountCodeServiceInterface::createDiscountCode()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-DiscountCodeServiceInterface.html#method_createDiscountCode) method -1. Attach it to a discount by using the `IsValidDiscountCode` condition - -Set the [`usedLimit`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Value-Struct-DiscountCodeCreateStruct.html#method___construct) property to the number of times a single customer can use this code, or to `null` to make the usage unlimited. - -The [`DiscountCodeServiceInterface::registerUsage()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-DiscountCodeServiceInterface.html#method_registerUsage) method is used to track the number of times a discount code has been used. - -### Example API usage - -The example below contains a Command creating a cart discount. The discount: - -- has the highest possible [priority](#priority) value -- [rule](#rules) deducts 10 EUR from the base price of the product -- is [permanent](#start-and-end-date) -- [depends](#conditions) on - - being bought from Germany or France - - 2 products - - a `summer10` [discount code](#discount-codes) which can be used only 10 times, but a single customer can use the code multiple times - -``` php hl_lines="46-53 55-81 83" -[[= include_code('code_samples/discounts/src/Command/ManageDiscountsCommand.php') =]] -``` - -Similarly, use the `deleteDiscount`, `deleteTranslation`, `disableDiscount`, `enableDiscount`, and `updateDiscount` methods from the [DiscountServiceInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html) to manage the discounts. You can always attach additional logic to the Discounts API by listening to the [available events](discounts_events.md). - -## Search - -You can search for Discounts using the [`DiscountServiceInterface::findDiscounts()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html#method_findDiscounts) method. -To learn more about the available search options, see Discounts' [Search Criteria](discounts_criteria.md) and [Sort Clauses](discounts_sort_clauses.md). - -For discount codes, you can query the database for discount code usage using [`DiscountCodeServiceInterface::findCodeUsages()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-DiscountCodeServiceInterface.html#method_findCodeUsages) and [`DiscountCodeUsageQuery`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-Value-Query-DiscountCodeUsageQuery.html). - -## Retrieve applied discounts - -The applied discounts change final product pricing. -To learn more about working with prices, see [Price API](price_api.md#prices). - -The example below shows how you can use: - -- [`ProductPriceServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductPriceServiceInterface.html) to query for base product prices -- [`PriceResolverInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-PriceResolverInterface.html) to query for final product prices -- [`PriceEnvelopeInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceEnvelopeInterface.html) to retrieve applied discounts -- [`OrderServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-OrderServiceInterface.html) to display discount details for [orders](order_management.md) - -``` php hl_lines="51-52 58-59 61-74 78-104" -[[= include_code('code_samples/discounts/src/Command/OrderPriceCommand.php') =]] -``` diff --git a/docs/discounts/discounts_guide.md b/docs/discounts/discounts_guide.md deleted file mode 100644 index 0b9a7d26a91..00000000000 --- a/docs/discounts/discounts_guide.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -description: Discount enable reducing prices on products or product categories based on a detailed logic resolution. -month_change: false -editions: - - commerce ---- - -# Discounts product guide - -## What are discounts - -Just like brick-and-mortar shops, online stores use clever strategies to attract new customers, keep loyal ones, boost sales, highlight special products, and clear out inventory. - -One powerful technique that helps achieve these goals is offering discounts. -Discounts allow online stores to temporarily or permanently reduce prices on specific products or categories, making deals more attractive to potential buyers. -They can be used to encourage first-time purchases, reward loyal customers, promote new or slow-moving items, or drive sales during seasonal events. -By displaying discounted prices clearly in the catalog or cart, businesses can create a sense of urgency, increase customer satisfaction, and ultimately boost revenue. - -[[= product_name =]] comes equipped with the Discounts feature that introduces a highly extensible solution for building price reductions. - -Store managers can create general discounts that apply for products from the product catalog or specific discounts that apply for products in the customer's shopping cart. -They can choose how the discount is calculated and set conditions to decide when their discounts are applied. - -The conditions used to limit the applicability of a discount include, for example, rules that check whether: - -- the product belongs to a specific category -- the customer belongs to a specific customer group -- minimum purchase amount (total cart value) is met -- minimum purchase quantity (per product) is met - -!!! note "Difference between discounts and price rules" - - Unlike flexible and highly configurable discounts, [prices applied to customer groups](prices.md#custom-pricing) cannot have time limits, only apply to specific customer groups, and do not offer flexibility to adjust prices at cart level. - -## Availability - -Discounts are available as part of the [[[= product_name_com =]]](../ibexa_products/ibexa_commerce.md) edition. - -## How it works - -The Discounts feature hooks into the price resolving logic of products, allowing you to modify it before it's displayed to the customers. - -### Core concepts - -#### Discounts - -Discounts are reductions in the price of a product, typically implemented as part of a marketing campaign. - -Discounts are applied in two places: - -- **Product catalog** - catalog discounts are activated when browsing the product catalog and do not require any action from the customer to be activated -- **Cart** - cart discounts can activate when entering the [cart](cart.md), if the right conditions are met. They may also require entering a discount code to be activated - -A shopping cart can have multiple active discounts, but a specific product can only have a single discount applied to it at a time. - -#### Discounts priority - -When two or more discounts can be applied to a single product, the system evaluates the following properties to choose the right one: - -- discount code existence (discounts with discount codes have priority over the others) -- discount activation place (cart discounts rank higher over catalog discounts) -- discount priority (higher priority ranks higher) -- discount creation date (newer discounts rank higher) - -The properties are evaluated in the order given above until a single discount is selected. - -#### Discount properties - -After choosing where the discount applies (catalog or cart), you can choose the discount type: - -- **Fixed amount** - where a specified amount of money, for example, 5 Euro, is deducted from the base price of the product -- **Percentage** - where a specified percentage, for example, 10%, is used to calculate the deducted amount from the product's base price - -Discounts are translatable and you can limit them to specific [regions](product_catalog_guide.md#regions) or a single currency. -They can be permanent or be active only in a specified time frame. -Regardless of the specified dates, you can disable a discount at any time to prevent customers from using it. - -The discount data is split into two parts: - -- name and description add internal information for the store managers -- promotion information add additional information displayed to the customers - -#### Target groups - -With discounts, you can target your entire customer base or only a subset of it belonging to specified [customer groups](customer_groups.md). - -#### Product selection - -All products, including [product variants](product_catalog_guide.md#product-variants), can be selected when creating a discount. -You can also limit this choice to a subset of products: - -- belonging to selected [product categories](product_catalog_guide.md#product-categories) -- hand-picked manually for special cases - -#### Conditions - -Use conditions to limit the applicability of a discount, for example by checking that: - -- the product belongs to a specific category -- the customer belongs to a specific customer group - -before applying the discount. - -For **cart discounts**, you can specify additional conditions that must be met for the discount to apply. - -These conditions can include: - -- minimum purchase quantity (per product) -- minimum purchase amount (total cart value) -- special [discount codes](#discount-codes) - -See [the built-in list of conditions](discounts_api.md#conditions) and [creating custom conditions](extend_discounts.md#implement-custom-condition) for more information. - -##### Discount codes - -For **cart discounts**, you can specify an additional text value that needs to be entered in the cart for the discount to apply. - -The discount code usage can be limited globally, for example by making the discount valid only for the first 10 customers before it expires. -You can also limit the usage per customer: - -- single use: every customer can use this code only once -- limited use: every customer can use the code a specified number of times -- unlimited - -### Discount re-indexing - -Discounts affect the prices shown in the product catalog. -When a discount is created, updated, or expires, the product catalog must be re-indexed to ensure that the search results and product listings display correct prices. - -To prevent performance disruptions which could occur if re-indexing occurred immediately, [[= product_name =]] uses the [[= product_name_base =]] Messenger's [background queue](background_tasks.md) to process re-indexing tasks in the background. - -By [configuring the process](configure_discounts.md#discount-re-indexing), you ensure that re-indexing is performed at the most convenient time to maintain your application's overall stability. - -## Capabilities - -### Management - -Users with the appropriate permissions, governed by role-based policies, can control the lifecycle of discounts by creating, editing, and deleting them. -Additionally, discount configurations can be enabled or disabled depending on the organization's needs. - -![Discount management screen](img/discount_list.png) - -An intuitive discounts interface displays a list of all available discounts. -Here, you can search for specific discounts and filter them by type, status, or more. -By accessing the detailed view of individual discounts, you can quickly review all their parameters. - -### Extensibility - -Built-in discount types offer a good starting point, but the real power of the discounts lies in extensibility. -Extending discounts opens up new possibilities for building promotional campaigns that help move stock and attach customers. - -For example, [[= product_name =]] could apply a special discount when a customer places their 1st, 3rd, or 100th order in the storefront. -This encourages first-time purchases and drives long-term customer loyalty. - -## Use cases - -Out of the box, the [[= product_name_base =]] Discounts feature comes with multiple discount types that can be applied in the following use cases. - -### End of Season Sale - -Create a permanent discount for products manufactured last season to increase attention for them. - -### Temporary sales - -Create urgency by offering promoted sales that are active only in a specified time frame to attract new customers or increase conversation, for example during events like Black Week or Cyber Monday. - -### Reward loyal customers - -Make your newsletters readers or chosen customer groups feel special by providing them with a dedicated discount that applies only to them, either by manually selecting a target audience, or by using a discount code. - -### Reward large purchases - -Encourage larger purchases and increase the average order size by applying an automatic discount when the purchase amount or quantity exceeds specified threshold. diff --git a/docs/discounts/extend_discounts.md b/docs/discounts/extend_discounts.md deleted file mode 100644 index 3b34494d212..00000000000 --- a/docs/discounts/extend_discounts.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -description: Extend Discounts by adding your own rules and conditions -month_change: false -edition: commerce ---- - -# Extend Discounts - -By extending [Discounts](discounts_guide.md), you can increase flexibility and control over how promotions are applied to suit your unique business rules. -Together with the existing [events](event_reference.md) and the [Discounts PHP API](discounts_api.md), extending discounts gives you the ability to cover additional use cases related to selling products. - -!!! tip - - If you prefer learning from videos, two presentations from Ibexa Summit 2025 cover the Discounts feature: - - - [_Introduction to the Discounts system in Ibexa DXP_](https://www.youtube.com/watch?v=kTgtxY38srw) by Konrad Oboza - - [_Extending new Discounts to suit your needs_](https://www.youtube.com/watch?v=pDJxEKJLwPs) by Paweł Niedzielski - -## Create custom conditions and rules - -With custom [conditions](discounts_api.md#conditions) and [rules](discounts_api.md#rules) you can create more advanced discounts that apply only in specific scenarios. - -For both of them, you need to specify their logic with [Symfony's expression language](https://symfony.com/doc/current/components/expression_language.html). - -### Available expressions - -You can use the following built-in expressions (variables and functions) in your own custom conditions and rules. -You can also [create your own](#custom-expressions). - -| Type | Name | Value | Available for | -| --- | --- | --- | --- | -| Function | `get_current_region()` | [Region object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-RegionInterface.html) of the current siteaccess.| Conditions, rules | -| Function | `is_in_category()` | `true/false`, depending if a product belongs to given [product categories](product_catalog_guide.md#product-categories).| Conditions, rules | -| Function | `is_user_in_customer_group()` | `true/false`, depending if an user belongs to given [customer groups](customer_groups.md). | Conditions, rules | -| Function | `calculate_purchase_amount()` | Purchase amount, calculated for all products in the cart before the discounts are applied.| Conditions, rules | -| Function | `is_product_in_product_codes()` | Parameters:
- [Product object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-ProductInterface.html)
- array of product codes
Returns `true` if the product is part of the given list.| Conditions, rules | -| Function | `is_valid_discount_code()` | Parameter: discount code (string).
Returns `true` if the discount code is valid for current user.| Conditions, rules | -| Variable | `cart` | [Cart object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-CartInterface.html) associated with current context.| Conditions, rules | -| Variable | `currency` | [Currency object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-CurrencyInterface.html) of the current siteaccess. | Conditions, rules | -| Variable | `customer_group` | [Customer group object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-CustomerGroupInterface.html) associated with given price context or the current user.| Conditions, rules | -| Variable | `product` | [Product object](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-ProductInterface.html)| Conditions, rules | -| Variable | `amount` | Original price of the product | Rules | - -### Custom expressions - -You can create your own variables and functions to make creating the conditions easier. -The examples below show how to add an additional variable and a function to the available ones: - -- New variable: `current_user_registration_date` - -It's a [`DateTime`](https://www.php.net/manual/en/class.datetime.php) object with the registration date of the currently logged-in user. - -To add it, create a class implementing the [`DiscountVariablesResolverInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountVariablesResolverInterface.html): - -``` php -[[= include_code('code_samples/discounts/src/Discounts/ExpressionProvider/CurrentUserRegistrationDateResolver.php') =]] -``` - -And mark it as a service using the `ibexa.discounts.expression_language.variable_resolver` service tag: - -``` yaml - App\Discounts\ExpressionProvider\CurrentUserRegistrationDateResolver: - tags: - - ibexa.discounts.expression_language.variable_resolver -``` - -- New function: `is_anniversary()` - -It's a function returning a boolean value indicating if today is the anniversary of the date passed as an argument. -The function accepts an optional argument, `tolerance`, allowing you to extend the range of dates that are accepted as anniversaries. -This implementation is simplified and does not cover the approach for accounts created on February 29 during leap years. - -``` php -[[= include_code('code_samples/discounts/src/Discounts/ExpressionProvider/IsAnniversaryResolver.php') =]] -``` - -Mark it as a service using the `ibexa.discounts.expression_language.function` service tag and specify the function name in the service definition. - -``` yaml - App\Discounts\ExpressionProvider\IsAnniversaryResolver: - tags: - - name: ibexa.discounts.expression_language.function - function: is_anniversary -``` - -Two new expressions are now available for use in custom conditions and rules. - -When deciding whether to register a new custom variable or function, consider the following: - -- variables are always evaluated by the expression engine and the result is available for all the rules and conditions specified in the discount -- functions are invoked only when the rule or condition using them is evaluated. If there are multiple conditions using them, they will be invoked multiple times - -For performance reasons, it's recommended to: - -- use variables only for lightweight calculations -- use functions for resource-intensive calculations (for example, checking customer's order history) -- implement caching (for example, in-memory) for function results to avoid redundant calculations when multiple discounts expressions might use the function -- specify the most resource-intensive conditions as the last to evaluate. As all conditions must be met for the discount to apply, it's possible to skip evaluating them if the previous ones won't be met - -In a production implementation, you should consider refactoring the `current_user_registration_date` variable into a `get_current_user_registration_date` function to avoid always loading the current user object and improve performance. - -### Implement custom condition - -The following example creates a new discount condition. -It allows you to offer a special discount for customers on the date when their account was created, making use of the expressions added above. - -Create the condition by creating a class implementing the [`DiscountConditionInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-DiscountConditionInterface.html): - -``` php hl_lines="29-32" -[[= include_code('code_samples/discounts/src/Discounts/Condition/IsAccountAnniversary.php') =]] -``` - -This condition can be used in both catalog and cart discounts. -To implement a cart-only discount, additionally implement the marker [`CartDiscountConditionInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-CartDiscountConditionInterface.html) interface. - -The `tolerance` option is made available for usage in the expression by passing it in the constructor. -The `getExpression()` method contains the logic of the condition, expressed using the variables and functions available in the expression engine. -The expression must evaluate to `true` or `false`, indicating whether the condition is met. - -The example uses three expressions: - -- the custom `is_anniversary()` function, returning a value indicating whether today is user's registration anniversary -- the custom `current_user_registration_date` variable, holding the value of current user's registration date -- the custom `tolerance` variable, holding the acceptable tolerance (in days) for the calculation - -For each custom condition class, you must create a dedicated condition factory, a class implementing the `\Ibexa\Discounts\Repository\DiscountCondition\DiscountConditionFactoryInterface` interface. - -This allows you to create conditions when working in the context of the Symfony service container. - -``` php -[[= include_code('code_samples/discounts/src/Discounts/Condition/IsAccountAnniversaryConditionFactory.php') =]] -``` - -Mark it as a service using the `ibexa.discounts.condition.factory` service tag and specify the condition's identifier. - -``` yaml - App\Discounts\Condition\IsAccountAnniversaryConditionFactory: - tags: - - name: ibexa.discounts.condition.factory - discriminator: !php/const App\Discounts\Condition\IsAccountAnniversary::IDENTIFIER -``` - -You can now use the condition, for example by using the PHP API or data migrations: - -``` yaml hl_lines="16-19" -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 0, 2) =]]# ... -[[= include_file('code_samples/data_migration/examples/discounts/discount_create.yaml', 22, 33) =]] - - - identifier: is_account_anniversary - expressionValues: - tolerance: 5 -``` - -To learn how to integrate it into the back office, see [Extend Discounts wizard](extend_discounts_wizard.md). - -### Implement custom rules - -The following example implements a [purchasing power parity](https://en.wikipedia.org/wiki/Purchasing_power_parity) discount, adjusting product's price in the cart based on buyer's region. -You could use it, for example, in regions sharing the same currency and apply the rule only to them by using the [`IsInRegions` condition](discounts_api.md#conditions). - -To implement a custom rule, create a class implementing the [`DiscountRuleInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-DiscountRuleInterface.html). - -``` php hl_lines="35-38" -[[= include_code('code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRule.php') =]] -``` - -The `getExpression()` method contains the logic of the rule, expressed using the variables and functions available in the expression engine. -The expression must return the new price of the product. - -It uses three expressions: - -- the built-in `amount` variable, holding the purchase amount -- the built-in `get_current_region()` function, returning the current region -- a custom `power_parity_map` variable, holding the purchasing power parity map. It's defined in the constructor - -As with conditions, create a dedicated rule factory: - -``` php -[[= include_code('code_samples/discounts/src/Discounts/Rule/PurchasingPowerParityRuleFactory.php') =]] -``` - -Then, mark it as a service using the `ibexa.discounts.rule.factory` service tag and specify the rule's type. - -``` yaml - App\Discounts\Rule\PurchasingPowerParityRuleFactory: - tags: - - name: ibexa.discounts.rule.factory - discriminator: !php/const App\Discounts\Rule\PurchasingPowerParityRule::TYPE -``` - -You can now use the rule with the PHP API, but to use it within the back office and storefront you need to: - -- [integrate it into the Discounts wizard](extend_discounts_wizard.md) -- implement a new value formatter - -### Custom discount value formatting - -You can adjust how each discount type is displayed when using the [`ibexa_discounts_render_discount_badge` Twig function](discounts_twig_functions.md#ibexa_discounts_render_discount_badge) by implementing a custom formatter. - -You must implement a custom formatter for each custom rule. - -To do it, create a class implementing the [`DiscountValueFormatterInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountValueFormatterInterface.html) and use the `ibexa.discounts.value.formatter` service tag: - -``` php -[[= include_code('code_samples/discounts/src/Discounts/Rule/PurchaseParityValueFormatter.php') =]] -``` - -``` yaml - App\Discounts\Rule\PurchaseParityValueFormatter: - tags: - - name: ibexa.discounts.value.formatter - rule_type: !php/const App\Discounts\Rule\PurchasingPowerParityRule::TYPE -``` - -## Change discount priority - -You can change the [the default discount priority](discounts_guide.md#discounts-priority) by creating a class implementing the [`DiscountPrioritizationStrategyInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountPrioritizationStrategyInterface.html) and aliasing to it the default implementation. - -The example below decorates the default implementation to prioritize recently updated discounts above all the others. -It uses one of the existing [discount search criteria](discounts_criteria.md). - -``` php -[[= include_code('code_samples/discounts/src/Discounts/RecentDiscountPrioritizationStrategy.php') =]] -``` - -``` yaml - App\Discounts\RecentDiscountPrioritizationStrategy: - decorates: Ibexa\Contracts\Discounts\DiscountPrioritizationStrategyInterface - arguments: - $inner: '@.inner' -``` diff --git a/docs/discounts/extend_discounts_wizard.md b/docs/discounts/extend_discounts_wizard.md deleted file mode 100644 index 7cfcb262a22..00000000000 --- a/docs/discounts/extend_discounts_wizard.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -description: Integrate custom rules and conditions into the back office forms. -month_change: false -edition: commerce ---- - -# Extend Discounts wizard - -## Introduction - -For the store managers to use your [custom conditions and rules](extend_discounts.md#implement-custom-condition), you need to integrate them into the back office discounts creation form. - -This form is built using [Symfony Forms]([[= symfony_doc=]]/forms.html) and the [`DiscountFormMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html) interface is at the core of the implementation. - -It provides a two-way mapping between the form structures (used to render the form) and the PHP API values used to create the discounts by offering methods related to: - -- form rendering -- data structure mapping - -Form rendering methods return objects implementing the [`DiscountDataInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-DiscountDataInterface.html), allowing you to access and modify the form data. -They include: - -- [`createFormData()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_createFormData) renders the form before the discount is created -- [`mapDiscountToFormData()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapDiscountToFormData) renders the form when the discount already exists. It fills the discount edit form with the saved discount details - -The data mapping methods are responsible for transforming the form data into structures compatible with the [Discount's PHP API](discounts_api.md) services like [`DiscountServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountServiceInterface.html) and [`DiscountCodeServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-DiscountsCodes-DiscountCodeServiceInterface.html). -They include: - -- [`mapCreateDataToStruct()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapCreateDataToStruct) creates the [`DiscountCreateStruct`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Struct-DiscountCreateStruct.html) object to create the discount -- [`mapUpdateDataToStruct()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapUpdateDataToStruct) creates the [`DiscountUpdateStruct`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Struct-DiscountUpdateStruct.html) object to update the discount -- [`mapEditTranslateDataToStruct()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html#method_mapEditTranslateDataToStruct) creates the [`TranslationStruct`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Struct-DiscountTranslationStruct.html) objects for [translating the discounts](discounts_api.md#discount-translations) - -In the UI, the discounts wizard consists of several steps: - -- General properties -- Target group -- Products -- Conditions (only for Cart discounts) -- Discount value -- Summary - -Each of these steps is represented by its own form mappers, data classes, and form types in the code. - -In addition, the main form mapper and the form mappers responsible for each step in the wizard dispatch events that you can use to add your custom logic. -See [discount's form events](discounts_events.md#form-events) for a list of the available events. - -## Integrate custom conditions - -This example continues the [anniversary discount condition example](extend_discounts.md#implement-custom-condition), integrating the condition with the wizard by adding a dedicated step with condition options. -The example limits the new step to cart discounts only. - -To add a custom step, create a value object representing the step. -It contains the step identifier, properties for storing form data, and extends the [`AbstractDiscountStep`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-Data-AbstractDiscountStep.html): - -``` php -[[= include_code('code_samples/discounts/src/Discounts/Step/AnniversaryConditionStep.php') =]] -``` - -Then, create a new event listener listening to the [`CreateFormDataEvent` and `MapDiscountToFormDataEvent` events](discounts_events.md#form): - -``` php hl_lines="18-19 26-50" -[[= include_code('code_samples/discounts/src/Discounts/Step/Step1/AnniversaryConditionStepEventSubscriber.php') =]] -``` - -Attaching the `addAnniversaryConditionStep()` method to both these events adds the custom step both in discount creation and edit forms. - -The method first verifies if the form renders the cart discount wizard, according to assumptions of this example. - -Then, it creates the `AnniversaryConditionStep` object. -If the discount existed already and is being edited, the saved values are used to populate the form. - -Finally, the new step is added to the wizard using the `withStep()` method, using `45` as step priority. -Each of the existing form steps has its own priority, allowing you to add your custom steps between them. - -| Step name | Priority | -|---| ---| -| General properties | 50| -| Target group | -20 | -| Products | -30 | -| Conditions | -40 | -| Discount value | -50 | -| Summary | -1000 | - -The custom step is added between the "Conditions" and "Discount value" steps. - -To add form fields to it, create an event listener adding your fields and a custom form type: - -``` php -[[= include_code('code_samples/discounts/src/Discounts/Step/AnniversaryConditionStepFormListener.php') =]] -``` - -``` php -[[= include_code('code_samples/discounts/src/Form/Type/AnniversaryConditionStepType.php') =]] -``` - -The new form step, including its form fields, are now part of the discounts wizard. - -The last task is making sure that the form data is correctly saved by attaching it to the discounts API structs. - -Expand the previously created `AnniversaryConditionStepEventSubscriber` to listen to two additional events: - -- [`CreateDiscountCreateStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateDiscountCreateStructEvent.html) -- [`CreateDiscountUpdateStructEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-CreateDiscountUpdateStructEvent.html) - -and add the `addStepDataToStruct()` method: - -``` php hl_lines="23-24 57-70" -[[= include_code('code_samples/discounts/src/Discounts/Step/Step2/AnniversaryConditionStepEventSubscriber.php') =]] -``` - -When the form is submitted, this method extracts information whether the store manager enabled the anniversary discount in the form and adds the condition to make sure this data is properly saved. - -The custom condition is now integrated with the discounts wizard and can be used by store managers to attract new customers. - -## Integrate custom rules - -This example continues the [purchasing power parity rule example](extend_discounts.md#implement-custom-rules), integrating the rule with the wizard. - -First, create a new service implementing the `DiscountValueMapperInterface` interface, responsible for handling the new rule type: - -``` php hl_lines="59-60" -[[= include_code('code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityValueMapper.php') =]] -``` - -It uses an `PurchasingPowerParityValue` object to store the form data: - -``` php -[[= include_code('code_samples/discounts/src/Form/Data/PurchasingPowerParityValue.php') =]] -``` - -This value mapper is used by a new form mapper, dedicated to the new rule type: - -``` php -[[= include_code('code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityFormMapper.php') =]] -``` - -Link them together when defining the services: - -``` yaml - App\Form\FormMapper\PurchasingPowerParityValueMapper: ~ - - App\Form\FormMapper\PurchasingPowerParityFormMapper: - arguments: - $discountValueMapper: '@App\Form\FormMapper\PurchasingPowerParityValueMapper' -``` - -The [`DiscountFormMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-DiscountFormMapperInterface.html) acts as a registry, finding a form mapper dedicated for given rule type and delegating to the responsibility of building the form. - -As each rule type might have a different rule calculation logic, each rule must have a different "Discount value" step in the form. - -To create it, create a dedicated class implementing the [`DiscountValueFormTypeMapperInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Admin-Form-DiscountValueFormTypeMapperInterface.html) - -``` php -[[= include_code('code_samples/discounts/src/Form/FormMapper/PurchasingPowerParityDiscountValueFormTypeMapper.php') =]] -``` - -and add a dedicated value type class: - -``` php hl_lines="26-38 45-59 71" -[[= include_code('code_samples/discounts/src/Form/Type/DiscountValue/PurchasingPowerParityValueType.php') =]] -``` - -In the example above, the discount value step is used to display a read-only field with regions the discount is limited to. -The `$availableRegionHandler` callback function extracts the selected regions and modifies the form as needed, using the `FormEvents::PRE_SET_DATA` and `FormEvents::POST_SUBMIT` events. - -The last step consists of providing all the required translations. -Specify them in `translations/ibexa_discount.en.yaml`: - -``` yaml -ibexa.discount.type.purchasing_power_parity: Purchasing Power Parity -discount.rule_type.purchasing_power_parity: Purchasing Power Parity -``` - -The custom rule is now integrated with the discounts wizard and can be used by store managers to offer new discounts. diff --git a/docs/discounts/img/discount_list.png b/docs/discounts/img/discount_list.png deleted file mode 100644 index 119abfa48f645752878cbb4547cf80f8a9f74b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138419 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

_dQLdw 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 UYlHj3NWh=8xPn-Th@t=g1KJ=qT>t<8 diff --git a/docs/getting_started/getting_started.md b/docs/getting_started/getting_started.md index 84eace2204c..d8a7971da76 100644 --- a/docs/getting_started/getting_started.md +++ b/docs/getting_started/getting_started.md @@ -8,7 +8,6 @@ page_type: landing_page To get started working with [[= product_name =]], see how you can get an installation and what first steps to take to familiarize yourself with the platform. [[= cards([ - "getting_started/requirements", "getting_started/install_cohesivo", "getting_started/first_steps", ], columns=3) =]] diff --git a/docs/getting_started/install_cohesivo.md b/docs/getting_started/install_cohesivo.md index d9a319d839b..a3ae0f50af7 100644 --- a/docs/getting_started/install_cohesivo.md +++ b/docs/getting_started/install_cohesivo.md @@ -29,8 +29,6 @@ Additional requirements: For production, you need to [configure an HTTP server](#configure-an-http-server), Apache or nginx (Apache is used as an example below). -Before getting started, make sure you review other [requirements](requirements.md) to see the systems that are supported and used for testing. - ### Get Composer Install a recent stable version of Composer, the PHP command line dependency manager. @@ -127,12 +125,6 @@ To use Composer to instantly create a project in the current folder with all the composer create-project ibexa/experience-skeleton . ``` -=== "[[= product_name_com =]]" - - ``` bash - composer create-project ibexa/commerce-skeleton . - ``` - ??? note "Using PHP versions other than 8.3" If you aren't using PHP 8.3 but are using PHP 8.4, PHP 8.2, or any older version, use a different set of commands: @@ -151,13 +143,6 @@ To use Composer to instantly create a project in the current folder with all the composer update ``` - === "[[= product_name_com =]]" - - ``` bash - composer create-project ibexa/commerce-skeleton --no-install . - composer update - ``` - !!! tip "Authentication token" If you added credentials to the `COMPOSER_AUTH` variable, at this point add this variable to `auth.json` (for example, by running `echo $COMPOSER_AUTH > auth.json`). @@ -174,18 +159,6 @@ To use Composer to instantly create a project in the current folder with all the composer create-project ibexa/experience-skeleton:[[= latest_tag_5_0 =]] . ``` -!!! note "[[= product_name_cloud =]]" - - If you're deploying your installation on [Upsun](https://fixed.docs.upsun.com/guides/ibexa/deploy.html), run the following commands: - - ``` bash - composer require ibexa/cloud - php bin/console ibexa:cloud:setup --upsun - ``` - - These commands add the necessary package and provide the required configuration for using Upsun. - For more information, see [Install on Ibexa Cloud](install_on_ibexa_cloud.md). - #### Add project to version control It's recommended to add your project to version control. @@ -457,19 +430,11 @@ Here are some additional tasks that require scheduling: - To use the [Link manager](url_management.md), schedule the URL validation command `ibexa:check-urls`. - To control the [recent activity log size](recent_activity.md#log-retention), schedule the `ibexa:activity-log:truncate` command. -- To re-index [discounts](discounts_guide.md#discount-re-indexing), schedule the `ibexa:discounts:reindex` command. - - !!! note - - You must first set up [[= product_name_base =]] Messenger. - For more information, see [Discount re-indexing configuration](configure_discounts.md#discount-re-indexing). - The following example schedules these commands separately: - `ibexa:cron:run` [every minute](https://crontab.guru/every-minute) - `ibexa:check-urls` [every week](https://crontab.guru/weekly) on Sunday at midnight - `ibexa:activity-log:truncate` [every hour](https://crontab.guru/every-hour) at minute 0 -- `ibexa:discounts:reindex` [every day](https://crontab.guru/every-day) at midnight This shell script creates a temporary file with the job lines, then replaces the existing crontab for the web server user: @@ -477,7 +442,6 @@ This shell script creates a temporary file with the job lines, then replaces the echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt echo '0 0 * * 0 cd ; php bin/console ibexa:check-urls --quiet --env=prod' >> ibexa_cron.txt echo '0 * * * * cd ; php bin/console ibexa:activity-log:truncate --quiet --env=prod' >> ibexa_cron.txt -echo '0 0 * * * cd ; php bin/console ibexa:discounts:reindex --quiet --env=prod' >> ibexa_cron.txt crontab -u www-data ibexa_cron.txt rm ibexa_cron.txt ``` @@ -504,10 +468,6 @@ services: Ibexa\Bundle\ActivityLog\Command\TruncateLogCommand: tags: - { name: ibexa.cron.job, schedule: '0 * * * *', priority: -2 } - - Ibexa\Bundle\Discounts\Command\ReIndexDiscountProductCommand: - tags: - - { name: ibexa.cron.job, schedule: '0 0 * * *' } ``` The `ibexa.cron.job` tag accepts the following options: @@ -550,11 +510,4 @@ services: Enable Ibexa Messenger for background tasks. Make sure that its [worker starts with the server](background_tasks.md#start-worker). -A list of processes that use [[= product_name_base =]] Messenger includes at least these two: - -- [[[= product_name_cdp =]] data export](/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) -- [Discount re-indexing](configure_discounts.md#discount-re-indexing) - -## [[= product_name_cloud =]] - -If you want to host your application on [[= product_name_cloud =]], follow the [Ibexa Cloud](install_on_ibexa_cloud.md) procedure. +Processes that use [[= product_name_base =]] Messenger include, for example, [[[= product_name_cdp =]] data export](/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data). diff --git a/docs/getting_started/install_with_ddev.md b/docs/getting_started/install_with_ddev.md index 95ff254877a..274ac3e6a4a 100644 --- a/docs/getting_started/install_with_ddev.md +++ b/docs/getting_started/install_with_ddev.md @@ -271,7 +271,7 @@ The following example shows the use of `.env.local` with database configuration: - Modify step [5. Create [[= product_name =]] project](#5-create-project) to insert the database setting: ```bash - ddev composer create-project ibexa/commerce-skeleton --no-install; + ddev composer create-project ibexa/experience-skeleton --no-install; echo "DATABASE_URL=mysql://db:db@db:3306/db" >> .env.local; ddev composer install; ``` @@ -467,12 +467,11 @@ If the local project needs to answer to real production domains (for example, to As this feature modifies domain resolution, the real website may be unreachable until the `hosts` file is manually cleaned. -### Cluster or [[= product_name_cloud =]] +### Cluster You can use DDEV to locally simulate a production cluster. -- See [Clustering with DDEV](clustering_with_ddev.md) to add Elasticsearch, Solr, or Redis to your DDEV installation. -- See [DDEV and Ibexa Cloud](ddev_and_ibexa_cloud.md) to locally run a [[= product_name =]] project by using DDEV. +See [Clustering with DDEV](clustering_with_ddev.md) to add Elasticsearch, Solr, or Redis to your DDEV installation. ## Stop or remove the project diff --git a/docs/getting_started/requirements.md b/docs/getting_started/requirements.md deleted file mode 100644 index 311ad4e4a1e..00000000000 --- a/docs/getting_started/requirements.md +++ /dev/null @@ -1,393 +0,0 @@ ---- -description: System, component and package requirements for running Cohesivo. -month_change: false ---- - - - -# Requirements - -This document covers all supported versions of the product. -To review the requirements, select the specific version of [[= product_name =]] you're interested in. - -The following server requirements cover both running the software on-premise and on third-party PaaS providers. - -!!! note "[[= product_name_cloud =]]" - - For running on [[[= product_name_cloud =]]](https://www.ibexa.co/products/ibexa-cloud), where recommended configuration and support is provided out of the box, see separate [[[= product_name_cloud =]] section](#ibexa-cloud-requirements-and-setup) for further reading on its requirements. - -The minimal setup requires PHP, MySQL/MariaDB, Apache/Nginx, Node.js and `yarn`. -For production setups it's recommended that you use Varnish/Fastly, Redis/Valkey, NFS/EFS/S3 and Solr/Elasticsearch in a [clustered setup](clustering.md). - -!!! caution "Recommended versions" - - Review all the recommended versions carefully. - If you see a "+" next to the product version, it means that we recommend this version or higher within the same major release. - For example, "1.18+" means any 1.x version higher or equal to 1.18, but not 2.x. - - Using the latest listed version of each product or component is recommended. - Always use a version that receives security updates, either by the vendor themselves or by a trusted third party, such as the distribution vendor. - -## Operating system - -=== "[[= product_name =]] v5.0" - - |Name|Version| - |---|---| - |Debian 11 "Bullseye"|11.0-11.7+| - |Ubuntu "Noble Numbat"| 24.04 | - |RHEL / CentOS / CentOS Stream | 8.1-9.5+ | - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - |Name|Version| - |---|---| - |Debian 10 "Buster" |10.0-10.13+| - |Debian 11 "Bullseye"|11.0-11.7+| - |Ubuntu "Focal Fossa" | 20.04 | - |Ubuntu "Jammy Jellyfish"| 22.04 | - |Ubuntu "Noble Numbat"| 24.04 | - |RHEL / CentOS / CentOS Stream | 8.1-9.5+ | - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## Web server - -=== "[[= product_name =]] v5.0" - - - Nginx 1.27+ - - Apache 2.4 (with required modules `mod_rewrite`, `mod_env` and recommended: `mod_setenvif`, `mod_expires`; - event MPM is recommended, if you need to use prefork you also need the `mod_php` module) - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - - Nginx 1.18-1.25+ - - Apache 2.4 (with required modules `mod_rewrite`, `mod_env` and recommended: `mod_setenvif`, `mod_expires`; - event MPM is recommended, if you need to use prefork you also need the `mod_php` module) - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## DBMS - -=== "[[= product_name =]] v5.0" - - - MariaDB 10.11+ or 11.4 - - MySQL 8.4 - - PostgreSQL 14 or 18 - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - - MariaDB 10.3-10.11+ or 11.4 - - MySQL 8.0 or 8.4 - - PostgreSQL 14 or 18 - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## PHP - -=== "[[= product_name =]] v5.0" - - - 8.4 - - 8.3 - -=== "[[= product_name =]] v4.6" - - - 8.4 - - 8.3 - - 8.2 - - 8.1 (PHP 8.1 has reached its End of Life. Unless you have extended support from vendors like Debian or Zend, you should use PHP 8.2) - - 8.0 (PHP 8.0 has reached its End of Life. Security fixes for several Symfony dependencies are not available. Unless you have extended support from vendors like Debian or Zend, you should use PHP 8.2) - - 7.4 (PHP 7.4 has reached its End of Life. Security fixes for several Symfony dependencies are not available. Unless you have extended support from vendors like Debian or Zend, you should use PHP 8.2) - -### PHP extensions - -=== "[[= product_name =]] v5.0" - - - `php-cli` - - `php-fpm` - - `php-mysql` (`php-mysqlnd`) or `php-pgsql` - - `php-xml` - - `php-mbstring` - - `php-process` (on RHEL/CentOS) - - `php-intl` - - `php-curl` - - `php-pear` (optional, provides pecl) - - `php-gd` or `php-imagick` (via pecl on RHEL/CentOS) - - `php-sodium` - - `php-bcmath` - -=== "[[= product_name =]] v4.6" - - - `php-cli` - - `php-fpm` - - `php-mysql` (`php-mysqlnd`) or `php-pgsql` - - `php-xml` - - `php-mbstring` - - `php-json` - - `php-process` (on RHEL/CentOS) - - `php-intl` - - `php-curl` - - `php-pear` (optional, provides pecl) - - `php-gd` or `php-imagick` (via pecl on RHEL/CentOS) - - `php-sodium` - - `php-bcmath` - -### Cluster PHP extensions - -=== "[[= product_name =]] v5.0" - - - `php-redis` - -=== "[[= product_name =]] v4.6" - - - `php-redis` or `php-memcached` - -## Search - -=== "[[= product_name =]] v5.0" - - |Name|Version| - |---|---| - |Solr|8.11.1+ or 9.8.1+| - |Elasticsearch| 7.16.2+ or 8.19+ | - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - |Name|Version| - |---|---| - |Solr|7.7+, 8.11.1+ or 9.8.1+| - |Elasticsearch| 7.16.2+ or 8.19+ | - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## Graphic Handler - -=== "[[= product_name =]] v5.0" - - - GraphicsMagick - - ImageMagick - - GD - - Optionally, if you intend to edit [PNG, SVG, GIF or WEBP files in the Image Editor](images.md#image-optimization), or use it with image variations: - - - JpegOptim - - Optipng - - Pngquant 2 - - SVGO 1 - - Gifsicle - - cwebp - -=== "[[= product_name =]] v4.6" - - - GraphicsMagick - - ImageMagick - - GD - - Optionally if you intend to edit [PNG, SVG, GIF or WEBP files in the Image Editor](images.md#image-optimization), or use it with image variations: - - - JpegOptim - - Optipng - - Pngquant 2 - - SVGO 1 - - Gifsicle - - cwebp - -## [Clustering](clustering.md) - -=== "[[= product_name =]] v5.0" - - - Linux NFS or S3/EFS (for IO, aka binary files stored in content repository, not supported with legacy) - - Redis 7.2+, 8.4+, or Valkey 9.0+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence) - - [Varnish](https://www.varnish.org/) 6.0LTS or 7.1 with [varnish-modules](https://github.com/varnish/varnish-modules/blob/master/README.md) or [Fastly](https://www.fastly.com/) using [the provided bundle](http_cache.md) (for HTTP Cache) - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - - Linux NFS or S3/EFS (for IO, aka binary files stored in content repository, not supported with legacy) - - Redis 4.0+, 5.0+, 7.2+, 8.4+, or Valkey 9.0+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence), or [Memcached](https://memcached.org/) 1.5 or higher - - [Varnish](https://www.varnish.org/) 6.0LTS or 7.1 with [varnish-modules](https://github.com/varnish/varnish-modules/blob/master/README.md) or [Fastly](https://www.fastly.com/) using [the provided bundle](http_cache.md) (for HTTP Cache) - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v3.3" - - - Linux NFS or S3/EFS (for IO, aka binary files stored in content repository, not supported with legacy) - - Redis 4.0+ or 5.0+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence) or [Memcached](https://memcached.org/) 1.5 or higher - - [Varnish](https://www.varnish.org/) 6.0LTS with [varnish-modules](https://github.com/varnish/varnish-modules/blob/master/README.md) or [Fastly](https://www.fastly.com/) using [the provided bundle](https://doc.ibexa.co/en/3.3/guide/cache/http_cache/) (for HTTP Cache) - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## Filesystem - -=== "[[= product_name =]] v5.0" - - - Linux ext4 / XFS - -=== "[[= product_name =]] v4.6" - - - Linux ext4 / XFS - -## Package manager - -=== "[[= product_name =]] v5.0" - - - Composer: recent 2.8 version - -=== "[[= product_name =]] v4.6" - - - Composer: recent 2.7 version - -## Asset manager - -=== "[[= product_name =]] v5.0" - - - `Node.js` 22+ - - `yarn` 1.15.2+ - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -=== "[[= product_name =]] v4.6" - - - `Node.js` 18+, 20+, 22+ - - `yarn` 1.15.2+ - - If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. - For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. - -## Browser - -=== "[[= product_name =]] v5.0" - - [[= product_name =]] is developed to work with *any* web browser that supports modern standards, on *any* screen resolution suitable for web, running on *any* device. - However, for the Editorial and Administration User Interfaces, you need: a minimum of 1366-by-768 screen resolution, a desktop or tablet device, and a recommended/supported browser among the ones found below. - - - Mozilla® Firefox® most recent stable version (recommended) - - Google Chrome™ most recent stable version (recommended) - - Chromium™ based browsers such as Microsoft® Edge® and Opera®, most recent stable version, desktop *and* tablet - - Apple® Safari® most recent stable version, desktop *and* tablet - -=== "[[= product_name =]] v4.6" - - [[= product_name =]] is developed to work with *any* web browser that supports modern standards, on *any* screen resolution suitable for web, running on *any* device. - However for the Editorial and Administration User Interfaces you need: a minimum of 1366-by-768 screen resolution, a desktop or tablet device, and a recommended/supported browser among the ones found below. - - - Mozilla® Firefox® most recent stable version (recommended) - - Google Chrome™ most recent stable version (recommended) - - Chromium™ based browsers such as Microsoft® Edge® and Opera®, most recent stable version, desktop *and* tablet - - Apple® Safari® most recent stable version, desktop *and* tablet - -## [[= product_name_cloud =]] requirements and setup - -=== "[[= product_name =]] v5.0" - - ### Cloud hosting with [[= product_name_cloud =]] and Upsun - - In general, [[= product_name_cloud =]] supports all features and services of [Upsun](https://fixed.docs.upsun.com/add-services.html#available-services) that are compatible and supported by the [[= product_name =]] version you use. - - For example: - - - Upsun provides Redis support for versions 7.2, 7.0, and 6.2. [[= product_name =]] supports Redis version 7.2. - As a result, Redis is supported on [[= product_name_cloud =]] in versions 7.2. - - Features or services supported by [[= product_name =]] but not covered by Upsun may be possible by means of a [custom integration](#custom-integrations). - - ### [[= product_name_cloud =]] Setup support matrix - - All [[= product_name =]] features are supported in accordance with the example above. - - !!! note - - As Upsun doesn't support a configuration with multiple PostgreSQL databases, for [[= product_name_cloud =]] / Upsun it's impossible to have a DFS table in a separate database. - - ### Recommended [[= product_name_cloud =]] setup - - For more details on recommended setup configuration see bundled `.platform.app.yaml` and `.platform/` configuration files. - - These files are kept up-to-date with latest recommendations and can be improved through contributions. - - ### Supported [[= product_name_cloud =]] setup - - Because of the large range of possible configurations of [[= product_name =]], there are many possibilities beyond what is provided in the default recommended configuration. - - Make sure to set aside time and budget for: - - - Verifying your requirements and ensuring they're supported by Upsun - - Additional time for adaptation and configuration work, and testing by your development team - - Additional consulting/onboarding time with Upsun, Ibexa technical services, and/or one of the many partners with prior experience in using Upsun with [[= product_name =]] - - The cost and effort of this isn't included in [[= product_name_cloud =]] subscription and is vary depending on the project. - - ### Custom integrations - - Features supported by [[= product_name =]], but not natively by Upsun, can in many cases be used by means of custom integrations with external services. - - For example, you can create an integration with S3 by means of setting up your own S3 bucket and configuring the relevant parts of [[= product_name =]]. - We recommend giving the development team working on the project access to the bucket to ensure work is done in a DevOps way without depending on external teams when changes are needed. - -=== "[[= product_name =]] v4.6" - - ### Cloud hosting with [[= product_name_cloud =]] and Upsun - - In general, [[= product_name_cloud =]] supports all features and services of [Upsun](https://fixed.docs.upsun.com/add-services.html#available-services) that are compatible and supported by the [[= product_name =]] version you use. - - For example: - - - Upsun provides Redis support for versions 7.2, 7.0, and 6.2. [[= product_name =]] supports Redis in versions 4.0, 5.0, and 7.2. - As a result, Redis is supported on [[= product_name_cloud =]] in version 7.2. - - Features or services supported by [[= product_name =]] but not covered by Upsun may be possible by means of a [custom integration](#custom-integrations). - - ### [[= product_name_cloud =]] Setup support matrix - - All [[= product_name =]] features are supported in accordance with the example above. - For example: As Legacy Bridge isn't supported with v3, it's not supported on [[= product_name_cloud =]] either. - - !!! note - - As Upsun doesn't support a configuration with multiple PostgreSQL databases, for [[= product_name_cloud =]] / Upsun it's impossible to have a DFS table in a separate database. - - ### Recommended [[= product_name_cloud =]] setup - - For more details on recommended setup configuration see bundled `.platform.app.yaml` and `.platform/` configuration files. - - These files are kept up-to-date with latest recommendations and can be improved through contributions. - - ### Supported [[= product_name_cloud =]] setup - - Because of the large range of possible configurations of [[= product_name =]], there are many possibilities beyond what is provided in the default recommended configuration. - - Make sure to set aside time and budget for: - - - Verifying your requirements and ensuring they're supported by Upsun - - Additional time for adaptation and configuration work, and testing by your development team - - Additional consulting/onboarding time with Upsun, Ibexa technical services, and/or one of the many partners with prior experience in using Upsun with [[= product_name =]] - - The cost and effort of this isn't included in [[= product_name_cloud =]] subscription and is vary depending on the project. - - ### Custom integrations - - Features supported by [[= product_name =]], but not natively by Upsun, can in many cases be used by means of custom integrations with external services. - - For example, you can create an integration with S3 by means of setting up your own S3 bucket and configuring the relevant parts of [[= product_name =]]. - We recommend giving the development team working on the project access to the bucket to ensure work is done in a DevOps way without depending on external teams when changes are needed. diff --git a/docs/ibexa_cloud/ddev_and_ibexa_cloud.md b/docs/ibexa_cloud/ddev_and_ibexa_cloud.md deleted file mode 100644 index 22907cd08a6..00000000000 --- a/docs/ibexa_cloud/ddev_and_ibexa_cloud.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -description: Use DDEV to run an Ibexa Cloud project locally. -month_change: false ---- - -# DDEV and Ibexa Cloud - -Two ways are available to run an [[= product_name_cloud =]] project locally with DDEV: - -- [by using the `ddev-upsun` and `ddev-ibexa-cloud` add-ons](#with-ibexa-cloud-add-ons) -- [like other existing project, without these add-ons](#without-ibexa-cloud-add-ons). - -!!! note - - The following examples use [[[= product_name_cloud =]] CLI (`ibexa_cloud`)](https://cli.ibexa.cloud/). - For more information and examples, see [[[= product_name_cloud =]] CLI](ibexa_cloud_cli.md). - -## With Ibexa Cloud add-ons - -To configure [`ddev/ddev-upsun` add-on](https://github.com/ddev/ddev-upsun) and [`ddev/ddev-ibexa-cloud` add-on](https://github.com/ddev/ddev-ibexa-cloud), you need a [Upsun API Token](https://fixed.docs.upsun.com/administration/cli/api-tokens.html). - -The `ddev/ddev-upsun` add-on configures the document root, the PHP version, the database, and the cache pool according to the [[= product_name_cloud =]] configuration. -About the search engine, the add-on can configure Elasticsearch but can't configure Solr. -If you use Solr on [[= product_name_cloud =]] and want to add it to your DDEV stack, see [Clustering with DDEV and `ibexa/ddev-solr` add-on](clustering_with_ddev.md#solr). - -The `ddev/ddev-ibexa-cloud` add-on integrates the `ibexa_cloud` command inside the container, -and eases the pull of cloud contents into the local installation. - -`env:COMPOSER_AUTH` from Upsun can't be used, because JSON commas are incorrectly interpreted by `--web-environment-add`, which sees them as multiple variable separators. -But the variable must exist for Upsun `hooks` scripts to work. -To use an `auth.json` file for this purpose, see [Using `auth.json`](install_with_ddev.md#using-authjson). - -The following sequence of commands: - -1. Downloads the [[= product_name_cloud =]] project from the default environment "production" - into a new directory (for example `my-ddev-project`), using the [`ibexa_cloud` command](https://cli.ibexa.cloud/). - (Replace `` with the hash of your own project. -See [`ibexa_cloud help get`](https://fixed.docs.upsun.com/administration/cli.html#3-use) for options like selecting another environment). -1. Configures a new DDEV project. -1. Configures the `ddev/ddev-ibexa-cloud` add-on with ``, environment name (for example, `production`), - and application name (for example, `app` from `name: app` line in `.platform.app.yaml` file). -1. Configures `ibexa_cloud` command token. See [Create an API token](https://fixed.docs.upsun.com/administration/cli/api-tokens.html#2-create-an-api-token) for more information. -1. Ignores `.ddev/` directory from Git. - (Some DDEV config could be committed like in [this documentation](https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#extending-configyaml-with-custom-configyaml-files).) -1. Sets Composer authentication by using an already existing `auth.json` file. -1. Installs the `ddev/ddev-upsun` add-on which prompts for the Upsun API token, project ID and environment name. -1. Changes `maxmemory-policy` from default `allkeys-lfu` to a [value accepted by the `RedisTagAwareAdapter`](https://github.com/symfony/cache/blob/5.4/Adapter/RedisTagAwareAdapter.php#L95). - (Check `.ddev/config.upsun.yaml` and adapt if needed. For example, you may have to comment out New Relic.) -1. Installs the `ddev/ddev-ibexa-cloud` add-on. -1. Starts the project. -1. Gets the content from [[= product_name_cloud =]], both database and binary files by using `ddev pull ibexa-cloud` feature from the add-on. -1. Displays information about the project services. -1. Opens the project in a browser. - -```bash -ibexa_cloud project:get my-ddev-project && cd my-ddev-project -ddev config --project-type=php --php-version 8.3 --web-environment-add COMPOSER_AUTH='',DATABASE_URL=mysql://db:db@db:3306/db -ddev config --web-environment-add IBEXA_PROJECT=,IBEXA_ENVIRONMENT=production,IBEXA_APP=app -ddev config --web-environment-add IBEXA_CLI_TOKEN= -echo '.ddev/' >> .gitignore -mkdir -p .ddev/homeadditions/.composer && cp /auth.json .ddev/homeadditions/.composer -ddev add-on get ddev/ddev-upsun -sed -i 's/maxmemory-policy allkeys-lfu/maxmemory-policy volatile-lfu/' .ddev/redis/redis.conf -ddev add-on get ddev/ddev-ibexa-cloud -ddev start -ddev pull ibexa-cloud -y -ddev describe -ddev launch -``` - -!!! note - - The Upsun API token is set at user profile level, therefore it's stored globally under current user root as `PLATFORMSH_CLI_TOKEN` in `~/.ddev/global_config.yaml`. - -## Without Ibexa Cloud add-ons - -The following example adapts the [manual method to run an already existing project](install_with_ddev.md#run-an-already-existing-project) to the Upsun case: - -The following sequence of commands: - -1. Downloads the [[= product_name_cloud =]] Upsun project from the default environment "production" into a new directory, using the [[[= product_name_cloud =]] CLI](https://cli.ibexa.cloud/). -(Replace `` with the hash of your own project. See [`ibexa_cloud help get`](https://fixed.docs.upsun.com/administration/cli.html#3-use) for options like selecting another environment). -1. Configures a new DDEV project. -1. Ignores `.ddev/` directory from Git. -(Some DDEV config could be committed like in [this documentation](https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#extending-configyaml-with-custom-configyaml-files).) -1. Starts the DDEV project. -1. Sets Composer authentication. -1. [Gets the database content from Upsun](https://fixed.docs.upsun.com/add-services/mysql.html#exporting-data). -1. [Imports this database content into DDEV project's database](https://docs.ddev.com/en/stable/users/usage/database-management/#database-imports). -1. [Downloads the Upsun public/var locally](https://fixed.docs.upsun.com/development/file-transfer.html#transfer-a-file-from-a-mount) to have the content binary files. -1. Install the dependencies and run post-install scripts. -1. Displays information about the project services. -1. Opens the DDEV project in a browser. - -```bash -ibexa_cloud project:get my-ddev-project && cd my-ddev-project -ddev config --project-type=php --php-version 8.3 --docroot=public --web-environment-add DATABASE_URL=mysql://db:db@db:3306/db -echo '.ddev/' >> .gitignore -ddev start -ddev composer config --global http-basic.updates.ibexa.co -ibexa_cloud db:dump --gzip --file=production.sql.gz -ddev import-db --file=production.sql.gz && rm production.sql.gz -ibexa_cloud mount:download --mount public/var --target public/var -ddev composer install -ddev describe -ddev launch -``` - -From there, services can be added to get closer to [[= product_name_cloud =]] architecture. -`.platform/services.yaml` indicates the services used. -For more information, see [Clustering with DDEV](clustering_with_ddev.md). diff --git a/docs/ibexa_cloud/environment_variables.md b/docs/ibexa_cloud/environment_variables.md deleted file mode 100644 index a49e1ca93a0..00000000000 --- a/docs/ibexa_cloud/environment_variables.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -description: Automatically generated environment variables based on Ibexa Cloud relationships and routes. ---- - -# Environment variables on Ibexa Cloud - -[[= product_name_cloud =]] automatically generates environment variables based on the configuration of relationships and routes in Upsun. -It parses `PLATFORM_RELATIONSHIPS` and `PLATFORM_ROUTES` environment variables and exposes them as application-specific variables. - -Environment variable prefixes are created by converting relationship names to uppercase and replacing hyphens with underscores. - -When multiple endpoints are defined for a single relationship, numerical indices are used for all entries except the first one, for example: `SOLR`, `SOLR_1`, `SOLR_2`. -When multiple services of the same type are present, environment variables are exposed for each service accordingly based on their relationship names. - -!!! caution "Environment variables in configuration files" - - To prevent Symfony container initialization failures, you must define placeholder values for [[= product_name_cloud =]] environment variables in your `.env` file when referencing them in configuration files. - - Do it only for the variables that are required for the Symfony container to build. - - For example, if your `doctrine.yaml` uses a [database variable](#database-variables) created for a relationship named `pgsql`: - - ``` yaml - doctrine: - dbal: - url: '%env(resolve:PGSQL_URL)%' - ``` - - You must define a placeholder value in `.env`: - - ``` env - PGSQL_URL="placeholder" - ``` - - The actual value of the environment variable is provided by [[= product_name_cloud =]] at runtime. - The placeholder in `.env` is only required to prevent Symfony container compilation errors during build. - -## Relationship naming conventions - -You can choose relationship names freely in `.platform.app.yaml` for most services. - -The only required names are: - -- `dfs_database` - DFS database (required for DFS functionality) -- `redissession` or `valkeysession` - Redis/Valkey for sessions (required for dedicated session storage) - -Common relationship name include: - -- `database` - main application database -- `rediscache` - Redis for cache -- `elasticsearch` - Elasticsearch search service -- `solr` - Solr search service - -## Database variables - -For MySQL and PostgreSQL databases, the following variables are generated based on the relationship name (for example, `database`): - -- `{RELATIONSHIP_NAME}_URL` - full database URL with charset and server version -- `{RELATIONSHIP_NAME}_USER` / `{RELATIONSHIP_NAME}_USERNAME` - database user -- `{RELATIONSHIP_NAME}_PASSWORD` - database password -- `{RELATIONSHIP_NAME}_HOST` - database host -- `{RELATIONSHIP_NAME}_PORT` - database port -- `{RELATIONSHIP_NAME}_NAME` / `{RELATIONSHIP_NAME}_DATABASE` - database name -- `{RELATIONSHIP_NAME}_DRIVER` - database driver -- `{RELATIONSHIP_NAME}_SERVER` - database server - -For example, for a relationship called `database`, the environment variables are named `DATABASE_URL`, `DATABASE_HOST`, `DATABASE_USER`, etc. - -For more information about database configuration, see [Databases](databases.md). - -## DFS database variables - -When using [distributed file storage (DFS) that uses a separate database](clustering.md#dfs-io-handler), you must use the relationship name `dfs_database`. -In addition to the database variables listed above, additional DFS-specific variables are available when `PLATFORMSH_DFS_NFS_PATH` is set: - -- `DFS_NFS_PATH` - NFS path for DFS storage -- `DFS_DATABASE_CHARSET` - database character set -- `DFS_DATABASE_COLLATION` - database collation - -## Cache variables - -For Redis and Valkey cache services, you can use the following variables: - -- `{RELATIONSHIP_NAME}_URL` -- `{RELATIONSHIP_NAME}_HOST` -- `{RELATIONSHIP_NAME}_PORT` -- `{RELATIONSHIP_NAME}_SCHEME` - -In addition, you can use the following global variables: - -- `CACHE_POOL` - `cache.redis` for both Redis and Valkey -- `CACHE_DSN` - cache connection string - -For more information about persistence cache configuration, see [Persistence cache](persistence_cache.md). - -## Session variables - -For Redis-based session storage, the following variables are available. - -- `SESSION_HANDLER_ID` - session handler class name -- `SESSION_SAVE_PATH` - Redis connection in `host:port` format - -The system looks for relationships named `redissession` or `valkeysession` first. -If not found, it uses the first available Redis-compatible service. - -For more information about session configuration, see [Sessions](sessions.md). - -## Search engine variables - -### Solr - -For Solr search engine configuration, you can use the following variables: - -- `SEARCH_ENGINE` - set to `solr` -- `SOLR_DSN` - Solr connection string -- `SOLR_CORE` - Solr core name -- `{RELATIONSHIP_NAME}_HOST` -- `{RELATIONSHIP_NAME}_PORT` -- `{RELATIONSHIP_NAME}_NAME` / `{RELATIONSHIP_NAME}_DATABASE` - -For more information, see [Solr search engine](solr_overview.md). - -### Elasticsearch - -For Elasticsearch search engine configuration, you can use the following variables: - -- `SEARCH_ENGINE` - set to `elasticsearch` -- `ELASTICSEARCH_DSN` - Elasticsearch connection string -- `{RELATIONSHIP_NAME}_URL` -- `{RELATIONSHIP_NAME}_HOST` -- `{RELATIONSHIP_NAME}_PORT` -- `{RELATIONSHIP_NAME}_SCHEME` - -For more information, see [Elasticsearch](elasticsearch_overview.md). - -## HTTP cache variables (Varnish) - -For Varnish-based HTTP caching, the following variables are available. - -- `HTTPCACHE_PURGE_TYPE` - set to `varnish` -- `HTTPCACHE_PURGE_SERVER` - Varnish server address -- `HTTPCACHE_VARNISH_INVALIDATE_TOKEN` - token for cache invalidation - -For more information about HTTP cache and Varnish configuration, see [HTTP cache](http_cache.md). diff --git a/docs/ibexa_cloud/ibexa_cloud.md b/docs/ibexa_cloud/ibexa_cloud.md deleted file mode 100644 index f285dbc6187..00000000000 --- a/docs/ibexa_cloud/ibexa_cloud.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Host your Ibexa projects on the cloud. -page_type: landing_page -month_change: false ---- - -# [[= product_name_cloud =]] - -[[= product_name_cloud =]] is a cloud hosting platform that enables you to host your application in the cloud by using the Upsun service. - -[[= cards([ - "ibexa_cloud/ibexa_cloud_guide", - "ibexa_cloud/install_on_ibexa_cloud", - "ibexa_cloud/ibexa_cloud_cli", - "ibexa_cloud/environment_variables", - "ibexa_cloud/ddev_and_ibexa_cloud", -], columns=3) =]] diff --git a/docs/ibexa_cloud/ibexa_cloud_cli.md b/docs/ibexa_cloud/ibexa_cloud_cli.md deleted file mode 100644 index b85785e5448..00000000000 --- a/docs/ibexa_cloud/ibexa_cloud_cli.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -description: Use the [[= product_name_cloud =]] CLI to manage your I[[= product_name_cloud =]] projects from the command line. -month_change: true ---- - -# [[= product_name_cloud =]] CLI - -The [[= product_name_cloud =]] CLI (`ibexa_cloud`) is a command-line tool for managing your [[= product_name_cloud =]] projects. -It's based on the [Upsun CLI](https://developer.upsun.com/cli) and shares the same commands. - -## Installation - -Follow the installation instructions at [cli.ibexa.cloud](https://cli.ibexa.cloud/). - -After installation, authenticate with your [[= product_name_cloud =]] account: - -```bash -ibexa_cloud auth:browser-login -``` - -## Command reference - -To get started, try the following commands: - -- `ibexa_cloud list` lists all available commands -- `ibexa_cloud ssh` opens an SSH session to the current environment, or executes a command remotely -- `ibexa_cloud log` reads an environment's logs -- `ibexa_cloud rel` shows an environment's service relationships -- `ibexa_cloud var` lists environment variables - -To get help and see usage examples for any command, run: - -```bash -ibexa_cloud --help -``` - -For the full list of available commands, run `ibexa_cloud list` or see the [Upsun CLI reference](https://developer.upsun.com/cli/reference). -In all examples, replace `upsun` with `ibexa_cloud`. - -## Examples - -### Run a SQL script - -To execute a SQL upgrade script on a [[= product_name_cloud =]] environment, pass it to `ibexa_cloud sql`: - -=== "MySQL" - - ```bash - ibexa_cloud sql < vendor/ibexa/installer/upgrade/db/mysql/ibexa-x.x.x-to-x.x.y.sql - ``` - -=== "PostgreSQL" - - ```bash - ibexa_cloud sql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-x.x.x-to-x.x.y.sql - ``` - -### Connect with a SQL client - -To connect to the database using any SQL client, start SSH tunnels to all services (database, Redis, Solr, and others except Varnish) by running the following command in the project directory: - -```bash -ibexa_cloud tunnel:open -``` - -The command outputs connection details for each service, for example: - -``` shell-session -SSH tunnel opened to database at: mysql://user:@127.0.0.1:30000/main -``` - -Use the displayed host, port, database name, username, and password to configure your SQL client. - -When you're done, close the tunnels: - -```bash -ibexa_cloud tunnel:close -``` diff --git a/docs/ibexa_cloud/ibexa_cloud_guide.md b/docs/ibexa_cloud/ibexa_cloud_guide.md deleted file mode 100644 index 4468974dab7..00000000000 --- a/docs/ibexa_cloud/ibexa_cloud_guide.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -description: Learn how to host your application and improve your business processes by using Ibexa Cloud hosting platform. -month_change: false ---- - -# Ibexa Cloud product guide - -## What is [[= product_name_cloud =]] - -[[= product_name_cloud =]] is a cloud hosting platform that enables you to host your application in the cloud by using the [Upsun](https://upsun.com/) service. -It also establishes the framework for the potential growth and improves project delivery. -As a diverse Platform as a Service (PaaS), it's designed to allow you to focus on the crucial things. - -[[= product_name_cloud =]] complements the capabilities of [[= product_name =]] - a software that is designed to provide your business with all the features, functionality, and support your need to transform your business for the digital age. - -![Ibexa Cloud - part of [[= product_name =]]](../getting_started/img/ibexa_cloud_dxp.png) - -## Availability - -[[= product_name_cloud =]] is available for all [[= product_name =]] editions. - -## How does [[= product_name_cloud =]] work - -[[= product_name_cloud =]], as a hosting platform, is designed to streamline the development and testing processes, allowing you to deliver new features faster. -It ensures that developers dedicate more time to important development activities rather than maintaining databases, queues, search engines, and operating systems. -It shifts the focus away from fundamental operations and toward improving your digital services with additional features and capabilities. - -![How does Ibexa Cloud work](ibexa_cloud.png) - -## [[= product_name_cloud =]] account - -If you want to use [[= product_name_cloud =]], you need to check the [requirements](requirements.md#ibexa-cloud-requirements-and-setup) and follow [installation process](install_on_ibexa_cloud.md). - -To use [[= product_name_cloud =]], you must make arrangements with [[= product_name_base =]] to get and set up a user account. -To do so, contact your Partner Manager, or Sales representatives team, or fill out the form available at this link: https://www.ibexa.co/about-ibexa/contact-us. - -When you have an account, you can log in to https://console.ibexa.cloud. - -## Capabilities - -### Platform as a Service - -[[= product_name_cloud =]] is a PaaS provider. -It's a cloud-based subscription service that you can use for developing, managing, and running applications without infrastructure concerns. -This cloud computing approach gives users access to a full cloud platform, including hardware, software, and infrastructure. -PaaS eliminates the requirement to buy and install the necessary hardware and software. -All you have to do is access it and you can start deploying resources and developing right away. - -![How PaaS works](how_paas_works.png) - -### Performance management - -Make your applications more effective, scalable, and effective by using the [Observability Suite](https://developer.upsun.com/docs/observability). -This package gives you the ability to test, profile, and monitor your application before putting it into production. -Observability Suite comes with each [[= product_name_cloud =]] subscription. - -### Automation - -[[= product_name_cloud =]] automates time-consuming testing processes and encourages ongoing QA testing, so your projects are ready for deployment much faster. -For further protection and simple rollbacks, it also automates your backup procedures. -This guarantees that the developers are working within a framework that is adaptable, safe, and responsive to their requirements. -Thanks to built-in CI/CD features, you can also reduce the need for manual testing and accelerate your development. - -![Ibexa Cloud - effort](ibexa_cloud_effort.png) - -### Digital tool - -[[= product_name_cloud =]] is a digital tool - it's a perfect starting step toward your company's digital transformation. -What's more, [[= product_name_cloud =]] as an end-to-end cloud hosting platform, it's scalable, requires little up-front expenditure, and no ongoing maintenance. -[[= product_name_cloud =]] as a PaaS solution enables you to start constructing effective digital systems that provide great consumer experiences. - -## Benefits - -### Safety and simplicity - -Comprehensive data security procedures guarantee that you maintain complete ownership of your client's data, defining where it's stored. -You can be sure that the safety protocols are compliant with all applicable legislation. -What's more, all updates to your code and infrastructure are fully auditable. -Global CDN (Content Delivery Network) is included and fully managed. -[[= product_name_cloud =]], thanks to extensive [[= product_name_base =]] support, enables effortless deployment. -You can create a clone not only of the code, but also data and the infrastructure. -As the infrastructure is exactly the same as what's currently in production, you can be sure that everything works well when you conduct your release and push it live. - -### High availability and compatibility - -[[= product_name_cloud =]] is compatible with your choice of public cloud server and supports a variety of hosting platforms. -It's a Git-native development - compatible with Git Flow. -[[= product_name_cloud =]] deployment integrates naturally at the end of your existing production chain, including staging, and work in progress branch preview. -You can also integrate with, for example, Bitbucket, GitHub, GitLab. -You can instantly clone every branch of both your code and infrastructure configuration. -Upsun (and [[= product_name_cloud =]], by extension) uses the [Infrastructure as Code approach](https://fixed.docs.upsun.com/learn/overview.html#infrastructure-as-code). -It means that the infrastructure is described in the code and that is what allows you to clone both code and infrastructure configuration at the same time. -If you want to work with services such as [MySQL](https://fixed.docs.upsun.com/add-services/mysql.html) or [Elasticsearch](https://fixed.docs.upsun.com/add-services/elasticsearch.html), you can add them with a line of code. -What's more, you can run in your chosen cloud, like Microsoft Azure, Orange, or Google Cloud Platform. - -### Great customer experience - -The [[= product_name_cloud =]] as a PaaS solution enables your company to begin developing effective digital systems that provide exceptional client experiences. -It gives the user access to all of [[= product_name =]]'s features while hosting them in a cloud environment. - -### Increase in developer productivity - -Thanks to [[= product_name_cloud =]], there is around 40% increase in developer productivity, 15% faster user acceptance testing, and 20% more deployments. -Developer can focus more on important development activities. -Apps can be developed and hosted more quickly and without the risk of infrastructure-related delays. - -### A single provider to manage - -[[= product_name_cloud =]], as a hosting infrastructure, comes together with a software provided by [[= product_name =]] in a single package. -Management thus becomes much easier. - -### Scalability and flexibility - -[[= product_name_cloud =]] allows for effortless scaling of resources to meet changing workload demands, ensuring high availability and performance. - -### Marketing friendly tool - -With instant previews, the marketing team can collaborate better with developers. -Team members can also see and provide input on the new feature's actual appearance. - -### Integrated customer support - -Support integration is a part of the combined Upsun and [[= product_name_base =]] service. -In case of an issue, you only have to submit one ticket, no matter whether it has to do with [[= product_name =]] or the cloud infrastructure. -When you submit a ticket with [[= product_name_cloud =]], the support team looks into the issue and assigns it to the appropriate expert. - -### Lower cost - -With PaaS solution there is no need to purchase and maintain hardware or software infrastructure. This reduces the total cost of ownership and operational expenses. -According to Forrester Total Economic Impact report from March 2022, a company that uses Upsun for three years achieves an investment return of 219%. -According to this in-depth analysis, Upsun reduces operating expenses for developers and IT by $1 million over the course of three years, and in as little as seven months, break-even point can be reached. diff --git a/docs/ibexa_cloud/install_on_ibexa_cloud.md b/docs/ibexa_cloud/install_on_ibexa_cloud.md deleted file mode 100644 index c41b94cf8e6..00000000000 --- a/docs/ibexa_cloud/install_on_ibexa_cloud.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -description: Install and configure Cohesivo to run in cloud using [[= product_name_cloud =]]. -month_change: false ---- - -# Install on Ibexa Cloud - -[[= product_name_cloud =]] enables you to host your application in the cloud by using the [Upsun](https://upsun.com/) service. - -## 1. Prepare configuration files - -If you didn't add cloud configuration during installation, run the following commands now: - -``` bash -composer require ibexa/cloud -php bin/console ibexa:cloud:setup --upsun -``` - -These commands add the necessary package and configuration files required for [[= product_name_cloud =]]. - -You can adapt the configuration in the following places: - -- `.platform.app.yaml` - main configuration -- `.platform/services.yml` - additional [services](https://fixed.docs.upsun.com/add-services.html) such as search engines or cache -- `.platform/routes.yml` - routes to define how [Upsun handles incoming web requests](https://fixed.docs.upsun.com/define-routes.html) - -For details about available configuration settings, refer to [Upsun documentation](https://fixed.docs.upsun.com/create-apps.html). - -### Disk space - -The total disk space depends on your [[= product_name_cloud =]] subscription level. -You can assign disk space to the main app container under the `disk` key. -You can distribute the remaining space between other containers (for example, the database) or search engine in `.platform/services.yaml`, under the individual service definitions. - -### Build and deploy process - -Configuration under `hooks` defines the process of building and deploying your project. - -!!! note - - During the build phase (defined in the `hooks.build` configuration), files in the project have read/write permissions (can be modified). - - During deployment (defined in the `hooks.deploy` configuration), all files in the project are read-only. - -### Additional services - -`.platform/services.yaml` contains preconfigured setting blocks that you can uncomment to enable services such as Solr or Elasticsearch, or persistent Redis session storage. - -For information about available services, see [Upsun documentation](https://fixed.docs.upsun.com/add-services.html#available-services). - -If you enable any of the services, you must uncomment the relevant relationship under the `relationship` key in `.platform.app.yaml` as well. - -For information about environment variables automatically generated based on your service configuration, see [Environment variables on [[= product_name_cloud =]]](environment_variables.md). - -## 2. Create an account - -Log in to https://console.ibexa.cloud or create an account if you don't have one yet. - -Create a project and select its region. - -!!! caution - - Don't use https://console.upsun.com/ (or former https://console.platform.sh/) which don't list [[= product_name_cloud =]] projects. - Use https://console.ibexa.cloud to manage your [[= product_name_cloud =]] projects. - -## 3. Prepare for hosting - -After the project is created, the website walks you through preparing your project for hosting. -This includes adding an SSH key, and adding Upsun as a git remote. - -Add your Composer authentication token to the project before pushing it to Upsun. -You can set this token as an environment variable. - -When you do, make sure the **Visible during runtime** box in [[= product_name_cloud =]] configuration is unchecked. -This ensures that the token isn't exposed. - -### Composer authentication using the web console - -In **Settings** (top right gear icon) -> **Project Settings** -> **Variables** -> **+ Create variable** - -![Setting token to be invisible during runtime](ibexa_cloud-composer_auth.png) - -### Composer authentication using the CLI command - -Use [[[= product_name_cloud =]] CLI](ibexa_cloud_cli.md) to create the variable: - -```bash -ibexa_cloud variable:create --level project --name env:COMPOSER_AUTH \ - --json true --visible-runtime false --sensitive true --visible-build true \ - --value '{"http-basic": {"updates.ibexa.co": {"username": "", "password": ""}}}' -``` - -## 4. Push the project - -When you're done with configuration, push your project to the Upsun remote: - -``` bash -git push -u main -``` - -You can also use the [[[= product_name_cloud =]] CLI](https://cli.ibexa.cloud/) to push your code. - -``` bash -ibexa_cloud push main -``` - -The [database installer](install_cohesivo.md#create-a-database) runs in non-interactive mode and keeps the default password for the `admin` user. -Modify this password after the installation, for example, by using [data migrations](importing_data.md#users) or the [user management command](update_basic_user_data.md#change-password). - -!!! note - - `main` is the Upsun name for the production branch. - -!!! caution - - Don't use Upsun CLI (`upsun`), instead, use the [[[= product_name_cloud =]] CLI (`ibexa_cloud`)](https://cli.ibexa.cloud/) instead. - - For more information, see [[[= product_name_cloud =]] CLI](ibexa_cloud_cli.md). diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index 9c1842a134f..5347f179b61 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -10,7 +10,6 @@ Three [[= product_name =]] product editions are available to help you accelerate [[= cards([ "ibexa_products/ibexa_headless", "ibexa_products/ibexa_experience", - "ibexa_products/ibexa_commerce", ], columns=3) =]] ## Feature comparison @@ -50,14 +49,6 @@ Compare all features available in [[= product_name_headless =]], [[= product_nam | [Recent activity](recent_activity.md) | | ✔ | ✔ | | [[[= product_name_engage =]] add-on]([[= user_doc =]]/qualifio/qualifio/) | | ✔ | ✔ | | [[[= product_name_cdp =]] (Customer Data Platform) add-on](/raptor_cdp/raptor_cdp_guide.md) | | ✔ | ✔ | -| [Order management](order_management.md) | | | ✔ | -| [Payment management](payment.md) | | | ✔ | -| [Shipping management](shipping_management.md) | | | ✔ | -| [Cart](cart.md) | | | ✔ | -| [Checkout](checkout.md) | | | ✔ | -| [Storefront](storefront.md) | | | ✔ | -| [Transactional emails](transactional_emails.md) | | | ✔ | -| [Discounts](discounts.md) | | | ✔ | ## LTS Updates @@ -70,4 +61,3 @@ The features brought by LTS Updates become standard parts of the next LTS releas | [Google Gemini connector](configure_ai_actions.md#install-google-gemini-connector) | ✔ | ✔ | ✔ | | [Integrated help](integrated_help.md) | ✔ | ✔ | ✔ | | [MCP servers](mcp_guide.md) | ✔ | ✔ | ✔ | -| [Shopping list](shopping_list_guide.md) | | | ✔ | diff --git a/docs/ibexa_products/ibexa_commerce.md b/docs/ibexa_products/ibexa_commerce.md deleted file mode 100644 index 64cdbfbe2d0..00000000000 --- a/docs/ibexa_products/ibexa_commerce.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -description: Explore all of the key features, functionalities, and advantages of Ibexa Commerce, the most powerful edition that Cohesivo has to offer. -month_change: false ---- - -# [[= product_name_com =]] edition product guide - -## What is [[= product_name_com =]] - -[[= product_name_com =]] is the most powerful edition offered by [[= product_name_base =]]. - -It assists you in managing each aspect of your customers' journey by combining content management, customization, and commerce functions into a single, dedicated solution. - -[[= product_name_com =]] offers a streamlined, unified platform where you can personalize each aspect of the online shopping experience. -You can completely revamp your online stores and give your consumers exceptional purchasing experiences, from first contact to post-purchase support. - -![Ibexa Commerce](ibexa_commerce.png) - -## Availability - -To start using [[= product_name_com =]], you need to purchase a product license. - -For more information, see [Ibexa Commerce license pricing](https://www.ibexa.co/products/pricing?tab=3). -You can also [contact us](https://www.ibexa.co/about-ibexa/contact-us) or [one of our partners](https://www.ibexa.co/partners). - -## How it works - -### Technical backstage - -With an active license, you can start the [installation process](install_cohesivo.md) that uses the Composer. - -[[= product_name_com =]] is based on [Symfony]([[= symfony_doc =]]). -With a help of documentation and trainings, any developer familiar with Symfony or even PHP alone can learn how to use available extension points and extend the platform. - -Version control systems and environment variables allow you to deploy your extensions and settings on several environments, such as [Ibexa Cloud](ibexa_cloud_guide.md). - -[[= product_name_com =]] is built on [[[= product_name_exp =]]](ibexa_experience.md) and includes all bundles, APIs, and features that come with both [[[= product_name_headless =]]](ibexa_headless.md#core-features) and [[[= product_name_exp =]]](ibexa_experience.md#core-features) editions. - -## Capabilities and benefits - -With [[= product_name_com =]] you can focus on accelerating your transformation into a fully-fledged eCommerce. -It comes with all the necessary tools: customized catalogs, integration with CDP, personalized checkout workflows, payment gateway integration, transactional emails, and more. - -### Core features - -[[= product_name_com =]] includes all the features you need to launch your online store and reduce the time it takes to go live. - -#### Order management - -With the advanced [Order management]([[= user_doc =]]/commerce/order_management/order_management/) tools, you can manage orders with ease. -Depending on your permissions, you can search for orders, review their details and updates, track completion status, and cancel orders that are created when store customers purchase products. -When searching for orders, you can use filters to save time and reduce effort. -Order management is strongly connected with other components of the Commerce offering, such as [Cart](cart.md) and [Checkout](checkout.md), so users can speed up the process by uploading an order list or repeating previous transactions. - -![Order management](order_management.png) - -#### Payment management - -The [Payment](payment.md) component allows users to search for payment methods and payments, create new and manage existing payments and payment methods, and filter search results. -Users can also enable or disable payment methods, change payment details, and cancel payments, depending on their role. - -![Payment management](payment_management.png) - -#### Shipping management - -With the [Shipping](shipping_management.md) component users can create and manage shipments, search for shipments, filter search results, and define and manage various shipping methods. -Depending on their role, users can also enable or disable shipping methods, change status of shipments, and cancel shipments. - -![Shipping management](shipping_management.png) - -#### Storefront - -The [Storefront](storefront.md) package includes a starter kit for developers. -It's a foundational set of components that developers can customize and extend to create their own web store implementations. -It contains default UI components and widgets that can be modified to [create a customized web store](customize_storefront_layout.md). - -#### Relevant faceted search - -Search becomes crucial when your product catalog is extensive. -Products can be sorted according to a variety of criteria using faceted search. -The value it brings makes it a vital component in merchandising. -You can set up your search engine using [[= product_name_com =]] to help clients find what they're looking for more easily, which could result in more purchases. - -#### Catalog management - -[[= product_name_com =]] gives you the ability to manage your product repository - [Product catalog](product_catalog_guide.md), and construct an infinite number of catalogs, each with unique prices, to further customize the experience for your customers. - -#### Transactional emails - -Commerce allows you to send transactional emails - messages that [[= product_name_base =]] can send through the [Actito](https://www.actito.com/en-BE/) gateway to your end-users. -These emails include notifications about changes in the status of various actions taken in relation to your commerce presence. -With this feature you can also [create email campaigns](transactional_emails.md#create-email-campaigns) to engage users and increase sales. - -### Use cases - -#### Create personalized shipping experience - -Use [Raptor recommendations connector](raptor_connector_guide.md) to transform your online stores and give your consumers great buying experiences, from initial contact to post-purchase support. -No matter how complicated your product or sales process are, you can present your offer in an approachable way. -Creating engaging and personalized shopping experiences with targeted offers and recommendations helps you boost sales. -Within eCommerce, product recommendations can assist users in finding the exact item that meets their needs. -Recommendations can be used to propose related, alternative, or complimentary products to users who are unsure what to buy. - -#### Use effective merchandising - -Merchandising assists in keeping the consistency of the brand and providing customized product recommendations with captivating visuals and powerful search features. -You can engage your customers with eye-catching graphics and information. -The search engine makes it easy to find what they're looking for by providing quick and easy access to the product catalogs. - -The customer experience takes an important step forward by facilitating financial transactions through the use of powerful, individualized product suggestions provided by [[= product_name_com =]] and unique pricing for various customer groups. - -#### Launch consumer-facing web stores - -[[= product_name_com =]] comes with all the features you need to launch and manage your web store, like storefront starter kit, real-time cart management, stock inventory, catalog management, and more. - -This edition is designed for complex enterprises and is fully customizable. -It enables you to design flawless sales experiences regardless of the complexity of your business model. -You can create online store that really fits your needs. - -#### Increase B2B sales - -[[= product_name_com =]] contains the best B2B features to help you speed up your digital transformation, such as corporate account management, tailored catalogs, customized workflows, effortless reordering, custom pricing, and more. - -#### Automate business processes - -With [[= product_name_com =]], the automation process becomes easier, which is essential if your company wants to do more with less effort. -It comes with all capabilities, including order and inventory management, customer data, and custom pricing, which are needed to achieve it. -You can integrate with over 1,300 standard apps, including your CRM, ERP, PIM, and DAM systems, and build custom connectors. -Also, you can use the ready-to-use pre-designed templates. diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index 73d1e0a7149..b95fb482a3b 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -102,7 +102,7 @@ You can assign users to different recommendation groups and create advanced logi #### [[= product_name_cdp =]] (Customer Data Platform) -[[[= product_name_cdp =]]](/raptor_cdp/raptor_cdp_guide.md) is an add-on available for both Experience and [Commerce](ibexa_commerce.md) editions of [[= product_name =]]. +[[[= product_name_cdp =]]](/raptor_cdp/raptor_cdp_guide.md) is an add-on available for the Experience edition of [[= product_name =]]. To use it, you must make arrangements with [[= product_name_base =]] to define the initial configuration. Once you activate [[= product_name_cdp =]], you can create complete customer profiles, including their interactions, behavior, and preferences. It helps you improve user engagement, conversion rates, and return on investment by segmenting your audience and delivering tailored campaigns and experiences. @@ -114,7 +114,7 @@ This central data storage supports business growth with a scalable infrastructur #### [[= product_name_engage =]] -Another add-on available for Experience and [Commerce](ibexa_commerce.md) edition is [[[= product_name_engage =]]](/qualifio/qualifio.md). +Another add-on available for the Experience edition is [[[= product_name_engage =]]](/qualifio/qualifio.md). To use it, you must make arrangements with [[= product_name_base =]] to define the initial configuration, and then get and set up a user account. [[= product_name_engage =]] is a data collection tool. It gives you the ability to use the [Qualifio](https://qualifio.com/) tools to engage your audiences. You can use Qualifio's existing templates and interactive elements, such as quizzes, pools, and forms, to create visually appealing, customized campaigns and collect important data. diff --git a/docs/index.md b/docs/index.md index 325f88191dc..84089f036f0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -199,23 +199,6 @@ -

- -

+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 diff --git a/docs/commerce/shipping_management/img/shipping_method_cost_tab.png b/docs/commerce/shipping_management/img/shipping_method_cost_tab.png deleted file mode 100644 index 42972f11e44339aa6e4ff99fa4b71b7774cb780c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84491 zcmce7Wmp`|w(j7A4(<-YVQ>iU5OBAe7YYEtJOdG5DZe0{bpQa$ zPa8=|Re4ECO4SceRyOvQ0DxRnQVNo)`aXW(i_bI(D;4Z}38yK203%hcD*V0)4K0iW zG6$x{QDh@5b95x|&xB@lupNvAYa~Oxw0PG^FbnKZvrc911si+lvft%OhNsn7=4qDC z^JVts_>=V*LSSAeUW~d40^q$g(HBe#kc@^K8XOAyJ}P9j$Il zf&%G|4QmDsUY?&jqN$BPjlls>WccH=#}uURxbwi?X7Y%DVz@|SPw8;4FN>Ik@}FR_ z{MiSQr-e8NUDRU{)j3S5>_cq;Yl8;mv@ifp^Xe2uBiJtyNAZ;fkziaZ7MVXhJUnp; zXUL&(p9p`+W{r%;LKU(?JGNuLZf||Su@G7wPFxcX+uy)F`T26m|J?AsP|o^>T`Vz^ z;T&DO6#Ih}=*#q@B}=qECU=j-v&JJX{X4%N>(rF7_%u_IxoP8iUQ6*#w0_jKx79*K znUzHN-+jWyDrs4z>a|-#N7GHqEj)~EJ~WPGGpr3JZ!7bPRw8kn`B4Zk1yxH~or#;me(EtDO!-9!~?voi0tJl{YA z%^Phbn&`Gt_R8+4jH4x$jf#m3%-3~Qb17~-AdIt{gm8ZfE{10p16*t&i-nt5_F2#z zai23qu~Tt`bV)d-26kbckL+@kvX(gjQd=vgvwH*|W`slc_^kZqRbZT>vQks|`3_OV z#x}1o0lz-$W}C7C5>WvLiz8p(aTfWhdm_U{ijhwQGEKlYcLGyk>`XwJL4s$n{*=Jb zAV?+dnHaU4G?OvRY+xKE!B)tz2>}Bfw2Mj=AwJ}54pt^yN~fkX&JxV>8pj?2+!`Js z0!1f3yf}X(tQwW39O_hrB9&bva+8FSDgYN&TCz$NmNxkN1Th3B5rijhIU!z5{6Hjt zY8YHD`E5e77(^VtB4KQTs~B!miD(bd?^H}hfcBW4Ve`WnVOV#)J>zY}Ee}oTLO*+R zN4JE2+g-87fh+b|)h&^C2(4GDN=>|&P($cluwKNFWKs^3ntQR8hTs9)PXeCchuFTn z9}vU^wBy(t>4<#qz3n~sJyL&~=kMcH~sNR0Boi z9pDby4oV>jSKxhMui3tiWGUP%0ZE)vcX=Pa$*tL873&{mdr=Rxh@KxCiY{!8l%xbH zLBqYrU1U9mzueamowLtqTk%(jPva80V$SC8uzk^=VcStfBPr+^Ft3o6Ln&diE2CBA z_!S{^OLSQ|d38{{IuhgXIEptyRo5Yo}IdHx`JDfDk zGvGehmP|izI9#)pGGslNGLZeHgH<$7OqE^LgxMKymNAhzQ?s#xy--fG_C4BrMNJmf zQnl7{{_mmcoT?Y^H<-5>$lf=X&ZtPMx&N?dN@$MynEEkHK&)p9&4yGDn>E`bb5@*0 zQ|o=bX1uD=4})@Fqo$PjJd%mGSGXUko@m=5o-O11NM}jAGRs^KcHBnqi#fG>4W)Cw z6uqyQD!Y(Q$~`DZFKw2rQ@j2_tT!sRSK6oH(6WgxD-jm^g(;hI>E#BwaqeH=TexqOMr4Tu-9RtSm+kOf-asPZOp# z1Tl}bEwO{zD%62&Js}B)ga@IA7Kby3LciY}aJp~0$GGde%U;)B!Cueq{XP($qTl1X z#<})9Y&ZEamYvlj8WmrRS(&<2FucH^QyVyJF|t56@f0 zCC|;s*W`ebv5@VsR_8MqK3j_!Zp&p*tv21J4Z+w!iZfwp)9EXI)0Z_RB&Ff z+xezGZ%F&PZ`WhbCDhQ(ppgy9@S`D7c~v=*fzNX7a-(CC`} z6-tVZk)S?GbnSYke>k_Jas#>sUj~qyU{fMPFhb#;U_B8&znVmw%hb?h7XJzd7Jd)_do7#RPo=eFFxx4al` z99Hf%GovxLGwb*e(wMYV#jk82y~L0(x;X07>$yvC8G*nSOx%c1eRj%SsSy zT5J6E;*3W1mz!mLM*DdD>~!rwWZT% z^JjT-G1GsnkC%XU`z=;2N-z3&G#(c-y=NI>I#?xYtjSGP%hZ1KpQ|>UQ?OUKIi)*E zJ~?4UXK+}^Z?J}DRaiz@E^m`>U*jF%=`)L*Y@Z%4?6y}pcJw_zJ{e;GK|=g{u9dk{ zIn`U3H>x|i1Q9eC4KKeQe>_Ake14=^jgOAM(F)V3(-hRuo-3Zio$aohT39!aNmzb+ z;@$dVtn|c0xJ~2*o}Wti{9^Y{wvX~dw!Lt#kfx{Ji(4N!?9- zSGS|4Y;-KKaIDrwR(LfWs3&-JxPE4ca*8A>)=UL0L1hA}O`&@lx z*=F=hlAU&2g^{CmopI~VhvOypqC;yZb|>zY+KzeW;gi`k<70o}Y17q7=f!o8X|jI7 z(QlW6V7DfB!{$Tp+XLaTwv1)eWVbGo3c? zX{(%#%W~2Gq0{e6v*s7VH40AQo|l4?06q4!-}sNy&!~AVhU|w$k3^4%V?>GSP4u<5v0O^^8008W)jfRe!j*_B)xswB%sfCl7C7YLn^Iz!zguDb^qYjpC zrj%X|_KvOsUc%IWO9;Hi|008_DgPF6vlFJ)QBtLpboyXP$;-yh#!fAQLP<#}^ufYP z;JuX0KjE)$!qgBqH)jDb*wfRK&6A7G>4PE|I*3N&i(Hy|Bdr+$iK=U@ZQqZ$=?01 zI@ENuaTDPb0{?I1|3vBj3ns$%UzmR<{wF}^e*^qG@jn47A8cN0!St_;iE#WgQ~yr; zr@RpOua^I}p74)u_BZvlpNXIdf&aVDilF4FoMr<6VgPw5aSbn+BR?cxvflHTV*Szj zEh7tsIb@-12|4RN9^!DGS|B3zo3ZiVy zx>;;?_>ZhN0{JoCKK?j_5e6dfNy!2G*Ia|czrx&_!<5CEvufgYhp66K2e1a2TcH1s zno@obPYM5F&i3o1$mdUR!vWM+*HSk9QQW*d4#Sgu6Y$;X@qycX|Dy_v7lC3F8KBf)sQB~@P{*Q+19E=X^36=w<9=wm>OlB$iwn?XYlc=k~ z?@69CL5|h=PWW4YTQt*3$qG%$%H~gsIFO?2rsP`+LZ66tjKLi=cOpxkVFS233Z50^ zY}2fp$vwiMVg)!uZmMH=_?Q&$suVds=Z!-Y%KFiAly^b-RyKpwK*6QkPpWvMjej^$ ziaA6(0&h+hWz%$_P0*#ON_G@W7_GXL&XVe6n`WaD+vbhag8evkfgtS(bo`=gMs&ZM zskz1jgCu1W?||jl&zp(w<&npw#%3DTByAUJk)`<{lv@em^%LBozlj)!&HqP(tL|c{ znzB0`DlgoPzf85SE{`h)2%;!CC?ygOa}vRG0d;}pv*@>&?Mpc>53xGGn$9gPm#(U- zE%zCy?w8-e4lylPKe9Pkuo)+0$5%Kwij)yZzz?^EvB(`Ue$OkLXEBpeUl>kNt*{%z zipw>F5vU{5FzIsNEnlv+yCt7Bl2MhA2nO=3udn0wN#vr0*3Bn3%aJsS6SA*dE^{?No4iUkIi!F?Fg9zwRgJypBXofzyV81jO#nONDd z9FjK0az2D{+-Bv!9SQ(5tS~Bn;JId{zb#HX|?9?=2KFCwZDA$Hj--NpqW@Eqd!EkuY{Do!er}%<>p{ z-sr;H_C7d2=$Qv$CQ&h%B*UqR7`EBh& z&kO5Svu3R8fH=~$kUCs9ZMXtRMq?^Ij#HnnXzEA^OL7QRgZ{G^ zFn0neyT>ZcG%k-JV8zJR%N8Z>{>&5~1xJ@*>m{xZB7$P-eB6B9s#2M{Q0pkE_W3h4 z<%1N;bBFKNralEjqgRtJ8m>TCSXiw?zXv{|prqF=)!lu+65g$fle@Hj~`K5t=s%< z=?1u*Esb~^Zn}72_T#a@&_ajtie}KJTX45pQ942qphT;p zU}7cc zZ@yH=O3KT?NTWj}bZdAgW?GC3f{zTa5bZ7lHv5$Hi*s@!zbw$H(F)2kGMYNDAOVBv z&<^f2{M^q!G`%qa%5rtqHWr8S+AsJ@xi&4pQl)x^3j5qn9W|{^hC0y=S`S^N)p`$W zF`1o;tprACPHtWFX(x_n^ebqeTE2-m1ftq@3w(C`dwdUK!djclJ*zB5SbUs)DK_EBh^n@l7-TN?t4U-c@g(JB-!)D*l$w-G zpS%HCO(syNe3l_~=u%u=g>rIQh}SC}&f<D08p1=RVCWIYkH`)W#&%Z^2 zfQKQ#Xg?(ZeTUbNbu6RflgPuC>w`=0yP<)RM5VaHIVTG%M-;nE11nHmr!3Ky3Ho%@ z+Gx?Xv-H`{XW)2BBI>{zhQkz;sUvpVWtg#r;xoSMBK9(kV%z+#c|GC#IaX z4dM=}@6D7*p`>XiaNnGTi42M0|@Cy5_ywrwAx2&gb?g^S_z z#w(}l{mwPkB_HW2E|!aqwNUYmc=m0TK3@52A{g`m zc($mM#g)QVcEp5nTGA>2MJ4C5B;;<@=tI!+u1DNM5OuVAE!o_im3g z{7Xcqo#Sd%OggX4JM=#^g~R!G&->(Trp&vt0K%3Riu_{T>B8C&g4!-^M$p>0PFw~P zg2YqA^YqW(wa(|*wzH*-hF3MN`$NNQh0JVik!)>yumW~7M2V>rjij5fV1DSWwE_+- ziB>0XMX!)NCTOk(T2u3c2HKb)f>d`(c@LYJ<+5z7IUt?b!lk`Q4cp$?Nn$SY6KjGi zEf^RZJD)4Ec{Adi!#WT$?my-_Vg4M-Z$mJL>_C*21nv@Eh~}MhtG0VWB>)!?yj-9h z|EZc@Mf`5_k*9AefhTpW-~SeO+56USYVPIv5S{pCKLY-1i8vfmLFMP$Iy`1Z;6p4kJ3wg(32`Qf z>qG0)b^NtvM`Oe&_FQwX?{<!q%XWR{8ebd7Fc&ysFmVKHz43R*ejJ*>`rv^Q# zJ9m96`WR{Fv8{yaeljgg#5faLaUw&(_3br*;0==vqNAtSYB^ca^kbedzl70iT7X3@a>T51d9M^O&NZ)Z*qWJt{ zJ(CdF9^nxn5VWborK9Q}w3uDBvfS7&jH^ml_N}(_xb5_1{j&tssV!ab3(cSG$d~iA zuDk5+&tK{@+Vuz;+R%2M1Q-ilW9MZaMWerp3r`Qve0y;B$fBlNAuSy)Bm2*sy z5^nLt`O0(@13Nw2YJ(%>Srdg5$3xYw*Y z^z!Xgvs>QDax=}pMYzHkNex&d({fy^9H3V^!KF(i8~>mYP~Ocn{R$HKX&7DGQ~Sm-D-CP z)p4G-LPh+p=HU;PsG`P%cS)Pq9$hWpklz<7XDG*b3!OF|3wk| zvN%Pf1?!T~$?G{oX6vTM%{adOL-}b&o+eg9|M>#9lRq^>ajUPx(_URbtF#Z-&Gdc| zMxFw=Ew%ZaFyu$Lyn~cHOxtajEVt$l7{Ta`g>v#A_z50TT~#|6q!@!9fT+AhgQ(>p@P zgdEtvaoyOC(=6dX1s>+P=v*^It~--N zJrOR888u>cy8ha2AKku&rMn+_qZ8MEuXp&BD44t&2h54`96sQ&voU`C4fcIOK8@zF zo5NWVzf+FrAKw zzSrN;p%dVJ3N3Xn!Jm3@+_$OLCG+dG1=qS8E8odz1ynR{Nu*J*BXm0jEQg~9!>ydk zJLsz$^Jc`ym}{T32R>z%Xjddv*)Gtk?a-|}c_Bew%gWET>EXCsFS%m6d}kQrO-@XV zsG68)__xWSm=vZJeD|bNX$Rg`%#h9{TR1<^^e*{6gq*qbLpiEv7guKb=B=peIbJ@a z5buy*Kc|%}_L(TM>B}?e{Y&sm)0#W?vm8W!UJ|SGMVTeD@8U)8tYB2vTU));8LeK56P;3lrk#N+N8+G) zID+Ds%832-!F=48R7RLh1VnQ-RLmcYgDj~9(~k9F-$d*%$j;L8&9=#u5v)eCn7iLQ zv7x4vd@WSWKQ|6w)+-f%f=1IhJ&e39^>)66HN`et-4xO4p1##J7k+)X-(@Tcmf+6HC29;0 z>!8p2m^>z8hr1kbTXvQ0DT;lmk;xjO+L=BpDsnAI%n6~)7(C98IDrBX%waM0URr;0xwJDphKw38D1?Z}y$)vf6}y=0VI znR;HOSx?}AR{MACE^Y2A)%P0`gjK>sTt!Dqv>`9#0b5kW69L>@y~q2Xp#g)iYiI}a zn{LGJE0$&ZN2s$*4wcOu+>X+DODD05BSUc=V5Xqg)mw7MCd;YZP zL}9km#__ES6$__5jlr9}T$J5a$XP6a9hkS(|ztbttR_k+?LUhCz z6%`RhZDW59G85K@MGQVW=~V&GoKfGsAm|-mWe@@Hm;2lK5P$#6;|)?IOZRpyDSCGD z``poYRwGr;@TLG52MHm3uLb%yuNIJPoE-U5%=#+IKxqc_)CNpU%4>bipWrfMa}v- zPP?U&3l;k23kWlwpz_D{m2M3Jb1h8c+PCJA)&3A~HqR~ZNNLzq3dz0NzwNVP?pUfK zyu0*Th$D}|66wD#V-~j^N)$FN#&&V5EM-r1hCbS{T1L-9hyuL6KZRc)yg=Q8)U^T< z5{r{605DeY-g^Dj8yK_xYk0QAKW8w5DGBk}~(f_vOwS}z9bO(GZk=s4GO%wM@^C2-C&rt z=9Mb-Q!pJcyk<&Q3<-QH9 z0YNxFa=7Yz1E66!GwiO3!xf9pU7v+?6b7_kgAZJX(yq38Zl|v2jF}@mwWL-0ch-?k z3B;dg)WavxMLW_Q8&3ps(JzJJdGvkvxBK@_j91uPXk=n@7^khHJWSD0@qrUZXreU@ zv0Pc38wS&p4KL>??k6)?YKh6oGW)H;qTWLq^EHHh<}qh2tD@2gqBoIC2}Hv0wCc4wXY!#7>x>L12?-uO|;SXUx+#D)UwBJ(9L;uvsdSb~1c=wlG-Ml43>G!5$z=_pxh#22ro>wzk#W)i7Z?SOJnJXG&jl8dUnm2Fs-+)3@Qgz~m?a=JL z-9{ST`J4s}*tlF>#DE7#g}-JK*WBz!53{XTxk1q!z}=Rm>+tz;&WyL3i@BGI*i84` zqz9kAu;`5)R~2T6Pl?l^JFgQd7g zp{?-%70V%T784)CI*xpB4w6<;Q0mex2&;wevc4XSvm;Mft4ez21MdJK%H5Xegu_R4%D0q`5Y`h2lLk0=!Kg&bb zLf7YfHuk@co9L84S%_K%ugnvb{+8?%bpjg6Ng7j1c`B(8OpjfY@LqJwYCpGK<;7(* zM26!j|KJ7~n}pRAjO|oI^lfdChDfr?t$oS&loIN_f6pKrw#V9Imv-{8p7B=RHw;G}CGg4@Zpj2#M=LEbLpnq4X8H_Vl zMLc*L@7aKN{?~I_`k!-HBy=5w1S{8)G5hp-&&zk`E84#tUaeZwk1HkYA&Sgl9A3Mk zPSdXo0&f*{Hq?clJ%WbiH)uI27#mmPOoF{_8@!GfK!dtpLL`CR=VcD*aXbcBSDLr@4W+Q_QTib`*Q~K?*H#>u@ z(@zWJ4*I7?Y#|s6>~(_QpjAFkx14Ox-B~0NJcPh+f9#bdYYI;?_eZS;fqSU6oijg~ zZ|8p>*{@cGy#5VYz(eDrFTo;rYmyHeG2k~ZTR*rgsd|1t;6Cg&jFF94!yC2&{Mb9% z5aV(TX7eZ^0k5jTJBT!g4P;-mgO;DT0tX)=+(C4Sj?4^cs zDM0`;K>-wWSggf0#k|X9J2I5^!yu5&j0_~73{xZjKK~CjhTfQ!Qbr_Y!~>O_S%vwU zhz->SRKjUu^;anTDm5|K?SAAjqtcsY0eNBK%KNYaVj0eHfC4M? zH^YeRkI*o#omR17edpIfxPS^?62TM(t?&c~jwYu&LSx9g(i&3{5s^YXO)V0biaR1K zCo~j&s7rw^6>Qr7jA>a+8z0c_Z-wrC2io4yHJJuP&_HD2Gk9$}Q7|{o#Q$`$O?Gjc zIgvdC2G+YPoGOkA1=DiFEm*Ol8maNH>nTGq5b=)LcG_PpdU#MrRiiM>AC+Ig1xTaR zH%w+POLi6QihR!<`pB{bS60XH80S)F4JFtgTd;C#R zluwH1G~DA`fXSRGW!1qOm@cm8DkixfKxXs4^D>g&=F6nhq}&KA zR6T|fm5ICM(`*ZL^Xd^5&#^{V3^#X-b#fTGR-i=ou7Uwes(+N(k%2fxIvqSuRE(Je zHZ1&`k(m3{io6)MhqPaePvNaWgyMB=e?ax#%LcCtVQsGz>DQgc6+G6whSe{aTd0Kj zad%~T9oc@*1xGf=JkEr|51qnS`~9a62&fK{n4A$Z_Ycv%B*0&H!u9qmnFu{)t=d%) zK*0^6fm9bPi0v2o9Zc^6Hu@e(K^S zEY8n}5JJ3H`*wWLR2NAfNgxu$oC+n^Aba>{KXdmgIj|kbkbjGfwS{^Gw-`FLz~<7~ zGoxv~Uq*4-HUztpk#5|F8-w`%7i$E!H+{Z{amOUN_8K$ZR}G+Xs(zV{{$eJ9%1~QK zD%u`Xaxthw(=Qv++7Ra$a3UDG&QgU0tksxLo!zGE|QnvAU> ztF%cl!TqS~7Nod|DNcq%gMGek@%d%IMK_9i^8JxkTtFrJ;z(~ZGA&f2**x)TF)0qT_+0$h5}Z`hel9dVBiHZ;Tway(4`Gg*q?5Q}B!Z{Osi{`*+dYp}-n2ws>jJdiIPSStxdx|s~ z;)1*0%f*|%)24O976J%&Q5$XQSS8i|eLAC$bW(D_d{LZ(=(=fYZ%fWnY=!OQ^tj*p zxpk@hqA{^3@Y!S%luQI%Kmv~Ilu8P$Xe#LlHf9k3;6*8rbv}r-?4e8~b>#a>ADR8b z2|yJN{^w;t9^w{@9hqdO;m@+~lXpevHF+3}gBw4|e6mfZ;L0!w>G(fR_Kdk}dS32~ zcK->+3Yo^|XA88!y_u&B{Nb8bQ@xL*7YUAWA+q^pL(ATS}FIJXOAh;MVsp&xIzQ|FzFw&-)m5;OwT#Cn78tb6uxZSFR4u}B9;U;s6j3_3`eit0~_6gRH_0u2r0or_gR zDE&~|bZAogdj`XX{|uWhjX3c~mS{k(%;Ya8`ssRi(T6m--?9F~K4oi66j$uB&ksYZ zHe0EezlLd1Bq<@&iKE@V=12=JN{i6_WHee2D|#ZODG zN;4%PM-A=tg)BOr2-XJvDMG55;w{q~T!Kp;poqSWROZg@Rw=cdUPa1#JjFH^xgxl^ z`y-1sinnJn&QY7>mED9Yadw19=Wg0T30d<*l4bl8g5;_q>M&NMG|~L{RrN!Y-?S&` zf!(jdEOz}qACya!*L4C>tz}YNM2z?STuTgx%y*U?j9$R0H$)?);!eKxlPw$nb+?fu zyghQDydPox7-I*}FEEv2Bz{+Jm$xMEX;QSjp^(PZvq+#-PrQlZlnF3fq8!vTzS9u`FEnztKApuGR*tL>uliFTsWWZ7nf5=Swx?s?%F1ZclaEsBf>o z10ONr)e#-9o6+s38f3G?QU54EJh%qKVZgI51Ff?HaF$&U-xwG(Jl(5|PrbBkV_=bg zD%|99+3^+F4OXx@+MB-Di8-%zduH*N6deV_i^)B@Oe%^x01uIF94`|1AmS~J7AG1* z{7z`((wmoqMcL=NsRRQCzp!Y({z8G6sQc-&{lyzrFBBenrW1zyURU#eUq7M|_W7s@ zDu{fuyTCjvuyOHy1hh`usy?z4fap!yJE8Q10im;xP?*9>-oOT9AVM)5)blrU@oWf< zfwMhaW|rH@Oca8Rr?~v|HA>uc%Mm4t>{6!%mNlBhCWcc9{|TTQAro$$?-V`gloaTf z`t|2$$(FSV#27{hTx*8}yLg6AbqJox#!Za7<)eO3gSie(jtFT=V7~QLF~L?3RN6&M zzp^-Ie1Ywet!gdQJGeI}=;)Y`Jh6lDrLNVLN^V^k*d^C5Gkkz|&QzJyTLpFML-0F8 zWHEA?ev>2WoD~*UeU3vH9mNJeUiYXR_{pQo+q`L<>VqO`{8JjIUpRj=vCG1bDg4-) zc8XdI&-0_eDSKeYgt)j?_bEcn>YQUG2yUMEB(nzE-@5YV*17sS;! z@kKn)cCj!nGb-q3Cx4lKhY@MT8mTC|Hjo{?he(V66eSk3n@t3SxnsO<*c_P*>%BIU zhsxDB0Z$o-95hQCrG2zs3V=C&{H)z%YBUqC-O97Z!U5zzV~M1JmL9TH^Q9sM>$RrVSJA{DFRk3&=~&gTsnsN`E)g`c>Qn}P8_lFcYsS`V^+HCS z>*b!cq1=_}u*O1wRsQ{f)fn>+YjBCQ_CO9|M#KAfE-vd%2m-4gKYQ?%_ePwKk_z&vGk zm{76m)yj=EzCA3RyrSVMo-=aA8-F{;Tx4xXI3iUC<$f|nI7HSQ3Hhasima0ax@S|gDGG1*ix^!7BeNX*AY6k4Ur4Vu1; zSybe%u-n~`z7@#T=hJ48A|~Zz)vu3Dp!>t(T4emR{cX+`Kpu{maxaj|ml zkGRmd_8F-Y{UxDZCITvfbKBxQpX$*0QeP09W&6i{4R??)7KSHzUg?GOnQ>FEvB_!j3RwIamxaW;WOwo^1Ag?sPLbO=#6EdQ{IG? zS;BWjQfrt?b+2R1$H_6JNBy3+p?_qNFX!ZsCiYrg`&4bCTY!1q;z&^C^XHHoqEkM2 zZ~BYpE&lrCy$LGajS1zqA|Vy*D%u9@Rudahee<^>J%Z$Z5&*x%#StGdDyjG_n)fE; z7_x>x7#XKT3lO?UJJ9*JC5+%9SDqJwmR#fNERk!5uOocA7Aq3Yfjdj21fZ`4j$954 zsdfF=(4sMwt?}QE$nfHTQw4sd`HNn!1vioGDj_%SB&#G=77pzpCr{^(j{yoIjh>cQHcySON6sX0@*pouc-$V(!-lkB^W5K2h?FlOB_txkn0RW`iKL;`peX0!axjK*-#Z+~*WUhwIQ*el3(< zBGe3GIYHk`oo;x!Ngl5_Aq;V)tlh2ZN!{AAco-h8nDC(p5dTUai$jM=XOCH4RRl^m z2EJg{n%F{*zcX$ujCu%`ZNxiwcyRSDBIxW<-@5_oLEm-Tt%Exh6H1>$3x%<4c0A0-)eGwIt0jRQ z@}cmj1{>94<>m<_Icn~wgS00=nWtxYC?)Waqc7{+Mc8O~ix|x(@@OUj3&Ol_joVjwB zdn;I5a~F+sZgD+$E_V!w&iD@y&1=4c3JlWg3$U8>O z=GW#GjDL{>ZlqQkqKvOPzmeT@jTHn9@3rW3qD_8lam-k9+lQN$Aisi1eLd#+`^{W>GMh(DsUhq$FHlcH6b;pK^b_K)K*l>_UJ!>k8XL+ zX2d^^3zf*YToGhB>Lhi4^_2^C)wnK|chXN(HVMF@C_N5x$=R;&I@Xpx<=Q%D^KG&m zN^q?d7~V^1JA|v65@JYjnc&?ZqS6Ui#)bat&_qy=c+LWBE;i`Vn)EK#cZL7dPnx?{ z(Zoo|XLHHAV8aOR67rMN?IE@#MQhDf+O5_%hffS#)>*y6&1$@;J%ikbZ0#OLB-}jv zbJ!Anm2cHwCGO9W!`8q>;U~R)WnOxjz~m}(+n>JN#}I>>8|$g-cFFyul}m7|T#B(r zl#s+-SAX}pEah245Pp-(_TtXd=oY~oomK5?22!%9k zm1HMe_;d!jpkTq9XkdOQq|dvlQ!*U z51#)%77>&mAr^N zhjFD9w>SyGCR{!&Zwvp+r)b_4g^g&Zs%*Z5HkfnjqcE|178-XjGLT-c!|nNI)0J=9 z+n7mc*vz=HkD}z}XJD{j9-om<0clf6bBJkVW0ko~6i#;jyvQ-v4R-y`lMj1cU#5)E zjZBZCes+RYo6PV(&c>_}Qg`Buh8oIAw{Gl~3zPQ@mHiZhzgsO0r93PR(p71;#sR7{ zQ=yMFlE*m)!-Ul&{e&IipHBTOEta;xt{FNJmB8mkWMNs{w(nughZ#7HCmg@wRZnQ7 z#C&0Y;E*Daa?wXN3Y9t1K%j6s8*_JRU4Hf4{_B(ssUW+Yex^=c$zq`4ldNtyS1#iN5)!7 za}-lM46AgEGSYbzg&*P_9=Nj%;TPIfo@a1JnDO_8!S@RM9HDv5)$|`QH!i3?v#?b2 zP7Zp0+aP;a>HiDxj)4f)TlFmSZtrEd=ZONj$d~^F%^z(0Zd2}1WQ7I-yM9g{B%meg zPx<@)GyJnof(PI0xSelUF_mxd?ZC$rXaED;QU4y#>Yc#mKOK^7@ z*FbOx?$)@wI|=UY?j8sG{2el7ky_i7&d|c*d%)J@P5Z+)a+_U`o#u6~wPXVP%a= z62rtXf4}|d9l`>SvhFKrP8faAZH~D7gxyDc?I?ypI3mJQexyzX@9eO8H}Lz)Y4BIj z{ThY-q27VFT7JYey6V*{zU#t(;X5NeLQdJ!nuAvd>K!bEtXK}o>Bq+1VMLgMoXW*^PZ@&yFQ@b!PZJr~G8UuoIHk@M zj*>Ge#2VW84U@TYZk?AUJ?QkWE0b;_(z#XfD{#cvvn&_KVL8P}l^Yn=@e28d; zne4cVJv~s~gjh(x@?1nS1H{yi>UF3!+`Q!iyUt#kDnFL<=kRRs)5i7-#xyOyI>ZbH zYS9iWe%iBN6*=ilp}%_2aZ|Av%1mekB|F#GW9YXjLR6 zB=b{GhD8pn1EewvUi2_S+{1eSOp60km;`qXLGD2_zd}Z8!@Zv9a84m)6AtTwTm<-Z4i!t7bTD+Yh z@>$;g{rtp<`wrT6bDcb6E~8cFSb!V0O5X^ak}B>U;d3ALu=Xn|l5hF(4MK`HU(G3o zE_lVggrh1&dPmDJwJRAv+nt{CC`%efYiag(xu6&dd5MD`Dz?qKXn)$kBQ@5x_t{h6 zyW<5An(M{=K?@VKX2Xk zlvF?&=~51<<#&tDX=oIR`Ir>oJSLHzcGEP!b0RNt3foYU&Z zvdH*ETAA{2;UyP>%ks*EA}bQzMq^iee0FE(wrPE*Y9?|$(*g4Fkbess-2yf25Kbk*RwlE3FX2sIOIzoghe}{h= z&l3HX#6$t_BrrW=F=y`9a1b{vz_plL$sK@hot@>b2Psjiqp=<1pycFUt{DaC+?? z&9-SkW^FjCv4_r=pnFZi8s<#@Ah|ijlPR`Z31PqTBsTs*b~fVdGC%y8^Ni;2zD_K50b-mMxqTKlg~XyGU}-oQCWW-d?!OIuCf&X zRSz7Xx0>S5j6mI=YAhU~i)@f<>on*&LitG-*kS2|dTu8GZw~_#vJL+Q{(>x6xY=q9 z|9B}Mjz1&32(se5uBWpL?+t&ZPZxw!t0D=%hfiJ$famQ|eD23CUkzc$h(`IkAX6OA z2hTBww<=+ijNE$6+MNnR3OOBMw!{5&JM=Syp+v05ts!hI5)w%tue-#zJ#nh&s@!(V zVpUJiC{tF^W^b{8$mZjzGR$3fu+PWQIwfe?9jBbO0{Z!u5YPauAO9!r_{-Uf6X1h` z+s4fR4-CDXDhAsW6#Aweq;N@;(w_Fq*F&$;Z7)}p4SxF<JkU=H!ThU!PR+RCDv3v zLV8l~uBsKI0x0W~<$~jYuV9LKuPl4662)={5X~B6=``t{(02q3-rg}j+9$Bj(HHp5 zgEpSMoC_sz)BBCXXWzyuIgzrrAnhAqgy1Ktjk>+IC}wA->_IedLS_4@vfyhg22%Lx z90zsi3-~3BBgfAGU(kk@)0l>9qoyt$lH%j@UL!~Bn|vhQ70JmEG{M2f!kJ_g>I#6p zyBGqHD|u<-3%qU{SPb7D&9ZW;9p+ZFZd`dFXCnj;LAjRA{38zfCsjD-oczt(;8*ls z&k0SXJCQ}E+Ug$gxTXbsOq9t)uGrNYzf@M{24n7Xc9-Z?e$|#h2ygvPwt>eW#MD>>=AAw~YTE>3;n!IltTmb?Ib-Mk#Y&TK{Oc)126(=Q$~Rk$!nLy(%!UW- zH;K=IHph7H-wy*HYb{3RZD%9K_;+@822L^4+Vb*@kNW{z^R_FduSUAM83r=&$}FGP zI!!0D+iGh*6pc0sdmd+J1`*=!BZ$nFTYe?$hpi#)g@06_4IoziHC1cR! zDM!(D0$Dx zus6hXCov+0Wzcz#gdk6h+Ii63D}Q8{X!fY+NThJoV>=c8Yb*s2%k)LWUI<7mXSWd@ zQvwfKJN1SG+^qY652rSS_U_3Ma~T3Vy3SWSk`b4-zG?7>fyw7*0h%@oMJPVJTh>$X z$Gl;SA5&5rvO_v-*^qq|3O_OAG6d&+8s{AS@gp{$RdL}W+f)7$fS;A`VX)IGr{mpA zNhwl){rht;HTv-7V)7rL?N6pC2c6=FyPuWWi*>drNyXZts=dtyj>hZ-J{hN=e==+Z zKdGkwcn?(o`{nfkjZN4U${aP^@NFUt;?rEQjq6FV$pfh-nMcjy5MWX84t}}CM3NPX z(X4_f<43*iT0~{rqcrPIe{;zbjGUo~;867wD|)4Ws5h^7#t)c-4923&MNn}s$uOtk zj3S{>ULfHh6$_U0bJUXOq*}7UF=8g)zHD3Yn3hhx1(UpOfm}dH%vK%5n9*&@hW{|; zO-g{j*&Cjq+)p@9_$*B^P&;I~)j5iQB~{hfkC{=nv%v!)n)39y(>^U&^Ce^hjTXK8 zc{ZAeWUNx?OFcC0hE>KtqjeE&m%jcsMJggG5bg*!-b!%{IHDN^yj3zaMNapy1ASHj zDSz9SE3r+Vj|U+DNurD;KcO#IyQ67$z87SJHWP*-@pvEN4+7u?dk}I?6{$6dWD@*K z3*h5&2X|0f%};ZMb)crEX5$2!YjU;QhXXtSs+iWKaJK;TXmBv}Qrp+(;7oqkqUPog zI4`>RKZ4Mr^J$qQ5yMShU_$C){(#iK55TwY@^X#0n9G$I_ya7Zx5nPnX2gWS+b;zJ z`Y7l!(26F~I&_2k)IqoT>h1!vRL+aRj+p5jf=-;`&VoF#0Y@cL*s*WOWQV_-@O0LH z9TVft6EPN*Zf_OBW?m90wC1VIa=Jv%GmJ(cLkv_WuGqs@F` z=Co`fr#08t%cSIF1vqDC%Z19d#P1yjvSLba)@7S&gwq;?WP;^KqXth`VNtEQ?3N@F zv=qm_sLVe-y|Y|+c?J)d9EFo2JGpySYX4vQ2LVVEFVz(3NHo6bjM5^bo7$h0kRaV zufgcQ_B1fX2s}s+NQr(3(2kqrEwUem97Go?nMdz-1m?c5!%sj6Df70AQWsYNzeaq2 z2P`*P(*V};sANi*vtc|Q3UQHaElz45iqTShad5CBSlrK-@{gWlg!b|&^g-uq(Z|fmtz3ya)XMw?le?Def01I|e@fZ*2%nJ`2$9GV3{;22VmpGb@#;_Y z@iWR|)w+$|yi`{&{SXdU*2;0(o10r+yB_G?9oP;vn?HgOMG(4S3netNw;je__5E<{ zp@TYlO$jN9=v#ydggsETG8YxYKIk1H!D49V>(Wl*>%PG3c48;iP@o~Jb*lQ)j%b9{ zLa_GziQL1={cuYlm6m5>gJ)ZY!eKCr91c(BB|!Uf^W*G2T9dL%-QaAq4FB+QXVA$u z)KLo&i$-whu_@XlGT4dz#H7^XLAZ@G{cCRlCKy^AJhGYPIf$1y$rFH9 zZy*ifBShlcNw%#-veFO9{l;#CxqT))ne|kY{qZ@@2XWqfdQmw3&)OZ{EY@ z_4<%Z6X@#-S$hi z+-svZYZh0gACovLkzApc_orZH7J~8G#F6kIJhzLhNDtpH2Q2W-zb~k|()F)r1jjXg z@JjpWJfcqk2rr0{3kR{LGh-4B0rD8xVNG8ALsW`lH#mu1z=TA2GB@d7zg)Vg@H`65 zK@&L6vbq%g4E;ou_m}~9_?7^ zss$E!JPzIGA}H1Sog?D&znV$oO@2FZ=>U-*Y(am;Mqf8fYw;T6JMJ$^_YlN?s|mQ# zz!2!it#enj4Qd)^xkHYK?ZX!)Bzr6J9`0v8a%)fh_SF^J+2@ z1B^9N?QiCS~iHkHsG~OtP`q%or6P%wiUDf$Led7-^Oc3O zv!=Nu$YBwstSCm}KQ!C_2aKU(y~V-u;tK00E!hi^!RcRYL5|K5hBvC4{@Ph$tgfx< z65FfOv@f+@Hkd{RZ!J$oLe+Ecz=SzfmI@!&@5o?O4V9|Ap8Y{G_ouf!v2~TALNVr8 zz3_+G6NNW~4)FQgc9&Ug}O7=$?Lq%^yj1oY=RT~&N*?2O;e_^Fp5w`9=~WN38oHor|8|)fdssJ?Zb4#u|5wT6U%o-jL2W(IR0HH{ku58 ziVlwy<1#=5y6v}^44+06EL@{wEQGg`+A@lhY)~^Y$_-XfQo`6`@rXl;u|koM#dy=m zb4#ol7TVfut?gPxjjoPMH)8(BBPkxBTf|NV_ZCC(!h~#QoalnB%X-Li$yB{^VvXZ< zRBZY}JFTLTN#LpBx3(~_@GwOFqP&z>OC9FhC+ElbQ+znU#ZnaW;1L&V?(K*ccRgkg zsOF>9BL34F_(Fu?tz{syWbU~?oZ%AcoP{uuL~y*}#ex;DBA^mIlxU=-EUDtq-^XwW zn_v?YOH55oxm+4n#;nH82u!&N*E*bx9uu zsHAQV8k(@$+S+2dbaiqM64b%JZn*S6Zzv(mscy^M=KtQ#CpO}XpC}nZ&97M}j$lB# z*mO?|K?#_BK?xKGWwskr!~!2E&CJA<6w;eiZ*qV-JT_+bmRdF#z)pg_h<1Xs*wSnG zVQ+75>W+xNSZxGnHkPyYFQtgD>B5?r^$b;i__6RB;Egt5odg$W#=rFwn0COxhX#8r zQz|#yu^`&~SUn82s$r4+LmIjW+<{Hbc#OWR=y}KV8o%bqwAKjDSc!ODQN8C0&hQso zvS7fP3Ve^mm={`=#;<%V7AF`H_X$##;4cn0NsP1gmgEg~bJt(};kN>+9eK#%E2{r^ zknZs4H{+{8Z!|NU{ndr8-kkxjny`|%f&uu0aVoumpG9gWY7miPSMi1%UB5wac27*S zU?)ho^V8mTKyVDK-Ls|akl(~n=XUQQaJ%qpBAhKVQB(W0uwWBW+R)g=U_Px--;5R1 z{P2~}RkSYsYGX{RfFBe}E7%D!YSRNJF(%YpX;w>ZvBjF(cBL}`|4Oil8UX2shFO@M8!XKulUush=iY#DbR6mFfKs+0X7t3l*DOS!0U@OVQq zZ$#G|I1=Jg#UDH$RCRS_smeR{29sgjJ%+b+i-)J7F4~XQf%bxh;XD;GH?aC~pgf)e zGFp`TlG7C(1=njjB75E_QO{^J6FGYx626Tb5iAnMDb4n9;;}2pd1>?ebo>th$`K^( z1|WFYnU!Ydy&qm_NsmCfDM<{$)7wiG6i|00$90BN9`dLS z48vq7WFJtt3%%0@w~hrg=i&#vL zL$++sPUNoG+5G2luo4`Byje7#l8^`{{IlX>)E|!dkCXlv(%Usp?Jh6djz3Fz|4id9 z+sN5y|CjKA1^O88T@hKiIh5Vn|MEp)NN}MTS6%kM-4GcP1Dq`R>$v}k0Ds>^5rXon zl&4mI0O~)GNI>*2F+8r#dA&by@Glr=fyRRTPi%y?Ki&0jOIMsgX9=jzLTPqg_}5SM zUl}SyU=JYPTlwb}{QcJ~JLFOR|MLEMTKxOt*Z+I>dVdX8LR7_ectjAwAoY`|Dmzn4 z%Mw!rN6+k>bC@FJTmn;d=8nNtuH=^=;&y+*)g9YPfIPcA+C}KB7id$k?otO*XHKTiAqI9<(NH9 zOWrP_QqPrU!GVVP)>B2bRw~z|%g>KXE}JzWBH|k@2W4V}OavV(Yg{NA|M%XL&EM8t zzM3x-&&|d#;^N{M5Dgs92bbd#QMwY_6~23Zfl)fcf&X}14l1dlt({J41_k!KFsL=q zgs8i!ml|Lf+Oo4-G6P|F`>HW*gptHx22|^sauT~BQ_H6TOeCThG`1@Zp3}0PcM@iE zM1uJGY^?kuA|j3kk_~bt{ceO?1bv=7?l;LEF@2Sy{7m@FUQ_?nk& z@QA7Bex^1X(-0HkTwP0JtULe0fB_4>C6R>*8NkB85P>Le6hQhUD3Ch6i`8uP7Q!6O z=C@7kcNiusL?b3nEZoVBHcQeaM9QYJF!fFb5V^oyBQeLbV#y&KEPNb^vU&T$-2$#i z^EENm199&R@Cr$H*UaQ3`lH==B%%W?T!g^C9Rp&r4zdv26aKvuk$w1dGhDR`)M+!? zk&w3A=mhK&MZT{WQ4j*tJYIIZdVPDmczxb*7bCruoV`kqf4}e`a~BX~j2d<>>@OJK z-Ch_R7zm&@{bZ7tzsuW|vnln1xT%)j5F;H42MY&-#X5d5g{`)>q`CQbbHhi?0evH& zfduSc9iE}F@jG!z$-3M!gb;{8P44$H^_fVmI!ZrgAJn%>Hm@w!hnTC=2Ht!RnBfKd<&r;u-H=% z3=Resgh-c6QA=A@OW3|xTpOH24xiu zM&Y;k&?h^26RUn09Uaa?6M78(TMx~x*Zg*@|1(FLoCi_X4%ytQB+%PSv8^G=;nn_e zz?S2sF2)DD1qu5FR~&n8LC(hzJG0jGUuOCjWXL-}TT!AXJ#y%1okEkFyozXDNxtF_ z3`ue0GU-wR17-_mKc*Z$Te(#S#-?X0wB4U21HCyTza;_n)P_XG%Z{XF5TPHglV&=+ z)xIMDigXj3^wyy#1>P@Plr?qa=wXjpSGH!53RmeiL~vSA%@%wn|4UHDYOYqCmr<5f zudw0_P2Jt~&Rv?fK0&DYzLEQboPFzj)W_{OAug^^ec*$_?bKHli;1j`T8GJiF=Xb) zB^azh>R@fS;Z1!gyVT&xsb<3+Ri$Tb>P!4`w6CH%oBanG_X1L{z9%HJbREf9dL3UF zqxfzjrN;`PPP*%wnA4>+Wlj#Gm2k^&?S7v8?e;0|tX?lB#U<-#FJ-)E5N5#~*Z# z6O%s4k}WJmt2F}B$}W3;8OM1*7i zUw|!aOQA>+z*5aRoVZ6gnjdW`aP(lFU9@7~7Sa%W_AbRE*^+rzAdtlSi7p{Lr~EX? zS3)08oY|+J2sHsxiAjc?sE|+tAG3Kg1!+K94bSUdWh&u!teU(ml>x5gB*XnfLo-p_ zx-@DYH)LZnBftyWn5K@NYv}2#qyd3p+TQhR?QsH#sFtf$#xy`1!o~K2s6mK*y+mY_ zRvGcI1P-a+z!(?pap+}3RY^(4cINu&Z)c4f$o-ZG?#bL$_&$F`-#6^9B^01 z606y*10!HMP}C(2`QIUV4G~x_R~go~9|gF)%O-1od#`xg7T77X;x8v`G(ZRxTI)yF zzqH(&-fmy~7@6~s_=%$wdoJY3SbA842(#Za2=}ACcQtT8ZbeZkE8-Y&)Bx|?PA`BK zM!DMj5A#HZM%5vOR)M^9CZs$!A}0L(8A2;Gh#eh%guVDYEA4E>eUksxH$j^QRAc?1 ztW_~#j$ebaN`coN>+iUdJ(l((lEFxo6UAkPs$p(Ov=W`q{dDmt25tv7jGIvlNIhC9 zRCt}v78=uBK~-+j^g-XzvL_#ID<$A}2;? zv1PncuPvDA5eE-Xd@`ETG#8C5miW3mZZtZxZBazLc{9={6-A4ECXq8_oeg+zrYJ8T z9f^{ny6I0rpK}CQY_?>#-o5+!1#bM4VdYAV3B7n=%>lY5_qOzhZxt(Uq}VZRq2UM! zv&BlHmNJ4QWpAUje0?iT-^w$laf2FdSEODHIi_gpv4_x#^T}p|8VCEEm(A%$4fr24 zBfRIC!Y+M9Z|OqEzNd3r)4Q5v7{+Jx-M}u}?22Ubxt`Lxe3#gqTcN(SqTp8;9vv-s zzuu*(tW6FS%3svQ|KRhul$=44wLh96Eh-tAD@oiQmRaPI<3Lh$DB}t+G9t4*@GN~` zrAgzo1volZ{^S@{=C)ZB8xRj6Hx(BXi{Nzw08GfLY$ZG=wI@8$uAlm|Wa{fIXNnTz zSM?9A*A366IpBku4VrwR%-DSgp7;ZWL%q!OtGg?2Bu4zR_(@1VggLB<>vBn+vvMtB zMpS2A_1i?0()AsQn~-Na8zTyQ2CDl$bHyV~=7h z{)&3-yH372OqOxr#lY_uutPv3%9zj5t|2EXxQMzs{_(s8-;XlyU?I`Szmq8E3t{iW^UGQ_$Hski(C-e9I zPx%FXs7w`!NH=o)2FGRhQzlF94KFz6r@F0F8jA<_b+GWY%hCK$xU7^@>pjsnGT$#` znsOrokcyZ6=N$^XCn}-W>yP0lLZ-np4HJqFl&(i7hn^}_Vn|p;Th;okK=g!sO+`l1}~4L zqTxiSB?La1oItyl&P|b%FK=g#rmepw%v)E_WV1>DH^7@FKPL_r8CI~&;vC5?i=^$ zO=B2O7tJTcOt?N$&q7@fT;}WUHyv{i7Y&RIs{ATN^3Lava~<*^QWJ6$;Ip=9Q+#wR9$RXXfEPef(i{gOd04VWaJ( zh~aMRpditOrbPv<XQTe zIczeonrr;beSOTc(``{n<@+rQnwH9`uJf~8*d)MUi8U!9*j4BAcGXId;_$x6C$Pex|vV`a?q{r3)DO~Zm zzVd+zr%o*~>B_~)Ij!OVJ6);NX*3oz%~7KYt!dSOJK`3PDPzwsFDmuWe@RI+)`gZ+ z0&zm9Ig>dqH2ees0mjSI*V*$BX&kK`p5@wo$w#}FcT*Lj*J z*x_}lgr=kmvc@^6pt#hx1n@uXl4KR)W&yQp>p!3OW--HI5S|2wghZ(ClUg5B%cl%y zPe25#gaG!P&weg_t_xrHWAI4)R_akbCdD+nd?|eTi|XuOcI;=#OE7<(b88mJp7sPb zUeqZF?oWVkhc{m2-K!BQ@8phH*y)B0rX!l53kPOvj`& z1Zja(KG#2ayv|dF6s?l85+|>)<^#V=cT9S;zch6XAFSOA6?|lB+l_4%0nVXW({bg# zy})&D(84>lb$*Q0;xPWrQiApzz=Z%N$i-f6cjaGmpU}HqO2$0Q_Iv$keX4Bs)UgjN zt@$}Vd;C*Zh`R7gt-$7M|+E_qtjWU%`F>QG*bRV;!00`2zFUcae>be>JwOA|yx+&2urq+YL0`>DL;)%LLML zEzf-!>X)eFnh;Qbqp!qDWA)x8lI`x?=tg>h|CD-uQSh}_=C-@)!bn-JSYtyZQ0P$f zhWo0_^64StV2}OwM<3dBvw{%l+e3x~^r?Ad_&z)B1M!W8{THt1^YEd=D*G;lZ=fj9 zU08}^TUX|2`SUIPMBNavr_^D+)UlKR82Q%n3(=HB-^$5H<}TW72!Al?yyZl`M-%aK zp;Mp@=0eJ%98c$7$c&^Sn&$9WfMb|}XF5CEPomU%hPZ1dU>h3;BjpA!6?|l0 z^&~Fnz5#wC;PTp$7odv&19b0Mp6UC`zRG#+d?}Bp?XoSz(Y@gq^=vg$WI@jv+uHAS zGzt3rqWlWpZ8ID3J71d0uOrQ-=%d} z;S@HWN}aub@C#+`^3^wnAn-|HQ4Cje3 zE{fHoC3AESk$F2GG7csAkxB@=Y&s>t$vBOQUx4R=a$Xu4pKChYYIVL!Km{eYl2Yg% zgj=YaZ0D27p>GNI97gOrYxGv-c+%U$U*f_%S+~b?TYRQlwsv=;*>Z-=lPWKe`3qmB zkl=k_;@O)0*M#You$j;X+~O55Lb&~o%h{4aeY&2HEqF+11E+MEsVWpbEg|WQk3UMs z)djGl&3`2D$krj1i}yW+Qd@o3a-)RbgjaFfd_0Td)<1t*x85VXps=P$owE#0;JSIY zFWLBIP-r93TL6segx@IT2#dzwcQk@ecl*|CwR>p`fCa&J;1(p7S>d!Q(l-RgAWcW3IS{Bi0E{>Pdi z^|~SvaJwzoEjQdVs3nATp|e`}41EHv2}Q0zE(N!n;92acip0C$azMM=G};8y#z5a` zxzG)}J)mXVV`r?1uUkH-@$GW8fzV}jqS@BW7RZ>JNt1OCf5Ow&x2V6=%(7n|IH zZ=!0r?TyP+dvqIuyR+|+llKrT>F=wa&RlJycjnL=Z8pSN&^X#Qly_l4d$HMBo<%Vmjr?p(aX{vEZv%4TGqn_lGC~Y+(>Om9ZaUt%{<|l4(B%`1g8zr z*Vrfm_HrUU?cx)zj+ke(n_Kvb$%!t7*!eTl^*_GS|vhy4sZJ`;QVX4Oe=@Sd`% zP$@3gu2Z_D@PE2pOK#PJLPk0}(mlzSk2aeU4EQkl)FYD6Dl;)N%`LTpx@KCEWS{~5 z*}#pQkZ#|i$8~TKKf6~($-p7TxNY~Huknsav`Fs0em3dr%i*m_%g(&cD6Mj1=*QBlEc#ckV@nY|>#mGgEDdEWf&0){M#xYltlei{QV`w?tx;oT#eS29j()nsg$ zgU|W>uud0HF+VsLHW#SnLEh1WeIX?jL7xbB@ozkirW#pwcI^e7dY+=Qn63(i?^??dWYN3D(@fN zxO!hy-bH5kZNUtZtFB<}X|)+8^wTuPa&J6qE;LkLSr27OJU4K!$HxeHNVXOa^4aQz z-YuLx%BRpRSn>)zx&(XQ{)8{v*nVJ_GwGoB$+t2Cj(m;TNNC#d+%OQVXPlm;n{pac z( zoPo9^#m&HNgd0gPnb>h`uVbKUxac(U{Z7m6Wu@?^r=BR?r?%V2mNJ`-jx!R^w0mdm9u>Z!t=EcRgM@l3cu$9oUTx9>^+zG$J|KEt_Xk6T(i;REKZ z>J{a(sV~ym-8=1XQ)=ASrMv3+Q6x5(sl1mu9$V8HB2mXrf6q*GJ$?ScW_I2SJuUVEWP+>ZMUU!(<@*X?CB2Ox;{{`qYXyL)RQXg+#)`gr zYJoNPpJwZPA05g!3Zj@L7P8zf);5weGtVYSXsU25;8)yEbG0?9qWm8BG>~?Vqu2~> z@qUYdajQH<+k#GpUao>GXq@*l1kAIlZj^=|$klGrikB&GiGqQLaei3kJvY)16^(dL zHG`Oz#|1hY8Mh5R z9tZDR?bJ{PG`rNH0IlldGlqGQObp9dd&HI2c-$vmss-P=rc4I06KgW7I<1Oyd4(QE zbq*k z-Y*)zvR!Ok|NZ@Thr_{ne)Mk6Ps_V1#&5v=DP6!jA19`Mb3O@1TfpKbsa)?A>@|p5)V<6&~yt<=d%qZx-!!UL3`Lrj?07c z=phbuuwAa_l6y0LH9%qs%hx{>5L&Use^wvhhIA5_^Em*lzL4KTMp$oN-TrWJ=(yjc zH^S;Z|Nh8*Tlh#*kt_IPSx})Y4-pr(g+P8iYDsB`R9%B^bJ(mQg3IC<_i$aQ+~e_y zy(@FKibL6~D`&Ma{F!nEY{hQ4-=|V_igc`Uftw}bz`n3G(<|#aWbQK!-41Ft_bVrz zgWW>wrl8+b4GG$QM2l9dXRW@Mj+U#mKMmwHWjc2Ax`u<$gs4YUk#IoPP>`@2ircQ2 za&FNmO84h7YB_~2k9+H?=Y&tI?={53zdOyG7r9!I#t2;J6b7~TAa8*b2+geV&O$?x z=8XjK>-qiKo~-opJ-$_BwO{f$x$FNUOz3}h)1CvEzbexdTk=H-}*c?clyYhB)5782=a42 zO{5@h;=oQ|t+qehn9W`YNr#P(xtNwO+Mh3;dq8v z=DBJYdtZ$yG@4WPZa(zkOIw)au6;ZPh_)9FADSOZ{ub4ml9YCeOFKw%rMtd5d5ueu z|FpjR?hFd4{s5Uz1~x-bssdO_i^`-uypi(Y z=-iJ?94-#*>hj4BJ}Af*{EFIx^$8ca-e-ZrVde)0vLs{`f;Nm7qrP%nhxi9|Ls=hX z=9%NOabHNC>xzcupYOLpR2x6xoHyb}S7n#dy0qkZQVtnpyo4*#?wW}Yl zy;CTn1&e#k+i00Gmagdu?Is&LZq}S}r5;+=mN@VGUs7x5c@?Wp;I-=(dCy=Y0$HUH zCBzR)Jm7M6hVk|5(p(i9_64S7qXpe^OU}C+M<^B>7Lu$*bv8AN!8berm_({0ycfDe zboD@2bhl|`9QepD-Ni^5CfmWm39nA^4`q*oMM2V>nK++}YUSVF28*`gT?YMzSrZOP zQIY-Nk8bwjg;r^qK^pf6|2HsufEHeXD!c zu^C&V?IQSoE3f!_J zLNJW;LJVnaw}^v_?I|*Hi}l>H)&~?r32leB0Wu9bY`(o>CmRW>#l0K5bSi4iVN)Q+ zK?*i<+4QL+bzwIk;mz( zi<)J_lV1b+8 zTJ_?D?gHHKgCA-VuGf>KV8N7Cp{Ozq-ux?9OY;NzlCo{kC!s^Lhu?Ws zg`R6Tk49$6gc_haU+)!0MojIIKBDskZd?JHmKEoUD%*`r<{4$sj}|#N>4iba>HQeu zG@f#^H>O|p^CV~^fg8?`H2WT``ogvEq?On?IUG}e_|J^aA9`5cuuGC&GaGi{_vm@AwO-#s^-<};<+7HZ zS?1$>K9J3(t#i3NUcJSuJH;~bv7p~%F+?5Yv|Uym=K;S<<+d(Gs6j`>=lUGmUlg_b zngx^?7rG!kT060@^qZw~8jC$~?O6I&YjO2{1kr4;xtS7IJ;%&?rqxwMlR2@B=8p7q zqoSf*M$aBfV>JY};CJ=XH;pU<3%$)pqJ<$?Z97AFp=6;u)$;6BeYRS|x61Cz#d;%m z&q4m0@kmoW9>=Y+mNO-wbAv;a#2)%d5tG>#XUUrg#ehBpWlwski);2x8}D{|GDI0fOjTu1P*ZK!Mm75lU%3y+DZvJsbKbKwM+&#}=E zZGtc}VADrY+4j0rbtxD4saM1y7)kAJGdsIM`;i1#Uny5%^1?*q9;w*#t19_PP5n4c zzC5?$)3^z$hTq*7T0EH_qFF7#p4 zs5;UXDa(6XX%6v)p-%O3)(59hu1;)@{48GmtSxn4euyhRE|rSJ=d$v-MDP8Y^fnUj z#j11pr%C0Op4^cx?SN`54Hm!=yzb9oz-b3Q zS?!*-eO2TTNSD_XMfok9!-y`;;9dofze*G3>U=|!<*f~=7rU`{$CvcRRhA@>X&8{b zdfn0TwgPGJczsLD^|*ANR}doKamtm`s8B~?>#2O1F^;pJY78~d$^?e8!0;+ZF`dm> z3S?}4lbhVizyY!7m%LB;?i_{~U_C8>LRO!dyL{1DN?LI8zOWH7E85z~YnejrM<5RN zuiK*e!1Vz4EH2vwO3K-W3c+{I!oI~?nzTiCIA;2q__r0a?@-8&x9juK_apcg?1=Bv zzLXE1fLs|+E(2Dyasr@%psO;_GoNll;=sen@xTwMwNt^RZ9ch1J;GxWTcPIQMGw4r zi{ejp*D#g@I7~>c;4t&FdpiBrz{*>2yg@;d4aiy^Mm0O0b5QV z-TM;2#xNt@v|ufW-?wPI8C^SjL!nXQt*uMVG*7e!j`yy}|mMs}EYgOEvr%`w_E~pZMbt-v) zkoW?9@AwV{8P?-$rQ!QrtNVsIgBOY~eb-zeS+N^t*ZlQoPGUvCSWDXP${8GhI5h7=j{{F|+|@%Y6H zU3#Esyuo6=TGa>+U=MiyklJWbX!+j6_Dsz%V%;<8+ypMH(cxj9rDvh7tE;Q!9Kf}By8L7^%$zZE4O0Z0cu3r87Ugx2 z=5Q(}x<>iS^+3GlRmr$X zYmAV*HctO%N1?=5`I?Om`D?d*X)z1AbX0t0J#%Yl4h;*=i#20Bn5RQ&hqj2Q$OH}k zcBWT7kEV?E2L{O8^SzVjw1Xw_#`HPGn(gx02A^~AnNCU>n7p-fTM!GHazy2y6(G_8 zHuOdNfXTf8k^Uv~|HIx}2F0~CVWYv_gF|rF;BE=-?jGFTA%iBt-QC@7a0u@17Tn$K z&UxP>@5y)X|NG-Bs-|}BDSEHz-D`FC)0R_)hhs7u51M}|MkzmkkOK??I8hO- zk0bVOEFtl&v`t0ebQ+W_Xqu&4fRjL9RDV>g;cy8~d0974tzk;zU*wq4YxZnolQ<>j z_wuyz8cGqD^e~3sS$FZ-*yzG80t>(4VQ?<4C`_S5z-ClA*}TJ}kjFb<N5>vk5t(pfo2UcENV8#6lqbL zQ5TsfXUmGVaqi!K0A*HA6}SxZ2a@&sPNLiKFcfIbQ72jAqM<3WHD^`c{lHLirvcM> zVBQa(iG;D2#>zXi3r=sz3_n=YEV51G-+u<&q8WAS%gschP*{cNwEhqT$|IVL!%h2< zpmJDD4Uih98|pac;bM3mrMtQK=;^ah#F5RiBX%~^_!{Cd>abs-#<(4?7{1ERP@|`9 z6`8r}KAVk0+rP+?VW9vs1@8A1r0bnV;R`N*wV~l1!jUvsOg z^aA>}TI?%<(iqU}Y>>lImTR6XanH%UZ0_tOqL9}l(G{}5!Dnv#ohOfV38`Bn+^H){ zzl@KHmgnLoceAO}c^)DN-zyGqRW4yR;QsW)qJ)~^2$%t=+>PdwBEM2xqmb}fRRh%I z`(%=6JHnI6B_%InVjAR98V<|mi1-7rcNmMsxU`VC$QzGnv>U!8&x+?=Y>jt3bhID! zdo7mD!Bw_B39y?^E!0pGlr8ND_@#-V9rfEjKiN1AkIpZ9mINamO7F>~Z|l@MeiPnw zTunR=Z(N&u*?6S^iU!IS#~xm=*ma52?&6{=J-({~@9TOh!@iXX{b5()1s$OT#v^Ue z*=HfsO5>OV{kcGchj}i$$2Xm-Q5fiaYGAb>HS{jP0NXA5l-0xgZOgf85BE^WePuZd z{3-R!m$dpOHJNfA>uJC3(Gqa2z+zOVtWgT>#*?8+;SZX5)mbwL2AeYayKC#shS$fwJ~KjgX?EuC9PL=kpyhiNUDSDjuu4QpAK0y9q&$*)aNnC z_-BTVQFG2h-pd-+`aWA$OqbL$v<-m}wjf(@s*0DB94JuZl*S#qSnUFRVwA?FbvDPM z!q_KcQlp)Clw*H z|KNi% zTe_{;H=yEvF*0^SH zFt0*J6MZ4OUG63r6)E_nR3h#*t%CMJ1Yc(otiefDr%2QL$pmEY?_l2m&83NlCQRnCwmvyB^my zLg0E*w4pK^+N%(+dIreQ)|{&P(&}N=fC~YbLLk zavPnM5Z&f7ouEkZ1V#rdcki_FEJ`1BqRgr;^)`U89jFFWYY{R>eBbcMaYhAU^d#|E z;H)c-L&KE*T7f7Bl-5hX@K1YFmVYqW;pFj|Nky{P3IR0?L`E4LcFKqz6LgKnOr}Bq zP_mptuES7oHCJDDfs9=Kfzqr|P@XZ2klgR=`s>X1GUGGHl~Cl!=uN5>l5rPrEnki2 z`sba(+slP}ulxiivHGBlO^UeKi2n(qA}0l-22dh?1G=5rHh+2t;4n&*;}26C&ayX4 z_W%-JpmF?!kIIG5@wi;IZKI^luRv{H@Qi5l#(h)JDYD`Uq#HZY-YOd)i zlE30`@Cm2&w$G5|*VbL0a-&|2^A2A9k0trLMK2-QX_Tn_eRJ*Dxa8zwh%FR`dhc0s z!>FQE{eemT7IpvPKnishC+Uc~lLg(=wkKrGT1wq{KI9qz{cT>$>k^5QG}JL6a2NTA zBzvcPx~a|JWOt1Ka%Ytml1<8%tpCHb_L}z*p~Z4Tefc1M_OerJj+H>Hwo4p6p*ht| zczlpk!C-pht9ZGor*hlSGRm!5g28FIgr?!7QhM~ z%Mjj&54H&u_#9<+cL9S}3Vp(a6Z5HTw&e4A9^Y4d`fXwscBofxjcR9XCr0X8?OGoi zw1Q9aZV)D2S4_b-V9r`e_#;lq&JNK0US1tjo^N~9z04yoo?8x*i*gH-OX=KJ@2dFR z&j^*o@4oBAwyQxO%$#xaxGbI=xf6Rdy#}&(a+U_aiPpof6nx@5@+;EMTr(RAA!;*t z$|7C&cog2K=~yLp!RJV1Sa!^hz?%gqmS{VdI~lBt6Yb}|;3MPBA|-3r>o>+R2|g*X zICFHB_t?%b*!~(NJu#LSpo{I7QzNM>{$i2hrS++voc1MhYoWo{%i}Ib{$g}>RZv&T_)OqMcmjs_L{ z?d*9zG~Z9EWg5zFtl2vn=9eKpf(E5-qfPqH&p#!~t3-0u7|TM3$^O#PoojG$%EZq4 zdI$nUFnK5Kx1Wfmtk;BDIPBu_EJwhWx=x_5D0rRE3tl&fZZ3HeeR*e<5ZiWKJvKY! zrH$F+i7F(6tg1;>@r#4|P0l^cmYpT2vY=z-WAFw5%lQS1sg#rhr_dLdGZ>MJ`jgiN z(KW#ptd81JX%3Gxl*b|pEGMa-)YyIrw+Dk^np;+3c=C=!I(`8_$T2U-YF93!SZmu@aaAgj2?8oSQpXBhiVM3prs9D(m11Pg z_uXAs9+>j&%o099&N-w_9@g9Mb5ov9ApV{G&vP&|ly z22lsYcD^bBk{yzJr)@H^Sh}TcIzF?Qy;AEny6Us1yIT0;YFi4CD}Ie|0qzMO-?@nw zs)l~Aps<=VljzxoOy=^*NMo_@{9qwBZDT|$Lj0Msg1!+21hsCK)|jt(9~3QH2r1(v z>wIEt->>wF%a7I)Qj0ABe&CQ2q%~{_@N9sBVM~)3Zu5FPircrc!=bHgzxH=NnADz{ zvz@UxCp3AUS!B^-9~xt~D_<^CiHwTN$5){)GxINKacd$>w>MFi2sK~(Vfjl(P>9(a z3jZ_vwK}$87y8{VGKBfKCy4jFT^(rdORJLz1|FUAZm76{@o?VS_91{9hFQYSn^@0*rP`Y6GP55wZ9Qt`wdL2Em8``hu{n2w zkIo8y@X|OuG~Ga1b8B3+&i0yinWhO^=p$Ay6c%~HE$*YL3c-i$cqqB?4|q4*9E%J+ z+x)zGU9yx?aYZ*YLh2rEU9O}wZK@=m{JD7Uqi5qKbr4*WaFJGasy(;#kJq{%X+KLg zqjo|~m(}1h{cg(3v^eA=cwd!n|8Ndnmi{FD@#DLbV-#&>#@-B949f9nI7=5SEIV=Ui~KaVG2#wX zr8>lX-4?wMg)iV?N_9xp>joBMxa`7${@L%Flz>5k-xv0&r>A;)GzWh+9~~{MU*)># z#nM%_Xo|f&ww>}WN@#J|P_IS`%q_tz%goFOz(RaVdTlXZL;S3cv|LyqSrqF>EksEijKEsWf<{ey%E zpENb$TccqzCTkKZnK3h>|B4yi!|e+eJvs9j)H4e{Ux&UPh58L4y!C}=n%|-J1>y7B zK7TMoeLb@4K!Gicm7FctX)e)diWGPlIW5jI?(ZbpE3``S#@2Ie?wvjOCa}t^Jzo02 z*!D{+6W#)#IOKDBDfAgr&zr}kOam9Il|?qC()CCb?ukIg!LASrmvxa z-A6cIzMgeeqJ@pnVg2BUP$}|*uuv{jk$xn8Ugu1Hy1u8hvdwmL$?bIWXr(+ceLRhO zxbe#Y%X;TD45l=MOL6Q<*WKC^(W45^d0_~KdLP4(0KLFs;zW@unA=6V&)9>&YEAdu zYY0(d66I9e_GPJ0t?Bq8*=VP;{`0zY?=Rn%6E`fqJO8T)tvA;3wki#-b66Q^DDIYw z;s;Ed(z(^g`v%+PU3nBLOApl^)jM{Z$+eKzJj)TI3mu-1H!(gXH`fPqRP7umEm}>Y zp@|xv5iPoLms?x~`T3Z`#uMDw??ZRG*X^e#j5ZT3dApmvbr&*yU+Xm%%-)_rT!z>x z2BTP~t870#nrrc^cCT3DTD$A~)Giu|t<7`q@W74Y#&2@Swhjj|M$cZpB`+{~_ktn_ zG#98}(WbZd3$N4$Xy7DP@U}l6TJ?7OUChp7%~f{>9l?~&=RIXSj61cbNV?0vZ*Kt~ z&y87n%}+n*sib7Ep+S+K^(VorB5T&+hQvWA}rO&=%aTyt-$ zo36Z`@Eu8K7xjI7z{cg;*mktC(pfsiNus(v)2=lQ$DP!uW>MuhSn5hI;RXa(MOy;3 z8mt+=f0z8l_D*zKqs6tn(}<>wyZb;$;m)wE(C>n==&ebY9kXitTXD&TIa03Rg!9Y{ z(y(rGmD$=*Jl%_hzvO62bW9l*^Cm&=yq@2u3PQ(lTds;Q6)%7fF;&TCqMjwD!__WB zjs2vEX6u*cyb`pqKu@?Sps15YzP30y$2D6sqhQ{_SoNLO>TWs(BdJW`Q1H;9sSAw5B6F z?&Y#3M@ALG_cZsGv=r?>>r|4&l{Tz~Eh2nb?8YsTwJuHhsgcZY9217euJw4sJ2t+m zAJvv7M3S`;^)Ixa{=A zXB~7e0$tAuHYV)`8G|~r6W~n=KSI6lyQ7Zqn@YKprPmtk$(zp7`LYH_5>?DS8$w&h z>4H~R_>rGp1ss?wrKV~=N2Rkf_xJ98DU7Yl(kSy5md_^fjz59M+aZ=4FS9C*i9&i4 zIz7!i3!>3PZYVFd2UGbq=7UO-vjPc)cr%_ihsmmIbC%yRtz>IwNNF03FV^hzxMOFy zWOdT++7YcoNEgpz{&G{kLL%bXp$aZ1MMcf57er++A7;p!@(H(``tsL4}jlkqs*9#V=C;_|qB&wW^w zAsV~Bh3C-)g{-0b+6&dK!tG(;_i&oZWR2P(E+WdP)BMBz>}G1GWnM^lEzrPcx@z-s zEVc45_*(bN)|~glZET}8kt9_TFi#O#Mp{O{MGjQFBLE7$$KQ9_T${xeY#sX z8vR0kY1lhpf_b`1?M>MGQgojTaP0QaENH6}CM}9kp-qAiMuz!rFO*S-MY5j(H?@ys zvMbW=x&3?jQ)WX7yMpz1{oe#bGs!%CY6iz#}dh)U~%$g zwmeuc8*GA0I+T{Fr6qK_OJyZpaPF3kb2_VqPA)ESzC9g&@M-W`AGm;TL>j@J9Bvky z?N=y>N0+YRpoO;NO84t-eRDonk8ygf@WmP;!a8GPNP)srFpr^_FxhcK zTy1dw!!-hWa1$(8MPkIj6$5iSD0(ZdJjJOj6bPC;K(VQ;v*%)Nq#(&lB<~zsAgkFZ z2g29zS)iHN97i#}_V5qK-GjoDatYz}Wo_MC*Kre#1ZGD12#O2X*2t^N0!_AdX)*;I zXJ3k-RZu|=bF2A7dD)Yc&{<-=oC#70y)?oRWcA@=G#Dcll{zOGN}`MOUJ2Cl^7bJe zQ!ULH^SwV!0rS_`YKz$0ewWK;+x!bqC>2vfJ}4NCQ6QUM4TE9-gP^G9i9_vxsD%p+ z`UvAN1_!giFHD!GShdM(Dd|$Sw;U6P`5h!8obhz*4;ONDt+eBsk|)^v*w);`%Fw|S ze<_nmD0H;*uh;fTw%<;rD!rD4XY>Uu4Ta9B>OTvlxQ=(^ro zdd)KJAojuJY09CF3{SDDJwlxp-sWA@h^LD@aze?4ly7@X8s-~q7)dqNUJ5o{;=@!!Xd1$qe z27gL~nhq*;2>YzEkPFv`Myq`{;8yzpPX9OX4zg=Iqh+!j5d!6On-Z~pef4ItcQ2KJ z^gs9{7e%iOjrjS`)WrW9Gx2dkJ6N!oc+f{<%{O-EJ(=2Md#6`TQ~)8@(+K1JiU4jk z6<}A~j!-X+R$)%siVuN9<^BtVDssW6f6;-770SnkMWIC875&$J&{M?G!5ZhEqE*c1 z;{S)2|E(twf>R*=!uj7ceOF3v8PAYW7wv9>4Q~8s-o6Y}^-~ z*tqued8yIDFh!tH`R8W^st?c^>Xmx3msgF$*Na!=JhW1__^xfv=Iarl72pL6|NgtP za^T`so%FwSnkRG=|i92(ts?^6-Zz3c^ zJ8*eH(+ZJnqsE$M4<9UahE}+7qyGJdJ7JHfhl=d(Y!{o2L+Wg2r$~?ItmLV$!baZn z_xo^}!`5=xMf>*O#N&tP(A@D|29Bijb_n(CU;n_WlM$4I^^bx;`f_tP%TWFU%QNcC zwh)~`S&~iw^-w3F;|CL*(?25fANk-)gNrL6q1P%-=XFa?#Q6MUjmZDFeL-RHds?q#oo?4y=uJ+10xqg`TEl|pf%f_zLW$J|v_ zj_AUfRid3qZ8Q+nYD2Tuv^+3SrIDtEnrf!NAWzW$@>J!PA(b<+s7PzasBL{B={EuC zH2jn`0#5QJ{E`bN?t6H6w4!mJWNzMPc4mwmaH*Qs>%Qg7aq-i}`XITDC2b(1%+ewI zC8%&^Fzo?>oYg9Hdv`|~2@~8nH78GT zhK6%7*&9no*JKqTB_)NN_HuH%x@ip_(W#OVYkkS73$xs;l(sPO@1Tq2b(^P%@5$d9 z($VtJ<@)fO_|Q@TSP%kD7z6?#VBtXB334y;}ay{(;x+ut|KRu5K2+B&7%X<|w&C+U#h~#=kh>I}&~p2NI{E z+5y;j>G<-^NIS z?&hi};(Se8&Y$*Jf3**+vs)GeIv;Ge+ITV)oER;mP`wATv9i{xOs7zU*CV#L8PnPV z$t_YQfH?x1o}h+-W4}oCvBwFc2TNwy7J(+Effim_Ynz*!ulBDZ=Yjv;@mW*oMW}#@ z**Q3rQ`pU)vg6K%QoKN}31qnp0coJCH5J5+5lx^lC&PP(Poq_y%ux)l|fks*UvD?^#6pO2UfFE#@z(&HL#epO-#&JYm#-? z?)fa%D`dZeV=Z)U!V05!81Qe7>GF;ec@uy2z3Y)@@mwMIIJ|(N_-Mc+A;bD2HT=?h z*D=6b$w!5Yo4OtGM3lH3qDMEJP&m*i_`;a#tY!N&H@cIQ>ouThmPR?r!#-aRcX;`r zzCMt25&Pxf2b%?|zBtg;mMKx!F&nOgF%2_V@Nb>+-;4MJp&g#b>qbWmVcWb77>IRrM ziR-U%OZ8ULC-HuiWLl1B=cvOSM=*ThMA}&@7XaKUh27L4LQ&y~1XTI>ub@R1B~6M~VU{zeqNCmFu(VND70#-(BsTP3%j$ z%Oj2B^7`^%>qF>v?05%lxno!|?HRG)mB zwSS@XA8zvHa;9;f{#h-myf2-XGlim|ANKR$Dt`s+A%5jStNI+bZm1RKF0uSW9Gm}OS` zgByC_g&O|rnBPD}r(OgfCZSg_m_vnaENx(tVTcnEq6_W$BK4E*^mav_SrVyYrd(OO zPcDg^$nUY)z>@Y?P*CvW*52-JvKp$^N1X01pG1y2qfzIU&|FW~#xhiBVj(+M^znKaT9XC8Aa-7UBfAHu6TUyW(l;i>@?lVV+7Il29H zb<whi_sHcSX3ME|z80G~v% zrYvEFdoWUrR9oVWl|}DDqV&b+QR$6mejO0@*u_K&yod-q{L)Sb=T`D8ws$-1?AUJ) zmZdMXq^0(d8{H^+w-=bEv$_WML_8M;%Nb7GZJK%ZfR4-2aycOEc_WzMbZjg6(u zYqdW!76^1Yk;SLa`d}%)mR?>mI-iCvPrfq4 zbQ{`2y;Mzi7&s02!v94 zyA^CmeCBbiLu}t5NcV5iO32F_)NMpwCKD~g7*P$aK-J6s= z-C@y1x+n0InM6QuLhi<;6s4@u`51y_gXZ7Pg%Aa~f(4WatShQ{Rr901+&-12CFJfO zNiEz?dk0v^+SYGE%i0Q!)}7EdW5S>6ZC}KabMWUr83!?7?T%>^8~4k{iG9E6Efhf} zxP{QkKZ0&FG1KO{?>$`eLk&z@2`-LXKw%cGk3~(`i29&|qDz-lV_E-v`y{cf1pdm* za`iNzSmSL{a?M?k7{qD=nhchNcbF$dbtb$JNUWyvRb;it#Vb7LHNgN*5H{qXG(YHU zAv+!3vYN$s*P5NV_Gdv~U*FFK9%1s3N24LL6uk3fHj@%rm(h9l$Z4~&I0p<$>2X`a zd_58Wos~9iY)nYw9rgOYAMAk(ROr*j)saS)S}9-N*9A>8Cn)H6{(jt}gPUZq9J1*? z>Dp2u#gk<#JL~E-at4zThEnlutCDtj@>LX7se|i&MhH2E82kP=Z3vi$OY@cdyK}cnMc*@+eZd?6M z`?b4wzC1TUjCa_J$cK@sc0;NjzkRz2 zDa_>QJQePgvtCeOd_D5Gd|W0PfQWpNzSBJ}!e8hg7@C=7`PDypIan%xr1g`Ba-`*1 znvV13UrGW588iIhlj1C>tJ~lb1o|65KYoJ<*Y@~DO3x;njx zMYac<5R-x*=*r^9nSZgL!N1+k8=Tyk2;|YlJB;fCP!Td+@RV1V%0cyBi#1^}qznt5 zbofo9OK(gt`(?{b@^8!pwW(w?D6gSd&4lo2CuXfvbsuZBUIhtj)OB7(7&?^#W)n!V~Ra0ID^*#unO`%Tv#lWRj zYx5C0-Qh=CarbFVzO>C*e<%z}3}ZTv)R7uPIU&K;*3(TrO%5pEHHK|AtsBp3UXJj~ zS4Z1?!%gtv-@!UC^de`-TN+f6#2^M(W(H=lR+{*(IZ`U|@*pE)cdGAkBqUVte=U?- znLRBR_Zb>=VWd_je(B5;zq2h_JSqTJsL*;YI~a$8R@)#x7OvuT*%+i`?n;tsvd!O^ z>h?*rlMVMf>;y9n!k{#*TJ@KP*n3gs>Lx1C5Rq^m%LgMVX@vha#x0C7-xhId;dh#W zkyEvoy?i&3zts)-LD&5l;+tSo=Q)>~?MpCHOuN7*Q0-icftK|qKNDiZ3@W!4d+Po0 z@Ngn*dhlV|Fv7e9wwT*_i09Lcy<8yt34oE=J4&gNfx#@ZY@m!iG&2Ky zsd-OZE`em-A_SM1=Hr$JYG{B99WAU1Vu3(;Z0J|Uu<1@=9A^(*F#n@&@Vz$ff=v1V&1#M;V;YKzo3T!~CgU z7V5Ev2KhggC4U-_p5XcLfz;g4FQ{sa1m5k>&%<_?A$T%fYaU%(u$Y6uS7a@2^SLNj zMPXz81K_zFPFMXELfFx>&WF<_LNqKE+FLAVi{#7#^%)Z6SDmI#Hq<#dC($c-nf`pV z{gA86N9^#k3TbJx?aW-0>Ix^F_!P=g=f`84o{GlN-O1oFbCfBe#cZhHug4_khuU=& zjDiHKZ9d!TSbkaE6wUzcy zz>dlqwVyBSR`Wyq4zYQkmem|XPRre`GuIN30)@HMO=0&Hf$5*K8pc;^zj{5;ST(hg zcWM9Ts)T$4fnZ~|#g|ti$E+I3r9vb*BSp7##B-WPyolzfRqLcWlHE<(Wbj?6%LWs_ z9nu82kVE9CA8@HlTp6U%AxmAuHFhPz}N;g{dIl$$>TA9kr5Y!t~aDV*f zo6@3Y1y|A5kskdY2%<3P8)jJZFp=NEOH}{}i7c7;Q3mmE#rh5oQur&lA?gH9(7zw@ z6|w{zghr}nV`{?udzoP9u>K%o#91HVf2XAa1wtfCMd)gff8!iEDkO-Qu#oZl-)R-W zgHTDeAhj=qe<$z!c|i;dA{OwqkNS673Yf48#AWd113Z6Yn}1#ip@N7(gM};pPAdz< zG9e92t!S6upf+LvF^CuOWg#3$HnD$&CH{y^ln8-%scJ4d2l$%W*>m;ymD5#$#WpXu_%kN=4+`o{-IUi$HJ&$?=;-LATxt}1Z7>SC z5Vw}aQtlC1z>T&bU;X;WJG7avWwiehgHALNVrRdj@4_!*=`CMCFepdoytE4rEHpCs zkXKtJ+lmk?Gs;gmXMjfnR=asp=Qa2l$!gAg{sUA(cHLFXl;c4&m!2kbLWy1*5Dp1P zBM5})cl5YK#mB}nadUgbfJR_GjZ}bVPs}zS5=`2nLgwaJN{yy$-iB>VhmJQcXJGO% zp{5Zdf?_lh8X842MQEmm5H!SNo6H$vx)T|^Zk{)E@8Kb=l&3s4YB$DKtMkqQzOXPM zW+wU$w=V1Gv=r$%4y*ONz$PvpL4wWJy#-!D)Q%^q`BjvWWzZt?$pwD`{0zA6yW+Qr zl7e}~HJAj}6!+IpQHTW3UvvIuagh$B{~W4ORg2G)9O1ju8GwypK5|Hxm7xVnCM##B zYXChg+I^3~kv%Fh2->G$bt;7u+uY39fB>UrW4o?Gb@xA_5tx3LfHe=N=;6V8t+_