¿Cuál es el trato con la etiqueta "Sugerencia" en system.xml?

12

He encontrado referencias opacas a una <hint/>etiqueta en los system.xmlarchivos. ¿Cuál es el trato con esta etiqueta? ¿Está documentado su uso en alguna parte?

Alan Storm
fuente
¿Tienes un ejemplo? No pude encontrar uno en Mage 1.8 o 1.9
David Manners
@DavidManners Vea a continuación: esta fue más una pregunta de "Quiero documentar Magento" en respuesta a una pregunta que alguien me twitteó que una pregunta de "Tengo un problema". Sin embargo, el conocimiento y el contexto de otras personas son más que bienvenidos.
Alan Storm
Ah te entiendo. ¿Aunque algún módulo realmente lo usa o está escondido?
David Manners
@DavidManners Está oculto, y la forma en que se configura el HTML de configuración del sistema ni siquiera funciona. Creo que la característica de sugerencia de la representación de campo podría funcionar en otros formularios (edición de productos, etc.), pero eso no está impulsado por system.xml. También relevante, el creador del módulo de Marius tiene su propia función de ayuda / sugerencia. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Respuestas:

16

No estoy seguro acerca de EE, pero en CE esta es una etiqueta de vestigio de un sistema de ayuda nunca completado. La intención parece haber sido dar a cada campo de formulario en la sección Configuración del sistema una pequeña "pista" o texto de ayuda.

El texto de ayuda se agrega cuando se crea el elemento de campo

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

Esa primera línea se lee el valor de una <hint/>en system.xml.

Luego, cuando Magento representa el campo como HTML, lo último que hace es agregar la pista en un div anidado.

#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, hay un pequeño fragmento de javascript que se llama en una carga de la página de administración.

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

Este javascript configura controladores de eventos para que aparezca o desaparezca del texto de ayuda. La intención de esta "pista" ayudaría a los usuarios a comprender lo que hace cada campo.

¿El problema? El HTML / CSS en el backend hace que la pista tenga tdun solo píxel de ancho. Esto evita que alguien pase el mouse sobre la pista para verlo. Intente agregar una pista a la configuración de su campo y luego ejecute lo siguiente desde la consola de JavaScript de su navegador

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

Verás algo como esto.

ingrese la descripción de la imagen aquí

( Este es un texto de pista ).

Siempre lo atribuí a uno de esos "Mejores planes establecidos" que se eliminó una vez que se lanzó Magento.

Alan Storm
fuente
66
Hermosa parte de la arqueología de Magento: ¡me encanta!
kalenjordan
1
Impresionado con esto, lo estoy.
philwinkle
Tenga en cuenta que puede anular el tema de administración de Magento para mostrar sugerencias de forma predeterminada. También lo modifiqué para cambiar la fuente del cuadro de texto a Consolas para una mejor legibilidad, etc.
thdoan