Skip to content

Commit 7c69118

Browse files
authored
Merge pull request #1749 from plone/choose-ui
Start "Choose a user interface" conceptual guide
2 parents c80bab5 + f408db2 commit 7c69118

File tree

12 files changed

+113
-59
lines changed

12 files changed

+113
-59
lines changed

docs/_static/classic-ui.png

286 KB
Loading

docs/_static/volto-ui.png

213 KB
Loading

docs/backend/upgrading/version-specific-migration/upgrade-to-52.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ This is [PLIP 1351](https://github.com/plone/Products.CMFPlone/issues/1351).
8181
#### For end users
8282

8383
This has no changes for Editors.
84-
Admins will notice that the ZMI has a new Twitter Bootstrap-based theme, and some control panels have moved.
84+
Admins will notice that the ZMI has a new Bootstrap-based theme, and some control panels have moved.
8585

8686

8787
#### For developers

docs/backend/upgrading/version-specific-migration/upgrade-to-60.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ zodb-temporary-storage = off
128128

129129
(v60-templates-bootstrap-5-label)=
130130

131-
## Changed templates to Twitter Bootstrap 5 markup
131+
## Changed templates to Bootstrap 5 markup
132132

133-
All templates in core Plone have been updated to use Twitter Bootstrap 5 markup.
133+
All templates in core Plone have been updated to use Bootstrap 5 markup.
134134
Add-on authors are encouraged to do the same.
135135
If you have customized a core template, you should check if your change is still needed, and update it to fit the new markup.
136136
Any CSS and JavaScript that relies on a specific structure, or certain IDs or classes, should be checked as well.

docs/classic-ui/icons.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Examples include the following.
2323

2424
## Bootstrap Icons
2525

26-
Twitter Bootstrap 5 is the default CSS framework in Plone 6.
26+
Bootstrap 5 is the default CSS framework in Plone 6.
2727
Plone uses its icons.
2828
Check out all the available Bootstrap icons at [icons.getbootstrap.com](https://icons.getbootstrap.com/).
2929

docs/classic-ui/index.md

Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,22 @@
11
---
22
myst:
33
html_meta:
4-
"description": "Classic UI is a secondary user interface for Plone, but updated to use Twitter Bootstrap 5. It is familiar to users of Plone 5."
5-
"property=og:description": "Classic UI is a secondary user interface for Plone, but updated to use Twitter Bootstrap 5. It is familiar to users of Plone 5."
4+
"description": "Classic UI is a secondary user interface for Plone, but updated to use Bootstrap 5. It is familiar to users of Plone 5."
5+
"property=og:description": "Classic UI is a secondary user interface for Plone, but updated to use Bootstrap 5. It is familiar to users of Plone 5."
66
"property=og:title": "Classic UI"
7-
"keywords": "Plone 6, Classic UI, Twitter Bootstrap 5"
7+
"keywords": "Plone 6, Classic UI, Bootstrap 5"
88
---
99

1010
(classic-ui-index-label)=
1111

1212
# Classic UI
1313

14-
```{todo}
15-
Perhaps some of this introduction should be an include, so we don't have to repeat ourselves?
16-
```
17-
18-
Plone 6 ships with two user interfaces or frontends.
19-
20-
The default frontend of Plone 6 is Volto.
21-
It is based on the React JavaScript framework.
22-
23-
The other frontend is based on Twitter Bootstrap 5.
24-
This frontend is now called {term}`Classic UI`.
25-
26-
27-
## Which frontend?
28-
29-
Choosing one frontend over another depends on several factors.
14+
This chapter is a developer reference manual for working with {term}`Classic UI`.
3015

31-
Classic UI would be a better choice for the following situations.
32-
33-
- Reason 1
34-
- Reason 2
35-
- Reason N
36-
37-
The default frontend Volto would be a better choice for the following situations.
38-
39-
- Reason 1
40-
- Reason 2
41-
- Reason N
42-
43-
44-
## Contents
45-
46-
This chapter is a developer reference manual for working with Classic UI.
16+
```{seealso}
17+
Plone has two user interfaces, Volto and Classic UI.
18+
To understand their differences, see {doc}`/conceptual-guides/choose-user-interface`.
19+
```
4720

4821
```{toctree}
4922
:maxdepth: 2

docs/classic-ui/theming/through-the-web.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Add screenshots.
4747

4848
## CSS variables
4949

50-
Plone uses Twitter Bootstrap's CSS variables.
50+
Plone uses Bootstrap's CSS variables.
5151
They are used to tweak colors, fonts, spacing, and other CSS attributes.
5252

5353
```{todo}

docs/classic-ui/whatsnew.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ myst:
1111

1212
# What's new in Plone 6 Classic UI
1313

14-
- HTML markup is now based on [Twitter Bootstrap 5](https://getbootstrap.com/).
15-
- Twitter Bootstrap 5 icons are now included.
14+
- HTML markup is now based on [Bootstrap 5](https://getbootstrap.com/).
15+
- Bootstrap 5 icons are now included.
1616
- Bootstrap JavaScript is available by default.
1717
- JavaScript has been modernized.
1818
- RequireJS has been removed.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
myst:
3+
html_meta:
4+
"description": "Explanation of how to choose between Plone's two user interfaces, Volto and Classic UI"
5+
"property=og:description": "Explanation of how to choose between Plone's two user interfaces, Volto and Classic UI"
6+
"property=og:title": "Choose a user interface"
7+
"keywords": "Plone 6, Conceptual guides, UI, user interface, frontend, Volto, Classic UI, distribution"
8+
---
9+
10+
# Choose a user interface
11+
12+
This guide explains the differences between Plone's two user interfaces, Volto and Classic UI, to help inform you to choose one when developing your new project in Plone, or whether to migrate from Classic UI to Volto.
13+
There is no migration path available from Volto to Classic UI.
14+
15+
The choice of user interface has implications for editors, admins, and developers.
16+
17+
`````{grid} 1 1 1 2
18+
:gutter: 1
19+
:margin: 0
20+
:padding: 0
21+
22+
````{grid-item-card} Volto
23+
```{image} /_static/volto-ui.png
24+
:alt: Plone home page in Volto
25+
:target: /_static/volto-ui.png
26+
```
27+
28+
For editors and other end users:
29+
30+
- The user interface is a fast, modern, single-page web application.
31+
- Editors can create sophisticated page layouts by arranging {term}`blocks` of different types.
32+
- There is not a comprehensive {doc}`/volto/user-manual/index` yet, and only a few pages exist.
33+
34+
For developers and integrators:
35+
36+
- The frontend is a {term}`React`-based application written in JavaScript and TypeScript.
37+
- The backend is a Python process which provides a {term}`REST API` for the frontend.
38+
- Python skills are not required, but can be helpful for extending the backend.
39+
- Content is stored as structured JSON.
40+
- Customization of themes is well-documented and relatively easy for developers who have experience with React.
41+
42+
````
43+
44+
````{grid-item-card} Classic UI
45+
```{image} /_static/classic-ui.png
46+
:alt: Plone home page in Classic UI
47+
:target: /_static/classic-ui.png
48+
```
49+
50+
For editors and other end users:
51+
52+
- The user interface is similar to Plone 5.
53+
- Editors create a page using a {term}`WYSIWYG` editor, {term}`TinyMCE`.
54+
- Additional widgets can be added to predefined locations, using {term}`portlets`.
55+
More sophisticated page layout requires the use of add-ons.
56+
- There is a comprehensive [User Manual for Plone 5](https://5.docs.plone.org/working-with-content/index.html), but it has not been updated for Plone 6.
57+
58+
For developers and integrators:
59+
60+
- The frontend and backend run in a single Python process, so hosting is a bit simpler.
61+
- The frontend is implemented as server-side templates using the {term}`ZPT` language.
62+
- Interactive functionality is implemented in JavaScript using {term}`Mockup`.
63+
- The visual design is based on the {term}`Barceloneta` theme from Plone 5, but updated to use Bootstrap 5.
64+
- Content is stored as HTML.
65+
- Customization of themes is not well-documented.
66+
67+
````
68+
`````

docs/conceptual-guides/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ This part of the documentation provides explanation of concepts to deepen and br
1515
```{toctree}
1616
:maxdepth: 2
1717
18+
choose-user-interface
1819
package-management
1920
make-build-backend-walk-through
2021
```

docs/glossary.md

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ pm2
108108
[PM2](https://pm2.keymetrics.io/) is a daemon process manager.
109109
110110
REST API
111-
```{todo}
112-
REST API in general. REST API of Plone.
113-
```
111+
A REST API (also called a RESTful API or RESTful web API) is an application programming interface (API) that conforms to the design principles of the representational state transfer (REST) architectural style.
112+
REST APIs provide a flexible, lightweight way to integrate applications and to connect components in microservices architectures.
113+
Plone uses [`plone.restapi`](https://github.com/plone/plone.restapi/) for its REST API.
114114
115115
S3
116116
[Amazon Web Services S3](https://aws.amazon.com/s3/).
@@ -172,11 +172,11 @@ Rapido application
172172
It contains the features you implement.
173173
It is a folder containing templates, Python code, and YAML files.
174174
175-
block
176-
Blocks display a chunk of HTML which can be inserted in your Plone pages.
175+
blocks
176+
Blocks are the fundamental components of a page layout in {term}`Volto`.
177177
178178
element
179-
Elements are the dynamic components of your blocks.
179+
Elements are the dynamic components of your {term}`blocks`.
180180
They can be input fields, buttons, or computed HTML.
181181
They can also return JSON if you call them from a JavaScript app.
182182
@@ -422,18 +422,19 @@ Traefik Proxy
422422
423423
Volto
424424
[Volto](https://github.com/plone/volto) is a React-based frontend for Plone.
425-
It is the default user interface for Plone 6.
425+
It is one of two supported user interfaces, or frontends, for Plone 6.
426426
427-
The other frontend is {term}`Classic UI`.
427+
````{seealso}
428+
{doc}`/conceptual-guides/choose-user-interface`
429+
````
428430
429431
Classic UI
430-
Classic UI is a secondary frontend for Plone 6.
431-
It is integrated with [Products.CMFPlone](https://github.com/plone/Products.CMFPlone/).
432-
Its theme is named [Barceloneta](https://github.com/plone/plonetheme.barceloneta/).
433-
It is based on Twitter Bootstrap 5.
434-
It uses {term}`Mockup` as its JavaScript stack.
432+
Classic UI is a frontend for Plone 6 that is based on {term}`ZPT` and {term}`Mockup`.
433+
It is one of two supported user interfaces, or frontends, for Plone 6.
435434
436-
The other frontend is {term}`Volto`.
435+
````{seealso}
436+
{doc}`/conceptual-guides/choose-user-interface`
437+
````
437438
438439
Mockup
439440
[Mockup](https://github.com/plone/mockup/) is a package that, together with {term}`Patternslib`, builds the UI toolkit for {term}`Classic UI`, a frontend for Plone.
@@ -447,11 +448,17 @@ Patternslib
447448
Accessibility, SEO, and well-structured HTML are core values of Patterns.
448449
449450
Slate
450-
[Slate.js](https://docs.slatejs.org/) is a highly customizable platform for creating rich-text editors, also known as `WYSIWYG` editors.
451+
[Slate.js](https://docs.slatejs.org/) is a highly customizable platform for creating rich-text editors, also known as {term}`WYSIWYG` editors.
451452
It enables you to create powerful, intuitive editors similar to those you've probably used in Medium, Dropbox Paper, or Google Docs.
452453
453454
`volto-slate`
454-
`volto-slate` is an interactive default text editor for Volto, developed on top of {term}`Slate`, offering enhanced WYSIWYG functionality and behavior.
455+
`volto-slate` is an interactive default text editor for Volto, developed on top of {term}`Slate`, offering enhanced {term}`WYSIWYG` functionality and behavior.
456+
457+
WYSIWYG
458+
WYSIWYG is an acronym for "what you see is what you get", referring to software that allows content to be edited in a form that resembles its appearance when printed or displayed as a finished product.
459+
460+
TinyMCE
461+
The rich text {term}`WYSIWYG` editor used in {term}`Classic UI`.
455462
456463
elementEditor
457464
A generic {term}`volto-slate` plugin architecture that can be used to create other editor interactions that follow the pattern of having a button that toggles a format (an inline element).
@@ -802,4 +809,8 @@ lazy loaded
802809
reference implementation
803810
A reference implementation is a program that implements all requirements from a corresponding specification.
804811
The reference implementation often accompanies a technical standard, and demonstrates what should be considered the "correct" behavior of any other implementation of it.
812+
813+
portlets
814+
Portlets are widgets that can be inserted in predefined locations in pages in {term}`Classic UI`.
815+
Portlets are most commonly used to add sidebars to the left or right of the main page content.
805816
```

docs/install/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ https://demo.plone.org/
3939
## Install Plone
4040

4141
First, choose a Plone user interface, or frontend.
42-
% TODO: once https://github.com/plone/documentation/pull/1749 is merged, link to it
42+
You can read {doc}`/conceptual-guides/choose-user-interface` to help inform your choice between Volto and Classic UI.
4343

44+
Then choose one of the following installation methods.
4445
If you are following a [Plone training](https://training.plone.org/), it should specify which option to choose.
4546

4647
{doc}`create-project-cookieplone`

0 commit comments

Comments
 (0)