This app is not available for purchase in the Marketplace. It is
either no longer available or supported. Please click to get further
information on how to contact the publisher.
(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/18601197?download=true",
alt: "1.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: '
Image
الوصف
The Scheduled job manager is a portlet plugin that displays all Message
Listeners (Quartz Scheduler Jobs) that Liferay portal server is running.
The portal admin can do some actions like pause and resume these jobs or
shutdown the service.
The Scheduled job manager is a portlet plugin that displays all Message
Listeners (Quartz Scheduler Jobs) that Liferay portal server is running.
The portal admin can do some actions like pause and resume these jobs or
shutdown the service.
var contentEl = document.querySelector('#mpLicense');
var tabPanel = contentEl.closest('.tab-panel-item');
var tabTarget = tabPanel.getAttribute('aria-labelledby');
var tabs = contentEl.closest(".component-tabs");
var navLink = tabs.querySelector('#' + tabTarget);
var navItem = navLink.parentElement;
if (contentEl.textContent.trim() === '') {
navItem.classList.add('d-none');
}
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.
يستخدم موقع الويب هذا ملفات تعريف الارتباط
نحن نستخدم ملفات تعريف الارتباط لتقديم محتوى مخصص وتحليل التوجهات وإدارة الموقع وتتبع حركات المستخدم على الموقع وجمع معلومات سكانية عن قاعدة المستخدمين بشكل عام. اقبل جميع ملفات تعريف الارتباط للحصول على أفضل تجربة ممكنة على موقعنا أو إدارة تفضيلاتك.
زيارة سياسة الخصوصية