O Phabricator é um aplicativo PHP incrivelmente bem codificado, mas falta um pouco na parte da documentação. Mas, novamente, que projeto de código aberto não é assim? Nos últimos meses, tenho integrado lentamente o Phabricator, uma nova ferramenta de revisão, ao Bugzilla, uma ferramenta muito mais antiga. Na etapa mais recente, precisei adicionar um campo personalizado (DifferentialCommitMessageCustomField
class extension) às revisões:
Criando o DifferentialCommitMessageCustomField
foi bastante simples, mas, devido à estrutura do DifferentialRevision
e de outras classes do Phabricator, recuperar o valor do campo não é tão fácil quanto se espera. Depois de tentar vários métodos e vasculhar o código-fonte da cadeia de classes, foi Aviv Eyal quem forneceu uma função utilitária interessante para recuperar dados de campo personalizados para um determinado tipo de objeto do Phabricator:
function get_custom_field_value($object, $key_field) { $field = PhabricatorCustomField::getObjectField( $object, PhabricatorCustomField::ROLE_DEFAULT, $key_field ); id(new PhabricatorCustomFieldStorageQuery()) ->addField($field) ->execute(); $value = $field->getValueForStorage(); return $value; }
No meu caso, o $object
era um DifferentialRevision
e o $key_field
é differential:bugzilla-bug-id
, definido em meu DifferentialCommitMessageCustomField
. Se o senhor estiver adicionando um CustomField
de qualquer tipo a qualquer aplicativo Phabrication, o senhor pode usar esse mesmo método.
Quando há falta de documentação e níveis de herança com uma dúzia de níveis de profundidade, é ótimo que os membros da comunidade possam ajudar uns aos outros – isso diz muito sobre o projeto.
5 APIs HTML5 que o senhor não sabia que existiam
Quando se diz ou se lê “HTML5”, é de se esperar que dançarinas exóticas e unicórnios entrem na sala ao som de “I’m Sexy and I Know It”. Mas o senhor pode nos culpar? Assistimos à estagnação das APIs fundamentais por tanto tempo que um recurso básico…
Criar classes com espaço de nome com o MooTools
O MooTools sempre foi um pouco criticado por não usar e padronizar inerentemente classes JavaScript baseadas em namespaced, como faz o Dojo Toolkit. Muitos desenvolvedores criam suas classes como globais, o que geralmente é mal visto. Na maioria das vezes, não concordo com essa posição, mas cada um tem a sua. De qualquer forma…
Marca d’água “Top” usando MooTools
Sempre que tiver uma página longa de conteúdo, geralmente o usuário deseja adicionar um link de âncora “top” na parte inferior da página para que o usuário não precise rolar a página para chegar ao topo. O único problema com esse método é que…
Usar gráficos personalizados de imagens ausentes usando o MooTools
A falta de imagens em seu site pode fazer com que você ou sua empresa pareçam completamente amadores. Infelizmente, às vezes uma imagem é excluída ou corrompida sem o seu conhecimento. O senhor concorda comigo que o ícone “x vermelho” padrão do IE parece horrível, então por que não usar
 seu próprio gráfico de imagem ausente?