/o//commerce-media/accounts/-1/images/18397791?download=true
French Translation
Collaboration & Knowledge Sharing
(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/18398558?download=true",
alt: "Screen Shot 2013-04-20 at 12.09.53 AM.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) + ' a következőből: ' + 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();
})();
<button class = "nav-button prev" aria-label = "Previous Image">
<span class = "lexicon-icon-overwide"> <svg class="lexicon-icon lexicon-icon-angle-left" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#angle-left" /></svg></span>
</button>
<img alt = "Screenshot-01.PNG" id = "main-image" src = "http://marketplace.lxc.liferay.com/o/commerce-media/accounts/-1/images/18398724?download=true" />
<button class="nav-button next" aria-label="Next Image">
<span class="lexicon-icon-overwide"> <svg class="lexicon-icon lexicon-icon-angle-right" role="presentation" ><use xlink:href="https://marketplace.liferay.com/o/classic-theme/images/clay/icons.svg#angle-right" /></svg></span>
</button>
描述
Improved french (fr) translations for portal.
Translations come from Pootle (http://translate.liferay.com/pootle/fr/portal/ )">http://translate.liferay.com/pootle/fr/portal/ ) but there's some additional validation and selection.
All the contributors are mentionned at the bottom of the Pootle page.
To contribute, use Pootle:
http://translate.liferay.com/pootle/fr/portal/
To discuss about translations, use dedicated forums:
http://www.liferay.com/fr/community/forums/-/message_boards/category/6802014
-------------------------------------------------------
STAY TUNED FOR FUTURE UPDATES
--------------------------------------------------------
Translations come from Pootle (http://translate.liferay.com/pootle/fr/portal/ )">http://translate.liferay.com/pootle/fr/portal/ ) but there's some additional validation and selection.
All the contributors are mentionned at the bottom of the Pootle page.
To contribute, use Pootle:
http://translate.liferay.com/pootle/fr/portal/
To discuss about translations, use dedicated forums:
http://www.liferay.com/fr/community/forums/-/message_boards/category/6802014
-------------------------------------------------------
STAY TUNED FOR FUTURE UPDATES
--------------------------------------------------------
Improved french (fr) translations for portal.
Translations come from Pootle (http://translate.liferay.com/pootle/fr/portal/ )">http://translate.liferay.com/pootle/fr/portal/ ) but there's some additional validation and selection.
All the contributors are mentionned at the bottom of the Pootle page.
To contribute, use Pootle:
http://translate.liferay.com/pootle/fr/portal/
To discuss about translations, use dedicated forums:
http://www.liferay.com/fr/community/forums/-/message_boards/category/6802014
-------------------------------------------------------
STAY TUNED FOR FUTURE UPDATES
--------------------------------------------------------
Translations come from Pootle (http://translate.liferay.com/pootle/fr/portal/ )">http://translate.liferay.com/pootle/fr/portal/ ) but there's some additional validation and selection.
All the contributors are mentionned at the bottom of the Pootle page.
To contribute, use Pootle:
http://translate.liferay.com/pootle/fr/portal/
To discuss about translations, use dedicated forums:
http://www.liferay.com/fr/community/forums/-/message_boards/category/6802014
-------------------------------------------------------
STAY TUNED FOR FUTURE UPDATES
--------------------------------------------------------
发生意外错误。
DEVELOPER
开发者
Publisher Date
January 22, 2024
Deployment Method
Liferay Self-Hosted
Liferay PaaS
App Type
DXP
版本
1.0.0
Standard Price
Free
Help and Support
共享链接
DEVELOPER
13-4-26 上午12:00
Published date
13-4-26 上午12:00
Published Date
13-4-26 上午12:00
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
Resource Requirements
Edition
Community
PRICE
Free
SHARE LINK
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.