mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 21:34:25 +00:00
move twig function in runtime
This commit is contained in:
parent
ad46776164
commit
f6e667700e
@ -11,8 +11,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\DocStoreBundle\Templating;
|
namespace Chill\DocStoreBundle\Templating;
|
||||||
|
|
||||||
use ChampsLibres\WopiLib\Contract\Service\Discovery\DiscoveryInterface;
|
|
||||||
use Chill\DocStoreBundle\Entity\StoredObject;
|
|
||||||
use Twig\Extension\AbstractExtension;
|
use Twig\Extension\AbstractExtension;
|
||||||
use Twig\TwigFilter;
|
use Twig\TwigFilter;
|
||||||
use Twig\TwigFunction;
|
use Twig\TwigFunction;
|
||||||
@ -20,13 +18,6 @@ use Twig\TwigFunction;
|
|||||||
class WopiEditTwigExtension extends AbstractExtension
|
class WopiEditTwigExtension extends AbstractExtension
|
||||||
{
|
{
|
||||||
|
|
||||||
private DiscoveryInterface $discovery;
|
|
||||||
|
|
||||||
public function __construct(DiscoveryInterface $discovery)
|
|
||||||
{
|
|
||||||
$this->discovery = $discovery;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getFilters(): array
|
public function getFilters(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@ -40,22 +31,11 @@ class WopiEditTwigExtension extends AbstractExtension
|
|||||||
public function getFunctions(): array
|
public function getFunctions(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
new TwigFunction('chill_document_is_editable', [$this, 'isEditable']),
|
new TwigFunction('chill_document_is_editable', [WopiEditTwigExtensionRuntime::class, 'isEditable'], [
|
||||||
|
'needs_environment' => true,
|
||||||
|
'is_safe' => ['html'],
|
||||||
|
]),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isEditable(StoredObject $document): bool
|
|
||||||
{
|
|
||||||
$mime = $this->discovery->discoverMimeType($document->getType());
|
|
||||||
|
|
||||||
// TO CHECk is it better condition ?
|
|
||||||
if (array_key_exists('default', $mime[0])
|
|
||||||
&& $mime[0]['default'] === 'true'
|
|
||||||
) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//dump($document, $mime);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -11,6 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\DocStoreBundle\Templating;
|
namespace Chill\DocStoreBundle\Templating;
|
||||||
|
|
||||||
|
use ChampsLibres\WopiLib\Contract\Service\Discovery\DiscoveryInterface;
|
||||||
use Chill\DocStoreBundle\Entity\StoredObject;
|
use Chill\DocStoreBundle\Entity\StoredObject;
|
||||||
use Twig\Environment;
|
use Twig\Environment;
|
||||||
use Twig\Extension\RuntimeExtensionInterface;
|
use Twig\Extension\RuntimeExtensionInterface;
|
||||||
@ -20,6 +21,13 @@ class WopiEditTwigExtensionRuntime implements RuntimeExtensionInterface
|
|||||||
|
|
||||||
public const TEMPLATE = '@ChillDocStore/Button/wopi_edit_document.html.twig';
|
public const TEMPLATE = '@ChillDocStore/Button/wopi_edit_document.html.twig';
|
||||||
|
|
||||||
|
private DiscoveryInterface $discovery;
|
||||||
|
|
||||||
|
public function __construct(DiscoveryInterface $discovery)
|
||||||
|
{
|
||||||
|
$this->discovery = $discovery;
|
||||||
|
}
|
||||||
|
|
||||||
public function renderEditButton(Environment $environment, StoredObject $document, ?Array $options = null): string
|
public function renderEditButton(Environment $environment, StoredObject $document, ?Array $options = null): string
|
||||||
{
|
{
|
||||||
return $environment->render(self::TEMPLATE, [
|
return $environment->render(self::TEMPLATE, [
|
||||||
@ -27,4 +35,21 @@ class WopiEditTwigExtensionRuntime implements RuntimeExtensionInterface
|
|||||||
'options' => $options
|
'options' => $options
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isEditable(Environment $environment, StoredObject $document): bool
|
||||||
|
{
|
||||||
|
$mime_type = $this->discovery->discoverMimeType($document->getType());
|
||||||
|
|
||||||
|
if (empty($mime_type)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('default', $mime_type[0])
|
||||||
|
&& $mime_type[0]['default'] === 'true'
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,11 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
|
|
||||||
Chill\DocStoreBundle\Templating\WopiEditTwigExtension:
|
Chill\DocStoreBundle\Templating\:
|
||||||
arguments:
|
resource: ../../Templating
|
||||||
$discovery: '@ChampsLibres\WopiLib\Contract\Service\Discovery\DiscoveryInterface'
|
autoconfigure: true
|
||||||
tags:
|
autowire: true
|
||||||
- { name: twig.extension }
|
|
||||||
|
|
||||||
Chill\DocStoreBundle\Templating\WopiEditTwigExtensionRuntime:
|
|
||||||
tags:
|
|
||||||
- { name: twig.runtime }
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user