diff --git a/.module.json b/.module.json index 4f44c08..df8d2d0 100644 --- a/.module.json +++ b/.module.json @@ -4,6 +4,6 @@ "namespace": "Bx\\Null", "gitUrl": "https://bitbucket.org/bellord13/bx.null/", "version": "1.0.0", - "date": "2023-04-13 00:00:00", + "date": "2023-09-01 00:00:00", "deps": ["wt.core"] } \ No newline at end of file diff --git a/admin/main/submenu/null_table/index.php b/admin/main/submenu/null_table/index.php index fc5ce5d..c42c369 100644 --- a/admin/main/submenu/null_table/index.php +++ b/admin/main/submenu/null_table/index.php @@ -11,9 +11,9 @@ require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admi */ $ormTable = resolve(NullTable::class); -$tableAdminPage = new TableAdminPage($ormTable, $_REQUEST, '/bitrix/admin/bx_null.main.null_table_row.php'); +$tableAdminPage = new TableAdminPage($ormTable, $_REQUEST, '/bitrix/admin/bx_null.main.null_table.null_table_row.php'); $tableAdminPage - ->checkPermission('bx.null') + ->checkPermission() ->start() ->show(); diff --git a/admin/main/submenu/null_table_row/index.php b/admin/main/submenu/null_table/submenu/null_table_row/index.php similarity index 92% rename from admin/main/submenu/null_table_row/index.php rename to admin/main/submenu/null_table/submenu/null_table_row/index.php index 2a18467..8e2a48b 100644 --- a/admin/main/submenu/null_table_row/index.php +++ b/admin/main/submenu/null_table/submenu/null_table_row/index.php @@ -12,7 +12,7 @@ require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admi $ormTable = resolve(NullTable::class); $AdminPageTableRow = new TableRowAdminPage($ormTable, $_REQUEST, '/bitrix/admin/bx_null.main.null_table.php'); -$AdminPageTableRow->checkPermission('bx.null'); +$AdminPageTableRow->checkPermission(); $AdminPageTableRow->start(); \CJSCore::Init('jquery'); diff --git a/admin/main/submenu/null_table_row/lang/ru/config.php b/admin/main/submenu/null_table/submenu/null_table_row/lang/ru/config.php similarity index 100% rename from admin/main/submenu/null_table_row/lang/ru/config.php rename to admin/main/submenu/null_table/submenu/null_table_row/lang/ru/config.php diff --git a/admin/main/submenu/null_table_row/menu.php b/admin/main/submenu/null_table/submenu/null_table_row/menu.php similarity index 100% rename from admin/main/submenu/null_table_row/menu.php rename to admin/main/submenu/null_table/submenu/null_table_row/menu.php diff --git a/admin/main/submenu/settings/config.php b/admin/main/submenu/settings/config.php index 338ca2f..8a98fff 100644 --- a/admin/main/submenu/settings/config.php +++ b/admin/main/submenu/settings/config.php @@ -12,7 +12,12 @@ return array( 'MAIN' => array( 'TITLE' => 'Общие сведения', 'OPTIONS' => array( - + 'ENABLE' => array( + 'TITLE' => 'Enable module', + 'TYPE' => 'checkbox', + 'DEFAULT' => 'N', + 'HINT' => '', + ), ), ), 'DOCS' => array( diff --git a/lib/orm/nulltable.php b/lib/orm/nulltable.php index 0c8217e..59d498b 100644 --- a/lib/orm/nulltable.php +++ b/lib/orm/nulltable.php @@ -4,6 +4,8 @@ namespace Bx\Null\ORM; +use Bitrix\Main\ORM\Fields\DatetimeField; +use Bitrix\Main\Type\DateTime; use Wt\Core\ORM\ADataManager; class NullTable extends ADataManager @@ -32,20 +34,61 @@ class NullTable extends ADataManager public static function getMap() { return array( - 'ID' => array( - 'data_type' => 'integer', + 'ID' => new \Bitrix\Main\Entity\IntegerField('ID', [ 'primary' => true, 'autocomplete' => true, - 'title' => 'ID', - ), - 'CREATED_AT' => array( - 'data_type' => 'datetime', - 'title' => 'CREATED_AT', - ), - 'UPDATED_AT' => array( - 'data_type' => 'datetime', - 'title' => 'UPDATED_AT', - ), + 'title' => 'Id', + ]), + 'CREATED_AT' => new \Bitrix\Main\Entity\DatetimeField('CREATED_AT', [ + 'default_value' => new \Bitrix\Main\Type\DateTime(), + 'title' => 'CreatedAt', + 'in_form' => false, + ]), + 'UPDATED_AT' => new \Bitrix\Main\Entity\DatetimeField('UPDATED_AT', [ + 'title' => 'UpdatedAt', + 'in_form' => false, + ]), ); } + + + /** + * @param $id + * @param array $fields + * @return \Bitrix\Main\ORM\Data\UpdateResult + * @throws \Bitrix\Main\ObjectException + */ + public static function update($id, $fields) + { + foreach (static::getEntity()->getFields() as $field){ + if(is_a($field, DatetimeField::class)){ + if(isset($fields[$field->getName()]) && !is_a($fields[$field->getName()], DateTime::class)) { + $fields[$field->getName()] = new \Bitrix\Main\Type\DateTime($fields[$field->getName()]); + } + } + } + + $fields = array_merge($fields, [ + 'UPDATED_AT' => new \Bitrix\Main\Type\DateTime(), // date(CDatabase::DateFormatToPHP(FORMAT_DATETIME)) + ]); + + $result = parent::update($id, $fields); + return $result; + } + + /** + * @param array $fields + * @return \Bitrix\Main\ORM\Data\AddResult + * @throws \Bitrix\Main\ObjectException + */ + public static function add($fields) + { + $fields = array_merge($fields, [ + 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), + 'UPDATED_AT' => new \Bitrix\Main\Type\DateTime(), + ]); + + $result = parent::add($fields); + return $result; + } } \ No newline at end of file