Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> cmsEntity.getLocalizedField(profile, "/entity/fields/title") [in template "20116#20152#307443" at line 36, column 29]
----
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: #assign productTitle = cmsEntity.getL... [in template "20116#20152#307443" at line 36, column 5]
----
1<#--
2
3 Accessory Main Image
4
5-->
6
7<#assign instanceId = themeDisplay.getPortletDisplay().getId()>
8<#assign portletId = "p_p_id_" + instanceId + "_">
9
10<#if cmsEntity?has_content>
11<#include "${templatesPath}/227222" />
12
13<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-white" id="accessory-main-image"/>
14<#assign ns = themeDisplay.portletDisplay.getId() >
15<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
16
17<#assign listPriceField = "listPrice" >
18<#assign iconSetPath ="/o/genelec-site-theme/images/icons/symbol-defs.svg">
19<#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content>
20 <#assign variants = cmsEntity.getField(profile, "/entity/relationships/variants") >
21</#if>
22<#if cmsEntity.getField(profile, "/entity/fields")?has_content>
23 <#assign fields = cmsEntity.getField(profile, "/entity/fields") >
24</#if>
25
26<#assign minimumWebshopAmount = 1 >
27<#if !fields.isNull("minimumWebshopAmount")>
28 <#assign minimumWebshopAmount = fields.minimumWebshopAmount >
29</#if>
30<#assign buyUnit = "unit">
31<#if minimumWebshopAmount gt 1>
32 <#assign buyUnit = "pair">
33</#if>
34
35<#if cmsEntity.getField(profile, "/entity/fields/title")?has_content>
36 <#assign productTitle = cmsEntity.getLocalizedField(profile, "/entity/fields/title")>
37</#if>
38<#if cmsEntity.getField(profile, "/entity/fields/summary")?has_content >
39 <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))>
40</#if>
41<#assign content = "" >
42
43<#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content >
44 <#assign content = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))>
45</#if>
46
47<#assign portalUrl = themeDisplay.getPortalURL() >
48<#assign currentURL = portalUrl + themeDisplay.getURLCurrent() >
49<@appendHTMLMetas currentURL cmsEntity "product" />
50
51 <div class="row">
52 <div class="col-lg-6">
53 <#if productTitle?has_content>
54 <div class="product-page-heading">
55 <h1>${productTitle}</h1>
56 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")?has_content>
57 <h1 class="subtitle">${cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")}</h1>
58 </#if>
59 </div>
60 </#if>
61 <div class="row justify-content-between">
62 <div class="col-lg-12 article-content">
63 <#if summary?has_content>
64 <div class="product-page-intro">${summary}</div>
65 </#if>
66 <hr>
67 </div>
68 </div>
69 <form class="product-page-form">
70
71 <p>
72 <#list variants.iterator() as variant>
73 <#assign id = variant.id>
74 <#assign sku = accessoryVariantSKU(variant) >
75
76 <#if !fields.isNull("b2cVisibilityKey")>
77 <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/>
78 <#if sku?has_content>
79 <#if b2cVisibility = "showWithPrice" && variant?index = 0 || b2cVisibility = "showForPurchase" && variant?index = 0>
80 <div id="price-${id}">
81 <span class="h1" data-variant-price="${sku}" data-qty="${minimumWebshopAmount}" ></span>
82 <span class="h3">/<@liferay.language key="${buyUnit}"/> </span>
83 <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span>
84 </div>
85 <#elseif b2cVisibility ="showWithPrice" || b2cVisibility = "showForPurchase">
86 <div class="price-variant" id="price-${id}">
87 <span class="h1" data-variant-price="${sku}" data-qty="${minimumWebshopAmount}"></span>
88 <span class="h3">/<@liferay.language key="${buyUnit}"/></span>
89 <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span>
90 </div>
91 </#if>
92 </#if>
93 </#if>
94 </#list>
95 </p>
96
97 <#list variants.iterator() as variant>
98 <#if !variant.properties.isNull("shopifyAccessoryVariant")>
99 <#assign sku = accessoryVariantSKU(variant) >
100 <#else>
101 <#assign sku = "">
102 </#if>
103 <#break>
104 </#list>
105 <div class="buy-section-buttons">
106 <#if !fields.isNull("b2cVisibilityKey")>
107 <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/>
108
109 <#if b2cVisibility = "showForPurchase" && sku != "">
110 <div class="btn-container">
111 <a class="btn btn-theme btn-product-page-buy btn-bold btn-medium"
112 href="#"
113 data-sku="${sku}" data-qty="${minimumWebshopAmount}" >
114 <@liferay.language key="buy-product"/>
115 </a>
116
117 </div>
118 </#if>
119 </#if>
120 <div class="btn-container">
121 <a class="btn btn-black-white btn-medium text-bolder" href="#_genelecsitedealermap_genelec-site-map">
122 <@liferay.language key="search-dealer"/>
123 <@linkIcon cssClasses="icon tiny-icon" alt="" icon="arrow-black"/>
124 </a>
125 </div>
126 </div>
127 </form>
128
129 <!-- delivery returns warranty -->
130 <@printDeliveryRow fields=fields siteLang=siteDefaultLocale />
131 <!-- // delivery returns warranty -->
132
133 <#if content?has_content>
134 <div class="text-intro">${content}</div>
135 </#if>
136 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")?has_content>
137 <div class="text-bolder">
138 Length min.
139 </div>
140 <div class="text-medium">
141 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")}
142 mm
143 </div>
144 </#if>
145 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")?has_content>
146 <div class="text-bolder">
147 Length max.
148 </div>
149 <div class="text-medium">
150 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")}
151 mm
152 </div>
153 </#if>
154 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")?has_content>
155 <div class="text-bolder">
156 <@liferay.language key="width"/>
157 </div>
158 <div class="text-medium">
159 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")}
160 mm
161 </div>
162 </#if>
163 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")?has_content>
164 <div class="text-bolder">
165 <@liferay.language key="height"/>
166 </div>
167 <div class="text-medium">
168 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")}
169 mm
170 </div>
171 </#if>
172
173
174
175
176 </div>
177 <div class="col-lg-6">
178 <#list variants.iterator() as variant>
179 <#assign vImages = variantImages(variant,siteDefaultLocale) >
180
181 <#if vImages?has_content>
182 <#if variant?index = 0>
183 <@imageZoom
184 id=variant.id
185 cssClasses="zoom-gallery-slide active"
186 images=vImages
187 carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"
188 zoomCss="MagicZoom accessory-page-product-image"
189 videoCss="accessory-main-video"
190 />
191 <#else>
192 <@imageZoom
193 id=variant.id
194 variantCss="variant-gallery"
195 cssClasses="zoom-gallery-slide active"
196 images=vImages
197 carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"
198 zoomCss="MagicZoom accessory-page-product-image"
199 videoCss="accessory-main-video"
200 />
201 </#if>
202 </#if>
203 </#list>
204 <#list variants.iterator() as variant>
205 <#if !variant.properties.isNull("colorCode")>
206 <#if variant?index == 0>
207 <div class="text-bold"><@liferay.language key="color-options"/></div>
208 </#if>
209 <#assign color = "${variant.properties.colorCode}">
210 <#assign sku = accessoryVariantSKU(variant) >
211
212 <#if variant?index = 0>
213 <@variantChange id=variant.id checked="checked" color=color sku=sku/>
214 <#else>
215 <@variantChange id=variant.id color=color sku=sku/>
216 </#if>
217 </#if>
218 </#list>
219 </div>
220 </div>
221 <@sectionFooter/>
222
223<style>
224
225 .product-page-product-title {
226 font-weight: 600;
227 margin-bottom: 0;
228 }
229
230 .product-page-form {
231 margin-bottom: 15px;
232 }
233
234 .btn-product-page-buy {
235 width: 40%;
236 min-width: 250px;
237 height: 43px
238 }
239
240 .btn-bold {
241 border-width: 2px;
242 text-transform: uppercase;
243 font-weight: 800;
244 }
245
246 .buy-product-dropdown {
247 display: inline-block;
248 width: 60px;
249 height: 43px !important;
250 border-radius: 0;
251 border-left: none;
252 position: absolute;
253 clear: left;
254 padding-left: 2%;
255 font-size: 1.3em;
256 border: 2px solid #ced4da;
257 border-left: none;
258 line-height: 20px;
259 }
260
261 .buy-product-dropdown h3 {
262 display: inline;
263 vertical-align: middle;
264 }
265
266 .buy-product-dropdown svg {
267 width: 20px;
268 line-height: .2;
269 vertical-align: middle;
270 }
271
272.accessory-main-carousel .owl-prev {
273 width: 17px;
274 height: 100px;
275 position: absolute;
276 left: -20px;
277 top: 47%;
278 transform: translateY(-50%);
279 display: block !important;
280 border:0px solid black;
281 font-size: 2em !important;
282}
283
284.accessory-main-carousel .owl-next {
285 width: 17px;
286 height: 100px;
287 position: absolute;
288 right: -20px;
289 top: 47%;
290 transform: translateY(-50%);
291 display: block !important;
292 border:0px solid black;
293 font-size: 2em !important;
294}
295
296.accessory-main-video{
297 height:396px;
298 width:396px;
299}
300
301.price-variant {
302 display:none;
303 }
304
305</style>
306
307<script>
308
309 $('.accessory-main-carousel').owlCarousel({
310 loop:false,
311 nav:true,
312 dots:false,
313 margin:5,
314 lazyLoad:true,
315 navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'],
316 responsive:{
317 0:{items:3, slideBy:3},
318 600:{items:4, slideBy:4},
319 1000:{items:5, slideBy:5}
320 },
321});
322
323<#if isWebstoreEnabled()>
324// Add product into shopping cart
325 $('.btn-product-page-buy').click(function(event){
326
327 genelec.cart().then(function(cart){
328 let qty = $(event.target).attr("data-qty");
329 let sku = $(event.target).attr("data-sku");
330
331 // qty is number and sku exists
332 if (!isNaN(qty) && sku) {
333 cart.add(sku, qty).then(function(){$( document ).trigger("genelec-shopping-cart-updated");});
334 }
335 });
336 return false;
337 });
338
339 genelec.shopify.fillPrices('#${portletId}');
340</#if>
341
342</script>
343</#if>
344
345<#function accessoryVariantSKU variant>
346 <#if hasWebstoreSupport(variant,siteDefaultLocale)>
347 <#assign sku = localizeField(variant.properties.shopifyAccessoryVariant, siteDefaultLocale) >
348 <#else>
349 <#assign sku = "">
350 </#if>
351 <#return sku>
352</#function>
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> cmsEntity.getField(profile, documentPath) [in template "20116#20152#211671" at line 14, column 30]
----
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: #assign documents = cmsEntity.getFiel... [in template "20116#20152#211671" at line 14, column 9]
----
1<#-- </div></div> -->
2
3<#if cmsEntity?has_content>
4<#include "${templatesPath}/227222" />
5<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
6<#assign reviewsPath = "/entity/relationships/reviews/"+profile.getCMSLangCode()+"/references" >
7
8<#if cmsEntity.getField(profile, "/entity/relationships/documents")?has_content || cmsEntity.getField(profile, reviewsPath)?has_content || cmsEntity.getField(profile, "/entity/relationships/faqs")?has_content>
9<#assign pageTemplate = "${getPageTemplateNameByUuid('${themeDisplay.layout.layoutPrototypeUuid}')}">
10
11<#if cmsEntity.getField(profile, "/entity/relationships/documents")?has_content>
12 <#assign documentPath = "/entity/relationships/documents/"+profile.getCMSLangCode()+"/references" >
13 <#if documentPath?has_content>
14 <#assign documents = cmsEntity.getField(profile, documentPath) >
15 </#if>
16</#if>
17<#if cmsEntity.getField(profile, reviewsPath)?has_content>
18 <#assign reviews = cmsEntity.getField(profile, reviewsPath) >
19</#if>
20
21<#if cmsEntity.getField(profile, "/entity/relationships/faqs")?has_content>
22 <#assign faqs = cmsEntity.getField(profile, "/entity/relationships/faqs") >
23 <#if groupField(cmsEntity,"/entity/relationships/faqs", groupId)?has_content>
24 <#assign faqs = groupField(cmsEntity,"/entity/relationships/faqs", groupId).references >
25 </#if>
26</#if>
27
28<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-blue-darker product-page-downloads" id="section-downloads"/>
29
30
31<#assign documentsDocumentTypes = ["operating manual", "guide", "other manual", "brochure", "catalogue", "datasheet", "software release note"]>
32<#assign downloadsDocumentTypes = ["line drawing","simulation file", "test signal", "software realese note", "certificate", "technical paper", "article or publication"]>
33<#assign reviewsDocumentTypes = ["review"]>
34
35<#assign reviewColContent = "" />
36<#assign downloadColContent = "" />
37<#assign documentColContent = "" />
38
39<#if documents?has_content>
40 <#list documents.iterator() as document>
41 <#assign documentType = "">
42 <#if !document.properties.isNull("documentTypeKey")>
43 <#assign documentType = localizeField(document.properties.documentTypeKey)?lower_case>
44 <#elseif !document.properties.isNull("documentType")>
45 <#assign documentType = localizeField(document.properties.documentType)?lower_case>
46 </#if>
47 <#if !document.assets.isNull("file") && !document.assets.file.isNull("mediaType")>
48 <#assign mediaType = document.assets.file.mediaType?replace(".","/")>
49 </#if>
50
51 <#if downloadsDocumentTypes?seq_contains(documentType)>
52 <#assign downloadColContent>
53 ${downloadColContent}
54 <#if !document.assets.isNull("file")>
55 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
56 <#if mediaType?keep_after_last("/") = "pdf">
57 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span>
58 <#else>
59 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="" icon="download-green"/></span></span>
60 </#if>
61 </a>
62 </#if>
63 </#assign>
64 <#elseif documentsDocumentTypes?seq_contains(documentType)>
65 <#assign documentColContent>
66 ${documentColContent}
67 <#if !document.assets.isNull("file")>
68 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
69 <span class="text-bolder">${localizeField(document.properties.title, profile.getCMSLangCode())}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="pdf" icon="pdf-green"/></span></span>
70 </a>
71 </#if>
72 </#assign>
73 </#if>
74 </#list>
75</#if>
76
77<#if reviews?has_content>
78 <#list reviews.iterator() as review>
79 <#assign id = review.id>
80 <#assign reviewColContent>
81 ${reviewColContent}
82 <#if !review.properties.isNull("url")>
83 <a href="${review.properties.url}" target="_blank" rel="noopener noreferrer" class="type-review">
84 <span class="text-bolder">${review.properties.heading}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="" icon="external-green"/></span></span>
85 </a>
86 <#else>
87 <a href="#/" onClick="openDocumentReviewPopup('${id}')" class="type-review">
88 <span class="text-bolder">
89 ${review.properties.heading}
90 </span>
91 </a>
92 </#if>
93 </#assign>
94 </#list>
95</#if>
96
97<div class="row bg-white table-row-padding">
98
99 <div class="col-md-4">
100 <#if documentColContent?has_content>
101 <h3><@liferay.language key="documents"/></h3>
102 ${documentColContent}
103 </#if>
104
105 </div>
106
107 <div class="col-md-4">
108 <#if downloadColContent?has_content>
109 <h3><@liferay.language key="downloads"/></h3>
110 ${downloadColContent}
111 </#if>
112 </div>
113
114
115 <div class="col-md-4">
116 <#if reviewColContent?has_content>
117 <h3><@liferay.language key="reviews"/></h3>
118 ${reviewColContent}
119 </#if>
120 </div>
121
122 <#if faqs?has_content && !faqs.keys??>
123 <#assign showFAQCount = 3 >
124
125 <div id="faqs" class="row bg-white table-row-padding">
126 <div class="col-md-7">
127 <h3><@liferay.language key="faq"/></h3>
128 <#list faqs.iterator() as faq>
129 <#assign id = faq.id>
130
131 <div class="faq_element <#if faq?index gte showFAQCount>hidden</#if>" >
132 <div class="faq_element_question col-lg-12" onclick="faqShowAnswer('${id}');">
133
134 <i class="icon-plus-sign" id="faq-plus-${id}"></i>
135 <i class="icon-minus-sign" id="faq-minus-${id}" style="display: none;"></i>
136
137 <a href="#faq_element_answer" class="ml-4" >
138 <#assign question = faq.properties.question>
139 <h4 class="text-bolder">${question}</h4>
140 </a>
141 </div>
142 <div class="faq_element_answer ml-4" id="faq-element-answer-${id}">
143 <#assign answer = cmsContentFormatterService.getMarkdown(faq.properties.answer)>
144 ${answer?replace('h1>|h2>', 'h5>', 'r')?replace('h3>', 'h6>')}
145 </div>
146 </div>
147 </#list>
148
149 <#if faqs.length() gt showFAQCount>
150 <a href="#" onclick="$('#faqs .hidden').removeClass('hidden'); $(this).hide();return false;"><@liferay.language key="show-more"/></a>
151 </#if>
152 </div>
153 </div>
154 </#if>
155</div>
156<@sectionFooter/>
157
158
159<#-- Popup -->
160<#if reviews?has_content>
161 <div id="theme-popupDocumentReview" class="popup">
162 <#list reviews.iterator() as review>
163 <#assign id = review.id>
164
165 <#if review?index == 0>
166 <div class="close-button-container">
167 <button class="close" onClick="closeDocumentReviewPopup('${id}')" id="closeButtonDocumentReview-${id}"></button>
168 </div>
169
170 <div class="panel popup-content" id="popupContentDocumentReview">
171 <div class="panel-body">
172 </#if>
173
174 <div class="documentReviewContent" id="documentReviewContent-${id}">
175 <div class="h1 section-heading text-bolder">${review.properties.heading}</div>
176 <#if !review.properties.isNull("summary")>
177 <#assign summary = cmsContentFormatterService.getMarkdown(review.properties.summary)>
178 ${summary}
179 </#if>
180
181 <#if !review.properties.isNull("content")>
182 <#assign content = cmsContentFormatterService.getMarkdown(localizeField(review.properties.content, profile.getCMSLangCode()))>
183 ${content}
184 </#if>
185 </div>
186
187 <#if review?index == (review?size - 1)>
188 </div>
189 </div>
190 </#if>
191
192 </#list>
193 </div>
194</#if>
195
196</#if>
197
198<script>
199function faqShowAnswer(id){
200
201 var wasHidden = $("#faq-element-answer-"+id).is(":hidden");
202
203 // Close all
204 $("#faqs .faq_element_answer").hide();
205 $("#faqs .icon-plus-sign").show();
206 $("#faqs .icon-minus-sign").hide();
207
208 if (wasHidden) {
209 var answer = $("#faq-element-answer-"+id);
210 $("#faq-plus-"+id).hide();
211 $("#faq-minus-"+id).show();
212 answer.show();
213 console.log(answer.parent().find(".faq_element_question"));
214 if(!inViewport(answer.parent().find(".faq_element_question").first())) {
215
216 var scrollFix = 10; // some margin
217 var questionPos = answer.parent().find(".faq_element_question").first().offset().top;
218
219 // ControlBar
220 if ($("#ControlMenu").is(":visible")) {
221 scrollFix += $("#ControlMenu").height();
222 }
223
224 // subnavi
225 if ($("#submenu-links").is(":visible")) {
226 scrollFix += $("#submenu-links").height();
227 }
228 console.log("Scrollfix " + scrollFix)
229
230 var scrollTo = questionPos - scrollFix;
231
232 $('html, body').animate({
233 scrollTop: (scrollTo-1)
234 },500, function(){
235 setTimeout(function() {
236 $('html, body').scrollTop(scrollTo);
237 }, 200);
238 });
239 }
240
241 }
242};
243
244function inViewport(el) {
245 var elementTop = el.offset().top;
246 var elementBottom = elementTop + el.outerHeight();
247
248 var viewportTop = $(window).scrollTop();
249 var viewportBottom = viewportTop + $(window).height();
250
251 return elementBottom > viewportTop && elementTop < viewportBottom;
252}
253
254function openDocumentReviewPopup(reviewId) {
255 openPopup("DocumentReview");
256 $('#documentReviewContent-'+reviewId).show();
257
258 //update:
259 $('#theme-popupDocumentReview .close').attr('id','closeButtonDocumentReview-'+reviewId);
260 $('#theme-popupDocumentReview .close').attr('onclick', 'closeDocumentReviewPopup("' + reviewId + '")');
261 $('#closeButtonDocumentReview-'+reviewId).show();
262}
263
264function closeDocumentReviewPopup(reviewId) {
265 closePopup("DocumentReview");
266 $('#documentReviewContent-'+reviewId).hide();
267
268 //update:
269 $('#closeButtonDocumentReview-'+reviewId).hide();
270}
271function closeDownloadsPopup(e) {
272 if(!$('#popupContent'+"DocumentReview").is(e.target) &&
273 $('#popupContent'+"DocumentReview").has(e.target).length == 0 &&
274 $(e.target).attr('class') != 'close' &&
275 $('#theme-popup'+"DocumentReview").css("display") == "block"){
276 closePopup("DocumentReview");
277 $('div[id^=documentReviewContent-]').hide();
278
279 }
280};
281
282$(document).on({
283 "mouseup": function (e) { closeDownloadsPopup(e); },
284 "touchstart": function (e) { closeDownloadsPopup(e); }
285});
286
287
288</script>
289
290</#if>
Trouver un revendeur