├── etc ├── build │ └── .gitignore └── bash │ └── application.sh ├── docs ├── _exts │ ├── sensio │ │ ├── __init__.py │ │ └── sphinx │ │ │ └── __init__.py │ └── setup.py ├── cookbook │ ├── map.rst.inc │ ├── bdd │ │ ├── map.rst.inc │ │ ├── phpspec │ │ │ ├── map.rst.inc │ │ │ ├── how-to-disable-phpspec-code-coverage.rst │ │ │ ├── index.rst │ │ │ └── how-to-configure-phpspec-with-code-coverage.rst │ │ └── behat │ │ │ ├── map.rst.inc │ │ │ ├── how-to-define-new-suite.rst │ │ │ └── how-to-change-behat-application-base-url.rst │ ├── dashboard │ │ └── map.rst.inc │ ├── fixtures │ │ ├── map.rst.inc │ │ ├── load.rst │ │ └── suite.rst │ └── entities │ │ └── map.rst.inc ├── deployment │ ├── map.rst.inc │ └── index.rst ├── .gitignore ├── requirements.txt ├── _images │ ├── api.png │ ├── logo.png │ ├── twig.png │ ├── doc_logo.png │ ├── doctrine.png │ ├── symfonyfs.png │ └── github_banner.png ├── book │ ├── user │ │ ├── map.rst.inc │ │ └── index.rst │ ├── architecture │ │ ├── map.rst.inc │ │ └── index.rst │ ├── map.rst.inc │ └── index.rst ├── _themes │ └── sylius_rtd_theme │ │ ├── static │ │ ├── img │ │ │ └── swan.png │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── theme.conf │ │ ├── searchbox.html │ │ └── __init__.py ├── conf.py └── README.md ├── src ├── Monofony │ ├── MetaPack │ │ ├── CoreMeta │ │ │ ├── .recipe │ │ │ │ ├── src │ │ │ │ │ ├── Entity │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── IdentifiableTrait.php │ │ │ │ │ │ └── User │ │ │ │ │ │ │ └── AdminAvatar.php │ │ │ │ │ ├── Controller │ │ │ │ │ │ └── .gitignore │ │ │ │ │ ├── Repository │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── UserRepository.php │ │ │ │ │ │ └── CustomerRepository.php │ │ │ │ │ ├── Validator │ │ │ │ │ │ ├── Constraints │ │ │ │ │ │ │ └── UniqueAppUserEmail.php │ │ │ │ │ │ └── Initializer │ │ │ │ │ │ │ └── CustomerInitializer.php │ │ │ │ │ ├── Story │ │ │ │ │ │ ├── RandomAppUsersStory.php │ │ │ │ │ │ ├── DefaultAppUsersStory.php │ │ │ │ │ │ └── DefaultAdministratorsStory.php │ │ │ │ │ ├── Installer │ │ │ │ │ │ └── Provider │ │ │ │ │ │ │ └── DatabaseSetupCommandsProviderInterface.php │ │ │ │ │ ├── DataFixtures │ │ │ │ │ │ ├── FakeFixtures.php │ │ │ │ │ │ └── DefaultFixtures.php │ │ │ │ │ ├── Command │ │ │ │ │ │ └── Helper │ │ │ │ │ │ │ └── ProgressBarCreator.php │ │ │ │ │ └── Form │ │ │ │ │ │ ├── Extension │ │ │ │ │ │ ├── CustomerTypeExtension.php │ │ │ │ │ │ └── DateTypeExtension.php │ │ │ │ │ │ └── Type │ │ │ │ │ │ ├── User │ │ │ │ │ │ └── AppUserType.php │ │ │ │ │ │ ├── DatePickerType.php │ │ │ │ │ │ └── DateTimePickerType.php │ │ │ │ ├── translations │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── validators.en.yaml │ │ │ │ │ ├── validators.fr.yaml │ │ │ │ │ ├── messages.en.yaml │ │ │ │ │ ├── messages.fr.yaml │ │ │ │ │ └── flashes.fr.yaml │ │ │ │ ├── tests │ │ │ │ │ ├── Resources │ │ │ │ │ │ └── troll.jpg │ │ │ │ │ └── Behat │ │ │ │ │ │ └── Context │ │ │ │ │ │ ├── Cli │ │ │ │ │ │ └── CommandContext.php │ │ │ │ │ │ ├── Transform │ │ │ │ │ │ ├── UserContext.php │ │ │ │ │ │ ├── AdminUserContext.php │ │ │ │ │ │ └── SharedStorageContext.php │ │ │ │ │ │ └── Hook │ │ │ │ │ │ └── DoctrineORMContext.php │ │ │ │ ├── config │ │ │ │ │ ├── sylius │ │ │ │ │ │ └── resources.yaml │ │ │ │ │ ├── packages │ │ │ │ │ │ └── test │ │ │ │ │ │ │ └── monofony_core.yaml │ │ │ │ │ └── behat │ │ │ │ │ │ └── suites │ │ │ │ │ │ └── cli │ │ │ │ │ │ └── installer.yaml │ │ │ │ ├── templates │ │ │ │ │ ├── emails │ │ │ │ │ │ ├── contactRequest.html.twig │ │ │ │ │ │ ├── userRegistration.html.twig │ │ │ │ │ │ ├── verification.html.twig │ │ │ │ │ │ └── passwordReset.html.twig │ │ │ │ │ └── bundles │ │ │ │ │ │ └── SyliusUiBundle │ │ │ │ │ │ └── Macro │ │ │ │ │ │ └── pagination.html.twig │ │ │ │ ├── features │ │ │ │ │ └── installer │ │ │ │ │ │ └── install_command.feature │ │ │ │ └── spec │ │ │ │ │ └── App │ │ │ │ │ └── Form │ │ │ │ │ └── Extension │ │ │ │ │ ├── DateTypeExtensionSpec.php │ │ │ │ │ └── CustomerTypeExtensionSpec.php │ │ │ └── composer.json │ │ ├── FrontMeta │ │ │ ├── .recipe │ │ │ │ ├── config │ │ │ │ │ ├── sylius │ │ │ │ │ │ └── routes │ │ │ │ │ │ │ └── frontend │ │ │ │ │ │ │ ├── partial.yaml │ │ │ │ │ │ │ └── _main.yaml │ │ │ │ │ ├── routes │ │ │ │ │ │ └── frontend.yaml │ │ │ │ │ ├── packages │ │ │ │ │ │ └── monofony_front.yaml │ │ │ │ │ └── behat │ │ │ │ │ │ └── suites │ │ │ │ │ │ └── ui │ │ │ │ │ │ └── account │ │ │ │ │ │ ├── login.yaml │ │ │ │ │ │ ├── customer.yaml │ │ │ │ │ │ └── registration.yaml │ │ │ │ ├── assets │ │ │ │ │ └── frontend │ │ │ │ │ │ ├── scss │ │ │ │ │ │ └── main.scss │ │ │ │ │ │ ├── js │ │ │ │ │ │ ├── shim-lightbox.js │ │ │ │ │ │ └── app.js │ │ │ │ │ │ └── img │ │ │ │ │ │ └── logo.png │ │ │ │ ├── templates │ │ │ │ │ └── frontend │ │ │ │ │ │ ├── _flashes.html.twig │ │ │ │ │ │ ├── menu │ │ │ │ │ │ └── simple.html.twig │ │ │ │ │ │ ├── homepage │ │ │ │ │ │ └── index.html.twig │ │ │ │ │ │ ├── login │ │ │ │ │ │ ├── _register.html.twig │ │ │ │ │ │ ├── _header.html.twig │ │ │ │ │ │ └── _form.html.twig │ │ │ │ │ │ ├── macro │ │ │ │ │ │ └── pagination.html.twig │ │ │ │ │ │ ├── _header.html.twig │ │ │ │ │ │ ├── register │ │ │ │ │ │ ├── _form.html.twig │ │ │ │ │ │ └── _header.html.twig │ │ │ │ │ │ ├── account │ │ │ │ │ │ └── layout.html.twig │ │ │ │ │ │ ├── _menu.html.twig │ │ │ │ │ │ └── security │ │ │ │ │ │ └── register.html.twig │ │ │ │ ├── tests │ │ │ │ │ └── Behat │ │ │ │ │ │ ├── Context │ │ │ │ │ │ └── Ui │ │ │ │ │ │ │ └── Frontend │ │ │ │ │ │ │ └── HomepageContext.php │ │ │ │ │ │ └── Page │ │ │ │ │ │ └── Frontend │ │ │ │ │ │ ├── Account │ │ │ │ │ │ └── VerificationPage.php │ │ │ │ │ │ └── HomePage.php │ │ │ │ └── features │ │ │ │ │ └── account │ │ │ │ │ ├── signing_in.feature │ │ │ │ │ └── customer_account │ │ │ │ │ ├── changing_password.feature │ │ │ │ │ └── editing_customer_profile.feature │ │ │ └── composer.json │ │ ├── AdminMeta │ │ │ ├── .recipe │ │ │ │ ├── assets │ │ │ │ │ └── backend │ │ │ │ │ │ ├── scss │ │ │ │ │ │ └── main.scss │ │ │ │ │ │ ├── webpack.config.js │ │ │ │ │ │ ├── img │ │ │ │ │ │ ├── logo.png │ │ │ │ │ │ └── avatar.png │ │ │ │ │ │ └── js │ │ │ │ │ │ ├── app-files-preview.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── app-images-preview.js │ │ │ │ ├── config │ │ │ │ │ ├── routes │ │ │ │ │ │ └── backend.yaml │ │ │ │ │ ├── sylius │ │ │ │ │ │ └── routes │ │ │ │ │ │ │ └── backend │ │ │ │ │ │ │ ├── partial.yaml │ │ │ │ │ │ │ ├── partial │ │ │ │ │ │ │ └── customer.yaml │ │ │ │ │ │ │ ├── security.yaml │ │ │ │ │ │ │ ├── _main.yaml │ │ │ │ │ │ │ ├── admin_user.yaml │ │ │ │ │ │ │ └── customer.yaml │ │ │ │ │ └── behat │ │ │ │ │ │ └── suites │ │ │ │ │ │ └── ui │ │ │ │ │ │ ├── admin │ │ │ │ │ │ └── dashboard.yaml │ │ │ │ │ │ ├── customer │ │ │ │ │ │ └── managing_customers.yaml │ │ │ │ │ │ └── user │ │ │ │ │ │ └── managing_administrators.yaml │ │ │ │ ├── templates │ │ │ │ │ └── backend │ │ │ │ │ │ ├── crud │ │ │ │ │ │ ├── index │ │ │ │ │ │ │ ├── _content.html.twig │ │ │ │ │ │ │ ├── _breadcrumb.html.twig │ │ │ │ │ │ │ └── _header.html.twig │ │ │ │ │ │ ├── create.html.twig │ │ │ │ │ │ ├── index.html.twig │ │ │ │ │ │ ├── update.html.twig │ │ │ │ │ │ ├── create │ │ │ │ │ │ │ ├── _header.html.twig │ │ │ │ │ │ │ ├── _breadcrumb.html.twig │ │ │ │ │ │ │ └── _content.html.twig │ │ │ │ │ │ └── update │ │ │ │ │ │ │ ├── _header.html.twig │ │ │ │ │ │ │ ├── _content.html.twig │ │ │ │ │ │ │ └── _breadcrumb.html.twig │ │ │ │ │ │ ├── dashboard │ │ │ │ │ │ ├── _statistics.html.twig │ │ │ │ │ │ ├── statistics │ │ │ │ │ │ │ └── _amount_of_customers.html.twig │ │ │ │ │ │ └── _menu.html.twig │ │ │ │ │ │ ├── layout │ │ │ │ │ │ ├── _sidebar_toggle.html.twig │ │ │ │ │ │ ├── _front_link.html.twig │ │ │ │ │ │ ├── _search.html.twig │ │ │ │ │ │ └── _security.html.twig │ │ │ │ │ │ ├── customer │ │ │ │ │ │ ├── show │ │ │ │ │ │ │ ├── _breadcrumb.html.twig │ │ │ │ │ │ │ └── _header.html.twig │ │ │ │ │ │ └── show.html.twig │ │ │ │ │ │ ├── admin_user │ │ │ │ │ │ ├── _avatar_image.html.twig │ │ │ │ │ │ └── _form.html.twig │ │ │ │ │ │ ├── security │ │ │ │ │ │ └── login.html.twig │ │ │ │ │ │ └── index.html.twig │ │ │ │ ├── tests │ │ │ │ │ └── Behat │ │ │ │ │ │ ├── Page │ │ │ │ │ │ └── Backend │ │ │ │ │ │ │ ├── Administrator │ │ │ │ │ │ │ └── IndexPage.php │ │ │ │ │ │ │ └── Customer │ │ │ │ │ │ │ └── IndexPage.php │ │ │ │ │ │ └── Element │ │ │ │ │ │ └── Backend │ │ │ │ │ │ └── TopBarElement.php │ │ │ │ ├── features │ │ │ │ │ ├── admin │ │ │ │ │ │ └── dashboard.feature │ │ │ │ │ └── user │ │ │ │ │ │ ├── managing_administrators │ │ │ │ │ │ ├── adding_avatar_to_administrator.feature │ │ │ │ │ │ └── browsing_administrator.feature │ │ │ │ │ │ └── managing_customers │ │ │ │ │ │ ├── browsing_customers │ │ │ │ │ │ ├── browsing_customers.feature │ │ │ │ │ │ └── sorting_customers_by_email.feature │ │ │ │ │ │ └── seeing_customer_details.feature │ │ │ │ └── src │ │ │ │ │ ├── Controller │ │ │ │ │ └── DashboardController.php │ │ │ │ │ └── Dashboard │ │ │ │ │ └── Statistics │ │ │ │ │ └── CustomerStatistic.php │ │ │ └── composer.json │ │ └── ApiMeta │ │ │ ├── .recipe │ │ │ ├── tests │ │ │ │ ├── Responses │ │ │ │ │ ├── error │ │ │ │ │ │ ├── not_found_response.json │ │ │ │ │ │ └── access_denied_response.json │ │ │ │ │ ├── authentication │ │ │ │ │ │ └── new_access_token.json │ │ │ │ │ └── customer │ │ │ │ │ │ ├── token_expired_validation_response.json │ │ │ │ │ │ ├── token_not_found_validation_response.json │ │ │ │ │ │ ├── get_user_profile_response.json │ │ │ │ │ │ ├── update_user_profile_response.json │ │ │ │ │ │ ├── unique_email_validation_response.json │ │ │ │ │ │ ├── request_password_validation_response.json │ │ │ │ │ │ ├── too_short_password_validation_response.json │ │ │ │ │ │ ├── reset_password_validation_response.json │ │ │ │ │ │ ├── wrong_current_password_validation_response.json │ │ │ │ │ │ ├── register_validation_response.json │ │ │ │ │ │ └── change_password_validation_response.json │ │ │ │ └── Controller │ │ │ │ │ └── JsonApiTestCase.php │ │ │ ├── config │ │ │ │ ├── routes │ │ │ │ │ └── api.yaml │ │ │ │ ├── packages │ │ │ │ │ ├── test │ │ │ │ │ │ └── lexik_jwt_authentication.yaml │ │ │ │ │ └── monofony_api.yaml │ │ │ │ ├── jwt │ │ │ │ │ └── public-test.pem │ │ │ │ └── serialization │ │ │ │ │ └── user.yaml │ │ │ ├── src │ │ │ │ ├── Message │ │ │ │ │ ├── AppUserIdAwareInterface.php │ │ │ │ │ ├── ResetPassword.php │ │ │ │ │ └── ResetPasswordRequest.php │ │ │ │ ├── Provider │ │ │ │ │ └── CustomerProviderInterface.php │ │ │ │ ├── Entity │ │ │ │ │ └── RefreshToken.php │ │ │ │ └── Story │ │ │ │ │ └── TestAppUsersStory.php │ │ │ └── spec │ │ │ │ └── App │ │ │ │ └── Message │ │ │ │ └── ResetPasswordSpec.php │ │ │ └── composer.json │ ├── Bridge │ │ ├── Behat │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── README.md │ │ │ ├── Service │ │ │ │ ├── AdminSecurityServiceInterface.php │ │ │ │ ├── AppSecurityServiceInterface.php │ │ │ │ ├── Setter │ │ │ │ │ └── CookieSetterInterface.php │ │ │ │ ├── SharedSecurityServiceInterface.php │ │ │ │ ├── Accessor │ │ │ │ │ ├── NotificationAccessorInterface.php │ │ │ │ │ └── NotificationAccessor.php │ │ │ │ ├── EmailCheckerInterface.php │ │ │ │ ├── Resolver │ │ │ │ │ └── CurrentPageResolverInterface.php │ │ │ │ ├── NotificationCheckerInterface.php │ │ │ │ ├── SharedStorageInterface.php │ │ │ │ ├── DriverHelper.php │ │ │ │ ├── SprintfResponseEscaper.php │ │ │ │ ├── AppSecurityService.php │ │ │ │ ├── AdminSecurityService.php │ │ │ │ ├── JQueryHelper.php │ │ │ │ └── SecurityServiceInterface.php │ │ │ ├── Client │ │ │ │ ├── ContentTypeGuideInterface.php │ │ │ │ └── ApiSecurityClientInterface.php │ │ │ ├── Behaviour │ │ │ │ ├── DocumentAccessor.php │ │ │ │ ├── NamesIt.php │ │ │ │ ├── SpecifiesItsCode.php │ │ │ │ └── DescribesIt.php │ │ │ ├── services_test.yaml │ │ │ ├── Crud │ │ │ │ ├── CreatePageInterface.php │ │ │ │ └── UpdatePageInterface.php │ │ │ └── Exception │ │ │ │ └── NotificationExpectationMismatchException.php │ │ └── SyliusUser │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ └── README.md │ ├── Component │ │ ├── Core │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── composer.json │ │ │ └── Formatter │ │ │ │ └── StringInflector.php │ │ └── Admin │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── Dashboard │ │ │ └── Statistics │ │ │ │ └── StatisticInterface.php │ │ │ ├── Menu │ │ │ └── AdminMenuBuilderInterface.php │ │ │ └── composer.json │ ├── Contracts │ │ ├── Core │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── Model │ │ │ │ ├── User │ │ │ │ │ ├── AdminAvatarInterface.php │ │ │ │ │ ├── AppUserInterface.php │ │ │ │ │ └── AdminUserInterface.php │ │ │ │ ├── Media │ │ │ │ │ └── FileInterface.php │ │ │ │ └── Customer │ │ │ │ │ └── CustomerInterface.php │ │ │ └── composer.json │ │ ├── Admin │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── Dashboard │ │ │ │ └── DashboardStatisticsProviderInterface.php │ │ │ └── composer.json │ │ ├── Front │ │ │ ├── .gitignore │ │ │ ├── phpstan.neon │ │ │ ├── Menu │ │ │ │ └── AccountMenuBuilderInterface.php │ │ │ └── composer.json │ │ └── Api │ │ │ ├── phpstan.neon │ │ │ ├── OpenApi │ │ │ └── Factory │ │ │ │ └── AppAuthenticationTokenOpenApiFactoryInterface.php │ │ │ ├── Swagger │ │ │ └── AppAuthenticationTokenDocumentationNormalizerInterface.php │ │ │ ├── Identifier │ │ │ └── AppUserIdentifierNormalizerInterface.php │ │ │ └── composer.json │ ├── Pack │ │ ├── AdminPack │ │ │ ├── .gitignore │ │ │ └── phpstan.neon │ │ ├── ApiPack │ │ │ ├── .gitignore │ │ │ └── phpstan.neon │ │ ├── CorePack │ │ │ ├── .gitignore │ │ │ └── phpstan.neon │ │ ├── FrontPack │ │ │ ├── .gitignore │ │ │ └── phpstan.neon │ │ └── TestPack │ │ │ └── .gitignore │ └── Bundle │ │ └── CoreBundle │ │ ├── .gitignore │ │ ├── symfony.lock │ │ ├── phpstan.neon │ │ └── Resources │ │ └── config │ │ └── services.yaml └── Kernel.php ├── public ├── favicon.ico ├── apple-touch-icon.png ├── robots.txt └── index.php ├── config ├── packages │ ├── mailer.yaml │ ├── routing.yaml │ ├── dev │ │ ├── routing.yaml │ │ ├── nelmio_alice.yaml │ │ ├── web_profiler.yaml │ │ ├── debug.yaml │ │ ├── zenstruck_foundry.yaml │ │ ├── jms_serializer.yaml │ │ └── monolog.yaml │ ├── test │ │ ├── nelmio_alice.yaml │ │ ├── routing.yaml │ │ ├── fidry_alice_data_fixtures.yaml │ │ ├── security.yaml │ │ ├── framework.yaml │ │ ├── monofony_core.yaml │ │ ├── web_profiler.yaml │ │ ├── monolog.yaml │ │ ├── zenstruck_foundry.yaml │ │ └── lexik_jwt_authentication.yaml │ ├── validator.yaml │ ├── gesdinet_jwt_refresh_token.yaml │ ├── monofony_core.yaml │ ├── monofony_admin.yaml │ ├── monofony_front.yaml │ ├── doctrine_migrations.yaml │ ├── prod │ │ ├── webpack_encore.yaml │ │ ├── jms_serializer.yaml │ │ ├── monolog.yaml │ │ └── doctrine.yaml │ ├── lexik_jwt_authentication.yaml │ ├── twig_component.yaml │ ├── sonata_block.yaml │ ├── vich_uploader.yaml │ ├── fos_rest.yaml │ ├── nelmio_cors.yaml │ ├── twig_extensions.yaml │ ├── assets.yaml │ ├── api_platform.yaml │ ├── jms_serializer.yaml │ ├── twig.yaml │ ├── messenger.yaml │ ├── framework.yaml │ ├── webpack_encore.yaml │ └── liip_imagine.yaml ├── routes │ ├── api_platform.yaml │ ├── liip_imagine.yaml │ ├── ux_live_component.yaml │ └── dev │ │ └── web_profiler.yaml ├── services.yaml ├── routes.yaml ├── services │ ├── monofony_frontend.yaml │ ├── monofony_api.yaml │ ├── monofony_core.yaml │ └── monofony_backend.yaml ├── behat │ └── suites.yaml ├── services_test.yaml └── bootstrap.php ├── .env.test ├── compose.override.yaml ├── .php_cs.dist ├── monorepo-builder.php ├── .php-cs-fixer.dist.php ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── documentation-issue---.md │ ├── bug-report---.md │ └── feature-request--.md ├── dependabot.yml └── PULL_REQUEST_TEMPLATE.md ├── assets ├── controllers.json ├── bootstrap.js └── controllers │ └── hello_controller.js ├── webpack.config.js ├── .babelrc ├── phpstan.neon ├── compose.yaml ├── package.json ├── infection.json.dist └── CHANGELOG-0.6.md /etc/build/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_exts/sensio/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_exts/sensio/sphinx/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/cookbook/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/index` 2 | -------------------------------------------------------------------------------- /docs/deployment/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/deployment/index` 2 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Entity/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | _exts/sensio/__init__.pyc 3 | *.pyc 4 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx>=1.4,<2.0 2 | requests[security] 3 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Component/Core/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Core/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Controller/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Repository/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Monofony/Pack/AdminPack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Pack/ApiPack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Pack/CorePack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Pack/FrontPack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Pack/TestPack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/SyliusUser/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Bundle/CoreBundle/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Component/Admin/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Admin/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Front/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | composer.lock 3 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/config/sylius/routes/frontend/partial.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_images/api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/api.png -------------------------------------------------------------------------------- /docs/book/user/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/book/user/admins` 2 | * :doc:`/book/user/customers` 3 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /config/packages/mailer.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | mailer: 3 | dsn: '%env(MAILER_DSN)%' 4 | -------------------------------------------------------------------------------- /config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: ~ 4 | -------------------------------------------------------------------------------- /docs/_images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/logo.png -------------------------------------------------------------------------------- /docs/_images/twig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/twig.png -------------------------------------------------------------------------------- /config/packages/dev/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /config/packages/test/nelmio_alice.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: ../dev/nelmio_alice.yaml } 3 | -------------------------------------------------------------------------------- /config/packages/test/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /docs/_images/doc_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/doc_logo.png -------------------------------------------------------------------------------- /docs/_images/doctrine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/doctrine.png -------------------------------------------------------------------------------- /config/packages/dev/nelmio_alice.yaml: -------------------------------------------------------------------------------- 1 | nelmio_alice: 2 | functions_blacklist: 3 | - 'current' 4 | -------------------------------------------------------------------------------- /config/packages/validator.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | validation: 3 | email_validation_mode: html5 4 | -------------------------------------------------------------------------------- /docs/_images/symfonyfs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/symfonyfs.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/_images/github_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_images/github_banner.png -------------------------------------------------------------------------------- /docs/cookbook/bdd/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/bdd/phpspec/index` 2 | * :doc:`/cookbook/bdd/behat/index` 3 | -------------------------------------------------------------------------------- /src/Monofony/Bundle/CoreBundle/symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "php": { 3 | "version": "7.3" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/scss/main.scss: -------------------------------------------------------------------------------- 1 | @import "~sylius/ui/sass/main"; 2 | 3 | -------------------------------------------------------------------------------- /config/routes/api_platform.yaml: -------------------------------------------------------------------------------- 1 | api_platform: 2 | resource: . 3 | type: api_platform 4 | prefix: /api 5 | -------------------------------------------------------------------------------- /config/packages/test/fidry_alice_data_fixtures.yaml: -------------------------------------------------------------------------------- 1 | fidry_alice_data_fixtures: 2 | default_purge_mode: no_purge 3 | -------------------------------------------------------------------------------- /config/routes/liip_imagine.yaml: -------------------------------------------------------------------------------- 1 | _liip_imagine: 2 | resource: "@LiipImagineBundle/Resources/config/routing.yaml" 3 | -------------------------------------------------------------------------------- /docs/book/architecture/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/book/architecture/architecture` 2 | * :doc:`/book/architecture/fixtures` 3 | -------------------------------------------------------------------------------- /docs/cookbook/dashboard/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/dashboard/index` 2 | * :doc:`/cookbook/dashboard/basic-example` 3 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/_flashes.html.twig: -------------------------------------------------------------------------------- 1 | {% include '@SyliusUi/_flashes.html.twig' %} -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/scss/main.scss: -------------------------------------------------------------------------------- 1 | 2 | @import '~sylius/ui/sass/main'; 3 | @import "ui"; 4 | -------------------------------------------------------------------------------- /config/packages/gesdinet_jwt_refresh_token.yaml: -------------------------------------------------------------------------------- 1 | gesdinet_jwt_refresh_token: 2 | refresh_token_class: App\Entity\RefreshToken 3 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/menu/simple.html.twig: -------------------------------------------------------------------------------- 1 | {% extends '@SyliusUi/Menu/simple.html.twig' %} 2 | -------------------------------------------------------------------------------- /config/packages/test/security.yaml: -------------------------------------------------------------------------------- 1 | security: 2 | password_hashers: 3 | Sylius\Component\User\Model\UserInterface: plaintext 4 | -------------------------------------------------------------------------------- /etc/bash/application.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Source nvm.sh to make the node command available 4 | run_command "source ~/.nvm/nvm.sh" 5 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/error/not_found_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 404, 3 | "message": @string@ 4 | } 5 | -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | APP_SECRET=67d829bf61dc5f87a73fd814e2c9f629 2 | KERNEL_CLASS='App\Kernel' 3 | IS_DOCTRINE_ORM_SUPPORTED=true 4 | MAILER_DSN=null://null 5 | -------------------------------------------------------------------------------- /config/packages/monofony_core.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: '../../src/Monofony/MetaPack/CoreMeta/.recipe/config/packages/monofony_core.yaml' } 3 | -------------------------------------------------------------------------------- /config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: ~ 3 | session: 4 | storage_factory_id: session.storage.factory.mock_file 5 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/static/img/swan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_themes/sylius_rtd_theme/static/img/swan.png -------------------------------------------------------------------------------- /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 | Disallow: 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/js/shim-lightbox.js: -------------------------------------------------------------------------------- 1 | import lightbox from 'lightbox2'; 2 | 3 | window.lightbox = lightbox; 4 | -------------------------------------------------------------------------------- /config/packages/monofony_admin.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: '../../src/Monofony/MetaPack/AdminMeta/.recipe/config/packages/monofony_admin.yaml' } 3 | -------------------------------------------------------------------------------- /config/packages/monofony_front.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: '../../src/Monofony/MetaPack/FrontMeta/.recipe/config/packages/monofony_front.yaml' } 3 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/webpack.config.js: -------------------------------------------------------------------------------- 1 | var build = require('../config-builder'); 2 | 3 | module.exports = build('backend'); 4 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/routes/backend.yaml: -------------------------------------------------------------------------------- 1 | app_backend: 2 | resource: "../sylius/routes/backend/_main.yaml" 3 | prefix: admin 4 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/error/access_denied_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 401, 3 | "message": "JWT Token not found" 4 | } 5 | -------------------------------------------------------------------------------- /compose.override.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | ###> doctrine/doctrine-bundle ### 3 | database: 4 | ports: 5 | - "5432:5432" 6 | ###< doctrine/doctrine-bundle ### 7 | -------------------------------------------------------------------------------- /config/packages/test/monofony_core.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: '../../../src/Monofony/MetaPack/CoreMeta/.recipe/config/packages/test/monofony_core.yaml' } 3 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/crud/index/_content.html.twig: -------------------------------------------------------------------------------- 1 | {{ sylius_grid_render(resources, '@SyliusUi/Grid/_default.html.twig') }} 2 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/validators.en.yaml: -------------------------------------------------------------------------------- 1 | sylius: 2 | user: 3 | email: 4 | unique: This email is already used. 5 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/validators.fr.yaml: -------------------------------------------------------------------------------- 1 | sylius: 2 | user: 3 | email: 4 | unique: Cet e-mail est déjà utilisé. 5 | -------------------------------------------------------------------------------- /config/packages/test/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: false 3 | intercept_redirects: false 4 | 5 | framework: 6 | profiler: { collect: false } 7 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_themes/sylius_rtd_theme/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /config/packages/dev/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler: 2 | toolbar: true 3 | intercept_redirects: false 4 | 5 | framework: 6 | profiler: { only_exceptions: false } 7 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/tests/Resources/troll.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/src/Monofony/MetaPack/CoreMeta/.recipe/tests/Resources/troll.jpg -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/homepage/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'frontend/layout.html.twig' %} 2 | 3 | {% block content %} 4 | 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/docs/_themes/sylius_rtd_theme/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/Monofony/Bridge/SyliusUser/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Component/Admin/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Component/Core/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Admin/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Api/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Core/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - 'spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/img/logo.png -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/sylius/routes/backend/partial.yaml: -------------------------------------------------------------------------------- 1 | sylius_backend_partial_customer: 2 | resource: partial/customer.yaml 3 | prefix: /customers 4 | -------------------------------------------------------------------------------- /.php_cs.dist: -------------------------------------------------------------------------------- 1 | setRules([ 5 | '@Symfony' => true, 6 | 'array_syntax' => ['syntax' => 'short'], 7 | ]) 8 | ; 9 | -------------------------------------------------------------------------------- /docs/cookbook/fixtures/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/fixtures/factory` 2 | * :doc:`/cookbook/fixtures/fixture` 3 | * :doc:`/cookbook/fixtures/suite` 4 | * :doc:`/cookbook/fixtures/load` 5 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Front/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - '**/spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/img/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/img/avatar.png -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monofony/Monofony/HEAD/src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/img/logo.png -------------------------------------------------------------------------------- /config/packages/doctrine_migrations.yaml: -------------------------------------------------------------------------------- 1 | doctrine_migrations: 2 | migrations_paths: 3 | 'DoctrineMigrations': '%kernel.project_dir%/src/Monofony/MetaPack/CoreMeta/.recipe/migrations' 4 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = basic 3 | stylesheet = css/theme.css 4 | 5 | [options] 6 | typekit_id = hiw1hhg 7 | analytics_id = 8 | sticky_navigation = False 9 | -------------------------------------------------------------------------------- /docs/book/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/book/architecture/index` 2 | * :doc:`/book/architecture/fixtures` 3 | * :doc:`/book/user/index` 4 | * :doc:`/book/user/admins` 5 | * :doc:`/book/user/customers` 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/config/sylius/resources.yaml: -------------------------------------------------------------------------------- 1 | sylius_resource: 2 | resources: 3 | # app.topic: 4 | # classes: 5 | # model: App\Entity\Topic\Topic 6 | -------------------------------------------------------------------------------- /config/packages/prod/webpack_encore.yaml: -------------------------------------------------------------------------------- 1 | #webpack_encore: 2 | # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes) 3 | # Available in version 1.2 4 | #cache: true 5 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/js/app.js: -------------------------------------------------------------------------------- 1 | import '../scss/main.scss'; 2 | 3 | import 'babel-polyfill'; 4 | import './shim-semantic-ui'; 5 | 6 | $(document).ready(function () { 7 | }); 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/config/packages/test/monofony_core.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | pools: 4 | test.mailer_pool: 5 | adapter: cache.adapter.filesystem 6 | -------------------------------------------------------------------------------- /src/Monofony/Pack/FrontPack/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ../../MetaPack/FrontMeta/.recipe 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - '**/spec/**.php' 8 | -------------------------------------------------------------------------------- /src/Monofony/Bundle/CoreBundle/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ./ 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - '**/spec/**.php' 8 | - 'Tests/**.php' 9 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/dashboard/_statistics.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {% for statistic in statistics %} 3 | {{ statistic | raw }} 4 | {% endfor %} 5 |
6 | -------------------------------------------------------------------------------- /config/packages/lexik_jwt_authentication.yaml: -------------------------------------------------------------------------------- 1 | lexik_jwt_authentication: 2 | secret_key: '%env(resolve:JWT_SECRET_KEY)%' 3 | public_key: '%env(resolve:JWT_PUBLIC_KEY)%' 4 | pass_phrase: '%env(JWT_PASSPHRASE)%' 5 | -------------------------------------------------------------------------------- /config/packages/twig_component.yaml: -------------------------------------------------------------------------------- 1 | twig_component: 2 | anonymous_template_directory: 'components/' 3 | defaults: 4 | # Namespace & directory for components 5 | App\Twig\Components\: 'components/' 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/authentication/new_access_token.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": @string@, 3 | "refresh_token": @string@, 4 | "customer": "@string@.startsWith('/api/customers/')" 5 | } 6 | -------------------------------------------------------------------------------- /config/packages/prod/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | jms_serializer: 2 | visitors: 3 | json_serialization: 4 | options: 5 | - JSON_UNESCAPED_SLASHES 6 | - JSON_PRESERVE_ZERO_FRACTION 7 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/layout/_sidebar_toggle.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/cookbook/entities/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/entities/first-resource` 2 | * :doc:`/cookbook/entities/manage-your-entity` 3 | * :doc:`/cookbook/entities/configure-your-routes` 4 | * :doc:`/cookbook/entities/configure-backend-menu` 5 | -------------------------------------------------------------------------------- /config/packages/test/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: stream 5 | path: "%kernel.logs_dir%/%kernel.environment%.log" 6 | level: debug 7 | channels: ["!event"] 8 | -------------------------------------------------------------------------------- /config/services.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: services/monofony_core.yaml } 3 | - { resource: services/monofony_backend.yaml } 4 | - { resource: services/monofony_frontend.yaml } 5 | - { resource: services/monofony_api.yaml } 6 | -------------------------------------------------------------------------------- /config/routes/ux_live_component.yaml: -------------------------------------------------------------------------------- 1 | live_component: 2 | resource: '@LiveComponentBundle/config/routes.php' 3 | prefix: '/_components' 4 | # adjust prefix to add localization to your components 5 | #prefix: '/{_locale}/_components' 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/layout/_front_link.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ 'app.ui.view_website'|trans }} 4 | 5 | -------------------------------------------------------------------------------- /config/packages/sonata_block.yaml: -------------------------------------------------------------------------------- 1 | sonata_block: 2 | blocks: 3 | sonata.block.service.template: 4 | settings: 5 | customer: ~ 6 | form: ~ 7 | resource: ~ 8 | resources: ~ 9 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/config/routes/api.yaml: -------------------------------------------------------------------------------- 1 | #app_api_your_respource: 2 | # resource: "api/your_resource.yaml" 3 | 4 | api_login_check: 5 | path: /api/authentication_token 6 | 7 | api_refresh_token: 8 | path: /api/token/refresh 9 | -------------------------------------------------------------------------------- /config/packages/dev/debug.yaml: -------------------------------------------------------------------------------- 1 | debug: 2 | # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. 3 | # See the "server:dump" command to start a new server. 4 | dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" 5 | -------------------------------------------------------------------------------- /monorepo-builder.php: -------------------------------------------------------------------------------- 1 | packageDirectories([ 7 | // default value 8 | __DIR__ . '/src/Monofony', 9 | ]); 10 | }; 11 | -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- 1 | in(__DIR__) 5 | ->exclude('var') 6 | ; 7 | 8 | return (new PhpCsFixer\Config()) 9 | ->setRules([ 10 | '@Symfony' => true, 11 | ]) 12 | ->setFinder($finder) 13 | ; 14 | -------------------------------------------------------------------------------- /config/routes/dev/web_profiler.yaml: -------------------------------------------------------------------------------- 1 | web_profiler_wdt: 2 | resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml' 3 | prefix: /_wdt 4 | 5 | web_profiler_profiler: 6 | resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml' 7 | prefix: /_profiler 8 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributing Patches 2 | ==================== 3 | 4 | Monofony is a Open Source project driven by the community. Join our amazing adventure and we promise to be nice and welcoming to everyone. Remember, you do not have to be a Symfony guru or even a programmer to help! 5 | -------------------------------------------------------------------------------- /config/packages/test/zenstruck_foundry.yaml: -------------------------------------------------------------------------------- 1 | # Unless you want different configuration for test/dev environments, 2 | # add configuration to config/packages/dev/zenstruck_foundry.yml 3 | # and this will be synced to your test environment. 4 | imports: 5 | - { resource: ../dev/zenstruck_foundry.yaml } 6 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/token_expired_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/Error", 3 | "@type": "hydra:Error", 4 | "trace": @array@, 5 | "hydra:title": "An error occurred", 6 | "hydra:description": "Token expired." 7 | } 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/token_not_found_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/Error", 3 | "@type": "hydra:Error", 4 | "trace": @array@, 5 | "hydra:title": "An error occurred", 6 | "hydra:description": "Token not found." 7 | } 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/tests/Behat/Context/Ui/Frontend/HomepageContext.php: -------------------------------------------------------------------------------- 1 | {{ 'sylius.ui.new_customers'|trans }} 2 | 3 | 4 | {{ 'sylius.ui.create_an_account'|trans }} 5 | 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation-issue---.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Documentation Issue \U0001F4D6" 3 | about: Report missing or bugged documentation 4 | 5 | --- 6 | 7 | **Monofony docs version**: 0.x / latest 8 | 9 | **Description** 10 | 11 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/src/Provider/CustomerProviderInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | {{ 'sylius.ui.customer_login'|trans }} 5 |
{{ 'sylius.ui.access_your_store_account_or_create_a_new_one'|trans }}
6 |
7 | 8 | -------------------------------------------------------------------------------- /docs/cookbook/bdd/behat/map.rst.inc: -------------------------------------------------------------------------------- 1 | * :doc:`/cookbook/bdd/behat/basic-usage` 2 | * :doc:`/cookbook/bdd/behat/how-to-add-new-context` 3 | * :doc:`/cookbook/bdd/behat/how-to-add-new-page` 4 | * :doc:`/cookbook/bdd/behat/how-to-define-new-suite` 5 | * :doc:`/cookbook/bdd/behat/how-to-use-transformers` 6 | * :doc:`/cookbook/bdd/behat/how-to-change-behat-application-base-url` 7 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/searchbox.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/config/packages/test/lexik_jwt_authentication.yaml: -------------------------------------------------------------------------------- 1 | lexik_jwt_authentication: 2 | secret_key: '%kernel.project_dir%/config/jwt/private-test.pem' 3 | public_key: '%kernel.project_dir%/config/jwt/public-test.pem' 4 | pass_phrase: ALL_THAT_IS_GOLD_DOES_NOT_GLITTER_NOT_ALL_THOSE_WHO_WANDER_ARE_LOST 5 | token_ttl: 315360000 # ten years 6 | -------------------------------------------------------------------------------- /src/Monofony/Pack/AdminPack/phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: 4 3 | paths: 4 | - ../../MetaPack/AdminMeta/.recipe 5 | excludePaths: 6 | - 'vendor/**.php' 7 | - '**/spec/**.php' 8 | - '../../MetaPack/AdminMeta/.recipe/src/Dashboard/Statistics/CustomerStatistic.php' 9 | - '../../MetaPack/AdminMeta/.recipe/src/Grid/**.php' 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: composer 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | ignore: 9 | - dependency-name: friends-of-phpspec/phpspec-code-coverage 10 | versions: 11 | - 6.0.0 12 | - dependency-name: sensio/framework-extra-bundle 13 | versions: 14 | - 6.0.0 15 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Validator/Constraints/UniqueAppUserEmail.php: -------------------------------------------------------------------------------- 1 | 9 | Content: 10 |
11 | "{{ data.message|nl2br }}" 12 | {% endautoescape %} 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/src/Entity/RefreshToken.php: -------------------------------------------------------------------------------- 1 |
9 | You have just been registered. 10 |
11 | Thank you {{ user.username }}. 12 | {% endautoescape %} 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/update_user_profile_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/Customer", 3 | "@id": "@string@.startsWith('/api/customers/')", 4 | "@type": "Customer", 5 | "id": @integer@, 6 | "email": "inigo.montoya@prepare-to-die.com", 7 | "firstName": "Inigo", 8 | "lastName": "Montoya", 9 | "subscribedToNewsletter": true 10 | } 11 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/macro/pagination.html.twig: -------------------------------------------------------------------------------- 1 | {% macro render(paginator, options) %} 2 | {% if paginator.haveToPaginate %} 3 |
4 |
5 | {{ pagerfanta(paginator, 'foundation_translated', options|default({})) }} 6 |
7 |
8 | {% endif %} 9 | {% endmacro %} -------------------------------------------------------------------------------- /docs/_exts/setup.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from setuptools import setup, find_packages 4 | 5 | setup( 6 | name = 'sphinx-php', 7 | version = '1.0', 8 | author = 'Fabien Potencier', 9 | author_email = 'fabien@symfony.com', 10 | description = 'Sphinx Extensions for PHP and Symfony', 11 | license = 'MIT', 12 | packages = find_packages(), 13 | install_requires = ['Sphinx>=0.6'], 14 | ) 15 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/config/behat/suites/cli/installer.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | cli_installer: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Cli\CommandContext 8 | - App\Tests\Behat\Context\Cli\InstallerContext 9 | filters: 10 | tags: "@installer&&@cli" 11 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/sylius/routes/backend/partial/customer.yaml: -------------------------------------------------------------------------------- 1 | sylius_backend_partial_customer_latest: 2 | path: /latest/{count} 3 | methods: [GET] 4 | defaults: 5 | _controller: sylius.controller.customer::indexAction 6 | _sylius: 7 | repository: 8 | method: findLatest 9 | arguments: ['!!int $count'] 10 | template: $template 11 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/SyliusUser/README.md: -------------------------------------------------------------------------------- 1 | Sylius Bridge 2 | ============= 3 | 4 | Provides integration for [Sylius](https://sylius.com/) with 5 | various Monofony components. 6 | 7 | Resources 8 | --------- 9 | 10 | * [Report issues](https://github.com/Monofony/Monofony/issues) and 11 | [send Pull Requests](https://github.com/Monofony/Monofony/pulls) 12 | in the [main Monofony repository](https://github.com/Monofony/Monofony) 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/api-meta", 3 | "type": "library", 4 | "license": "MIT", 5 | "description": "A meta package providing recipes for API", 6 | "autoload": { 7 | "exclude-from-classmap": [ 8 | ".recipe/" 9 | ] 10 | }, 11 | "extra": { 12 | "branch-alias": { 13 | "dev-master": "0.11-dev" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /config/packages/api_platform.yaml: -------------------------------------------------------------------------------- 1 | api_platform: 2 | version: !php/const App\Kernel::VERSION 3 | mapping: 4 | paths: 5 | - '%kernel.project_dir%/src/Monofony/MetaPack/CoreMeta/.recipe/src/Entity' 6 | - '%kernel.project_dir%/src/Monofony/MetaPack/ApiMeta/.recipe/config/api_platform/resources' 7 | patch_formats: 8 | json: ['application/merge-patch+json'] 9 | swagger: 10 | versions: [3] 11 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/README.md: -------------------------------------------------------------------------------- 1 | Behat Bridge 2 | ============ 3 | 4 | Provides integration for [Behat](https://docs.behat.org/en/latest/) with 5 | various Monofony components. 6 | 7 | Resources 8 | --------- 9 | 10 | * [Report issues](https://github.com/Monofony/Monofony/issues) and 11 | [send Pull Requests](https://github.com/Monofony/Monofony/pulls) 12 | in the [main Monofony repository](https://github.com/Monofony/Monofony) 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/core-meta", 3 | "type": "library", 4 | "license": "MIT", 5 | "description": "A meta package providing recipes for core", 6 | "autoload": { 7 | "exclude-from-classmap": [ 8 | ".recipe/" 9 | ] 10 | }, 11 | "extra": { 12 | "branch-alias": { 13 | "dev-master": "0.11-dev" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/messages.en.yaml: -------------------------------------------------------------------------------- 1 | app: 2 | ui: 3 | avatar: Avatar 4 | create_user: Create an user 5 | forgotten_password: Forgotten password 6 | legal_notices: Legal notices 7 | overview_of_your_website: Overview of you website 8 | search_customers: Search customers 9 | validate: Validate 10 | view_website: View website 11 | sylius: 12 | ui: ~ 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/templates/emails/verification.html.twig: -------------------------------------------------------------------------------- 1 | {% block subject %} 2 | Email address verification 3 | {% endblock %} 4 | 5 | {% block body %} 6 | {% set url = url('sylius_frontend_user_verification', { 'token': user.emailVerificationToken}) %} 7 | {% autoescape %} 8 | To verify your email address - please visit {{ url|raw }} 9 | {% endautoescape %} 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /config/packages/dev/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | jms_serializer: 2 | visitors: 3 | json_serialization: 4 | options: 5 | - JSON_PRETTY_PRINT 6 | - JSON_UNESCAPED_SLASHES 7 | - JSON_PRESERVE_ZERO_FRACTION 8 | json_deserialization: 9 | options: 10 | - JSON_PRETTY_PRINT 11 | - JSON_UNESCAPED_SLASHES 12 | - JSON_PRESERVE_ZERO_FRACTION 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/customer/show/_breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 | {% import '@SyliusUi/Macro/breadcrumb.html.twig' as breadcrumb %} 2 | 3 | {% set breadcrumbs = [ 4 | { label: 'sylius.ui.administration'|trans, url: path('app_backend_dashboard') }, 5 | { label: 'sylius.ui.customers'|trans, url: path('sylius_backend_customer_index') }, 6 | { label: customer.email } 7 | ] %} 8 | 9 | {{ breadcrumb.crumble(breadcrumbs) }} 10 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/admin-meta", 3 | "type": "library", 4 | "license": "MIT", 5 | "description": "A meta package providing recipes for administration panel", 6 | "autoload": { 7 | "exclude-from-classmap": [ 8 | ".recipe/" 9 | ] 10 | }, 11 | "extra": { 12 | "branch-alias": { 13 | "dev-master": "0.11-dev" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/cookbook/fixtures/load.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to load your data fixtures 8 | ============================== 9 | 10 | You can load all your data fixtures using this command. 11 | 12 | .. code-block:: bash 13 | 14 | $ bin/console sylius:fixtures:load 15 | 16 | .. _Monofony documentation: https://docs.monofony.com 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Entity/IdentifiableTrait.php: -------------------------------------------------------------------------------- 1 | id; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /assets/bootstrap.js: -------------------------------------------------------------------------------- 1 | import { startStimulusApp } from '@symfony/stimulus-bridge'; 2 | 3 | // Registers Stimulus controllers from controllers.json and in the controllers/ directory 4 | export const app = startStimulusApp(require.context( 5 | '@symfony/stimulus-bridge/lazy-controller-loader!./controllers', 6 | true, 7 | /\.[jt]sx?$/ 8 | )); 9 | // register any custom, 3rd party controllers here 10 | // app.register('some_controller_name', SomeImportedController); 11 | -------------------------------------------------------------------------------- /docs/_themes/sylius_rtd_theme/__init__.py: -------------------------------------------------------------------------------- 1 | """Sphinx ReadTheDocs theme. 2 | 3 | From https://github.com/ryan-roemer/sphinx-bootstrap-theme. 4 | 5 | """ 6 | import os 7 | 8 | VERSION = (0, 1, 5) 9 | 10 | __version__ = ".".join(str(v) for v in VERSION) 11 | __version_full__ = __version__ 12 | 13 | 14 | def get_html_theme_path(): 15 | """Return list of HTML theme paths.""" 16 | cur_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) 17 | return cur_dir 18 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/messages.fr.yaml: -------------------------------------------------------------------------------- 1 | app: 2 | ui: 3 | avatar: Avatar 4 | create_user: Créer un utilisateur 5 | forgotten_password: Mot de passe oublié 6 | legal_notices: Mentions légales 7 | overview_of_your_website: Aperçu de votre site web 8 | search_customers: Chercher des clients 9 | validate: Valider 10 | view_website: Voir le site 11 | sylius: 12 | ui: 13 | show: Afficher 14 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/AdminSecurityServiceInterface.php: -------------------------------------------------------------------------------- 1 | 'customer@example.com', 16 | 'password' => 'password', 17 | ]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/config/packages/monofony_front.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | assets: 3 | packages: 4 | frontend: 5 | json_manifest_path: '%kernel.project_dir%/public/assets/frontend/manifest.json' 6 | 7 | sylius_ui: 8 | events: 9 | sylius.admin.layout.topbar_left: 10 | blocks: 11 | front_link: 12 | template: "backend/layout/_front_link.html.twig" 13 | priority: 30 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report---.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Bug Report \U0001F41B" 3 | about: Report a problem or error 4 | 5 | --- 6 | 7 | 8 | **Monofony version affected**: 0.x.y 9 | 10 | **Description** 11 | 12 | 13 | **Steps to reproduce** 14 | 15 | 16 | **Possible Solution** 17 | 18 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const vendorUiPath = path.resolve(__dirname, 'vendor/sylius/ui-bundle'); 3 | const build = require('./src/Monofony/MetaPack/CoreMeta/.recipe/config-builder'); 4 | 5 | const backendConfig = build('backend', `./src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/`, vendorUiPath); 6 | const frontendConfig = build('frontend', `./src/Monofony/MetaPack/FrontMeta/.recipe/assets/frontend/`, vendorUiPath); 7 | 8 | module.exports = [backendConfig, frontendConfig]; 9 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Client/ContentTypeGuideInterface.php: -------------------------------------------------------------------------------- 1 | 'admin@example.com', 16 | 'password' => 'admin', 17 | ]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/unique_email_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/ConstraintViolationList", 3 | "@type": "ConstraintViolationList", 4 | "hydra:title": "An error occurred", 5 | "hydra:description": "email: This email is already used.", 6 | "violations": [ 7 | { 8 | "propertyPath": "email", 9 | "message": "This email is already used.", 10 | "code": null 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /config/services/monofony_frontend.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | _defaults: 3 | autowire: true # Automatically injects dependencies in your services 4 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 5 | 6 | app_frontend: 7 | namespace: App\ 8 | resource: '../../src/Monofony/MetaPack/FrontMeta/.recipe/src/*' 9 | exclude: '../../src/Monofony/MetaPack/FrontMeta/.recipe/src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' 10 | -------------------------------------------------------------------------------- /src/Monofony/Component/Admin/Dashboard/Statistics/StatisticInterface.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/request_password_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/ConstraintViolationList", 3 | "@type": "ConstraintViolationList", 4 | "hydra:title": "An error occurred", 5 | "hydra:description": "email: Please enter your email.", 6 | "violations": [ 7 | { 8 | "propertyPath": "email", 9 | "message": "Please enter your email.", 10 | "code": "@string@" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/too_short_password_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/ConstraintViolationList", 3 | "@type": "ConstraintViolationList", 4 | "hydra:title": "An error occurred", 5 | "hydra:description": "@string@", 6 | "violations": [ 7 | { 8 | "propertyPath": "password", 9 | "message": "Password must be at least 4 characters long.", 10 | "code": "@string@" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/sylius/routes/backend/security.yaml: -------------------------------------------------------------------------------- 1 | sylius_backend_login: 2 | path: /login 3 | defaults: 4 | _controller: sylius.controller.security::loginAction 5 | _sylius: 6 | template: backend/security/login.html.twig 7 | permission: true 8 | 9 | sylius_backend_login_check: 10 | path: /login-check 11 | defaults: 12 | _controller: sylius.controller.security::checkAction 13 | 14 | sylius_backend_logout: 15 | path: /logout 16 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/_header.html.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | Sylius logo 5 |
6 |
7 |
8 |
9 |
10 |
11 |
-------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["@babel/preset-env", { 4 | "targets": { 5 | "browsers": [ 6 | "last 2 versions", 7 | "Firefox ESR", 8 | "IE >= 9", 9 | "Android >= 4.0", 10 | "iOS >= 7" 11 | ] 12 | }, 13 | "modules": false, 14 | "exclude": [ 15 | "transform-async-to-generator", 16 | "transform-regenerator" 17 | ], 18 | "useBuiltIns": false 19 | }] 20 | ], 21 | "exclude": "node_modules/**" 22 | } 23 | -------------------------------------------------------------------------------- /config/packages/jms_serializer.yaml: -------------------------------------------------------------------------------- 1 | #jms_serializer: 2 | # visitors: 3 | # xml: 4 | # format_output: '%kernel.debug%' 5 | # metadata: 6 | # auto_detection: false 7 | # directories: 8 | # any-name: 9 | # namespace_prefix: "My\\FooBundle" 10 | # path: "@MyFooBundle/Resources/config/serializer" 11 | # another-name: 12 | # namespace_prefix: "My\\BarBundle" 13 | # path: "@MyBarBundle/Resources/config/serializer" 14 | -------------------------------------------------------------------------------- /docs/cookbook/bdd/behat/how-to-define-new-suite.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to define a new suite? 8 | ========================== 9 | 10 | To define a new suite it is needed to create a suite configuration file in a one of ``cli``/``ui`` directory inside ``config/suites``. 11 | Then register that file in ``config/suites.yaml``. 12 | 13 | .. _Monofony documentation: https://docs.monofony.com 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/admin/dashboard.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_dashboard: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Setup\CustomerContext 8 | - App\Tests\Behat\Context\Setup\AdminSecurityContext 9 | 10 | - App\Tests\Behat\Context\Ui\Backend\DashboardContext 11 | filters: 12 | tags: "@admin_dashboard&&@ui" 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/tests/Behat/Page/Backend/Administrator/IndexPage.php: -------------------------------------------------------------------------------- 1 | {{ 'sylius.ui.personal_information'|trans }} 2 |
3 | {{ form_row(form.firstName) }} 4 | {{ form_row(form.lastName) }} 5 |
6 | {{ form_row(form.email) }} 7 | {{ form_row(form.phoneNumber) }} 8 |

{{ 'sylius.ui.account_credentials'|trans }}

9 | {{ form_row(form.user.plainPassword.first) }} 10 | {{ form_row(form.user.plainPassword.second) }} 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request--.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request ✅ 3 | about: Suggest an idea for a feature or improvement 4 | 5 | --- 6 | 7 | **Describe the proposed solution** 8 | 9 | 10 | **Describe alternatives you've considered** 11 | 12 | 13 | **Additional context** 14 | 15 | -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 5 | 6 | 7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/reset_password_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/ConstraintViolationList", 3 | "@type": "ConstraintViolationList", 4 | "hydra:title": "An error occurred", 5 | "hydra:description": "password: This value should not be blank.", 6 | "violations": [ 7 | { 8 | "propertyPath": "password", 9 | "message": "This value should not be blank.", 10 | "code": "@string@" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Core/Model/User/AdminAvatarInterface.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | {{ amountOfCustomers }} 6 |
7 |
8 | {{ 'sylius.ui.customers'|trans }} 9 |
10 |
11 |
12 | 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/config/packages/monofony_api.yaml: -------------------------------------------------------------------------------- 1 | api_platform: 2 | version: !php/const App\Kernel::VERSION 3 | mapping: 4 | paths: ['%kernel.project_dir%/config/api_platform/resources/'] 5 | swagger: 6 | versions: [3] 7 | api_keys: 8 | apiKey: 9 | name: Authorization 10 | type: header 11 | 12 | framework: 13 | serializer: 14 | enabled: true 15 | mapping: 16 | paths: ['%kernel.project_dir%/config/serialization/'] 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/src/Message/ResetPassword.php: -------------------------------------------------------------------------------- 1 | password = $password; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Behaviour/DocumentAccessor.php: -------------------------------------------------------------------------------- 1 | getDocument()->fillField('Name', $name); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/src/Message/ResetPasswordRequest.php: -------------------------------------------------------------------------------- 1 | email = $email; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/login.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_customer_login: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Transform\UserContext 8 | 9 | - App\Tests\Behat\Context\Setup\UserContext 10 | 11 | - App\Tests\Behat\Context\Ui\EmailContext 12 | - App\Tests\Behat\Context\Ui\Frontend\LoginContext 13 | filters: 14 | tags: "@customer_login&&@ui" 15 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/account/layout.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'frontend/layout.html.twig' %} 2 | 3 | {% block content %} 4 | {% block breadcrumb %} 5 | {% endblock %} 6 | 7 |
8 |
9 | {{ knp_menu_render('app.account', {'template': 'frontend/menu/simple.html.twig'}) }} 10 |
11 |
12 | {% block subcontent %} 13 | {% endblock %} 14 |
15 |
16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/tests/Behat/Page/Frontend/Account/VerificationPage.php: -------------------------------------------------------------------------------- 1 | tryToOpen(['token' => $token]); 14 | } 15 | 16 | public function getRouteName(): string 17 | { 18 | return 'sylius_frontend_user_verification'; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Responses/customer/wrong_current_password_validation_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "/api/contexts/ConstraintViolationList", 3 | "@type": "ConstraintViolationList", 4 | "hydra:title": "An error occurred", 5 | "hydra:description": "currentPassword: Provided password is different than the current one.", 6 | "violations": [ 7 | { 8 | "propertyPath": "currentPassword", 9 | "message": "Provided password is different than the current one.", 10 | "code": "@string@" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /assets/controllers/hello_controller.js: -------------------------------------------------------------------------------- 1 | import { Controller } from '@hotwired/stimulus'; 2 | 3 | /* 4 | * This is an example Stimulus controller! 5 | * 6 | * Any element with a data-controller="hello" attribute will cause 7 | * this controller to be executed. The name "hello" comes from the filename: 8 | * hello_controller.js -> "hello" 9 | * 10 | * Delete this file or adapt it for your use! 11 | */ 12 | export default class extends Controller { 13 | connect() { 14 | this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js'; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /config/packages/prod/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: fingers_crossed 5 | action_level: error 6 | handler: nested 7 | excluded_404s: 8 | # regex: exclude all 404 errors from the logs 9 | - ^/ 10 | nested: 11 | type: stream 12 | path: "%kernel.logs_dir%/%kernel.environment%.log" 13 | level: debug 14 | console: 15 | type: console 16 | process_psr_3_messages: false 17 | channels: ["!event", "!doctrine"] 18 | -------------------------------------------------------------------------------- /docs/cookbook/bdd/phpspec/how-to-disable-phpspec-code-coverage.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to disable phpspec code coverage 8 | ==================================== 9 | 10 | .. code-block:: bash 11 | 12 | $ cp phpspec.yml.dist phpspec 13 | 14 | And just comment the content 15 | 16 | .. code-block:: yaml 17 | 18 | # extensions: 19 | # LeanPHP\PhpSpec\CodeCoverage\CodeCoverageExtension: ~ 20 | 21 | .. _Monofony documentation: https://docs.monofony.com 22 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/Setter/CookieSetterInterface.php: -------------------------------------------------------------------------------- 1 | getDocument()->fillField('Code', $code); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Api/OpenApi/Factory/AppAuthenticationTokenOpenApiFactoryInterface.php: -------------------------------------------------------------------------------- 1 | getDocument()->fillField('Description', $description); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/spec/App/Message/ResetPasswordSpec.php: -------------------------------------------------------------------------------- 1 | beConstructedWith('newPassw0rd'); 13 | } 14 | 15 | function it_is_initializable(): void 16 | { 17 | $this->shouldHaveType(ResetPassword::class); 18 | } 19 | 20 | function it_can_get_password(): void 21 | { 22 | $this->password->shouldReturn('newPassw0rd'); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /config/packages/messenger.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | messenger: 3 | # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. 4 | # failure_transport: failed 5 | 6 | transports: 7 | # https://symfony.com/doc/current/messenger.html#transport-configuration 8 | # async: '%env(MESSENGER_TRANSPORT_DSN)%' 9 | # failed: 'doctrine://default?queue_name=failed' 10 | # sync: 'sync://' 11 | 12 | routing: 13 | # Route your messages to the transports 14 | # 'App\Message\YourMessage': async 15 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/templates/emails/passwordReset.html.twig: -------------------------------------------------------------------------------- 1 | {% block subject %} 2 | Password reset 3 | {% endblock %} 4 | 5 | {% block body %} 6 | {% set url = '#' %} 7 | {# Uncomment if you have monofony/front-pack installed #} 8 | {#{% set url = url('app_frontend_password_reset', { 'token': user.passwordResetToken}) %}#} 9 | {% autoescape %} 10 |

Hello {{ user.username }}

11 | 12 | To reset your password - please visit {{ url|raw }} 13 |

14 | Regards, the Team. 15 | {% endautoescape %} 16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | | Q | A | 2 | |-----------------|-----------------------------------------| 3 | | Branch? | 0.10 or 0.11 | 4 | | Bug fix? | no/yes | 5 | | New feature? | no/yes | 6 | | Related tickets | fixes #X, partially #Y, mentioned in #Z | 7 | | License | MIT | 8 | 9 | 13 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/Accessor/NotificationAccessorInterface.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | {{ headers.default(header|trans, configuration.vars.icon|default('plus'), configuration.vars.subheader|default(null)|trans) }} 6 | 7 | {% include configuration.vars.templates.breadcrumb|default('backend/crud/create/_breadcrumb.html.twig') %} 8 |
9 |
10 | {% include configuration.vars.templates.toolbar|default('backend/crud/_toolbar.html.twig') ignore missing %} 11 |
12 | 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/crud/update/_header.html.twig: -------------------------------------------------------------------------------- 1 | {% import '@SyliusUi/Macro/headers.html.twig' as headers %} 2 | 3 |
4 |
5 | {{ headers.default(header|trans, configuration.vars.icon|default('pencil'), configuration.vars.subheader|default(null)|trans) }} 6 | 7 | {% include configuration.vars.templates.breadcrumb|default('backend/crud/update/_breadcrumb.html.twig') %} 8 |
9 |
10 | {% include configuration.vars.templates.toolbar|default('backend/crud/_toolbar.html.twig') ignore missing %} 11 |
12 |
13 | -------------------------------------------------------------------------------- /config/packages/dev/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | handlers: 3 | main: 4 | type: stream 5 | path: "%kernel.logs_dir%/%kernel.environment%.log" 6 | level: debug 7 | channels: ["!event"] 8 | # uncomment to get logging in your browser 9 | # you may have to allow bigger header sizes in your Web server configuration 10 | #firephp: 11 | # type: firephp 12 | # level: info 13 | #chromephp: 14 | # type: chromephp 15 | # level: info 16 | console: 17 | type: console 18 | process_psr_3_messages: false 19 | channels: ["!event", "!doctrine", "!console"] 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/tests/Behat/Context/Cli/CommandContext.php: -------------------------------------------------------------------------------- 1 | getTester()->getStatusCode(), 0); 17 | } 18 | 19 | /** 20 | * @Then I should see output :text 21 | */ 22 | public function iShouldSeeOutput(string $text): void 23 | { 24 | Assert::contains($this->getTester()->getDisplay(), $text); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/admin/dashboard.feature: -------------------------------------------------------------------------------- 1 | @admin_dashboard 2 | Feature: Statistics dashboard 3 | In order to have an overview of my database 4 | As an Administrator 5 | I want to see overall statistics on my admin dashboard 6 | 7 | Background: 8 | Given I am logged in as an administrator 9 | 10 | @ui 11 | Scenario: Seeing statistics 12 | Given there are 9 customers 13 | When I open administration dashboard 14 | Then I should see 9 new customers 15 | 16 | @ui 17 | Scenario: Seeing recent customers 18 | Given there are 4 customers 19 | When I open administration dashboard 20 | Then I should see 4 new customers in the list 21 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/user/managing_administrators/adding_avatar_to_administrator.feature: -------------------------------------------------------------------------------- 1 | @managing_administrators 2 | Feature: Adding an avatar to an administrator 3 | In order to visually identify the account 4 | As an Administrator 5 | I want to add an avatar to an administrator account 6 | 7 | Background: 8 | Given I am logged in as an administrator 9 | 10 | @ui 11 | Scenario: Adding an avatar to administrator account 12 | Given I am editing my details 13 | When I upload the "troll.jpg" image as my avatar 14 | Then I should see the "troll.jpg" image as my avatar 15 | And I should see the "troll.jpg" avatar image in the top bar next to my name 16 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/security/login.html.twig: -------------------------------------------------------------------------------- 1 | {% extends '@SyliusUi/Layout/centered.html.twig' %} 2 | 3 | {% block title %}AppName | {{ 'sylius.ui.administration_panel_login'|trans }}{% endblock %} 4 | 5 | {% block stylesheets %} 6 | {% include '@SyliusUi/_stylesheets.html.twig' with {'path': 'assets/backend/app.css'} %} 7 | {% endblock %} 8 | 9 | {% block content %} 10 | {% include '@SyliusUi/Security/_login.html.twig' with {'action': path('sylius_backend_login_check'), 'paths': {'logo': 'assets/backend/img/logo.png'}} %} 11 | {% endblock %} 12 | 13 | {% block javascripts %} 14 | {% include '@SyliusUi/_javascripts.html.twig' with {'path': 'assets/backend/app.js'} %} 15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Entity/User/AdminAvatar.php: -------------------------------------------------------------------------------- 1 | setBarCharacter(''); 16 | $progress->setEmptyBarCharacter(' '); 17 | $progress->setProgressCharacter(''); 18 | 19 | $progress->start($length); 20 | 21 | return $progress; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /config/services/monofony_core.yaml: -------------------------------------------------------------------------------- 1 | parameters: 2 | locale: fr_FR 3 | email_contact: contact@example.com 4 | email_name: Contact AppName 5 | email_sender: no-reply@example.com 6 | 7 | services: 8 | _defaults: 9 | autowire: true # Automatically injects dependencies in your services 10 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 11 | bind: 12 | $environment: '%kernel.environment%' 13 | 14 | app_core_bundle: 15 | namespace: App\ 16 | resource: '../../src/Monofony/MetaPack/CoreMeta/.recipe/src/*' 17 | exclude: '../../src/Monofony/MetaPack/CoreMeta/.recipe/src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' 18 | -------------------------------------------------------------------------------- /src/Monofony/Component/Core/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/core", 3 | "type": "library", 4 | "description": "Monofony core.", 5 | "license": "MIT", 6 | "require": { 7 | "php": "^8.2" 8 | }, 9 | "require-dev": { 10 | "phpstan/phpstan": "^1.5" 11 | }, 12 | "autoload": { 13 | "psr-4": { 14 | "Monofony\\Component\\Core\\": "" 15 | } 16 | }, 17 | "minimum-stability": "dev", 18 | "prefer-stable": true, 19 | "repositories": [ 20 | { 21 | "type": "path", 22 | "url": "../../*/*" 23 | } 24 | ], 25 | "extra": { 26 | "branch-alias": { 27 | "dev-master": "0.11-dev" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/dashboard/_menu.html.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/customer.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_customer_account: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Transform\CustomerContext 8 | - App\Tests\Behat\Context\Transform\SharedStorageContext 9 | 10 | - App\Tests\Behat\Context\Setup\CustomerContext 11 | - App\Tests\Behat\Context\Setup\AppSecurityContext 12 | - App\Tests\Behat\Context\Setup\UserContext 13 | 14 | - App\Tests\Behat\Context\Ui\Frontend\AccountContext 15 | filters: 16 | tags: "@customer_account&&@ui" 17 | -------------------------------------------------------------------------------- /config/behat/suites.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | - ../../src/Monofony/MetaPack/CoreMeta/.recipe/config/behat/suites/cli/installer.yaml 3 | 4 | - ../../src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/admin/dashboard.yaml 5 | - ../../src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/customer/managing_customers.yaml 6 | - ../../src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/user/managing_administrators.yaml 7 | 8 | - ../../src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/customer.yaml 9 | - ../../src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/login.yaml 10 | - ../../src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/registration.yaml 11 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/_menu.html.twig: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/NotificationCheckerInterface.php: -------------------------------------------------------------------------------- 1 | sharedStorage = $sharedStorage; 17 | } 18 | 19 | /** 20 | * @Transform /^(I|my|he|his|she|her|"this user")$/ 21 | */ 22 | public function getLoggedUser(): mixed 23 | { 24 | return $this->sharedStorage->get('user'); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/DataFixtures/DefaultFixtures.php: -------------------------------------------------------------------------------- 1 | bootEnv(dirname(__DIR__).'/.env'); 12 | } else { 13 | require dirname(__DIR__).'/config/bootstrap.php'; 14 | } 15 | 16 | if ($_SERVER['APP_DEBUG']) { 17 | umask(0000); 18 | 19 | Debug::enable(); 20 | } 21 | 22 | $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); 23 | $request = Request::createFromGlobals(); 24 | $response = $kernel->handle($request); 25 | $response->send(); 26 | $kernel->terminate($request, $response); 27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/customer/show.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'backend/layout.html.twig' %} 2 | 3 | {% import '@SyliusUi/Macro/labels.html.twig' as label %} 4 | {% import '@SyliusUi/Macro/buttons.html.twig' as buttons %} 5 | 6 | {% block title %}{{ parent() }} {{ 'sylius.ui.customer'|trans ~' '~ customer.email }}{% endblock %} 7 | 8 | {% block content %} 9 |
10 | {% include 'backend/customer/show/_header.html.twig' %} 11 |
12 | 13 |
14 | {% include 'backend/customer/show/_breadcrumb.html.twig' %} 15 | 16 |
17 | {% include 'backend/customer/show/_content.html.twig' %} 18 |
19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/layout/_security.html.twig: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/features/account/customer_account/editing_customer_profile.feature: -------------------------------------------------------------------------------- 1 | @customer_account 2 | Feature: Editing a customer profile 3 | In order to manage my personal information 4 | As a Customer 5 | I want to be able to edit my name and email 6 | 7 | Background: 8 | Given there is a user "francis@underwood.com" identified by "whitehouse" 9 | And I am logged in as "francis@underwood.com" 10 | 11 | @ui 12 | Scenario: Changing my email 13 | When I want to modify my profile 14 | And I specify the customer email as "frank@underwood.com" 15 | And I save my changes 16 | Then I should be notified that it has been successfully edited 17 | And my email should be "frank@underwood.com" 18 | -------------------------------------------------------------------------------- /config/services_test.yaml: -------------------------------------------------------------------------------- 1 | imports: 2 | resource: "../src/Monofony/Bridge/Behat/services_test.yaml" 3 | 4 | parameters: 5 | locale: en_US 6 | 7 | services: 8 | _defaults: 9 | autowire: true 10 | autoconfigure: true 11 | bind: 12 | $minkParameters: '@behat.mink.parameters' 13 | 14 | app_tests_behat_core: 15 | namespace: App\Tests\Behat\ 16 | resource: '../src/Monofony/MetaPack/CoreMeta/.recipe/tests/Behat/*' 17 | 18 | app_tests_behat_admin: 19 | namespace: App\Tests\Behat\ 20 | resource: '../src/Monofony/MetaPack/AdminMeta/.recipe/tests/Behat/*' 21 | 22 | app_tests_behat_front: 23 | namespace: App\Tests\Behat\ 24 | resource: '../src/Monofony/MetaPack/FrontMeta/.recipe/tests/Behat/*' 25 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/customer/managing_customers.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_managing_customers: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Setup\CustomerContext 8 | - App\Tests\Behat\Context\Setup\AdminSecurityContext 9 | 10 | - App\Tests\Behat\Context\Transform\CustomerContext 11 | - App\Tests\Behat\Context\Transform\SharedStorageContext 12 | 13 | - App\Tests\Behat\Context\Ui\Backend\ManagingCustomersContext 14 | - App\Tests\Behat\Context\Ui\Backend\NotificationContext 15 | filters: 16 | tags: "@managing_customers&&@ui" 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/user/managing_administrators/browsing_administrator.feature: -------------------------------------------------------------------------------- 1 | @managing_administrators 2 | Feature: Browsing administrators 3 | In order to see all administrators in the admin panel 4 | As an Administrator 5 | I want to browse administrators 6 | 7 | Background: 8 | Given there is an administrator "mr.banana@example.com" 9 | And there is also an administrator "ted@example.com" 10 | And I am logged in as "ted@example.com" administrator 11 | 12 | @ui 13 | Scenario: Browsing administrators in the admin panel 14 | When I want to browse administrators 15 | Then there should be 2 administrators in the list 16 | And I should see the administrator "mr.banana@example.com" in the list 17 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/crud/create/_breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 | {% import '@SyliusUi/Macro/breadcrumb.html.twig' as breadcrumb %} 2 | 3 | {% set index_url = path( 4 | configuration.vars.index.route.name|default(configuration.getRouteName('index')), 5 | configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({})) 6 | ) 7 | %} 8 | 9 | {% set breadcrumb = configuration.vars.breadcrumb|default(metadata.applicationName~'.ui.'~metadata.pluralName) %} 10 | 11 | {% set breadcrumbs = [ 12 | { label: 'sylius.ui.administration'|trans, url: path('app_backend_dashboard') }, 13 | { label: breadcrumb|trans, url: index_url }, 14 | { label: 'sylius.ui.new'|trans } 15 | ] 16 | %} 17 | 18 | {{ breadcrumb.crumble(breadcrumbs) }} 19 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/tests/Controller/JsonApiTestCase.php: -------------------------------------------------------------------------------- 1 | expectedResponsesPath = __DIR__.'/../Responses'; 17 | } 18 | 19 | /** 20 | * @before 21 | */ 22 | public function setUpClient(): void 23 | { 24 | $this->client = static::createClient([], ['HTTP_ACCEPT' => 'application/ld+json']); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/register/_header.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |

6 | 7 |
8 | {{ 'sylius.ui.register_in_the_store'|trans }} 9 |
{{ 'sylius.ui.create_a_new_customer_account'|trans }}
10 |
11 |

12 |
13 |
14 | {{ 'sylius.ui.have_an_account_already'|trans }} {{ 'sylius.ui.sign_in_here'|trans }}. 15 |
16 |
17 | -------------------------------------------------------------------------------- /compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | ###> doctrine/doctrine-bundle ### 3 | database: 4 | image: postgres:${POSTGRES_VERSION:-16}-alpine 5 | environment: 6 | POSTGRES_DB: ${POSTGRES_DB:-monofony} 7 | # You should definitely change the password in production 8 | POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-monofony} 9 | POSTGRES_USER: ${POSTGRES_USER:-monofony} 10 | volumes: 11 | - database_data:/var/lib/postgresql/data:rw 12 | # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data! 13 | # - ./docker/db/data:/var/lib/postgresql/data:rw 14 | ###< doctrine/doctrine-bundle ### 15 | 16 | volumes: 17 | ###> doctrine/doctrine-bundle ### 18 | database_data: 19 | ###< doctrine/doctrine-bundle ### 20 | -------------------------------------------------------------------------------- /docs/cookbook/bdd/phpspec/index.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to use Phpspec to design your code 8 | -------------------------------------- 9 | 10 | .. toctree:: 11 | :hidden: 12 | 13 | how-to-configure-phpspec-with-code-coverage 14 | how-to-disable-phpspec-code-coverage 15 | how-to-design-entities-with-phpspec 16 | how-to-design-services-with-phpspec 17 | 18 | .. include:: /cookbook/bdd/phpspec/map.rst.inc 19 | 20 | Learn more 21 | ---------- 22 | 23 | .. note:: 24 | 25 | To learn more, read the `Phpspec documentation `_. 26 | 27 | .. _Monofony documentation: https://docs.monofony.com 28 | -------------------------------------------------------------------------------- /docs/cookbook/bdd/behat/how-to-change-behat-application-base-url.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to change Behat application base url 8 | ---------------------------------------- 9 | 10 | By default Behat uses ``https://localhost:8080/`` as your application base url. If your one is different, 11 | you need to create ``behat.yml`` files that will overwrite it with your custom url: 12 | 13 | .. code-block:: yaml 14 | 15 | # behat.yml 16 | 17 | imports: ["behat.yml.dist"] 18 | 19 | default: 20 | extensions: 21 | Behat\MinkExtension: 22 | base_url: http://my.custom.url 23 | 24 | .. _Monofony documentation: https://docs.monofony.com 25 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'backend/layout.html.twig' %} 2 | 3 | {% import '@SyliusUi/Macro/headers.html.twig' as headers %} 4 | 5 | {% block title %}{{ parent() }}{{ 'sylius.ui.dashboard'|trans }}{% endblock %} 6 | 7 | {% block content %} 8 | {{ headers.default('sylius.ui.dashboard'|trans, 'home', 'app.ui.overview_of_your_website'|trans) }} 9 | 10 | {% include 'backend/dashboard/_statistics.html.twig' %} 11 | {% include 'backend/dashboard/_menu.html.twig' %} 12 | 13 |
14 |
15 | {{ render(url('sylius_backend_partial_customer_latest', {'count': 5, 'template': 'backend/dashboard/_customers.html.twig'})) }} 16 |
17 |
18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/user/managing_customers/browsing_customers/browsing_customers.feature: -------------------------------------------------------------------------------- 1 | @managing_customers 2 | Feature: Browsing customers 3 | In order to see all customers in the admin panel 4 | As an Administrator 5 | I want to browse customers 6 | 7 | Background: 8 | Given there is a customer "f.baggins@example.com" 9 | And there is also a customer "mr.banana@example.com" 10 | And there is also a customer "l.skywalker@example.com" 11 | And I am logged in as an administrator 12 | 13 | @ui 14 | Scenario: Browsing customers in the admin panel 15 | When I want to see all customers in the admin panel 16 | Then I should see 3 customers in the list 17 | And I should see the customer "mr.banana@example.com" in the list 18 | -------------------------------------------------------------------------------- /docs/book/architecture/index.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | Architecture 8 | ============ 9 | 10 | .. note:: 11 | 12 | This section is based on the great `Sylius documentation `_. 13 | 14 | Before we dive separately into every Monofony concept, you need to have an overview of how our main application is structured. 15 | In this chapter we will sketch this architecture and our basic, cornerstone concepts, but also some supportive approaches, 16 | that you need to notice. 17 | 18 | .. toctree:: 19 | :hidden: 20 | 21 | architecture 22 | fixtures 23 | 24 | .. include:: /book/architecture/map.rst.inc 25 | 26 | .. _Monofony documentation: https://docs.monofony.com 27 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Client/ApiSecurityClientInterface.php: -------------------------------------------------------------------------------- 1 | 2 | {{ form_start(form, {'action': path(configuration.vars.route.name|default(configuration.getRouteName('create')), configuration.vars.route.parameters|default({})), 'attr': {'class': 'ui loadable form', 'novalidate': 'novalidate'}}) }} 3 | {% if configuration.vars.templates.form is defined %} 4 | {% include configuration.vars.templates.form %} 5 | {{ form_row(form._token) }} 6 | {% else %} 7 | {{ form_widget(form) }} 8 | {% endif %} 9 | 10 | {% include '@SyliusUi/Form/Buttons/_create.html.twig' with {'paths': {'cancel': path(configuration.getRouteName('index'), configuration.vars.route.parameters|default({}))}} %} 11 | 12 | {{ form_end(form, {'render_rest': false}) }} 13 | 14 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/tests/Behat/Context/Hook/DoctrineORMContext.php: -------------------------------------------------------------------------------- 1 | entityManager->getConnection()->getConfiguration()->setSQLLogger(); 23 | $purger = new ORMPurger($this->entityManager); 24 | $purger->purge(); 25 | $this->entityManager->clear(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/tests/Behat/Context/Transform/AdminUserContext.php: -------------------------------------------------------------------------------- 1 | sharedStorage = $sharedStorage; 18 | } 19 | 20 | /** 21 | * @Transform /^(I|my)$/ 22 | */ 23 | public function getLoggedAdminUser(): AdminUserInterface 24 | { 25 | return $this->sharedStorage->get('administrator'); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "babel-polyfill": "^6.26.0", 4 | "jquery": "^3.4.0", 5 | "lightbox2": "^2.9.0", 6 | "semantic-ui-css": "npm:fomantic-ui-css@^2.7.0" 7 | }, 8 | "devDependencies": { 9 | "@hotwired/stimulus": "^3.0.0", 10 | "@symfony/stimulus-bridge": "^3.2.0", 11 | "@symfony/ux-live-component": "file:vendor/symfony/ux-live-component/assets", 12 | "@symfony/webpack-encore": "^0.32.0", 13 | "core-js": "^3.0.0", 14 | "sass": "^1.48.0", 15 | "sass-loader": "^9.0.1", 16 | "upath": "^1.1.0", 17 | "yargs": "^6.4.0" 18 | }, 19 | "license": "UNLICENSED", 20 | "private": true, 21 | "scripts": { 22 | "dev-server": "encore dev-server", 23 | "dev": "encore dev", 24 | "watch": "encore dev --watch", 25 | "build": "encore production --progress" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/src/Controller/DashboardController.php: -------------------------------------------------------------------------------- 1 | statisticsProvider->getStatistics(); 22 | $content = $this->twig->render('backend/index.html.twig', ['statistics' => $statistics]); 23 | 24 | return new Response($content); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Repository/UserRepository.php: -------------------------------------------------------------------------------- 1 | createQueryBuilder('o') 16 | ->innerJoin('o.customer', 'customer') 17 | ->andWhere('customer.emailCanonical = :email') 18 | ->setParameter('email', $email) 19 | ->getQuery() 20 | ->getOneOrNullResult() 21 | ; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Crud/CreatePageInterface.php: -------------------------------------------------------------------------------- 1 | 2 | {{ form_start(form, {'action': path(configuration.getRouteName('update'), configuration.vars.route.parameters|default({ 'id': resource.id })), 'attr': {'class': 'ui loadable form', 'novalidate': 'novalidate'}}) }} 3 | 4 | {% if configuration.vars.templates.form is defined %} 5 | {% include configuration.vars.templates.form %} 6 | {{ form_row(form._token) }} 7 | {% else %} 8 | {{ form_widget(form) }} 9 | {% endif %} 10 | {% include '@SyliusUi/Form/Buttons/_update.html.twig' with {'paths': {'cancel': path(configuration.getRouteName('index'), configuration.vars.route.parameters|default({}))}} %} 11 | {{ form_end(form, {'render_rest': false}) }} 12 | 13 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Validator/Initializer/CustomerInitializer.php: -------------------------------------------------------------------------------- 1 | canonicalizer->canonicalize($object->getEmail()); 21 | $object->setEmailCanonical($emailCanonical); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/behat/suites/ui/user/managing_administrators.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_managing_administrators: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | 7 | - App\Tests\Behat\Context\Setup\AdminSecurityContext 8 | - App\Tests\Behat\Context\Setup\AdminUserContext 9 | 10 | - App\Tests\Behat\Context\Transform\AdminUserContext 11 | - App\Tests\Behat\Context\Transform\SharedStorageContext 12 | 13 | - App\Tests\Behat\Context\Ui\Backend\ManagingAdministratorsContext 14 | - App\Tests\Behat\Context\Ui\Backend\LoginContext 15 | - App\Tests\Behat\Context\Ui\Backend\NotificationContext 16 | filters: 17 | tags: "@managing_administrators&&@ui" 18 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/user/managing_customers/seeing_customer_details.feature: -------------------------------------------------------------------------------- 1 | @managing_customers 2 | Feature: Seeing customer's details 3 | In order to see customer's details 4 | As an Administrator 5 | I want to be able to show specific customer's page 6 | 7 | Background: 8 | Given I am logged in as an administrator 9 | And there is a customer "f.baggins@shire.me" with name "Frodo Baggins" and phone number "666777888" since "2011-01-10 21:00" 10 | 11 | @ui 12 | Scenario: Seeing customer's basic information 13 | When I view details of the customer "f.baggins@shire.me" 14 | Then his name should be "Frodo Baggins" 15 | And he should be registered since "2011-01-10 21:00" 16 | And his email should be "f.baggins@shire.me" 17 | And his phone number should be "666777888" 18 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/crud/update/_breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 | {% import '@SyliusUi/Macro/breadcrumb.html.twig' as breadcrumb %} 2 | 3 | {% set index_url = path( 4 | configuration.vars.index.route.name|default(configuration.getRouteName('index')), 5 | configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({})) 6 | ) 7 | %} 8 | 9 | {% set breadcrumb = configuration.vars.breadcrumb|default(metadata.applicationName~'.ui.'~metadata.pluralName) %} 10 | 11 | {% set breadcrumbs = [ 12 | { label: 'sylius.ui.administration'|trans, url: path('app_backend_dashboard') }, 13 | { label: breadcrumb|trans, url: index_url }, 14 | { label: resource.name|default(resource.code|default(resource.id)) }, 15 | { label: 'sylius.ui.edit'|trans } 16 | ] 17 | %} 18 | 19 | {{ breadcrumb.crumble(breadcrumbs) }} 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/translations/flashes.fr.yaml: -------------------------------------------------------------------------------- 1 | app: 2 | address: 3 | create: L'adresse a bien été créée. 4 | update: L'adresse a bien été mise à jour. 5 | delete: L'adresse a bien été supprimée. 6 | sylius: 7 | admin_user: 8 | create: L'administrateur a bien été créé. 9 | update: L'administrateur a bien été mis à jour. 10 | delete: L'administrateur a bien été supprimé. 11 | user: 12 | change_password: Votre mot de passe a été mis à jour avec succès ! 13 | customer: 14 | create: Le client a bien été créé. 15 | update: Le client a bien été mis à jour. 16 | delete: Le client a bien été supprimé. 17 | update_profile: Votre profil a bien été mis à jour. 18 | register: 'Merci pour votre inscription, vous allez recevoir un mail pour vérifier votre compte.' -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/config/sylius/routes/backend/customer.yaml: -------------------------------------------------------------------------------- 1 | sylius_backend_customer: 2 | resource: | 3 | section: backend 4 | alias: sylius.customer 5 | templates: 'backend/crud' 6 | grid: sylius_backend_customer 7 | redirect: index 8 | vars: 9 | all: 10 | subheader: sylius.ui.manage_your_customers 11 | templates: 12 | form: backend/customer/_form.html.twig 13 | index: 14 | icon: users 15 | type: sylius.resource 16 | 17 | sylius_backend_customer_show: 18 | path: /customers/{id} 19 | defaults: 20 | _controller: sylius.controller.customer::showAction 21 | _sylius: 22 | section: backend 23 | template: backend/customer/show.html.twig 24 | permission: true 25 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/SharedStorageInterface.php: -------------------------------------------------------------------------------- 1 | addEventSubscriber(new AddUserFormSubscriber()); 20 | } 21 | 22 | /** 23 | * {@inheritdoc} 24 | */ 25 | public static function getExtendedTypes(): iterable 26 | { 27 | return [CustomerType::class]; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/config/behat/suites/ui/account/registration.yaml: -------------------------------------------------------------------------------- 1 | default: 2 | suites: 3 | ui_customer_registration: 4 | contexts: 5 | - App\Tests\Behat\Context\Hook\DoctrineORMContext 6 | # - sylius.behat.context.hook.email_spool 7 | 8 | - App\Tests\Behat\Context\Transform\SharedStorageContext 9 | - App\Tests\Behat\Context\Transform\CustomerContext 10 | 11 | - App\Tests\Behat\Context\Setup\CustomerContext 12 | # - app.behat.context.setup.shop_security 13 | - App\Tests\Behat\Context\Setup\UserContext 14 | 15 | - App\Tests\Behat\Context\Ui\EmailContext 16 | - App\Tests\Behat\Context\Ui\Frontend\RegistrationContext 17 | filters: 18 | tags: "@customer_registration&&@ui" 19 | -------------------------------------------------------------------------------- /config/packages/liip_imagine.yaml: -------------------------------------------------------------------------------- 1 | # See dos how to configure the bundle: https://symfony.com/doc/current/bundles/LiipImagineBundle/basic-usage.html 2 | liip_imagine: 3 | # valid drivers options include "gd" or "gmagick" or "imagick" 4 | driver: "gd" 5 | loaders: 6 | default: 7 | filesystem: 8 | locator: filesystem_insecure 9 | data_root: 10 | - '%kernel.project_dir%/public' 11 | filter_sets: 12 | # @see http://symfony.com/doc/current/bundles/LiipImagineBundle/filters.html 13 | cache: ~ 14 | default: 15 | quality: 100 16 | filters: 17 | auto_rotate: ~ 18 | relative_resize: { scale: 1 } 19 | app_backend_admin_user_avatar_thumbnail: 20 | filters: 21 | thumbnail: { size: [50, 50], mode: outbound } 22 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/DriverHelper.php: -------------------------------------------------------------------------------- 1 | setDefaults([ 20 | 'widget' => 'single_text', 21 | 'html5' => false, 22 | ]); 23 | } 24 | 25 | /** 26 | * {@inheritdoc} 27 | */ 28 | public static function getExtendedTypes(): iterable 29 | { 30 | return [DateType::class]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/ApiMeta/.recipe/src/Story/TestAppUsersStory.php: -------------------------------------------------------------------------------- 1 | 'api@sylius.com', 16 | 'username' => 'sylius', 17 | 'password' => 'sylius', 18 | 'first_name' => 'Sam', 19 | 'last_name' => 'Identifie', 20 | ]); 21 | 22 | AppUserFactory::createOne([ 23 | 'email' => 'another-customer@example.com', 24 | 'username' => 'monofony', 25 | 'password' => 'monofony', 26 | 'first_name' => 'Another', 27 | 'last_name' => 'Customer', 28 | ]); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Repository/CustomerRepository.php: -------------------------------------------------------------------------------- 1 | createQueryBuilder('o') 14 | ->select('COUNT(o.id)') 15 | ->getQuery() 16 | ->getSingleScalarResult(); 17 | } 18 | 19 | public function findLatest(int $count): array 20 | { 21 | return $this->createQueryBuilder('o') 22 | ->addSelect('user') 23 | ->leftJoin('o.user', 'user') 24 | ->addOrderBy('o.createdAt', 'DESC') 25 | ->setMaxResults($count) 26 | ->getQuery() 27 | ->getResult(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys, os 3 | from sphinx.highlighting import lexers 4 | from pygments.lexers.web import PhpLexer 5 | 6 | extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.imgmath', 'sphinx.ext.ifconfig', 'sensio.sphinx.configurationblock'] 7 | source_suffix = '.rst' 8 | master_doc = 'index' 9 | project = 'Monofony' 10 | copyright = u'2017, Monofony' 11 | version = '' 12 | release = '' 13 | exclude_patterns = ['_includes/*.rst'] 14 | html_theme = 'sylius_rtd_theme' 15 | html_theme_path = ["_themes"] 16 | htmlhelp_basename = 'Syliusdoc' 17 | man_pages = [ 18 | ('index', 'sylius', u'Sylius Documentation', 19 | [u'Monofony'], 1) 20 | ] 21 | sys.path.append(os.path.abspath('_exts')) 22 | lexers['php'] = PhpLexer(startinline=True) 23 | lexers['php-annotations'] = PhpLexer(startinline=True) 24 | rst_epilog = """ 25 | """ 26 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Monofony Documentation 2 | ====================== 3 | 4 | This directory contains documentation for Monofony. 5 | 6 | This documentation is inspired by [Sylius documentation](https://docs.sylius.com). 7 | 8 | Build 9 | ----- 10 | 11 | In order to build the documentation: 12 | * [Install `pip`, Python package manager](https://pip.pypa.io/en/stable/installing/) 13 | 14 | * Download the documentation requirements: 15 | 16 | `$ pip install -r requirements.txt` 17 | 18 | This makes sure that the version of Sphinx you'll get is >=1.4.2! 19 | 20 | * Install [Sphinx](http://www.sphinx-doc.org/en/stable/) 21 | 22 | `$ pip install Sphinx` 23 | 24 | * In the `docs` directory run `$ sphinx-build -b html . build` and view the generated HTML files in the `build` directory. 25 | 26 | * If you want to update the complete structure use `-a` build option in order to rebuild the entire documentation 27 | -------------------------------------------------------------------------------- /docs/deployment/index.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | Deployment 8 | ========== 9 | 10 | Authorized keys API 11 | ------------------- 12 | 13 | Adding ssh authorized keys for server on your local computer 14 | 15 | .. code-block:: bash 16 | 17 | $ cat ~/.ssh/id_rsa.pub | ssh mobizel@XXX.XXX.XX.XX "cat - >> ~/.ssh/authorized_keys" 18 | 19 | and enter the correct password for username "mobizel" on server 20 | 21 | Deploy the staging environment 22 | ------------------------------ 23 | 24 | .. code-block:: bash 25 | 26 | $ bundle exec "cap staging deploy" 27 | 28 | Deploy the production environment 29 | --------------------------------- 30 | 31 | .. code-block:: bash 32 | 33 | $ bundle exec "cap production deploy" 34 | 35 | .. _Monofony documentation: https://docs.monofony.com 36 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/tests/Behat/Page/Frontend/HomePage.php: -------------------------------------------------------------------------------- 1 | getElement('logout_button')->click(); 19 | } 20 | 21 | public function hasLogoutButton(): bool 22 | { 23 | return $this->hasElement('logout_button'); 24 | } 25 | 26 | /** 27 | * {@inheritdoc} 28 | */ 29 | protected function getDefinedElements(): array 30 | { 31 | return array_merge(parent::getDefinedElements(), [ 32 | 'logout_button' => '.app-logout-button', 33 | ]); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/js/app-files-preview.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | const displayUploadedFile = function displayUploadedFile(input) { 4 | debugger; 5 | 6 | if (input.files && input.files[0]) { 7 | const reader = new FileReader(); 8 | 9 | reader.onload = (event) => { 10 | const $link = $(input).parent().siblings('a'); 11 | const fileName = $(input).val().split('\\').pop(); 12 | 13 | $link.removeAttr('href'); 14 | $link.addClass('disabled'); 15 | $('.filename', $link).html(fileName); 16 | $link.show(); 17 | }; 18 | 19 | reader.readAsDataURL(input.files[0]); 20 | } 21 | }; 22 | 23 | $.fn.extend({ 24 | previewUploadedFile(root) { 25 | $(root).on('change', 'input[type="file"]', function () { 26 | displayUploadedFile(this); 27 | }); 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/tests/Behat/Element/Backend/TopBarElement.php: -------------------------------------------------------------------------------- 1 | getAvatarImagePath(), $avatarPath); 14 | } 15 | 16 | public function hasDefaultAvatarInMainBar(): bool 17 | { 18 | return str_contains($this->getAvatarImagePath(), '//placehold.it/50x50'); 19 | } 20 | 21 | private function getAvatarImagePath(): string 22 | { 23 | $image = $this->getDocument()->find('css', 'img.ui.avatar.image'); 24 | 25 | if (null === $image) { 26 | return ''; 27 | } 28 | 29 | return (string) $image->getAttribute('src'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/SprintfResponseEscaper.php: -------------------------------------------------------------------------------- 1 | getContent(), true), \JSON_PRETTY_PRINT), 29 | ), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Form/Type/User/AppUserType.php: -------------------------------------------------------------------------------- 1 | remove('username') 27 | ->remove('email'); 28 | } 29 | 30 | /** 31 | * {@inheritdoc} 32 | */ 33 | public function getBlockPrefix(): string 34 | { 35 | return 'sylius_app_user'; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/AppSecurityService.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | {{ headers.default(header|trans, configuration.vars.icon|default('list'), configuration.vars.subheader|default(null)|trans) }} 6 | 7 | {% include configuration.vars.templates.breadcrumb|default('backend/crud/index/_breadcrumb.html.twig') %} 8 |
9 |
10 |
11 | {% if definition.actionGroups.main is defined and definition.getActions('main')|length > 0 %} 12 | {% for action in definition.getActions('main') %} 13 | {{ sylius_grid_render_action(resources, action, null) }} 14 | {% endfor %} 15 | {% endif %} 16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /infection.json.dist: -------------------------------------------------------------------------------- 1 | { 2 | "timeout": 10, 3 | "source": { 4 | "directories": [ 5 | "src/Monofony/MetaPack/CoreMeta/.recipe/src", 6 | "src/Admin/recipe/src", 7 | "src/Monofony/MetaPack/FrontMeta/.recipe/src", 8 | "src/Monofony/Pack/FixturesPack/.recipe/src", 9 | "src/Monofony/MetaPack/ApiMeta/.recipe/src" 10 | ], 11 | "excludes": [ 12 | "Command", 13 | "Controller", 14 | "DependencyInjection", 15 | "Formatter", 16 | "Menu", 17 | "Migrations", 18 | "Fixture", 19 | "Form/Type", 20 | "Kernel.php" 21 | ] 22 | }, 23 | "logs": { 24 | "text": "infection-log.txt" 25 | }, 26 | "mutators": { 27 | "@default": true, 28 | "IdenticalEqual": false, 29 | "NotIdenticalNotEqual": false 30 | }, 31 | "testFramework":"phpspec" 32 | } 33 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/AdminSecurityService.php: -------------------------------------------------------------------------------- 1 | `. 19 | 20 | 21 | Install phpdbg 22 | -------------- 23 | 24 | .. code-block:: bash 25 | 26 | $ # on linux 27 | $ sudo apt-get install php7.2-phpdbg 28 | $ 29 | $ # on max 30 | $ brew install php72-phpdbg 31 | 32 | .. _Monofony documentation: https://docs.monofony.com 33 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/features/user/managing_customers/browsing_customers/sorting_customers_by_email.feature: -------------------------------------------------------------------------------- 1 | @managing_customers 2 | Feature: Sorting customers by their emails 3 | In order to faster find customers 4 | As an Administrator 5 | I want to be able to sort customers by email 6 | 7 | Background: 8 | Given there is a customer "f.baggins@example.com" 9 | And there is also a customer "mr.banana@example.com" 10 | And there is also a customer "l.skywalker@example.com" 11 | And I am logged in as an administrator 12 | 13 | @ui 14 | Scenario: Customers can be sorted by their emails 15 | Given I am browsing customers 16 | When I start sorting customers by email 17 | Then I should see 3 customers in the list 18 | And the first customer in the list should have email "mr.banana@example.com" 19 | And the last customer in the list should have email "f.baggins@example.com" 20 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/customer/show/_header.html.twig: -------------------------------------------------------------------------------- 1 |
2 |

3 | 4 |
5 | {{ customer|default('sylius.ui.guest_customer'|trans) }} 6 |
7 |
8 |
9 | {{ customer.email }} 10 |
11 | {% if customer.user is null %} 12 |
13 | 14 | {{ 'sylius.ui.guest'|trans }} 15 | 16 |
17 | {% endif %} 18 |
19 |
20 |
21 |

22 |
23 | -------------------------------------------------------------------------------- /docs/cookbook/fixtures/suite.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | How to use it on your suite 8 | =========================== 9 | 10 | .. code-block:: yaml 11 | 12 | # config/sylius/fixtures.yaml 13 | 14 | sylius_fixtures: 15 | suites: 16 | default: 17 | listeners: 18 | orm_purger: ~ 19 | logger: ~ 20 | 21 | fixtures: 22 | [...] 23 | 24 | article: 25 | options: 26 | random: 10 27 | custom: 28 | - 29 | title: "Awesome article" 30 | 31 | it will generates 10 random articles and one custom with title ``Awesome article``. 32 | 33 | .. _Monofony documentation: https://docs.monofony.com 34 | -------------------------------------------------------------------------------- /src/Monofony/Component/Admin/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/admin", 3 | "type": "library", 4 | "description": "Monofony admin.", 5 | "license": "MIT", 6 | "require": { 7 | "php": "^8.2", 8 | "knplabs/knp-menu": "^3.1", 9 | "monofony/admin-contracts": "^0.11", 10 | "monofony/core": "^0.11", 11 | "symfony/routing": "^6.4 || ^7.1" 12 | }, 13 | "autoload": { 14 | "psr-4": { 15 | "Monofony\\Component\\Admin\\": "" 16 | } 17 | }, 18 | "minimum-stability": "dev", 19 | "prefer-stable": true, 20 | "repositories": [ 21 | { 22 | "type": "path", 23 | "url": "../../*/*" 24 | } 25 | ], 26 | "extra": { 27 | "branch-alias": { 28 | "dev-master": "0.11-dev" 29 | } 30 | }, 31 | "require-dev": { 32 | "phpstan/phpstan": "^1.5", 33 | "friends-of-behat/page-object-extension": "^0.3" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/src/Dashboard/Statistics/CustomerStatistic.php: -------------------------------------------------------------------------------- 1 | customerRepository->countCustomers(); 22 | 23 | return $this->twig->render('backend/dashboard/statistics/_amount_of_customers.html.twig', [ 24 | 'amountOfCustomers' => $amountCustomers, 25 | ]); 26 | } 27 | 28 | public static function getDefaultPriority(): int 29 | { 30 | return -1; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/tests/Behat/Page/Backend/Customer/IndexPage.php: -------------------------------------------------------------------------------- 1 | getTableAccessor(); 21 | $table = $this->getElement('table'); 22 | 23 | $row = $tableAccessor->getRowWithFields($table, ['email' => $customer->getEmail()]); 24 | 25 | return $tableAccessor->getFieldFromRow($table, $row, 'enabled')->getText(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/features/installer/install_command.feature: -------------------------------------------------------------------------------- 1 | @installer @cli 2 | Feature: Install feature 3 | In order to install AppName via CLI 4 | As a Developer 5 | I want to run an installation command 6 | 7 | Scenario: Registering administrator account 8 | Given I provide full administrator data 9 | When I run Install setup command 10 | Then I should see output "Administrator account successfully registered." 11 | 12 | Scenario: Trying to register administrator account without email 13 | Given I do not provide an email 14 | When I run Install setup command 15 | Then I should see output "E-mail: This value should not be blank." 16 | 17 | Scenario: Trying to register administrator account with an incorrect email 18 | Given I do not provide a correct email 19 | When I run Install setup command 20 | Then I should see output "E-mail: This value is not a valid email address." 21 | 22 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Form/Type/DatePickerType.php: -------------------------------------------------------------------------------- 1 | setDefaults([ 29 | 'format' => 'dd/MM/yyyy', 30 | ]); 31 | } 32 | 33 | /** 34 | * {@inheritdoc} 35 | */ 36 | public function getBlockPrefix(): string 37 | { 38 | return 'app_date_picker'; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Crud/UpdatePageInterface.php: -------------------------------------------------------------------------------- 1 | 9 | {{ 'sylius.ui.show'|trans }} {{ paginator.maxPerPage }} 10 | 11 | 17 | 18 | {% endmacro %} 19 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Admin/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/admin-contracts", 3 | "type": "library", 4 | "description": "Generic abstractions related to Admin", 5 | "license": "MIT", 6 | "require": { 7 | "php": "^8.2" 8 | }, 9 | "autoload": { 10 | "psr-4": { 11 | "Monofony\\Contracts\\Admin\\": "" 12 | }, 13 | "exclude-from-classmap": [ 14 | "/Tests/" 15 | ] 16 | }, 17 | "config": { 18 | "preferred-install": { 19 | "*": "dist" 20 | }, 21 | "sort-packages": true 22 | }, 23 | "minimum-stability": "dev", 24 | "prefer-stable": true, 25 | "repositories": [ 26 | { 27 | "type": "path", 28 | "url": "../../*/*" 29 | } 30 | ], 31 | "extra": { 32 | "branch-alias": { 33 | "dev-master": "0.11-dev" 34 | } 35 | }, 36 | "require-dev": { 37 | "phpstan/phpstan": "^1.5" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/assets/backend/js/app-images-preview.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | 3 | const displayUploadedImage = function displayUploadedImage(input) { 4 | if (input.files && input.files[0]) { 5 | const reader = new FileReader(); 6 | 7 | reader.onload = (event) => { 8 | const image = $(input).parent().siblings('.image'); 9 | 10 | if (image.length > 0) { 11 | image.attr('src', event.target.result); 12 | } else { 13 | const img = $(''); 14 | img.attr('src', event.target.result); 15 | $(input).parent().before(img); 16 | } 17 | }; 18 | 19 | reader.readAsDataURL(input.files[0]); 20 | } 21 | }; 22 | 23 | $.fn.extend({ 24 | previewUploadedImage(root) { 25 | $(root).on('change', 'input[type="file"]', function () { 26 | displayUploadedImage(this); 27 | }); 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /docs/book/index.rst: -------------------------------------------------------------------------------- 1 | .. rst-class:: outdated 2 | 3 | .. danger:: 4 | 5 | This is an outdated documentation please read the new `Monofony documentation`_ instead. 6 | 7 | The Book 8 | ======== 9 | 10 | Here you will find all the concepts used in Monofony. 11 | The Books helps to understand how Monofony works. 12 | 13 | Architecture 14 | ------------ 15 | 16 | The key to understanding principles of Sylius internal organization. Here you will learn about the Resource layer, 17 | state machines, events and general non e-commerce concepts adopted in the platform, like E-mails or Fixtures. 18 | 19 | .. toctree:: 20 | :hidden: 21 | 22 | architecture/index 23 | 24 | .. include:: /book/architecture/map.rst.inc 25 | 26 | Users 27 | ----- 28 | 29 | This chapter will tell you more about the way Sylius handles users, customers and admins. 30 | 31 | .. toctree:: 32 | :hidden: 33 | 34 | user/index 35 | 36 | .. include:: /book/user/map.rst.inc 37 | 38 | .. _Monofony documentation: https://docs.monofony.com 39 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/JQueryHelper.php: -------------------------------------------------------------------------------- 1 | wait(1000, 'typeof jQuery !== "undefined" && 0 === jQuery.active'); 24 | } 25 | 26 | public static function waitForFormToStopLoading(DocumentElement $document, int $timeout = 10): void 27 | { 28 | $form = $document->find('css', 'form'); 29 | $document->waitFor($timeout, function () use ($form) { 30 | return !$form->hasClass('loading'); 31 | }); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Exception/NotificationExpectationMismatchException.php: -------------------------------------------------------------------------------- 1 | shouldHaveType(AbstractTypeExtension::class); 16 | } 17 | 18 | function it_extends_date_type() 19 | { 20 | $this::getExtendedTypes()->shouldReturn([DateType::class]); 21 | } 22 | 23 | function it_configures_options(OptionsResolver $resolver) 24 | { 25 | $resolver->setDefaults([ 26 | 'widget' => 'single_text', 27 | 'html5' => false, 28 | ])->willReturn($resolver)->shouldBeCalled(); 29 | 30 | $this->configureOptions($resolver); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /CHANGELOG-0.6.md: -------------------------------------------------------------------------------- 1 | ## Change Log 2 | 3 | ### v0.6.1 (2021/04/08 13:30 +00:00) 4 | 5 | #### Details 6 | 7 | - [#324](https://github.com/Monofony/Monofony/pull/324) Fix missing Doctrine migration (@loic425) 8 | 9 | ### v0.6.0 (2021/04/08 12:14 +00:00) 10 | 11 | TL;DR 12 | 13 | Add support for PHP 8 14 | 15 | #### Details 16 | 17 | - [#322](https://github.com/Monofony/Monofony/pull/322) Bump Sylius resource version (@loic425) 18 | - [#321](https://github.com/Monofony/Monofony/pull/321) Use Monofony repository for Monofony packages on composer (@loic425) 19 | - [#320](https://github.com/Monofony/Monofony/pull/320) Move Doctrine migrations to use the default recipe (@loic425) 20 | - [#319](https://github.com/Monofony/Monofony/pull/319) Check security again (@loic425) 21 | - [#317](https://github.com/Monofony/Monofony/pull/317) Add support for php 8 (@loic425) 22 | - [#316](https://github.com/Monofony/Monofony/pull/316) Improve OAuth secrets (@loic425) 23 | - [#315](https://github.com/Monofony/Monofony/pull/315) Add Behat example to test sorting a grid (@loic425) 24 | -------------------------------------------------------------------------------- /config/bootstrap.php: -------------------------------------------------------------------------------- 1 | =1.2) 9 | if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) { 10 | $_SERVER += $env; 11 | $_ENV += $env; 12 | } elseif (!class_exists(Dotenv::class)) { 13 | throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); 14 | } else { 15 | // load all the .env files 16 | (new Dotenv(true))->loadEnv(dirname(__DIR__).'/.env'); 17 | } 18 | 19 | $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; 20 | $_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; 21 | $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; 22 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/src/Form/Type/DateTimePickerType.php: -------------------------------------------------------------------------------- 1 | setDefaults([ 29 | 'widget' => 'single_text', 30 | 'format' => 'dd/MM/yyyy H:i', 31 | ]); 32 | } 33 | 34 | /** 35 | * {@inheritdoc} 36 | */ 37 | public function getBlockPrefix(): string 38 | { 39 | return 'app_date_time_picker'; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/AdminMeta/.recipe/templates/backend/admin_user/_form.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {{ form_errors(form) }} 3 |
4 |
5 |

{{ 'sylius.ui.general_info'|trans }}

6 |
7 | {{ form_row(form.username) }} 8 | {{ form_row(form.email) }} 9 |
10 |
11 |
12 | {{ form_row(form.plainPassword) }} 13 | {{ form_row(form.enabled) }} 14 |
15 |
16 |
17 |
18 |

{{ 'sylius.ui.additional_information'|trans }}

19 |
20 | {{ form_row(form.firstName) }} 21 | {{ form_row(form.lastName) }} 22 |
23 | {{ form_row(form.avatar) }} 24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/FrontMeta/.recipe/templates/frontend/security/register.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'frontend/layout.html.twig' %} 2 | 3 | {% form_theme form 'frontend/form/theme.html.twig' %} 4 | 5 | {% block content %} 6 | {% include 'frontend/register/_header.html.twig' %} 7 | 8 | {{ sonata_block_render_event('sylius.shop.register.after_content_header') }} 9 | 10 |
11 | {{ sonata_block_render_event('sylius.shop.register.before_form') }} 12 | 13 | {{ form_start(form, {'action': path('app_frontend_register'), 'attr': {'class': 'ui loadable form', 'novalidate': 'novalidate'}}) }} 14 | {% include 'frontend/register/_form.html.twig' %} 15 | 16 | {{ sonata_block_render_event('sylius.shop.register.form', {'form': form}) }} 17 | 18 | 21 | {{ form_row(form._token) }} 22 | {{ form_end(form, {'render_rest': false}) }} 23 |
24 | {% endblock %} 25 | -------------------------------------------------------------------------------- /src/Monofony/Bridge/Behat/Service/Accessor/NotificationAccessor.php: -------------------------------------------------------------------------------- 1 | session->getPage()->findAll('css', '.sylius-flash-message'); 28 | 29 | if (empty($messageElements)) { 30 | throw new ElementNotFoundException($this->session->getDriver(), 'message element', 'css', '.sylius-flash-message'); 31 | } 32 | 33 | return $messageElements; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/tests/Behat/Context/Transform/SharedStorageContext.php: -------------------------------------------------------------------------------- 1 | sharedStorage = $sharedStorage; 18 | } 19 | 20 | /** 21 | * @Transform /^(it|its|theirs|them)$/ 22 | */ 23 | public function getLatestResource(): mixed 24 | { 25 | return $this->sharedStorage->getLatestResource(); 26 | } 27 | 28 | /** 29 | * @Transform /^(?:this|that|the) ([^"]+)$/ 30 | */ 31 | public function getResource($resource): mixed 32 | { 33 | return $this->sharedStorage->get(StringInflector::nameToCode($resource)); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Monofony/MetaPack/CoreMeta/.recipe/spec/App/Form/Extension/CustomerTypeExtensionSpec.php: -------------------------------------------------------------------------------- 1 | shouldHaveType(AbstractTypeExtension::class); 17 | } 18 | 19 | function it_extends_customer_type() 20 | { 21 | $this::getExtendedTypes()->shouldReturn([CustomerType::class]); 22 | } 23 | 24 | function it_adds_user_form_subscriber(FormBuilderInterface $builder) 25 | { 26 | $builder->addEventSubscriber(new AddUserFormSubscriber(AppUserType::class))->willReturn($builder)->shouldBeCalled(); 27 | 28 | $this->buildForm($builder, []); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Monofony/Contracts/Api/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "monofony/api-contracts", 3 | "type": "library", 4 | "description": "Generic abstractions related to Api", 5 | "license": "MIT", 6 | "require": { 7 | "php": "^8.2", 8 | "api-platform/core": "^2.7 || ^3.1", 9 | "symfony/serializer": "^6.4 || ^7.1" 10 | }, 11 | "autoload": { 12 | "psr-4": { 13 | "Monofony\\Contracts\\Api\\": "" 14 | }, 15 | "exclude-from-classmap": [ 16 | "/Tests/" 17 | ] 18 | }, 19 | "config": { 20 | "preferred-install": { 21 | "*": "dist" 22 | }, 23 | "sort-packages": true 24 | }, 25 | "minimum-stability": "dev", 26 | "prefer-stable": true, 27 | "repositories": [ 28 | { 29 | "type": "path", 30 | "url": "../../*/*" 31 | } 32 | ], 33 | "extra": { 34 | "branch-alias": { 35 | "dev-master": "0.11-dev" 36 | } 37 | }, 38 | "require-dev": { 39 | "phpstan/phpstan": "^1.5" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /config/services/monofony_backend.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | _defaults: 3 | autowire: true # Automatically injects dependencies in your services 4 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 5 | bind: 6 | $publicDir: '%kernel.project_dir%/public' 7 | $cacheDir: '%kernel.cache_dir%' 8 | $environment: '%kernel.environment%' 9 | 10 | app_backend: 11 | namespace: App\ 12 | resource: '../../src/Monofony/MetaPack/AdminMeta/.recipe/src/*' 13 | exclude: '../../src/Monofony/MetaPack/AdminMeta/.recipe/src/{DependencyInjection,Entity,Form/EventSubscriber/AddUserFormSubscriber.php,Migrations,Tests,Kernel.php}' 14 | 15 | # controllers are imported separately to make sure services can be injected 16 | # as action arguments even if you don't extend any base controller class 17 | controller_backend: 18 | namespace: App\Controller\ 19 | resource: '../../src/Monofony/MetaPack/AdminMeta/.recipe/src/Controller' 20 | tags: ['controller.service_arguments'] 21 | --------------------------------------------------------------------------------