Opening and closing speakers
Při zpracování šablony došlo k chybě.
The following has evaluated to null or missing:
==> assetRenderer.getArticle [in template "10157#10197#10161518" at line 124, column 44]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign article = assetRenderer.getAr... [in template "10157#10197#10161518" at line 124, column 25]
----
1<style>
2@media (min-width: 1200px) {
3 .col5 {
4 flex: 0 0 25%;
5 max-width: 25%;
6 padding-left: 13px;
7 padding-right: 13px;
8 }
9}
10
11@media (min-width: 1200px) {
12 .col5 {
13 flex: 0 0 20%;
14 max-width: 20%;
15 padding-left: 13px;
16 padding-right: 13px;
17 }
18}
19
20.speakerName {
21 font-size: 17px;
22 line-height: 1.15;
23 color: #444444;
24}
25
26.speakerJobDescription {
27 font-size: 13px;
28 line-height: 1.35;
29 color: #757575;
30 padding: 3px 0 11px 0;
31 font-weight:bold;
32}
33
34.SpeakerOptionText {
35 font-size: 13px;
36 line-height: 18px;
37 color: #666666;
38}
39
40.EventSpeakers .card {
41 border: unset;
42 border-radius: unset;
43 background: unset;
44 padding: unset;
45}
46
47.EventSpeakers .card-body {
48 padding: 15px 0 15px 0;
49}
50
51/*
52.EventSpeakers .twitterIcon {
53 background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M19.7029 4.11418C19.0071 4.42251 18.2596 4.63085 17.4737 4.72501C18.2846 4.23984 18.8912 3.47624 19.1804 2.57668C18.4186 3.02917 17.5849 3.34768 16.7154 3.51835C16.1307 2.89407 15.3563 2.48029 14.5124 2.34124C13.6684 2.2022 12.8022 2.34567 12.0481 2.74939C11.2941 3.15311 10.6944 3.79448 10.3422 4.57393C9.99003 5.35338 9.90503 6.22731 10.1004 7.06001C8.55682 6.98251 7.04677 6.5813 5.66827 5.88243C4.28977 5.18356 3.07362 4.20265 2.09875 3.00335C1.76542 3.57835 1.57375 4.24501 1.57375 4.95501C1.57338 5.59418 1.73078 6.22355 2.03198 6.78729C2.33319 7.35103 2.76888 7.83171 3.30042 8.18668C2.68398 8.16707 2.08114 8.0005 1.54208 7.70085V7.75085C1.54202 8.6473 1.85211 9.51616 2.41974 10.21C2.98736 10.9039 3.77756 11.38 4.65625 11.5575C4.0844 11.7123 3.48486 11.7351 2.90292 11.6242C3.15083 12.3955 3.63375 13.07 4.28406 13.5533C4.93437 14.0365 5.71951 14.3043 6.52958 14.3192C5.15444 15.3987 3.45616 15.9843 1.70792 15.9817C1.39823 15.9818 1.08881 15.9637 0.78125 15.9275C2.55581 17.0685 4.62153 17.674 6.73125 17.6717C13.8729 17.6717 17.7771 11.7567 17.7771 6.62668C17.7771 6.46001 17.7729 6.29168 17.7654 6.12501C18.5248 5.57583 19.1803 4.89576 19.7013 4.11668L19.7029 4.11418Z' fill='%233D6ECF'/%3E%3C/svg%3E%0A");
54 content: " ";
55 width:20px;
56 height:20px;
57 background-repeat:no-repeat;
58 display: inline-block;
59}
60*/
61
62.EventSpeakers .xIcon {
63 width: 20px;
64 height: 20px;
65 display: inline-flex;
66 justify-content: center;
67 align-items: center;
68 }
69.EventSpeakers .xIcon .gs-icon-twitter {
70 padding: 0 !important;
71 margin: 0 !important;
72}
73
74.EventSpeakers .linkedinIcon{
75 background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.833008 2.36501C0.833008 1.95879 0.99438 1.5692 1.28162 1.28196C1.56887 0.994717 1.95845 0.833346 2.36467 0.833346H17.633C17.8343 0.833017 18.0337 0.872398 18.2198 0.949234C18.4059 1.02607 18.575 1.13885 18.7174 1.28113C18.8598 1.4234 18.9728 1.59237 19.0498 1.77835C19.1269 1.96434 19.1665 2.1637 19.1663 2.36501V17.6333C19.1666 17.8347 19.1271 18.0341 19.0501 18.2202C18.9732 18.4063 18.8604 18.5754 18.718 18.7178C18.5757 18.8602 18.4067 18.9731 18.2206 19.0502C18.0346 19.1272 17.8352 19.1668 17.6338 19.1667H2.36467C2.16346 19.1667 1.96422 19.127 1.77834 19.05C1.59245 18.973 1.42357 18.8601 1.28133 18.7178C1.13909 18.5755 1.02628 18.4065 0.94936 18.2206C0.872436 18.0347 0.832899 17.8354 0.833008 17.6342V2.36501ZM8.08967 7.82335H10.5722V9.07001C10.9305 8.35335 11.8472 7.70835 13.2247 7.70835C15.8655 7.70835 16.4913 9.13585 16.4913 11.755V16.6067H13.8188V12.3517C13.8188 10.86 13.4605 10.0183 12.5505 10.0183C11.288 10.0183 10.763 10.9258 10.763 12.3517V16.6067H8.08967V7.82335ZM3.50634 16.4925H6.17967V7.70835H3.50634V16.4917V16.4925ZM6.56217 4.84335C6.56721 5.07224 6.52648 5.29983 6.44237 5.51277C6.35826 5.72571 6.23247 5.91971 6.07237 6.08337C5.91227 6.24704 5.72109 6.37707 5.51005 6.46585C5.29902 6.55463 5.07237 6.60036 4.84342 6.60036C4.61448 6.60036 4.38783 6.55463 4.1768 6.46585C3.96576 6.37707 3.77458 6.24704 3.61448 6.08337C3.45438 5.91971 3.32859 5.72571 3.24447 5.51277C3.16036 5.29983 3.11963 5.07224 3.12467 4.84335C3.13457 4.39406 3.32 3.9665 3.64125 3.65225C3.9625 3.338 4.39403 3.16203 4.84342 3.16203C5.29282 3.16203 5.72435 3.338 6.0456 3.65225C6.36685 3.9665 6.55228 4.39406 6.56217 4.84335Z' fill='%23004494'/%3E%3C/svg%3E%0A");
76 content: " ";
77 width:20px;
78 height:20px;
79 background-repeat:no-repeat;
80 display: inline-block;
81}
82
83.EventSpeakers .moreInfo {
84 font-size: 13px;
85 vertical-align: 5px;
86 line-height: 18px;
87 color: #3366CC !important;
88 text-decoration-line: underline !important;
89 display: inline-block;
90}
91
92.EventSpeakers .cardImg {
93 width:100%;
94}
95
96.EventSpeakers a {
97 color: #3366CC !important;
98 text-decoration:underline !important;
99}
100.speaker-links{
101 display:inline;
102}
103
104.speaker-links * {
105 float: left;
106 margin-right: 5px;
107}
108
109.speaker-links p{
110 margin:0;
111 display: inline;
112}
113
114.col-sm-6.col-md-3.col-lg-3.col5 {
115 padding-bottom: 15px;
116}
117</style>
118<div class="EventSpeakers row">
119<#if entries?has_content>
120 <#list entries as curEntry>
121 <#assign curEntry = curEntry />
122 <#assign assetRenderer = curEntry.getAssetRenderer() />
123 <#assign className = assetRenderer.getClassName() />
124 <#assign article = assetRenderer.getArticle() />
125 <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
126
127 <#assign rootElement = docXml.getRootElement() />
128 <#assign availableLocales = rootElement.attribute("available-locales").getText() />
129 <#assign defaultLocale = rootElement.attribute("default-locale").getText() />
130
131 <#if article.isApproved() >
132 <#assign articleId = article.getArticleId() />
133
134 <#assign img = docXml.valueOf("//dynamic-element[@name='SpeakerPhoto']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
135 <#assign jsonimg = jsonFactoryUtil.createJSONObject(img)>
136 <#assign urlJsonImg = "/documents/" >
137 <#assign urlJsonImg = urlJsonImg + jsonimg.groupId >
138 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.fileEntryId >
139 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.name >
140 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.uuid >
141 <#assign altImg = jsonimg.alt >
142
143 <#if (availableLocales?contains(locale)) >
144 <#assign speakerName = docXml.valueOf("//dynamic-element[@name='SpeakerName']/dynamic-content[@language-id='"+locale+"']/text()") />
145 <#assign SpeakerSurname = docXml.valueOf("//dynamic-element[@name='SpeakerSurname']/dynamic-content[@language-id='"+locale+"']/text()") />
146 <#assign JobTitle = docXml.valueOf("//dynamic-element[@name='JobTitle']/dynamic-content[@language-id='"+locale+"']/text()") />
147 <#assign optionalInformation = docXml.valueOf("//dynamic-element[@name='OptionalInformation']/dynamic-content[@language-id='"+locale+"']/text()") />
148 <#assign MoreInfoHTML = docXml.valueOf("//dynamic-element[@name='MoreInfoHTML']/dynamic-content[@language-id='"+locale+"']/text()") />
149 <#assign LinkedinURL = docXml.valueOf("//dynamic-element[@name='LinkedinURL']/dynamic-content[@language-id='"+locale+"']/text()") />
150 <#assign TwitterURL = docXml.valueOf("//dynamic-element[@name='TwitterURL']/dynamic-content[@language-id='"+locale+"']/text()") />
151 <#else>
152 <#assign speakerName = docXml.valueOf("//dynamic-element[@name='SpeakerName']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
153 <#assign SpeakerSurname = docXml.valueOf("//dynamic-element[@name='SpeakerSurname']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
154 <#assign JobTitle = docXml.valueOf("//dynamic-element[@name='JobTitle']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
155 <#assign optionalInformation = docXml.valueOf("//dynamic-element[@name='OptionalInformation']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
156 <#assign MoreInfoHTML = docXml.valueOf("//dynamic-element[@name='MoreInfoHTML']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
157 <#assign LinkedinURL = docXml.valueOf("//dynamic-element[@name='LinkedinURL']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
158 <#assign TwitterURL = docXml.valueOf("//dynamic-element[@name='TwitterURL']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
159 </#if>
160
161 <div class="col-sm-6 col-md-3 col-lg-3 col5">
162 <div class="card">
163 <img src="${urlJsonImg}" class="cardImg" alt="${altImg}">
164 <div class="card-body">
165 <h5 class="card-title speakerName">${speakerName} ${SpeakerSurname}</h5>
166 <#if JobTitle != ''>
167 <div class="card-title speakerJobDescription">${JobTitle}</div>
168 </#if>
169 <p class="card-text SpeakerOptionText">${optionalInformation}</p>
170 <div class="speaker-links">
171 <#if TwitterURL != ''>
172 <a href="${TwitterURL}" class="xIcon" aria-label="X ${speakerName}"><i class="gs-icon-twitter" aria-hidden="true"></i></a>
173 </#if>
174 <#if LinkedinURL != ''>
175 <a href="${LinkedinURL}" class="linkedinIcon" aria-label="Linkedin ${speakerName}"></a>
176 </#if>
177
178 ${MoreInfoHTML}
179 </div>
180 </div>
181 </div>
182 </div>
183 </#if>
184
185 </#list>
186 </#if>
187 </div>
Johannes Hahn
European Commissioner for Budget and Administration
Kerstin Jorna
Director-General of the DG for Internal Market, Industry, Entrepreneurship and SMEs, European Commission
Eric Van den Abeele
Counsellor at the Permanent Representation of Belgium to the European Union
Hilde Hardeman
Director-General of the Publications Office of the European Union
Moderators
Při zpracování šablony došlo k chybě.
The following has evaluated to null or missing:
==> assetRenderer.getArticle [in template "10157#10197#10161518" at line 124, column 44]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign article = assetRenderer.getAr... [in template "10157#10197#10161518" at line 124, column 25]
----
1<style>
2@media (min-width: 1200px) {
3 .col5 {
4 flex: 0 0 25%;
5 max-width: 25%;
6 padding-left: 13px;
7 padding-right: 13px;
8 }
9}
10
11@media (min-width: 1200px) {
12 .col5 {
13 flex: 0 0 20%;
14 max-width: 20%;
15 padding-left: 13px;
16 padding-right: 13px;
17 }
18}
19
20.speakerName {
21 font-size: 17px;
22 line-height: 1.15;
23 color: #444444;
24}
25
26.speakerJobDescription {
27 font-size: 13px;
28 line-height: 1.35;
29 color: #757575;
30 padding: 3px 0 11px 0;
31 font-weight:bold;
32}
33
34.SpeakerOptionText {
35 font-size: 13px;
36 line-height: 18px;
37 color: #666666;
38}
39
40.EventSpeakers .card {
41 border: unset;
42 border-radius: unset;
43 background: unset;
44 padding: unset;
45}
46
47.EventSpeakers .card-body {
48 padding: 15px 0 15px 0;
49}
50
51/*
52.EventSpeakers .twitterIcon {
53 background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M19.7029 4.11418C19.0071 4.42251 18.2596 4.63085 17.4737 4.72501C18.2846 4.23984 18.8912 3.47624 19.1804 2.57668C18.4186 3.02917 17.5849 3.34768 16.7154 3.51835C16.1307 2.89407 15.3563 2.48029 14.5124 2.34124C13.6684 2.2022 12.8022 2.34567 12.0481 2.74939C11.2941 3.15311 10.6944 3.79448 10.3422 4.57393C9.99003 5.35338 9.90503 6.22731 10.1004 7.06001C8.55682 6.98251 7.04677 6.5813 5.66827 5.88243C4.28977 5.18356 3.07362 4.20265 2.09875 3.00335C1.76542 3.57835 1.57375 4.24501 1.57375 4.95501C1.57338 5.59418 1.73078 6.22355 2.03198 6.78729C2.33319 7.35103 2.76888 7.83171 3.30042 8.18668C2.68398 8.16707 2.08114 8.0005 1.54208 7.70085V7.75085C1.54202 8.6473 1.85211 9.51616 2.41974 10.21C2.98736 10.9039 3.77756 11.38 4.65625 11.5575C4.0844 11.7123 3.48486 11.7351 2.90292 11.6242C3.15083 12.3955 3.63375 13.07 4.28406 13.5533C4.93437 14.0365 5.71951 14.3043 6.52958 14.3192C5.15444 15.3987 3.45616 15.9843 1.70792 15.9817C1.39823 15.9818 1.08881 15.9637 0.78125 15.9275C2.55581 17.0685 4.62153 17.674 6.73125 17.6717C13.8729 17.6717 17.7771 11.7567 17.7771 6.62668C17.7771 6.46001 17.7729 6.29168 17.7654 6.12501C18.5248 5.57583 19.1803 4.89576 19.7013 4.11668L19.7029 4.11418Z' fill='%233D6ECF'/%3E%3C/svg%3E%0A");
54 content: " ";
55 width:20px;
56 height:20px;
57 background-repeat:no-repeat;
58 display: inline-block;
59}
60*/
61
62.EventSpeakers .xIcon {
63 width: 20px;
64 height: 20px;
65 display: inline-flex;
66 justify-content: center;
67 align-items: center;
68 }
69.EventSpeakers .xIcon .gs-icon-twitter {
70 padding: 0 !important;
71 margin: 0 !important;
72}
73
74.EventSpeakers .linkedinIcon{
75 background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.833008 2.36501C0.833008 1.95879 0.99438 1.5692 1.28162 1.28196C1.56887 0.994717 1.95845 0.833346 2.36467 0.833346H17.633C17.8343 0.833017 18.0337 0.872398 18.2198 0.949234C18.4059 1.02607 18.575 1.13885 18.7174 1.28113C18.8598 1.4234 18.9728 1.59237 19.0498 1.77835C19.1269 1.96434 19.1665 2.1637 19.1663 2.36501V17.6333C19.1666 17.8347 19.1271 18.0341 19.0501 18.2202C18.9732 18.4063 18.8604 18.5754 18.718 18.7178C18.5757 18.8602 18.4067 18.9731 18.2206 19.0502C18.0346 19.1272 17.8352 19.1668 17.6338 19.1667H2.36467C2.16346 19.1667 1.96422 19.127 1.77834 19.05C1.59245 18.973 1.42357 18.8601 1.28133 18.7178C1.13909 18.5755 1.02628 18.4065 0.94936 18.2206C0.872436 18.0347 0.832899 17.8354 0.833008 17.6342V2.36501ZM8.08967 7.82335H10.5722V9.07001C10.9305 8.35335 11.8472 7.70835 13.2247 7.70835C15.8655 7.70835 16.4913 9.13585 16.4913 11.755V16.6067H13.8188V12.3517C13.8188 10.86 13.4605 10.0183 12.5505 10.0183C11.288 10.0183 10.763 10.9258 10.763 12.3517V16.6067H8.08967V7.82335ZM3.50634 16.4925H6.17967V7.70835H3.50634V16.4917V16.4925ZM6.56217 4.84335C6.56721 5.07224 6.52648 5.29983 6.44237 5.51277C6.35826 5.72571 6.23247 5.91971 6.07237 6.08337C5.91227 6.24704 5.72109 6.37707 5.51005 6.46585C5.29902 6.55463 5.07237 6.60036 4.84342 6.60036C4.61448 6.60036 4.38783 6.55463 4.1768 6.46585C3.96576 6.37707 3.77458 6.24704 3.61448 6.08337C3.45438 5.91971 3.32859 5.72571 3.24447 5.51277C3.16036 5.29983 3.11963 5.07224 3.12467 4.84335C3.13457 4.39406 3.32 3.9665 3.64125 3.65225C3.9625 3.338 4.39403 3.16203 4.84342 3.16203C5.29282 3.16203 5.72435 3.338 6.0456 3.65225C6.36685 3.9665 6.55228 4.39406 6.56217 4.84335Z' fill='%23004494'/%3E%3C/svg%3E%0A");
76 content: " ";
77 width:20px;
78 height:20px;
79 background-repeat:no-repeat;
80 display: inline-block;
81}
82
83.EventSpeakers .moreInfo {
84 font-size: 13px;
85 vertical-align: 5px;
86 line-height: 18px;
87 color: #3366CC !important;
88 text-decoration-line: underline !important;
89 display: inline-block;
90}
91
92.EventSpeakers .cardImg {
93 width:100%;
94}
95
96.EventSpeakers a {
97 color: #3366CC !important;
98 text-decoration:underline !important;
99}
100.speaker-links{
101 display:inline;
102}
103
104.speaker-links * {
105 float: left;
106 margin-right: 5px;
107}
108
109.speaker-links p{
110 margin:0;
111 display: inline;
112}
113
114.col-sm-6.col-md-3.col-lg-3.col5 {
115 padding-bottom: 15px;
116}
117</style>
118<div class="EventSpeakers row">
119<#if entries?has_content>
120 <#list entries as curEntry>
121 <#assign curEntry = curEntry />
122 <#assign assetRenderer = curEntry.getAssetRenderer() />
123 <#assign className = assetRenderer.getClassName() />
124 <#assign article = assetRenderer.getArticle() />
125 <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
126
127 <#assign rootElement = docXml.getRootElement() />
128 <#assign availableLocales = rootElement.attribute("available-locales").getText() />
129 <#assign defaultLocale = rootElement.attribute("default-locale").getText() />
130
131 <#if article.isApproved() >
132 <#assign articleId = article.getArticleId() />
133
134 <#assign img = docXml.valueOf("//dynamic-element[@name='SpeakerPhoto']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
135 <#assign jsonimg = jsonFactoryUtil.createJSONObject(img)>
136 <#assign urlJsonImg = "/documents/" >
137 <#assign urlJsonImg = urlJsonImg + jsonimg.groupId >
138 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.fileEntryId >
139 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.name >
140 <#assign urlJsonImg = urlJsonImg + "/" + jsonimg.uuid >
141 <#assign altImg = jsonimg.alt >
142
143 <#if (availableLocales?contains(locale)) >
144 <#assign speakerName = docXml.valueOf("//dynamic-element[@name='SpeakerName']/dynamic-content[@language-id='"+locale+"']/text()") />
145 <#assign SpeakerSurname = docXml.valueOf("//dynamic-element[@name='SpeakerSurname']/dynamic-content[@language-id='"+locale+"']/text()") />
146 <#assign JobTitle = docXml.valueOf("//dynamic-element[@name='JobTitle']/dynamic-content[@language-id='"+locale+"']/text()") />
147 <#assign optionalInformation = docXml.valueOf("//dynamic-element[@name='OptionalInformation']/dynamic-content[@language-id='"+locale+"']/text()") />
148 <#assign MoreInfoHTML = docXml.valueOf("//dynamic-element[@name='MoreInfoHTML']/dynamic-content[@language-id='"+locale+"']/text()") />
149 <#assign LinkedinURL = docXml.valueOf("//dynamic-element[@name='LinkedinURL']/dynamic-content[@language-id='"+locale+"']/text()") />
150 <#assign TwitterURL = docXml.valueOf("//dynamic-element[@name='TwitterURL']/dynamic-content[@language-id='"+locale+"']/text()") />
151 <#else>
152 <#assign speakerName = docXml.valueOf("//dynamic-element[@name='SpeakerName']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
153 <#assign SpeakerSurname = docXml.valueOf("//dynamic-element[@name='SpeakerSurname']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
154 <#assign JobTitle = docXml.valueOf("//dynamic-element[@name='JobTitle']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
155 <#assign optionalInformation = docXml.valueOf("//dynamic-element[@name='OptionalInformation']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
156 <#assign MoreInfoHTML = docXml.valueOf("//dynamic-element[@name='MoreInfoHTML']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
157 <#assign LinkedinURL = docXml.valueOf("//dynamic-element[@name='LinkedinURL']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
158 <#assign TwitterURL = docXml.valueOf("//dynamic-element[@name='TwitterURL']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
159 </#if>
160
161 <div class="col-sm-6 col-md-3 col-lg-3 col5">
162 <div class="card">
163 <img src="${urlJsonImg}" class="cardImg" alt="${altImg}">
164 <div class="card-body">
165 <h5 class="card-title speakerName">${speakerName} ${SpeakerSurname}</h5>
166 <#if JobTitle != ''>
167 <div class="card-title speakerJobDescription">${JobTitle}</div>
168 </#if>
169 <p class="card-text SpeakerOptionText">${optionalInformation}</p>
170 <div class="speaker-links">
171 <#if TwitterURL != ''>
172 <a href="${TwitterURL}" class="xIcon" aria-label="X ${speakerName}"><i class="gs-icon-twitter" aria-hidden="true"></i></a>
173 </#if>
174 <#if LinkedinURL != ''>
175 <a href="${LinkedinURL}" class="linkedinIcon" aria-label="Linkedin ${speakerName}"></a>
176 </#if>
177
178 ${MoreInfoHTML}
179 </div>
180 </div>
181 </div>
182 </div>
183 </#if>
184
185 </#list>
186 </#if>
187 </div>
Speakers
Kenneth Bengtsson
OASIS UBL Technical Committee
Manuel García
University of Oviedo
Karolis Granickas
Open Contracting Partnership
Claudia Guerreiro
Portuguese Public Procurement Regulator (IMPIC)
Rune Kjørlaug
Norwegian Agency for Public and Financial Management
Flemming Madsen
Tenderlake
Petteri Pohto
Hansel
Ben Praet
Tender Experts
Samuel Repfennig
Tendium
Rogier Rijkers
EBP/ABK
Isabel Rosa
Portuguese Public Procurement Regulator (IMPIC)
Albert Sanchez Graells
University of Bristol Law School
Giovanni Paolo Sellitto
ANAC (Italian Anti-Corruption Agency)
Tünde Tátrai
Corvinus University of Budapest
Stefan Morcov
Hermix
Ágnes Czibik
Government Transparency Institute
János Bertók
Organisation for Economic Cooperation and Development
Laura von Weissenberg
Publications Office of the European Union
David Dowey
Publications Office of the European Union
Anikó Gerencsér
Publications Office of the European Union
Michaël De Winne
FPS BOSA
Paloma Arillo Aranda
Publications Office of the European Union
Anoop Kumar
Data expert
Maarika Tork
Public Procurement Register, Estonia
Jonaid Myzyri
Public Procurement Commission of Albania
Costas Economopoulos
Cube RM
Ioannis Rousochatzakis
Publications Office of the European Union
Razvan-Petru Radu
Publications Office of the European Union
George Vernardos
Publications Office of the European Union
Marc Christopher Schmidt
DG for Internal Market, Industry, Entrepreneurship and SMEs, European Commission
Liliana Méndez Maeso
Public procurement platform in Euskadi
Natalie Muric
Publications Office of the European Union
TED Ambassador award winners
Alina Bilan
TED ambassador award winner
Ioannis Fountoukidis
TED ambassador award winner
Aris Georgopoulos
TED ambassador award winner
Gabriella Racca
TED ambassador award winner
Tongle Si
TED ambassador award winner
Felippe Vilaca Loureiro Santos
TED ambassador award winner
Pedro Cerqueira Gomes
TED ambassador award winner
Aristotelis Mavidis
TED ambassador award winner
Désirée Klingler
TED ambassador award winner