Benjamin Roth authored on11/07/2024 21:18:56
Showing3 changed files
... ...
@@ -14,7 +14,7 @@
14 14
     "issues": "https://www.vonrotenberg.de"
15 15
     },
16 16
     "require": {
17
-        "php": "^7.4 || ^8.0",
17
+        "php": "^8.0",
18 18
         "contao/core-bundle": "^4.13",
19 19
         "contao/calendar-bundle": "^4.13",
20 20
         "symfony/config": "^5.4",
... ...
@@ -14,31 +14,16 @@
14 14
         <div class="tl_formbody_edit">
15 15
             <input type="hidden" name="REQUEST_TOKEN" value="{{ request_token }}">
16 16
 
17
-            <fieldset id="pal_base_legend" class="tl_tbox">
18
-                <legend onclick="AjaxRequest.toggleFieldset(this,'base_legend','tl_layout')">Grundeinstellung</legend>
19
-                <div class="w50 widget">
20
-                    <h3><label><span class="invisible">Pflichtfeld </span>Zeitslot-Typ<span class="mandatory">*</span></label></h3>
21
-                    <select name="slotType" id="ctrl_slotType" class="tl_select" onfocus="Backend.getScrollOffset()">
22
-                        <option value="" selected="">-</option>
23
-                        <option value="annahmestelle_1">Annahmestelle 1 (30 Behälter/h)</option>
24
-                        <option value="annahmestelle_4">Annahmestelle 4 (30 Behälter/h)</option>
25
-                    </select>
26
-                    <p class="tl_help tl_tip" title="">Legen Sie hier den Zeitslot-Typ/Annahmestelle fest.</p>
27
-                </div>
28
-                <div class="w50 widget">
29
-                    <h3><label for="ctrl_buffer"><span class="invisible">Pflichtfeld </span>Pufferzeit in min.<span class="mandatory">*</span></label></h3>
30
-                    <input type="text" name="buffer" id="ctrl_buffer" class="tl_text" value="0" required="" maxlength="3" onfocus="Backend.getScrollOffset()">
31
-                    <p class="tl_help tl_tip" title="">Die Pufferzeit zwischen den Slots.</p>
32
-                </div>
33
-            </fieldset>
34
-
35
-            <fieldset id="pal_time_legend" class="tl_tbox">
36
-                <legend onclick="AjaxRequest.toggleFieldset(this,'time_legend','tl_layout')">Zeitraum</legend>
37
-                {% for field in fields %}
38
-                    {{ field|raw }}
17
+            {% for legend, widgets in fields %}
18
+                <fieldset id="pal_{{ legend }}" class="tl_tbox">
19
+                    <legend onclick="AjaxRequest.toggleFieldset(this,{{ legend }},'wa_slotassistant')">{{ ('wa_slotassistant.'~legend)|trans([], 'contao_default') }}</legend>
20
+                {% for field in widgets %}
21
+                    <div class="{{ field.class is defined and field.class|length ? field.class ~ ' ' : '' }}widget">
22
+                        {{ field.widget.parse()|raw }}
23
+                    </div>
39 24
                 {% endfor %}
40
-
41
-
25
+                </fieldset>
26
+            {% endfor %}
42 27
 
43 28
         </div>
44 29
         <div class="tl_formbody_submit">
... ...
@@ -18,6 +18,7 @@ use Contao\Date;
18 18
 use Contao\Environment;
19 19
 use Contao\FrontendUser;
20 20
 use Contao\Input;
21
+use Contao\SelectMenu;
21 22
 use Contao\StringUtil;
22 23
 use Contao\System;
23 24
 use Contao\TextField;
... ...
@@ -41,6 +42,8 @@ class WeinanlieferungSlotAssistantController extends AbstractController
41 42
     private $request;
42 43
     private $db;
43 44
 
45
+    protected $fields;
46
+
44 47
     public function __construct(TwigEnvironment $twig, ContaoCsrfTokenManager $tokenManager, RequestStack $requestStack, Connection $db)
45 48
     {
46 49
         $this->twig = $twig;
... ...
@@ -68,13 +71,9 @@ class WeinanlieferungSlotAssistantController extends AbstractController
68 71
         ];
69 72
         System::loadLanguageFile('default');
70 73
 
71
-        $blah = new TextField();
72
-
73
-        $blah->name = 'text';
74
-        $blah->mandatory = true;
75
-        $blah->label = 'ad';
74
+        dump($this->getWidgets());
76 75
 
77
-        $arrData['fields'][] = $blah->parse();
76
+        $arrData['fields'] = $this->getWidgets();
78 77
 
79 78
         return new Response(
80 79
             $this->twig->render(
... ...
@@ -83,4 +82,36 @@ class WeinanlieferungSlotAssistantController extends AbstractController
83 82
             )
84 83
         );
85 84
     }
85
+
86
+    protected function getWidgets()
87
+    {
88
+        if (!empty($this->fields))
89
+        {
90
+            return $this->fields;
91
+        }
92
+
93
+        $arrWidgets = [
94
+          'base_legend' => [
95
+              [
96
+                  'class' => 'w50',
97
+                  'widget' => new SelectMenu([
98
+                      'name' => 'slotType',
99
+                      'mandatory' => true,
100
+                      'label' => 'Zeitslot-Typ'
101
+                  ])
102
+              ],
103
+              [
104
+                  'class' => 'w50',
105
+                  'widget' => new TextField([
106
+                      'name' => 'buffer',
107
+                      'mandatory' => true,
108
+                      'label' => 'Pufferzeit in min.'
109
+                  ])
110
+              ]
111
+          ]
112
+        ];
113
+
114
+        $this->fields = $arrWidgets;
115
+        return $this->fields;
116
+    }
86 117
 }