A partir da release 12.1.2610, a rotina passa a permitir a visualização do browser utilizando o SmartX.

Com essa alteração, a implementação de Pontos de Entrada (PE) relacionados à inclusão de opções de menu passa a ter um novo comportamento, especialmente no que se refere à forma como as ações são exibidas na interface.

Funcionalidade disponível a partir da release 12.1.2610 e em rotinas com browser SmartX habilitado.

01. Visão Geral

O SmartX é a integração do framework POUI ao Protheus, permitindo que as rotinas sejam renderizadas em um browser moderno com componentes visuais mais ricos e responsivos. Com essa mudança, a forma como os Pontos de Entrada (PE's) customizam o menu de ações das rotinas foi atualizada para se adequar ao novo modelo de interface.

Antes do SmartX, todas as opções adicionadas por PE apareciam exclusivamente no Menu de Ações (Outras Ações) da rotina, agrupadas em um dropdown. Com o SmartX, é possível definir se uma opção será exibida no Browse da Rotina (chamado de Page Action) ou se continuará sendo exibida no menu dropdown tradicional. 


Comportamento Anterior X Novo Comportamento (SmartX)

AntesDepois
Opções adicionadas via PE apareciam exclusivamente no menu de Outras ações, sem possibilidade de destaque visual diferenciado.As opções podem ser exibidas como Page Actions, permitindo destacar botões diretamente no browse, fora do menu dropdown, facilitando o acesso às ações mais utilizadas.
Não havia distinção visual entre uma ação principal e uma ação secundária, pois todos os itens recebiam o mesmo tratamento visual.A distinção entre ação principal e ação secundária passa a ser realizada através do parâmetro PAGEACTION, definido em cada item de menu.

Em rotinas não-MVC, não existia a utilização da 10ª posição do array de retorno para definir o parâmetro responsável pela exibição do item como Page Action.

Em rotinas não-MVC, a 10ª posição do array de retorno deve receber o valor .T. para indicar que o item será exibido como Page Action.
Rotinas MVC utilizavam o comando ADD OPTION, porém sem suporte ao parâmetro PAGEACTION.Em rotinas MVC, o parâmetro PAGEACTION pode ser utilizado diretamente ao final da instrução ADD OPTION.


02. Ponto de Entrada - Inclusão de Opções no Menu da Rotina

Os Pontos de Entrada responsáveis pela inclusão de novas opções nos menus das rotinas tiveram seu comportamento ajustado com a adoção do SmartX, conforme detalhado abaixo:

#INCLUDE 'TLPP-CORE.TH'
#INCLUDE 'FWMVCDEF.CH'

User Function CT020ROT()

    Local aNovoItemMenu As Array
    Local lPageAction   As Logical

    aNovoItemMenu := PARAMIXB[ 1 ]
    lPageAction   := .T. // Indica que o Botão Será Adicionado ao PageAction do Browse da Rotina.

    // Opção no Menu - Ações de Registro.
    ADD OPTION aNovoItemMenu TITLE 'Teste SmartX'               ACTION 'Alert("Teste SmartX")' OPERATION MODEL_OPERATION_UPDATE ACCESS 0

    // Opção Exibida Diretamente no Browse da Rotina - Page Action.
    ADD OPTION aNovoItemMenu TITLE 'Teste SmartX - Page Action' ACTION 'Alert("Teste SmartX")' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 PAGEACTION

Return( aNovoItemMenu )
#INCLUDE 'TLPP-CORE.TH'

User Function CT240BUT()

    Local aNovoItemMenu As Array
    Local lPageAction   As Logical

    aNovoItemMenu := {}
    lPageAction   := .T. // Indica que o Botão Será Adicionado ao PageAction do Browse da Rotina.

    // Opção no Menu - Ações de Registro.
    aAdd( aNovoItemMenu, { 'Teste SmartX - Page Action', 'Alert( "Teste SmartX" )', 0, 9,,,,,, lPageAction } )

    // Opção Exibida Diretamente no Browse da Rotina.
    aAdd( aNovoItemMenu, { 'Teste SmartX', 'Alert( "Teste SmartX" )'			  , 0, 7 				   } )

Return( aNovoItemMenu )

03. Browse da Rotina

Abaixo são demonstrados dois exemplos de inclusão de botões: um utilizando os parâmetros PAGEACTION/lPageAction, que exibe o botão diretamente no PageAction do browser, e outro sem a utilização desses parâmetros, no qual o botão é exibido dentro do menu Ações do registro.