Hello, so I decided to dive into Zope Product development over the past several days, and I believe I learned quite a bit as a result and thought I'd share this knowledge with the overall Zope community. Since learning backend Zope Products has always been known to have that steep learning curve, I thought that placing all of what I've learned onto my public GitHub for others to see and learn from would be good. I'll see about better documenting and even commenting my source code in the near future. I also included a fun diff of sorts comparing how the Zope API has changed between Zope 2.5.1 and modern Zope 6. This diff might be-able to assist some people with say maintaining older Zope codebases and Products which might be attempting to migrate them to Zope 6. This diff shows each of the changes I had to make to each of these example products in in order to make them compatible and work in Zope 6, and I'm proud to say, that all of these products work nicely in vanilla Zope 6, or even in a backend of a Plone site.
Since I'm no expert in Zope Product development, and I'm sure I made a lot of mistakes here, so please do let me know what I could have done better. I wrote all of this code based on the limited documentation I could find on the subject, as well as actually looking through the Zope source code itself to understand where different things are, how they work, and what sort of parameters some of it's methods might be expecting.
All of these products are for demonstration and example purposes, or to use as a starting point for your own Zope Product. The repo includes the following:
- An example single object which can be added via ZMI, shows property sheet usage.
- An example custom folder which can only contain the above item inside it.
- An example Application, which allows App Component objects inside.
- A fully functional document catalog folder using ZCatalog, where each specialized document placed into it is auto-cataloged upon being saved in the ZMI.
Hope these example/demo Zope products can either help other people learn more about Zope Products, or help someone with perhaps migrating an older Zope Product.
Repo location: GitHub - kveroneau/Zope-TestProduct: A pure Zope Product, no Plone. Use as a base for more complicated Zope Products. · GitHub