filter && fotter

This commit is contained in:
2020-07-23 18:15:08 +02:00
parent 068100edab
commit e9761aa6ca
29 changed files with 926 additions and 107 deletions
+2
View File
@@ -29,6 +29,7 @@
"drupal/geofield": "^1.15",
"drupal/geofield_map": "^2.66",
"drupal/geolocation": "^3.2",
"drupal/leaflet": "^1.41",
"drupal/linkit": "^4.3",
"drupal/mediteran": "^1.10",
"drupal/metatag": "^1.13",
@@ -43,6 +44,7 @@
"drupal/video_embed_field": "^2.4",
"drupal/views_url_path_arguments": "^1.1",
"drush/drush": "^10.2",
"geocoder-php/chain-provider": "^4.2",
"geocoder-php/google-maps-provider": "^4.5",
"sierrafayad/osm-pbf": "^1.0",
"twbs/bootstrap": "4.5.0"
Generated
+129 -1
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "915e6ec916535b32ce8892a6234cb992",
"content-hash": "93ffc8bc2bab9aea79ee40fc534d99f1",
"packages": [
{
"name": "asm89/stack-cors",
@@ -3514,6 +3514,78 @@
"source": "https://git.drupalcode.org/project/jquery_ui_droppable"
}
},
{
"name": "drupal/leaflet",
"version": "1.41.0",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/leaflet.git",
"reference": "8.x-1.41"
},
"dist": {
"type": "zip",
"url": "https://ftp.drupal.org/files/projects/leaflet-8.x-1.41.zip",
"reference": "8.x-1.41",
"shasum": "b947380e846a85bc2ddb378c6a451400dd614fe2"
},
"require": {
"drupal/core": "^8.8 || ^9",
"drupal/geofield": "^1.0"
},
"type": "drupal-module",
"extra": {
"drupal": {
"version": "8.x-1.41",
"datestamp": "1595068845",
"security-coverage": {
"status": "covered",
"message": "Covered by Drupal's security advisory policy"
}
}
},
"notification-url": "https://packages.drupal.org/8/downloads",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Italo Mairo",
"homepage": "https://www.drupal.org/u/itamair",
"role": "Maintainer"
},
{
"name": "Peter Vanhee (pvhee)",
"homepage": "https://www.drupal.org/u/pvhee",
"role": "Maintainer"
},
{
"name": "Rik de Boer (RdeBoer)",
"homepage": "https://www.drupal.org/u/rdeboer",
"role": "Maintainer"
},
{
"name": "Gabriel Carleton-Barnes (gcb)",
"homepage": "https://www.drupal.org/u/gcb",
"role": "Maintainer"
},
{
"name": "Lev Tsypin (levelos)",
"homepage": "https://www.drupal.org/u/levelos",
"role": "Maintainer"
},
{
"name": "Sean Larkin (seanberto)",
"homepage": "https://www.drupal.org/u/seanberto",
"role": "Maintainer"
}
],
"description": "Integration with the Leaflet map scripting library.",
"homepage": "https://www.drupal.org/project/leaflet",
"support": {
"source": "https://git.drupalcode.org/project/leaflet",
"issues": "https://www.drupal.org/project/issues/leaflet"
}
},
{
"name": "drupal/linkit",
"version": "4.3.0",
@@ -4940,6 +5012,62 @@
],
"time": "2020-05-23T09:10:21+00:00"
},
{
"name": "geocoder-php/chain-provider",
"version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/geocoder-php/chain-provider.git",
"reference": "f9f8d33e958eb795c80a86a98064793d2a1084aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/geocoder-php/chain-provider/zipball/f9f8d33e958eb795c80a86a98064793d2a1084aa",
"reference": "f9f8d33e958eb795c80a86a98064793d2a1084aa",
"shasum": ""
},
"require": {
"php": "^7.2",
"psr/log": "^1.0",
"willdurand/geocoder": "^4.0"
},
"provide": {
"geocoder-php/provider-implementation": "1.0"
},
"require-dev": {
"nyholm/nsa": "^1.1",
"php-http/curl-client": "^1.7",
"php-http/message": "^1.0",
"phpunit/phpunit": "^7.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.0-dev"
}
},
"autoload": {
"psr-4": {
"Geocoder\\Provider\\Chain\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "William Durand",
"email": "william.durand1@gmail.com"
}
],
"description": "Geocoder chain adapter",
"homepage": "http://geocoder-php.org/Geocoder/",
"time": "2020-07-04T13:18:10+00:00"
},
{
"name": "geocoder-php/common-http",
"version": "4.3.0",
+3
View File
@@ -4,6 +4,9 @@
# 'example.settings.local.php' file, which sits next to this file.
parameters:
http.response.debug_cacheability_headers: true
twig.config:
debug: false
auto_reload: true
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -3,6 +3,50 @@ footer{
width: 100%;
height: auto;
padding: 2rem 0;
h2{
font-size: 1rem;
text-transform: uppercase;
}
a{
color: black;
&:hover{
color: black;
}
}
#block-renderedsitesettingsblock-4{
.site_setting_entity{
& > div{
margin: 1rem 0;
&:first-child{
&::after,&:before{
margin: 0.5rem 0;
display: block;
content: " ";
width: 1rem;
height: 1px;
background: black;
}
}
}
.sub-title{
font-size: 1rem;
}
.d-flex{
margin-top: 1rem;
& > div{
width: 30px;
margin-right: 1rem;
}
}
}
}
.site_setting_entity{
img{
// width: 100%;
height: auto;
}
}
& > div{
display: flex;
flex-wrap: nowrap;
@@ -2,8 +2,15 @@
#views-exposed-form-bibliographie-page-1{
margin: 2rem 0;
display: flex;
flex-wrap: wrap;
& > div{
margin-right: 2rem;
&:not(:last-child){
margin-bottom: 1rem;
@media screen and (min-width: 992px) {
margin-bottom: 0rem;
}
}
select{
border: 1px solid $color2;
background: white;
@@ -20,3 +27,85 @@
}
}
}
.views-exposed-form{
input{
height: auto;
background: $color2;
color: white;
border: none;
outline: none;
margin-right: 1rem;
padding: 0.5rem 1rem;
&:focus{
border: none;
outline: none;
}
}
}
.js-form-type-select {
position: relative;
font-family: Arial;
display: inline-flex;
align-items: baseline;
label{
margin-right: 1rem;
}
.select-selected{
min-width: 150px;
}
}
.js-form-type-select select {
display: none; /*hide original SELECT element: */
}
.select-selected {
background-color: white;
color: $color2!important;
}
/* Style the arrow inside the select element: */
.select-selected:after {
position: absolute;
content: "";
top: 14px;
right: 10px;
width: 0;
height: 0;
border: 6px solid transparent;
border-color: $color2 transparent transparent transparent;
}
/* Point the arrow upwards when the select box is open (active): */
.select-selected.select-arrow-active:after {
border-color: transparent transparent $color2 transparent;
top: 7px;
}
/* style the items (options), including the selected item: */
.select-items div,.select-selected {
color: #ffffff;
padding: 8px 16px;
border: 1px solid transparent;
border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
cursor: pointer;
}
/* Style items (options): */
.select-items {
position: absolute;
background-color: $color2;
top: 100%;
right: 0;
z-index: 99;
min-width: 150px;
}
/* Hide the items when the select box is closed: */
.select-hide {
display: none;
}
.select-items div:hover, .same-as-selected {
background-color: rgba(0, 0, 0, 0.1);
}
@@ -163,14 +163,6 @@ header{
}
}
.site_setting_entity{
img{
width: 50%;
height: auto;
}
}
header.front{
#block-popsu-colloque-branding{
width: 100%;
@@ -22,7 +22,7 @@ main{
main:not(.home){
padding-top: 0rem;
@media screen and (min-width: 768px) {
padding-top: 5rem!important;
padding: 5rem 0!important;
}
}
@@ -55,7 +55,11 @@ img{
color: $color2;
}
}
#block-popsu-colloque-page-title{
padding: 0 15px;
margin: 0 auto 2rem auto;
@include croix_or;
}
#block-views-block-slide-programme-block-1,
#block-views-block-dernieres-publications-block-1{
margin: 5rem 0;
@@ -0,0 +1,14 @@
.leaflet-popup-content-wrapper{
}
.leaflet-popup-content{
p{
font-size: 0.9rem;
line-height: 1.5;
font-family: 'truenoregular';
strong{
color: $color2;
line-height: 2;
}
}
}
@@ -94,6 +94,8 @@
.__ressources{
.__publications{
.publications{
// margin: $gutter1;
.__media{
padding: 0.5rem 0 0.5rem 0.5rem;
}
@@ -101,13 +103,13 @@
padding: 0.5rem;
}
@media screen and (min-width: 768px) {
width: calc(100% / 2 - #{$gutter1});
width: calc(100% / 2 - #{$gutter1} * 2);
}
@media screen and (min-width: 992px) {
width: calc(100% / 2 - #{$gutter1});
width: calc(100% / 2 - #{$gutter1} * 2);
}
@media screen and (min-width: 1200px) {
width: calc(100% / 2 - #{$gutter1});
width: calc(100% / 2 - #{$gutter1} * 2);
}
}
}
@@ -122,6 +124,16 @@
}
}
}
@media screen and (min-width: 768px) {
width: calc(100% / 2 - #{$gutter1} * 2);
}
@media screen and (min-width: 992px) {
width: calc(100% / 2 - #{$gutter1} * 2);
}
@media screen and (min-width: 1200px) {
width: calc(100% / 2 - #{$gutter1} * 2);
}
}
}
}
@@ -9,7 +9,7 @@
@import "variables/var.scss";
@import "mixins/mixin.scss";
@import "./typography.scss";
@import "typography.scss";
@import "components/admin/edit.scss";
@import "components/admin/toolbar.scss";
@import "hamburgers/hamburgers.scss";
@@ -47,6 +47,7 @@ h1,h2,h3,h4{
@import "components/thumbnails/thumbnails.scss";
@import "components/btn/all_btn.scss";
@import "components/footer/footer.scss";
@import "components/leaflet/custom_leaflet.scss";
main{
// margin-top: $margin-hero;
@@ -89,7 +89,6 @@ a{
}
}
main{
h2{
font-family: 'dukefill';
font-size: 3.5rem;
@@ -146,6 +145,7 @@ main{
letter-spacing: $letter_spacingH;
color: $lightgrey;
}
.__ressources{
h4{
text-transform: uppercase;
+175 -75
View File
@@ -1,93 +1,193 @@
function notes() {
(function ($) {
var $link = $('#presentation a');
$link.each(function(){
$(this).click(function(e) {
$this = $(this);
if ( $this.is('#ressource') || $this.is('#publication') ) {
e.preventDefault();
function notes() {
var $url = $this.attr("href");
var $link = $('#presentation a');
$link.each(function(){
$(this).click(function(e) {
$this = $(this);
if ( $this.is('#ressource') || $this.is('#publication') ) {
e.preventDefault();
if ($( ".side_notes" )[0]) {
$( ".side_notes" ).remove();
var $url = $this.attr("href");
if ($( ".side_notes" )[0]) {
$( ".side_notes" ).remove();
}
content_type($url, $this);
ajax($url, $this);
}
content_type($url, $this);
ajax($url, $this);
}
});
})
});
})
function content_type($url, $this) {
if ($this.is('#ressource')) {
$("<div class='side_notes'><a href="+$url+"></a> </div>").insertAfter("article");
}else if ( $this.is('#publication') ) {
console.log('clcik');
$("<div class='side_notes'></>").insertAfter("article");
function content_type($url, $this) {
if ($this.is('#ressource')) {
$("<div class='side_notes'><a href="+$url+"></a> </div>").insertAfter("article");
}else if ( $this.is('#publication') ) {
console.log('clcik');
$("<div class='side_notes'></>").insertAfter("article");
}
}
function ajax($url , $this) {
$.ajax({
url: $url,
method: "GET",
dataType:'html',
async: true,
success: function(data) {
if ($this.is('#ressource')) {
$(data).find('article > div:not(.__wrap_side) .__wrapper').appendTo('.side_notes a');
}else if ($this.is('#publication')) {
$(data).find('article > div:not(.__wrap_side) .__wrapper').appendTo('.side_notes');
}
position_link($this);
},
})
}
function position_link($this) {
var $top_link = $this.position().top;
console.log($top_link);
$('.side_notes > *').css("top", $top_link);
}
}
function ajax($url , $this) {
$.ajax({
url: $url,
method: "GET",
dataType:'html',
async: true,
success: function(data) {
if ($this.is('#ressource')) {
$(data).find('article > div:not(.__wrap_side) .__wrapper').appendTo('.side_notes a');
}else if ($this.is('#publication')) {
$(data).find('article > div:not(.__wrap_side) .__wrapper').appendTo('.side_notes');
}
position_link($this);
},
})
function slide() {
var $slide = $('main .__slide');
$slide.each(function() {
$(this).flickity({
cellAlign: 'left',
pageDots: false,
contain: true
})
});
var $footer_slide = $('footer .__slide');
$footer_slide.each(function() {
$(this).flickity({
cellAlign: 'left',
pageDots: false,
autoPlay: true,
pauseAutoPlayOnHover: false,
contain: true,
prevNextButtons: false,
})
});
}
function position_link($this) {
var $top_link = $this.position().top;
console.log($top_link);
$('.side_notes > *').css("top", $top_link);
function burger() {
var hamburgers = document.querySelector(".hamburger");
var nav = document.querySelector(".nav-main");
hamburgers.addEventListener("click", function() {
this.classList.toggle("is-active");
nav.classList.toggle("is-active");
$('html, body').toggleClass("is-active");
$('#block-popsu-colloque-branding').toggleClass("is-active");
});
}
}
function slide() {
var $slide = $('main .__slide');
$slide.each(function() {
$(this).flickity({
cellAlign: 'left',
pageDots: false,
contain: true
})
});
function replaceAny(){
var $any_value = $('#edit-field-theme-target-id option').attr('value');
if ($any_value == "All") {
var $any_content = $('#edit-field-theme-target-id option:first-child').html();
var newhtml = $any_content.replace("- Any -", "Thèmes");
$('#edit-field-theme-target-id option:first-child').html(newhtml);
}
}
var $footer_slide = $('footer .__slide');
$footer_slide.each(function() {
$(this).flickity({
cellAlign: 'left',
pageDots: false,
autoPlay: true,
pauseAutoPlayOnHover: false,
contain: true,
prevNextButtons: false,
})
});
function select_custom() {
var x, i, j, l, ll, selElmnt, a, b, c;
/* Look for any elements with the class "form-select": */
x = document.querySelectorAll(".js-form-item-field-theme-target-id, .js-form-item-field-type-de-publication-target-id ");
l = x.length;
for (i = 0; i < l; i++) {
selElmnt = x[i].getElementsByTagName("select")[0];
ll = selElmnt.length;
/* For each element, create a new DIV that will act as the selected item: */
a = document.createElement("DIV");
a.setAttribute("class", "select-selected");
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
x[i].appendChild(a);
/* For each element, create a new DIV that will contain the option list: */
b = document.createElement("DIV");
b.setAttribute("class", "select-items select-hide");
for (j = 1; j < ll; j++) {
/* For each option in the original select element,
create a new DIV that will act as an option item: */
c = document.createElement("DIV");
c.innerHTML = selElmnt.options[j].innerHTML;
c.addEventListener("click", function(e) {
/* When an item is clicked, update the original select box,
and the selected item: */
var y, i, k, s, h, sl, yl;
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
sl = s.length;
h = this.parentNode.previousSibling;
for (i = 0; i < sl; i++) {
if (s.options[i].innerHTML == this.innerHTML) {
s.selectedIndex = i;
h.innerHTML = this.innerHTML;
y = this.parentNode.getElementsByClassName("same-as-selected");
yl = y.length;
for (k = 0; k < yl; k++) {
y[k].removeAttribute("class");
}
this.setAttribute("class", "same-as-selected");
break;
}
}
h.click();
});
b.appendChild(c);
}
x[i].appendChild(b);
a.addEventListener("click", function(e) {
/* When the select box is clicked, close any other select boxes,
and open/close the current select box: */
e.stopPropagation();
closeAllSelect(this);
this.nextSibling.classList.toggle("select-hide");
this.classList.toggle("select-arrow-active");
});
}
function closeAllSelect(elmnt) {
/* A function that will close all select boxes in the document,
except the current select box: */
var x, y, i, xl, yl, arrNo = [];
x = document.getElementsByClassName("select-items");
y = document.getElementsByClassName("select-selected");
xl = x.length;
yl = y.length;
for (i = 0; i < yl; i++) {
if (elmnt == y[i]) {
arrNo.push(i)
} else {
y[i].classList.remove("select-arrow-active");
}
}
for (i = 0; i < xl; i++) {
if (arrNo.indexOf(i)) {
x[i].classList.add("select-hide");
}
}
}
/* If the user clicks anywhere outside the select box,
then close all select boxes: */
document.addEventListener("click", closeAllSelect);
}
function burger() {
var hamburgers = document.querySelector(".hamburger");
var nav = document.querySelector(".nav-main");
hamburgers.addEventListener("click", function() {
this.classList.toggle("is-active");
nav.classList.toggle("is-active");
$('html, body').toggleClass("is-active");
$('#block-popsu-colloque-branding').toggleClass("is-active");
$( document ).ready(function() {
notes();
slide();
burger();
replaceAny();
select_custom();
});
}
$( document ).ready(function() {
notes();
slide();
burger();
});
})(jQuery);
@@ -13,7 +13,9 @@ regions:
header: Header
primary_menu: 'Primary menu'
highlighted: Highlighted
filter: 'Filter'
content: Content
sidebar_first: 'Sidebar first'
sidebar_second: 'Sidebar second'
footer: 'Footer'
@@ -45,7 +45,7 @@
%}
<h4>{{ label }}</h4>
<div class="d-lg-flex d-block pb-4">
<div class="d-lg-flex flex-wrap d-block pb-4">
{% for item in items %}
{{ item.content }}
{% endfor %}
@@ -45,7 +45,7 @@
%}
<h4>{{ label }}</h4>
<div class="row flex-wrap">
<div class="row flex-wrap mx-0">
{% for item in items %}
{{ item.content }}
{% endfor %}
@@ -0,0 +1,51 @@
{#
/**
* @file
* Default theme implementation 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()
*
* @ingroup themeable
*/
#}
{%
set title_classes = [
label_display == 'visually_hidden' ? 'visually-hidden',
]
%}
{% if label_hidden %}
{% for item in items %}
<h2>{{ item.content }}</h2>
{% endfor %}
{% endif %}
@@ -0,0 +1,72 @@
{#
/**
* @file
* Default theme implementation 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()
*
* @ingroup themeable
*/
#}
{%
set title_classes = [
label_display == 'visually_hidden' ? 'visually-hidden',
]
%}
{% if label_hidden %}
{% if multiple %}
<div{{ attributes }}>
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
</div>
{% else %}
{% for item in items %}
<div{{ attributes }}>{{ item.content }}</div>
{% endfor %}
{% endif %}
{% else %}
<div{{ attributes }}>
<div{{ title_attributes.addClass(title_classes) }} class="sub-title">{{ label }}</div>
{% if multiple %}
<div class="d-flex">
{% endif %}
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
{% if multiple %}
</div>
{% endif %}
</div>
{% endif %}
@@ -46,7 +46,7 @@
{% if label_hidden %}
{% if multiple %}
<div{{ attributes }}>
<div{{ attributes }} class="__slide">
{% for item in items %}
<div{{ item.attributes }}>{{ item.content }}</div>
{% endfor %}
@@ -0,0 +1,22 @@
{#
/**
* @file
* Default microdata theme implementation for a geolocation with latitude, longitude.
*
* Available variables:
* - lat: The latitude value.
* - lng: The longitude value.
*
* @see template_preprocess()
*
* @ingroup themeable
*/
#}
<span typeof="Place">
<span property="geo" typeof="GeoCoordinates">
<meta property="latitude" content="{{ lat }}">
<meta property="longitude" content="{{ lng }}">
</span>
<div id="mapid"></div>
{# <span class="geolocation-latlng">{{ lat }}, {{ lng }}</span> #}
</span>
@@ -0,0 +1,17 @@
{#
/**
* @file
* Default theme implementation for a 'form' element.
*
* Available variables
* - attributes: A list of HTML attributes for the wrapper element.
* - children: The child elements of the form.
*
* @see template_preprocess_form()
*
* @ingroup themeable
*/
#}
<form{{ attributes }}>
{{ children }}
</form>
@@ -12,8 +12,9 @@
* @ingroup themeable
*/
#}
{% spaceless %}
<select{{ attributes }}>
<select{{ attributes }} >
{% for option in options %}
{% if option.type == 'optgroup' %}
<optgroup label="{{ option.label }}">
@@ -0,0 +1,98 @@
{#
/**
* @file
* Default theme implementation to display a node.
*
* Available variables:
* - node: The node entity with limited access to object properties and methods.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - node.getCreatedTime() will return the node creation timestamp.
* - node.hasField('field_example') returns TRUE if the node bundle includes
* field_example. (This does not indicate the presence of a value in this
* field.)
* - node.isPublished() will return whether the node is published or not.
* Calling other methods, such as node.delete(), will result in an exception.
* See \Drupal\node\Entity\Node for a full list of public properties and
* methods for the node object.
* - label: (optional) 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: (optional) Themed creation date field.
* - author_name: (optional) 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.
*
* @ingroup themeable
*/
#}
<article{{ attributes }} class="col-12 col-md-10 mb-5">
{{ title_prefix }}
{% if label and 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 }}>
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
{{ metadata }}
</div>
</footer>
{% endif %}
<div{{ content_attributes }}>
{{ content }}
</div>
</article>
@@ -0,0 +1,94 @@
{#
/**
* @file
* Default theme implementation to display a node.
*
* Available variables:
* - node: The node entity with limited access to object properties and methods.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - node.getCreatedTime() will return the node creation timestamp.
* - node.hasField('field_example') returns TRUE if the node bundle includes
* field_example. (This does not indicate the presence of a value in this
* field.)
* - node.isPublished() will return whether the node is published or not.
* Calling other methods, such as node.delete(), will result in an exception.
* See \Drupal\node\Entity\Node for a full list of public properties and
* methods for the node object.
* - label: (optional) 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: (optional) Themed creation date field.
* - author_name: (optional) 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.
*
* @ingroup themeable
*/
#}
{% set isoClassTheme = content.field_theme[0][ '#plain_text'] %}
{% set isoClassPublication = content.field_type_de_publication[0][ '#plain_text'] %}
<article{{ attributes }} class="{{isoClassTheme}} {{isoClassPublication}} thumbnails publications">
<div{{ content_attributes }}>
<a href="{{ url }}">
<div class="d-flex">
<div class="__media">
{{content.field_ajouter_un_media}}
</div>
<div class="__wrap">
<div class="__content">
{{ label|raw }}
{{content.field_complement_d_info|raw}}
</div>
</div>
</div>
</a>
</div>
</article>
@@ -72,7 +72,8 @@
* @ingroup themeable
*/
#}
<article{{ attributes }} class=" thumbnails publications">
<article{{ attributes }} class="thumbnails publications">
<div{{ content_attributes }}>
<a href="{{ url }}">
<div class="d-flex">
@@ -62,6 +62,13 @@
<main role="main">
<a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
{% if page.filter %}
<section class="container" role="complementary">
{{ page.filter }}
</section>
{% endif %}
<div class="layout-content">
{{ page.content }}
</div>{# /.layout-content #}
@@ -44,7 +44,7 @@
{{ attachment_before }}
{% if rows -%}
<section class="d-flex flex-wrap" >
<section class="grid d-flex flex-wrap" >
{{ rows }}
</section>
{% elseif empty -%}