+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
+#
from ..base import WLElement
class Footnote(WLElement):
+ NO_TOC = True
+ DISABLE_NUMBERING = True
+ START_INLINE = True
+ ASIDE = True
+ NUMBERING = 'fn'
+
+ def signal(self, signal):
+ if signal == 'INLINE':
+ self.START_INLINE = False
+ else:
+ super().signal(signal)
+
def txt_build(self, builder):
pass
+ def html_build(self, builder):
+ if not builder.with_footnotes:
+ return
+
+ fn_no = self.attrib.get('_visible_numbering')
+ footnote_id = 'footnote-id{}'.format(fn_no)
+ anchor_id = 'anchor-id{}'.format(fn_no)
+
+ # Add anchor.
+ builder.start_element(
+ 'a',
+ {
+ "href": '#{}'.format(footnote_id),
+ "class": "annotation-anchor",
+ "id": anchor_id,
+ }
+ )
+ builder.push_text('[{}]'.format(fn_no))
+ builder.end_element()
+
+ # Add actual footnote.
+ builder.enter_fragment('footnotes')
+ builder.start_element('div', {'class': 'fn-{}'.format(self.tag)})
+ builder.push_text('\n') # Compat
+ builder.start_element('a', {'name': footnote_id})
+ builder.end_element()
+ builder.start_element('a', {
+ 'href': '#{}'.format(anchor_id), 'class': 'annotation'
+ })
+ builder.push_text('[{}]'.format(fn_no))
+ builder.end_element()
+
+ builder.start_element('p')
+ super(Footnote, self).html_build(builder)
+
+ builder.push_text(' [{}]'.format(self.qualifier))
+ builder.end_element()
+ builder.end_element()
+ builder.exit_fragment()
+
+ def epub_build(self, builder):
+ fn_no = builder.assign_footnote_number()
+ part_number = getattr(
+ builder,
+ 'chunk_counter',
+ 1
+ )
+
+ builder.start_element(
+ 'a',
+ {
+ 'class': 'anchor',
+ 'id': f'anchor-{fn_no}',
+ 'href': f'annotations.xhtml#annotation-{fn_no}',
+ }
+ )
+ builder.start_element('sup', {})
+ builder.push_text(str(fn_no))
+ builder.end_element()
+ builder.end_element()
+
+
+ builder.enter_fragment('footnotes')
+ builder.start_element('div', {
+ 'id': f'annotation-{fn_no}',
+ 'class': "annotation"
+ })
+ builder.start_element('a', {
+ 'href': f"part{part_number}.xhtml#anchor-{fn_no}"
+ })
+ builder.push_text(str(fn_no))
+ builder.end_element()
+ builder.push_text('. ')
+
+ super().epub_build(builder)
+ builder.push_text(' [' + self.qualifier + ']')
+ builder.end_element()
+
+ builder.push_text('\n')
+
+ builder.exit_fragment()
+
+
+
+class PA(Footnote):
+ """Przypis autorski."""
+ @property
+ def qualifier(self):
+ _ = self.gettext
+ return _("author's footnote")
+
+
+class PT(Footnote):
+ """Przypis tłumacza."""
+ @property
+ def qualifier(self):
+ _ = self.gettext
+ return _("translator's footnote")
+
+
+class PR(Footnote):
+ """Przypis redakcyjny."""
+ @property
+ def qualifier(self):
+ _ = self.gettext
+ return _("editor's footnote")
+
+
+class PE(Footnote):
+ """Przypis redakcji źródła."""
+ @property
+ def qualifier(self):
+ _ = self.gettext
+ return _("source editor's footnote")
+
+
+class PTrad(Footnote):
+ """Przypis tradycyjny."""
+ @property
+ def qualifier(self):
+ _ = self.gettext
+ return _("traditional footnote")