Редактировал(а) Alexey Semenihin 24.06.2025

Последние авторы
1 **[[Видеоинструкция >>Видеоинструкция]]**
2
3 {{velocity}}
4
5 ## Подключаем необходимые JS/CSS для работы вкладок
6 $xwiki.jsfx.use('uicomponents/widgets/tabView.js', {'forceSkinAction': true, 'language': 'xwiki/2.1'})
7 $xwiki.ssfx.use('uicomponents/widgets/tabView.css', true)
8 {{html}}
9 <script>
10 // Ждём загрузки DOM
11 document.observe("dom:loaded", function() {
12 // Находим ссылку на вкладку "Вложения" (по ID или тексту)
13 var attachmentsTab = $('Attachmentslink');
14
15 // Если вкладка найдена, имитируем клик
16 if (attachmentsTab) {
17 attachmentsTab.click();
18 }
19 // Альтернативный вариант (если не сработал ID):
20 else {
21 var tabs = $$('.tab-menu a').find(function(tab) {
22 return tab.textContent.trim().includes('Вложения');
23 });
24 if (tabs && tabs.length > 0) tabs[0].click();
25 }
26 });
27 </script>
28 {{/html}}
29 {{/velocity}}
30
31 {{velocity}}
32 #set($attachments = $doc.getAttachmentList())
33 #foreach($attachment in $attachments)
34 #set($filename = $attachment.filename)
35 #set($fileurl = $doc.getAttachmentURL($filename))
36 #set($fileExt = $filename.substring($filename.lastIndexOf('.') + 1).toLowerCase())
37
38 ## Определяем тип файла
39 #set($isPdf = $fileExt == 'pdf')
40 #set($isImage = $fileExt == 'png' || $fileExt == 'jpg' || $fileExt == 'jpeg' || $fileExt == 'gif' || $fileExt == 'bmp' || $fileExt == 'svg')
41 #set($isOffice = $fileExt == 'doc' || $fileExt == 'docx' || $fileExt == 'xls' || $fileExt == 'xlsx' || $fileExt == 'ppt' || $fileExt == 'pptx' || $fileExt == 'odt' || $fileExt == 'ods' || $fileExt == 'odp')
42
43 ## Обрабатываем только поддерживаемые форматы
44 #if($isPdf || $isImage )
45
46 ===Документ: ${attachment.filename}===
47
48 #if($isPdf)
49 {{html}}
50 <div class="pdf-viewer-container">
51 <iframe
52 src="/resources/pdfjs/web/viewer.html?file=${fileurl}"
53 width="100%"
54 height="750px">
55 </iframe>
56 </div>
57 {{/html}}
58
59 #elseif($isImage)
60 [[image:${attachment.filename}]]
61
62 #elseif($isOffice)
63
64
65 #end
66 #end
67 #end
68
69 {{html}}
70 <style>
71 .pdf-viewer-container {
72 margin: 20px 0;
73 border: 1px solid #eee;
74 padding: 10px;
75 background: #f9f9f9;
76 }
77
78 /* Стили для изображений */
79 .image-wrapper {
80 max-width: 100%;
81 margin: 10px 0;
82 }
83
84 /* Стили для офисных документов */
85 .office-document {
86 border: 1px solid #ddd;
87 margin: 15px 0;
88 min-height: 500px;
89 }
90 </style>
91 {{/html}}
92 {{/velocity}}