Middleware Stalker позволяет без особого труда интегрировать в себя сервисы, адаптированные для работы на STB.
Интеграция заключается в создании отдельного модуля, добавления иконок для главного меню и добавления имени созданного модуля в список инициализируемых при старте. При этом сам сервис может находиться или в составе middleware, или на удаленном http сервере.
Одним из требований является возможность покинуть сервис и вернуться обратно в Stalker. 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]); });
Код для возврата в Stalker:
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, соответствующие трем используемым разрешениям.
Размеры иконок:
И поместить каждый файл в папку соответствующую разрешению:
Для совместимости с механизмом загрузки модуля создаем еще три пустых css файла в /c/.
В конфиг файле (custom.ini) в параметр all_modules добавляем имя нашего модуля на то место, где бы мы хотели его видеть, например, сразу после видеоклуба
all_modules[] = vclub all_modules[] = exampletv ;наш модуль all_modules[] = ex
После выполнение всех пунктов при следующей загрузки Stalker-а на приставке в главном меню должна появиться иконка добавленного сервиса.