Skip to content

Commit a9ac29c

Browse files
committed
Rework: See PR #41
1 parent 32c8927 commit a9ac29c

File tree

5 files changed

+80
-18
lines changed

5 files changed

+80
-18
lines changed

src/EventListener/Contao/InitializeSystem.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
use Contao\Input;
2929
use Contao\System;
3030
use MenAtWork\MultiColumnWizardBundle\Service\ContaoApiService;
31-
use Symfony\Component\Asset\Packages;
3231

3332
/**
3433
* Class InitializeSystem
@@ -40,19 +39,13 @@ class InitializeSystem
4039
*/
4140
private ContaoApiService $contaoApi;
4241

43-
/**
44-
* @var Packages
45-
*/
46-
private Packages $packages;
47-
4842
/**
4943
* @param ContaoApiService $contaoApi
5044
* @param Packages $packages
5145
*/
52-
public function __construct(ContaoApiService $contaoApi, Packages $packages)
46+
public function __construct(ContaoApiService $contaoApi)
5347
{
5448
$this->contaoApi = $contaoApi;
55-
$this->packages = $packages;
5649
}
5750

5851
/**
@@ -79,12 +72,6 @@ public function addSystemNecessaryThings(): void
7972
$GLOBALS['TL_CSS']['multicolumnwizard'] = System::getContainer()->get('kernel')->isDebug()
8073
? 'bundles/multicolumnwizard/css/multicolumnwizard_src.css'
8174
: 'bundles/multicolumnwizard/css/multicolumnwizard.css';
82-
83-
// Load the old mooRainbow picker in Contao 5.5
84-
if (version_compare(ContaoCoreBundle::getVersion(), '5.5', '>=')) {
85-
$GLOBALS['TL_JAVASCRIPT']['mooRainbow'] = $this->packages->getUrl('js/mooRainbow.min.js', 'contao-components/colorpicker');
86-
$GLOBALS['TL_CSS']['mooRainbow'] = $this->packages->getUrl('css/mooRainbow.min.css', 'contao-components/colorpicker');
87-
}
8875
}
8976

9077
/**

src/EventListener/Mcw/ColorPicker.php

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,21 @@
2323

2424
namespace MenAtWork\MultiColumnWizardBundle\EventListener\Mcw;
2525

26+
use Contao\CoreBundle\ContaoCoreBundle;
2627
use Contao\CoreBundle\Framework\Adapter;
2728
use Contao\Image;
2829
use Contao\StringUtil;
2930
use MenAtWork\MultiColumnWizardBundle\Event\GetColorPickerStringEvent;
31+
use MenAtWork\MultiColumnWizardBundle\Service\ContaoApiService;
3032
use Symfony\Contracts\Translation\TranslatorInterface;
3133

3234
/**
3335
* Class ColorPicker
3436
*/
3537
class ColorPicker
3638
{
39+
static private $jsLoaded = false;
40+
3741
/**
3842
* Adapter to the image class.
3943
*
@@ -55,6 +59,13 @@ class ColorPicker
5559
*/
5660
private $translator;
5761

62+
/**
63+
* Some functions to work with contao.
64+
*
65+
* @var ContaoApiService
66+
*/
67+
private $contaoApi;
68+
5869
/**
5970
* ColorPicker constructor.
6071
*
@@ -64,11 +75,43 @@ class ColorPicker
6475
*
6576
* @param TranslatorInterface $translator Translator class.
6677
*/
67-
public function __construct($imageAdapter, $stringUtilAdapter, $translator)
78+
public function __construct
79+
(
80+
$imageAdapter,
81+
$stringUtilAdapter,
82+
$translator,
83+
ContaoApiService $contaoApi
84+
)
6885
{
69-
$this->imageAdapter = $imageAdapter;
86+
$this->imageAdapter = $imageAdapter;
7087
$this->stringUtilAdapter = $stringUtilAdapter;
71-
$this->translator = $translator;
88+
$this->translator = $translator;
89+
$this->contaoApi = $contaoApi;
90+
}
91+
92+
/**
93+
* Load the old mooRainbow picker in Contao 5.5
94+
*
95+
* @return void
96+
*/
97+
private function loadJs()
98+
{
99+
// Run only ones.
100+
if(self::$jsLoaded === true ){
101+
return;
102+
}
103+
self::$jsLoaded = true;
104+
105+
if (version_compare($this->contaoApi->getContaoVersion(), '5.5', '>=')) {
106+
$GLOBALS['TL_JAVASCRIPT']['mooRainbow'] = $this->contaoApi->getFileUrl(
107+
'js/mooRainbow.min.js',
108+
'contao-components/colorpicker'
109+
);
110+
$GLOBALS['TL_CSS']['mooRainbow'] = $this->contaoApi->getFileUrl(
111+
'css/mooRainbow.min.css',
112+
'contao-components/colorpicker'
113+
);
114+
}
72115
}
73116

74117
/**
@@ -80,6 +123,8 @@ public function __construct($imageAdapter, $stringUtilAdapter, $translator)
80123
*/
81124
public function executeEvent(GetColorPickerStringEvent $event)
82125
{
126+
$this->loadJs();
127+
83128
// Get some vars.
84129
$fieldConfiguration = $event->getFieldConfiguration();
85130
$fieldId = $event->getFieldId();

src/Resources/config/listener.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ services:
3131
- '@=service(''contao.framework'').getAdapter(''Contao\\Image'')'
3232
- '@=service(''contao.framework'').getAdapter(''Contao\\StringUtil'')'
3333
- "@translator"
34+
- "@MenAtWork\MultiColumnWizardBundle\Service\ContaoApiService"
3435
tags:
3536
- name: kernel.event_listener
3637
event: men-at-work.multi-column-wizard-bundle.get-color-picker

src/Resources/config/services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ services:
2323
arguments:
2424
- '@request_stack'
2525
- '@contao.routing.scope_matcher'
26+
- '@assets.packages'

src/Service/ContaoApiService.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,34 @@
2121

2222
use Composer\InstalledVersions;
2323
use Contao\CoreBundle\Routing\ScopeMatcher;
24+
use Symfony\Component\Asset\Packages;
2425
use Symfony\Component\HttpFoundation\RequestStack;
2526

2627
class ContaoApiService
2728
{
29+
/**
30+
* @var RequestStack
31+
*/
2832
private RequestStack $requestStack;
33+
34+
/**
35+
* @var ScopeMatcher
36+
*/
2937
private ScopeMatcher $scopeMatcher;
3038

39+
/**
40+
* @var Packages
41+
*/
42+
private Packages $packages;
43+
3144
public function __construct(
3245
RequestStack $requestStack,
33-
ScopeMatcher $scopeMatcher
46+
ScopeMatcher $scopeMatcher,
47+
Packages $packages
3448
) {
3549
$this->requestStack = $requestStack;
3650
$this->scopeMatcher = $scopeMatcher;
51+
$this->packages = $packages;
3752
}
3853

3954
/**
@@ -77,4 +92,17 @@ public function getContaoVersion(): ?string
7792
{
7893
return InstalledVersions::getPrettyVersion('contao/core-bundle');
7994
}
95+
96+
/**
97+
* Returns the public path for a file.
98+
*
99+
* @param string $path
100+
* @param string|null $packageName
101+
*
102+
* @return string
103+
*/
104+
public function getFileUrl(string $path, ?string $packageName = null): string
105+
{
106+
return $this->packages->getUrl($path, $packageName);
107+
}
80108
}

0 commit comments

Comments
 (0)