├── 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
2 | {% include 'backend/admin_user/_avatar_image.html.twig' %}
3 | {{ app.user.firstName|default(app.user.username) }}
4 |
5 |
15 |
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 |
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 |
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 |
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 |
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 |
19 | {{ 'sylius.ui.create_an_account'|trans }}
20 |
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 |
--------------------------------------------------------------------------------