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 43, column 104] ---- 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 43, column 89] ----
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?1752667366146"></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="d-flex justify-center">
26 <div class="MainCarousel-pagination swiper-pagination"></div>
27 </div>
28 <div class="swiper-wrapper">
29 <#assign number_of_banners=0>
30
31 <#list Naslov.getSiblings() as item>
32 <#if number_of_banners lt 5>
33 <#assign doRender=((item.SchedulingDateFrom.getData()?has_content)?then(today gte
34 item.SchedulingDateFrom.getData()?date('yyyy-MM-dd'), true)) &&
35 ((item.SchedulingDateTo.getData()?has_content)?then(today lte
36 item.SchedulingDateTo.getData()?date('yyyy-MM-dd') ,true))>
37 <#if doRender>
38 <#assign number_of_banners++>
39 <#assign gtmName="" />
40 <#if item.GTMLabel??>
41 <#assign gtmName=item.GTMLabel.getData() />
42 </#if>
43 <div class="swiper-slide js-swiper-thumb-image" data-thumb="${fetchCDNLink(item.banner_navigation.getData())}">
44 <div class="MainCarousel-main-cell overflow-hidden" data-banner-index="${number_of_banners}"
45 data-gtm-name="${gtmName}">
46 <#assign otvaranjeLinka="">
47 <#if item.OtvaranjeLinka.getData()=="new window">
48 <#assign otvaranjeLinka="_blank">
49 </#if>
50 <#assign link="" />
51 <#assign modalId="" />
52 <#assign modalTriggerClass="" />
53 <#assign ffCustomTitle="" />
54 <#if item.LinkButton.getData() !="">
55 <#assign link=item.LinkButton.getData() />
56 <#elseif item.ModalId?? && item.ModalId.getData() !="">
57 <#assign modalIdSufix="'" />
58 <#assign modalId="data-modal='#" />
59 <#assign modalId=modalId + item.ModalId.getData() />
60 <#assign modalId=modalId + modalIdSufix />
61 <#assign link="#" />
62 <#assign modalTriggerClass="js-modal-trigger" />
63 <#if item.FFCustomTitle??>
64 <#assign ffCustomTitle=item.FFCustomTitle.getData() />
65 </#if>
66
67 </#if>
68
69 <#if item.LinkButton.getData() !="">
70 <a href="${link}" target="${otvaranjeLinka}" class="block-link gtm-carousel-block-link">
71 </#if>
72
73 <picture class="MainCarousel-image">
74 <source srcset="${fetchCDNLink(item.BannerDesktop.getData())}" media="(min-width: 768px)" />
75 <img src="${fetchCDNLink(item.BannerMobile.getData())}" loading="lazy" alt=""/>
76 </picture>
77
78 <div class="MainCarousel-contentBlock-wrap">
79 <div class="container">
80
81 <#assign content_block_color="" />
82
83 <#if item.background_color.getData()=="primary">
84 <#assign content_block_color="is-primary" />
85 <#elseif item.background_color.getData()=="secondary">
86 <#assign content_block_color="is-secondary" />
87 <#elseif item.background_color.getData()=="tertiary">
88 <#assign content_block_color="is-tertiary" />
89 <#elseif item.background_color.getData()=="quaternary">
90 <#assign content_block_color="is-quaternary" />
91 <#elseif item.background_color.getData()=="quinary">
92 <#assign content_block_color="is-quinary" />
93 </#if>
94
95 <#if item.ButtonVariant.getData()=="red">
96 <#assign button_color="button--red" />
97 <#elseif item.ButtonVariant.getData()=="white">
98 <#assign button_color="button--light" />
99 </#if>
100
101 <div class="MainCarousel-contentBlock ${content_block_color}">
102 <#if item.CounterContainer?? && item.CounterContainer.HasCounter.getData()=="yes" &&
103 item.CounterContainer.CounterToDate.getData() !="">
104 <#assign longToday=.now?long />
105 <#assign toHours="00" />
106 <#assign toMinutes="00" />
107 <#if item.CounterContainer.CounterToHours.getData()?has_content>
108 <#assign toHours=(item.CounterContainer.CounterToHours.getData()?number>23)?then("23",
109 item.CounterContainer.CounterToHours.getData()) />
110 <#if toHours?length lt 2>
111 <#assign toHours="0" + toHours />
112 </#if>
113 </#if>
114 <#if item.CounterContainer.CounterToMinutes.getData()?has_content>
115 <#assign toMinutes=(item.CounterContainer.CounterToMinutes.getData()?number>
116 59)?then("59", item.CounterContainer.CounterToMinutes.getData()) />
117 <#if toMinutes?length lt 2>
118 <#assign toMinutes="0" + toMinutes />
119 </#if>
120 </#if>
121 <#assign toSeconds="00" />
122
123 <#assign
124 countdownDisplayBuilder=item.CounterContainer.CounterToDate.getData()?date("yyyy-MM-dd")?string.iso
125 + "T" />
126 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toHours />
127 <#assign countdownDisplayBuilder=countdownDisplayBuilder + ":" />
128 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toMinutes />
129 <#assign countdownDisplayBuilder=countdownDisplayBuilder + ":" />
130 <#assign countdownDisplayBuilder=countdownDisplayBuilder + toSeconds />
131
132 <#assign
133 countdownToBuilder=item.CounterContainer.CounterToDate.getData()?date("yyyy-MM-dd")?string
134 + " " />
135 <#assign countdownToBuilder=countdownToBuilder + toHours />
136 <#assign countdownToBuilder=countdownToBuilder + ":" />
137 <#assign countdownToBuilder=countdownToBuilder + toMinutes />
138 <#assign countdownToBuilder=countdownToBuilder + ":" />
139 <#assign countdownToBuilder=countdownToBuilder + toSeconds />
140 <#assign countdownToLong=countdownToBuilder?datetime?long />
141 <#assign countdownDiff=((countdownToLong - longToday)/1000)?floor />
142 <#if countdownDiff gte 0>
143 <div class="mt-4 mb-4 md:mb-8">
144 <div
145 class="Countdown-clock ${item.CounterContainer.CounterBackgroundColor.getData()}-fields js-countdown-clock"
146 data-deadline="${countdownDisplayBuilder}">
147 <div class="Countdown-clock-wrap">
148 <div class="Countdown-clock-field days Countdown-clock-field-nt">
149 <span class="font-serif js-countdown-days number">00</span>
150 <span class="text">dana</span>
151 </div>
152 <div class="Countdown-clock-field hours Countdown-clock-field-nt">
153 <span class="font-serif js-countdown-hours number">00</span>
154 <span class="text">sati</span>
155 </div>
156 <div class="Countdown-clock-field minutes Countdown-clock-field-nt">
157 <span class="font-serif js-countdown-minutes number">00</span>
158 <span class="text">minuta</span>
159 </div>
160 <#if item.CounterContainer.ShowSeconds.getData()="yes">
161 <div class="Countdown-clock-field seconds Countdown-clock-field-nt">
162 <span class="font-serif js-countdown-seconds number">00</span>
163 <span class="text">sekundi</span>
164 </div>
165 </#if>
166 </div>
167 </div>
168 </div>
169 <#else>
170 <div>
171 ${item.CounterContainer.CounterExpiredText.getData()}
172 </div>
173 </#if>
174 </#if>
175
176 <div class="MainCarousel-description">
177 <#if number_of_banners == 1 && item?has_content>
178 <h1 class="MainCarousel-title font-serif">${item.getData()}</h1>
179 <#elseif item?has_content>
180 <h2 class="MainCarousel-title font-serif">${item.getData()}</h2>
181 </#if>
182 <#if item.Podnaslov?has_content>
183 <p class="MainCarousel-text text-base md:text-lg font-normal">
184 ${item.Podnaslov.getData()}</p>
185 </#if>
186
187 <#if link !="" && item.ButtonText.getData() !="">
188 <button
189 class="button button--primary ${button_color} button--has-shadow serif ${modalTriggerClass}"
190 href="${link}" target="${otvaranjeLinka}" ${modalId}
191 data-ff-custom-title="${ffCustomTitle}">
192 <span class="button__label">${item.ButtonText.getData()}</span>
193 <span class="button__icon icon-right">
194 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
195 xmlns="http://www.w3.org/2000/svg">
196 <path
197 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"
198 fill="currentColor"></path>
199 </svg>
200 </span>
201 </button>
202 </#if>
203 </div>
204 </div>
205
206 <#if getterUtil.getBoolean(item.patch.show_patch.getData())>
207 <#assign patch_type=item.patch.patch_type.getData() />
208 <#assign patch_type_class="" />
209
210 <#if patch_type !="primary">
211 <#assign patch_type_class="Patch--secondary" />
212 </#if>
213
214 <div class="Patch-wrap font-serif ${patch_type_class}">
215 <#if item.patch.patch_small_text.getData() !="" && patch_type=="primary">
216 <p class="Patch Patch--black is-small">
217 <span class="Patch-txt">
218 ${item.patch.patch_small_text.getData()}
219 </span>
220 </p>
221 </#if>
222
223 <#assign patch_secondary_class="" />
224
225 <#if patch_type=="secondary-red">
226 <#assign patch_secondary_class="Patch--big-red" />
227 <#elseif patch_type=="secondary-black">
228 <#assign patch_secondary_class="Patch--big-black" />
229 </#if>
230
231 <p class="Patch Patch--red ${patch_secondary_class}">
232 <span class="font-bold">
233 <#if item.patch.patch_subtitle.getData() !="">
234 <span
235 class="font-normal Patch-subtitle">${item.patch.patch_subtitle.getData()}</span>
236 </#if>
237 <span class="Patch-title">${item.patch.patch_title.getData()}</span>
238 <#if item.patch.patch_currency_text.getData() !="">
239 <span
240 class="font-normal Patch-currency big-kn">${item.patch.patch_currency_text.getData()}</span>
241 </#if>
242 <#if item.patch.patch_discount_text.getData() !="">
243 <span class="Patch-discount">${item.patch.patch_discount_text.getData()}</span>
244 </#if>
245 </span>
246 <#if item.patch.patch_text.getData() !="">
247 <span class="Patch-txt d-block">${item.patch.patch_text.getData()}</span>
248 </#if>
249 </p>
250 </div>
251 </#if>
252 </div>
253 </div>
254
255 <#if item.LinkButton.getData() !="">
256 </a>
257 </#if>
258
259 </div>
260 </div>
261 </#if>
262 </#if>
263 </#list>
264 </div>
265 <#if number_of_banners gt 1>
266 <div class="MainCarousel-navigation">
267 <div class="MainCarousel-button-prev swiper-button-prev bg-gray-20"><img src="${images_folder}/icons/icon-left.svg" alt="" /></div>
268 <div class="MainCarousel-button-next swiper-button-next bg-gray-20"><img src="${images_folder}/icons/icon-right.svg" alt="" /></div>
269 </div>
270 </#if>
271 </div>
272 </div>
273</div>
274
275<#function fetchCDNLink link>
276 <#if !link?starts_with(themeDisplay.getCDNHost())>
277 <#return (themeDisplay.getCDNHost() + link)>
278 </#if>
279 <#return link>
280</#function>
281
282<script>
283
284 $(document).ready(function () {
285 $('.gtm-carousel-block-link').on("click", "", function () {
286 var component = $(this).parent();
287 var index = component.data('banner-index');
288
289 var promotionId = component.find("h3.MainCarousel-title").text();
290 var title = (component.data("gtm-name") != "") ? component.data("gtm-name") : component.find("h3.MainCarousel-title").text();
291
292 <#-- new GA4 code -->
293 var selectPromotionData = {
294 'event': 'select_promotion',
295 'ecommerce': {
296 'items': [{
297 'promotion_id': promotionId,
298 'promotion_name': title,
299 'creative_slot': "Homepage",
300 'index': index
301 }]
302 }
303 };
304
305 window.dataLayer = window.dataLayer || [];
306 window.dataLayer.push({ ecommerce: null });
307 window.dataLayer.push(selectPromotionData);
308
309 <#-- old GA3 code, ready for deletion when GA3 shuts down -->
310 var imageName = component.find("img.MainCarousel-image").attr("alt");
311 window.dataLayer.push({
312 'event': 'promotionClick',
313 'ecommerce': {
314 'promoClick': {
315 'promotions': [{
316 'id': 'Home - Slider',
317 'name': title,
318 'creative': imageName,
319 'position': index
320 }]
321 }
322 }
323 });
324 <#-- end of old GA3 -->
325 });
326
327 <#-- new GA4 code -->
328 window.dataLayer = window.dataLayer || [];
329 var mainPromoCarouselPromoData = [];
330
331 $.each($(".MainCarousel-main-cell"), function () {
332 var promotionData = {
333 'promotion_id': $(this).find("h3.MainCarousel-title").text(),
334 'promotion_name': ($(this).data("gtm-name") != "") ? $(this).data("gtm-name") : $(this).find("h3.MainCarousel-title").text(),
335 'creative_slot': "Homepage",
336 'index': $(this).data('banner-index')
337 };
338 mainPromoCarouselPromoData.push(promotionData);
339 });
340
341 var promotionViewData = {
342 'event': 'view_promotion',
343 'ecommerce': {
344 'items': mainPromoCarouselPromoData
345 }
346 };
347
348 window.dataLayer = window.dataLayer || [];
349 window.dataLayer.push({ ecommerce: null });
350 window.dataLayer.push(promotionViewData);
351 <#-- end of new GA4 code -->
352
353 <#-- old GA3 code, ready for deletion when GA3 shuts down -->
354 var promotionsObjectList = [];
355 $.each($(".MainCarousel-main-cell"), function () {
356 var promotionsObject = {
357 'id': 'Home - Slider',
358 'name': ($(this).data("gtm-name") != "") ? $(this).data("gtm-name") : $(this).find("h3.MainCarousel-title").text(),
359 'creative': $(this).find("img.MainCarousel-image").attr("title"),
360 'position': $(this).data('banner-index')
361 };
362 promotionsObjectList.push(promotionsObject);
363 });
364
365 window.dataLayer.push({
366 'ecommerce': {
367 'promoView': {
368 'promotions': promotionsObjectList
369 }
370 }
371 });
372 <#-- end of old GA3 -->
373 });
374</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.