Encontrei uma referência opaca a uma <hint/>
tag nos system.xml
arquivos. Qual é o problema com essa tag? Seu uso está documentado em algum lugar?
Encontrei uma referência opaca a uma <hint/>
tag nos system.xml
arquivos. Qual é o problema com essa tag? Seu uso está documentado em algum lugar?
Respostas:
Não tenho certeza sobre EE, mas no CE essa é uma etiqueta vestigial de um sistema de ajuda nunca concluído. A intenção parece ter sido fornecer a cada campo de formulário na seção Configuração do sistema uma pequena "dica" ou texto de ajuda.
O texto de ajuda é adicionado quando o elemento do campo é criado
#File: app/code/core/Mage/Adminhtml/Block/System/Config/Form.php
$hint = (string)$element->hint ? Mage::helper($helperName)->__((string)$element->hint) : '';
//...
$field = $fieldset->addField($id, $fieldType, array(
'name' => $name,
'label' => $label,
'comment' => $comment,
'tooltip' => $tooltip,
'hint' => $hint,
'value' => $data,
'inherit' => $inherit,
'class' => $element->frontend_class . $sharedClass . $requiresClass,
'field_config' => $element,
'scope' => $this->getScope(),
'scope_id' => $this->getScopeId(),
'scope_label' => $this->getScopeLabel($element),
'can_use_default_value' => $this->canUseDefaultValue((int)$element->show_in_default),
'can_use_website_value' => $this->canUseWebsiteValue((int)$element->show_in_website),
));
Essa primeira linha lê o valor de um <hint/>
pol system.xml
.
Em seguida, quando o Magento renderiza o campo como HTML, a última coisa a fazer é adicionar a dica em uma div aninhada.
#File: app/code/core/Mage/Adminhtml/Block/System/Config/Form/Field.php
$html.= '<td class="">';
if ($element->getHint()) {
$html.= '<div class="hint" >';
$html.= '<div style="display: none;">' . $element->getHint() . '</div>';
$html.= '</div>';
}
$html.= '</td>';
Finalmente, há um pequeno javascript chamado no carregamento da página de administrador.
#File: app/design/adminhtml/default/default/template/system/config/js.phtml
function showHint() {
$$('.hint').each(function(element){
Event.observe(element, 'mouseover', function(){
element.down().show()
});
Event.observe(element, 'mouseout', function(){
element.down().hide()
});
});
}
Esse javascript configura manipuladores de eventos para que o texto de ajuda seja inserido dentro ou fora do texto de ajuda. A intenção dessa "dica" ajudaria os usuários a entender o que cada campo faz.
O problema? O HTML / CSS no back-end torna a dica com td
um único pixel de largura. Isso impede que alguém passe o mouse sobre a dica para visualizá-la. Tente adicionar uma dica à sua configuração de campo e execute o seguinte no console javascript do seu navegador
$$('.hint').each(function(el){
el.down().show();
});
Você verá algo assim.
(o Este é um texto de dica ).
Eu sempre gostei disso como um dos "Melhores Planos Colocados" que foram descartados quando o Magento foi lançado.