protected static function _renderItem($directory = null, $optionArray = [])
{
$outputItem = null;
/* html elements */
$linkElement = new Html\Element();
$linkElement->init('a', ['class' => self::$_configArray['className']['link']]);
$textSizeElement = new Html\Element();
$textSizeElement->init('span', ['class' => self::$_configArray['className']['textSize']]);
$textDateElement = new Html\Element();
$textDateElement->init('span', ['class' => self::$_configArray['className']['textDate']]);
/* lister directory */
$listerDirectory = new Directory();
$listerDirectory->init($directory);
$listerDirectoryArray = $listerDirectory->getArray();
/* process directory */
foreach ($listerDirectoryArray as $value) {
$path = $directory . '/' . $value;
$fileExtension = pathinfo($path, PATHINFO_EXTENSION);
$text = self::_replace($value, $fileExtension, $optionArray['replace']);
$textDate = date(Db::getSetting('date'), filectime($path));
$isDir = is_dir($path);
$isFile = is_file($path) && array_key_exists($fileExtension, self::$_configArray['extension']);
/* handle directory */
if ($isDir || $isFile) {
$outputItem .= '<li>';
}
if ($isDir) {
$outputItem .= $linkElement->copy()->attr(['href' => Registry::get('parameterRoute') . Registry::get('fullRoute') . '&directory=' . $path . $optionArray['hash'], 'title' => Language::get('directory', '_directory_lister')])->addClass(self::$_configArray['className']['types']['directory'])->text($text);
$outputItem .= $textSizeElement->copy();
} else {
if ($isFile) {
$fileType = self::$_configArray['extension'][$fileExtension];
$textSize = ceil(filesize($path) / self::$_configArray['size']['divider']);
$outputItem .= $linkElement->copy()->attr(['href' => Registry::get('root') . '/' . $path, 'target' => '_blank', 'title' => Language::get('file', '_directory_lister')])->addClass(self::$_configArray['className']['types'][$fileType])->text($text);
$outputItem .= $textSizeElement->copy()->attr('data-unit', self::$_configArray['size']['unit'])->text($textSize);
}
}
if ($isDir || $isFile) {
$outputItem .= $textDateElement->copy()->text($textDate);
$outputItem .= '</li>';
}
}
return $outputItem;
}