In this tutorial you will learn how to add a new tab to your custom document type. This tab will help you to find other contracts created for the same contract owner. To do so, we'll be using a custom page provider linked to the Contract document type.
Prerequisites
- A Contract document type created in Nuxeo Modeler
- Make sure that the Nuxeo Web UI addon is installed on your instance.
Once you are all set, you can navigate to Modeler to start creating your search.
Create a Page Provider
Jump between any Studio feature or menu in a snap by typing its name. This action can be triggered by clicking the Jump To option on the bottom left of your Studio project, or using the Ctrl + K / ⌘ + K shortcut.
- In Studio Modeler, go to Customization, go to Page Providers, click on New and name it otherContracts.
In the Query filter add the following line
AND ecm:primaryType='Contract'
. This will enable to only search contract documents. You should end up with something like this:ecm:mixinType != 'HiddenInNavigation' AND ecm:isVersion = 0 AND ecm:isTrashed = 0 AND ecm:primaryType='Contract'
Now we will add aggregates to customize the search.
The search by owner of the contract:
- Add another new Predicates
- Click on Edit binding and select
schema:contract
>owner
The search by date range:
- Next to Aggregates click on Add A popup window appears.
- Fill the popup window like this:
Field dc:created Date Ranges - Label:
Last year
From:now-1y
To:now-1M
- Label:
Last month
From:now-1M
To:now-7d
- Label:
Last week
From:now-7d
To:now-24H
- Label:
Last 24h
From:now-24H
To:now
- Label:
- Save your changes.
Configure Layouts
Once you are all set, you can navigate to the Studio Designer to configure your layouts.
- In UI, go to Layouts > Page Providers > otherContracts
- Click on form and then Configure, it will automatically create the
nuxeo-othercontracts-search-form
layout. - Do the same with the result button, click on Configure, the
nuxeo-othercontracts-search-results
layout is created.
Configure Labels
You now need to add your labels to your translations file to display them correctly in the UI. To do so:
- Click on the UI table.
- Click on Translations.
- Use the default
messages.json
or create your own language. - Create a new entry in the JSON file with key
label.ui.aggregate.<label>
and the label as value. Here it's:"label.ui.aggregate.from_now-1y_to_now-1M":"Last year"
"label.ui.aggregate.from_now-1M_to_now-7d":"Last month"
"label.ui.aggregate.from_now-7d_to_now-24H":"Last week"
"label.ui.aggregate.from_now-24H_to_now":"Last 24H"
You can now save your changes and go to the Designer.
Create a Listing
Go to the Designer:
- Click on UI > Tabs
- Hover over the Create button and select the Listing type
- Name it
other-contracts
. - Fill in the creation form like this:
- Fill in the Element & Attributes section like this:
- Fill in the Filters section like this:
- Current user has one of the permissions:
Edit
- Current document has one of the types:
Contract
- Current user has one of the permissions:
- Save your changes.
You can now deploy your project on your instance and see what it looks like!