/o//commerce-media/accounts/-1/images/18606368?download=true

Group chat
Collaboration & Knowledge Sharing
18606319
説明
(function () { let currentIndex = 0; let images = []; const carouselNextBtn = document.querySelector('.nav-button.next'); const carouselPrevBtn = document.querySelector('.nav-button.prev'); const carouselMainImage = document.getElementById('main-image'); const thumbnailsContainer = document.querySelector('.thumbnails'); const viewFullGalleryBtn = document.querySelector('.view-full-gallery'); function loadImages() { images = [ { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18445862?download=true", alt: "Image2.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18445890?download=true", alt: "Image3.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18445918?download=true", alt: "Image4.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18445946?download=true", alt: "Image5.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18445974?download=true", alt: "Image6.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18446033?download=true", alt: "Image1.png" } ] } function renderThumbnails() { const maxVisible = 5; let start = currentIndex - 2; if (start < 0) start = 0; if (start > images.length - maxVisible) start = Math.max(images.length - maxVisible, 0); const end = Math.min(images.length, start + maxVisible); thumbnailsContainer.innerHTML = ''; for (let i = start; i < end; i++) { const img = document.createElement('img'); img.className = 'thumbnail' + (i === currentIndex ? ' selected' : ''); img.src = images[i].src; img.alt = images[i].alt; img.dataset.index = i; img.addEventListener('click', () => updateMainImage(i)); thumbnailsContainer.appendChild(img); } } function updateMainImage(index) { currentIndex = index; carouselMainImage.src = images[index].src; carouselMainImage.alt = images[index].alt; carouselPrevBtn.disabled = index === 0; carouselNextBtn.disabled = index === images.length - 1; renderThumbnails(); } function setupNavigationButtons() { carouselPrevBtn.addEventListener('click', () => { if (currentIndex > 0) updateMainImage(currentIndex - 1); }); carouselNextBtn.addEventListener('click', () => { if (currentIndex < images.length - 1) updateMainImage(currentIndex + 1); }); } function setupModalTriggers() { carouselMainImage.addEventListener('click', () => openModalGallery(currentIndex)); if (viewFullGalleryBtn) { viewFullGalleryBtn.addEventListener('click', () => openModalGallery(currentIndex)); } } function openModalGallery(startIndex) { let current = startIndex; const template = document.getElementById('modal-gallery'); const clone = template.content.cloneNode(true); const container = document.createElement('div'); container.appendChild(clone); Liferay.Util.openModal({ bodyHTML: container.innerHTML, center: true, headerHTML: ' ', size: "full-screen", onOpen: () => { const modalContainer = document.querySelector('.modal-content'); if (modalContainer) { modalContainer.classList.add('custom-gallery-modal'); } const modalImage = document.querySelector('[data-role="modal-image"]'); const modalNext = document.querySelector('[data-role="modal-next"]'); const modalPrev = document.querySelector('[data-role="modal-prev"]'); const indexDisplay = document.getElementById('modal-index-display'); function updateModalImage(index) { const img = images[index]; modalImage.src = img.src; modalImage.alt = img.alt; modalNext.disabled = index === images.length - 1; modalPrev.disabled = index === 0; if (indexDisplay) { indexDisplay.textContent = (index + 1) + ' de ' + images.length; } } modalNext.addEventListener('click', () => { if (current < images.length - 1) { current++; updateModalImage(current); } }); modalPrev.addEventListener('click', () => { if (current > 0) { current--; updateModalImage(current); } }); updateModalImage(current); } }); } function main() { loadImages(); setupNavigationButtons(); setupModalTriggers(); updateMainImage(0); } main(); })();
Portlet for group chat conversations.

To run this application, deploy the nl-ou-dlwo-groupchat artifacts from the marketplace, and dependencies (com.liferay.petra.string-1.2.0, commons-beanutils-1.8.2, commons-io-2.6, commons-lang3-3.4, flexjson-3.3, oval-1.90) to Liferay DXP 7.0 EE.

Tested with DE-59.
DEVELOPER

開発者


Publisher Date

January 23, 2024


Deployment Method

Liferay Self-Hosted

Liferay PaaS


App Type

DXP

バージョン

2.0.2

サポート対象のバージョン

7.0

Standard Price

Free

Help and Support


リンクを共有

DEVELOPER
24/11/21 18:34
Published date
24/11/21 18:34
Published Date
24/11/21 18:34
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
7.0
Resource Requirements
Edition
Enterprise
PRICE
Free
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.