search is ok! (remains to sync search and corpus map
This commit is contained in:
@@ -592,12 +592,16 @@
|
|||||||
// show opened audio node
|
// show opened audio node
|
||||||
function openNode(id){
|
function openNode(id){
|
||||||
closeNode();
|
closeNode();
|
||||||
_node_opened_id = id;
|
if(typeof _nodes[id] !== 'undefined'){
|
||||||
_nodes[id].open();
|
_node_opened_id = id;
|
||||||
|
_nodes[id].open();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function closeNode(){
|
function closeNode(){
|
||||||
if(_node_opened_id != -1){
|
if(_node_opened_id != -1){
|
||||||
_nodes[_node_opened_id].close();
|
// if(typeof _nodes[_node_opened_id] !== 'undefined'){
|
||||||
|
_nodes[_node_opened_id].close();
|
||||||
|
// }
|
||||||
_node_opened_id = -1;
|
_node_opened_id = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -794,18 +798,17 @@
|
|||||||
scrambleCollection();
|
scrambleCollection();
|
||||||
_$body.trigger({'type':'close_entree', 'tid':tid});
|
_$body.trigger({'type':'close_entree', 'tid':tid});
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
// $('body').trigger({
|
_$body
|
||||||
// 'type':'chutier-action-done',
|
.on('chutier-action-done', function(e) {
|
||||||
// 'action_done':data.action_done,
|
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
|
||||||
// 'target_id':$link.attr('target_id'),
|
})
|
||||||
// });
|
.on('search-results-loaded', function(e){
|
||||||
_$body.on('chutier-action-done', function(e) {
|
console.log("Edlp Corpus, search-results-loaded",e.results);
|
||||||
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
|
// TODO: filter map's nodes
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// _ _ _ ___ _ _
|
// _ _ _ ___ _ _
|
||||||
|
|||||||
@@ -592,12 +592,16 @@
|
|||||||
// show opened audio node
|
// show opened audio node
|
||||||
function openNode(id){
|
function openNode(id){
|
||||||
closeNode();
|
closeNode();
|
||||||
_node_opened_id = id;
|
if(typeof _nodes[id] !== 'undefined'){
|
||||||
_nodes[id].open();
|
_node_opened_id = id;
|
||||||
|
_nodes[id].open();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function closeNode(){
|
function closeNode(){
|
||||||
if(_node_opened_id != -1){
|
if(_node_opened_id != -1){
|
||||||
_nodes[_node_opened_id].close();
|
// if(typeof _nodes[_node_opened_id] !== 'undefined'){
|
||||||
|
_nodes[_node_opened_id].close();
|
||||||
|
// }
|
||||||
_node_opened_id = -1;
|
_node_opened_id = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -794,18 +798,17 @@
|
|||||||
scrambleCollection();
|
scrambleCollection();
|
||||||
_$body.trigger({'type':'close_entree', 'tid':tid});
|
_$body.trigger({'type':'close_entree', 'tid':tid});
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
// $('body').trigger({
|
_$body
|
||||||
// 'type':'chutier-action-done',
|
.on('chutier-action-done', function(e) {
|
||||||
// 'action_done':data.action_done,
|
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
|
||||||
// 'target_id':$link.attr('target_id'),
|
})
|
||||||
// });
|
.on('search-results-loaded', function(e){
|
||||||
_$body.on('chutier-action-done', function(e) {
|
console.log("Edlp Corpus, search-results-loaded",e.results);
|
||||||
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
|
// TODO: filter map's nodes
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// _ _ _ ___ _ _
|
// _ _ _ ___ _ _
|
||||||
|
|||||||
@@ -1,9 +1,84 @@
|
|||||||
(function ($, Drupal, drupalSettings) {
|
(function ($, Drupal, drupalSettings) {
|
||||||
|
|
||||||
var settings = drupalSettings.edlp_studio;
|
var settings = drupalSettings.edlp_search;
|
||||||
|
var _$body = $('body');
|
||||||
|
var _$container;
|
||||||
|
var _$form;
|
||||||
|
|
||||||
function init(){
|
function init(){
|
||||||
console.log('Edlp Search Init');
|
console.log('EdlpSearch Init', settings);
|
||||||
|
initEvents();
|
||||||
|
initAjax();
|
||||||
|
};
|
||||||
|
|
||||||
|
function initEvents(){
|
||||||
|
$('body')
|
||||||
|
.on('new-content-ajax-loaded', initAjax);
|
||||||
|
};
|
||||||
|
|
||||||
|
function initAjax(){
|
||||||
|
console.log('EdlpSearch initAjaxForm()');
|
||||||
|
_$form = $('#edlp-search-form:not(.ajax-enabled)')
|
||||||
|
.on('submit', onSubmitForm)
|
||||||
|
.addClass('ajax-enabled');
|
||||||
|
_$container = _$form.parents('.row');
|
||||||
|
if(!_$container.length){
|
||||||
|
_$container = _$form.parent();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function onSubmitForm(e){
|
||||||
|
e.preventDefault();
|
||||||
|
// console.log('onSubmitForm',e);
|
||||||
|
var args = {};
|
||||||
|
|
||||||
|
// search for key words
|
||||||
|
args.keys = $('input[type="search"]', this).val();
|
||||||
|
|
||||||
|
// entries filter
|
||||||
|
args.entries = [];
|
||||||
|
$('input[type="checkbox"]:checked', '#edit-entries').each(function(index, el) {
|
||||||
|
args.entries.push($(this).val());
|
||||||
|
});
|
||||||
|
|
||||||
|
loadResults(args)
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function loadResults(args){
|
||||||
|
console.log('EdlpSearch loadResults() : args', args);
|
||||||
|
_$form.addClass('ajax-loading');
|
||||||
|
var path = window.location.origin + drupalSettings.path.baseUrl +settings.results_ajax_url;
|
||||||
|
$.getJSON(path, args)
|
||||||
|
.done(function(data){
|
||||||
|
onResultsLoaded(data);
|
||||||
|
})
|
||||||
|
.fail(function(jqxhr, textStatus, error){
|
||||||
|
onResultsLoadFail(jqxhr, textStatus, error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function onResultsLoaded(data){
|
||||||
|
console.log('EdlpSearch onResultsLoaded()', data);
|
||||||
|
// insert results col
|
||||||
|
$prev_results = $('[theme="edlp_search_results"]', _$container);
|
||||||
|
if($prev_results.length){
|
||||||
|
$prev_results.replaceWith(data.rendered);
|
||||||
|
}else{
|
||||||
|
_$container.append(data.rendered);
|
||||||
|
}
|
||||||
|
|
||||||
|
// trigger event
|
||||||
|
_$body.trigger({
|
||||||
|
'type':'search-results-loaded',
|
||||||
|
'results':data.results_nids
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
function onResultsLoadFail(jqxhr, textStatus, error){
|
||||||
|
console.warn('EdlpSearch : search results ajax load failed : '+error, jqxhr.responseText);
|
||||||
};
|
};
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ function edlp_search_help($route_name, RouteMatchInterface $route_match) {
|
|||||||
*/
|
*/
|
||||||
function edlp_search_page_attachments(array &$attachments) {
|
function edlp_search_page_attachments(array &$attachments) {
|
||||||
$attachments['#attached']['library'][] = 'edlp_search/edlp_search-library';
|
$attachments['#attached']['library'][] = 'edlp_search/edlp_search-library';
|
||||||
$url = Url::fromRoute('edlp_search.edlp_search_controller_searchResults_ajax', [], ['absolute' => TRUE]);
|
$url = Url::fromRoute('edlp_search.edlp_search_controller_search_results_ajax');
|
||||||
$attachments['#attached']['drupalSettings']['edlp_search']['results_ajax_url'] = $url->getInternalPath();
|
$attachments['#attached']['drupalSettings']['edlp_search']['results_ajax_url'] = $url->getInternalPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,5 +46,13 @@ function edlp_search_theme($existing, $type, $theme, $path) {
|
|||||||
'form' => null,
|
'form' => null,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
'edlp_search_results' => array(
|
||||||
|
'file' => 'includes/edlp_search_results.inc',
|
||||||
|
'variables' => array(
|
||||||
|
'items' => null,
|
||||||
|
'no_results_found' => '',
|
||||||
|
'search_help' => ''
|
||||||
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ edlp_search.edlp_search_controller_searchForm_ajax:
|
|||||||
requirements:
|
requirements:
|
||||||
_permission: 'access content'
|
_permission: 'access content'
|
||||||
|
|
||||||
edlp_search.edlp_search_controller_searchResults:
|
edlp_search.edlp_search_controller_search_results:
|
||||||
path: '/edlp_search/searchresults'
|
path: '/edlp_search/searchresults'
|
||||||
defaults:
|
defaults:
|
||||||
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResults'
|
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResults'
|
||||||
@@ -23,7 +23,7 @@ edlp_search.edlp_search_controller_searchResults:
|
|||||||
requirements:
|
requirements:
|
||||||
_permission: 'access content'
|
_permission: 'access content'
|
||||||
|
|
||||||
edlp_search.edlp_search_controller_searchResults_ajax:
|
edlp_search.edlp_search_controller_search_results_ajax:
|
||||||
path: '/edlp_search/searchresults/ajax'
|
path: '/edlp_search/searchresults/ajax'
|
||||||
defaults:
|
defaults:
|
||||||
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResultsJson'
|
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResultsJson'
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
function template_preprocess_edlp_search_results(&$vars){
|
||||||
|
// dpm($vars);
|
||||||
|
|
||||||
|
$view_builder = \Drupal::entityTypeManager()->getViewBuilder('node');
|
||||||
|
|
||||||
|
$items = [];
|
||||||
|
if(count($vars['items'])){
|
||||||
|
foreach ($vars['items'] as $item) {
|
||||||
|
$items[] = $view_builder->view($item, 'search_index');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$vars['items'] = $items;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,9 +4,9 @@ namespace Drupal\edlp_search\Controller;
|
|||||||
|
|
||||||
use Drupal\Core\Controller\ControllerBase;
|
use Drupal\Core\Controller\ControllerBase;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
use Drupal\Core\Entity\EntityStorageInterface;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Drupal\Core\Form\FormBuilder;
|
use Drupal\Core\Form\FormBuilder;
|
||||||
|
use Drupal\search_api\Entity\Index;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -62,6 +62,9 @@ class EdlpSearchController extends ControllerBase {
|
|||||||
return $this->renderable;
|
return $this->renderable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* searchFormJson
|
||||||
|
*/
|
||||||
public function searchFormJson(){
|
public function searchFormJson(){
|
||||||
$this->buildRenderable();
|
$this->buildRenderable();
|
||||||
|
|
||||||
@@ -76,27 +79,152 @@ class EdlpSearchController extends ControllerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searchresults.
|
* searchResults
|
||||||
*
|
*/
|
||||||
* @return string
|
public function searchResults(Request $request) {
|
||||||
* Return Hello string.
|
|
||||||
*/
|
$this->request = $request;
|
||||||
public function searchResults() {
|
|
||||||
return [
|
// TODO: what if no results
|
||||||
'#type' => 'markup',
|
|
||||||
'#markup' => $this->t('Implement method: searchResults')
|
return $this->getrenderable();
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* searchResultsJson
|
||||||
|
*/
|
||||||
public function searchResultsJson(Request $request){
|
public function searchResultsJson(Request $request){
|
||||||
|
|
||||||
$keys = $request->query->get('keys');
|
$this->request = $request;
|
||||||
|
|
||||||
|
$renderable = $this->getrenderable();
|
||||||
|
$rendered = render($renderable);
|
||||||
|
|
||||||
|
// build an array of results's nids
|
||||||
|
$results_nids = [];
|
||||||
|
foreach ($this->items as $item) {
|
||||||
|
$results_nids[] = $item->id();
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: what if no results
|
||||||
|
|
||||||
$response = new JsonResponse();
|
$response = new JsonResponse();
|
||||||
$response->setData([
|
$response->setData([
|
||||||
'test'=>'search results',
|
'test'=>'search results',
|
||||||
'keys'=>$keys
|
'keys'=>$this->keys,
|
||||||
// 'rendered'=> $rendered,
|
'entries' => $this->entries,
|
||||||
|
'rendered'=> $rendered,
|
||||||
|
'results_nids'=>$results_nids,
|
||||||
]);
|
]);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getRenderable
|
||||||
|
*/
|
||||||
|
private function getRenderable(){
|
||||||
|
$this->query();
|
||||||
|
|
||||||
|
$build = array(
|
||||||
|
'#theme' => 'edlp_search_results',
|
||||||
|
'#items' => $this->items
|
||||||
|
);
|
||||||
|
if(!count($this->items)){
|
||||||
|
$build['#no_results_found'] = array(
|
||||||
|
'#markup' => t('Your search yielded no results.')
|
||||||
|
);
|
||||||
|
// $build['#search_help'] = array(
|
||||||
|
// '#markup' => $this->t('<ul>
|
||||||
|
// <li>Check if your spelling is correct.</li>
|
||||||
|
// <li>Remove quotes around phrases to search for each word individually. <em>bike shed</em> will often show more results than <em>"bike shed"</em>.</li>
|
||||||
|
// <li>Consider loosening your query with <em>OR</em>. <em>bike OR shed</em> will often show more results than <em>bike shed</em>.</li>
|
||||||
|
// </ul>')
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $build;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* query
|
||||||
|
*/
|
||||||
|
private function query(){
|
||||||
|
|
||||||
|
$this->getRequestArgs();
|
||||||
|
|
||||||
|
// TODO: get the sapi index id with settings
|
||||||
|
/* @var $sapi_index \Drupal\search_api\IndexInterface */
|
||||||
|
$sapi_index = Index::load('collection');
|
||||||
|
// dpm($sapi_index);
|
||||||
|
|
||||||
|
// Create the query.
|
||||||
|
$query = $sapi_index->query();
|
||||||
|
// dpm($query);
|
||||||
|
|
||||||
|
$query->setSearchID('edlp_search:ajaxsearch');
|
||||||
|
|
||||||
|
$parse_mode = \Drupal::getContainer()
|
||||||
|
->get('plugin.manager.search_api.parse_mode')
|
||||||
|
->createInstance('direct');
|
||||||
|
$query->setParseMode($parse_mode);
|
||||||
|
|
||||||
|
// workflow
|
||||||
|
$wf_condition_group = $query->createConditionGroup('OR');
|
||||||
|
$wf_condition_group->addCondition('field_workflow', 'corpus_documents_publie', "=");
|
||||||
|
// TODO: add condition with the other workflow field
|
||||||
|
$query->addConditionGroup($wf_condition_group);
|
||||||
|
|
||||||
|
// Search for keys.
|
||||||
|
if (!empty($this->keys)) {
|
||||||
|
$query->keys($this->keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
// entries
|
||||||
|
if (!empty($this->entries)){
|
||||||
|
$entries_condition_group = $query->createConditionGroup();
|
||||||
|
foreach ($this->entries as $tid) {
|
||||||
|
$entries_condition_group->addCondition('field_entrees', (int)$tid, "=");
|
||||||
|
}
|
||||||
|
// dpm($entries_condition_group);
|
||||||
|
$query->addConditionGroup($entries_condition_group);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: genres
|
||||||
|
|
||||||
|
// TODO: locuteurs
|
||||||
|
|
||||||
|
// TODO: langues
|
||||||
|
|
||||||
|
$result = $query->execute();
|
||||||
|
$items = $result->getResultItems();
|
||||||
|
// dpm($items);
|
||||||
|
|
||||||
|
$this->items = [];
|
||||||
|
foreach ($items as $item) {
|
||||||
|
try {
|
||||||
|
/** @var \Drupal\Core\Entity\EntityInterface $entity */
|
||||||
|
$entity = $item->getOriginalObject()->getValue();
|
||||||
|
}
|
||||||
|
catch (SearchApiException $e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!$entity) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->items[] = $entity;
|
||||||
|
}
|
||||||
|
// dpm($this->items);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getRequestArgs
|
||||||
|
*/
|
||||||
|
private function getRequestArgs(){
|
||||||
|
$this->keys = $this->request->query->get('keys');
|
||||||
|
$this->entries = $this->request->query->get('entries');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{{ items }}
|
||||||
|
{{ no_results_found }}
|
||||||
|
{{ search_help }}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
var _$body = $('body');
|
var _$body = $('body');
|
||||||
var _is_front = _$body.is('.path-frontpage');
|
var _is_front = _$body.is('.path-frontpage');
|
||||||
var _$corpus_canvas;
|
var _$corpus_canvas;
|
||||||
var _$content_container = $('main[role="main"]>.layout-content');
|
var _$row = $('main[role="main"]>.layout-content>.row');
|
||||||
var _$ajaxLinks;
|
var _$ajaxLinks;
|
||||||
var _audio_player;
|
var _audio_player;
|
||||||
var _randomPlayer;
|
var _randomPlayer;
|
||||||
@@ -41,6 +41,9 @@
|
|||||||
.on('on-studio-chutier-updated', function(e){
|
.on('on-studio-chutier-updated', function(e){
|
||||||
initAjaxLinks();
|
initAjaxLinks();
|
||||||
})
|
})
|
||||||
|
.on('search-results-loaded',function(e){
|
||||||
|
initAjaxLinks();
|
||||||
|
})
|
||||||
.on('open_entree', function(e){
|
.on('open_entree', function(e){
|
||||||
// e.tid available
|
// e.tid available
|
||||||
closeAllModals();
|
closeAllModals();
|
||||||
@@ -410,7 +413,9 @@
|
|||||||
_$body.removeClass('ajax-loading');
|
_$body.removeClass('ajax-loading');
|
||||||
|
|
||||||
// replace all content with newly loaded
|
// replace all content with newly loaded
|
||||||
_$content_container.html(data.rendered);
|
// TODO: build a system to replace or append contents (like studio + search)
|
||||||
|
|
||||||
|
_$row.html(data.rendered);
|
||||||
|
|
||||||
// add body class for currently loaded content
|
// add body class for currently loaded content
|
||||||
var body_classes = [
|
var body_classes = [
|
||||||
@@ -448,7 +453,7 @@
|
|||||||
_$body.trigger({'type':'new-content-ajax-loaded'});
|
_$body.trigger({'type':'new-content-ajax-loaded'});
|
||||||
|
|
||||||
// TODO: call behaviours
|
// TODO: call behaviours
|
||||||
Drupal.attachBehaviors(_$content_container);
|
Drupal.attachBehaviors(_$row[0]);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -553,7 +558,7 @@
|
|||||||
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
|
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
|
||||||
function initProductions(){
|
function initProductions(){
|
||||||
console.log('theme : initProductions');
|
console.log('theme : initProductions');
|
||||||
var $grid = $('.row', _$content_container).masonry({
|
var $grid = $('.row', _$row).masonry({
|
||||||
itemSelector:'.col',
|
itemSelector:'.col',
|
||||||
columnWidth:'.col-2'
|
columnWidth:'.col-2'
|
||||||
});
|
});
|
||||||
@@ -562,7 +567,7 @@
|
|||||||
$grid.imagesLoaded().progress( function() {
|
$grid.imagesLoaded().progress( function() {
|
||||||
$grid.masonry('layout');
|
$grid.masonry('layout');
|
||||||
});
|
});
|
||||||
// var $grid = $('.row', _$content_container).imagesLoaded( function() {
|
// var $grid = $('.row', _$row).imagesLoaded( function() {
|
||||||
// // init Masonry after all images have loaded
|
// // init Masonry after all images have loaded
|
||||||
// $grid.masonry({
|
// $grid.masonry({
|
||||||
// itemSelector:'.col',
|
// itemSelector:'.col',
|
||||||
@@ -591,7 +596,7 @@
|
|||||||
function closeAllModals(){
|
function closeAllModals(){
|
||||||
console.log('theme : closeAllModals');
|
console.log('theme : closeAllModals');
|
||||||
// TODO: animate the remove
|
// TODO: animate the remove
|
||||||
_$content_container.html('');
|
_$row.html('');
|
||||||
_$ajaxLinks.removeClass('is-active');
|
_$ajaxLinks.removeClass('is-active');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1086,6 +1086,11 @@ a:focus {
|
|||||||
.col-11-offset-1:last-child {
|
.col-11-offset-1:last-child {
|
||||||
padding-right: 0; }
|
padding-right: 0; }
|
||||||
|
|
||||||
|
.col.float-right {
|
||||||
|
float: right;
|
||||||
|
padding-right: 0;
|
||||||
|
padding-left: 1em; }
|
||||||
|
|
||||||
body, html {
|
body, html {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -1108,6 +1113,18 @@ header[role="banner"] {
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative; }
|
position: relative; }
|
||||||
|
|
||||||
|
aside.messages {
|
||||||
|
border: none;
|
||||||
|
z-index: 99;
|
||||||
|
position: absolute;
|
||||||
|
left: 5%;
|
||||||
|
top: 100px;
|
||||||
|
width: 80%;
|
||||||
|
max-height: 600px;
|
||||||
|
background-color: rgba(255, 255, 255, 0.8);
|
||||||
|
padding: 0;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
main[role="main"] {
|
main[role="main"] {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -1124,9 +1141,6 @@ main[role="main"] {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden; }
|
overflow: hidden; }
|
||||||
main[role="main"] .layout-content > .messages {
|
|
||||||
max-height: 500px;
|
|
||||||
overflow: auto; }
|
|
||||||
main[role="main"] .layout-content > * {
|
main[role="main"] .layout-content > * {
|
||||||
pointer-events: auto; }
|
pointer-events: auto; }
|
||||||
|
|
||||||
@@ -1671,6 +1685,57 @@ body.ajax-loading main[role="main"]:before {
|
|||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
border-left: 1px solid #aaa; }
|
border-left: 1px solid #aaa; }
|
||||||
|
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
background-color: black;
|
||||||
|
margin-right: 3px; }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='134'] {
|
||||||
|
background-color: var(--e-col-134); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='121'] {
|
||||||
|
background-color: var(--e-col-121); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='125'] {
|
||||||
|
background-color: var(--e-col-125); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='119'] {
|
||||||
|
background-color: var(--e-col-119); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='132'] {
|
||||||
|
background-color: var(--e-col-132); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='122'] {
|
||||||
|
background-color: var(--e-col-122); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='129'] {
|
||||||
|
background-color: var(--e-col-129); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='120'] {
|
||||||
|
background-color: var(--e-col-120); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='130'] {
|
||||||
|
background-color: var(--e-col-130); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='118'] {
|
||||||
|
background-color: var(--e-col-118); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='127'] {
|
||||||
|
background-color: var(--e-col-127); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='133'] {
|
||||||
|
background-color: var(--e-col-133); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='128'] {
|
||||||
|
background-color: var(--e-col-128); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='124'] {
|
||||||
|
background-color: var(--e-col-124); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='116'] {
|
||||||
|
background-color: var(--e-col-116); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='117'] {
|
||||||
|
background-color: var(--e-col-117); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='131'] {
|
||||||
|
background-color: var(--e-col-131); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='126'] {
|
||||||
|
background-color: var(--e-col-126); }
|
||||||
|
.col[theme="edlp_search_results"] article .entrees span[tid='123'] {
|
||||||
|
background-color: var(--e-col-123); }
|
||||||
|
|
||||||
|
.col[theme="edlp_search_results"] article h2.node-title {
|
||||||
|
margin: 0 0 0.3em 0;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 500;
|
||||||
|
text-transform: none; }
|
||||||
|
|
||||||
body.path-agenda main .col > .wrapper {
|
body.path-agenda main .col > .wrapper {
|
||||||
height: 100%; }
|
height: 100%; }
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
var _$body = $('body');
|
var _$body = $('body');
|
||||||
var _is_front = _$body.is('.path-frontpage');
|
var _is_front = _$body.is('.path-frontpage');
|
||||||
var _$corpus_canvas;
|
var _$corpus_canvas;
|
||||||
var _$content_container = $('main[role="main"]>.layout-content');
|
var _$row = $('main[role="main"]>.layout-content>.row');
|
||||||
var _$ajaxLinks;
|
var _$ajaxLinks;
|
||||||
var _audio_player;
|
var _audio_player;
|
||||||
var _randomPlayer;
|
var _randomPlayer;
|
||||||
@@ -41,6 +41,9 @@
|
|||||||
.on('on-studio-chutier-updated', function(e){
|
.on('on-studio-chutier-updated', function(e){
|
||||||
initAjaxLinks();
|
initAjaxLinks();
|
||||||
})
|
})
|
||||||
|
.on('search-results-loaded',function(e){
|
||||||
|
initAjaxLinks();
|
||||||
|
})
|
||||||
.on('open_entree', function(e){
|
.on('open_entree', function(e){
|
||||||
// e.tid available
|
// e.tid available
|
||||||
closeAllModals();
|
closeAllModals();
|
||||||
@@ -410,7 +413,9 @@
|
|||||||
_$body.removeClass('ajax-loading');
|
_$body.removeClass('ajax-loading');
|
||||||
|
|
||||||
// replace all content with newly loaded
|
// replace all content with newly loaded
|
||||||
_$content_container.html(data.rendered);
|
// TODO: build a system to replace or append contents (like studio + search)
|
||||||
|
|
||||||
|
_$row.html(data.rendered);
|
||||||
|
|
||||||
// add body class for currently loaded content
|
// add body class for currently loaded content
|
||||||
var body_classes = [
|
var body_classes = [
|
||||||
@@ -448,7 +453,7 @@
|
|||||||
_$body.trigger({'type':'new-content-ajax-loaded'});
|
_$body.trigger({'type':'new-content-ajax-loaded'});
|
||||||
|
|
||||||
// TODO: call behaviours
|
// TODO: call behaviours
|
||||||
Drupal.attachBehaviors(_$content_container);
|
Drupal.attachBehaviors(_$row[0]);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -553,7 +558,7 @@
|
|||||||
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
|
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
|
||||||
function initProductions(){
|
function initProductions(){
|
||||||
console.log('theme : initProductions');
|
console.log('theme : initProductions');
|
||||||
var $grid = $('.row', _$content_container).masonry({
|
var $grid = $('.row', _$row).masonry({
|
||||||
itemSelector:'.col',
|
itemSelector:'.col',
|
||||||
columnWidth:'.col-2'
|
columnWidth:'.col-2'
|
||||||
});
|
});
|
||||||
@@ -562,7 +567,7 @@
|
|||||||
$grid.imagesLoaded().progress( function() {
|
$grid.imagesLoaded().progress( function() {
|
||||||
$grid.masonry('layout');
|
$grid.masonry('layout');
|
||||||
});
|
});
|
||||||
// var $grid = $('.row', _$content_container).imagesLoaded( function() {
|
// var $grid = $('.row', _$row).imagesLoaded( function() {
|
||||||
// // init Masonry after all images have loaded
|
// // init Masonry after all images have loaded
|
||||||
// $grid.masonry({
|
// $grid.masonry({
|
||||||
// itemSelector:'.col',
|
// itemSelector:'.col',
|
||||||
@@ -591,7 +596,7 @@
|
|||||||
function closeAllModals(){
|
function closeAllModals(){
|
||||||
console.log('theme : closeAllModals');
|
console.log('theme : closeAllModals');
|
||||||
// TODO: animate the remove
|
// TODO: animate the remove
|
||||||
_$content_container.html('');
|
_$row.html('');
|
||||||
_$ajaxLinks.removeClass('is-active');
|
_$ajaxLinks.removeClass('is-active');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -587,6 +587,39 @@ main[role="main"]{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ___ _
|
||||||
|
// / __| ___ __ _ _ _ __| |_
|
||||||
|
// \__ \/ -_) _` | '_/ _| ' \
|
||||||
|
// |___/\___\__,_|_| \__|_||_|
|
||||||
|
|
||||||
|
#edlp-search-form{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.col[theme="edlp_search_results"]{
|
||||||
|
article{
|
||||||
|
.entrees{
|
||||||
|
span{
|
||||||
|
@include entrie-micro-square;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h2.node-title{
|
||||||
|
margin:0 0 0.3em 0;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 500;
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
// .description{
|
||||||
|
// p{
|
||||||
|
// margin:0;
|
||||||
|
// font-size: 0.75em;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// _ _ _ _ _
|
// _ _ _ _ _
|
||||||
// /_\ (_)__ ___ __ | \| |___ __| |___
|
// /_\ (_)__ ___ __ | \| |___ __| |___
|
||||||
// / _ \ | / _` \ \ / | .` / _ \/ _` / -_)
|
// / _ \ | / _` \ \ / | .` / _ \/ _` / -_)
|
||||||
@@ -692,6 +725,7 @@ body.path-productions{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ___ _
|
// ___ _
|
||||||
// | __|__ ___| |_ ___ _ _
|
// | __|__ ___| |_ ___ _ _
|
||||||
// | _/ _ \/ _ \ _/ -_) '_|
|
// | _/ _ \/ _ \ _/ -_) '_|
|
||||||
@@ -1041,8 +1075,8 @@ footer{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$icons_w:20px;
|
||||||
@mixin iconlinkblock($bgimgurl) {
|
@mixin iconlinkblock($bgimgurl) {
|
||||||
$icons_w:20px;
|
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
margin-left: 0.5em;
|
margin-left: 0.5em;
|
||||||
a{
|
a{
|
||||||
|
|||||||
@@ -73,3 +73,9 @@ $med-bp:1080px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.col.float-right{
|
||||||
|
float: right;
|
||||||
|
padding-right: 0;
|
||||||
|
padding-left: $default_gap;
|
||||||
|
}
|
||||||
|
|||||||
@@ -36,6 +36,16 @@ header[role="banner"]{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aside.messages{
|
||||||
|
border: none;
|
||||||
|
z-index: 99;
|
||||||
|
position: absolute;
|
||||||
|
left:5%; top:100px;
|
||||||
|
width:80%; max-height: 600px;
|
||||||
|
background-color: rgba(255,255,255,0.8);
|
||||||
|
padding:0;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
main[role="main"]{
|
main[role="main"]{
|
||||||
// outline:1px solid green;
|
// outline:1px solid green;
|
||||||
@@ -51,10 +61,6 @@ main[role="main"]{
|
|||||||
.layout-content{
|
.layout-content{
|
||||||
width: 100%; height:100%;
|
width: 100%; height:100%;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
&>.messages{
|
|
||||||
max-height: 500px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
&>*{
|
&>*{
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,10 +11,9 @@ use Drupal\Core\Template\Attribute;
|
|||||||
use Drupal\Component\Utility\Unicode;
|
use Drupal\Component\Utility\Unicode;
|
||||||
use Drupal\Core\Render\Element;
|
use Drupal\Core\Render\Element;
|
||||||
|
|
||||||
// function edlptheme_preprocess_input(&$vars){
|
function edlptheme_preprocess_page(&$vars){
|
||||||
// dsm($vars, 'vars');
|
// dsm($vars, 'vars');
|
||||||
// $vars['attributes']['placeholder'] = "salut";
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
function edlptheme_preprocess_node(&$vars){
|
function edlptheme_preprocess_node(&$vars){
|
||||||
$node = $vars['elements']['#node'];
|
$node = $vars['elements']['#node'];
|
||||||
@@ -80,6 +79,30 @@ function edlptheme_preprocess_node__enregistrement__index(&$vars){
|
|||||||
// dpm($vars['link_attributes']);
|
// dpm($vars['link_attributes']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function edlptheme_preprocess_node__enregistrement__search_index(&$vars){
|
||||||
|
$node = $vars['elements']['#node'];
|
||||||
|
$options = ['absolute' => TRUE];
|
||||||
|
$url = Url::fromRoute('entity.node.canonical', ['node' => $node->id()], $options);
|
||||||
|
$system_path = $url->getInternalPath();
|
||||||
|
// get the audio file url
|
||||||
|
$field_son_values = $node->get('field_son')->getValue();
|
||||||
|
$son_fid = count($field_son_values) ? $field_son_values[0]['target_id'] : "";
|
||||||
|
$son_file = \Drupal\file\Entity\File::load($son_fid);
|
||||||
|
$son_url = null;
|
||||||
|
if($son_file){
|
||||||
|
$son_uri = $son_file->getFileUri();
|
||||||
|
$son_url = file_create_url($son_uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
$vars['link_attributes'] = new Attribute(array(
|
||||||
|
'data-drupal-link-system-path' => $system_path=='' ? '<front>' : $system_path,
|
||||||
|
'audio_url' => $son_url,
|
||||||
|
'nid' => $node->id(),
|
||||||
|
'class' => array('audio-link', 'ajax-link')
|
||||||
|
));
|
||||||
|
// dpm($vars['link_attributes']);
|
||||||
|
}
|
||||||
|
|
||||||
function edlptheme_preprocess_node__enregistrement__player_cartel(&$vars){
|
function edlptheme_preprocess_node__enregistrement__player_cartel(&$vars){
|
||||||
// dpm($vars);
|
// dpm($vars);
|
||||||
// if transcript not empty
|
// if transcript not empty
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-12 large-col-8 ">
|
||||||
<div class="col small-col-12 med-col-12 large-col-8 ">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
<div id="agenda">
|
||||||
<div id="agenda">
|
|
||||||
|
|
||||||
<div class="column next-event">
|
|
||||||
{{ next_event }}
|
|
||||||
</div>
|
|
||||||
<div class="column future-past-events os-scroll">
|
|
||||||
{{ coming_events }}
|
|
||||||
{{ past_events }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<div class="column next-event">
|
||||||
|
{{ next_event }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="column future-past-events os-scroll">
|
||||||
|
{{ coming_events }}
|
||||||
|
{{ past_events }}
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-5
@@ -1,7 +1,5 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-6 large-col-6">
|
||||||
<div class="col small-col-12 med-col-6 large-col-6">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ content }}
|
||||||
{{ content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+5
-7
@@ -1,9 +1,7 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-6 large-col-6">
|
||||||
<div class="col small-col-12 med-col-6 large-col-6">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{#<div class="os-scroll">#}
|
||||||
{#<div class="os-scroll">#}
|
{{ content }}
|
||||||
{{ content }}
|
{#</div>#}
|
||||||
{#</div>#}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-5
@@ -1,7 +1,5 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-6 large-col-6">
|
||||||
<div class="col small-col-12 med-col-6 large-col-6">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ content }}
|
||||||
{{ content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-5
@@ -1,7 +1,5 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-4 large-col-4">
|
||||||
<div class="col small-col-12 med-col-4 large-col-4">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ content }}
|
||||||
{{ content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-5
@@ -1,7 +1,5 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-6 large-col-6">
|
||||||
<div class="col small-col-12 med-col-6 large-col-6">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ content }}
|
||||||
{{ content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,22 +1,20 @@
|
|||||||
<div class="row">
|
<div class="presentation col col-4">
|
||||||
<div class="presentation col col-4">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ presentation }}
|
||||||
{{ presentation }}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="last-file col col-2">
|
||||||
<div class="last-file col col-2">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ last_fil }}
|
||||||
{{ last_fil }}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="last-prod col col-4">
|
||||||
<div class="last-prod col col-4">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ last_production }}
|
||||||
{{ last_production }}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="agenda col col-2">
|
||||||
<div class="agenda col col-2">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ agenda }}
|
||||||
{{ agenda }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
<div class="row">
|
{% for node in nodes %}
|
||||||
{% for node in nodes %}
|
<div class="col col-{{ node.cols }}">
|
||||||
<div class="col col-{{ node.cols }}">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ node.build }}
|
||||||
{{ node.build }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
</div>
|
{% endfor %}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<div theme="{{ theme_hook_original }}" class="col small-col-12 med-col-4 large-col-3 float-right">
|
||||||
|
<div class="wrapper">
|
||||||
|
{{ items }}
|
||||||
|
{{ no_results_found }}
|
||||||
|
{{ search_help }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
+3
-5
@@ -1,7 +1,5 @@
|
|||||||
<div class="row">
|
<div theme="{{ theme_hook_original }}" class="col small-col-12 med-col-4 large-col-3 float-right">
|
||||||
<div class="col small-col-12 med-col-6 large-col-6">
|
<div class="wrapper">
|
||||||
<div class="wrapper">
|
{{ form }}
|
||||||
{{ form }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<div class="row">
|
<div class="col small-col-12 med-col-12 large-col-6">
|
||||||
<div class="col small-col-12 med-col-12 large-col-6">
|
<div class="wrapper studio-ui-wrapper">
|
||||||
<div class="wrapper studio-ui-wrapper">
|
<div id="studio-ui">
|
||||||
<div id="studio-ui">
|
{{ chutier_ui }}
|
||||||
{{ chutier_ui }}
|
{{ composition_ui }}
|
||||||
{{ composition_ui }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
{#
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Theme override 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: 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',
|
||||||
|
'node--type-' ~ node.bundle|clean_class,
|
||||||
|
node.isPromoted() ? 'node--promoted',
|
||||||
|
node.isSticky() ? 'node--sticky',
|
||||||
|
not node.isPublished() ? 'node--unpublished',
|
||||||
|
view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
|
||||||
|
]
|
||||||
|
%}
|
||||||
|
{{ attach_library('classy/node') }}
|
||||||
|
<article{{ attributes.addClass(classes) }}>
|
||||||
|
<div class="entrees">
|
||||||
|
{# THIS IS REALLY DIRTY !! #}
|
||||||
|
{% for key, child in content.field_entrees if key|first != '#' %}
|
||||||
|
{% set tid = child['#cache']['tags'][0]|replace({'taxonomy_term:':''}) %}
|
||||||
|
<span class="entree" tid="{{ tid }}" title="{{ child }}"></span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<h2{{ title_attributes.addClass('node-title') }}>
|
||||||
|
<a href="{{ url }}" rel="bookmark" {{ link_attributes }}>{{ label }}</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
</article>
|
||||||
@@ -50,9 +50,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
{% if page.content.messages %}
|
||||||
|
<aside class="messages">
|
||||||
|
{{ page.content.messages }}
|
||||||
|
</aside>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<div class="layout-content">
|
<div class="layout-content">
|
||||||
{{ page.content }}
|
<div class="row">
|
||||||
|
{{ page.content|without('messages') }}
|
||||||
|
</div>
|
||||||
</div>{# /.layout-content #}
|
</div>{# /.layout-content #}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ dependencies:
|
|||||||
- field.storage.node.field_transcript_trad
|
- field.storage.node.field_transcript_trad
|
||||||
- field.storage.node.field_transcript_vo
|
- field.storage.node.field_transcript_vo
|
||||||
- field.storage.node.field_entrees
|
- field.storage.node.field_entrees
|
||||||
|
- field.storage.node.field_genres
|
||||||
|
- field.storage.node.field_locuteurs
|
||||||
|
- field.storage.node.field_workflow
|
||||||
- search_api.server.edlp_db
|
- search_api.server.edlp_db
|
||||||
module:
|
module:
|
||||||
- taxonomy
|
- taxonomy
|
||||||
@@ -90,6 +93,38 @@ field_settings:
|
|||||||
- field.storage.node.field_entrees
|
- field.storage.node.field_entrees
|
||||||
module:
|
module:
|
||||||
- taxonomy
|
- taxonomy
|
||||||
|
field_entrees:
|
||||||
|
label: Entrée(s)
|
||||||
|
datasource_id: 'entity:node'
|
||||||
|
property_path: field_entrees
|
||||||
|
type: integer
|
||||||
|
dependencies:
|
||||||
|
config:
|
||||||
|
- field.storage.node.field_entrees
|
||||||
|
field_genres:
|
||||||
|
label: Genre(s)
|
||||||
|
datasource_id: 'entity:node'
|
||||||
|
property_path: field_genres
|
||||||
|
type: integer
|
||||||
|
dependencies:
|
||||||
|
config:
|
||||||
|
- field.storage.node.field_genres
|
||||||
|
field_locuteurs:
|
||||||
|
label: Locuteur(s)
|
||||||
|
datasource_id: 'entity:node'
|
||||||
|
property_path: field_locuteurs
|
||||||
|
type: integer
|
||||||
|
dependencies:
|
||||||
|
config:
|
||||||
|
- field.storage.node.field_locuteurs
|
||||||
|
field_workflow:
|
||||||
|
label: Workflow
|
||||||
|
datasource_id: 'entity:node'
|
||||||
|
property_path: field_workflow
|
||||||
|
type: string
|
||||||
|
dependencies:
|
||||||
|
config:
|
||||||
|
- field.storage.node.field_workflow
|
||||||
datasource_settings:
|
datasource_settings:
|
||||||
'entity:node':
|
'entity:node':
|
||||||
bundles:
|
bundles:
|
||||||
@@ -196,6 +231,7 @@ processor_settings:
|
|||||||
- field_transcript_trad
|
- field_transcript_trad
|
||||||
- field_transcript_vo
|
- field_transcript_vo
|
||||||
- name
|
- name
|
||||||
|
- field_workflow
|
||||||
weights:
|
weights:
|
||||||
preprocess_index: -20
|
preprocess_index: -20
|
||||||
preprocess_query: -20
|
preprocess_query: -20
|
||||||
@@ -208,6 +244,7 @@ processor_settings:
|
|||||||
- field_transcript_trad
|
- field_transcript_trad
|
||||||
- field_transcript_vo
|
- field_transcript_vo
|
||||||
- name
|
- name
|
||||||
|
- field_workflow
|
||||||
weights:
|
weights:
|
||||||
preprocess_index: -20
|
preprocess_index: -20
|
||||||
preprocess_query: -20
|
preprocess_query: -20
|
||||||
|
|||||||
Reference in New Issue
Block a user