Skip to content

Commit

Permalink
Merge branch hotfix/v2.3.18
Browse files Browse the repository at this point in the history
  • Loading branch information
roadiz-ci committed Jul 5, 2024
1 parent 03e1286 commit 4113e1b
Show file tree
Hide file tree
Showing 387 changed files with 6,726 additions and 6,596 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/run-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['8.0', '8.1']
php-version: ['8.1', '8.2', '8.3']
steps:
- uses: shivammathur/setup-php@v2
with:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
/dev.php
/install.php
/clear_cache.php
/pimple.json
/assets
project_env.sh

Expand Down
75 changes: 0 additions & 75 deletions .travis.yml

This file was deleted.

5 changes: 0 additions & 5 deletions .travis/backoffice_assets.sh

This file was deleted.

4 changes: 0 additions & 4 deletions .travis/composer_install.sh

This file was deleted.

5 changes: 0 additions & 5 deletions .travis/php_lint.sh

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright © 2023 Ambroise Maupate, Julien Blanchet
Copyright © 2024 Ambroise Maupate, Julien Blanchet

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

Expand Down
61 changes: 31 additions & 30 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,47 +28,48 @@
"role": "Frontend developer"
}
],
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"php": ">=8.0",
"php": ">=8.1",
"ext-zip": "*",
"doctrine/orm": "<2.17",
"doctrine/orm": "~2.19.0",
"guzzlehttp/guzzle": "^7.2.0",
"jms/serializer": "^3.9.0",
"league/flysystem": "^3.0",
"pimple/pimple": "^3.3.1",
"ramsey/uuid": "^4.7",
"roadiz/compat-bundle": "2.1.*",
"roadiz/core-bundle": "2.1.*",
"roadiz/doc-generator": "2.1.*",
"roadiz/documents": "2.1.*",
"roadiz/dts-generator": "2.1.*",
"roadiz/markdown": "2.1.*",
"roadiz/models": "2.1.*",
"roadiz/compat-bundle": "2.3.*",
"roadiz/core-bundle": "2.3.*",
"roadiz/doc-generator": "2.3.*",
"roadiz/documents": "2.3.*",
"roadiz/dts-generator": "2.3.*",
"roadiz/markdown": "2.3.*",
"roadiz/models": "2.3.*",
"roadiz/nodetype-contracts": "~1.1.2",
"roadiz/openid": "2.1.*",
"roadiz/rozier-bundle": "2.1.*",
"symfony/asset": "5.4.*",
"symfony/filesystem": "5.4.*",
"symfony/form": "5.4.*",
"symfony/http-foundation": "5.4.*",
"symfony/http-kernel": "5.4.*",
"symfony/routing": "5.4.*",
"symfony/security-core": "5.4.*",
"symfony/security-csrf": "5.4.*",
"symfony/security-http": "5.4.*",
"symfony/translation": "5.4.*",
"symfony/validator": "5.4.*",
"symfony/workflow": "5.4.*",
"symfony/yaml": "5.4.*",
"roadiz/openid": "2.3.*",
"roadiz/rozier-bundle": "2.3.*",
"symfony/asset": "6.4.*",
"symfony/filesystem": "6.4.*",
"symfony/form": "6.4.*",
"symfony/http-foundation": "6.4.*",
"symfony/http-kernel": "6.4.*",
"symfony/routing": "6.4.*",
"symfony/security-core": "6.4.*",
"symfony/security-csrf": "6.4.*",
"symfony/security-http": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/workflow": "6.4.*",
"symfony/yaml": "6.4.*",
"twig/twig": "^3.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.4",
"phpstan/phpstan": "^1.5.3",
"phpstan/phpstan-doctrine": "^1.3",
"roadiz/entity-generator": "2.1.*",
"roadiz/random": "2.1.*",
"roadiz/jwt": "2.1.*",
"roadiz/entity-generator": "2.3.*",
"roadiz/random": "2.3.*",
"roadiz/jwt": "2.3.*",
"squizlabs/php_codesniffer": "^3.5"
},
"autoload": {
Expand All @@ -94,8 +95,8 @@
},
"extra": {
"branch-alias": {
"dev-main": "2.1.x-dev",
"dev-develop": "2.2.x-dev"
"dev-main": "2.3.x-dev",
"dev-develop": "2.4.x-dev"
}
}
}
9 changes: 6 additions & 3 deletions phpstan.neon
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
parameters:
level: 6
level: 7
paths:
- src
excludePaths:
Expand All @@ -9,6 +9,8 @@ parameters:
doctrine:
repositoryClass: RZ\Roadiz\Core\Repositories\EntityRepository
ignoreErrors:
- identifier: missingType.iterableValue
- identifier: missingType.generics
- '#Call to an undefined method RZ\\Roadiz\\CoreBundle\\Repository#'
- '#Call to an undefined method RZ\\Roadiz\\UserBundle\\Repository#'
- '#Call to an undefined method Doctrine\\Persistence\\ObjectRepository#'
Expand All @@ -28,10 +30,11 @@ parameters:
- '#Doctrine\\ORM\\Mapping\\GeneratedValue constructor expects#'
- '#type mapping mismatch: property can contain Doctrine\\Common\\Collections\\Collection<int, [^\>]+> but database expects Doctrine\\Common\\Collections\\Collection&iterable<[^\>]+>#'
- '#should return Doctrine\\Common\\Collections\\Collection<int, [^\>]+Interface> but returns Doctrine\\Common\\Collections\\Collection<int, [^\>]+>#'
- '#but returns Doctrine\\Common\\Collections\\ReadableCollection<int, [^\>]+>#'
- '#does not accept Doctrine\\Common\\Collections\\ReadableCollection<int, [^\>]+>#'

reportUnmatchedIgnoredErrors: false
checkGenericClassInNonGenericObjectType: false
checkMissingIterableValueType: false
treatPhpDocTypesAsCertain: false

includes:
- vendor/phpstan/phpstan-doctrine/extension.neon
Expand Down
2 changes: 1 addition & 1 deletion src/.babelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"presets": ["es2015", "stage-0"],
"presets": ["env", "stage-0"],
"plugins": ["transform-runtime", "lodash"]
}
1 change: 0 additions & 1 deletion src/.editorconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# TheatreTheme editor config for contributors
# Root is false as your theme is inside Roadiz filetree
# http://editorconfig.org/
root = false

[*]
indent_style = space
Expand Down
2 changes: 1 addition & 1 deletion src/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module.exports = {
},
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
//extends: 'standard',
extends: ['prettier', 'plugin:prettier/recommended', 'plugin:vue/essential'],
extends: ['prettier', 'plugin:prettier/recommended', 'plugin:vue/base'],
// required to lint *.vue files
plugins: ['html', 'prettier'],
// add your custom rules here
Expand Down
2 changes: 1 addition & 1 deletion src/AjaxControllers/AbstractAjaxController.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ protected function getTranslation(Request $request): ?TranslationInterface
* @param string $method
* @param bool $requestCsrfToken
*
* @return boolean Return true if request is valid, else throw exception
* @return bool Return true if request is valid, else throw exception
*/
protected function validateRequest(Request $request, string $method = 'POST', bool $requestCsrfToken = true): bool
{
Expand Down
13 changes: 2 additions & 11 deletions src/AjaxControllers/AjaxAbstractFieldsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,10 @@
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;

/**
* @package Themes\Rozier\AjaxControllers
*/
abstract class AjaxAbstractFieldsController extends AbstractAjaxController
{
private HandlerFactoryInterface $handlerFactory;

/**
* @param HandlerFactoryInterface $handlerFactory
*/
public function __construct(HandlerFactoryInterface $handlerFactory)
public function __construct(protected readonly HandlerFactoryInterface $handlerFactory)
{
$this->handlerFactory = $handlerFactory;
}

protected function findEntity(int|string $entityId): ?AbstractField
Expand All @@ -39,7 +30,7 @@ protected function findEntity(int|string $entityId): ?AbstractField
*
* @return null|Response
*/
protected function handleFieldActions(Request $request, AbstractField $field = null)
protected function handleFieldActions(Request $request, AbstractField $field = null): ?Response
{
/*
* Validate
Expand Down
58 changes: 28 additions & 30 deletions src/AjaxControllers/AjaxAttributeValuesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Themes\Rozier\AjaxControllers;

use RZ\Roadiz\CoreBundle\Entity\AttributeValue;
use RZ\Roadiz\CoreBundle\Entity\Node;
use RZ\Roadiz\CoreBundle\Security\Authorization\Voter\NodeVoter;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
Expand All @@ -28,49 +28,47 @@ final class AjaxAttributeValuesController extends AbstractAjaxController
*/
public function editAction(Request $request, int $attributeValueId): Response
{
/*
* Validate
*/
$this->validateRequest($request, 'POST', false);
$this->denyAccessUnlessGranted('ROLE_ACCESS_NODE_ATTRIBUTES');

/** @var AttributeValue|null $attributeValue */
$attributeValue = $this->em()->find(AttributeValue::class, (int) $attributeValueId);

if ($attributeValue !== null) {
$responseArray = [];
/*
* Get the right update method against "_action" parameter
*/
switch ($request->get('_action')) {
case 'updatePosition':
$responseArray = $this->updatePosition($request->request->all(), $attributeValue);
break;
}
if ($attributeValue === null) {
throw $this->createNotFoundException($this->getTranslator()->trans(
'attribute_value.%attributeValueId%.not_exists',
[
'%attributeValueId%' => $attributeValueId
]
));
}

$this->denyAccessUnlessGranted(NodeVoter::EDIT_ATTRIBUTE, $attributeValue->getAttributable());

return new JsonResponse(
$responseArray,
Response::HTTP_PARTIAL_CONTENT
);
$responseArray = [];
/*
* Get the right update method against "_action" parameter
*/
switch ($request->get('_action')) {
case 'updatePosition':
$responseArray = $this->updatePosition($request->request->all(), $attributeValue);
break;
}

throw $this->createNotFoundException($this->getTranslator()->trans(
'attribute_value.%attributeValueId%.not_exists',
[
'%attributeValueId%' => $attributeValueId
]
));
return new JsonResponse(
$responseArray,
Response::HTTP_PARTIAL_CONTENT
);
}

/**
* @param array $parameters
* @param AttributeValue $attributeValue
*
* @return array
*/
protected function updatePosition($parameters, AttributeValue $attributeValue): array
protected function updatePosition(array $parameters, AttributeValue $attributeValue): array
{
$attributable = $attributeValue->getAttributable();
$details = [
'%name%' => $attributeValue->getAttribute()->getLabelOrCode(),
'%nodeName%' => $attributable instanceof Node ? $attributable->getNodeName() : '',
'%nodeName%' => $attributable->getNodeName(),
];

if (!empty($parameters['afterAttributeValueId']) && is_numeric($parameters['afterAttributeValueId'])) {
Expand Down
Loading

0 comments on commit 4113e1b

Please sign in to comment.