BUG:: SCRIPTCASE 9.4.027 - Macro sc_appmenu_add_item com parâmetros em variável

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:

image
image

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

Haroldo, o BUG permanece na versão 9.7. Eu continuo usando um workaround para resolver o problema.

Pois é, mexeram no menu mas não melhoraram isso.

Eu não uso mais o menu do SC.

Estranho né! A solução é bem simples e impede o uso da função standard.