123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <?php
- /*
- * This file is part of the symfony package.
- * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
- * (c) 2004 David Heinemeier Hansson
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- /**
- * TagHelper defines some base helpers to construct html tags.
- *
- * @package symfony
- * @subpackage helper
- * @author Fabien Potencier <fabien.potencier@symfony-project.com>
- * @author David Heinemeier Hansson
- * @version SVN: $Id: TagHelper.php 13097 2008-11-18 06:58:24Z Kris.Wallsmith $
- */
- /**
- * Constructs an html tag.
- *
- * @param string $name tag name
- * @param array $options tag options
- * @param bool $open true to leave tag open
- * @return string
- */
- function tag($name, $options = array(), $open = false)
- {
- if (!$name)
- {
- return '';
- }
- return '<'.$name._tag_options($options).(($open) ? '>' : ' />');
- }
- function content_tag($name, $content = '', $options = array())
- {
- if (!$name)
- {
- return '';
- }
- return '<'.$name._tag_options($options).'>'.$content.'</'.$name.'>';
- }
- function cdata_section($content)
- {
- return "<![CDATA[$content]]>";
- }
- /**
- * Wraps the content in conditional comments.
- *
- * @param string $condition
- * @param string $content
- *
- * @return string
- *
- * @see http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx
- */
- function comment_as_conditional($condition, $content)
- {
- return "<!--[if $condition]>$content<![endif]-->";
- }
- /**
- * Escape carrier returns and single and double quotes for Javascript segments.
- */
- function escape_javascript($javascript = '')
- {
- $javascript = preg_replace('/\r\n|\n|\r/', "\\n", $javascript);
- $javascript = preg_replace('/(["\'])/', '\\\\\1', $javascript);
- return $javascript;
- }
- /**
- * Escapes an HTML string.
- *
- * @param string $html HTML string to escape
- * @return string escaped string
- */
- function escape_once($html)
- {
- return fix_double_escape(htmlspecialchars($html, ENT_COMPAT, sfConfig::get('sf_charset')));
- }
- /**
- * Fixes double escaped strings.
- *
- * @param string $escaped HTML string to fix
- * @return string fixed escaped string
- */
- function fix_double_escape($escaped)
- {
- return preg_replace('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', $escaped);
- }
- function _tag_options($options = array())
- {
- $options = _parse_attributes($options);
- $html = '';
- foreach ($options as $key => $value)
- {
- $html .= ' '.$key.'="'.escape_once($value).'"';
- }
- return $html;
- }
- function _parse_attributes($string)
- {
- return is_array($string) ? $string : sfToolkit::stringToArray($string);
- }
- function _get_option(&$options, $name, $default = null)
- {
- if (array_key_exists($name, $options))
- {
- $value = $options[$name];
- unset($options[$name]);
- }
- else
- {
- $value = $default;
- }
- return $value;
- }
- /**
- * Returns a formatted ID based on the <i>$name</i> parameter and optionally the <i>$value</i> parameter.
- *
- * This function determines the proper form field ID name based on the parameters. If a form field has an
- * array value as a name we need to convert them to proper and unique IDs like so:
- * <samp>
- * name[] => name (if value == null)
- * name[] => name_value (if value != null)
- * name[bob] => name_bob
- * name[item][total] => name_item_total
- * </samp>
- *
- * <b>Examples:</b>
- * <code>
- * echo get_id_from_name('status[]', '1');
- * </code>
- *
- * @param string $name field name
- * @param string $value field value
- *
- * @return string <select> tag populated with all the languages in the world.
- */
- function get_id_from_name($name, $value = null)
- {
- // check to see if we have an array variable for a field name
- if (strstr($name, '['))
- {
- $name = str_replace(array('[]', '][', '[', ']'), array((($value != null) ? '_'.$value : ''), '_', '_', ''), $name);
- }
- return $name;
- }
- /**
- * Converts specific <i>$options</i> to their correct HTML format
- *
- * @param array $options
- * @return array returns properly formatted options
- */
- function _convert_options($options)
- {
- $options = _parse_attributes($options);
- foreach (array('disabled', 'readonly', 'multiple') as $attribute)
- {
- if (array_key_exists($attribute, $options))
- {
- if ($options[$attribute])
- {
- $options[$attribute] = $attribute;
- }
- else
- {
- unset($options[$attribute]);
- }
- }
- }
- return $options;
- }
|