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