<?php
namespace WAM\Bundle\WebContentBundle\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
use WAM\Bundle\WebContentBundle\Service\EditInlineServiceTest;
use WAM\Bundle\WebContentBundle\Service\Interfaces\EditInlineServiceInterface;
use WAM\Component\Core\Util\ClassTools;
/**
* Description of class.
*
* @author Edgar Tébar <etebar@wearemarketing.com>
*
* @filename EditInlineExtension.php
*/
class EditInlineExtension extends AbstractExtension
{
private EditInlineServiceInterface $editInlineService;
/**
* EditInlineExtension constructor.
* @param EditInlineServiceInterface $editInlineService
*/
public function __construct(EditInlineServiceInterface $editInlineService)
{
$this->editInlineService = $editInlineService;
}
/**
* @return array
*/
public function getFunctions()
{
return [
new TwigFunction('full_admin_edit', [$this, 'getFullAdminPath'], ['is_safe' => ['html']]),
new TwigFunction('get_admin_route', [$this, 'getAdminRoute']),
new TwigFunction('is_url_object', [$this, 'isUrlObject']),
new TwigFunction('check_role_is_granted_for_edit_inline', [$this, 'checkIfRoleIsGrantedForEditInline']),
new TwigFunction('generate_admin_url', [$this, 'generateAdminUrl']),
new TwigFunction('get_class', [$this, 'getObjectClass']),
];
}
/**
* @return bool
*/
public function checkIfRoleIsGrantedForEditInline(): bool
{
return $this->editInlineService->isGranted();
}
/**
* @param object $object
* @param string $routeType
* @param array $parameters
* @param string $aditionalClass
* @param string $parentClass
*
* @return string
*/
public function getFullAdminPath(
object $object,
string $routeType = 'edit',
array $parameters = [],
string $aditionalClass = 'edit_full_link',
string $parentClass = '',
string $strategy = 'inline'
): string
{
return $this->editInlineService->getFullAdminPath(
$object,
$routeType,
$parameters,
$aditionalClass,
$parentClass,
$strategy
);
}
/**
* @param object $object
* @param string $routeType
* @param array $parameters
* @param bool $absolute
*
* @return string|void
*/
public function getAdminRoute(object $object, string $routeType = 'edit', array $parameters = [], bool $absolute = false): string
{
return $this->editInlineService->getAdminRoute($object, $routeType, $parameters, $absolute);
}
/**
* @param object $object
*
* @return bool
*/
public function isUrlObject(object $object): bool
{
return $this->editInlineService->isUrlObject($object);
}
/**
* @param object $object
* @param string $routeType
* @param array $parameters
* @param bool $absolute
*
* @return string|void
*/
public function generateAdminUrl(object $object, string $routeType = 'edit', array $parameters = [], bool $absolute = false): ?string
{
return $this->editInlineService->generateAdminUrl($object, $routeType, $parameters, $absolute);
}
public function getObjectClass(object $object): string
{
return ClassTools::realClass($object);
}
}