Mastering Plone 6#

Proposed changes to this treainning for Plone 6

1. About Mastering Plone::

    1.1. Upcoming Trainings
    1.2. Previous Trainings
    1.3. Trainers
    1.4. Using the documentation for a training
    1.5. Building the documentation locally
    1.6. Build new
    1.7. Train the trainer
    1.8. Contributing
    1.9. License

2. Introduction::

    2.1. Who are you?
    2.2. What will we do?
    2.3. What will we not do?
    2.4. What to expect
    2.5. Classroom Protocol
    2.6. Documentation
    2.7. Further Reading

3. What is Plone?::

    3.1. Core concepts
    ++ Add Info on RESTAPI and VOLTO

4. Installation & Setup::

    4.1. Installing Plone
    ++ Add info on building the Frontend
    4.2. Hosting Plone
    ++ Add Info on deploying the Frontend
    4.3. Production Deployment

5. Installing Plone for the Training::

    5.1. Installing Plone without vagrant
    5.2. Installing Plone with Vagrant
    ++ Update to build VOLTO

6. The Case Study::

    6.1. Background
    6.2. Requirements
    ++ Discuss where which feature will need to be develop

7. The Features of Plone::

    7.1. Starting and Stopping Plone
    7.2. Walkthrough of the UI
    7.3. Users
    7.4. Configure a Mailserver
    7.5. Content-Types
    7.6. Folders
    7.7. Collections
    7.8. Content Rules
    7.9. History
    7.10. Manage members and groups
    7.11. Workflows
    7.12. Working copy
    7.13. Placeful workflows
    ++ Update to use new fronte

8. The Anatomy of Plone::

    ++ Start with Backend / RESTAPI / Fronte
    8.1. Database
    8.2. Zope
    8.3. Content Management Framework
    8.4. Zope Toolkit / Zope3
    8.5. Zope Component Architecture (ZCA)
    8.6. Pyramid
    8.7. Exercise

9. What’s New in Plone 5, 5.1 and Plone 5.2::

    ++ Rewrite for Plone 6 and Volto
    9.1. Default Theme
    9.2. New UI and widgets
    9.3. Folder Contents
    9.4. Content Types
    9.5. Resource Registry
    9.6. Chameleon template engine
    9.7. Control panel
    9.8. Date formatting on the client side
    9.9. plone.app.multilingual
    9.10. New portlet manager
    9.11. Remove portal_skins
    9.12. Plone 5.1
    9.13. Plone 5.2

10. Configuring and Customizing Plone::

    ++ Rewrite for Controlpanels in VOLTO
    10.1. The Control Panel
    10.2. Portlets
    10.3. Viewlets
    10.4. ZMI (Zope Management Interface)
    10.5. Summary

11. Theming::

    ??

12. Extending Plone::

    ++ Rewrite for React and RESTAPI
    12.1. Extension technologies

13. Extend Plone With Add-On Packages::

    ++ Rewrite to discuss frontend and backend-addons
    13.1. Some notable add-ons
    13.2. How to find add-ons
    13.3. Installing Add-ons
    13.4. collective.easyform
    13.5. Add page layout management with plone.app.mosaic
    13.6. Internationalization
    13.7. Summary

15. Buildout I::

    ++ Move after "Add your own addons"
    ++ Add a chapter that discusses the Volto-Addon structure
    15.1. Minimal Example
    15.2. Syntax
    15.3. Recipes
    15.4. References
    15.5. A real life example
    15.6. Mr. Developer
    15.7. Extensible
    15.8. Be McGuyver

Write Your Own Add-Ons to Customize Plone::

    ++ use plonecli
    1. Creating the package
    2. Eggs
    3. Inspecting the package
    4. Including the package in Plone
    5. Exercises
    6. Summary

Dexterity I: Content types::

    ++ Rewrite (Start with Python Schema in the Filesystem)
    1. What is a content type?
    2. The makings of a Plone content type
    4. Modifying existing types
    #. Default Behaviors
    5. Creating content types TTW
    7. Exercises


Dexterity II: Talk::

    #. The fti
    #. The type registration
    #. The schema
    #. The instance class
    #. Enabling our code (install/reinstall)
    #. Field type reference
    #. Schema directives: widgets, permissions
    #. point to later chapter for complete list of features


XX. Add your own Volto addon

    #. Add a Volto Addon (create-volto-app)

XX. Add a custom view component for talks

    #. Register new view src/components/Views/Talk.jsx
    #. Finish View incrementally


18. Views I::

    ++ Maybe move to a later state
    18.1. A simple browser view

19. Page Templates::

    ++ Remove / Replace with a chaptere on custom Components with JSX
    19.1. TAL and TALES
    19.2. Chameleon
    19.3. Exercise 1
    19.4. METAL and macros
    19.5. Accessing Plone from the template
    19.6. Exercise 2
    19.7. Accessing other views
    19.8. What we missed

20. Customizing Existing Templates::

    ++ Replace with chapter on overwriting existing React components
    20.1. The view for News Items
    20.2. The Summary View
    20.3. Finding the right template
    20.4. skin templates
    20.5. Summary

21. Views II: A Default View for “Talk”::

    ++ Replace with custom component
    21.1. View Classes
    21.2. Browser Views
    21.3. Reusing Browser Views
    21.4. The default view
    21.5. Using helper methods from DefaultView
    21.6. The complete template for talks
    21.7. Behind the scenes

22. Views III: A Talk List::

    ++ Replace with a custom component that uses the @search endpoint to get talks
    ++ Keep information on catalog, indexes and metadata. Discuss search endpoint
    22.1. Using portal_catalog
    22.2. brains and objects
    22.3. Querying the catalog
    22.4. Exercises
    22.5. The template for the listing
    22.6. Setting a custom view as default view on an object
    22.7. Summary

23. Testing in Plone::

    ++ ???
    23.1. Types of tests
    23.2. Writing tests
    23.3. Plone tests
    23.4. Robot tests
    23.5. More information

24. Behaviors::

    ++ Keep as it is
    24.1. Dexterity Approach
    24.2. Names and Theory
    24.3. Practical example
    24.4. Adding it to our talk

25. Writing Viewlets::

    ++ Replace with a component
    25.1. A viewlet for the featured behavior
    25.2. Featured viewlet
    25.3. Exercise 1
    25.4. Exercise 2

26. Programming Plone::

    ++ Add chapter (before or after) on restapi and various endpoints
    ++ Discuss best-practices and tools for JS/React-Development
    26.1. plone.api
    26.2. portal-tools
    26.3. Debugging
    26.4. Exercise

27. IDEs and Editors::

    ++ Same as above: Discuss helpful features in editors for JS Development


28. Dexterity Types II: Growing Up::

    ++ remove part on marker interfaces (since we already have a python
    28.1. Add a marker interface to the talk type Interface)
    28.2. Upgrade steps
    28.3. Add a browserlayer
    28.4. Add catalog indexes
    28.5. Query for custom indexes
    28.6. Exercise 1
    28.7. Add collection criteria
    28.8. Enable versioning
    28.9. Summary

29. Custom Search::

    ++ maybe remove or mention volto-based addons here
    29.1. eea.facetednavigation
    29.2. collective.collectionfilter

30. Turning Talks into Events::

    ++ Keep behavior. Replace view-change with reusing a (hopefully) existing react component
    30.1. Exercise 1
    30.2. Exercise 2

31. User Generated Content::

    ++ Keep this
    31.1. Self-registration
    31.2. Constrain types
    31.3. Grant local roles
    31.4. A custom workflow for talks
    31.5. Move the changes to the file system

32. Resources::

    ++ Remove or add info on theming with Volto

33. Using Third-Party Behaviors::

    ++ remove or replace.
    ++ Maybe the addon collective.behavior.banner could be useful in Volto as well with a custom endpoint
    33.1. Add Teaser With collective.behavior.banner

34. Dexterity Types III: Python::

    ++ Keep content-type as before
    ++ change Viewlet to custom component
    ++ the scaling-thing might be a problem
    34.1. The Python schema
    34.2. Directives
    34.3. Validation and default values
    34.4. The Factory Type Information, or FTI
    34.5. The view
    34.6. The viewlet
    34.7. The template for the viewlet

35. Relations::

    ++ Keep but add a use-case for the conferennce-Website (e.g. linking Users to Talks if self-registration and membrane would work in Plone 6)
    35.1. Creating relations in a schema
    35.2. Accessing and displaying related items
    35.3. Creating RelationFields through the web
    35.4. The stack
    35.5. RelationValues
    35.6. Accessing relations and backrelations from code

36. Manage Settings with Registry, Control Panels and Vocabularies::

    ++ Keep control panel in backend? Add example for control panel in Fronend?
    36.1. The Registry
    36.2. A setting
    36.3. Accessing and modifying values in the registry
    36.4. Add a custom control panel
    36.5. Vocabularies

37. Creating a Dynamic Front Page::

    ++ Remove with a simple blocks-bases site
    37.1. The Front Page
    37.2. The template
    37.3. Twitter
    37.4. Activating the view

38. Creating Reusable Packages::


39. More Complex Behaviors::

    ++ Add custom restapi-endpoint for voting
    ++ Change to use BTrees instead of PersitentDict
    39.1. Using Annotations
    39.2. Using Schema
    39.3. Writing Code

40. A Viewlet for the Votable Behavior::

    ++ Replace with new frontend component for the new Voting endpoint
    40.1. Voting Viewlet
    40.2. Writing the Viewlet code
    40.3. The template
    40.4. JavaScript code
    40.5. Writing 2 simple view helpers

41. Making Our Package Reusable::

    ++ Keep this since it ties the different addons together
    41.1. Adding permissions
    41.2. Using our permissions
    41.3. Provide defaults

42. Using starzel.votable_behavior in ploneconf.site::

    ++ keep

43. Releasing Your Code::

    ++ ???

44. Buildout II: Getting Ready for Deployment::

    44.1. The Starzel buildout
    44.2. A deployment setup
    44.3. Other tools we use

45. Plone REST API::

    ++ Add new custom react component for lightining talks
    ++ Move up since it is easier than voting
    45.1. Installing plone.restapi
    45.2. Explore the API
    45.3. Implementing the talklist
    45.4. Submit lightning talks
    45.5. Exercise

46. The Future of Plone::

    ++ Update


47. Optional::

    ?