Quel est le problème avec la balise «Hint» dans system.xml?

12

J'ai trouvé une référence opaque à une <hint/>balise dans les system.xmlfichiers. Quel est le problème avec cette balise? Son utilisation est-elle documentée quelque part?

Alan Storm
la source
Avez-vous un exemple. Je n'ai pas pu en trouver un dans Mage 1.8 ou 1.9
David Manners
@DavidManners Voir ci-dessous - c'était plus une question "Je veux documenter Magento" en réponse à une question que quelqu'un m'a tweetée qu'une question "J'ai un problème". Les connaissances et le contexte des autres sont cependant plus que bienvenus.
Alan Storm
Ah je vous comprends. Bien que certains modules l'utilisent ou le cachent-ils?
David Manners
@DavidManners Il est caché et la façon dont le HTML de configuration du système est installé ne fonctionne même pas. Je pense que la fonction de conseil du rendu de champ peut fonctionner sur d'autres formulaires (édition de produit, etc.), mais elle n'est pas pilotée par system.xml. Également pertinent, le créateur du module de Marius a sa propre fonction d'aide / astuce. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Réponses:

16

Je ne suis pas sûr d'EE, mais dans CE, il s'agit d'une balise résiduelle d'un système d'aide jamais terminé. L'intention semble avoir été de donner à chaque champ de formulaire dans la section Configuration du système un petit "conseil" ou un texte d'aide.

Le texte d'aide est ajouté lors de la création de l'élément de champ

#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),
));

Cette première ligne lit la valeur d'un <hint/>in system.xml.

Ensuite, lorsque Magento rend le champ au format HTML, la dernière chose qu'il fait est d'ajouter le conseil dans un div imbriqué.

#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>';

Enfin, il y a un petit peu de javascript qui est appelé lors du chargement d'une page d'administration.

#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()
        });
    });
}

Ce javascript configure les gestionnaires d'événements de telle sorte que le fait d'entrer ou de sortir du texte d'aide le fera apparaître. L'intention étant cette "indication" aiderait les utilisateurs à comprendre ce que fait chaque champ.

Le problème? Le HTML / CSS sur le backend fait de l'indice tdun pixel de large. Cela empêche quiconque de survoler l'astuce pour l'afficher. Essayez d'ajouter un indice à la configuration de votre champ, puis exécutez ce qui suit à partir de la console javascript de votre navigateur

$$('.hint').each(function(el){
    el.down().show();
});

Vous verrez quelque chose comme ça.

entrez la description de l'image ici

(Le texte est un indice ).

J'ai toujours noté cela comme l'un de ces "meilleurs plans" qui a été abandonné après le lancement de Magento.

Alan Storm
la source
6
Beau morceau d'archéologie de Magento - j'adore!
kalenjordan
1
Impressionné par cela, je le suis.
philwinkle
Notez que vous pouvez remplacer le thème d'administration de Magento pour afficher des conseils par défaut. Je l'ai également modifié pour changer la police de la zone de texte en Consolas pour une meilleure lisibilité, etc.
thdoan