Skip navigation

При наличии установленных переменных portal1 и portal2 , при загрузке STB (в стандартной версии ПО), отображается «страница выбора портала»:

  Pic.1
Image Documentation
  Pic.2
Image Documentation

Отредактировать файл: /home/web/index.html :

  • Строка 84 - При загрузке отображается черный экран без текста, возможность перехода во внутренний портал по SET/SETUP присутствует.
var BLACK_SCREEN_WHILE_LOADING = 0;

Изменить на:

var BLACK_SCREEN_WHILE_LOADING = 1;
  • Строка 464 - Отключение возможности перехода во внутренний портал по SET/SETUP
   case 120: // "Services"
      if(!servicePressed){
        infoButtonPressed();
      }
      break;
  }

Изменить на:

   case 120: // "Services"
      if(!servicePressed){
	  if(!BLACK_SCREEN_WHILE_LOADING){
			infoButtonPressed();
		}
      }
      break;
  }
  • Строка 464 - Вызов «Системных настроек» по кнопке SET/SETUP вместо перехода во внутренний портал.
   case 120: // "Services"
      if(!servicePressed){
        infoButtonPressed();
      }
      break;
  }

Изменить на:

   case 120: // "Services"
      if(!servicePressed){
        gSTB.StartLocalCfg();
      }
      break;
  }
  Пример отредактированного файла index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" title="CSS Stylesheet" href="style.css">
<title></title>
<script language="JavaScript" src="var_index.js"></script>
<script language="JavaScript" src="loader.js" defer="true"></script>
 
<style type="text/css"> 
body {margin:0px}
.ArialBold18{
   font-family: "Myriad Pro";
   font-size:25px;
   font-weight:bold;
   text-align:center;
   color:#FFF;
}
.Verdana14Grey{
   font-family: "Myriad Pro";
   font-size:19px;
   font-weight:normal;
   text-align:center;
   color:#888;
   text-shadow:#0000FF 0 0 20px;
}
#portalsMenu{
  position:relative;
  top:0px;
  width:620px;
  height:150px;
  margin:auto;
  text-align: center;
  display:none;
}
#title{
  position:relative;
  top:0px;
  left:0px;
  width:620px;
  height:50px;
  text-align: center;
  font-family: "Myriad Pro";
  font-size:25px;
  font-weight:normal;
  text-align:center;
  color:#CCC;
}
.menu_table{
  position:relative;
  top:0px;
  width:620px;
  height:150px;
  margin:auto;
  text-align: center;
}
.menu_normal{
  height:40px;
  font-family:"Myriad Pro";
  font-size:30px;
  color:#a7b7d6;
}
.fadeBg{
  position:absolute;
  left:0px;
  width:620px;
  height:150px;
  font-family:"Myriad Pro";
  font-size:40px;
  color:#FFFFFF;
  text-align:center;
  line-height: 150px;
  margin-top: 0px;
  background: url(img/fade_bg.png) no-repeat;
  z-index:1;
  visibility:hidden;
}
#menu0 {top: -5px}
#menu1 {top: 35px}
</style>
 
<script>
var BLACK_SCREEN_WHILE_LOADING = 0;    // переход на портал - на черном экране без вывода сообщений (Пермь)
var rowsTotal = 0, portal_1, portal_2, curPageId, timerRedirect, timerDhcpPortal, timerToMenu, repeatTimer, 
    noPortalsURL, servicePressed = false;
var curMenuIdx          = null,
    repeatTimeout       = false,   // требуется перезапустить таймер для перехода в менюшку порталов
    LOADING             = '',
    PORTAL_LOADING      = '',
    SERVICE_LOADING     = '',
    DHCP_PORTAL_LOADING = '',
    sm_DirectionMsg     = '',
    sm_Message          = '',
    SERVICE_PRESS_INTERVAL = 10000,
    CONTINUE            = true,
    patIP               = /[\n\w\S\s]*PORTAL_IP="(\S+)*"[\n\w\S\s]*/,
    patPortal1          = /[\n\w\S\s]*PORTAL_1="(\S+)*"[\n\w\S\s]*/,
    patPortal2          = /[\n\w\S\s]*PORTAL_2="(\S+)*"[\n\w\S\s]*/;
 
var PORTAL_NAME_MAX_LENGTH = 24,
    CUT_STRING_SYMBOL      = '...';
 
 
function init(){
  if (!STB_EMULATION) {
    initXpcom();
  }
  try{
    stb.InitPlayer();
  }catch(e){
  }
  //alert(document.location.search);
  window.resizeTo(720, 576);
  x=(screen.width - 720)/2
  y=(screen.height - 576)/2
  window.moveTo(x, y);
  if(/nms/i.test(window.location.search)){
      _debug('NMS version');
      BLACK_SCREEN_WHILE_LOADING = 1;
  }
  _debug('************* INDEX.html : STB STARTED HERE ******************');
  curLangIdx = getCurrentLanguage();
  // _debug('curLang = '+getCurrentLanguage());
  stb.EnableServiceButton(false);
  loadScript ('lang/'+curLangIdx+'/resource.js', 'fillPage()');
  failTimer = setTimeout(languageResourcesFailed, NO_LANGUAGE_TIMEOUT);
}
/*function ifNoLanguage(){ 										//функция установки языка если в переменной среды language - бред
    setEnvironmentValue('language','en');
	setTimeout(curLangIdx = getCurrentLanguage(),2000)  
  	_debug('curLang = '+getCurrentLanguage());
  	loadScript ('lang/'+curLangIdx+'/resource.js', 'fillPage()');
}
*/	
function fillPage(){
  if (!checkLanguageResourceFile()) {
  return;
  }
  if (!BLACK_SCREEN_WHILE_LOADING){
    LOADING = '<span class="ArialBold18">' + pmenu_Loading + '</span>';
    PORTAL_LOADING = '<span class="ArialBold18">' + pmenu_PortalLoading + '</span>';
    DHCP_PORTAL_LOADING = '<span class="ArialBold18">' + pmenu_DhcpPortalLoading + '</span>';
    SERVICE_LOADING = '<span class="ArialBold18">' + pmenu_ServiceMenuLoading + '</span>';
    //document.body.style.background = 'url(new_menu/img/576/bg.jpg) no-repeat';
    _debug("background SETUP!")
  }
  // Задерживаем основной init() для того, чтобы успел прорисоваться бэкграунд
  setTimeout(init1,200);
}
 
function init1(){
  var a = check_portals();
 
  switch (a) {
    case 0:
      noPortalsURL = "services.html";       // по умолчанию переходим на сервисное меню
      sm_DirectionMsg = SERVICE_LOADING;
      sm_Message = '';
      var time = 1;
      var use_portal_dhcp = getEnvironmentValue('use_portal_dhcp').toString();
        if (use_portal_dhcp == "true"){
        var portal_dhcp = readFromStb_URL ('portal_dhcp', '');
        if (portal_dhcp){
          // переходим на портал DHCP
          noPortalsURL = portal_dhcp;
          sm_DirectionMsg = DHCP_PORTAL_LOADING;
          sm_Message = pmenu_PressServiceButton;
          time = SERVICE_PRESS_INTERVAL;
        }
      }
      if (BLACK_SCREEN_WHILE_LOADING){
        document.location = noPortalsURL;
        return;
      }
      else{
        document.getElementById('menu_container').innerHTML = sm_DirectionMsg;
        document.getElementById('gotoServ').innerHTML = sm_Message;
        timerDhcpPortal = setTimeout(redirectNoPortals,time);
      }
      break;
 
    case 1:
      var time = 1;
      var use_portal_dhcp = getEnvironmentValue('use_portal_dhcp').toString();
        if (use_portal_dhcp == "true" && !(/nms/i.test(window.location.search))){
        var portal_dhcp = readFromStb_URL ('portal_dhcp', '');
        if (portal_dhcp ){
          // переходим на портал DHCP
          noPortalsURL = portal_dhcp;
          sm_DirectionMsg = DHCP_PORTAL_LOADING;
          sm_Message = pmenu_PressServiceButton;
          time = SERVICE_PRESS_INTERVAL;
	  _debug(noPortalsURL);
	  document.location = noPortalsURL;
	  timerDhcpPortal = setTimeout(redirectNoPortals,time);
        }
      }
 
	// прописан один портал - запускаем его через 3-секундный интервал
      if (BLACK_SCREEN_WHILE_LOADING){
        // Никаких надписей на экран не выводим, фоновую картинку не включаем, div страницы вообще display = none
        document.getElementById("pageIndex").style.display = 'none';
      }
      else{
        // выводим на экран сообщения, бэкграунд к этому моменту уже должен прорисоваться
        document.getElementById("menu_container").innerHTML = PORTAL_LOADING;
        document.getElementById('gotoServ').innerHTML = pmenu_PressServiceButton;
      }
      timerRedirect = setTimeout(redirect,SERVICE_PRESS_INTERVAL);
 
      break;
 
    case 2:
      var time = 1;
      var use_portal_dhcp = getEnvironmentValue('use_portal_dhcp').toString();
        if (use_portal_dhcp == "true" && !(/nms/i.test(window.location.search))){
        var portal_dhcp = readFromStb_URL ('portal_dhcp', '');
        if (portal_dhcp){
          // переходим на портал DHCP
          noPortalsURL = portal_dhcp;
          sm_DirectionMsg = DHCP_PORTAL_LOADING;
          sm_Message = pmenu_PressServiceButton;
          time = SERVICE_PRESS_INTERVAL;
	   _debug(noPortalsURL);
	  document.location = noPortalsURL;
	  timerDhcpPortal = setTimeout(redirectNoPortals,time);
        }
      }
 
 
      // прописаны оба портала - запускаем меню порталов
      if (BLACK_SCREEN_WHILE_LOADING){
        // бэкграунд был выключен. Включаем его
        //document.body.style.background = 'url(img/main.png) no-repeat';
        setTimeout (continue_TwoPortals,1);
        return;
      }
      else{
        document.getElementById('menu_container').innerHTML = LOADING;
        sm_Message = pmenu_PressServiceButton;
        timerToMenu = setTimeout(init_continue,1);
      }
      break;
  }
  rowsTotal = a;
  curMenuIdx = 0;
}
 
function redirectNoPortals(){
 
  document.location = noPortalsURL;
}
 
function continue_TwoPortals(){
  rowsTotal = 2;
  curMenuIdx = 0;
  sm_Message = pmenu_PressServiceButton;
  timerToMenu = setTimeout(init_continue,1);
}
 
function init_continue(){
  document.getElementById('gotoServ').innerHTML = sm_Message;
  if (servicePressed) {
    document.location = "services.html";
    return;
  }
  try{
    stb.SetVideoState(0);
  }catch(e){
    _debug(e)
  }
  show_menu();
}
 
// Функция проверяет наличие записей о порталах в CFG и возвращает их количество от 0
function check_portals(){
  var ret = 0;
  if (portal_1 = getPortalName('portal1'))       // getPortalName("Portal1")    
    ret++;
  if (portal_2 = getPortalName('portal2'))       // getPortalName("Portal2")
    ret++;
  return ret;
}
 
function beforeLoadingPortal(msg){
  if (BLACK_SCREEN_WHILE_LOADING){
    document.body.style.background = 'none';
    document.getElementById("pageIndex").style.display = 'none';
  }
  else{
    document.getElementById("menu_container").innerHTML = msg;
    document.getElementById("gotoServ").innerHTML = "";
  }
}
 
// Здесь точно есть portal_1 или portal_2
function redirect(){
  var p, url;
  beforeLoadingPortal(PORTAL_LOADING);
  if(!portal_1){
      portal_1 = portal_2;
  }
  p = getProtoAndHostname(portal_1);
  if (p.protocol) {
    url = portal_1;
  }
  else{
    url = 'http://' + portal_1;
  }
  location.href = url;
}
 
function show_menu(){
  var b = '';
  b += '<div id="portalsMenu">';
  b += '<div id="title"></div>';
  b += '<div class="menu_table">';
  b += '<div class="menu_normal" id="td0"></div>';
  b += '<div class="menu_normal" id="td1"></div>';  
  b += '</div>';
  b += '<div class="fadeBg" id="menu0"></div>';
  b += '<div class="fadeBg" id="menu1"></div>';
  b += '</div>';
  //
  document.getElementById('menu_container').innerHTML = b;
  document.getElementById('title').innerHTML = pmenu_PortalChoice;
  document.getElementById('td0').innerHTML = cutString(portal_1,PORTAL_NAME_MAX_LENGTH);
  document.getElementById('td1').innerHTML = cutString(portal_2,PORTAL_NAME_MAX_LENGTH);
  document.getElementById('menu0').innerHTML = cutString(portal_1,PORTAL_NAME_MAX_LENGTH);
  document.getElementById('menu1').innerHTML = cutString(portal_2,PORTAL_NAME_MAX_LENGTH);
  document.getElementById("portalsMenu").style.display = "block";
  menuItem_Select(curMenuIdx);
}
 
function cutString(str,len){
  var a = str;
  if (a.length > len){
    a = str.substr(0,len);
    a += CUT_STRING_SYMBOL;
  }
  return a;
}
 
function menuItem_Select(idx){
  if (idx != null) {
    document.getElementById("td"+idx).style.visibility = "hidden";
    document.getElementById("menu"+idx).style.visibility = "visible";
  }
}
 
function menuItem_Unselect(idx){
  if (idx != null) {
    document.getElementById("td"+idx).style.visibility = "visible";
    document.getElementById("menu"+idx).style.visibility = "hidden";
  }
}
 
function getkeydown(e) {
  _debug('getkeydown() keyCode:'+e.keyCode+'; which:'+e.which+ ' alt: '+ e.altKey+ ' ctrlKey: '+e.ctrlKey);
 
  ec = e.keyCode;
  ew = e.which;
  es = e.shiftKey;
 
  pat = /^(\S+)_(\S+)/;
 
  // NOTE!!! Этот код нужен для того, чтобы различать коды, генерируемые пультом ДУ и клавиатуры из-за
  //         несовместимости обработки клавишных событий различными браузерами.
  // Принимается соглашение:
  //         Ctrl = 1, Alt = 0, keyCode = 32 (Space) : Это ENTER на клавиатуре и OK на ПДУ
  //         Ctrl = 0, Alt = 1, keyCode = 32 (Space) : Это SPACE на клавиатуре и MIC на ПДУ
  if (ec == 32 && e.ctrlKey && !e.altKey) {
    ec = 13;
    ew = 13;
  }
 
  if (CHECK_ALT_CTRL) {
    altCtrl = e.altKey ;//&& e.ctrlKey;
  }
  else{
    altCtrl = 1;
  }
 
  /*if(altCtrl){
    ec = 0;
  }
  else {
    if(e.ctrlKey){
      ew=0;
    }
    else{
      if(ec > 90 && ew != 0){
        ec = 0;
      }
    }
  }*/
 
  if (altCtrl && ew == 117) { // Кнопка "Power"
    if (!inStandBy) { // ВЫКЛЮЧАЕМ
      if (timerRedirect){
        clearTimeout(timerRedirect);
        timerRedirect = null;
        repeatTimer = 'Redirect';
        repeatTimeout = true;
      }
      if (timerToMenu){
        clearTimeout(timerToMenu);
        timerToMenu = null;
        repeatTimer = 'ToMenu';
        repeatTimeout = true;
      }
    }
    else{ // ВКЛЮЧАЕМ
      if (repeatTimeout){
        switch (repeatTimer){
          case 'Redirect':
            timerRedirect = setTimeout(redirect, SERVICE_PRESS_INTERVAL);
            break;
          case 'ToMenu':
            timerToMenu = setTimeout(init_continue, SERVICE_PRESS_INTERVAL);
            break;
        }
        repeatTimeout = false;
        repeatTimer = null;
      }
    }
    inStandBy = !inStandBy;
    if (!STB_EMULATION){
      stb_OnOff(inStandBy);
      stb.StandBy(inStandBy);
    }
    return;
  }
 
  if (inStandBy) {
    CONTINUE = false;
    return;
  }
 
  switch (ec){
    case 38: // Up
    {
      if (curMenuIdx) {
        menuItem_Unselect(curMenuIdx);
        curMenuIdx--;
        menuItem_Select(curMenuIdx);
      }
      break;
    }
    case 40: // Down
    {
      if (curMenuIdx < rowsTotal-1) {
        menuItem_Unselect(curMenuIdx);
        curMenuIdx++;
        menuItem_Select(curMenuIdx);
      }
      break;
    }
    case 13: // OK
      gotoPage(curMenuIdx);
      break;
 
    case 120: // "Services"
      if(!servicePressed){
        infoButtonPressed();
      }
      break;
  }
  if (CFG_PARAM_DEBUG) {
    switch (ew) {
      case 113: // Отладочный "Info" по клавише "Q". На пульте STB этот код не работает
        infoButtonPressed();
        break;
    }
  }
}
 
function infoButtonPressed(){
  if (timerRedirect){
    clearTimeout(timerRedirect);
    timerRedirect = null;
  }
  if (timerToMenu){
    clearTimeout(timerToMenu);
    timerToMenu = null;
  }
  //document.getElementById("menu_container").innerHTML = SERVICE_LOADING; document.getElementById("gotoServ").innerHTML = "";
  beforeLoadingPortal(SERVICE_LOADING);
  sm_Message = '';
  servicePressed = true;
  _debug('servicePressed = '+servicePressed);
  setTimeout(init_continue,100);
}
// menuIdx = индекс от 0 строки в меню
function gotoPage(menuIdx){
  beforeLoadingPortal(PORTAL_LOADING);
  var url = eval("portal_"+(menuIdx+1));
  var p = getProtoAndHostname(url);
  if (!p.protocol) {
    url = 'http://' + url;
  }
  //document.location = 'http://'+serv_ip+'/'+portal+'/index.html';
  _debug("HERE !!!! > "+url);
  location.href = url;
}
 
 
</script>
</head>
 
<body onload="loader()" onKeyPress="getkeydown(event)">
<div id="pageIndex">
<table align="center" width="630" height="420" style="table-layout:fixed;">
<tr align="center" valign="middle">
  <td height="400" id="menu_container"></td>
</tr>
<tr>
  <td height="*"></td>
</tr>
<tr>
  <td id="gotoServ" class="Verdana14Grey" height="50" align="center"></td>
</tr>
</table>
</div>
<!-- Модальное окно -->
<div id="pad" align="center"></div>
<div id="msgWindow" align="center"></div>
<!-- /Модальное окно -->
<div id="xpcom" style="margin:2px;"></div>
<div id="emul"></div>
 
 
</body>
</html>
Need Help

Дима – эксперт по работе с приставками серии MAG и автор этой статьи.

Была ли полезна эта статья?

Да Нет

Сожалеем.
Как можно улучшить эту статью?

Мы используем cookie-файлы, чтобы оптимизировать работу сайта и предоставить вам лучший интерфейс; а также для продвижения нашей продукции. Ознакомьтесь с нашей политикой Cookie, чтобы узнать, как именно мы используем cookie-файлы, и как вы можете это контролировать.
Если вы продолжите пользоваться сайтом или закроете это сообщение — это значит, что вы согласны с нашей Политикой конфиденциальности и разрешаете использование cookie-файлов, как описано в политике Cookie.