first commit
This commit is contained in:
commit
6b5d2f04f0
|
@ -0,0 +1,29 @@
|
||||||
|
<!-- @file Instructions on how to sub-theme the Drupal Bootstrap base theme using the CDN Starterkit. -->
|
||||||
|
<!-- @defgroup subtheme_cdn -->
|
||||||
|
<!-- @ingroup subtheme -->
|
||||||
|
# CDN Starterkit
|
||||||
|
|
||||||
|
The CDN Starterkit is rather simple to set up. You don't have to do anything
|
||||||
|
until you wish to override the default [Drupal Bootstrap] base theme settings
|
||||||
|
or provide additional custom CSS.
|
||||||
|
|
||||||
|
- [Prerequisite](#prerequisite)
|
||||||
|
- [Override Styles](#styles)
|
||||||
|
- [Override Settings](#settings)
|
||||||
|
- [Override Templates and Theme Functions](#registry)
|
||||||
|
|
||||||
|
## Prerequisite
|
||||||
|
Read the @link subtheme Sub-theming @endlink parent topic.
|
||||||
|
|
||||||
|
## Override Styles {#styles}
|
||||||
|
Open `./subtheme/css/style.css` and modify the file to your liking.
|
||||||
|
|
||||||
|
## Override Settings {#settings}
|
||||||
|
Please refer to the @link subtheme_settings Sub-theme Settings @endlink topic.
|
||||||
|
|
||||||
|
## Override Templates and Theme Functions {#registry}
|
||||||
|
Please refer to the @link registry Theme Registry @endlink topic.
|
||||||
|
|
||||||
|
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
|
||||||
|
[Bootstrap Framework]: http://getbootstrap.com
|
||||||
|
[jsDelivr CDN]: http://www.jsdelivr.com
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Default settings should not be located here. This file is only used to
|
||||||
|
# override existing settings. If your theme is the one that introduces a new
|
||||||
|
# theme setting, it should use the Drupal Bootstrap base theme's
|
||||||
|
# @BootstrapSetting annotation discovery process. This ensures that sub-theme
|
||||||
|
# settings are inherited from base themes themes properly and to determine when
|
||||||
|
# a setting should be saved to config as "overridden".
|
||||||
|
#
|
||||||
|
# @see \Drupal\bootstrap\Plugin\SettingBase
|
||||||
|
# @see \Drupal\bootstrap\Plugin\SettingInterface
|
||||||
|
# @see \Drupal\bootstrap\Plugin\SettingManager
|
||||||
|
# @see \Drupal\bootstrap\Plugin\Form\SystemThemeSettings
|
||||||
|
# @see \Drupal\bootstrap\ThemeSettings
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Schema for the theme setting configuration file of the THEMETITLE theme.
|
||||||
|
|
||||||
|
THEMENAME.settings:
|
||||||
|
type: theme_settings
|
||||||
|
label: 'THEMETITLE settings'
|
Binary file not shown.
After Width: | Height: | Size: 139 B |
|
@ -0,0 +1,443 @@
|
||||||
|
/**
|
||||||
|
* Place your custom styles here.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*******************
|
||||||
|
HEADER */
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2, h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.page-top {
|
||||||
|
background-color: #dddddd;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.region-top {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
max-width: 1140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-languageswitcher-3 {
|
||||||
|
float: left;
|
||||||
|
margin-right: auto;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-languageswitcher-3 ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-languageswitcher-3 li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-languageswitcher-3 li a {
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-languageswitcher-3 li a.is-active {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-socialmenu-3 {
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-socialmenu-3 ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-socialmenu-3 li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@media screen and (min-width:768px) {
|
||||||
|
.navbar.container {
|
||||||
|
max-width:720px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width:992px) {
|
||||||
|
.navbar.container {
|
||||||
|
max-width:940px
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (min-width:1200px) {
|
||||||
|
.navbar.container {
|
||||||
|
max-width:1140px
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.navbar-default .navbar-text {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
font-size: 23px;
|
||||||
|
margin: 0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-btn {
|
||||||
|
margin: 10px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-collapse {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-search {
|
||||||
|
float: right;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************
|
||||||
|
MENU */
|
||||||
|
|
||||||
|
header.navbar-default {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
header.container {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-header {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-main-menu ul.navbar-nav {
|
||||||
|
display: table;
|
||||||
|
/* table-layout: fixed; */
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 2px #cf3b3b solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-main-menu ul.navbar-nav li {
|
||||||
|
display: table-cell;
|
||||||
|
float: none;
|
||||||
|
width: 14.2857%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-main-menu ul.navbar-nav li a {
|
||||||
|
color: #aaa;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-main-menu ul.navbar-nav li a.is-active, #block-gridspinoza-main-menu ul.navbar-nav li.active a {
|
||||||
|
color: #000;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************
|
||||||
|
SIDEBAR */
|
||||||
|
|
||||||
|
div.region-sidebar-second {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1.page-header, div.region-sidebar-second h2.block-title {
|
||||||
|
text-transform: uppercase;
|
||||||
|
background-image: url("line.png");
|
||||||
|
background-position: left bottom;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2.block-title {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.region-sidebar-second ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.region-sidebar-second li {
|
||||||
|
line-height: 1.5;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.region-sidebar-second a {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside.col-sm-3 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.region-sidebar-second h3 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-views-block-programs-block-1 span.Open {
|
||||||
|
color: #0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#block-gridspinoza-views-block-programs-block-1 span.Closed {
|
||||||
|
color: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************
|
||||||
|
CONTENT */
|
||||||
|
|
||||||
|
h1.page-header {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-25 h2, .page-node-236 h2, .path-activities h2, .path-partners caption {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 26px;
|
||||||
|
background-image: url("line.png");
|
||||||
|
background-position: left bottom;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-partners caption {
|
||||||
|
margin-top: 0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-25 h3 a, .path-activities h3 a, .path-resources h3 a, .path-research-fields h3 a,
|
||||||
|
.path-researchers h3 a, .path-programs h3 a, .path-partners h3 a, .path-frontpage h3 a,
|
||||||
|
.page-node-type-partner h3 a, .page-node-type-research-field h3 a, .page-node-type-program h3 a {
|
||||||
|
color: #cf3b3b;
|
||||||
|
margin-top: 30px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-25 h1.page-header, .page-node-236 h1.page-header, .path-partners h1.page-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-researchers img, .path-research-fields img, .path-programs img,
|
||||||
|
.page-node-type-researcher .field--name-field-image img {
|
||||||
|
float: left;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-researcher .field--name-field-image img {
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-frontpage h3, .page-node-type-partner h3, .page-node-type-research-field h3, .page-node-type-program h3 {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-researchers h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.project-researcher {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.project-researcher a {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*span.project-btn*/
|
||||||
|
.views-field-view-node {
|
||||||
|
text-align: right;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.views-col {
|
||||||
|
padding-right: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-researchers .views-row {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.path-search .views-row {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#views-exposed-form-search-content-page-1 {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#views-exposed-form-search-content-page-1 label {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field--name-field-funders h2,
|
||||||
|
.field--name-field-resource h2 {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.field--name-field-funders .field--item, */
|
||||||
|
.field--name-field-resource .field--item {
|
||||||
|
width: 210px;
|
||||||
|
float: left;
|
||||||
|
min-height: 80px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.field--name-field-funders, .field--name-field-funders .field__items, */
|
||||||
|
.field--name-field-resource, .field--name-field-resource .field__items {
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-program .view-projects-by-program,
|
||||||
|
.page-node-type-research-field .view-projects-by-research-field {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-researcher .views-element-container, .page-node-type-research-field .views-element-container {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-project article .views-element-container,
|
||||||
|
.page-node-type-event article .field--name-field-images {
|
||||||
|
float: left;
|
||||||
|
width: 375px;
|
||||||
|
margin-bottom: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-research-field article .field--name-field-image {
|
||||||
|
float: left;
|
||||||
|
width: 375px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-research-field article .field--name-field-image-caption {
|
||||||
|
float: left;
|
||||||
|
width: 325px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-research-field article div.field--name-body {
|
||||||
|
padding-left: 375px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-project #resource-list .views-element-container {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-project .field--name-body,
|
||||||
|
.page-node-type-event .field--name-body {
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-project .field--name-body {
|
||||||
|
-webkit-column-count: 2;
|
||||||
|
-moz-column-count: 2;
|
||||||
|
column-count: 2;
|
||||||
|
-moz-column-gap: 2em;
|
||||||
|
-webkit-column-gap: 2em;
|
||||||
|
column-gap: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-node-type-program .field--name-body,
|
||||||
|
.page-node-type-partner .field--name-body,
|
||||||
|
.page-node-type-researcher .field--name-body,
|
||||||
|
.page-node-type-call .field--name-body {
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination > li > a, .pagination > li > span {
|
||||||
|
background-color: #fff;
|
||||||
|
border-color: #ccc;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active {
|
||||||
|
background-color: #ccc;
|
||||||
|
border-color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.page-node-type-partner .view-programs-by-partner .views-row {
|
||||||
|
float: left;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.view-projects-by-partner h2,
|
||||||
|
.view-projects-by-researcher h2 {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.view-resources-by-research-field h2 {
|
||||||
|
margin-top: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************
|
||||||
|
FOOTER */
|
||||||
|
|
||||||
|
footer {
|
||||||
|
background-color: #dddddd;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer.container {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer img {
|
||||||
|
width: 60%;
|
||||||
|
height: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col {
|
||||||
|
float: left;
|
||||||
|
width: 20%;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************
|
||||||
|
MEDIA QUERIES
|
||||||
|
*/
|
||||||
|
|
||||||
|
@media screen and (max-width:768px) {
|
||||||
|
#block-gridspinoza-main-menu ul.navbar-nav li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav {
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-nav > li > a {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.views-col {
|
||||||
|
width: auto !important;
|
||||||
|
padding-right: 0px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.view-content .table .priority-low {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td {
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,23 @@
|
||||||
|
core: 8.x
|
||||||
|
type: theme
|
||||||
|
base theme: bootstrap
|
||||||
|
|
||||||
|
name: 'Gridspinoza Bootstrap Sub-Theme (CDN)'
|
||||||
|
description: 'Uses the jsDelivr CDN for all CSS and JavaScript. No source files or compiling is necessary and is recommended for simple sites or beginners.'
|
||||||
|
package: 'Bootstrap'
|
||||||
|
|
||||||
|
regions:
|
||||||
|
navigation: 'Navigation'
|
||||||
|
navigation_collapsible: 'Navigation (Collapsible)'
|
||||||
|
header: 'Top Bar'
|
||||||
|
highlighted: 'Highlighted'
|
||||||
|
help: 'Help'
|
||||||
|
content: 'Content'
|
||||||
|
sidebar_first: 'Primary'
|
||||||
|
sidebar_second: 'Secondary'
|
||||||
|
footer: 'Footer'
|
||||||
|
top: 'Page top'
|
||||||
|
page_bottom: 'Page bottom'
|
||||||
|
|
||||||
|
libraries:
|
||||||
|
- 'gridspinoza/global-styling'
|
|
@ -0,0 +1,4 @@
|
||||||
|
global-styling:
|
||||||
|
css:
|
||||||
|
theme:
|
||||||
|
css/style.css: {}
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Bootstrap sub-theme.
|
||||||
|
*
|
||||||
|
* Place your custom PHP code in this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements hook_preprocess_html().
|
||||||
|
*/
|
||||||
|
function gridspinoza_preprocess_html(&$variables) {
|
||||||
|
if ($node = \Drupal::request()->attributes->get('node')) {
|
||||||
|
$variables['attributes']['class'][] = 'page-node-' . $node->id();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
width="32px" height="32px"
|
||||||
|
viewBox="0 0 32 32" preserveAspectRatio="none">
|
||||||
|
<g>
|
||||||
|
<image width="32" height="32" xlink:href="data:image/png;base64,
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
|
||||||
|
bWFnZVJlYWR5ccllPAAAAohJREFUeNrEl1tIVGEQx12L0BQjoXwpoRfxIQUJuhAIvVRLIRQELYj1
|
||||||
|
oKDgpQgVNQhBChQfLFDLoovVS0RQYuqLPUgFgTcQia5CSBBERUiKuv0+GGGJPd/l7Nkc+DNn98w3
|
||||||
|
8/++mXNmTigajaasp4T8Ejhx+GIWavOTkbaviRBITWBtIbgDkfT1InAGHAGDkNj2X1NAwFLU3ZgN
|
||||||
|
fATnSMezpBIgcAaqWRBPHoFLEJlNVgpWRC943D8FJiDaA3IDOQEc5aNK5Ocou3vDf3u5HgFbNEu/
|
||||||
|
gzrs7/smQKAa1BWQEfN3L06ruFcmdWCSa+A8a1acUkCAetTVf4IrqeReBIf3pPhMojbR41QDBDiO
|
||||||
|
atc4LRU9ZVk7FXKaZgLyhus2OExbS6FDAV+OV5jxTqAa7DQ4e4qzTegiBwKZoFFLAKdqZ+UGR8Pk
|
||||||
|
vwu9A7i+AU8TY6vuBNTjtcvgJB0nJyGhCvAgeO9AIBsc0hHYb+GkGDyGxG1ITHIdlmfeVop1BAoc
|
||||||
|
HJ2FxENIqBOodVhXoCOw3TGnEfVCgsQDrmcc0uBJYNVHR20S3R/EPDDvw0c+p6AK94Wl/aKOwLTP
|
||||||
|
uSIPfAHLFrYfdAReJzBZ2abvpY7ABHjrg8AcyAEbDXZL4LknAapZGdxyDD4vpPdZ2A7JC0zbC3pl
|
||||||
|
R7bSJ70+YjFNtVoNJNKObQbMcXAA7AFjhhGvA6INVvMAhgOoBkNwNQsck5Z8wxB8wGuQ9VwEiQ7U
|
||||||
|
BSmcWPkGOiXnv2QS3q0Jru6rCWrZ71BaKH0/JLXxCmd/+F8RuKkJ/gO0YNsd6IcJgcPSfI56mLxT
|
||||||
|
3RJcJ/jnoD9MNsg3oZobcqWxqGf/J/gkdTFJ4N9J/zoOSv4KMAC++teHNUg1rQAAAABJRU5ErkJg
|
||||||
|
gg==
|
||||||
|
"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,3 @@
|
||||||
|
Use this folder to override template, theme and \[pre\]process functions.
|
||||||
|
|
||||||
|
Please refer to the @link registry Theme Registry @endlink topic for more info.
|
|
@ -0,0 +1,83 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override for a field.
|
||||||
|
*
|
||||||
|
* To override output, copy the "field.html.twig" from the templates directory
|
||||||
|
* to your theme's directory and customize it, just like customizing other
|
||||||
|
* Drupal templates such as page.html.twig or node.html.twig.
|
||||||
|
*
|
||||||
|
* Instead of overriding the theming for all fields, you can also just override
|
||||||
|
* theming for a subset of fields using
|
||||||
|
* @link themeable Theme hook suggestions. @endlink For example,
|
||||||
|
* here are some theme hook suggestions that can be used for a field_foo field
|
||||||
|
* on an article node type:
|
||||||
|
* - field--node--field-foo--article.html.twig
|
||||||
|
* - field--node--field-foo.html.twig
|
||||||
|
* - field--node--article.html.twig
|
||||||
|
* - field--field-foo.html.twig
|
||||||
|
* - field--text-with-summary.html.twig
|
||||||
|
* - field.html.twig
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* - label_hidden: Whether to show the field label or not.
|
||||||
|
* - title_attributes: HTML attributes for the title.
|
||||||
|
* - label: The label for the field.
|
||||||
|
* - multiple: TRUE if a field can contain multiple items.
|
||||||
|
* - items: List of all the field items. Each item contains:
|
||||||
|
* - attributes: List of HTML attributes for each item.
|
||||||
|
* - content: The field item's content.
|
||||||
|
* - entity_type: The entity type to which the field belongs.
|
||||||
|
* - field_name: The name of the field.
|
||||||
|
* - field_type: The type of the field.
|
||||||
|
* - label_display: The display settings for the label.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @see template_preprocess_field()
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
'field',
|
||||||
|
'field--name-' ~ field_name|clean_class,
|
||||||
|
'field--type-' ~ field_type|clean_class,
|
||||||
|
'field--label-' ~ label_display,
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
{%
|
||||||
|
set title_classes = [
|
||||||
|
'field--label',
|
||||||
|
label_display == 'visually_hidden' ? 'sr-only',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
|
||||||
|
{% if label_hidden %}
|
||||||
|
{% if multiple %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--items') }}>
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ item.attributes.addClass('field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<div{{ attributes.addClass(classes) }}>
|
||||||
|
<div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div>
|
||||||
|
{% if multiple %}
|
||||||
|
<div class="field__items">
|
||||||
|
{% endif %}
|
||||||
|
{% for item in items %}
|
||||||
|
{% if loop.index > 1 %}
|
||||||
|
<span>, </span>
|
||||||
|
{% endif %}
|
||||||
|
<span{{ item.attributes.addClass('field--item') }}>{{ item.content }}</span>
|
||||||
|
{% endfor %}
|
||||||
|
{% if multiple %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,83 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override for a field.
|
||||||
|
*
|
||||||
|
* To override output, copy the "field.html.twig" from the templates directory
|
||||||
|
* to your theme's directory and customize it, just like customizing other
|
||||||
|
* Drupal templates such as page.html.twig or node.html.twig.
|
||||||
|
*
|
||||||
|
* Instead of overriding the theming for all fields, you can also just override
|
||||||
|
* theming for a subset of fields using
|
||||||
|
* @link themeable Theme hook suggestions. @endlink For example,
|
||||||
|
* here are some theme hook suggestions that can be used for a field_foo field
|
||||||
|
* on an article node type:
|
||||||
|
* - field--node--field-foo--article.html.twig
|
||||||
|
* - field--node--field-foo.html.twig
|
||||||
|
* - field--node--article.html.twig
|
||||||
|
* - field--field-foo.html.twig
|
||||||
|
* - field--text-with-summary.html.twig
|
||||||
|
* - field.html.twig
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* - label_hidden: Whether to show the field label or not.
|
||||||
|
* - title_attributes: HTML attributes for the title.
|
||||||
|
* - label: The label for the field.
|
||||||
|
* - multiple: TRUE if a field can contain multiple items.
|
||||||
|
* - items: List of all the field items. Each item contains:
|
||||||
|
* - attributes: List of HTML attributes for each item.
|
||||||
|
* - content: The field item's content.
|
||||||
|
* - entity_type: The entity type to which the field belongs.
|
||||||
|
* - field_name: The name of the field.
|
||||||
|
* - field_type: The type of the field.
|
||||||
|
* - label_display: The display settings for the label.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @see template_preprocess_field()
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
'field',
|
||||||
|
'field--name-' ~ field_name|clean_class,
|
||||||
|
'field--type-' ~ field_type|clean_class,
|
||||||
|
'field--label-' ~ label_display,
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
{%
|
||||||
|
set title_classes = [
|
||||||
|
'field--label',
|
||||||
|
label_display == 'visually_hidden' ? 'sr-only',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
|
||||||
|
{% if label_hidden %}
|
||||||
|
{% if multiple %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--items') }}>
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ item.attributes.addClass('field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<div{{ attributes.addClass(classes) }}>
|
||||||
|
<div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div>
|
||||||
|
{% if multiple %}
|
||||||
|
<div class="field__items">
|
||||||
|
{% endif %}
|
||||||
|
{% for item in items %}
|
||||||
|
{% if loop.index > 1 %}
|
||||||
|
<span>, </span>
|
||||||
|
{% endif %}
|
||||||
|
<span{{ item.attributes.addClass('field--item') }}>{{ item.content }}</span>
|
||||||
|
{% endfor %}
|
||||||
|
{% if multiple %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,103 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('upcoming_activities', 'page_1') }}</div>
|
||||||
|
<div>{{ drupal_view('past_activities', 'page_1') }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,104 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('open_calls', 'page_1') }}</div>
|
||||||
|
<div>{{ drupal_view('calls', 'page_1') }}</div>
|
||||||
|
<div>{{ drupal_view('future_calls', 'page_1') }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,106 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if view_mode == 'full' %}
|
||||||
|
<div>{{ drupal_view('programs_by_partner', 'page_1', node.id) }}</div>
|
||||||
|
<div>{{ drupal_view('projects_by_funder', 'page_1', node.id) }}</div>
|
||||||
|
<div>{{ drupal_view('projects_by_partner', 'page_1', node.id) }}</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,104 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('projects_by_program', 'page_1', node.id) }}</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('activities_by_program', 'page_1', node.id) }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,104 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ drupal_view('projects_cycle', 'block_1', node.id) }}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="resource-list">{{ drupal_view('resources_by_project', 'page_1', node.id) }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,104 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('resources_by_research_field', 'page_1', node.id) }}</div>
|
||||||
|
<div>{{ drupal_view('projects_by_research_field', 'page_1', node.id) }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,104 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override to display a node.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - node: The node entity with limited access to object properties and methods.
|
||||||
|
Only "getter" methods (method names starting with "get", "has", or "is")
|
||||||
|
and a few common methods such as "id" and "label" are available. Calling
|
||||||
|
other methods (such as node.delete) will result in an exception.
|
||||||
|
* - label: The title of the node.
|
||||||
|
* - content: All node items. Use {{ content }} to print them all,
|
||||||
|
* or print a subset such as {{ content.field_example }}. Use
|
||||||
|
* {{ content|without('field_example') }} to temporarily suppress the printing
|
||||||
|
* of a given child element.
|
||||||
|
* - author_picture: The node author user entity, rendered using the "compact"
|
||||||
|
* view mode.
|
||||||
|
* - metadata: Metadata for this node.
|
||||||
|
* - date: Themed creation date field.
|
||||||
|
* - author_name: Themed author name field.
|
||||||
|
* - url: Direct URL of the current node.
|
||||||
|
* - display_submitted: Whether submission information should be displayed.
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* The attributes.class element may contain one or more of the following
|
||||||
|
* classes:
|
||||||
|
* - node: The current template type (also known as a "theming hook").
|
||||||
|
* - node--type-[type]: The current node type. For example, if the node is an
|
||||||
|
* "Article" it would result in "node--type-article". Note that the machine
|
||||||
|
* name will often be in a short form of the human readable label.
|
||||||
|
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
|
||||||
|
* teaser would result in: "node--view-mode-teaser", and
|
||||||
|
* full: "node--view-mode-full".
|
||||||
|
* The following are controlled through the node publishing options.
|
||||||
|
* - node--promoted: Appears on nodes promoted to the front page.
|
||||||
|
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
|
||||||
|
* teaser listings.
|
||||||
|
* - node--unpublished: Appears on unpublished nodes visible only to site
|
||||||
|
* admins.
|
||||||
|
* - title_attributes: Same as attributes, except applied to the main title
|
||||||
|
* tag that appears in the template.
|
||||||
|
* - content_attributes: Same as attributes, except applied to the main
|
||||||
|
* content tag that appears in the template.
|
||||||
|
* - author_attributes: Same as attributes, except applied to the author of
|
||||||
|
* the node tag that appears in the template.
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - view_mode: View mode; for example, "teaser" or "full".
|
||||||
|
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
|
||||||
|
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
|
||||||
|
* - readmore: Flag for more state. Will be true if the teaser content of the
|
||||||
|
* node cannot hold the main body content.
|
||||||
|
* - logged_in: Flag for authenticated user status. Will be true when the
|
||||||
|
* current user is a logged-in member.
|
||||||
|
* - is_admin: Flag for admin user status. Will be true when the current user
|
||||||
|
* is an administrator.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_node()
|
||||||
|
*
|
||||||
|
* @todo Remove the id attribute (or make it a class), because if that gets
|
||||||
|
* rendered twice on a page this is invalid CSS for example: two lists
|
||||||
|
* in different view modes.
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'is-promoted',
|
||||||
|
node.isSticky() ? 'is-sticky',
|
||||||
|
not node.isPublished() ? 'is-unpublished',
|
||||||
|
view_mode ? view_mode|clean_class,
|
||||||
|
'clearfix',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
|
||||||
|
{{ title_prefix }}
|
||||||
|
{% if not page %}
|
||||||
|
<h2{{ title_attributes }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
{% endif %}
|
||||||
|
{{ title_suffix }}
|
||||||
|
|
||||||
|
{% if display_submitted %}
|
||||||
|
<footer>
|
||||||
|
{{ author_picture }}
|
||||||
|
<div{{ author_attributes.addClass('author') }}>
|
||||||
|
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
|
||||||
|
{{ metadata }}
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{{ content_attributes.addClass('content') }}>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>{{ drupal_view('resources_by_researcher', 'page_1', node.id) }}</div>
|
||||||
|
<div>{{ drupal_view('projects_by_researcher', 'page_1', node.id) }}</div>
|
||||||
|
|
||||||
|
</article>
|
|
@ -0,0 +1,80 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override for a field.
|
||||||
|
*
|
||||||
|
* To override output, copy the "field.html.twig" from the templates directory
|
||||||
|
* to your theme's directory and customize it, just like customizing other
|
||||||
|
* Drupal templates such as page.html.twig or node.html.twig.
|
||||||
|
*
|
||||||
|
* Instead of overriding the theming for all fields, you can also just override
|
||||||
|
* theming for a subset of fields using
|
||||||
|
* @link themeable Theme hook suggestions. @endlink For example,
|
||||||
|
* here are some theme hook suggestions that can be used for a field_foo field
|
||||||
|
* on an article node type:
|
||||||
|
* - field--node--field-foo--article.html.twig
|
||||||
|
* - field--node--field-foo.html.twig
|
||||||
|
* - field--node--article.html.twig
|
||||||
|
* - field--field-foo.html.twig
|
||||||
|
* - field--text-with-summary.html.twig
|
||||||
|
* - field.html.twig
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - attributes: HTML attributes for the containing element.
|
||||||
|
* - label_hidden: Whether to show the field label or not.
|
||||||
|
* - title_attributes: HTML attributes for the title.
|
||||||
|
* - label: The label for the field.
|
||||||
|
* - multiple: TRUE if a field can contain multiple items.
|
||||||
|
* - items: List of all the field items. Each item contains:
|
||||||
|
* - attributes: List of HTML attributes for each item.
|
||||||
|
* - content: The field item's content.
|
||||||
|
* - entity_type: The entity type to which the field belongs.
|
||||||
|
* - field_name: The name of the field.
|
||||||
|
* - field_type: The type of the field.
|
||||||
|
* - label_display: The display settings for the label.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @see template_preprocess_field()
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{%
|
||||||
|
set classes = [
|
||||||
|
'field',
|
||||||
|
'field--name-' ~ field_name|clean_class,
|
||||||
|
'field--type-' ~ field_type|clean_class,
|
||||||
|
'field--label-' ~ label_display,
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
{%
|
||||||
|
set title_classes = [
|
||||||
|
'field--label',
|
||||||
|
label_display == 'visually_hidden' ? 'sr-only',
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
|
||||||
|
{% if label_hidden %}
|
||||||
|
{% if multiple %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--items') }}>
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ item.attributes.addClass('field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ attributes.addClass(classes, 'field--item') }}>{{ item.content }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<div{{ attributes.addClass(classes) }}>
|
||||||
|
<div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div>
|
||||||
|
{% if multiple %}
|
||||||
|
<div class="field__items">
|
||||||
|
{% endif %}
|
||||||
|
{% for item in items %}
|
||||||
|
<div{{ item.attributes.addClass('field--item') }}>{{ item.content|replace({'@': ' [at] ', '.': ' [dot] '}) }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% if multiple %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,189 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Default theme implementation to display a single page.
|
||||||
|
*
|
||||||
|
* The doctype, html, head and body tags are not in this template. Instead they
|
||||||
|
* can be found in the html.html.twig template in this directory.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
*
|
||||||
|
* General utility variables:
|
||||||
|
* - base_path: The base URL path of the Drupal installation. Will usually be
|
||||||
|
* "/" unless you have installed Drupal in a sub-directory.
|
||||||
|
* - is_front: A flag indicating if the current page is the front page.
|
||||||
|
* - logged_in: A flag indicating if the user is registered and signed in.
|
||||||
|
* - is_admin: A flag indicating if the user has permission to access
|
||||||
|
* administration pages.
|
||||||
|
*
|
||||||
|
* Site identity:
|
||||||
|
* - front_page: The URL of the front page. Use this instead of base_path when
|
||||||
|
* linking to the front page. This includes the language domain or prefix.
|
||||||
|
* - logo: The url of the logo image, as defined in theme settings.
|
||||||
|
* - site_name: The name of the site. This is empty when displaying the site
|
||||||
|
* name has been disabled in the theme settings.
|
||||||
|
* - site_slogan: The slogan of the site. This is empty when displaying the site
|
||||||
|
* slogan has been disabled in theme settings.
|
||||||
|
*
|
||||||
|
* Navigation:
|
||||||
|
* - breadcrumb: The breadcrumb trail for the current page.
|
||||||
|
*
|
||||||
|
* Page content (in order of occurrence in the default page.html.twig):
|
||||||
|
* - title_prefix: Additional output populated by modules, intended to be
|
||||||
|
* displayed in front of the main title tag that appears in the template.
|
||||||
|
* - title: The page title, for use in the actual content.
|
||||||
|
* - title_suffix: Additional output populated by modules, intended to be
|
||||||
|
* displayed after the main title tag that appears in the template.
|
||||||
|
* - messages: Status and error messages. Should be displayed prominently.
|
||||||
|
* - tabs: Tabs linking to any sub-pages beneath the current page (e.g., the
|
||||||
|
* view and edit tabs when displaying a node).
|
||||||
|
* - action_links: Actions local to the page, such as "Add menu" on the menu
|
||||||
|
* administration interface.
|
||||||
|
* - node: Fully loaded node, if there is an automatically-loaded node
|
||||||
|
* associated with the page and the node ID is the second argument in the
|
||||||
|
* page's path (e.g. node/12345 and node/12345/revisions, but not
|
||||||
|
* comment/reply/12345).
|
||||||
|
*
|
||||||
|
* Regions:
|
||||||
|
* - page.header: Items for the header region.
|
||||||
|
* - page.primary_menu: Items for the primary menu region.
|
||||||
|
* - page.secondary_menu: Items for the secondary menu region.
|
||||||
|
* - page.highlighted: Items for the highlighted content region.
|
||||||
|
* - page.help: Dynamic help text, mostly for admin pages.
|
||||||
|
* - page.content: The main content of the current page.
|
||||||
|
* - page.sidebar_first: Items for the first sidebar.
|
||||||
|
* - page.sidebar_second: Items for the second sidebar.
|
||||||
|
* - page.footer: Items for the footer region.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_page()
|
||||||
|
* @see html.html.twig
|
||||||
|
*
|
||||||
|
* @ingroup templates
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
|
||||||
|
<div class="page-top">
|
||||||
|
{{ page.top }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% set container = theme.settings.fluid_container ? 'container-fluid' : 'container' %}
|
||||||
|
{# Navbar #}
|
||||||
|
{% if page.navigation %}
|
||||||
|
{% block navbar %}
|
||||||
|
{%
|
||||||
|
set navbar_classes = [
|
||||||
|
'navbar',
|
||||||
|
theme.settings.navbar_inverse ? 'navbar-inverse' : 'navbar-default',
|
||||||
|
theme.settings.navbar_position ? 'navbar-' ~ theme.settings.navbar_position|clean_class : container,
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<header{{ navbar_attributes.addClass(navbar_classes) }} id="navbar" role="banner">
|
||||||
|
<div class="navbar-header">
|
||||||
|
{{ page.navigation }}
|
||||||
|
{# .btn-navbar is used as the toggle for collapsed navbar content #}
|
||||||
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||||
|
<span class="sr-only">{{ 'Toggle navigation'|t }}</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{# Navigation (collapsible) #}
|
||||||
|
{% if page.navigation_collapsible %}
|
||||||
|
<div class="navbar-collapse collapse">
|
||||||
|
{{ page.navigation_collapsible }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</header>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Main #}
|
||||||
|
{% block main %}
|
||||||
|
<div role="main" class="main-container {{ container }} js-quickedit-main-content">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
{# Sidebar First #}
|
||||||
|
{% if page.sidebar_first %}
|
||||||
|
{% block sidebar_first %}
|
||||||
|
<aside class="col-sm-3" role="complementary">
|
||||||
|
{{ page.sidebar_first }}
|
||||||
|
</aside>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Header #}
|
||||||
|
{% if page.header %}
|
||||||
|
{% block header %}
|
||||||
|
<div class="col-sm-9" role="heading">
|
||||||
|
{{ page.header }}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Content #}
|
||||||
|
{%
|
||||||
|
set content_classes = [
|
||||||
|
page.sidebar_first and page.sidebar_second ? 'col-sm-6',
|
||||||
|
page.sidebar_first or page.sidebar_second ? 'col-sm-9',
|
||||||
|
page.sidebar_first is empty and page.sidebar_second is empty ? 'col-sm-12'
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
<section{{ content_attributes.addClass(content_classes) }}>
|
||||||
|
|
||||||
|
{# Highlighted #}
|
||||||
|
{% if page.highlighted %}
|
||||||
|
{% block highlighted %}
|
||||||
|
<div class="highlighted">{{ page.highlighted }}</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Breadcrumbs #}
|
||||||
|
{% if breadcrumb %}
|
||||||
|
{% block breadcrumb %}
|
||||||
|
{{ breadcrumb }}
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Action Links #}
|
||||||
|
{% if action_links %}
|
||||||
|
{% block action_links %}
|
||||||
|
<ul class="action-links">{{ action_links }}</ul>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Help #}
|
||||||
|
{% if page.help %}
|
||||||
|
{% block help %}
|
||||||
|
{{ page.help }}
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Content #}
|
||||||
|
{% block content %}
|
||||||
|
<a id="main-content"></a>
|
||||||
|
{{ page.content }}
|
||||||
|
{% endblock %}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{# Sidebar Second #}
|
||||||
|
{% if page.sidebar_second %}
|
||||||
|
{% block sidebar_second %}
|
||||||
|
<aside class="col-sm-3" role="complementary">
|
||||||
|
{{ page.sidebar_second }}
|
||||||
|
</aside>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% if page.footer %}
|
||||||
|
{% block footer %}
|
||||||
|
<footer class="footer {{ container }}" role="contentinfo">
|
||||||
|
{{ page.footer }}
|
||||||
|
</footer>
|
||||||
|
{% endblock %}
|
||||||
|
{% endif %}
|
|
@ -0,0 +1,106 @@
|
||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Default theme implementation for displaying a view as a table.
|
||||||
|
*
|
||||||
|
* Available variables:
|
||||||
|
* - attributes: Remaining HTML attributes for the element.
|
||||||
|
* - class: HTML classes that can be used to style contextually through CSS.
|
||||||
|
* - title : The title of this group of rows.
|
||||||
|
* - header: The table header columns.
|
||||||
|
* - attributes: Remaining HTML attributes for the element.
|
||||||
|
* - content: HTML classes to apply to each header cell, indexed by
|
||||||
|
* the header's key.
|
||||||
|
* - caption_needed: Is the caption tag needed.
|
||||||
|
* - caption: The caption for this table.
|
||||||
|
* - accessibility_description: Extended description for the table details.
|
||||||
|
* - accessibility_summary: Summary for the table details.
|
||||||
|
* - rows: Table row items. Rows are keyed by row number.
|
||||||
|
* - attributes: HTML classes to apply to each row.
|
||||||
|
* - columns: Row column items. Columns are keyed by column number.
|
||||||
|
* - attributes: HTML classes to apply to each column.
|
||||||
|
* - content: The column content.
|
||||||
|
*
|
||||||
|
* @see template_preprocess_views_view_table()
|
||||||
|
*
|
||||||
|
* @ingroup templates
|
||||||
|
*/
|
||||||
|
#}
|
||||||
|
{% if theme.settings.table_responsive %}
|
||||||
|
<div class="table-responsive">
|
||||||
|
{% endif %}
|
||||||
|
{% set classes = [
|
||||||
|
'table',
|
||||||
|
context.bordered is not empty or theme.settings.table_bordered ? 'table-bordered',
|
||||||
|
context.condensed is not empty or theme.settings.table_condensed ? 'table-condensed',
|
||||||
|
context.hover is not empty or theme.settings.table_hover ? 'table-hover',
|
||||||
|
context.striped is not empty or theme.settings.table_striped ? 'table-striped',
|
||||||
|
] %}
|
||||||
|
<table{{ attributes.addClass(classes) }}>
|
||||||
|
{% if caption_needed %}
|
||||||
|
<caption>
|
||||||
|
{% if caption %}
|
||||||
|
{{ caption }}
|
||||||
|
{% else %}
|
||||||
|
{{ title }}
|
||||||
|
{% endif %}
|
||||||
|
{% if (summary is not empty) or (description is not empty) %}
|
||||||
|
<details>
|
||||||
|
{% if summary is not empty %}
|
||||||
|
<summary>{{ summary }}</summary>
|
||||||
|
{% endif %}
|
||||||
|
{% if description is not empty %}
|
||||||
|
{{ description }}
|
||||||
|
{% endif %}
|
||||||
|
</details>
|
||||||
|
{% endif %}
|
||||||
|
</caption>
|
||||||
|
{% endif %}
|
||||||
|
{% if header %}
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
{% for key, column in header %}
|
||||||
|
{% if column.default_classes %}
|
||||||
|
{%
|
||||||
|
set column_classes = [
|
||||||
|
'views-field',
|
||||||
|
'views-field-' ~ fields[key],
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
{% endif %}
|
||||||
|
<th{{ column.attributes.addClass(column_classes).setAttribute('scope', 'col') }}>
|
||||||
|
{%- if column.wrapper_element -%}
|
||||||
|
<{{ column.wrapper_element }}>
|
||||||
|
{%- if column.url -%}
|
||||||
|
<a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
|
||||||
|
{%- else -%}
|
||||||
|
{{ column.content }}{{ column.sort_indicator }}
|
||||||
|
{%- endif -%}
|
||||||
|
</{{ column.wrapper_element }}>
|
||||||
|
{%- else -%}
|
||||||
|
{%- if column.url -%}
|
||||||
|
<a href="{{ column.url }}" title="{{ column.title }}">{{ column.content }}{{ column.sort_indicator }}</a>
|
||||||
|
{%- else -%}
|
||||||
|
{{- column.content }}{{ column.sort_indicator }}
|
||||||
|
{%- endif -%}
|
||||||
|
{%- endif -%}
|
||||||
|
</th>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
{% endif %}
|
||||||
|
<tbody>
|
||||||
|
{% for row in rows %}
|
||||||
|
<tr{{ row.attributes }}>
|
||||||
|
{% for column in row.columns %}
|
||||||
|
<td{{ column.attributes }}>
|
||||||
|
{{ column.content }}
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% if theme.settings.table_responsive %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
Loading…
Reference in New Issue