TinyMce

Наследует Textarea * имеет те же возможности

# Make

TinyMce - один из самых популярных веб-редакторов, для использования его в админ-панели MoonShine существует одноименное поле.

Перед тем как воспользоваться данным полем, необходимо зарегистрироваться на сайте на Tiny.Cloud , получить токен и добавить его в конфиг config/moonshine.php.

'tinymce' => [
'token' => 'YOUR_TOKEN'
]
use MoonShine\Fields\TinyMce;
 
//...
 
public function fields(): array
{
return [
TinyMce::make('Description')
];
}
 
//...

# Конфигурация

Language
locale(string $locale)
Plugins
plugins(string|array $plugins)
addPlugins(string|array $plugins)
removePlugins(string|array $plugins)
Menubar
menubar(string $menubar)
Toolbar
toolbar(string $toolbar)
addToolbar(string $toolbar)
Options
addConfig(string $name, mixed $value)
Tiny Comments
commentAuthor(string $commentAuthor)
Tags
mergeTags(array $mergeTags)
use MoonShine\Fields\TinyMce;
 
//...
 
public function fields(): array
{
return [
TinyMce::make('Description')
// Переопределить набор плагинов
->plugins('anchor autoresize')
// Добавление плагинов в базовый набор
->addPlugins('code codesample')
// Удаление плагинов из базовый набор
->removePlugins('autoresize')
// Переопределить набор toolbar
->toolbar('undo redo | blocks fontfamily fontsize')
// Добавление toolbar в базовый набор
->addToolbar('code codesample')
// Для изменения имени автора для плагина tinycomments
->commentAuthor('Danil Shutsky')
// Теги
->mergeTags([
['value' => 'tag', 'title' => 'Title']
])
// Добавление конфигурации
->addConfig('codesample_languages', [['text' => 'HTML/XML', 'value' => 'markup']])
->addConfig('force_br_newlines', true)
// Переопределение текущей локали
->locale('en'),
];
}
 
//...

Файлы переводов размещаются в директории public/vendor/moonshine/libs/tinymce/langs.

# Дополнительные настройки

Метод addConfig() позволяет расширенно сконфигурировать TinyMce.

addConfig(string $name, bool|int|float|string $value);
use MoonShine\Fields\TinyMce;
 
//...
 
public function fields(): array
{
return [
TinyMce::make('Description')
->addConfig('extended_valid_elements', 'script[src|async|defer|type|charset]')
];
}
 
//...

# File manager

Если вы хотите использовать файловый менеджер в TinyMce, то вам необходимо установить пакет Laravel FileManager .

Установка
composer require unisharp/laravel-filemanager
 
php artisan vendor:publish --tag=lfm_config
php artisan vendor:publish --tag=lfm_public

Обязательно установить флаг 'use_package_routes' в конфиге lfm в false, иначе кеширование роутов будет вызывать ошибку.

return [
// ...
 
'use_package_routes' => false,
 
// ...
];
Файл маршрутов

Создайте файл маршрутов, например routes/moonshine.php и зарегистрируйте маршруты LaravelFilemanager.

use Illuminate\Support\Facades\Route;
use UniSharp\LaravelFilemanager\Lfm;
 
Route::prefix('laravel-filemanager')->group(function () {
Lfm::routes();
});
Регистрация файла

Зарегистрируйте созданный файл маршрутов в app/Providers/RouteServiceProvider.php.

Файл маршрутов обязательно должен быть в группе middleware moonshine!

// ...
 
public function boot()
{
// ...
 
$this->routes(function () {
// ...
 
Route::middleware('moonshine')
->namespace($this->namespace)
->group(base_path('routes/moonshine.php'));
});
}
 
// ...

Для того чтобы разрешить доступ только авторизованным в админ-панели пользователям необходимо добавить middleware MoonShine\Http\Middleware\Authenticate.

use MoonShine\Http\Middleware\Authenticate;
 
// ...
 
public function boot()
{
// ...
 
$this->routes(function () {
// ...
 
Route::middleware(['moonshine', Authenticate::class])
->namespace($this->namespace)
->group(base_path('routes/moonshine.php'));
});
}
 
// ...
Конфигурация

В файле конфигурации config/moonshine.php необходимо добавить префикс.

'tinymce' => [
'file_manager' => 'laravel-filemanager',
]