Files
assetsmanifest-plugin/Plugin.php

131 lines
3.5 KiB
PHP
Raw Normal View History

2021-09-13 17:15:33 +03:00
<?php namespace Wpstudio\AssetsManifest;
use Backend;
2022-07-17 14:34:49 +03:00
use Cms\Classes\Theme;
2021-09-13 17:15:33 +03:00
use System\Classes\PluginBase;
2022-07-17 14:34:49 +03:00
use Wpstudio\AssetsManifest\Classes\Bundlers\Bundler;
use Wpstudio\AssetsManifest\Classes\Bundlers\ViteBundler;
2022-07-17 14:34:49 +03:00
use Wpstudio\AssetsManifest\Classes\ManifestReader;
use Wpstudio\AssetsManifest\Classes\TwigFilters;
2022-07-17 14:34:49 +03:00
use Config;
2021-09-13 17:15:33 +03:00
/**
* assetsmanifest Plugin Information File
*/
class Plugin extends PluginBase
{
/**
* Returns information about this plugin.
*
* @return array
*/
public function pluginDetails()
{
return [
'name' => 'Assets manifest',
'description' => 'Assets with manifest.json',
2021-09-13 17:15:33 +03:00
'author' => 'wpstudio',
'icon' => 'icon-leaf'
];
}
/**
* Register method, called when the plugin is first registered.
*
* @return void
*/
public function register()
{
2022-07-17 14:34:49 +03:00
app()->singleton(Bundler::class, Config::get('wpstudio.assetsmanifest::bundler'));
2021-09-13 17:15:33 +03:00
if (Config::get('wpstudio.assetsmanifest::vite_dev_enabled') != ViteBundler::class ||
!Config::get('wpstudio.assetsmanifest::vite_dev_enabled')
) {
app()->singleton(ManifestReader::class, fn() => new ManifestReader(
Theme::getActiveTheme()->getPath(
sprintf(
'%s/%s/manifest.json',
Theme::getActiveTheme()->getDirName(),
Config::get('wpstudio.assetsmanifest::vite_path_build')
)
),
));
}
2021-09-13 17:15:33 +03:00
}
/**
* Boot method, called right before the request route.
*
* @return array
*/
public function boot()
{
}
/**
* Registers any front-end components implemented in this plugin.
*
* @return array
*/
public function registerComponents()
{
return [
2022-07-17 14:34:49 +03:00
2021-09-13 17:15:33 +03:00
];
}
/**
* Registers any back-end permissions used by this plugin.
*
* @return array
*/
public function registerPermissions()
{
return []; // Remove this line to activate
return [
'wpstudio.assetsmanifest.some_permission' => [
'tab' => 'assetsmanifest',
'label' => 'Some permission'
],
];
}
/**
* Registers back-end navigation items for this plugin.
*
* @return array
*/
public function registerNavigation()
{
return []; // Remove this line to activate
return [
'assetsmanifest' => [
'label' => 'assetsmanifest',
'url' => Backend::url('wpstudio/assetsmanifest/mycontroller'),
'icon' => 'icon-leaf',
'permissions' => ['wpstudio.assetsmanifest.*'],
'order' => 500,
],
];
}
public function registerMarkupTags()
{
return [
'filters' => [
2022-07-17 14:34:49 +03:00
'encoreAsset' => [TwigFilters::class, 'encoreAsset'],
],
'functions' => [
2022-07-17 14:34:49 +03:00
'encoreAsset' => [TwigFilters::class, 'encoreAsset'],
'hmrAssets' => [TwigFilters::class, 'hmrAssets'],
2022-07-17 14:34:49 +03:00
'viteEntrypointStyles' => [TwigFilters::class, 'viteEntrypointStyles'],
'viteEntrypointAssets' => [TwigFilters::class, 'viteEntrypointAssets'],
'viteDevClientScriptTag' => [TwigFilters::class, 'viteDevClientScriptTag'],
],
];
}
2021-09-13 17:15:33 +03:00
}