1: <?php
2: /**
3: * PHP version 5
4: * @package generalDriver
5: * @author Christian Schiffler <c.schiffler@cyberspectrum.de>
6: * @author Stefan Heimes <stefan_heimes@hotmail.com>
7: * @author Tristan Lins <tristan.lins@bit3.de>
8: * @copyright The MetaModels team.
9: * @license LGPL.
10: * @filesource
11: */
12:
13: namespace DcGeneral\Contao\Callback;
14:
15: use DcGeneral\Contao\Compatibility\DcCompat;
16: use DcGeneral\Contao\View\Contao2BackendView\Event\GetPasteButtonEvent;
17: use DcGeneral\DC_General;
18:
19: /**
20: * Class ContainerPasteButtonCallbackListener.
21: *
22: * Invoker for paste_button_callbacks.
23: *
24: * @package DcGeneral\Contao\Callback
25: */
26: class ContainerPasteButtonCallbackListener extends AbstractReturningCallbackListener
27: {
28: /**
29: * The DC_General instance.
30: *
31: * @var DC_General
32: */
33: protected $dcGeneral;
34:
35: /**
36: * Create a new instance of the listener.
37: *
38: * @param array|callable $callback The callback to call when invoked.
39: *
40: * @param DC_General $dcGeneral The DC_General instance to use in the callback.
41: */
42: public function __construct($callback, DC_General $dcGeneral)
43: {
44: parent::__construct($callback);
45: $this->dcGeneral = $dcGeneral;
46: }
47:
48: /**
49: * Retrieve the arguments for the callback.
50: *
51: * @param GetPasteButtonEvent $event The event being emitted.
52: *
53: * @return array
54: */
55: public function getArgs($event)
56: {
57: return array(
58: new DcCompat($event->getEnvironment(), $event->getModel()),
59: $event->getModel()->getPropertiesAsArray(),
60: $event->getEnvironment()->getDataDefinition()->getName(),
61: $event->getCircularReference(),
62: $event->getEnvironment()->getClipboard()->getContainedIds(),
63: $event->getPrevious()->getId(),
64: $event->getNext()->getId()
65: );
66: }
67:
68: /**
69: * Set the HTML code for the button.
70: *
71: * @param GetPasteButtonEvent $event The event being emitted.
72: *
73: * @param string $value The value returned by the callback.
74: *
75: * @return void
76: */
77: public function update($event, $value)
78: {
79: if (is_null($value))
80: {
81: return;
82: }
83:
84: $event->setHtml($value);
85: $event->stopPropagation();
86: }
87: }
88: