ECIS Help 0.1-DEV Help

CMS Extensions

Advisory board city list

{{ advisory_board_city_list( { amount: null, amount_per_page: 12, cols: 3, search: false, paginated: false, } ) }}

Advisory board tender website list

{{ advisory_board_city_tender_website_list( { amount: null, amount_per_page: 12, cols: 3 } ) }}

Advisory board member list

{{ advisory_board_member_list( { amount: 80, amount_per_page: 12, cols: 3, } ) }}

Advisory board solution list

{{ advisory_board_solution_list( { board: null, amount: null, amount_per_page: 12, cols: 3, search: false, paginated: false, } ) }}

Article

  • id (optional): id of the Article

{{ article( { id: 1234 } ) }}

Calendar

The calendar handler shows a list of items from the calendar

which: upcoming (default), past, all, highlight

{{ calendar( { cols: 3, paginated: true, amount: 8, amount_per_page: 9, search: false, which: 'upcoming', types: [32] } ) }}

Amount cannot be combined with paginated

Country map

The extension country_map prints a map of the world or europe and selected country can be highlighted

The following options can be used

  • countries (array): Country objects

  • color_min (string): HEX code of the unselected country

  • color_max (string): HEX code of the selected country

  • height (string): Height of the map

  • width (string): Width of the map

  • world (boolean): Set to true if the map of the world should be shown

{{ country_map({ countries: { country1, country2, }, color_min: '#d9d9d9', color_max: '#000082', height: '600px', width: '100%, world: false }) }}

Country funders

The extension country_funders shows a list of PA of the country (only when visible on website is turned on)

The following options can be used

  • country (string): ISO3 code of the country of which information should be shown. If no values is given the country will be taken from the URL (docref)

{{ country_funders({ 'country' : 'iso3', 'cols' : 4, }) }}

Country videos

The extension country_videos shows a list of recorded funding videos of the country

The following options can be used

  • country (string): ISO3 code of the country of which information should be shown. If no values is given the country will be taken from the URL (docref)

{{ country_videos({ 'country' : 'iso3', 'cols' : 2, }) }}

Country page

The extension country_page renders the information from the country (special) page

The following options can be used

  • country (string): ISO3 code of the country of which information should be shown. If no values is given the country will be taken from the URL (docref)

{{ country_page({ 'country' : 'iso3' }) }}

Country list

The country_list extension renders a list of countries. The following options can be used:

  • is_itac: boolean, if true only ITAC countries are shown

{{ country_list({ 'is_itac': false }) }}

Get country

The get_country extension returns an object with information about the country in the URL

{% set countryData = get_country() %}

The countryData object has the following properties:

  • country: The country object

  • projects: Amount of projects

  • partners: Amount of partners

  • personYears: Amount of person years

  • costs: Amount of costs

  • impactStories: amount of impact stories

These properties can be used in the page like this:

Country {{ countryData.country.country }} has {{ countryData.partners }} partners

A default page for a country could look like this

{% set countryData = get_country() %} {% set country = countryData.country %} {% do headTitle().append(country.country) %} <div class="container"> <div class="row"> <div class="col-md-4"> <h1 class="display-1">{{ country.country }}</h1> <h2>{{ translate("txt-country-information") }}</h2> <a href="/participating-partners.html?facet%5Bcountry%5D%5Bvalues%5D%5B%5D={{ country.country }}&query=">{{ countryData.partners }} {% if countryData.partners == 1 %}{{ translate("txt-partner")|lower }}{% else %}{{ translate("txt-partners")|lower }}{% endif %}</a> <br> <a href="/project-overview.html?facet%5Bcountry%5D%5Bvalues%5D%5B%5D={{ country.country }}&query=">{{ countryData.projects }} {% if countryData.projects == 1 %}{{ translate("txt-project")|lower }}{% else %}{{ translate("txt-projects")|lower }}{% endif %}</a> <br> </div> <div class="col-md-8"> {{ country_map({selected_country: country}) }} </div> </div> </div> <div class="bg-light py-5"> <div class="container"> {{ country_funders({country: country}) }} </div> </div> {{ country_videos({country: country}) }}

Image

This handler will return only the Image URL, to use in the CMS it has to be wrapped in <img src="{{ image }}">"

Resize: resize/fitin width:

{{ image({ id : 1234, url: 'https://www.example.com/image.jpg', resize : 'resize', width : 100, height : 100, crop: { left: 0, top: 0, right: 100, bottom: 100 } }) }}

Image can be URL or ID in image database

{{ carousel({'items' : [ {image: 11352, url:'https://www.nu.nl'}, {image: 11330, url:'https://www.nu.nl'} ]}) }}

Result list

The extension result_list prints a list of result, which include

The following options can be used

  • countries (array | string): List of ISO3 codes of the countries where should be filtered on

  • types (array): List of result type ids where should be filtered on

  • list_style (string): Style of the list (impact_stream, grid, list)

{{ result_list( { type: [12, 24], country: 'NLD', cols: 3, paginated: true, show_abstract: true, amount: 8, amount_per_page: 9, search: false, list_style: 'grid' } ) }}

Amount cannot be combined with paginated

Result

The extension result prints a result, taking the result from the URL

{{ result() }}

Magazine list

  • type (string): magazine or annual_report

{{ magazine_list( { type: 'magazine', headerText: '<h1>Hello world</h1>', } ) }}

The rest of the pages (table of contents and the articles) are handled by the system

Magazine article list

{{ magazine_article_list( { amount: 10, cols: 4, query: '', country: ['NLD'], project: [1245], organisation: [12], list_style: 'grid, order: 'date_published', direction: 'desc', } ) }}

News message

The extension get_news_messsage gets the news message from the URL

{{ get_news_message()}}

A default news page could be created with the following code:

{% set news = get_news_message() %} {% if news.css %} {% do headStyle().appendStyle(news.css) %} {% endif %} {% do headTitle().append(news.news) %} <div class="container header-container"> <div class="text-muted"> {{ translate("txt-published-on-%s")|format(news.datePublished|date('d M Y')) }} {% if news.subTitle|length > 0 %} · {{ news.subTitle }} {% endif %} {{ newsLink(news,'edit','icon') }} </div> <h1 class="display-4 mt-0 pb-0">{{ news.news }} </h1> </div> <div class="container"> {% include template_from_string(news.bodyText) %} </div> {% if news.project.count() > 0 %} <div class="bg-light py-3 mt-5"> <div class="container"> <h2 class="pb-3">{{ translate("txt-news-project-list") }}</h2> <div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4"> {% for project in news.project %} {% include 'extensions/project/partial/project-block' with {'project' : project} %} {% endfor %} </div> </div> </div> {% endif %}

News list

The handler news_list shows news messages in a list. There are 2 optional parameters:

  • limit: The number of news messages to show

  • category: Filter the news by a specific category

  • organisation: Filter the news by a connected organisation

  • project: Filter the news by a connected project

  • sort: title or date_published or score

{{ news_list ( { amount: 10, category: 1, search: true, paginated: true, cols: 4, amount_per_page: 9, highlighted: true, query: 'Sweden', sort: 'date_published', direction: 'asc', organisation: 12, project: 14, } )}}

Organisation list

The extension organisation_list prints a list of organisations

If a selection is used, the following properties are also available:

{{ selection.title }} {{ selection.introductionText }}

The following list styles are available

  • grid

  • list (default)

{{ organisation_list( { selection: 1, country: 'NLD', cols: 3, paginated: true, amount: 8, amount_per_page: 9, search: false, list_style: 'grid', query: 'Sweden', sort: ['projects','projects_on_website','projects_on_website_last_ten_years'], direction: 'asc' organsation_types:['gov,'ind'], show_elements: ['country', 'organisation_type'] } ) }}

Organisation

The extension get_organisation retrieves the organisation from the URL to be used in the Node.

Use the following code to get the organisation

{% set organisation = get_organisation() %}

An example organisation page can be created as follows

{% set organisation = get_organisation() %} {% if not organisation %} <div class="container"> <div class="alert alert-danger"> This organisation does not exist. </div> </div> {% endif %} {% if organisation %} {% do headTitle().append(organisation.name) %} <div class="container"> <h1 class="pt-3">{{ organisation }}</h1> <div class="row"> <div class="col-md-8"> {% if organisation.description %} {{ organisation.description|striptags('<br><a><p><ul><li><strong><em>')|raw }} {% endif %} </div> <div class="col-md-4"> <img class="img-fluid mb-3" src="{{ organisation_logo({organisation: organisation, width: 250, show: constant("General\\ValueObject\\Image\\ImageDecoration::SHOW_RAW")}) }}"> <dl> <dt>{{ translate("txt-type") }}</dt> <dd>{{ organisation.type }} {{ organisationLink(organisation,'view-admin','icon') }} {{ organisationLink(organisation,'edit','icon') }}</dd> <dt>{{ translate("txt-country") }}</dt> <dd>{{ countryFlag(organisation.country, 15) }} {{ countryLink(organisation.country,'view', 'name') }}</dd> {% for web in organisation.web|filter(web => web.isMain()) -%} {% if loop.first %} <dt>{{ translate("txt-website") }}</dt>{% endif %} <dd><a href="{{ web }}">{{ web }}</a></dd> {% endfor %} {% for news in organisation.news|filter(news => not news.isHidden()) -%} {% if loop.first %} <dt>{{ translate("txt-news-items") }}</dt>{% endif %} <dd> <i class="fas fa-bullseye"></i> <a href="{{ newsLink(news,'view','raw') }}">{{ news }}</a> ({{ news.datePublished|date('d F Y') }}) </dd> {% endfor %} </dl> </div> </div> </div> <div class="bg-light clearfix py-4 my-4"> <div class="container"> <h2>Project participation</h2> {{ project_list( { organisation: organisation.id, cols: 3, paginated: false, search: false, only_with_award: false, list_style: 'grid' } ) }} </div> </div> {% endif %}
{{ organisation_logo( { organisation: organisation width: 100, } ) }}

Project list

list_style: grid, carousel

{{ project_list( { selection: 1, country: 'NLD', organisation: [1,2 3], challenge: [1,2,4] cols: 3, paginated: true, amount: 8, amount_per_page: 9, show_project_description: false, show_project_leader: false, search: false, only_with_award: false, award_year: [2024] list_style: 'grid' } ) }}

In case a selection is used, the selection object is parsed into the view. This object contains the following properties:

{} {}

Amount cannot be combined with paginated

Project

If a project page needs to be rendered, first the project variable has to be called via the get_project() extension. This can be done in the following way.

{% set project = get_project() }

If the project variable is set, the following helpers are available:

  • {{ project.title }}: The title of the project

  • {{ project.parseFullName }}: Prints the full name of the project: Number + Title

  • {{ project_header }}: A helper which prints the header image

  • {{ project_banner }}: A helper which prints wire-banner with project information

  • {{ project_leader }}: A helper which shows the project leader and his participation. In this helper also al list of flags is included

  • {{ project_partners }}: A helper which shows the project participants grouped per country

  • {{ project_documents }}: A helper which shows a list of all public project documents (news items, magazine articles etc)

Example project page

An example project page could be

{% set project = get_project() %} {% do headTitle().append(project.parseFullName) %} {{ project_header({project: project }) }} {{ project_banner({project: project }) }} <div class="container pt-4"> {{ project_leader({project: project }) }} <h2>{{ translate("txt-project-description") }}</h2> <div class="row"> <div class="col-md-8"> {{ project.description }} {{ projectLink(project,'view-admin','icon') }} {{ projectLink(project,'edit-admin','icon') }} </div> <div class="col-md-4"> <span class="float-end">{{ projectLogo(project, 250) }}</span> </div> </div> {% for web in project.web|filter(web => web.isMain()) -%} <br> <a title="{{ web }}" href="{{ web }}" target="_blank">{% if web.label %}{{ web.label }}{% else %}{{ web.web }}{% endif %}</a><br> {% endfor %} </div> <div class="container pt-5"> <ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item"> <a class="nav-link active" id="partner-tab" data-bs-toggle="tab" href="#partner" role="tab" aria-controls="home" aria-selected="true">{{ translate("txt-partners") }}</a> </li> <li class="nav-item"> <a class="nav-link" id="document-tab" data-bs-toggle="tab" href="#document" role="tab" aria-controls="document" aria-selected="false">{{ translate("txt-documents") }}</a> </li> </ul> </div> <div class="tab-content" id="myTabContent"> <div class="tab-pane fade show active" id="partner" role="tabpanel" aria-labelledby="partner-tab"> <div class="container"> {{ project_partners({project: project}) }} </div> </div> <div class="tab-pane fade" id="document" role="tabpanel" aria-labelledby="document-tab"> <div class="container"> {{ project_documents({project: project}) }} </div> </div>

Blog message

The extension get_blog_messsage gets the blog message from the URL

{{ get_blog_message()}}

A default blog page could be created with the following code:

{% set blog = get_blog_message() %} {% if blog.css %} {% do headStyle().appendStyle(blog.css) %} {% endif %} <div class="container header-container"> <div class="text-muted"> {{ translate("txt-published-on-%s")|format(blog.datePublished|date('d M Y')) }} {% if blog.subTitle|length > 0 %} · {{ blog.subTitle }} {% endif %} {{ blogLink(blog,'edit','icon') }} </div> <h1 class="display-4 mt-0 pb-0">{{ blog.blog }} </h1> </div> <div class="container"> {% include template_from_string(blog.bodyText) %} </div>

Blog comment

A comment field for a blog can be created with the following code.

  • blog (required): The blog

{{ blog_comment_form({ blog: blog }) }}

Latest blog messages

This extension fetches the latest blog messages from the database. The following parameters can be used:

  • amount (required): The amount of blog messages to be shown

{{ blog_latest_blogs({ amount: 5 }) }}

Blog list

The handler blog_list shows blog messages in a list. There are 2 optional parameters:

  • limit: The number of blog messages to show

  • category: Filter the blog by a specific category

  • sort: title or date_published or score

{{ blog_list ( { amount: 10, search: true, paginated: true, cols: 4, amount_per_page: 9, show_highlighted: true, query: 'Sweden', sort: 'date_published', direction: 'asc' } )}}

Press article

The extension get_press_article gets the Press article from the URL

{% set article = get_press_article() %}

A default press message page could be created with the following code:

{% set article = get_press_article() %} <div class="container"> <div class="border-top border-bottom text-muted py-2"> {{ article.dateReleased|date('d F Y') }} <span class="px-2">&middot;</span> {{ translate("txt-source") }}: <a href="{{ article.url }}">{{ article.bureau }}</a> <span class="px-2">&middot;</span> <a href="{{ pressArticleLink(article, 'download','raw') }}">{{ translate("txt-download-pdf") }}</a> {% set editPressArticleLink = pressArticleLink(article,'edit','icon') %} {% if editPressArticleLink %} <span class="float-end"> {{ translate('txt-admin') }}: {{ pressArticleLink(article,'view-admin','icon') }} {{ editPressArticleLink|raw }} </span> {% endif %} </div> <h1>{{ article.article }}</h1> <p>{{ article.content|raw }}</p> </div> {% if article.project.count() > 0 %} <div class="bg-light py-5"> <div class="container"> <h2>{{ translate("txt-news-project-list") }}</h2> <div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4"> {% for project in article.project %} {% include 'extensions/project/project-grid' with {'project' : project} %} {% endfor %} </div> </div> </div> {% endif %}

Press article list

The handler press_article_list shows press articles in a table. There are 2 optional parameters:

  • limit: The number of blog messages to show

  • sort: title or date_published or score

{{ press_article_list ( { amount_per_page: 9, sort: 'date_published', direction: 'asc' } )}}

Challenge

The extension get_challenge gets the Press article from the URL

{% set challenge = get_challenge() %}

A default challenge could be created with the following code:

{% set challenge = get_challenge() %} {% do headTitle().append(challenge.challenge) %} {% if challenge.css %} {% do headStyle().appendStyle(challenge.css) %} {% endif %} {{ challenge.html|raw }} <div class="bg-light py-5"> <div class="container"> <h2>Projects related to the challenge {{ challenge.challenge }}</h2> {{ project_list( { challenge: challenge.id, cols: 3, paginated: false, search: false, only_with_award: false, list_style: 'grid' } ) }} </div> </div>

Challenge list

The handler challenge_list shows press articles in a table. There are 2 optional parameters:

  • cols: the amount of columns

{{ challenge_list ( { cols: 2, } )}}

Exploitable results

The extension exploitable_result_list prints a list of exploitable results, which include

The following options can be used

  • list_style (string): Style of the list (grid, list)

{{ exploitable_result_list( { cols: 3, paginated: true, amount: 8, amount_per_page: 9, search: false, list_style: 'grid' } ) }}

Amount cannot be combined with paginated

Exploitable result

The extension get_exploitable_result grabs the Exploitable from the URL

{% set exploitableResult = get_exploitable_result() %} {% include 'project/achievement/exploitable-result/preview/content' %}

Idea Meeting list (workgroup sessions)

The extension idea_meeting_list grabs the workgroup sessions from the database

{{ idea_meeting_list( { tool_id: 12 } ) }}

Idea Session (Pitch and update sessions) schedule

The extension idea_session produces a schedule of the pitch and update sessions, per session

{{ idea_session( { session_id: 12 } ) }}

Idea Session (Pitch and update sessions) subscribe

The extension idea_session_subscribe produces a subscribe form for the pitch, update and result sessions and country information sessions, per tool

{{ idea_session_subscribe( { session: [12, 14, 16, 18, 20] } ) }}

Idea status updates

The extension idea_status_updates grabs the status updates from the database

{{ idea_status_updates( { tool_id: 12 } ) }}

Idea Posters

The extension idea_posters grabs the posters from the database, per PIT Tool

{{ idea_posters( { tool_id: 12 } ) }}

Idea Videos

The extension idea_videos grabs the videos from the database, per PIT session

{{ idea_videos( { tool_id: 12 } ) }}

Simple registration form

The extension registration_form grabs the videos from the database, per PIT session

{{ registration_form( { meeting_id: 12, registration_confirmation_alert: 'Thank you for registering' } ) }}

Participant finder

The extension participants_list grabs the videos from the database, per PIT session

{{ participants_list( { meeting_id: 12 } ) }}

Floor plan

The extension floorplan renders the floorplan with the project ideas

{{ floorplan( { meeting_id: 12 } ) }}

Video

The extension video renders the video embedded in a div with play button

{{ video( { id: 12 } ) }}
Last modified: 11 April 2025