*
+ * -------------------------------------------- *
+ * This program is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU General Public License as published by the *
+ * Free Software Foundation; either version 2 of the License, or (at your *
+ * option) any later version. *
+ \**************************************************************************/
- /* $Id$ */
+ /* $Id$ */
- class html
- {
- var $user_agent,$ua_version; // 'mozilla','msie','konqueror'
- var $prefered_img_title;
- var $charset,$phpgwapi_js_url;
+ class html
+ {
+ var $user_agent,$ua_version; // 'mozilla','msie','konqueror'
+ var $prefered_img_title;
+ var $charset,$phpgwapi_js_url;
- function html()
- {
- // should be Ok for all HTML 4 compatible browsers
- if (!eregi('compatible; ([a-z_]+)[/ ]+([0-9.]+)',$_SERVER['HTTP_USER_AGENT'],$parts))
+ function html()
+ {
+ // should be Ok for all HTML 4 compatible browsers
+ if (!eregi('compatible; ([a-z_]+)[/ ]+([0-9.]+)',$_SERVER['HTTP_USER_AGENT'],$parts))
+ {
+ eregi('^([a-z_]+)/([0-9.]+)',$_SERVER['HTTP_USER_AGENT'],$parts);
+ }
+ list(,$this->user_agent,$this->ua_version) = $parts;
+ $this->user_agent = strtolower($this->user_agent);
+
+ $this->netscape4 = $this->user_agent == 'mozilla' && $this->ua_version < 5;
+ $this->prefered_img_title = $this->netscape4 ? 'alt' : 'title';
+ //echo "HTTP_USER_AGENT='$_SERVER[HTTP_USER_AGENT]', UserAgent: '$this->user_agent', Version: '$this->ua_version', img_title: '$this->prefered_img_title'
\n";
+
+ if ($GLOBALS['phpgw']->translation)
+ {
+ $this->charset = $GLOBALS['phpgw']->translation->charset();
+ }
+ $this->phpgwapi_js_url = $GLOBALS['phpgw_info']['server']['webserver_url'].'/phpgwapi/js';
+ }
+
+ function activate_links($content)
+ {
+ // Exclude everything which is already a link
+ $NotAnchor = '(?\\1 AT \\2 DOT \\3',
+ $content);
+
+ // First match things beginning with http:// (or other protocols)
+ $Protocol = '(http|ftp|https):\/\/';
+ $Domain = '([\w]+.[\w]+)';
+ $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?';
+ $Expr = '/' . $NotAnchor . $Protocol . $Domain . $Subdir . '/i';
+
+ $result = preg_replace( $Expr, "$2$3 ", $result );
+
+ // Now match things beginning with www.
+ $NotHTTP = '(?$0", $result );
+ }
+
+ function htmlspecialchars($str)
+ {
+ // add @ by lkneschke to supress warning about unknown charset
+ return @htmlspecialchars($str,ENT_COMPAT,$this->charset);
+ }
+
+ /*!
+ @function select
+ @abstract allows to show and select one item from an array
+ @param $name string with name of the submitted var which holds the key of the selected item form array
+ @param $key key(s) of already selected item(s) from $arr, eg. '1' or '1,2' or array with keys
+ @param $arr array with items to select, eg. $arr = array ( 'y' => 'yes','n' => 'no','m' => 'maybe');
+ @param $no_lang if !$no_lang send items through lang()
+ @param $options additional options (e.g. 'width')
+ @param $multiple number of lines for a multiselect, default 0 = no multiselect
+ @returns string to set for a template or to echo into html page
+ */
+ function select($name, $key, $arr=0,$no_lang=0,$options='',$multiple=0)
+ {
+ // should be in class common.sbox
+ if (!is_array($arr))
+ {
+ $arr = array('no','yes');
+ }
+ if ((int)$multiple > 0)
+ {
+ $options .= ' multiple size="'.(int)$multiple.'"';
+ if (substr($name,-2) != '[]')
{
- eregi('^([a-z_]+)/([0-9.]+)',$_SERVER['HTTP_USER_AGENT'],$parts);
+ $name .= '[]';
}
- list(,$this->user_agent,$this->ua_version) = $parts;
- $this->user_agent = strtolower($this->user_agent);
-
- $this->netscape4 = $this->user_agent == 'mozilla' && $this->ua_version < 5;
- $this->prefered_img_title = $this->netscape4 ? 'alt' : 'title';
- //echo "HTTP_USER_AGENT='$_SERVER[HTTP_USER_AGENT]', UserAgent: '$this->user_agent', Version: '$this->ua_version', img_title: '$this->prefered_img_title'
\n";
-
- if ($GLOBALS['phpgw']->translation)
- {
- $this->charset = $GLOBALS['phpgw']->translation->charset();
- }
- $this->phpgwapi_js_url = $GLOBALS['phpgw_info']['server']['webserver_url'].'/phpgwapi/js';
- }
-
- function activate_links($content)
- {
- // Exclude everything which is already a link
- $NotAnchor = '(?\\1 AT \\2 DOT \\3',
- $content);
-
- // First match things beginning with http:// (or other protocols)
- $Protocol = '(http|ftp|https):\/\/';
- $Domain = '([\w]+.[\w]+)';
- $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?';
- $Expr = '/' . $NotAnchor . $Protocol . $Domain . $Subdir . '/i';
-
- $result = preg_replace( $Expr, "$2$3 ", $result );
-
- // Now match things beginning with www.
- $NotHTTP = '(?$0", $result );
- }
-
- function htmlspecialchars($str)
- {
- // add @ by lkneschke to supress warning about unknown charset
- return @htmlspecialchars($str,ENT_COMPAT,$this->charset);
- }
-
- /*!
- @function select
- @abstract allows to show and select one item from an array
- @param $name string with name of the submitted var which holds the key of the selected item form array
- @param $key key(s) of already selected item(s) from $arr, eg. '1' or '1,2' or array with keys
- @param $arr array with items to select, eg. $arr = array ( 'y' => 'yes','n' => 'no','m' => 'maybe');
- @param $no_lang if !$no_lang send items through lang()
- @param $options additional options (e.g. 'width')
- @param $multiple number of lines for a multiselect, default 0 = no multiselect
- @returns string to set for a template or to echo into html page
- */
- function select($name, $key, $arr=0,$no_lang=0,$options='',$multiple=0)
- {
- // should be in class common.sbox
- if (!is_array($arr))
- {
- $arr = array('no','yes');
- }
- if ((int)$multiple > 0)
- {
- $options .= ' multiple size="'.(int)$multiple.'"';
- if (substr($name,-2) != '[]')
- {
- $name .= '[]';
- }
- }
- $out = "\n";
+ }
+ $out = "\n";
if (is_array($key))
{
- $key = implode(',',$key);
+ $key = implode(',',$key);
}
foreach($arr as $k => $text)
{
- $out .= 'htmlspecialchars($k).'"';
- if("$k" == "$key" || strstr(",$key,",",$k,"))
- {
- $out .= ' selected="1"';
- }
- $out .= ">" . ($no_lang || $text == '' ? $text : lang($text)) . " \n";
+ if("$k" == "$key" || strstr(",$key,",",$k,"))
+ {
+ $out .= ' selected="1"';
+ }
+ $out .= ">" . ($no_lang || $text == '' ? $text : lang($text)) . "\n";
}
$out .= " \n";
- return $out;
- }
+ return $out;
+ }
- function div($content,$options='')
- {
- return "\n$content
\n";
- }
+ function div($content,$options='')
+ {
+ return "\n$content
\n";
+ }
- function input_hidden($vars,$value='',$ignore_empty=True)
- {
- if (!is_array($vars))
+ function input_hidden($vars,$value='',$ignore_empty=True)
+ {
+ if (!is_array($vars))
+ {
+ $vars = array( $vars => $value );
+ }
+ foreach($vars as $name => $value)
+ {
+ if (is_array($value))
{
- $vars = array( $vars => $value );
+ $value = serialize($value);
}
- foreach($vars as $name => $value)
+ if (!$ignore_empty || $value && !($name == 'filter' && $value == 'none')) // dont need to send all the empty vars
{
- if (is_array($value))
- {
- $value = serialize($value);
- }
- if (!$ignore_empty || $value && !($name == 'filter' && $value == 'none')) // dont need to send all the empty vars
- {
- $html .= " htmlspecialchars($value)."\" />\n";
- }
+ $html .= " htmlspecialchars($value)."\" />\n";
}
- return $html;
- }
+ }
+ return $html;
+ }
- function textarea($name,$value='',$options='' )
- {
- return "\n";
- }
+ function textarea($name,$value='',$options='' )
+ {
+ return "\n";
+ }
- /*!
- @function htmlarea_avalible
- @author ralfbecker
- @abstract Checks if HTMLarea (or an other richtext editor) is availible for the used browser
- */
- function htmlarea_availible()
- {
- switch($this->user_agent)
+ /*!
+ @function htmlarea_avalible
+ @author ralfbecker
+ @abstract Checks if HTMLarea (or an other richtext editor) is availible for the used browser
+ */
+ function htmlarea_availible()
+ {
+ switch($this->user_agent)
+ {
+ case 'msie':
+ return $this->ua_version >= 5.5;
+ case 'mozilla':
+ return $this->ua_version >= 1.3;
+ default:
+ return False;
+ }
+ }
+
+ /*!
+ @function htmlarea
+ @syntax htmlarea( $name,$content='',$style='width:100%; min-width:500px; height:300px;' )
+ @author ralfbecker
+ @abstract creates a textarea inputfield for the htmlarea js-widget (returns the necessary html and js)
+ @param $name string name and id of the input-field
+ @param $content string of the htmlarea (will be run through htmlspecialchars !!!), default ''
+ @param $style string inline styles, eg. dimension of textarea element
+ @param $base_href string set a base href to get relative image-pathes working
+ @param $plugins string plugins to load seperated by comma's, eg 'TableOperations,ContextMenu' (htmlarea breaks when a plugin calls a nonexisiting lang file)
+ */
+ function htmlarea($name,$content='',$style='',$base_href='',$plugins='')
+ {
+ if (!$style) $style = 'width:100%; min-width:500px; height:300px;';
+
+ if (!is_object($GLOBALS['phpgw']->js))
+ {
+ $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
+ }
+ if (!strstr($GLOBALS['phpgw_info']['flags']['java_script'],'htmlarea'))
+ {
+ $GLOBALS['phpgw']->js->validate_file('htmlarea','htmlarea');
+ $GLOBALS['phpgw']->js->validate_file('htmlarea','dialog');
+ $lang = $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'];
+ if ($lang == 'en') // other lang-files are utf-8 only and incomplete (crashes htmlarea as of 3.0beta)
{
- case 'msie':
- return $this->ua_version >= 5.5;
- case 'mozilla':
- return $this->ua_version >= 1.3;
- default:
- return False;
- }
- }
-
- /*!
- @function htmlarea
- @syntax htmlarea( $name,$content='',$style='width:100%; min-width:500px; height:300px;' )
- @author ralfbecker
- @abstract creates a textarea inputfield for the htmlarea js-widget (returns the necessary html and js)
- @param $name string name and id of the input-field
- @param $content string of the htmlarea (will be run through htmlspecialchars !!!), default ''
- @param $style string inline styles, eg. dimension of textarea element
- */
- function htmlarea($name,$content='',$style='',$base_href='')
- {
- if (!$style) $style = 'width:100%; min-width:500px; height:300px;';
-
- if (!is_object($GLOBALS['phpgw']->js))
- {
- $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
- }
- if (!strstr($GLOBALS['phpgw_info']['flags']['java_script'],'htmlarea'))
- {
- $GLOBALS['phpgw']->js->validate_file('htmlarea','htmlarea');
- $GLOBALS['phpgw']->js->validate_file('htmlarea','dialog');
- $lang = $GLOBALS['phpgw_info']['user']['preferences']['common']['lang'];
- if ($lang == 'en') // other lang-files are utf-8 only and incomplete (crashes htmlarea as of 3.0beta)
- {
- $GLOBALS['phpgw']->js->validate_file('htmlarea',"lang/$lang");
- }
- else
- {
- $GLOBALS['phpgw_info']['flags']['java_script'] .=
- ''."\n";
- }
-
- $GLOBALS['phpgw_info']['flags']['java_script_thirst'] .=
- '
- \n";
-
- // set a base href to get relative image-pathes working
- if ($base_href && $this->user_agent != 'msie') // HTMLarea does not work in IE with base href set !!!
- {
- $GLOBALS['phpgw_info']['flags']['java_script_thirst'] .= ' '."\n";
- }
- $GLOBALS['phpgw_info']['flags']['java_script'] .=
- '\n";
- }
- $id = str_replace(array('[',']'),array('_',''),$name); // no brakets in the id allowed by js
-
- $GLOBALS['phpgw']->js->set_onload("HTMLArea.replace('$id',htmlareaConfig);");
-
- if (!empty($style)) $style = " style=\"$style\"";
-
- return "\n";
- }
-
- function input($name,$value='',$type='',$options='' )
- {
- if ($type)
- {
- $type = 'type="'.$type.'"';
- }
- return " htmlspecialchars($value)."\" $options />\n";
- }
-
- function submit_button($name,$lang,$onClick='',$no_lang=0,$options='',$image='',$app='')
- {
- // workaround for idots and IE button problem (wrong cursor-image)
- $options .= ' style="cursor: hand;"';
-
- if ($image != '')
- {
- $image = str_replace(array('.gif','.GIF','.png','.PNG'),'',$image);
-
- if (!($path = $GLOBALS['phpgw']->common->image($app,$image)))
- {
- $path = $image; // name may already contain absolut path
- }
- $image = ' src="'.$path.'"';
- }
- if (!$no_lang)
- {
- $lang = lang($lang);
- }
- if (($accesskey = strstr($lang,'&')) && $accesskey[1] != ' ' &&
- (($pos = strpos($accesskey,';')) === False || $pos > 5))
- {
- $lang_u = str_replace('&'.$accesskey[1],''.$accesskey[1].' ',$lang);
- $lang = str_replace('&','',$lang);
- $options = 'accesskey="'.$accesskey[1].'" '.$options;
+ $GLOBALS['phpgw']->js->validate_file('htmlarea',"lang/$lang");
}
else
{
- $accesskey = '';
- $lang_u = $lang;
+ $GLOBALS['phpgw_info']['flags']['java_script'] .=
+ ''."\n";
}
- if ($onClick) $options .= " onclick=\"$onClick\"";
- // is not working in all cases if ($this->user_agent == 'mozilla' && $this->ua_version < 5 || $image)
+ $GLOBALS['phpgw_info']['flags']['java_script_thirst'] .=
+ '
+ \n";
+
+ // set a base href to get relative image-pathes working
+ if ($base_href && $this->user_agent != 'msie') // HTMLarea does not work in IE with base href set !!!
{
- return $this->input($name,$lang,$image != '' ? 'image' : 'submit',$options.$image);
+ $GLOBALS['phpgw_info']['flags']['java_script_thirst'] .= ' '."\n";
+ }
+
+
+ if (isset($plugins))
+ {
+ $plg_arr = explode(',',$plugins);
+ foreach($plg_arr as $plg_name)
+ {
+ $load_plugin_string .= 'HTMLArea.loadPlugin("'.trim($plg_name).'");'."\n";
+ $register_plugin_string .= 'ret_editor = editor.registerPlugin("'.$plg_name.'");'."\n";
+ }
+ }
+
+ $GLOBALS['phpgw_info']['flags']['java_script'] .=
+ '\n";
+ }
+ $id = str_replace(array('[',']'),array('_',''),$name); // no brakets in the id allowed by js
+
+ $GLOBALS['phpgw']->js->set_onload("HTMLArea.replace('$id',htmlareaConfig);");
+
+ if (!empty($style)) $style = " style=\"$style\"";
+
+ return "\n";
+ }
+
+ function input($name,$value='',$type='',$options='' )
+ {
+ if ($type)
+ {
+ $type = 'type="'.$type.'"';
+ }
+ return " htmlspecialchars($value)."\" $options />\n";
+ }
+
+ function submit_button($name,$lang,$onClick='',$no_lang=0,$options='',$image='',$app='')
+ {
+ // workaround for idots and IE button problem (wrong cursor-image)
+ $options .= ' style="cursor: hand;"';
+
+ if ($image != '')
+ {
+ $image = str_replace(array('.gif','.GIF','.png','.PNG'),'',$image);
+
+ if (!($path = $GLOBALS['phpgw']->common->image($app,$image)))
+ {
+ $path = $image; // name may already contain absolut path
+ }
+ $image = ' src="'.$path.'"';
+ }
+ if (!$no_lang)
+ {
+ $lang = lang($lang);
+ }
+ if (($accesskey = strstr($lang,'&')) && $accesskey[1] != ' ' &&
+ (($pos = strpos($accesskey,';')) === False || $pos > 5))
+ {
+ $lang_u = str_replace('&'.$accesskey[1],''.$accesskey[1].' ',$lang);
+ $lang = str_replace('&','',$lang);
+ $options = 'accesskey="'.$accesskey[1].'" '.$options;
+ }
+ else
+ {
+ $accesskey = '';
+ $lang_u = $lang;
+ }
+ if ($onClick) $options .= " onclick=\"$onClick\"";
+
+ // is not working in all cases if ($this->user_agent == 'mozilla' && $this->ua_version < 5 || $image)
+ {
+ return $this->input($name,$lang,$image != '' ? 'image' : 'submit',$options.$image);
}
return ' '.
- ($image != '' ? " prefered_img_title=\"$lang\"> " : '').
- ($image == '' || $accesskey ? $lang_u : '').' ';
- }
+ ($image != '' ? " prefered_img_title=\"$lang\"> " : '').
+ ($image == '' || $accesskey ? $lang_u : '').' ';
+ }
- /*!
- @function link
- @abstract creates an absolut link + the query / get-variables
- @param $url phpgw-relative link, may include query / get-vars
- @parm $vars query or array ('name' => 'value', ...) with query
- @example link('/index.php?menuaction=infolog.uiinfolog.get_list',array('info_id' => 123))
- @example = 'http://domain/phpgw-path/index.php?menuaction=infolog.uiinfolog.get_list&info_id=123'
- @result absolut link already run through $phpgw->link
- */
- function link($url,$vars='')
- {
+ /*!
+ @function link
+ @abstract creates an absolut link + the query / get-variables
+ @param $url phpgw-relative link, may include query / get-vars
+ @parm $vars query or array ('name' => 'value', ...) with query
+ @example link('/index.php?menuaction=infolog.uiinfolog.get_list',array('info_id' => 123))
+ @example = 'http://domain/phpgw-path/index.php?menuaction=infolog.uiinfolog.get_list&info_id=123'
+ @result absolut link already run through $phpgw->link
+ */
+ function link($url,$vars='')
+ {
//echo "html::link(url='$url',vars='"; print_r($vars); echo "')
\n";
if (!is_array($vars))
{
- parse_str($vars,$vars);
+ parse_str($vars,$vars);
}
list($url,$v) = explode('?',$url); // url may contain additional vars
if ($v)
{
- parse_str($v,$v);
- $vars += $v;
+ parse_str($v,$v);
+ $vars += $v;
}
return $GLOBALS['phpgw']->link($url,$vars);
- }
+ }
- function checkbox($name,$value='')
- {
+ function checkbox($name,$value='')
+ {
return " \n";
- }
+ }
- function form($content,$hidden_vars,$url,$url_vars='',$name='',$options='',$method='POST')
- {
+ function form($content,$hidden_vars,$url,$url_vars='',$name='',$options='',$method='POST')
+ {
$html = "\n";
+ if ($content)
+ {
+ $html .= $content;
+ $html .= "\n";
}
return $html;
- }
+ }
- function form_1button($name,$lang,$hidden_vars,$url,$url_vars='',$form_name='',$method='POST')
- {
+ function form_1button($name,$lang,$hidden_vars,$url,$url_vars='',$form_name='',$method='POST')
+ {
return $this->form($this->submit_button($name,$lang),$hidden_vars,$url,$url_vars,$form_name,'',$method);
- }
+ }
- /*!
- @function table
- @abstracts creates table from array with rows
- @discussion abstract the html stuff
- @param $rows array with rows, each row is an array of the cols
- @param $options options for the table-tag
- @example $rows = array ( '1' => array( 1 => 'cell1', '.1' => 'colspan=3',
- @example 2 => 'cell2', 3 => 'cell3', '.3' => 'width="10%"' ),
- @example '.1' => 'BGCOLOR="#0000FF"' );
- @example table($rows,'WIDTH="100%"') = ''
- @result string with html-code of the table
- */
- function table($rows,$options = '',$no_table_tr=False)
- {
+ /*!
+ @function table
+ @abstracts creates table from array with rows
+ @discussion abstract the html stuff
+ @param $rows array with rows, each row is an array of the cols
+ @param $options options for the table-tag
+ @example $rows = array ( '1' => array( 1 => 'cell1', '.1' => 'colspan=3',
+ @example 2 => 'cell2', 3 => 'cell3', '.3' => 'width="10%"' ),
+ @example '.1' => 'BGCOLOR="#0000FF"' );
+ @example table($rows,'WIDTH="100%"') = ''
+ @result string with html-code of the table
+ */
+ function table($rows,$options = '',$no_table_tr=False)
+ {
$html = $no_table_tr ? '' : "\n";
- foreach($rows as $key => $row)
- {
- if (!is_array($row))
- {
- continue; // parameter
- }
- $html .= $no_table_tr && $key == 1 ? '' : "\t\n";
+ foreach($rows as $key => $row)
+ {
+ if (!is_array($row))
+ {
+ continue; // parameter
+ }
+ $html .= $no_table_tr && $key == 1 ? '' : "\t \n";
- foreach($row as $key => $cell)
- {
- if ($key[0] == '.')
- {
- continue; // parameter
- }
- $table_pos = strpos($cell,'$cell\n";
- }
- }
- $html .= "\t\n";
- }
- $html .= "
\n";
+ foreach($row as $key => $cell)
+ {
+ if ($key[0] == '.')
+ {
+ continue; // parameter
+ }
+ $table_pos = strpos($cell,'$cell\n";
+ }
+ }
+ $html .= "\t\n";
+ }
+ $html .= "
\n";
- if ($no_table_tr)
- {
- $html = substr($html,0,-16);
- }
- return $html;
- }
+ if ($no_table_tr)
+ {
+ $html = substr($html,0,-16);
+ }
+ return $html;
+ }
- function sbox_submit( $sbox,$no_script=0 )
- {
- $html = str_replace('submit_button('send','>').'';
- }
- return $html;
- }
+ function sbox_submit( $sbox,$no_script=0 )
+ {
+ $html = str_replace('submit_button('send','>').'';
+ }
+ return $html;
+ }
- function progressbar( $percent,$title='',$options='',$width='',$color='',$height='' )
- {
- $percent = (int) $percent;
- if (!$width) $width = '30px';
- if (!$height)$height= '5px';
- if (!$color) $color = '#D00000';
- $title = $title ? $this->htmlspecialchars($title) : $percent.'%';
+ function progressbar( $percent,$title='',$options='',$width='',$color='',$height='' )
+ {
+ $percent = (int) $percent;
+ if (!$width) $width = '30px';
+ if (!$height)$height= '5px';
+ if (!$color) $color = '#D00000';
+ $title = $title ? $this->htmlspecialchars($title) : $percent.'%';
- if ($this->netscape4)
- {
- return $title;
- }
- return '\n";
- }
+ if ($this->netscape4)
+ {
+ return $title;
+ }
+ return '\n";
+ }
- function image( $app,$name,$title='',$options='' )
- {
- $name = str_replace(array('.gif','.GIF','.png','.PNG'),'',$name);
+ function image( $app,$name,$title='',$options='' )
+ {
+ $name = str_replace(array('.gif','.GIF','.png','.PNG'),'',$name);
- if (!($path = $GLOBALS['phpgw']->common->image($app,$name)))
- {
- $path = $name; // name may already contain absolut path
- }
- if (!@is_readable(str_replace($GLOBALS['phpgw_info']['server']['webserver_url'],PHPGW_SERVER_ROOT,$path)))
- {
- // if the image-name is a percentage, use a progressbar
- if (substr($name,-1) == '%' && is_numeric($percent = substr($name,0,-1)))
- {
- return $this->progressbar($percent,$title);
- }
- return $title;
- }
- if ($title)
- {
- $options .= " $this->prefered_img_title=\"".$this->htmlspecialchars($title).'"';
- }
- return " ";
- }
+ if (!($path = $GLOBALS['phpgw']->common->image($app,$name)))
+ {
+ $path = $name; // name may already contain absolut path
+ }
+ if (!@is_readable(str_replace($GLOBALS['phpgw_info']['server']['webserver_url'],PHPGW_SERVER_ROOT,$path)))
+ {
+ // if the image-name is a percentage, use a progressbar
+ if (substr($name,-1) == '%' && is_numeric($percent = substr($name,0,-1)))
+ {
+ return $this->progressbar($percent,$title);
+ }
+ return $title;
+ }
+ if ($title)
+ {
+ $options .= " $this->prefered_img_title=\"".$this->htmlspecialchars($title).'"';
+ }
+ return " ";
+ }
- function a_href( $content,$url,$vars='',$options='')
- {
- if (!strstr($url,'/') && count(explode('.',$url)) == 3)
- {
- $url = "/index.php?menuaction=$url";
- }
- if (is_array($url))
- {
- $vars = $url;
- $url = '/index.php';
- }
- return ''.$content.' ';
- }
+ function a_href( $content,$url,$vars='',$options='')
+ {
+ if (!strstr($url,'/') && count(explode('.',$url)) == 3)
+ {
+ $url = "/index.php?menuaction=$url";
+ }
+ if (is_array($url))
+ {
+ $vars = $url;
+ $url = '/index.php';
+ }
+ return ''.$content.' ';
+ }
- function bold($content)
- {
- return ''.$content.' ';
- }
+ function bold($content)
+ {
+ return ''.$content.' ';
+ }
- function italic($content)
- {
- return ''.$content.' ';
- }
+ function italic($content)
+ {
+ return ''.$content.' ';
+ }
- function hr($width,$options='')
- {
- if ($width) $options .= " width=\"$width\"";
- return " \n";
- }
+ function hr($width,$options='')
+ {
+ if ($width) $options .= " width=\"$width\"";
+ return " \n";
+ }
- /*!
- @function formatOptions
- @abstract formats option-string for most of the above functions
- @param $options String (or Array) with option-values eg. '100%,,1'
- @param $names String (or Array) with the option-names eg. 'WIDTH,HEIGHT,BORDER'
- @example formatOptions('100%,,1','WIDTH,HEIGHT,BORDER') = ' WIDTH="100%" BORDER="1"'
- @result option string
- */
- function formatOptions($options,$names)
- {
- if (!is_array($options)) $options = explode(',',$options);
- if (!is_array($names)) $names = explode(',',$names);
+ /*!
+ @function formatOptions
+ @abstract formats option-string for most of the above functions
+ @param $options String (or Array) with option-values eg. '100%,,1'
+ @param $names String (or Array) with the option-names eg. 'WIDTH,HEIGHT,BORDER'
+ @example formatOptions('100%,,1','WIDTH,HEIGHT,BORDER') = ' WIDTH="100%" BORDER="1"'
+ @result option string
+ */
+ function formatOptions($options,$names)
+ {
+ if (!is_array($options)) $options = explode(',',$options);
+ if (!is_array($names)) $names = explode(',',$names);
- foreach($options as $n => $val)
- {
- if ($val != '' && $names[$n] != '')
- {
- $html .= ' '.strtolower($names[$n]).'="'.$val.'"';
- }
- }
- return $html;
- }
+ foreach($options as $n => $val)
+ {
+ if ($val != '' && $names[$n] != '')
+ {
+ $html .= ' '.strtolower($names[$n]).'="'.$val.'"';
+ }
+ }
+ return $html;
+ }
- /*!
- @function themeStyles
- @abstract returns simple stylesheet (incl. " : '';
- }
+ function style($styles)
+ {
+ return $styles ? "" : '';
+ }
- function label($content,$id='',$accesskey='',$options='')
- {
- if ($id != '')
- {
- $id = " for=\"$id\"";
- }
- if ($accesskey != '')
- {
- $accesskey = " accesskey=\"$accesskey\"";
- }
- return "$content ";
- }
- }
+ function label($content,$id='',$accesskey='',$options='')
+ {
+ if ($id != '')
+ {
+ $id = " for=\"$id\"";
+ }
+ if ($accesskey != '')
+ {
+ $accesskey = " accesskey=\"$accesskey\"";
+ }
+ return "$content ";
+ }
+ }