Source code for cioxml2.managers.cioarticle

"""A file manager for Cioarticle XML files."""

from __future__ import annotations
from os.path import join, dirname

from pyramid.config import Configurator
from pyramid.request import Request

from ciowarehouse2.lib.ciotype import CioType
from ciowarehouse2.lib.manager import LAYOUT_VIEW_PT, LAYOUT_EDIT_PT
from ciowarehouse2.lib.manager import CHRYSALIO_JS
from ...lib.i18n import _, translate
from ..xml import MANAGER_CSS, MANAGER_XML_CSS, CODEMIRROR_CSS
from ..xml import KATEX_CSS, KATEX_JS, CIOKATEX_JS
from ..ciomemo import ManagerCiomemo

CIOARTICLE_CSS = ('/cioxml2/css/manager_cioarticle.css', )
CIOARTICLE_PROOFING_CSS = ('/cioxml2/css/manager_cioarticle_proofing.css', )
CIOARTICLE_CXE_CSS = ('/cioxml2/css/manager_cioarticle_cxe.css', )
CIOARTICLE_CXE_JS = ('/cioxml2/js/cxe4cioarticle.js', )
CODEMIRROR_JS = ('/cioxml2/js/cm4cioarticle.js', )
IMAGE_PATHS = (
    'Workspace:{directory}/Images/', 'Workspace:Images/', 'Images/', './')
RELAXNG_CIOARTICLE = {  # yapf: disable
    'root': 'cioarticle',
    'version': '1.1',
    'file': join(
        dirname(__file__), '..', '..', 'Processors', 'CioarticleValidate',
        'RelaxNG', 'cioarticle.rng')
}


# =============================================================================
[docs] def includeme(configurator: Configurator): """Function to include a CioWarehouse2 manager. :type configurator: pyramid.config.Configurator :param configurator: Object used to do configuration declaration within the application. """ ManagerCiomemo.register(configurator, ManagerCioarticle)
# =============================================================================
[docs] class ManagerCioarticle(ManagerCiomemo): """Class to manage a Cioarticle XML file.""" ciotype = CioType('xml', 'cioarticle') uid = 'cioarticle' label = _('Cioarticle XML file manager') imports = (('cioxml2:managers/ciomemo/Xsl', 'Xsl'), ) viewings = ( # yapf: disable {'name': 'preview', 'label': _('Cioarticle Preview'), 'template': LAYOUT_VIEW_PT, 'css': MANAGER_CSS + KATEX_CSS + CIOARTICLE_CSS, 'js': CHRYSALIO_JS + KATEX_JS + CIOKATEX_JS, 'xsl': join('Xsl', 'cioarticle_preview.xsl'), 'image_paths': IMAGE_PATHS}, {'name': 'proofing', 'label': _('Cioarticle Proofing'), 'template': LAYOUT_VIEW_PT, 'css': MANAGER_CSS + KATEX_CSS + CIOARTICLE_PROOFING_CSS, 'js': CHRYSALIO_JS + KATEX_JS + CIOKATEX_JS, 'xsl': join('Xsl', 'cioarticle_proofing.xsl'), 'image_paths': IMAGE_PATHS}, {'name': 'xml', 'label': _('XML'), 'template': LAYOUT_VIEW_PT, 'css': MANAGER_XML_CSS, 'js': CHRYSALIO_JS}) editings = ( # yapf: disable {'name': 'cxe', 'label': _('Wysiwym'), 'template': LAYOUT_EDIT_PT, 'css': MANAGER_CSS + KATEX_CSS + CIOARTICLE_CXE_CSS, 'js': CHRYSALIO_JS + KATEX_JS + CIOARTICLE_CXE_JS, 'regex': (join('Regex', 'cioarticle_cxe_in.regex'), join('Regex', 'cioarticle_cxe_out.regex')), 'xsl': (join('Xsl', 'cioarticle_cxe_in.xsl'), join('Xsl', 'cioarticle_cxe_out.xsl')), 'image_paths': IMAGE_PATHS, 'class': 'ciomemo cioarticle', 'only_groups': set(('cxe',))}, {'name': 'xml', 'label': _('XML'), 'template': LAYOUT_EDIT_PT, 'css': CODEMIRROR_CSS, 'js': CHRYSALIO_JS + CODEMIRROR_JS}) relaxng = RELAXNG_CIOARTICLE class_xpath = 'concat("class-", local-name(/*))' _home = dirname(__file__) # ------------------------------------------------------------------------- @classmethod def _edit_cxe_i18n(cls, request: Request): """Return a string of data-i18n_* attributes for translations in CioXmlEditor. See: :meth:.managers.xml.ManagerXml._edit_cxe_i18n """ return '{data}'\ ' data-i18n_attr_lang="{attr_lang}"'\ ' data-i18n_val_fr="{val_fr}"'\ ' data-i18n_val_fr-FR="{val_fr_fr}"'\ ' data-i18n_val_fr-CA="{val_fr_ca}"'\ ' data-i18n_val_en="{val_en}"'\ ' data-i18n_val_en-US="{val_en_us}"'\ ' data-i18n_val_en-GB="{val_en_gb}"'\ ' data-i18n_val_es="{val_es}"'\ ' data-i18n_val_de="{val_de}"'\ ' data-i18n_tag_meta="{tag_meta}"'\ ' data-i18n_tag_keywords="{tag_keywords}"'\ ' data-i18n_tag_keyword="{tag_keyword}"'\ ' data-i18n_tag_section="{tag_section}"'\ ' data-i18n_section_splitting="{section_splitting}"'\ ' data-i18n_attr_role="{attr_role}"'\ ' data-i18n_tag_p="{tag_p}"'\ ' data-i18n_tag_list="{tag_list}"'\ ' data-i18n_tag_list1="{tag_list1}"'\ ' data-i18n_tag_table="{tag_table}"'\ ' data-i18n_add_table="{add_table}"'\ ' data-i18n_remove_table="{remove_table}"'\ ' data-i18n_attr_layout="{attr_layout}"'\ ' data-i18n_val_fixed="{val_fixed}"'\ ' data-i18n_rows="{rows}"'\ ' data-i18n_columns="{columns}"'\ ' data-i18n_column_add="{column_add}"'\ ' data-i18n_column_remove="{column_remove}"'\ ' data-i18n_row_add="{row_add}"'\ ' data-i18n_row_remove="{row_remove}"'\ ' data-i18n_cell_merge="{cell_merge}"'\ ' data-i18n_cell_split="{cell_split}"'\ ' data-i18n_cell_status="{cell_status}"'\ ' data-i18n_toggle_layout="{toggle_layout}"'\ ' data-i18n_tag_media_image="{tag_media_image}"'\ ' data-i18n_characters="{characters}"'\ ' data-i18n_entities="{entities}"'\ ' data-i18n_tag_entity="{tag_entity}"'\ ' data-i18n_val_person="{val_person}"'\ ' data-i18n_val_place="{val_place}"'\ ' data-i18n_val_date="{val_date}"'\ ' data-i18n_tag_sub="{tag_sub}"'\ ' data-i18n_tag_latex="{tag_latex}"'\ ' data-i18n_tag_latex_display="{tag_latex_display}"'\ ' data-i18n_tex_frac="{tex_frac}"'\ ' data-i18n_tex_sqrt="{tex_sqrt}"'\ ' data-i18n_tex_vec="{tex_vec}"'\ ' data-i18n_tex_hat="{tex_hat}"'\ ' data-i18n_tag_link="{tag_link}"'\ ' data-i18n_tag_footnote="{tag_footnote}"'\ ' data-i18n_attr_call="{attr_call}"'.format( data=ManagerCiomemo._edit_cxe_i18n(request), attr_lang=translate(_('language'), request=request), val_fr=translate(_('french'), request=request), val_fr_fr=translate(_('french, France'), request=request), val_fr_ca=translate(_('french, Canada'), request=request), val_en=translate(_('english'), request=request), val_en_us=translate( _('english, United States'), request=request), val_en_gb=translate( _('english, Great Britain'), request=request), val_es=translate(_('spanish'), request=request), val_de=translate(_('german'), request=request), tag_meta=translate(_('Metadata'), request=request), tag_keywords=translate(_('Keywords'), request=request), tag_keyword=translate(_('Keyword'), request=request), tag_section=translate( _('Section (Alt-Enter, Ctrl- above, Shift- sub-section)'), request=request), section_splitting=translate( _('Section splitting'), request=request), attr_role=translate(_('role'), request=request), tag_p=translate(_('Paragraph (Ctrl- above)'), request=request), tag_list=translate(_('List'), request=request), tag_list1=translate(_('Ordered list'), request=request), tag_table=translate(_('Table'), request=request), add_table=translate(_('Add table'), request=request), remove_table=translate(_('Remove table'), request=request), attr_layout=translate(_('layout'), request=request), val_fixed=translate(_('uniform columns'), request=request), rows=translate(_('rows'), request=request), columns=translate(_('columns'), request=request), column_add=translate( _('Add column (Ctrl- before)'), request=request), column_remove=translate(_('Remove column'), request=request), row_add=translate(_('Add row (Ctrl- above)'), request=request), row_remove=translate(_('Remove row'), request=request), cell_merge=translate(_('Merge cells'), request=request), cell_split=translate(_('Split cell'), request=request), cell_status=translate( _('Toggle cell status'), request=request), toggle_layout=translate(_('Toggle layout'), request=request), tag_media_image=translate(_('Image block'), request=request), characters=translate(_('Characters'), request=request), entities=translate(_('Entities'), request=request), tag_entity=translate(_('Entity'), request=request), val_person=translate(_('person'), request=request), val_place=translate(_('place'), request=request), val_date=translate(_('date'), request=request), tag_sub=translate(_('Indice'), request=request), tag_latex=translate( _('Mathematical formula (Ctrl-$)'), request=request), tag_latex_display=translate( _('Expanded mathematical formula (Alt-$)'), request=request), tex_frac=translate(_('Fraction'), request=request), tex_sqrt=translate(_('Square root'), request=request), tex_vec=translate(_('Vector'), request=request), tex_hat=translate(_('Angle cap'), request=request), tag_link=translate(_('Link'), request=request), tag_footnote=translate(_('Footnote'), request=request), attr_call=translate(_('call'), request=request))