1<#if cmsEntity?has_content>
2
3<#include "${templatesPath}/227222" />
4<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
5<#assign reviewsPath = "/entity/relationships/reviews/"+profile.getCMSLangCode()+"/references" >
6<#assign documentPath = "/entity/relationships/documents/"+profile.getCMSLangCode()+"/references" >
7
8<#assign products = [] >
9<#if cmsEntity.getField(profile, "/entity/relationships/bundles")?has_content>
10 <#assign bundles = cmsEntity.getField(profile, "/entity/relationships/bundles") >
11 <#assign id = bundles.get(0).id>
12 <#assign products = cmsBundleService.getProductsInBundle(profile, id)>
13</#if>
14
15 <#list products as product>
16 <#if product.getField(profile, "/entity/relationships/documents")?has_content>
17 <#assign documents = product.getField(profile, "/entity/relationships/documents") >
18 </#if>
19 <#if product.getField(profile, reviewsPath)?has_content>
20 <#assign reviews = product.getField(profile, reviewsPath) >
21 </#if>
22 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
23 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
24 <#if groupField(product,"/entity/relationships/faqs", groupId)?has_content>
25 <#assign faqs = groupField(product,"/entity/relationships/faqs", groupId).references >
26 </#if>
27 </#if>
28
29 </#list>
30
31<#if documents?has_content || reviews?has_content || faqs?has_content>
32
33<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-blue-darker product-page-downloads" id="section-downloads"/>
34 <#assign reviewColContent = "" />
35 <#assign downloadColContent = "" />
36 <#assign documentColContent = "" />
37 <#assign documentType = "">
38<#list products as product>
39 <#assign documentsDocumentTypes = ["operating manual", "guide", "other manual", "brochure", "catalogue", "datasheet", "software release note"]>
40 <#assign downloadsDocumentTypes = ["line drawing","simulation file", "test signal", "software realese note", "certificate", "technical paper", "article or publication"]>
41 <#assign reviewsDocumentTypes = ["review"]>
42
43 <#if product.getField(profile, "/entity/relationships/documents")?has_content>
44 <#assign documents = product.getField(profile, documentPath) >
45 </#if>
46 <#if product.getField(profile, reviewsPath)?has_content>
47 <#assign reviews = product.getField(profile, reviewsPath) >
48 </#if>
49 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
50 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
51 </#if>
52
53<#if product.getField(profile, "/entity/relationships/documents")?has_content>
54 <#list documents.iterator() as document>
55
56 <#if !document.properties.isNull("documentTypeKey")>
57 <#assign documentType = localizeField(document.properties.documentTypeKey)?lower_case>
58 <#elseif !document.properties.isNull("documentType")>
59 <#assign documentType = localizeField(document.properties.documentType)?lower_case>
60 </#if>
61 <#if !document.assets.file.isNull("mediaType")>
62 <#assign mediaType = document.assets.file.mediaType?replace(".","/")>
63 </#if>
64
65
66 <#if downloadsDocumentTypes?seq_contains(documentType)>
67 <#assign downloadColContent>
68 ${downloadColContent}
69 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
70 <#if mediaType?keep_after_last("/") = "pdf">
71 <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>
72 <#else>
73 <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>
74 </#if>
75 </a>
76 </#assign>
77
78 <#elseif documentsDocumentTypes?seq_contains(documentType)>
79 <#if !documentColContent?contains(document.assets['file'].url)>
80 <#assign documentColContent>
81 ${documentColContent}
82 <a href="${document.assets['file'].url}" target="_blank" rel="noopener noreferrer" class="type-${documentType?replace(" ", "-")}">
83 <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>
84 </a>
85 </#assign>
86 </#if>
87 </#if>
88
89 </#list>
90</#if>
91<#if product.getField(profile, reviewsPath)?has_content>
92 <#if reviews?has_content>
93 <#list reviews.iterator() as review>
94 <#assign id = review.id>
95 <#assign reviewColContent>
96 ${reviewColContent}
97 <#if !review.properties.isNull("url")>
98 <a href="${review.properties.url}" target="_blank" rel="noopener noreferrer" class="type-review">
99 <span class="text-bolder">${review.properties.heading}<span style="white-space: nowrap"> <@linkIcon cssClasses="icon tiny-icon" alt="" icon="external-green"/></span></span>
100 </a>
101 <#else>
102 <a href="#/" onClick="openDocumentReviewPopup('${id}')" class="type-review">
103 <span class="text-bolder">
104 ${review.properties.heading}
105 </span>
106 </a>
107 </#if>
108 </#assign>
109 </#list>
110 </#if>
111 </#if>
112</#list>
113
114 <div class="row bg-white table-row-padding">
115
116 <div class="col-lg-4">
117 <#if documentColContent?has_content>
118 <h3><@liferay.language key="documents"/></h3>
119 ${documentColContent}
120 </#if>
121
122 </div>
123
124 <div class="col-lg-4">
125 <#if downloadColContent?has_content>
126 <h3><@liferay.language key="downloads"/></h3>
127 ${downloadColContent}
128 </#if>
129 </div>
130
131
132 <div class="col-lg-4">
133 <#if reviewColContent?has_content>
134 <h3><@liferay.language key="reviews"/></h3>
135 ${reviewColContent}
136 </#if>
137 </div>
138
139 </div>
140
141 <#assign faqCounter = 0 >
142 <#assign showFAQCount = 3 >
143
144 <#list products as product>
145 <#if product.getField(profile, "/entity/relationships/faqs")?has_content>
146 <#assign faqs = product.getField(profile, "/entity/relationships/faqs") >
147 <#if groupField(product,"/entity/relationships/faqs", groupId)?has_content>
148 <#assign faqs = groupField(product,"/entity/relationships/faqs", groupId).references >
149 </#if>
150
151
152
153
154 <#list faqs.iterator() as faq>
155 <#assign id = faq.id>
156
157 <#if faqCounter == 0>
158 <div id="faqs" class="row bg-white table-row-padding">
159 <div class="col-lg-7">
160 <h3><@liferay.language key="faq"/></h3>
161 </#if>
162
163 <div class="faq_element <#if faqCounter gte showFAQCount>hidden</#if> ">
164 <div class="faq_element_question col-lg-12" onclick="faqShowAnswer('${id}');">
165
166 <i class="icon-plus-sign" id="faq-plus-${id}"></i>
167 <i class="icon-minus-sign" id="faq-minus-${id}" style="display: none;"></i>
168
169 <#assign question = faq.properties.question >
170 <a href="#faq_element_answer" class="ml-4"><h4 class="text-bolder">${question}</h4></a>
171 </div>
172 <div class="faq_element_answer ml-4" id="faq-element-answer-${id}">
173 <#assign answer = cmsContentFormatterService.getMarkdown(faq.properties.answer)>
174 ${answer?replace('h1>|h2>', 'h5>', 'r')?replace('h3>', 'h6>')}
175 </div>
176 </div>
177 <#assign faqCounter = faqCounter + 1 >
178 </#list>
179
180 <#if faqCounter == (showFAQCount - 1)>
181 </div>
182 </div>
183 </#if>
184
185 </#if>
186 </#list>
187 <#if faqCounter gt showFAQCount>
188 <a href="#" onclick="$('#faqs .hidden').removeClass('hidden'); $(this).hide();return false;"><@liferay.language key="show-more"/></a>
189 </#if>
190<@sectionFooter/>
191
192
193<#-- Popup -->
194<div id="theme-popupDocumentReview" class="popup">
195<#list products as product>
196<#if product.getField(profile, reviewsPath)?has_content>
197<#assign reviews = product.getField(profile, reviewsPath) >
198 <#list reviews.iterator() as review>
199 <#assign id = review.id>
200
201 <#if review?index == 0 && product?index == 0>
202 <div class="close-button-container">
203 <button class="close" onClick="closeDocumentReviewPopup('${id}')" id="closeButtonDocumentReview-${id}"></button>
204 </div>
205
206 <div class="panel popup-content" id="popupContentDocumentReview">
207 <div class="panel-body">
208 </#if>
209
210 <div class="documentReviewContent" id="documentReviewContent-${id}">
211 <div class="h1" class="section-heading text-bolder">${review.properties.heading}</div>
212 <#if !review.properties.isNull("summary")>
213 <#assign summary = cmsContentFormatterService.getMarkdown(review.properties.summary)>
214 ${summary}
215 </#if>
216
217 <#if !review.properties.isNull("content")>
218 <#assign content = cmsContentFormatterService.getMarkdown(localizeField(review.properties.content, profile.getCMSLangCode()))>
219 ${content}
220 </#if>
221 </div>
222
223 <#if review?index == (review?size - 1)>
224 </div>
225 </div>
226 </#if>
227
228 </#list>
229 </#if>
230 </#list>
231</div>
232
233
234<style>
235 .hidden {
236 display: none;
237 }
238 .faq_element i {
239 float: left;
240 line-height: 1.5em;
241 color: #007a53;
242 }
243
244 .documentReviewContent {
245 display:none;
246}
247
248.documentReview-close-button {
249 display: none;
250}
251
252</style>
253
254<script>
255function faqShowAnswer(id){
256
257 var wasHidden = $("#faq-element-answer-"+id).is(":hidden");
258
259 // Close all
260 $("#faqs .faq_element_answer").hide();
261 $("#faqs .icon-plus-sign").show();
262 $("#faqs .icon-minus-sign").hide();
263
264 if (wasHidden) {
265 var answer = $("#faq-element-answer-"+id);
266 $("#faq-plus-"+id).hide();
267 $("#faq-minus-"+id).show();
268 answer.show();
269 console.log(answer.parent().find(".faq_element_question"));
270 if(!inViewport(answer.parent().find(".faq_element_question").first())) {
271
272 var scrollFix = 10; // some margin
273 var questionPos = answer.parent().find(".faq_element_question").first().offset().top;
274
275 // ControlBar
276 if ($("#ControlMenu").is(":visible")) {
277 scrollFix += $("#ControlMenu").height();
278 }
279
280 // subnavi
281 if ($("#submenu-links").is(":visible")) {
282 scrollFix += $("#submenu-links").height();
283 }
284
285 var scrollTo = questionPos - scrollFix;
286
287 $('html, body').animate({
288 scrollTop: (scrollTo-1)
289 },500, function(){
290 setTimeout(function() {
291 $('html, body').scrollTop(scrollTo);
292 }, 200);
293 });
294 }
295
296 }
297};
298
299function openDocumentReviewPopup(reviewId) {
300 openPopup("DocumentReview");
301 $('#documentReviewContent-'+reviewId).show();
302
303 //update:
304 $('.close').attr('id','closeButtonDocumentReview-'+reviewId);
305 $('.close').attr('onclick', 'closeDocumentReviewPopup("' + reviewId + '")');
306 $('#closeButtonDocumentReview-'+reviewId).show();
307}
308
309function closeDocumentReviewPopup(reviewId) {
310 closePopup("DocumentReview");
311 $('#documentReviewContent-'+reviewId).hide();
312
313 //update:
314 $('#closeButtonDocumentReview-'+reviewId).hide();
315}
316
317// close popup when clicking outside of the element
318function closeSolutionDownloadsPopup(e) {
319 if(!$('#popupContent'+"DocumentReview").is(e.target) &&
320 $('#popupContent'+"DocumentReview").has(e.target).length == 0 &&
321 $(e.target).attr('class') != 'close' &&
322 $('#theme-popup'+"DocumentReview").css("display") == "block"){
323 closePopup("DocumentReview");
324 $('div[id^=documentReviewContent-]').hide();
325 }
326};
327
328$(document).on({
329 "mouseup": function (e) { closeSolutionDownloadsPopup(e); },
330 "touchstart": function (e) { closeSolutionDownloadsPopup(e); }
331});
332
333function inViewport(el) {
334 var elementTop = el.offset().top;
335 var elementBottom = elementTop + el.outerHeight();
336
337 var viewportTop = $(window).scrollTop();
338 var viewportBottom = viewportTop + $(window).height();
339
340 return elementBottom > viewportTop && elementTop < viewportBottom;
341}
342</script>
343</#if>
344
345</#if>