Niler Barcelos

Criando um Helper para exibir mensagens FLASH

Publicado por: nilerbarcelos em: 25/05/2009

Estamos concluindo nosso primeiro sistema em rails na empresa e hoje ao checar a padronização das mensagens de FLASH, me deparei com a necessidade de aplicar estilos para cada tipo de mensagem, foi então que o @rduarte propôs criar um helper para as mensagens e assim poder incluir tags html e os estilos.

Foi então que me lancei na pesquisa e cheguei a seguinte resolução.

module ApplicationHelper
  
  FLASH_TYPES = [:error, :warning, :success, :message]

  def display_flash(type = nil)
    html = ""
    
    if type.nil?
      FLASH_TYPES.each { |name| html << display_flash(name) }
    else
      return flash[type].blank? ? "" : "<div class=\"#{type}\"><p>#{flash[type]}</p></div>"
    end
    
    html
  end

end

# Chamando a mensagem dentro da sua View:
display_flash(:error)

Tags: ,

Gerando um arquivo XML com PHP5

Publicado por: nilerbarcelos em: 17/05/2009

A função a seguir gera uma agenda em XML.

function addContato($document, $nome, $telefone, $endereço){

	$contato = $document->createElement("contato"); //criar contato
	$nomeElm = $document->createElement("nome", $nome); //criar nome
	$telefoneElm = $document->createElement("telefone", $telefone); //criar telefone
	$enderecoElm = $document->createElement("endereco", $endereco); //criar endereco

	$contato->appendChild($nomeElm);
	$contato->appendChild($telefoneElm);
	$contato->appendChild($enderecoElm);

	return $contato;
}

	$dom = new DOMDocument("1.0", "ISO-8859-1");
	$dom->preserveWhiteSpace = false;
	$dom->formatOutput = true;

	$root = $dom->createElement("agenda");

	//utilizando a funcao para criar contatos
	$contatoJaca = addContato($dom, "Jaca Paladium", "(48) 555-3333", "Rua fim do mundo, 69");
	$contatoTripa = addContato($dom, "Tripanossoma Cruzi", "(51) 555-1234", "Rua da cocada, 159");

	//adicionando no root
	$root->appendChild($contatoJaca);
	$root->appendChild($contatoTripa);

	$dom->appendChild($root);
	$dom->save("agenda.xml"); //salvando o arquivo

	header("Content-Type: text/xml");
	echo $dom->saveXML(); //mostra dados na tela

Esse é o XML gerado pela função.
<?xml version="1.0" encoding="ISO-8859-1"?>
<agenda>
  <contato>
    <nome>Jaca Paladium</nome>
    <telefone>(48) 555-3333</telefone>
    <endereco>Rua fim do mundo, 69</endereco>
  </contato>
  <contato>
    <nome>Tripanossoma Cruzi</nome>
    <telefone>(51) 555-1234</telefone>
    <endereco>Rua da cocada, 159</endereco>
  </contato>
</agenda>

Tags:

CSS – Colocando estilos diferentes para o Google Chrome e o Safari

Publicado por: nilerbarcelos em: 29/04/2009

Particularmente eu nao considero “Boa prática” chegar ao ponto de ter que diferenciar estilos para o Safari e o Google Chrome uma vez que ambos utilizam o mesmo mecanismo de renderização “WebKit“, mas se algum dia você não tiver saída e precisar fazer isso, segue um exemplo abaixo de como separar a formatação.

/* Google Chrome hack */
body:nth-of-type(1) .elementOrClassName {
/* Propiedades para o navegador Google Chrome */
}
/* Safari hack */
body:first-of-type .elementOrClassName{
/* Propiedades para o navegador Safari */
}

Tags:

Rails – Associações polimórficas

Publicado por: nilerbarcelos em: 27/04/2009

Na semana que passou, tive que aprender a fazer associações polimórficas com rails no trabalho.
Estamos desenvolvendo nosso primeiro trabalho em rubyonrails e como iniciante no mundo todo dia é uma descoberta.

“Com associações polimórficas, um model pode pertencer a mais de um model, em uma única associação. Por exemplo, você pode ter um model foto que pertence a um model empregado ou a um model produto.”

class Picture < ActiveRecord::Base
	belongs_to :imageable, :polymorphic => true
end 

class Employee < ActiveRecord::Base
	has_many :pictures, :as => :imageable
end 

class Product < ActiveRecord::Base
	has_many :pictures, :as => :imageable
end

Esse exemplo foi retirado do RailsGuides, que por sinal tem me ajudado muito.

Tags: ,

Rails – Convertendo segundos para minutos/segundos

Publicado por: nilerbarcelos em: 27/04/2009

def convert_seconds_to_time(seconds)
	total_minutes = seconds / 1.minutes
	seconds_in_last_minute = seconds - total_minutes.minutes.seconds
	"#{total_minutes}m #{seconds_in_last_minute}s"
end

Exemplo: convert_seconds_to_time(630) =>”10m 30s”

Tags: ,

Hoje mesmo eu estava reclamando no twitter como eu odeio corrigir estilos no IE6. Alguns colegas sempre me falam para esquecer esse navegador e pronto. Eu até concordo, mas se você tem um cliente que não entende um pouco de tecnologia, certamente ele não vai entender também a diferença entre navegadores.

Esse exemplo mostra como utilizar max-height no Internet Explorer e como utilizar em navegadores padrões, lembrando que você pode alterar e utilizar esse exemplo de acordo com sua necessidade.

* html div#topo{
height: expression( this.scrollHeight &gt; 332 ? "333px" : "auto" ); /* definindo max-height para o IE */
}

div#topo{
max-height: 333px; /* Definindo max-height para navegadores padrões */
}

Tags:

Criando tooltips apenas com CSS.

Publicado por: nilerbarcelos em: 25/04/2009

Tooltips são aqueles balões de mensagens que aparecem quando você passa o mouse por algum link, que geralmente são utilizados para passar alguma informação para o usuário.

/*Código CSS*/
a{
	color:#09f;
	position:relative;
	overflow:hidden;
}
a span{
	position:absolute;
	top:20px;
	left:10px;
	border:1px solid #09f;
	padding:5px 5px 3px 5px;
	visibility:hidden;
	white-space:nowrap;
}
a:hover span{
	visibility:visible;
}

<!-- Como deve ficar seu link -->
<a href="http://www.nilerbarcelos.com" title="Niler Barcelos">Niler Barcelos<span>Visitar website?</span></a>

Tags:

Detectar browser com PHP

Publicado por: nilerbarcelos em: 25/04/2009

Quando estamos desenvolvendo nossas folhas de estilo (CSS), pode acontecer que as formatações que definimos não sejam compatíveis com outros browsers como por exemplo o IE6.
O código abaixo, é um exemplo de como detectar os browsers.

<?php
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ){
		if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') ){
			$browser = 'Netscape (Gecko/Netscape)';
		}
		else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') ){
			$browser = 'Mozilla Firefox (Gecko/Firefox)';
		}
		else{
			$browser = 'Mozilla (Gecko/Mozilla)';
		}
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ){
		$browser = 'Internet Explorer (MSIE/Compatible)';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') ){
		$browser = 'Safari';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') === true){
		$browser = 'Opera';
	}
	else{
		$browser = 'Outros browsers';
	}
	echo "<h2>Você está usando " .$browser. "</h2>";
?>

Podemos simplificar esse código de acordo com o número de browsers que precisamos detectar. Veja que já inclui o link para o estilo que necessita de uma formatação específica.

<?php
	if (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari')){
?>
		<link rel="stylesheet" type="text/css" href="webkit.css" />
<?php
	}
?>

Tags: , ,

Páginas

Categorias

Twitter

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.