An error occurred while processing the template.
The following has evaluated to null or missing: ==> cur_containerLoop.LogoImage [in template "20116#20160#164010" at line 649, column 78] ---- 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: #if cur_containerLoop.LogoImage.getDa... [in template "20116#20160#164010" at line 649, column 73] ----
1<style>
2p{
3 margin:0 !important;
4}
5.bundle {
6 background-color: #FFFFFF;
7 box-shadow: 0 1px 3px 0 #AFAFAF;
8
9 padding:0px !important;
10 padding-bottom:20px !important;
11 position: relative;
12 text-align: center;
13 z-index: 0;
14}
15.bundle--dark {
16 color: #333333;
17 box-shadow: none;
18}
19
20.bundle--alt {
21 background-color: #EBEBEB;
22}
23
24.bundle--horizontal {
25 padding: 0;
26}
27.bundle--compact {
28 text-align: right;
29}
30
31.bundle__show-more {
32 position: relative;
33}
34
35.bundle__show-more:after {
36 content: "";
37 height: 1px;
38 width: 50%;
39 position: absolute;
40 background: #CCCCCC;
41 left: 0;
42 right: 0;
43 margin: 0 auto;
44}
45
46.bundle__strong {
47 color: #000000;
48}
49
50.bundle__compact-spring {
51 max-width: 540px;
52 margin: 0 auto;
53}
54
55.bundle__details {
56 background-color: #F4F4F4;
57 padding: 30px;
58}
59
60.bundle__see-details {
61 text-decoration: underline;
62}
63
64.bundle--horizontal .bundle__see-details {
65 margin-top: 0;
66}
67
68.bundle__inclusions {
69 margin-bottom: 20px;
70}
71
72.bundle--horizontal .bundle__inclusions {
73 margin-top: 10px;
74 margin-bottom: 0;
75}
76
77/*.bundle__inclusion {
78 clear: both;
79 padding-top: 11px;
80 position: relative;
81 text-align: left;
82 padding-left: 40px;
83}*/
84
85.bundle__inclusion--no-bullet {
86 text-align: center;
87}
88
89/*.bundle__inclusion-bullet {
90 color: #428600;
91 float: left;
92 margin-right: 10px;
93 margin-bottom: 1px;
94 position: absolute;
95 margin-top: 2px;
96 <#if locale.getLanguage() == "ar" >
97 transform: scaleX(-1);
98 right: 0;
99 </#if>
100 <#if locale.getLanguage() == "en" >
101 left: 0;
102 </#if>
103
104}*/
105
106.bundle__inclusion-bullet--hidden {
107 visibility: hidden;
108}
109
110.bundle__inclusion-logo {
111 max-height: 25px;
112}
113
114.bundle__inclusion-logo--buffer {
115 margin-top: 10px;
116 margin-bottom: 10px;
117}
118
119.bundle__select {
120 padding: 0 50px;
121 margin-top: 20px;
122}
123
124.bundle__select--first {
125 margin-top: 0;
126}
127
128.bundle__selected {
129 background-color: #428600;
130 color: #FFFFFF;
131}
132
133.bundle--horizontal .bundle__data-info {
134 display: inline;
135}
136
137.bundle__button {
138 -webkit-appearance: none;
139 -moz-appearance: none;
140 appearance: none;
141 border: 1px solid transparent;
142 color: #FFFFFF;
143 cursor: pointer;
144 display: inline-block;
145 font-size: 20px;
146 padding: 11px 37px;
147 text-align: center;
148}
149
150.bundle__button:hover {
151 cursor: pointer;
152}
153
154.bundle__button--default {
155 background-color: #666666;
156}
157
158.bundle__button--default:hover {
159 background-color: #333333;
160}
161
162.bundle__label {
163 line-height: 28px;
164}
165
166
167.bundle__label--unchecked {
168 display: inline-block;
169}
170
171.bundle__label--checked {
172 display: none;
173}
174
175.bundle__label-wrapper {
176 padding: 0 20px;
177}
178
179.bundle__label-icon {
180 margin-right: 10px;
181 vertical-align: top;
182}
183
184.bundle__input {
185 display: none;
186}
187
188.bundle__input:checked + .bundle__button {
189 background-color: #428600;
190}
191
192.bundle__input:checked + .bundle__button .bundle__label--unchecked {
193 display: none;
194}
195
196.bundle__input:checked + .bundle__button .bundle__label--checked {
197 display: inline-block;
198}
199
200.bundle__emphasise {
201 color: #E60000;
202}
203
204.bundle__offer-text {
205 color: #666666;
206 display: block;
207}
208
209.bundle-data {
210 border-left-width: 0;
211 border-right-width: 0;
212 display: block;
213 letter-spacing: -.215em;
214 height: 110px;
215 width: 100%;
216 margin-top: 0;
217 padding-top:20px;
218 margin-bottom: 0;
219 text-align: center;
220 overflow:hidden;
221}
222
223.bundle-data:after {
224 content: "";
225 display: inline-block;
226 vertical-align: bottom;
227 height: 100%;
228}
229
230.bundle-data--narrow {
231 border-left-width: 1px;
232 border-right-width: 1px;
233 height: auto;
234}
235
236
237
238.bundle-data__value--inverse {
239 background-color: transparent;
240}
241
242.bundle-data__value--full {
243 width: 100%;
244}
245
246.bundle-data--large .bundle-data__value {
247 height: 100%;
248}
249
250.bundle-data--red .bundle-data__value {
251 background-color: #E60000;
252 border-color: #E60000;
253 border-right-color: transparent;
254 color: #FFFFFF;
255}
256
257.bundle-data--red .bundle-data__value--inverse {
258 background-color: #FFFFFF;
259 color: #E60000;
260}
261
262.bundle-data--seance .bundle-data__value {
263 background-color: #9C2AA0;
264 border-color: #9C2AA0;
265 border-right-color: transparent;
266 color: #FFFFFF;
267}
268
269.bundle-data--seance .bundle-data__value--inverse {
270 background-color: #FFFFFF;
271 color: #9C2AA0;
272}
273
274.bundle-data--guardsman-red .bundle-data__value {
275 background-color: #BD0000;
276 border-color: #BD0000;
277 border-right-color: transparent;
278 color: #FFFFFF;
279}
280
281.bundle-data--guardsman-red .bundle-data__value--inverse {
282 background-color: #FFFFFF;
283 color: #BD0000;
284}
285
286.bundle-data--finn .bundle-data__value {
287 background-color: #5E2750;
288 border-color: #5E2750;
289 border-right-color: transparent;
290 color: #FFFFFF;
291}
292
293.bundle-data--finn .bundle-data__value--inverse {
294 background-color: #FFFFFF;
295 color: #5E2750;
296}
297
298.bundle-data--blue-lagoon .bundle-data__value {
299 background-color: #007C92;
300 border-color: #007C92;
301 border-right-color: transparent;
302 color: #FFFFFF;
303}
304
305.bundle-data--blue-lagoon .bundle-data__value--inverse {
306 background-color: #FFFFFF;
307 color: #007C92;
308}
309
310.bundle-data--cinderella .bundle-data__value {
311 background-color: #FDD4D4;
312 border-color: #FDD4D4;
313 border-right-color: transparent;
314 color: #BD0000;
315}
316
317.bundle-data--cinderella .bundle-data__value--inverse {
318 background-color: #FFFFFF;
319}
320
321.bundle-data--cavern-pink .bundle-data__value {
322 background-color: #E5BFBF;
323 border-color: #E5BFBF;
324 border-right-color: transparent;
325 color: #990000;
326}
327
328.bundle-data--cavern-pink .bundle-data__value--inverse {
329 background-color: #FFFFFF;
330}
331
332.bundle-data--narrow .bundle-data__value {
333 padding-top: 10px;
334 padding-bottom: 10px;
335}
336
337.bundle-data--narrow .bundle-data__value--inverse {
338 border-right-color: currentColor;
339}
340
341.bundle-data--narrow .bundle-data__heading {
342 display: inline-block;
343 margin-bottom: 0;
344}
345
346.bundle-data__heading {
347 display: block;
348 margin: 3px 0 1px;
349 font-family: VodafoneLight;
350 letter-spacing: -.215em;
351}
352
353.bundle-data__heading--large-content {
354 font-size: 24px;
355}
356
357.bundle-data__unit {
358 font-size: 28px;
359 line-height: 1em;
360 letter-spacing: normal;
361}
362
363.bundle-data__amount {
364 font-size: 40px;
365 line-height: 1em;
366 letter-spacing: normal;
367}
368
369.bundle-data--large .bundle-data__amount {
370 font-size: 56px;
371}
372
373.bundle-data--small .bundle-data__amount {
374 font-size: 28px;
375}
376
377.bundle-price {
378 margin: 0;
379}
380
381.bundle-price--left, .bundle-price--narrow {
382 text-align: left;
383}
384
385.bundle-price__cost {
386 font-size: 40px;
387 font-family: "VodafoneRegular";
388}
389
390.bundle-price__cost--light {
391 font-family: "VodafoneLight";
392 font-size: 30px;
393}
394
395.bundle-price__regular-cost {
396 font-family: "VodafoneRegular";
397}
398
399.bundle-price__regular-price {
400 color: #666666;
401}
402
403.bundle-price__heading {
404 font-size: 28px;
405 font-family: "VodafoneRegularBold";
406 margin: 0;
407}
408
409.bundle-price__savings {
410 color: #E60000;
411}
412
413.bundle-price__saving {
414 text-decoration: line-through;
415}
416
417.bundle-price__detail {
418 display: block;
419 margin-top: 8px;
420 color: #666666;
421}
422
423.bundle-data__value {
424 height:106px;
425 background-color: #CCCCCC;
426 border: 1px solid #CCCCCC;
427 border-right-color: transparent;
428 color: #333333;
429 display: inline-block;
430 letter-spacing: normal;
431 width: 50%;
432 vertical-align: bottom;
433 overflow: hidden;
434 text-overflow: ellipsis;
435 white-space: normal;
436 padding: 20px 0;
437 float:left;
438}
439
440@media only screen and (max-width: 639px) {
441 .bundle {
442 padding-bottom: 20px;
443 }
444 .bundle--horizontal {
445 padding: 0;
446 }
447 .bundle--horizontal .bundle__summary {
448 padding: 20px 10px 20px 26px;
449 }
450 .bundle--horizontal .bundle__summary--wide {
451 padding: 20px 0;
452 }
453 .bundle__sim {
454 width: 100%;
455 }
456 .bundle__select {
457 margin-top: 15px;
458 }
459 .bundle__select--first {
460 margin-top: 0;
461 }
462 .bundle--horizontal .bundle__data-info {
463 display: block;
464 }
465 .bundle--horizontal .bundle__inclusion {
466 padding-top: 5px;
467 }
468 .bundle__sm-wrapper {
469 padding: 0 15px;
470 }
471 .bundle__inclusion {
472 padding-left: 30px;
473 }
474}
475
476@media only screen and (max-width: 639px) {
477 .bundle__button {
478 display: block;
479 font-size: 18px;
480 padding: 10px;
481 }
482}
483
484@media only screen and (max-width: 970px) {
485 .bundle-data {
486 height: auto;
487 }
488 .bundle-data__value {
489 padding:15px 0;
490 }
491 .bundle-data--narrow {
492 height: auto;
493 }
494 .bundle-data__unit {
495 font-size: 24px;
496 }
497 .bundle-data__amount {
498 font-size: 34px;
499 }
500 .bundle-data--large .bundle-data__amount {
501 font-size: 40px;
502 }
503 .bundle-data--small .bundle-data__amount {
504 font-size: 24px;
505 }
506}
507
508@media only screen and (max-width: 639px) {
509 .bundle-data {
510 text-align: center;
511 height: auto;
512 }
513 .bundle-data--narrow {
514 height: auto;
515 }
516 .bundle-data__unit {
517 font-size: 20px;
518 }
519 .bundle-data__amount {
520 font-size: 24px;
521 }
522 .bundle-data--large .bundle-data__amount {
523 font-size: 28px;
524 }
525 .bundle-data--small .bundle-data__amount {
526 font-size: 20px;
527 }
528 .bundle-data--narrow .bundle-data__heading {
529 display: block;
530 }
531 .bundle-data {
532 border-left-width: 0;
533 border-right-width: 0;
534 display: block;
535 letter-spacing: -.215em;
536 height: auto;
537 width: 90%;
538
539 margin-top: 0;
540 margin-bottom: 0;
541 margin:auto;
542 text-align: center;
543 }
544.bundle-data__value {
545 height:115px;
546 }
547}
548
549
550@media only screen and (max-width: 970px) {
551 .bundle-price {
552 text-align: center;
553 margin-bottom: 10px;
554 }
555 .bundle-price--left {
556 text-align: left;
557 }
558 .bundle-price__cost {
559 font-size: 34px;
560 }
561 .bundle-price__cost--light {
562 font-size: 24px;
563 }
564 .bundle-price__heading {
565 font-size: 24px;
566 }
567}
568.maxWidth{
569 margin:auto;
570 width:33.33333%!important;
571 }
572@media only screen and (max-width: 639px) {
573 .bundle-price__cost {
574 font-size: 24px;
575 }
576 .bundle-price__cost--light {
577 font-size: 20px;
578 font-family: "VodafoneRegular";
579 }
580 .bundle-price__heading {
581 font-size: 20px;
582 }
583 .maxWidth{
584 margin:none;
585 width:100%;
586 }
587
588}
589
590</style>
591
592<section class="section section--gutter no-gutter--top">
593 <div class="spring no-gutter--top">
594 <#if description.getSiblings()?has_content>
595 <p class="gutter--all">
596 ${description.getData()}
597 </p>
598 </#if>
599
600 <#if alert.getData()?has_content>
601 <div class="alert alert--light alert--warning validation__warning" style="background-color:white;margin:35px auto 50px;max-width: 800px;">
602 <div class="caption">
603 <div class="caption__media caption__media--top alert__media">
604 <svg class="icon icon--small alert__icon">
605 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-block"></use>
606 </svg>
607 </div>
608 <div class="caption__text caption__text--top alert__text">
609 <p class="no-gutter--top">
610 ${alert.getData()}
611 </p>
612 </div>
613 </div>
614 </div>
615 </#if>
616
617 <!-------------- ${containerLoop.getSiblings()?size}---------->
618
619 <#assign gridBundles = "grid__item grid__item--1/1 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1"/>
620 <#if containerLoop.getSiblings()?size ==1 >
621 <#assign gridBundles = "grid__item grid__item--1/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/2" />
622 <#elseif containerLoop.getSiblings()?size == 2 >
623 <#assign gridBundles = "grid__item grid__item--2/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1" />
624 </#if>
625
626<div class="${gridBundles}">
627 <div class="carousel " data-js="_carousel" data-adjust-height="1" data-center="" data-breakpoints="mobile=1&tablet=2&desktop=<#if (containerLoop.getSiblings()?size <=3)>${containerLoop.getSiblings()?size}<#else>3</#if>">
628 <div class="carousel__wrapper">
629 <ul class="js-carousel-slider carousel__slider carousel__slider--sm-1 carousel__slider--md-2 carousel__slider--3">
630 <#if containerLoop.getSiblings()?has_content>
631 <#list containerLoop.getSiblings() as cur_containerLoop>
632 <li class="js-carousel-slide carousel__slide">
633 <div class="bundle ">
634 <#if getterUtil.getBoolean(cur_containerLoop.mostPopular.getData())>
635 <p class="tag tag--seance ">
636 <span class="visually-hidden">This bundle is highlighted</span> <span class="tag__label">
637 Most popular
638 </span>
639 </p>
640 </#if>
641 <div class="bundle__summary" style="padding-top:20px;">
642 <#if cur_containerLoop.Title.getData()?has_content>
643 <div style="padding-top:20px;">
644 <p>
645 ${cur_containerLoop.Title.getData()}
646 </p>
647 </div>
648 </#if>
649 <#if cur_containerLoop.LogoImage.getData()?? && cur_containerLoop.LogoImage.getData() != "">
650 <img alt="${cur_containerLoop.LogoImage.getAttribute("alt")}" src="${cur_containerLoop.LogoImage.getData()}" style="width: 165px;height: auto;"/>
651</#if>
652
653
654 <#if Select2v2a?? && Select2v2a?has_content>
655 <div class="bundle-data ${Select2v2a.getData()}">
656 <#else>
657 <div class="bundle-data bundle-data--guardsman-red">
658 </#if>
659 <div class="bundle-data__value bundle-data__value ">
660 <p style="margin:0 !important; ">
661 ${cur_containerLoop.textWithRedBg.getData()}
662 </p>
663 </div>
664
665 <div class="bundle-data__value bundle-data__value bundle-data__value--inverse">
666 <p style="margin:0 !important ;font-size:18px">
667 ${cur_containerLoop.textWithWhiteBg.getData()}
668 </p>
669 </div>
670 </div>
671 <#if cur_containerLoop.bundleDescription.getData()?has_content>
672 <div class="bundle-title">
673 <div class="bundle-title__row gutter--bottom">
674 ${cur_containerLoop.bundleDescription.getData()}
675 </div>
676 </div>
677 </#if>
678 </div>
679<#if cur_containerLoop.bundleDescription.getData()?has_content>
680 <div class="js-accordion show-more gutter--top" data-classes="active=show-more__heading--active" data-js="_accordion">
681 <div class="js-accordion-content show-more__content show-more__content--collapse">
682 <ul class="list list--reset bundle__inclusions">
683 <#if cur_containerLoop.listData?has_content>
684 <#list cur_containerLoop.listData.getSiblings() as cur_list>
685 <li class="bundle__inclusion flush--top" style="border:none !important">
686
687 <div class="caption">
688 <span class="caption__media caption__media--top">
689 <svg focusable="false" aria-hidden="true" class="icon icon--small bundle__inclusion-bullet">
690 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-tick"></use>
691 </svg>
692 </span>
693 <span class="caption__text">
694 ${cur_list.getData()}
695 </span>
696 </div>
697 </li>
698 </#list>
699 </#if>
700 </ul>
701 </div>
702
703 <#if cur_containerLoop.showMoreText.getData()?has_content>
704 <a aria-expanded="false" aria-selected="false" class="js-accordion-heading show-more__heading " href="#" role="tab" tabindex="0">
705 <span class="show-more__heading-text">
706 <span class="show-more__heading-more">
707 ${cur_containerLoop.showMoreText.getData()}
708 </span>
709 <span class="show-more__heading-less" style="border-top:none;padding-top: 0">
710 ${cur_containerLoop.showLessText.getData()}
711 </span>
712 </span>
713 <span class="js-accordion-chevron show-more__heading-chevron">
714 <svg aria-hidden="true" class="icon icon--small " focusable="false"> <use xlink:href="#icon-chevron-down" xmlns:xlink="http://www.w3.org/1999/xlink"></use> </svg>
715 </span>
716 </a>
717 </#if>
718 </div>
719 </#if>
720
721 <#if cur_containerLoop.buttonLabel.getData()?has_content>
722 <#if ChooseUrLinkType?has_content>
723 <div class="bundle__select bundle__select--first gutter--top">
724 <#if ChooseUrLinkType.getData()== '["normal Link"]'>
725 <#if cur_containerLoop.buttonLabel.getData()?has_content>
726 <a href="${cur_containerLoop.buttonUrl.getData()}" class="button button--primary">
727 ${cur_containerLoop.buttonLabel.getData()}
728 </a>
729 </#if>
730 <#elseif ChooseUrLinkType.getData()== '["login"]'>
731 <a href="javascript:miSubscribe();" class="button button--primary">
732 ${cur_containerLoop.buttonLabel.getData()}
733 </a>
734 <#elseif ChooseUrLinkType.getData()== '["ADSL"]'>
735 <a href="javascript:adslSubscribe('${cur_containerLoop.BundleId.getData()}', '${cur_containerLoop.AdslTypeTabId.getData()}');" class="button button--primary">
736 ${cur_containerLoop.buttonLabel.getData()}
737 </a>
738 </#if>
739
740 </div>
741 </#if>
742 </#if>
743 </div>
744 </li>
745 </#list>
746 </#if>
747 </ul>
748 </div>
749
750 <div class="js-carousel-controls carousel__controls">
751 <button class="js-carousel-control carousel__control carousel__control--left" type="button" data-direction="-1">
752 <span class="visually-hidden">Previous page</span>
753 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
754 <use xlink:href="#icon-chevron-left" ></use>
755 </svg>
756 </button>
757 <button class="js-carousel-control carousel__control carousel__control--right" type="button" data-direction="1">
758 <span class="visually-hidden">Next page</span>
759 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
760 <use xlink:href="#icon-chevron-right" ></use>
761 </svg>
762 </button>
763 </div>
764
765 <div class="js-carousel-pagination carousel__pagination carousel__pagination--visible">
766 <#list containerLoop.getSiblings() as cur_containerLoop>
767 <li class="carousel__page-item">
768 <button type="button" class="js-carousel-page carousel__page button button--reset" data-page="${cur_containerLoop?index}">
769 <span class="visually-hidden">
770 ${cur_containerLoop?index}
771 </span>
772 </button>
773 </li>
774 </#list>
775 </div>
776 </div>
777 </div>
778 </div>
779
780
781<#if addWebContent.getSiblings()?has_content>
782 <#list addWebContent.getSiblings() as cur_addWebContent>
783 <#if (cur_addWebContent.getData()?length>0)>
784 <#assign article =cur_addWebContent.getData()?eval />
785 <div class="gutter--bottom"></div>
786 <@liferay_ui["asset-display"]
787 className=article.className
788 classPK=getterUtil.getLong(article.classPK, 0)
789 template="full_content" />
790 </#if>
791 </#list>
792</#if>
793
794
795 <div class="visually-hidden">
796 <svg>
797 <symbol viewBox="0 0 121.45 86.55" id="icon-tick"><polyline points="117.45 4 38.91 82.55 4 47.64" stroke-linecap="round" stroke-linejoin="round"></polyline></symbol>
798 </svg>
799 <svg>
800 <symbol viewBox="0 0 160 160" id="icon-block"><g id="block-4bed162d-c643-4387-ae3b-c4470515ed90" data-name="Block_ic"><line x1="26.26" y1="133.74" x2="133.74" y2="26.26" stroke-linecap="round" stroke-linejoin="round"></line><circle cx="80" cy="80" r="76" stroke-linecap="round" stroke-linejoin="round"></circle></g></symbol>
801 </svg>
802 </div>
803</section>
804
805
806
807
808
809
810<script>
811function adslSubscribe(itemA, itemB){
812 try{
813 loadAngularLib(function(){
814 loadModalPage('/node/adslCheckAvailability.html',function(){});
815 localStorage.setItem('bundleId', itemA);
816 localStorage.setItem('turboOrUnlimited',itemB);
817 });
818
819 } catch(err){
820 loadModalPage('/node/adslCheckAvailability.html',function(){});
821 localStorage.setItem('bundleId', itemA);
822 localStorage.setItem('turboOrUnlimited',itemB);
823 }
824}
825function miSubscribe(){
826 try{
827 loadAngularLib(function(){
828 loginParams['targetPage']='mi-manage';
829 loadModalPage('/node/login®ister.htm',function(){});
830 });
831
832 } catch(err){
833 loginParams['targetPage']='mi-manage';
834 loadModalPage('/node/login®ister.htm',function(){});
835 }
836
837}
838</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> cur_containerLoop.LogoImage [in template "20116#20160#164010" at line 649, column 78] ---- 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: #if cur_containerLoop.LogoImage.getDa... [in template "20116#20160#164010" at line 649, column 73] ----
1<style>
2p{
3 margin:0 !important;
4}
5.bundle {
6 background-color: #FFFFFF;
7 box-shadow: 0 1px 3px 0 #AFAFAF;
8
9 padding:0px !important;
10 padding-bottom:20px !important;
11 position: relative;
12 text-align: center;
13 z-index: 0;
14}
15.bundle--dark {
16 color: #333333;
17 box-shadow: none;
18}
19
20.bundle--alt {
21 background-color: #EBEBEB;
22}
23
24.bundle--horizontal {
25 padding: 0;
26}
27.bundle--compact {
28 text-align: right;
29}
30
31.bundle__show-more {
32 position: relative;
33}
34
35.bundle__show-more:after {
36 content: "";
37 height: 1px;
38 width: 50%;
39 position: absolute;
40 background: #CCCCCC;
41 left: 0;
42 right: 0;
43 margin: 0 auto;
44}
45
46.bundle__strong {
47 color: #000000;
48}
49
50.bundle__compact-spring {
51 max-width: 540px;
52 margin: 0 auto;
53}
54
55.bundle__details {
56 background-color: #F4F4F4;
57 padding: 30px;
58}
59
60.bundle__see-details {
61 text-decoration: underline;
62}
63
64.bundle--horizontal .bundle__see-details {
65 margin-top: 0;
66}
67
68.bundle__inclusions {
69 margin-bottom: 20px;
70}
71
72.bundle--horizontal .bundle__inclusions {
73 margin-top: 10px;
74 margin-bottom: 0;
75}
76
77/*.bundle__inclusion {
78 clear: both;
79 padding-top: 11px;
80 position: relative;
81 text-align: left;
82 padding-left: 40px;
83}*/
84
85.bundle__inclusion--no-bullet {
86 text-align: center;
87}
88
89/*.bundle__inclusion-bullet {
90 color: #428600;
91 float: left;
92 margin-right: 10px;
93 margin-bottom: 1px;
94 position: absolute;
95 margin-top: 2px;
96 <#if locale.getLanguage() == "ar" >
97 transform: scaleX(-1);
98 right: 0;
99 </#if>
100 <#if locale.getLanguage() == "en" >
101 left: 0;
102 </#if>
103
104}*/
105
106.bundle__inclusion-bullet--hidden {
107 visibility: hidden;
108}
109
110.bundle__inclusion-logo {
111 max-height: 25px;
112}
113
114.bundle__inclusion-logo--buffer {
115 margin-top: 10px;
116 margin-bottom: 10px;
117}
118
119.bundle__select {
120 padding: 0 50px;
121 margin-top: 20px;
122}
123
124.bundle__select--first {
125 margin-top: 0;
126}
127
128.bundle__selected {
129 background-color: #428600;
130 color: #FFFFFF;
131}
132
133.bundle--horizontal .bundle__data-info {
134 display: inline;
135}
136
137.bundle__button {
138 -webkit-appearance: none;
139 -moz-appearance: none;
140 appearance: none;
141 border: 1px solid transparent;
142 color: #FFFFFF;
143 cursor: pointer;
144 display: inline-block;
145 font-size: 20px;
146 padding: 11px 37px;
147 text-align: center;
148}
149
150.bundle__button:hover {
151 cursor: pointer;
152}
153
154.bundle__button--default {
155 background-color: #666666;
156}
157
158.bundle__button--default:hover {
159 background-color: #333333;
160}
161
162.bundle__label {
163 line-height: 28px;
164}
165
166
167.bundle__label--unchecked {
168 display: inline-block;
169}
170
171.bundle__label--checked {
172 display: none;
173}
174
175.bundle__label-wrapper {
176 padding: 0 20px;
177}
178
179.bundle__label-icon {
180 margin-right: 10px;
181 vertical-align: top;
182}
183
184.bundle__input {
185 display: none;
186}
187
188.bundle__input:checked + .bundle__button {
189 background-color: #428600;
190}
191
192.bundle__input:checked + .bundle__button .bundle__label--unchecked {
193 display: none;
194}
195
196.bundle__input:checked + .bundle__button .bundle__label--checked {
197 display: inline-block;
198}
199
200.bundle__emphasise {
201 color: #E60000;
202}
203
204.bundle__offer-text {
205 color: #666666;
206 display: block;
207}
208
209.bundle-data {
210 border-left-width: 0;
211 border-right-width: 0;
212 display: block;
213 letter-spacing: -.215em;
214 height: 110px;
215 width: 100%;
216 margin-top: 0;
217 padding-top:20px;
218 margin-bottom: 0;
219 text-align: center;
220 overflow:hidden;
221}
222
223.bundle-data:after {
224 content: "";
225 display: inline-block;
226 vertical-align: bottom;
227 height: 100%;
228}
229
230.bundle-data--narrow {
231 border-left-width: 1px;
232 border-right-width: 1px;
233 height: auto;
234}
235
236
237
238.bundle-data__value--inverse {
239 background-color: transparent;
240}
241
242.bundle-data__value--full {
243 width: 100%;
244}
245
246.bundle-data--large .bundle-data__value {
247 height: 100%;
248}
249
250.bundle-data--red .bundle-data__value {
251 background-color: #E60000;
252 border-color: #E60000;
253 border-right-color: transparent;
254 color: #FFFFFF;
255}
256
257.bundle-data--red .bundle-data__value--inverse {
258 background-color: #FFFFFF;
259 color: #E60000;
260}
261
262.bundle-data--seance .bundle-data__value {
263 background-color: #9C2AA0;
264 border-color: #9C2AA0;
265 border-right-color: transparent;
266 color: #FFFFFF;
267}
268
269.bundle-data--seance .bundle-data__value--inverse {
270 background-color: #FFFFFF;
271 color: #9C2AA0;
272}
273
274.bundle-data--guardsman-red .bundle-data__value {
275 background-color: #BD0000;
276 border-color: #BD0000;
277 border-right-color: transparent;
278 color: #FFFFFF;
279}
280
281.bundle-data--guardsman-red .bundle-data__value--inverse {
282 background-color: #FFFFFF;
283 color: #BD0000;
284}
285
286.bundle-data--finn .bundle-data__value {
287 background-color: #5E2750;
288 border-color: #5E2750;
289 border-right-color: transparent;
290 color: #FFFFFF;
291}
292
293.bundle-data--finn .bundle-data__value--inverse {
294 background-color: #FFFFFF;
295 color: #5E2750;
296}
297
298.bundle-data--blue-lagoon .bundle-data__value {
299 background-color: #007C92;
300 border-color: #007C92;
301 border-right-color: transparent;
302 color: #FFFFFF;
303}
304
305.bundle-data--blue-lagoon .bundle-data__value--inverse {
306 background-color: #FFFFFF;
307 color: #007C92;
308}
309
310.bundle-data--cinderella .bundle-data__value {
311 background-color: #FDD4D4;
312 border-color: #FDD4D4;
313 border-right-color: transparent;
314 color: #BD0000;
315}
316
317.bundle-data--cinderella .bundle-data__value--inverse {
318 background-color: #FFFFFF;
319}
320
321.bundle-data--cavern-pink .bundle-data__value {
322 background-color: #E5BFBF;
323 border-color: #E5BFBF;
324 border-right-color: transparent;
325 color: #990000;
326}
327
328.bundle-data--cavern-pink .bundle-data__value--inverse {
329 background-color: #FFFFFF;
330}
331
332.bundle-data--narrow .bundle-data__value {
333 padding-top: 10px;
334 padding-bottom: 10px;
335}
336
337.bundle-data--narrow .bundle-data__value--inverse {
338 border-right-color: currentColor;
339}
340
341.bundle-data--narrow .bundle-data__heading {
342 display: inline-block;
343 margin-bottom: 0;
344}
345
346.bundle-data__heading {
347 display: block;
348 margin: 3px 0 1px;
349 font-family: VodafoneLight;
350 letter-spacing: -.215em;
351}
352
353.bundle-data__heading--large-content {
354 font-size: 24px;
355}
356
357.bundle-data__unit {
358 font-size: 28px;
359 line-height: 1em;
360 letter-spacing: normal;
361}
362
363.bundle-data__amount {
364 font-size: 40px;
365 line-height: 1em;
366 letter-spacing: normal;
367}
368
369.bundle-data--large .bundle-data__amount {
370 font-size: 56px;
371}
372
373.bundle-data--small .bundle-data__amount {
374 font-size: 28px;
375}
376
377.bundle-price {
378 margin: 0;
379}
380
381.bundle-price--left, .bundle-price--narrow {
382 text-align: left;
383}
384
385.bundle-price__cost {
386 font-size: 40px;
387 font-family: "VodafoneRegular";
388}
389
390.bundle-price__cost--light {
391 font-family: "VodafoneLight";
392 font-size: 30px;
393}
394
395.bundle-price__regular-cost {
396 font-family: "VodafoneRegular";
397}
398
399.bundle-price__regular-price {
400 color: #666666;
401}
402
403.bundle-price__heading {
404 font-size: 28px;
405 font-family: "VodafoneRegularBold";
406 margin: 0;
407}
408
409.bundle-price__savings {
410 color: #E60000;
411}
412
413.bundle-price__saving {
414 text-decoration: line-through;
415}
416
417.bundle-price__detail {
418 display: block;
419 margin-top: 8px;
420 color: #666666;
421}
422
423.bundle-data__value {
424 height:106px;
425 background-color: #CCCCCC;
426 border: 1px solid #CCCCCC;
427 border-right-color: transparent;
428 color: #333333;
429 display: inline-block;
430 letter-spacing: normal;
431 width: 50%;
432 vertical-align: bottom;
433 overflow: hidden;
434 text-overflow: ellipsis;
435 white-space: normal;
436 padding: 20px 0;
437 float:left;
438}
439
440@media only screen and (max-width: 639px) {
441 .bundle {
442 padding-bottom: 20px;
443 }
444 .bundle--horizontal {
445 padding: 0;
446 }
447 .bundle--horizontal .bundle__summary {
448 padding: 20px 10px 20px 26px;
449 }
450 .bundle--horizontal .bundle__summary--wide {
451 padding: 20px 0;
452 }
453 .bundle__sim {
454 width: 100%;
455 }
456 .bundle__select {
457 margin-top: 15px;
458 }
459 .bundle__select--first {
460 margin-top: 0;
461 }
462 .bundle--horizontal .bundle__data-info {
463 display: block;
464 }
465 .bundle--horizontal .bundle__inclusion {
466 padding-top: 5px;
467 }
468 .bundle__sm-wrapper {
469 padding: 0 15px;
470 }
471 .bundle__inclusion {
472 padding-left: 30px;
473 }
474}
475
476@media only screen and (max-width: 639px) {
477 .bundle__button {
478 display: block;
479 font-size: 18px;
480 padding: 10px;
481 }
482}
483
484@media only screen and (max-width: 970px) {
485 .bundle-data {
486 height: auto;
487 }
488 .bundle-data__value {
489 padding:15px 0;
490 }
491 .bundle-data--narrow {
492 height: auto;
493 }
494 .bundle-data__unit {
495 font-size: 24px;
496 }
497 .bundle-data__amount {
498 font-size: 34px;
499 }
500 .bundle-data--large .bundle-data__amount {
501 font-size: 40px;
502 }
503 .bundle-data--small .bundle-data__amount {
504 font-size: 24px;
505 }
506}
507
508@media only screen and (max-width: 639px) {
509 .bundle-data {
510 text-align: center;
511 height: auto;
512 }
513 .bundle-data--narrow {
514 height: auto;
515 }
516 .bundle-data__unit {
517 font-size: 20px;
518 }
519 .bundle-data__amount {
520 font-size: 24px;
521 }
522 .bundle-data--large .bundle-data__amount {
523 font-size: 28px;
524 }
525 .bundle-data--small .bundle-data__amount {
526 font-size: 20px;
527 }
528 .bundle-data--narrow .bundle-data__heading {
529 display: block;
530 }
531 .bundle-data {
532 border-left-width: 0;
533 border-right-width: 0;
534 display: block;
535 letter-spacing: -.215em;
536 height: auto;
537 width: 90%;
538
539 margin-top: 0;
540 margin-bottom: 0;
541 margin:auto;
542 text-align: center;
543 }
544.bundle-data__value {
545 height:115px;
546 }
547}
548
549
550@media only screen and (max-width: 970px) {
551 .bundle-price {
552 text-align: center;
553 margin-bottom: 10px;
554 }
555 .bundle-price--left {
556 text-align: left;
557 }
558 .bundle-price__cost {
559 font-size: 34px;
560 }
561 .bundle-price__cost--light {
562 font-size: 24px;
563 }
564 .bundle-price__heading {
565 font-size: 24px;
566 }
567}
568.maxWidth{
569 margin:auto;
570 width:33.33333%!important;
571 }
572@media only screen and (max-width: 639px) {
573 .bundle-price__cost {
574 font-size: 24px;
575 }
576 .bundle-price__cost--light {
577 font-size: 20px;
578 font-family: "VodafoneRegular";
579 }
580 .bundle-price__heading {
581 font-size: 20px;
582 }
583 .maxWidth{
584 margin:none;
585 width:100%;
586 }
587
588}
589
590</style>
591
592<section class="section section--gutter no-gutter--top">
593 <div class="spring no-gutter--top">
594 <#if description.getSiblings()?has_content>
595 <p class="gutter--all">
596 ${description.getData()}
597 </p>
598 </#if>
599
600 <#if alert.getData()?has_content>
601 <div class="alert alert--light alert--warning validation__warning" style="background-color:white;margin:35px auto 50px;max-width: 800px;">
602 <div class="caption">
603 <div class="caption__media caption__media--top alert__media">
604 <svg class="icon icon--small alert__icon">
605 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-block"></use>
606 </svg>
607 </div>
608 <div class="caption__text caption__text--top alert__text">
609 <p class="no-gutter--top">
610 ${alert.getData()}
611 </p>
612 </div>
613 </div>
614 </div>
615 </#if>
616
617 <!-------------- ${containerLoop.getSiblings()?size}---------->
618
619 <#assign gridBundles = "grid__item grid__item--1/1 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1"/>
620 <#if containerLoop.getSiblings()?size ==1 >
621 <#assign gridBundles = "grid__item grid__item--1/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/2" />
622 <#elseif containerLoop.getSiblings()?size == 2 >
623 <#assign gridBundles = "grid__item grid__item--2/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1" />
624 </#if>
625
626<div class="${gridBundles}">
627 <div class="carousel " data-js="_carousel" data-adjust-height="1" data-center="" data-breakpoints="mobile=1&tablet=2&desktop=<#if (containerLoop.getSiblings()?size <=3)>${containerLoop.getSiblings()?size}<#else>3</#if>">
628 <div class="carousel__wrapper">
629 <ul class="js-carousel-slider carousel__slider carousel__slider--sm-1 carousel__slider--md-2 carousel__slider--3">
630 <#if containerLoop.getSiblings()?has_content>
631 <#list containerLoop.getSiblings() as cur_containerLoop>
632 <li class="js-carousel-slide carousel__slide">
633 <div class="bundle ">
634 <#if getterUtil.getBoolean(cur_containerLoop.mostPopular.getData())>
635 <p class="tag tag--seance ">
636 <span class="visually-hidden">This bundle is highlighted</span> <span class="tag__label">
637 Most popular
638 </span>
639 </p>
640 </#if>
641 <div class="bundle__summary" style="padding-top:20px;">
642 <#if cur_containerLoop.Title.getData()?has_content>
643 <div style="padding-top:20px;">
644 <p>
645 ${cur_containerLoop.Title.getData()}
646 </p>
647 </div>
648 </#if>
649 <#if cur_containerLoop.LogoImage.getData()?? && cur_containerLoop.LogoImage.getData() != "">
650 <img alt="${cur_containerLoop.LogoImage.getAttribute("alt")}" src="${cur_containerLoop.LogoImage.getData()}" style="width: 165px;height: auto;"/>
651</#if>
652
653
654 <#if Select2v2a?? && Select2v2a?has_content>
655 <div class="bundle-data ${Select2v2a.getData()}">
656 <#else>
657 <div class="bundle-data bundle-data--guardsman-red">
658 </#if>
659 <div class="bundle-data__value bundle-data__value ">
660 <p style="margin:0 !important; ">
661 ${cur_containerLoop.textWithRedBg.getData()}
662 </p>
663 </div>
664
665 <div class="bundle-data__value bundle-data__value bundle-data__value--inverse">
666 <p style="margin:0 !important ;font-size:18px">
667 ${cur_containerLoop.textWithWhiteBg.getData()}
668 </p>
669 </div>
670 </div>
671 <#if cur_containerLoop.bundleDescription.getData()?has_content>
672 <div class="bundle-title">
673 <div class="bundle-title__row gutter--bottom">
674 ${cur_containerLoop.bundleDescription.getData()}
675 </div>
676 </div>
677 </#if>
678 </div>
679<#if cur_containerLoop.bundleDescription.getData()?has_content>
680 <div class="js-accordion show-more gutter--top" data-classes="active=show-more__heading--active" data-js="_accordion">
681 <div class="js-accordion-content show-more__content show-more__content--collapse">
682 <ul class="list list--reset bundle__inclusions">
683 <#if cur_containerLoop.listData?has_content>
684 <#list cur_containerLoop.listData.getSiblings() as cur_list>
685 <li class="bundle__inclusion flush--top" style="border:none !important">
686
687 <div class="caption">
688 <span class="caption__media caption__media--top">
689 <svg focusable="false" aria-hidden="true" class="icon icon--small bundle__inclusion-bullet">
690 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-tick"></use>
691 </svg>
692 </span>
693 <span class="caption__text">
694 ${cur_list.getData()}
695 </span>
696 </div>
697 </li>
698 </#list>
699 </#if>
700 </ul>
701 </div>
702
703 <#if cur_containerLoop.showMoreText.getData()?has_content>
704 <a aria-expanded="false" aria-selected="false" class="js-accordion-heading show-more__heading " href="#" role="tab" tabindex="0">
705 <span class="show-more__heading-text">
706 <span class="show-more__heading-more">
707 ${cur_containerLoop.showMoreText.getData()}
708 </span>
709 <span class="show-more__heading-less" style="border-top:none;padding-top: 0">
710 ${cur_containerLoop.showLessText.getData()}
711 </span>
712 </span>
713 <span class="js-accordion-chevron show-more__heading-chevron">
714 <svg aria-hidden="true" class="icon icon--small " focusable="false"> <use xlink:href="#icon-chevron-down" xmlns:xlink="http://www.w3.org/1999/xlink"></use> </svg>
715 </span>
716 </a>
717 </#if>
718 </div>
719 </#if>
720
721 <#if cur_containerLoop.buttonLabel.getData()?has_content>
722 <#if ChooseUrLinkType?has_content>
723 <div class="bundle__select bundle__select--first gutter--top">
724 <#if ChooseUrLinkType.getData()== '["normal Link"]'>
725 <#if cur_containerLoop.buttonLabel.getData()?has_content>
726 <a href="${cur_containerLoop.buttonUrl.getData()}" class="button button--primary">
727 ${cur_containerLoop.buttonLabel.getData()}
728 </a>
729 </#if>
730 <#elseif ChooseUrLinkType.getData()== '["login"]'>
731 <a href="javascript:miSubscribe();" class="button button--primary">
732 ${cur_containerLoop.buttonLabel.getData()}
733 </a>
734 <#elseif ChooseUrLinkType.getData()== '["ADSL"]'>
735 <a href="javascript:adslSubscribe('${cur_containerLoop.BundleId.getData()}', '${cur_containerLoop.AdslTypeTabId.getData()}');" class="button button--primary">
736 ${cur_containerLoop.buttonLabel.getData()}
737 </a>
738 </#if>
739
740 </div>
741 </#if>
742 </#if>
743 </div>
744 </li>
745 </#list>
746 </#if>
747 </ul>
748 </div>
749
750 <div class="js-carousel-controls carousel__controls">
751 <button class="js-carousel-control carousel__control carousel__control--left" type="button" data-direction="-1">
752 <span class="visually-hidden">Previous page</span>
753 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
754 <use xlink:href="#icon-chevron-left" ></use>
755 </svg>
756 </button>
757 <button class="js-carousel-control carousel__control carousel__control--right" type="button" data-direction="1">
758 <span class="visually-hidden">Next page</span>
759 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
760 <use xlink:href="#icon-chevron-right" ></use>
761 </svg>
762 </button>
763 </div>
764
765 <div class="js-carousel-pagination carousel__pagination carousel__pagination--visible">
766 <#list containerLoop.getSiblings() as cur_containerLoop>
767 <li class="carousel__page-item">
768 <button type="button" class="js-carousel-page carousel__page button button--reset" data-page="${cur_containerLoop?index}">
769 <span class="visually-hidden">
770 ${cur_containerLoop?index}
771 </span>
772 </button>
773 </li>
774 </#list>
775 </div>
776 </div>
777 </div>
778 </div>
779
780
781<#if addWebContent.getSiblings()?has_content>
782 <#list addWebContent.getSiblings() as cur_addWebContent>
783 <#if (cur_addWebContent.getData()?length>0)>
784 <#assign article =cur_addWebContent.getData()?eval />
785 <div class="gutter--bottom"></div>
786 <@liferay_ui["asset-display"]
787 className=article.className
788 classPK=getterUtil.getLong(article.classPK, 0)
789 template="full_content" />
790 </#if>
791 </#list>
792</#if>
793
794
795 <div class="visually-hidden">
796 <svg>
797 <symbol viewBox="0 0 121.45 86.55" id="icon-tick"><polyline points="117.45 4 38.91 82.55 4 47.64" stroke-linecap="round" stroke-linejoin="round"></polyline></symbol>
798 </svg>
799 <svg>
800 <symbol viewBox="0 0 160 160" id="icon-block"><g id="block-4bed162d-c643-4387-ae3b-c4470515ed90" data-name="Block_ic"><line x1="26.26" y1="133.74" x2="133.74" y2="26.26" stroke-linecap="round" stroke-linejoin="round"></line><circle cx="80" cy="80" r="76" stroke-linecap="round" stroke-linejoin="round"></circle></g></symbol>
801 </svg>
802 </div>
803</section>
804
805
806
807
808
809
810<script>
811function adslSubscribe(itemA, itemB){
812 try{
813 loadAngularLib(function(){
814 loadModalPage('/node/adslCheckAvailability.html',function(){});
815 localStorage.setItem('bundleId', itemA);
816 localStorage.setItem('turboOrUnlimited',itemB);
817 });
818
819 } catch(err){
820 loadModalPage('/node/adslCheckAvailability.html',function(){});
821 localStorage.setItem('bundleId', itemA);
822 localStorage.setItem('turboOrUnlimited',itemB);
823 }
824}
825function miSubscribe(){
826 try{
827 loadAngularLib(function(){
828 loginParams['targetPage']='mi-manage';
829 loadModalPage('/node/login®ister.htm',function(){});
830 });
831
832 } catch(err){
833 loginParams['targetPage']='mi-manage';
834 loadModalPage('/node/login®ister.htm',function(){});
835 }
836
837}
838</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> cur_containerLoop.LogoImage [in template "20116#20160#164010" at line 649, column 78] ---- 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: #if cur_containerLoop.LogoImage.getDa... [in template "20116#20160#164010" at line 649, column 73] ----
1<style>
2p{
3 margin:0 !important;
4}
5.bundle {
6 background-color: #FFFFFF;
7 box-shadow: 0 1px 3px 0 #AFAFAF;
8
9 padding:0px !important;
10 padding-bottom:20px !important;
11 position: relative;
12 text-align: center;
13 z-index: 0;
14}
15.bundle--dark {
16 color: #333333;
17 box-shadow: none;
18}
19
20.bundle--alt {
21 background-color: #EBEBEB;
22}
23
24.bundle--horizontal {
25 padding: 0;
26}
27.bundle--compact {
28 text-align: right;
29}
30
31.bundle__show-more {
32 position: relative;
33}
34
35.bundle__show-more:after {
36 content: "";
37 height: 1px;
38 width: 50%;
39 position: absolute;
40 background: #CCCCCC;
41 left: 0;
42 right: 0;
43 margin: 0 auto;
44}
45
46.bundle__strong {
47 color: #000000;
48}
49
50.bundle__compact-spring {
51 max-width: 540px;
52 margin: 0 auto;
53}
54
55.bundle__details {
56 background-color: #F4F4F4;
57 padding: 30px;
58}
59
60.bundle__see-details {
61 text-decoration: underline;
62}
63
64.bundle--horizontal .bundle__see-details {
65 margin-top: 0;
66}
67
68.bundle__inclusions {
69 margin-bottom: 20px;
70}
71
72.bundle--horizontal .bundle__inclusions {
73 margin-top: 10px;
74 margin-bottom: 0;
75}
76
77/*.bundle__inclusion {
78 clear: both;
79 padding-top: 11px;
80 position: relative;
81 text-align: left;
82 padding-left: 40px;
83}*/
84
85.bundle__inclusion--no-bullet {
86 text-align: center;
87}
88
89/*.bundle__inclusion-bullet {
90 color: #428600;
91 float: left;
92 margin-right: 10px;
93 margin-bottom: 1px;
94 position: absolute;
95 margin-top: 2px;
96 <#if locale.getLanguage() == "ar" >
97 transform: scaleX(-1);
98 right: 0;
99 </#if>
100 <#if locale.getLanguage() == "en" >
101 left: 0;
102 </#if>
103
104}*/
105
106.bundle__inclusion-bullet--hidden {
107 visibility: hidden;
108}
109
110.bundle__inclusion-logo {
111 max-height: 25px;
112}
113
114.bundle__inclusion-logo--buffer {
115 margin-top: 10px;
116 margin-bottom: 10px;
117}
118
119.bundle__select {
120 padding: 0 50px;
121 margin-top: 20px;
122}
123
124.bundle__select--first {
125 margin-top: 0;
126}
127
128.bundle__selected {
129 background-color: #428600;
130 color: #FFFFFF;
131}
132
133.bundle--horizontal .bundle__data-info {
134 display: inline;
135}
136
137.bundle__button {
138 -webkit-appearance: none;
139 -moz-appearance: none;
140 appearance: none;
141 border: 1px solid transparent;
142 color: #FFFFFF;
143 cursor: pointer;
144 display: inline-block;
145 font-size: 20px;
146 padding: 11px 37px;
147 text-align: center;
148}
149
150.bundle__button:hover {
151 cursor: pointer;
152}
153
154.bundle__button--default {
155 background-color: #666666;
156}
157
158.bundle__button--default:hover {
159 background-color: #333333;
160}
161
162.bundle__label {
163 line-height: 28px;
164}
165
166
167.bundle__label--unchecked {
168 display: inline-block;
169}
170
171.bundle__label--checked {
172 display: none;
173}
174
175.bundle__label-wrapper {
176 padding: 0 20px;
177}
178
179.bundle__label-icon {
180 margin-right: 10px;
181 vertical-align: top;
182}
183
184.bundle__input {
185 display: none;
186}
187
188.bundle__input:checked + .bundle__button {
189 background-color: #428600;
190}
191
192.bundle__input:checked + .bundle__button .bundle__label--unchecked {
193 display: none;
194}
195
196.bundle__input:checked + .bundle__button .bundle__label--checked {
197 display: inline-block;
198}
199
200.bundle__emphasise {
201 color: #E60000;
202}
203
204.bundle__offer-text {
205 color: #666666;
206 display: block;
207}
208
209.bundle-data {
210 border-left-width: 0;
211 border-right-width: 0;
212 display: block;
213 letter-spacing: -.215em;
214 height: 110px;
215 width: 100%;
216 margin-top: 0;
217 padding-top:20px;
218 margin-bottom: 0;
219 text-align: center;
220 overflow:hidden;
221}
222
223.bundle-data:after {
224 content: "";
225 display: inline-block;
226 vertical-align: bottom;
227 height: 100%;
228}
229
230.bundle-data--narrow {
231 border-left-width: 1px;
232 border-right-width: 1px;
233 height: auto;
234}
235
236
237
238.bundle-data__value--inverse {
239 background-color: transparent;
240}
241
242.bundle-data__value--full {
243 width: 100%;
244}
245
246.bundle-data--large .bundle-data__value {
247 height: 100%;
248}
249
250.bundle-data--red .bundle-data__value {
251 background-color: #E60000;
252 border-color: #E60000;
253 border-right-color: transparent;
254 color: #FFFFFF;
255}
256
257.bundle-data--red .bundle-data__value--inverse {
258 background-color: #FFFFFF;
259 color: #E60000;
260}
261
262.bundle-data--seance .bundle-data__value {
263 background-color: #9C2AA0;
264 border-color: #9C2AA0;
265 border-right-color: transparent;
266 color: #FFFFFF;
267}
268
269.bundle-data--seance .bundle-data__value--inverse {
270 background-color: #FFFFFF;
271 color: #9C2AA0;
272}
273
274.bundle-data--guardsman-red .bundle-data__value {
275 background-color: #BD0000;
276 border-color: #BD0000;
277 border-right-color: transparent;
278 color: #FFFFFF;
279}
280
281.bundle-data--guardsman-red .bundle-data__value--inverse {
282 background-color: #FFFFFF;
283 color: #BD0000;
284}
285
286.bundle-data--finn .bundle-data__value {
287 background-color: #5E2750;
288 border-color: #5E2750;
289 border-right-color: transparent;
290 color: #FFFFFF;
291}
292
293.bundle-data--finn .bundle-data__value--inverse {
294 background-color: #FFFFFF;
295 color: #5E2750;
296}
297
298.bundle-data--blue-lagoon .bundle-data__value {
299 background-color: #007C92;
300 border-color: #007C92;
301 border-right-color: transparent;
302 color: #FFFFFF;
303}
304
305.bundle-data--blue-lagoon .bundle-data__value--inverse {
306 background-color: #FFFFFF;
307 color: #007C92;
308}
309
310.bundle-data--cinderella .bundle-data__value {
311 background-color: #FDD4D4;
312 border-color: #FDD4D4;
313 border-right-color: transparent;
314 color: #BD0000;
315}
316
317.bundle-data--cinderella .bundle-data__value--inverse {
318 background-color: #FFFFFF;
319}
320
321.bundle-data--cavern-pink .bundle-data__value {
322 background-color: #E5BFBF;
323 border-color: #E5BFBF;
324 border-right-color: transparent;
325 color: #990000;
326}
327
328.bundle-data--cavern-pink .bundle-data__value--inverse {
329 background-color: #FFFFFF;
330}
331
332.bundle-data--narrow .bundle-data__value {
333 padding-top: 10px;
334 padding-bottom: 10px;
335}
336
337.bundle-data--narrow .bundle-data__value--inverse {
338 border-right-color: currentColor;
339}
340
341.bundle-data--narrow .bundle-data__heading {
342 display: inline-block;
343 margin-bottom: 0;
344}
345
346.bundle-data__heading {
347 display: block;
348 margin: 3px 0 1px;
349 font-family: VodafoneLight;
350 letter-spacing: -.215em;
351}
352
353.bundle-data__heading--large-content {
354 font-size: 24px;
355}
356
357.bundle-data__unit {
358 font-size: 28px;
359 line-height: 1em;
360 letter-spacing: normal;
361}
362
363.bundle-data__amount {
364 font-size: 40px;
365 line-height: 1em;
366 letter-spacing: normal;
367}
368
369.bundle-data--large .bundle-data__amount {
370 font-size: 56px;
371}
372
373.bundle-data--small .bundle-data__amount {
374 font-size: 28px;
375}
376
377.bundle-price {
378 margin: 0;
379}
380
381.bundle-price--left, .bundle-price--narrow {
382 text-align: left;
383}
384
385.bundle-price__cost {
386 font-size: 40px;
387 font-family: "VodafoneRegular";
388}
389
390.bundle-price__cost--light {
391 font-family: "VodafoneLight";
392 font-size: 30px;
393}
394
395.bundle-price__regular-cost {
396 font-family: "VodafoneRegular";
397}
398
399.bundle-price__regular-price {
400 color: #666666;
401}
402
403.bundle-price__heading {
404 font-size: 28px;
405 font-family: "VodafoneRegularBold";
406 margin: 0;
407}
408
409.bundle-price__savings {
410 color: #E60000;
411}
412
413.bundle-price__saving {
414 text-decoration: line-through;
415}
416
417.bundle-price__detail {
418 display: block;
419 margin-top: 8px;
420 color: #666666;
421}
422
423.bundle-data__value {
424 height:106px;
425 background-color: #CCCCCC;
426 border: 1px solid #CCCCCC;
427 border-right-color: transparent;
428 color: #333333;
429 display: inline-block;
430 letter-spacing: normal;
431 width: 50%;
432 vertical-align: bottom;
433 overflow: hidden;
434 text-overflow: ellipsis;
435 white-space: normal;
436 padding: 20px 0;
437 float:left;
438}
439
440@media only screen and (max-width: 639px) {
441 .bundle {
442 padding-bottom: 20px;
443 }
444 .bundle--horizontal {
445 padding: 0;
446 }
447 .bundle--horizontal .bundle__summary {
448 padding: 20px 10px 20px 26px;
449 }
450 .bundle--horizontal .bundle__summary--wide {
451 padding: 20px 0;
452 }
453 .bundle__sim {
454 width: 100%;
455 }
456 .bundle__select {
457 margin-top: 15px;
458 }
459 .bundle__select--first {
460 margin-top: 0;
461 }
462 .bundle--horizontal .bundle__data-info {
463 display: block;
464 }
465 .bundle--horizontal .bundle__inclusion {
466 padding-top: 5px;
467 }
468 .bundle__sm-wrapper {
469 padding: 0 15px;
470 }
471 .bundle__inclusion {
472 padding-left: 30px;
473 }
474}
475
476@media only screen and (max-width: 639px) {
477 .bundle__button {
478 display: block;
479 font-size: 18px;
480 padding: 10px;
481 }
482}
483
484@media only screen and (max-width: 970px) {
485 .bundle-data {
486 height: auto;
487 }
488 .bundle-data__value {
489 padding:15px 0;
490 }
491 .bundle-data--narrow {
492 height: auto;
493 }
494 .bundle-data__unit {
495 font-size: 24px;
496 }
497 .bundle-data__amount {
498 font-size: 34px;
499 }
500 .bundle-data--large .bundle-data__amount {
501 font-size: 40px;
502 }
503 .bundle-data--small .bundle-data__amount {
504 font-size: 24px;
505 }
506}
507
508@media only screen and (max-width: 639px) {
509 .bundle-data {
510 text-align: center;
511 height: auto;
512 }
513 .bundle-data--narrow {
514 height: auto;
515 }
516 .bundle-data__unit {
517 font-size: 20px;
518 }
519 .bundle-data__amount {
520 font-size: 24px;
521 }
522 .bundle-data--large .bundle-data__amount {
523 font-size: 28px;
524 }
525 .bundle-data--small .bundle-data__amount {
526 font-size: 20px;
527 }
528 .bundle-data--narrow .bundle-data__heading {
529 display: block;
530 }
531 .bundle-data {
532 border-left-width: 0;
533 border-right-width: 0;
534 display: block;
535 letter-spacing: -.215em;
536 height: auto;
537 width: 90%;
538
539 margin-top: 0;
540 margin-bottom: 0;
541 margin:auto;
542 text-align: center;
543 }
544.bundle-data__value {
545 height:115px;
546 }
547}
548
549
550@media only screen and (max-width: 970px) {
551 .bundle-price {
552 text-align: center;
553 margin-bottom: 10px;
554 }
555 .bundle-price--left {
556 text-align: left;
557 }
558 .bundle-price__cost {
559 font-size: 34px;
560 }
561 .bundle-price__cost--light {
562 font-size: 24px;
563 }
564 .bundle-price__heading {
565 font-size: 24px;
566 }
567}
568.maxWidth{
569 margin:auto;
570 width:33.33333%!important;
571 }
572@media only screen and (max-width: 639px) {
573 .bundle-price__cost {
574 font-size: 24px;
575 }
576 .bundle-price__cost--light {
577 font-size: 20px;
578 font-family: "VodafoneRegular";
579 }
580 .bundle-price__heading {
581 font-size: 20px;
582 }
583 .maxWidth{
584 margin:none;
585 width:100%;
586 }
587
588}
589
590</style>
591
592<section class="section section--gutter no-gutter--top">
593 <div class="spring no-gutter--top">
594 <#if description.getSiblings()?has_content>
595 <p class="gutter--all">
596 ${description.getData()}
597 </p>
598 </#if>
599
600 <#if alert.getData()?has_content>
601 <div class="alert alert--light alert--warning validation__warning" style="background-color:white;margin:35px auto 50px;max-width: 800px;">
602 <div class="caption">
603 <div class="caption__media caption__media--top alert__media">
604 <svg class="icon icon--small alert__icon">
605 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-block"></use>
606 </svg>
607 </div>
608 <div class="caption__text caption__text--top alert__text">
609 <p class="no-gutter--top">
610 ${alert.getData()}
611 </p>
612 </div>
613 </div>
614 </div>
615 </#if>
616
617 <!-------------- ${containerLoop.getSiblings()?size}---------->
618
619 <#assign gridBundles = "grid__item grid__item--1/1 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1"/>
620 <#if containerLoop.getSiblings()?size ==1 >
621 <#assign gridBundles = "grid__item grid__item--1/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/2" />
622 <#elseif containerLoop.getSiblings()?size == 2 >
623 <#assign gridBundles = "grid__item grid__item--2/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1" />
624 </#if>
625
626<div class="${gridBundles}">
627 <div class="carousel " data-js="_carousel" data-adjust-height="1" data-center="" data-breakpoints="mobile=1&tablet=2&desktop=<#if (containerLoop.getSiblings()?size <=3)>${containerLoop.getSiblings()?size}<#else>3</#if>">
628 <div class="carousel__wrapper">
629 <ul class="js-carousel-slider carousel__slider carousel__slider--sm-1 carousel__slider--md-2 carousel__slider--3">
630 <#if containerLoop.getSiblings()?has_content>
631 <#list containerLoop.getSiblings() as cur_containerLoop>
632 <li class="js-carousel-slide carousel__slide">
633 <div class="bundle ">
634 <#if getterUtil.getBoolean(cur_containerLoop.mostPopular.getData())>
635 <p class="tag tag--seance ">
636 <span class="visually-hidden">This bundle is highlighted</span> <span class="tag__label">
637 Most popular
638 </span>
639 </p>
640 </#if>
641 <div class="bundle__summary" style="padding-top:20px;">
642 <#if cur_containerLoop.Title.getData()?has_content>
643 <div style="padding-top:20px;">
644 <p>
645 ${cur_containerLoop.Title.getData()}
646 </p>
647 </div>
648 </#if>
649 <#if cur_containerLoop.LogoImage.getData()?? && cur_containerLoop.LogoImage.getData() != "">
650 <img alt="${cur_containerLoop.LogoImage.getAttribute("alt")}" src="${cur_containerLoop.LogoImage.getData()}" style="width: 165px;height: auto;"/>
651</#if>
652
653
654 <#if Select2v2a?? && Select2v2a?has_content>
655 <div class="bundle-data ${Select2v2a.getData()}">
656 <#else>
657 <div class="bundle-data bundle-data--guardsman-red">
658 </#if>
659 <div class="bundle-data__value bundle-data__value ">
660 <p style="margin:0 !important; ">
661 ${cur_containerLoop.textWithRedBg.getData()}
662 </p>
663 </div>
664
665 <div class="bundle-data__value bundle-data__value bundle-data__value--inverse">
666 <p style="margin:0 !important ;font-size:18px">
667 ${cur_containerLoop.textWithWhiteBg.getData()}
668 </p>
669 </div>
670 </div>
671 <#if cur_containerLoop.bundleDescription.getData()?has_content>
672 <div class="bundle-title">
673 <div class="bundle-title__row gutter--bottom">
674 ${cur_containerLoop.bundleDescription.getData()}
675 </div>
676 </div>
677 </#if>
678 </div>
679<#if cur_containerLoop.bundleDescription.getData()?has_content>
680 <div class="js-accordion show-more gutter--top" data-classes="active=show-more__heading--active" data-js="_accordion">
681 <div class="js-accordion-content show-more__content show-more__content--collapse">
682 <ul class="list list--reset bundle__inclusions">
683 <#if cur_containerLoop.listData?has_content>
684 <#list cur_containerLoop.listData.getSiblings() as cur_list>
685 <li class="bundle__inclusion flush--top" style="border:none !important">
686
687 <div class="caption">
688 <span class="caption__media caption__media--top">
689 <svg focusable="false" aria-hidden="true" class="icon icon--small bundle__inclusion-bullet">
690 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-tick"></use>
691 </svg>
692 </span>
693 <span class="caption__text">
694 ${cur_list.getData()}
695 </span>
696 </div>
697 </li>
698 </#list>
699 </#if>
700 </ul>
701 </div>
702
703 <#if cur_containerLoop.showMoreText.getData()?has_content>
704 <a aria-expanded="false" aria-selected="false" class="js-accordion-heading show-more__heading " href="#" role="tab" tabindex="0">
705 <span class="show-more__heading-text">
706 <span class="show-more__heading-more">
707 ${cur_containerLoop.showMoreText.getData()}
708 </span>
709 <span class="show-more__heading-less" style="border-top:none;padding-top: 0">
710 ${cur_containerLoop.showLessText.getData()}
711 </span>
712 </span>
713 <span class="js-accordion-chevron show-more__heading-chevron">
714 <svg aria-hidden="true" class="icon icon--small " focusable="false"> <use xlink:href="#icon-chevron-down" xmlns:xlink="http://www.w3.org/1999/xlink"></use> </svg>
715 </span>
716 </a>
717 </#if>
718 </div>
719 </#if>
720
721 <#if cur_containerLoop.buttonLabel.getData()?has_content>
722 <#if ChooseUrLinkType?has_content>
723 <div class="bundle__select bundle__select--first gutter--top">
724 <#if ChooseUrLinkType.getData()== '["normal Link"]'>
725 <#if cur_containerLoop.buttonLabel.getData()?has_content>
726 <a href="${cur_containerLoop.buttonUrl.getData()}" class="button button--primary">
727 ${cur_containerLoop.buttonLabel.getData()}
728 </a>
729 </#if>
730 <#elseif ChooseUrLinkType.getData()== '["login"]'>
731 <a href="javascript:miSubscribe();" class="button button--primary">
732 ${cur_containerLoop.buttonLabel.getData()}
733 </a>
734 <#elseif ChooseUrLinkType.getData()== '["ADSL"]'>
735 <a href="javascript:adslSubscribe('${cur_containerLoop.BundleId.getData()}', '${cur_containerLoop.AdslTypeTabId.getData()}');" class="button button--primary">
736 ${cur_containerLoop.buttonLabel.getData()}
737 </a>
738 </#if>
739
740 </div>
741 </#if>
742 </#if>
743 </div>
744 </li>
745 </#list>
746 </#if>
747 </ul>
748 </div>
749
750 <div class="js-carousel-controls carousel__controls">
751 <button class="js-carousel-control carousel__control carousel__control--left" type="button" data-direction="-1">
752 <span class="visually-hidden">Previous page</span>
753 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
754 <use xlink:href="#icon-chevron-left" ></use>
755 </svg>
756 </button>
757 <button class="js-carousel-control carousel__control carousel__control--right" type="button" data-direction="1">
758 <span class="visually-hidden">Next page</span>
759 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
760 <use xlink:href="#icon-chevron-right" ></use>
761 </svg>
762 </button>
763 </div>
764
765 <div class="js-carousel-pagination carousel__pagination carousel__pagination--visible">
766 <#list containerLoop.getSiblings() as cur_containerLoop>
767 <li class="carousel__page-item">
768 <button type="button" class="js-carousel-page carousel__page button button--reset" data-page="${cur_containerLoop?index}">
769 <span class="visually-hidden">
770 ${cur_containerLoop?index}
771 </span>
772 </button>
773 </li>
774 </#list>
775 </div>
776 </div>
777 </div>
778 </div>
779
780
781<#if addWebContent.getSiblings()?has_content>
782 <#list addWebContent.getSiblings() as cur_addWebContent>
783 <#if (cur_addWebContent.getData()?length>0)>
784 <#assign article =cur_addWebContent.getData()?eval />
785 <div class="gutter--bottom"></div>
786 <@liferay_ui["asset-display"]
787 className=article.className
788 classPK=getterUtil.getLong(article.classPK, 0)
789 template="full_content" />
790 </#if>
791 </#list>
792</#if>
793
794
795 <div class="visually-hidden">
796 <svg>
797 <symbol viewBox="0 0 121.45 86.55" id="icon-tick"><polyline points="117.45 4 38.91 82.55 4 47.64" stroke-linecap="round" stroke-linejoin="round"></polyline></symbol>
798 </svg>
799 <svg>
800 <symbol viewBox="0 0 160 160" id="icon-block"><g id="block-4bed162d-c643-4387-ae3b-c4470515ed90" data-name="Block_ic"><line x1="26.26" y1="133.74" x2="133.74" y2="26.26" stroke-linecap="round" stroke-linejoin="round"></line><circle cx="80" cy="80" r="76" stroke-linecap="round" stroke-linejoin="round"></circle></g></symbol>
801 </svg>
802 </div>
803</section>
804
805
806
807
808
809
810<script>
811function adslSubscribe(itemA, itemB){
812 try{
813 loadAngularLib(function(){
814 loadModalPage('/node/adslCheckAvailability.html',function(){});
815 localStorage.setItem('bundleId', itemA);
816 localStorage.setItem('turboOrUnlimited',itemB);
817 });
818
819 } catch(err){
820 loadModalPage('/node/adslCheckAvailability.html',function(){});
821 localStorage.setItem('bundleId', itemA);
822 localStorage.setItem('turboOrUnlimited',itemB);
823 }
824}
825function miSubscribe(){
826 try{
827 loadAngularLib(function(){
828 loginParams['targetPage']='mi-manage';
829 loadModalPage('/node/login®ister.htm',function(){});
830 });
831
832 } catch(err){
833 loginParams['targetPage']='mi-manage';
834 loadModalPage('/node/login®ister.htm',function(){});
835 }
836
837}
838</script>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> cur_containerLoop.LogoImage [in template "20116#20160#164010" at line 649, column 78] ---- 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: #if cur_containerLoop.LogoImage.getDa... [in template "20116#20160#164010" at line 649, column 73] ----
1<style>
2p{
3 margin:0 !important;
4}
5.bundle {
6 background-color: #FFFFFF;
7 box-shadow: 0 1px 3px 0 #AFAFAF;
8
9 padding:0px !important;
10 padding-bottom:20px !important;
11 position: relative;
12 text-align: center;
13 z-index: 0;
14}
15.bundle--dark {
16 color: #333333;
17 box-shadow: none;
18}
19
20.bundle--alt {
21 background-color: #EBEBEB;
22}
23
24.bundle--horizontal {
25 padding: 0;
26}
27.bundle--compact {
28 text-align: right;
29}
30
31.bundle__show-more {
32 position: relative;
33}
34
35.bundle__show-more:after {
36 content: "";
37 height: 1px;
38 width: 50%;
39 position: absolute;
40 background: #CCCCCC;
41 left: 0;
42 right: 0;
43 margin: 0 auto;
44}
45
46.bundle__strong {
47 color: #000000;
48}
49
50.bundle__compact-spring {
51 max-width: 540px;
52 margin: 0 auto;
53}
54
55.bundle__details {
56 background-color: #F4F4F4;
57 padding: 30px;
58}
59
60.bundle__see-details {
61 text-decoration: underline;
62}
63
64.bundle--horizontal .bundle__see-details {
65 margin-top: 0;
66}
67
68.bundle__inclusions {
69 margin-bottom: 20px;
70}
71
72.bundle--horizontal .bundle__inclusions {
73 margin-top: 10px;
74 margin-bottom: 0;
75}
76
77/*.bundle__inclusion {
78 clear: both;
79 padding-top: 11px;
80 position: relative;
81 text-align: left;
82 padding-left: 40px;
83}*/
84
85.bundle__inclusion--no-bullet {
86 text-align: center;
87}
88
89/*.bundle__inclusion-bullet {
90 color: #428600;
91 float: left;
92 margin-right: 10px;
93 margin-bottom: 1px;
94 position: absolute;
95 margin-top: 2px;
96 <#if locale.getLanguage() == "ar" >
97 transform: scaleX(-1);
98 right: 0;
99 </#if>
100 <#if locale.getLanguage() == "en" >
101 left: 0;
102 </#if>
103
104}*/
105
106.bundle__inclusion-bullet--hidden {
107 visibility: hidden;
108}
109
110.bundle__inclusion-logo {
111 max-height: 25px;
112}
113
114.bundle__inclusion-logo--buffer {
115 margin-top: 10px;
116 margin-bottom: 10px;
117}
118
119.bundle__select {
120 padding: 0 50px;
121 margin-top: 20px;
122}
123
124.bundle__select--first {
125 margin-top: 0;
126}
127
128.bundle__selected {
129 background-color: #428600;
130 color: #FFFFFF;
131}
132
133.bundle--horizontal .bundle__data-info {
134 display: inline;
135}
136
137.bundle__button {
138 -webkit-appearance: none;
139 -moz-appearance: none;
140 appearance: none;
141 border: 1px solid transparent;
142 color: #FFFFFF;
143 cursor: pointer;
144 display: inline-block;
145 font-size: 20px;
146 padding: 11px 37px;
147 text-align: center;
148}
149
150.bundle__button:hover {
151 cursor: pointer;
152}
153
154.bundle__button--default {
155 background-color: #666666;
156}
157
158.bundle__button--default:hover {
159 background-color: #333333;
160}
161
162.bundle__label {
163 line-height: 28px;
164}
165
166
167.bundle__label--unchecked {
168 display: inline-block;
169}
170
171.bundle__label--checked {
172 display: none;
173}
174
175.bundle__label-wrapper {
176 padding: 0 20px;
177}
178
179.bundle__label-icon {
180 margin-right: 10px;
181 vertical-align: top;
182}
183
184.bundle__input {
185 display: none;
186}
187
188.bundle__input:checked + .bundle__button {
189 background-color: #428600;
190}
191
192.bundle__input:checked + .bundle__button .bundle__label--unchecked {
193 display: none;
194}
195
196.bundle__input:checked + .bundle__button .bundle__label--checked {
197 display: inline-block;
198}
199
200.bundle__emphasise {
201 color: #E60000;
202}
203
204.bundle__offer-text {
205 color: #666666;
206 display: block;
207}
208
209.bundle-data {
210 border-left-width: 0;
211 border-right-width: 0;
212 display: block;
213 letter-spacing: -.215em;
214 height: 110px;
215 width: 100%;
216 margin-top: 0;
217 padding-top:20px;
218 margin-bottom: 0;
219 text-align: center;
220 overflow:hidden;
221}
222
223.bundle-data:after {
224 content: "";
225 display: inline-block;
226 vertical-align: bottom;
227 height: 100%;
228}
229
230.bundle-data--narrow {
231 border-left-width: 1px;
232 border-right-width: 1px;
233 height: auto;
234}
235
236
237
238.bundle-data__value--inverse {
239 background-color: transparent;
240}
241
242.bundle-data__value--full {
243 width: 100%;
244}
245
246.bundle-data--large .bundle-data__value {
247 height: 100%;
248}
249
250.bundle-data--red .bundle-data__value {
251 background-color: #E60000;
252 border-color: #E60000;
253 border-right-color: transparent;
254 color: #FFFFFF;
255}
256
257.bundle-data--red .bundle-data__value--inverse {
258 background-color: #FFFFFF;
259 color: #E60000;
260}
261
262.bundle-data--seance .bundle-data__value {
263 background-color: #9C2AA0;
264 border-color: #9C2AA0;
265 border-right-color: transparent;
266 color: #FFFFFF;
267}
268
269.bundle-data--seance .bundle-data__value--inverse {
270 background-color: #FFFFFF;
271 color: #9C2AA0;
272}
273
274.bundle-data--guardsman-red .bundle-data__value {
275 background-color: #BD0000;
276 border-color: #BD0000;
277 border-right-color: transparent;
278 color: #FFFFFF;
279}
280
281.bundle-data--guardsman-red .bundle-data__value--inverse {
282 background-color: #FFFFFF;
283 color: #BD0000;
284}
285
286.bundle-data--finn .bundle-data__value {
287 background-color: #5E2750;
288 border-color: #5E2750;
289 border-right-color: transparent;
290 color: #FFFFFF;
291}
292
293.bundle-data--finn .bundle-data__value--inverse {
294 background-color: #FFFFFF;
295 color: #5E2750;
296}
297
298.bundle-data--blue-lagoon .bundle-data__value {
299 background-color: #007C92;
300 border-color: #007C92;
301 border-right-color: transparent;
302 color: #FFFFFF;
303}
304
305.bundle-data--blue-lagoon .bundle-data__value--inverse {
306 background-color: #FFFFFF;
307 color: #007C92;
308}
309
310.bundle-data--cinderella .bundle-data__value {
311 background-color: #FDD4D4;
312 border-color: #FDD4D4;
313 border-right-color: transparent;
314 color: #BD0000;
315}
316
317.bundle-data--cinderella .bundle-data__value--inverse {
318 background-color: #FFFFFF;
319}
320
321.bundle-data--cavern-pink .bundle-data__value {
322 background-color: #E5BFBF;
323 border-color: #E5BFBF;
324 border-right-color: transparent;
325 color: #990000;
326}
327
328.bundle-data--cavern-pink .bundle-data__value--inverse {
329 background-color: #FFFFFF;
330}
331
332.bundle-data--narrow .bundle-data__value {
333 padding-top: 10px;
334 padding-bottom: 10px;
335}
336
337.bundle-data--narrow .bundle-data__value--inverse {
338 border-right-color: currentColor;
339}
340
341.bundle-data--narrow .bundle-data__heading {
342 display: inline-block;
343 margin-bottom: 0;
344}
345
346.bundle-data__heading {
347 display: block;
348 margin: 3px 0 1px;
349 font-family: VodafoneLight;
350 letter-spacing: -.215em;
351}
352
353.bundle-data__heading--large-content {
354 font-size: 24px;
355}
356
357.bundle-data__unit {
358 font-size: 28px;
359 line-height: 1em;
360 letter-spacing: normal;
361}
362
363.bundle-data__amount {
364 font-size: 40px;
365 line-height: 1em;
366 letter-spacing: normal;
367}
368
369.bundle-data--large .bundle-data__amount {
370 font-size: 56px;
371}
372
373.bundle-data--small .bundle-data__amount {
374 font-size: 28px;
375}
376
377.bundle-price {
378 margin: 0;
379}
380
381.bundle-price--left, .bundle-price--narrow {
382 text-align: left;
383}
384
385.bundle-price__cost {
386 font-size: 40px;
387 font-family: "VodafoneRegular";
388}
389
390.bundle-price__cost--light {
391 font-family: "VodafoneLight";
392 font-size: 30px;
393}
394
395.bundle-price__regular-cost {
396 font-family: "VodafoneRegular";
397}
398
399.bundle-price__regular-price {
400 color: #666666;
401}
402
403.bundle-price__heading {
404 font-size: 28px;
405 font-family: "VodafoneRegularBold";
406 margin: 0;
407}
408
409.bundle-price__savings {
410 color: #E60000;
411}
412
413.bundle-price__saving {
414 text-decoration: line-through;
415}
416
417.bundle-price__detail {
418 display: block;
419 margin-top: 8px;
420 color: #666666;
421}
422
423.bundle-data__value {
424 height:106px;
425 background-color: #CCCCCC;
426 border: 1px solid #CCCCCC;
427 border-right-color: transparent;
428 color: #333333;
429 display: inline-block;
430 letter-spacing: normal;
431 width: 50%;
432 vertical-align: bottom;
433 overflow: hidden;
434 text-overflow: ellipsis;
435 white-space: normal;
436 padding: 20px 0;
437 float:left;
438}
439
440@media only screen and (max-width: 639px) {
441 .bundle {
442 padding-bottom: 20px;
443 }
444 .bundle--horizontal {
445 padding: 0;
446 }
447 .bundle--horizontal .bundle__summary {
448 padding: 20px 10px 20px 26px;
449 }
450 .bundle--horizontal .bundle__summary--wide {
451 padding: 20px 0;
452 }
453 .bundle__sim {
454 width: 100%;
455 }
456 .bundle__select {
457 margin-top: 15px;
458 }
459 .bundle__select--first {
460 margin-top: 0;
461 }
462 .bundle--horizontal .bundle__data-info {
463 display: block;
464 }
465 .bundle--horizontal .bundle__inclusion {
466 padding-top: 5px;
467 }
468 .bundle__sm-wrapper {
469 padding: 0 15px;
470 }
471 .bundle__inclusion {
472 padding-left: 30px;
473 }
474}
475
476@media only screen and (max-width: 639px) {
477 .bundle__button {
478 display: block;
479 font-size: 18px;
480 padding: 10px;
481 }
482}
483
484@media only screen and (max-width: 970px) {
485 .bundle-data {
486 height: auto;
487 }
488 .bundle-data__value {
489 padding:15px 0;
490 }
491 .bundle-data--narrow {
492 height: auto;
493 }
494 .bundle-data__unit {
495 font-size: 24px;
496 }
497 .bundle-data__amount {
498 font-size: 34px;
499 }
500 .bundle-data--large .bundle-data__amount {
501 font-size: 40px;
502 }
503 .bundle-data--small .bundle-data__amount {
504 font-size: 24px;
505 }
506}
507
508@media only screen and (max-width: 639px) {
509 .bundle-data {
510 text-align: center;
511 height: auto;
512 }
513 .bundle-data--narrow {
514 height: auto;
515 }
516 .bundle-data__unit {
517 font-size: 20px;
518 }
519 .bundle-data__amount {
520 font-size: 24px;
521 }
522 .bundle-data--large .bundle-data__amount {
523 font-size: 28px;
524 }
525 .bundle-data--small .bundle-data__amount {
526 font-size: 20px;
527 }
528 .bundle-data--narrow .bundle-data__heading {
529 display: block;
530 }
531 .bundle-data {
532 border-left-width: 0;
533 border-right-width: 0;
534 display: block;
535 letter-spacing: -.215em;
536 height: auto;
537 width: 90%;
538
539 margin-top: 0;
540 margin-bottom: 0;
541 margin:auto;
542 text-align: center;
543 }
544.bundle-data__value {
545 height:115px;
546 }
547}
548
549
550@media only screen and (max-width: 970px) {
551 .bundle-price {
552 text-align: center;
553 margin-bottom: 10px;
554 }
555 .bundle-price--left {
556 text-align: left;
557 }
558 .bundle-price__cost {
559 font-size: 34px;
560 }
561 .bundle-price__cost--light {
562 font-size: 24px;
563 }
564 .bundle-price__heading {
565 font-size: 24px;
566 }
567}
568.maxWidth{
569 margin:auto;
570 width:33.33333%!important;
571 }
572@media only screen and (max-width: 639px) {
573 .bundle-price__cost {
574 font-size: 24px;
575 }
576 .bundle-price__cost--light {
577 font-size: 20px;
578 font-family: "VodafoneRegular";
579 }
580 .bundle-price__heading {
581 font-size: 20px;
582 }
583 .maxWidth{
584 margin:none;
585 width:100%;
586 }
587
588}
589
590</style>
591
592<section class="section section--gutter no-gutter--top">
593 <div class="spring no-gutter--top">
594 <#if description.getSiblings()?has_content>
595 <p class="gutter--all">
596 ${description.getData()}
597 </p>
598 </#if>
599
600 <#if alert.getData()?has_content>
601 <div class="alert alert--light alert--warning validation__warning" style="background-color:white;margin:35px auto 50px;max-width: 800px;">
602 <div class="caption">
603 <div class="caption__media caption__media--top alert__media">
604 <svg class="icon icon--small alert__icon">
605 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-block"></use>
606 </svg>
607 </div>
608 <div class="caption__text caption__text--top alert__text">
609 <p class="no-gutter--top">
610 ${alert.getData()}
611 </p>
612 </div>
613 </div>
614 </div>
615 </#if>
616
617 <!-------------- ${containerLoop.getSiblings()?size}---------->
618
619 <#assign gridBundles = "grid__item grid__item--1/1 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1"/>
620 <#if containerLoop.getSiblings()?size ==1 >
621 <#assign gridBundles = "grid__item grid__item--1/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/2" />
622 <#elseif containerLoop.getSiblings()?size == 2 >
623 <#assign gridBundles = "grid__item grid__item--2/3 grid__item--gutter grid__item--sm-1/1 grid__item--md-1/1" />
624 </#if>
625
626<div class="${gridBundles}">
627 <div class="carousel " data-js="_carousel" data-adjust-height="1" data-center="" data-breakpoints="mobile=1&tablet=2&desktop=<#if (containerLoop.getSiblings()?size <=3)>${containerLoop.getSiblings()?size}<#else>3</#if>">
628 <div class="carousel__wrapper">
629 <ul class="js-carousel-slider carousel__slider carousel__slider--sm-1 carousel__slider--md-2 carousel__slider--3">
630 <#if containerLoop.getSiblings()?has_content>
631 <#list containerLoop.getSiblings() as cur_containerLoop>
632 <li class="js-carousel-slide carousel__slide">
633 <div class="bundle ">
634 <#if getterUtil.getBoolean(cur_containerLoop.mostPopular.getData())>
635 <p class="tag tag--seance ">
636 <span class="visually-hidden">This bundle is highlighted</span> <span class="tag__label">
637 Most popular
638 </span>
639 </p>
640 </#if>
641 <div class="bundle__summary" style="padding-top:20px;">
642 <#if cur_containerLoop.Title.getData()?has_content>
643 <div style="padding-top:20px;">
644 <p>
645 ${cur_containerLoop.Title.getData()}
646 </p>
647 </div>
648 </#if>
649 <#if cur_containerLoop.LogoImage.getData()?? && cur_containerLoop.LogoImage.getData() != "">
650 <img alt="${cur_containerLoop.LogoImage.getAttribute("alt")}" src="${cur_containerLoop.LogoImage.getData()}" style="width: 165px;height: auto;"/>
651</#if>
652
653
654 <#if Select2v2a?? && Select2v2a?has_content>
655 <div class="bundle-data ${Select2v2a.getData()}">
656 <#else>
657 <div class="bundle-data bundle-data--guardsman-red">
658 </#if>
659 <div class="bundle-data__value bundle-data__value ">
660 <p style="margin:0 !important; ">
661 ${cur_containerLoop.textWithRedBg.getData()}
662 </p>
663 </div>
664
665 <div class="bundle-data__value bundle-data__value bundle-data__value--inverse">
666 <p style="margin:0 !important ;font-size:18px">
667 ${cur_containerLoop.textWithWhiteBg.getData()}
668 </p>
669 </div>
670 </div>
671 <#if cur_containerLoop.bundleDescription.getData()?has_content>
672 <div class="bundle-title">
673 <div class="bundle-title__row gutter--bottom">
674 ${cur_containerLoop.bundleDescription.getData()}
675 </div>
676 </div>
677 </#if>
678 </div>
679<#if cur_containerLoop.bundleDescription.getData()?has_content>
680 <div class="js-accordion show-more gutter--top" data-classes="active=show-more__heading--active" data-js="_accordion">
681 <div class="js-accordion-content show-more__content show-more__content--collapse">
682 <ul class="list list--reset bundle__inclusions">
683 <#if cur_containerLoop.listData?has_content>
684 <#list cur_containerLoop.listData.getSiblings() as cur_list>
685 <li class="bundle__inclusion flush--top" style="border:none !important">
686
687 <div class="caption">
688 <span class="caption__media caption__media--top">
689 <svg focusable="false" aria-hidden="true" class="icon icon--small bundle__inclusion-bullet">
690 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-tick"></use>
691 </svg>
692 </span>
693 <span class="caption__text">
694 ${cur_list.getData()}
695 </span>
696 </div>
697 </li>
698 </#list>
699 </#if>
700 </ul>
701 </div>
702
703 <#if cur_containerLoop.showMoreText.getData()?has_content>
704 <a aria-expanded="false" aria-selected="false" class="js-accordion-heading show-more__heading " href="#" role="tab" tabindex="0">
705 <span class="show-more__heading-text">
706 <span class="show-more__heading-more">
707 ${cur_containerLoop.showMoreText.getData()}
708 </span>
709 <span class="show-more__heading-less" style="border-top:none;padding-top: 0">
710 ${cur_containerLoop.showLessText.getData()}
711 </span>
712 </span>
713 <span class="js-accordion-chevron show-more__heading-chevron">
714 <svg aria-hidden="true" class="icon icon--small " focusable="false"> <use xlink:href="#icon-chevron-down" xmlns:xlink="http://www.w3.org/1999/xlink"></use> </svg>
715 </span>
716 </a>
717 </#if>
718 </div>
719 </#if>
720
721 <#if cur_containerLoop.buttonLabel.getData()?has_content>
722 <#if ChooseUrLinkType?has_content>
723 <div class="bundle__select bundle__select--first gutter--top">
724 <#if ChooseUrLinkType.getData()== '["normal Link"]'>
725 <#if cur_containerLoop.buttonLabel.getData()?has_content>
726 <a href="${cur_containerLoop.buttonUrl.getData()}" class="button button--primary">
727 ${cur_containerLoop.buttonLabel.getData()}
728 </a>
729 </#if>
730 <#elseif ChooseUrLinkType.getData()== '["login"]'>
731 <a href="javascript:miSubscribe();" class="button button--primary">
732 ${cur_containerLoop.buttonLabel.getData()}
733 </a>
734 <#elseif ChooseUrLinkType.getData()== '["ADSL"]'>
735 <a href="javascript:adslSubscribe('${cur_containerLoop.BundleId.getData()}', '${cur_containerLoop.AdslTypeTabId.getData()}');" class="button button--primary">
736 ${cur_containerLoop.buttonLabel.getData()}
737 </a>
738 </#if>
739
740 </div>
741 </#if>
742 </#if>
743 </div>
744 </li>
745 </#list>
746 </#if>
747 </ul>
748 </div>
749
750 <div class="js-carousel-controls carousel__controls">
751 <button class="js-carousel-control carousel__control carousel__control--left" type="button" data-direction="-1">
752 <span class="visually-hidden">Previous page</span>
753 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
754 <use xlink:href="#icon-chevron-left" ></use>
755 </svg>
756 </button>
757 <button class="js-carousel-control carousel__control carousel__control--right" type="button" data-direction="1">
758 <span class="visually-hidden">Next page</span>
759 <svg focusable="false" aria-hidden="true" class="icon icon--small carousel__control-icon">
760 <use xlink:href="#icon-chevron-right" ></use>
761 </svg>
762 </button>
763 </div>
764
765 <div class="js-carousel-pagination carousel__pagination carousel__pagination--visible">
766 <#list containerLoop.getSiblings() as cur_containerLoop>
767 <li class="carousel__page-item">
768 <button type="button" class="js-carousel-page carousel__page button button--reset" data-page="${cur_containerLoop?index}">
769 <span class="visually-hidden">
770 ${cur_containerLoop?index}
771 </span>
772 </button>
773 </li>
774 </#list>
775 </div>
776 </div>
777 </div>
778 </div>
779
780
781<#if addWebContent.getSiblings()?has_content>
782 <#list addWebContent.getSiblings() as cur_addWebContent>
783 <#if (cur_addWebContent.getData()?length>0)>
784 <#assign article =cur_addWebContent.getData()?eval />
785 <div class="gutter--bottom"></div>
786 <@liferay_ui["asset-display"]
787 className=article.className
788 classPK=getterUtil.getLong(article.classPK, 0)
789 template="full_content" />
790 </#if>
791 </#list>
792</#if>
793
794
795 <div class="visually-hidden">
796 <svg>
797 <symbol viewBox="0 0 121.45 86.55" id="icon-tick"><polyline points="117.45 4 38.91 82.55 4 47.64" stroke-linecap="round" stroke-linejoin="round"></polyline></symbol>
798 </svg>
799 <svg>
800 <symbol viewBox="0 0 160 160" id="icon-block"><g id="block-4bed162d-c643-4387-ae3b-c4470515ed90" data-name="Block_ic"><line x1="26.26" y1="133.74" x2="133.74" y2="26.26" stroke-linecap="round" stroke-linejoin="round"></line><circle cx="80" cy="80" r="76" stroke-linecap="round" stroke-linejoin="round"></circle></g></symbol>
801 </svg>
802 </div>
803</section>
804
805
806
807
808
809
810<script>
811function adslSubscribe(itemA, itemB){
812 try{
813 loadAngularLib(function(){
814 loadModalPage('/node/adslCheckAvailability.html',function(){});
815 localStorage.setItem('bundleId', itemA);
816 localStorage.setItem('turboOrUnlimited',itemB);
817 });
818
819 } catch(err){
820 loadModalPage('/node/adslCheckAvailability.html',function(){});
821 localStorage.setItem('bundleId', itemA);
822 localStorage.setItem('turboOrUnlimited',itemB);
823 }
824}
825function miSubscribe(){
826 try{
827 loadAngularLib(function(){
828 loginParams['targetPage']='mi-manage';
829 loadModalPage('/node/login®ister.htm',function(){});
830 });
831
832 } catch(err){
833 loginParams['targetPage']='mi-manage';
834 loadModalPage('/node/login®ister.htm',function(){});
835 }
836
837}
838</script>