step by step alpinism
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> webContentData.titleMap.ar_SA [in template "27081859082561#20119#37092" at line 113, column 155]
----
Tip: It's the step after the last dot 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: ${webContentData.titleMap.ar_SA} [in template "27081859082561#20119#37092" at line 113, column 153]
----
1<article class="">
2 <section class="header-gradient-bg pb-4 step-by-step-container">
3 <div class="breadcrumb-container container-fluid container-fluid-max-xl mt-4 pt-2 mb-4 pb-2 container-padding">
4 <@liferay_portlet["runtime"]
5 instanceId="page_breadcrumb"
6 portletName="com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet"
7 />
8 </div>
9 <div class="container-fluid container-fluid-max-xl container-padding">
10 <span class="badge font-size-sm text-white rounded-lg bg-dark rounded-pill font-weight-normal">${languageUtil.get(locale, "step-by-step")}</span>
11 <#if (title.getData())??>
12 <h1 class="h2">${title.getData()}</h1>
13 </#if>
14 <#if (description.getData())??>
15 <div class="description">${description.getData()}</div>
16 </#if>
17 </div>
18 </section>
19 <section>
20
21 <div class="container-fluid container-fluid-max-xl container-padding">
22 <div class="driving-steps-guide pt-4 mt-2">
23 <div class="row">
24 <div class="col-lg-8 col-12">
25 <#if (stepsTitle.getData())?? && (stepsTitle.getData()?length !=0)>
26 <h2 class="mb-3 pb-1 h4">${stepsTitle.getData()}</h2>
27 </#if>
28 <#if (stepsDescription.getData())?? && (stepsDescription.getData()?length !=0)>
29 <div class="overview-description mb-5">${stepsDescription.getData()}</div>
30 </#if>
31
32 <button class="toggle-all-steps-btn btn btn-outline-primary mb-0 align-self-start " type="button" >
33 <i class="ri-add-fill"></i> <i class="ri-subtract-fill"></i>
34 <span class="showall-lbl">${languageUtil.get(locale, "show-all-steps")} </span>
35 <span class="hideall-lbl">${languageUtil.get(locale, "hide-all")} </span>
36 </button>
37
38 <#if step.getSiblings()?has_content>
39 <ol class="driving-steps-timeline timeline" role=tablist aria-label="steps">
40 <#assign count = 0 />
41
42 <#list step.getSiblings() as cur_step>
43
44 <#if !(getterUtil.getBoolean(cur_step.isSequenceStep.getData()))>
45 <#assign count = count + 1 />
46 </#if>
47
48 <li class="timeline-item " role="presentation">
49 <#if (cur_step.stepTitle.getData())??>
50 <h3 onkeydown="onKeyDown(event)" role="tab" tabindex="0" class="step-title d-flex align-items-center justify-content-between mb-0 pb-4 h5" data-toggle="collapse" data-target="#timeline_item_collapse_${cur_step?index}"
51 aria-expanded="false" aria-controls="timeline_item_collapse_${cur_step?index}">
52
53 <#if getterUtil.getBoolean(cur_step.isSequenceStep.getData())>
54 <span class="d-inline-flex border-0 step-index align-items-center justify-content-center text-lowercase">${languageUtil.get(locale, "and")}</span>
55 <#else>
56 <span class="d-inline-flex rounded-circle step-index align-items-center justify-content-center">${count}</span>
57 </#if>
58
59 ${cur_step.stepTitle.getData()}
60 <span id="timeline_collapse_btn_${cur_step?index}" tabindex="-1" class="toggle-step-btn btn btn-outline-primary bg-transparent border-0 shadow-none">
61 <i class="ri-arrow-down-s-line"></i> <i class="ri-arrow-up-s-line"></i>
62 <span class="show-lbl">${languageUtil.get(locale, "show")}</span>
63 <span class="hide-lbl">${languageUtil.get(locale, "hide")}</span>
64 </span>
65 </h3>
66 </#if>
67 <div class="collapse timeline-item-collapse " role="tabpanel" id="timeline_item_collapse_${cur_step?index}">
68 <div class="d-flex flex-column c-gap-4 mt-0 pb-4 pt-2">
69 <#if (cur_step.stepDescription.getData())??>
70 <div class="step-des">${cur_step.stepDescription.getData()}</div>
71 </#if>
72
73 <#if (cur_step.stepKeyPoint.stepDurationTitle.getData()) !="" ||
74 (cur_step.stepKeyPoint.stepCostTitle.getData()) !="">
75 <div class="step-keys c-gap-3 d-flex align-items-center">
76 <#if (cur_step.stepKeyPoint.stepDurationTitle.getData()) !="">
77 <div class="step-key-item font-weight-normal">
78 <i class="ri-time-line" aria-hidden="true"></i>
79 ${cur_step.stepKeyPoint.stepDurationTitle.getData()}
80 </div>
81 </#if>
82 <#if (cur_step.stepKeyPoint.stepCostTitle.getData()) !="">
83 <div class="step-key-item font-weight-normal">
84 <img src="/documents/d/guest/oman-rial" alt="oman-rial" />
85 ${cur_step.stepKeyPoint.stepCostTitle.getData()}
86 </div>
87 </#if>
88 </div>
89 </#if>
90
91 <#if cur_step.serviceLink.getSiblings()?has_content>
92 <#list cur_step.serviceLink.getSiblings() as cur_step_serviceLink>
93 <#if (cur_step_serviceLink?index == 0) && (cur_step_serviceLink.serviceItem.getData()?length !=0)>
94 <ul class="service-links list-unstyled d-flex flex-column c-gap-3 mb-2" role="navigation" aria-label="Services">
95 </#if>
96
97
98
99 <#assign
100 webContentData = jsonFactoryUtil.createJSONObject(cur_step_serviceLink.serviceItem.getData())
101 />
102
103 <#if webContentData?? && webContentData.title??>
104 <li >
105 <#assign btnClass = "px-2"/>
106 <#if (cur_step_serviceLink?index == 0)>
107 <#assign btnClass = "btn btn-primary"/>
108 </#if>
109 <a class="${btnClass}" data-senna-off="true" href="${cur_step_serviceLink.serviceItem.getFriendlyUrl()}?content=${.vars["reserved-article-id"].data}">
110 <#if themeDisplay.getLanguageId() == "en_US">
111 ${webContentData.titleMap.en_US}
112 <#else>
113 ${webContentData.titleMap.ar_SA}
114 </#if>
115 </a>
116 </li>
117 </#if>
118
119
120
121
122 <#if (cur_step_serviceLink?index == (cur_step.serviceLink.getSiblings()?size - 1)) && (cur_step_serviceLink.serviceItem.getData()?length !=0)>
123 </ul>
124 </#if>
125 </#list>
126 </#if>
127 </div>
128 </div>
129 <div class="divider mt-0"></div>
130 </li>
131 </#list>
132 </ul>
133 </#if>
134 </div>
135 </div>
136 </div>
137 </div>
138
139 </section>
140</article>
141
142
143
144<script>
145 function onKeyDown(event){
146 if (event.key === 'Enter' || event.key === ' ') {
147 event.target.click();
148 }
149 }
150 $(document).on('click', '.toggle-all-steps-btn', function() {
151 const isAllStepsExpanded = $('.step-title[aria-expanded="false"]').length === 0;
152 $(this).toggleClass('all-open', !isAllStepsExpanded);
153 setTimeout(function() {
154 if (isAllStepsExpanded) {
155 $('.step-title[aria-expanded="true"]').trigger('click');
156 } else {
157 $('.step-title[aria-expanded="false"]').trigger('click');
158 }
159 }, 200);
160 });
161
162 $(document).on('click', '.step-title', function() {
163 const isAllStepsExpanded = $('.step-title[aria-expanded="false"]').length === 0;
164 $('.toggle-all-steps-btn').toggleClass('all-open', isAllStepsExpanded);
165 });
166
167</script>
168<style>
169.driving-steps-guide .driving-steps-timeline .toggle-step-btn:hover{
170 color: var(--btn-outline-primary-color);
171}
172</style>
هل أنت راض عن هذه الصفحة؟
فئات الخدمة
عمان الرقمية
© Oman Government
