Интервью и выступления - Прокуратура Челябинской области
Интервью и выступления
Во время обработки запрошенного шаблона произошла ошибка...
Java method "ru.voskhod.gpparf.organization.liferay.common.api.service.impl.OrganizationServiceImpl.getPersonByUuid(String)" threw an exception when invoked on ru.voskhod.gpparf.organization.liferay.common.api.service.impl.OrganizationServiceImpl object "ru.voskhod.gpparf.organization.liferay.common.api.service.impl.OrganizationServiceImpl@4191811a"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign respond = organizationService... [in template "20100#20136#2378626" at line 71, column 17] ----
1<#assign gpparf=PortalJspTagLibs["/META-INF/gpparf-translate.tld"]>
2
3<#assign ctx = serviceLocator.findService("ru.voskhod.gpparf.portal.feeds.main.page.portlet.util.FeedsTemplateRenderUtil").buildContext(.vars) />
4
5<#assign tagList = templateUtil.getArticleTagsWithId(groupId, ctx.journalArticleId, locale)/>
6<#assign catList = templateUtil.getNewsCategoriesWithId(groupId, ctx.journalArticleId, locale)/>
7
8<#assign url = themeDisplay.getPortalURL()/>
9
10
11<#--todo:: перенести в buildContext-->
12<#if gp_media_file?? && gp_media_file.getSiblings()?has_content>
13 <#assign audioList = ddmService.getAudioFiles(gp_media_file.getSiblings()) />
14 <#assign videoList = ddmService.getVideoFiles(gp_media_file.getSiblings()) />
15</#if>
16
17<#assign imagesList = [] />
18<#if gp_images?? && gp_images.getSiblings()?has_content >
19 <#list gp_images.getSiblings() as cur_gp_images>
20 <#if cur_gp_images.getData()?? && cur_gp_images.getData() != "">
21 <#assign imagesList = imagesList + [cur_gp_images] />
22 </#if>
23 </#list>
24</#if>
25
26
27
28<#assign mediaFileCount = 0 />
29<#if gp_media_file?? && gp_media_file?has_content && gp_media_file.getSiblings()?has_content>
30 <#list gp_media_file.getSiblings() as cur_gp_media>
31 <#if cur_gp_media.data?? && cur_gp_media.data?has_content>
32 <#assign mediaFileCount = mediaFileCount + 1 />
33 </#if>
34 </#list>
35</#if>
36
37<#assign attachmentCount = 0 />
38<#if gp_attachment?? && gp_attachment?has_content && gp_attachment.getSiblings()?has_content>
39 <#list gp_attachment.getSiblings() as cur_gp_attachment>
40 <#if cur_gp_attachment.data?? && cur_gp_attachment.data?has_content>
41 <#assign attachmentCount = attachmentCount + 1 />
42 </#if>
43 </#list>
44</#if>
45
46<style>
47 button:focus {
48 outline: unset;
49 }
50
51 .a_custom {
52 padding-top: 10px !important;
53 color: white;
54 }
55
56 .a_custom:hover, .a_custom:focus {
57 color: #ffffff;
58 text-decoration: none;
59 outline: unset;
60 }
61</style>
62
63<div class="feeds-page__header">
64 <ul class="feeds-page__info">
65 <#if ctx.datetimePubFieldFormatted?has_content>
66 <li class="feeds-page__info_item">${ctx.datetimePubFieldFormatted}</li>
67 </#if>
68 <#if gp_person_uid.getData()?has_content>
69 <#assign respondName = organizationService.getPersonNameByUuid(gp_person_uid.getData())/>
70 <#if respondName?has_content>
71 <#assign respond = organizationService.getPersonByUuid(gp_person_uid.getData())/>
72 <li class="feeds-page__info_item">
73 <#assign personUrl = "/web" + themeDisplay.getSiteGroup().getFriendlyURL() + "/about-the-proc/management/" + gp_person_uid.getData()/>
74
75 <#if respond.externalPortalVisible && respond.status== "ACTIVE">
76 <a href="${personUrl}" title="" class="feeds-page__info_link">
77 ${respondName}
78 </a>
79 <#else>
80 <span class="feeds-page__info_link">
81 ${respondName}
82 </span>
83 </#if>
84 </li>
85 </#if>
86 </#if>
87 </ul>
88 <div class="feeds-page__subtitle" id="text_printprw">${ctx.journalArticleTitle}</div>
89</div>
90<div class="feeds-page__body">
91 <div class="feeds-page__navigation">
92 <#if gp_content?has_content>
93 <div class="feeds-page__navigation_item text-item is-active"
94 onclick="openTab('feeds-page__article_text_block', 'text-item')">
95 <span class="feeds-page__navigation_icon is-text"> </span>
96 <span class="feeds-page__navigation_tooltip">
97 <@gpparf.translate key="feeds.tab.text" />
98 </span>
99 </div>
100 </#if>
101 <#if (imagesList?size > 0)>
102 <div class="feeds-page__navigation_item photo-item"
103 onclick="openTab('feeds-page__article_gallery', 'photo-item')">
104 <span class="feeds-page__navigation_icon is-image"> </span>
105 <span class="feeds-page__navigation_badge">${imagesList?size}</span>
106 <span class="feeds-page__navigation_tooltip">
107 <@gpparf.translate key="feeds.tab.photo" />
108 </span>
109 </div>
110 </#if>
111 <#if (mediaFileCount > 0)>
112 <div class="feeds-page__navigation_item media-item"
113 onclick="openTab('feeds-page__article_media', 'media-item')">
114 <span class="feeds-page__navigation_icon is-video"> </span>
115 <span class="feeds-page__navigation_badge">${mediaFileCount}</span>
116 <span class="feeds-page__navigation_tooltip">
117 <@gpparf.translate key="feeds.tab.media" />
118 </span>
119 </div>
120 </#if>
121 <#if (attachmentCount > 0)>
122 <div class="feeds-page__navigation_item attach-item"
123 onclick="openTab('feeds-page__article_file', 'attach-item')">
124 <span class="feeds-page__navigation_icon is-attach"> </span>
125 <span class="feeds-page__navigation_badge">${attachmentCount}</span>
126 <span class="feeds-page__navigation_tooltip">
127 <@gpparf.translate key="feeds.tab.attach" />
128 </span>
129 </div>
130 </#if>
131 <#if !ctx.internal>
132 <div class="feeds-page__navigation_item share-item"
133 onclick="openTab('feeds-page__article_share', 'share-item')">
134 <span class="feeds-page__navigation_icon is-share"> </span>
135 <span class="feeds-page__navigation_tooltip">
136 <@gpparf.translate key="feeds.tab.share" />
137 </span>
138 </div>
139 </#if>
140 </div>
141 <div class="feeds-page__article">
142 <#if gp_content?has_content>
143 <div class="feeds-page__article_text_block">
144 <#if (imagesList?size > 0)>
145 <div class="feeds-page__article_image">
146 <div class="feeds-page__article_image-viewport">
147 <div class="feeds-page__article_image-list">
148 <#list imagesList as cur_gp_image>
149 <#if cur_gp_image.getAttribute("alt")??>
150 <#assign img_alt = cur_gp_image.getAttribute("alt")/>
151 <#else>
152 <#assign img_alt = ""/>
153 </#if>
154
155 <#if cur_gp_image.getAttribute("displaySource")?? && cur_gp_image.getAttribute("displaySource") == "true">
156 <#assign img_src = cur_gp_image.getData()/>
157 <#else>
158 <#assign img_src = "/o/adaptive-media/image/" + cur_gp_image.getAttribute("fileEntryId") + "/news/img"/>
159 </#if>
160
161 <div class="feeds-page__article_image-item">
162 <img src="${img_src}" alt="${img_alt}">
163 </div>
164 </#list>
165 </div>
166 </div>
167 <div class="feeds-page__article_image-buttons">
168 <span class="feeds-page__article_image-arr to-left"> </span>
169 <span class="feeds-page__article_image-arr to-right"> </span>
170 </div>
171 <div class="feeds-page__article_image-counter">
172 </div>
173 </div>
174 </#if>
175
176
177 <div class="feeds-page__article_text">
178 ${gp_content.getData()}
179 </div>
180
181 <div class="feeds-page__article_buttons">
182 <a href="" class="button size-s a_custom" aria-label="<@gpparf.translate key="feeds.print" />"
183 id="button_printprw"><@gpparf.translate key="feeds.print" />
184 </a>
185 </div>
186 </div>
187 </#if>
188
189 <!-- Images begin -->
190 <#if (imagesList?size > 0)>
191 <div class="feeds-page__article_gallery" style="display: none">
192 <h4 class="feeds-page__article_gallery-title">${gp_images.getSiblings()?size} <@gpparf.translate key="feeds.photo" /></h4>
193 <ul class="feeds-page__article_gallery-list">
194 <#list imagesList as cur_gp_image>
195 <#if cur_gp_image.getAttribute("alt")??>
196 <#assign img_alt = cur_gp_image.getAttribute("alt")/>
197 <#else>
198 <#assign img_alt = ""/>
199 </#if>
200
201 <#if cur_gp_image.getAttribute("displaySource")?? && cur_gp_image.getAttribute("displaySource") == "true">
202 <#assign img_src = cur_gp_image.getData()/>
203 <#else>
204 <#assign img_src = "/o/adaptive-media/image/" + cur_gp_image.getAttribute("fileEntryId") + "/news/img"/>
205 </#if>
206
207 <a data-epp-photo-modal="feeds-images"
208 data-title="${img_alt}"
209 href="${img_src}">
210 <li class="feeds-page__article_gallery-item one-new-slider__item swiper-slide"
211 style="background-image: url('${img_src}')"
212 >
213 </li>
214 </a>
215 </#list>
216 </ul>
217 </div>
218 </#if>
219 <!-- Images end -->
220
221
222 <!-- Media -->
223 <#if (mediaFileCount > 0)>
224 <div class="feeds-page__article_media" style="display: none">
225 <!-- Video slide -->
226 <#if videoList?has_content>
227 <div class="feeds-page__article_video">
228 <h4 class="feeds-page__article_video-title">${videoList?size}
229 <@gpparf.translate key="feeds.tab.video" />
230 </h4>
231 <ul class="feeds-page__article_video-list">
232 <#list videoList as cur_gp_media_file>
233 <#assign url = templateUtil.getImagePath(cur_gp_media_file, themeDisplay) />
234 <#assign previewUrl = url + "&videoThumbnail=1" />
235 <#assign videoSizeTitle = templateUtil.fileSizeFormat(cur_gp_media_file.size, locale)/>
236
237 <#if cur_gp_media_file.description?has_content >
238 <#assign description = cur_gp_media_file.description />
239 <#else>
240 <#assign description = cur_gp_media_file.title />
241 </#if>
242
243 <li class="feeds-page__article_video-item">
244 <div class="feeds-page__article_video-preview">
245 <a data-epp-video-modal="feeds-images"
246 data-title="${description}"
247 data-preview="${previewUrl}"
248 href="${url}"
249 >
250 <span class="feeds-page__article_video-tumb"
251 style="background-image: url('${previewUrl}')"
252 >
253 </span>
254 </a>
255 <p class="feeds-page__article_video-name">
256 <span>
257 ${description}
258 </span>
259 </p>
260 </div>
261 <a href="${url}&download=true" target="_blank" class="button size-s">
262 <@gpparf.translate key="feeds.download" /> [ ${videoSizeTitle} ]
263 </a>
264 </li>
265 </#list>
266 </ul>
267 </div>
268 </#if>
269 <!-- Video slide end -->
270
271 <!-- Audio slide -->
272 <#if audioList?has_content>
273 <div class="feeds-page__article_audio ">
274 <h4 class="feeds-page__article_audio-title">
275 ${audioList?size} <@gpparf.translate key="feeds.tab.audio" />
276 </h4>
277 <ul class="feeds-page__article_audio-list media-audio-wrapper">
278 <#list audioList as cur_gp_media_file>
279 <#assign url = templateUtil.getImagePath(cur_gp_media_file, themeDisplay) />
280 <#assign audioSizeTitle = templateUtil.fileSizeFormat(cur_gp_media_file.size, locale)/>
281
282 <li class="feeds-page__article_audio-item media-a-wrapper">
283 <span class="feeds-page__article_audio-name">
284 <span>
285 <#if cur_gp_media_file.description?has_content >
286 ${cur_gp_media_file.description}
287 <#else>
288 ${cur_gp_media_file.title}
289 </#if>
290 </span>
291 </span>
292 <audio class="feeds_media_player"
293 controls
294 style="max-width:100%;"
295 stretching="auto"
296 pluginPath="js"
297 loop="false"
298 features="['playpause', 'progress', 'current', 'duration', 'tracks', 'volume']"
299 alwaysShowControls="false"
300 pauseOtherPlayers="true"
301 preload="none"
302 >
303 <source src="${url}" type="${cur_gp_media_file.getMimeType()}">
304 </audio>
305 <a href="${url}&download=true" target="_blank" class="button size-s">
306 <@gpparf.translate key="feeds.download" /> [ ${audioSizeTitle} ]
307 </a>
308 </li>
309 </#list>
310 </ul>
311 </div>
312 </#if>
313 <!-- Audio slide end -->
314 </div>
315 </#if>
316 <!-- Media end -->
317
318 <!-- Attachments begin -->
319 <#if (attachmentCount > 0)>
320 <div class="feeds-page__article_file" style="display: none">
321 <#assign numberOfFiles = templateUtil.numberOfFiles(gp_attachment.getSiblings()?size) />
322 <h4 class="feeds-page__article_file-title">${numberOfFiles}</h4>
323 <ul class="feeds-page__article_file-list">
324 <#list gp_attachment.getSiblings() as cur_gp_attachment>
325 <#assign fileSize = ddmService.getFileSizeByDataEntry(locale, groupId, cur_gp_attachment) />
326 <#assign sizeTitle = templateUtil.fileSizeFormat(fileSize, locale)/>
327
328 <#if cur_gp_attachment.data?? && cur_gp_attachment.data?has_content>
329 <#assign fileMeta = jsonFactoryUtil.createJSONObject(cur_gp_attachment.data?replace('\\\\u(....)', '&#x$1;', 'r'))/>
330
331 <li class="feeds-page__article_file-item">
332 <p class="feeds-page__article_file-name">
333 <#if cur_gp_attachment.gp_attachment_description?? && cur_gp_attachment.gp_attachment_description.getData()?has_content>
334 <#assign fileDescription = cur_gp_attachment.gp_attachment_description.getData() />
335 <spna>
336 ${fileDescription}
337 </spna>
338 <#else >
339 <spna>
340 ${fileMeta.getString('title')}
341 </spna>
342 </#if>
343 </p>
344 <a href="${cur_gp_attachment.getData()}&download=true" target="_blank"
345 class="button size-s a_custom">
346 <@gpparf.translate key="feeds.download" /> [ ${sizeTitle} ]
347 </a>
348 </li>
349 </#if>
350 </#list>
351 </ul>
352 </div>
353 </#if>
354
355 <!-- Attachments end -->
356
357 <#if !ctx.internal>
358 <div class="feeds-page__article_share" style="display: none">
359 <span class="feeds-page__article_share-title">
360 <@gpparf.translate key="feeds.direct-link" />
361 </span>
362 <div class="text-field hidden-xs">
363 <div class="text-field__value">
364 <input type="search" class="text-field__input" placeholder="${ctx.repostUrl}"
365 value="${ctx.repostUrl}"
366 readonly>
367 </div>
368 <span class="text-field__help"> </span>
369 </div>
370 <button id="shareButton" class="a_custom button hidden-lg hidden-sm hidden-md size-s"
371 onclick="CopyToClipboard('${ctx.repostUrl}')"
372 >
373 <@gpparf.translate key="feeds.direct-link.copy" />
374 </button>
375
376 <span class="feeds-page__article_share-title">
377 <@gpparf.translate key="feeds.share" />
378 </span>
379 <ul class="feeds-page__article_share-list">
380 <li class="feeds-page__article_share-item">
381 <a href="#" title="" class="feeds-page__article_share-link s_vk">Вконтакте</a>
382 </li>
383 <li class="feeds-page__article_share-item">
384 <a href="#" title="" class="feeds-page__article_share-link s_odnoklassniki">Одноклассники</a>
385 </li>
386 </ul>
387 </div>
388 </#if>
389 </div>
390</div>
391
392<div id="printContent" class="print_data">
393 <div class="print_header">
394 <div class="print__wrapper">
395 <div class="print__logo">
396 <#if !ctx.internal>
397 <img src="/o/gpparf-public/images/logo.png" alt="logo" width="50" height="54">
398 <#else>
399 <img src="/o/gpparf-internal/images/logo.png" alt="logo" width="50" height="54">
400 </#if>
401 <h2 class="print__title">${ctx.procStart}<br><span>${ctx.procEnd}</span></h2>
402 </div>
403 <div class="print_button_wrapper no-print">
404 <a href="#" class="print_button" aria-label="<@gpparf.translate key="feeds.print" />"
405 id="button_print" onclick="self.print()">
406 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="19" viewBox="0 0 24 19">
407 <path fill-rule="evenodd"
408 d="M7 17h10v-7H7v7zm-2 1v-4H0V3h24v11h-5v5H5v-1zm0-9V8h14v4h3V5H2v7h3V9zm0-9h14v2H5V0zm4 13h6v2H9v-2z"></path>
409 </svg>
410 </a>
411 </div>
412 </div>
413 <div class="container">
414 <div class="category__info row">
415 <#if gp_person_uid.getData()?has_content>
416 <#assign respondName = organizationService.getPersonNameByUuid(gp_person_uid.getData())/>
417 <#if respondName?has_content>
418 <#assign respond = organizationService.getPersonByUuid(gp_person_uid.getData())/>
419 <div class="category__item col-xs-12 col-sm-8 col-md-8 col-lg-6">
420 <span class="category__category"><@gpparf.translate key="feeds.source" />:</span>
421 <p class="feeds-page__info_link">
422 ${respondName}
423 </p>
424 </div>
425 </#if>
426 </#if>
427 <div class="category__item col-xs-12 col-sm-4 col-md-4 col-lg-6">
428 <span class="category__category"><@gpparf.translate key="feeds.publication-date" />:</span>
429 <p>${ctx.datetimePubFieldFormatted}</p>
430 </div>
431 </div>
432 </div>
433 </div>
434
435 <section class="one-new__content">
436 <h2 class="one-new__title">${ctx.journalArticleTitle}</h2>
437 <#if gp_content?has_content>
438 <div class="break-word">${gp_content.getData()}</div>
439 </#if>
440 </section>
441 <div class="print_footer">
442 <div class="container">
443 <div class="row">
444 <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
445 © 2003-${.now?string('yyyy')} ${ctx.proc}<br>
446 <@gpparf.translate key="feeds.copyright" />
447 </div>
448 <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
449 <#if ctx.currentUnitContactInfo?has_content>
450 <@gpparf.translate key="feeds.address" />:
451 <#list ctx.currentUnitContactInfo as contact_group>
452 <#list contact_group.contactList as contact>
453 <#if contact.address??>
454 ${contact.address}<br>
455 </#if>
456 <#list contact.contactPointList as point>
457 <#if point.contactPointCategoryCode == "PHONE">
458 <@gpparf.translate key="feeds.phone" />:
459 <a href="tel:${point.value}">${point.value}</a>
460 <br>
461 </#if>
462 </#list>
463 </#list>
464 </#list>
465 </#if>
466 </div>
467 </div>
468 </div>
469 </div>
470</div>
471
472
473<script>
474 (function () {
475 var init = function () {
476 $(".feeds-page__article_share-link").ShareLink({
477 title: '${ctx.journalArticleTitle?js_string}',
478 text: '${ctx.journalArticleTitle?js_string}',
479 image: '${themeDisplay.getPortalURL()}/documents/1664002/1691794/emblem_big%281%29.PNG',
480 url: '${ctx.repostUrl}'
481 });
482
483
484 $("#button_printprw").printPreview({
485 obj2print: '#printContent',
486 width: '980',
487 style: '<style>.print_data{display:block;}</style>',
488 resizable: 'no',
489 status: 'no',
490 title: '${ctx.proc?html}'
491 });
492
493 $("#shareButton").on("click", function () {
494 $(this).html('<@gpparf.translate key="feeds.direct-link.copy-success" />');
495 setTimeout(function () {
496 $("#shareButton").html('<@gpparf.translate key="feeds.direct-link.copy" />');
497 }, 600);
498 });
499
500 $('.feeds_media_player').mediaelementplayer({
501 audioVolume: "vertical",
502 success: function (mediaElement, originalNode, instance2) {
503 mediaElement.pause();
504 mediaElement.load();
505 }
506 });
507
508 <#if (imagesList?size > 0)>
509 eppCarousel.create({
510 containerSelector: '.feeds-page__article_image-list',
511 buttonsSelector: '.feeds-page__article_image-buttons',
512 dotContainerSelector: '.feeds-page__article_image-counter',
513 dotElementClass: '${(imagesList?size > 1 && imagesList?size <= 5)?string('feeds-page__article_image-counter_item', '')}',
514 dotElementTag: 'a',
515 fadeElementSelector: '.feeds-page__article_image_content',
516 infinity: true,
517 });
518 </#if>
519
520 textOverflowDots('.feeds-page__article_video-name span');
521 textOverflowDots('.feeds-page__article_audio-name span');
522 };
523
524 if ($().mediaelementplayer && $().ShareLink && $().printPreview)
525 init();
526 else
527 document.addEventListener("DOMContentLoaded", init);
528 })();
529
530 function openTab(blockName, tabName) {
531
532 var tab = $('.' + tabName);
533
534 if (!tab.hasClass('is-active')) {
535
536 $('.text-item').removeClass('is-active');
537 $('.photo-item').removeClass('is-active');
538 $('.media-item').removeClass('is-active');
539 $('.attach-item').removeClass('is-active');
540 $('.share-item').removeClass('is-active');
541
542 tab.addClass('is-active');
543
544 $('.feeds-page__article_text_block').css('display', 'none');
545 $('.feeds-page__article_gallery').css('display', 'none');
546 $('.feeds-page__article_media').css('display', 'none');
547 $('.feeds-page__article_file').css('display', 'none');
548 $('.feeds-page__article_share').css('display', 'none');
549 $('.' + blockName).css('display', 'block');
550 }
551 }
552
553 document.querySelectorAll('.feeds-page__navigation_item').forEach(function (item) {
554 item.onpointerenter = function (e) {
555 e.target.classList.add('pointer-enter');
556 };
557 item.onpointerleave = function (e) {
558 e.target.classList.remove('pointer-enter');
559 };
560 });
561</script>