background randomico

ok vencido pelo cansaço…

desde sexta-feira tento fazer este codigo funcionar.

este codigo fica no OnLoad do Login. Seu objetivo é mudar o fundo da aplicação cada vez que você acessa.
as imagens ficam numa pasta chamada “fundos”, que neste caso colei diretamente dentro da pasta dessa aplicação.

o caso é que dá o endereço correto, porém, o fundo permanece em branco.

pesquisei por casos semelhantes e nao encontrei nada.

se alguem quiser arriscar uma idéia, agradeço.

(scriptcase v6)

abraços

marin

$folder = $this->Ini->path_aplicacao . “fundos/”;

$exts = ‘jpg jpeg png gif’;
$files = array(); $i = -1; // Initialize some variables
if (’’ == $folder) $folder = ‘./’;

$handle = opendir($folder);
$exts = explode(’ ‘, $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // for each extension check the extension
if (preg_match(’/.’.$ext.’$/i’, $file, $test)) { // faster than ereg, case insensitive
$files[] = $file; // it’s good
++$i;

echo "
pasta: ".$file.’ k '. $i; // para ver se tem arquivos validos ---- deletar esta linha depois

  }

}
}
closedir($handle);
mt_srand((double)microtime()*1000000);
$rand = mt_rand(0, $i);

//header('Location: '.$folder.$files[$rand]); // Voila! esta linha funciona mas “chapa” a imagem

/* CSS to put the background in login page */
print ("

body { background-position: top center; background-repeat: no-repeat; background-image: url(".$folder.$files[$rand]."); } a:link, a:active, a:visited { color: #FFFFFF; text-decoration: none; } a:hover { color: #FFFFFF; text-decoration: underline; }

");

use jquery.

jquery… e como se faz isso ? nunca fiz nada com jquery e assemelhados…

Toda vez que a app é gerada, a pasta dela é removida e recriada, as imagens podem não estar mais lá.
Vá em apllicação/configuração e suba as imagens em publico.
o nome da imagem passa a ser: sys__NM__nomeimg.ext (onde nomeimg.ext é on ome do arquivo da imagem)

obrigado haroldo, mas o problema não é a existencia das imagens, uma vez que confirmo que elas estão lá e o diretorio tem permissao de acesso.

é “um detalhe” que no scriptcase nao funciona e em separado funciona.

como se pode usar jquery para isso ?

função que trocara o background-color:

function swapColor(color) { $('body').css('background', color); }

para testar: <a class="blue" href="javascript:void(0)" onClick="swapColor('#0000ff');" >Azul</a>

Função que troca a imagem:

function bgSwap(imageUrl) { $('body').css('background-image', "url("+imageUrl+")"); }

Você pode colocar direto na onscriptinit:

echo “";

Desenterrando…

Não seria menos complicado ter um diretório fixo com as imagens e a cada login o sistema pegar uma delas randomicamente e copiar por cima da imagem fixa no layout, com o mesmo nome sempre?
Cada vez que entrassem no sistema, ele iria carregar o mesmo fundo, mas o conteúdo seria diferente.
O que acham? É muita gambiarra ou vale a pena? Já pensei em fazer algo assim, inclusive criando uma apl pra fazer o upload das imagens desejadas pelo cliente.

** Gostei do truque aprovado. hehe

Depois de responder o tópico fiz exatamente isso que escrevi e funcionou perfeitamente.
Se quiserem o código é só falar.

Fiz de uma forma que basta deixar até 9 imagens, com nome sequencial imagem1, imagem2… até imagem9, dentro do diretório _lib/img.
O sistema vai randomizar o fundo de acordo com a qtde encontrada, se não houver nenhuma vai mostrar o fundo padrão do tema. Eu gostei muito do resultado, pra mim funcionou a contento.

Boa rrma,
Seria possível passar o código para nós e nos falar qual evento ele foi utilizado.

Obrigado