Future Architects at INCM Madrid Listen to the Sounds of Concrete - Future Architects at INCM Madrid Listen to the Sounds of Concrete
An error occurred while processing the template.
The following has evaluated to null or missing: ==> cur_Images.getAttribute("alt") [in template "20116#20152#41822" at line 70, column 41] ---- Tip: If the failing expression is known to be 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 imageDescription = cur_Images... [in template "20116#20152#41822" in macro "images" at line 70, column 13] - Reached through: @images [in template "20116#20152#41822" at line 32, column 17] ----
1<script>
2 $(function() {
3 $('.related-stories').closest('.portlet-boundary')
4 .appendTo('.related-stories-container');
5 });
6</script>
7<style>
8/* Decreases the font-size in small devices */
9@media (max-width: 767px) {
10 .cemex-wrapper .hero-text {
11 font-size: 24pt;
12 }
13}
14</style>
15
16<#assign preferences = freeMarkerPortletPreferences.toString()!"" />
17
18<div class="cemex-media-center container">
19 <div class="row">
20 <div class="visible-xs-block col-xs-12">
21 <nav id="breadcrumbs"><@liferay.breadcrumbs /></nav>
22 </div>
23 </div>
24
25 <div class="row">
26 <@seeIfHasImages/>
27 <#if hasImages>
28 <div class="col-md-9 col-xs-12">
29 <@content/>
30 </div>
31 <div class="col-md-3 col-xs-12 text-right">
32 <@images/>
33 </div>
34 <#else>
35 <div class="col-xs-12">
36 <@content/>
37 </div>
38 </#if>
39 <div class="related-stories-container horizontal col-xs-12"></div>
40 </div>
41</div>
42
43<#macro content>
44 <div class="content">
45 <div class="row">
46 <div class="hidden-xs col-md-10 col-md-offset-1">
47 <nav id="breadcrumbs"><@liferay.breadcrumbs /></nav>
48 </div>
49 </div>
50 <div class="row">
51 <div class="col-md-1 col-xs-1">
52 <div class="back-button">
53 <a href="javascript: history.go(-1)"><i class="fa fa-angle-left" aria-hidden="true"></i></a>
54 </div>
55 </div>
56 <div class="col-md-10 col-xs-12">
57 <h1 class="hero-text">${.vars['reserved-article-title'].data}</h1>
58
59 <@publishDate/>
60
61 ${Content.getData()}
62 </div>
63 </div>
64 </div>
65</#macro>
66
67<#macro images>
68 <#if Image.getSiblings()?has_content>
69 <#list Image.getSiblings() as cur_Images>
70 <#assign imageDescription = cur_Images.getAttribute("alt")/>
71 <#if cur_Images.getData()?? && cur_Images.getData() != "">
72 <#if cur_Images.getChild("ImageSubtitle")?? && cur_Images.getChild("ImageSubtitle").getData() != "" >
73 <#assign caption = cur_Images.getChild("ImageSubtitle").getData()/>
74 <#else>
75 <#assign caption = cur_Images.getAttribute("alt")/>
76 </#if>
77 <div class="frame">
78 <a href="${cur_Images.getData()}" class="gallery hover-scale hover-grayscale" title="${imageDescription}">
79 <img class="responsive-image full-width hover-scale-target hover-grayscale-target-60" alt="${cur_Images.getAttribute("alt")}" src="${cur_Images.getData()}" />
80 </a>
81 </div>
82 </#if>
83
84 <#if cur_Images.getChild("YoutubeVideoId")?? >
85 <#assign youtubeId = cur_Images.getChild("YoutubeVideoId") >
86 <#assign hasYoutubeId = youtubeId?has_content && youtubeId.getData()?? && youtubeId.getData() != "" >
87 <#if hasYoutubeId>
88 <div class="frame youtube aspect-ratio aspect-ratio-16-to-9">
89 <iframe class="absolute-fill-parent" src="https://www.youtube.com/embed/${youtubeId.getData()}?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
90 </div>
91 </#if>
92 </#if>
93 </#list>
94 </#if>
95</#macro>
96
97<#macro seeIfHasImages>
98 <#assign hasImages = false/>
99 <#if Image.getSiblings()?has_content>
100 <#list Image.getSiblings() as cur_Images>
101 <#if cur_Images.getData()?? && cur_Images.getData() != "">
102 <#assign hasImages = true/>
103 </#if>
104 <#if cur_Images.getChild("YoutubeVideoId")?? && cur_Images.getChild("YoutubeVideoId").getData() != "">
105 <#assign hasImages = true/>
106 </#if>
107 </#list>
108 </#if>
109</#macro>
110
111<#macro publishDate>
112 <p class="publish-date">
113 <#assign displaydate = .vars['reserved-article-display-date'].data>
114 <#assign originalLocale = locale>
115 <#setting locale = localeUtil.getDefault()>
116 <#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
117 <#setting locale = originalLocale>
118 ${displaydate?date?string.long}
119 </p>
120</#macro>
121
122<script>
123
124$(document).ready(function() {
125 $('.gallery').magnificPopup({
126 type:'image',
127 closeOnContentClick: false,
128 closeBtnInside: false,
129 mainClass: 'mfp-with-zoom mfp-img-mobile',
130 image: {
131 verticalFit: true,
132 titleSrc: function(item) {
133 var html = $.parseHTML( item.el.attr('title') );
134 return html;
135 }
136 },
137 gallery: {
138 enabled: true
139 }
140
141 });
142});
143
144</script>