Commercial real estate news releases from Avison Young
Quarterly and topical research insights to help your business gain competitive edge in commercial real estate.
An error occurred while processing the template.
The following has evaluated to null or missing: ==> Video_URL [in template "20302#20342#NEWS_RELEASE_DETAIL" at line 82, column 26] ---- 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 yturl = Video_URL.getData() [in template "20302#20342#NEWS_RELEASE_DETAIL" at line 82, column 9] ----
1<#assign _dlfels = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
2<#-- set the default image and alt text -->
3<#assign imgSrc = Image.getData() >
4<#assign imgAltText = Content.getData() >
5<#-- sets Alternate image -->
6<#assign imgSrc2 = Alternate_Hero_Image.getData() >
7<#assign imgAltText2 = Content.getData() >
8
9<#-- try to set more advanced options of image display -->
10<#-- set the base hostname url for environment (local/qa/stg/prod) -->
11<#assign imageBaseUri = ui_config.getCdnCgiUri() >
12<#-- determine if we want to use CDN Image Optimizations or not -->
13<#if ui_config.getUseCdnImageOptimizations() >
14<#-- set the instructions to use for optimizing the image(s) in this item -->
15 <#assign instructionPath = "/cdn-cgi/image/q=50" >
16 <#if !getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())>
17 <#assign imageBaseUri = imageBaseUri + instructionPath >
18 </#if>
19</#if>
20<#assign treePath = group_util.getGroupFriendlyUrlTreePath(groupId) >
21
22<#assign image_attributes = jsonFactoryUtil.createJSONObject(Image.getAttributes()) >
23<#if (image_attributes.fileEntryId??) >
24 <#assign fileEntryId = image_attributes.fileEntryId?number >
25 <#if fileEntryId??>
26 <#assign fe = _dlfels.getFileEntry(fileEntryId)>
27 <#if fe??>
28 <#assign imgSrc = imageBaseUri + "/documents/" + fe.repositoryId +"/" + fe.fileEntryId + "/" + fe.fileName + "/" + fe.uuid + "?t=" + fe.modifiedDate?long >
29 <#if image_attributes.alt?has_content>
30 <#assign imgAltText = image_attributes.alt >
31 <#else>
32 <#assign imgAltText = imgAltText?replace('<[^>]+>','','r') >
33 </#if>
34 </#if>
35 </#if>
36</#if>
37
38<#assign image_attributes2 = jsonFactoryUtil.createJSONObject(Alternate_Hero_Image.getAttributes()) >
39<#if (image_attributes2.fileEntryId??) >
40 <#assign fileEntryId2 = image_attributes2.fileEntryId?number >
41 <#if fileEntryId2??>
42 <#assign fe = _dlfels.getFileEntry(fileEntryId2)>
43 <#if fe??>
44 <#assign imgSrc2 = imageBaseUri + "/documents/" + fe.repositoryId +"/" + fe.fileEntryId + "/" + fe.fileName + "/" + fe.uuid + "?t=" + fe.modifiedDate?long >
45 <#if image_attributes2.alt?has_content>
46 <#assign imgAltText2 = image_attributes2.alt >
47 <#else>
48 <#assign imgAltText2 = imgAltText2?replace('<[^>]+>','','r') >
49 </#if>
50 </#if>
51 </#if>
52</#if>
53
54<style>
55 /*displays bios on one row if there's room */
56 #ay .ay-news-release__content .contact-group {
57 display:flex;
58 flex-justify:start;
59 flex-wrap:wrap;
60 }
61 /*Keeps the ay-bio from smooshing width-wise.*/
62 #ay .ay-news-release__content .ay-bio {
63 min-width:240px;
64 }
65 /* added the white on hover because the primary button is supposed to have white text, but it has light blue so the text disappears on hover. */
66 #ay .ay-button__primary:hover {
67 color:#FFF;
68 }
69</style>
70
71<#assign displayDate = .vars['reserved-article-display-date'].data>
72<#setting time_zone = languageUtil.get(locale, "template-timezone")>
73<#assign originalLocale = locale>
74<#setting locale = localeUtil.getDefault()>
75<#assign displayDate = displayDate?date("EEE, d MMM yyyy HH:mm:ss Z")>
76<#setting locale = originalLocale>
77<#assign displayDate = displayDate?string("long")>
78
79<div class="ay-news-release">
80 <h1 id="ay-artTitle" class="h2">${Content.getData()}</h1>
81 <#if validator.isNotNull(Youtube_Video_Hero_.getData()) >
82 <#assign yturl = Video_URL.getData()>
83 <#else>
84 <#assign yturl = ''>
85 </#if>
86 <#if Image.getData()?has_content && !yturl?has_content >
87 <#if Hide_hero_image_on_detail_page.getData()?has_content>
88 <#-- if var doesn't exist or equals false '0'-->
89 <#if !Alternate_Hero_Image.getData()?has_content>
90 <#if getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())>
91 <img src="${Image.getData()}" alt="${imgAltText}">
92 <#else>
93 <img src="${imgSrc}" alt="${imgAltText}">
94 </#if>
95 <#else>
96 <#if getterUtil.getBoolean(By_pass_Cloudflare_optimization.getData())>
97 <img src="${Alternate_Hero_Image.getData()}" alt="${imgAltText}" style="max-height: none;">
98 <#else>
99 <img src="${imgSrc2}" alt="${imgAltText2}" style="max-height: none;">
100 </#if>
101 </#if>
102 </#if>
103 </#if>
104 <#if validator.isNotNull(Youtube_Video_Hero_.getData()) >
105 <#assign isVimeo = "false">
106 <#assign yturl = Youtube_Video_Hero_.getData()>
107 <#if yturl?contains("https://youtu.be/")>
108 <#assign index = yturl.indexOf('https://youtu.be/')>
109 <#assign index = index + 17>
110 </#if>
111 <#if yturl?contains("https://www.youtube.com/watch?v=")>
112 <#assign index = yturl.indexOf('https://www.youtube.com/watch?v=')>
113 <#assign index = index + 32>
114 </#if>
115
116 <#if yturl?contains("https://vimeo.com/")>
117 <#assign isVimeo = "true">
118 <#assign index = yturl.toString().indexOf("https://vimeo.com/")>
119 <#assign index2 = yturl.toString().split("[\\/]")>
120 <#assign index = index2.get(3)>
121 <#assign videoEmbedCode = "https://player.vimeo.com/video/" + index>
122 <#assign yturl2 = videoEmbedCode>
123 <#assign linkURL = "https://vimeo.com/" + index>
124 <#else>
125 <#assign yturl2 = yturl.substring(index)>
126 <#assign linkURL = "https://www.youtube.com/embed/${yturl2}?rel=0&showinfo=0&autoplay=1">
127 </#if>
128
129 <div class="ay-video-firefox-extra-wrap">
130 <div class="ay-video-wrapper">
131 <#if !Image.getData().isEmpty()>
132 <a href="${linkURL}" target="youtubevideo" style="background:url('${Image.getData()}') no-repeat center center; background-size:cover;"></a>
133 </#if>
134 <div class="<#if isVimeo == 'true'>ytv-container<#else>yt-container ytv-container</#if>" video="${yturl2}">
135 <#if isVimeo == "true">
136 <iframe id="youtubeiframe" name="youtubevideo" width="1280" height="720" src="${videoEmbedCode}" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
137 </#if>
138 </div>
139 <#if isVimeo == "true">
140 <script src="https://player.vimeo.com/api/player.js"></script>
141 <script>const player = new Vimeo.Player("youtubeiframe");</script>
142 </#if>
143 <script>
144 $(document).ready(function(){
145 $(".ay-video-wrapper a").bind("click",function(event){
146 <#if isVimeo == "true">
147 event.preventDefault();
148 $(this).next().children().css({visibility:'visible'});
149 player.play();
150 <#else>
151 $(this).next().children().css({visibility:'visible'});
152 </#if>
153 if($(".cc-window").hasClass("cc-invisible") == true){
154 if($(".yt-container").html() != ""){
155 $(this).css({display:'none'});
156 <#if isVimeo == "false">
157 $(this).next().children().css({visibility:'visible'}).click();
158 </#if>
159 }
160 }else{
161 event.preventDefault();
162 }
163 });
164 });
165 </script>
166 </div>
167 </div>
168 </#if>
169
170 <small>${displayDate}</small>
171 <div class="ay-news-release__content">
172 <#if SubTitle.getData()?has_content>
173 <h3 class="ay-news-release__subtitle">${SubTitle.getData()}</h3>
174 </#if>
175 ${News_Release_Detail_Content.getData()}
176 <#if Boiler_Plate_Content.getData()?has_content >
177 <div class="ay-news-release__boiler">
178 ${Boiler_Plate_Content.getData()}
179 </div>
180 </#if>
181 <div class="ay-news-release__social">
182 <a id="ay-email-to" href="#" target="_blank" class="ay-news-release__social--item">
183 <svg class="ay-news-release__social--icon">
184 <use xlink:href="/o/ay-theme/resources/images/images.svg#email" />
185 </svg>
186 </a>
187 <a id="ay-social-twitter" href="#" class="ay-news-release__social--item" target="_blank">
188 <svg class="ay-news-release__social--icon">
189 <use xlink:href="/o/ay-theme/resources/images/images.svg#twitter1" />
190 </svg>
191 </a>
192 <a id="ay-social-facebook" href="#" class="ay-news-release__social--item" target="_blank">
193 <svg class="ay-news-release__social--icon">
194 <use xlink:href="/o/ay-theme/resources/images/images.svg#facebook" />
195 </svg>
196 </a>
197 <a id="ay-social-linkedin" href="#" class="ay-news-release__social--item" target="_blank">
198 <svg class="ay-news-release__social--icon">
199 <use xlink:href="/o/ay-theme/resources/images/images.svg#linkedin1" />
200 </svg>
201 </a>
202 <#if treePath?contains("/ay/de/") >
203 <a id="ay-social-xming" href="#" class="ay-news-release__social--item" target="_blank">
204 <svg class="ay-news-release__social--icon">
205 <use xlink:href="/o/ay-theme/resources/images/images.svg#xing-social" />
206 </svg>
207 </a>
208 </#if>
209 </div>
210 </div>
211</div>
212<#assign newsTitle = Content.getData() />
213
214<script>
215 function socialLinks(){
216 uri=window.location;
217 uri=uri.toString();
218 ofLoc=$(".ay-header-options h3 a").html();
219 enc=encodeURIComponent(uri);
220 prtitle=$("#ay-artTitle").html();
221 //prtitle=prtitle.replace(/(\r\n\t|\n|\r\t)/gm,"");
222 prtitle=encodeURI(prtitle);
223 mailtoSub="Avison Young - "+ofLoc+" News: ";
224 mailtoSub=encodeURI(mailtoSub);
225 //alert(enc);
226 $("#ay-social-twitter").attr("href","https://twitter.com/intent/tweet?url="+enc+"&text="+prtitle+"&via=AvisonYoung");
227 $("#ay-social-facebook").attr("href","https://www.facebook.com/sharer/sharer.php?u="+enc);
228 $("#ay-social-linkedin").attr("href","https://www.linkedin.com/cws/share?url="+enc);
229 <#if treePath?contains("/ay/de/") >
230 $("#ay-social-xming").attr("href","https://www.xing.com/spi/shares/new?url="+enc);
231 </#if>
232 $("#ay-email-to").attr("href","mailto:?subject="+mailtoSub+prtitle+"&body="+enc);
233 }
234 $(document).ready(function(){
235 socialLinks();
236 })
237</script>
238
239<style>
240 .ay-news-release__content{
241 min-height:150px;
242 }
243</style>