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

System Indicator - Colored Admin Background
Utility
30014793
(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/30096264?download=true", alt: "step-one.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/30096287?download=true", alt: "step-two.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/30096309?download=true", alt: "step-three.png" }, { src: "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/30096332?download=true", alt: "banners.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: '<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) + ' van ' + 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ó

If you are working on multiple systems concurrently - e.g. DEV, UAT and PRD, or even multiple independent systems - you might have had opportunities to enter the right data into the wrong system. This app allows you to configure a distinct background color for each system, including a label-background indicating what system you work on. Find the configuration options (any level: Site or Instance or System) under "Look and Feel"

If you are working on multiple systems concurrently - e.g. DEV, UAT and PRD, or even multiple independent systems - you might have had opportunities to enter the right data into the wrong system. This app allows you to configure a distinct background color for each system, including a label-background indicating what system you work on. Find the configuration options (any level: Site or Instance or System) under "Look and Feel"

S'ha produït un error inesperat.
DEVELOPER

Desenvolupador


Publisher Date

August 15, 2025


Deployment Method

Liferay Self-Hosted


App Type

DXP

Versió

1.0.0

Versions admeses

2025 Q2, 2025 Q1, 7.4 GA132

Standard Price

Free

Help and Support


Comparteix l'enllaç

DEVELOPER
15/08/25 13:01
Published date
15/08/25 13:01
Published Date
15/08/25 13:01
SUPPORTED OFFERINGS
Liferay Self-Hosted
Supported Versions
2025 Q2, 2025 Q1, 7.4 GA132
Resource Requirements
Edition
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.