an-error-occurred-while-processing-the-template
The following has evaluated to null or missing: ==> jsonStrings [in template "20099#20125#100170719" at line 16, column 8] ---- 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: ${jsonStrings} [in template "20099#20125#100170719" at line 16, column 6] ----
1<div id="portletOutput">
2<@liferay_portlet["runtime"] instanceId="99123461"
3 portletName="rbi_primary_navigation_json_reader_RbiPrimaryNavigationJsonReaderPortlet" />
4</div>
5
6
7<script>
8 // Assuming your embedded portlet renders the string in a specific element with ID 'embeddedContent'
9 var embeddedContentElement = document.getElementById('portletOutput');
10 var jsonString = embeddedContentElement.textContent.trim();
11 console.log("embeddedContentElement String: " + jsonString);
12 var tempS = "Hello World"
13 window.jsonStrings = jsonString;
14
15</script>
16<div>${jsonStrings}</div>
17<#assign theme_display = themeDisplay />
18<#assign images_folder = theme_display.getPathThemeImages() />
19<#assign tabindexNum ="" />
20
21<!-- <div class="desktop-primary-navigation-wrapper full-width">-->
22 <nav class="container pl-0 pr-0" tabindex="0" aria-label="Primary Navigation">
23 <div class="rbi-header-wrap full-width">
24 <div class="container-fluid rbi-header">
25 <div data-title="Primary Navigation" id="primary-navigation" data-intro="Smart navigation with clear segregations" class="rbi-primary-navigation">
26 <ul class="nav navbar-site" role="menu">
27 <!--Menu Level 1 start-->
28 <#if (content.getData())??>
29 <#list completeJson?eval as jsonKey, jsonValue>
30 <#list jsonValue as singleJsonValue>
31 <li class="nav top-level-menu ${singleJsonValue.ListInfo}" role="menuitem" aria-label="${singleJsonValue.FirstLevelText} menu item">
32
33 <#if singleJsonValue.IsSecondLevelExists=="true">
34 <#assign topLevelMenuRole="role='menuitem'">
35 <#else>
36 <#assign topLevelMenuRole="role='menuitem'">
37 </#if>
38
39 <#if singleJsonValue.FirstLevelText??>
40 <span role="menu">
41 <a class="nav-link page-level-1" aria-label="${singleJsonValue.FirstLevelText} menu item" ${topLevelMenuRole} href="${singleJsonValue.FirstLevelLink}" tabindex="0" >
42 <span class="text-truncate">${singleJsonValue.FirstLevelText}</span>
43 </a>
44 </span>
45 </#if>
46 <#if singleJsonValue.IsSecondLevelExists=="true">
47 <div class="top-mega-menu-wrap" role="menu" tabindex="0" aria-label="${singleJsonValue.FirstLevelText} Sub Menu Open">
48 <div class="repateable-img d-none"></div>
49 <div class="mega-menu-first-block equalColumns">
50 <div class="mega-menu-first-block-row">
51 <h3 tabindex="0">${singleJsonValue.FirstLevelText}</h3>
52 <#if singleJsonValue.FirstLevelDescription?? && singleJsonValue.FirstLevelDescription!="">
53 <p tabindex="0" class="desc">${singleJsonValue.FirstLevelDescription}</p>
54 </#if>
55
56
57 </div>
58 </div>
59 <div class="mega-menu-second-blocks equalColumns">
60 <span class="top-level-page-name">${singleJsonValue.FirstLevelText}</span>
61 <!--Menu Level 2 start-->
62 <#if singleJsonValue.IsSecondLevelExists == "true" >
63 <ul class="second-level-menu test">
64 <#list singleJsonValue.SecondLevelData as secondLevelData>
65
66
67 <li class="second-level-page test" role="menuitem">
68 <!--${secondLevelData.SecondLevelLink}-->
69
70 <a class="second-level-menu-URL" target="_self"
71 href="${secondLevelData.SecondLevelLink}" tabindex="0">
72 ${secondLevelData.SecondLevelText}
73
74 </a>
75 <!--${secondLevelData.SecondLevelLink}-->
76 <#if secondLevelData.IsThirdLevelExists == "true" >
77 <div class="primary-nav-arrow-wrapper">
78
79 <span class="primary-nav-arrow" role="menu" tabindex="0" title="Open Submenu for ${secondLevelData.SecondLevelText}">
80
81 <img src="${images_folder}/rbi-main/nav-arrow.svg" alt="${secondLevelData.SecondLevelText}">
82
83 </span>
84
85 </div>
86 </#if>
87
88
89
90 <!--Menu Level 3 start-->
91 <div class="mega-menu-third-blocks equalColumns">
92 <span class="third-level-page-name">${secondLevelData.SecondLevelText}</span>
93 <#if secondLevelData.IsThirdLevelExists == "true" >
94 <ul class="third-level-menu">
95
96 <#list secondLevelData.ThirdLevelData as thirdLevelData>
97
98 <#if thirdLevelData.IsFourthLevelExists == "true" >
99 <#assign third_lavel_aria ="open sub menu for ${thirdLevelData.ThirdLevelText}" />
100 <#assign rolemenu = "role=menu" />
101 <#else>
102 <#assign third_lavel_aria ="${thirdLevelData.ThirdLevelText}" />
103 <#assign rolemenu = "" />
104
105 </#if>
106
107 <li class="third-level-page">
108 <span class="hide-text"></span>
109 <a href="${thirdLevelData.ThirdLevelLink}" ${rolemenu} aria-label="${third_lavel_aria}" target="_self">${thirdLevelData.ThirdLevelText}</a>
110 <!--Menu Level 4 start-->
111
112 <#if thirdLevelData.IsFourthLevelExists == "true" >
113 <ul class="fourth-level-menu">
114
115 <#list thirdLevelData.FourthLevelData as fourthLevelData>
116 <li class="fourth-level-page" role="menuitem" >
117 <a href="${fourthLevelData.FourthLevelLink}" target="_self">${fourthLevelData.FourthLevelText}</a>
118 </li>
119 </#list>
120 </ul>
121 </#if>
122
123
124 </li>
125
126</#list>
127</#if>
128
129 <!--json area-->
130
131 <#if secondLevelData.IsThirdLevelExists == "true" >
132 <#if secondLevelData.CommonSecondLevelData?? && secondLevelData.CommonSecondLevelData.Main.ImageLink != "">
133 <div class="pn-dynamic-data-wrapper">
134 <!--josn image-->
135 <#if secondLevelData.CommonSecondLevelData.Main.ImageLink != "">
136 <div class="pn-dynamic-data--img d-none">
137 <img src="${secondLevelData.CommonSecondLevelData.Main.ImageLink}" alt="RBI" title="RBI" tabindex="0">
138 </div>
139 </#if>
140 <!--josn image-->
141
142 <!--json dynamic content-->
143 <div class="pn-content-dynamic-wrapper">
144 <h2>${languageUtil.get(locale, "quick-links")}</h2>
145 <#if secondLevelData.CommonSecondLevelData.Others??>
146 <#list secondLevelData.CommonSecondLevelData.Others as others>
147 <#if others.Title != "" >
148 <div class="pn-content-contents-row">
149 <div class="pn-content-contents-row--inner">
150 <div class="pn-dynamic-content-title">
151 <a href="${others.Link}" class="content-title--link">
152 ${others.Title}
153 </a>
154 </div>
155 <#if others.Description != "" >
156 <div class="pn-dynamic-content-desc">
157 ${others.Description}
158 </div>
159 </#if>
160 </div>
161 </div>
162 </#if>
163 </#list>
164 </#if>
165 </div>
166 <!--json dynamic content-->
167 </div>
168 </#if>
169 </ul>
170 </#if>
171
172 <!--json area-->
173
174
175
176 </div>
177
178</li>
179
180</#list>
181</ul>
182</#if>
183<!--Menu Level 2 start-->
184</div>
185</div>
186</#if>
187
188<!--top-mega-menu-wrap ends-->
189
190</li>
191<!--Menu Level 1 ends-->
192</#list>
193</#list>
194</#if>
195
196</ul>
197</div>
198</div>
199</div>
200</nav>
201<!--</div>-->
202
203
204<script>
205 var clickedTab = false;
206
207 function tabPressEqualCol() {
208 // console.log('tabPressEqualCol function called');
209 if ($(window).width() < 1024) {
210 return false;
211 }
212
213 $('.top-level-menu').each(function() {
214 var getSecondLevelTabMenuLength = $(this).children(".top-mega-menu-wrap").find($(".second-level-menu li")).length;
215 if (getSecondLevelTabMenuLength > 0) {
216
217 // var isLevelOneisHidden = $(this).children(".top-mega-menu-wrap").is(":hidden");
218 // if (isLevelOneisHidden) {
219 // $(this).children(".top-mega-menu-wrap").show();
220 // const elms = document.querySelector('.top-level-menu');
221 // const getLeftPos = elms.getBoundingClientRect();
222 // const shiftLeftPos = getLeftPos.left;
223 // }
224
225 var maxHeight = 0;
226 var sameBlocks = ($(this).children(".top-mega-menu-wrap")).children(
227 '.equalColumns');
228 var thirdLevelBlockMenu = $(this).find('.mega-menu-third-blocks .third-level-menu');
229
230 sameBlocks.each(function (ev) {
231 $(this).css('height', 'fit-content');
232 if ($(this).height() > maxHeight) {
233 maxHeight = $(this).height();
234 }
235
236 });
237
238 sameBlocks.each(function (ev) {
239 if (maxHeight > 400) {
240 $(this).css('height', Math.round(maxHeight).toString() + 'px');
241 $(thirdLevelBlockMenu).css('height', Math.round(maxHeight).toString() + 'px');
242 } else {
243 $(this).css('height', '400px');
244 $(thirdLevelBlockMenu).css('height', '400px');
245 }
246 });
247 }
248 });
249
250
251
252
253
254 }
255
256 //tab key invoke//
257$(document).on('keyup', '.primary-nav-arrow', function (e) {
258 if ((e.keyCode === 9) || (e.keyCode === 13)) {
259 console.log('tab press');
260 tabPressEqualCol();
261 }
262});
263
264
265 $(document).ready(function () {
266
267 tabPressEqualCol();
268
269 //third level content title character length
270 $(".pn-dynamic-content-title a.content-title--link").each(function() {
271 var getFeedbackText=$(this).text().trim();
272 if (getFeedbackText.length > 43) {
273 var setFeedbackText = getFeedbackText.substring(0, 43);
274 $(this).text(setFeedbackText);
275 }
276 //console.log("getFeedbacktext --- " + getFeedbackText);
277 });
278
279 //third level content Desc character length
280 $(".pn-dynamic-content-desc").each(function() {
281 var getFeedbackText=$(this).text().trim();
282 if (getFeedbackText.length > 43) {
283 var setFeedbackText = getFeedbackText.substring(0, 43);
284 $(this).text(setFeedbackText);
285 }
286 //console.log("getFeedbacktext --- " + getFeedbackText);
287 });
288
289 // Check if 3rd level nav items exist
290 if($(".second-level-page").length){
291 $(".second-level-page").each(function() {
292 let thirdLevelNavItems = $(this).find('.third-level-page');
293 if(thirdLevelNavItems.length){
294 $(this).addClass('has-level-3');
295 }
296 });
297 }
298
299 // Check if 4th level nav items exist
300 if($(".third-level-page").length){
301 $(".third-level-page").each(function() {
302 let fourthLevelNavItems = $(this).find('.fourth-level-page');
303 if(fourthLevelNavItems.length){
304 $(this).addClass('is-level-4-accordion');
305 $(this).parents('.mega-menu-third-blocks').addClass('is-level-4-accordion-parent');
306 }
307 });
308 }
309
310 // Close Nav 1st level anchor text
311 $(".top-level-page-name").on('click', function () {
312 $(this).closest(".top-mega-menu-wrap").hide();
313 });
314
315 // Close Nav 2nd level anchor text
316 $(".third-level-page-name").on('click', function () {
317 $(this).parent(".mega-menu-third-blocks").removeClass('level-3-open');
318 $(this).siblings($(".third-level-menu")).hide();
319 });
320
321 // Nav 1st level anchor link with lchange for accessibilty fix line 300, 306 and 309
322 $('.top-level-menu> span a').on('click', function (e) {
323 if ($(this).hasClass('disableURL')) {
324 e.preventDefault();
325 }
326
327 if ($(window).width() < 1024) {
328 var getSecondLevelMenuLength = $(this).parent().siblings(".top-mega-menu-wrap").find($(
329 ".second-level-menu li")).length;
330 if (getSecondLevelMenuLength > 0) {
331 var menuOpen = $(this).parent().siblings(".top-mega-menu-wrap").is(":hidden");
332 if (menuOpen) {
333 $(this).parent().siblings(".top-mega-menu-wrap").show();
334 }
335 }
336 }
337 });
338
339 // Nav 1st level anchor link
340 $('.second-level-page a').on('click', function (e) {
341 if ($(this).hasClass('disableURL')) {
342 e.preventDefault();
343 }
344 if ($(window).width() < 1024) {
345 var getThirdLevelMenuLength = $(this).closest('.second-level-page').children(".mega-menu-third-blocks").find($(".third-level-menu li")).length;
346 if (getThirdLevelMenuLength > 0) {
347 $(this).closest('.second-level-page').children(".mega-menu-third-blocks").addClass('level-3-open');
348 $(this).closest('.second-level-page').children(".mega-menu-third-blocks").find($(".third-level-menu")).show();
349 //console.log("clicked....");
350 }
351 }
352 });
353
354
355
356 $('.second-level-page .primary-nav-arrow').on('click', function (e) {
357 if ($(this).hasClass('disableURL')) {
358 e.preventDefault();
359 }
360 if ($(window).width() < 1024) {
361 var getThirdLevelMenuLength = $(this).closest('.second-level-page').children(".mega-menu-third-blocks").find($(".third-level-menu li")).length;
362 if (getThirdLevelMenuLength > 0) {
363 $(this).closest('.second-level-page').children(".mega-menu-third-blocks").addClass('level-3-open');
364 $(this).closest('.second-level-page').children(".mega-menu-third-blocks").find($(".third-level-menu")).show();
365 //console.log("clicked....");
366 }
367 }
368 });
369
370 // Nav 1st level mouseenter event
371 $('.top-level-menu').mouseenter(function (e) {
372 if ($(window).width() < 1024) {
373 return false;
374 }
375
376 var getSecondLevelMenuLength = $(this).children(".top-mega-menu-wrap").find($(
377 ".second-level-menu li")).length;
378
379 //added
380 if (getSecondLevelMenuLength === 0) {
381 $(this).closest('.top-level-menu').find('.page-level-1').addClass("withoutDropdown");
382 //$(this).closest('.top-level-menu').find('.top-mega-menu-wrap').remove();
383 }
384 if (getSecondLevelMenuLength > 0) {
385 var isLevelOneisHidden = $(this).children(".top-mega-menu-wrap").is(":hidden");
386 if (isLevelOneisHidden) {
387 $(this).children(".top-mega-menu-wrap").show();
388 const elms = document.querySelector('.top-level-menu');
389 const getLeftPos = elms.getBoundingClientRect();
390 const shiftLeftPos = getLeftPos.left;
391
392 //$(this).children(".top-mega-menu-wrap").css("left", "-" + shiftLeftPos + "px");
393
394 // added for equal column //
395 var maxHeight = 0;
396 var sameBlocks = ($(this).children(".top-mega-menu-wrap")).children(
397 '.equalColumns');
398 var thirdLevelBlockMenu = $(this).find('.mega-menu-third-blocks .third-level-menu');
399
400 sameBlocks.each(function (ev) {
401 $(this).css('height', 'fit-content');
402 if ($(this).height() > maxHeight) {
403 maxHeight = $(this).height();
404 }
405
406 });
407
408 sameBlocks.each(function (ev) {
409 if (maxHeight > 400) {
410 $(this).css('height', Math.round(maxHeight).toString() + 'px');
411 $(thirdLevelBlockMenu).css('height', Math.round(maxHeight).toString() + 'px');
412 } else {
413 $(this).css('height', '400px');
414 $(thirdLevelBlockMenu).css('height', '400px');
415 }
416
417 });
418 }
419 }
420
421 });
422
423 // Nav 1st level mouseleave event
424 $('.top-level-menu').mouseleave(function (e) {
425 if ($(window).width() < 1024) {
426 return false;
427 }
428 $(this).children(".top-mega-menu-wrap").hide();
429 $(".third-level-menu").hide();
430 });
431
432 // Nav 2nd level mouseenter event
433 $(".second-level-page").mouseenter(function () {
434 if ($(window).width() < 1024) {
435 return false;
436 }
437 var thirdLevelMenu = $(this).find(".third-level-menu");
438 var thirdLevelMenuItems = $(this).find(".third-level-menu li");
439
440 if (thirdLevelMenuItems.length > 0) {
441 thirdLevelMenu.show();
442 }
443 });
444
445 // Nav 2nd level mouseleave event
446 $(".second-level-page").mouseleave(function () {
447 if ($(window).width() < 1024) {
448 return false;
449 }
450 var thirdLevelMenu = $(this).find(".third-level-menu");
451 thirdLevelMenu.hide();
452 });
453
454 // retriving top level url
455 $(document).on('keydown', '.top-level-menu', function (e) {
456 $('.nav.navbar-site').first().children('li').each(function () {
457 // $(this).find('a').attr('tabindex', '0');
458 // $(this).find('a').addClass('First-level-menu');
459 });
460
461 $(this).each(function () {
462 if ( $(this).children('.page-level-1').hasClass('disableURL') ) {
463 if (e.which == 13) {
464 if ($(this).find('.top-mega-menu-wrap').is(":hidden")) {
465 $(".top-mega-menu-wrap").hide();
466 $(this).find(".top-mega-menu-wrap").show();
467 clickedTab = true;
468 e.preventDefault();
469 } else {
470 $(this).find(".top-mega-menu-wrap").hide();
471 }
472 }
473 }
474
475 });
476 });
477
478 $(".rbi-primary-navigation a").each(function () {
479 var getPageLevelURL = $(this).attr("href");
480 if (((getPageLevelURL.indexOf("javascript") > -1)) || ((getPageLevelURL.indexOf(
481 "Javascript") > -1))) {
482 $(this).addClass("disableURL");
483 }
484
485 // added for collaborative events menu should not open
486 if ((getPageLevelURL.indexOf("href") > -1)) {
487 $(this).addClass("menu-not-open-collaborative");
488 }
489
490
491 });
492
493 /*blocked temprary need to know why shift key is desier*/
494 // $('.mega-menu-second-blocks .second-level-menu>li:last-child>a').on('keydown', function (e) {
495 // if( !e.shiftKey && e.keyCode ){
496 // $('.top-mega-menu-wrap').css('display', 'none');
497 // }
498 // });
499
500 var navMousedown = false;
501 $('.mega-menu-third-blocks .third-level-menu>li:last-child>a').on('mousedown', function () {
502 navMousedown = true;
503 });
504
505 $('.mega-menu-third-blocks .third-level-menu>li:last-child>a').on('focusout', function (event) {
506 $(this).keydown(function (e) {
507 if(!navMousedown) {
508 if( !e.shiftKey && e.keyCode ){
509 if( !$(this).parent('.is-level-4-accordion').hasClass('active') ){
510 $(".third-level-menu").css('display', 'none');
511 $(this).parent('.second-level-page').focus();
512 }
513 }
514 }
515 navMousedown = false;
516 });
517 });
518
519 $('.mega-menu-second-blocks .second-level-menu li.has-level-3').on('keydown', function (event) {
520 // on click of enter
521 if (event.which === 13) {
522 $(this).trigger('click').find('.third-level-menu').css('display', 'block');
523
524 }
525 });
526
527 $('.mega-menu-second-blocks .second-level-menu>li>a').on('focus', function (event) {
528 $(".third-level-menu").css('display', 'none');
529 });
530
531 $('.rbi-header .site-logo .custom-logo').on('focusout', function (event) {
532 $('.rbi-primary-navigation>ul>li:nth-child(2)>a').attr('tabindex', '0');
533 });
534
535 // On load get number of languages
536 let rbiLanguages = [];
537
538 if ($(".multipleLanguae-wrapper #languageSelector option").length) {
539 $(".multipleLanguae-wrapper #languageSelector option").each(function () {
540 let currentItem = {
541 languageText: $(this).text(),
542 languageURL: $(this).attr('value')
543 };
544 rbiLanguages.push(currentItem);
545 });
546 }
547
548
549 // Add languages to mobile list items
550 let langListItem = '';
551 let langListItemContainer = $(".pwa-primary-navigation-wrapper .nav>li:first-child").find(
552 '.second-level-menu');
553 langListItemContainer.empty();
554
555 if (rbiLanguages.length) {
556 $.each(rbiLanguages, function (key, value) {
557
558 if (value.languageURL == value.languageText) {
559 langListItem =
560 "<li class='second-level-page selected test' ><a href='javascript:void(0)' target='_self'>" +
561 value.languageText + "</a></li>";
562 } else {
563 langListItem =
564 "<li class='second-level-page test'><a href='" +
565 value.languageURL + "' target='_self'>" + value.languageText + "</a></li>";
566 }
567
568 langListItemContainer.append(langListItem);
569 });
570 }
571
572
573 });
574window.addEventListener("load", () => {
575 setTimeout(() => {
576 if(window.location.href.includes('lost-in-transmission-financial-markets-and-monetary-policy-duplicate-0')
577 ){
578 $(".multipleLanguae-wrapper .list ul li").each(function () {
579 $(this).removeClass('d-none')
580 });
581 }
582 }, 2000);
583 });
584
585</script>
586
587
588<script>
589$(document).ready(function(){
590 setTimeout(function() {
591 $('.rbi_home_hero_wrapper .owl-dots button').attr('aria-label', 'Slide Navigation');
592 $('.rbi_home_hero_wrapper .owl-dots button').attr('title', 'Slide Navigation');
593 }, 50);
594});
595</script>