|
|
|
@ -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' => ' <span class="endnote-text">' . $fn['text'] . '</span>']; |
|
|
|
|
$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'] = ' <span class="endnote-text">' . $fn['text'] . '</span>'; |
|
|
|
|
$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) { |
|
|
|
|