diff --git a/sites/all/modules/figli/edlp_corpus/assets/dist/scripts/corpus.min.js b/sites/all/modules/figli/edlp_corpus/assets/dist/scripts/corpus.min.js
index 98d3dd0f8..db5e9cb00 100644
--- a/sites/all/modules/figli/edlp_corpus/assets/dist/scripts/corpus.min.js
+++ b/sites/all/modules/figli/edlp_corpus/assets/dist/scripts/corpus.min.js
@@ -592,12 +592,16 @@
// show opened audio node
function openNode(id){
closeNode();
- _node_opened_id = id;
- _nodes[id].open();
+ if(typeof _nodes[id] !== 'undefined'){
+ _node_opened_id = id;
+ _nodes[id].open();
+ }
}
function closeNode(){
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;
}
}
@@ -794,18 +798,17 @@
scrambleCollection();
_$body.trigger({'type':'close_entree', 'tid':tid});
}
-
return false;
});
- // $('body').trigger({
- // 'type':'chutier-action-done',
- // 'action_done':data.action_done,
- // 'target_id':$link.attr('target_id'),
- // });
- _$body.on('chutier-action-done', function(e) {
- _nodes_by_nid[e.target_id].chutier_action = e.new_action;
- });
+ _$body
+ .on('chutier-action-done', function(e) {
+ _nodes_by_nid[e.target_id].chutier_action = e.new_action;
+ })
+ .on('search-results-loaded', function(e){
+ console.log("Edlp Corpus, search-results-loaded",e.results);
+ // TODO: filter map's nodes
+ });
};
// _ _ _ ___ _ _
diff --git a/sites/all/modules/figli/edlp_corpus/assets/scripts/corpus.js b/sites/all/modules/figli/edlp_corpus/assets/scripts/corpus.js
index 98d3dd0f8..db5e9cb00 100644
--- a/sites/all/modules/figli/edlp_corpus/assets/scripts/corpus.js
+++ b/sites/all/modules/figli/edlp_corpus/assets/scripts/corpus.js
@@ -592,12 +592,16 @@
// show opened audio node
function openNode(id){
closeNode();
- _node_opened_id = id;
- _nodes[id].open();
+ if(typeof _nodes[id] !== 'undefined'){
+ _node_opened_id = id;
+ _nodes[id].open();
+ }
}
function closeNode(){
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;
}
}
@@ -794,18 +798,17 @@
scrambleCollection();
_$body.trigger({'type':'close_entree', 'tid':tid});
}
-
return false;
});
- // $('body').trigger({
- // 'type':'chutier-action-done',
- // 'action_done':data.action_done,
- // 'target_id':$link.attr('target_id'),
- // });
- _$body.on('chutier-action-done', function(e) {
- _nodes_by_nid[e.target_id].chutier_action = e.new_action;
- });
+ _$body
+ .on('chutier-action-done', function(e) {
+ _nodes_by_nid[e.target_id].chutier_action = e.new_action;
+ })
+ .on('search-results-loaded', function(e){
+ console.log("Edlp Corpus, search-results-loaded",e.results);
+ // TODO: filter map's nodes
+ });
};
// _ _ _ ___ _ _
diff --git a/sites/all/modules/figli/edlp_search/assets/js/edlp_search.js b/sites/all/modules/figli/edlp_search/assets/js/edlp_search.js
index 0ec258349..f61968962 100644
--- a/sites/all/modules/figli/edlp_search/assets/js/edlp_search.js
+++ b/sites/all/modules/figli/edlp_search/assets/js/edlp_search.js
@@ -1,9 +1,84 @@
(function ($, Drupal, drupalSettings) {
- var settings = drupalSettings.edlp_studio;
+ var settings = drupalSettings.edlp_search;
+ var _$body = $('body');
+ var _$container;
+ var _$form;
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();
diff --git a/sites/all/modules/figli/edlp_search/edlp_search.module b/sites/all/modules/figli/edlp_search/edlp_search.module
index 5b1325b03..31bed4584 100644
--- a/sites/all/modules/figli/edlp_search/edlp_search.module
+++ b/sites/all/modules/figli/edlp_search/edlp_search.module
@@ -30,7 +30,7 @@ function edlp_search_help($route_name, RouteMatchInterface $route_match) {
*/
function edlp_search_page_attachments(array &$attachments) {
$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();
}
@@ -46,5 +46,13 @@ function edlp_search_theme($existing, $type, $theme, $path) {
'form' => null,
),
),
+ 'edlp_search_results' => array(
+ 'file' => 'includes/edlp_search_results.inc',
+ 'variables' => array(
+ 'items' => null,
+ 'no_results_found' => '',
+ 'search_help' => ''
+ ),
+ ),
);
}
diff --git a/sites/all/modules/figli/edlp_search/edlp_search.routing.yml b/sites/all/modules/figli/edlp_search/edlp_search.routing.yml
index 46518a569..7199e93fb 100644
--- a/sites/all/modules/figli/edlp_search/edlp_search.routing.yml
+++ b/sites/all/modules/figli/edlp_search/edlp_search.routing.yml
@@ -15,7 +15,7 @@ edlp_search.edlp_search_controller_searchForm_ajax:
requirements:
_permission: 'access content'
-edlp_search.edlp_search_controller_searchResults:
+edlp_search.edlp_search_controller_search_results:
path: '/edlp_search/searchresults'
defaults:
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResults'
@@ -23,7 +23,7 @@ edlp_search.edlp_search_controller_searchResults:
requirements:
_permission: 'access content'
-edlp_search.edlp_search_controller_searchResults_ajax:
+edlp_search.edlp_search_controller_search_results_ajax:
path: '/edlp_search/searchresults/ajax'
defaults:
_controller: '\Drupal\edlp_search\Controller\EdlpSearchController::searchResultsJson'
diff --git a/sites/all/modules/figli/edlp_search/includes/edlp_search_results.inc b/sites/all/modules/figli/edlp_search/includes/edlp_search_results.inc
new file mode 100644
index 000000000..3bbb676c2
--- /dev/null
+++ b/sites/all/modules/figli/edlp_search/includes/edlp_search_results.inc
@@ -0,0 +1,17 @@
+getViewBuilder('node');
+
+ $items = [];
+ if(count($vars['items'])){
+ foreach ($vars['items'] as $item) {
+ $items[] = $view_builder->view($item, 'search_index');
+ }
+ }
+
+ $vars['items'] = $items;
+
+}
diff --git a/sites/all/modules/figli/edlp_search/src/Controller/EdlpSearchController.php b/sites/all/modules/figli/edlp_search/src/Controller/EdlpSearchController.php
index 3f60727c4..c4e40804e 100644
--- a/sites/all/modules/figli/edlp_search/src/Controller/EdlpSearchController.php
+++ b/sites/all/modules/figli/edlp_search/src/Controller/EdlpSearchController.php
@@ -4,9 +4,9 @@ namespace Drupal\edlp_search\Controller;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
-use Drupal\Core\Entity\EntityStorageInterface;
-use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Form\FormBuilder;
+use Drupal\search_api\Entity\Index;
+use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
/**
@@ -62,6 +62,9 @@ class EdlpSearchController extends ControllerBase {
return $this->renderable;
}
+ /**
+ * searchFormJson
+ */
public function searchFormJson(){
$this->buildRenderable();
@@ -76,27 +79,152 @@ class EdlpSearchController extends ControllerBase {
}
/**
- * Searchresults.
- *
- * @return string
- * Return Hello string.
- */
- public function searchResults() {
- return [
- '#type' => 'markup',
- '#markup' => $this->t('Implement method: searchResults')
- ];
+ * searchResults
+ */
+ public function searchResults(Request $request) {
+
+ $this->request = $request;
+
+ // TODO: what if no results
+
+ return $this->getrenderable();
}
+
+ /**
+ * searchResultsJson
+ */
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->setData([
'test'=>'search results',
- 'keys'=>$keys
- // 'rendered'=> $rendered,
+ 'keys'=>$this->keys,
+ 'entries' => $this->entries,
+ 'rendered'=> $rendered,
+ 'results_nids'=>$results_nids,
]);
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('
+ // Check if your spelling is correct.
+ // Remove quotes around phrases to search for each word individually. bike shed will often show more results than "bike shed" .
+ // Consider loosening your query with OR . bike OR shed will often show more results than bike shed .
+ // ')
+ // );
+ }
+
+ 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');
+ }
+
}
diff --git a/sites/all/modules/figli/edlp_search/templates/edlp-search-results.html.twig b/sites/all/modules/figli/edlp_search/templates/edlp-search-results.html.twig
new file mode 100644
index 000000000..c0cd2847a
--- /dev/null
+++ b/sites/all/modules/figli/edlp_search/templates/edlp-search-results.html.twig
@@ -0,0 +1,3 @@
+{{ items }}
+{{ no_results_found }}
+{{ search_help }}
diff --git a/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js b/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js
index 5ca3f83e2..006998db2 100644
--- a/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js
+++ b/sites/all/themes/custom/edlptheme/assets/dist/scripts/main.min.js
@@ -4,7 +4,7 @@
var _$body = $('body');
var _is_front = _$body.is('.path-frontpage');
var _$corpus_canvas;
- var _$content_container = $('main[role="main"]>.layout-content');
+ var _$row = $('main[role="main"]>.layout-content>.row');
var _$ajaxLinks;
var _audio_player;
var _randomPlayer;
@@ -41,6 +41,9 @@
.on('on-studio-chutier-updated', function(e){
initAjaxLinks();
})
+ .on('search-results-loaded',function(e){
+ initAjaxLinks();
+ })
.on('open_entree', function(e){
// e.tid available
closeAllModals();
@@ -410,7 +413,9 @@
_$body.removeClass('ajax-loading');
// 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
var body_classes = [
@@ -448,7 +453,7 @@
_$body.trigger({'type':'new-content-ajax-loaded'});
// TODO: call behaviours
- Drupal.attachBehaviors(_$content_container);
+ Drupal.attachBehaviors(_$row[0]);
};
@@ -553,7 +558,7 @@
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
function initProductions(){
console.log('theme : initProductions');
- var $grid = $('.row', _$content_container).masonry({
+ var $grid = $('.row', _$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2'
});
@@ -562,7 +567,7 @@
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
- // var $grid = $('.row', _$content_container).imagesLoaded( function() {
+ // var $grid = $('.row', _$row).imagesLoaded( function() {
// // init Masonry after all images have loaded
// $grid.masonry({
// itemSelector:'.col',
@@ -591,7 +596,7 @@
function closeAllModals(){
console.log('theme : closeAllModals');
// TODO: animate the remove
- _$content_container.html('');
+ _$row.html('');
_$ajaxLinks.removeClass('is-active');
};
diff --git a/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css b/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css
index 23d5d5755..2f33e4d23 100644
--- a/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css
+++ b/sites/all/themes/custom/edlptheme/assets/dist/styles/app.min.css
@@ -1086,6 +1086,11 @@ a:focus {
.col-11-offset-1:last-child {
padding-right: 0; }
+.col.float-right {
+ float: right;
+ padding-right: 0;
+ padding-left: 1em; }
+
body, html {
position: relative;
width: 100%;
@@ -1108,6 +1113,18 @@ header[role="banner"] {
height: 100%;
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"] {
z-index: 1;
position: absolute;
@@ -1124,9 +1141,6 @@ main[role="main"] {
width: 100%;
height: 100%;
overflow: hidden; }
- main[role="main"] .layout-content > .messages {
- max-height: 500px;
- overflow: auto; }
main[role="main"] .layout-content > * {
pointer-events: auto; }
@@ -1671,6 +1685,57 @@ body.ajax-loading main[role="main"]:before {
padding-left: 1em;
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 {
height: 100%; }
diff --git a/sites/all/themes/custom/edlptheme/assets/scripts/main.js b/sites/all/themes/custom/edlptheme/assets/scripts/main.js
index 5ca3f83e2..006998db2 100644
--- a/sites/all/themes/custom/edlptheme/assets/scripts/main.js
+++ b/sites/all/themes/custom/edlptheme/assets/scripts/main.js
@@ -4,7 +4,7 @@
var _$body = $('body');
var _is_front = _$body.is('.path-frontpage');
var _$corpus_canvas;
- var _$content_container = $('main[role="main"]>.layout-content');
+ var _$row = $('main[role="main"]>.layout-content>.row');
var _$ajaxLinks;
var _audio_player;
var _randomPlayer;
@@ -41,6 +41,9 @@
.on('on-studio-chutier-updated', function(e){
initAjaxLinks();
})
+ .on('search-results-loaded',function(e){
+ initAjaxLinks();
+ })
.on('open_entree', function(e){
// e.tid available
closeAllModals();
@@ -410,7 +413,9 @@
_$body.removeClass('ajax-loading');
// 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
var body_classes = [
@@ -448,7 +453,7 @@
_$body.trigger({'type':'new-content-ajax-loaded'});
// TODO: call behaviours
- Drupal.attachBehaviors(_$content_container);
+ Drupal.attachBehaviors(_$row[0]);
};
@@ -553,7 +558,7 @@
// |_| |_| \___/\__,_|\_,_\__|\__|_\___/_||_/__/
function initProductions(){
console.log('theme : initProductions');
- var $grid = $('.row', _$content_container).masonry({
+ var $grid = $('.row', _$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2'
});
@@ -562,7 +567,7 @@
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
- // var $grid = $('.row', _$content_container).imagesLoaded( function() {
+ // var $grid = $('.row', _$row).imagesLoaded( function() {
// // init Masonry after all images have loaded
// $grid.masonry({
// itemSelector:'.col',
@@ -591,7 +596,7 @@
function closeAllModals(){
console.log('theme : closeAllModals');
// TODO: animate the remove
- _$content_container.html('');
+ _$row.html('');
_$ajaxLinks.removeClass('is-active');
};
diff --git a/sites/all/themes/custom/edlptheme/assets/styles/app.scss b/sites/all/themes/custom/edlptheme/assets/styles/app.scss
index 82f49f0ba..9685d93e0 100644
--- a/sites/all/themes/custom/edlptheme/assets/styles/app.scss
+++ b/sites/all/themes/custom/edlptheme/assets/styles/app.scss
@@ -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) {
- $icons_w:20px;
pointer-events: all;
margin-left: 0.5em;
a{
diff --git a/sites/all/themes/custom/edlptheme/assets/styles/base/_grid.scss b/sites/all/themes/custom/edlptheme/assets/styles/base/_grid.scss
index 36132facb..25328e018 100644
--- a/sites/all/themes/custom/edlptheme/assets/styles/base/_grid.scss
+++ b/sites/all/themes/custom/edlptheme/assets/styles/base/_grid.scss
@@ -73,3 +73,9 @@ $med-bp:1080px;
}
}
}
+
+.col.float-right{
+ float: right;
+ padding-right: 0;
+ padding-left: $default_gap;
+}
diff --git a/sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss b/sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss
index 03c627b9c..c57f5c6ef 100644
--- a/sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss
+++ b/sites/all/themes/custom/edlptheme/assets/styles/base/_layout.scss
@@ -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"]{
// outline:1px solid green;
@@ -51,10 +61,6 @@ main[role="main"]{
.layout-content{
width: 100%; height:100%;
overflow:hidden;
- &>.messages{
- max-height: 500px;
- overflow: auto;
- }
&>*{
pointer-events: auto;
}
diff --git a/sites/all/themes/custom/edlptheme/edlptheme.theme b/sites/all/themes/custom/edlptheme/edlptheme.theme
index a64a7ea6b..bd5c7d3e1 100644
--- a/sites/all/themes/custom/edlptheme/edlptheme.theme
+++ b/sites/all/themes/custom/edlptheme/edlptheme.theme
@@ -11,10 +11,9 @@ use Drupal\Core\Template\Attribute;
use Drupal\Component\Utility\Unicode;
use Drupal\Core\Render\Element;
-// function edlptheme_preprocess_input(&$vars){
+function edlptheme_preprocess_page(&$vars){
// dsm($vars, 'vars');
- // $vars['attributes']['placeholder'] = "salut";
-// }
+}
function edlptheme_preprocess_node(&$vars){
$node = $vars['elements']['#node'];
@@ -80,6 +79,30 @@ function edlptheme_preprocess_node__enregistrement__index(&$vars){
// 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=='' ? '' : $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){
// dpm($vars);
// if transcript not empty
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-agenda.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-agenda.html.twig
index 584c110ce..b32eba492 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-agenda.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-agenda.html.twig
@@ -1,17 +1,15 @@
-
-
-
-
-
-
- {{ next_event }}
-
-
- {{ coming_events }}
- {{ past_events }}
-
+
+
+
+
+ {{ next_event }}
+
+ {{ coming_events }}
+ {{ past_events }}
+
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--article.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--article.html.twig
index c5a1f63a3..1657b2ac9 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--article.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--article.html.twig
@@ -1,7 +1,5 @@
-
-
-
- {{ content }}
-
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--default.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--default.html.twig
index 74927979b..69cd182a6 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--default.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--default.html.twig
@@ -1,9 +1,7 @@
-
-
-
- {#
#}
- {{ content }}
- {#
#}
-
+
+
+ {#
#}
+ {{ content }}
+ {#
#}
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--transcript.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--transcript.html.twig
index c5a1f63a3..1657b2ac9 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--transcript.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--node--transcript.html.twig
@@ -1,7 +1,5 @@
-
-
-
- {{ content }}
-
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--index.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--index.html.twig
index dd491d343..91137027c 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--index.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--index.html.twig
@@ -1,7 +1,5 @@
-
-
-
- {{ content }}
-
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--notice.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--notice.html.twig
index c5a1f63a3..1657b2ac9 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--notice.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax--taxonomy-term--notice.html.twig
@@ -1,7 +1,5 @@
-
-
-
- {{ content }}
-
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig
index 2ab8c3028..640c77048 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-home.html.twig
@@ -1,22 +1,20 @@
-
-
-
- {{ presentation }}
-
-
-
-
-
- {{ last_production }}
-
-
-
-
- {{ agenda }}
-
+
+
+ {{ presentation }}
+
+
+
+
+
+ {{ last_production }}
+
+
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-productions.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-productions.html.twig
index 183918273..59fe571dc 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-productions.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-productions.html.twig
@@ -1,9 +1,7 @@
-
- {% for node in nodes %}
-
-
- {{ node.build }}
-
+{% for node in nodes %}
+
+
+ {{ node.build }}
- {% endfor %}
-
+
+{% endfor %}
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-search-results.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-search-results.html.twig
new file mode 100644
index 000000000..0b4a4526e
--- /dev/null
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-search-results.html.twig
@@ -0,0 +1,7 @@
+
+
+ {{ items }}
+ {{ no_results_found }}
+ {{ search_help }}
+
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-search-search-form.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-search-search-form.html.twig
index 0f7145593..5b8a931d8 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-search-search-form.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-search-search-form.html.twig
@@ -1,7 +1,5 @@
-
-
-
- {{ form }}
-
+
diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-studio-ui.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-studio-ui.html.twig
index d151fa00b..d4b6da61b 100644
--- a/sites/all/themes/custom/edlptheme/templates/content/edlp-studio-ui.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-studio-ui.html.twig
@@ -1,10 +1,8 @@
-
-
-
-
- {{ chutier_ui }}
- {{ composition_ui }}
-
+
+
+
+ {{ chutier_ui }}
+ {{ composition_ui }}
diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--search-index.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--search-index.html.twig
new file mode 100644
index 000000000..f8a926e0b
--- /dev/null
+++ b/sites/all/themes/custom/edlptheme/templates/content/node--enregistrement--search-index.html.twig
@@ -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') }}
+
+
+ {# THIS IS REALLY DIRTY !! #}
+ {% for key, child in content.field_entrees if key|first != '#' %}
+ {% set tid = child['#cache']['tags'][0]|replace({'taxonomy_term:':''}) %}
+
+ {% endfor %}
+
+
+
+
diff --git a/sites/all/themes/custom/edlptheme/templates/layout/page.html.twig b/sites/all/themes/custom/edlptheme/templates/layout/page.html.twig
index f2af4b88f..613596298 100644
--- a/sites/all/themes/custom/edlptheme/templates/layout/page.html.twig
+++ b/sites/all/themes/custom/edlptheme/templates/layout/page.html.twig
@@ -50,9 +50,17 @@
+ {% if page.content.messages %}
+
+ {{ page.content.messages }}
+
+ {% endif %}
+
- {{ page.content }}
+
+ {{ page.content|without('messages') }}
+
{# /.layout-content #}
diff --git a/sites/default/config/sync/search_api.index.collection.yml b/sites/default/config/sync/search_api.index.collection.yml
index 6514832a6..ed2037ce9 100644
--- a/sites/default/config/sync/search_api.index.collection.yml
+++ b/sites/default/config/sync/search_api.index.collection.yml
@@ -8,6 +8,9 @@ dependencies:
- field.storage.node.field_transcript_trad
- field.storage.node.field_transcript_vo
- 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
module:
- taxonomy
@@ -90,6 +93,38 @@ field_settings:
- field.storage.node.field_entrees
module:
- 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:
'entity:node':
bundles:
@@ -196,6 +231,7 @@ processor_settings:
- field_transcript_trad
- field_transcript_vo
- name
+ - field_workflow
weights:
preprocess_index: -20
preprocess_query: -20
@@ -208,6 +244,7 @@ processor_settings:
- field_transcript_trad
- field_transcript_vo
- name
+ - field_workflow
weights:
preprocess_index: -20
preprocess_query: -20