6 * This file is intended to contain helper functions for template sets
7 * that would like to use them.
9 * @copyright © 1999-2006 The SquirrelMail Project Team
10 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 * @package squirrelmail
17 * Create stylesheet links that will work for multiple browsers
19 * @param string $uri The URI to the linked stylesheet.
20 * @param string $name The title of the stylesheet (optional; default empty).
21 * @param boolean $alt Whether or not this is an alternate
22 * stylesheet (optional; default TRUE).
23 * @param string $mtype The target media display type (optional; default "screen").
24 * @param string $xhtml_end The XHTML-compliant close tag syntax to
25 * use (optional; default "/")
27 * @return string The full text of the stylesheet link.
30 function create_css_link($uri, $name='', $alt=TRUE, $mtype='screen', $xhtml_end='/') {
31 // FIXME: Add closing / to link and meta elements only after
32 // switching to xhtml 1.0 Transitional.
33 // It is not compatible with html 4.01 Transitional
40 // set to lower case to avoid errors
42 sqGetGlobalVar('HTTP_USER_AGENT', $browser_user_agent, SQ_SERVER
);
43 $browser_user_agent = strtolower($browser_user_agent);
45 if (stristr($browser_user_agent, "msie 4")) {
49 } elseif (stristr($browser_user_agent, "msie")
50 && stristr($browser_user_agent, 'opera') === FALSE) {
56 if ((strpos($uri, '-ie')!== false) and !$is_IE) {
57 //not IE, so don't render this sheet
61 if ( strpos($uri, 'print') !== false )
64 $href = 'href="'.$uri.'" ';
65 $media = 'media="'.$mtype.'" ';
69 $rel = 'rel="stylesheet" ';
71 $title = 'title="'.$name.'" ';
72 $rel = 'rel="'.( $alt ?
'alternate ' : '' ).'stylesheet" ';
75 return '<link '.$media.$title.$rel.'type="text/css" '.$href." $xhtml_end>\n";
80 * Checks for an image icon and returns a complete HTML img tag or a text
81 * string with the text icon based on what is found and user prefs.
83 * @param string $icon_theme_path User's chosen icon set
84 * @param string $icon_name File name of the desired icon
85 * @param string $text_icon Text-based icon to display if desired
86 * @param string $alt_text Optional. Text for alt/title attribute of image
87 * @param integer $w Optional. Width of requested image.
88 * @param integer $h Optional. Height of requested image.
89 * @return string $icon String containing icon that can be echo'ed
93 function getIcon($icon_theme_path, $icon_name, $text_icon, $alt_text='', $w=NULL, $h=NULL) {
95 if (is_null($icon_theme_path)) {
98 $icon_path = getIconPath($icon_theme_path, $icon_name);
100 // If we found an icon, build an img tag to display it. If we didn't
101 // find an image, we will revert back to the text icon.
102 if (!is_null($icon_path)) {
103 $icon = '<img src="'.$icon_path.'" ' .
104 'alt="'.$alt_text.'" '.
105 (!empty($alt_text) ?
'title="'.$alt_text.'" ' : '') .
106 (!is_null($w) ?
'width="'.$w.'" ' : '') .
107 (!is_null($h) ?
'height="'.$h.'" ' : '') .
118 * Gets the path to the specified icon or returns NULL if the image is not
119 * found. This has been separated from getIcon to allow the path to be fetched
120 * for use w/ third party packages, e.g. dTree.
122 * @param string $icon_theme_path User's chosen icon set
123 * @param string $icon_name File name of the desired icon
124 * @return string $icon String containing path to icon that can be used in
125 * an IMG tag, or NULL if the image is not found.
126 * @author Steve Brown
129 function getIconPath ($icon_theme_path, $icon_name) {
130 global $fallback_icon_theme_path;
132 if (is_null($icon_theme_path))
135 // Desired icon exists in the current theme?
136 if (is_file($icon_theme_path . $icon_name)) {
137 return $icon_theme_path . $icon_name;
139 // Icon not found, check for the admin-specified fallback
140 } elseif (!is_null($fallback_icon_theme_path) && is_file($fallback_icon_theme_path . $icon_name)) {
141 return $fallback_icon_theme_path . $icon_name;
143 // Icon not found, return the SQM default icon
144 } elseif (is_file(SM_PATH
. 'images/themes/default/'.$icon_name)) {
145 return SM_PATH
. 'images/themes/default/'.$icon_name;
153 * Display error messages for use in footer.tpl
155 * @author Steve Brown
158 function displayErrors () {
159 global $oErrorHandler;
161 if ($oErrorHandler) {
162 $oErrorHandler->displayErrors();
168 * Make the internal show_readable_size() function available to templates.
169 //FIXME: I think this is needless since there is no reason templates cannot just call directly to show_readable_size
171 * @param int size to be converted to human-readable
172 * @return string human-readable form
175 function humanReadableSize ($size) {
176 return show_readable_size($size);