Развитие плагина wp-forms

Плагин WP Forms получил развитие в моем форке. Я добавил несколько новых типов элементов — теперь можно вставить какой-нибудь кусок ХТМЛ-кода прямо в любое место формочки. Правда реализация, частично костыльная, т. к. некоторые атрибуты надо выключать и получилось что-то вроде:

$attributes = $element->get_all_attributes();
// Because this is just a tag (div, span) we don't need this attrs in tag.
unset($attributes['name'], $attributes['tag_name'], $attributes['type'], $attributes['value']);

Добро пожаловать в реальную разработку, где времени что-то переписывать или создавать еще миллион дополнительных классов нет, а нечто нужно заставить работать.

Добавилась поддержка AJAX-запросов. Теперь можно проверять формочку и обновлять ее состояние через Java$cript. На входе принимается обычный $.ajax(), а на выходе приходит объект, описывающий формочку и «пройдясь» по нему можно синхронизировать атрибуты и содержимое всех элементов внутри формы (удалить или добавить классы, расставить дополнительные атрибуты, вывести сообщения об ошибках, показать или скрыть некоторые блоки и т. п.).

Поскольку фантазию при верстке не ограничить и некоторые ХТМЛ-элементы нужно помещать в какую-то обертку пришлось добавить еще один тип элементов — Wrapper, который позволяет хранить в себе дочерние инпуты и кнопочки. Теперь верстальщики использующие Bootstrap и прочее будут довольны (ну, и я тоже).

->add_element(
	WP_Form_Element::create( 'wrapper' )
	->set_name('input_group_contacts')
	->add_class( 'input-group' )
	->set_attribute( 'tag_name', 'span' )
	->set_view( new WP_Form_View_Wrapper() )
	->add_decorator(
		'WP_Form_Decorator_Errors',
		array(
			'position' =>  1,
			'attributes' => array(
				'class' => 'list-unstyled help-block'
			)
		)
	)
	// Добавляем дочерний элемент
	->add_element()
	// ...
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s