Добавить комментарий

webform label после field

Стокнулся с проблемой отображения меток с элементами формы в модуле webform 7.x-3.20 (да, не последняя версия. в 3.21 без изменений). В настройках поля есть только три варианта отображения метки: сверху, в линию и нет.

Но посмотрев файл /includes/form.inc обнаружил в функции theme_form_element позицию метки after!! Видимо, разрабы webform решили, какой дурак будет ставить метку ПОД полем и не дописали "лишний" элемент массива.

Сей прискорбный "баг(?)" правится через кастомный модуль с помощью хука.

UPD: в textarea вообще печаль. Только скрыть или показать метку. Исправлен код.

function mymodule_form_alter(&$form, &$form_state, $form_id){
    switch ($form_id){
		case 'webform_component_edit_form':
			switch ($form['display']['title_display']['#type']){
				case 'select':
					$form['display']['title_display']['#options']['after'] = t('After');
				break;
				case 'checkbox':
					$form['display']['title_display']['#type'] = 'select';
					$form['display']['title_display']['#title'] = t('Label display');
					$form['display']['title_display']['#options'] = array(
						'none' => t('None'),
						'before' => t('Before'),
						'after' => t('After'),
					);
				break;
			}
		break;
	}
}

Теперь для всех элементов webform доступно отображеие метки под полем.