Sprint content type#
On our listing template are several buttons to add different content types. Among them is also one for adding Sprints. As this is not a content type that currently exists in our Plone instance we will use it as an example on how to create a new content type and a custom view for it.
Create Sprint content type#
Create this content type using the Dexterity content type control panel at http://localhost:3000/controlpanel/dexterity-types.
Name it Sprint
, then select it, go to the Behaviors
tab, and add the Blocks
and the event Basic
behaviors and save those.
Create the new view component#
For creating a new View we will now create a new Folder within src/components/
called Views
. In there create the file SprintView.jsx
which will contain the markup for our view.
We will use the default Document
view and add the Event Information on top. Beware that we are not modeling this View after the actual one from plone.org
, but creating our own version on how the View for the Sprint type might look like.
This what the code for it might look like:
import React from "react";
import { DefaultView } from "@plone/volto/components";
import { Container } from "semantic-ui-react";
import moment from "moment";
const SprintView = (props) => {
const { content } = props;
return (
<Container>
<p>
From {moment(content.start).format("MMMM D, YYYY")} to{" "}
{moment(content.end).format("MMMM D, YYYY")}
</p>
<DefaultView {...props} />
</Container>
);
};
export default SprintView;
The content key of the props will contain all the information about your content object.
Export this component as well via the src/components/index.js
and import it to config.js
.
To make the sprint
type use this view you need to assign it in the applyConfig
function:
config.views.contentTypesViews.sprint = sprintView;
Now, when you add a new sprint it will display the dates at the top above the main content.