Public Pages Configuration

Starting from Mica 4.0, the administration user interface is distinct from the public pages, i.e. pages that are to be accessed by regular users. These pages are based on templates that can be customized, extended or overridden. The template engine that is used is FreeMarker which has a clean and powerful syntax.

Page Templates

Configuring Pages

The main public pages are:

Page

Description

index

The home page

profile

The user profile page for updating personal information and password

signin

The login page

signup

The user registration page

signup-with

The user registration page, with form pre-filled with personal information extracted from a OpenID Connect server

forgot-password

The page to ask for password reset

just-registered

The welcome page after a user has registered

networks

The list of networks

network

The network page

studies

The list of studies and initiatives

study

The study page (can be individual study or harmonization initiative)

datasets

The list of datasets and protocols

dataset

The dataset page (can be collected datasets or harmonization protocols)

variable

The variable page (can be collected, data schema or harmonized)

search

The catalog search page

projects

The list of approved projects

project

The approved project page

data-access-process

The data access process presentation page

data-accesses

The list of data access requests (restricted access)

data-access

The data access request main page (there are other pages for each of the data access request forms and features)

data-access-agreement-form

The data access request agreement form page

data-access-amendment-form

The data access request amendment form page

data-access-comments

The data access request comments page

data-access-documents

The data access request documents page

data-access-feasibility-form

The data access request feasibility form page

data-access-form

The data access request main form page

data-access-history

The data access request history page

data-access-preliminary-form

The data access request preliminary form page

data-access-private-comments

The data access request private comments page

contact

The “Contact Us” form to send a contact request to the administrators or data access officers

cart

The variables/studies/networks cart page

The templates structure is organized in a way that it should not be necessary to override these main pages definitions. Instead of that, it is recommended to change/extend the theme/style as described in this guide.

The process of configuring these pages is the following (by order of priority):

1. Alter default settings

Some template variables (date formats, branding, favicon etc.) are defined in libs/settings.ftl and can be altered in the file models/settings.ftl that would be added in your configuration folder as follows:

MICA_HOME
└── conf
    └── templates
        └── models
            └── settings.ftl

If enough, this is the less intrusive approach. Note that you do not need to redefine all the settings, just reassign the ones of interest.

General settings

Variable

Description

defaultLang

The default language to be used when extraction labels from documents. If no text version is found for the page’s language, this default language’s version will be looked up.

datetimeFormat

The format in which the date-time values should be rendered.

date

The format in which the date values should be rendered.

faviconPath

The location of the favicon, to be modified to match your own.

brandImageSrc

The location of your organization’s logo.

brandImageClass

CSS classes to apply to the logo.

brandTextEnabled

Logical to show/hide a text aside of the logo.

brandTextClass

CSS classes to apply to the text aside of the logo.

networkIcon

CSS classes to apply to the <i> element to render the icon that represents a network.

studyIcon

CSS classes to apply to the <i> element to render the icon that represents a study.

initiativeIcon

CSS classes to apply to the <i> element to render the icon that represents a harmonization initiative.

datasetIcon

CSS classes to apply to the <i> element to render the icon that represents a dataset.

harmoDatasetIcon

CSS classes to apply to the <i> element to render the icon that represents a harmonization dataset.

variableIcon

CSS classes to apply to the <i> element to render the icon that represents a variable.

dataschemaIcon

CSS classes to apply to the <i> element to render the icon that represents a dataschema variable.

projectIcon

CSS classes to apply to the <i> element to render the icon that represents a project.

taxonomyIcon

CSS classes to apply to the <i> element to render the icon that represents a taxonomy.

adminLTEPath

The location of the AdminLTE theme if this one has been modified (see the Theme section in this documentation).

Home page settings

Variable

Description

networksLink

The link to list the networks. Default is the Networks menu.

studiesLink

The link to list the individual studies. Default is the Individual Studies menu.

initiativesLink

The link to list the harmonization initiatives. Default is the Harmonization Initiatives menu.

datasetsLink

The link to list the collected datasets. Default is the Collected Datasets menu.

protocolsLink

The link to list the harmonization protocols. Default is the Harmonization Protocols menu.

portalLink

The link applied to the logo. Default is the data portal itself (same as Home menu), but it could also be the organization’s main portal.

showSignin

Show the link to the Sign in page. Default is true when published content is private or data access request submission is enabled or the cart is enabled.

Cart page settings

Variable

Description

variablesCartEnabled

Logical to enable the cart of variables. Default is consistent with the application’s general configuration, but can be fine-tuned to make the cart visible to users within roles or groups.

studiesCartEnabled

Logical to enable the cart of studies. Default is consistent with the application’s general configuration, but can be fine-tuned to make the cart visible to users within roles or groups.

networksCartEnabled

Logical to enable the cart of networks. Default is consistent with the application’s general configuration, but can be fine-tuned to make the cart visible to users within roles or groups.

cartEnabled

Logical to show/hide the cart links (Cart menu, addition/removal to/from cart buttons). Default is true when one of the variables, studies or networks cart is enabled. It can be fine-tuned to make the cart visible to users within roles or groups.

listsEnabled

Logical to show/hide the lists links (Lists menu, addition to list buttons). Default is consistent with the application’s general configuration, but can be fine-tuned to make the lists visible to users within roles or groups.

showCartDownload

Logical to allow downloading the content of the cart. Default is restricted to users with administration-related role.

showCartViewDownload

Logical to allow downloading the content of the cart in the format of Opal views (for creating views in Opal from a variable selection). Default is restricted to users with administration-related role.

defaultCartType

Link to the cart page will show the specified cart type tab (one of ‘variables’, ‘studies’ or ‘networks’). Default is not specified, i.e. the first cart type tab will be active.

Compare page settings

Variable

Description

studiesCompareEnabled

Logical to enable the comparison of studies from the search page (no authentication required) or from the cart of studies (authentication required, see studiesCartEnabled).

networksCompareEnabled

Logical to enable the comparison of networks from the search page (no authentication required) or from the cart of studies (authentication required, see studiesCartEnabled).

Contact Us page settings

Variable

Description

contactEnabled

Logical to show/hide the Contact menu. Default is true, but can be restricted to users within roles or groups.

User Profile page settings

Variable

Description

showProfileRole

Logical to show/hide the role to which the user belongs.

showProfileGroups

Logical to show/hide the groups to which the user belongs.

Repository list pages settings

Variable

Description

listDisplays

Enumerate the different ways of rendering the lists of documents (networks, studies or datasets). Possible values are lines, table and cards. Some can be omitted (at least one is required) and the order matters.

listDefaultDisplay

Default display of a list of documents (networks, studies or datasets). Default is lines.

networkListDisplays

Specific enumeration of the different ways of rendering the lists of networks. Default is the same as specified by listDisplay.

networkListDefaultDisplay

Default display of a list of the networks. Default is the same as specified by listDefaultDisplay.

studyListDisplays

Specific enumeration of the different ways of rendering the lists of networks. Default is the same as specified by listDisplay.

studyListDefaultDisplay

Default display of a list of the studies. Default is the same as specified by listDefaultDisplay.

datasetListDisplays

Specific enumeration of the different ways of rendering the lists of networks. Default is the same as specified by listDisplay.

datasetListDefaultDisplay

Default display of a list of the studies. Default is cards.

Search page settings

Variable

Description

defaultSearchState

The state of the interface when entering the search page. Default is showing the list of studies or the list of variables when there is only one study.

defaultIndividualSearchState

The state of the interface when entering the individual search page. Default is showing the list of individual studies or the list of variables when there is only one study.

defaultHarmonizationSearchState

The state of the interface when entering the harmonization search page. Default is showing the list of harmonization initiatives or the list of variables when there is only one initiative.

downloadQueryEnabled

Logical to show/hide the button for downloading the results of the query. Default is true, but can be restricted to users within roles or groups.

showCopyQuery

Logical to show/hide the button for copying the query string, that can be used in the R or Python API. Default is restricted to users with administration-related role.

mapName

Map name to be used in the graphic geographical-distribution-chart. Default is world, possible values are world, europe, north-america, south-america, asia, africa or oceania.

searchCharts

Show/hide and order the graphics by specifying their name. Possible values are geographical-distribution-chart, study-design-chart, number-participants-chart, bio-samples-chart or study-start-year-chart.

searchVariableListDisplay

Logical to show/hide the list of variables resulting from the search. Default is consistent with the application’s general configuration.

searchDatasetListDisplay

Logical to show/hide the list of datasets resulting from the search. Default is consistent with the application’s general configuration.

searchStudyListDisplay

Logical to show/hide the list of studies resulting from the search. Default is consistent with the application’s general configuration.

searchNetworkListDisplay

Logical to show/hide the list of networks resulting from the search. Default is consistent with the application’s general configuration.

searchVariableColumns

Show/hide and order the column names for the list of variables. Possible values are label, label+description (variable label with a tooltip that shows the description), valueType, annotations, type, study, population, data-collection-event/dce, initiative, dataset or protocol. This configuration will be used when on the /search path.

searchVariableColumnsHarmonization

Same as the searchVariableColumns configuration but will be used when on the /harmonization-search path.

searchVariableColumnsIndividual

Same as the searchVariableColumns configuration but will be used when on the /individual-search path.

searchDatasetColumns

Show/hide and order the column names for the list of datasets. Possible values are name, type, networks, studies, initiatives or variables.

searchDatasetColumnsHarmonization

Same as the searchDatasetColumns configuration but will be used when on the /harmonization-search path.

searchDatasetColumnsIndividual

Same as the searchDatasetColumns configuration but will be used when on the /individual-search path.

searchStudyColumns

Show/hide and order the column names for the list of studies. Possible values are name, type, study-design, data-sources-available, participants, networks, individual or harmonization.

searchStudyColumnsHarmonization

Same as the searchStudyColumns configuration but will be used when on the /harmonization-search path.

searchStudyColumnsIndividual

Same as the searchStudyColumns configuration but will be used when on the /individual-search path.

searchNetworkColumns

Show/hide and order the column names for the list of networks. Possible values are name, studies, datasets, harmonization, individual or variables.

searchNetworkColumnsHarmonization

Same as the searchNetworkColumns configuration but will be used when on the /harmonization-search path.

searchNetworkColumnsIndividual

Same as the searchNetworkColumns configuration but will be used when on the /individual-search path.

searchVariableFields

List of the variable fields to be extracted from search results.

searchDatasetFields

List of the dataset fields to be extracted from search results.

searchStudyFields

List of the study fields to be extracted from search results.

searchNetworkFields

List of the network fields to be extracted from search results.

searchVariableSortFields

List of the variable fields to be used for sorting the search. Default is to sort by study, dataset, index (i.e. order in the dataset’s data dictionary) and name.

searchDatasetSortFields

List of the dataset fields to be used for sorting the search. Default is to sort by study, population, data collection event and acronym.

searchStudySortFields

List of the study fields to be used for sorting the search. Default is to sort by acronym.

searchNetworkSortFields

List of the network fields to be used for sorting the search. Default is to sort by acronym.

searchCoverageDisplay

Logical to show/hide the Coverage search results tab.

searchGraphicsDisplay

Logical to show/hide the Graphics search results tab.

searchListDisplay

Logical to show/hide the List search results tab.

searchCriteriaMenus

Show/hide the search criteria in the sidebar by specifying their type (possible values are variable, dataset, study, network).

Variable page settings

Variable

Description

showHarmonizedVariableSummarySelector

For a dataschema variable, allow the possibility to display the summary statistics of a specific harmonized variable. Default is true.

Data Access pages settings

Variable

Description

dataAccessInstructionsEnabled

Show/hide the instructions panel on the side of the data access form. Default is true.

dataAccessCalloutsEnabled

Show/hide the callout panels on the head of the data access pages. Default is true.

dataAccessReportTimelineEnabled

Show/hide the report timeline in the dashboard page when the data access is approved. Applies only when a project end date can be found. Default is true.

dataAccessArchiveEnabled

Show/hide the Archive button, to users with appropriate permissions and when the data access request is completed. Default is true.

showDataAccessEventsInComments

List of each data access form type which events are to be included in the life line of the comments, so that users can contextualize the comments with the changes of the data access forms status. Possible values are request, preliminary, feasibility, amendment and agreement, default is all.

Charts settings

Variable

Description

barChartBackgroundColor

Background color of the chart elements (the bars or the countries for instance).

barChartBorderColor

Border color of the chart elements.

colors

List of colors to be used for a set of chart elements (portions of a pie chart for instance).

Files settings

Variable

Description

showFiles

Logical to show/hide the files that are associated to the documents (networks, studies, populations, data collection events, datasets). Default is true, but can be restricted to users within roles or groups. Note that the files can themselves require permissions.

showNetworkFiles

Logical to show/hide the files that are associated to the networks. Default is the same as what specified by showFiles.

showStudyFiles

Logical to show/hide the files that are associated to the studies. Default is the same as what specified by showFiles.

showStudyPopulationFiles

Logical to show/hide the files that are associated to the study populations. Default is the same as what specified by showFiles.

showStudyDCEFiles

Logical to show/hide the files that are associated to the study data collection events. Default is the same as what specified by showFiles.

showDatasetFiles

Logical to show/hide the files that are associated to the datasets. Default is the same as what specified by showFiles.

Variables classifications charts settings

Variable

Description

variablesClassificationsTaxonomies

Enumerate the taxonomy names to render the charts of variables classifications coverage (count of variables annotated with each vocabulary). Default is Mlstr_area. If the list is empty, no chart will be displayed.

networkVariablesClassificationsTaxonomies

Enumerate the taxonomy names to render the charts of variables classifications coverage in the network page. Default value is variablesClassificationsTaxonomies.

studyVariablesClassificationsTaxonomies

Enumerate the taxonomy names to render the charts of variables classifications coverage in the study page. Default value is variablesClassificationsTaxonomies.

datasetVariablesClassificationsTaxonomies

Enumerate the taxonomy names to render the charts of variables classifications coverage in the dataset page. Default value is variablesClassificationsTaxonomies.

2. Override one of the page model templates

The model templates are to be found in the models folder. This allows to alter some portions of the pages, without affecting the general layout.

The override of the template is done by installing a file with same name, at the same relative location in the application’s configuration folder.

MICA_HOME
└── conf
    └── templates
        └── models
            └── <template name>.ftl

This is the preferred approach when a document’s model was modified (new fields added/removed to the network, study, dataset etc.).

3. Override the main page templates

These templates are located at the templates’ root folder. This gives full control of the page content but may ignore enhancements or break when upgrading the application.

The override of the template is done by installing a file with same name, at the same relative location in the application’s configuration folder.

MICA_HOME
└── conf
    └── templates
        └── <template name>.ftl

Adding Pages

It is possible to add new pages, for providing additional information or guidance to the regular user. This can be done as follows:

  • Install a new page templates

  • Add a new menu entry

1. Install custom page template

The new template page is to be declared in the configuration folder:

MICA_HOME
└── conf
    └── templates
        └── custom.ftl

You can check at the provided templates to make your template fit in the site theme and structure. The profile page template could be a good starting point.

FreeMarker will look at its context to resolve variable values. For a custom page the objects available in the context are:

Object

Description

config

The Mica configuration

user

The user object (if user is logged in)

roles

The list of user roles: mica-administrator, mica-reviewer, mica-editor, mica-data-access-officer or mica-user (if user is logged in)

query

The URL query parameters as a map of strings

This custom template page can load any CSS or JS file that might be useful. These files can be served directly by adding them as follows (there are no restrictions regarding the naming and the structure of these files, as soon as they are located in the static folder):

MICA_HOME
└── conf
    └── static
        ├── custom.css
        └── custom.js

The URL of this custom page will be for instance: https://mica.example.org/page/custom.

2. Custom menu entry

To link to a custom page (or an external page), some templates can be defined to extend the default menus: left menu can be extended on its right and right menu can be extended on its left. The corresponding templates are:

MICA_HOME
└── conf
    └── templates
        └── models
            ├── navbar-menus-left.ftl
            └── navbar-menus-right.ftl

Check at the default left and right menus implementation as a reference.

Theme and Style

Theme

The default theme is the one provided by the excellent AdminLTE framework. It is based on Bootstrap and JQuery. In order to overwrite this default theme, the procedure is the following:

  • Build a custom AdminLTE distribution

  • Install this custom distribution

  • Change the template settings so that pages refer to this custom distribution instead of the default one

1. Build custom AdminLTE

This requires some knowledge in CSS development in a Node.js environment:

  • Download AdminLTE source (source code or a released version)

  • Reconfigure Sass variables

  • Rebuild AdminLTE (see instructions in the README file, contributions section)

2. Install custom AdminLTE

The objective is to have the web server to serve this new set of stylesheet and javascript files. This is achieved by creating the folder MICA_HOME/conf/static and copying the AdminLTE custom distribution in that folder. Not all the AdminLTE are needed, only the dist and plugins ones. The folder tree will look like:

MICA_HOME
└── conf
    └── static
        └── admin-lte
            ├── dist
            └── plugins

3. Template settings

Now that the custom AdminLTE distribution is installed in the web server environment, this new location must be declared in the page templates. The default templates settings are defined in the libs/settings.ftl template file. See the adminLTEPath variable. This variable can be altered by defining a custom settings.ftl file as follows:

MICA_HOME
└── conf
    └── templates
        └── models
            └── settings.ftl

In this custom settings.ftl file the new AdminLTE distribution location will be declared:

adminLTEPath = "/admin-lte"/>

Style

As an alternative to theming, it is also possible to alter the style of the pages by loading your own stylesheet and tweaking the pages’ layout using javascript (and JQuery). The procedure is the following:

  • Install custom CSS and/or JS files

  • Custom the templates to include these new CSS and/or JS assets

1. Install custom CSS/JS

The objective is to have the web server to serve this new set of stylesheet and javascript files. This is achieved by creating the folder MICA_HOME/conf/static and copying any CSS/JS files that will be included in the template pages. The folder tree will look like:

MICA_HOME
└── conf
    └── static
        ├── custom.css
        └── custom.js

2. Custom templates

For the CSS files, the models/head.ftl template allows to extend the HTML pages “head” tag content with custom content. For the JS files, the models/scripts.ftl template allows to extend the HTML pages “script” tags. The folder tree will look like:

MICA_HOME
└── conf
    └── templates
        └── models
            ├── head.ftl
            └── scripts.ftl

Where the head.ftl template will be:

<link rel="stylesheet" href="/custom.css"/>

And the scripts.ftl template will be:

<script src="/custom.js"/>

Translations

The translations are performed in the following order, for a given locale:

  1. check for the message key in the messages_<locale>.properties (at different locations)

  2. check for the message key in the <locale> JSON object as defined the Administration > Translations section of the administration interface

For the messages_* properties, the translations can be added/overridden as follows:

MICA_HOME
└── conf
    └── translations
        ├── messages_fr.properties
        └── messages_en.properties

Note that you can declare only the messages_* properties files that are relevant (locales available from the website) and the content of these files can contain only the translation keys that you want to override.