Публикатор

Забытина Марина Викторовна

Во время обработки запрошенного шаблона произошла ошибка...
The following has evaluated to null or missing:
==> bigPfolderSelectorreview  [in template "222922#222957#12977083" at line 77, column 44]

----
Tip: If the failing expression is known to 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: #elseif folderSelector.getData()?? &&...  [in template "222922#222957#12977083" at line 77, column 5]
----
1<#assign adaptiveMediaId = 'Thumbnail-300x300'> 
2 
3<#assign dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")> 
4<#assign dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")> 
5<#assign DocumentConversionUtil = staticUtil["com.liferay.document.library.kernel.document.conversion.DocumentConversionUtil"]> 
6<#assign JsonFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]> 
7 
8<div class="card-teacher"> 
9    <div class="card-teacher__row"> 
10        <div class="card-teacher__left"> 
11             
12            <#if bigPreview.getData()?? && bigPreview.getData() != ""> 
13	            <img alt="${bigPreview.getAttribute("alt")}" data-fileentryid="${bigPreview.getAttribute("fileEntryId")}" src="${bigPreview.getData()}" /> 
14            </#if> 
15             
16            <div class="card-teacher__social"> 
17                <#if vk.getData()?? && vk.getData() != ""> 
18                <a class="card-teacher__vk" href="${vk.getData()}" title="Вконтакте" target="_blank"> 
19                    <@icon_vk /> 
20                </a> 
21                </#if> 
22                 
23                <#if whatsapp.getData()?? && whatsapp.getData() != ""> 
24                <a class="card-teacher__whatsapp" href="${whatsapp.getData()}" title="Whatsapp" target="_blank"> 
25                    <@icon_whatsapp /> 
26                </a> 
27                </#if> 
28                 
29                <#if odnoklas.getData()?? && odnoklas.getData() != ""> 
30                <a class="card-teacher__odnoklas" href="${odnoklas.getData()}" title="Одноклассники" target="_blank"> 
31                    <@icon_odnoklas /> 
32                </a> 
33                </#if> 
34                 
35                <#if viber.getData()?? && viber.getData() != ""> 
36                <a class="card-teacher__viber" href="${viber.getData()}" title="Viber" target="_blank"> 
37                    <@icon_viber /> 
38                </a> 
39                </#if> 
40                 
41                <#if telegram.getData()?? && telegram.getData() != ""> 
42                <a class="card-teacher__telegram" href="${telegram.getData()}" title="Telegram" target="_blank"> 
43                    <@icon_telegram /> 
44                </a> 
45                </#if> 
46                 
47                <#if websiteUrl??> 
48                    <#if websiteUrl.getSiblings()?has_content> 
49	                    <#list websiteUrl.getSiblings() as cur_websiteUrl> 
50	                        <a class="card-teacher__telegram" href="${cur_websiteUrl.getData()}" title="Персональный сайт" target="_blank"> 
51                                <@icon_website /> 
52                            </a> 
53	                    	 
54	                    </#list> 
55                    </#if> 
56                </#if> 
57            </div> 
58        </div> 
59        <div class="card-teacher__right"> 
60            <p class="card-teacher__line"><b>ФИО: </b>${fio.getData()}</p> 
61            <p class="card-teacher__line"><b>Должность: </b> ${position.getData()}</p> 
62            <p class="card-teacher__line"><b>Стаж работы: </b>${workExperience.getData()}</p> 
63            <div class="card-teacher__about"> 
64                <h5>О себе:</h5> 
65                ${about.getData()} 
66            </div> 
67        </div> 
68         
69    </div> 
70     
71    <#if bigPreview.getData()?? && bigPreview.getData() != ""> 
72        <#assign bigPreviewUrl = bigPreview.getData()> 
73        <#assign bigPreviewUuid = bigPreviewUrl?keep_after_last("/")?keep_before_last("?")> 
74        <#assign bigPreviewGroupId = bigPreviewUrl?keep_after("/")?keep_after("/")?keep_before("/")?number> 
75        <#assign bigPreviewFileEntry = dlAppService.getFileEntryByUuidAndGroupId(bigPreviewUuid, bigPreviewGroupId)> 
76        <#assign personalFolder = bigPreviewFileEntry.getFolder()> 
77    <#elseif folderSelector.getData()?? && bigPfolderSelectorreview.getData() != ""> 
78        <#assign folderSelectorUrl = folderSelector.getData()> 
79        <#assign folderSelectorUuid = folderSelectorUrl?keep_after_last("/")?keep_before_last("?")> 
80        <#assign folderSelectorGroupId = folderSelectorUrl?keep_after("/")?keep_after("/")?keep_before("/")?number> 
81        <#assign folderSelectorFileEntry = dlAppService.getFileEntryByUuidAndGroupId(folderSelectorUuid, folderSelectorGroupId)> 
82        <#assign personalFolder = bigPreviewFileEntry.getFolder()> 
83    </#if> 
84 
85    <#if personalFolder?has_content > 
86        <#assign contentFolders = dlAppService.getFolders(personalFolder.getGroupId(), personalFolder.getFolderId())> 
87        <div class="card-teacher__bottom"> 
88             
89            <#if youtubeUrl??> 
90                <#if youtubeUrl.getSiblings()?has_content> 
91                    <div class="card-teacher__videos"> 
92        	        <#list youtubeUrl.getSiblings() as cur_youtubeUrl> 
93                        <#if youtubeUrl.getData()?? && youtubeUrl.getData() != ""> 
94        	            	<div class="card-teacher__video"> 
95            	            	<iframe width="100%" height="100%" src="${cur_youtubeUrl.getData()}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> 
96                                </iframe> 
97        	            	</div> 
98                        </#if> 
99        	        </#list> 
100                    </div> 
101                </#if> 
102            </#if> 
103             
104             
105            <#list contentFolders?filter(folder -> folder.getName()?starts_with('[D'))?sort_by('name') as documentsFolder > 
106                <#attempt> 
107                    <#assign documentFolders = dlAppService.getFolders(documentsFolder.getGroupId(), documentsFolder.getFolderId()) > 
108                <#recover> 
109                    <#assign documentFolders = [] > 
110                </#attempt> 
111                <#if documentFolders?size gt 0> 
112                    <div class="card-teacher__bottom-t"> 
113                        <h3 class="card-teacher-title">${documentsFolder.getName()?keep_after(']')?trim}</h3> 
114                        <#list documentFolders as documentFolder> 
115                            <#assign documentEntries = dlAppService.getFileEntries(documentFolder.getGroupId(), documentFolder.getFolderId())> 
116                             
117                            <#if documentEntries?size gt 0> 
118                                <div class="card-teacher__documents accordion"> 
119                                    <div class="item"> 
120                                        <header class="portlet-header"> 
121                                            <h5>${documentFolder.getName()}</h5> 
122                                        </header> 
123                                        <ul class="text"> 
124                                            <#list documentEntries as documentEntry> 
125                                                <#assign documentExtension = documentEntry.getExtension()> 
126                                                <#assign downloadUrl = dlURLHelper.getDownloadURL(documentEntry, documentEntry.getFileVersion(),     themeDisplay, '')> 
127                                                <#assign isDocumentConvertible = DocumentConversionUtil.isEnabled() && (DocumentConversionUtil    .getConversions(documentExtension)?seq_contains      ('pdf'    ))/> 
128                                                 
129                                                <#assign target = ''/> 
130                                                <#if isDocumentConvertible> 
131                                                    <#assign downloadUrl = downloadUrl?replace('&download=true', '')/> 
132                                                    <#assign downloadUrl = downloadUrl + '&targetExtension=pdf'/> 
133                                                    <#assign target = 'target="_blank"'/> 
134                                                </#if> 
135                                                <#if documentExtension == 'pdf'> 
136                                                    <#assign downloadUrl = downloadUrl?replace('&download=true', '')/> 
137                                                    <#assign target = 'target="_blank"'/> 
138                                                </#if> 
139                                 
140                                                <#if documentEntry.getDescription()?has_content> 
141                                                    <#assign entityTitle = documentEntry.getDescription()/> 
142                                                <#else> 
143                                                    <#assign entityTitle = documentEntry.getTitle()/> 
144                                                </#if> 
145                                                 
146                                                <li><a href="${downloadUrl}" ${target}>${entityTitle}</a></li> 
147                                            </#list> 
148                                        </ul> 
149                                    </div> 
150                                </div> 
151                            </#if> 
152                        </#list> 
153                    </div> 
154                </#if> 
155            </#list> 
156 
157            <#list contentFolders?filter(folder -> folder.getName()?starts_with('[G'))?sort_by('name') as galleriesFolder > 
158                <#attempt> 
159                    <#assign galleryFolders = dlAppService.getFolders(galleriesFolder.getGroupId(), galleriesFolder.getFolderId()) > 
160                <#recover> 
161                    <#assign galleryFolders = [] > 
162                </#attempt> 
163                <#if galleryFolders?size gt 0> 
164                    <div class="card-teacher__bottom-b"> 
165                        <h3 class="card-teacher-title">${galleriesFolder.getName()?keep_after(']')?trim}</h3> 
166 
167                        <#list galleryFolders as galleryFolder> 
168                            <#assign albumEntries = dlAppService.getFileEntries(galleryFolder.getGroupId(), galleryFolder.getFolderId())> 
169                             
170                            <#if albumEntries?size gt 0> 
171                                <#assign imagesGalleryId = 'card-teacher_gallery' + randomNamespace + galleryFolder.getFolderId()> 
172                                <div class="card-teacher__gallery accordion"> 
173                                    <div class="item"> 
174                                        <header class="portlet-header"> 
175                                            <h5 class="card-teacher__gallery-title">${galleryFolder.getName()}</h5> 
176                                        </header> 
177                                        <div class="text" id="${imagesGalleryId}"> 
178                                            <div class="card-teacher__images"> 
179                                                <#list albumEntries as albumEntry> 
180                                                    <#assign alt = albumEntry.getDescription()> 
181                                                    <#assign fileEntryId = albumEntry.getFileEntryId()> 
182                                                    <#assign previewUrl = dlURLHelper.getThumbnailSrc(albumEntry, themeDisplay)> 
183                                                    <#assign downloadUrl = dlURLHelper.getPreviewURL(albumEntry, albumEntry.getFileVersion(), themeDisplay, "")> 
184                                                    <a href="${downloadUrl}" class="card-teacher__image"> 
185                                                        <img src="${previewUrl}" alt="..." /> 
186                                                    </a> 
187                                                </#list> 
188                                            </div> 
189                                        </div> 
190                                    </div> 
191                                    <#assign imageViewerSelector = '#' + imagesGalleryId + ' .card-teacher__image'> 
192                                    <@imageViewer imageViewerSelector /> 
193                                </div> 
194                            </#if> 
195                        </#list> 
196                    </div> 
197                </#if> 
198            </#list> 
199        </div> 
200    </#if> 
201</div> 
202 
203 
204 
205<style> 
206    .card-teacher__row { 
207        display: flex; 
208        gap: 30px; 
209
210    .card-teacher__row:first-child { 
211        margin-bottom: 30px; 
212
213    .card-teacher__left { 
214        flex: 0 0 auto;    
215
216    .card-teacher__left img{ 
217        overflow: hidden; 
218        max-width: 300px !important; 
219
220    .card-teacher__bottom-t { 
221        margin-bottom: 50px; 
222
223    .card-teacher__bottom .card-teacher__bottom-b:not(:last-child) { 
224        margin-bottom: 50px; 
225
226    .card-teacher__gallery:not(:last-child) { 
227      margin-bottom: 15px; 
228
229    .card-teacher__gallery-title { 
230        margin-bottom: 10px; 
231
232    .card-teacher__images { 
233        display: grid; 
234        grid-template-columns: repeat(4, 1fr); 
235        grid-gap: 20px; 
236        align-items: center; 
237
238    .card-teacher__image img{ 
239        object-fit: contain; 
240        max-height: 300px; 
241
242    .card-teacher__image { 
243        justify-self: center; 
244
245    .card-teacher__documents.accordion { 
246        margin-bottom: 15px; 
247
248    .card-teacher-title { 
249        padding: 0 0 10px 0; 
250
251    .card-teacher__social { 
252        display: flex; 
253        gap: 10px; 
254        margin-top: 15px; 
255        flex-wrap: wrap; 
256        max-width: 230px; 
257
258    .card-teacher__social a { 
259        display: block; 
260
261    .card-teacher__social a svg { 
262        width: 30px; 
263        height: 30px; 
264
265    .carousel-control.image-viewer-base-control { 
266        top: 0; 
267        bottom: 0; 
268        width: 15%; 
269        opacity: 0.5; 
270
271    .carousel-control.image-viewer-base-control-left { 
272      left: 0; 
273
274    .carousel-control.image-viewer-base-control-right { 
275      right: 0; 
276
277    .carousel-control.image-viewer-base-control .glyphicon { 
278      width: 20px; 
279      height: 20px; 
280      display: block; 
281      position: absolute; 
282      top: 50%; 
283      transform: translate(0, -50%); 
284
285    .carousel-control.image-viewer-base-control .lexicon-icon { 
286      position: absolute; 
287      top: 50%; 
288      transform: translate(0, -50%); 
289
290    .carousel-control.image-viewer-base-control .glyphicon-chevron-left { 
291      left: 30px; 
292      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='white' viewBox='0 0 512 512'%3E%3Cpath class='lexicon-icon-outline' d='M114.106 254.607c0.22 6.936 2.972 13.811 8.272 19.11l227.222 227.221c11.026 11.058 28.94 11.058 39.999 0 11.058-11.026 11.058-28.94 0-39.999l-206.333-206.333c0 0 206.333-206.333 206.333-206.333 11.058-11.059 11.058-28.973 0-39.999-11.058-11.059-28.973-11.059-39.999 0l-227.221 227.221c-5.3 5.3-8.052 12.174-8.273 19.111z'%3E%3C/path%3E%3C/svg%3E"); 
293
294    .carousel-control.image-viewer-base-control .glyphicon-chevron-right { 
295      right: 30px; 
296      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' fill='white'%3E%3Cpath class='lexicon-icon-outline' d='M396.394 255.607c-0.22-6.936-2.973-13.81-8.272-19.111l-227.221-227.221c-11.026-11.059-28.94-11.059-39.999 0-11.058 11.026-11.058 28.941 0 39.999l206.333 206.333c0 0-206.333 206.333-206.333 206.333-11.058 11.058-11.058 28.973 0 39.999 11.059 11.059 28.972 11.059 39.999 0l227.221-227.221c5.3-5.3 8.053-12.175 8.272-19.111z'%3E%3C/path%3E%3C/svg%3E"); 
297
298    .carousel-control.image-viewer-base-control:hover { 
299      opacity: 1; 
300
301     
302    .card-teacher__videos { 
303        display: grid; 
304        grid-template-columns: repeat(3, 1fr); 
305        grid-gap: 15px; 
306        margin-bottom: 30px; 
307
308    .card-teacher__video { 
309        height: 260px; 
310
311     
312    @media (max-width: 1199px){ 
313        .card-teacher__videos { 
314            grid-template-columns: repeat(2, 1fr); 
315
316
317    @media (max-width: 991px){ 
318        .card-teacher__images { 
319            grid-template-columns: repeat(3, 1fr); 
320
321
322    @media (max-width: 768px){ 
323        .card-teacher__row { 
324            display: block; 
325             
326
327        .card-teacher__images { 
328            grid-template-columns: repeat(2, 1fr); 
329
330        .card-teacher__videos { 
331            grid-template-columns: 1fr; 
332
333
334     
335     
336</style> 
337 
338 
339<#macro icon_vk> 
340    <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> 
341        <path d="M0 23.04C0 12.1788 0 6.74826 3.37413 3.37413C6.74826 0 12.1788 0 23.04 0H24.96C35.8212 0 41.2517 0 44.6259 3.37413C48 6.74826 48 12.1788 48 23.04V24.96C48 35.8212 48 41.2517 44.6259 44.6259C41.2517 48 35.8212 48 24.96 48H23.04C12.1788 48 6.74826 48 3.37413 44.6259C0 41.2517 0 35.8212 0 24.96V23.04Z" fill="#0077FF"/> 
342        <path d="M25.54 34.5801C14.6 34.5801 8.3601 27.0801 8.1001 14.6001H13.5801C13.7601 23.7601 17.8 27.6401 21 28.4401V14.6001H26.1602V22.5001C29.3202 22.1601 32.6398 18.5601 33.7598 14.6001H38.9199C38.0599 19.4801 34.4599 23.0801 31.8999 24.5601C34.4599 25.7601 38.5601 28.9001 40.1201 34.5801H34.4399C33.2199 30.7801 30.1802 27.8401 26.1602 27.4401V34.5801H25.54Z" fill="white"/> 
343    </svg> 
344</#macro> 
345 
346<#macro icon_whatsapp> 
347    <svg xmlns="http://www.w3.org/2000/svg" aria-label="WhatsApp" role="img" viewBox="0 0 512 512"> 
348        <rect width="512" height="512" rx="15%" fill="#25d366"/> 
349        <path fill="#25d366" stroke="#fff" stroke-width="26" d="M123 393l14-65a138 138 0 1150 47z"/> 
350        <path fill="#fff" d="M308 273c-3-2-6-3-9 1l-12 16c-3 2-5 3-9 1-15-8-36-17-54-47-1-4 1-6 3-8l9-14c2-2 1-4 0-6l-12-29c-3-8-6-7-9-7h-8c-2 0-6 1-10 5-22 22-13 53 3 73 3 4 23 40 66 59 32 14 39 12 48 10 11-1 22-10 27-19 1-3 6-16 2-18"/> 
351    </svg> 
352</#macro> 
353 
354<#macro icon_odnoklas> 
355    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> 
356        <path d="M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z" fill=" #ED760E"/> 
357    </svg> 
358</#macro> 
359 
360<#macro icon_viber> 
361    <svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="48px" height="48px"> 
362        <path fill="#fff" d="M24,5C21.361,5,13.33,5,8.89,9.054C6.246,11.688,5,15.494,5,21v3c0,5.506,1.246,9.312,3.921,11.976 c1.332,1.215,3.148,2.186,5.368,2.857L15,39.047v5.328C15,45,15.181,45,15.241,45c0.123,0,0.32-0.039,0.694-0.371 c0.09-0.089,0.75-0.803,3.96-4.399l0.324-0.363l0.485,0.031C21.779,39.965,22.888,40,24,40c2.639,0,10.67,0,15.11-4.055 C41.753,33.311,43,29.505,43,24v-3c0-5.506-1.246-9.312-3.921-11.976C34.67,5,26.639,5,24,5z"/><path fill="#7e57c2" d="M33.451 28.854c-1.111-.936-1.624-1.219-3.158-2.14C29.654 26.331 28.68 26 28.169 26c-.349 0-.767.267-1.023.523C26.49 27.179 26.275 28 25.125 28c-1.125 0-3.09-1.145-4.5-2.625C19.145 23.965 18 22 18 20.875c0-1.15.806-1.38 1.462-2.037C19.718 18.583 20 18.165 20 17.816c0-.511-.331-1.47-.714-2.109-.921-1.535-1.203-2.048-2.14-3.158-.317-.376-.678-.548-1.056-.549-.639-.001-1.478.316-2.046.739-.854.637-1.747 1.504-1.986 2.584-.032.147-.051.295-.057.443-.046 1.125.396 2.267.873 3.234 1.123 2.279 2.609 4.485 4.226 6.455.517.63 1.08 1.216 1.663 1.782.566.582 1.152 1.145 1.782 1.663 1.97 1.617 4.176 3.103 6.455 4.226.958.472 2.086.906 3.2.874.159-.005.318-.023.477-.058 1.08-.238 1.947-1.132 2.584-1.986.423-.568.74-1.406.739-2.046C33.999 29.532 33.827 29.171 33.451 28.854zM34 24c-.552 0-1-.448-1-1v-1c0-4.962-4.038-9-9-9-.552 0-1-.448-1-1s.448-1 1-1c6.065 0 11 4.935 11 11v1C35 23.552 34.552 24 34 24zM27.858 22c-.444 0-.85-.298-.967-.748-.274-1.051-1.094-1.872-2.141-2.142-.535-.139-.856-.684-.718-1.219.138-.534.682-.855 1.219-.718 1.748.453 3.118 1.822 3.575 3.574.139.535-.181 1.08-.715 1.22C28.026 21.989 27.941 22 27.858 22z"/><path fill="#7e57c2" d="M31,23c-0.552,0-1-0.448-1-1c0-3.188-2.494-5.818-5.678-5.986c-0.552-0.029-0.975-0.5-0.946-1.051 c0.029-0.552,0.508-0.976,1.051-0.946C28.674,14.241,32,17.748,32,22C32,22.552,31.552,23,31,23z"/><path fill="#7e57c2" d="M24,4C19.5,4,12.488,4.414,8.216,8.316C5.196,11.323,4,15.541,4,21c0,0.452-0.002,0.956,0.002,1.5 C3.998,23.043,4,23.547,4,23.999c0,5.459,1.196,9.677,4.216,12.684c1.626,1.485,3.654,2.462,5.784,3.106v4.586 C14,45.971,15.049,46,15.241,46h0.009c0.494-0.002,0.921-0.244,1.349-0.624c0.161-0.143,2.02-2.215,4.042-4.481 C21.845,40.972,22.989,41,23.999,41c0,0,0,0,0,0s0,0,0,0c4.5,0,11.511-0.415,15.784-4.317c3.019-3.006,4.216-7.225,4.216-12.684 c0-0.452,0.002-0.956-0.002-1.5c0.004-0.544,0.002-1.047,0.002-1.5c0-5.459-1.196-9.677-4.216-12.684C35.511,4.414,28.5,4,24,4z M41,23.651l0,0.348c0,4.906-1.045,8.249-3.286,10.512C33.832,38,26.437,38,23.999,38c-0.742,0-1.946-0.001-3.367-0.1 C20.237,38.344,16,43.083,16,43.083V37.22c-2.104-0.505-4.183-1.333-5.714-2.708C8.045,32.248,7,28.905,7,23.999l0-0.348 c0-0.351-0.001-0.73,0.002-1.173C6.999,22.078,6.999,21.7,7,21.348L7,21c0-4.906,1.045-8.249,3.286-10.512 C14.167,6.999,21.563,6.999,24,6.999c2.437,0,9.832,0,13.713,3.489c2.242,2.263,3.286,5.606,3.286,10.512l0,0.348 c0,0.351,0.001,0.73-0.002,1.173C41,22.922,41,23.3,41,23.651z"/> 
363    </svg> 
364</#macro> 
365 
366<#macro icon_telegram> 
367    <svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 48 48" width="48px" height="48px"><path fill="#29b6f6" d="M24 4A20 20 0 1 0 24 44A20 20 0 1 0 24 4Z"/><path fill="#fff" d="M33.95,15l-3.746,19.126c0,0-0.161,0.874-1.245,0.874c-0.576,0-0.873-0.274-0.873-0.274l-8.114-6.733 l-3.97-2.001l-5.095-1.355c0,0-0.907-0.262-0.907-1.012c0-0.625,0.933-0.923,0.933-0.923l21.316-8.468 c-0.001-0.001,0.651-0.235,1.126-0.234C33.667,14,34,14.125,34,14.5C34,14.75,33.95,15,33.95,15z"/><path fill="#b0bec5" d="M23,30.505l-3.426,3.374c0,0-0.149,0.115-0.348,0.12c-0.069,0.002-0.143-0.009-0.219-0.043 l0.964-5.965L23,30.505z"/><path fill="#cfd8dc" d="M29.897,18.196c-0.169-0.22-0.481-0.26-0.701-0.093L16,26c0,0,2.106,5.892,2.427,6.912 c0.322,1.021,0.58,1.045,0.58,1.045l0.964-5.965l9.832-9.096C30.023,18.729,30.064,18.416,29.897,18.196z"/> 
368    </svg> 
369</#macro> 
370 
371<#macro icon_website> 
372    <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/></g><g><g/><path d="M20,4H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4z M4,9h10.5v3.5H4V9z M4,14.5 h10.5V18L4,18V14.5z M20,18l-3.5,0V9H20V18z"/></g> 
373    </svg> 
374</#macro> 
375 
376<#macro imageViewer selector> 
377    <script> 
378        YUI().use( 
379          'aui-image-viewer', 
380          function(Y) { 
381            let imageViewer = new Y.ImageViewer( 
382
383                caption: 'Фотогалерея', 
384                captionFromTitle: true, 
385                centered: true, 
386                imageAnim: { 
387                 duration: 1, 
388                 easing: 'easeIn' 
389                }, 
390                intervalTime: 2, 
391                links: '${selector}', 
392                playing: false, 
393                // controlNext: '<span>1212</span>', 
394                // controlPrevious: , 
395                preloadAllImages: false, 
396                preloadNeighborImages: false, 
397                showInfo: true, 
398                showPlayer: true, 
399                zIndex: 223 
400
401
402 
403             
404            imageViewer.render(); 
405
406        ); 
407    </script> 
408</#macro>