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

Vimeo Channel
Collaboration & Knowledge Sharing
18531869
(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/18532650?download=true", alt: "Story1-AddPortletToPage.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18532680?download=true", alt: "Story2-Enter Preferences.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18532710?download=true", alt: "Story3-ListOfVideos.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18532740?download=true", alt: "Story4-CarouselOfVideos.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18532770?download=true", alt: "Story5-SearchVideos.jpg" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18532800?download=true", alt: "Story6-NonExistingChannel.jpg" } ] } 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: '<h2 class="modal-gallery-header" id="modal-header-title"><svg class="lexicon-icon lexicon-icon-picture" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#picture" /></svg> Image <span id="modal-index-display"></span></h2>', 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) + ' jostakin ' + 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(); })();
Descripción
Vimeo Channel portlet was developed by XTIVIA, the 2012, 2013 & 2014 Liferay North America Partner of the Year. Vimeo Channel portlet makes it easy to embed Vimeo videos into Liferay pages. The user channel, number videos and display options can be configured to optimize the visual appearance of the video and allow for things like full screen playback.
This app will appear in your Application menu once installed. You can see the video directly in the popup of the page.

Key Features:
*Displays list of videos for a Vimeo channel.
*Can search videos from the list based on search keywords to display a subset of the original list of videos.
*Displays the video directly in the popup of the page
*Searches for a channel to find a match even if the exact channel name does not exist
*Can configure number of videos, channel summary display, display options, colour font banner and height box.
Vimeo Channel portlet was developed by XTIVIA, the 2012, 2013 & 2014 Liferay North America Partner of the Year. Vimeo Channel portlet makes it easy to embed Vimeo videos into Liferay pages. The user channel, number videos and display options can be configured to optimize the visual appearance of the video and allow for things like full screen playback.
This app will appear in your Application menu once installed. You can see the video directly in the popup of the page.

Key Features:
*Displays list of videos for a Vimeo channel.
*Can search videos from the list based on search keywords to display a subset of the original list of videos.
*Displays the video directly in the popup of the page
*Searches for a channel to find a match even if the exact channel name does not exist
*Can configure number of videos, channel summary display, display options, colour font banner and height box.
DEVELOPER

Desarrollador


Publisher Date

January 23, 2024


Deployment Method

Liferay Self-Hosted

Liferay PaaS


App Type

DXP

Versión

1.0.0.0

Versiones compatibles

6.2

Standard Price

Free

Help and Support


Compartir enlace

DEVELOPER
21/11/24 18:07
Published date
21/11/24 18:07
Published Date
21/11/24 18:07
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
6.2
Resource Requirements
Edition
Community
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.