Link p/ doc PDF sem o nome do arquivo - RESOLVIDO

Bom dia.

Estou há um tempo lendo vários debates a respeito mas nenhum conseguiu sanar minha dúvida.

Num grid eu relaciono alguns documentos que foram feitos uploads com seus respectivos links para download. Até aí tudo bem.

O que pega é que o nome do arquivo é grande demais e deixa o grid meio feio. Não há como deixar apenas o ícone do PDF e esconder o nome do arquivo?

Se não dá, qual seria a melhor forma pra resolver isso? Criando um novo campo e no evento onRecord atribuir a imagem e o link pra download? Se for isso, minha outra dúvida é como atribuir um link pra download do PDF nessa imagem.

Obrigado!

Cria na grid consulta um campo Novo ‘Download’ Imagem Html,
escolhe a imagem de um ícone de PDF e faz o link no onRecord:

sc_link(Download, 'http://www.scriptcase.com.br', '' ,"Clique aqui...");

image

https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/01-visao-geral/#sc_link

Criar o novo campo e mostrar o icone OK.

Já usei o sc_link pra abrir aplicações, mas não estou conseguindo chegar no documento PDF.

Só criar o arquivo rootpath.php:

<?php

echo '<h3>O seu site encontra-se hospedado sob o caminho absoluto (www):</h3>';
echo  $_SERVER['DOCUMENT_ROOT'];

?>

Copiar na raiz do servidor e executar ele vai te dar o caminho para o link ai veja qual pastas
estão os seus PDFs usando o ‘ftp’ e complete a pasta do link.

Exemplo:

sc_link(Download, '/scriptcase/tmp/teste.pdf', '' ,"Clique aqui...");

Quando precisar fazer Download de outros tipos de arquivos de uma olhanda neste Post:

Ok.

Mas uma vez eu li que há uma variável de sistema que retorna esse caminho absoluto e que serviria pra testar a aplicação tando em ambiente DEV quanto em PROD.

Isso serve pra esse caso?

Eu vi esse post. Até salvei pra estudar. Mas meu nível de conhecimento em programação web ainda não chegou a este patamar, rsrs.

Pastas/Documentos/Imagens Padrão SC:

Tanto no ambiente de desenvolvimento quanto em produção, é só checar essas variáveis:
$this->Ini->path_doc  //traz o caminho dos arquivos
$this->Ini->path_imagens //traz o caminho das imagens
$this->Ini->nm_cod_apl // armazena o nome da aplicação atual.

$_SESSION['scriptcase']['dir_temp']; 
/* Pasta temporária PDF, .Xls, etc.
   usar caminho relativo raiz 'wwwroort' exemplo:
   C:/Program Files/NetMake/v9/wwwroot/scriptcase/tmp
   fica para links /scriptcase/tmp
*/

Existe muitas variáveis de Sessão do Scriptcase, que você pode checar e recuperar elas,
usando: $_SESSION[‘scriptcase’][‘nome_variavel’]; ou $_SESSION[‘scriptcase’][‘nome_categoria’][‘nome_variavel’];
durante o desenvolvimento para dar uma olhada geral nelas acesse:

O caminho completo eu já identifiquei desde o início. O problema é como chegar no caminho pra fazer o download…

O $this->Ini->path_doc retorna o caminho /var/www/html/scriptcase/file/doc que está perfeito. Em sequencia eu concateno com a sub-pasta+arquivo e fica assim:
/var/www/html/scriptcase/file/doc/docs_renovaveis/proele_emp01203_val20191018.pdf
Esse é o caminho (interno) correto.

Porém, o sc_link informa ao navegador o link abaixo que não é o correto e não funciona:
192.168.0.11/scriptcase/app/GPIw3//var/www/html/scriptcase/file/doc/docs_renovaveis/proele_emp01203_val20191018.pdf/

Se eu deixar o link de download com o nome do arquivo funciona de boa. Mas i nome do arquivo é muito grande e polui a grid. Eu queria deixar o download só no ícone.

Você deve usar não o caminho todo, somente o relativo da pasta ‘html’ em diante, exemplo,
teste funcional no meu Scriptcase:

Mouse PARADO em cima do LINK do PDF

Resultado após o click:

Perfeito, entendi. Mas o que pega agora é a questão DEV e PROD.

No teu exemplo, /scriptcase/file/doc é o caminho em embiente de desenvolvimento. Na produção seria gpiw/_lib/doc. E é exatamente esse o meu problema, identificar quando é DEV e quando é PROD pra poder usar um outro automaticamente.

Já a parte /docs_renovaveis/proele_emp01203_val20191018.pdf é informado no evento OnRecord.

No this->Ini->path_doc procura pala palavra scriptcase no desenvolvimento ela existe,
na produção ‘NÃO’.
https://www.php.net/manual/pt_BR/function.strpos.php

Ai só fazer um if else para ‘adicionar’ o caminho correto nos 2 casos.

Consegui verificar se é DEV ou PROD e consegui montar a URL certa do PDF, porém a macro sc_link insiste em sujar a URL montada.

Por exemplo, conforme o próprio help da macro:
Ex. 3: - Criando um link para uma URL: neste caso, “parâmetro e target” não têm efeito. Será executado um redirecionamento para a URL informada.
sc_link (minha_coluna, http://www.scriptcase.com.br, ,“hint do link”);

Então, apenas pra testar, usei no código do onRecord o próprio exemplo do help, ou seja:
sc_link (campo_do_app, http://www.scriptcase.com.br, ,"_blank");.

Eis o endereço que é passado para _blank:
192.168.0.11/scriptcase/app/GPIw3/ http://www.scriptcase.com.br

Alguma dica?

Aqui no meu funciona normal, ele não altera o link conforme as imagens.

Nesse seu caso as vezes você vai ter que fazer o link html manuamente em vez de usar a macro.

https://www.frhost.com.br/central/knowledgebase/72/Como-criar-links-HTML-em-minha-Pagina-or-Site.html

Seria interessante se outro usuário do Scriptcase também fizesse o teste para ver se altera igual ao seu ou fica normal igual ao meu 9.4.014 e comentasse aqui.

Aqui também uso o 9.4.014.

Fiz o link direto no campo e funcionou. Como estou começando, ainda não tenho muita bagagem pra arriscar os testes.

Fiz assim:
{c_pdf} = "<a href='$arq_pdf' target='_blank'> <img src='https://www..../arquivo.gif' /></a>";

Mas uma coisa eu garanto: aqui o SC_LINK está “sujando” o caminho que informo como parâmetro.

1 Curtida