diff --git a/sites/all/modules/figli/edlp_productions/edlp_productions.module b/sites/all/modules/figli/edlp_productions/edlp_productions.module index 70db5d62d..484641ec6 100644 --- a/sites/all/modules/figli/edlp_productions/edlp_productions.module +++ b/sites/all/modules/figli/edlp_productions/edlp_productions.module @@ -85,7 +85,13 @@ function edlp_productions_node_view(array &$build, \Drupal\Core\Entity\EntityInt ]; $tree = $menu_tree_service->transform($tree, $manipulators); // And the last step is to actually build the tree. - $build['production_parent'] = $menu_tree_service->build($tree); + $build['production_parent'] = array( + '#type'=>"container", + '#attributes'=>array( + 'class'=>'productions-parent' + ), + 'menu'=>$menu_tree_service->build($tree) + ); } } @@ -108,7 +114,13 @@ function edlp_productions_node_view(array &$build, \Drupal\Core\Entity\EntityInt ]; $tree = $menu_tree_service->transform($tree, $manipulators); // And the last step is to actually build the tree. - $build['production_subtree'] = $menu_tree_service->build($tree); + $build['production_subtree'] = array( + '#type'=>"container", + '#attributes'=>array( + 'class'=>'productions-subtree' + ), + 'menu'=>$menu_tree_service->build($tree) + ); } } } 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 8d75fc4e5..827eb1c26 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 @@ -33,6 +33,9 @@ edlp_vars = { function init(){ console.log("EdlpTheme init()"); + + // TODO: redirect all no-front pages to front with write hash + _$body.on('corpus-map-ready', onCorpusMapReady); initScrollbars(); initAjaxLinks(); @@ -62,14 +65,14 @@ edlp_vars = { // TODO: implement history.js function initAjaxLinks(){ console.log('initAjaxLinks'); - $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions').addClass('ajax-link'); + $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions, article.node h2.node-title, .productions-subtree, .productions-parent').addClass('ajax-link'); - _$ajaxLinks = $('.ajax-link') + _$ajaxLinks = $('.ajax-link:not(.ajax-enabled)') .each(function(i,e){ var $this = $(this); // avoid already ajaxified links - if($this.is('.ajax-enable')) return; + // if($this.is('.ajax-enable')) return; var sys_path = $this.attr('data-drupal-link-system-path'); if(sys_path){ diff --git a/sites/all/themes/custom/edlptheme/assets/scripts/main.js b/sites/all/themes/custom/edlptheme/assets/scripts/main.js index e1110753c..e099082ac 100644 --- a/sites/all/themes/custom/edlptheme/assets/scripts/main.js +++ b/sites/all/themes/custom/edlptheme/assets/scripts/main.js @@ -10,6 +10,9 @@ function init(){ console.log("EdlpTheme init()"); + + // TODO: redirect all no-front pages to front with write hash + _$body.on('corpus-map-ready', onCorpusMapReady); initScrollbars(); initAjaxLinks(); @@ -39,14 +42,14 @@ // TODO: implement history.js function initAjaxLinks(){ console.log('initAjaxLinks'); - $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions').addClass('ajax-link'); + $('a', '#block-mainnavigation, #block-footer.menu--footer, #block-productions, article.node h2.node-title, .productions-subtree, .productions-parent').addClass('ajax-link'); - _$ajaxLinks = $('.ajax-link') + _$ajaxLinks = $('.ajax-link:not(.ajax-enabled)') .each(function(i,e){ var $this = $(this); // avoid already ajaxified links - if($this.is('.ajax-enable')) return; + // if($this.is('.ajax-enable')) return; var sys_path = $this.attr('data-drupal-link-system-path'); if(sys_path){ diff --git a/sites/all/themes/custom/edlptheme/edlptheme.theme b/sites/all/themes/custom/edlptheme/edlptheme.theme index ed32d44af..513ec7e4c 100644 --- a/sites/all/themes/custom/edlptheme/edlptheme.theme +++ b/sites/all/themes/custom/edlptheme/edlptheme.theme @@ -7,12 +7,23 @@ use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Template\Attribute; // function edlptheme_preprocess_input(&$vars){ // dsm($vars, 'vars'); // $vars['attributes']['placeholder'] = "salut"; // } +function edlptheme_preprocess_node(&$vars){ + $node = $vars['elements']['#node']; + $options = ['absolute' => TRUE]; + $url = \Drupal\Core\Url::fromRoute('entity.node.canonical', ['node' => $node->id()], $options); + $system_path = $url->getInternalPath(); + $vars['link_attributes'] = new Attribute(array( + 'data-drupal-link-system-path' => $system_path=='' ? '' : $system_path + )); +} + /** * Implements hook_form_alter */ diff --git a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax-node.html.twig b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax-node.html.twig index 48341725b..6e98dba51 100644 --- a/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax-node.html.twig +++ b/sites/all/themes/custom/edlptheme/templates/content/edlp-ajax-node.html.twig @@ -1,5 +1,5 @@
-
+
{{ node }}
diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--page--image-1-columns.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node--page--image-1-columns.html.twig index 844ca3f1c..1552f4dce 100644 --- a/sites/all/themes/custom/edlptheme/templates/content/node--page--image-1-columns.html.twig +++ b/sites/all/themes/custom/edlptheme/templates/content/node--page--image-1-columns.html.twig @@ -93,7 +93,7 @@ {{ title_prefix }} {% if not page %} - {{ label }} + {{ label }} {% endif %} {{ title_suffix }} diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--page--image-2-columns.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node--page--image-2-columns.html.twig index 844ca3f1c..7183eaad0 100644 --- a/sites/all/themes/custom/edlptheme/templates/content/node--page--image-2-columns.html.twig +++ b/sites/all/themes/custom/edlptheme/templates/content/node--page--image-2-columns.html.twig @@ -93,7 +93,7 @@ {{ title_prefix }} {% if not page %} - {{ label }} + {{ label }} {% endif %} {{ title_suffix }} diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--page.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node--page.html.twig new file mode 100644 index 000000000..4de6d3ceb --- /dev/null +++ b/sites/all/themes/custom/edlptheme/templates/content/node--page.html.twig @@ -0,0 +1,108 @@ +{# +/** + * @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') }} + + + {{ content.production_parent }} + + {{ title_prefix }} + + {{ label }} + + {{ title_suffix }} + + {% if display_submitted %} +
+ {{ author_picture }} + + {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %} + {{ metadata }} +
+ + {% endif %} + + + {{ content|without('production_parent') }} +
+ + diff --git a/sites/all/themes/custom/edlptheme/templates/content/node--page--full.html.twig b/sites/all/themes/custom/edlptheme/templates/content/node.html.twig similarity index 96% rename from sites/all/themes/custom/edlptheme/templates/content/node--page--full.html.twig rename to sites/all/themes/custom/edlptheme/templates/content/node.html.twig index dbd7d9c23..79870d8da 100644 --- a/sites/all/themes/custom/edlptheme/templates/content/node--page--full.html.twig +++ b/sites/all/themes/custom/edlptheme/templates/content/node.html.twig @@ -84,9 +84,11 @@ {{ title_prefix }} - - {{ label }} + {% if not page %} + + {{ label }} + {% endif %} {{ title_suffix }} {% if display_submitted %}