An error occurred while processing the template.
The following has evaluated to null or missing: ==> item.banner_navigation [in template "10113#11634844#45735967" at line 40, column 96] ---- 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 be 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: ${fetchCDNLink(item.banner_navigation... [in template "10113#11634844#45735967" at line 40, column 81] ----
1<#assign liferay_theme=PortletJspTagLibs["/META-INF/liferay-theme.tld"] />
2<#assign portlet=PortletJspTagLibs["/META-INF/liferay-portlet.tld"] />
3<@liferay_theme["defineObjects"] />
4<@portlet["defineObjects"] />
5
6<#assign today=.now?string('yyyy-MM-dd')?date('yyyy-MM-dd') />
7<#if TransitionSpeed.getData() !="">
8 <#assign autoPlay=TransitionSpeed.getData()?number * 1000 />
9 <#else>
10 <#assign autoPlay=10000 * 1000 />
11</#if>
12
13<#assign css_folder=themeDisplay.getPathThemeCss() />
14<#assign javascript_folder=themeDisplay.getPathThemeJavaScript() />
15<#assign images_folder=themeDisplay.getPathThemeImages() />
16
17
18
19<script src="${javascript_folder}/theme-pablo/start_page_carousel.js?v1712825033702"></script>
20
21
22<div class="MainCarousel-wrap">
23 <div class="MainCarousel-main js-spc-carousel">
24 <div class="MainCarousel-swiper js-swiper-carousel">
25 <div class="swiper-wrapper">
26 <#assign number_of_banners=0>
27
28 <#list Naslov.getSiblings() as item>
29 <#if number_of_banners lt 5>
30 <#assign doRender=((item.SchedulingDateFrom.getData()?has_content)?then(today gte
31 item.SchedulingDateFrom.getData()?date('yyyy-MM-dd'), true)) &&
32 ((item.SchedulingDateTo.getData()?has_content)?then(today lte
33 item.SchedulingDateTo.getData()?date('yyyy-MM-dd') ,true))>
34 <#if doRender>
35 <#assign number_of_banners++>
36 <#assign gtmName="" />
37 <#if item.GTMLabel??>
38 <#assign gtmName=item.GTMLabel.getData() />
39 </#if>
40 <div class="swiper-slide js-swiper-thumb-image" data-thumb="${fetchCDNLink(item.banner_navigation.getData())}">
41 <div class="MainCarousel-main-cell overflow-hidden" data-banner-index="${number_of_banners}"
42 data-gtm-name="${gtmName}">
43 <#assign otvaranjeLinka="">
44 <#if item.OtvaranjeLinka.getData()=="new window">
45 <#assign otvaranjeLinka="_blank">
46 </#if>
47 <#assign link="" />
48 <#assign modalId="" />
49 <#assign modalTriggerClass="" />
50 <#assign ffCustomTitle="" />
51 <#if item.LinkButton.getData() !="">
52 <#assign link=item.LinkButton.getData() />
53 <#elseif item.ModalId?? && item.ModalId.getData() !="">
54 <#assign modalIdSufix="'" />
55 <#assign modalId="data-modal='#" />
56 <#assign modalId=modalId + item.ModalId.getData() />
57 <#assign modalId=modalId + modalIdSufix />
58 <#assign link="#" />
59 <#assign modalTriggerClass="js-modal-trigger" />
60 <#if item.FFCustomTitle??>
61 <#assign ffCustomTitle=item.FFCustomTitle.getData() />
62 </#if>
63
64 </#if>
65
66 <#if item.LinkButton.getData() !="">
67 <a href="${link}" target="${otvaranjeLinka}" class="block-link gtm-carousel-block-link">
68 </#if>
69
70 <picture class="MainCarousel-image">
71 <source srcset="${fetchCDNLink(item.BannerDesktop.getData())}" media="(min-width: 768px)" />
72 <img src="${fetchCDNLink(item.BannerMobile.getData())}" loading="lazy"/>
73 </picture>
74
75 <div class="MainCarousel-contentBlock-wrap">
76 <div class="container">
77
78 <#assign content_block_color="" />
79
80 <#if item.background_color.getData()=="primary">
81 <#assign content_block_color="is-primary" />
82 <#elseif item.background_color.getData()=="secondary">
83 <#assign content_block_color="is-secondary" />
84 <#elseif item.background_color.getData()=="tertiary">
85 <#assign content_block_color="is-tertiary" />
86 <#elseif item.background_color.getData()=="quaternary">
87 <#assign content_block_color="is-quaternary" />
88 <#elseif item.background_color.getData()=="quinary">
89 <#assign content_block_color="is-quinary" />
90 </#if>
91
92 <#if item.ButtonVariant.getData()=="red">
93 <#assign button_color="button--red" />
94 <#elseif item.ButtonVariant.getData()=="white">
95 <#assign button_color="button--light" />
96 </#if>
97
98 <div class="MainCarousel-contentBlock ${content_block_color}">
99 <#if item.CounterContainer?? && item.CounterContainer.HasCounter.getData()=="yes" &&
100 item.CounterContainer.CounterToDate.getData() !="">
101 <#assign longToday=.now?long />
102 <#assign toHours="00" />
103 <#assign toMinutes="00" />
104 <#if item.CounterContainer.CounterToHours.getData()?has_content>
105 <#assign toHours=(item.CounterContainer.CounterToHours.getData()?number>23)?then("23",
106 item.CounterContainer.CounterToHours.getData()) />
107 <#if toHours?length lt 2>
108 <#assign toHours="0" + toHours />
109 </#if>
110 </#if>
111 <#if item.CounterContainer.CounterToMinutes.getData()?has_content>
112 <#assign toMinutes=(item.CounterContainer.CounterToMinutes.getData()?number>
113 59)?then("59", item.CounterContainer.CounterToMinutes.getData()) />
114 <#if toMinutes?length lt 2>
115 <#assign toMinutes="0" + toMinutes />
116 </#if>
117 </#if>
118 <#assign toSeconds="00" />
119
120 <#assign
121 countdownDisplayBuilder=item.CounterContainer.CounterToDate.getData()?date("yyyy-MM-dd")?string.iso
122 + "T" />
123 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toHours />
124 <#assign countdownDisplayBuilder=countdownDisplayBuilder + ":" />
125 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toMinutes />
126 <#assign countdownDisplayBuilder=countdownDisplayBuilder + ":" />
127 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toSeconds />
128
129 <#assign
130 countdownToBuilder=item.CounterContainer.CounterToDate.getData()?date("yyyy-MM-dd")?string
131 + " " />
132 <#assign countdownToBuilder=countdownToBuilder + toHours />
133 <#assign countdownToBuilder=countdownToBuilder + ":" />
134 <#assign countdownToBuilder=countdownToBuilder + toMinutes />
135 <#assign countdownToBuilder=countdownToBuilder + ":" />
136 <#assign countdownToBuilder=countdownToBuilder + toSeconds />
137 <#assign countdownToLong=countdownToBuilder?datetime?long />
138 <#assign countdownDiff=((countdownToLong - longToday)/1000)?floor />
139 <#if countdownDiff gte 0>
140 <div class="mt-4 mb-4 md:mb-8">
141 <div
142 class="Countdown-clock ${item.CounterContainer.CounterBackgroundColor.getData()}-fields js-countdown-clock"
143 data-deadline="${countdownDisplayBuilder}">
144 <div class="Countdown-clock-wrap">
145 <div class="Countdown-clock-field days Countdown-clock-field-nt">
146 <span class="font-serif js-countdown-days number">00</span>
147 <span class="text">dana</span>
148 </div>
149 <div class="Countdown-clock-field hours Countdown-clock-field-nt">
150 <span class="font-serif js-countdown-hours number">00</span>
151 <span class="text">sati</span>
152 </div>
153 <div class="Countdown-clock-field minutes Countdown-clock-field-nt">
154 <span class="font-serif js-countdown-minutes number">00</span>
155 <span class="text">minuta</span>
156 </div>
157 <#if item.CounterContainer.ShowSeconds.getData()="yes">
158 <div class="Countdown-clock-field seconds Countdown-clock-field-nt">
159 <span class="font-serif js-countdown-seconds number">00</span>
160 <span class="text">sekundi</span>
161 </div>
162 </#if>
163 </div>
164 </div>
165 </div>
166 <#else>
167 <div>
168 ${item.CounterContainer.CounterExpiredText.getData()}
169 </div>
170 </#if>
171 </#if>
172
173 <div class="MainCarousel-description">
174 <#if item?has_content>
175 <h3 class="MainCarousel-title font-serif">${item.getData()}</h3>
176 </#if>
177 <#if item.Podnaslov?has_content>
178 <p class="MainCarousel-text text-base md:text-lg font-normal">
179 ${item.Podnaslov.getData()}</p>
180 </#if>
181
182 <#if link !="" && item.ButtonText.getData() !="">
183 <button
184 class="button button--primary ${button_color} button--has-shadow serif ${modalTriggerClass}"
185 href="${link}" target="${otvaranjeLinka}" ${modalId}
186 data-ff-custom-title="${ffCustomTitle}">
187 <span class="button__label">${item.ButtonText.getData()}</span>
188 <span class="button__icon icon-right">
189 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
190 xmlns="http://www.w3.org/2000/svg">
191 <path
192 d="M15.186 12.0016L9.9375 17.25L8.8125 16.125L12.9368 12.0007L8.8125 7.875L9.9375 6.75L15.186 12H15.1875L15.1868 12.0007L15.1875 12.0016H15.186Z"
193 fill="currentColor"></path>
194 </svg>
195 </span>
196 </button>
197 </#if>
198 </div>
199 </div>
200
201 <#if getterUtil.getBoolean(item.patch.show_patch.getData())>
202 <#assign patch_type=item.patch.patch_type.getData() />
203 <#assign patch_type_class="" />
204
205 <#if patch_type !="primary">
206 <#assign patch_type_class="Patch--secondary" />
207 </#if>
208
209 <div class="Patch-wrap font-serif ${patch_type_class}">
210 <#if item.patch.patch_small_text.getData() !="" && patch_type=="primary">
211 <p class="Patch Patch--black is-small">
212 <span class="Patch-txt">
213 ${item.patch.patch_small_text.getData()}
214 </span>
215 </p>
216 </#if>
217
218 <#assign patch_secondary_class="" />
219
220 <#if patch_type=="secondary-red">
221 <#assign patch_secondary_class="Patch--big-red" />
222 <#elseif patch_type=="secondary-black">
223 <#assign patch_secondary_class="Patch--big-black" />
224 </#if>
225
226 <p class="Patch Patch--red ${patch_secondary_class}">
227 <span class="font-bold">
228 <#if item.patch.patch_subtitle.getData() !="">
229 <span
230 class="font-normal Patch-subtitle">${item.patch.patch_subtitle.getData()}</span>
231 </#if>
232 <span class="Patch-title">${item.patch.patch_title.getData()}</span>
233 <#if item.patch.patch_currency_text.getData() !="">
234 <span
235 class="font-normal Patch-currency big-kn">${item.patch.patch_currency_text.getData()}</span>
236 </#if>
237 <#if item.patch.patch_discount_text.getData() !="">
238 <span class="Patch-discount">${item.patch.patch_discount_text.getData()}</span>
239 </#if>
240 </span>
241 <#if item.patch.patch_text.getData() !="">
242 <span class="Patch-txt d-block">${item.patch.patch_text.getData()}</span>
243 </#if>
244 </p>
245 </div>
246 </#if>
247 </div>
248 </div>
249
250 <#if item.LinkButton.getData() !="">
251 </a>
252 </#if>
253
254 </div>
255 </div>
256 </#if>
257 </#if>
258 </#list>
259 </div>
260 <#if number_of_banners gt 1>
261 <div class="d-flex justify-center">
262 <div class="MainCarousel-pagination"></div>
263 </div>
264 <div class="MainCarousel-navigation">
265 <div class="MainCarousel-button-prev bg-gray-20"><img src="${images_folder}/icons/icon-left.svg" /></div>
266 <div class="MainCarousel-button-next bg-gray-20"><img src="${images_folder}/icons/icon-right.svg" /></div>
267 </div>
268 </#if>
269 </div>
270 </div>
271</div>
272
273<#function fetchCDNLink link>
274 <#if !link?starts_with(themeDisplay.getCDNHost())>
275 <#return (themeDisplay.getCDNHost() + link)>
276 </#if>
277 <#return link>
278</#function>
279
280<script>
281
282 $(document).ready(function () {
283 $('.gtm-carousel-block-link').on("click", "", function () {
284 var component = $(this).parent();
285 var index = component.data('banner-index');
286
287 var promotionId = component.find("h3.MainCarousel-title").text();
288 var title = (component.data("gtm-name") != "") ? component.data("gtm-name") : component.find("h3.MainCarousel-title").text();
289
290 <#-- new GA4 code -->
291 var selectPromotionData = {
292 'event': 'select_promotion',
293 'ecommerce': {
294 'items': [{
295 'promotion_id': promotionId,
296 'promotion_name': title,
297 'creative_slot': "Homepage",
298 'index': index
299 }]
300 }
301 };
302
303 window.dataLayer = window.dataLayer || [];
304 window.dataLayer.push({ ecommerce: null });
305 window.dataLayer.push(selectPromotionData);
306
307 <#-- old GA3 code, ready for deletion when GA3 shuts down -->
308 var imageName = component.find("img.MainCarousel-image").attr("alt");
309 window.dataLayer.push({
310 'event': 'promotionClick',
311 'ecommerce': {
312 'promoClick': {
313 'promotions': [{
314 'id': 'Home - Slider',
315 'name': title,
316 'creative': imageName,
317 'position': index
318 }]
319 }
320 }
321 });
322 <#-- end of old GA3 -->
323 });
324
325 <#-- new GA4 code -->
326 window.dataLayer = window.dataLayer || [];
327 var mainPromoCarouselPromoData = [];
328
329 $.each($(".MainCarousel-main-cell"), function () {
330 var promotionData = {
331 'promotion_id': $(this).find("h3.MainCarousel-title").text(),
332 'promotion_name': ($(this).data("gtm-name") != "") ? $(this).data("gtm-name") : $(this).find("h3.MainCarousel-title").text(),
333 'creative_slot': "Homepage",
334 'index': $(this).data('banner-index')
335 };
336 mainPromoCarouselPromoData.push(promotionData);
337 });
338
339 var promotionViewData = {
340 'event': 'view_promotion',
341 'ecommerce': {
342 'items': mainPromoCarouselPromoData
343 }
344 };
345
346 window.dataLayer = window.dataLayer || [];
347 window.dataLayer.push({ ecommerce: null });
348 window.dataLayer.push(promotionViewData);
349 <#-- end of new GA4 code -->
350
351 <#-- old GA3 code, ready for deletion when GA3 shuts down -->
352 var promotionsObjectList = [];
353 $.each($(".MainCarousel-main-cell"), function () {
354 var promotionsObject = {
355 'id': 'Home - Slider',
356 'name': ($(this).data("gtm-name") != "") ? $(this).data("gtm-name") : $(this).find("h3.MainCarousel-title").text(),
357 'creative': $(this).find("img.MainCarousel-image").attr("title"),
358 'position': $(this).data('banner-index')
359 };
360 promotionsObjectList.push(promotionsObject);
361 });
362
363 window.dataLayer.push({
364 'ecommerce': {
365 'promoView': {
366 'promotions': promotionsObjectList
367 }
368 }
369 });
370 <#-- end of old GA3 -->
371 });
372</script>
A1 Business Solutions
Vrhunske usluge za sve poslovne korisnike
Drago nam je što ste se pridružili našoj velikoj A1 Business Solutions obitelji!
Pripremili smo za vas veliku ponudu usluga, stručan tim ljudi koji vam je uvijek na raspolaganju te visoku kvalitetu svih naših usluga.
Pomažemo u vašem poslovanju i omogućujemo vam:
Sve mobilne, fiksne i ICT usluge na jednom mjestu
Vlastitu mobilnu i fiksnu infrastrukturu koja jamči vrhunsku kvalitetu mreže i usluga
Jednaku kvalitetu usluga i vrhunsko iskustvo za sve poslovne korisnike
Pametna rješenja za vaše digitalno poslovanje
Mali ili veliki, vaš posao za nas je najbitniji!
Bez obzira na opseg vašeg poslovanja mi smo tu za vas da vam pružimo vrhunsku kvalitetu usluge.
Bez obzira na novi brend, i dalje su tu za vas isti ljudi a postojeći okvirni i pretplatnički ugovori se ne mijenjaju te važe i dalje.