136 lines
5.0 KiB
PHP
136 lines
5.0 KiB
PHP
<?php namespace Lovata\Toolbox;
|
|
|
|
use Lang;
|
|
use System\Classes\PluginBase;
|
|
use Lovata\Toolbox\Components\Pagination;
|
|
|
|
use Lovata\Toolbox\Classes\Console\ToolBoxHelper;
|
|
use Lovata\Toolbox\Classes\Console\CreateAll;
|
|
use Lovata\Toolbox\Classes\Console\CreatePlugin;
|
|
use Lovata\Toolbox\Classes\Console\CreateModel;
|
|
use Lovata\Toolbox\Classes\Console\CreateModelColumn;
|
|
use Lovata\Toolbox\Classes\Console\CreateModelField;
|
|
use Lovata\Toolbox\Classes\Console\CreateController;
|
|
use Lovata\Toolbox\Classes\Console\CreateMigration;
|
|
use Lovata\Toolbox\Classes\Console\CreateComponentData;
|
|
use Lovata\Toolbox\Classes\Console\CreateComponentList;
|
|
use Lovata\Toolbox\Classes\Console\CreateComponentPage;
|
|
use Lovata\Toolbox\Classes\Console\CreateItem;
|
|
use Lovata\Toolbox\Classes\Console\CreateCollection;
|
|
use Lovata\Toolbox\Classes\Console\CreateEventModel;
|
|
use Lovata\Toolbox\Classes\Console\CreateStore;
|
|
use Lovata\Toolbox\Classes\Console\CreateExtendBackendMenuHandler;
|
|
use Lovata\Toolbox\Classes\Console\CreateExtendModelFieldsHandler;
|
|
use Lovata\Toolbox\Classes\Console\CreateExtendModelColumnsHandler;
|
|
|
|
/**
|
|
* Class Plugin
|
|
* @package Lovata\Toolbox
|
|
* @author Andrey Kharanenka, a.khoronenko@lovata.com, LOVATA Group
|
|
*/
|
|
class Plugin extends PluginBase
|
|
{
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function registerComponents()
|
|
{
|
|
return [
|
|
Pagination::class => 'Pagination',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function registerSettings()
|
|
{
|
|
return [
|
|
'config' => [
|
|
'label' => 'lovata.toolbox::lang.field.site_settings',
|
|
'icon' => 'icon-cogs',
|
|
'description' => 'lovata.toolbox::lang.field.site_settings_description',
|
|
'class' => 'Lovata\Toolbox\Models\Settings',
|
|
'order' => 300,
|
|
'permissions' => [
|
|
'toolbox-menu-settings',
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Extending twig
|
|
* @return array
|
|
*/
|
|
public function registerMarkupTags()
|
|
{
|
|
return [
|
|
'functions' => [
|
|
'choice' => function ($sLangString, $iNumber) {
|
|
return $this->twigChoice($sLangString, $iNumber);
|
|
},
|
|
],
|
|
'filters' => [
|
|
'phone' => [$this, 'applyPhoneFilter'],
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Plugin boot method
|
|
*/
|
|
public function boot()
|
|
{
|
|
if (env('APP_ENV') == 'testing') {
|
|
$this->app->bind(\Lovata\Toolbox\Classes\Item\TestItem::class, \Lovata\Toolbox\Classes\Item\TestItem::class);
|
|
$this->app->bind(\Lovata\Toolbox\Classes\Collection\TestCollection::class, \Lovata\Toolbox\Classes\Collection\TestCollection::class);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Register commands
|
|
*/
|
|
public function register()
|
|
{
|
|
$this->registerConsoleCommand('toolbox:helper', ToolBoxHelper::class);
|
|
$this->registerConsoleCommand('toolbox:create.all', CreateAll::class);
|
|
$this->registerConsoleCommand('toolbox:create.plugin', CreatePlugin::class);
|
|
$this->registerConsoleCommand('toolbox:create.model', CreateModel::class);
|
|
$this->registerConsoleCommand('toolbox:create.model.columns', CreateModelColumn::class);
|
|
$this->registerConsoleCommand('toolbox:create.model.fields', CreateModelField::class);
|
|
$this->registerConsoleCommand('toolbox:create.controller', CreateController::class);
|
|
$this->registerConsoleCommand('toolbox:create.migration', CreateMigration::class);
|
|
$this->registerConsoleCommand('toolbox:create.component.data', CreateComponentData::class);
|
|
$this->registerConsoleCommand('toolbox:create.component.list', CreateComponentList::class);
|
|
$this->registerConsoleCommand('toolbox:create.component.page', CreateComponentPage::class);
|
|
$this->registerConsoleCommand('toolbox:create.item', CreateItem::class);
|
|
$this->registerConsoleCommand('toolbox:create.collection', CreateCollection::class);
|
|
$this->registerConsoleCommand('toolbox:create.event.model', CreateEventModel::class);
|
|
$this->registerConsoleCommand('toolbox:create.store', CreateStore::class);
|
|
$this->registerConsoleCommand('toolbox:create.event.menu', CreateExtendBackendMenuHandler::class);
|
|
$this->registerConsoleCommand('toolbox:create.event.fields', CreateExtendModelFieldsHandler::class);
|
|
$this->registerConsoleCommand('toolbox:create.event.columns', CreateExtendModelColumnsHandler::class);
|
|
}
|
|
|
|
/**
|
|
* Apply Lang::choice method to string
|
|
* @param string $sLangString
|
|
* @param int $iNumber
|
|
* @return string
|
|
*/
|
|
protected function twigChoice($sLangString, $iNumber)
|
|
{
|
|
return Lang::choice($sLangString, $iNumber);
|
|
}
|
|
|
|
/**
|
|
* Deletes all characters from string except digits and plus
|
|
* @param $sValue
|
|
* @return string
|
|
*/
|
|
public function applyPhoneFilter($sValue) {
|
|
return preg_replace("%[^\d\+]%", '', $sValue);
|
|
}
|
|
}
|