Number 1 Employer
The following has evaluated to null or missing: ==> page_type[0] [in template "20116#20160#9634122" at line 38, column 123] ---- Tip: It's the final [] step 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: #if page_type[0] == cur_Tab.pageType... [in template "20116#20160#9634122" at line 38, column 118] ----
1<#assign JournalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleService")
2 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
3 themeDisplay = serviceContext.getThemeDisplay()
4 layout = themeDisplay.getLayout()
5 httpServletRequest = serviceContext.getRequest()
6 cookieKey = objectUtil("com.liferay.portal.kernel.util.CookieKeys") />
7
8
9<#if !is_signed_in??>
10 <#assign is_signed_in = permissionChecker.isSignedIn ()/>
11</#if>
12<script>var isSignedin = ${is_signed_in?c}</script>
13
14<#assign displayLang = "العربية" />
15<#assign selectLang = "ar" />
16<#if locale.getLanguage() == "ar">
17 <#assign displayLang = "English" />
18 <#assign selectLang = "en" />
19</#if>
20<!-- page type assignment -->
21<#if layout.getExpandoBridge().hasAttribute("page_type")>
22 <#assign page_type = layout.getExpandoBridge().getAttribute("page_type") />
23</#if>
24
25<#--Start Header-->
26<!--Start Header-->
27<div class="js-component-component component__component" data-component="header">
28 <nav class="header" data-js="_language">
29 <div class="js-navigation-language navigation">
30 <div class="spring">
31 <ul class="navigation__list navigation__global navigation__hide navigation__hide--brand no-gutter--all">
32 <li class="navigation__spring">
33 <!--Start Main Tabs-->
34 <ul class="js-navigation navigation navigation__list navigation__global--type">
35 <#if Tab.getSiblings()?has_content>
36 <#list Tab.getSiblings() as cur_Tab>
37 <li class="js-navigation-item navigation__item hide--md hide--sm">
38 <a class="js-navigation-link navigation__link navigation__link--slim navigation__site<#if page_type[0] == cur_Tab.pageType.getData()> navigation__site--active</#if>"
39 href="${cur_Tab.TabURL.getData()}" data-href="${cur_Tab.TabURL.getData()}"
40 megaMenu-tab="${cur_Tab?index?c}" >${cur_Tab.TabLabel.getData()}</a>
41
42 </li>
43 </#list>
44 </#if>
45 </ul>
46 <!--End Main Tabs-->
47 <#--Start Languages(1)-->
48 <ul class="js-navigation navigation navigation__list navigation__global--language">
49 <li class="js-navigation-item navigation__item navigation__item--right hide--md hide--sm">
50 <div class="js-language language">
51 <a href="/${selectLang+layout.getFriendlyURL(Locale)}" class="language__current">
52 <span class="js-language-chosen language__chosen">${displayLang}</span>
53 </a>
54 </div>
55 </li>
56 </ul>
57 <#--End Languages(1)-->
58 </li>
59 </ul>
60 </div>
61 </div>
62 <div class="js-navigation-static navigation-static"> </div>
63 <div class="js-navigation navigation navigation--primary navigation--closed component__icon-background" data-js="_navigation">
64 <div class="spring">
65
66 <ul id='parentUl' class="navigation__list navigation__spring navigation__hide navigation__hide--icons">
67 <#--Start Logo-->
68 <li class="navigation__item">
69 <a href="home" class="js-brand brand">
70 <svg focusable="false" area-hidden="true" class="icon icon--small brand__logo">
71 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-vodafone-logo"></use>
72 </svg>
73 </a>
74 </li>
75 <#--End Logo-->
76 <!--Start Main Menu-->
77 <#if Tab.getSiblings()?has_content>
78 <#list Tab.getSiblings() as cur_Tab>
79 <span megaMenu-menu="${cur_Tab?index?c}" class="visually-hidden">
80 ${journalContent.getContent(themeDisplay.getScopeGroupId(), "${cur_Tab.articleID.getData()}", "249903", "", locale.toString(), themeDisplay)}
81 </span>
82 </#list>
83 </#if>
84 <!--End Main Menu-->
85 <#--Start Mobile View-->
86 <li class="js-navigation-item navigation__item navigation__item--right navigation__hide js-navigation-item-clickable navigation__item--clickable hide--lg">
87 <a href="javascript:;" class="js-navigation-link navigation__link navigation__link--icon navigation__link--icon-last navigation__link--menu" aria-haspopup="true">
88 <span class="visually-hidden">
89 <span class="navigation__accessibility">Close</span>Menu
90 </span>
91 <svg aria-hidden="true" class="icon icon--small navigation__icon js-navigation-toggle navigation__toggle">
92 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-menu"></use>
93 </svg>
94 <svg aria-hidden="true" class="icon icon--small navigation__icon js-navigation-close navigation__close">
95 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close"></use>
96 </svg>
97 </a>
98 <div class="js-navigation navigation navigation--tertiary">
99 <#--Start Languages(Mobile)-->
100 <div class="language">
101 <a href="/${selectLang+layout.getFriendlyURL(Locale)}" class="language__current">
102 <span class="js-language-chosen language__chosen">${displayLang}</span>
103 </a>
104 </div>
105 <#--End Languages(Mobile)-->
106 <#--Start Mobile Menu-->
107 <ul class="js-accordion accordion navigation__accordion" data-js="_accordion">
108
109 <!--Start MenuItem-->
110
111 <#if Tab.getSiblings()?has_content>
112 <#list Tab.getSiblings() as cur_Tab>
113 <span megaMenu-mobileMenu="${cur_Tab?index?c}" class="visually-hidden">
114 ${journalContent.getContent(themeDisplay.getScopeGroupId(), "${cur_Tab.articleID.getData()}", "249907", "", locale.toString(), themeDisplay)}
115 </span>
116 </#list>
117 </#if>
118
119 <!--End MenuItem-->
120 <li class="js-navigation-item navigation__item navigation__item--tertiary navigation__item--site hide--lg">
121 <a href="business" class="js-navigation-link navigation__link navigation__site chevron chevron--inline">
122 <#if locale.getLanguage() == "ar">
123 <span class="chevron__text">قسم الشركات</span>
124 <#else>
125 <span class="chevron__text">Switch to Business</span>
126 </#if>
127 <span class="chevron__container chevron__container--float link--block">
128 <svg aria-hidden="true" class="icon icon--small chevron__icon navigation__chevron">
129 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-right"></use>
130 </svg>
131 </span>
132 </a>
133 </li>
134 </ul>
135 <#--End Mobile Menu-->
136 </div>
137 </li>
138 <#--End Mobile View-->
139
140 <#--Start Please Login-->
141 <li id="notSignedItem" class="js-navigation-item navigation__item navigation__item--right navigation__hide login-nudge login-nudge--active " data-js="_loginNudge">
142 <a id="notSignedInAvatar" href="javascript:keycloakInitializer()" data-vf-tealium="Login:Character" class="navigation__link navigation__link--icon login-nudge__link" data-stamp="login-snack" aria-haspopup="true">
143 <span class="visually-hidden">My Vodafone</span>
144 <svg aria-hidden="true" class="icon icon--small navigation__icon">
145 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-my-vodafone"></use>
146 </svg>
147 </a>
148 <div id="login-nudge-prompt">
149 <div class="js-login-nudge-prompt login-nudge__prompt">
150 <p class="heading heading--light heading--3 no-gutter--top no-gutter--bottom">${Welcome.getData()}</p>
151 <p class="no-gutter--top">${WantToLoginIn.getData()}</p>
152 <a id="innerLoginBtn" href="javascript:keycloakInitializer()"data-vf-tealium="Login:Yes, Log Me In" class="button button--primary button--full-width login-nudge__login" data-stamp="login-snack" aria-haspopup="true">${LoginButton.getData()}</a>
153 <a href="${CancelURL.getData()}" data-vf-tealium="Login:No, Thanks" class="button button--secondary button--full-width no-gutter--right no-gutter--bottom js-login-nudge-close" data-js="_cookie" data-cookies="login_nudge=true">${CancelLabel.getData()}</a>
154 </div>
155 </div>
156
157 </li>
158 <#--End Please Login-->
159
160 <#--Start Profile Icon & Menu-->
161 <li id="SignedItem" class="js-navigation-item navigation__item navigation__item--right js-navigation-item-clickable navigation__item--clickable user-menu">
162 <a id="logoutAvatar" href="javascript:;" data-vf-tealium="Profile Character" class="js-navigation-link navigation__link navigation__link--icon navigation__link--user navigation__user--menu navigation__link--menu js-navigation-user" aria-haspopup="true">
163 <span class="visually-hidden">Menu</span>
164 <img src="/documents/31803/986702/avatar.png" class="navigation__icon js-navigation-toggle navigation__toggle user-menu__image" id="avatar" onerror="this.onerror=null;this.src='/AVATARS/avatar.png';">
165 <span class="navigation__icon--active js-navigation-close navigation__close navigation__user--close ">
166 <svg aria-hidden="true" class="icon icon--small navigation__icon">
167 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close"></use>
168 </svg>
169 </span>
170 </a>
171 <div id="dropDownBox" class="js-navigation navigation navigation--tertiary navigation--tertiary--user navigation--closed">
172
173 <ul class="js-navigation navigation__list navigation--closed">
174 <#if UserMenu.getSiblings()?has_content>
175 <#list UserMenu.getSiblings() as cur_UserMenu>
176 <li class="navigation__item navigation__item--tertiary">
177 <#if cur_UserMenu.uatUserMenuUrl.getData()?starts_with("javascript:")>
178 <a href="${cur_UserMenu.uatUserMenuUrl.getData()}" class="navigation__link navigation__link--secondary">${cur_UserMenu.UserMenuLabel.getData()}</a>
179 <#else>
180 <a href="${cur_UserMenu.uatUserMenuUrl.getData()}" class="navigation__link navigation__link--secondary">${cur_UserMenu.UserMenuLabel.getData()}</a>
181 </#if>
182 </li>
183 </#list>
184 </#if>
185 </ul>
186 </div>
187 </li>
188 <#--End Profile Icon & Menu-->
189 <#--Start Search-->
190 <li class="js-navigation-item navigation__item navigation__item--right navigation__hide">
191 <a id="searchIconContent" href="https://web.vodafone.com.eg/spa/search" class="navigation__link navigation__link--icon" data-stamp="search-snack" aria-haspopup="true">
192 <span class="visually-hidden">Search</span>
193 <svg aria-hidden="true" class="icon icon--small navigation__icon">
194 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-search"></use>
195 </svg>
196 </a>
197 </li>
198 <#--End Search-->
199
200 <#--Start Basket-->
201 <#--
202 <#if is_signed_in>
203 <li class="navigation__item navigation__item--right navigation__hide">
204 <a href="http://master.vodafone-ws2.dddev.io/shop/basket" class="navigation__link navigation__link--icon" data-stamp="mini-basket">
205 <span class="visually-hidden">Basket</span>
206 <span class="navigation__basket">0<span class="visually-hidden">items</span></span>
207 <svg aria-hidden="true" class="icon icon--small navigation__icon">
208 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-shopping-trolley"></use>
209 </svg>
210 </a>
211 </li>
212 </#if>
213 -->
214 <#--End Basket-->
215 </ul>
216 </div>
217 </div>
218 </nav>
219 <#--End Header-->
220 </div>
221
222<div class="visually-hidden">
223 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
224 <symbol id="icon-vodafone-logo" viewBox="0 -4 28 28"><circle fill="#E60000" stroke="none" cx="13.993" cy="9.993" r="13.993"/><path fill="#FFF" stroke="none" d="M14.103 17.747c-3.82.013-7.796-3.248-7.813-8.485-.011-3.463 1.856-6.8 4.245-8.775 2.333-1.929 5.521-3.166 8.415-3.176.373 0 .762.03 1.001.111-2.53.525-4.545 2.88-4.536 5.552 0 .076.005.151.017.226 4.235 1.031 6.157 3.59 6.169 7.122.011 3.532-2.782 7.41-7.498 7.425z"/></symbol>
225 </svg>
226 </div>
227<script>
228
229 setTimeout(function(){
230 //displaying MegaMenu based on current page
231 // also highlighting the current tab based on page
232 // we have three menus, personal, business & vodafone egypt
233 // the deafult is the personal
234 // we display other menu if the current page in that menu by toggling disply property
235 var pageName = location.pathname;
236 pageName = pageName.replace(/^\/(ar|en)\//,"")
237 if(pageName.endsWith("/"))pageName = pageName.substr(0,pageName.length-1);
238 if(!pageName || "" == pageName){pageName = "home"};
239 var menus = Array.from(document.querySelectorAll("[megaMenu-menu]"));
240 var selectedMenu =undefined;
241 for(var menuIndex in menus){
242 if(menus[menuIndex].querySelector("[href='"+pageName+"']")){
243 selectedMenu = menuIndex;
244 break;
245 }
246 }
247 if(!selectedMenu){
248 var selectedTabpage = document.querySelector("[megamenu-tab][href='"+pageName+"']");
249 if(selectedTabpage)selectedMenu = parseInt(selectedTabpage.getAttribute("megamenu-tab"))
250 }
251 if(!selectedMenu || isNaN(selectedMenu)) selectedMenu = 0;
252
253 document.querySelector("[megaMenu-menu='"+selectedMenu+"']").className = "";
254 document.querySelector("[megaMenu-mobileMenu='"+selectedMenu+"']").className = "";
255 //updating small profile picture based on userId in localStorage
256 <#if !is_signed_in??>
257 var number = localStorage.getItem("MSISDN");
258 document.getElementById("avatar").src = "/AVATARS/" + number + ".png?" + Math.random();
259 <#else>
260 //removing login nudge based on nudge cookie value
261 // this cookie is set when customer clicks no, thanks button
262 if(document.cookie.includes("nudge")){
263 document.querySelector('#login-nudge-prompt').innerHTML = "";
264 }
265 </#if>
266 },500);
267
268
269
270var SignedItem = document.querySelector('#SignedItem');
271 SignedItem.addEventListener('click',function(){
272 if(document.querySelector('#SignedItem').classList.contains('navigation__item--active')){
273 document.querySelector('#SignedItem').classList.remove('navigation__item--active');
274 document.querySelector('#logoutAvatar').classList.remove('navigation__link--active');
275 document.querySelector('#dropDownBox').classList.add('navigation--closed');
276 document.querySelector('#dropDownBox').classList.remove('navigation--display');
277 }else
278 {
279 document.querySelector('#SignedItem').classList.add('navigation__item--active');
280 document.querySelector('#logoutAvatar').classList.add('navigation__link--active');
281 document.querySelector('#dropDownBox').classList.remove('navigation--closed');
282 document.querySelector('#dropDownBox').classList.add('navigation--display');
283 }
284 });
285
286
287 </script>
Number 1 Employer