Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 17 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,23 @@
# Quill WYSIWYG Pimcore Bundle
This bundle provides the [Quill 2.x](https://quilljs.com/) WYSIWYG editor integration for Pimcore.
This includes the WYSIWYG for Documents, Data Objects and Shared Translations.
---
title: Quill WYSIWYG Editor
---

## Installation
See [Installation](./doc/00_Installation/README.md)
# Quill WYSIWYG Editor

## Migration to Quill
See [Migration](./doc/01_Migration_to_Quill.md)
Integrates the [Quill 2.x](https://quilljs.com/) WYSIWYG editor into Pimcore.
Quill provides rich-text editing for documents, data objects, and shared translations.

## Configuration
## Features

Available configuration options can be found here: [config options](https://quilljs.com/docs/configuration/)
- Rich-text editing based on [Quill 2.x](https://quilljs.com/) with built-in
undo/redo and HTML source editing
- WYSIWYG support for document editables, data object fields, and shared translations
- Per-field toolbar configuration through Twig editables
- Global editor defaults through Symfony configuration (`pimcore_studio_ui`)

### Themes
## Documentation Overview

Available themes and how to configure it can be found here: [themes](https://quilljs.com/docs/customization/themes)

## Examples

### Basic usage

`wysiwyg` helper doesn't require any additional configuration options.
The following code customize the toolbar.

```twig
<section id="marked-content">
{{ pimcore_wysiwyg("specialContent", {
modules: {
toolbar: {
container: [
[{ header: [1, 2, 3, 4, 5, 6, false] }]
]
}
}
})
}}
</section>
```

### Custom configuration for Quill

A list of configuration options you can find in the [Quill toolbar documentation](https://quilljs.com/docs/modules/toolbar).
In addition to this you can also configure `undo`, `redo` and `html-edit`.

The WYSIWYG editable allows us to specify the toolbar.
If you have to limit styling options (for example only basic styles like `<b>` tag and lists would be allowed), just use `toolbar` option.

```twig
<section id="marked-content">
{{ pimcore_wysiwyg("specialContent", {
modules: {
toolbar: {
container: [
['undo', 'redo'],
[{ header: [1, 2, 3, 4, 5, 6, false] }],
['html-edit']
]
}
}
})
}}
</section>
```

Now the user can use only the limited toolbar.

##### Global Configuration
See [admin-ui-classic-bundle](./doc/02_Global_Configuration_Admin_Ui.md)
See [studio-ui-bundle](./doc/03_Global_Configuration_Studio_Ui.md)
- [Installation](./doc/00_Installation/README.md)
- [Configuration](./doc/02_Configuration.md) - toolbar options, global defaults, and themes
- [Migration from TinyMCE](./doc/03_Migration_to_Quill.md)
- [Upgrade Information](./doc/00_Installation/01_Upgrade.md)
28 changes: 24 additions & 4 deletions doc/00_Installation/01_Upgrade.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
# Upgrade Information
---
title: Upgrade Information
---

Following steps are necessary during updating to newer versions.
# Upgrade Information

## Upgrade to 2026.1.0
- Added support to `PHP` `8.5`.
- Removed support to `PHP` `8.3` and Symfony `v6`.

### PHP / Symfony Requirements

- Added support for PHP 8.5
- Dropped PHP 8.3 and Symfony 6 support — upgrade to PHP 8.4+ and Symfony 7 before updating to this version

### Removed Admin Classic UI (ExtJS) Support

The bundle no longer supports the Pimcore Admin Classic UI (ExtJS). All ExtJS-related
code and assets have been removed:

- `PimcoreQuillBundle` no longer implements `PimcoreBundleAdminClassicInterface` and no longer uses `BundleAdminClassicTrait`
- Removed methods: `getJsPaths()`, `getCssPaths()`, `getEditmodeCssPaths()`, `getEditmodeJsPaths()` (from `BundleAdminClassicTrait`)
- All classic admin public assets have been removed:
- `public/js/editor.js`
- `public/css/editor.css` and icon assets under `public/css/icons/`
- Quill library assets under `public/quill/` and `public/quill-table-better/`

The bundle now exclusively supports the Pimcore Studio UI. `pimcore/studio-ui-bundle`
and `pimcore/studio-backend-bundle` are now required dependencies.
51 changes: 33 additions & 18 deletions doc/00_Installation/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,33 @@
# Installation

```bash
composer require pimcore/quill-bundle
```

Make sure the bundle is enabled in the `config/bundles.php` file. The following lines should be added:

```php
use Pimcore\Bundle\QuillBundle\PimcoreQuillBundle;
// ...

return [
// ...
PimcoreQuillBundle::class => ['all' => true],
// ...
];
```
---
title: Installation
---

# Installation

## Requirements

- PHP 8.5
- Pimcore 2026.1 or later
- Studio UI bundle 0.12.9 or later

## Install

```bash
composer require pimcore/quill-bundle
```

Enable the bundle in `config/bundles.php`:

```php
use Pimcore\Bundle\QuillBundle\PimcoreQuillBundle;
// ...

return [
// ...
PimcoreQuillBundle::class => ['all' => true],
// ...
];
```

For toolbar and theme options, see [Configuration](../02_Configuration.md).
If you are replacing TinyMCE, see [Migration from TinyMCE](../03_Migration_to_Quill.md).
34 changes: 0 additions & 34 deletions doc/01_Migration_to_Quill.md

This file was deleted.

110 changes: 110 additions & 0 deletions doc/02_Configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: Configuration
---

# Configuration

The Quill editor supports configuration through Pimcore editables (per-field) and
Symfony configuration (global defaults).

## Default Toolbar

When no custom toolbar is configured, the editor uses this default:

```
undo, redo | H1-H6 headings | bold, italic | alignment |
ordered list, bullet list | indent, outdent | blockquote |
link, table | clean, html-edit
```

## Toolbar Configuration in Twig

The `pimcore_wysiwyg` editable accepts Quill configuration options directly.
Use the `modules.toolbar.container` array to define which toolbar controls are available.

### Basic example

```twig
{{ pimcore_wysiwyg("content", {
modules: {
toolbar: {
container: [
[{ header: [1, 2, 3, 4, 5, 6, false] }]
]
}
}
})
}}
```

### Toolbar with undo, redo, and HTML editing

In addition to [standard Quill toolbar options](https://quilljs.com/docs/modules/toolbar),
the bundle provides `undo`, `redo`, and `html-edit` controls.

```twig
{{ pimcore_wysiwyg("content", {
modules: {
toolbar: {
container: [
['undo', 'redo'],
[{ header: [1, 2, 3, 4, 5, 6, false] }],
['html-edit']
]
}
}
})
}}
```

Controls not listed in the `container` array are excluded from the toolbar.

## Global Configuration

Global WYSIWYG defaults are configured under the `pimcore_studio_ui` extension
provided by the Studio UI bundle. The Quill bundle does not define its own
configuration namespace.

These defaults apply to all WYSIWYG fields unless overridden per-field in Twig.

```yaml
# config/packages/pimcore_studio_ui.yaml
pimcore_studio_ui:
wysiwyg:
defaultEditorConfig:
dataObject:
modules:
toolbar:
container:
- [{ header: [1, 2, 3, 4, 5, 6, false] }]
document:
modules:
toolbar:
container:
- [{ header: [1, 2, 3, 4, 5, 6, false] }]
```

- `dataObject` - applies to WYSIWYG fields in data object classes
- `document` - applies to WYSIWYG editables in documents
- Per-field configuration in Twig overrides these global defaults
- Shared translations use the Quill editor but do not have a separate global config key

:::note
The configuration structure under `dataObject` and `document` follows the
[Quill configuration format](https://quilljs.com/docs/configuration/).
:::

## Themes

Quill supports multiple themes that control the editor's appearance.
Set the theme in the Quill configuration options:

```twig
{{ pimcore_wysiwyg("content", {
theme: "snow"
})
}}
```

See the [Quill themes documentation](https://quilljs.com/docs/customization/themes)
for available themes.
Loading
Loading