Възникна грешка при обработка на шаблона.
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>