19. “Plone has evolved from being an standalone
product to be a contract, the knowledge and wisdom
that we, the Plone community, achieved during the
last 20 years building a world class enterprise CMS”
20. “Implementations may change
overtime, values do not”
Plone Classic
Plone REST API
Volto Volto
Guillotina
Other frontend
Other compatible API
backend
21. “Through the freedom that they provide, Volto
blocks are a foundation for innovation that
enables Plone to step in line with the latest state
of the art for web development.”
@tiberiuichim
22. “We not only built a new UX and UI
for Plone, but also a framework
where to build new exciting things”
26. Which areas is Plone 6 better than
Plone 5 today?
Blocks engin
e
Authoring experienc
e
Volto Dexterity Schema and Layout edito
r
Listing bloc
k
Direct access to the full JS/React ecosyste
m
Performanc
e
as a bonus, Volto still works with Plone 4 as API backend
28. Volto Early Adopters Meeting
Monthly, last Friday of the mont
h
Open for everybody interested!
29. Volto 4.0.
0
(maturity release
)
March 2020
Sidebar introduction and new mobile first toolba
r
New Object Browse
r
New blocks chooser and future proof blocks definition
s
Listing, TOC, Lead Image block
s
Internal improvements and library updates
31. Volto 4 to Volto 1
0
9 months
!
March 2020 - December 2020
Multilingual suppor
t
Improvements to Contents vie
w
Unauthorised, Forbidden, NotFound improvement
s
and related HTTP proper responses
32. Volto 4 to Volto 1
0
9 months
!
March 2020 - December 2020
Support for using a completely different CSS framework
Nicola Zambello talk: Theming Volto without SemanticUI: is it possible?
Wednesday - 15:00
33. Huge improvements in extensibility
Nilesh Gulia talk: Volto: A journey towards personalisation
Tuesday - 16:50
Volto 4 to Volto 1
0
9 months
!
March 2020 - December 2020
34. New generato
r
Based on Yeoman
create-volto-app will be deprecated (soon)
@plone/generator-volt
o
npm install -g y
o
npm install -g @plone/generator-volt
o
yo @plone/volto
39. Improvements in the
shadowing engine
export Icon from '@plone/volto/components/theme/Icon/Icon';
export Icon from ‘./theme/Icon/Icon';
Works for add-ons to
o
41. API Block Transforms
@adapter(IBlocks, IBrowserRequest
)
@implementer(IBlockFieldDeserializationTransformer
)
class TextBlockDeserializer(object):
order = 100
block_type = "text"
def __init__(self, context, request)
:
self.context = contex
t
self.request = reques
t
def __call__(self, block):
entity_map = block.get("text", {}).get("entityMap", {}
)
for entity in entity_map.values()
:
if entity.get("type") == "LINK"
:
href = entity.get("data", {}).get("href", ""
)
entity["data"]["href"] = path2uid(context=self.context, link=href
)
return bloc
k
42. API Block Transforms
@implementer(IBlockFieldSerializationTransformer)
@adapter(IBlocks, IBrowserRequest)
class ResolveUIDSerializer(object):
order = 1
block_type = None
def __init__(self, context, request):
self.context = context
self.request = request
def __call__(self, value):
for
fi
eld in ["url", "href"]:
if
fi
eld in value.keys():
value[
fi
eld] = uid_to_url(value.get(
fi
eld, ""))
return value
43. Lazy load support
Nilesh Gulia talk: Bundle splitting in Volto
Monday - 16:50
import loadable from '@loadable/component';
export const EventView = loadable(() =>
import('@plone/volto/components/theme/View/EventView'),
);
53. Slots
Mix between Viewlets and Portlet
s
Evolution of the Plone/Mosaic Tiles concep
t
Inheritabl
e
Far more lightweight than Portlet
s
will contain block
s
Assigned statically and/or backend defined