add new methods, cleanup, PHP8 fixes

Dieser Commit ist enthalten in:
o.pinke 2023-02-17 15:17:20 +01:00
Ursprung 44382f8da0
Commit 6847130805
1 geänderte Dateien mit 112 neuen und 30 gelöschten Zeilen

Datei anzeigen

@ -144,8 +144,7 @@ class cHTMLInputSelectElement extends cHTMLSelectElement {
* *
* @return int Number of items added * @return int Number of items added
* */ * */
function addCategories($iMaxLevel = 0, $bColored = false, $bCatVisible = true, $bCatPublic = true, function addCategories($iMaxLevel = 0, $bColored = false, $bCatVisible = true, $bCatPublic = true, $bWithArt = false, $bArtOnline = true) {
$bWithArt = false, $bArtOnline = true) {
global $cfg, $client, $lang; global $cfg, $client, $lang;
$oDB = new DB_Contenido; $oDB = new DB_Contenido;
@ -259,27 +258,18 @@ class cHTMLInputSelectElement extends cHTMLSelectElement {
} }
} }
/** public function addFiles($sPath) {
* Selects specified elements as selected $iCount = 0;
* $aFiles = cDirHandler::read($sPath);
* @param array $aElements Array with "values" of the cHTMLOptionElement to set asort($aFiles);
* $iCounter = count($this->_options);
* @return none foreach ($aFiles as $sValue) {
*/ $oOption = new cHTMLOptionElement($sValue, $sValue);
function setSelected($aElements) { $this->addOptionElement($iCounter, $oOption);
if (is_array($this->_options) && is_array($aElements)) { $iCounter++;
foreach ($this->_options as $sKey => $oOption) { }
if (in_array($oOption->getAttribute("value"), $aElements)) { return count($aFiles);
$oOption->setSelected(true);
$this->_options[$sKey] = $oOption;
} else {
$oOption->setSelected(false);
$this->_options[$sKey] = $oOption;
}
}
}
} }
} }
class UI_Config_Table { class UI_Config_Table {
@ -302,16 +292,24 @@ class UI_Config_Table {
var $_sColorLight; var $_sColorLight;
var $_sColorDark; var $_sColorDark;
/**
*
* @var type
*/
protected $_iRowCnt = 0;
function __construct() { function __construct() {
global $cfg; $cfg = cRegistry::getConfig();
$this->_sPadding = 2; $this->_sPadding = 2;
$this->_sBorder = 0; $this->_sBorder = 0;
$this->_sBorderColor = $cfg['color']['table_border']; $this->_sBorderColor = cRegistry::getConfigValue('color', 'table_border');
$this->_sTplCellCode = ' <td align="{ALIGN}" valign="{VALIGN}" class="{CLASS}" colspan="{COLSPAN}" style="{EXTRA}white-space:nowrap;" nowrap="nowrap">{CONTENT}</td>' . "\n"; $this->_sTplCellCode = '<td align="{ALIGN}" valign="{VALIGN}" class="{CLASS}" colspan="{COLSPAN}" style="{EXTRA}white-space:nowrap;" nowrap="nowrap">' . "\n"
. '{CONTENT}' . "\n"
. '</td>' . "\n";
$this->_sTplTableFile = $cfg['path']['contenido'] . $cfg['path']['templates'] . $cfg['templates']['generic_list']; $this->_sTplTableFile = $cfg['path']['contenido'] . $cfg['path']['templates'] . $cfg['templates']['generic_list'];
$this->_sColorLight = $cfg['color']['table_light']; $this->_sColorLight = cRegistry::getConfigValue('color', 'table_light');
$this->_sColorDark = $cfg['color']['table_dark']; $this->_sColorDark = cRegistry::getConfigValue('color', 'table_dark');
} }
function setCellTemplate($sCode) { function setCellTemplate($sCode) {
@ -417,8 +415,37 @@ class UI_Config_Table {
return $sSkript; return $sSkript;
} }
function render($bPrint = false) { /**
$oTable = new Template; * increase row counter
*/
public function nextRow() {
$this->_iRowCnt++;
}
/**
* get current row count
*
* @return int row count
*/
public function getRowCount() : int {
return $this->_iRowCnt;
}
public function setRowCell(int $iCell, $mContent) {
$this->setCell($this->_iRowCnt, $iCell, $mContent);
}
public function setRowBorder(string $sWhich = 'bottom') {
$sStyle = '';
switch ($sWhich) {
case 'bottom':
$this->setRowExtra($this->_iRowCnt, 'border-bottom: 1px solid silver;');
break;
}
}
public function render($bPrint = false) {
$oTable = new Template();
$oTable->reset(); $oTable->reset();
$oTable->set('s', 'CELLPADDING', $this->_sPadding); $oTable->set('s', 'CELLPADDING', $this->_sPadding);
@ -437,6 +464,8 @@ class UI_Config_Table {
$iCount = 0; $iCount = 0;
foreach ($aCells as $sCell => $sData) { foreach ($aCells as $sCell => $sData) {
$sData = $this->_processContentData($sData);
$iCount++; $iCount++;
$sTplCell = $this->_sTplCellCode; $sTplCell = $this->_sTplCellCode;
@ -525,4 +554,57 @@ class UI_Config_Table {
} }
} }
} /**
* returns different types of content data as string
* you can use
* - string
* - object, needs to have a render method
* - array of objects and/or strings
*
* @author Ortwin Pinke
* @since 2.3.0
*
*
* @param mixed $mData
* @return string
*/
protected function _processContentData($mData): string {
if (is_string($mData)) {
return $mData;
}
$sData = '';
if (is_array($mData) && count($mData) > 0) {
foreach ($mData as $mElement) {
if (is_string($mElement)) {
$sData .= $mElement;
continue;
}
$sData .= $this->_renderObject($mElement);
}
} else {
$sData = $this->_renderObject($mData);
}
return $sData;
}
/**
* Renders an object using its render method
*
* @author Ortwin Pinke
* @since 2.3.0
*
* @param type $oObject
* @return string rendered string from object | empty string
*/
protected function _renderObject($oObject): string {
$sReturn = '';
if (is_object($oObject) && method_exists($oObject, 'render')) {
$sReturn = $oObject->render();
}
return $sReturn;
}
}