Compare commits
33 Commits
mla_citati
...
8.x-1.x
27 changed files with 1540 additions and 152 deletions
@ -1,9 +1,11 @@
|
||||
name: 'BibCite Footnotes' |
||||
type: module |
||||
description: 'Inline footnote links for BibCite References' |
||||
core: 8.x |
||||
core_version_requirement: ^8.0 || ^9 || ^10 |
||||
package: 'Bibliography & Citation' |
||||
dependencies: |
||||
- bibcite:bibcite |
||||
- bibcite:bibcite_entity |
||||
- footnotes:footnotes |
||||
- fakeobjects:fakeobjects |
||||
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
Description |
||||
----------- |
||||
|
||||
Example content type and text format to demonstrate a fully-configured Reference Footnotes setup. |
@ -0,0 +1,13 @@
|
||||
name: 'BibCite Footnotes Article with Citations' |
||||
type: module |
||||
description: 'Example module to show a fully-configured content type and text format with Reference Footnotes.' |
||||
core_version_requirement: ^8 || ^9 || ^10 |
||||
package: 'Bibliography & Citation' |
||||
dependencies: |
||||
- bibcite_footnotees:bibcite_footnotes |
||||
- bibcite:bibcite_import |
||||
- bibcite:bibcite_bibtex |
||||
- bibcite:bibcite_endnote |
||||
- bibcite:bibcite_ris |
||||
- bibcite:bibcite_marc |
||||
- inline_entity_form:inline_entity_form |
@ -0,0 +1,113 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- field.field.node.bibcite_fn_article_references.body |
||||
- field.field.node.bibcite_fn_article_references.field_bibcite_fn_works_cited |
||||
- field.field.node.bibcite_fn_article_references.field_image |
||||
- field.field.node.bibcite_fn_article_references.field_tags |
||||
- image.style.thumbnail |
||||
- node.type.bibcite_fn_article_references |
||||
module: |
||||
- image |
||||
- inline_entity_form |
||||
- path |
||||
- text |
||||
id: node.bibcite_fn_article_references.default |
||||
targetEntityType: node |
||||
bundle: bibcite_fn_article_references |
||||
mode: default |
||||
content: |
||||
body: |
||||
type: text_textarea_with_summary |
||||
weight: 7 |
||||
settings: |
||||
rows: 9 |
||||
summary_rows: 3 |
||||
placeholder: '' |
||||
third_party_settings: { } |
||||
region: content |
||||
created: |
||||
type: datetime_timestamp |
||||
weight: 2 |
||||
region: content |
||||
settings: { } |
||||
third_party_settings: { } |
||||
field_bibcite_fn_works_cited: |
||||
weight: 8 |
||||
settings: |
||||
form_mode: default |
||||
label_singular: '' |
||||
label_plural: '' |
||||
allow_new: true |
||||
allow_existing: true |
||||
match_operator: CONTAINS |
||||
override_labels: false |
||||
collapsible: false |
||||
collapsed: false |
||||
allow_duplicate: false |
||||
third_party_settings: { } |
||||
type: inline_entity_form_complex |
||||
region: content |
||||
field_image: |
||||
weight: 10 |
||||
settings: |
||||
progress_indicator: throbber |
||||
preview_image_style: thumbnail |
||||
third_party_settings: { } |
||||
type: image_image |
||||
region: content |
||||
field_tags: |
||||
weight: 9 |
||||
settings: |
||||
match_operator: CONTAINS |
||||
size: 60 |
||||
placeholder: '' |
||||
third_party_settings: { } |
||||
type: entity_reference_autocomplete |
||||
region: content |
||||
path: |
||||
type: path |
||||
weight: 5 |
||||
region: content |
||||
settings: { } |
||||
third_party_settings: { } |
||||
promote: |
||||
type: boolean_checkbox |
||||
settings: |
||||
display_label: true |
||||
weight: 3 |
||||
region: content |
||||
third_party_settings: { } |
||||
status: |
||||
type: boolean_checkbox |
||||
settings: |
||||
display_label: true |
||||
weight: 6 |
||||
region: content |
||||
third_party_settings: { } |
||||
sticky: |
||||
type: boolean_checkbox |
||||
settings: |
||||
display_label: true |
||||
weight: 4 |
||||
region: content |
||||
third_party_settings: { } |
||||
title: |
||||
type: string_textfield |
||||
weight: 0 |
||||
region: content |
||||
settings: |
||||
size: 60 |
||||
placeholder: '' |
||||
third_party_settings: { } |
||||
uid: |
||||
type: entity_reference_autocomplete |
||||
weight: 1 |
||||
settings: |
||||
match_operator: CONTAINS |
||||
size: 60 |
||||
placeholder: '' |
||||
region: content |
||||
third_party_settings: { } |
||||
hidden: { } |
@ -0,0 +1,57 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- field.field.node.bibcite_fn_article_references.body |
||||
- field.field.node.bibcite_fn_article_references.field_bibcite_fn_works_cited |
||||
- field.field.node.bibcite_fn_article_references.field_image |
||||
- field.field.node.bibcite_fn_article_references.field_tags |
||||
- node.type.bibcite_fn_article_references |
||||
module: |
||||
- image |
||||
- text |
||||
- user |
||||
id: node.bibcite_fn_article_references.default |
||||
targetEntityType: node |
||||
bundle: bibcite_fn_article_references |
||||
mode: default |
||||
content: |
||||
body: |
||||
label: hidden |
||||
type: text_default |
||||
weight: 1 |
||||
settings: { } |
||||
third_party_settings: { } |
||||
region: content |
||||
field_bibcite_fn_works_cited: |
||||
weight: 2 |
||||
label: above |
||||
settings: |
||||
view_mode: citation |
||||
link: false |
||||
third_party_settings: { } |
||||
type: entity_reference_entity_view |
||||
region: content |
||||
field_image: |
||||
weight: 4 |
||||
label: above |
||||
settings: |
||||
image_style: '' |
||||
image_link: '' |
||||
third_party_settings: { } |
||||
type: image |
||||
region: content |
||||
field_tags: |
||||
weight: 3 |
||||
label: above |
||||
settings: |
||||
link: true |
||||
third_party_settings: { } |
||||
type: entity_reference_label |
||||
region: content |
||||
links: |
||||
weight: 0 |
||||
region: content |
||||
settings: { } |
||||
third_party_settings: { } |
||||
hidden: { } |
@ -0,0 +1,51 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- filter.format.basic_html_with_references |
||||
module: |
||||
- ckeditor |
||||
format: basic_html_with_references |
||||
editor: ckeditor |
||||
settings: |
||||
toolbar: |
||||
rows: |
||||
- |
||||
- |
||||
name: Formatting |
||||
items: |
||||
- Bold |
||||
- Italic |
||||
- |
||||
name: Links |
||||
items: |
||||
- DrupalLink |
||||
- DrupalUnlink |
||||
- |
||||
name: Lists |
||||
items: |
||||
- BulletedList |
||||
- NumberedList |
||||
- |
||||
name: Media |
||||
items: |
||||
- Blockquote |
||||
- DrupalImage |
||||
- |
||||
name: Tools |
||||
items: |
||||
- Source |
||||
- reference_footnotes |
||||
plugins: |
||||
stylescombo: |
||||
styles: '' |
||||
language: |
||||
language_list: un |
||||
image_upload: |
||||
status: false |
||||
scheme: public |
||||
directory: inline-images |
||||
max_size: '' |
||||
max_dimensions: |
||||
width: null |
||||
height: null |
@ -0,0 +1,21 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- field.storage.node.body |
||||
- node.type.bibcite_fn_article_references |
||||
module: |
||||
- text |
||||
id: node.bibcite_fn_article_references.body |
||||
field_name: body |
||||
entity_type: node |
||||
bundle: bibcite_fn_article_references |
||||
label: Body |
||||
description: '' |
||||
required: false |
||||
translatable: true |
||||
default_value: { } |
||||
default_value_callback: '' |
||||
settings: |
||||
display_summary: true |
||||
field_type: text_with_summary |
@ -0,0 +1,98 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- bibcite_entity.bibcite_reference_type.artwork |
||||
- bibcite_entity.bibcite_reference_type.audiovisual |
||||
- bibcite_entity.bibcite_reference_type.bill |
||||
- bibcite_entity.bibcite_reference_type.book |
||||
- bibcite_entity.bibcite_reference_type.book_chapter |
||||
- bibcite_entity.bibcite_reference_type.broadcast |
||||
- bibcite_entity.bibcite_reference_type.case |
||||
- bibcite_entity.bibcite_reference_type.chart |
||||
- bibcite_entity.bibcite_reference_type.classical |
||||
- bibcite_entity.bibcite_reference_type.conference_paper |
||||
- bibcite_entity.bibcite_reference_type.conference_proceedings |
||||
- bibcite_entity.bibcite_reference_type.database |
||||
- bibcite_entity.bibcite_reference_type.film |
||||
- bibcite_entity.bibcite_reference_type.government_report |
||||
- bibcite_entity.bibcite_reference_type.hearing |
||||
- bibcite_entity.bibcite_reference_type.journal |
||||
- bibcite_entity.bibcite_reference_type.journal_article |
||||
- bibcite_entity.bibcite_reference_type.legal_ruling |
||||
- bibcite_entity.bibcite_reference_type.magazine_article |
||||
- bibcite_entity.bibcite_reference_type.manuscript |
||||
- bibcite_entity.bibcite_reference_type.map |
||||
- bibcite_entity.bibcite_reference_type.miscellaneous |
||||
- bibcite_entity.bibcite_reference_type.miscellaneous_section |
||||
- bibcite_entity.bibcite_reference_type.newspaper_article |
||||
- bibcite_entity.bibcite_reference_type.patent |
||||
- bibcite_entity.bibcite_reference_type.personal |
||||
- bibcite_entity.bibcite_reference_type.presentation |
||||
- bibcite_entity.bibcite_reference_type.report |
||||
- bibcite_entity.bibcite_reference_type.software |
||||
- bibcite_entity.bibcite_reference_type.statute |
||||
- bibcite_entity.bibcite_reference_type.thesis |
||||
- bibcite_entity.bibcite_reference_type.unpublished |
||||
- bibcite_entity.bibcite_reference_type.web_article |
||||
- bibcite_entity.bibcite_reference_type.web_project_page |
||||
- bibcite_entity.bibcite_reference_type.web_service |
||||
- bibcite_entity.bibcite_reference_type.website |
||||
- field.storage.node.field_bibcite_fn_works_cited |
||||
- node.type.bibcite_fn_article_references |
||||
id: node.bibcite_fn_article_references.field_bibcite_fn_works_cited |
||||
field_name: field_bibcite_fn_works_cited |
||||
entity_type: node |
||||
bundle: bibcite_fn_article_references |
||||
label: 'Works Cited' |
||||
description: 'List of works mentioned in this article.' |
||||
required: false |
||||
translatable: true |
||||
default_value: { } |
||||
default_value_callback: '' |
||||
settings: |
||||
handler: 'default:bibcite_reference' |
||||
handler_settings: |
||||
target_bundles: |
||||
artwork: artwork |
||||
audiovisual: audiovisual |
||||
bill: bill |
||||
book: book |
||||
book_chapter: book_chapter |
||||
broadcast: broadcast |
||||
case: case |
||||
chart: chart |
||||
classical: classical |
||||
conference_paper: conference_paper |
||||
conference_proceedings: conference_proceedings |
||||
database: database |
||||
film: film |
||||
government_report: government_report |
||||
hearing: hearing |
||||
journal: journal |
||||
journal_article: journal_article |
||||
legal_ruling: legal_ruling |
||||
magazine_article: magazine_article |
||||
manuscript: manuscript |
||||
map: map |
||||
miscellaneous: miscellaneous |
||||
miscellaneous_section: miscellaneous_section |
||||
newspaper_article: newspaper_article |
||||
patent: patent |
||||
personal: personal |
||||
presentation: presentation |
||||
report: report |
||||
software: software |
||||
statute: statute |
||||
thesis: thesis |
||||
unpublished: unpublished |
||||
web_article: web_article |
||||
web_project_page: web_project_page |
||||
web_service: web_service |
||||
website: website |
||||
sort: |
||||
field: title |
||||
direction: ASC |
||||
auto_create: false |
||||
auto_create_bundle: artwork |
||||
field_type: entity_reference |
@ -0,0 +1,37 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- field.storage.node.field_image |
||||
- node.type.bibcite_fn_article_references |
||||
module: |
||||
- image |
||||
id: node.bibcite_fn_article_references.field_image |
||||
field_name: field_image |
||||
entity_type: node |
||||
bundle: bibcite_fn_article_references |
||||
label: Image |
||||
description: '' |
||||
required: false |
||||
translatable: true |
||||
default_value: { } |
||||
default_value_callback: '' |
||||
settings: |
||||
file_directory: '[date:custom:Y]-[date:custom:m]' |
||||
file_extensions: 'png gif jpg jpeg' |
||||
max_filesize: '' |
||||
max_resolution: '' |
||||
min_resolution: '' |
||||
alt_field: true |
||||
alt_field_required: true |
||||
title_field: false |
||||
title_field_required: false |
||||
default_image: |
||||
uuid: '' |
||||
alt: '' |
||||
title: '' |
||||
width: null |
||||
height: null |
||||
handler: 'default:file' |
||||
handler_settings: { } |
||||
field_type: image |
@ -0,0 +1,28 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
config: |
||||
- field.storage.node.field_tags |
||||
- node.type.bibcite_fn_article_references |
||||
- taxonomy.vocabulary.tags |
||||
id: node.bibcite_fn_article_references.field_tags |
||||
field_name: field_tags |
||||
entity_type: node |
||||
bundle: bibcite_fn_article_references |
||||
label: Tags |
||||
description: 'Enter a comma-separated list. For example: Amsterdam, Mexico City, "Cleveland, Ohio"' |
||||
required: false |
||||
translatable: true |
||||
default_value: { } |
||||
default_value_callback: '' |
||||
settings: |
||||
handler: 'default:taxonomy_term' |
||||
handler_settings: |
||||
target_bundles: |
||||
tags: tags |
||||
sort: |
||||
field: name |
||||
direction: asc |
||||
auto_create: true |
||||
auto_create_bundle: '' |
||||
field_type: entity_reference |
@ -0,0 +1,87 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
module: |
||||
- bibcite_footnotes |
||||
- editor |
||||
- footnotes |
||||
name: 'Basic HTML with References' |
||||
format: basic_html_with_references |
||||
weight: 0 |
||||
filters: |
||||
filter_reference_footnotes: |
||||
id: filter_reference_footnotes |
||||
provider: bibcite_footnotes |
||||
status: true |
||||
weight: -50 |
||||
settings: |
||||
footnotes_collapse: '1' |
||||
footnotes_ibid: '0' |
||||
notes_section_label: Notes |
||||
reference_dont_show_backlink_text: '0' |
||||
works_cited_sort_by: alphabetical |
||||
editor_file_reference: |
||||
id: editor_file_reference |
||||
provider: editor |
||||
status: true |
||||
weight: -45 |
||||
settings: { } |
||||
filter_html_image_secure: |
||||
id: filter_html_image_secure |
||||
provider: filter |
||||
status: true |
||||
weight: -46 |
||||
settings: { } |
||||
filter_url: |
||||
id: filter_url |
||||
provider: filter |
||||
status: false |
||||
weight: -41 |
||||
settings: |
||||
filter_url_length: 72 |
||||
filter_html: |
||||
id: filter_html |
||||
provider: filter |
||||
status: true |
||||
weight: -49 |
||||
settings: |
||||
allowed_html: '<a href hreflang id class="" title> <div id class=""> <em> <strong> <cite> <blockquote cite> <code> <ul type class=""> <ol id type class=""> <li id class=""> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <span id class=""> <sup> <img src alt data-entity-type data-entity-uuid data-align data-caption> <p> <fn id>' |
||||
filter_html_help: true |
||||
filter_html_nofollow: false |
||||
filter_autop: |
||||
id: filter_autop |
||||
provider: filter |
||||
status: false |
||||
weight: -42 |
||||
settings: { } |
||||
filter_align: |
||||
id: filter_align |
||||
provider: filter |
||||
status: true |
||||
weight: -48 |
||||
settings: { } |
||||
filter_caption: |
||||
id: filter_caption |
||||
provider: filter |
||||
status: true |
||||
weight: -47 |
||||
settings: { } |
||||
filter_htmlcorrector: |
||||
id: filter_htmlcorrector |
||||
provider: filter |
||||
status: false |
||||
weight: -40 |
||||
settings: { } |
||||
filter_html_escape: |
||||
id: filter_html_escape |
||||
provider: filter |
||||
status: false |
||||
weight: -43 |
||||
settings: { } |
||||
filter_footnotes: |
||||
id: filter_footnotes |
||||
provider: footnotes |
||||
status: false |
||||
weight: -44 |
||||
settings: |
||||
footnotes_collapse: '0' |
@ -0,0 +1,17 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
module: |
||||
- menu_ui |
||||
third_party_settings: |
||||
menu_ui: |
||||
available_menus: |
||||
- main |
||||
parent: 'main:' |
||||
name: 'Article with References' |
||||
type: bibcite_fn_article_references |
||||
description: 'Article that includes a Works Cited field and in-text references.' |
||||
help: '' |
||||
new_revision: true |
||||
preview_mode: 1 |
||||
display_submitted: true |
@ -0,0 +1,23 @@
|
||||
{ |
||||
"name": "roblib/bibcite_footnotes", |
||||
"description": "Add citation footnotes with automatic numbering.", |
||||
"type": "drupal-module", |
||||
"homepage": "https://drupal.org/project/bibcite_footnotes", |
||||
"authors": [ |
||||
{ |
||||
"name": "Alexander O'Neill (alxp)", |
||||
"homepage": "https://www.drupal.org/u/alxp", |
||||
"role": "Maintainer" |
||||
} |
||||
], |
||||
"support": { |
||||
"issues": "https://drupal.org/project/issues/bibcite_footnotes", |
||||
"source": "https://cgit.drupalcode.org/bibcite_footnotes" |
||||
}, |
||||
"license": "GPL-2.0+", |
||||
"minimum-stability": "dev", |
||||
"require": { |
||||
"drupal/core": ">=8.6", |
||||
"drupal/fakeobjects": "^1.0" |
||||
} |
||||
} |
@ -0,0 +1,24 @@
|
||||
langcode: en |
||||
status: true |
||||
dependencies: |
||||
module: |
||||
- bibcite_entity |
||||
- node |
||||
third_party_settings: |
||||
field_permissions: |
||||
permission_type: public |
||||
_core: |
||||
default_config_hash: pxSiuPskUjLuu_0TFIFVYFyZtkIelIPBysbXt_LyLVk |
||||
id: node.field_bibcite_fn_works_cited |
||||
field_name: field_bibcite_fn_works_cited |
||||
entity_type: node |
||||
type: entity_reference |
||||
settings: |
||||
target_type: bibcite_reference |
||||
module: core |
||||
locked: false |
||||
cardinality: -1 |
||||
translatable: true |
||||
indexes: { } |
||||
persist_with_no_fields: false |
||||
custom_storage: false |
@ -1,10 +1,95 @@
|
||||
|
||||
.footnotes .footnote .footnote-link, |
||||
.footnotes .footnote .footnote-multi { |
||||
.footnote-list .footnotes .footnote-link, |
||||
.footnote-list .footnotes .footnote-multi { |
||||
float: left; |
||||
} |
||||
.footnotes .footnote .footnote-link::after, |
||||
.footnotes .footnote .footnote-multi::after { |
||||
.footnote-list .footnotes .footnote-link::after, |
||||
.footnote-list .footnotes .footnote-multi::after { |
||||
content: " "; |
||||
white-space: pre; |
||||
} |
||||
|
||||
/* |
||||
* CSS specific to Bibcite Footnotes module. |
||||
* (Borrowed from Footnotes module. |
||||
* |
||||
* |
||||
* Thanks to binford2k@lug.wsu.edu for this tip and drinkypoo |
||||
* for the question leading up to it. http://drupal.org/node/80538 |
||||
*/ |
||||
|
||||
/* Add empty space before footnotes and a black line on top. */ |
||||
.footnotes { |
||||
clear: both; |
||||
margin-top: 4em; |
||||
margin-bottom: 2em; |
||||
border-top: 1px solid #000; |
||||
} |
||||
/* Make footnotes appear in a smaller font */ |
||||
.footnotes { |
||||
font-size: 0.9em; |
||||
} |
||||
/* |
||||
Make the footnote a supertext^1 |
||||
*/ |
||||
.see-footnote { |
||||
vertical-align: top; |
||||
position: relative; |
||||
top: -0.25em; |
||||
font-size: 0.9em; |
||||
} |
||||
/* Hide the bullet of the UL list of footnotes */ |
||||
|
||||
ul.footnotes { |
||||
list-style-type: none; |
||||
margin-left: 0; |
||||
padding-left: 0; |
||||
} |
||||
ul.footnotes li { |
||||
margin-left: 2.5em; |
||||
list-style-type: none; |
||||
background: none; /* Garland theme sets a bullet via background image, this must be unset! See bug 861634 */ |
||||
} |
||||
/* Move the footnote number outside of the margin for footnote text (hanging indent) */ |
||||
ul.footnotes { |
||||
/* This is apparently very needed for the "position: absolute;" below to work correctly */ |
||||
position: relative; |
||||
} |
||||
.footnotes .footnote-label { |
||||
position: absolute; |
||||
left: 0; |
||||
z-index: 2; |
||||
} |
||||
/* Highlight the target footnote (or ref number, if a backlink was used) when user clicks a footnote. */ |
||||
.see-footnote:target, |
||||
.footnotes .footnote:target { |
||||
background-color: #eee; |
||||
} |
||||
.see-footnote:target { |
||||
border: solid 1px #aaa; |
||||
} |
||||
/* Note: This CSS has a minor bug on all versions of IE in that the footnote numbers |
||||
are aligned with the absolute bottom of their space, thus being a couple of pixels |
||||
lower than their corresponding line of text. IE5.5 has a serious bug in that the numbers |
||||
are not shifted left at all, thus being garbled together with the start of their text. */ |
||||
|
||||
/* |
||||
Make the multiple backlinks a supertext^1 |
||||
*/ |
||||
.footnotes .footnote-multi { |
||||
vertical-align: top; |
||||
position: relative; |
||||
top: -0.25em; |
||||
font-size: 0.75em; |
||||
} |
||||
/* |
||||
* Textile Footnotes |
||||
*/ |
||||
/* First footnote */ |
||||
#fn1 { |
||||
border-top: 1px solid #000; |
||||
margin-top: 3em; |
||||
} |
||||
.footnote { |
||||
font-size: 0.9em; |
||||
} |
||||
|
@ -0,0 +1,28 @@
|
||||
/** |
||||
* @file |
||||
* Provides JavaScript additions to entity embed dialog. |
||||
* |
||||
* This file provides popup windows for previewing embedded entities from the |
||||
* embed dialog. |
||||
*/ |
||||
|
||||
(function ($, Drupal) { |
||||
|
||||
"use strict"; |
||||
|
||||
Drupal.behaviors.bibciteFootnotesReplaceCitations = { |
||||
attach: function attach(context, settings) { |
||||
/* |
||||
if (CKEDITOR.instances) { |
||||
for (var instance in CKEDITOR.instances) { |
||||
var editor = CKEDITOR.instances[instance]; |
||||
var config = editor.config; |
||||
var name = editor.name; |
||||
editor.destroy(); |
||||
CKEDITOR.replace(name, config); |
||||
} |
||||
} |
||||
*/ |
||||
} |
||||
} |
||||
})(jQuery, Drupal); |
@ -0,0 +1,24 @@
|
||||
<?php |
||||
/** |
||||
* Created by PhpStorm. |
||||
* User: aoneill |
||||
* Date: 2018-10-30 |
||||
* Time: 2:36 PM |
||||
*/ |
||||
|
||||
namespace Drupal\bibcite_footnotes; |
||||
|
||||
|
||||
class CitationTools { |
||||
|
||||
public function getRenderableReference($reference_entity) { |
||||
if (is_numeric($reference_entity)) { |
||||
$reference_entity = \Drupal::entityTypeManager() |
||||
->getStorage('bibcite_reference') |
||||
->load($reference_entity); |
||||
} |
||||
$serializer = \Drupal::service('serializer'); |
||||
$data = $serializer->normalize($reference_entity, 'csl'); |
||||
return ['#theme' => 'bibcite_citation', '#data' => $data]; |
||||
} |
||||
} |
@ -0,0 +1,73 @@
|
||||
<?php |
||||
|
||||
namespace Drupal\bibcite_footnotes\Plugin\BibCiteProcessor; |
||||
|
||||
use AcademicPuma\CiteProc\CiteProc; |
||||
use Drupal\Core\Config\ConfigFactoryInterface; |
||||
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; |
||||
use Drupal\bibcite\Plugin\BibCiteProcessorBase; |
||||
use Drupal\bibcite\Plugin\BibCiteProcessorInterface; |
||||
use Symfony\Component\DependencyInjection\ContainerInterface; |
||||
|
||||
/** |
||||
* Defines a style provider based on citeproc-php library. |
||||
* |
||||
* Extended to support inline citation links based on the CSL. |
||||
* |
||||
* @BibCiteProcessor( |
||||
* id = "citeproc-php", |
||||
* label = @Translation("Citeproc PHP"), |
||||
* ) |
||||
*/ |
||||
class CiteprocPhpInline extends BibCiteProcessorBase implements BibCiteProcessorInterface, ContainerFactoryPluginInterface { |
||||
|
||||
/** |
||||
* Config factory service. |
||||
* |
||||
* @var \Drupal\Core\Config\ConfigFactoryInterface |
||||
*/ |
||||
protected $configFactory; |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { |
||||
return new static( |
||||
$configuration, |
||||
$plugin_id, |
||||
$plugin_definition, |
||||
$container->get('config.factory') |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config_factory) { |
||||
parent::__construct($configuration, $plugin_id, $plugin_definition); |
||||
|
||||
$this->configFactory = $config_factory; |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function getDescription() { |
||||
return $this->t('Render citation by citeproc-php library'); |
||||
} |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function render($data, $csl, $lang) { |
||||
$cite_proc = new CiteProc($csl, $lang); |
||||
$mode = !empty($data['mode']) ? $data['mode'] : NULL; |
||||
|
||||
if (!$data instanceof \stdClass) { |
||||
$data = json_decode(json_encode($data)); |
||||
} |
||||
|
||||
return $cite_proc->render($data, $mode); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue