From cf20f79d914152cc475adb78fc798d6dc8e070db Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Sun, 14 Sep 2003 10:19:42 +0000 Subject: [PATCH] added the html-class to the API --- phpgwapi/inc/class.html.inc.php | 388 ++++++++++++++++++++++++++++++++ 1 file changed, 388 insertions(+) create mode 100644 phpgwapi/inc/class.html.inc.php diff --git a/phpgwapi/inc/class.html.inc.php b/phpgwapi/inc/class.html.inc.php new file mode 100644 index 0000000000..be328e3c6a --- /dev/null +++ b/phpgwapi/inc/class.html.inc.php @@ -0,0 +1,388 @@ + * + * -------------------------------------------- * + * 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$ */ + +class html +{ + var $user_agent,$ua_version; // 'mozilla','msie','konqueror' + var $prefered_img_title; + + 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->prefered_img_title = $this->user_agent == 'mozilla' && $this->ua_version < 5 ? 'ALT' : 'TITLE'; + //echo "

HTTP_USER_AGENT='$GLOBALS[HTTP_USER_AGENT]', UserAgent: '$this->user_agent', Version: '$this->ua_version', img_title: '$this->prefered_img_title'

\n"; + + $this->document_root = $_SERVER['DOCUMENT_ROOT']; + // this is because some webservers report their docroot without the leading slash + if (!is_dir($this->document_root) && is_dir('/'.$this->document_root)) + { + $this->document_root = '/' . $this->document_root; + } + //echo "

_SERVER[DOCUMENT_ROOT]='$_SERVER[DOCUMENT_ROOT]', this->document_root='$this->document_root'

\n"; + } + + /* + * Function: Allows to show and select one item from an array + * Parameters: $name string with name of the submitted var which holds the key of the selected item form array + * $key key(s) of already selected item(s) from $arr, eg. '1' or '1,2' or array with keys + * $arr array with items to select, eg. $arr = array ( 'y' => 'yes','n' => 'no','m' => 'maybe'); + * $no_lang if !$no_lang send items through lang() + * $options additional options (e.g. 'multiple') + * On submit $XXX is the key of the selected item (XXX is the content of $name) + * 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 (intval($multiple) > 0) + { + $options .= ' MULTIPLE SIZE="'.intval($multiple).'"'; + if (substr($name,-2) != '[]') + { + $name .= '[]'; + } + } + $out = "\n"; + + return $out; + } + + function div($content,$options='') + { + return "
\n$content
\n"; + } + + 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)) + { + $value = serialize($value); + } + if (!$ignore_empty || $value && !($name == 'filter' && $value == 'none')) // dont need to send all the empty vars + { + $html .= "\n"; + } + } + return $html; + } + + function textarea($name,$value='',$options='' ) + { + return "\n"; + } + + function input($name,$value='',$type='',$options='' ) + { + if ($type) + { + $type = 'TYPE="'.$type.'"'; + } + return "\n"; + } + + function submit_button($name,$lang,$onClick='',$no_lang=0,$options='',$image='',$app='') + { + if ($image != '') + { + if (strpos($image,'.')) + { + $image = substr($image,0,strpos($image,'.')); + } + if (!($path = $GLOBALS['phpgw']->common->image($app,$image)) && + !($path = $GLOBALS['phpgw']->common->image('phpgwapi',$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\""; + + // '; + } + + /*! + @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); + } + list($url,$v) = explode('?',$url); // url may contain additional vars + if ($v) + { + parse_str($v,$v); + $vars += $v; + } + return $GLOBALS['phpgw']->link($url,$vars); + } + + function checkbox($name,$value='') + { + return "\n"; + } + + function form($content,$hidden_vars,$url,$url_vars='',$name='',$options='',$method='POST') + { + $html = "
link($url,$url_vars)."\" $options>\n"; + $html .= $this->input_hidden($hidden_vars); + + if ($content) + { + $html .= $content; + $html .= "
\n"; + } + return $html; + } + + 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%"') = '
cell1cell2cell3
' + @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($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; + } + + function sbox_submit( $sbox,$no_script=0 ) + { + $html = str_replace('submit_button('send','>').''; + } + return $html; + } + + function image( $app,$name,$title='',$options='' ) + { + if (!($path = $GLOBALS['phpgw']->common->image($app,$name))) + { + $path = $name; // name may already contain absolut path + } + if (!@is_readable($this->document_root . $path)) + { + return $title; + } + if ($title) + { + $options .= " $this->prefered_img_title=\"".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 bold($content) + { + return ''.$content.''; + } + + function italic($content) + { + return ''.$content.''; + } + + 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); + + while (list($n,$val) = each($options)) + if ($val != '' && $names[$n] != '') + $html .= ' '.$names[$n].'="'.$val.'"'; + + return $html; + } + + /*! + @function themeStyles + @abstract returns simple stylesheet (incl. " : ''; + } + + function label($content,$id='',$accesskey='',$options='') + { + if ($id != '') + { + $id = " FOR=\"$id\""; + } + if ($accesskey != '') + { + $accesskey = " ACCESSKEY=\"$accesskey\""; + } + return "$content"; + } +}