ScriptCase 9. Url Relativos /scriptcase/prod y /_lib/prod

1,162 views
Skip to first unread message

Fausto

unread,
Jan 5, 2020, 12:01:32 AM1/5/20
to comunidad-scrip...@googlegroups.com
Algunas veces nos vemos en la necesidad de utilizar librerías que están dentro de la carpeta "prod" si lo hacemos con direcciones absolutos tendremos el problema de que es posible que nos funcione en desarrollo, más no en producción una forma que me ha resultado para solucionar este problema es la siguiente:



En ambiente de desarrollo:

echo $_SESSION['scriptcase']['nm_path_cep'].'<br>';

Resultado
/scriptcase/prod/cep

echo rtrim( $_SESSION['scriptcase']['nm_path_cep'],"/cep").'<br>';

Resultado:
/scriptcase/prod


En ambiente de producción: 

echo $_SESSION['scriptcase']['nm_path_cep'].'<br>';

Resultado
/_lib/prod/cep

echo rtrim( $_SESSION['scriptcase']['nm_path_cep'],"/cep").'<br>';

Resultado:
/_lib/prod



Ejemplo de Uso en onScriptIni de una aplicación control para incluir la librería jquery.js y asignar una imagen almacenada  en una tabla.

$check_sql = "select logo from empresa";
sc_lookup
(rs, $check_sql);

if (isset({rs[0][0]}))
{
 
{strlogo} = base64_encode({rs[0][0]});
}
$prodDir
= rtrim( $_SESSION['scriptcase']['nm_path_cep'],"/cep");

?>

<script type="text/javascript" src="<?=$prodDir?>/third/jquery/js/jquery.js"></script>

<script>
$
(document).ready(function() {
     $
('#logo_field').attr("src","data:image/png;base64,<?={strlogo}?>");
});
</script>


<?php




Fausto

unread,
Jan 5, 2020, 3:08:59 AM1/5/20
to comunidad-scrip...@googlegroups.com
El ejemplo anterior se puede hacer usando puro javaScript, sin necesidad de utilizar la librería jquery.js.

$check_sql = "select logo from empresa";
sc_lookup
(rs, $check_sql);

if (isset({rs[0][0]}))
{
 
{strlogo} = base64_encode({rs[0][0]});
}
?>

<script>
   document
.addEventListener("DOMContentLoaded", function(event) {
       document
.getElementById('logo_field').src="data:image/png;base64,<?={strlogo}?>";
   
});
</script>

<?php



Fausto

unread,
Jan 23, 2020, 5:31:09 PM1/23/20
to Comunidad ScriptCase Latino

Una forma mucho mas sencillas para hacer uso de las direcciones de relativas de carpetas en scriptcase es utilizando el objeto $this->Ini el cual contiene una serie de propiedades relacionada con nuestro entorno,  en lo adelante muestro una lista de estas propiedades y valores de estas en ambiente de desarrollo, debemos considerar que estas rutas cambian cuando lo llevamos al ambiente de desarrollo, por lo que apuntaran siempre a la carpeta correspondiente.

$this->Ini->path_prod = '/scriptcase/prod'
$this->Ini->path_link = '/scriptcase/app/WebPos/'
$this->Ini->path_aplicacao = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/WebPos/form_dbo_fototest/'
$this->Ini->path_embutida = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/WebPos/'
$this->Ini->path_botoes = '/scriptcase/app/WebPos/_lib/img'
$this->Ini->path_img_global = '/scriptcase/app/WebPos/_lib/img'
$this->Ini->path_img_modelo = '/scriptcase/app/WebPos/_lib/img'
$this->Ini->path_icones = '/scriptcase/app/WebPos/_lib/img'
$this->Ini->path_imagens = '/scriptcase/file/img'
$this->Ini->path_imag_cab = '/scriptcase/app/WebPos/_lib/img'
$this->Ini->path_imag_temp = '/scriptcase/tmp'
$this->Ini->path_libs = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/lib/php'
$this->Ini->path_doc = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/file/doc'
$this->Ini->path_cep = '/scriptcase/prod/cep'
$this->Ini->path_secure = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/secure'
$this->Ini->path_js = '/scriptcase/prod/lib/js'
$this->Ini->path_adodb = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb'
$this->Ini->path_grafico = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/jpgraph5/src'
$this->Ini->path_atual = 'C:\Program Files\NetMake\v9-php73\wwwroot\scriptcase\app\WebPos\form_dbo_fototest'
$this->Ini->path_help = '/scriptcase/app/WebPos/_lib/webhelp/'
$this->Ini->path_lang = '../_lib/lang/'
$this->Ini->path_lang_js = '../_lib/js/'
$this->Ini->path_btn = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/WebPos/_lib/buttons/'
$this->Ini->path_css = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/WebPos/_lib/css/'
$this->Ini->path_lib_php = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/WebPos/_lib/lib/php/'
$this->Ini->path_cor = '/scriptcase/prod/cor'
$this->Ini->path_third = 'C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third'




Message has been deleted

Fausto

unread,
Jun 28, 2022, 2:12:39 AM6/28/22
to Comunidad ScriptCase Latino
En el evento onload de la aplicación menú me encontré con el problema de que la variable que se utiliza para conseguir la ruta de la carpeta de producción  "$this->Ini->path_prod" no existe, la solución aplicada para este caso fue  utilizar variables de session :  

En mi caso especifico utilice el siguiente enfoque:

$_SESSION['scriptcase']['nombre_aplicación']['glo_nm_path_prod']

Como mi aplicación se llama menu, entonces utilizo ese nombre en la segunda columna de la matriz.
$_SESSION['scriptcase']['menu']['glo_nm_path_prod']

Con esto consigo la ruta de la carpeta  '/scriptcase/prod' tanto en entorno de producción como en desarrollo, sin tener que estresarme con una rutina de detección de entornos.

 
Saludos cordiales y espero que esta información se de alguna utilidad para alguien más.
Message has been deleted

Fausto

unread,
Jul 15, 2022, 3:18:07 PM7/15/22
to Comunidad ScriptCase Latino
Es necesario saber identificar en nuestras aplicaciones, cuando un atributo o función require una ruta (path) de disco local o una URL y al momento de armar dicha ruta es necesario que se hagan utilizando variables de SC para que funcionen correctamente tanto en el ambiente de desarrollo como en el de producción, para determinar a que ruta apunta cada variable y su clasificación de si es una ruta de disco local o URL, copie el siguiente Código, péguelo en una app blank:

// Para pegar en aplicación blank
echo '<br><br>**** Rutas Relativas para armar URL ****';
echo '<br>Relativas a las APP:';
echo '<br>$this->Ini->path_link = '.$this->Ini->path_link;                
echo '<br>$this->Ini->path_botoes = '.$this->Ini->path_botoes;            
echo '<br>$this->Ini->path_img_global = '.$this->Ini->path_img_global;    
echo '<br>$this->Ini->path_img_modelo = '.$this->Ini->path_img_modelo;    
echo '<br>$this->Ini->path_icones = '.$this->Ini->path_icones;            
echo '<br>$this->Ini->path_imag_cab = '.$this->Ini->path_imag_cab;        
echo '<br>$this->Ini->path_help = '.$this->Ini->path_help;                

echo '<br><br>Relativas a Producción:';
echo '<br>$this->Ini->path_prod = '.$this->Ini->path_prod;    
echo '<br>$this->Ini->path_cep = '.$this->Ini->path_cep;    
echo '<br>$this->Ini->path_js = '.$this->Ini->path_js;        
echo '<br>$this->Ini->path_cor = '.$this->Ini->path_cor;    

echo '<br><br>Otras:';
echo '<br>$this->Ini->path_lang = '.$this->Ini->path_lang;              
echo '<br>$this->Ini->path_lang_js = '.$this->Ini->path_lang_js;      
echo '<br>$this->Ini->path_imagens = '.$this->Ini->path_imagens;      
echo '<br>$this->Ini->path_imag_temp = '.$this->Ini->path_imag_temp;


echo '<br><br> **** Rutas UNC de disco ****';
echo '<br> Relativas a la APP';
echo '<br>$this->Ini->path_aplicacao = '.$this->Ini->path_aplicacao;
echo '<br>$this->Ini->path_embutida = '.$this->Ini->path_embutida;
echo '<br>$this->Ini->path_atual = '.$this->Ini->path_atual;
echo '<br>$this->Ini->path_btn = '.$this->Ini->path_btn;
echo '<br>$this->Ini->path_css = '.$this->Ini->path_css;
echo '<br>$this->Ini->path_lib_php = '.$this->Ini->path_lib_php;

echo '<br><br>Otras';
echo '<br>$this->Ini->path_third = '.$this->Ini->path_third;
echo '<br>$this->Ini->path_libs = '.$this->Ini->path_libs;
echo '<br>$this->Ini->path_doc = '.$this->Ini->path_doc;
echo '<br>$this->Ini->path_secure = '.$this->Ini->path_secure;
echo '<br>$this->Ini->path_adodb = '.$this->Ini->path_adodb;
echo '<br>$this->Ini->path_grafico = '.$this->Ini->path_grafico; 

//Fin del codigo


El resultado de esto será mas o menos algo como esto, pero depende del nombre del proyecto y de la aplicación:
**** Rutas Relativas para URL ****
Relativas a las APP:
$this->Ini->path_link         = /scriptcase/app/ERP_BS/
$this->Ini->path_botoes     = /scriptcase/app/ERP_BS/_lib/img
$this->Ini->path_img_global = /scriptcase/app/ERP_BS/_lib/img
$this->Ini->path_img_modelo = /scriptcase/app/ERP_BS/_lib/img
$this->Ini->path_icones     = /scriptcase/app/ERP_BS/_lib/img
$this->Ini->path_imag_cab     = /scriptcase/app/ERP_BS/_lib/img
$this->Ini->path_help         = /scriptcase/app/ERP_BS/_lib/webhelp/

Relativas a Producción:
$this->Ini->path_prod    = /scriptcase/prod
$this->Ini->path_cep     = /scriptcase/prod/cep
$this->Ini->path_js     = /scriptcase/prod/lib/js
$this->Ini->path_cor     = /scriptcase/prod/cor

Otras:

$this->Ini->path_lang = ../_lib/lang/
$this->Ini->path_lang_js = ../_lib/js/
$this->Ini->path_imagens = /scriptcase/file/img
$this->Ini->path_imag_temp = /scriptcase/tmp

**** Rutas UNC de disco ****
Relativas a la APP
$this->Ini->path_aplicacao = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/ERP_BS/mytest/
$this->Ini->path_embutida = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/ERP_BS/
$this->Ini->path_atual = C:\Program Files\NetMake\v9-php73\wwwroot\scriptcase\app\ERP_BS\mytest
$this->Ini->path_btn = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/ERP_BS/_lib/buttons/
$this->Ini->path_css = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/ERP_BS/_lib/css/
$this->Ini->path_lib_php = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/app/ERP_BS/_lib/lib/php

Otras

$this->Ini->path_third = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third
$this->Ini->path_libs = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/lib/php
$this->Ini->path_doc = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/file/doc
$this->Ini->path_secure = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/secure
$this->Ini->path_adodb = C:/Program Files/NetMake/v9-php73/wwwroot/scriptcase/prod/third/adodb
$this->Ini->path_grafico =
El Thursday, January 23, 2020 a la(s) 6:31:09 PM UTC-4, Fausto escribió:
Reply all
Reply to author
Forward
0 new messages