Skip to content

Commit

Permalink
Merge pull request #10 from Galamoon/master
Browse files Browse the repository at this point in the history
Релиз версии 1.0.0
  • Loading branch information
shvykov committed Feb 22, 2019
2 parents a0014dd + 839692b commit 89009b2
Show file tree
Hide file tree
Showing 172 changed files with 6,175 additions and 6,292 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## [Released]

## [1.0.0] - 2019-02-21
- Добавлена документация с примерами и тест-кейсами использования модуля
- Добавлена документация по использованию событий модуля для добавления собственных генераторов
- Добавлен composer.json
- Исправления и доработки

## [0.8.0] - 2018-11-15
- Добавлен генератор номера мобильного телефона
- Добавлена настройка отображения детализации при генерации элементов
Expand Down
20 changes: 9 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
## Bitrix модуль генерации демо данных

Модуль ylab.ddata реализует генерацию сущностей Bitrix заполненых случайными данными. Модуль поможет при отладке
публичной части сайта, API и в других ситуациях, когда необходимы сущности (ИБ, HL, Пользователи) заполненные тестовыми
Модуль ylab.ddata реализует генерацию сущностей Bitrix, заполненных случайными данными. Модуль поможет при отладке
публичной части сайта, API и в других ситуациях, когда необходимы сущности (ИБ, HL, Пользователи), заполненные тестовыми
данными.

Генерация производится на основе преднастроенного профиля в административном разделе.
Настройка профиля производится в разделе `Рабочий стол -> Сервисы -> Ylab Демо данные -> Профили сущностей`.

Из коробки доступны:
* Сущности
* Пользователь
* Элемент инфоблока
* Элемент каталога
* Элемент highload-блока
* Элемент ORM сущности
[Примеры использования модуля](docs/usecase/usecase.md)

Настройка профиля производится в разделе `Рабочий стол -> Сервисы -> Ylab Демо данные -> Профили сущностей`.
[Доступные схемы данных](docs/data/data.md)

## Документация
- [Документация](docs/docs.md)

## Требования
1. Требуется версия 1С-Битрикс от 17.0.0.
Expand All @@ -25,7 +23,7 @@
$ cd local/modules
$ git clone https://github.com/ylabio/ylab.ddata.git
```
В папку `local/modules` будет склонирован репозиторий модуля, после этого, необходимо в панели администратора установить
В папку `local/modules` будет склонирован репозиторий модуля, после этого в панели администратора необходимо установить
модуль: `Рабочий стол -> Marketplace -> Установленные решения`.

Ведущие разработчики:
Expand Down
239 changes: 119 additions & 120 deletions admin/entity_data_form.php
Original file line number Diff line number Diff line change
@@ -1,120 +1,119 @@
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php");

use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Ylab\Ddata\LoadUnits;

try {
define('MODULE_ID', 'ylab.ddata');
Loader::includeModule(MODULE_ID);

Loc::loadMessages(__FILE__);
$ctx = \Bitrix\Main\Application::getInstance()->getContext();
$request = $ctx->getRequest();
$sGeneratorID = $request->get('generator');
$sFieldID = $request->get('field');
$sPropertyName = $request->get('property-name');
$sProfileID = $request->get('profile_id');
$arRequest = $request->toArray();
$arOptions = $arRequest['option'];

$objLoadUnits = new LoadUnits();
$arDataUnits = $objLoadUnits->getDataUnits();
foreach ($arDataUnits as $arData) {
if ($arData['ID'] == $sGeneratorID) {
$arDataForm = $arData;
break;
}
}
$sDataClass = $arDataForm['CLASS'];
$sForm = $sDataClass::getOptionForm($request);

$isValidateOptions = false;
if ($request->isPost() && !empty($request->get('validate'))) {
$isValidateOptions = $sDataClass::isValidateOptions($request);
if (!$isValidateOptions) {
throw new Exception(Loc::getMessage('ERROR_OPTION'));
}
}

} catch (\Exception $e) {
$error = $e->getMessage();
}

if (isset($error)) {
CAdminMessage::ShowMessage([
"MESSAGE" => $error,
"TYPE" => "ERROR",
]);
}

if (!empty($sForm) && !$isValidateOptions) { ?>
<form action="<?= $APPLICATION->GetCurPage() ?>" method='post' name="WindowEntityDataForm" id='WindowEntityDataForm'>
<?= $sForm ?>
<script type="text/javascript">
var saveBtn = {
title: "<?= Loc::getMessage('YLAB_DDATA_BTN_JS_SAVE')?>",
id: "savebtn",
name: "savebtn",
className: "adm-btn-save",
action: function () {
window.YlabDdata.WindowEntityDataForm.PostParameters("validate=Y");
}
};
window.YlabDdata.WindowEntityDataForm.SetButtons([saveBtn, BX.CDialog.btnCancel]);
</script>
</form>
<? } else { ?>
<script>
BX.ready(function () {
var inputButton = BX.findChild(
BX(document),
{
className: 'DataFieldButton',
attribute: {
'data-name': '<?= $sPropertyName ?>'
}
},
true,
true
)[0];
var inputOptions = BX.findChild(
BX(document),
{
attribute: {
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]'
}
},
true,
true
)[0];
if (inputOptions == undefined) {
BX.prepend(BX.create('input', {
attrs: {
'type': 'hidden',
'class': 'options-input',
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]',
'value': '<?= json_encode($arOptions) ?>',
'id': '<?= $sGeneratorID ?>'
}
}), BX.findParent(inputButton, {}));
} else {

BX.remove(inputOptions);

BX.prepend(BX.create('input', {
attrs: {
'type': 'hidden',
'class': 'options-input',
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]',
'value': '<?= json_encode($arOptions) ?>',
'id': '<?= $sGeneratorID ?>'
}
}), BX.findParent(inputButton, {}));
}
});
window.YlabDdata.WindowEntityDataForm.Close();
</script>
<? } ?>

<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php';

use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Ylab\Ddata\LoadUnits;

try {
define('MODULE_ID', 'ylab.ddata');
Loader::includeModule(MODULE_ID);

Loc::loadMessages(__FILE__);
$ctx = \Bitrix\Main\Application::getInstance()->getContext();
$request = $ctx->getRequest();
$sGeneratorID = $request->get('generator');
$sPropertyName = $request->get('property-name');
$sPropertyCode = $request->get('property-code');
$sProfileID = $request->get('profile_id');
$arRequest = $request->toArray();
$arOptions = $arRequest['option'];

$objLoadUnits = new LoadUnits();

$arDataForm = $objLoadUnits->getDataUnitById($sGeneratorID);

$oDataClass = new $arDataForm['CLASS']($sProfileID, $sPropertyCode, $sGeneratorID);
$sForm = $oDataClass->getOptionForm($request);

$isValidateOptions = false;
if ($request->isPost() && !empty($request->get('validate'))) {
$isValidateOptions = $oDataClass->isValidateOptions($request);
if (!$isValidateOptions) {
throw new Exception(Loc::getMessage('ERROR_OPTION'));
}
}

} catch (\Exception $e) {
$error = $e->getMessage();
}

if (isset($error)) {
CAdminMessage::ShowMessage([
'MESSAGE' => $error,
'TYPE' => 'ERROR',
]);
}

if (!empty($sForm) && !$isValidateOptions) { ?>
<form action="<?= $APPLICATION->GetCurPage() ?>" method='post' name="WindowEntityDataForm" id='WindowEntityDataForm'>
<?= $sForm ?>
<script type="text/javascript">
BX.ready(function () {
new BX.Ylab.Settings('<?= $sPropertyName?>', '<?= $sGeneratorID ?>');
});

var saveBtn = {
title: "<?= Loc::getMessage('YLAB_DDATA_BTN_JS_SAVE')?>",
id: "savebtn",
name: "savebtn",
className: "adm-btn-save",
action: function () {
window.YlabDdata.WindowEntityDataForm.PostParameters("validate=Y");
}
};
window.YlabDdata.WindowEntityDataForm.SetButtons([saveBtn, BX.CDialog.btnCancel]);
</script>
</form>
<? } else { ?>
<script>
BX.ready(function () {
var inputButton = BX.findChild(
BX(document),
{
className: 'DataFieldButton',
attribute: {
'data-name': '<?= $sPropertyName ?>'
}
},
true,
true
)[0];
var inputOptions = BX.findChild(
BX(document),
{
attribute: {
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]'
}
},
true,
true
)[0];
if (inputOptions == undefined) {
BX.prepend(BX.create('input', {
attrs: {
'type': 'hidden',
'class': 'options-input',
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]',
'value': '<?= json_encode($arOptions) ?>',
'id': '<?= $sGeneratorID ?>'
}
}), BX.findParent(inputButton, {}));
} else {

BX.remove(inputOptions);

BX.prepend(BX.create('input', {
attrs: {
'type': 'hidden',
'class': 'options-input',
'name': '<?= $sPropertyName ?>[<?= $sGeneratorID ?>]',
'value': '<?= json_encode($arOptions, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS|JSON_HEX_QUOT) ?>',
'id': '<?= $sGeneratorID ?>'
}
}), BX.findParent(inputButton, {}));
}
});
window.YlabDdata.WindowEntityDataForm.Close();
</script>
<? } ?>
Loading

0 comments on commit 89009b2

Please sign in to comment.