como obter o caminho dentro de uma aplicação.. (mais ou menos isso...)

(LuizMarin) #1

bom dia pessoal,

um problema que havia deixado de lado ha algum tempo, agora preciso resolver de qualquer jeito. (entenda-se: jeito certo)

abaixo lhes deixo um pedaço do codigo html gerado para ilustração.

vejam por exemplo, as duas ultimas linhas. Nelas tem a expressão “./novo”

  • esse codigo é gerado em uma aplicação blank.
  • essa aplicação necessita de varios arquivos .js, imagens, e um arquivo .css especifico.
  • no momento esses arquivos estao dentro do diretorio da aplicação, nesta pasta chamada “novo” (nao é o correto, mas como disse, “no momento”)

bom, o que necessito é o seguinte:

  • como digo para a aplicação achar o dito diretorio?

se coloco " " ele nao acha
se coloco " " ele nao acha
se coloco " " ele nao acha
se coloco " " ele nao acha
se coloco " " ele nao acha

enfim, mesmo em se tratando de um teste, como se faz dita coisa?
tem alguma função ou macete para isso?

agradeço a prestimosa ajuda dos colegas.

abraços

marin

(Haroldo) #2

Já comentei como eu faço aqui, preciso localizar o tópico, mas vou tentar resumir:

eu tenho uma tabela no banco de dados, com campo blob, que eu guardo os scripts nele, um registro para cada script.

Uso uma biblioteca que passo como parâmetros os scripts que querona aplicação, essa biblioteca, primeiro verifica a existência da pasta ./_lib/mylibs
Se não existe é criada, aí eu pego a data dos arquivos scripts que eu passei como parâmetro e comparo com a data do update na tabela, se o arquivo script não existe eo o escrevo descarregando do blob para o disco, e a data do script na pasta é menor que a da tabela eu também reescrevo.

Assim posso publicar minhas apps e usar bibliotecas externas sem me preocupar.

o caminho fica “…/_lib/mylibs/script.js” , “…/_lib/mylibs/script.php” , “…/_lib/mylibs/img/script.img” , “…/_lib/mylibs/script.css” entre outros.

(LuizMarin) #3

interessantissimo… vou ler com muita calma apos o almoço.

obrigado haroldo

(Haroldo) #4

Luiz,

Achei o tópico onde respondi a mesma dúvida: http://www.netmake.com.br/forum/index.php?topic=4455.msg17769#msg17769

Esse é um exemplo simples de como eu crio um script dinamicamente, basta colocar dentro de uma biblioteca do sc, habilitar na aplicação ou login, e fazer a chamada na oncriptinit (lembrando que a onscriptinit e chamada não só ao carregar a app como tambem nos eventos ajax, se fazendo necessário o seguinte código na primeira linha deste evento:

If ($this->NM_ajax_flag==1)  Return;

Segue função exemplo . eu utilizo esse script quando quero carregar via ajax variáveis em sessão mas passo via post no jquery.

Function iwAjax () { if(!is_dir("../_lib/mylibs")) { mkdir("../_lib/mylibs",0700); } if(!file_exists("../_lib/mylibs/iwAjax.php")) { $fp = fopen("../_lib/mylibs/iwAjax.php", "w"); fwrite($fp, '<?php session_start(); if ($_POST) { foreach ($_POST as $key => $value) { $_SESSION[$key]=$value; } } ?>'); fclose($fp); } }

Esse exemplo criar o arquivo iwAjax.php na pasta _lib/mylibs, assim não preciso fazer upload separados, ao publicar as apps do sc, elas mesmo se encarregar de escrever meus scripts externos.

(LuizMarin) #5

muitissimo obrigado haroldo pelo script e orientação.
me solucionaste um grande problema, nao apenas com scripts, mas tambem com certas imagens extras à aplicação.

em contrapartida, coloco aqui como ficou a funcao, com uma pequena alteração para que a informação provenha de um arquivo no banco de dados (centralizando as informações)

eis-la:

function iwAjax($nome_funcao);

$nome = “”;
$funcao = “”;

$check_sql = “SELECT nome,texto FROM scripts WHERE nome = '”.$nome_funcao."’";
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})) { // Row found
$nome = {rs[0][0]};
$funcao = {rs[0][1]};

if(!is_dir("../_lib/mylibs")) {
   mkdir("../_lib/mylibs",0755);
}

if(!file_exists("../_lib/mylibs/".trim($nome))) {
    $fp = fopen("../_lib/mylibs/".trim($nome), "w");
    fwrite($fp, trim($funcao));
    fclose($fp); 
}

}

o arquivo do banco de dados é assim:

CREATE TABLE IF NOT EXISTS scripts (
id int(11) NOT NULL AUTO_INCREMENT,
nome varchar(50) COLLATE latin1_general_ci NOT NULL,
descricao varchar(250) COLLATE latin1_general_ci NOT NULL,
datacriacao datetime DEFAULT NULL,
dataatualizacao datetime DEFAULT NULL,
texto blob NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY nome (nome)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

(Haroldo) #6

Ah!, então funcionou? Não preciso mais criar o exemplo?
Legal.

Abração e não faz como eu não, aproveita o carnaval para descansar.

(LuizMarin) #7
Ah!, então funcionou? Não preciso mais criar o exemplo? Legal.

é claro que funcionou! Ou voce ia me passar um codigo que nao funcionava ?! haroldo, haroldo…

pude fazer facilmente as alterações necessarias e torná-lo bem pratico.

obrigado

Abração e não faz como eu não, aproveita o carnaval para descansar.

o carnaval é uma das piores épocas do ano para mim. Quisera evitá-lo…

sou zelador e o carnaval é na porta do meu prédio. A sujeira que fica para mim limpar é desanimadora…
… e neste carnaval fiquei sem a lava-jato (pifou)… é tudo esfregando com vassoura e agua com pouca pressão…

felizmente, a cambada vai embora a partir de hoje e as coisas começam a me dar mais folga…

obrigado a voce e bom trabalho e descanso.

abraços