Skip to content
Snippets Groups Projects
Commit 7ea11045 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

Merge branch 'update_renderer_class' into 'main'

htmlentities: remove unneeded methods; simplify icon methods; update phpdocs

See merge request !20
parents 357413ab 59275159
Branches
No related tags found
1 merge request!20htmlentities: remove unneeded methods; simplify icon methods; update phpdocs
......@@ -17,26 +17,19 @@
* @author Axel
*
* 2024-07-04 <axel.hahn@unibe.ch> added type declarations; update php docs
* 2024-08-26 <axel.hahn@unibe.ch> remove unneeded methods; simplify icon methods; update phpdocs
*/
class htmlelements
{
/**
* set of auto generated icon prefixes
* @var array
*/
var $_aIcons = [
// 'fa-'=>'fa ',
];
/**
* label of an html tag (pseudo attribute)
* Extracted label from array with attributes
* @var string
*/
var $_sLabel = '';
/**
* hash of attributes and values of an html tag
* Array of attributes for a html tag
* @var array
*/
var $_aAttributes = [];
......@@ -48,7 +41,7 @@ class htmlelements
public function __construct()
{
return true;
// nothiung here
}
// ----------------------------------------------------------------------
......@@ -60,6 +53,7 @@ class htmlelements
/**
* generate html attibutes with all internal attributes key -> values
* to be added in opening tag
* @return string
*/
protected function _addAttributes(): string
......@@ -69,15 +63,14 @@ class htmlelements
if (is_array($sValue)) {
echo "ERROR: an html tag was defined with array in attribute [$sAttr]:<br><pre>" . print_r($this->_aAttributes, 1) . "</pre>";
}
$sReturn .= ' ' . $sAttr . '="' . $sValue . '"';
$sReturn .= " $sAttr=\"$sValue\"";
}
return $sReturn;
}
/**
* internal helper: fetch all attributes from key-value hash;
* Internal helper: fetch all attributes from key-value hash;
* Specialties here:
* - label will be extracted from key 'label'
* - and optional existing key 'icon' will be added at beginning of a label
......@@ -108,12 +101,12 @@ class htmlelements
// ----------------------------------------------------------------------
/**
* generic function to get html code for a single tag
* Generic function to get html code for a single tag
*
* @param string $sTag tag name
* @param array $aAttributes array with attributes (optional including 'icon' and 'label')
* @param boolean $bCloseTag optional: set false if tag has no closing tag (= ending with "/>")
* @return type
* @return string html code
*/
public function getTag(string $sTag, array $aAttributes, bool $bCloseTag = true): string
{
......@@ -130,118 +123,22 @@ class htmlelements
// ----------------------------------------------------------------------
/**
* get html code for an icon
* includes a helper detect prefix of a string add prefix of a framework
* Helper detect prefix of a string add prefix of a framework
* i.e. value "fa-close" detects font awesome and adds "fa " as prefix
*
* @param string $sIconclass name of the icon
* @return string
* @param string $sIconclass
* @return string HTML code
*/
public function getIcon(string $sIconclass = ''): string
{
if (!$sIconclass) {
return '';
}
$sPrefix = '';
foreach ($this->_aIcons as $sPrefix => $add) {
if (strpos($sIconclass, $sPrefix) === 0) {
$sPrefix = $add;
continue;
}
}
return '<i class="' . $sPrefix . $sIconclass . '"></i> ';
}
// do not use this .. it overrides internal attribute vars
// return $this->getTag('i', ['class'=>$sIconclass]);
// ----------------------------------------------------------------------
//
// PUBLIC FUNCTIONS
// HTML COMPONENTS
//
// ----------------------------------------------------------------------
/**
* get html code for an input field
*
* @param array $aAttributes attributes of the select tag
* @return string
*/
public function getFormInput(array $aAttributes): string
{
$sTpl = '<input %s/>';
$this->_setAttributes($aAttributes);
return sprintf($sTpl, $this->_addAttributes());
}
/**
* get html code for an option field in a select drop down
*
* @param array $aAttributes attributes of the option tag
* @return string
*/
public function getFormOption(array $aAttributes): string
{
$sTpl = '<option %s>%s</option>';
$this->_setAttributes($aAttributes);
return sprintf($sTpl, $this->_addAttributes(), $this->_sLabel);
}
/**
* get html code for a select drop down
*
* @param array $aAttributes attributes of the select tag
* @param array $aOptions array for all option fields
* @return string
*/
public function getFormSelect(array $aAttributes, array $aOptions = []): string
{
// $sTpl = '<select %s>%s</select>';
if (!count($aOptions)) {
return '';
}
$sOptions = '';
foreach ($aOptions as $aOptionAttributes) {
// $sOptions.=$this->getFormOption($aOptionAttributes);
$sOptions .= $this->getTag('option', $aOptionAttributes);
}
$aAttributes['label'] = $sOptions;
return $this->getTag('select', $aAttributes);
return "<i class=\"$sIconclass\"></i>&nbsp;&nbsp;";
}
/**
* Generates an HTML table based on the provided header and body arrays.
*
* @param array $aHead An array of strings representing the table headers.
* @param array $aBody A 2-dimensional array of strings representing the table body rows and cells.
* @param array $aTableAttributes An optional array of attributes to be applied to the table element.
* @return string The HTML code for the generated table.
*/
public function getTable(array $aHead, array $aBody, array $aTableAttributes = []): string
{
$sReturn = '';
$sTdata = '';
$sThead = '';
$sTpl = '<table %s>'
. '<thead><tr>%s</tr></thead>'
. '<tbody>%s</tbody>'
. '</table>';
foreach ($aHead as $sTh) {
$sThead .= '<th>' . $sTh . '</th>';
}
foreach ($aBody as $aTr) {
$sTdata .= '<tr>';
foreach ($aTr as $sTd) {
$sTdata .= '<td>' . $sTd . '</td>';
}
$sTdata .= '</tr>';
}
$this->_setAttributes($aTableAttributes);
return sprintf(
$sTpl,
$this->_addAttributes(),
$sThead,
$sTdata
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment