Browse code

Some adjustments

Benjamin Roth authored on15/04/2024 12:38:33
Showing6 changed files
... ...
@@ -10,6 +10,9 @@
10 10
 
11 11
 use Contao\DC_Table;
12 12
 use Contao\DataContainer;
13
+use Contao\System;
14
+
15
+System::loadLanguageFile('default');
13 16
 
14 17
 $GLOBALS['TL_DCA']['tl_vr_real_estate_assets'] = array
15 18
 (
... ...
@@ -96,7 +99,7 @@ $GLOBALS['TL_DCA']['tl_vr_real_estate_assets'] = array
96 99
     'palettes'    => array
97 100
     (
98 101
         '__selector__' => array('availability'),
99
-        'default'      => '{title_legend},title,assetNo,address,floor,postal,city;{availability_legend},availability;{misc_legend},description;{basic_data_legend},livingSpace,numberOfRooms,rent,coldRent,advanceOperatingCosts,constructionYear,deposit,entitlementCertificate;{features_legend},features,heatingType,energyPassType,energyConsumption;{images_legend},gallerySRC,floorPlansSRC;{publish_legend},published,start,stop',
102
+        'default'      => '{title_legend},title,assetNo,address,floor,postal,city;{availability_legend},availability;{misc_legend},description;{basic_data_legend},livingSpace,numberOfRooms,rent,coldRent,advanceOperatingCosts,constructionYear,deposit,entitlementCertificate;{features_legend},features,parking,heatingType,energyPassType,energyConsumption;{images_legend},gallerySRC,floorPlansSRC;{publish_legend},published,start,stop',
100 103
     ),
101 104
 
102 105
     // Subpalettes
... ...
@@ -257,27 +260,20 @@ $GLOBALS['TL_DCA']['tl_vr_real_estate_assets'] = array
257 260
         (
258 261
             'exclude'   => true,
259 262
             'inputType' => 'checkbox',
260
-            'options'   => array
261
-            (
262
-                'kitchen',
263
-                'bathroom',
264
-                'guestToilet',
265
-                'garret',
266
-                'terrace',
267
-                'balcony',
268
-                'loggia',
269
-                'gardenShare',
270
-                'basementRoom',
271
-                'garage',
272
-                'carport',
273
-                'parkingSpace',
274
-                'undergroundCarPark',
275
-                'cable'
276
-            ),
263
+            'options'   => array_keys($GLOBALS['TL_LANG']['REF']['re_features']),
277 264
             'reference' => &$GLOBALS['TL_LANG']['REF']['re_features'],
278 265
             'eval'      => array('mandatory' => false, 'multiple' => true, 'tl_class' => 'w50'),
279 266
             'sql'       => "blob NULL"
280 267
         ),
268
+        'parking'              => array
269
+        (
270
+            'exclude'   => true,
271
+            'inputType' => 'checkbox',
272
+            'options'   => array_keys($GLOBALS['TL_LANG']['REF']['re_parking']),
273
+            'reference' => &$GLOBALS['TL_LANG']['REF']['re_parking'],
274
+            'eval'      => array('mandatory' => false, 'multiple' => true, 'tl_class' => 'w50'),
275
+            'sql'       => "blob NULL"
276
+        ),
281 277
         'heatingType'           => array
282 278
         (
283 279
             'exclude'   => true,
... ...
@@ -17,8 +17,12 @@
17 17
                 <source>Filter</source>
18 18
             </trans-unit>
19 19
 
20
+            <trans-unit id="MSC.re_pdfExpose">
21
+                <source>Expose als PDF-Datei öffnen</source>
22
+            </trans-unit>
23
+
20 24
             <trans-unit id="MSC.re_energyConsumption">
21
-                <source>Energieverbrauch nach</source>
25
+                <source>Energie&amp;shy;verbrauch nach</source>
22 26
             </trans-unit>
23 27
             <trans-unit id="MSC.re_properties">
24 28
                 <source>Eigenschaften</source>
... ...
@@ -107,7 +111,7 @@
107 111
                 <source>Mansarde</source>
108 112
             </trans-unit>
109 113
             <trans-unit id="REF.re_features.balcony">
110
-                <source>Balkon</source>
114
+                <source>Terasse / Balkon</source>
111 115
             </trans-unit>
112 116
             <trans-unit id="REF.re_features.loggia">
113 117
                 <source>Loggia</source>
... ...
@@ -118,22 +122,20 @@
118 122
             <trans-unit id="REF.re_features.basementRoom">
119 123
                 <source>Kellerraum</source>
120 124
             </trans-unit>
121
-            <trans-unit id="REF.re_features.garage">
122
-                <source>Garage</source>
123
-            </trans-unit>
124
-            <trans-unit id="REF.re_features.carport">
125
-                <source>Carport</source>
126
-            </trans-unit>
127 125
             <trans-unit id="REF.re_features.cable">
128 126
                 <source>Kabelanschluss</source>
129 127
             </trans-unit>
130
-            <trans-unit id="REF.re_features.terrace">
131
-                <source>Terrasse</source>
128
+
129
+            <trans-unit id="REF.re_parking.garage">
130
+                <source>Garage</source>
131
+            </trans-unit>
132
+            <trans-unit id="REF.re_parking.carport">
133
+                <source>Carport</source>
132 134
             </trans-unit>
133
-            <trans-unit id="REF.re_features.parkingSpace">
134
-                <source>Stellplatz</source>
135
+            <trans-unit id="REF.re_parking.carPark">
136
+                <source>Außenstellplatz</source>
135 137
             </trans-unit>
136
-            <trans-unit id="REF.re_features.undergroundCarPark">
138
+            <trans-unit id="REF.re_parking.undergroundCarPark">
137 139
                 <source>Tiefgaragenstellplatz</source>
138 140
             </trans-unit>
139 141
 
... ...
@@ -57,13 +57,13 @@
57 57
                 <source>Die Kaltmiete in EUR.</source>
58 58
             </trans-unit>
59 59
             <trans-unit id="tl_vr_real_estate_assets.rent.0">
60
-                <source>Stellplatzmiete</source>
60
+                <source>Stellplatz</source>
61 61
             </trans-unit>
62 62
             <trans-unit id="tl_vr_real_estate_assets.rent.1">
63 63
                 <source>Die Miete für Stellplätze in EUR.</source>
64 64
             </trans-unit>
65 65
             <trans-unit id="tl_vr_real_estate_assets.advanceOperatingCosts.0">
66
-                <source>Nebenkosten&amp;shy;vorschuss</source>
66
+                <source>Nebenkosten&amp;shy;voraus&amp;shy;zahlung</source>
67 67
             </trans-unit>
68 68
             <trans-unit id="tl_vr_real_estate_assets.advanceOperatingCosts.1">
69 69
                 <source>Der Nebenkostenvorschuss in EUR.</source>
... ...
@@ -110,6 +110,12 @@
110 110
             <trans-unit id="tl_vr_real_estate_assets.features.1">
111 111
                 <source>Weitere Ausstattungen des Objektes.</source>
112 112
             </trans-unit>
113
+            <trans-unit id="tl_vr_real_estate_assets.parking.0">
114
+                <source>Stellplatz</source>
115
+            </trans-unit>
116
+            <trans-unit id="tl_vr_real_estate_assets.parking.1">
117
+                <source>Art des Stellplatzes.</source>
118
+            </trans-unit>
113 119
             <trans-unit id="tl_vr_real_estate_assets.heatingType.0">
114 120
                 <source>Heizungstyp</source>
115 121
             </trans-unit>
... ...
@@ -177,10 +183,7 @@
177 183
                 <source>Bis wann das Objekt sichtbar sein soll. Leer lassen für dauerhafte Veröffentlichung.</source>
178 184
             </trans-unit>
179 185
             <trans-unit id="tl_vr_real_estate_assets.total">
180
-                <source>Gesamtkosten</source>
181
-            </trans-unit>
182
-            <trans-unit id="tl_vr_real_estate_assets.total">
183
-                <source>Gesamtkosten</source>
186
+                <source>Gesamtmiete</source>
184 187
             </trans-unit>
185 188
 
186 189
 
187 190
new file mode 100644
... ...
@@ -0,0 +1,159 @@
1
+<?xml version="1.0" ?>
2
+<xliff version="1.1">
3
+    <file datatype="php" source-language="de" target-language="en">
4
+        <body>
5
+            <trans-unit id="ERR.currency">
6
+                <source>Bitte geben Sie nur Zahlen im Währungsformat (z.B. 10,99 oder 33) an.</source>
7
+            </trans-unit>
8
+
9
+            <trans-unit id="MSC.re_room">
10
+                <source>Zimmer</source>
11
+            </trans-unit>
12
+            <trans-unit id="MSC.re_rooms">
13
+                <source>Zimmer</source>
14
+            </trans-unit>
15
+
16
+            <trans-unit id="MSC.re_filter">
17
+                <source>Filter</source>
18
+            </trans-unit>
19
+
20
+            <trans-unit id="MSC.re_pdfExpose">
21
+                <source>Expose als PDF-Datei öffnen</source>
22
+            </trans-unit>
23
+
24
+            <trans-unit id="MSC.re_energyConsumption">
25
+                <source>Energie&amp;shy;verbrauch nach</source>
26
+            </trans-unit>
27
+            <trans-unit id="MSC.re_properties">
28
+                <source>Eigenschaften</source>
29
+            </trans-unit>
30
+            <trans-unit id="MSC.re_rent">
31
+                <source>Miete</source>
32
+            </trans-unit>
33
+            <trans-unit id="MSC.re_description">
34
+                <source>Objektbeschreibung</source>
35
+            </trans-unit>
36
+            <trans-unit id="MSC.re_deadline">
37
+                <source>Bewerbungsschluss</source>
38
+            </trans-unit>
39
+            <trans-unit id="MSC.re_features">
40
+                <source>Ausstattung</source>
41
+            </trans-unit>
42
+            <trans-unit id="MSC.re_floorPlan">
43
+                <source>Grundriss</source>
44
+            </trans-unit>
45
+            <trans-unit id="MSC.re_gallery">
46
+                <source>Bilder</source>
47
+            </trans-unit>
48
+            <trans-unit id="MSC.re_empty">
49
+                <source>Aktuell haben wir leider keine Vermietungsangebote für Sie.</source>
50
+            </trans-unit>
51
+            <trans-unit id="MSC.re_entitlementCertificate">
52
+                <source>Wohnberechtigungs&amp;shy;schein erforderlich</source>
53
+            </trans-unit>
54
+
55
+            <trans-unit id="REF.re_condition.new">
56
+                <source>neuwertig</source>
57
+            </trans-unit>
58
+            <trans-unit id="REF.re_condition.renovated">
59
+                <source>neu modernisiert</source>
60
+            </trans-unit>
61
+            <trans-unit id="REF.re_condition.partially_renovated">
62
+                <source>teilmodernisiert</source>
63
+            </trans-unit>
64
+            <trans-unit id="REF.re_condition.maintained">
65
+                <source>gepflegt</source>
66
+            </trans-unit>
67
+
68
+            <trans-unit id="REF.re_heatingType.geh">
69
+                <source>Gasetagenheizung</source>
70
+            </trans-unit>
71
+            <trans-unit id="REF.re_heatingType.fw">
72
+                <source>Fernwärme</source>
73
+            </trans-unit>
74
+            <trans-unit id="REF.re_heatingType.zh">
75
+                <source>Zentralheizung / Fernwärme</source>
76
+            </trans-unit>
77
+            <trans-unit id="REF.re_heatingType.gzh">
78
+                <source>Gaszentralheizung</source>
79
+            </trans-unit>
80
+            <trans-unit id="REF.re_heatingType.nsp">
81
+                <source>Nachtspeicherheizung</source>
82
+            </trans-unit>
83
+            <trans-unit id="REF.re_heatingType.go">
84
+                <source>Gasöfen</source>
85
+            </trans-unit>
86
+
87
+            <trans-unit id="REF.re_energyPassType.eav">
88
+                <source>EA-V</source>
89
+            </trans-unit>
90
+            <trans-unit id="REF.re_energyPassType.eab">
91
+                <source>EA-B</source>
92
+            </trans-unit>
93
+
94
+            <trans-unit id="REF.re_availability.immediately">
95
+                <source>sofort</source>
96
+            </trans-unit>
97
+            <trans-unit id="REF.re_availability.from">
98
+                <source>ab Datum</source>
99
+            </trans-unit>
100
+
101
+            <trans-unit id="REF.re_features.kitchen">
102
+                <source>Küche</source>
103
+                <target>Kitchen</target>
104
+            </trans-unit>
105
+            <trans-unit id="REF.re_features.bathroom">
106
+                <source>Bad</source>
107
+            </trans-unit>
108
+            <trans-unit id="REF.re_features.guestToilet">
109
+                <source>Gäste-WC</source>
110
+            </trans-unit>
111
+            <trans-unit id="REF.re_features.garret">
112
+                <source>Mansarde</source>
113
+            </trans-unit>
114
+            <trans-unit id="REF.re_features.balcony">
115
+                <source>Terasse / Balkon</source>
116
+            </trans-unit>
117
+            <trans-unit id="REF.re_features.loggia">
118
+                <source>Loggia</source>
119
+            </trans-unit>
120
+            <trans-unit id="REF.re_features.gardenShare">
121
+                <source>Gartenanteil</source>
122
+            </trans-unit>
123
+            <trans-unit id="REF.re_features.basementRoom">
124
+                <source>Kellerraum</source>
125
+            </trans-unit>
126
+            <trans-unit id="REF.re_features.cable">
127
+                <source>Kabelanschluss</source>
128
+            </trans-unit>
129
+
130
+            <trans-unit id="REF.re_parking.garage">
131
+                <source>Garage</source>
132
+                <target>Garage</target>
133
+            </trans-unit>
134
+            <trans-unit id="REF.re_parking.carport">
135
+                <source>Carport</source>
136
+            </trans-unit>
137
+            <trans-unit id="REF.re_parking.carPark">
138
+                <source>Außenstellplatz</source>
139
+            </trans-unit>
140
+            <trans-unit id="REF.re_parking.undergroundCarPark">
141
+                <source>Tiefgaragenstellplatz</source>
142
+            </trans-unit>
143
+
144
+            <trans-unit id="REF.re_filter.numberOfRooms">
145
+                <source>Zimmeranzahl</source>
146
+            </trans-unit>
147
+            <trans-unit id="REF.re_filter.city">
148
+                <source>Ort</source>
149
+            </trans-unit>
150
+            <trans-unit id="REF.re_filter.coldRent">
151
+                <source>Kaltmiete</source>
152
+            </trans-unit>
153
+            <trans-unit id="REF.re_filter.livingSpace">
154
+                <source>Wohnfläche</source>
155
+            </trans-unit>
156
+
157
+        </body>
158
+    </file>
159
+</xliff>
... ...
@@ -1,103 +1,126 @@
1 1
 {%- macro tableRow(label, value, options = {}) -%}
2
-  {%- set class = options.class|default({}) -%}
3
-  {%- set prepend = options.prepend|default({}) %}
4
-  {% set append = options.append|default({}) -%}
5
-  {% apply spaceless %}
6
-    {% if label and value %}
7
-      [
8
-{#        { text: '{{- label -}}', color: '#357792' },#}
9
-        { text: '{{- label -}}' },
10
-{#        { text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', color: '#001118', bold: true },#}
11
-        { text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', bold: true },
12
-      ],
13
-    {% endif %}
14
-  {% endapply %}
2
+    {%- set class = options.class|default({}) -%}
3
+    {%- set prepend = options.prepend|default({}) %}
4
+    {% set append = options.append|default({}) -%}
5
+    {% apply spaceless %}
6
+        {% if label and value %}
7
+            [
8
+            {#        { text: '{{- label -}}', color: '#357792' }, #}
9
+            { text: '{{- label -}}' },
10
+            {#        { text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', color: '#001118', bold: true }, #}
11
+            { text: '{% if prepend %}{{ prepend }}{% endif %}{{- value -}}{% if append %}{{ append }}{% endif %}', bold: true },
12
+            ],
13
+        {% endif %}
14
+    {% endapply %}
15 15
 {%- endmacro -%}
16 16
 
17
-{#<div id="iFrameContainer"></div>#}
17
+{# <div id="iFrameContainer"></div> #}
18 18
 
19 19
 <script src="/bundles/vonrotenbergrealestatelisting/js/pdfmake.js"></script>
20 20
 <script src="/bundles/vonrotenbergrealestatelisting/js/vfs_fonts.js"></script>
21 21
 
22 22
 <script>
23
-  var docDefinition = {
24
-    pageSize: 'A4',
25
-    pageOrientation: 'portrait',
26
-    pageMargins: [{{ 15|mm2pt }},{{ 35|mm2pt }},{{ 15|mm2pt }},{{ 15|mm2pt }}],
27
-    defaultStyle: {
28
-      font: 'Roboto',
29
-      fontSize: 11,
30
-      lineHeight: 1.1
31
-    },
32
-    styles:{
33
-      h3: {
34
-        fontSize: 13,
35
-        bold: true,
36
-        margin: [0,0,0,{{ 1.25|mm2pt }}]
37
-      },
38
-      h4: {
39
-        fontSize: 13,
40
-        // color: '#025577',
41
-        margin: [0,0,0,{{ 1.25|mm2pt }}]
42
-      }
43
-    },
44
-    header: function(currentPage, pageCount, pageSize) {
45
-      if (currentPage === 1)
46
-      {
47
-        return [
48
-          {
49
-            stack: [
50
-              { image: '{{ 'bundles/vonrotenbergrealestatelisting/images/pdf_logo.png'|imageDataUrl }}', width: {{ 35|mm2pt }}, alignment: 'center'},
51
-            ],
52
-            margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }},0]
53
-          },
54
-        ];
55
-      }
56
-      return [];
57
-    },
58
-    footer: function(currentPage, pageCount, pageSize) {
59
-      if (pageCount > 1)
60
-      {
61
-        return [
62
-          {
63
-            stack: [
64
-              { text: 'Seite: '+currentPage+'/'+pageCount, alignment: 'right', margin: [0, 0, 0, 0], color: '#666'}
65
-            ],
66
-            margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }},0]
67
-          },
68
-        ];
69
-      }
70
-      return [];
71
-    },
72
-    content: [
73
-      {
74
-        columns: [
75
-          {
76
-            stack: [
77
-              {
78
-                text: '{{ item.title }}{% if item.city %} in {{ item.city }}{% endif %}',
79
-                fontSize: 20,
80
-                margin: [0,0,0,{{ 2.5|mm2pt }}],
81
-                color: '#025577'
82
-              },
83
-              {% if item.address %}
84
-                {
85
-                  text: '{{ item.address }}',
86
-                  fontSize: 16,
87
-                  margin: [0,0,0,{{ 2.5|mm2pt }}]
88
-                },
89
-              {% endif %}
90
-              {
91
-                text: 'Objekt-Nr.: {{ item.assetNo }}',
92
-                fontSize: 14,
93
-                color: '#025577',
94
-                margin: [0,0,0,{{ 5|mm2pt }}]
95
-              },
96
-              {
97
-                qr: '{{ item.qrUrl }}',
98
-                fit: 70
99
-              }
100
-              {#{% if item.description %}
23
+    var docDefinition = {
24
+        pageSize: 'A4',
25
+        pageOrientation: 'portrait',
26
+        pageMargins: [{{ 15|mm2pt }},{{ 35|mm2pt }},{{ 15|mm2pt }},{{ 15|mm2pt }}],
27
+        info: {
28
+            title: 'riel-expose-nr_{{ item.assetNo }}-{{ "now"|date("Y-m-d") }}',
29
+            author: 'vonRotenberg Estate Manager',
30
+            creator: 'vonRotenberg Estate Manager',
31
+            producer: 'vonRotenberg Estate Manager',
32
+            subject: 'Expose für Objekt-Nr. {{ item.assetNo }}'
33
+        },
34
+        defaultStyle: {
35
+            font: 'Roboto',
36
+            fontSize: 11,
37
+            lineHeight: 1.1
38
+        },
39
+        styles: {
40
+            h3: {
41
+                fontSize: 13,
42
+                bold: true,
43
+                margin: [0, 0, 0,{{ 1.25|mm2pt }}]
44
+            },
45
+            h4: {
46
+                fontSize: 13,
47
+                // color: '#1476BB',
48
+                margin: [0, 0, 0,{{ 1.25|mm2pt }}]
49
+            }
50
+        },
51
+        header: function (currentPage, pageCount, pageSize) {
52
+            if (currentPage === 1)
53
+            {
54
+                return [
55
+                    {
56
+                        stack: [
57
+                            {
58
+                                image: '{{ 'bundles/vonrotenbergrealestatelisting/images/pdf_logo.png'|imageDataUrl }}',
59
+                                width: {{ 35|mm2pt }},
60
+                                alignment: 'center'
61
+                            },
62
+                        ],
63
+                        margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }}, 0]
64
+                    },
65
+                ];
66
+            }
67
+            return [];
68
+        },
69
+        footer: function (currentPage, pageCount, pageSize) {
70
+            if (pageCount > 1)
71
+            {
72
+                return [
73
+                    {
74
+                        stack: [
75
+                            {
76
+                                text: 'Seite: ' + currentPage + '/' + pageCount,
77
+                                alignment: 'right',
78
+                                margin: [0, 0, 0, 0],
79
+                                color: '#666'
80
+                            }
81
+                        ],
82
+                        margin: [{{ 15|mm2pt }},{{ 5|mm2pt }},{{ 15|mm2pt }}, 0]
83
+                    },
84
+                ];
85
+            }
86
+            return [];
87
+        },
88
+        content: [
89
+            {
90
+                columns: [
91
+                    {
92
+                        stack: [
93
+                            {
94
+                                text: '{{ item.title }}',
95
+                                fontSize: 20,
96
+                                margin: [0, 0, 0,{{ 2.5|mm2pt }}],
97
+                                color: '#1476BB'
98
+                            },
99
+                            {% if item.address %}
100
+                            {
101
+                                text: '{{ item.address }}',
102
+                                fontSize: 16,
103
+                                margin: [0, 0, 0, 0]
104
+                            },
105
+                            {% endif %}
106
+                            {% if item.city and item.postal %}
107
+                            {
108
+                                text: '{{ item.postal }} {{ item.city }}',
109
+                                fontSize: 16,
110
+                                margin: [0, 0, 0, 0]
111
+                            },
112
+                            {% endif %}
113
+                            {
114
+                                text: 'Objekt-Nr.: {{ item.assetNo }}',
115
+                                fontSize: 14,
116
+                                color: '#1476BB',
117
+                                margin: [0, {{ 2.5|mm2pt }}, 0,{{ 5|mm2pt }}]
118
+                            },
119
+                            {
120
+                                qr: '{{ item.qrUrl }}',
121
+                                fit: 80
122
+                            }
123
+                            {# {% if item.description %}
101 124
               {
102 125
                 text: '{{ 'MSC.re_description'|trans({}, 'contao_default') }}',
103 126
                 style: 'h3',
... ...
@@ -107,244 +130,254 @@
107 130
                 text: '{{ item.description|raw|striptags }}',
108 131
                 margin: [0, 0, 0,{{ 10|mm2pt }}],
109 132
               }
110
-              {% endif %}#}
111
-            ],
112
-            width: '*'
113
-          },
114
-          {
115
-            stack: [
116
-              {
117
-                image: '{{ item.teaserFigure.getImage().getFilePath()|imageDataUrl }}',
118
-                fit: [{{ 85|mm2pt }},{{ 85|mm2pt }}],
119
-                alignment: 'right'
120
-              }
121
-            ],
122
-            width: '*'
123
-          }
124
-        ],
125
-        margin: [0,0,0,{{ 10|mm2pt }}],
126
-        columnGap: {{ 5|mm2pt }}
127
-      },
128
-      {% if item.description %}
129
-      {
130
-        text: '{{ 'MSC.re_description'|trans({}, 'contao_default') }}',
131
-        style: 'h3'
132
-      },
133
-      {
134
-        table: {
135
-          widths: ['*'],
136
-          body: [
137
-            [
138
-              {
139
-                text: '{{ item.description|raw|striptags|replace({ '\r\n': '\\r\\n', '\n': '\\n', '\r': '\\r' }) }}',
140
-                margin: [5,5,5,5],
141
-                // color: '#357792'
142
-              }
143
-            ]
144
-          ]
145
-        },
146
-        fillColor: '#f3fbff',
147
-        layout: 'noBorders',
148
-        margin: [0, 0, 0,{{ 10|mm2pt }}],
149
-      },
150
-      {% endif %}
151
-      {
152
-        columns: [
153
-          {
154
-            stack: [
155
-              {
156
-                text: '{{ 'MSC.re_properties'|trans({}, 'contao_default') }}',
133
+              {% endif %} #}
134
+                        ],
135
+                        width: '*'
136
+                    },
137
+                    {
138
+                        stack: [
139
+                            {
140
+                                image: '{{ item.teaserFigure.getImage().getFilePath()|imageDataUrl }}',
141
+                                fit: [{{ 85|mm2pt }},{{ 85|mm2pt }}],
142
+                                alignment: 'right'
143
+                            }
144
+                        ],
145
+                        width: '*'
146
+                    }
147
+                ],
148
+                margin: [0, 0, 0,{{ 10|mm2pt }}],
149
+                columnGap: {{ 5|mm2pt }}
150
+            },
151
+            {% if item.description %}
152
+            {
153
+                text: '{{ 'MSC.re_description'|trans({}, 'contao_default') }}',
157 154
                 style: 'h3'
158
-              },
159
-              {
155
+            },
156
+            {
160 157
                 table: {
161
-                  widths: ['*'],
162
-                  body: [
163
-                    [
164
-                      {
165
-                        stack: [
166
-                          {
167
-                            table: {
168
-                              widths: ['40%', '*'],
169
-                              body: [
170
-                                {{ _self.tableRow('tl_vr_real_estate_assets.livingSpace.0'|trans({}, 'contao_default'),item.livingSpace|number_format(2, ',', ''),{ append: ' m²'}) }}
171
-                                {{ _self.tableRow('tl_vr_real_estate_assets.numberOfRooms.0'|trans({}, 'contao_default'),item.numberOfRooms) }}
172
-                                {% set condition = 'REF.re_condition.' ~ item.condition %}
173
-                                {{ _self.tableRow('tl_vr_real_estate_assets.condition.0'|trans({}, 'contao_default'),condition|trans({}, 'contao_default')) }}
174
-                                {{ _self.tableRow('tl_vr_real_estate_assets.constructionYear.0'|trans({}, 'contao_default'),item.constructionYear) }}
175
-                              ],
176
-                            },
177
-                            layout: 'noBorders',
178
-                            margin: [5, 5, 5, 5],
179
-                          },
180
-                          {
181
-                            table: {
182
-                              widths: ['40%', '*'],
183
-                              body: [
184
-                                {% set heating = 'REF.re_heatingType.' ~ item.heatingType %}
185
-                                {{ _self.tableRow('tl_vr_real_estate_assets.heatingType.0'|trans({}, 'contao_default'),heating|trans({}, 'contao_default')) }}
186
-                                {% if item.energyConsumption and item.energyPassType %}
187
-                                  {% set passType = 'REF.re_energyPassType.' ~ item.energyPassType %}
188
-                                  {{ _self.tableRow('MSC.re_energyConsumption'|trans({}, 'contao_default') ~ ' ' ~ passType|trans({}, 'contao_default'),item.energyConsumption,{ append: ' kWh/(m²a)'}) }}
189
-                                {% endif %}
190
-                              ],
191
-                            },
192
-                            layout: 'noBorders',
193
-                            margin: [5, 5, 5, 5],
194
-                          },
195
-                          {
196
-                            text: '{{ 'MSC.re_rent'|trans({}, 'contao_default') }}',
197
-                            style: 'h4',
198
-                            margin: [5, 5, 5, 5],
199
-                          },
200
-                          {
201
-                            table: {
202
-                              widths: ['40%', '*'],
203
-                              body: [
204
-                                {{ _self.tableRow('tl_vr_real_estate_assets.coldRent.0'|trans({}, 'contao_default'),item.coldRent|number_format(2, ',', ''),{ append: ' €'}) }}
205
-                                {{ _self.tableRow('Betriebskosten-vorauszahlungen',item.advanceOperatingCosts|number_format(2, ',', ''),{ append: ' €'}) }}
206
-                              ],
207
-                            },
208
-                            layout: 'noBorders',
209
-                            margin: [5, 5, 5, 5],
210
-                          },
211
-                          {
212
-                            table: {
213
-                              widths: ['40%', '*'],
214
-                              body: [
215
-                                {{ _self.tableRow('Genossenschafts-anteile',item.cooperativeShares) }}
216
-                                {{ _self.tableRow('tl_vr_real_estate_assets.availability.0'|trans({}, 'contao_default'),item.availableFrom) }}
217
-                              ],
218
-                            },
219
-                            layout: 'noBorders',
220
-                            margin: [5, 5, 5, 5],
221
-                          },
158
+                    widths: ['*'],
159
+                    body: [
160
+                        [
161
+                            {
162
+                                text: '{{ item.description|raw|striptags|replace({ '\r\n': '\\r\\n', '\n': '\\n', '\r': '\\r' }) }}',
163
+                                margin: [15, 10, 15, 10],
164
+                                // color: '#357792'
165
+                            }
222 166
                         ]
223
-                      }
224 167
                     ]
225
-                  ]
226 168
                 },
227
-                fillColor: '#f3fbff',
169
+                fillColor: '#e6ebf1',
228 170
                 layout: 'noBorders',
229
-              },
230
-            ],
231
-            width: '*',
232
-          }{% if item.features is iterable  and item.features|length > 0 %},
233
-          {
234
-            stack: [
235
-              {
236
-                text: '{{ 'MSC.re_features'|trans({}, 'contao_default') }}',
237
-                style: 'h3'
238
-              },
239
-              {
240
-                table: {
241
-                  widths: ['*'],
242
-                  body: [
243
-                    [
244
-                      {
171
+                margin: [0, 0, 0,{{ 8|mm2pt }}],
172
+            },
173
+            {% endif %}
174
+            {
175
+                columns: [
176
+                    {
245 177
                         stack: [
246
-                          {
247
-                            table: {
248
-                              widths: [10, '*'],
249
-                              body: [
250
-                                {% for feature in item.features %}
251
-                                {% set featureTrans = 'REF.re_features.' ~ feature %}
252
-                                [
253
-                                  {
254
-                                    canvas: [
255
-                                      {
256
-                                        type: 'polyline',
257
-                                        lineWidth: 1,
258
-                                        closePath: false,
259
-                                        points: [{x: 0, y: 6}, {x: 4, y: 10}, {x: 10, y: 2}],
260
-                                        lineColor: '#73160E'
261
-                                      }
178
+                            {
179
+                                text: '{{ 'MSC.re_properties'|trans({}, 'contao_default') }}',
180
+                                style: 'h3'
181
+                            },
182
+                            {
183
+                                table: {
184
+                                    widths: ['*'],
185
+                                    body: [
186
+                                        [
187
+                                            {
188
+                                                stack: [
189
+                                                    {
190
+                                                        table: {
191
+                                                            widths: ['40%', '*'],
192
+                                                            body: [
193
+                                                                {% if item.livingSpace is defined and item.livingSpace is not empty %}{{ _self.tableRow('tl_vr_real_estate_assets.livingSpace.0'|trans({}, 'contao_default'),item.livingSpace|number_format(2, ',', ''),{ append: ' m²'}) }}{% endif %}
194
+                                                                {% if item.numberOfRooms is defined and item.numberOfRooms is not empty %}{{ _self.tableRow('tl_vr_real_estate_assets.numberOfRooms.0'|trans({}, 'contao_default'),item.numberOfRooms) }}{% endif %}
195
+                                                                {% if item.condition is defined and item.condition is not empty %}{{ _self.tableRow('tl_vr_real_estate_assets.condition.0'|trans({}, 'contao_default'),('REF.re_condition.' ~ item.condition)|trans({}, 'contao_default')) }}{% endif %}
196
+                                                                {% if item.constructionYear is defined and item.constructionYear is not empty %}{{ _self.tableRow('tl_vr_real_estate_assets.constructionYear.0'|trans({}, 'contao_default'),item.constructionYear) }}{% endif %}
197
+                                                            ],
198
+                                                        },
199
+                                                        layout: 'noBorders',
200
+                                                        margin: [15, 10, 15, 5],
201
+                                                    },
202
+                                                    {% if item.heatingType is not empty and item.energyConsumption is not empty and item.energyPassType is not empty %}
203
+                                                    {
204
+                                                        table: {
205
+                                                            widths: ['40%', '*'],
206
+                                                            body: [
207
+                                                                {% if item.heatingType is defined and item.heatingType is not empty %}{{ _self.tableRow('tl_vr_real_estate_assets.heatingType.0'|trans({}, 'contao_default'),('REF.re_heatingType.' ~ item.heatingType)|trans({}, 'contao_default')) }}{% endif %}
208
+                                                                {% if item.energyConsumption and item.energyPassType %}
209
+                                                                {{ _self.tableRow('MSC.re_energyConsumption'|trans({}, 'contao_default')|replace({'&shy;' : '-'}) ~ ' ' ~ ('REF.re_energyPassType.' ~ item.energyPassType)|trans({}, 'contao_default'),item.energyConsumption,{ append: ' kWh/(m²a)'}) }}
210
+                                                                {% endif %}
211
+                                                            ],
212
+                                                        },
213
+                                                        layout: 'noBorders',
214
+                                                        margin: [15, 5, 15, 5],
215
+                                                    },
216
+                                                    {% endif %}
217
+                                                    {
218
+                                                        text: '{{ 'MSC.re_rent'|trans({}, 'contao_default') }}',
219
+                                                        style: 'h4',
220
+                                                        margin: [15, 5, 15, 5],
221
+                                                    },
222
+                                                    {
223
+                                                        table: {
224
+                                                            widths: ['40%', '*'],
225
+                                                            body: [
226
+                                                                {{ _self.tableRow('tl_vr_real_estate_assets.coldRent.0'|trans({}, 'contao_default'),item.coldRent|number_format(2, ',', ''),{ append: ' €'}) }}
227
+                                                                {{ _self.tableRow('tl_vr_real_estate_assets.advanceOperatingCosts.0'|trans({}, 'contao_default')|replace({'&shy;' : '-'}),item.advanceOperatingCosts|number_format(2, ',', ''),{ append: ' €'}) }}
228
+                                                            ],
229
+                                                        },
230
+                                                        layout: 'noBorders',
231
+                                                        margin: [15, 5, 15, 5],
232
+                                                    },
233
+                                                    {
234
+                                                        table: {
235
+                                                            widths: ['40%', '*'],
236
+                                                            body: [
237
+                                                                {{ _self.tableRow('tl_vr_real_estate_assets.deposit.0'|trans({}, 'contao_default')|replace({'&shy;' : '-'}),item.deposit|number_format(2, ',', ''),{ append: ' €'}) }}
238
+                                                                {{ _self.tableRow('tl_vr_real_estate_assets.availability.0'|trans({}, 'contao_default'),item.availableFrom) }}
239
+                                                            ],
240
+                                                        },
241
+                                                        layout: 'noBorders',
242
+                                                        margin: [15, 5, 15, 10],
243
+                                                    },
244
+                                                ]
245
+                                            }
246
+                                        ]
262 247
                                     ]
263
-                                  },
264
-                                  {
265
-                                    text: '{{ featureTrans|trans({}, 'contao_default') }}',
266
-                                    // color: '#357792'
267
-                                  }
268
-                                ],
269
-                                {% endfor %}
270
-                              ],
248
+                                },
249
+                                fillColor: '#e6ebf1',
250
+                                layout: 'noBorders',
271 251
                             },
272
-                            layout: 'noBorders',
273
-                            margin: [5, 5, 5, 5],
274
-                          },
275
-                        ]
276
-                      }
277
-                    ]
278
-                  ]
279
-                },
280
-                fillColor: '#f3fbff',
281
-                layout: 'noBorders',
282
-              },
283
-            ],
284
-            width: '*'
285
-          }{% endif %}
286
-        ],
287
-        margin: [0,0,0,{{ 10|mm2pt }}],
288
-        columnGap: {{ 5|mm2pt }},
289
-        unbreakable: true
290
-      },
291
-      {% if item.floorPlansFigures|length > 0 %}
292
-        {
293
-          text: '{{ 'MSC.re_floorPlan'|trans({}, 'contao_default') }}',
294
-          style: 'h3',
295
-          pageBreak: 'before'
296
-        },
297
-        {% for image in item.floorPlansFigures %}
298
-        {
299
-          image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
300
-          fit: [{{ 180|mm2pt }},{{ 180|mm2pt }}],
301
-          alignment: 'center'
302
-        },
303
-        {% endfor %}
304
-      {% endif %}
305
-      {% if item.galleryFigures|length > 1 %}
306
-        {
307
-          text: '{{ 'MSC.re_gallery'|trans({}, 'contao_default') }}',
308
-          style: 'h3',
309
-          pageBreak: 'before'
310
-        },
311
-        {
312
-          columns: [
313
-            {% for image in item.galleryFigures[1:] %}
314
-            {% if loop.index % 2 > 0 and loop.index > 1 %}
252
+                        ],
253
+                        width: '*',
254
+                    }{% if item.features is iterable  and item.features|length > 0 %},
255
+                    {
256
+                        stack: [
257
+                            {
258
+                                text: '{{ 'MSC.re_features'|trans({}, 'contao_default') }}',
259
+                                style: 'h3'
260
+                            },
261
+                            {
262
+                                table: {
263
+                                    widths: ['*'],
264
+                                    body: [
265
+                                        [
266
+                                            {
267
+                                                stack: [
268
+                                                    {
269
+                                                        table: {
270
+                                                            widths: [10, '*'],
271
+                                                            body: [
272
+                                                                {% for feature in item.features %}
273
+                                                                {% set featureTrans = 'REF.re_features.' ~ feature %}
274
+                                                                [
275
+                                                                    {
276
+                                                                        canvas: [
277
+                                                                            {
278
+                                                                                type: 'ellipse',
279
+                                                                                x: 5, y: 6,
280
+                                                                                lineColor: 'black',
281
+                                                                                lineWidth: 1,
282
+                                                                                r1: 5, r2: 5
283
+                                                                            },
284
+                                                                            {
285
+                                                                                type: 'polyline',
286
+                                                                                lineWidth: 1,
287
+                                                                                closePath: false,
288
+                                                                                points: [
289
+                                                                                    {x: 3, y: 5},
290
+                                                                                    {x: 5, y: 8},
291
+                                                                                    {x: 10, y: 1}
292
+                                                                                ],
293
+                                                                                lineColor: '#1476BB'
294
+                                                                            }
295
+                                                                        ]
296
+                                                                    },
297
+                                                                    {
298
+                                                                        text: '{{ featureTrans|trans({}, 'contao_default') }}',
299
+                                                                        // color: '#357792'
300
+                                                                    }
301
+                                                                ],
302
+                                                                {% endfor %}
303
+                                                            ],
304
+                                                        },
305
+                                                        layout: 'noBorders',
306
+                                                        margin: [15, 10, 15, 10],
307
+                                                    },
308
+                                                ]
309
+                                            }
310
+                                        ]
311
+                                    ]
312
+                                },
313
+                                fillColor: '#e6ebf1',
314
+                                layout: 'noBorders',
315
+                            },
316
+                        ],
317
+                        width: '*'
318
+                    }{% endif %}
315 319
                 ],
320
+                margin: [0, 0, 0,{{ 8|mm2pt }}],
316 321
                 columnGap: {{ 5|mm2pt }},
317
-                margin: [0,0,0,{{ 5|mm2pt }}],
318
-              },
319
-              {
320
-                columns: [
321
-            {% endif %}
322
+                unbreakable: true
323
+            },
324
+            {% if item.floorPlansFigures|length > 0 %}
325
+            {
326
+                text: '{{ 'MSC.re_floorPlan'|trans({}, 'contao_default') }}',
327
+                style: 'h3',
328
+                pageBreak: 'before'
329
+            },
330
+            {% for image in item.floorPlansFigures %}
322 331
             {
323
-              image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
324
-              width: {{ 85|mm2pt }},
325
-              alignment: 'left'
332
+                image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
333
+                fit: [{{ 180|mm2pt }},{{ 180|mm2pt }}],
334
+                alignment: 'center'
326 335
             },
327 336
             {% endfor %}
328
-          ],
329
-          columnGap: {{ 5|mm2pt }}
337
+            {% endif %}
338
+            {% if item.galleryFigures|length > 1 %}
339
+            {
340
+                text: '{{ 'MSC.re_gallery'|trans({}, 'contao_default') }}',
341
+                style: 'h3',
342
+                pageBreak: 'before'
343
+            },
344
+            {
345
+                columns: [
346
+                    {% for image in item.galleryFigures[1:] %}
347
+                    {% if loop.index % 2 > 0 and loop.index > 1 %}
348
+                ],
349
+                columnGap: {{ 5|mm2pt }},
350
+                margin: [0, 0, 0,{{ 5|mm2pt }}],
351
+            },
352
+            {
353
+                columns: [
354
+                    {% endif %}
355
+                    {
356
+                        image: '{{ image.getImage().getFilePath()|imageDataUrl }}',
357
+                        width: {{ 85|mm2pt }},
358
+                        alignment: 'left'
359
+                    },
360
+                    {% endfor %}
361
+                ],
362
+                columnGap: {{ 5|mm2pt }}
363
+            }
364
+            {% endif %}
365
+        ],
366
+        pageBreakBefore(currentNode, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage) {
367
+            return currentNode.pageNumbers.length > 1 && currentNode.unbreakable;
330 368
         }
331
-      {% endif %}
332
-    ],
333
-    pageBreakBefore(currentNode, followingNodesOnPage, nodesOnNextPage, previousNodesOnPage) {
334
-      return currentNode.pageNumbers.length > 1 && currentNode.unbreakable;
335
-    }
336
-  };
337
-  const pdfDocGenerator = pdfMake.createPdf(docDefinition);
369
+    };
370
+    const pdfDocGenerator = pdfMake.createPdf(docDefinition);
338 371
 
339
-  /*pdfDocGenerator.getDataUrl((dataUrl) => {
340
-    const targetElement = document.querySelector('#iframeContainer');
341
-    const iframe = document.createElement('object');
342
-    iframe.data = dataUrl;
343
-    iframe.setAttribute('style','width: 100%; height: 80vh;');
344
-    iframe.setAttribute('type','application/pdf');
345
-    targetElement.appendChild(iframe);
346
-  });*/
347
-  pdfDocGenerator.open();
348
-  {#pdfDocGenerator.download('expose_{{ item.assetNo }}');#}
349
-  // pdfDocGenerator.open({},window);
372
+    /*pdfDocGenerator.getDataUrl((dataUrl) => {
373
+      const targetElement = document.querySelector('#iframeContainer');
374
+      const iframe = document.createElement('object');
375
+      iframe.data = dataUrl;
376
+      iframe.setAttribute('style','width: 100%; height: 80vh;');
377
+      iframe.setAttribute('type','application/pdf');
378
+      targetElement.appendChild(iframe);
379
+    });*/
380
+    // pdfDocGenerator.open();
381
+    {# pdfDocGenerator.download('expose_{{ item.assetNo }}'); #}
382
+    pdfDocGenerator.open({},window);
350 383
 </script>
... ...
@@ -51,10 +51,10 @@
51 51
                 {% if item.rent > 0 %}{{ _self.listEntry('tl_vr_real_estate_assets.rent.0'|trans({}, 'contao_default'),item.rent|number_format(2, ',', ''),{ append: ' €'}) }}{% endif %}
52 52
                 {% set total = item.coldRent + item.rent + item.advanceOperatingCosts %}
53 53
                 {{ _self.listEntry('tl_vr_real_estate_assets.total'|trans({}, 'contao_default'),total|number_format(2, ',', ''),{ class: 'mt-default', strong: true, append: ' €'}) }}
54
+                {% if item.deposit is not empty %}{{ _self.listEntry('tl_vr_real_estate_assets.deposit.0'|trans({}, 'contao_default'),item.deposit|number_format(2, ',', ''),{ class: 'mt-default', append: ' €'}) }}{% endif %}
54 55
             </ul>
55 56
             <ul class="expose-facts-features">
56 57
                 {% if item.livingSpace > 0 %}{{ _self.listEntry('tl_vr_real_estate_assets.livingSpace.0'|trans({}, 'contao_default'),item.livingSpace|number_format(2, ',', ''),{ append: ' m²'}) }}{% endif %}
57
-                {% if item.deposit is not empty %}{{ _self.listEntry('tl_vr_real_estate_assets.deposit.0'|trans({}, 'contao_default'),item.deposit) }}{% endif %}
58 58
                 {% if item.numberOfRooms > 0 %}{{ _self.listEntry('tl_vr_real_estate_assets.numberOfRooms.0'|trans({}, 'contao_default'),item.numberOfRooms) }}{% endif %}
59 59
                 {% if item.floor > 0 %}{{ _self.listEntry('tl_vr_real_estate_assets.floor.0'|trans({}, 'contao_default'),item.floor) }}{% endif %}
60 60
                 {% if item.constructionYear is not empty %}{{ _self.listEntry('tl_vr_real_estate_assets.constructionYear.0'|trans({}, 'contao_default'),item.constructionYear) }}{% endif %}
... ...
@@ -90,6 +90,9 @@
90 90
                             {% if item.postal is not empty and item.city is not empty %}{{ item.postal }} {{ item.city }}<br>{% endif %}
91 91
                         </li>
92 92
                     </ul>
93
+                    {% if item.pdfUrl is not empty %}
94
+                        <p class="pdf-link"><a href="{{ item.pdfUrl }}" title="{{ 'MSC.re_pdfExpose'|trans({}, 'contao_default') }}" target="_blank">PDF-Expose</a></p>
95
+                    {% endif %}
93 96
                 </div>
94 97
             </div>
95 98
         {% if item.description %}