Browse Source

Stpo using separate notes sections. Works Cited can be rendered from teh field.

8.x-1.x
Alexander O'Neill 6 years ago
parent
commit
d5fef241ba
  1. 19
      bibcite_footnotes.module
  2. 13
      src/Plugin/Filter/ReferenceFootnotesFilter.php

19
bibcite_footnotes.module

@ -69,7 +69,7 @@ function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
$notes = [ $notes = [
'#theme' => 'item_list', '#theme' => 'item_list',
'#list_type' => 'ul', '#list_type' => 'ul',
'#title' => $variables['note_type'] == ReferenceFootnotesFilter::ENDNOTE ? $config['notes_section_label'] : $config['references_section_label'], '#title' => $variables['note_type'] == $config['notes_section_label'],
'#attributes' => ['class' => 'footnotes'], '#attributes' => ['class' => 'footnotes'],
'#wrapper_attributes' => ['class' => 'container'], '#wrapper_attributes' => ['class' => 'container'],
]; ];
@ -91,7 +91,7 @@ function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
$build = []; $build = [];
$reference_entity_id = $fn['reference']; $reference_entity_id = $fn['reference'];
$footnote_link_text = ($dont_show_backlink_text && $reference_entity_id) ? '^' : $fn['value']; $footnote_link_text = ($dont_show_backlink_text) ? '^' : $fn['value'];
if (!is_array($fn['ref_id'])) { if (!is_array($fn['ref_id'])) {
$url = Url::fromUserInput('#' . $fn['ref_id'], ['attributes' => ['id' => $fn['fn_id'], 'class' => 'footnote-link']]); $url = Url::fromUserInput('#' . $fn['ref_id'], ['attributes' => ['id' => $fn['fn_id'], 'class' => 'footnote-link']]);
$link = Link::fromTextAndUrl(($footnote_link_text), $url)->toRenderable(); $link = Link::fromTextAndUrl(($footnote_link_text), $url)->toRenderable();
@ -126,8 +126,8 @@ function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
. '</span>', . '</span>',
]; ];
} }
else if (!empty($fn['text']) && $variables['note_type'] == ReferenceFootnotesFilter::ENDNOTE) { else if (!empty($fn['text'])) {
$build['footnote-link'] = Link::fromTextAndUrl($fn['value'], $url)->toRenderable(); $build['footnote-link'] = Link::fromTextAndUrl($footnote_link_text, $url)->toRenderable();
$build['footnote-text'] = [ $build['footnote-text'] = [
'#type' => 'markup', '#type' => 'markup',
'#markup' => ' <span class="endnote-text">' . $fn['text'] . '</span>', '#markup' => ' <span class="endnote-text">' . $fn['text'] . '</span>',
@ -194,7 +194,8 @@ function bibcite_footnotes_preprocess_bibcite_footnote_link(&$variables) {
$citation_data = $citation_tools->getRenderableReference($citation_entity_id); $citation_data = $citation_tools->getRenderableReference($citation_entity_id);
// Citation contains a page reference, so construct parenthetical footnote. // Citation contains a page reference, so construct parenthetical footnote.
if (!empty($fn['page'])) { // @TODO: Make it explicit.
if (!empty($fn['page'] && !is_numeric($fn['value']))) {
$fn['value'] = "({$fn['value']}, {$fn['page']})"; $fn['value'] = "({$fn['value']}, {$fn['page']})";
$citation_data['#data']['page'] = $fn['page']; $citation_data['#data']['page'] = $fn['page'];
$class .= '-inline'; $class .= '-inline';
@ -202,13 +203,9 @@ function bibcite_footnotes_preprocess_bibcite_footnote_link(&$variables) {
$title = trim(strip_tags(render($citation_data))); $title = trim(strip_tags(render($citation_data)));
$url = Url::fromUserInput('#' . $fn['fn_id'], ['attributes' => ['id' => $fn['ref_id'], 'class' => $class, 'title' => $title]]); $url = Url::fromUserInput('#' . $fn['fn_id'], ['attributes' => ['id' => $fn['ref_id'], 'class' => $class, 'title' => $title]]);
// We need to delete the cached markup to render it in a different mode. $link = Link::fromTextAndUrl($fn['value'], $url)->toRenderable();
unset($citation_data['#markup']);
unset($citation_data['#children']);
$citation_data['#data']['mode'] = 'citation';
$link = Link::fromTextAndUrl(render($citation_data), $url)->toRenderable();
unset($variables['fn']['fn']); unset($variables['fn']['fn']);
$variables['fn']['fn'] = $link; $variables['fn']['fn'] = $link;
// $variables['fn']['fn'][] = $link; // $variables['fn']['fn'][] = $link;

13
src/Plugin/Filter/ReferenceFootnotesFilter.php

@ -145,8 +145,6 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
if (count($store_matches) > 0) { if (count($store_matches) > 0) {
// Separate out endontes and reference notes. // Separate out endontes and reference notes.
$notes = $this->extractNotesByType(self::ENDNOTE, $store_matches);
$references = $this->extractNotesByType(self::REFERENCE, $store_matches);
if ($this->settings['footnotes_ibid']) { if ($this->settings['footnotes_ibid']) {
$this->ibidemify($references); $this->ibidemify($references);
@ -155,19 +153,10 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
// themed as a list // themed as a list
$markup = [ $markup = [
'#theme' => 'bibcite_footnote_list', '#theme' => 'bibcite_footnote_list',
'#notes' => $notes, '#notes' => $store_matches,
'#note_type' => self::ENDNOTE,
'#config' => $this->settings, '#config' => $this->settings,
]; ];
$str = \Drupal::service('renderer')->render($markup, FALSE); $str = \Drupal::service('renderer')->render($markup, FALSE);
$markup = [
'#theme' => 'bibcite_footnote_list',
'#notes' => $references,
'#note_type' => self::REFERENCE,
'#config' => $this->settings,
];
$str .= \Drupal::service('renderer')->render($markup, FALSE);
} }
// Reset the static variables so they can be used again next time. // Reset the static variables so they can be used again next time.
$n = 0; $n = 0;

Loading…
Cancel
Save