Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Автоподключение модуля #3

Merged
merged 8 commits into from
Sep 8, 2015
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.idea
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
API для сборки кастомных админок в Битриксе

Документацию по модулю лучше пока смотреть по комментариям в коде модуля.
Простой рабочий пример реализован отдельным модулем [digitalwand.admin_helper_example](https://github.com/DigitalWand/digitalwand.admin_helper_example)
Простой рабочий пример реализован отдельным модулем
[digitalwand.admin_helper_example](https://github.com/DigitalWand/digitalwand.admin_helper_example)

В настоящее время оттестирована только работа с таблицами,созданными как HL-инфоблок битрикса. Оно должно нормально работать и с кастомными таблицами, но тестирования (и рабочего примера) пока небыло.
В настоящее время оттестирована только работа с таблицами,созданными как HL-инфоблок битрикса. Оно должно нормально
работать и с кастомными таблицами, но тестирования (и рабочего примера) пока небыло.
5 changes: 1 addition & 4 deletions include.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
<?
<?php

use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;

Loc::loadMessages(__FILE__);

Loader::registerAutoLoadClasses('digitalwand.admin_helper',
array(
Expand Down
2 changes: 1 addition & 1 deletion install/admin/admin_helper_route.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/local/modules/digitalwand.admin_helper/admin/route.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/digitalwand.admin_helper/admin/route.php");
?>
62 changes: 38 additions & 24 deletions install/index.php
Original file line number Diff line number Diff line change
@@ -1,62 +1,76 @@
<?
global $MESS;
<?php

use Bitrix\Main\Localization\Loc;

$PathInstall = str_replace("\\", "/", __FILE__);
$PathInstall = substr($PathInstall, 0, strlen($PathInstall) - strlen("/index.php"));
Loc::loadMessages($PathInstall . "/install.php");
include($PathInstall . "/version.php");
Loc::loadMessages(__FILE__);

if (class_exists("digitalwand_admin_helper")) return;
if (class_exists('digitalwand_admin_helper')) return;

Class digitalwand_admin_helper extends CModule
class digitalwand_admin_helper extends CModule
{
var $MODULE_ID = "digitalwand.admin_helper";
var $MODULE_ID = 'digitalwand.admin_helper';
var $MODULE_VERSION;
var $MODULE_VERSION_DATE;
var $MODULE_NAME;
var $MODULE_DESCRIPTION;
var $MODULE_GROUP_RIGHTS = "Y";
var $MODULE_GROUP_RIGHTS = 'Y';
var $MODULE_CSS;
var $PARTNER_NAME = "DigitalWand";
var $PARTNER_URI = "";
var $PARTNER_NAME = 'DigitalWand';
var $PARTNER_URI = '';

function digitalwand_admin_helper()
{
include __DIR__ . '/version.php';

$this->MODULE_VERSION = ADMIN_HELPER_VERSION;
$this->MODULE_VERSION_DATE = ADMIN_HELPER_VERSION_DATE;
$this->MODULE_NAME = Loc::getMessage("ADMIN_HELPER_INSTALL_NAME");
$this->MODULE_DESCRIPTION = Loc::getMessage("ADMIN_HELPER_INSTALL_DESCRIPTION");
$this->MODULE_NAME = Loc::getMessage('ADMIN_HELPER_INSTALL_NAME');
$this->MODULE_DESCRIPTION = Loc::getMessage('ADMIN_HELPER_INSTALL_DESCRIPTION');
}

function DoInstall()
{
global $APPLICATION;

$eventManager = \Bitrix\Main\EventManager::getInstance();

RegisterModule($this->MODULE_ID);
$this->InstallFiles();
$APPLICATION->IncludeAdminFile(
Loc::getMessage("ADMIN_HELPER_INSTALL_TITLE"),
__DIR__ . "/step.php"

$eventManager->registerEventHandler(
'main',
'OnPageStart',
$this->MODULE_ID,
'\DigitalWand\AdminHelper\EventHandlers',
'onPageStart'
);

$APPLICATION->IncludeAdminFile(Loc::getMessage('ADMIN_HELPER_INSTALL_TITLE'), __DIR__ . '/step.php');
}

function DoUninstall()
{
global $APPLICATION;

$eventManager = \Bitrix\Main\EventManager::getInstance();

UnRegisterModule($this->MODULE_ID);
$APPLICATION->IncludeAdminFile(
Loc::getMessage("ADMIN_HELPER_INSTALL_TITLE"),
__DIR__ . "/unstep.php"

$eventManager->unRegisterEventHandler(
'main',
'OnPageStart',
$this->MODULE_ID,
'\DigitalWand\AdminHelper\EventHandlers',
'onPageStart'
);

$APPLICATION->IncludeAdminFile(Loc::getMessage('ADMIN_HELPER_INSTALL_TITLE'), __DIR__ . '/unstep.php');
}

function InstallFiles()
{
CopyDirFiles(__DIR__ . "/admin", $_SERVER['DOCUMENT_ROOT'] . "/bitrix/admin");
CopyDirFiles(__DIR__ . '/admin', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin');

return true;
}
}

?>
}
4 changes: 2 additions & 2 deletions install/version.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?
define("ADMIN_HELPER_VERSION", "1.0");
define("ADMIN_HELPER_VERSION_DATE", "2015-07-25 00:00:00");
define('ADMIN_HELPER_VERSION', '1.0');
define('ADMIN_HELPER_VERSION_DATE', '2015-07-25');
?>
12 changes: 6 additions & 6 deletions lang/ru/install/install.php → lang/ru/install/index.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
$MESS['ADMIN_HELPER_INSTALL_NAME'] = 'API AdminHelper';
$MESS['ADMIN_HELPER_INSTALL_DESCRIPTION'] = 'API для построения административного интерфейса для highload-инфоблоков';
$MESS['ADMIN_HELPER_INSTALL_TITLE'] = 'Установка модуля "digitalwand.admin_helper"';
$MESS['ADMIN_HELPER_INSTALL_COMPLETE_OK'] = 'Установка завершена.';
$MESS['ADMIN_HELPER_INSTALL_BACK'] = 'Вернуться в управление модулями';
<?php
$MESS['ADMIN_HELPER_INSTALL_NAME'] = 'API AdminHelper';
$MESS['ADMIN_HELPER_INSTALL_DESCRIPTION'] = 'API для построения административного интерфейса для highload-инфоблоков';
$MESS['ADMIN_HELPER_INSTALL_TITLE'] = 'Установка модуля "digitalwand.admin_helper"';
$MESS['ADMIN_HELPER_INSTALL_COMPLETE_OK'] = 'Установка завершена.';
$MESS['ADMIN_HELPER_INSTALL_BACK'] = 'Вернуться в управление модулями';
$MESS['ADMIN_HELPER_UNINSTALL_COMPLETE'] = 'Удаление завершено.';
33 changes: 33 additions & 0 deletions lib/EventHandlers.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace DigitalWand\AdminHelper;

use Bitrix\Main\Context;
use Bitrix\Main\Loader;

/**
* Перехватчики событий.
*
* Для каждого события, возникающего в системе, которе необходимо отлавливать «Админ-хелпером», создаётся
* в данном классе одноимённый метод. Метод должен быть зарегистрирован в системе через установщик модуля.
*
* @author Nik Samokhvalov <nik@samokhvalov.info>
*/
class EventHandlers
{
/**
* Автоматическое подключение модуля в админке.
*
* Таки образом, исключаем необходимость прописывать в генераторах админки своих модулей
* подключение «Админ-хелпера».
*
* @throws \Bitrix\Main\LoaderException
*/
public static function onPageStart()
{
if (Context::getCurrent()->getRequest()->isAdminSection())
{
Loader::includeModule('digitalwand.admin_helper');
}
}
}
7 changes: 5 additions & 2 deletions lib/helper/AdminBaseHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use DigitalWand\AdminHelper\Widget\HelperWidget;
use Bitrix\Main\Entity\DataManager;
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Context;

Loader::includeModule('highloadblock');
Loc::loadMessages(__FILE__);
Expand Down Expand Up @@ -216,7 +217,7 @@ static public function getInterfaceSettings($viewName = '')
if (empty($viewName)) {
$viewName = static::$viewName;
}
return self::$interfaceSettings[static::$module][$viewName]['interface'];
return self::$interfaceSettings[static::getModule()][$viewName]['interface'];
}

/**
Expand Down Expand Up @@ -329,7 +330,9 @@ public static function getModel()
*/
static public function getModule()
{
return static::$module;
$request = Context::getCurrent()->getRequest();

return $request->get('module');
}

/**
Expand Down