diff --git a/bibcite_footnotes.module b/bibcite_footnotes.module
index e505106..ea7a563 100644
--- a/bibcite_footnotes.module
+++ b/bibcite_footnotes.module
@@ -10,6 +10,7 @@ use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Url;
use Drupal\Core\Link;
use Drupal\bibcite_footnotes\CitationTools;
+use Drupal\bibcite_footnotes\Plugin\Filter\ReferenceFootnotesFilter;
/**
* Implements hook_theme().
@@ -60,20 +61,20 @@ function bibcite_footnotes_help($route_name, RouteMatchInterface $route_match) {
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
- $config = \Drupal::config('filter.format.rich_text_references');//filters.filter_reference_footnotes.settings');
- $footnotes = $variables['footnotes'];
+ $config = $variables['config'];
+ $footnotes = $variables['notes'];
$notes = [
'#theme' => 'item_list',
'#list_type' => 'ul',
- '#title' => $config->get('filters.filter_reference_footnotes.settings.notes_section_label'),
+ '#title' => $variables['note_type'] == ReferenceFootnotesFilter::ENDNOTE ? $config['notes_section_label'] : $config['references_section_label'],
'#attributes' => ['class' => 'footnotes'],
'#wrapper_attributes' => ['class' => 'container'],
];
$notes['#attached']['library'][] = 'bibcite_footnotes/reference_footnote';
- $dont_show_backlink_text = $config->get('filters.filter_reference_footnotes.settings.reference_dont_show_backlink_text');
- $sort_references_by = $config->get('filters.filter_reference_footnotes.settings.reference_sort_by');
+ $dont_show_backlink_text = $config['dont_show_backlink_text'];
+ $sort_references_by = $config['reference_sort_by'];
$citation_tools = new CitationTools();
foreach ($footnotes as $fn) {
$item = [
@@ -111,21 +112,16 @@ function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
$override_page_in_citation = FALSE;
}
- if (!empty($fn['text'])) {
+ if (!empty($fn['text']) && $variables['note_type'] == ReferenceFootnotesFilter::ENDNOTE) {
// Handle the case where an endnote contains text and a reference.
// It will appear in both lists. But the link text for the endnote should
// always be the title of the note. So make a copy of the biuld arrray
// and change the link text.
- $note_build = $build + ['#type' => 'markup', '#markup' => ' ' . $fn['text'] . ''];
- $note_build['footnote-link'] = Link::fromTextAndUrl($fn['value'], $url)->toRenderable();
- if (!empty($reference_entity_id)) {
- $citation_build = $citation_tools->getRenderableReference($reference_entity_id);
- $note_build[] = $citation_build;
- }
- $note_item = [] + $item;
- $note_item['#markup'] = render($note_build);
+ $build['#type'] = 'markup';
+ $build['#markup'] = ' ' . $fn['text'] . '';
+ $build['footnote-link'] = Link::fromTextAndUrl($fn['value'], $url)->toRenderable();
+
- $notes['#items'][] = $note_item;
}
if (!empty($reference_entity_id)) {
@@ -135,20 +131,17 @@ function bibcite_footnotes_preprocess_bibcite_footnote_list(&$variables) {
}
$build[] = $citation_build;
$render = render($build);
- $item['#markup'] = $render;
- $item['sort'] = trim(strip_tags(render($citation_build)));
- $references['#items'][] = $item;
+ $item['sort'] = trim(strip_tags(render($citation_build)));
}
-
+ $item['#markup'] = $render;
+ $notes['#items'][] = $item;
}
- $variables['notes'] = $notes;
-
- if ($sort_references_by == 'alphabetical') {
- usort($references['#items'], '_bibcite_footnotes_reference_array_cmp');
+ if ($sort_references_by == 'alphabetical' && $variables['note_type'] == ReferenceFootnotesFilter::REFERENCE) {
+ usort($notes['#items'], '_bibcite_footnotes_reference_array_cmp');
}
- $variables['references'] = $references;
+ $variables['notes'] = $notes;
}
function _bibcite_footnotes_reference_array_cmp($a, $b) {
diff --git a/src/Plugin/Filter/ReferenceFootnotesFilter.php b/src/Plugin/Filter/ReferenceFootnotesFilter.php
index 25d4090..ac1cea6 100644
--- a/src/Plugin/Filter/ReferenceFootnotesFilter.php
+++ b/src/Plugin/Filter/ReferenceFootnotesFilter.php
@@ -10,7 +10,7 @@ use Drupal\footnotes\Plugin\Filter\FootnotesFilter;
* Provides a base filter for Reference Footnotes filter.
*
* @Filter(
- * id = "filter_reference_footnotes",
+ * id = "filter_reference_footnotes",footnote_list
* module = "bibcite_footnotes",
* title = @Translation("Reference Footnotes filter"),
* description = @Translation("You can insert footnotes directly into texts."),
@@ -155,11 +155,19 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
// themed as a list
$markup = [
'#theme' => 'bibcite_footnote_list',
- '#footnotes' => $notes,
+ '#notes' => $notes,
'#note_type' => self::ENDNOTE,
'#config' => $this->settings,
];
$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.
$n = 0;
@@ -336,7 +344,6 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
$prev_reference_id = $fn['reference']; // Could be empty, that's OK.
}
- ksm($footnotes);
}
protected function extractNotesByType($type, $footnotes) {
@@ -344,7 +351,7 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
foreach ($footnotes as $fn) {
switch ($type) {
case self::ENDNOTE:
- if (!empty(fn['text'])) {
+ if (!empty($fn['text'])) {
$notes[] = $fn;
}
break;
@@ -354,7 +361,6 @@ class ReferenceFootnotesFilter extends FootnotesFilter {
}
break;
}
- ksm($fn);
}
return $notes;
}