Vamos lá.
O Scriptcase não oferece essa opção originalmente então temos que aprender alguns recursos avançados.
São eles:
- Inserir Javascript em uma app grid.
- Aprender a usar Ajax.
- Conhecer a sintaxe do SweetAlert2.
- Na app grid que deseja a ação de confirmação em linha:
- Criar um campo virtual com nome : actions.
- Criar um botão php com nome : acao.
- No evento php do botão acao: (aqui simulo uma exclusão de registro apresentando apenas a query a ser executada, pode ser qualquer instrução).
echo "DELETE FROM especialidades WHERE id = {$_SESSION['param']}";
unset($_SESSION['param']);
//sc_exit(ref); //descomentar para remover botão OK após processamewnto.
- Evento onScriptInit:
Aqui vamos inserir um arquivo js na aplicação, essa é a forma correta para inserir javascript na consulta. O arquivo vem de uma biblioteca externa.
Em seguida escondemos o botão acao da barra de ferramentas da aplicação.
Alguns usam códigos javascript nos eventos footer, header, mas não é uma boa prática.
$js=sc_url_library('sys','actions-master','js/func.js');
?><script src="<?php echo $js; ?>"></script><?php
sc_btn_display('acao',off);
- Evento onRecord:
Guardamos o caminho do script ajax.php em uma variável que será executado em ajax na ação do click no campo. Nessa ação ajax passaremos o id do registro da linha, onde o script php vai jogar em sessão php esse valor para ser capturado no evento php do botão ação. O ajax vai passar parâmetros via post e de forma sincrona, ou seja somente executa próxima função js após o retorno do ajax com sucesso.
Na ação onclick após executar o script ajax outra função javascript é executada, essa agora, responsável pela mensagem de confirmação baseada no SweetAlert (sweetalert deve estar habilitado na aplicação e para versões do SC que não permite usar o SweetAlert2, se faz necessário a inserção manual da biblioteca através de bibliotecas externas.
Em seguida jogaremos o código html dentro do campo virtual actions para criar uma imagem baseada na fonte Awesome.
$ajax = sc_url_library('sys','actions-master','php/ajax.php');
{action} = "<a href=# onclick=\"ajax('$ajax',{{id}}); sa2Confirm('Confirme Exclusão?','Atenção','Excluir','OPS!');\"><span style=\"font-size: 1em; color: Tomato;\"><i class=\"fas fa-trash-alt style=color:red\"></i></span></a>";
- Vamos agora as bibliotecas externas:
Criar uma biblioteca externa do tipo pública (assim vc reaproveita em outros projetos) com nome ‘actions-master’.
Criar 2 sub-diretórios com os nomes js e php.
5.1. Na sub-pasta js, criar arquivo func.js com o conteúdo:
function ajax ( script_php , valor )
{
$.ajax({
url: script_php,
type: 'POST',
data: {param: valor},
async: false
});
}
function sa2Confirm (title, text, confirmBtnText, text2 )
{
swal.fire({
title: title,
text: text,
type: 'question',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
cancelButtonText: 'Cancelar',
confirmButtonText: confirmBtnText
}).then((result) => {
if (result.value) {
sc_btn_acao();
}else{
swal.fire({
type: 'warning',
title: text2,
showCloseButton: true,
timer: 1500
});
}
})
}
Acima temos as funções javascript responsáveis pela chamada ajax ao script ajax.php que criaremos em seguida e pela execução da mensagem de confirmação em sweetalert.
Na função ajax passamos como parâmetros o caminho do script ajax.php e o valor que desejamos jogar em sessão.
Na função sa2Confirm, passamos como parâmetros o Título da Mensagem, um sub-título, o label do botão de confirmação, e o texto da mensagem caso o usuário aborte a confirmação.
5.2. Na pasta php, criar um arquivo com o nome ajax.php com o código a seguir:
<?php
session_start();
if($_POST)
{
foreach ($_POST as $key => $value)
{
$_SESSION[$key]=$value;
}
}
Esse responsável em receber o parâmetro via POST e salvar em sessão.
Pronto, dessa forma obtemos uma mensagem no click da ação em linha que se confirmado executa o evento do botão php acao.
No evento ajax podemos passar uma parâmetro no formato json, obtendo assim diversos valores no evento do botão php onde você pode criticar a ação executando diferentes procedimentos.
Testando na prática:
TAGS: HAROLDO, GRID, CONSULTA, CONFIRMAÇÃO, MENSAGEM, SWEETAERT2