<?
namespace Newsite\Utils\Iblock\Properties;
use Bitrix\Main\Loader,
Bitrix\Main\Localization\Loc,
Bitrix\Iblock\PropertyTable;
Loc::loadMessages(__FILE__);
Loader::includeModule('iblock');
class WorkTime extends \CIBlockPropertyHTML
{
const USER_TYPE = 'WorkTime';
public static function GetUserTypeDescription()
{
return [
"PROPERTY_TYPE" => PropertyTable::TYPE_STRING,
"USER_TYPE" => self::USER_TYPE,
"DESCRIPTION" => "Newsite - Режим работы по дням",
"GetPropertyFieldHtml" => [__CLASS__, "GetPropertyFieldHtml"],
"GetPublicEditHTML" => [__CLASS__, "GetPropertyFieldHtml"],
"PrepareSettings" => [__CLASS__, "PrepareSettings"],
"GetSettingsHTML" => [__CLASS__, "GetSettingsHTML"],
"GetAdminListViewHTML" => [__CLASS__, "GetAdminListViewHTML"],
"ConvertFromDB" => [__CLASS__, "ConvertFromDB"],
"ConvertToDB" => [__CLASS__, "ConvertToDB"]
];
}
public static function PrepareSettings($arProperty) {
return [];
}
public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields) {
return true;
}
public function BuildOption($elements, $values) {
$values = (array) $values;
$options = "";
foreach ($elements as $key => $value) {
$options .= '<option value="' . $key . '"';
if (in_array($key, $values)) {
$options .= ' selected';
}
$options .= '>' . $value . '</option>';
}
return $options;
}
public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) {
if(!is_array($value['VALUE']))
$value = static::ConvertFromDB($arProperty, $value);
$value = $value['VALUE'];
\Bitrix\Main\UI\Extension::load("ui.forms");
$daysMonth = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];
$daysMonthOptions = self::BuildOption($daysMonth, $value['DAY']);
ob_start();
?>
<div style="display: flex; margin-bottom: 10px">
<select name="<?= $strHTMLControlName['VALUE'] ?>[DAY]"><?= $daysMonthOptions ?></select>
<span style ="margin: 5px">Время работы:</span>
<input type="text" value="<?= $value['TIME_START'] ?: '00:00' ?>" placeholder="00:00"
name="<?= $strHTMLControlName['VALUE'] ?>[TIME_START]" size="2"/>
<span style ="margin: 5px">-</span>
<input type="text" value="<?= $value['TIME_END'] ?: '00:00' ?>" placeholder="00:00"
name="<?= $strHTMLControlName['VALUE'] ?>[TIME_END]" size="2"/>
<span style ="margin: 5px">Обед:</span>
<input type="text" value="<?= $value['DINNER_START'] ?: '00:00' ?>" placeholder="00:00"
name="<?= $strHTMLControlName['VALUE'] ?>[DINNER_START]" size="2"/>
<span style ="margin: 5px">-</span>
<input type="text" value="<?= $value['DINNER_END'] ?: '00:00' ?>" placeholder="00:00"
name="<?= $strHTMLControlName['VALUE'] ?>[DINNER_END]" size="2"/>
<input type="text" placeholder="Примечание" name="<?= $strHTMLControlName['VALUE'] ?>[TITLE]" value="<?= $value['TITLE'] ?>">
</div>
<?php
$return = ob_get_contents();
ob_end_clean();
return $return;
}
public static function ConvertFromDB($arProperty, $value = array()) {
$unserialize = unserialize($value["VALUE"]);
if (empty($unserialize)) {
$unserialize = array();
}
return ["VALUE" => $unserialize];
}
public static function ConvertToDB($arProperty, $value)
{
if(!empty($value["VALUE"]['TITLE']) || (!empty($value["VALUE"]['TIME_START']) && $value["VALUE"]['TIME_START'] != '00:00')) {
$value["VALUE"] = serialize($value["VALUE"]);
return $value;
}
return ['VALUE' => false];
}
}