• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language
    PHP
  • Created about 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Symfony bundle for Froala WYSIWYG HTML Rich Text Editor.

KMSFroalaEditorBundle

Package version Build Status Downloads PHP Version Licence

Introduction

This bundle aims to easily integrate & use the Froala editor in Symfony 4.4+/5.0+.

If you want to use it with Symfony < 4.3, see v2 docs. v2.x is compatible with Symfony 2.x to 4.x, but some deprecations are not fixed and static files are integrated to the bundle.

There's also a v3 version available compatible with Symfony 4.3+/5.0+ but the form type options are not prefixed with froala_, which is the major reason for a v4 of the bundle.

The changelogs are available here:

Table of Contents

  1. Migration to Froala Editor bundle v4 from v3
  2. Installation
    1. Step 1: Install the bundle using composer
    2. Step 2: Add the bundle to your bundles.php
    3. Step 3: Import routes
    4. Step 4: Load Twig form widget
    5. Step 5: Configure the bundle
      1. Required
      2. Other options
    6. Step 6: Add Froala to your form
    7. Step 7: Install asset files
    8. Step 8: Display editor content
      1. Manually
      2. Using the Twig extension
    9. Step 9: Profiles (custom configurations)
  3. More configuration
    1. Plugins
    2. Concept: Image upload/manager
    3. Concept: File upload
    4. Concept: Autosave
    5. Webpack Encore configuration
  4. TODO
  5. Licence
  6. Contributing

Migration to Froala Editor bundle v4 from v3

It now supports only Symfony 4.4+ & 5.0+.

If you somehow override/inherit a class from the bundle, be careful as some parameter & return types have been added.

All form type options must now be prefixed by froala_:

// Before
$builder->add('field', FroalaEditorType::class, [
    'toolbarButtons' => [...],
]);

// After
$builder->add('field', FroalaEditorType::class, [
    'froala_toolbarButtons' => [...],
]);

Installation

Step 1: Install the bundle using composer

composer require kms/froala-editor-bundle

Note: if you install the bundle using Symfony Flex & accepted the recipe, you can skip steps 2 to 4.

Step 2: Add the bundle to your bundles.php

// config/bundles.php
return [
    //..
    KMS\FroalaEditorBundle\KMSFroalaEditorBundle::class => ['all' => true],
];

Step 3: Import routes

# config/routes.yaml 
kms_froala_editor:
    resource: '@KMSFroalaEditorBundle/Resources/config/routing.yml'
    prefix:   /froalaeditor

Step 4: Load Twig form widget

# In config/packages/twig.yaml
twig:
    form_themes:
        - '@KMSFroalaEditor/Form/froala_widget.html.twig'

Step 5: Configure the bundle

Required

First, you have to select your language, other settings are optional (see below).

# config/packages/kms_froala_editor.yaml 
kms_froala_editor:
    language: 'nl'

Other options

All Froala options (list provided here) are supported. Just add the option name (prefixed with froala_ if it's in your form type) with your value. If you want to keep Froala default value, don't provide anything in your config file. For options which require an array, provide a value array. For options which require an object, provide a key/value array.

Note that some options need some plugins (all information provided in the Froala documentation).

Example for each option type below:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    toolbarInline: true
    tableColors: [ "#FFFFFF", "#FF0000" ]
    saveParams: { "id" : "myEditorField" }

To provide a better integration with Symfony, some custom options are added, see the full list below:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # Froala licence number if you want to use a purchased licence.
    serialNumber: "XXXX-XXXX-XXXX"

    # Disable CodeMirror inclusion.
    includeCodeMirror: false

    # Disable Font Awesome inclusion.
    includeFontAwesome: false

    # Disable all bundle javascripts inclusion (not concerning CodeMirror).
    # Usage: if you are using Grunt or other and you want to include yourself all scripts. 
    includeJS: false

    # Disable all bundle CSS inclusion (not concerning Font Awesome nor CodeMirror).
    # Usage: if you are using Grunt or other and you want to include yourself all stylesheets. 
    includeCSS: false

    # Change the froala base path.
    # Useful eg. when you load it from your own public directory.
    # Defaults to "/bundles/kmsfroalaeditor/froala_editor"
    basePath: "/my/custom/path".

    # Custom JS file.
    # Usage: add custom plugins/buttons...
    customJS: "/custom/js/path"

Step 6: Add Froala to your form

Just add a Froala type in your form:

use KMS\FroalaEditorBundle\Form\Type\FroalaEditorType;

$builder->add('field', FroalaEditorType::class);

All configuration items can be overridden:

$builder->add('field', FroalaEditorType::class, [
    'froala_language'      => 'fr',
    'froala_toolbarInline' => true,
    'froala_tableColors'   => ['#FFFFFF', '#FF0000'],
    'froala_saveParams'    => ['id' => 'myEditorField'],
]);

Step 7: Install asset files

To install the asset files, there is froala:install command that downloads the last version available of Froala Editor and puts it by default in the vendor/kms/froala-editor-bundle/src/Resources/public/froala_editor/ directory:

bin/console froala:install

There are a few arguments/options available:

  • First (and only) argument (optional): the absolute path where the files will be put after download. Defaults to vendor/kms/froala-editor-bundle/src/Resources/public/froala_editor/.
  • Option tag: the version of Froala that will be installed (eg. v3.0.1). Defaults to master.
  • Option clear (no value expected, disabled by default): Allow the command to clear a previous install if the path already exists.

After you launched the install command, you have to link assets, eg.:

bin/console assets:install --symlink public

Step 8: Display editor content

Manually

To preserve the look of the edited HTML outside of the editor you have to include the following CSS files:

<!-- CSS rules for styling the element inside the editor such as p, h1, h2, etc. -->
<link href="../css/froala_style.min.css" rel="stylesheet" type="text/css" />

Also, you should make sure that you put the edited content inside an element that has the class fr-view:

<div class="fr-view">
    {{ myContentHtml|raw }}
</div>

Using the Twig extension

To use the Twig extension, simply call the display function (note that the front CSS file is not included if the parameter includeCSS is false):

{{ froala_display(myContentHtml) }}

Step 9: Profiles (custom configurations)

You can define several configuration profiles that will be reused in your forms, without repeating these configurations.

When using a profile, the root configuration options will be used & overridden:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    heightMax: 400
    attribution: false
    profiles:
        profile_1:
            heightMax: 500
use KMS\FroalaEditorBundle\Form\Type\FroalaEditorType;

$builder->add('field', FroalaEditorType::class, [
    'froala_profile' => 'profile_1',
]);

In this example, profile_1 profile will have these configuration options set:

  • heightMax: 500
  • attribution: false

More configuration

Plugins

All Froala plugins are enabled, but if you don't need one of them, you can disable some plugins...

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # Disable some plugins.
    pluginsDisabled: [ "save", "fullscreen" ]

... or chose only plugins to enable:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # Enable only some plugins.
    pluginsEnabled: [ "image", "file" ]

Plugins can be enabled/disabled for each Froala instance by passing the same array in the form builder.

Concept: Image upload/manager

This bundle provides an integration of the Froala image upload concept to store your images on your own web server (see custom options for configuration like upload folder).

If you want to use your own uploader, you can override the configuration (if you need to do that, please explain me why to improve the provided uploader).

To provide a better integration with Symfony, some custom options are added, see the full list below:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # The image upload folder in your /web directory.
    # Default: "/upload".
    imageUploadFolder: "/my/upload/folder"

    # The image upload URL base.
    # Usage: if you are using URL rewritting for your assets.
    # Default: same value as provided as folder.
    imageUploadPath: "/my/upload/path"

Concept: File upload

This bundle provides an integration of the Froala file upload concept to store your files on your own web server (see custom options for configuration like upload folder).

If you want to use your own uploader, you can override the configuration (if you need to do that, please explain me why to improve the provided uploader).

To provide a better integration with Symfony, some custom options are added, see the full list below:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # The file upload folder in your /web directory.
    # Default: "/upload".
    fileUploadFolder: "/my/upload/folder"

    # The file upload URL base.
    # Usage: if you are using URL rewritting for your assets.
    # Default: same value as provided as folder.
    fileUploadPath: "/my/upload/path"

    # Your public directory, from the root directory.
    # Default: "/public"
    publicDir: "/home"

Concept: Autosave

The Froala autosave concept to automatically request a save action on your server is working, just enter the correct options in your configuration file:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    saveURL: "my_save_route"
    saveInterval: 2500
    saveParam: "content"

To provide a better integration with Symfony, some custom options are added, see the full list below:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    # Add some parameters to your save URL.
    # Usage: if you need parameters to generate your save action route (see save explaination below).
    # Default: null.
    saveURLParams: { "id" : "myId" }

You can add some parameters in your save route (see custom options).

Webpack Encore configuration

If you want to load Froala asset files using npm/yarn and Webpack Encore, here's how to do it:

import FroalaEditor from 'froala-editor';
import 'froala-editor/css/froala_editor.pkgd.min.css';
import 'froala-editor/css/froala_style.min.css';

// Load your languages
import 'froala-editor/js/languages/fr.js';

// Load all plugins, or specific ones
import 'froala-editor/js/plugins.pkgd.min.js';
import 'froala-editor/css/plugins.pkgd.min.css';

window.FroalaEditor = FroalaEditor;

function froalaDisplayError(p_editor, error ) {
    alert(`Error ${error.code}: ${error.message}`);
}

window.froalaDisplayError = froalaDisplayError;

Now you can disable Froala bundle CSS/JS inclusion:

# config/packages/kms_froala_editor.yaml
kms_froala_editor:
    includeJS: false
    includeCSS: false

Don't forget to import the generated Encore CSS/JS files in your HTML if needed.

TODO

  • Add some tests

Licence

This bundle provides an integration of the WYSIWYG Froala Editor commercial version. Please read the Froala licence agreement and go to the pricing page if you don't have a licence.

Contributing

Feel free to contribute, like sending pull requests to add features/tests.

Note there are a few helpers to maintain code quality, that you can run using these commands:

composer cs:dry # Code style check
composer phpstan # Static analysis
vendor/bin/simple-phpunit # Run tests

More Repositories

1

design-blocks

A set of 170+ Bootstrap based design blocks ready to be used to create clean modern websites.
HTML
13,506
star
2

wysiwyg-editor

The next generation Javascript WYSIWYG HTML Editor.
CSS
5,259
star
3

angular-froala-wysiwyg

Angular 4, 5, 6, 7, 8 and 9 plugin for Froala WYSIWYG HTML Rich Text Editor.
TypeScript
732
star
4

vue-froala-wysiwyg

Vue component for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
632
star
5

react-froala-wysiwyg

React component for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
562
star
6

wysiwyg-rails

Ruby gem for Froala jQuery WYSIWYG HTML Rich Text Editor.
CSS
465
star
7

angular-froala

Angular.js bindings for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
306
star
8

django-froala-editor

Package to integrate Froala WYSIWYG HTML rich text editor with Django.
CSS
283
star
9

nova-froala-field

A Laravel Nova Froala WYSIWYG Editor Field.
PHP
113
star
10

react-froala-design-blocks

React implementation for Froala Design Blocks.
JavaScript
108
star
11

yii2-froala-editor

Yii 2 widget for the Froala WYSIWYG HTML Editor.
PHP
103
star
12

meteor-froala

Meteor bindings for the Froala WYSIWYG HTML Editor.
CSS
68
star
13

ember-froala-editor

Ember component for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
68
star
14

vue-froala-design-blocks

Vue JS implementation for Froala Design Blocks.
Vue
60
star
15

design-framework-demo

CSS
59
star
16

wordpress-froala-wysiwyg

Wordpress plugin for Froala WYSIWYG HTML Editor.
CSS
42
star
17

wysiwyg-editor-php-sdk

PHP SDK to ease the integration of Froala WYSIWYG Editor on server side.
PHP
40
star
18

wysiwyg-editor-release

Froala wysiwyg editor release
HTML
30
star
19

wysiwyg-editor-dotnet-sdk

.NET SDK to ease the integration of Froala WYSIWYG Editor on server side.
JavaScript
29
star
20

aurelia-froala-editor

Aurelia plugin for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
28
star
21

ember-froala

[DEPRECATED] Please use https://github.com/froala/ember-froala-editor instead.
JavaScript
28
star
22

angular-froala-design-blocks

Angular implementation for Froala Design Blocks.
HTML
27
star
23

froala-reactive

A Meteor reactive template wrapper around Froala WYSIWYG HTML Editor.
JavaScript
25
star
24

wysiwyg-editor-node-sdk

Node.JS SDK to ease the integration of Froala WYSIWYG Editor on server side.
JavaScript
25
star
25

froala-pages

HTML
21
star
26

wysiwyg-editor-v1

A flat designed jQuery WYSIWYG Rich Text Editor based on HTML5.
JavaScript
21
star
27

wysiwyg-editor-python-sdk

Python SDK to ease the integration of Froala WYSIWYG Editor on server side.
Python
21
star
28

Craft-3-Froala-WYSIWYG

Craft 3 CMS plugin for Froala WYSIWYG HTML Rich Text Editor.
PHP
16
star
29

Craft-Froala-WYSIWYG

Craft CMS plugin for Froala WYSIWYG HTML Rich Text Editor.
JavaScript
16
star
30

wysiwyg-editor-java-sdk

Java SDK to ease the integration of Froala WYSIWYG Editor on server side.
HTML
15
star
31

editor-php-sdk-example

Example for using the Froala Editor PHP SDK
PHP
11
star
32

wysiwyg-cake2

CakePHP Plugin for Froala Javascript WYSIWYG Rich Text Editor.
CSS
11
star
33

knockout-froala

Knockout.js binding for Froala WYSIWYG HTML Rich Text Editor
Shell
10
star
34

wysiwyg-editor-ruby-sdk

Ruby
9
star
35

wysiwyg-cake

CakePHP Plugin for Froala Javascript WYSIWYG Rich Text Editor.
CSS
8
star
36

editor-ruby-sdk-example

Ruby
7
star
37

vue-froalacharts

Simple and lightweight official Vue component for FroalaCharts.
JavaScript
5
star
38

froala-gatsby

JavaScript
3
star
39

froala-editor-nuget

Nuget package for Froala WYSIWYG Editor
3
star
40

angular-froala-systemjs-demo

A quick starter to use angular-froala with system js
TypeScript
2
star
41

froala-image-uploader-example

Sample PHP application demo for Froala Image Uploader
PHP
2
star
42

froalacharts

JavaScript
2
star
43

.github

1
star
44

react-froalacharts-component

Simple and lightweight official React component for FroalaCharts.
JavaScript
1
star
45

ember-froalacharts

Simple and lightweight official Ember component for FroalaCharts.
JavaScript
1
star
46

xt-themes

JavaScript
1
star