From 87ea86865b5ef1b35d89dfd69a19c1f7691fd441 Mon Sep 17 00:00:00 2001 From: juskora Date: Mon, 18 Sep 2023 10:50:16 +0200 Subject: [PATCH 1/6] Added create bundle --- docs/administration/img/bundle_generator.png | Bin 0 -> 30219 bytes .../img/sys_info_composer_tab.png | Bin 0 -> 75198 bytes .../packages_and_bundles/create_bundle.md | 316 ++++++++++++++++++ .../packages_and_bundles/install_package.md | 74 ++++ .../package_structure.md | 66 +++- .../packages_and_bundles/upload_packagist.md | 29 ++ mkdocs.yml | 7 +- 7 files changed, 473 insertions(+), 19 deletions(-) create mode 100644 docs/administration/img/bundle_generator.png create mode 100644 docs/administration/img/sys_info_composer_tab.png create mode 100644 docs/administration/project_organization/packages_and_bundles/create_bundle.md create mode 100644 docs/administration/project_organization/packages_and_bundles/install_package.md rename docs/{resources/contributing => administration/project_organization/packages_and_bundles}/package_structure.md (64%) create mode 100644 docs/administration/project_organization/packages_and_bundles/upload_packagist.md diff --git a/docs/administration/img/bundle_generator.png b/docs/administration/img/bundle_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..cf196a4d7ceb2ca58b3746d04b3438896c96290a GIT binary patch literal 30219 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 A^8f$< literal 0 HcmV?d00001 diff --git a/docs/administration/img/sys_info_composer_tab.png b/docs/administration/img/sys_info_composer_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..d007c963323e96ac66cfe0b67ab44a76ce92ffaa GIT binary patch literal 75198 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 literal 0 HcmV?d00001 diff --git a/docs/administration/project_organization/packages_and_bundles/create_bundle.md b/docs/administration/project_organization/packages_and_bundles/create_bundle.md new file mode 100644 index 0000000000..a3e46d9a0d --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/create_bundle.md @@ -0,0 +1,316 @@ +--- +description: All code contributions to Ibexa DXP must follow package and bundle structure and namespace standards. +--- + +# Create bundle + +The following section explains the whole process from creating a bundle from scratch to uploading it on the [packagist.org](https://packagist.org/) website. + +A bundle is modular structure that contain related functionality and can be integrated into an application. +[Follows specific strucutre](package_structure.md/#package-and-bundle-structure-and-namespaces). + +The bundle extension described here is called `AcmeCurrencyExchangeRate` and enables a new page block which displays a currency exchange rate on your site. + +You can create a bundle skeleton in two simplified ways: + +- [using Ibexa bundle generator](#create-bundle-with-bundle-generator) +- [with GitHub template](#use-github-template) + +## Create bundle with bundle-generator + +[[= product_name_base =]] bundle generator is a Symfony Bundle generator for projects based on [[= product_name =]]. +It can work as a standalone application mode. +This section thoroughly explains how to create a bundle using generator as a stand-alone application. +You can use this skeleton as a basis for your extension project. +It's the easiest and recommended way. + +1\. Go to [Ibexa bundle generator](https://github.com/ibexa/bundle-generator){:target="\_blank"} and clone the repository. + +```bash +git clone git@github.com:ibexa/bundle-generator.git +``` +2\. Change to bundle generator directory. + +```bash +cd bundle-generator +``` + +3\. Install dependencies: + +```bash +composer install +``` + +4\. Run bundle generator: + +```bash +php bin/ibexa-bundle-generator currency-exchange-rate --skeleton-name=extension +``` + +5\. Adjust the bundle to your needs providing the following parameters. + The command runs with an interactive mode. + +- Package vendor name - acme +- Bundle vendor namespace - Acme +- Bundle name - CurrencyExchangeRate +- Skeleton name - acme-ee + +![Bundle generator](bundle_generator.png) + +This creates a bundle files structure in the  `./target` directory. + +You can rename the target directory according to your needs. + +Or you can use a command with all available options: + + +```bash +php bin/ibexa-bundle-generator currency-exchange-rate currency-exchange-rate-dir  --vendor-name=acme --vendor-namespace=ACME --bundle-name=CurrencyExchangeRate  --skeleton-name=extension +``` + +## Use GitHub template + +https://github.com/ibexa/bundle-template + +Directory structure for AcmeCurrencyExchangeRate +podac url +button use template + + + + +Once the repository is created, a workflow starts which generates a bundle structure. +- Vendor namespace is generated from the orgnization name: github/github user name. +Package and bundle name inherits from repository name. + + + +### Bundle directory structure + +Generated bundle consists of the following structure: + +``` +. +├── LICENSE +├── README.md +├── composer.json +├── deptrac.yaml +├── package.json +├── phpstan.neon +├── phpunit.xml.dist +├── src +│   ├── bundle +│   │   ├── AcmeCurrencyExchangeRateBundle.php +│   │   ├── DependencyInjection +│   │   │   └── AcmeCurrencyExchangeRateExtension.php +│   │   └── Resources +│   │   ├── config +│   │   │   ├── prepend.yaml +│   │   │   ├── services +│   │   │   └── services.yaml +│   │   └── views +│   │   └── themes +│   │   ├── admin +│   │   └── standard +│   ├── contracts +│   └── lib +└── tests + ├── bundle + ├── integration + └── lib +``` +Where: + + +- LICENSE - a license file, GPL v2 by default +- README.md - a readme file with bundle description, its version and install instructions +- `composer.json` - a package definition +- `deptrac.yaml` - a tool for static code analysis for PHP, checks the coherence of package architecture, for more information see [deptrac](https://qossmic.github.io/deptrac/) documentation. +- `package.json` - frontend dependencies, for more information, see [about packages and modules](https://docs.npmjs.com/about-packages-and-modules). +- `phpstan.neon` - phpstan configuration, a tool for static code analysis for PHP, scans, and evaluates codebase to find errors, and bugs, for more information, see the [documentation](https://phpstan.org/user-guide/getting-started). +- `phpunit.xml.dist` - config for phpunit, unit and integration tests - see [documentation](https://phpunit.de/getting-started/phpunit-10.html). +- src and tests follow the base catalog structure, according to [package structure](https://phpunit.de/getting-started/phpunit-10.html) docs. + + +To fully use the possibilities of the bundle, get familiar with the structure: + +- `resources/` + - `config/` - contains configuration for the environment/ governs budle configuration + - `services/` - recommended place for services definition files +     all services definitions must be split into separate files + - `prepend.yaml` - houses additional configuration for other extensions + - `views/` - handles the [design engine](../../../templating/design_engine/design_engine.md) +- `tests` - contains all tests for the bundle. For more information, see [continuous integration](#continuous-integration). + +### Add the dependencies to the composer.json + +1. In composer.json add the Page Builder depency to be able to create a page block. + +```json hl_lines="156" + "require": { + "php": "^7.4 || ^8.0", + "ibexa/core": "^4.5", + "ibexa/page-builder": "^4.5", + "symfony/config": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/event-dispatcher-contracts": "^2.2", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/yaml": "^5.4", + "http-interop/http-factory-guzzle": "^1.2" + }, +``` +2. Run the following command: + +```bash + composer update +``` + +```json +  "scripts-descriptions": { +    "fix-cs": "Automatically fixes code style in all files", +    "check-cs": "Run code style checker for all files", +    "test": "Run automatic tests", +    "phpstan": "Run static code analysis", +    "deptrac": "Run Deptrac architecture testing" +  }, +``` + +- `composer.json` - defines your project requirements, contains the following sections: + + - `php-cs-fixer` - defines method of verifying/checking code style, by default as internal package `for Ibexa style` + - `eslintrc` - a tool for static code analysis for JavaScript + + +For more information, see [bundles](../../../administration/project_organization/bundles.md) documentation. + + +### Create class + +!!! note + + Make sure you follow naming convention to ensure clarity. + +In the `/src` create a ACMECurrencyExchangeRateBundle class: + + +```php +var fm = "{{ base_currency }}"; +var to = "BTC,AUD,GBP,EUR,CNY,JPY,RUB"; +var tz = "timezone"; +var sz = "1x349"; +var lg = "en";var st = "primary"; +var cd = 0; +var am = {{ amount }} +

+``` + +### Continuous integration + +Before releasing the newly created bundle: +run php cs fixer +run unit tests + +[GitHub actions](https://docs.github.com/en/actions) + +To ensure delivery of working code, use CI/CD pipeline right from the GitHub repository. + +Best practices for testing your bundle encompas:: + +- supported Symfony versions +- supported PHP versions + + +### Continuous development + + +## License and readme + +Choose license type, modify readme doc. \ No newline at end of file diff --git a/docs/administration/project_organization/packages_and_bundles/install_package.md b/docs/administration/project_organization/packages_and_bundles/install_package.md new file mode 100644 index 0000000000..f13480cb4c --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/install_package.md @@ -0,0 +1,74 @@ +# Install bundle +  + + +## Add repository to composer + +To be able to install the bundle to your [[= product_name_base =]] project, first, update the requirements. + + +```json + "require": { + "php": ">=7.4", + "ext-ctype": "*", + "ext-iconv": "*", + "acme/video-editor": "dev-master", + "ibexa/commerce": "4.6.x-dev", + "ibexa/connector-seenthis": "^4.6@dev", +``` + + +Next, add the repository to the `composer.json`: + +```json hl_lines="17" + "repositories": { + "ibexa": { + "type": "composer", + "url": "https://updates.ibexa.co" + }, + "acme/currency-exchange-rate":{ + "type": "vcs", + "url": "file:///Users/justyna.koralewicz/example-3rd-party-extension" + } + } +``` + + +On your [[= product_name_base =]] root project run: +  +```bash +composer require acme/currency-exchange-rate:dev-master +``` + +!!! note + + If your application uses Symfony Flex, the bundle is registered automatically after you install it. + + +Check whether the bundle is enabled, if not, you must enable it per environment in the `config/bundles.php` file: + + +```php +return [ +    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], +    ... +    Ibexa\Bundle\TestFixtures\IbexaTestFixturesBundle::class => ['all' => true], +    ACME\Bundle\CurrencyExchangeRate\ACMECurrencyExchangeRateBundle::class => ['all' => true], +]; +``` + + +Next, clear the cache by runnig the following command: + +```bash +php bin/console cache:clear +``` + +The newly installed bundle should be visible in the **Composer** tab in **Admin** -> **System information**. + +![Installed bundles](sys_info_composer_tab.png) + + +## Add currency exchange page block + + diff --git a/docs/resources/contributing/package_structure.md b/docs/administration/project_organization/packages_and_bundles/package_structure.md similarity index 64% rename from docs/resources/contributing/package_structure.md rename to docs/administration/project_organization/packages_and_bundles/package_structure.md index 30fe79ef10..626a6835f8 100644 --- a/docs/resources/contributing/package_structure.md +++ b/docs/administration/project_organization/packages_and_bundles/package_structure.md @@ -4,51 +4,64 @@ description: All code contributions to Ibexa DXP must follow package and bundle # Package and bundle structure and namespaces -If you wish to contribute to [[= product_name =]] development, -you need to adhere to the package and bundle structure and namespace standards. +Bundle allows you to extend the system by adding new services, routes, controllers, and views, and extend functionality to fully customize your [[= product_name =]] application. +If you want to contribute to [[= product_name =]] development, you need to adhere to the package and bundle structure and namespace standards. -The following conventions apply to contributions to [[= product_name_base =]] core code, not to third party packages. +All conventions described here apply to contributions to [[= product_name_base =]] core code, not to third party packages. !!! note - New code needs to follow the rules outlined here. They are being applied progressively to existing code. + + ## Root PHP namespace Define [[= product_name =]] core PHP code in a namespace with the following prefix: + + ```php namespace Ibexa; ``` A package which groups some DXP features can use an additional prefix, for example: + + ```php namespace Ibexa\Commerce; ``` + + ```php namespace Ibexa\Personalization; ``` + + ## Packages -The general package directory structure and corresponding PHP namespace mapping are: +The general package directory structure and corresponding PHP namespace mappings are: + + ``` . +-- src -| +-- bundle (`Ibexa\Bundle\`) -| +-- contracts (`Ibexa\Contracts\`) -| +-- lib (`Ibexa\`) +|   +-- bundle (`Ibexa\Bundle\`) +|   +-- contracts (`Ibexa\Contracts\`) +|   +-- lib (`Ibexa\`) +-- tests -| +-- bundle (`Ibexa\Tests\Bundle\`) -| +-- integration (`Ibexa\Tests\Integration\`) -| +-- lib (`Ibexa\Tests\`) +|   +-- bundle (`Ibexa\Tests\Bundle\`) +|   +-- integration (`Ibexa\Tests\Integration\`) +|   +-- lib (`Ibexa\Tests\`) ``` -If a package does not contain some of the described parts, you can skip those directories. +If a package doesn't contain some of the described parts, you can skip those directories. + + ### Implementation (lib) @@ -56,58 +69,76 @@ The `src/lib` directory and its corresponding `Ibexa\` namespace ar Examples: + + ```php namespace Ibexa\Search; ``` + + ```php namespace Ibexa\Commerce\Shop; ``` + + ### Bundles -The bundle class definition in the `src/bundle` directory must be: +The bundle class definition in the `src/bundle` directory must have the following pattern: + + ```php namespace Ibexa\Bundle\; - +  class Ibexa[ProductGroup]Bundle // ... ``` Examples: - ```php namespace Ibexa\Bundle\Search; - +  class IbexaSearchBundle // ... ``` + + ```php namespace Ibexa\Bundle\Commerce\Shop; - class IbexaCommerceShopBundle // ... ``` + + ### Contracts A package may introduce a namespace for contracts, to be consumed by first and third party packages and projects, which must be prefixed as: + + ```php namespace Ibexa\Contracts; ``` Examples: + + ```php namespace Ibexa\Contracts\Kernel; ``` + + ```php namespace Ibexa\Contracts\SiteFactory; ``` + + ```php namespace Ibexa\Contracts\Commerce\Shop; ``` @@ -115,5 +146,4 @@ namespace Ibexa\Contracts\Commerce\Shop; That namespace needs to be mapped to the `src/contracts` directory of a package. !!! note - Backward compatibility for interfaces and objects defined in the `Contracts` namespace is guaranteed. diff --git a/docs/administration/project_organization/packages_and_bundles/upload_packagist.md b/docs/administration/project_organization/packages_and_bundles/upload_packagist.md new file mode 100644 index 0000000000..fe2397c55e --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/upload_packagist.md @@ -0,0 +1,29 @@ +# Upload bundle to Packagist + +1\. Go to the Packagist website. Click submit. +1\. Provide the repository url to your package. + +1\. When you add a new feature, you need to create a tag. +In PHPStorm or other PHP IntelliJ editor, go to commits, Log and create a new tag. +Then a new version will be published on packagist. + +1\. Link repo with packagist. +Make sure your repository is set to public. +Each time you add a new feature to your bundle, you need to also add a new tag. +New version will be released on Packagist. + +1\. Click the **Check** button to verify the completeness of the bundle. + +In `composer.json` in the repositories + +```json + "repositories": [ + { + "type": "composer", + "url": "https://updates.ibexa.co" + } +``` + +Indicate the type for path +and url - bundle name +Any change in repository immediately affects the other bundle so you can see the changes. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 049bb4a864..85d8d554dc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -90,6 +90,11 @@ nav: - Project organization: administration/project_organization/project_organization.md - Architecture: administration/project_organization/architecture.md - Bundles: administration/project_organization/bundles.md + - Packages and bundles: + - Package structure: administration/project_organization/packages_and_bundles/package_structure.md + - Create bundle: administration/project_organization/packages_and_bundles/create_bundle.md + - Install bundle: administration/project_organization/packages_and_bundles/install_package.md + - Upload on Packagist: administration/project_organization/packages_and_bundles/upload_packagist.md - Admin panel: - Admin panel: administration/admin_panel/admin_panel.md - Users: administration/admin_panel/users_admin_panel.md @@ -755,9 +760,9 @@ nav: - Ibexa DXP PhpStorm plugin: resources/phpstorm_plugin.md - New in documentation: resources/new_in_doc.md - Contributing: + - Report and follow issues: resources/contributing/report_and_follow_issues.md - Contribute translations: resources/contributing/contribute_translations.md - - Package structure: resources/contributing/package_structure.md - Release notes: - Release notes: release_notes/release_notes.md - Ibexa DXP v4.5: release_notes/ibexa_dxp_v4.5.md From cfcadb0874bdd6a599b11a0a8835bac0fc95f39d Mon Sep 17 00:00:00 2001 From: juskora Date: Mon, 18 Sep 2023 10:50:16 +0200 Subject: [PATCH 2/6] Added create bundle --- docs/administration/img/bundle_generator.png | Bin 0 -> 30219 bytes .../img/sys_info_composer_tab.png | Bin 0 -> 75198 bytes .../packages_and_bundles/create_bundle.md | 316 ++++++++++++++++++ .../packages_and_bundles/install_package.md | 74 ++++ .../package_structure.md | 66 +++- .../packages_and_bundles/upload_packagist.md | 29 ++ mkdocs.yml | 6 +- 7 files changed, 472 insertions(+), 19 deletions(-) create mode 100644 docs/administration/img/bundle_generator.png create mode 100644 docs/administration/img/sys_info_composer_tab.png create mode 100644 docs/administration/project_organization/packages_and_bundles/create_bundle.md create mode 100644 docs/administration/project_organization/packages_and_bundles/install_package.md rename docs/{resources/contributing => administration/project_organization/packages_and_bundles}/package_structure.md (64%) create mode 100644 docs/administration/project_organization/packages_and_bundles/upload_packagist.md diff --git a/docs/administration/img/bundle_generator.png b/docs/administration/img/bundle_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..cf196a4d7ceb2ca58b3746d04b3438896c96290a GIT binary patch literal 30219 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 A^8f$< literal 0 HcmV?d00001 diff --git a/docs/administration/img/sys_info_composer_tab.png b/docs/administration/img/sys_info_composer_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..d007c963323e96ac66cfe0b67ab44a76ce92ffaa GIT binary patch literal 75198 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 literal 0 HcmV?d00001 diff --git a/docs/administration/project_organization/packages_and_bundles/create_bundle.md b/docs/administration/project_organization/packages_and_bundles/create_bundle.md new file mode 100644 index 0000000000..c15cbc98e4 --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/create_bundle.md @@ -0,0 +1,316 @@ +--- +description: All code contributions to Ibexa DXP must follow package and bundle structure and namespace standards. +--- + +# Create bundle + +The following section explains the whole process from creating a bundle from scratch to uploading it on the [packagist.org](https://packagist.org/) website. + +A bundle is modular structure that contain related functionality and can be integrated into an application. +[Follow specific strucutre](package_structure.md/#package-and-bundle-structure-and-namespaces). + +The bundle extension described here is called `AcmeCurrencyExchangeRate` and enables a new page block which displays a currency exchange rate on your site. + +You can create a bundle skeleton in two simplified ways: + +- [using Ibexa bundle generator](#create-bundle-with-bundle-generator) +- [with GitHub template](#use-github-template) + +## Create bundle with bundle-generator + +[[= product_name_base =]] bundle generator is a Symfony Bundle generator for projects based on [[= product_name =]]. +It can work as a standalone application mode. +This section thoroughly explains how to create a bundle using generator as a stand-alone application. +You can use this skeleton as a basis for your extension project. +It's the easiest and recommended way. + +1\. Go to [Ibexa bundle generator](https://github.com/ibexa/bundle-generator){:target="\_blank"} and clone the repository. + +```bash +git clone git@github.com:ibexa/bundle-generator.git +``` +2\. Change to bundle generator directory. + +```bash +cd bundle-generator +``` + +3\. Install dependencies: + +```bash +composer install +``` + +4\. Run bundle generator: + +```bash +php bin/ibexa-bundle-generator currency-exchange-rate --skeleton-name=extension +``` + +5\. Adjust the bundle to your needs providing the following parameters. + The command runs with an interactive mode. + +- Package vendor name - acme +- Bundle vendor namespace - Acme +- Bundle name - CurrencyExchangeRate +- Skeleton name - acme-ee + +![Bundle generator](bundle_generator.png) + +This creates a bundle files structure in the  `./target` directory. + +You can rename the target directory according to your needs. + +Or you can use a command with all available options: + + +```bash +php bin/ibexa-bundle-generator currency-exchange-rate currency-exchange-rate-dir  --vendor-name=acme --vendor-namespace=ACME --bundle-name=CurrencyExchangeRate  --skeleton-name=extension +``` + +## Use GitHub template + +https://github.com/ibexa/bundle-template + +Directory structure for AcmeCurrencyExchangeRate +podac url +button use template + + + + +Once the repository is created, a workflow starts which generates a bundle structure. +- Vendor namespace is generated from the orgnization name: github/github user name. +Package and bundle name inherits from repository name. + + + +### Bundle directory structure + +Generated bundle consists of the following structure: + +``` +. +├── LICENSE +├── README.md +├── composer.json +├── deptrac.yaml +├── package.json +├── phpstan.neon +├── phpunit.xml.dist +├── src +│   ├── bundle +│   │   ├── AcmeCurrencyExchangeRateBundle.php +│   │   ├── DependencyInjection +│   │   │   └── AcmeCurrencyExchangeRateExtension.php +│   │   └── Resources +│   │   ├── config +│   │   │   ├── prepend.yaml +│   │   │   ├── services +│   │   │   └── services.yaml +│   │   └── views +│   │   └── themes +│   │   ├── admin +│   │   └── standard +│   ├── contracts +│   └── lib +└── tests + ├── bundle + ├── integration + └── lib +``` +Where: + + +- LICENSE - a license file, GPL v2 by default +- README.md - a readme file with bundle description, its version and install instructions +- `composer.json` - a package definition +- `deptrac.yaml` - a tool for static code analysis for PHP, checks the coherence of package architecture, for more information see [deptrac](https://qossmic.github.io/deptrac/) documentation. +- `package.json` - frontend dependencies, for more information, see [about packages and modules](https://docs.npmjs.com/about-packages-and-modules). +- `phpstan.neon` - phpstan configuration, a tool for static code analysis for PHP, scans, and evaluates codebase to find errors, and bugs, for more information, see the [documentation](https://phpstan.org/user-guide/getting-started). +- `phpunit.xml.dist` - config for phpunit, unit and integration tests - see [documentation](https://phpunit.de/getting-started/phpunit-10.html). +- src and tests follow the base catalog structure, according to [package structure](https://phpunit.de/getting-started/phpunit-10.html) docs. + + +To fully use the possibilities of the bundle, get familiar with the structure: + +- `resources/` + - `config/` - contains configuration for the environment/ governs budle configuration + - `services/` - recommended place for services definition files +     all services definitions must be split into separate files + - `prepend.yaml` - houses additional configuration for other extensions + - `views/` - handles the [design engine](../../../templating/design_engine/design_engine.md) +- `tests` - contains all tests for the bundle. For more information, see [continuous integration](#continuous-integration). + +### Add the dependencies to the composer.json + +1. In composer.json add the Page Builder depency to be able to create a page block. + +```json hl_lines="156" + "require": { + "php": "^7.4 || ^8.0", + "ibexa/core": "^4.5", + "ibexa/page-builder": "^4.5", + "symfony/config": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/event-dispatcher-contracts": "^2.2", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/yaml": "^5.4", + "http-interop/http-factory-guzzle": "^1.2" + }, +``` +2. Run the following command: + +```bash + composer update +``` + +```json +  "scripts-descriptions": { +    "fix-cs": "Automatically fixes code style in all files", +    "check-cs": "Run code style checker for all files", +    "test": "Run automatic tests", +    "phpstan": "Run static code analysis", +    "deptrac": "Run Deptrac architecture testing" +  }, +``` + +- `composer.json` - defines your project requirements, contains the following sections: + + - `php-cs-fixer` - defines method of verifying/checking code style, by default as internal package `for Ibexa style` + - `eslintrc` - a tool for static code analysis for JavaScript + + +For more information, see [bundles](../../../administration/project_organization/bundles.md) documentation. + + +### Create class + +!!! note + + Make sure you follow naming convention to ensure clarity. + +In the `/src` create a ACMECurrencyExchangeRateBundle class: + + +```php +var fm = "{{ base_currency }}"; +var to = "BTC,AUD,GBP,EUR,CNY,JPY,RUB"; +var tz = "timezone"; +var sz = "1x349"; +var lg = "en";var st = "primary"; +var cd = 0; +var am = {{ amount }} +

+``` + +### Continuous integration + +Before releasing the newly created bundle: +run php cs fixer +run unit tests + +[GitHub actions](https://docs.github.com/en/actions) + +To ensure delivery of working code, use CI/CD pipeline right from the GitHub repository. + +Best practices for testing your bundle encompas:: + +- supported Symfony versions +- supported PHP versions + + +### Continuous development + + +## License and readme + +Choose license type, modify readme doc. \ No newline at end of file diff --git a/docs/administration/project_organization/packages_and_bundles/install_package.md b/docs/administration/project_organization/packages_and_bundles/install_package.md new file mode 100644 index 0000000000..f13480cb4c --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/install_package.md @@ -0,0 +1,74 @@ +# Install bundle +  + + +## Add repository to composer + +To be able to install the bundle to your [[= product_name_base =]] project, first, update the requirements. + + +```json + "require": { + "php": ">=7.4", + "ext-ctype": "*", + "ext-iconv": "*", + "acme/video-editor": "dev-master", + "ibexa/commerce": "4.6.x-dev", + "ibexa/connector-seenthis": "^4.6@dev", +``` + + +Next, add the repository to the `composer.json`: + +```json hl_lines="17" + "repositories": { + "ibexa": { + "type": "composer", + "url": "https://updates.ibexa.co" + }, + "acme/currency-exchange-rate":{ + "type": "vcs", + "url": "file:///Users/justyna.koralewicz/example-3rd-party-extension" + } + } +``` + + +On your [[= product_name_base =]] root project run: +  +```bash +composer require acme/currency-exchange-rate:dev-master +``` + +!!! note + + If your application uses Symfony Flex, the bundle is registered automatically after you install it. + + +Check whether the bundle is enabled, if not, you must enable it per environment in the `config/bundles.php` file: + + +```php +return [ +    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], +    ... +    Ibexa\Bundle\TestFixtures\IbexaTestFixturesBundle::class => ['all' => true], +    ACME\Bundle\CurrencyExchangeRate\ACMECurrencyExchangeRateBundle::class => ['all' => true], +]; +``` + + +Next, clear the cache by runnig the following command: + +```bash +php bin/console cache:clear +``` + +The newly installed bundle should be visible in the **Composer** tab in **Admin** -> **System information**. + +![Installed bundles](sys_info_composer_tab.png) + + +## Add currency exchange page block + + diff --git a/docs/resources/contributing/package_structure.md b/docs/administration/project_organization/packages_and_bundles/package_structure.md similarity index 64% rename from docs/resources/contributing/package_structure.md rename to docs/administration/project_organization/packages_and_bundles/package_structure.md index 30fe79ef10..626a6835f8 100644 --- a/docs/resources/contributing/package_structure.md +++ b/docs/administration/project_organization/packages_and_bundles/package_structure.md @@ -4,51 +4,64 @@ description: All code contributions to Ibexa DXP must follow package and bundle # Package and bundle structure and namespaces -If you wish to contribute to [[= product_name =]] development, -you need to adhere to the package and bundle structure and namespace standards. +Bundle allows you to extend the system by adding new services, routes, controllers, and views, and extend functionality to fully customize your [[= product_name =]] application. +If you want to contribute to [[= product_name =]] development, you need to adhere to the package and bundle structure and namespace standards. -The following conventions apply to contributions to [[= product_name_base =]] core code, not to third party packages. +All conventions described here apply to contributions to [[= product_name_base =]] core code, not to third party packages. !!! note - New code needs to follow the rules outlined here. They are being applied progressively to existing code. + + ## Root PHP namespace Define [[= product_name =]] core PHP code in a namespace with the following prefix: + + ```php namespace Ibexa; ``` A package which groups some DXP features can use an additional prefix, for example: + + ```php namespace Ibexa\Commerce; ``` + + ```php namespace Ibexa\Personalization; ``` + + ## Packages -The general package directory structure and corresponding PHP namespace mapping are: +The general package directory structure and corresponding PHP namespace mappings are: + + ``` . +-- src -| +-- bundle (`Ibexa\Bundle\`) -| +-- contracts (`Ibexa\Contracts\`) -| +-- lib (`Ibexa\`) +|   +-- bundle (`Ibexa\Bundle\`) +|   +-- contracts (`Ibexa\Contracts\`) +|   +-- lib (`Ibexa\`) +-- tests -| +-- bundle (`Ibexa\Tests\Bundle\`) -| +-- integration (`Ibexa\Tests\Integration\`) -| +-- lib (`Ibexa\Tests\`) +|   +-- bundle (`Ibexa\Tests\Bundle\`) +|   +-- integration (`Ibexa\Tests\Integration\`) +|   +-- lib (`Ibexa\Tests\`) ``` -If a package does not contain some of the described parts, you can skip those directories. +If a package doesn't contain some of the described parts, you can skip those directories. + + ### Implementation (lib) @@ -56,58 +69,76 @@ The `src/lib` directory and its corresponding `Ibexa\` namespace ar Examples: + + ```php namespace Ibexa\Search; ``` + + ```php namespace Ibexa\Commerce\Shop; ``` + + ### Bundles -The bundle class definition in the `src/bundle` directory must be: +The bundle class definition in the `src/bundle` directory must have the following pattern: + + ```php namespace Ibexa\Bundle\; - +  class Ibexa[ProductGroup]Bundle // ... ``` Examples: - ```php namespace Ibexa\Bundle\Search; - +  class IbexaSearchBundle // ... ``` + + ```php namespace Ibexa\Bundle\Commerce\Shop; - class IbexaCommerceShopBundle // ... ``` + + ### Contracts A package may introduce a namespace for contracts, to be consumed by first and third party packages and projects, which must be prefixed as: + + ```php namespace Ibexa\Contracts; ``` Examples: + + ```php namespace Ibexa\Contracts\Kernel; ``` + + ```php namespace Ibexa\Contracts\SiteFactory; ``` + + ```php namespace Ibexa\Contracts\Commerce\Shop; ``` @@ -115,5 +146,4 @@ namespace Ibexa\Contracts\Commerce\Shop; That namespace needs to be mapped to the `src/contracts` directory of a package. !!! note - Backward compatibility for interfaces and objects defined in the `Contracts` namespace is guaranteed. diff --git a/docs/administration/project_organization/packages_and_bundles/upload_packagist.md b/docs/administration/project_organization/packages_and_bundles/upload_packagist.md new file mode 100644 index 0000000000..fe2397c55e --- /dev/null +++ b/docs/administration/project_organization/packages_and_bundles/upload_packagist.md @@ -0,0 +1,29 @@ +# Upload bundle to Packagist + +1\. Go to the Packagist website. Click submit. +1\. Provide the repository url to your package. + +1\. When you add a new feature, you need to create a tag. +In PHPStorm or other PHP IntelliJ editor, go to commits, Log and create a new tag. +Then a new version will be published on packagist. + +1\. Link repo with packagist. +Make sure your repository is set to public. +Each time you add a new feature to your bundle, you need to also add a new tag. +New version will be released on Packagist. + +1\. Click the **Check** button to verify the completeness of the bundle. + +In `composer.json` in the repositories + +```json + "repositories": [ + { + "type": "composer", + "url": "https://updates.ibexa.co" + } +``` + +Indicate the type for path +and url - bundle name +Any change in repository immediately affects the other bundle so you can see the changes. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index cc3b6d5386..4548a67578 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -90,6 +90,11 @@ nav: - Project organization: administration/project_organization/project_organization.md - Architecture: administration/project_organization/architecture.md - Bundles: administration/project_organization/bundles.md + - Packages and bundles: + - Package structure: administration/project_organization/packages_and_bundles/package_structure.md + - Create bundle: administration/project_organization/packages_and_bundles/create_bundle.md + - Install bundle: administration/project_organization/packages_and_bundles/install_package.md + - Upload on Packagist: administration/project_organization/packages_and_bundles/upload_packagist.md - Admin panel: - Admin panel: administration/admin_panel/admin_panel.md - Users: administration/admin_panel/users_admin_panel.md @@ -758,7 +763,6 @@ nav: - Contributing: - Report and follow issues: resources/contributing/report_and_follow_issues.md - Contribute translations: resources/contributing/contribute_translations.md - - Package structure: resources/contributing/package_structure.md - Release notes: - Release notes: release_notes/release_notes.md - Ibexa DXP v4.5: release_notes/ibexa_dxp_v4.5.md From de176cea32c7e279d69cbc02fb43ce43ba79d9bf Mon Sep 17 00:00:00 2001 From: juskora Date: Wed, 15 Nov 2023 13:33:16 +0100 Subject: [PATCH 3/6] Added improvements --- docs/administration/img/new_tag.png | Bin 0 -> 48120 bytes docs/administration/img/packagist_submit.png | Bin 0 -> 23378 bytes .../bundle_extension/create_bundle.md | 135 ++++++------------ .../bundle_extension/install_package.md | 19 +-- .../bundle_extension/upload_packagist.md | 14 +- 5 files changed, 55 insertions(+), 113 deletions(-) create mode 100644 docs/administration/img/new_tag.png create mode 100644 docs/administration/img/packagist_submit.png diff --git a/docs/administration/img/new_tag.png b/docs/administration/img/new_tag.png new file mode 100644 index 0000000000000000000000000000000000000000..f029fe398179b2ab9dc76627f39d028c1b7cdb90 GIT binary patch literal 48120 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%0An3~g> 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 literal 0 HcmV?d00001 diff --git a/docs/administration/project_organization/bundle_extension/create_bundle.md b/docs/administration/project_organization/bundle_extension/create_bundle.md index 5d862b6898..76be7829b7 100644 --- a/docs/administration/project_organization/bundle_extension/create_bundle.md +++ b/docs/administration/project_organization/bundle_extension/create_bundle.md @@ -6,7 +6,7 @@ description: Create a bundle extension for Ibexa DXP. A bundle is a reusable [[= product_name =]] extension that can be integrated. To ensure full compatibility, follow the structure specifications described in the -[package strucutre](package_structure.md/#package-and-bundle-structure-and-namespaces) section. +[package structure](package_structure.md/#package-and-bundle-structure-and-namespaces) section. The bundle extension described here is called `AcmeCurrencyExchangeRate` and enables a new page block which displays a currency exchange rate on your site. @@ -67,7 +67,7 @@ Or you can use a command with all available options: php bin/ibexa-bundle-generator currency-exchange-rate currency-exchange-rate-dir  --vendor-name=acme --vendor-namespace=ACME --bundle-name=CurrencyExchangeRate  --skeleton-name=extension ``` -## Use GitHub template +## Create bundle with GitHub template 1\. Go to the [[= product_name_base =]] [GitHub repository](https://github.com/ibexa/bundle-template). @@ -81,11 +81,9 @@ Next, click **Create repository**. Once the repository is created, a workflow starts which generates a bundle structure. -Vendor namespace is generated from the orgnization name: github/github username. +Vendor namespace is generated from the orgnization name. Package and bundle name inherits from repository name. -![GitHub template](bundle_github_structure.png) - ### Bundle directory structure @@ -123,15 +121,14 @@ Generated bundle consists of the following structure: ``` Where: - -- `LICENSE` - a license file, GPL v2 by default -- `README.md` - a readme file with bundle description, its version and install instructions -- `composer.json` - a package definition +- `LICENSE` - a license file, GPL v2 by default. +- `README.md` - a readme file with bundle description, its version and install instructions. +- `composer.json` - a package definition. - `deptrac.yaml` - a tool for static code analysis for PHP, checks the coherence of package architecture, for more information see [deptrac](https://qossmic.github.io/deptrac/) documentation. - `package.json` - frontend dependencies, for more information, see [about packages and modules](https://docs.npmjs.com/about-packages-and-modules). - `phpstan.neon` - phpstan configuration, a tool for static code analysis for PHP, scans, and evaluates codebase to find errors, and bugs, for more information, see the [documentation](https://phpstan.org/user-guide/getting-started). - `phpunit.xml.dist` - config for phpunit, unit and integration tests - see [documentation](https://phpunit.de/getting-started/phpunit-10.html). -- src and tests follow the base catalog structure, according to [package structure](https://phpunit.de/getting-started/phpunit-10.html) docs. +- `src` and `tests` follow the base catalog structure, according to [package structure](https://phpunit.de/getting-started/phpunit-10.html) docs. To fully use the possibilities of the bundle, get familiar with the structure: @@ -143,11 +140,13 @@ To fully use the possibilities of the bundle, get familiar with the structure: - `views/` - handles the [design engine](../../../templating/design_engine/design_engine.md) - `tests` - contains all tests for the bundle. For more information, see [continuous integration](#continuous-integration). -### Add the dependencies to the composer.json +## Build page block + +This section presents an example of how to create an extension that add a new page block in Page Builder. -1. In composer.json add the Page Builder depency to be able to create a page block. +1\. In `composer.json` add the Page Builder depency to be able to create a page block: -```json hl_lines="156" +```json "require": { "php": "^7.4 || ^8.0", "ibexa/core": "^4.5", @@ -162,95 +161,40 @@ To fully use the possibilities of the bundle, get familiar with the structure: "http-interop/http-factory-guzzle": "^1.2" }, ``` -2. Run the following command: -```bash - composer update -``` +2\. Page Builder isn't an open-source package, so to be able to use this dependency, add `repositories`: ```json -  "scripts-descriptions": { -    "fix-cs": "Automatically fixes code style in all files", -    "check-cs": "Run code style checker for all files", -    "test": "Run automatic tests", -    "phpstan": "Run static code analysis", -    "deptrac": "Run Deptrac architecture testing" -  }, +"repositories": { + "ibexa": { + "type": "composer", + "url": "https://updates.ibexa.co" + } + } ``` -- `composer.json` - defines your project requirements, contains the following sections: +3\. Next, run the following command to fetch the Page Builder dependency: - - `php-cs-fixer` - defines method of verifying/checking code style, by default as internal package `for Ibexa style` - - `eslintrc` - a tool for static code analysis for JavaScript - +```bash + composer update +``` For more information, see [bundles](../../../administration/project_organization/bundles.md) documentation. -### Create class +### Create bundle example !!! note Make sure you follow naming convention to ensure clarity. -In the `/src` create a ACMECurrencyExchangeRateBundle class: - - -```php -