Qual é o problema com a tag "Hint" no system.xml?

12

Encontrei uma referência opaca a uma <hint/>tag nos system.xmlarquivos. Qual é o problema com essa tag? Seu uso está documentado em algum lugar?

Alan Storm
fonte
Você tem um exemplo? Eu não poderia encontrar um em Mago 1.8 ou 1.9
David Manners
@DavidManners Veja abaixo - essa foi mais uma pergunta "Quero documentar Magento" em resposta a uma pergunta que alguém me twittou do que uma pergunta "Eu tenho um problema". O conhecimento e o contexto de outras pessoas são mais do que bem-vindos.
Alan Storm
Ah, eu entendo você. Embora algum módulo realmente o use ou oculte?
David Manners
@DavidManners Está escondido, e a maneira como o HTML de configuração do sistema é configurado nem funciona. Acho que o recurso de dica da renderização de campo pode funcionar em outros formulários (edição de produtos etc.), mas isso não é direcionado pelo system.xml. Também relevante, o criador do módulo Marius tem seu próprio recurso de ajuda / dica. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Respostas:

16

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 tdum ú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.

insira a descrição da imagem aqui

(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.

Alan Storm
fonte
6
Belo pedaço de arqueologia Magento - adorei!
kalenjordan
1
Estou impressionado com isso.
philwinkle
Observe que você pode substituir o tema de administração do Magento para mostrar dicas por padrão. Eu também modificado para mudar a pia batismal caixa de texto para Consolas para melhor legibilidade, etc.
thdoan