').text(m.year));
card.on('hover:enter', function () { openMovie(m); });
grid.append(card);
});
Lampa.Selector.update();
}
// ---------- Компонент: детали фильма ----------
var selected = null;
function MyMoviesDetail() {
var comp = this;
this.render = function () {
var m = selected;
if (!m) { Lampa.Activity.back(); return $('
'); }
var html = document.createElement('div');
html.className = 'mymovies-detail';
var head = document.createElement('div');
head.className = 'detail-head';
var poster = document.createElement('img');
poster.className = 'detail-poster';
poster.src = resolve(m.poster || m.cover);
head.appendChild(poster);
var info = document.createElement('div');
info.className = 'detail-info';
var h1 = document.createElement('h1');
h1.textContent = m.title;
info.appendChild(h1);
if (m.original_title) { var d = document.createElement('div'); d.className='detail-orig'; d.textContent=m.original_title; info.appendChild(d); }
if (m.year) { var d = document.createElement('div'); d.className='detail-year'; d.textContent=m.year; info.appendChild(d); }
if (m.genre && m.genre.length) { var d = document.createElement('div'); d.className='detail-genre'; d.textContent=m.genre.join(', '); info.appendChild(d); }
if (m.rating) { var d = document.createElement('div'); d.className='detail-rating'; d.textContent='★ ' + m.rating; info.appendChild(d); }
if (m.description) { var d = document.createElement('div'); d.className='detail-desc'; d.textContent=m.description; info.appendChild(d); }
head.appendChild(info);
html.appendChild(head);
var actions = document.createElement('div');
actions.className = 'detail-actions';
var btn = document.createElement('div');
btn.className = 'btn selector';
btn.setAttribute('data-act', 'play');
btn.textContent = 'Смотреть';
actions.appendChild(btn);
html.appendChild(actions);
$(btn).on('hover:enter', function () { play(m); });
Lampa.Layer.update(html);
Lampa.Layer.visible(html);
return html;
};
}
Lampa.Component.add(PLUGIN.name + '_detail', MyMoviesDetail);
function openMovie(m) {
selected = m;
Lampa.Activity.push({
url: '',
component: PLUGIN.name + '_detail',
title: m.title,
page: m.title
});
}
function play(m) {
var url = m.magnet ? m.magnet : resolve(m.torrent);
Lampa.Player.play({
url: url,
title: m.title,
img: resolve(m.poster || m.cover),
season: 0,
episode: 0
});
}
// ---------- Пункт меню ----------
// Официальный паттерн Lampa: меню собирается при событии 'menu:start',
// в e.body приходит jQuery-корень меню. Добавляем
в .menu__list внутри e.body.
// Меню пересобирается при каждом открытии, поэтому старый пункт удаляется,
// и мы добавляем ровно один (проверка по data-action внутри текущего списка).
function makeButton() {
var button = $(
''
);
button.on('hover:enter', function () {
Lampa.Activity.push({
url: '',
component: PLUGIN.name,
title: PLUGIN.title,
page: PLUGIN.title
});
});
return button;
}
function start() {
Lampa.Listener.follow('menu', function (e) {
if (e.type === 'start' && e.body) {
var list = e.body.find('.menu__list');
if (list.length && !list.find('[data-action="' + PLUGIN.name + '"]').length) {
list.append(makeButton());
Lampa.Selector.update();
}
}
});
}
if (window.Lampa && Lampa.Listener && Lampa.Activity) {
start();
} else {
document.addEventListener('lampa', start);
}
})();