Importer from an old Plone Site into a new one with Volto
Project description
Plugin for redturtle.importer.base to migrate old site into a new Volto-enabled site.
Features
There is a new adapter for redturtle.importer.base for content-types with volto.blocks enabled behavior that converts rich text from html (TinyMce) to json (DraftJs/blocks).
HTML to DraftJs converter
For content-types with blocks enabled, we need to convert old-style HTML text to a DraftJs compatible data structure.
The best library to do this, is the officiale one that is only available for Javascript.
For that reason, to convert HTML we need to connect to an external tool: https://github.com/RedTurtle/draftjs-converter
This is a nodejs rest api that accept some html and returns its DraftJs converted version.
To use this api, we need to set an environment variable with its address in our buildout:
environment-vars += ... DRAFTJS_CONVERTER_URL http://localhost:3000/html_converter
Blocks conversions
Every piece of a RichText value should be converted into a Volto block element.
Some pieces can be converted into a specific block (for example tables, images, embed items). Other standard html elements are converted into a text block that contains a DraftJs data structure.
We made some assumption when converting text into blocks.
Every paragraph is a new block
This allows editors to move text, insert elements between paragraphs, etc.
Images are wrapped into a separate paragraph
Before launching the conversion tool, we wrap every image into a separate paragraph.
In this way we can handle them as an “image block” in Volto.
Image sizes conversion
In Plone images in text can have also a miniature (images scales in Plone).
In Volto, right now, there are only 3 available sizes (S, M, L), so we mapped plone scales into these 3 sizes.
Types conversion
If a content-type have volto.blocks behavior enabled and a text field, that field will be converted in blocks.
Collection content-types will be converted into a Document with a listing block with its criteria filters.
Folders with a default view will be converted into a Document content-type with these rules for its blocks:
If default view is a Collection content-type, we create a listing block with its criteria filters.
If default view is a Document or News Item, we convert its text into blocks.
If the folder doesn’t have a default item as view, we create a listing block that shows first level contents.
Installation
Install redturtle.importer.volto by adding it to your buildout:
[buildout] ... eggs = redturtle.importer.volto
and then running bin/buildout
You don’t have to install it. In this way, after the data migration, you can remove it from the buildout and everything is clean.
Contribute
Issue Tracker: https://github.com/collective/redturtle.importer.volto/issues
Source Code: https://github.com/collective/redturtle.importer.volto
Credits
This product has been developed with some help from
License
The project is licensed under the GPLv2.
Contributors
RedTurtle Technology, sviluppoplone@redturtle.it
Changelog
1.0.0 (2020-12-18)
Initial release. [cekk]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for redturtle.importer.volto-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ada1d5545c204c65ba17a56f8206d769e22248b920994e48aa0b4c946104e298 |
|
MD5 | f0d3bd92d5d70a790ad21867732bc367 |
|
BLAKE2b-256 | aa49733ae134902423920050879ef51291e18061d44f484cd231e1ce65c08a16 |