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

update renderadminlte classes

parent 1a9da681
No related branches found
No related tags found
1 merge request!18OP#7365 PHP-8.1 - Upgrade - cronlog Viewer (monitors.ascii)https://projects.iml.unibe.ch/work_packages/7365
This commit is part of merge request !18. Comments created here will be created in the context of that merge request.
...@@ -15,27 +15,33 @@ ...@@ -15,27 +15,33 @@
* - icon - will be added as <i class="[icon value]"></i> to the label * - icon - will be added as <i class="[icon value]"></i> to the label
* *
* @author Axel * @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 { class htmlelements
{
/** /**
* set of auto generated icon prefixes * Extracted label from array with attributes
* @var type * @var string
*/ */
var $_aIcons=array(
// 'fa-'=>'fa ',
);
var $_sLabel = ''; var $_sLabel = '';
var $_aAttributes = array();
/**
* Array of attributes for a html tag
* @var array
*/
var $_aAttributes = [];
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// CONSTRUCTOR // CONSTRUCTOR
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
public function __construct() { public function __construct()
return true; {
// nothiung here
} }
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
...@@ -47,23 +53,24 @@ class htmlelements { ...@@ -47,23 +53,24 @@ class htmlelements {
/** /**
* generate html attibutes with all internal attributes key -> values * generate html attibutes with all internal attributes key -> values
* to be added in opening tag
* @return string * @return string
*/ */
protected function _addAttributes() { protected function _addAttributes(): string
{
$sReturn = ''; $sReturn = '';
foreach ($this->_aAttributes as $sAttr => $sValue) { foreach ($this->_aAttributes as $sAttr => $sValue) {
if (is_array($sValue)) { if (is_array($sValue)) {
echo "ERROR: an html tag was defined with array in attribute [$sAttr]:<br><pre>" . print_r($this->_aAttributes, 1) . "</pre>"; 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; return $sReturn;
} }
/** /**
* internal helper: fetch all attributes from key-value hash; * Internal helper: fetch all attributes from key-value hash;
* Specialties here: * Specialties here:
* - label will be extracted from key 'label' * - label will be extracted from key 'label'
* - and optional existing key 'icon' will be added at beginning of a label * - and optional existing key 'icon' will be added at beginning of a label
...@@ -71,7 +78,8 @@ class htmlelements { ...@@ -71,7 +78,8 @@ class htmlelements {
* @param array $aAttributes * @param array $aAttributes
* @return boolean * @return boolean
*/ */
protected function _setAttributes($aAttributes){ protected function _setAttributes(array $aAttributes): bool
{
$this->_sLabel = ''; $this->_sLabel = '';
if (isset($aAttributes['icon']) && $aAttributes['icon']) { if (isset($aAttributes['icon']) && $aAttributes['icon']) {
$this->_sLabel .= $this->getIcon($aAttributes['icon']); $this->_sLabel .= $this->getIcon($aAttributes['icon']);
...@@ -93,14 +101,15 @@ class htmlelements { ...@@ -93,14 +101,15 @@ 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 string $sTag tag name
* @param array $aAttributes array with attributes (optional including 'icon' and 'label') * @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 "/>") * @param boolean $bCloseTag optional: set false if tag has no closing tag (= ending with "/>")
* @return type * @return string html code
*/ */
public function getTag($sTag, $aAttributes, $bCloseTag=true){ public function getTag(string $sTag, array $aAttributes, bool $bCloseTag = true): string
{
$sTpl = $bCloseTag ? "<$sTag%s>%s</$sTag>" : "<$sTag %s/>%s"; $sTpl = $bCloseTag ? "<$sTag%s>%s</$sTag>" : "<$sTag %s/>%s";
$this->_setAttributes($aAttributes); $this->_setAttributes($aAttributes);
return sprintf($sTpl, $this->_addAttributes(), $this->_sLabel); return sprintf($sTpl, $this->_addAttributes(), $this->_sLabel);
...@@ -114,109 +123,22 @@ class htmlelements { ...@@ -114,109 +123,22 @@ class htmlelements {
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
/** /**
* 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 * i.e. value "fa-close" detects font awesome and adds "fa " as prefix
* *
* @param string $sIconclass * @param string $sIconclass
* @return boolean * @return string HTML code
*/ */
public function getIcon($sIconclass=false){ public function getIcon(string $sIconclass = ''): string
{
if (!$sIconclass) { if (!$sIconclass) {
return ''; return '';
} }
$sPrefix='';
foreach ($this->_aIcons as $sPrefix =>$add) {
if (strpos($sIconclass, $sPrefix)===0){
$sPrefix=$add;
continue;
}
}
// do not use this .. it overrides internal attribute vars
// return $this->getTag('i', array('class'=>$sPrefix.$sIconclass));
return '<i class="'.$sPrefix.$sIconclass.'"></i> ';
}
// do not use this .. it overrides internal attribute vars
// return $this->getTag('i', ['class'=>$sIconclass]);
// ---------------------------------------------------------------------- return "<i class=\"$sIconclass\"></i>&nbsp;&nbsp;";
//
// PUBLIC FUNCTIONS
// HTML COMPONENTS
//
// ----------------------------------------------------------------------
/**
* get html code for an input field
*
* @param array $aAttributes attributes of the select tag
* @return string
*/
public function getFormInput($aAttributes){
$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($aAttributes){
$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($aAttributes, $aOptions=array()){
// $sTpl = '<select %s>%s</select>';
if(!count($aOptions)){
return false;
}
$sOptions='';
foreach($aOptions as $aOptionAttributes){
// $sOptions.=$this->getFormOption($aOptionAttributes);
$sOptions.=$this->getTag('option', $aOptionAttributes);
}
$aAttributes['label']=$sOptions;
return $this->getTag('select', $aAttributes);
/*
$this->_setAttributes($aAttributes);
return sprintf($sTpl, $this->_addAttributes(), $sOptions);
*
*/
} }
public function getTable($aHead, $aBody, $aTableAttributes=array()){
$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
);
}
} }
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment