Why would they need a CMS?
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Alternative Title |
| |
Title of Series | ||
Number of Parts | 66 | |
Author | ||
License | CC Attribution 3.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/55333 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Year | 2016 |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Instance (computer science)Content (media)Cartesian coordinate systemRow (database)Text editorData storage deviceSimulationPhysical systemDeclarative programmingBlock (periodic table)Logical constantLevel (video gaming)StatisticsArmData recoverySocial classFluid staticsRegulärer Ausdruck <Textverarbeitung>Computer fileCASE <Informatik>Web pageImage registrationInformationRule of inferenceGroup actionTerm (mathematics)WebsiteBitCodeForm (programming)Office suiteObject (grammar)Right angleSoftware developerComplete metric spacePiPhotographic mosaicDatabase transactionDifferent (Kate Ryan album)EmailDomain nameMultiplication signGraphics tabletProgrammable read-only memoryMappingWordSpacetimeMedical imagingData conversionNeuroinformatikFigurate numberDescriptive statisticsOvalImaginary numberProjective planeTemplate (C++)Digital photographyField (computer science)VideoconferencingScripting languageCloningProduct (business)Data structureServer (computing)Regular graphBranch (computer science)Element (mathematics)Context awarenessWeightMarkup languagePattern languageType theorySoftware frameworkElectronic mailing listLetterpress printingEndliche ModelltheorieBootingSinc functionComputer architectureComputing platformSlide ruleDialerProfil (magazine)PlanningFile viewerKeyboard shortcutMoment (mathematics)Translation (relic)MereologyVariable (mathematics)ResultantDevice driverDiagramGoodness of fitVirtual machineGeneric programmingBuildingProcess (computing)Service (economics)YouTubeInformation securityComputer programmingUniform resource locatorPlastikkarteTexture mappingData managementInterface (computing)Wave packetTrailHome pageLatent heatPoint (geometry)Front and back endsDataflowCrash (computing)DatabaseReal numberImplementationPortletView (database)Canadian Mathematical SocietyRepresentational state transferWeb-DesignerDebuggerFile systemZoom lensVideo projectorDefault (computer science)BlogWeb 2.0Complex (psychology)Demo (music)Artistic renderingCommunications protocolMathematicsInternetworkingMechanism designStaff (military)Mixed realityClosed setInsertion lossTotal S.A.QuicksortLocal ringPlug-in (computing)Absolute valueData miningPresentation of a groupOpen setFreewareElectronic visual displayStructural loadDirection (geometry)Computer animation
Transcript: English(auto-generated)
00:04
To get a working breadcrumb, and it was even that good at the end. Let me tell you something about Plon. Breadcrumbs, it works. It works very fine and since a very long time.
00:22
So actually people, they do need CMS. Even if they are building stuff with frontend, with framework or whatever. On the backend, they're going to need this feature. The case I'm talking about was really a Django REST API thing. It was a React project.
00:42
And it was like managing information, architectural information. And yeah, the customer said, yeah, I need a breadcrumb. Makes sense, right? Everybody needs a breadcrumb. OK, we can do that, of course we can do that. Actually it's very difficult to implement. Breadcrumb is something not easy. And things like Plon, they provide that for free.
01:04
So yeah, trust me, those people, they need a CMS, right? And what I know about them is they know web development. They are able to code HTML, to code GIS maybe.
01:20
But they don't know anything about Plon development. Plon development is very specific. It's not a common web knowledge to do Plon development, right? But still, I think Plon should be their CMS. I want Plon to be their CMS. Because Plon is good. Plon is doing breadcrumbs.
01:41
That's valuable. So we want breadcrumbs. So you want Plon. And I want those people to feel comfortable enough with Plon to build their own stuff and benefit of everything that's good into Plon, right? And well, they will not learn about Plon. Well, they could. I would be glad, of course.
02:01
I want as many people as possible to learn about Plon. But I know it's long. It takes a long time. And most people won't invest this time to build basic websites, OK? I think we should consider they know enough. They know about HTML. They know about maybe a little programming. It could be Python.
02:20
It could be PHP, JavaScript. That should be enough with all systems to be able to build custom stuff, right? And the problem right now is they don't know where to start, OK? We have very good resources in Plon documentation right now.
02:43
And this is not criticizing this. But here is something someone told me about Rapido. It was a total beginner with Plon, right? And he picked Rapido because he had the feeling that he could do something with that without learning too much, and that was correct.
03:00
And he told me this. He told me there's a lot of documentation, but I find it too technical and not very suitable for beginners. I would prefer more of a YouTube tutorial or documentation in the style of Rapido, OK? And in Rapido, what I've been doing is documenting exactly what you need
03:22
to achieve something simple from the beginning to the end. And it's not just about Rapido. It's also about how you're using a little bit, how you're using a mock-up a little bit, and how to put it all together to have your application at the end. I think we do not have that in the Plon documentation right now.
03:40
That's probably something we do have now with Plon training, which is getting better and better, so that's a right track. But more generally, we are always imagining, we are always considering that people who want to develop with Plon have to learn the whole thing before starting to actually build stuff. I disagree, OK?
04:01
So what could be Plon development for non-Plon developers? Well, we do have excellent tools. We do have Diaso. Diaso allows you to create a theme entirely without touching any ZCML, PyThing, or ZCA thing. You can do your entire themeing with that.
04:22
You have dexterity. Dexterity is good because you can create a new content type from the interface, export it, and re-import it back into another website. So you can define your own content type without programming at all. Rapido is an add-on I've been creating to allow to customize the behavior of Plon
04:42
with a little scripting. So that's actually development, but without involving Plon knowledge, right? You just need to know a little bit about the Plon API, for instance, and a little bit about Diaso, and you should be fine. And there is Mosaic.
05:00
Mosaic is also very interesting. It's very flexible to create very great layouts without developing at all. You can create your layout with Mosaic from the web interface, and then you can tweak it in the code. So that's something which is really approachable
05:21
for a web developer, a regular web developer, right? So, okay, what's good about them? They all work through the web. That's a good point. Not necessarily because I want people to work only through the web, but because it just implies that it's not too connected
05:42
to the Plon architecture, right? Is that something you can use from the outside? So something you might do with Plon running, like, as a service, right? You have Plon somewhere, you are working from the outside, you can use your own development tools, and you can push your work to Plon,
06:01
because that's what's through the web enable, right? Even if it's not the first objective, and we're going to see how we do that. And they also work from the file system. So that's nice, because doing everything through the web is kind of dangerous, because if your system crashes, if you lose your database or whatever, all your code is gone.
06:21
If you want to rebuild another instance of your server somewhere, that's probably better to have everything you've developed in file system, right? But all those systems, they support both, through the web and file system. So that's very positive, too. And yes, they can be used by non-Plon developers.
06:42
That's what I was saying. They work from the outside of Plon, OK? By outside, I don't mean it's not in 2Plon. It is, but it doesn't involve you know about the frameworks which are in 2Plon. You can use Diazo without knowing anything about viewlets implementation or portlets or whatever.
07:02
But still, you can take a viewlet, hide it, or move it somewhere else. So that's really handy. That's flexible, right? But now, question. How far can we go with this approach? We all know that Plon development, regular Plon development, allow to do very complex stuff, right?
07:22
This approach I'm describing here, Diazo, Rapido, dexterity through the web, it does work, right? But does it allow to create real, complete website, complex website, complex features? That's the question.
07:40
Well, I've been trying that on my colleague. My colleagues are not all Plon developers. Some of them are just, well, Django developer or maybe front-end developer. And they don't know much about Plon, as they don't really want to know about Plon because it's kind of, yeah, complex.
08:02
Probably too complex for them. They don't want to invest some for that. So I just decided to test on them this approach. And there are two use cases. So maybe I should end now. The first one is this one. And it's something we've been developing for a museum
08:21
in France, which is about science. And they needed a website which is displayed in the entrance of the museum on the giant, how do you say, like a giant pad, right? Where you can touch and navigate.
08:40
And it's also available through the web, of course. And this is a map, which is showing an imaginary world. Let me show you. And each continent here is a science domain, right? So you can move, you can zoom in, zoom out. That's a map, right?
09:01
We do a lot of mapping. And this is an imaginary country, of course. And each of the house here is a lab. So you can get information about this lab. You can have a photo, where is it, where you have a few figures, you have a description, and so on. You have a photo here. You can have videos, kind of stuff, right? Well, this is a Plone site.
09:22
This is entirely a Plone site. And yet it has been built entirely by a non-Plone developer, right? If you take Plone and you give it to someone who is not a Plone developer, basically what you will get is a regular Plone with Barcelona data and a few folders, and that's it. While this is totally different than a regular Plone site,
09:43
it has been developed by someone who does not know about Plone, right? Here, the way it has been done is first, my colleague has been creating a content type to manage the labs. So that's quite simple. A lab is going to have a name, a director, a few photos.
10:01
So that's something you can do easily through the web, right? And then we have exported this content type to someone on the file system. And now we had to create this nice presentation with a map, with all the houses that can be clickable and so on. This has been done using Rapido.
10:22
We have been building an NPM project to create the map and so on. And we call Rapido to get as JSON all the information we want from the labs. So it's allowed to create the map itself. And when we click on a house and open it, this model is filled in by a view, a Rapido view, right?
10:46
I'm going to show you later, after this talk, there is a demo about Rapido, and you're going to see how it works. And this is basically, we picked information into the actual Plone content to create this page, right? And this is really easy to do.
11:01
So I go back to my slide. Sorry. Here we go. So that was one example. It was not too complex, right? The second one is more complex. This is a platform for legal class actions.
11:21
So people can register on this website and see all the class actions which are ongoing at the moment. Here's one about banking. So you can go there and register. You can simulate if you are the kind of person who could sue the bank about such or such criteria or whatever.
11:46
This is in production, right? I won't demo it too much because I don't want to have problems with lawyers. But basically, that's a very nice website.
12:02
Here's what we get. And we have a back office, which is quite complex. So this is the front website, of course. So that's totally a plan website, right? And the back office is pretty much this basic plan theme,
12:21
Barcelona, right? Because we just needed to manage the cases, OK? The different customers with their files so they can upload their files. The lawyer can analyze those files. This is all secured. And we have also PayPal so people can pay and we can control that it has been paid properly.
12:40
There are several payments during the process. That's actually very complex. And the lawyers who are managing the case, they have a messaging system which is not using emails because of security. So it is implemented into the Rapido application. It manages filtering, reporting about how many people
13:01
have already paid, how many people are customers of such banks so they can decide if it's OK to sue the bank or not, and a lot of different stuff to manage. Well, same thing. Plan site, no plan developer, right? That's what's a much bigger development.
13:21
I have been involved to help regarding the Python and so on. But there is no actual plan development to do it. And it was mainly front-end thing. So that's the kind of thing we can build. And yeah, it has been built by non-plan developers. I've already said it. And the question is, why CMS?
13:42
Why Plan? That's not their tool originally. Well, actually, Plan is a fantastic back office. It comes free. That's free too. That's already really secured. That's handy to manage users.
14:00
So I can define, for instance, lawyers groups, lawyers films, so they can manage their own customers and then go to customers from another film. This kind of stuff can be done really easy with Plan. If you had to implement it on top of Symphony or Django, it would take ages, right? So Plan is, and CMS more generally, Plan was really,
14:23
really relevant in this case. But we had to implement a very, very specific front for this website, to provide something fancy for the visitors. And this is complex to do with Plan, regular development, right? So that's why Plan plus non-Plan approach
14:43
was actually the right way to go. What we have been doing here is basically to use Plan as the back end, which is very versatile, which is very flexible. You can manage different type of data. You can decide which is going to be the schema of your data.
15:02
You can benefit of all the security. But you don't show anything from Plan directly. You just show to the visitor something which has been designed by a front end developer using his own favorite tools. And he does whatever he wants. He just uses Plan as a back end, right?
15:21
So that's why Plan was relevant here. So yeah, how they did it. I've been explaining a little bit already. But first, they developed a front end theme, right? So that's static file, HTML, JavaScript, CSS. They have been building it not manually, of course.
15:41
They have been using the frameworks they prefer. So that was Angular 1, I think, for one, and React. But that's totally open. That's not open-ended. You can choose whatever you want. They have been building it with NPM or Gulp or whatever they prefer.
16:02
They have created dexterity types. We have been customizing the workflow as well, all through the web. This is something which is totally easy for a non-Plan developer. We have been implementing specific features with Rapido because at some point, we need the back end
16:21
to provide some non-default Plan features, right? So that's why our Rapido can do good stuff. And we use diazo to mix all together, right? That's how it works. And the kind of stuff we have been doing are, well, actually quite complex.
16:41
It's not about having a nice home page. That's much more than that. We have been doing a map, an interactive map, which is binded to Plan contents. In the case of the class action website, we have been doing a registration wizard, which is really complex because it asks a lot of information about the person.
17:01
But depending on the case, we have different information to manage. So it has been done using collective EasyForm. So the developers just create the Rapido thing, which calls an EasyForm object. And this EasyForm object is managed by the lawyers.
17:20
The lawyers, they can decide, and in this case, I need to ask the person this, this, this, this. That's the content somewhere in the case. And the Rapido application takes it and inserts it into the registration wizard, wherever it's relevant, right? We have a PayPal endpoint, which has been implemented with Rapido. So I don't know if you're familiar with PayPal.
17:43
Do you say PayPal or PayPal in English? I have no idea. Okay, thank you. So this, how does it work? When you have PayPal, you have a simple form. It submits information to PayPal. You can pass an extra information,
18:01
which is supposed to be an ID. And PayPal is supposed to call back an endpoint, where it's going to give back the ID you passed at the first step. And then you can confirm by sending a post, saying yes, okay, the transaction has been done. So that's something you can register on your own system, so you can know that such customer
18:22
has paid this amount at this time, right? Well, this is actually not easy to do. It's not very complex. It's not easy to do if you do it in plan. With Rapido, it was very simple, totally approachable by anybody. We have been implementing a messaging system as a tool, so it's something where you get notified by mail
18:42
that you have something to read on your personal workspace, and you go there and you see your conversation. So it's not very complex regarding the feature, but implementing that in plan could take one or two weeks, I guess. So that's what the kind of feature we've been achieving with this system.
19:03
To say a word about our practices, we generally have a regular NPM project, so that's where the front-end developer is working. And we have a plan build-out plus a sim, which is into an egg. So that's a regular Mr. Bob generated template,
19:21
project, sorry. And in the static folder, we add an extra folder which is front, where the NPM project is supposed to push everything when it builds. So when you launch NPM run build, you're going to push everything which is local to the front folder
19:41
to the front folder into the plan egg, right? So that way, the developer has not to do anything regarding the plan structure, the structure of the Python eggs, right? You don't care. Just use NPM, only NPM.
20:01
Yeah, well, the front folder is ignored in the master, in the Git master. And to deploy in production, we have a branch where it is not ignored. So we have a small NPM script, which do a merge with no commit, so that way you get back into prod everything that has been developing lately. It launches a build,
20:21
and then it pushes everything to the prod server, where our deployment system is deploying everything. So we really don't care about plan here. We just do NPM commands, and everything goes directly to production, right? So that's really comfortable for a non-plan developer. And, yes, we can do better than that.
20:41
Thanks to ASCO. ASCO is not here, that's a shame, but we have been doing really interesting tools with the same approach. We've been doing PlanSim Webpack. This is something I haven't used,
21:01
because in all the projects I've been describing, the front-end is not using Plone resources at all. It's not using mockup patterns or whatever. It's just using its own JavaScript framework, okay? But you might want to reuse mockup patterns or Barcelona, so the style or the feature
21:22
from the Plone front into your own front project. And this is not easy to do. Well, that's something that PlanSim Webpack does. It is able to check out from your living Plone server, running Plone server, everything it might need, and build locally something which does bind to mockup or to Barcelona data.
21:41
You get everything from the Plone front to build your own stuff. So you can customize Plone that way without going into Plone development, and when Plone development comes to front-end, it gets really difficult for someone to know about it, right? So that's a good product.
22:02
There is also a collective theme site. This is a concept Eric has been talking about this morning in the keynote, the fat theme concept.
22:22
So the idea here is to put into the theme, into the diado theme, so into the static folder we have been talking about everything you might need, not just the theme. So it's going to be generic setup profiles, so you can configure your website, dexterity models, and I'm not talking about
22:41
the dexterity models, which is encoded into the profile because it's really ugly. That's directly the dexterity model with the nice XML schema. It can be put into the theme as well. It manages translations, and it manages permissions. And vocabulary, I think also. And this is automatically deployed.
23:02
That means you put all of the stuff into your theme, you install the theme, and this plugin is going to run the import of all the generic setup. So you get everything installed from your theme. So this is really interesting because it means that
23:20
the developer is going to do that. They do not need to create an egg, basically. They just manage a basic static folder with all those information at the right place, and it's going to be deployed on Plone, right? And there is Plone theme upload, which is an NPM package,
23:40
which allows you to push a local theme to Plone. So here you are not even running a Plone locally. You just have Plone somewhere. You don't know where. Someone smart, like me, set up a Plone site for you. You don't know about it. You don't know about build-out. You don't know anything about Plone.
24:00
You just have a URL, and you push from NPM command. You type your NPM command, and you're going to push your local theme to Plone. So that's Plone as a service, right? And with this, you can push whatever, the thing I've been talking about in the previous tool, dexterity, translation, permission, generic setup, et cetera.
24:22
And also it could be Rapido because Rapido is part of the theme as well. So everything that goes into the theme can work with this approach. So that's also something very powerful. And Asko made a really interesting blog post about that two weeks ago, something. And I think that some things could really change
24:41
the way people start with Plone. Well, that's it. That's, I don't know, yeah, that should be okay. That's what I was, I really think we need to improve this thing, how people get involved into Plone development,
25:02
I mean, developing with Plone, without having to learn too long about all the stuff we are doing. And we love it. I know we love it, but yeah, not everybody loves that, right? So that's it. Question? Yes? Do you always still use the ZODB, or do you ever?
25:25
Yes, of course, because Plone here is just a backend. So the idea is just not changing the backend. This is not a Plone server approach we have been presenting this morning, right? This is using basic Plone, current existing Plone. It could even be in Plone 4.
25:42
No, I know it will not work with Plone 4. But Plone 5, regular Plone 5, ZODB is here, everything is here, but you just don't want to know about it, basically. That's what I'm proposing here. You just have something running somewhere, and you push your information, it's going to be deployed, but you're going to use the regular Plone stuff, yes. ZODB is part of it, absolutely.
26:01
Which is good, because, for instance, in the case of the class action thing, that's the legal stuff, and it's really important the security is very good. People are uploading legal information about them, personal information, so on. We want this to be really secure, and Plone provides that. Plone is secure. I mean, it's really solid security here.
26:22
So it's a good thing that you can have such a good backend without being obliged to learn about how it works. We don't care how it works. We just do our development the way we know, using Angular or whatever, and we benefit from Plone anyway.
26:45
Anything else? Well, that's it. Thank you very much. I won't move, because I'll do the next thing, which is a demo about Rapido. I don't know which time it's supposed to be.
27:00
I'll just check. Okay. Okay, so let's go. So... Oh, no. This is not my computer, because mine was not working with the video projector.
27:21
So I had to set up back all my demos on this machine, but that's fine, because Rapido is really easy to deploy. Rapido development are quite easy to deploy. So, Rapido. Rapido is something you manage from the seeming editor. So here is the seeming editor.
27:42
If you're familiar with Diaso, that's exactly the kind of thing you do. You have a sim folder, where you have your styles, your HTML, whatever. Well, if you just add a folder named Rapido, and you create into this folder another folder named,
28:00
for instance, demo, it just instantiates a Rapido application named demo, right? There is nothing else to do. There is no declaration somewhere, no file to produce or whatever. You just create those folders, and you get Rapido enabled, right? That's enough. And the principle of Rapido is you're going to create blocks. So this has nothing to do with actual...
28:22
Oh, no. Well, maybe if I... Yeah, it's much better. Excuse me. I'll just try to maximize. Blocks are composed of an HTML file.
28:43
For instance, this is a block. Static HTML file. And that could be enough, if you're happy with that. And this block will be inserted into your pages using a rule in diazo. So here, my first demo, I take this block, I've been just showing the code off,
29:01
it's just basic static HTML, and I include it somewhere using a diazo selector, right? So I say, before the first heading, I'm going to put this block, right? And that's how it goes here. If I go to my demo folder,
29:22
here, a very simple example. Here, I get my block, right? So that's a piece of HTML that has been injected into this page. Okay, well, that's simple, right? You don't need Rapido to do that. This could be done, for instance, with Mosaic. Mosaic is the perfect tool for that. But still, that's the principle of Rapido.
29:42
Now, the thing about it is you can display information which is not necessarily static. Here, I've changed my block with something which is actually getting information from the contents. And here, I'm using the subject, you know, I've been tagging different contents. And I'm listing
30:00
all the different amount of documents I've been having the same subject of the current one. So this one is about Rapido and through the web. And I see here, there are four other documents about through the web. So this is dynamic. And this is something
30:20
you cannot do with Mosaic, right? With Mosaic, you can add a content, a field. So it can be an image, it can be a text. But you cannot compute stuff, right? So this is something Rapido allows. How it works? Well, this time, I'm going to have not just a layout. And here, my layout is not even HTML.
30:41
This is a PASH template. So again, I have this layout. And in this layout, I'm going to put some information from Python. Here, I'm using Python to implement different computations. So here, I have, for instance, tags. You're going to get
31:01
all the tags corresponding to the current content. So here, that's how it goes. I get the content from the context. And for each subject in the content, I'm going to get the score for the corresponding keywords. That's quite simple to implement. I won't go too much into detail. Maybe I should zoom in a little bit.
31:22
I don't know how to do that. Yes, probably better. So that's a simple Python script. And it is binded to the template using this YAML file where I declare all the
31:41
elements I want to use into my template. So it produces this. Now, we probably like this to do something. Right now, we're just displaying information. What I would like is it actually displays all the different contents having
32:01
the same tag. Through the web, I go here, and I see all the documents, all the folders, sorted in two tabs, about through the web. And here, if I click mockup, I'm going to do the same documents and folders. And I can have a preview.
32:20
Well, this is done with Rapido plus mockup. And it's really easy to do. It's actually a model pattern, a model mockup pattern, which displays a Rapido block which uses a pattern which contains a pattern which loads a content. Simple, right? Well, I'm going to show you how it is.
32:40
So this is the template. So it's just listing into a list all the different tags. That's pretty much the same as the previous example. And I have no, sorry. I have something to show here. I have been using this
33:01
pattern here, right? So that's the auto, sorry. The autotalk pattern is displaying the tabs, right? And here I am using content loader. So content loader is the pattern which is able to load something, so that's how I make the preview working. If I go
33:21
there. So that's the autotalk pattern. And when I click here, you're going to use the loader pattern, right? So that's quite simple. And here I have nothing to do but to put some accurate markup on my different tags. And that's enough. There is no JavaScript involved.
33:42
There are JavaScript involved, but not mine. I haven't been writing any JavaScript for that. And that's how my model is created, basically. So that's not a lot of code if you have a look. I have here I get the list. I get the title from the different
34:01
contents. That's not too much difficult to do. What I've been using here is the Plone API. So the Plone API is available within Rapido. So you can call context.api and do whatever you want with the Plone API. And Plone API is quite well documented, so it's quite easy to know how to do stuff. So here I'm using content.find
34:20
to make a search. And I'm searching everything having the same subject as the current subject, right? And this is the example I've been describing just before. So that's very simple to do, but still the result is quite interesting, right? This is not easy. If you try to imagine
34:42
how you would do that with regular Plone development, it would be not that easy, right? This is very simple and still quite impressive. Well, that's my opinion. So someone who is not a Plone developer can do that. Wow, that's cool. Now let's move to
35:01
a more advanced feature. Here I'm actually replacing the current view. All the examples before were just adding extra stuff into the regular Plone layout. So I've been adding a block here, and that's pretty much it, plus bind it to mockup to get extra stuff, JavaScript stuff.
35:20
Here I'm just replacing entirely the rendering of Plone with my own Rapido block. And what it does here is managing a glossary. So I can create definitions for the different terms. So I don't know, IP, internet protocol,
35:41
I can save, that's my new entry, I can edit, change, or I can delete. So that's using a persistence mechanism, a storage system, which is provided by Rapido by default. And I use it to actually enable this glossary wherever I am.
36:02
So if I go back to the home page of Plone, where we talk about SMTP, I think, yes, here I see that SMTP has been detected as part of my glossary and I can hover it and have the definition, right? So I've implemented a way to manage my glossary, so that's one thing, and I also injecting all my glossary information
36:22
into all the pages of the website. While this is not too difficult to do, I will not go totally in detail about this, but just show you the amount of code for that. We have basically the block which lists all the different definitions, that's the one. It has a small
36:41
Python script to just query the storage system to get the records and sort them. And we have a page for editing a term, so we have two information here, the term itself and its definition, plus the different buttons, save, delete, and close.
37:01
And here is the implementation in Python, it's really, really short, really small. That's it about managing the glossary term. And to inject the glossary information into my pages, that's JavaScript. So here, I'm just using the JSON API of Rapido.
37:20
Rapido provides a storage system plus a JSON API on top of it. This is not the plan REST API, because here we are not managing plan contents, but just small records. So that's the definition for glossary, but could be anything you want, like statistics, like visit counting, this kind of stuff can be stored that way.
37:40
And you don't want it to be actual plan contents, right? So we can require, I've been using JQuery, but it could be anything else. I get all the records from my glossary application, and then I search the page with a regep that way to replace all the words which match the term with a small
38:02
abbreviation tag with the title. That's quite simple. And that, okay, that might look a little bit difficult, that's JavaScript stuff, but that's something someone who knows about JavaScript can do in a few minutes, right? So that's my demo.
38:20
Thank you.