Verificamos hoje, que a macro sc_appmenu_add_item não converte corretamente em seu código fonte gerado a concatenação dos parâmetros da aplicação quando passado por variável (Faltou um ponto (.) na concatenação)
.
Menu Dinâmico deve ser muito pouco usado, para só surgir esse problema agora, que pena, é um recurso muito louvável.
Algums problemas do SC não dá para contornar, outras dão, então segue uma correção de contorno para esse problema:
Incluir como biblioteca interna pública.
<?php
function iw_appmenu_add_item($menuid,$_id,$_id_pai,$_desc,$_app, $_parm) {
if (isset($_SESSION['scriptcase']['sc_def_menu'][$menuid]))
{
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id] = array();
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['pai'] = $_id_pai;
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['label'] = $_desc;
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['link'] = $_app;
// Aqui, NM buga a macro, então temos que contornar /
$_parm = str_replace('=','*scin', $_parm) ;
$_parm = str_replace(';','*scout', $_parm) ;
$_parm .= "*scoutnm_run_menu*scin1*scout";
// -------------------------------------------------- /
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['parm'] = $_parm;
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['icon'] = "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['hint'] = "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['target'] = "_self";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['name'] = $_app;
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['display'] = "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['display_position']= "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['icon_fa'] = "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['icon_color'] = "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['icon_color_hover']= "";
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['icon_color_disabled']= "";
$Temp_url = $_app;
if ('http://' == substr($Temp_url, 0, 7) || 'https://' == substr($Temp_url, 0, 8) || '../' == substr($Temp_url, 0, 3) || '/' == substr($Temp_url, 0, 1))
{
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['lnk_url'] = true;
}
else
{
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['lnk_url'] = false;
if (!empty($Temp_url))
{
$Temp_url = SC_dir_app_name($Temp_url) . "/";
if (strtolower($_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['target']) == '_blank')
{
$Temp_url .= "?nmgp_outra_jan=true&nm_apl_menu=" . $menuid . "&script_case_session=" . session_id();
}
if (strtolower($_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['target']) == '_self')
{
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['sc_init'] = $this->Gera_sc_init($_app);
$Temp_url .= "?nm_run_menu=1&nm_apl_menu=" . $menuid . "&script_case_init=" . $this->Gera_sc_init($_app) . "&script_case_session=" . session_id();
}
if (strtolower($_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['target']) == '_parent')
{
$Temp_url .= "?nm_run_menu=1&script_case_init=" . $_SESSION['sc_session'][1][$menuid]['init'] . "&script_case_session=" . session_id();
}
}
}
$_SESSION['scriptcase']['sc_def_menu'][$menuid][$_id]['url'] = $Temp_url;
}
}
?>
Tablea com dados do exemplo:
https://infinitusweb.net.br/scriptcase/dinmenu/
- Há mais parâmetros na macro do que na biblioteca sugerida, mas resolveu a questão no momento, caso os demais parâmetros sejam necessários, comuniquem que implemento, ou vocês mesmo podem fazer isso.
TAGS: BUG, MENU, DINÂMICO, MARCO, sc_appmenu_add_item , PARÂMETROS