Metadaten-Eingabeformulare (ModsForms)

Einleitung

Dieses Kapitel behandelt die Infrastruktur und Konfiguration der Metadaten-Eingabeformulare, wie sie, zum Beispiel im Publikationsserver-Kontext zum Einsatz kommen.

Die Modsforms Komponente des VLS ermöglicht es dem Portalnutzer, einen neuen MetadataKnoten anzulegen.

Zum Verständnis der Metadaten-Eingabeformulare werden, im folgenden Kapitel, einige Begriffe vorrausgesetzt:

Modsforms

Komponente des VLS zur Web-basierten Metadateneingabe im MODS Format durch Nutzer.

Formtype

Ein Formulartyp - zum Beispiel zur Erfassung von Dissertationen. Das Verhalten eines Formtype in Bezug auf Authentifizierung und Workflow wird durch die Formconfig spezifiziert. Die Zuweisung eines Formtype zu einem oder mehreren metadataType erfolgt über die types.

Formdef <forms/formdef/full>

Template zur Definition der durch einen Formtype genutzten TopLevelFormEntries.

FormEntry

Basisklasse aller Bausteine eines Modsforms Formulars. FormEntries können der konkreten Dateneingabe dienen: (z.B. TextFormEntry, DateFormEntry, DropdownFormEntry, RadioFormEntry, MultiLevelSelectionFormEntry) oder als WrapperObjekte fungieren (z.B. ModsFormEntry, MultiValueFormEntry, FormSection).

Auch die FormSpec, die das eigentliche Verhalten und Handling sämtlicher Eingaben implementiert, ist ein FormEntry. Sie bildet die Wurzel des durch die verschachtelten FormEntries aufgespannten Baumes, der das Formular definiert (siehe auch Formdef).

Jedes FormEntry besitzt einen, in seinem Teilbaum eindeutigen, Identifier.

TopLevelFormEntry

Baustein eines Formtype zur Eingabe eines bibliographischen Sachverhalts wie, beispielsweise Autoren, Ausgabedatum, Verlag, aber auch anderer relevanter Daten wie Klassifikationseinordnung oder Dateiuploads.

Das Verhalten eines einzelnen TopLevelFormEntry wird durch die Formconfig gesteuert. Damit ist es auch möglich, Einträge gänzlich zu deaktivieren.

Formconfig

Teil der dconfig, durch den das Verhalten der Modsforms gesteuert wird.

Formauth

Rechtesteuerung der verschiedenen Anlege-, Anhäng-, und Editieroperationen. Gesteuert mittels der Formconfig .

FormWikidata

Steuerung der im Formular angezeigten Erklärung- und Hilfetexte.

Diese Unterkomponenten der Modsforms greifen ineinander und werden, in diesem Kapitel <forms/index/full>, detailliert behandelt.

Die folgende Grafik zeigt die Interaktionen der Modsforms-Komponente mit anderen Teilen des VLS.

Modsforms Übersicht

Definition eines Formulars

Ein Metadaten-Eingabeformular bildet, technisch gesehen, eine Baumstruktur. Die Wurzel dieses Baumes ist immer ein Formspec Objekt, dass zu Laufzeit instanziiert und mit weiteren FormEntries <forms/formentry/full> gemäß der Formdef für den jeweiligen Formtype angereichert wird.

Die Grunddefinition des Formular-Templates für einen Formtype erfolgt derzeit direkt im Python-code. Dabei werden, durch die Formdef, die in einem Formulartyp verwendeten TopLevelFormEntry Bausteine dem FormSpec Objekt zugewiesen.

Sämtliche Formtype sind in der FormRegistry registriert, in der weitere Verhaltenssteuerungen vorgenommen werden.

FormRegistry

In der FormRegistry sind alle verwendbaren Formtypes registriert, die zur Erzeugung (CREATE) und Manipulation (UPDATE) von MetadataKnoten Einträgen definiert sind.

Formtypes

Folgende Formtypes sind in der formRegistry registriert und durch die nachfolgenden Formdef Templates definiert.

Der Titel eines jeden Formdef-Blocks bezeichnet den Formtype. Dieser wird benötigt, um das Formular in der Formconfig referenzieren zu können. Dort können dann die einzelnen TopLevelFormEntry Bausteine des Templates, die hier inkludiert werden, konfiguriert werden.

Für weitere Informationen siehe TopLevelFormEntries <forms/formentry/TopLevelFormEntry>.

doctoralThesis

    def doctoralThesis(self, form):
        form.label = "mainlabel_doctoralThesis"

        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(TranslatedTitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(UrnFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(PersonFormEntry, ident='thesisAdvisor',
                       label=u"thesisAdvisor", marcrelators="ths")
        form.vlsAppend(PersonFormEntry, ident='thesisExaminer',
                       label=u"thesisExaminer", marcrelators="cns")
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(ExtensionDateFormEntry, ident='submission')
        form.vlsAppend(ExtensionDateFormEntry, ident='defense')
        form.vlsAppend(LocationFormEntry)
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(PublisherFormEntry)
        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

thesis

    def thesis(self, form):
        form.label = u"mainlabel_thesis"

        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(TranslatedTitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(PersonFormEntry, ident='thesisAdvisor',
                       label=u"thesisAdvisor", marcrelators="ths")
        form.vlsAppend(PersonFormEntry, ident='thesisExaminer',
                       label=u"thesisExaminer", marcrelators="cns")
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(ExtensionDateFormEntry, ident='submission')
        form.vlsAppend(ExtensionDateFormEntry, ident='defense')
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(LocationFormEntry)
        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

studyThesis

    def studyThesis(self, form):
        form.label = u"mainlabel_studyThesis"

        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(ExtensionDateFormEntry, ident='submission')
        form.vlsAppend(ExtensionDateFormEntry, ident='defense')
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

preprint

    def preprint(self, form):
        form.label = u"mainlabel_preprint"

        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(DateModifiedFormEntry)
        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

erArticle

Ermöglicht es, einen in einer Zeitschrift erschienen Artikel abzubilden, bei dem die bibliographischen Informationen der Zeitschrift keinen separaten MetadataKnoten erzeugen, sondern im MODS des MetadataType des article selbst gehalten werden.

    def erArticle(self, form):
        form.label = u"mainlabel_erArticle"
        form.vlsAppend(SwitchRepublishedFormEntry)

        # Angaben zum Aufsatz
        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(UrnFormEntry)

        # Angaben zur Zeitschrift
        more = VlsFormSection(parent=form, ident='journal_data', label=u"periodical_info")
        more.vlsAppend(TitleFormEntry, ident="parentTitle", modsContext='host',
                       label=u"periodical_title", subtitle=False)
        more.vlsAppend(LocationFormEntry, modsContext='host')
        more.vlsAppend(PublisherFormEntry, modsContext='host')
        more.vlsAppend(DateIssuedFormEntry, modsContext='host')
        more.vlsAppend(VolumeIssueFormEntry, modsContext='host')
        more.vlsAppend(ExtentFormEntry, modsContext='host')
        more.vlsAppend(IssnFormEntry, modsContext='host')

        # Weitere Angaben
        more = VlsFormSection(parent=form, ident='moredata', label=u"additional_data")
        more.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(more)

        more.vlsAppend(UploadFileFormEntry)
        more.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)
        more.vlsAppend(EmailFormEntry)

        more.vlsAppend(RestrictionInfo)
        more.vlsAppend(LicenseInfo)
        more.vlsAppend(DeferredPublicationDate)
        more.vlsAppend(LegalFormEntry)

erBookPart

    def erBookPart(self, form):
        form.label = u"mainlabel_erBookPart"
        form.vlsAppend(SwitchRepublishedFormEntry)

        # Angaben zum Aufsatz
        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(UrnFormEntry)

        # Angaben zum Sammelwerk
        more = VlsFormSection(parent=form, ident='collected_edition_data', label=u"collected_edition_data")
        more.vlsAppend(TitleFormEntry, ident="parentTitle", modsContext='host',
                       label=u"collected_edition_title", subtitle=False)
        more.vlsAppend(TitleFormEntry, ident="seriesTitle", modsContext='series',
                       subtitle=False, label="series_title")
        more.vlsAppend(DetailNumberFormEntry, ident="seriesVolume", label=u"volume",
                       modsContext='series')
        more.vlsAppend(PersonFormEntry, marcrelators='edt', modsContext='host',
                       label=u"collected_edition_editor")
        # PublisherFormEntry(parent=more, modsContext='host')
        more.vlsAppend(LocationFormEntry, modsContext='host')
        more.vlsAppend(DateIssuedFormEntry, modsContext='host')
        more.vlsAppend(VolumeFormEntry, modsContext='host')
        more.vlsAppend(ExtentFormEntry, modsContext='host')
        more.vlsAppend(IsbnFormEntry, modsContext='host')

        # Weitere Angaben
        more = VlsFormSection(parent=form, ident='moredata', label=u"additional_data")
        more.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(more)
        more.vlsAppend(UploadFileFormEntry)
        more.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)
        more.vlsAppend(EmailFormEntry)

        more.vlsAppend(RestrictionInfo)
        more.vlsAppend(LicenseInfo)
        more.vlsAppend(DeferredPublicationDate)
        more.vlsAppend(LegalFormEntry)

book

    def book(self, form):
        form.label = u"mainlabel_book"

        form.vlsAppend(SwitchRepublishedFormEntry)
        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(UrnFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(LocationFormEntry)
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(PublisherFormEntry)
        form.vlsAppend(IsbnFormEntry)
        form.vlsAppend(TitleFormEntry, ident="seriesTitle", modsContext='series',
                       subtitle=False, label="series_title")
        form.vlsAppend(DetailNumberFormEntry, ident="seriesVolume", label=u"volume",
                       modsContext='series')
        form.vlsAppend(LanguageFormEntry)

        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

book2

    def hebis_book(self, form):
        form.label = u"mainlabel_book"

        form.vlsAppend(PublisherFormEntry)
        form.vlsAppend(LocationFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(CorporateFormEntry)
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(EditionFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)
        form.vlsAppend(IsbnFormEntry)
        form.vlsAppend(UrnFormEntry)
        form.vlsAppend(DoiFormEntry)

        more = VlsFormSection(parent=form, ident='seriesdata', label=u"series_data")
        more.vlsAppend(TitleFormEntry, ident="seriesTitle", modsContext='series',
                       subtitle=False, label="series_title")
        more.vlsAppend(DetailNumberFormEntry, ident="seriesVolume", label=u"number",
                       modsContext='series')

        form = VlsFormSection(parent=form, ident='moredata', label=u"additional_data")

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)

        self._addClassifications(form)  # Sachgruppen der DNB (http://www.dnb.de)
        form.vlsAppend(MultiNoteFormEntry)

book_minimal

    def book_minimal(self, form):
        form.label = u"mainlabel_book"

        form.vlsAppend(PublisherFormEntry)
        form.vlsAppend(TitleFormEntry, label="book_title")
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(UrlNetpublicationFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(UrnFormEntry)
        form.vlsAppend(MultiNoteFormEntry)

        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry)

periodical_minimal

    def periodical_minimal(self, form):
        form.label = u"mainlabel_periodical"

        form.vlsAppend(PublisherFormEntry)
        form.vlsAppend(TitleFormEntry, subtitle=False, label="periodical_title")
        form.vlsAppend(UrlNetpublicationFormEntry)

        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(PeriodicalFrequencyFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(MultiNoteFormEntry)

borndigital

    def bornDigital(self, form):
        form.label = u"mainlabel_borndigital"
        form.vlsAppend(AuthorFormEntry)
        form.vlsAppend(PersonFormEntry)
        form.vlsAppend(ExtentFormEntry)
        form.vlsAppend(LanguageFormEntry)
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(DoiFormEntry)
        form.vlsAppend(DateIssuedFormEntry)
        form.vlsAppend(MultiAbstractFormEntry)
        form.vlsAppend(MultiKeywordsFormEntry)
        self._addClassifications(form)
        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(MultiUploadFileFormEntry)
        form.vlsAppend(EmailFormEntry)

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

dtm

    def minimal(self, form):
        form.label = u"mainlabel_minimal"
        self._addClassifications(form)

        t = form.vlsAppend(TitleFormEntry)['wrapper']['title']
        t.showEmptyLabel = False
        form.vlsAppend(ProjectNumberFormEntry)
        form.vlsAppend(UrlRepositoryFormEntry, showEmptyLabel=False)
        form.vlsAppend(UploadFileFormEntry, ident="pdffile",
                       label=u"upload_pdf", filetype='pdf')
        form.vlsAppend(UploadFileFormEntry, ident="zipfile",
                       label=u"upload_zip", filetype='zip')

        form.vlsAppend(RestrictionInfo)
        form.vlsAppend(LicenseInfo)
        form.vlsAppend(DeferredPublicationDate)
        form.vlsAppend(LegalFormEntry)

createSubstructure / structureMeta

    def createSubstructure(self, form):
        form.vlsAppend(TitleFormEntry)
        form.vlsAppend(UploadFileFormEntry)
        form.vlsAppend(UploadFileFormEntry, ident="pdffile",
                       label=u"upload_pdf", filetype='pdf')
        form.vlsAppend(UploadFileFormEntry, ident="zipfile",
                       label=u"upload_zip", filetype='zip')
        form.vlsAppend(UploadFileFormEntry, ident="epubfile",
                       label=u"upload_epub", filetype='epub')
        form.vlsAppend(DeleteStructureFormEntry)

FormEntries (Grundlegende Basisinfrastruktur)

Sämtliche in einem Mods-Formular implementierten Verhaltensweisen und Eingabemöglichkeiten sind letztendlich auf die FormEntry Basisklasse (FormEntryBase) zurückzuführen.

Jedes FormEntry und BasicFormEntry besitzt einen, in seinem Teilbaum des Formulars, eindeutigen Identifier. Die Kette dieser Identifier im Baum, der FormPath, ermöglicht es, jedes Eingabefeld eindeutig zu referenzieren und dient als Schlüssel zur Datenübermittlung.

FormEntries bieten Einsprungpunkte an, die es dem API-Nutzer erlauben, anwendungsspezifische Handling- und Initialisierungsroutinen zu definieren. Im Kontext der hier behandelten Modsforms, dienen diese hauptsächlich der Manipulation der MODS XML-Struktur.

Es existieren zwei grundlegende Klassen von FormEntries:

BasicFormEntry

BasicFormEntries bieten direkte Eingabemöglichkeiten an. Sie können keine weiteren Kind-FormEntries aufnehmen.

  • TextFormEntry / TextBoxFormEntry: Stellt ein Text-Eingabefeld zur Verfügung
  • FileUploadFormEntry / TrackedFileUploadFormEntry: Ermöglicht Dateiuploads
  • ExplanationFormEntry: Bietet erklärende Texte dar
  • DateFormEntry: Offeriert verschieden Möglichkeiten zur Datumseingabe
  • DropdownFormEntry / RadioFormEntry / CheckboxFormEntry: Erlaubt es dem Nutzer, aus mehreren Optionen zu wählen
  • MultiLevelSelectionFormEntry: Implementiert einen ausklappbaren, verschachtelten Baum zur Auswahl eines oder mehrerer Einträge
  • ActionFormEntry: Gibt dem Nutzer die Möglichkeit, definierte Aktionen, wie z.B. ‘Datensatz Löschen’, durchzuführen

ContainerFormEntry

ContainerFormEntriers bilden eine Hülle um anderer FormEntries und BasicFormEntries.

  • FormSpec: Root-Knoten des Formularbaumes mit übergreifenden Handling-Routinen
  • TopLevelFormEntry: Container zur Aufnahme von WrapperFormEntries und BasicFormEntries
  • FormSection: Ermöglicht die visuelle Abgrenzung mehrerer TopLevelFormEntries im Fomular
  • WrapperFormEntry: Gruppiert FormEntries innerhalb eines TopLevelFormEntry
  • MultiValueFormEntry / MultiValueInstanceFormEntry: Ermöglicht Wiederholbarkeit der im Container gewrappten FormEntries

Modsformsspezifische TopLevelFormEntries

ModsTopLevelFormEntries sind vorgefertigte Implementierungen von TopLevelFormEntry. Diese definieren jeweils einen Teilbaum eines Formulars, der üblicherweise das Einlesen und Schreiben eines bibliographischen Sachverhalts ermöglicht. Im einfachsten Fall ist dazu lediglich ein TextFormEntry erforderlich, während zur Erfassung komplexerer Informationen erst eine Kombination aus mehreren BasicFormEntries <forms/formentry/BasicFormEntry> den Anforderungen gerecht wird.

In der Abbildung sind einige ModsTopLevelFormEntry dargestellt. Das AuthorFormEntry, besitzt die TextFormEntry Eingabefelder Lastname, Firstname, und Matrikel-Nr.

Formular Eingabefelder

Bei solchen Daten, die eine Mehrfacheingabe erlauben, z.B. AuthorFormEntry, wird der Inhalt des ModsTopLevelFormEntries in ein MultiValueFormEntry gewrappt. Das MultiValueFormEntry sorgt dafür, dass im Frontend ein Add-Button angezeigt wird, sodass mehr als ein z.B. Autor erfasst werden kann.

Formularkonfiguration über dconfig

Die Konfiguration eines Formtype in Bezug auf Authentifizierung, Workflow und TopLevelFormEntry <forms/formentry/TopLevelFormEntry> Verhalten erfolgt über den Formconfig Bereich der dconfig.

Die dconfig erlaubt es, Verhaltenssteuerungen einer Domain oder eines Domaintypes zu vorzunehmen. Innerhalb der Formconfig können Optionen für alle registrierten Formtypes auf einmal gesetzt werden (DEFAULTS), sowie Konfigurations-Abweichungen für bestimmte Formtypes vorgenommen werden.

Die Formconfig hat den dconfigSection-Namen: modsforms und besitzt folgende Struktur:

[modsforms]
    [[workflowOptions]]
        [[[DEFAULTS]]]  # oder Formtype-Name
            [[[[create]]]]
            [[[[update]]]]
            [[[[append]]]]
    [[templateOptions]]
        [[[DEFAULTS]]]  # Formtype oder Formtype-Name
            [[[[DEFAULTS]]]]  # oder TopLevelFormEntry ident

Hinweis

Um einen Wert innerhalb der dconfig zu referenzieren, wird folgende Nomenklatur verwendet:

dconfig.section.subsection.subsubsection.configAttribute

Wenn eine Einstellung für eine bestimmte domain gemeint ist:

dconfig[domainName].section.subsection.subsubsection.configAttribute

Zur Auszeichnung von Einstellungen, die für einen domainType (zum Beispiel pubserv) gelten sollen, wird notiert:

dconfig[<domainType>].section.subsection.subsubsection.configAttribute