├── .browserslistrc ├── .env-app ├── .env-app.test ├── .env-build ├── .eslintignore ├── .eslintrc.yml ├── .gitattributes ├── .gitignore ├── .npmrc ├── .nvmrc ├── .php-version ├── .rsync-exclude-prod ├── .rsync-exclude-test ├── .stylelintignore ├── .stylelintignore-css ├── .stylelintrc-css.yml ├── .stylelintrc.yml ├── 3rd-party-dependencies.md ├── CHANGELOG.md ├── LICENSE ├── README.md ├── UPGRADE.md ├── behat.yml.dist ├── bin └── console ├── composer.json ├── config ├── .gitignore ├── bootstrap_test.php ├── config.yml ├── config_behat_test.yml ├── config_cloud.yml ├── config_dev.yml ├── config_prod.yml ├── config_test.yml ├── doctrine.yml ├── routing.yml ├── routing_dev.yml ├── security.yml ├── security_dev.yml └── security_test.yml ├── dev.json ├── dev.lock ├── docker-compose.yml ├── karma.conf.js.dist ├── package-lock.json ├── package.json ├── pdepend.xml.dist ├── php.ini ├── phpunit.xml.dist ├── public ├── .htaccess ├── bundles │ └── .gitkeep ├── favicon.ico ├── index.php ├── index_dev.php ├── js │ └── .gitkeep ├── maintenance.html ├── media │ └── .gitkeep ├── notinstalled.html └── robots.txt ├── src ├── .htaccess ├── AppKernel.php └── Entity │ └── .gitkeep ├── templates ├── base.html.twig └── bundles │ └── TwigBundle │ └── Exception │ └── error.html.twig ├── translations └── .gitkeep ├── var ├── cache │ └── .gitkeep ├── data │ └── .gitignore ├── logs │ └── .gitkeep ├── maintenance │ └── .gitkeep └── sessions │ └── .gitkeep └── webpack.config.js /.browserslistrc: -------------------------------------------------------------------------------- 1 | > .5% or last 1 firefox version 2 | > .5% or last 1 chrome version 3 | > .5% or last 1 edge version 4 | > .5% or last 1 safari version 5 | > .5% or last 1 iOS version 6 | -------------------------------------------------------------------------------- /.env-app: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env-app contains default values for the environment variables needed by the app 5 | # * .env-app.local uncommitted file with local overrides 6 | # * .env-app.$ORO_ENV committed environment-specific defaults 7 | # * .env-app.$ORO_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables have priority over .env-app files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env-app files for production use 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony config ### 17 | ORO_ENV=prod 18 | ORO_SECRET=ThisTokenIsNotSoSecretChangeIt 19 | ###< symfony config ### 20 | 21 | ###> doctrine config ### 22 | ORO_DB_URL=postgres://oro_db_user:oro_db_pass@127.0.0.1:5432/oro_db?sslmode=disable&charset=utf8&serverVersion=13.7 23 | ORO_DB_DSN=${ORO_DB_URL} 24 | ###< doctrine config ### 25 | 26 | ###> mailer config ### 27 | ORO_MAILER_DSN=native://default 28 | ###> mailer config ### 29 | 30 | ###> search engine config ### 31 | ORO_SEARCH_URL=orm: 32 | ORO_SEARCH_ENGINE_DSN=${ORO_SEARCH_URL}?prefix=oro_search 33 | ###< search engine config ### 34 | 35 | ###> session config ### 36 | ORO_SESSION_DSN=native: 37 | # ORO_SESSION_DSN=${ORO_REDIS_URL}/0 38 | ###< session config ### 39 | 40 | ###> websocket config ### 41 | # websocket server DSN example: //0.0.0.0:8080 42 | ORO_WEBSOCKET_SERVER_DSN= 43 | # websocket client frontend DSN example: //*:8080/ws 44 | ORO_WEBSOCKET_FRONTEND_DSN= 45 | # websocket client backend DSN example: tcp://127.0.0.1:8080 46 | ORO_WEBSOCKET_BACKEND_DSN= 47 | ###< websocket config ### 48 | 49 | ###> message queue config ### 50 | ORO_MQ_DSN=dbal: 51 | ###< message queue config ### 52 | 53 | ###> image optimization binaries paths ## 54 | ORO_JPEGOPTIM_BINARY= 55 | ORO_PNGQUANT_BINARY= 56 | ###< image optimization binaries paths ## 57 | 58 | ###> redis cache config ### 59 | # Sentinel DSN example: redis://127.0.0.1:26379?dbindex=1&redis_sentinel=lru_cache_mon 60 | # Cluster DSN example: redis://password@127.0.0.1:6379?host[127.0.0.1:6380]&dbindex=1&cluster=predis` 61 | # To activate Redis for the cache, run `composer set-params redis` and clear the application cache 62 | ORO_REDIS_URL=redis://127.0.0.1:6379 63 | ORO_REDIS_CACHE_DSN=${ORO_REDIS_URL}/1 64 | ORO_REDIS_DOCTRINE_DSN=${ORO_REDIS_URL}/2 65 | ###< redis cache config ### 66 | 67 | ###> tracking data folder config ### 68 | # Specify path to the folder for tracking data 69 | ORO_TRACKING_DATA_FOLDER= 70 | ###< tracking data folder config ### 71 | 72 | ###> maintenance mode config ### 73 | # Specify path for the maintenance lock file in the system 74 | # To activate maintenance mode, run `lexik:maintenance:lock` ORO command 75 | ORO_MAINTENANCE_LOCK_FILE_PATH=%kernel.project_dir%/var/maintenance/maintenance_lock 76 | ###< maintenance mode config ### 77 | 78 | ###> OAuth config ### 79 | # Specify paths to the public and private keys for OAuth 80 | ORO_OAUTH_PUBLIC_KEY_PATH='%kernel.project_dir%/var/oauth_public.key' 81 | ORO_OAUTH_PRIVATE_KEY_PATH='%kernel.project_dir%/var/oauth_private.key' 82 | ###< OAuth config ### 83 | 84 | ###> logging config ### 85 | # Specify path to the log file 86 | ORO_LOG_PATH="%kernel.logs_dir%/%kernel.environment%.log" 87 | ORO_LOG_STACKTRACE_LEVEL="error" 88 | ###< logging config ### 89 | -------------------------------------------------------------------------------- /.env-app.test: -------------------------------------------------------------------------------- 1 | ORO_DB_URL=postgres://root@127.0.0.1/bap_dev_test 2 | ORO_DB_DSN=${ORO_DB_URL} 3 | ORO_MAILER_DSN=smtp://127.0.0.1 4 | ORO_WEBSOCKET_SERVER_DSN= 5 | ORO_WEBSOCKET_FRONTEND_DSN= 6 | ORO_WEBSOCKET_BACKEND_DSN= 7 | -------------------------------------------------------------------------------- /.env-build: -------------------------------------------------------------------------------- 1 | ORO_IMAGE=${ORO_PROJECT}platform-application 2 | ORO_IMAGE_TEST=${ORO_IMAGE}-test 3 | ORO_IMAGE_INIT=${ORO_IMAGE}-init 4 | ORO_IMAGE_INIT_TEST=${ORO_IMAGE}-init-test 5 | ORO_CE=yes 6 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/.bin/** 2 | **/node_modules/** 3 | **/api-doc-bundle/** 4 | **/nelmioapidoc/** 5 | **/ThemeDefault*Bundle/** 6 | **/public/lib/** 7 | **/public/*/lib/** 8 | **/public/*/vendors/** 9 | **/Karma/lib/** 10 | **/*.min.js 11 | -------------------------------------------------------------------------------- /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - google 3 | - "plugin:oro/recommended" 4 | - "plugin:no-jquery/deprecated" 5 | parserOptions: 6 | ecmaVersion: 2022 7 | sourceType: module 8 | env: 9 | browser: true 10 | commonjs: true 11 | amd: true 12 | jasmine: true 13 | globals: 14 | Promise: true 15 | plugins: 16 | - 'no-jquery' 17 | rules: 18 | # turn off ES6 code style check 19 | arrow-parens: ['error', 'as-needed'] 20 | oro/named-constructor: 'error' 21 | 22 | # customization 23 | indent: ['error', 4, {'SwitchCase': 1}] 24 | max-len: 25 | - 'error' 26 | - code: 120 27 | comments: 160 28 | tabWidth: 4 29 | ignoreComments: true 30 | ignoreTrailingComments: true 31 | ignoreRegExpLiterals: true 32 | ignorePattern: '^\s*const\s.+=\s*require\s*\(|\.extend\(\/\*\*\s+@lends\s.+\*\/\{$' 33 | comma-dangle: ['error', 'never'] 34 | eqeqeq: ['error', 'smart'] 35 | no-useless-call: 'error' 36 | no-useless-concat: 'error' 37 | no-loop-func: 'error' 38 | no-eval: 'error' 39 | no-undef: 'error' 40 | no-unused-vars: 41 | - 'error' 42 | - ignoreRestSiblings: true 43 | args: 'none' 44 | operator-linebreak: 45 | - 'error' 46 | - 'after' 47 | - overrides: 48 | "?": 'before' 49 | ":": 'before' 50 | new-cap: 51 | - 'error' 52 | - newIsCap: true 53 | properties: false 54 | quote-props: 55 | - 'error' 56 | - 'consistent-as-needed' 57 | - keywords: true 58 | numbers: true 59 | valid-jsdoc: 'off' # has to be turned on in a future 60 | no-useless-escape: 'off' # has to be turned on in a future 61 | require-jsdoc: 'off' # has to be turned on in a future 62 | no-invalid-this: 'off' # has to be turned on in a future 63 | space-infix-ops: 64 | - 'error' 65 | 'no-jquery/no-event-shorthand': 'error' 66 | 'no-jquery/no-trim': 'error' 67 | 'no-jquery/no-sizzle': 68 | - 'error' 69 | - allowPositional: false 70 | allowOther: true 71 | 'no-jquery/no-camel-case': 'error' 72 | 'no-jquery/no-is-function': 'error' 73 | 'no-jquery/no-is-numeric': 'error' 74 | 'no-jquery/no-is-window': 'error' 75 | 'no-jquery/no-now': 'error' 76 | 'no-jquery/no-proxy': 'error' 77 | 'no-jquery/no-type': 'error' 78 | 'no-jquery/no-hold-ready': 'error' 79 | 'no-jquery/no-is-array': 'error' 80 | 'no-jquery/no-node-name': 'error' 81 | 'no-jquery/no-bind': 'error' 82 | 'no-jquery/no-delegate': 'error' 83 | 'no-jquery/no-fx-interval': 'error' 84 | 'no-jquery/no-parse-json': 'error' 85 | 'no-jquery/no-ready-shorthand': 'error' 86 | 'no-jquery/no-unique': 'error' 87 | 'no-jquery/no-context-prop': 'error' 88 | 'no-jquery/no-support': 'error' 89 | 'no-jquery/no-and-self': 'error' 90 | 'no-jquery/no-error-shorthand': 'error' 91 | 'no-jquery/no-load-shorthand': 'error' 92 | 'no-jquery/no-on-ready': 'error' 93 | 'no-jquery/no-size': 'error' 94 | 'no-jquery/no-unload-shorthand': 'error' 95 | 'no-jquery/no-live': 'error' 96 | 'no-jquery/no-sub': 'error' 97 | 'no-jquery/no-selector-prop': 'error' 98 | 'no-jquery/no-box-model': 'error' 99 | 'no-jquery/no-browser': 'error' 100 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /.env-* text eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.settings 2 | /.buildpath 3 | /.project 4 | /.idea 5 | /node_modules 6 | /composer.phar 7 | composer.lock 8 | /behat.yml 9 | /var/* 10 | !var/cache/ 11 | /var/cache/* 12 | !var/cache/.gitkeep 13 | !var/logs/ 14 | /var/logs/* 15 | !var/logs/.gitkeep 16 | !var/maintenance/ 17 | /var/maintenance/* 18 | !var/maintenance/.gitkeep 19 | !var/data/ 20 | /var/data/* 21 | !var/data/.gitkeep 22 | !var/sessions/ 23 | /var/sessions/* 24 | !var/sessions/.gitkeep 25 | !var/oro-check.php 26 | /build/logs/* 27 | /vendor 28 | /cov 29 | !public/bundles/ 30 | /public/bundles/* 31 | !public/bundles/.gitkeep 32 | !public/js/ 33 | /public/js/* 34 | !public/js/.gitkeep 35 | /public/build 36 | /public/layout-build 37 | /public/media 38 | !public/media/.gitkeep 39 | /public/build.js 40 | /config/parameters.yml 41 | /config/.env 42 | /.env-app.local 43 | /.env-app.local.php 44 | /.env-app.*.local 45 | phpunit.xml 46 | .phpunit.result.cache 47 | /.behat-secrets.yml 48 | *~ 49 | bin/* 50 | !bin/console 51 | !bin/dist 52 | /.web-server-pid 53 | /.vagrant 54 | /.php-version 55 | /docker-compose.override.yml 56 | /.user.ini 57 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 22 2 | -------------------------------------------------------------------------------- /.php-version: -------------------------------------------------------------------------------- 1 | 8.4 2 | -------------------------------------------------------------------------------- /.rsync-exclude-prod: -------------------------------------------------------------------------------- 1 | - .git 2 | - */.git 3 | - */.github 4 | - */.gitignore 5 | - /node_modules 6 | - vendor/oro/platform/build/node_modules 7 | - [Tt]ests/[Uu]nit/ 8 | - [Tt]ests/[Ff]unctional/ 9 | - [Tt]ests/[Bb]ehat/ 10 | - /public/media/** 11 | - /var/data/** 12 | - /var/logs/** 13 | - /var/cache/** 14 | - /var/sessions/** 15 | + * 16 | -------------------------------------------------------------------------------- /.rsync-exclude-test: -------------------------------------------------------------------------------- 1 | - .git 2 | - */.git 3 | - */.github 4 | - */.gitignore 5 | - /node_modules 6 | - vendor/oro/platform/build/node_modules 7 | - /public/media/** 8 | - /var/data/** 9 | - /var/logs/** 10 | - /var/cache/** 11 | - /var/sessions/** 12 | + * 13 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | **/node_modules/** 2 | **/public/build/** 3 | **/lib/* 4 | **/api-doc-bundle/** 5 | **/nelmioapidoc/** 6 | **/ThemeDefault*Bundle/** 7 | **/*.min.css 8 | **/Fixtures/**/*.css 9 | -------------------------------------------------------------------------------- /.stylelintignore-css: -------------------------------------------------------------------------------- 1 | **/node_modules/** 2 | **/vendor/oro/** 3 | **/lib/* 4 | **/api-doc-bundle/** 5 | **/commerce-old-themes/** 6 | **/nelmioapidoc/** 7 | **/ThemeDefault*Bundle/** 8 | **/*.min.css 9 | **/*.min.rtl.css 10 | **/Fixtures/**/*.css 11 | -------------------------------------------------------------------------------- /.stylelintrc-css.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | annotation-no-unknown: true 3 | at-rule-descriptor-no-unknown: true 4 | at-rule-descriptor-value-no-unknown: true 5 | at-rule-no-deprecated: true 6 | at-rule-no-unknown: true 7 | at-rule-no-vendor-prefix: true 8 | custom-property-no-missing-var-function: true 9 | declaration-block-no-shorthand-property-overrides: true 10 | declaration-property-value-keyword-no-deprecated: 11 | - true 12 | - ignoreKeywords: 13 | - 'break-word' 14 | declaration-property-value-no-unknown: 15 | - true 16 | - propertiesSyntax: 17 | '-ms-grid-row-align': 'flex-start' 18 | font-family-no-duplicate-names: true 19 | font-family-no-missing-generic-family-keyword: 20 | - true 21 | - ignoreFontFamilies: 22 | - 'a' 23 | keyframe-block-no-duplicate-selectors: true 24 | media-feature-name-no-unknown: true 25 | media-feature-name-value-no-unknown: true 26 | media-query-no-invalid: true 27 | named-grid-areas-no-invalid: true 28 | no-invalid-double-slash-comments: true 29 | no-invalid-position-at-import-rule: true 30 | no-irregular-whitespace: true 31 | property-no-unknown: true 32 | selector-anb-no-unmatchable: true 33 | selector-pseudo-class-no-unknown: true 34 | selector-pseudo-element-no-unknown: true 35 | syntax-string-no-invalid: true 36 | media-feature-name-no-vendor-prefix: true 37 | declaration-property-value-disallowed-list: 38 | # Matching all custom properties 39 | /^--.*/: 40 | # Disallow any value starting with a $ - SCSS variable. 41 | - '/^\$.*$/' 42 | selector-no-vendor-prefix: 43 | - true 44 | - ignoreSelectors: 45 | - '::-moz-selection' 46 | -------------------------------------------------------------------------------- /.stylelintrc.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - '@oroinc/oro-stylelint-config' 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Please check the release notes at [GitHub](https://github.com/oroinc/platform-application/releases) for the list of new features and changes to the existing features of OroPlatform application. 2 | 3 | The CHANGELOG.md files of the individual packages comprising this application describe significant changes in the code that may affect the upgrade of your customizations. 4 | 5 | You can use the following command to find all CHANGELOG.md files in Oro packages: 6 | ```bash 7 | find -L vendor/oro -maxdepth 2 -type f -name CHANGELOG.md 8 | ``` 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2024 Oro Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | OroPlatform Application 2 | ======================= 3 | 4 | What Is Included? 5 | -------------------- 6 | 7 | This sample application includes OroPlatform Community Edition without eCommerce/CRM/marketplace modules. 8 | 9 | Other application distributions: 10 | * orocommerce-enterprise-application - OroCommerce Enterprise Edition 11 | * orocommerce-enterprise-nocrm-application - OroCommerce Enterprise Edition, without CRM modules 12 | * orocommerce-platform-application - OroCommerce Enterprise Edition, with additional marketplace modules 13 | * orocommerce-application - OroCommerce Community Edition 14 | 15 | 16 | * orocommerce-application-de - German-localized version of OroCommerce Community Edition 17 | * orocommerce-enterprise-application-de - German-localized version of OroCommerce Enterprise Edition 18 | 19 | 20 | * crm-application - OroCRM Community Edition, without eCommerce/marketplace modules 21 | * crm-enterprise-application - OroCRM Enterprise Edition, without eCommerce/marketplace modules 22 | * oromarketplace-application - legacy version (4.2 compatible) of OroCommerce Enterprise Edition with additional marketplace modules 23 | 24 | What is OroPlatform? 25 | -------------------- 26 | 27 | OroPlatform is a business application process management system that is a backbone of the OroCRM and OroCommerce. 28 | 29 | OroCommerce is an open-source Business to Business Commerce application built with flexibility in mind. It can be customized and extended to fit any B2B commerce needs. 30 | You can find out more about OroCommerce at [www.orocommerce.com](https://www.orocommerce.com/). 31 | 32 | OroCRM is an open-source customer relationship Management application built with flexibility in mind. It can be customized and extended to fit any business needs. 33 | You can find out more about OroCRM at [www.orocrm.com](https://www.orocrm.com/). 34 | 35 | This OroPlatform application is an example of a fully functional application created with [OroPlatform](https://github.com/oroinc/platform). It can be used as a blueprint for custom business application development. 36 | 37 | System Requirements 38 | ------------------- 39 | 40 | Please see the OroCRM online documentation for the complete list of [system requirements](https://doc.oroinc.com/backend/setup/system-requirements/). 41 | 42 | Installation 43 | ------------ 44 | 45 | Please see the online [OroCRM Installation Guide](https://doc.oroinc.com/backend/setup/dev-environment/manual-installation/crm-ce/) for the detailed installation steps. 46 | 47 | Resources 48 | --------- 49 | 50 | * [OroPlatform Documentation](https://doc.oroinc.com) 51 | * [Contributing](https://doc.oroinc.com/community/contribute/) 52 | 53 | License 54 | ------- 55 | 56 | [MIT][1] Copyright (c) 2024 Oro Inc. 57 | 58 | [1]: LICENSE 59 | -------------------------------------------------------------------------------- /UPGRADE.md: -------------------------------------------------------------------------------- 1 | The upgrade instructions are available at [Oro documentation website](https://doc.oroinc.com/master/backend/setup/upgrade-to-new-version/). 2 | 3 | This file includes only the most important items that should be addressed before attempting to upgrade or during the upgrade of a vanilla Oro application. 4 | 5 | Please also refer to [CHANGELOG.md](CHANGELOG.md) for a list of significant changes in the code that may affect the upgrade of some customizations. 6 | 7 | ### 5.1.0 RC 8 | 9 | Added `.env-app` files support and removed most of the parameters from the config/parameters.yml in favor of environment variables with DSNs. For more details, see [the migration guide](https://doc.oroinc.com/master/backend/setup/dev-environment/env-vars/). 10 | 11 | * The supported PHP version is 8.2 12 | * The supported PostgreSQL version is 15 13 | * The supported NodeJS version is 18 14 | * The supported Redis version is 7 15 | * The supported RabbitMQ version is 3.11 16 | * The supported PHP MongoDB extension version is 1.15 17 | * The supported MongoDB version is 6.0 18 | 19 | ## 5.0.0 20 | 21 | The `oro.email.update_visibilities_for_organization` MQ process can take a long time when updating from the old versions 22 | if the system has many email addresses (in User, Customer user, Lead, Contact, RFP request, Mailbox entities). 23 | During performance tests with 1M of email addresses, this process took approximately 10 minutes. 24 | 25 | It is recommended to add these MQ topics to the `oro.index` queue: 26 | 27 | - `oro.email.recalculate_email_visibility` 28 | - `oro.email.update_visibilities` 29 | - `oro.email.update_visibilities_for_organization` 30 | - `oro.email.update_email_visibilities_for_organization` 31 | - `oro.email.update_email_visibilities_for_organization_chunk` 32 | 33 | ## 5.0.0-rc 34 | 35 | The supported NodeJS version is 16.0 36 | 37 | ## 5.0.0-alpha.2 38 | 39 | The minimum required PHP version is 8.0.0. 40 | 41 | ## 4.2.0 42 | 43 | * The minimum required PHP version is 7.4.14. 44 | * The minimum supported MySQL version is 8.0. 45 | 46 | ### Directory structure and filesystem changes 47 | 48 | The `var/attachment` and `var/import_export` directories are no longer used for storing files and have been removed from the default directory structure. 49 | 50 | All files from these directories must be moved to the new locations: 51 | - from `var/attachment/protected_mediacache` to `var/data/protected_mediacache`; 52 | - from `var/attachment` to `var/data/attachments`; 53 | - from `var/import_export` to `var/data/importexport`; 54 | - from `var/import_export/files` to `var/data/import_files`. 55 | 56 | The console command `oro:gaufrette:migrate-filestorages` will help to migrate the files to new structure. 57 | 58 | ### Routing 59 | 60 | The regular expressions in `fos_js_routing.routes_to_expose` configuration parameter (see `config/config.yml`) have changed. 61 | 62 | ### Directory structure and filesystem changes 63 | 64 | The `var/attachment` and `var/import_export` directories are no longer used for storing files and have been removed from the default directory structure. 65 | 66 | All files from these directories must be moved to the new locations: 67 | - from `var/attachment/protected_mediacache` to `var/data/protected_mediacache`; 68 | - from `var/attachment` to `var/data/attachments`; 69 | - from `var/import_export` to `var/data/importexport`; 70 | - from `var/import_export/files` to `var/data/import_files`. 71 | 72 | The console command `oro:gaufrette:migrate-filestorages` will help to migrate the files to new structure. 73 | 74 | The `public/uploads` directory has been removed. 75 | 76 | ## 4.1.0 77 | 78 | - The minimum required PHP version is 7.3.13. 79 | - The feature toggle for WEB API was implemented. After upgrade, the API feature will be disabled. 80 | To enable it please follow the documentation [Enabling an API Feature](https://doc.oroinc.com/api/enabling-api-feature/). 81 | - Upgrade PHP before running `composer install` or `composer update`, otherwise composer may download wrong versions of the application packages. 82 | 83 | ## 3.1.0 84 | 85 | * The minimum required PHP version is 7.1.26. 86 | * `oro:assets:install` command was removed, use [`assets:install`] instead. 87 | * `oro:assetic:dump` command was removed, use [`oro:assets:build`](src/Oro/Bundle/AssetBundle/README.md) instead. 88 | * `nodejs` and `npm` are required dependencies now 89 | * `oro_entity.database_exception_helper` service was removed. Catch `Doctrine\DBAL\Exception\RetryableException` directly instead of helper usage. 90 | 91 | Upgrade PHP before running `composer install` or `composer update`, otherwise composer may download wrong versions of the application packages. 92 | 93 | ## 3.0.0 94 | * To successfuly upgrade to 3.0.0 version which uses Symfony 3 you need to replace all form alias by their respective FQCN's in entity configs and embedded forms. 95 | Use the following script to find out which values should be changed. 96 | ```bash 97 | php vendor/oro/platform/bin/oro-form-alias-checker/oro-form-alias-checker 98 | ``` 99 | 100 | ## 2.6.0 101 | 102 | * Changed minimum required php version to 7.1 103 | 104 | ## 2.3.1 105 | * A full rebuilding of the backend search index is required due to tokenizer configuration has been changed. 106 | 107 | ## 2.1.0 108 | * Changed minimum required php version to 7.0 109 | * Updated dependency to [fxpio/composer-asset-plugin](https://github.com/fxpio/composer-asset-plugin) composer plugin to version 1.3. 110 | * Composer updated to version 1.4. 111 | 112 | ``` 113 | composer self-update 114 | composer global require "fxp/composer-asset-plugin" 115 | ``` 116 | * The `oro:search:reindex` command now works synchronously by default. Use the `--scheduled` parameter if you need the old, async behaviour 117 | 118 | ## 2.0.0 119 | 120 | ### app/config/config.yml 121 | - removed `be_simple_soap` section. 122 | - removed `authentication_listener_class` parameter from `escape_wsse_authentication` section 123 | 124 | ## 1.9.0 125 | 126 | ### app/config/config.yml 127 | 128 | - Removed `doctrine` section. From now this declaration is located in `OroPlatformBundle` bundle. Remove declaration of DBAL connections and ORM entity managers from your `app/config/config.yml` to be sure that an application will work properly. 129 | - Removed unused `report_source` and `report_target` DBAL connections. 130 | - Added `config` DBAL connection and ORM entity manager. They can be used as a gateway for different kind of configuration data to improve performance of the default ORM entity manager. For example `OroEntityConfigBundle` uses them for entity configuration data. 131 | 132 | ## 1.8.0 133 | 134 | ### app/config/config.yml 135 | - Changed definition of `framework` / `templating` section. New definition is: 136 | ``` yaml 137 | framework: 138 | templating: 139 | engines: ['twig', 'php'] 140 | assets_version: %assets_version% 141 | assets_version_format: %%s?version=%%s 142 | ``` 143 | - Removed `twig` / `globals` / `ws` section. From now this declaration is located in `OroSyncBundle` bundle. 144 | - Removed `clank` section. From now this declaration is located in `OroSyncBundle` bundle. 145 | - Removed `doctrine.dbal.default.wrapped_connection` service. 146 | - Removed `session.handler.pdo` service. From now a declaration of this service is located in `OroPlatformBundle`. Remove this service from your `app/config/config.yml` to be sure that PDO session will work properly. If you need to override this service, you can keep it in your `app/config/config.yml`, but make sure that a default database connection is not used here. You can use `doctrine.dbal.session_connection.wrapped` service if sessions are stored in a main database. 147 | 148 | ### app/Resources 149 | - Removed `app/Resources/DoctrineBundle/views/Collector/db.html.twig`. 150 | - Removed `app/Resources/SecurityBundle/views/Collector/security.html.twig`. 151 | - Removed `app/Resources/SwiftmailerBundle/views/Collector/swiftmailer.html.twig`. 152 | - Removed `app/Resources/WebProfilerBundle/views/Collector/config.html.twig`. 153 | - Removed `app/Resources/WebProfilerBundle/views/Collector/logger.html.twig`. 154 | - Removed `app/Resources/WebProfilerBundle/views/Collector/memory.html.twig`. 155 | - Removed `app/Resources/WebProfilerBundle/views/Collector/request.html.twig`. 156 | - Removed `app/Resources/WebProfilerBundle/views/Collector/time.html.twig`. 157 | -------------------------------------------------------------------------------- /behat.yml.dist: -------------------------------------------------------------------------------- 1 | imports: 2 | - ./vendor/oro/platform/src/Oro/Bundle/TestFrameworkBundle/Resources/config/behat.yml.dist 3 | 4 | default: &default 5 | gherkin: 6 | filters: 7 | tags: ~@not-automated&&~@skip 8 | extensions: 9 | Behat\MinkExtension: 10 | base_url: 'http://dev-platform.local/' 11 | FriendsOfBehat\SymfonyExtension: 12 | kernel: 13 | debug: false 14 | class: AppKernel 15 | Oro\Bundle\TestFrameworkBundle\Behat\ServiceContainer\OroTestFrameworkExtension: ~ 16 | 17 | chromedriver: 18 | <<: *default 19 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | setProdEnvs(['prod', 'behat_test']) 10 | ->bootEnv(dirname(__DIR__).'/.env-app', 'prod', ['test']); 11 | EntityExtendTestInitializer::initialize(); 12 | -------------------------------------------------------------------------------- /config/config.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: parameters.yml, ignore_errors: not_found } 3 | - { resource: security.yml } 4 | - { resource: doctrine.yml } 5 | 6 | parameters: 7 | # Some parameter values are not set from environment variables because Symfony service container build 8 | # depends on them. These parameter values cannot be changed in runtime without the application cache rebuild. 9 | database_server_version: '13.7' 10 | secret: '%env(ORO_SECRET)%' 11 | database_dsn: '%env(ORO_DB_DSN)%' 12 | mailer_dsn: '%env(ORO_MAILER_DSN)%' 13 | websocket_server_dsn: '%env(ORO_WEBSOCKET_SERVER_DSN)%' # The websocket server will listen on this address and port. 14 | websocket_frontend_dsn: '%env(ORO_WEBSOCKET_FRONTEND_DSN)%' # The host, port and path for the browser to connect to. 15 | websocket_backend_dsn: '%env(ORO_WEBSOCKET_BACKEND_DSN)%' # The host, port and path for the server-side code to connect to. 16 | search_engine_dsn: '%env(ORO_SEARCH_ENGINE_DSN)%' 17 | session_handler_dsn: '%env(ORO_SESSION_DSN)%' 18 | message_queue_transport_dsn: '%env(ORO_MQ_DSN)%' 19 | liip_imagine.jpegoptim.binary: '%env(ORO_JPEGOPTIM_BINARY)%' 20 | liip_imagine.pngquant.binary: '%env(ORO_PNGQUANT_BINARY)%' 21 | tracking_data_folder: '%env(ORO_TRACKING_DATA_FOLDER)%' 22 | maintenance_lock_file_path: '%env(resolve:ORO_MAINTENANCE_LOCK_FILE_PATH)%' 23 | oauth2_public_key: '%env(resolve:ORO_OAUTH_PUBLIC_KEY_PATH)%' 24 | oauth2_private_key: '%env(resolve:ORO_OAUTH_PRIVATE_KEY_PATH)%' 25 | log_path: '%env(resolve:ORO_LOG_PATH)%' 26 | log_stacktrace_level: '%env(resolve:ORO_LOG_STACKTRACE_LEVEL)%' # The minimum log message level for which an exception stacktrace should be logged. To disable the stacktrace logging an empty string or "none" value can be used. 27 | 28 | env(ORO_SECRET): ThisTokenIsNotSoSecretChangeIt 29 | env(ORO_DB_URL): 'postgresql://root@127.0.0.1/bap_standard' 30 | env(ORO_DB_DSN): '%env(ORO_DB_URL)%' 31 | env(ORO_MAILER_DSN): 'native://default' 32 | env(ORO_SEARCH_URL): 'orm:' 33 | env(ORO_SEARCH_ENGINE_DSN): '%env(ORO_SEARCH_URL)%?prefix=oro_search' 34 | env(ORO_SESSION_DSN): 'native:' 35 | env(ORO_WEBSOCKET_SERVER_DSN): '//0.0.0.0:8080' 36 | env(ORO_WEBSOCKET_FRONTEND_DSN): '//*:8080/ws' 37 | env(ORO_WEBSOCKET_BACKEND_DSN): 'tcp://127.0.0.1:8080' 38 | env(ORO_MQ_DSN): 'dbal:' 39 | env(ORO_JPEGOPTIM_BINARY): '' 40 | env(ORO_PNGQUANT_BINARY): '' 41 | env(ORO_REDIS_URL): 'redis://127.0.0.1:6379' 42 | env(ORO_REDIS_SESSION_DSN): '%env(ORO_REDIS_URL)%/0' 43 | env(ORO_REDIS_CACHE_DSN): '%env(ORO_REDIS_URL)%/1' 44 | env(ORO_REDIS_DOCTRINE_DSN): '%env(ORO_REDIS_URL)%/2' 45 | env(ORO_TRACKING_DATA_FOLDER): null 46 | env(ORO_MAINTENANCE_LOCK_FILE_PATH): '%kernel.project_dir%/var/maintenance/maintenance_lock' 47 | env(ORO_OAUTH_PUBLIC_KEY_PATH): '%kernel.project_dir%/var/oauth_public.key' 48 | env(ORO_OAUTH_PRIVATE_KEY_PATH): '%kernel.project_dir%/var/oauth_private.key' 49 | env(ORO_LOG_PATH): "%kernel.logs_dir%/%kernel.environment%.log" 50 | env(ORO_LOG_STACKTRACE_LEVEL): 'error' 51 | 52 | framework: 53 | #esi: ~ 54 | translator: 55 | paths: 56 | - '%kernel.project_dir%/translations' 57 | fallback: en 58 | secret: "%secret%" 59 | router: 60 | resource: "%kernel.project_dir%/config/routing.yml" 61 | strict_requirements: "%kernel.debug%" 62 | form: 63 | legacy_error_messages: false 64 | csrf_protection: true 65 | validation: { enable_annotations: true } 66 | assets: 67 | version_strategy: 'Oro\Bundle\AssetBundle\VersionStrategy\BuildVersionStrategy' 68 | default_locale: en 69 | session: 70 | # More info about session cookie configuration can be found at 71 | # https://doc.oroinc.com/backend/setup/post-install/cookies-configuration/#back-office-session-cookie 72 | name: BAPID 73 | handler_id: '%session_handler%' 74 | save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%' 75 | gc_maxlifetime: 7200 #120 minutes 76 | cookie_httponly: true 77 | cookie_secure: 'auto' 78 | fragments: 79 | enabled: false 80 | path: /_fragment # used for controller action in template 81 | serializer: 82 | enabled: true 83 | mailer: 84 | transports: 85 | main: 'oro://system-config?fallback=%mailer_dsn%' 86 | oro_user_email_origin: 'oro://user-email-origin' 87 | 88 | # Twig Configuration 89 | twig: 90 | debug: "%kernel.debug%" 91 | strict_variables: "%kernel.debug%" 92 | globals: 93 | bap: 94 | layout: base.html.twig # default layout across all Oro bundles 95 | 96 | fos_js_routing: 97 | routes_to_expose: ['oro_.*'] 98 | 99 | stof_doctrine_extensions: 100 | default_locale: en 101 | translation_fallback: true 102 | orm: 103 | default: 104 | translatable: true 105 | tree: true 106 | 107 | oro_translation: 108 | locales: [en, fr] 109 | templating: "@OroUI/Form/translatable.html.twig" 110 | 111 | oro_maintenance: 112 | authorized: 113 | path: 'maintenance|.*\.js' # "maintenance" is only for demo purposes, remove in production! 114 | # ips: ["127.0.0.1"] # Optional. Authorized ip addresses 115 | driver: 116 | options: 117 | file_path: '%maintenance_lock_file_path%' 118 | 119 | # 120 | # ORO Bundles config 121 | # 122 | oro_theme: 123 | active_theme: oro 124 | 125 | oro_locale: 126 | formatting_code: en 127 | language: en 128 | 129 | oro_attachment: 130 | upload_file_mime_types: 131 | - text/csv 132 | - text/plain 133 | - application/msword 134 | - application/vnd.openxmlformats-officedocument.wordprocessingml.document 135 | - application/vnd.ms-excel 136 | - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 137 | - application/vnd.ms-powerpoint 138 | - application/vnd.openxmlformats-officedocument.presentationml.presentation 139 | - application/pdf 140 | - application/zip 141 | - image/gif 142 | - image/jpeg 143 | - image/png 144 | - image/webp 145 | upload_image_mime_types: 146 | - image/gif 147 | - image/jpeg 148 | - image/png 149 | - image/webp 150 | -------------------------------------------------------------------------------- /config/config_behat_test.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: ./../vendor/**/Tests/Behat/parameters.yml } 3 | - { resource: config_prod.yml } 4 | -------------------------------------------------------------------------------- /config/config_cloud.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config_prod.yml } 3 | 4 | parameters: 5 | env(ORO_LOG_PATH): "php://stderr" 6 | 7 | 8 | sftp_root_path: '%env(ORO_SFTP_ROOT_PATH)%' 9 | env(ORO_SFTP_ROOT_PATH): '%kernel.project_dir%/var/sftp' 10 | 11 | gaufrette_adapter.public: 'gridfs:%env(ORO_MONGODB_DSN_PUBLIC)%' 12 | gaufrette_adapter.private: 'gridfs:%env(ORO_MONGODB_DSN_PRIVATE)%' 13 | gaufrette_adapter.import_files: 'local:%env(ORO_IMPORT_EXPORT_PATH)%' 14 | env(ORO_IMPORT_EXPORT_PATH): '%kernel.project_dir%/var/data/import_files' 15 | 16 | redis_dsn_cache: '%env(ORO_REDIS_CACHE_DSN)%' 17 | redis_dsn_doctrine: '%env(ORO_REDIS_DOCTRINE_DSN)%' 18 | redis_dsn_layout: '%env(ORO_REDIS_LAYOUT_DSN)%' 19 | 20 | env(APP_RUNTIME): Oro\Bundle\DistributionBundle\Runtime\CloudRuntime 21 | -------------------------------------------------------------------------------- /config/config_dev.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | - { resource: security_dev.yml } 4 | 5 | parameters: 6 | main_log_channels: [] 7 | 8 | framework: 9 | router: { resource: "%kernel.project_dir%/config/routing_dev.yml" } 10 | profiler: { only_exceptions: false } 11 | ide: phpstorm 12 | # mailer: 13 | # envelope: 14 | # recipients: ['me@example.com'] 15 | 16 | web_profiler: 17 | toolbar: true 18 | excluded_ajax_paths: '^/((index(_[\w]+)|app(_[\w]+)?)\.php/)?(_wdt|bundles)' 19 | intercept_redirects: false 20 | 21 | monolog: 22 | handlers: 23 | main: 24 | type: stream 25 | path: "%log_path%" 26 | level: debug 27 | channels: '%main_log_channels%' # The channels configuration only works for top-level handlers 28 | 29 | oro_message_queue: 30 | client: 31 | traceable_producer: true 32 | -------------------------------------------------------------------------------- /config/config_prod.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | 4 | parameters: 5 | main_log_channels: [] 6 | 7 | doctrine: 8 | dbal: 9 | logging: true 10 | 11 | monolog: 12 | handlers: 13 | filtered: 14 | type: filter 15 | min_level: info 16 | handler: main 17 | channels: '%main_log_channels%' # The channels configuration only works for top-level handlers 18 | main: 19 | type: fingers_crossed 20 | action_level: error 21 | handler: grouped 22 | buffer_size: 100 23 | excluded_http_codes: [ 404, 405 ] 24 | grouped: 25 | type: group 26 | members: [streamed, deduplicated] 27 | 28 | streamed: 29 | type: stream 30 | path: "%log_path%" 31 | level: debug 32 | 33 | deduplicated: 34 | type: deduplication 35 | handler: symfony_mailer 36 | time: 10 37 | store: "%kernel.logs_dir%/deduplicated.log" 38 | 39 | symfony_mailer: 40 | type: symfony_mailer 41 | email_prototype: 42 | id: oro_logger.monolog.email_factory.error_log_notification 43 | method: createEmail 44 | level: debug 45 | formatter: monolog.formatter.html 46 | -------------------------------------------------------------------------------- /config/config_test.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | - { resource: security_test.yml } 4 | 5 | parameters: 6 | doctrine.dbal.connection_factory.class: 'Oro\Component\Testing\Doctrine\PersistentConnectionFactory' 7 | message_queue_transport_dsn: 'dbal:' 8 | main_log_channels: [] 9 | 10 | framework: 11 | test: ~ 12 | session: 13 | storage_factory_id: session.storage.factory.mock_file 14 | csrf_protection: true 15 | profiler: 16 | enabled: false 17 | mailer: 18 | transports: 19 | main: 'null://null' 20 | oro_user_email_origin: 'null://null' 21 | 22 | monolog: 23 | handlers: 24 | fingers_crossed: 25 | type: fingers_crossed 26 | action_level: error 27 | handler: nested 28 | excluded_http_codes: [ 404, 405 ] 29 | channels: [ "!event" ] 30 | nested: 31 | type: stream 32 | path: "%log_path%" 33 | level: debug 34 | channels: '%main_log_channels%' 35 | 36 | # configure loose default password requirements for auto-generated test users 37 | oro_user: 38 | settings: 39 | password_min_length: 40 | value: 2 41 | password_lower_case: 42 | value: false 43 | password_upper_case: 44 | value: false 45 | password_numbers: 46 | value: false 47 | password_special_chars: 48 | value: false 49 | 50 | twig: 51 | strict_variables: true 52 | debug: false 53 | 54 | oro_api: 55 | settings: 56 | web_api: 57 | value: true 58 | 59 | oro_message_queue: 60 | client: 61 | redelivery: 62 | delay_time: 1 63 | -------------------------------------------------------------------------------- /config/doctrine.yml: -------------------------------------------------------------------------------- 1 | doctrine: 2 | orm: 3 | mappings: 4 | App: 5 | is_bundle: false 6 | type: attribute 7 | dir: '%kernel.project_dir%/src/Entity' 8 | prefix: 'App\Entity' 9 | alias: App 10 | -------------------------------------------------------------------------------- /config/routing.yml: -------------------------------------------------------------------------------- 1 | oro_default: 2 | path: / 3 | defaults: 4 | _controller: Oro\Bundle\DashboardBundle\Controller\DashboardController::viewAction 5 | 6 | oro_auto_routing: 7 | resource: . 8 | type: oro_auto 9 | 10 | oro_expose: 11 | resource: . 12 | type: oro_expose 13 | -------------------------------------------------------------------------------- /config/routing_dev.yml: -------------------------------------------------------------------------------- 1 | _wdt: 2 | resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 3 | prefix: /_wdt 4 | options: 5 | expose: true 6 | 7 | _profiler: 8 | resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 9 | prefix: /_profiler 10 | options: 11 | expose: true 12 | 13 | _errors: 14 | resource: '@FrameworkBundle/Resources/config/routing/errors.xml' 15 | prefix: /_error 16 | 17 | _main: 18 | resource: routing.yml 19 | -------------------------------------------------------------------------------- /config/security.yml: -------------------------------------------------------------------------------- 1 | security: 2 | firewalls: 3 | dev: 4 | pattern: ^/(_(profiler|wdt)|css|images|js)/ 5 | security: false 6 | -------------------------------------------------------------------------------- /config/security_dev.yml: -------------------------------------------------------------------------------- 1 | oro_security: 2 | access_control: 3 | - { path: ^/(_wdt|_profiler|_error).*$, roles: PUBLIC_ACCESS } 4 | -------------------------------------------------------------------------------- /config/security_test.yml: -------------------------------------------------------------------------------- 1 | security: 2 | access_decision_manager: 3 | strategy: unanimous 4 | firewalls: 5 | main: 6 | organization-http-basic: 7 | realm: "Secured REST Area" 8 | provider: oro_user 9 | entry_point: organization_http_basic 10 | http-basic: false 11 | organization-form-login: false 12 | logout: false 13 | organization-remember-me: false 14 | -------------------------------------------------------------------------------- /dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oro/platform-application", 3 | "description": "Oro Platform Empty Application", 4 | "homepage": "https://github.com/oroinc/platform-application.git", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "Oro, Inc", 9 | "homepage": "https://oroinc.com/" 10 | } 11 | ], 12 | "autoload": { 13 | "psr-4": {"": "src/"}, 14 | "classmap": [ 15 | "src/AppKernel.php" 16 | ], 17 | "exclude-from-classmap": [ 18 | "**/Tests/" 19 | ] 20 | }, 21 | "repositories": [ 22 | { 23 | "type": "path", 24 | "url": "../../package/*" 25 | }, 26 | { 27 | "type": "composer", 28 | "url": "https://packagist.oroinc.com" 29 | } 30 | ], 31 | "require": { 32 | "php": "~8.4.0", 33 | "oro/platform": "6.1.x-dev", 34 | "oro/platform-serialised-fields": "6.1.x-dev", 35 | "oro/oauth2-server": "6.1.x-dev", 36 | "oro/calendar-bundle": "6.1.x-dev", 37 | "oro/gridfs-config": "6.1.x-dev" 38 | }, 39 | "require-dev": { 40 | "behat/behat": "~3.18.0", 41 | "behat/gherkin": "~4.11.0", 42 | "behat/mink": "~1.12.0", 43 | "friends-of-behat/mink-extension": "~v2.7.5", 44 | "behat/mink-selenium2-driver": "~1.6.0", 45 | "friends-of-behat/symfony-extension": "~2.6.0", 46 | "nelmio/alice": "~3.14.0", 47 | "theofidry/alice-data-fixtures": "~1.6.0", 48 | "phpunit/phpunit": "~9.5.27", 49 | "squizlabs/php_codesniffer": "~3.10.1", 50 | "phpmd/phpmd": "~2.15.0", 51 | "symfony/phpunit-bridge": "~6.4.0", 52 | "symfony/browser-kit": "~6.4.0", 53 | "symfony/css-selector": "~6.4.0", 54 | "symfony/debug-bundle": "~6.4.0", 55 | "symfony/dom-crawler": "~6.4.0", 56 | "symfony/stopwatch": "~6.4.0", 57 | "symfony/var-dumper": "~6.4.0", 58 | "symfony/var-exporter": "~6.4.0", 59 | "symfony/web-profiler-bundle": "~6.4.0", 60 | "friendsofphp/php-cs-fixer": "~3.57.2", 61 | "oro/twig-inspector": "1.1.*", 62 | "oro/maker": "6.1.x-dev" 63 | }, 64 | "config": { 65 | "bin-dir": "bin", 66 | "fxp-asset": { 67 | "enabled": false 68 | }, 69 | "allow-plugins": { 70 | "composer/package-versions-deprecated": true, 71 | "symfony/runtime": true, 72 | "symfony/flex": true, 73 | "php-http/discovery": false 74 | } 75 | }, 76 | "scripts": { 77 | "post-install-cmd": [ 78 | "@set-permissions", 79 | "@install-npm-assets", 80 | "@set-assets-version", 81 | "@execute-post-install-package-scripts", 82 | "@install-assets" 83 | ], 84 | "post-update-cmd": [ 85 | "@set-permissions", 86 | "@update-npm-assets", 87 | "@set-assets-version", 88 | "@execute-post-update-package-scripts", 89 | "@install-assets" 90 | ], 91 | "execute-post-install-package-scripts": [ 92 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::executePostInstallPackageScripts" 93 | ], 94 | "execute-post-update-package-scripts": [ 95 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::executePostUpdatePackageScripts" 96 | ], 97 | "set-permissions": [ 98 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setPermissions" 99 | ], 100 | "install-npm-assets": [ 101 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::installAssets" 102 | ], 103 | "update-npm-assets": [ 104 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::updateAssets" 105 | ], 106 | "set-assets-version": [ 107 | "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setAssetsVersion" 108 | ], 109 | "set-parameters": [ 110 | "Oro\\Bundle\\InstallerBundle\\Composer\\ParametersHandler::set" 111 | ], 112 | "install-assets": [ 113 | "console oro:assets:install --no-interaction --no-ansi" 114 | ], 115 | "upgrade:full": [ 116 | "@health", 117 | "@platform:update:dry-run", 118 | "@notification:start", 119 | "@global:lock", 120 | "@maintenance:lock", 121 | "@platform:update --skip-search-reindexation", 122 | "@cache", 123 | "@maintenance:unlock", 124 | "@notification:finish" 125 | ], 126 | "upgrade:full:reindex": [ 127 | "@health", 128 | "@platform:update:dry-run", 129 | "@notification:start", 130 | "@global:lock", 131 | "@maintenance:lock", 132 | "@platform:update", 133 | "@cache", 134 | "@maintenance:unlock", 135 | "@notification:finish" 136 | ], 137 | "upgrade:rolling": [ 138 | "@health", 139 | "@platform:update:dry-run", 140 | "@notification:start", 141 | "@platform:update --skip-search-reindexation", 142 | "@cache", 143 | "@notification:finish" 144 | ], 145 | "upgrade:rolling:reindex": [ 146 | "@health", 147 | "@platform:update:dry-run", 148 | "@notification:start", 149 | "@platform:update --skip-search-reindexation", 150 | "@cache", 151 | "@notification:finish" 152 | ], 153 | "upgrade:source": [ 154 | "console cache:warmup --no-interaction --no-ansi", 155 | "@health", 156 | "console oro:check-requirements --no-interaction --no-ansi", 157 | "@notification:start", 158 | "console oro:translation:update --all --no-interaction --no-ansi", 159 | "console oro:translation:load --no-interaction --no-ansi", 160 | "console oro:translation:dump --no-interaction --no-ansi", 161 | "console fos:js-routing:dump --no-interaction --no-ansi", 162 | "@notification:finish" 163 | ], 164 | "schema-update": [ 165 | "Composer\\Config::disableProcessTimeout", 166 | "console cache:warmup --no-interaction --no-ansi", 167 | "@health", 168 | "console oro:entity-extend:update --dry-run --no-interaction --no-ansi", 169 | "@global:lock", 170 | "@maintenance:lock", 171 | "console oro:entity-extend:update --no-interaction --no-ansi", 172 | "@maintenance:unlock" 173 | ], 174 | "health": [ 175 | "console monitor:health doctrine_dbal --no-interaction --no-ansi", 176 | "console monitor:health mail_transport --no-interaction --no-ansi", 177 | "console monitor:health rabbitmq_server --no-interaction --no-ansi", 178 | "console monitor:health elasticsearch --no-interaction --no-ansi", 179 | "console monitor:health redis_cache --no-interaction --no-ansi", 180 | "console monitor:health redis_doctrine_cache --no-interaction --no-ansi", 181 | "console monitor:health redis_session_storage --no-interaction --no-ansi" 182 | ], 183 | "platform:update:dry-run": [ 184 | "console oro:platform:update --timeout=0 --no-interaction --no-ansi" 185 | ], 186 | "platform:update": [ 187 | "Composer\\Config::disableProcessTimeout", 188 | "console oro:platform:update --timeout=0 --force --no-interaction --no-ansi" 189 | ], 190 | "cache": [ 191 | "console cache:clear --no-interaction --no-ansi" 192 | ], 193 | "cache:api": [ 194 | "console cache:warmup --no-interaction --no-ansi", 195 | "console oro:api:cache:clear --no-interaction --no-ansi", 196 | "console oro:api:doc:cache:clear --no-interaction --no-ansi" 197 | ], 198 | "cache:translation": [ 199 | "console cache:warmup --no-interaction --no-ansi", 200 | "console oro:translation:rebuild-cache --no-interaction --no-ansi" 201 | ], 202 | "global:lock": "touch ${ORO_GLOBAL_LOCK_FILE_PATH:-var/maintenance/global_lock}", 203 | "global:unlock": "rm -f ${ORO_GLOBAL_LOCK_FILE_PATH:-var/maintenance/global_lock}", 204 | "maintenance:lock": [ 205 | "console oro:maintenance-notification --message=Maintenance\\ start --subject=At\\ $ORO_APP_URL --no-interaction --no-ansi", 206 | "console oro:maintenance:lock --no-interaction --no-ansi" 207 | ], 208 | "maintenance:unlock": [ 209 | "console oro:maintenance:unlock --no-interaction --no-ansi", 210 | "console oro:maintenance-notification --message=Maintenance\\ finish --subject=At\\ $ORO_APP_URL --no-interaction --no-ansi" 211 | ], 212 | "notification:start": [ 213 | "console oro:maintenance-notification --message=Deploy\\ start --subject=At\\ $ORO_APP_URL --no-interaction --no-ansi" 214 | ], 215 | "notification:finish": [ 216 | "console oro:maintenance-notification --message=Deploy\\ finish --subject=At\\ $ORO_APP_URL --no-interaction --no-ansi" 217 | ] 218 | }, 219 | "minimum-stability": "dev", 220 | "prefer-stable": true, 221 | "extra": { 222 | "runtime": { 223 | "dotenv_path": ".env-app", 224 | "env_var_name": "ORO_ENV", 225 | "debug_var_name": "ORO_DEBUG", 226 | "prod_envs": ["prod", "behat_test"] 227 | }, 228 | "symfony-web-dir": "public", 229 | "symfony-var-dir": "var", 230 | "symfony-bin-dir": "bin", 231 | "symfony-tests-dir": "tests" 232 | } 233 | } 234 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | services: 3 | pgsql: 4 | image: oroinc/pgsql:13.7-1-alpine 5 | ports: ['5432'] 6 | labels: 7 | com.symfony.server.service-prefix: ORO_DB 8 | environment: 9 | POSTGRES_USER: oro_db_user 10 | POSTGRES_DB: oro_db 11 | POSTGRES_PASSWORD: oro_db_pass 12 | POSTGRES_ROOT_PASSWORD: oro_db_pass 13 | volumes: 14 | - postgres:/var/lib/postgresql/data 15 | healthcheck: 16 | test: "pg_isready -U$${POSTGRES_USER} -d$${POSTGRES_DB}" 17 | interval: 5s 18 | timeout: 30s 19 | start_period: 40s 20 | restart: on-failure 21 | redis: 22 | image: redis:6-alpine 23 | ports: ["6379"] 24 | labels: 25 | com.symfony.server.service-prefix: ORO_REDIS 26 | mailcatcher: 27 | image: schickling/mailcatcher 28 | ports: ['1025', '1080'] 29 | labels: 30 | com.symfony.server.service-prefix: ORO_MAILER 31 | volumes: 32 | postgres: {} 33 | -------------------------------------------------------------------------------- /karma.conf.js.dist: -------------------------------------------------------------------------------- 1 | /* eslint indent: ["error", 2] */ 2 | /* eslint-env node */ 3 | const fs = require('fs'); 4 | const glob = require('glob'); 5 | const path = require('path'); 6 | const args = require('minimist')(process.argv.slice(4)); 7 | 8 | const appDir = path.resolve('.'); 9 | const environment = args.env || 'dev'; 10 | const theme = args.theme || 'admin.oro'; 11 | 12 | const webpackConfig = (function() { 13 | const OroConfig = require('@oroinc/oro-webpack-config-builder'); 14 | OroConfig 15 | .enableLayoutThemes() 16 | .setPublicPath('public/') 17 | .setCachePath('var/cache'); 18 | 19 | const {resolve, module, resolveLoader} = OroConfig.getWebpackConfig()({ 20 | skipCSS: true, 21 | theme: theme, 22 | symfony: environment 23 | }, {})[0]; 24 | 25 | const rules = [...module.rules]; 26 | const index = rules.findIndex(rule => rule.loader === 'config-loader'); 27 | rules.splice(index, 1, { 28 | ...rules[index], 29 | options: { 30 | ...rules[index].options, 31 | relativeTo: appDir 32 | } 33 | }); 34 | 35 | return { 36 | resolve: { 37 | ...resolve, 38 | alias: { 39 | ...resolve.alias, 40 | 'dynamic-imports$': 41 | path.resolve('vendor/oro/platform/src/Oro/Bundle/TestFrameworkBundle/Karma/dynamic-imports.js') 42 | }, 43 | modules: [ 44 | appDir, 45 | path.resolve('vendor/oro/platform/src/Oro/Bundle/TestFrameworkBundle/Karma'), 46 | ...resolve.modules 47 | ] 48 | }, 49 | module: { 50 | ...module, 51 | rules 52 | }, 53 | resolveLoader 54 | }; 55 | })(); 56 | 57 | const specMask = args.mask || 'vendor/oro/**/Tests/JS/**/*Spec.js'; 58 | const specFileName = args.spec || `var/cache/${environment}/${theme}/indexSpec.js`; 59 | 60 | if (!args.spec && !(args['skip-indexing'] && fs.existsSync(specFileName))) { 61 | console.log('[%o] Collecting Spec files by mask "%s"...', new Date(), specMask); 62 | const files = glob.sync(specMask, {follow: true}); 63 | console.log('[%o] Found %d Spec files', new Date(), files.length); 64 | fs.mkdirSync(path.dirname(specFileName), {recursive: true}); 65 | fs.writeFileSync(specFileName, files.map(file => `require('${file}');`).join('\n')); 66 | } 67 | console.log('[%o] Starting Karma for "%s"...', new Date(), specFileName); 68 | 69 | module.exports = function(config) { 70 | config.set({ 71 | // base path, that will be used to resolve files and exclude 72 | basePath: '', 73 | baseUrl: '/', 74 | 75 | frameworks: ['jasmine'], 76 | 77 | // list of files / patterns to load in the browser 78 | files: [ 79 | specFileName 80 | ], 81 | 82 | // list of files to exclude 83 | exclude: [], 84 | 85 | preprocessors: { 86 | '**/*Spec.js': ['webpack'] 87 | }, 88 | 89 | // use dots reporter, as travis terminal does not support escaping sequences 90 | // possible values: 'dots', 'progress' 91 | // CLI --reporters progress 92 | reporters: ['progress', /* 'coverage', */ 'junit'], 93 | 94 | junitReporter: { 95 | // will be resolved to basePath (in the same way as files/exclude patterns) 96 | outputDir: 'build/logs', 97 | outputFile: 'karma.xml', 98 | useBrowserName: false 99 | }, 100 | 101 | /* coverageReporter: { 102 | type: 'html', 103 | dir: 'build/logs/js-coverage/' 104 | }, */ 105 | 106 | // web server port 107 | // CLI --port 9876 108 | port: 9876, 109 | 110 | // enable / disable colors in the output (reporters and logs) 111 | // CLI --colors --no-colors 112 | colors: true, 113 | 114 | // level of logging 115 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 116 | // CLI --log-level debug 117 | logLevel: config.LOG_INFO, 118 | 119 | // enable / disable watching file and executing tests whenever any file changes 120 | // CLI --auto-watch --no-auto-watch 121 | autoWatch: true, 122 | 123 | // Start these browsers, currently available: 124 | // - Chrome 125 | // - ChromeCanary 126 | // - Firefox 127 | // - Opera 128 | // - Safari (only Mac) 129 | // - IE (only Windows) 130 | // CLI --browsers Chrome,Firefox,Safari 131 | // browsers: [process.env.TRAVIS ? 'Firefox' : 'Chrome'], 132 | browsers: ['ChromeHeadless'], 133 | // browsers: ['Chrome'], 134 | // browsers: ['Firefox'], 135 | 136 | // If browser does not capture in given timeout [ms], kill it 137 | // CLI --capture-timeout 5000 138 | captureTimeout: 20000, 139 | 140 | // Auto run tests on start (when browsers are captured) and exit 141 | // CLI --single-run --no-single-run 142 | singleRun: false, 143 | 144 | // report which specs are slower than 500ms 145 | // CLI --report-slower-than 500 146 | reportSlowerThan: 500, 147 | 148 | // Concurrency level 149 | // how many browser should be started simultaneous 150 | concurrency: Infinity, 151 | 152 | plugins: [ 153 | 'karma-webpack', 154 | 'karma-jasmine', 155 | 'karma-junit-reporter', 156 | 'karma-firefox-launcher', 157 | 'karma-chrome-launcher' 158 | ], 159 | 160 | webpack: { 161 | ...webpackConfig, 162 | devtool: false, 163 | mode: 'none', 164 | optimization: { 165 | moduleIds: 'named' 166 | } 167 | }, 168 | webpackMiddleware: { 169 | // turn off webpack bash output when running the tests 170 | noInfo: true, 171 | stats: 'errors-only' 172 | } 173 | }); 174 | }; 175 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "THE FILE IS GENERATED PROGRAMMATICALLY, ALL MANUAL CHANGES IN DEPENDENCIES SECTION WILL BE LOST", 3 | "homepage": "https://doc.oroinc.com/master/frontend/javascript/composer-js-dependencies/", 4 | "main": "webpack.config.js", 5 | "engines": { 6 | "npm": ">=10.8.3 <11", 7 | "node": ">=v22.9.0 <23" 8 | }, 9 | "scripts": { 10 | "webpack": "check-engine && webpack", 11 | "build": "npm run webpack -- --mode=production", 12 | "watch": "npm run webpack -- -w --progress --stats-logging warn --stats-logging-debug sass-loader", 13 | "build-css": "npm run webpack -- --stats-logging warn --stats-logging-debug sass-loader --env skipJS", 14 | "build-js": "npm run webpack -- --stats-logging warn --env skipCSS", 15 | "lint": "echo 'Configure own command on a base of following template `npm run eslint vendor/%name% && npm run stylelint vendor/%name%/**/**.{css,scss}`'", 16 | "lint-oro": "npm run eslint-oro && npm run stylelint-oro", 17 | "eslint": "check-engine && eslint -c .eslintrc.yml --ignore-path .eslintignore", 18 | "eslint-oro": "npm run eslint vendor/oro", 19 | "stylelint": "check-engine && stylelint --config .stylelintrc.yml --ignore-path .stylelintignore", 20 | "stylelint-oro": "npm run stylelint vendor/oro/**/*.{css,scss}", 21 | "test": "npm run test-watch -- --single-run", 22 | "test-watch": "check-engine && karma start karma.conf.js.dist", 23 | "validate-css": "stylelint --config .stylelintrc-css.yml --ignore-path .stylelintignore-css public/build/**/*.css" 24 | }, 25 | "dependencies": { 26 | "@babel/runtime": "^7.16.3", 27 | "@codemirror/view": "6.34.2", 28 | "@lezer/generator": "^1.3.0", 29 | "@lezer/lezer": "^1.1.2", 30 | "@oroinc/autobahnjs": "0.8.0", 31 | "@oroinc/backbone.pageable": "1.2.3-oro2", 32 | "@oroinc/bootstrap": "4.3.1-oro2", 33 | "@oroinc/font-awesome": "4.7.0-oro2", 34 | "@oroinc/jquery-ajax-queue": "0.0.1", 35 | "@oroinc/jquery.nicescroll": "3.6.6", 36 | "@oroinc/jquery.uniform": "4.3.*", 37 | "@oroinc/jsplumb": "1.7.*", 38 | "@oroinc/select2": "3.4.1", 39 | "@oroinc/slick-carousel": "1.7.1-oro3", 40 | "asap": "2.0.6", 41 | "autolinker": "4.0.0", 42 | "backbone": "1.4.*", 43 | "backgrid": "0.3.8", 44 | "Base64": "1.1.0", 45 | "bean": "1.0.15", 46 | "codemirror6": "npm:codemirror@^6.0.1", 47 | "colors": "1.4.0", 48 | "core-js": "^3.25.*", 49 | "crypto-js": "4.2.0", 50 | "datepair.js": "0.4.*", 51 | "flotr2": "0.1.0", 52 | "focus-visible": "5.2.0", 53 | "fullcalendar": "3.4.0", 54 | "fuse.js": "6.6.2", 55 | "jquery": "3.7.*", 56 | "jquery-form": "4.3.0", 57 | "jquery-mousewheel": "3.1.13", 58 | "jquery-ui": "1.13.*", 59 | "jquery-ui-multiselect-widget": "2.0.1", 60 | "jquery-validation": "1.19.5", 61 | "jquery.cookie": "1.4.1", 62 | "jstree": "3.3.12", 63 | "moment": "2.29.*", 64 | "moment-timezone": "0.5.*", 65 | "numeral": "2.0.6", 66 | "overlayscrollbars": "1.13.*", 67 | "popper.js": "1.16.1", 68 | "scriptjs": "2.5.9", 69 | "timepicker": "1.14.0", 70 | "tinymce": "6.8.5", 71 | "underscore": "1.13.*", 72 | "when": "3.7.8", 73 | "xregexp": "^5.1.0" 74 | }, 75 | "devDependencies": { 76 | "@oroinc/oro-stylelint-config": "6.1.0-lts001", 77 | "@oroinc/oro-webpack-config-builder": "6.1.0-lts08", 78 | "check-engine": "^1.10.1", 79 | "eslint": "^8.32.0", 80 | "eslint-config-google": "~0.14.0", 81 | "eslint-plugin-oro": "~0.0.3", 82 | "eslint-plugin-no-jquery": "~3.0.*", 83 | "jasmine-core": "~4.5.0", 84 | "jasmine-jquery": "~2.1.1", 85 | "karma": "~6.4.1", 86 | "karma-chrome-launcher": "~3.1.0", 87 | "karma-firefox-launcher": "~2.1.2", 88 | "karma-jasmine": "~5.1.0", 89 | "karma-junit-reporter": "~2.0.1", 90 | "karma-webpack": "~5.0.0" 91 | }, 92 | "private": true 93 | } 94 | -------------------------------------------------------------------------------- /pdepend.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | memory 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /php.ini: -------------------------------------------------------------------------------- 1 | memory_limit=${PHP_MEMORY_LIMIT:-1G} 2 | max_execution_time=${PHP_MAX_EXECUTION_TIME:-60} 3 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 26 | 27 | 28 | 29 | dist 30 | install 31 | segfault 32 | demo-fixtures 33 | 34 | 35 | 36 | 37 | vendor/oro/*/Tests/Unit 38 | vendor/oro/*/*/Tests/Unit 39 | vendor/oro/*/*/*/Tests/Unit 40 | vendor/oro/*/*/*/*/Tests/Unit 41 | vendor/oro/*/*/*/*/*/Tests/Unit 42 | 43 | 44 | vendor/oro/*/Tests/Functional 45 | vendor/oro/*/*/Tests/Functional 46 | vendor/oro/*/*/*/Tests/Functional 47 | vendor/oro/*/*/*/*/Tests/Functional 48 | vendor/oro/*/*/*/*/*/Tests/Functional 49 | 50 | 51 | vendor/oro/*/Tests/Selenium 52 | vendor/oro/*/*/Tests/Selenium 53 | vendor/oro/*/*/*/Tests/Selenium 54 | vendor/oro/*/*/*/*/Tests/Selenium 55 | vendor/oro/*/*/*/*/*/Tests/Selenium 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | vendor/oro 73 | 74 | 75 | vendor/oro/*/Command 76 | vendor/oro/*/*/Command 77 | vendor/oro/*/*/*/Command 78 | vendor/oro/*/*/*/*/Command 79 | vendor/oro/*/*/*/*/*/Command 80 | 81 | vendor/oro/*/Controller 82 | vendor/oro/*/*/Controller 83 | vendor/oro/*/*/*/Controller 84 | vendor/oro/*/*/*/*/Controller 85 | vendor/oro/*/*/*/*/*/Controller 86 | 87 | vendor/oro/*/Entity/Repository 88 | vendor/oro/*/*/Entity/Repository 89 | vendor/oro/*/*/*/Entity/Repository 90 | vendor/oro/*/*/*/*/Entity/Repository 91 | vendor/oro/*/*/*/*/*/Entity/Repository 92 | 93 | vendor/oro/*/Migrations 94 | vendor/oro/*/*/Migrations 95 | vendor/oro/*/*/*/Migrations 96 | vendor/oro/*/*/*/*/Migrations 97 | vendor/oro/*/*/*/*/*/Migrations 98 | 99 | vendor/oro/*/Tests 100 | vendor/oro/*/*/Tests 101 | vendor/oro/*/*/*/Tests 102 | vendor/oro/*/*/*/*/Tests 103 | vendor/oro/*/*/*/*/*/Tests 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | # Maintenance mode rewrites # 5 | RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f 6 | RewriteCond %{DOCUMENT_ROOT}/../app/cache/maintenance_lock -f 7 | RewriteCond %{SCRIPT_FILENAME} !maintenance.html 8 | RewriteRule ^.*$ /maintenance.html [R=503,L] 9 | ErrorDocument 503 /maintenance.html 10 | 11 | RewriteCond %{REQUEST_FILENAME} !-f 12 | RewriteRule ^(.*)$ index.php [QSA,L] 13 | 14 | RewriteCond %{HTTP:Authorization} ^(.*) 15 | RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] 16 | 17 | 18 | 19 | AddOutputFilterByType DEFLATE text/html text/plain 20 | AddOutputFilterByType DEFLATE text/css 21 | AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript 22 | AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml 23 | AddOutputFilterByType DEFLATE image/x-icon 24 | AddOutputFilterByType DEFLATE image/svg+xml 25 | AddOutputFilterByType DEFLATE application/rss+xml 26 | AddOutputFilterByType DEFLATE application/x-font application/x-font-truetype application/x-font-ttf application/x-font-otf application/x-font-opentype application/vnd.ms-fontobject font/ttf font/otf font/opentype 27 | BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 28 | 29 | 30 | 31 | # One week for css and js 32 | 33 | Header set Cache-Control "max-age=604800, public" 34 | 35 | 36 | # Three weeks for images, fonts, icons, video, audio etc. 37 | 38 | Header set Cache-Control "max-age=1814400, public" 39 | 40 | 41 | -------------------------------------------------------------------------------- /public/bundles/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/public/bundles/.gitkeep -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/public/favicon.ico -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | new AppKernel('dev', true); 25 | -------------------------------------------------------------------------------- /public/js/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/public/js/.gitkeep -------------------------------------------------------------------------------- /public/maintenance.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Down For Maintenance 5 | 6 | 10 | 11 | 12 |

Down For Maintenance

13 |

Sorry for the inconvenience, but we’re performing a maintenance at the moment.

14 |

We’ll be back online shortly!

15 | 16 | 17 | -------------------------------------------------------------------------------- /public/media/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/public/media/.gitkeep -------------------------------------------------------------------------------- /public/notinstalled.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The application is not installed 5 | 6 | 10 | 11 | 12 |

The application is not installed.

13 |

Please, follow the installation guidance provided here: https://doc.oroinc.com/backend/setup/installation/

14 | 15 | 16 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * 5 | -------------------------------------------------------------------------------- /src/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /src/AppKernel.php: -------------------------------------------------------------------------------- 1 | isDebug()) { 22 | ini_set('memory_limit', -1); 23 | ini_set('max_execution_time', 0); 24 | } 25 | 26 | if ('dev' === $this->getEnvironment()) { 27 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 28 | if (class_exists('Oro\TwigInspector\Bundle\OroTwigInspectorBundle')) { 29 | $bundles[] = new Oro\TwigInspector\Bundle\OroTwigInspectorBundle(); 30 | } 31 | } 32 | 33 | if ('test' === $this->getEnvironment()) { 34 | $bundles[] = new Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle(); 35 | $bundles[] = new Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle(); 36 | $bundles[] = new Oro\Bundle\TestFrameworkBundle\OroTestFrameworkBundle(); 37 | } 38 | 39 | return array_merge(parent::registerBundles(), $bundles); 40 | } 41 | 42 | #[\Override] 43 | public function registerContainerConfiguration(LoaderInterface $loader) 44 | { 45 | $loader->load(function (ContainerBuilder $container) { 46 | $container->setParameter('container.dumper.inline_class_loader', true); 47 | $container->addObjectResource($this); 48 | }); 49 | 50 | $loader->load(__DIR__.'/../config/config_'.$this->getEnvironment().'.yml'); 51 | } 52 | 53 | #[\Override] 54 | public function getCacheDir(): string 55 | { 56 | return dirname(__DIR__).'/var/cache/'.$this->environment; 57 | } 58 | 59 | #[\Override] 60 | public function getLogDir(): string 61 | { 62 | return dirname(__DIR__).'/var/logs'; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/Entity/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/src/Entity/.gitkeep -------------------------------------------------------------------------------- /templates/base.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "@OroUI/Default/index.html.twig" %} 2 | 3 | {% block head_script %} 4 | {{ parent() }} 5 | {% endblock %} 6 | 7 | {% block head_style %} 8 | {{ parent() }} 9 | {% endblock %} 10 | 11 | {% block main %} 12 | {{ parent() }} 13 | {{ oro_windows_restore() }} 14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /templates/bundles/TwigBundle/Exception/error.html.twig: -------------------------------------------------------------------------------- 1 | {% extends '@OroUI/Default/error.html.twig' %} 2 | -------------------------------------------------------------------------------- /translations/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/translations/.gitkeep -------------------------------------------------------------------------------- /var/cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/var/cache/.gitkeep -------------------------------------------------------------------------------- /var/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /var/logs/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/var/logs/.gitkeep -------------------------------------------------------------------------------- /var/maintenance/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/var/maintenance/.gitkeep -------------------------------------------------------------------------------- /var/sessions/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oroinc/platform-application/9a662841269a64f72c445e6ab5f05ab6c0e9bb4b/var/sessions/.gitkeep -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const OroConfig = require('@oroinc/oro-webpack-config-builder'); 2 | 3 | OroConfig 4 | .setPublicPath('public/') 5 | .setCachePath('var/cache'); 6 | 7 | module.exports = OroConfig.getWebpackConfig(); 8 | --------------------------------------------------------------------------------