Интеграция адаптированных сервисов
Ministra TV platform позволяет без особого труда интегрировать в себя сервисы, адаптированные для работы на STB.
Интеграция заключается в создании отдельного модуля, добавления иконок для главного меню и добавления имени созданного модуля в список инициализируемых при старте. При этом сам сервис может находиться или в составе middleware, или на удаленном http сервере.
Требования для адаптируемых сервисов
- Поддержка минимум трех разрешений: 720х480 (NTSC), 720х576 (PAL), 1280х720 (720p)
- Корректная обработка выхода из сервиса (использование GET параметра referrer для возврата)
- Оптимизация интерфейса под управление пультом ДУ
Обработка выхода из сервиса
Одним из требований является возможность покинуть сервис и вернуться обратно в Ministra. URL для возврата находится в GET параметре referrer в urlencoded виде, т.е. его необходимо предварительно декодировать.
Получение GET параметров в JavaScript:
var $_GET = {};
function decode(s) {
return decodeURIComponent(s.split("+").join(" "));
}
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
$_GET[decode(arguments[1])] = decode(arguments[2]);
});
Код для возврата в Ministra:
window.location = decodeURIComponent($_GET['referrer']);
Пример интеграции
Рассмотрим пример интеграции абстрактного сервиса example.tv. Допустим сам сервис доступен по url http://tv.example.com/index.html
Создание модуля
Создаем файл exampletv.js в папке /c/ с содержанием:
(function(){
// Первый аргумент - подпись под иконкой в главном меню
// Третий аргумент - имя файла иконки
main_menu.add('EXAMPLE.TV', [], 'mm_ico_exampletv.png', function(){
var params = '';
if (stb.user['web_proxy_host']){
params = '?proxy=http://'+stb.user['web_proxy_host']+':' +stb.user['web_proxy_port'];
}
stb.setFrontPanel('.');
if (!params){
params += '?';
}else{
params += '&';
}
params += 'referrer='+encodeURIComponent(window.location);
//window.location = '/' + stb.portal_path + '/external/olltv/index.html'+params;
window.location = 'http://tv.example.com/index.html'+params;
}, {layer_name : "exampletv"}); // Для корректной работы модуля необходимо указать уникальный layer_name
loader.next();
})();
Добавление иконок в главное меню
Необходимо создать три файла иконок с именем mm_ico_exampletv.png, соответствующие трем используемым разрешениям.
Размеры иконок:
- 200x100px - NTSC
- 200x120px - PAL
- 360x160px - 720p
И поместить каждый файл в папку соответствующую разрешению:
- NTSC - каталог /c/template/<theme_name>/i_480/
- PAL - каталог /c/template/<theme_name>/i/
- 720p - каталог /c/template/<theme_name>/i_720/
Для совместимости с механизмом загрузки модуля создаем еще три пустых css файла в /c/.
- exampletv.css
- exampletv_480.css
- exampletv_720.css
Добавление модуля в список инициализируемых
В конфиг файле (custom.ini) в параметр all_modules добавляем имя нашего модуля на то место, где бы мы хотели его видеть, например, сразу после видеоклуба
all_modules[] = vclub all_modules[] = exampletv ;наш модуль all_modules[] = ex
После выполнение всех пунктов при следующей загрузке Ministra на приставке в главном меню должна появиться иконка добавленного сервиса.

