Support Joomla!

Packages

Package: Joomla-Framework

License

Content on this site is copyright © 2005 - 2008 Open Source Matters Inc and can be used in accordance with the Joomla! Electronic Documentation License. Some parts of this website may be subject to other licenses.
Source code for file /joomla/html/html.php

Documentation is available at html.php

  1. <?php
  2. /**
  3.  * @version        $Id: html.php 13341 2009-10-27 03:03:54Z ian $
  4.  * @package        Joomla.Framework
  5.  * @subpackage    HTML
  6.  * @copyright    Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
  7.  * @license        GNU/GPL, see LICENSE.php
  8.  *  Joomla! is free software. This version may have been modified pursuant
  9.  *  to the GNU General Public License, and as distributed it includes or
  10.  *  is derivative of works licensed under the GNU General Public License or
  11.  *  other free or open source software licenses.
  12.  *  See COPYRIGHT.php for copyright notices and details.
  13.  */
  14. defined('JPATH_BASE'or die();
  15. /**
  16.  * Utility class for all HTML drawing classes
  17.  *
  18.  * @static
  19.  * @package     Joomla.Framework
  20.  * @subpackage    HTML
  21.  * @since        1.5
  22.  */
  23. class JHTML
  24. {
  25.     /**
  26.      * Class loader method
  27.      *
  28.      * Additional arguments may be supplied and are passed to the sub-class.
  29.      * Additional include paths are also able to be specified for third-party use
  30.      *
  31.      * @param    string    The name of helper method to load, (prefix).(class).function
  32.      *                   prefix and class are optional and can be used to load custom
  33.      *                   html helpers.
  34.      */
  35.     function _$type )
  36.     {
  37.         //Initialise variables
  38.         $prefix 'JHTML';
  39.         $file   '';
  40.         $func   $type;
  41.  
  42.         // Check to see if we need to load a helper file
  43.         $parts explode('.'$type);
  44.  
  45.         switch(count($parts))
  46.         {
  47.             case :
  48.             {
  49.                 $prefix        preg_replace'#[^A-Z0-9_]#i'''$parts[0);
  50.                 $file        preg_replace'#[^A-Z0-9_]#i'''$parts[1);
  51.                 $func        preg_replace'#[^A-Z0-9_]#i'''$parts[2);
  52.             break;
  53.  
  54.             case :
  55.             {
  56.                 $file        preg_replace'#[^A-Z0-9_]#i'''$parts[0);
  57.                 $func        preg_replace'#[^A-Z0-9_]#i'''$parts[1);
  58.             break;
  59.         }
  60.  
  61.         $className    $prefix.ucfirst($file);
  62.  
  63.         if (!class_exists$className ))
  64.         {
  65.             jimport('joomla.filesystem.path');
  66.             if ($path JPath::find(JHTML::addIncludePath()strtolower($file).'.php'))
  67.             {
  68.                 require_once $path;
  69.  
  70.                 if (!class_exists$className ))
  71.                 {
  72.                     JError::raiseWarning0$className.'::' .$func' not found in file.' );
  73.                     return false;
  74.                 }
  75.             }
  76.             else
  77.             {
  78.                 JError::raiseWarning0$prefix.$file ' not supported. File not found.' );
  79.                 return false;
  80.             }
  81.         }
  82.  
  83.         if (is_callablearray$className$func ) ))
  84.         {
  85.             $temp func_get_args();
  86.             array_shift$temp );
  87.             $args array();
  88.             foreach ($temp as $k => $v{
  89.                 $args[&$temp[$k];
  90.             }
  91.             return call_user_func_arrayarray$className$func )$args );
  92.         }
  93.         else
  94.         {
  95.             JError::raiseWarning0$className.'::'.$func.' not supported.' );
  96.             return false;
  97.         }
  98.     }
  99.  
  100.     /**
  101.      * Write a <a></a> element
  102.      *
  103.      * @access    public
  104.      * @param    string     The relative URL to use for the href attribute
  105.      * @param    string    The target attribute to use
  106.      * @param    array    An associative array of attributes to add
  107.      * @since    1.5
  108.      */
  109.     function link($url$text$attribs null)
  110.     {
  111.         if (is_array$attribs )) {
  112.             $attribs JArrayHelper::toString$attribs );
  113.         }
  114.  
  115.         return '<a href="'.$url.'" '.$attribs.'>'.$text.'</a>';
  116.     }
  117.  
  118.     /**
  119.      * Write a <img></amg> element
  120.      *
  121.      * @access    public
  122.      * @param    string     The relative or absoluete URL to use for the src attribute
  123.      * @param    string    The target attribute to use
  124.      * @param    array    An associative array of attributes to add
  125.      * @since    1.5
  126.      */
  127.     function image($url$alt$attribs null)
  128.     {
  129.         if (is_array($attribs)) {
  130.             $attribs JArrayHelper::toString$attribs );
  131.         }
  132.  
  133.         if(strpos($url'http'!== 0{
  134.             $url =  JURI::root(true).'/'.$url;
  135.         };
  136.  
  137.         return '<img src="'.$url.'" alt="'.$alt.'" '.$attribs.' />';
  138.     }
  139.  
  140.     /**
  141.      * Write a <iframe></iframe> element
  142.      *
  143.      * @access    public
  144.      * @param    string     The relative URL to use for the src attribute
  145.      * @param    string    The target attribute to use
  146.      * @param    array    An associative array of attributes to add
  147.      * @param    string    The message to display if the iframe tag is not supported
  148.      * @since    1.5
  149.      */
  150.     function iframe$url$name$attribs null$noFrames '' )
  151.     {
  152.         if (is_array$attribs )) {
  153.             $attribs JArrayHelper::toString$attribs );
  154.         }
  155.  
  156.         return '<iframe src="'.$url.'" '.$attribs.' name="'.$name.'">'.$noFrames.'</iframe>';
  157.     }
  158.  
  159.     /**
  160.      * Write a <script></script> element
  161.      *
  162.      * @access    public
  163.      * @param    string     The name of the script file
  164.      *  * @param    string     The relative or absolute path of the script file
  165.      * @param    boolean If true, the mootools library will be loaded
  166.      * @since    1.5
  167.      */
  168.     function script($filename$path 'media/system/js/'$mootools true)
  169.     {
  170.         // Include mootools framework
  171.         if($mootools{
  172.             JHTML::_('behavior.mootools');
  173.         }
  174.  
  175.         if(strpos($path'http'!== 0{
  176.             $path =  JURI::root(true).'/'.$path;
  177.         };
  178.  
  179.         $document &JFactory::getDocument();
  180.         $document->addScript$path.$filename );
  181.         return;
  182.     }
  183.  
  184.     /**
  185.      * Write a <link rel="stylesheet" style="text/css" /> element
  186.      *
  187.      * @access    public
  188.      * @param    string     The relative URL to use for the href attribute
  189.      * @since    1.5
  190.      */
  191.     function stylesheet($filename$path 'media/system/css/'$attribs array())
  192.     {
  193.         if(strpos($path'http'!== 0{
  194.             $path =  JURI::root(true).'/'.$path;
  195.         };
  196.  
  197.         $document &JFactory::getDocument();
  198.         $document->addStylesheet$path.$filename'text/css'null$attribs );
  199.         return;
  200.     }
  201.  
  202.     /**
  203.      * Returns formated date according to current local and adds time offset
  204.      *
  205.      * @access    public
  206.      * @param    string    date in an US English date format
  207.      * @param    string    format optional format for strftime
  208.      * @returns    string    formated date
  209.      * @see        strftime
  210.      * @since    1.5
  211.      */
  212.     function date($date$format null$offset NULL)
  213.     {
  214.         if $format {
  215.             $format JText::_('DATE_FORMAT_LC1');
  216.         }
  217.  
  218.  
  219.  
  220.         if(is_null($offset))
  221.         {
  222.             $config =JFactory::getConfig();
  223.             $offset $config->getValue('config.offset');
  224.         }
  225.         $instance =JFactory::getDate($date);
  226.         $instance->setOffset($offset);
  227.  
  228.         return $instance->toFormat($format);
  229.     }
  230.  
  231.     /**
  232.      * Creates a tooltip with an image as button
  233.      *
  234.      * @access    public
  235.      * @param    string    $tooltip The tip string
  236.      * @param    string    $title The title of the tooltip
  237.      * @param    string    $image The image for the tip, if no text is provided
  238.      * @param    string    $text The text for the tip
  239.      * @param    string    $href An URL that will be used to create the link
  240.      * @param    boolean depreciated
  241.      * @return    string 
  242.      * @since    1.5
  243.      */
  244.     function tooltip($tooltip$title=''$image='tooltip.png'$text=''$href=''$link=1)
  245.     {
  246.         $tooltip    addslashes(htmlspecialchars($tooltipENT_QUOTES'UTF-8'));
  247.         $title        addslashes(htmlspecialchars($titleENT_QUOTES'UTF-8'));
  248.  
  249.         if !$text {
  250.             $image     JURI::root(true).'/includes/js/ThemeOffice/'$image;
  251.             $text     '<img src="'$image .'" border="0" alt="'JText::_'Tooltip' .'"/>';
  252.         else {
  253.             $text     JText::_$texttrue );
  254.         }
  255.  
  256.         if($title{
  257.             $title $title.'::';
  258.         }
  259.  
  260.         $style 'style="text-decoration: none; color: #333;"';
  261.  
  262.         if $href {
  263.             $href JRoute::_$href );
  264.             $style '';
  265.             $tip '<span class="editlinktip hasTip" title="'.$title.$tooltip.'" '$style .'><a href="'$href .'">'$text .'</a></span>';
  266.         else {
  267.             $tip '<span class="editlinktip hasTip" title="'.$title.$tooltip.'" '$style .'>'$text .'</span>';
  268.         }
  269.  
  270.         return $tip;
  271.     }
  272.  
  273.     /**
  274.      * Displays a calendar control field
  275.      *
  276.      * @param    string    The date value
  277.      * @param    string    The name of the text field
  278.      * @param    string    The id of the text field
  279.      * @param    string    The date format
  280.      * @param    array    Additional html attributes
  281.      */
  282.     function calendar($value$name$id$format '%Y-%m-%d'$attribs null)
  283.     {
  284.         JHTML::_('behavior.calendar')//load the calendar behavior
  285.  
  286.         if (is_array($attribs)) {
  287.             $attribs JArrayHelper::toString$attribs );
  288.         }
  289.         $document =JFactory::getDocument();
  290.         $document->addScriptDeclaration('window.addEvent(\'domready\', function() {Calendar.setup({
  291.         inputField     :    "'.$id.'",     // id of the input field
  292.         ifFormat       :    "'.$format.'",      // format of the input field
  293.         button         :    "'.$id.'_img",  // trigger for the calendar (button ID)
  294.         align          :    "Tl",           // alignment (defaults to "Bl")
  295.         singleClick    :    true
  296.     });});');
  297.  
  298.         return '<input type="text" name="'.$name.'" id="'.$id.'" value="'.htmlspecialchars($valueENT_COMPAT'UTF-8').'" '.$attribs.' />'.
  299.                  '<img class="calendar" src="'.JURI::root(true).'/templates/system/images/calendar.png" alt="calendar" id="'.$id.'_img" />';
  300.     }
  301.  
  302.     /**
  303.      * Add a directory where JHTML should search for helpers. You may
  304.      * either pass a string or an array of directories.
  305.      *
  306.      * @access    public
  307.      * @param    string    A path to search.
  308.      * @return    array    An array with directory elements
  309.      * @since    1.5
  310.      */
  311.     function addIncludePath$path='' )
  312.     {
  313.         static $paths;
  314.  
  315.         if (!isset($paths)) {
  316.             $paths arrayJPATH_LIBRARIES.DS.'joomla'.DS.'html'.DS.'html' );
  317.         }
  318.  
  319.         // force path to array
  320.         settype($path'array');
  321.  
  322.         // loop through the path directories
  323.         foreach ($path as $dir)
  324.         {
  325.             if (!empty($dir&& !in_array($dir$paths)) {
  326.                 array_unshift($pathsJPath::clean$dir ));
  327.             }
  328.         }
  329.  
  330.         return $paths;
  331.     }
  332. }

Documentation generated on Sat, 14 Nov 2009 11:14:42 +0000 by phpDocumentor 1.3.1