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)
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
<?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>
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 */
}
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.
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”
Publicado por: nilerbarcelos em: 27/04/2009
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 > 332 ? "333px" : "auto" ); /* definindo max-height para o IE */
}
div#topo{
max-height: 333px; /* Definindo max-height para navegadores padrões */
}
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>
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
}
?>