AAAAhome/academiac/www/administrator/components/com_virtuemart/helpers/html.php000060400000051704151372165030023441 0ustar00 array('option.attr' => null, 'option.disable' => 'disable', 'option.id' => null, 'option.key' => 'value', 'option.key.toHtml' => true, 'option.label' => null, 'option.label.toHtml' => true, 'option.text' => 'text', 'option.text.toHtml' => true)); /** * Converts all special chars to html entities * * @param string $string * @param string $quote_style * @param boolean $only_special_chars Only Convert Some Special Chars ? ( <, >, &, ... ) * @return string */ static function shopMakeHtmlSafe( $string, $quote_style='ENT_QUOTES', $use_entities=false ) { if( defined( $quote_style )) { $quote_style = constant($quote_style); } if( $use_entities ) { $string = @htmlentities( $string, constant($quote_style), self::vmGetCharset() ); } else { $string = @htmlspecialchars( $string, $quote_style, self::vmGetCharset() ); } return $string; } /** * Returns the charset string from the global _ISO constant * * @return string UTF-8 by default * @since 1.0.5 */ static function vmGetCharset() { $iso = explode( '=', @constant('_ISO') ); if( !empty( $iso[1] )) { return $iso[1]; } else { return 'UTF-8'; } } /** * Generate HTML code for a row using VmHTML function * works also with shopfunctions, for example * $html .= VmHTML::row (array('ShopFunctions', 'renderShopperGroupList'), * 'VMCUSTOM_BUYER_GROUP_SHOPPER', $field->shopper_groups, TRUE, 'custom_param['.$row.'][shopper_groups][]', ' '); * * @func string : function to call * @label string : Text Label * @args array : arguments * @return string: HTML code for row table */ static function row($func,$label){ $VmHTML="VmHTML"; if (!is_array($func)) { $func = array($VmHTML, $func); } $passedArgs = func_get_args(); array_shift( $passedArgs );//remove function array_shift( $passedArgs );//remove label $args = array(); foreach ($passedArgs as $k => $v) { $args[] = &$passedArgs[$k]; } $lang =JFactory::getLanguage(); if($lang->hasKey($label.'_TIP')){ $labelHint = vmText::_($label.'_TIP'); $label = ''.vmText::_($label).'' ; } //Fallback else if($lang->hasKey($label.'_EXPLAIN')){ $labelHint = vmText::_($label.'_EXPLAIN'); $label = ''.vmText::_($label).'' ; } else { $label = vmText::_($label); } $html = ' '.$label.' '.call_user_func_array($func, $args).' '; return $html ; } /* simple value display */ static function value( $value ){ $lang =JFactory::getLanguage(); return $lang->hasKey($value) ? vmText::_($value) : $value; } /** * The sense is unclear ! * @deprecated * @param $value * @return mixed */ static function raw( $value ){ return $value; } /** * Generate HTML code for a checkbox * * @param string Name for the checkbox * @param mixed Current value of the checkbox * @param mixed Value to assign when checkbox is checked * @param mixed Value to assign when checkbox is not checked * @return string HTML code for checkbox */ static function checkbox($name, $value, $checkedValue=1, $uncheckedValue=0, $extraAttribs = '', $id = null) { if (!$id) $id=$name ; if ($value == $checkedValue) { $checked = 'checked="checked"'; } else { $checked = ''; } $htmlcode = ''; $htmlcode .= ''; return $htmlcode; } /** * * @author Patrick Kohl * @param array $options( value & text) * @param string $name option name * @param string $defaut defaut value * @param string $key option value * @param string $text option text * @param boolean $zero add a '0' value in the option * return a select list */ public static function select($name, $options, $default = '0',$attrib = "onchange='submit();'",$key ='value' ,$text ='text', $zero=true, $chosenDropDowns=true,$tranlsate=true){ if ($zero==true) { $option = array($key =>"0", $text => vmText::_('COM_VIRTUEMART_LIST_EMPTY_OPTION')); $options = array_merge(array($option), $options); } if ($chosenDropDowns) { vmJsApi::chosenDropDowns(); $attrib .= ' class="vm-chzn-select"'; } return VmHTML::genericlist($options,$name,$attrib,$key,$text,$default,false,$tranlsate); } /** * Generates an HTML selection list. * @author Joomla 2.5.14 * @param array $data An array of objects, arrays, or scalars. * @param string $name The value of the HTML name attribute. * @param mixed $attribs Additional HTML attributes for the ' . $options['format.eol']; return $html; } /** * Generates the option tags for an HTML select list (with no select tag * surrounding the options). * @author Joomla 2.5.14 * @param array $arr An array of objects, arrays, or values. * @param mixed $optKey If a string, this is the name of the object variable for * the option value. If null, the index of the array of objects is used. If * an array, this is a set of options, as key/value pairs. Valid options are: * -Format options, {@see JHtml::$formatOptions}. * -groups: Boolean. If set, looks for keys with the value * "<optgroup>" and synthesizes groups from them. Deprecated. Defaults * true for backwards compatibility. * -list.select: either the value of one selected option or an array * of selected options. Default: none. * -list.translate: Boolean. If set, text and labels are translated via * JText::_(). Default is false. * -option.id: The property in each option array to use as the * selection id attribute. Defaults to none. * -option.key: The property in each option array to use as the * selection value. Defaults to "value". If set to null, the index of the * option array is used. * -option.label: The property in each option array to use as the * selection label attribute. Defaults to null (none). * -option.text: The property in each option array to use as the * displayed text. Defaults to "text". If set to null, the option array is * assumed to be a list of displayable scalars. * -option.attr: The property in each option array to use for * additional selection attributes. Defaults to none. * -option.disable: The property that will hold the disabled state. * Defaults to "disable". * -option.key: The property that will hold the selection value. * Defaults to "value". * -option.text: The property that will hold the the displayed text. * Defaults to "text". If set to null, the option array is assumed to be a * list of displayable scalars. * @param string $optText The name of the object variable for the option text. * @param mixed $selected The key that is selected (accepts an array or a string) * @param boolean $translate Translate the option values. * * @return string HTML for the select list * * @since 11.1 */ public static function options($arr, $optKey = 'value', $optText = 'text', $selected = null, $translate = false) { $options = array_merge( JHtml::$formatOptions, self::$_optionDefaults['option'], array('format.depth' => 0, 'groups' => true, 'list.select' => null, 'list.translate' => false) ); if (is_array($optKey)) { // Set default options and overwrite with anything passed in $options = array_merge($options, $optKey); } else { // Get options from the parameters $options['option.key'] = $optKey; $options['option.text'] = $optText; $options['list.select'] = $selected; $options['list.translate'] = $translate; } $html = ''; $baseIndent = str_repeat($options['format.indent'], $options['format.depth']); foreach ($arr as $elementKey => &$element) { $attr = ''; $extra = ''; $label = ''; $id = ''; if (is_array($element)) { $key = $options['option.key'] === null ? $elementKey : $element[$options['option.key']]; $text = $element[$options['option.text']]; if (isset($element[$options['option.attr']])) { $attr = $element[$options['option.attr']]; } if (isset($element[$options['option.id']])) { $id = $element[$options['option.id']]; } if (isset($element[$options['option.label']])) { $label = $element[$options['option.label']]; } if (isset($element[$options['option.disable']]) && $element[$options['option.disable']]) { $extra .= ' disabled="disabled"'; } } elseif (is_object($element)) { $key = $options['option.key'] === null ? $elementKey : $element->$options['option.key']; $text = $element->$options['option.text']; if (isset($element->$options['option.attr'])) { $attr = $element->$options['option.attr']; } if (isset($element->$options['option.id'])) { $id = $element->$options['option.id']; } if (isset($element->$options['option.label'])) { $label = $element->$options['option.label']; } if (isset($element->$options['option.disable']) && $element->$options['option.disable']) { $extra .= ' disabled="disabled"'; } } else { // This is a simple associative array $key = $elementKey; $text = $element; } // The use of options that contain optgroup HTML elements was // somewhat hacked for J1.5. J1.6 introduces the grouplist() method // to handle this better. The old solution is retained through the // "groups" option, which defaults true in J1.6, but should be // deprecated at some point in the future. $key = (string) $key; // if no string after hyphen - take hyphen out $splitText = explode(' - ', $text, 2); $text = $splitText[0]; if (isset($splitText[1])) { $text .= ' - ' . $splitText[1]; } if ($options['list.translate'] && !empty($label)) { $label = vmText::_($label); } if ($options['option.label.toHtml']) { $label = htmlentities($label); } if (is_array($attr)) { $attr = JArrayHelper::toString($attr); } else { $attr = trim($attr); } $extra = ($id ? ' id="' . $id . '"' : '') . ($label ? ' label="' . $label . '"' : '') . ($attr ? ' ' . $attr : '') . $extra; if (is_array($options['list.select'])) { foreach ($options['list.select'] as $val) { $key2 = is_object($val) ? $val->$options['option.key'] : $val; if ($key == $key2) { $extra .= ' selected="selected"'; break; } } } elseif ((string) $key == (string) $options['list.select']) { $extra .= ' selected="selected"'; } if ($options['list.translate']) { $text = vmText::_($text); } // Generate the option, encoding as required $html .= $baseIndent . '' . $options['format.eol']; } return $html; } /** * Prints an HTML dropdown box named $name using $arr to * load the drop down. If $value is in $arr, then $value * will be the selected option in the dropdown. * @author gday * @author soeren * * @param string $name The name of the select element * @param string $value The pre-selected value * @param array $arr The array containing $key and $val * @param int $size The size of the select element * @param string $multiple use "multiple=\"multiple\" to have a multiple choice select list * @param string $extra More attributes when needed * @return string HTML drop-down list */ static function selectList($name, $value, $arrIn, $size=1, $multiple="", $extra="", $data_placeholder='') { $html = ''; if( empty( $arrIn ) ) { $arr = array(); } else { if(!is_array($arrIn)){ $arr=array($arrIn); } else { $arr=$arrIn; } } if (!empty($data_placeholder)) { $data_placeholder='data-placeholder="'.vmText::_($data_placeholder).'"'; } $html = ''; return $html; } /** * Creates a Radio Input List * * @param string $name * @param string $value default value * @param string $arr * @param string $extra * @return string */ static function radioList($name, $value, &$arr, $extra="", $separator='
') { $html = ''; if( empty( $arr ) ) { $arr = array(); } $html = ''; $i = 0; foreach($arr as $key => $val) { $checked = ''; if( is_array( $value )) { if( in_array( $key, $value )) { $checked = 'checked="checked"'; } } else { if(strtolower($value) == strtolower($key) ) { $checked = 'checked="checked"'; } } $html .= '\n"; $html .= '".$separator."\n"; } return $html; } /** * Creates radio List * @param array $radios * @param string $name * @param string $default * @return string */ static function radio( $name, $radios, $default,$key='value',$text='text') { return '
'.JHTML::_('select.radiolist', $radios, $name, '', $key, $text, $default).'
'; } /** * Creating rows with boolean list * * @author Patrick Kohl * @param string $label * @param string $name * @param string $value * */ public static function booleanlist ( $name, $value,$class='class="inputbox"'){ return '
'.JHTML::_( 'select.booleanlist', $name , $class , $value).'
' ; } /** * Creating rows with input fields * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function input($name,$value,$class='class="inputbox"',$readonly='',$size='37',$maxlength='255',$more=''){ return ''.$more; } /** * Creating rows with input fields * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function textarea($name,$value,$class='class="inputbox"',$cols='100',$rows="4"){ return ''; } /** * render editor code * * @author Patrick Kohl * @param string $text * @param string $name * @param string $value */ public static function editor($name,$value,$size='100%',$height='300',$hide = array('pagebreak', 'readmore')){ $editor =JFactory::getEditor(); return $editor->display($name, $value, $size, $height, null, null ,$hide ) ; } /** * renders the hidden input * @author Max Milbers */ public static function inputHidden($values){ $html=''; foreach($values as $k=>$v){ $html .= ''; } return $html; } /** * @author Patrick Kohl * @var $type type of regular Expression to validate * $type can be I integer, F Float, A date, M, time, T text, L link, U url, P phone *@bool $required field is required *@Int $min minimum of char *@Int $max max of char *@var $match original ID field to compare with this such as Email, passsword *@ Return $html class for validate javascript **/ public static function validate($type='',$required=true, $min=null,$max=null,$match=null) { if ($required) $validTxt = 'required'; else $validTxt = 'optional'; if (isset($min)) $validTxt .= ',minSize['.$min.']'; if (isset($max)) $validTxt .= ',maxSize['.$max.']'; static $validateID=0 ; $validateID++; if ($type=='S' ) return 'id="validate'.$validateID.'" class="validate[required,minSize[2],maxSize[255]]"'; $validate = array ( 'I'=>'onlyNumberSp', 'F'=>'number','D'=>'dateTime','A'=>'date','M'=>'time','T'=>'Text','L'=>'link','U'=>'url','P'=>'phone'); if (isset ($validate[$type])) $validTxt .= ',custom['.$validate[$type].']'; $html ='id="validate'.$validateID.'" class="validate['.$validTxt.']"'; return $html ; } }home/academiac/www/libraries/joomla/html/html.php000064400000066632151372612420016105 0ustar00 0, 'format.eol' => "\n", 'format.indent' => "\t"); /** * An array to hold included paths * * @var array * @since 11.1 */ protected static $includePaths = array(); /** * An array to hold method references * * @var array * @since 11.1 */ protected static $registry = array(); /** * Method to extract a key * * @param string $key The name of helper method to load, (prefix).(class).function * prefix and class are optional and can be used to load custom html helpers. * * @return array Contains lowercase key, prefix, file, function. * * @since 11.1 */ protected static function extract($key) { $key = preg_replace('#[^A-Z0-9_\.]#i', '', $key); // Check to see whether we need to load a helper file $parts = explode('.', $key); $prefix = (count($parts) == 3 ? array_shift($parts) : 'JHtml'); $file = (count($parts) == 2 ? array_shift($parts) : ''); $func = array_shift($parts); return array(strtolower($prefix . '.' . $file . '.' . $func), $prefix, $file, $func); } /** * Class loader method * * Additional arguments may be supplied and are passed to the sub-class. * Additional include paths are also able to be specified for third-party use * * @param string $key The name of helper method to load, (prefix).(class).function * prefix and class are optional and can be used to load custom * html helpers. * * @return mixed JHtml::call($function, $args) or False on error * * @since 11.1 */ public static function _($key) { list($key, $prefix, $file, $func) = self::extract($key); if (array_key_exists($key, self::$registry)) { $function = self::$registry[$key]; $args = func_get_args(); // Remove function name from arguments array_shift($args); return JHtml::call($function, $args); } $className = $prefix . ucfirst($file); if (!class_exists($className)) { jimport('joomla.filesystem.path'); if ($path = JPath::find(JHtml::$includePaths, strtolower($file) . '.php')) { require_once $path; if (!class_exists($className)) { JError::raiseError(500, JText::sprintf('JLIB_HTML_ERROR_NOTFOUNDINFILE', $className, $func)); return false; } } else { JError::raiseError(500, JText::sprintf('JLIB_HTML_ERROR_NOTSUPPORTED_NOFILE', $prefix, $file)); return false; } } $toCall = array($className, $func); if (is_callable($toCall)) { JHtml::register($key, $toCall); $args = func_get_args(); // Remove function name from arguments array_shift($args); return JHtml::call($toCall, $args); } else { JError::raiseError(500, JText::sprintf('JLIB_HTML_ERROR_NOTSUPPORTED', $className, $func)); return false; } } /** * Registers a function to be called with a specific key * * @param string $key The name of the key * @param string $function Function or method * * @return boolean True if the function is callable * * @since 11.1 */ public static function register($key, $function) { list($key) = self::extract($key); if (is_callable($function)) { self::$registry[$key] = $function; return true; } return false; } /** * Removes a key for a method from registry. * * @param string $key The name of the key * * @return boolean True if a set key is unset * * @since 11.1 */ public static function unregister($key) { list($key) = self::extract($key); if (isset(self::$registry[$key])) { unset(self::$registry[$key]); return true; } return false; } /** * Test if the key is registered. * * @param string $key The name of the key * * @return boolean True if the key is registered. * * @since 11.1 */ public static function isRegistered($key) { list($key) = self::extract($key); return isset(self::$registry[$key]); } /** * Function caller method * * @param string $function Function or method to call * @param array $args Arguments to be passed to function * * @return mixed Function result or false on error. * * @see http://php.net/manual/en/function.call-user-func-array.php * @since 11.1 */ protected static function call($function, $args) { if (is_callable($function)) { // PHP 5.3 workaround $temp = array(); foreach ($args as &$arg) { $temp[] = &$arg; } return call_user_func_array($function, $temp); } else { JError::raiseError(500, JText::_('JLIB_HTML_ERROR_FUNCTION_NOT_SUPPORTED')); return false; } } /** * Write a element * * @param string $url The relative URL to use for the href attribute * @param string $text The target attribute to use * @param array $attribs An associative array of attributes to add * * @return string string * * @since 11.1 */ public static function link($url, $text, $attribs = null) { if (is_array($attribs)) { $attribs = JArrayHelper::toString($attribs); } return '' . $text . ''; } /** * Write a element * * @param string $url The relative URL to use for the src attribute * @param string $name The target attribute to use * @param array $attribs An associative array of attributes to add * @param string $noFrames The message to display if the iframe tag is not supported * * @return string element or message if not supported * * @since 11.1 */ public static function iframe($url, $name, $attribs = null, $noFrames = '') { if (is_array($attribs)) { $attribs = JArrayHelper::toString($attribs); } return ''; } /** * Compute the files to be include * * @param string $file path to file * @param boolean $relative path to file is relative to /media folder * @param boolean $detect_browser detect browser to include specific browser files * @param string $folder folder name to search into (images, css, js, ...) * * @return array files to be included * * @see JBrowser * @since 11.1 * * @deprecated 12.1 */ protected static function _includeRelativeFiles($file, $relative, $detect_browser, $folder) { JLog::add('JHtml::_includeRelativeFiles() is deprecated. Use JHtml::includeRelativeFiles().', JLog::WARNING, 'deprecated'); return self::includeRelativeFiles($folder, $file, $relative, $detect_browser, false); } /** * Compute the files to be include * * @param string $folder folder name to search into (images, css, js, ...) * @param string $file path to file * @param boolean $relative path to file is relative to /media folder * @param boolean $detect_browser detect browser to include specific browser files * @param boolean $detect_debug detect debug to include compressed files if debug is on * * @return array files to be included * * @see JBrowser * @since 11.1 */ protected static function includeRelativeFiles($folder, $file, $relative, $detect_browser, $detect_debug) { // If http is present in filename if (strpos($file, 'http') === 0) { $includes = array($file); } else { // Extract extension and strip the file $strip = JFile::stripExt($file); $ext = JFile::getExt($file); // Detect browser and compute potential files if ($detect_browser) { $navigator = JBrowser::getInstance(); $browser = $navigator->getBrowser(); $major = $navigator->getMajor(); $minor = $navigator->getMinor(); // Try to include files named filename.ext, filename_browser.ext, filename_browser_major.ext, filename_browser_major_minor.ext // where major and minor are the browser version names $potential = array($strip, $strip . '_' . $browser, $strip . '_' . $browser . '_' . $major, $strip . '_' . $browser . '_' . $major . '_' . $minor); } else { $potential = array($strip); } // If relative search in template directory or media directory if ($relative) { // Get the template $app = JFactory::getApplication(); $template = $app->getTemplate(); // Prepare array of files $includes = array(); // For each potential files foreach ($potential as $strip) { $files = array(); // Detect debug mode if ($detect_debug && JFactory::getConfig()->get('debug')) { $files[] = $strip . '-uncompressed.' . $ext; } $files[] = $strip . '.' . $ext; // Loop on 1 or 2 files and break on first found foreach ($files as $file) { // If the file is in the template folder if (file_exists(JPATH_THEMES . "/$template/$folder/$file")) { $includes[] = JURI::base(true) . "/templates/$template/$folder/$file"; break; } else { // If the file contains any /: it can be in an media extension subfolder if (strpos($file, '/')) { // Divide the file extracting the extension as the first part before / list($extension, $file) = explode('/', $file, 2); // If the file yet contains any /: it can be a plugin if (strpos($file, '/')) { // Divide the file extracting the element as the first part before / list($element, $file) = explode('/', $file, 2); // Try to deal with plugins group in the media folder if (file_exists(JPATH_ROOT . "/media/$extension/$element/$folder/$file")) { $includes[] = JURI::root(true) . "/media/$extension/$element/$folder/$file"; break; } // Try to deal with classical file in a a media subfolder called element elseif (file_exists(JPATH_ROOT . "/media/$extension/$folder/$element/$file")) { $includes[] = JURI::root(true) . "/media/$extension/$folder/$element/$file"; break; } // Try to deal with system files in the template folder elseif (file_exists(JPATH_THEMES . "/$template/$folder/system/$element/$file")) { $includes[] = JURI::root(true) . "/templates/$template/$folder/system/$element/$file"; break; } // Try to deal with system files in the media folder elseif (file_exists(JPATH_ROOT . "/media/system/$folder/$element/$file")) { $includes[] = JURI::root(true) . "/media/system/$folder/$element/$file"; break; } } // Try to deals in the extension media folder elseif (file_exists(JPATH_ROOT . "/media/$extension/$folder/$file")) { $includes[] = JURI::root(true) . "/media/$extension/$folder/$file"; break; } // Try to deal with system files in the template folder elseif (file_exists(JPATH_THEMES . "/$template/$folder/system/$file")) { $includes[] = JURI::root(true) . "/templates/$template/$folder/system/$file"; break; } // Try to deal with system files in the media folder elseif (file_exists(JPATH_ROOT . "/media/system/$folder/$file")) { $includes[] = JURI::root(true) . "/media/system/$folder/$file"; break; } } // Try to deal with system files in the media folder elseif (file_exists(JPATH_ROOT . "/media/system/$folder/$file")) { $includes[] = JURI::root(true) . "/media/system/$folder/$file"; break; } } } } } // If not relative and http is not present in filename else { $includes = array(); foreach ($potential as $strip) { // Detect debug mode if ($detect_debug && JFactory::getConfig()->get('debug') && file_exists(JPATH_ROOT . "/$strip-uncompressed.$ext")) { $includes[] = JURI::root(true) . "/$strip-uncompressed.$ext"; } elseif (file_exists(JPATH_ROOT . "/$strip.$ext")) { $includes[] = JURI::root(true) . "/$strip.$ext"; } } } } return $includes; } /** * Write a element * * @param string $file The relative or absolute URL to use for the src attribute * @param string $alt The alt text. * @param string $attribs The target attribute to use * @param array $relative An associative array of attributes to add * @param boolean $path_only If set to true, it tries to find an override for the file in the template * * @return string * * @since 11.1 */ public static function image($file, $alt, $attribs = null, $relative = false, $path_only = false) { if (is_array($attribs)) { $attribs = JArrayHelper::toString($attribs); } $includes = self::includeRelativeFiles('images', $file, $relative, false, false); // If only path is required if ($path_only) { if (count($includes)) { return $includes[0]; } else { return null; } } else { return '' . $alt . ''; } } /** * Write a element * * @param string $file path to file * @param array $attribs attributes to be added to the stylesheet * @param boolean $relative path to file is relative to /media folder * @param boolean $path_only return the path to the file only * @param boolean $detect_browser detect browser to include specific browser css files * will try to include file, file_*browser*, file_*browser*_*major*, file_*browser*_*major*_*minor* * * * * * * * * * * * * * * * * * * * * * *
Navigator browser major.minor
Safari 3.0.x konqueror 522.x
Safari 3.1.x and 3.2.x konqueror 525.x
Safari 4.0 to 4.0.2 konqueror 530.x
Safari 4.0.3 to 4.0.4 konqueror 531.x
iOS 4.0 Safari konqueror 532.x
Safari 5.0 konqueror 533.x
Google Chrome 1.0 konqueror 528.x
Google Chrome 2.0 konqueror 530.x
Google Chrome 3.0 and 4.x konqueror 532.x
Google Chrome 5.0 konqueror 533.x
Internet Explorer 5.5 msie 5.5
Internet Explorer 6.x msie 6.x
Internet Explorer 7.x msie 7.x
Internet Explorer 8.x msie 8.x
Firefox mozilla 5.0
* a lot of others * @param boolean $detect_debug detect debug to search for compressed files if debug is on * * @return mixed nothing if $path_only is false, null, path or array of path if specific css browser files were detected * * @see JBrowser * @since 11.1 */ public static function stylesheet($file, $attribs = array(), $relative = false, $path_only = false, $detect_browser = true, $detect_debug = true) { // Need to adjust for the change in API from 1.5 to 1.6. // Function stylesheet($filename, $path = 'media/system/css/', $attribs = array()) if (is_string($attribs)) { JLog::add('The used parameter set in JHtml::stylesheet() is deprecated.', JLog::WARNING, 'deprecated'); // Assume this was the old $path variable. $file = $attribs . $file; } if (is_array($relative)) { // Assume this was the old $attribs variable. $attribs = $relative; $relative = false; } $includes = self::includeRelativeFiles('css', $file, $relative, $detect_browser, $detect_debug); // If only path is required if ($path_only) { if (count($includes) == 0) { return null; } elseif (count($includes) == 1) { return $includes[0]; } else { return $includes; } } // If inclusion is required else { $document = JFactory::getDocument(); foreach ($includes as $include) { $document->addStylesheet($include, 'text/css', null, $attribs); } } } /** * Write a element * * @param string $file path to file * @param boolean $framework load the JS framework * @param boolean $relative path to file is relative to /media folder * @param boolean $path_only return the path to the file only * @param boolean $detect_browser detect browser to include specific browser js files * @param boolean $detect_debug detect debug to search for compressed files if debug is on * * @return mixed nothing if $path_only is false, null, path or array of path if specific js browser files were detected * * @see JHtml::stylesheet * @since 11.1 */ public static function script($file, $framework = false, $relative = false, $path_only = false, $detect_browser = true, $detect_debug = true) { // Need to adjust for the change in API from 1.5 to 1.6. // function script($filename, $path = 'media/system/js/', $mootools = true) if (is_string($framework)) { JLog::add('The used parameter set in JHtml::script() is deprecated.', JLog::WARNING, 'deprecated'); // Assume this was the old $path variable. $file = $framework . $file; $framework = $relative; } // Include MooTools framework if ($framework) { JHtml::_('behavior.framework'); } $includes = self::includeRelativeFiles('js', $file, $relative, $detect_browser, $detect_debug); // If only path is required if ($path_only) { if (count($includes) == 0) { return null; } elseif (count($includes) == 1) { return $includes[0]; } else { return $includes; } } // If inclusion is required else { $document = JFactory::getDocument(); foreach ($includes as $include) { $document->addScript($include); } } } /** * Add the /media/system/js/core Javascript file. * * @param boolean $debug True if debugging is enabled. * * @return void * * @since 11.1 * @deprecated 12.1 Use JHtml::_('behavior.framework'); instead. */ public static function core($debug = null) { JLog::add('JHtml::core() is deprecated. Use JHtml::_(\'behavior.framework\');.', JLog::WARNING, 'deprecated'); JHtml::_('behavior.framework', false, $debug); } /** * Set format related options. * * Updates the formatOptions array with all valid values in the passed * array. See {@see JHtml::$formatOptions} for details. * * @param array $options Option key/value pairs. * * @return void * * @since 11.1 */ public static function setFormatOptions($options) { foreach ($options as $key => $val) { if (isset(self::$formatOptions[$key])) { self::$formatOptions[$key] = $val; } } } /** * Returns formated date according to a given format and time zone. * * @param string $input String in a format accepted by date(), defaults to "now". * @param string $format Format optional format for strftime * @param mixed $tz Time zone to be used for the date. Special cases: boolean true for user * setting, boolean false for server setting. * @param boolean $gregorian True to use Gregorian calenar * * @return string A date translated by the given format and time zone. * * @see strftime * @since 11.1 */ public static function date($input = 'now', $format = null, $tz = true, $gregorian = false) { // Get some system objects. $config = JFactory::getConfig(); $user = JFactory::getUser(); // UTC date converted to user time zone. if ($tz === true) { // Get a date object based on UTC. $date = JFactory::getDate($input, 'UTC'); // Set the correct time zone based on the user configuration. $date->setTimeZone(new DateTimeZone($user->getParam('timezone', $config->get('offset')))); } // UTC date converted to server time zone. elseif ($tz === false) { // Get a date object based on UTC. $date = JFactory::getDate($input, 'UTC'); // Set the correct time zone based on the server configuration. $date->setTimeZone(new DateTimeZone($config->get('offset'))); } // No date conversion. elseif ($tz === null) { $date = JFactory::getDate($input); } // UTC date converted to given time zone. else { // Get a date object based on UTC. $date = JFactory::getDate($input, 'UTC'); // Set the correct time zone based on the server configuration. $date->setTimeZone(new DateTimeZone($tz)); } // If no format is given use the default locale based format. if (!$format) { $format = JText::_('DATE_FORMAT_LC1'); } // format is an existing language key elseif (JFactory::getLanguage()->hasKey($format)) { $format = JText::_($format); } if ($gregorian) { return $date->format($format, true); } else { return $date->calendar($format, true); } } /** * Creates a tooltip with an image as button * * @param string $tooltip The tip string * @param mixed $title The title of the tooltip or an associative array with keys contained in * {'title','image','text','href','alt'} and values corresponding to parameters of the same name. * @param string $image The image for the tip, if no text is provided * @param string $text The text for the tip * @param string $href An URL that will be used to create the link * @param string $alt The alt attribute for img tag * @param string $class CSS class for the tool tip * * @return string * * @since 11.1 */ public static function tooltip($tooltip, $title = '', $image = 'tooltip.png', $text = '', $href = '', $alt = 'Tooltip', $class = 'hasTip') { if (is_array($title)) { if (isset($title['image'])) { $image = $title['image']; } if (isset($title['text'])) { $text = $title['text']; } if (isset($title['href'])) { $href = $title['href']; } if (isset($title['alt'])) { $alt = $title['alt']; } if (isset($title['class'])) { $class = $title['class']; } if (isset($title['title'])) { $title = $title['title']; } else { $title = ''; } } $tooltip = htmlspecialchars($tooltip, ENT_COMPAT, 'UTF-8'); $title = htmlspecialchars($title, ENT_COMPAT, 'UTF-8'); $alt = htmlspecialchars($alt, ENT_COMPAT, 'UTF-8'); if (!$text) { $text = self::image($image, $alt, null, true); } if ($href) { $tip = '' . $text . ''; } else { $tip = $text; } if ($title) { $tooltip = $title . '::' . $tooltip; } return '' . $tip . ''; } /** * Displays a calendar control field * * @param string $value The date value * @param string $name The name of the text field * @param string $id The id of the text field * @param string $format The date format * @param array $attribs Additional HTML attributes * * @return string HTML markup for a calendar field * * @since 11.1 */ public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attribs = null) { static $done; if ($done === null) { $done = array(); } $readonly = isset($attribs['readonly']) && $attribs['readonly'] == 'readonly'; $disabled = isset($attribs['disabled']) && $attribs['disabled'] == 'disabled'; if (is_array($attribs)) { $attribs = JArrayHelper::toString($attribs); } if (!$readonly && !$disabled) { // Load the calendar behavior self::_('behavior.calendar'); self::_('behavior.tooltip'); // Only display the triggers once for each control. if (!in_array($id, $done)) { $document = JFactory::getDocument(); $document ->addScriptDeclaration( 'window.addEvent(\'domready\', function() {Calendar.setup({ // Id of the input field inputField: "' . $id . '", // Format of the input field ifFormat: "' . $format . '", // Trigger for the calendar (button ID) button: "' . $id . '_img", // Alignment (defaults to "Bl") align: "Tl", singleClick: true, firstDay: ' . JFactory::getLanguage()->getFirstDay() . ' });});' ); $done[] = $id; } return '' . self::_('image', 'system/calendar.png', JText::_('JLIB_HTML_CALENDAR'), array('class' => 'calendar', 'id' => $id . '_img'), true); } else { return ''; } } /** * Add a directory where JHtml should search for helpers. You may * either pass a string or an array of directories. * * @param string $path A path to search. * * @return array An array with directory elements * * @since 11.1 */ public static function addIncludePath($path = '') { // Force path to array settype($path, 'array'); // Loop through the path directories foreach ($path as $dir) { if (!empty($dir) && !in_array($dir, JHtml::$includePaths)) { jimport('joomla.filesystem.path'); array_unshift(JHtml::$includePaths, JPath::clean($dir)); } } return JHtml::$includePaths; } }