Browse code

Remote Progress

Benjamin Roth authored on09/12/2022 11:32:23
Showing9 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,24 @@
1
+# EditorConfig is awesome: http://EditorConfig.org
2
+
3
+# top-most EditorConfig file
4
+root = true
5
+
6
+# Unix-style newlines with a newline ending every file
7
+[*]
8
+end_of_line = lf
9
+insert_final_newline = true
10
+trim_trailing_whitespace = true
11
+
12
+[*.{php,twig,yml}]
13
+indent_style = space
14
+indent_size = 4
15
+
16
+[*.{svg,min.css,min.js}]
17
+insert_final_newline = false
18
+
19
+[*/src/Resources/contao/**.{css,js,php}]
20
+indent_style = tab
21
+
22
+[*/src/Resources/contao/**.html5]
23
+indent_style = space
24
+indent_size = 2
0 25
\ No newline at end of file
... ...
@@ -179,8 +179,9 @@
179 179
 /**
180 180
  * Object Fit
181 181
  */
182
-@mixin object-fit($mode: cover) {
182
+@mixin object-fit($mode: cover, $position: 50% 50%) {
183 183
   object-fit: $mode;
184
+  object-position: $position;
184 185
   font-family: 'object-fit: #{$mode};';
185 186
   display: block;
186 187
   width: 100%;
... ...
@@ -1556,4 +1556,183 @@ $shadow-color: #fff;
1556 1556
       }
1557 1557
     }
1558 1558
   }
1559
+}
1560
+
1561
+/**
1562
+ * PHOTO / TEXT COMBI
1563
+ */
1564
+.photo-text-wrapper {
1565
+  position: relative;
1566
+
1567
+  .photo-text-wrapper-background {
1568
+    @extend .background-wrapper-background;
1569
+  }
1570
+
1571
+  &.-valign-center {
1572
+    min-height: 100vh;
1573
+    display: flex;
1574
+    flex-direction: column;
1575
+    justify-content: center;
1576
+    > .text-wall {
1577
+      flex: 0 0 auto;
1578
+      width: 100%;
1579
+    }
1580
+
1581
+    &.-valignTop {
1582
+      justify-content: flex-start;
1583
+    }
1584
+    &.-valignBottom {
1585
+      justify-content: flex-end;
1586
+    }
1587
+  }
1588
+
1589
+  .photo-wall {
1590
+    position: absolute;
1591
+    //margin-left: $gutter-default;
1592
+    left: 50%-$gutter-default/2;
1593
+    right: 0;
1594
+    top: 0;
1595
+    height: 100%;
1596
+
1597
+    &-content {
1598
+      height: 100%;
1599
+      overflow: hidden;
1600
+      background: 50% 50% no-repeat;
1601
+      background-size: cover;
1602
+    }
1603
+  }
1604
+  .text-wall {
1605
+    @include centered-1200;
1606
+
1607
+    &-content {
1608
+      max-width: 50%;
1609
+      margin-right: auto;
1610
+      -webkit-box-sizing: border-box;
1611
+      -moz-box-sizing: border-box;
1612
+      box-sizing: border-box;
1613
+      padding-right: 75px;
1614
+
1615
+      .-bg-dark& {
1616
+        &,
1617
+        h1,h2,h3,h4,h5,h6 {
1618
+          color: $color-text-invert;
1619
+        }
1620
+      }
1621
+
1622
+      &.-padding {
1623
+        padding: $gutter-default*2 0;
1624
+      }
1625
+      &.-medium-padding {
1626
+        padding: 50px 0;
1627
+      }
1628
+      &.-large-padding {
1629
+        padding: 100px 0;
1630
+      }
1631
+
1632
+      &.-padding-top {
1633
+        padding: $gutter-default*2 0 0;
1634
+      }
1635
+      &.-medium-padding-top {
1636
+        padding: 50px 0 0;
1637
+      }
1638
+      &.-large-padding-top {
1639
+        padding: 100px 0 0;
1640
+      }
1641
+
1642
+      &.-padding-bottom {
1643
+        padding: 0 0 $gutter-default*2;
1644
+      }
1645
+      &.-medium-padding-bottom {
1646
+        padding: 0 0 50px;
1647
+      }
1648
+      &.-large-padding-bottom {
1649
+        padding: 0 0 100px;
1650
+      }
1651
+    }
1652
+  }
1653
+
1654
+  &.-alt-color {
1655
+    background-color: $color-bg-secondary;
1656
+
1657
+    /*&,
1658
+    h1,h2,h3,h4,h5,h6 {
1659
+      color: $color-headline-invert;
1660
+    }*/
1661
+  }
1662
+
1663
+  &.-bg-dark {
1664
+    background-color: #000;
1665
+  }
1666
+
1667
+  &.-text-right {
1668
+    .photo-wall {
1669
+      margin-left: 0;
1670
+      margin-right: $gutter-default;
1671
+      left: 0;
1672
+      right: 50%-$gutter-default/2;
1673
+    }
1674
+
1675
+    .text-wall {
1676
+      &-content {
1677
+        margin-right: 0;
1678
+        margin-left: auto;
1679
+        padding-right: 0;
1680
+        padding-left: 75px;
1681
+      }
1682
+    }
1683
+  }
1684
+
1685
+  @media screen and (max-width: 800px) {
1686
+    .photo-wall {
1687
+      margin-left: 60px;
1688
+    }
1689
+
1690
+    .text-wall {
1691
+      &-content {
1692
+        padding-right: 0;
1693
+      }
1694
+    }
1695
+
1696
+    &.-text-right {
1697
+      .photo-wall {
1698
+        margin-right: 60px;
1699
+      }
1700
+
1701
+      .text-wall {
1702
+        &-content {
1703
+          padding-left: 0;
1704
+        }
1705
+      }
1706
+    }
1707
+  }
1708
+
1709
+  @media screen and (max-width: 599px) {
1710
+    .photo-wall {
1711
+      position: relative;
1712
+      right: auto;
1713
+      left: auto;
1714
+      top: auto;
1715
+      margin: 0 0 15px;
1716
+      padding: 15px 15px 0;
1717
+    }
1718
+
1719
+    .photo-wall-content {
1720
+      min-height: 66vw;
1721
+    }
1722
+
1723
+    .text-wall {
1724
+      &-content {
1725
+        padding-right: 0;
1726
+        max-width: none;
1727
+      }
1728
+    }
1729
+
1730
+    &.-text-right {
1731
+      .photo-wall {
1732
+        margin-right: 0;
1733
+        right: 0;
1734
+      }
1735
+    }
1736
+  }
1737
+
1559 1738
 }
1560 1739
\ No newline at end of file
1561 1740
new file mode 100644
... ...
@@ -0,0 +1,65 @@
1
+<?php
2
+$cssClasses = array(
3
+  'feature-wrapper',
4
+  'feature-wrapper_'.$this->id,
5
+  $this->class,
6
+);
7
+if ($this->contentPosition) {
8
+    $cssClasses[] = $this->contentPosition;
9
+}
10
+if ($this->valign) {
11
+    $cssClasses[] = $this->valign;
12
+}
13
+if ($this->valignCenter) {
14
+    $cssClasses[] = '-valign-center';
15
+}
16
+
17
+$figure = '';
18
+$blnIsVideo = false;
19
+if (($file = \FilesModel::findByUuid($this->backgroundImage)) !== null)
20
+{
21
+  if (in_array(
22
+    $file->extension,
23
+    array_map('trim', explode(',', \Config::get('validImageTypes')))
24
+  ))
25
+  {
26
+    $figure = $this->figure(
27
+      $file->uuid, $this->backgroundImageSize,
28
+      [
29
+        'options' => [
30
+          'attr' => [
31
+            'class' => 'feature-image',
32
+            'style' => "object-fit: $this->backgroundSize;" .
33
+                "object-position: $this->backgroundPosition;" .
34
+                "font-family: 'object-fit: $this->backgroundSize';"
35
+          ]
36
+        ]
37
+      ]
38
+    );
39
+  } else {
40
+    $blnIsVideo = !$blnIsVideo;
41
+  }
42
+}
43
+
44
+
45
+?>
46
+
47
+<?php $this->block('content'); ?>
48
+<div class="<?php echo implode(' ', $cssClasses) ?> block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif; ?>>
49
+
50
+  <div class="photo-wall">
51
+  <?php if ($blnIsVideo && $file !== null): ?>
52
+    <div class="photo-wall-content">
53
+      <video class="no-mejs" autoplay loop>
54
+          <source src="<?php echo TL_FILES_URL . $file->path ?>" type="video/<?php echo $file->extension ?>">
55
+      </video>
56
+    </div>
57
+  <?php elseif ($figure !== null): ?>
58
+    <div class="photo-wall-content">
59
+      <?= $figure ?>
60
+    </div>
61
+  <?php endif ?>
62
+  </div>
63
+
64
+  <div class="text-wall"><div class="text-wall-content<?php if ($this->padding): ?> <?= $this->padding ?><?php endif; ?>">
65
+<?php $this->endblock(); ?>
0 66
new file mode 100644
... ...
@@ -0,0 +1,170 @@
1
+<?php
2
+// rsce_boxes_config.php
3
+return array(
4
+    'label' => array('Zentrierter Featured-Block Anfang →', 'Erzeugt einen zentrierten Feature-Block (z.B. Weinlinie)'),
5
+    'types' => array('content','module'),
6
+    'standardFields' => array('cssID', 'space'),
7
+    'wrapper' => array(
8
+        'type' => 'start',
9
+    ),
10
+    'fields' => array(
11
+        'content_set' => array(
12
+            'label' => array('Inhaltsspalte'),
13
+            'inputType' => 'group',
14
+        ),
15
+        'contentPosition' => array(
16
+            'label' => array('Position', 'Legt fest ob der Inhalt links oder rechts vom Bild positioniert ist.'),
17
+            'inputType' => 'select',
18
+            'options' => array(
19
+                '' => 'Links',
20
+                '-text-right' => 'Rechts',
21
+            ),
22
+            'eval' => array('tl_class' => 'w50'),
23
+        ),
24
+        'image_set' => array(
25
+            'label' => array('Bildspalte'),
26
+            'inputType' => 'group',
27
+        ),
28
+        'backgroundImage' => array(
29
+            'label' => array('Bild oder Video', 'Wählen Sie ein Bild oder eine Videodatei aus.'),
30
+            'inputType' => 'fileTree',
31
+            'eval' => array(
32
+                'tl_class' => 'clr',
33
+                'multiple' => false,
34
+                'fieldType' => 'radio',
35
+                'filesOnly' => true,
36
+                'extensions' => \Config::get('validImageTypes') . ',mp4,webm,ogv,ogg',
37
+                'orderField'=>'orderSRC',
38
+//        'isGallery' => true,
39
+            ),
40
+        ),
41
+        'backgroundImageSize' => array(
42
+            'label' => array('Bildbreite und Bildhöhe', ''),
43
+            'inputType' => 'imageSize',
44
+            'options' => \System::getContainer()->get('contao.image.image_sizes')->getOptionsForUser(BackendUser::getInstance()),
45
+            'reference' => &$GLOBALS['TL_LANG']['MSC'],
46
+            'eval' => array(
47
+                'rgxp' => 'digit',
48
+                'tl_class' => 'w50',
49
+                'includeBlankOption' => true,
50
+            ),
51
+        ),
52
+        'backgroundSize' => array(
53
+            'label' => array('Bildanpassung', ''),
54
+            'inputType' => 'select',
55
+            'options' => array(
56
+                'cover' => 'Beschnitten',
57
+                'contain' => 'Proportional',
58
+                '100% 100%' => 'Verzerrt',
59
+                'auto auto' => 'Originalgröße',
60
+            ),
61
+            'eval' => array('tl_class' => 'w50'),
62
+        ),
63
+        'backgroundPosition' => array(
64
+            'label' => array('Position', 'Bildausrichtung'),
65
+            'inputType' => 'select',
66
+            'options' => array(
67
+                '' => '-',
68
+                '0 0' => 'Links | Oben',
69
+                '50% 0' => 'Mitte | Oben',
70
+                '100% 0' => 'Rechts | Oben',
71
+                '0 50%' => 'Links | Mitte',
72
+                '50% 50%' => 'Mitte | Mitte',
73
+                '100% 50%' => 'Rechts | Mitte',
74
+                '0 100%' => 'Links | Unten',
75
+                '50% 100%' => 'Mitte | Unten',
76
+                '100% 100%' => 'Rechts | Unten',
77
+            ),
78
+            'eval' => array('tl_class' => 'w50'),
79
+        ),
80
+        'featureLink' => array(
81
+            'label' => array('Featurelink unter Bild', 'Stellt einen prominenten Link unterhalb des Bildes dar.'),
82
+            'inputType' => 'checkbox',
83
+            'eval' => array(
84
+                'tl_class' => 'w50 m12 clr',
85
+            ),
86
+        ),
87
+        'linkLabel' => array(
88
+            'label' => array('Link-Text', ''),
89
+            'inputType' => 'text',
90
+            'eval' => array('tl_class' => 'w50'),
91
+            'dependsOn' => array(
92
+                'field' => 'featureLink'
93
+            )
94
+        ),
95
+        'linkUrl' => array(
96
+            'label' => array('Link-URL', 'Beispiele: {{link_url::seitenalias}} (Alias, ID oder anderer Inserttag), http://example.com'),
97
+            'inputType' => 'url',
98
+            'eval' => array('tl_class' => 'w50'),
99
+            'dependsOn' => array(
100
+                'field' => 'featureLink'
101
+            )
102
+        ),
103
+        'linkTitle' => array(
104
+            'label' => array('Link-Titel', 'Wird beim hovern mit der Maus dargestellt.'),
105
+            'inputType' => 'text',
106
+            'eval' => array('tl_class' => 'w50'),
107
+            'dependsOn' => array(
108
+                'field' => 'featureLink'
109
+            )
110
+        ),
111
+        'newWindow' => array(
112
+            'label' => $GLOBALS['TL_LANG']['MSC']['target'],
113
+            'inputType' => 'checkbox',
114
+            'eval' => array('tl_class' => 'w50 m12'),
115
+            'dependsOn' => array(
116
+                'field' => 'featureLink'
117
+            )
118
+        ),
119
+        'layout_set' => array(
120
+            'label' => array('Layoutoptionen'),
121
+            'inputType' => 'group',
122
+        ),
123
+        'padding' => array(
124
+            'label' => array('Innenabstand', 'Es wird Oben und Unten ein Innenabstand angewendet.'),
125
+            'inputType' => 'select',
126
+            'options' => array(
127
+                '' => '-',
128
+                '-padding' => 'Default',
129
+                '-medium-padding' => 'Medium',
130
+                '-large-padding' => 'Large',
131
+                '-padding-top' => 'Small Top',
132
+                '-medium-padding-top' => 'Medium Top',
133
+                '-large-padding-top' => 'Large Top',
134
+                '-padding-bottom' => 'Small Bottom',
135
+                '-medium-padding-bottom' => 'Medium Bottom',
136
+                '-large-padding-bottom' => 'Large Bottom',
137
+            ),
138
+            'eval' => array(
139
+                'tl_class' => 'w50',
140
+            ),
141
+        ),
142
+        'valign' => array(
143
+            'label' => array('Vertikale Ausrichtung', 'Vertikale Ausrichtung (nur in Verbindung mit &quot;Mind. Viewport Höhe&quot;).'),
144
+            'inputType' => 'select',
145
+            'options' => array(
146
+                '' => 'Mitte',
147
+                '-valignTop' => 'Oben',
148
+                '-valignBottom' => 'Unten',
149
+            ),
150
+            'eval' => array('tl_class' => 'w50'),
151
+        ),
152
+        'valignCenter' => array(
153
+            'label' => array('Mind. Viewport Höhe', 'Der Inhaltsbereich hat mindestens die Höhe des Viewports. Der Inhalt wird zentriert dargestellt.'),
154
+            'inputType' => 'checkbox',
155
+            'eval' => array(
156
+                'tl_class' => 'w50 m12 clr',
157
+            ),
158
+        ),
159
+        'spacing' => array(
160
+            'label' => array('Abstand'),
161
+            'inputType' => 'group',
162
+        ),
163
+        'es_spacing' => array (
164
+            'inputType' => 'standardField'
165
+        ),
166
+        'es_padding' => array (
167
+            'inputType' => 'standardField'
168
+        ),
169
+    ),
170
+);
0 171
\ No newline at end of file
1 172
new file mode 100644
... ...
@@ -0,0 +1,70 @@
1
+<?php
2
+$cssClasses = array(
3
+  'photo-text-wrapper',
4
+  'photo-text-wrapper_'.$this->id,
5
+  $this->class,
6
+);
7
+if ($this->textPosition) {
8
+    $cssClasses[] = $this->textPosition;
9
+}
10
+if ($this->valign) {
11
+    $cssClasses[] = $this->valign;
12
+}
13
+if ($this->valignCenter) {
14
+    $cssClasses[] = '-valign-center';
15
+}
16
+$imageFiles = array();
17
+$videoFiles = array();
18
+if (is_array($this->backgroundImage)) {
19
+  foreach (\FilesModel::findMultipleByUuids($this->backgroundImage) as $file) {
20
+    if (in_array(
21
+      $file->extension,
22
+      array_map('trim', explode(',', \Config::get('validImageTypes')))
23
+    )) {
24
+      $imageFiles[] = $file;
25
+    }
26
+    else {
27
+      $videoFiles[] = $file;
28
+    }
29
+  }
30
+}
31
+$imgColStyle = '';
32
+if (count($imageFiles) && $image = $this->getImageObject($imageFiles[0]->uuid, $this->backgroundImageSize)) {
33
+  $imgColStyle .= 'background-image: url("' . $image->src . '");';
34
+}
35
+if ((count($imageFiles) || count($videoFiles)) && $this->backgroundSize) {
36
+  $imgColStyle .= 'background-size: ' . $this->backgroundSize . ';';
37
+}
38
+if ((count($imageFiles) || count($videoFiles)) && $this->backgroundPosition) {
39
+  $imgColStyle .= 'background-position: ' . $this->backgroundPosition . ';';
40
+}
41
+
42
+$style = '';
43
+if (!count($videoFiles) && !count($imageFiles)) {
44
+  $style .= $imgColStyle;
45
+}
46
+
47
+?>
48
+
49
+<?php $this->block('content'); ?>
50
+<div class="<?php echo implode(' ', $cssClasses) ?> block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif; ?>>
51
+
52
+  <div class="photo-wall">
53
+  <?php if (count($videoFiles)): ?>
54
+    <div class="photo-wall-content">
55
+      <video class="no-mejs" autoplay loop <?php if (count($imageFiles) && $image = $this->getImageObject($imageFiles[0]->uuid, $this->backgroundImageSize)): ?> poster="<?php echo $image->src ?>"<?php endif ?>>
56
+        <?php foreach ($videoFiles as $video): ?>
57
+          <source src="<?php echo TL_FILES_URL . $video->path ?>" type="video/<?php echo $video->extension ?>">
58
+        <?php endforeach ?>
59
+        <?php if (count($imageFiles) && $image = $this->getImageObject($imageFiles[0]->uuid, $this->backgroundImageSize)): ?>
60
+          <?php $this->insert('picture_default', $image->picture) ?>
61
+        <?php endif ?>
62
+      </video>
63
+    </div>
64
+  <?php elseif (count($imageFiles) && $image = $this->getImageObject($imageFiles[0]->uuid, $this->backgroundImageSize)): ?>
65
+    <div class="photo-wall-content" style="<?php echo htmlspecialchars($imgColStyle) ?>" data-image-url="<?php echo $image->src ?>"></div>
66
+  <?php endif ?>
67
+  </div>
68
+
69
+  <div class="text-wall"><div class="text-wall-content<?php if ($this->padding): ?> <?= $this->padding ?><?php endif; ?>">
70
+<?php $this->endblock(); ?>
0 71
new file mode 100644
... ...
@@ -0,0 +1,127 @@
1
+<?php
2
+// rsce_boxes_config.php
3
+return array(
4
+    'label' => array('Zentrierter Inhaltsbereich mit halbseitigem Bild Start', 'Erzeugt einen zentrierten Inhaltsbereich'),
5
+    'types' => array('content','module'),
6
+    'standardFields' => array('cssID', 'space'),
7
+    'wrapper' => array(
8
+        'type' => 'start',
9
+    ),
10
+    'fields' => array(
11
+        'text_set' => array(
12
+            'label' => array('Textspalte'),
13
+            'inputType' => 'group',
14
+        ),
15
+        'textPosition' => array(
16
+            'label' => array('Textposition', 'Legt fest ob der Text links oder rechts vom Bild positioniert ist.'),
17
+            'inputType' => 'select',
18
+            'options' => array(
19
+                '' => 'Links',
20
+                '-text-right' => 'Rechts',
21
+            ),
22
+            'eval' => array('tl_class' => 'w50'),
23
+        ),
24
+        'image_set' => array(
25
+            'label' => array('Bildspalte'),
26
+            'inputType' => 'group',
27
+        ),
28
+        'backgroundImage' => array(
29
+            'label' => array('Bild oder Video', 'Wählen Sie ein Bild oder mehrere Videodateien aus.'),
30
+            'inputType' => 'fileTree',
31
+            'eval' => array(
32
+                'tl_class' => 'clr',
33
+                'multiple' => true,
34
+                'fieldType' => 'checkbox',
35
+                'filesOnly' => true,
36
+                'extensions' => \Config::get('validImageTypes') . ',mp4,webm,ogv,ogg',
37
+                'orderField'=>'orderSRC',
38
+//        'isGallery' => true,
39
+            ),
40
+        ),
41
+        'backgroundImageSize' => array(
42
+            'label' => array('Bildbreite und Bildhöhe', ''),
43
+            'inputType' => 'imageSize',
44
+            'options' => \System::getContainer()->get('contao.image.image_sizes')->getOptionsForUser(BackendUser::getInstance()),
45
+            'reference' => &$GLOBALS['TL_LANG']['MSC'],
46
+            'eval' => array(
47
+                'rgxp' => 'digit',
48
+                'tl_class' => 'w50',
49
+                'includeBlankOption' => true,
50
+            ),
51
+        ),
52
+        'backgroundSize' => array(
53
+            'label' => array('Bildanpassung', ''),
54
+            'inputType' => 'select',
55
+            'options' => array(
56
+                '' => 'Beschnitten',
57
+                'contain' => 'Proportional',
58
+                '100% 100%' => 'Verzerrt',
59
+                'auto auto' => 'Originalgröße',
60
+            ),
61
+            'eval' => array('tl_class' => 'w50'),
62
+        ),
63
+        'backgroundPosition' => array(
64
+            'label' => array('Position', 'Nicht mit Parallax-Effekt kombinierbar'),
65
+            'inputType' => 'select',
66
+            'options' => array(
67
+                '' => '-',
68
+                '0 0' => 'Links | Oben',
69
+                '50% 0' => 'Mitte | Oben',
70
+                '100% 0' => 'Rechts | Oben',
71
+                '0 50%' => 'Links | Mitte',
72
+                '50% 50%' => 'Mitte | Mitte',
73
+                '100% 50%' => 'Rechts | Mitte',
74
+                '0 100%' => 'Links | Unten',
75
+                '50% 100%' => 'Mitte | Unten',
76
+                '100% 100%' => 'Rechts | Unten',
77
+            ),
78
+            'eval' => array('tl_class' => 'w50'),
79
+        ),
80
+        'padding' => array(
81
+            'label' => array('Innenabstand', 'Es wird Oben und Unten ein Innenabstand angewendet.'),
82
+            'inputType' => 'select',
83
+            'options' => array(
84
+                '' => '-',
85
+                '-padding' => 'Default',
86
+                '-medium-padding' => 'Medium',
87
+                '-large-padding' => 'Large',
88
+                '-padding-top' => 'Small Top',
89
+                '-medium-padding-top' => 'Medium Top',
90
+                '-large-padding-top' => 'Large Top',
91
+                '-padding-bottom' => 'Small Bottom',
92
+                '-medium-padding-bottom' => 'Medium Bottom',
93
+                '-large-padding-bottom' => 'Large Bottom',
94
+            ),
95
+            'eval' => array(
96
+                'tl_class' => 'w50',
97
+            ),
98
+        ),
99
+        'valignCenter' => array(
100
+            'label' => array('Mind. Viewport Höhe', 'Der Inhaltsbereich hat mindestens die Höhe des Viewports. Der Inhalt wird zentriert dargestellt.'),
101
+            'inputType' => 'checkbox',
102
+            'eval' => array(
103
+                'tl_class' => 'w50 m12 clr',
104
+            ),
105
+        ),
106
+        'valign' => array(
107
+            'label' => array('Vertikale Ausrichtung', 'Vertikale Ausrichtung (nur in Verbindung mit &quot;Mind. Viewport Höhe&quot;).'),
108
+            'inputType' => 'select',
109
+            'options' => array(
110
+                '' => 'Mitte',
111
+                '-valignTop' => 'Oben',
112
+                '-valignBottom' => 'Unten',
113
+            ),
114
+            'eval' => array('tl_class' => 'w50'),
115
+        ),
116
+        'spacing' => array(
117
+            'label' => array('Abstand'),
118
+            'inputType' => 'group',
119
+        ),
120
+        'es_spacing' => array (
121
+            'inputType' => 'standardField'
122
+        ),
123
+        'es_padding' => array (
124
+            'inputType' => 'standardField'
125
+        ),
126
+    ),
127
+);
0 128
\ No newline at end of file
1 129
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+
2
+<?php $this->block('content'); ?>
3
+  </div></div>
4
+
5
+</div>
6
+<?php $this->endblock(); ?>
0 7
new file mode 100644
... ...
@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+return array(
4
+	'label' => array(
5
+		'Zentrierter Inhaltsbereich mit halbseitigem Bild Ende',
6
+		'Beendet einen zentrierten Inhaltsbereich',
7
+	),
8
+	'types' => array('content', 'module'),
9
+	'wrapper' => array(
10
+		'type' => 'stop',
11
+	),
12
+	'fields' => array(),
13
+);