<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: FormMultiCheckbox.php 7244 2010-09-01 01:49:53Z john $
 */


/** Zend_View_Helper_FormRadio */
// require_once 'Zend/View/Helper/FormRadio.php';


/**
 * Helper to generate a set of checkbox button elements
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Engine_View_Helper_FormMultiCheckbox extends Engine_View_Helper_FormRadio
{
	/**
	 * Input type to use
	 * @var string
	 */
	protected $_inputType = 'checkbox';

	/**
	 * Whether or not this element represents an array collection by default
	 * @var bool
	 */
	protected $_isArray = true;

	/**
	 * Generates a set of checkbox button elements.
	 *
	 * @access public
	 *
	 * @param string|array $name If a string, the element name.  If an
	 * array, all other parameters are ignored, and the array elements
	 * are extracted in place of added parameters.
	 *
	 * @param mixed $value The checkbox value to mark as 'checked'.
	 *
	 * @param array $options An array of key-value pairs where the array
	 * key is the checkbox value, and the array value is the radio text.
	 *
	 * @param array|string $attribs Attributes added to each radio.
	 *
	 * @return string The radio buttons XHTML.
	 */
	public function formMultiCheckbox($name, $value = null, $attribs = null,
			$options = null, $listsep = "<br />\n")
	{
		$attribs = (array) $attribs;

		//Search type field in the form
		$searchable = $attribs['searchable'] ? $attribs['searchable'] : false;

		$searchPlaceholder = isset($attribs['search_placeholder']) ? Zend_Registry::get('Zend_Translate')->_($attribs['search_placeholder']) : Zend_Registry::get('Zend_Translate')->_('Search');

		foreach (array('searchable', 'search_placeholder') as $attrib) {
			if (isset($attribs[$attrib])) {
				unset($attribs[$attrib]);
			}
		}

		$content = '<input type="hidden" name="' . $this->view->escape(rtrim($name, '[]')) . '" value="" />'
				. $this->formRadio($name, $value, $attribs, $options, $listsep);

		if (!$searchable) {
				return $content;
		}

		return $this->_renderSearchableMultiCheckbox($name, $attribs, $content, $searchPlaceholder);
	}

	protected function _renderSearchableMultiCheckbox($name, array $attribs, $content, $searchPlaceholder)
	{
		$xhtml = '<div class="engine-multicheckbox-wrapper" data-engine-multicheckbox>
			<div class="engine-multicheckbox-control form-control">
				<div class="engine-multicheckbox-tags"></div>
				<input type="text" class="engine-multicheckbox-search" placeholder="' . $this->view->escape($searchPlaceholder) . '">
			</div>
			<div class="engine-multicheckbox-dropdown">
				<div class="engine-multicheckbox-options">' . $content . '</div>
			</div>
		</div>';

		return $xhtml;
	}
}