Поля

TinyMce

Расширяет Textarea

  • имеет те же функции

Создание

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

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

'tinymce' => [
'token' => 'ВАШ_ТОКЕН'
]
use MoonShine\Fields\TinyMce;
 
//...
 
public function fields(): array
{
return [
TinyMce::make('Описание')
];
}
 
//...

tinymce tinymce_dark

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

Язык

locale(string $locale)

Плагины

plugins(string|array $plugins)
addPlugins(string|array $plugins)
removePlugins(string|array $plugins)

Меню

menubar(string $menubar)

Панель инструментов

toolbar(string $toolbar)
addToolbar(string $toolbar)

Опции

addConfig(string $name, mixed $value)

Комментарии Tiny

commentAuthor(string $commentAuthor)

Теги

mergeTags(array $mergeTags)
use MoonShine\Fields\TinyMce;
 
//...
 
public function fields(): array
{
return [
TinyMce::make('Описание')
// Переопределение набора плагинов
->plugins('anchor autoresize')
// Добавление плагинов к базовому набору
->addPlugins('code codesample')
// Удаление плагинов из базового набора
->removePlugins('autoresize')
// Переопределение набора панели инструментов
->toolbar('undo redo | blocks fontfamily fontsize')
// Добавление панели инструментов к базовому набору
->addToolbar('code codesample')
// Изменение имени автора для плагина tinycomments
->commentAuthor('Данил Шутский')
// Теги
->mergeTags([
['value' => 'tag', 'title' => 'Заголовок']
])
// Добавление конфигурации
->addConfig('codesample_languages', [['text' => 'HTML/XML', 'value' => 'markup']])
->addConfig('force_br_newlines', true)
// Переопределение текущей локали
->locale('ru'),
];
}
 
//...

Файлы переводов находятся в директории 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('Описание')
->addConfig('extended_valid_elements', 'script[src|async|defer|type|charset]')
];
}
 
//...

Файловый менеджер

Если вы хотите использовать файловый менеджер в 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',
]