Browse code

Fix ghost element when duplicating elements in backend

Benjamin Roth authored on05/05/2025 14:57:28
Showing1 changed files
... ...
@@ -18,7 +18,6 @@ class BackgroundWrapperController extends AbstractContentElementController
18 18
 {
19 19
     protected function getResponse(FragmentTemplate $template, ContentModel $model, Request $request): Response
20 20
     {
21
-        $GLOBALS['TL_CSS']['vr_coretools'] = 'bundles/vonrotenbergcoretools/css/background-wrapper.min.css|static';
22 21
         $arrData = array_merge($template->getData(),[
23 22
             'element_css_classes' => trim($template->element_css_classes . ' ' . $this->getWrapperClasses($model))
24 23
         ]);
Browse code

Add responsive behaviour for image aside setting for background wrapper

Benjamin Roth authored on29/04/2025 09:59:54
Showing1 changed files
... ...
@@ -89,11 +89,15 @@ class BackgroundWrapperController extends AbstractContentElementController
89 89
         }
90 90
         if ($model->vr_bw_bgBesideContent)
91 91
         {
92
-            $arrCssClasses[] = '-bg-beside-content';
92
+            $arrCssClasses[] = '-bg-aside-content';
93 93
             if (!empty($model->vr_bw_bgHorizontalPosition))
94 94
             {
95 95
                 $arrCssClasses[] = $model->vr_bw_bgHorizontalPosition;
96 96
             }
97
+            if (!empty($model->vr_bw_bgAsideContentResponsive))
98
+            {
99
+                $arrCssClasses[] = $model->vr_bw_bgAsideContentResponsive;
100
+            }
97 101
             /*if (!empty($model->vr_bw_bgHorizontalWidth))
98 102
             {
99 103
                 $arrCssClasses[] = $model->vr_bw_bgHorizontalWidth;
Browse code

Add basic background aside functionality

Benjamin Roth authored on28/04/2025 14:39:18
Showing1 changed files
... ...
@@ -94,10 +94,10 @@ class BackgroundWrapperController extends AbstractContentElementController
94 94
             {
95 95
                 $arrCssClasses[] = $model->vr_bw_bgHorizontalPosition;
96 96
             }
97
-            if (!empty($model->vr_bw_bgHorizontalWidth))
97
+            /*if (!empty($model->vr_bw_bgHorizontalWidth))
98 98
             {
99 99
                 $arrCssClasses[] = $model->vr_bw_bgHorizontalWidth;
100
-            }
100
+            }*/
101 101
         }
102 102
         if (!empty($model->vr_bw_bgColor))
103 103
         {
Benjamin Roth authored on28/04/2025 12:38:01
Showing1 changed files
... ...
@@ -87,6 +87,18 @@ class BackgroundWrapperController extends AbstractContentElementController
87 87
                 $arrCssClasses[] = $model->vr_bw_bgOpacity;
88 88
             }
89 89
         }
90
+        if ($model->vr_bw_bgBesideContent)
91
+        {
92
+            $arrCssClasses[] = '-bg-beside-content';
93
+            if (!empty($model->vr_bw_bgHorizontalPosition))
94
+            {
95
+                $arrCssClasses[] = $model->vr_bw_bgHorizontalPosition;
96
+            }
97
+            if (!empty($model->vr_bw_bgHorizontalWidth))
98
+            {
99
+                $arrCssClasses[] = $model->vr_bw_bgHorizontalWidth;
100
+            }
101
+        }
90 102
         if (!empty($model->vr_bw_bgColor))
91 103
         {
92 104
             $arrCssClasses[] = $model->vr_bw_bgColor;
Browse code

Initial commit

Benjamin Roth authored on09/10/2024 01:09:48
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,138 @@
1
+<?php
2
+
3
+declare(strict_types=1);
4
+
5
+namespace vonRotenberg\CoretoolsBundle\Controller\ContentElement;
6
+
7
+use Contao\ContentModel;
8
+use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
9
+use Contao\CoreBundle\DependencyInjection\Attribute\AsContentElement;
10
+use Contao\CoreBundle\Twig\FragmentTemplate;
11
+use Contao\FilesModel;
12
+use Contao\System;
13
+use Symfony\Component\HttpFoundation\Request;
14
+use Symfony\Component\HttpFoundation\Response;
15
+
16
+#[AsContentElement(category: 'miscellaneous', nestedFragments: true)]
17
+class BackgroundWrapperController extends AbstractContentElementController
18
+{
19
+    protected function getResponse(FragmentTemplate $template, ContentModel $model, Request $request): Response
20
+    {
21
+        $GLOBALS['TL_CSS']['vr_coretools'] = 'bundles/vonrotenbergcoretools/css/background-wrapper.min.css|static';
22
+        $arrData = array_merge($template->getData(),[
23
+            'element_css_classes' => trim($template->element_css_classes . ' ' . $this->getWrapperClasses($model))
24
+        ]);
25
+
26
+        if ($model->vr_bw_addImage)
27
+        {
28
+            $objFile = FilesModel::findByUuid($model->vr_bw_bgSRC);
29
+
30
+            if ($objFile !== null && is_file(System::getContainer()->getParameter('kernel.project_dir') . '/' . $objFile->path))
31
+            {
32
+
33
+                if (!in_array($objFile->extension,['mp4', 'm4v', 'mov', 'wmv', 'webm', 'ogv']))
34
+                {
35
+                    $figure = System::getContainer()
36
+                        ->get('contao.image.studio')
37
+                        ->createFigureBuilder()
38
+                        ->from($objFile)
39
+                        ->setSize($model->size)
40
+                        ->buildIfResourceExists();
41
+
42
+                    if ($figure !== null && $model->vr_bw_minHeight === '-mh-bgimage')
43
+                    {
44
+                        $imageData = $figure->getImage()->getPicture()->getImg();
45
+
46
+                        $ratio = round(100 / $imageData['width'] * $imageData['height'],3);
47
+                        $arrData['minHeight_ratio'] = $ratio;
48
+                    }
49
+
50
+                    $arrData['background_figure'] = $figure;
51
+                } else {
52
+                    $arrData['background_video'] = [
53
+                        'path' => System::getContainer()->get('contao.assets.files_context')->getStaticUrl() . $objFile->path,
54
+                        'extension' => $objFile->extension
55
+                    ];
56
+                }
57
+            }
58
+        }
59
+
60
+        $template->setData($arrData);
61
+
62
+        return $template->getResponse();
63
+    }
64
+
65
+    /**
66
+     * @param ContentModel $model
67
+     *
68
+     * @return string
69
+     */
70
+    protected function getWrapperClasses(ContentModel $model): string
71
+    {
72
+        $arrCssClasses = [];
73
+
74
+        // Add background image classes
75
+        if ($model->vr_bw_addImage)
76
+        {
77
+            if (!empty($model->vr_bw_bgSize))
78
+            {
79
+                $arrCssClasses[] = $model->vr_bw_bgSize;
80
+            }
81
+            if (!empty($model->vr_bw_bgPos))
82
+            {
83
+                $arrCssClasses[] = $model->vr_bw_bgPos;
84
+            }
85
+            if (!empty($model->vr_bw_bgOpacity))
86
+            {
87
+                $arrCssClasses[] = $model->vr_bw_bgOpacity;
88
+            }
89
+        }
90
+        if (!empty($model->vr_bw_bgColor))
91
+        {
92
+            $arrCssClasses[] = $model->vr_bw_bgColor;
93
+        }
94
+        if ($model->vr_bw_bgWidthRestriction)
95
+        {
96
+            $arrCssClasses[] = '-bg-width-restrict';
97
+        }
98
+
99
+        // Add content area classes
100
+        if (!empty($model->vr_bw_width))
101
+        {
102
+            $arrCssClasses[] = $model->vr_bw_width;
103
+        }
104
+        if (!empty($model->vr_bw_minHeight))
105
+        {
106
+            $arrCssClasses[] = $model->vr_bw_minHeight;
107
+
108
+            if ($model->vr_bw_minHeight == '-mh-vh' && !empty($model->vr_bw_mh_viewport))
109
+            {
110
+                $arrCssClasses[] = $model->vr_bw_mh_viewport;
111
+            }
112
+            if ($model->vr_bw_minHeight == '-mh-ratio' && !empty($model->vr_bw_mh_ratio))
113
+            {
114
+                $arrCssClasses[] = $model->vr_bw_mh_ratio;
115
+            }
116
+        }
117
+        if (!empty($model->vr_bw_vAlign))
118
+        {
119
+            $arrCssClasses[] = $model->vr_bw_vAlign;
120
+        }
121
+        if ($model->vr_bw_colorInvert)
122
+        {
123
+            $arrCssClasses[] = '-color-inverted';
124
+        }
125
+        if (
126
+            in_array($model->vr_bw_width,['-width-extended','-width-default-left','-width-default-right','-width-extended-left','-width-extended-right'])
127
+            && $model->vr_bw_widthText)
128
+        {
129
+            $arrCssClasses[] = '-add-text-indent';
130
+        }
131
+        if (!empty($model->vr_bw_padding))
132
+        {
133
+            $arrCssClasses[] = $model->vr_bw_padding;
134
+        }
135
+
136
+        return implode(' ', $arrCssClasses);
137
+    }
138
+}