feat(shell): header multifunc + window._win + float cart/VIP
Multi-type publish/VIP CTA in nav, zibll-like _win runtime bridge for lightbox flags, and floating shop_cart/pay_vip commerce buttons.
This commit is contained in:
@@ -112,6 +112,16 @@
|
||||
var MAX_ZOOM_DESKTOP = 2;
|
||||
var MAX_ZOOM_MOBILE = 3;
|
||||
|
||||
function lightboxFlag(key, fallback) {
|
||||
var w = window._win || (window.aksrtData && window.aksrtData.imgbox) || {};
|
||||
if (w[key] === undefined || w[key] === null || w[key] === '') return fallback;
|
||||
return w[key] === true || w[key] === 1 || w[key] === '1';
|
||||
}
|
||||
function lightboxEnabled() {
|
||||
return lightboxFlag('imgbox', true);
|
||||
}
|
||||
|
||||
|
||||
function resolveFullUrl(img) {
|
||||
var full = img.getAttribute('data-full-url') || img.getAttribute('data-src') || '';
|
||||
if (full) return full;
|
||||
@@ -134,6 +144,7 @@
|
||||
}
|
||||
|
||||
function createLightbox() {
|
||||
if (!lightboxEnabled()) return;
|
||||
if (lightboxEl) return;
|
||||
|
||||
lightboxEl = document.createElement('div');
|
||||
@@ -161,6 +172,18 @@
|
||||
lightboxCounter = lightboxEl.querySelector('.aksrt-lightbox__counter');
|
||||
lightboxThumbsWrap = lightboxEl.querySelector('.aksrt-lightbox__thumbs');
|
||||
|
||||
// Apply window._win imgbox feature flags
|
||||
var zoomBtn = lightboxEl.querySelector('.toggle-zoom');
|
||||
var thumbsBtn = lightboxEl.querySelector('.toggle-thumbs');
|
||||
var playBtn = lightboxEl.querySelector('.toggle-play');
|
||||
var fullBtn = lightboxEl.querySelector('.toggle-full');
|
||||
var downBtn = lightboxEl.querySelector('.aksrt-lightbox__download');
|
||||
if (zoomBtn) zoomBtn.hidden = !lightboxFlag('imgbox_zoom', true);
|
||||
if (thumbsBtn) thumbsBtn.hidden = !lightboxFlag('imgbox_thumbs', true);
|
||||
if (playBtn) playBtn.hidden = !lightboxFlag('imgbox_play', false);
|
||||
if (fullBtn) fullBtn.hidden = !lightboxFlag('imgbox_full', true);
|
||||
if (downBtn) downBtn.hidden = !lightboxFlag('imgbox_down', false);
|
||||
|
||||
// Close
|
||||
lightboxEl.querySelector('.aksrt-lightbox__close').addEventListener('click', function (e) { e.stopPropagation(); closeLightbox(); });
|
||||
lightboxEl.addEventListener('click', function (e) { if (e.target === lightboxEl || e.target.classList.contains('aksrt-lightbox__stage')) closeLightbox(); });
|
||||
@@ -435,7 +458,7 @@
|
||||
var img = e.target.closest(TRIGGER_SEL);
|
||||
if (!img) return;
|
||||
if (img.width < 100 || img.height < 100) return;
|
||||
if (isNoLightbox(img)) return;
|
||||
if (!lightboxEnabled() || isNoLightbox(img)) return;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user