Skip to main content

Ajouter Nova CKEditor

Plus d'information sur la documentation officiel : https://mostafaznv.gitbook.io/nova-ckeditor/getting-started/installation

Installer le package

console
composer require mostafaznv/nova-ckeditor

php artisan vendor:publish --provider="Mostafaznv\NovaCkEditor\FieldServiceProvider"

Préparer l'utilisation

Ici nous utiliserons d'autre package pour gérer les images et vidéos, il va donc falloir enlever quelques fichier fourni avec CKEditor pour ne pas surcharger le projet ou créer de conflit.

Supprimer ou modifier les relatifs aux images/videos

Supprimer les deux migrations :

arborescence
...
|-- database/
| |-- migrations/
| | |-- 2021_01_01_000000_create_images_table.php
| | |-- 2021_01_01_000000_create_videos_table.php
...

Modification du fichier config/nova-ckeditor.php pour enlever tout se qui relate aux images/vidéos.

config/nova-ckeditor.php
<?php
return [

/*
|--------------------------------------------------------------------------
| Toolbar
|--------------------------------------------------------------------------
|
| Customize Settings
|
*/

'toolbars' => [
'default' => 'toolbar-1',

'toolbar-1' => [
'height' => 400,

'content-lang' => 'fr',

'ui-language' => [
'name' => 'fr',

/**
* Example 1: asset('js/ckeditor-fa.js')
* Example 2: 'https://cdn.ckeditor.com/ckeditor5/34.0.0/decoupled-document/translations/fa.js'
*/
'script' => null
],

'should-not-group-when-full' => false,

'browser' => [
'image' => false,
'video' => false
],

// Permet d'ajouter des bouts de template blade situés dans views/ckeditor/test.blade.php par exemple
'snippets' => [
['name' => 'Test Inclusion blade', 'html' => 'ckeditor.table'],
],

'items' => [
//'textPartLanguage',
'heading',
'removeFormat',
/*'|',
'fontSize',
'fontFamily',
'fontColor',
'fontBackgroundColor',
'|',*/
/*'insertTable',
'imageBrowser',
'videoBrowser',
'|',*/
'bold',
'italic',
'bulletedList',
'numberedList',
'link',
'snippetBrowser',
'blockQuote',
'horizontalLine',
'|',
//'alignment',
'subscript',
'superscript',
'mediaEmbed',
//'underline',
//'strikethrough',
'code',
'codeBlock',
/*'|',
'outdent',
'indent',*/
'|',
'undo',
'redo',
'|',
'elementIdAttributes',
'htmlEmbed',
'sourceEditing'
],

'options' => [
'headings' => [
[
'model' => 'paragraph',
'title' => 'Paragraphe',
'class' => 'ck-heading_paragraph',
],
[
'model' => 'heading1',
'view' => 'h1',
'title' => 'Titre 1',
'class' => 'ck-heading_heading1',
],
[
'model' => 'heading2',
'view' => 'h2',
'title' => 'Titre 2',
'class' => 'ck-heading_heading2',
],
[
'model' => 'heading3',
'view' => 'h3',
'title' => 'Titre 3',
'class' => 'ck-heading_heading3',
],
[
'model' => 'heading4',
'view' => 'h4',
'title' => 'Titre 4',
'class' => 'ck-heading_heading4',
],
/*[
'model' => 'heading5',
'view' => 'h5',
'title' => 'Heading 5',
'class' => 'ck-heading_heading5',
],
[
'model' => 'heading6',
'view' => 'h6',
'title' => 'Heading 6',
'class' => 'ck-heading_heading6',
]*/
],

'fontFamily' => [
'supportAllValues' => false,
'options' => [
'default',
'Arial, Helvetica, sans-serif',
'Courier New, Courier, monospace',
'Georgia, serif',
'Lucida Sans Unicode, Lucida Grande, sans-serif',
'Tahoma, Geneva, sans-serif',
'Times New Roman, Times, serif',
'Trebuchet MS, Helvetica, sans-serif',
'Verdana, Geneva, sans-serif'
]
],

'fontSize' => [
'options' => [
'tiny',
'small',
'default',
'big',
'huge'
]
],

'fontColor' => [
'columns' => 5,
'colors' => [
[
'color' => 'hsl(0, 0%, 0%)',
'label' => 'Black'
],
[
'color' => 'hsl(0, 0%, 30%)',
'label' => 'Dim grey'
],
[
'color' => 'hsl(0, 0%, 60%)',
'label' => 'Grey'
],
[
'color' => 'hsl(0, 0%, 90%)',
'label' => 'Light grey'
],
[
'color' => 'hsl(0, 0%, 100%)',
'label' => 'White',
'hasBorder' => true
],
[
'color' => 'hsl(0, 75%, 60%)',
'label' => 'Red'
],
[
'color' => 'hsl(30, 75%, 60%)',
'label' => 'Orange'
],
[
'color' => 'hsl(60, 75%, 60%)',
'label' => 'Yellow'
],
[
'color' => 'hsl(90, 75%, 60%)',
'label' => 'Light green'
],
[
'color' => 'hsl(120, 75%, 60%)',
'label' => 'Green'
],
[
'color' => 'hsl(150, 75%, 60%)',
'label' => 'Aquamarine'
],
[
'color' => 'hsl(180, 75%, 60%)',
'label' => 'Turquoise'
],
[
'color' => 'hsl(210, 75%, 60%)',
'label' => 'Light blue'
],
[
'color' => 'hsl(240, 75%, 60%)',
'label' => 'Blue'
],
[
'color' => 'hsl(270, 75%, 60%)',
'label' => 'Purple'
]
]
],

'fontBackgroundColor' => [
'columns' => 5,
'colors' => [
[
'color' => 'hsl(0, 0%, 0%)',
'label' => 'Black'
],
[
'color' => 'hsl(0, 0%, 30%)',
'label' => 'Dim grey'
],
[
'color' => 'hsl(0, 0%, 60%)',
'label' => 'Grey'
],
[
'color' => 'hsl(0, 0%, 90%)',
'label' => 'Light grey'
],
[
'color' => 'hsl(0, 0%, 100%)',
'label' => 'White',
'hasBorder' => true
],
[
'color' => 'hsl(0, 75%, 60%)',
'label' => 'Red'
],
[
'color' => 'hsl(30, 75%, 60%)',
'label' => 'Orange'
],
[
'color' => 'hsl(60, 75%, 60%)',
'label' => 'Yellow'
],
[
'color' => 'hsl(90, 75%, 60%)',
'label' => 'Light green'
],
[
'color' => 'hsl(120, 75%, 60%)',
'label' => 'Green'
],
[
'color' => 'hsl(150, 75%, 60%)',
'label' => 'Aquamarine'
],
[
'color' => 'hsl(180, 75%, 60%)',
'label' => 'Turquoise'
],
[
'color' => 'hsl(210, 75%, 60%)',
'label' => 'Light blue'
],
[
'color' => 'hsl(240, 75%, 60%)',
'label' => 'Blue'
],
[
'color' => 'hsl(270, 75%, 60%)',
'label' => 'Purple'
]
]
],

'mediaEmbed' => []
],
]
],
];

Supprimer les models Image et Video :

arborescence
|-- app/
| |-- Models/
| | |-- Image.php
| | |-- Video.php
...

Et enfin supprimer le dossier Resources/ de Nova.

arborescence
|-- app/
| |-- Nova/
| | |-- Dashboards/
| | |-- Resources/
| | | |-- ...
| | |-- Resource.php
| | |-- ...

Utiliser le package

Pour une simple utilisation, on ajoute un nouveau field à la resources Nova.

Exemple :

app/Nova/Ma-resource.php
use Mostafaznv\NovaCkEditor\CkEditor;

...
class MaResource extends Resource {
...
public function fields(NovaRequest $request) {
...
CkEditor::make('Paragraphe', 'p')->stacked()->fullwidth()->hideFromIndex(),
...
}
...
}