Skip to content

Commit

Permalink
Release 0.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
shvykov committed Nov 12, 2018
1 parent e337d4c commit 1ea07e3
Show file tree
Hide file tree
Showing 12 changed files with 192 additions and 12 deletions.
9 changes: 7 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# Changelog

## [0.1.0] - 2018-06-14
### [0.2.0] - 2018-11-12

### Added
#### Added
- Событие автозагрузки модуля, с возможностью управления со страницы настроек.

### [0.1.0] - 2018-06-14

#### Added
- Класс-обертка над библиотекой валидации
- Хэлпер для работы с классом валидации
- Оформление кода в модуль
Expand Down
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Модуль YLab Validation

Модуль является оберткой над библиотекой валидации Laravel.
- php: >= 7.0 (для illuminate/validation 5.5 и выше)
- Bitrix: >= 17.0.0
- Минимальная версия illuminate/validation - 5.4 (php: >=5.6.4)
* php: >=5.6.4
* Bitrix: >= 17.0.0
* illuminate/validation: >=5.4

## Установка
## Установка с github

* Необходимо установить `illuminate/validation`, через composer:

Expand All @@ -25,6 +25,18 @@
* В папку `local/modules` будет склонирован репозиторий модуля, после этого, необходимо в панели администратора
установить модуль: `Рабочий стол -> Marketplace -> Установленные решения`.

## Установка через composer

`composer require ylab/validation:dev-master`

Для установки в `local/modules`, необходимо в composer.json добавить:
```json
"extra": {
//путь до папки local, например ../local, если composer.json лежит в папке local
"bitrix-dir": ""
}
```

## Использование

Для реализации компонента с валидацией, можно использовать пример кода:
Expand Down
22 changes: 22 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "ylab/validation",
"description": "Module wrapper for illuminate/validation (Laravel) library for Bitrix",
"type": "bitrix-d7-module",
"require": {
"php": ">=5.6.4",
"illuminate/validation": ">=5.4",
"composer/installers": "~1.0"
},
"license": "MIT",
"authors": [
{
"name": "Roman Shvykov",
"email": "roman_shvykov@mail.ru",
"role": "Developer"
}
],
"support": {
"issues": "https://github.com/ylabio/ylab.validation/issues",
"source": "https://github.com/ylabio/ylab.validation"
}
}
4 changes: 2 additions & 2 deletions install/version.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php
$arModuleVersion = [
'VERSION' => '0.1',
'VERSION_DATE' => '2018-06-14',
'VERSION' => '0.2.0',
'VERSION_DATE' => '2018-11-12',
];
2 changes: 1 addition & 1 deletion lang/en/install/index.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?php
$MESS['YLAB_VALIDATION_MODULE_NAME'] = 'YLab Validation';
$MESS['YLAB_VALIDATION_MODULE_DESCRIPTION'] = 'Module wrapper for illuminate/validation (Laravel) library)';
$MESS['YLAB_VALIDATION_MODULE_DESCRIPTION'] = 'Module wrapper for illuminate/validation (Laravel) library';
$MESS['YLAB_VALIDATION_INSTALL_ERROR'] = 'Not found class \Illuminate\Validation\Validator.';
2 changes: 1 addition & 1 deletion lang/ru/install/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
$MESS['YLAB_VALIDATION_MODULE_NAME'] = 'YLab Validation';
$MESS['YLAB_VALIDATION_MODULE_DESCRIPTION'] = 'Модуль-обертка для библиотеки illuminate/validation (Laravel)';
$MESS['YLAB_VALIDATION_INSTALL_ERROR'] = 'Не найден класс \Illuminate\Validation\Validator. Убедитесь, что Вы ' .
'установили все зависимости и подключили автозагрузчик composer в init.php.';
'установили все зависимости и подключили автозагрузчик composer в init.php.';
3 changes: 3 additions & 0 deletions lang/ru/options.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?php

$MESS['YLAB_VALIDATION_AUTOLOAD'] = 'Автозагрузка модуля (событие OnPageStart)';
3 changes: 2 additions & 1 deletion lib/componentvalidation.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

namespace YLab\Validation;

use Bitrix\Main\Application;
Expand Down Expand Up @@ -46,4 +47,4 @@ public function __construct(\CBitrixComponent $component = null, $sFile = __FILE
* @return array
*/
abstract protected function rules();
}
}
25 changes: 25 additions & 0 deletions lib/event.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace YLab\Validation;

use Bitrix\Main\Loader;

/**
* Class Event
* @package YLab\Validation
*/
class Event
{
/**
* @return bool
* @throws \Bitrix\Main\LoaderException
*/
public static function onPageStart()
{
if (!Loader::includeModule('ylab.validation')) {
return false;
}

return true;
}
}
2 changes: 1 addition & 1 deletion lib/validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ public static function make(array $arData, array $arRules, $sLang = LANGUAGE_ID,
$arCustoms
);
}
}
}
1 change: 1 addition & 0 deletions lib/validatorhelper.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

namespace YLab\Validation;

use Bitrix\Main\IO\Path;
Expand Down
111 changes: 111 additions & 0 deletions options.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?php

use Bitrix\Main\Application;
use Bitrix\Main\Localization\Loc;

/** @global \CMain $APPLICATION */
global $APPLICATION;

Loc::loadMessages(__FILE__);

defined('ADMIN_MODULE_NAME') or define('ADMIN_MODULE_NAME', 'ylab.validation');

if (!$USER->isAdmin()) {
$APPLICATION->authForm('Nope');
}

try {
$oApp = Application::getInstance();
$oContext = $oApp->getContext();
$oRequest = $oContext->getRequest();

Loc::loadMessages($oContext->getServer()->getDocumentRoot() . "/bitrix/modules/main/options.php");

$arErrors = [];
$arTabs = [
[
"DIV" => "edit1",
"TAB" => Loc::getMessage("MAIN_TAB_SET"),
"TITLE" => Loc::getMessage("MAIN_TAB_TITLE_SET"),
'OPTIONS' => [
[
'ylab_validation_autoload',
Loc::getMessage('YLAB_VALIDATION_AUTOLOAD'),
'',
['checkbox']
]
]
],
];

$oTabControl = new CAdminTabControl("tabControl", $arTabs);

if (!empty($save) && $oRequest->isPost() && check_bitrix_sessid()) {
foreach ($arTabs as $arTab) {
foreach ($arTab['OPTIONS'] as $arOption) {
if ($arOption[0] === 'ylab_validation_autoload') {
$sVal = $oRequest->get('ylab_validation_autoload');
if ($sVal === 'Y') {
\Bitrix\Main\EventManager::getInstance()->registerEventHandler(
'main',
'OnPageStart',
ADMIN_MODULE_NAME,
'\YLab\Validation\Event',
'onPageStart'
);
} else {
\Bitrix\Main\EventManager::getInstance()->unRegisterEventHandler(
'main',
'OnPageStart',
ADMIN_MODULE_NAME,
'\YLab\Validation\Event',
'onPageStart'
);
}
}

__AdmSettingsSaveOption(ADMIN_MODULE_NAME, $arOption);
}
}
}

if (count($arErrors) > 0) {
$arMessage = [
"MESSAGE" => implode("\n", $arErrors),
"HTML" => true,
"TYPE" => "ERROR",
];
$oCAdminMessage = new \CAdminMessage($arMessage);
$oCAdminMessage->ShowMessage($arMessage);
}
} catch (\Exception $oError) {
ShowError($oError->getMessage());
}

$oTabControl->begin();
?>

<form method="post"
action="<?= sprintf('%s?mid=%s&lang=%s', $oRequest->getRequestedPage(), urlencode(ADMIN_MODULE_NAME),
LANGUAGE_ID) ?>">
<?php
foreach ($arTabs as $arTab) {
if ($arTab['OPTIONS']) {
$oTabControl->BeginNextTab();
__AdmSettingsDrawList(ADMIN_MODULE_NAME, $arTab['OPTIONS']);
}
}
$oTabControl->beginNextTab();
$oTabControl->buttons();
?>
<input type="submit"
name="save"
value="<?= Loc::getMessage("MAIN_SAVE") ?>"
title="<?= Loc::getMessage("MAIN_OPT_SAVE_TITLE") ?>"
class="adm-btn-save"
/>
<?php
echo bitrix_sessid_post();
$oTabControl->end();
?>
</form>

0 comments on commit 1ea07e3

Please sign in to comment.