Code um auszulesen, ob Option 1/2/3 gesetzt ist (bei Komponente)

Jakob H. hinzugefügt 27 Tagen her
beantwortet

Hallo,

ich versuche eine Komponente zu programmieren, die nur angezeigt wird, wenn bei dem konkreten Nachweis Option 1 bzw. 2 bzw. 3 gesetzt ist.

Konkret will ich eine Komponente "Online-Adresse" haben, die nur angezeigt wird, wenn eine von mehreren Bedingungen erfüllt ist. Eine dieser Bedingungen soll "Mit Option 3 formatieren" sein. Die anderen Bedingungen klappen auch.

Ich suche daher eigentlich nur die Programmzeile für "WENN Option 3 gesetzt", also irgendwas mit

if ( ...)
Mir fehlt eigentlich nur der Inhalt der Klammern.


Zur Klarstellung: ich weiß, dass es eine vorprogrammierte Vorlagebedingung für Option 1 bis 3 gibt. Das hilft mir aber nichts. Ich verwende die Komponente an sehr vielen unterschiedlichen Stellen und es wäre unglaublich mühselig und unübersichtlich, das nur für "Option 3 ist gesetzt" zu verdoppeln.


Zur Veranschaulichung hier der Code, den ich bisher geschrieben habe:

using System.Linq;
using System.Collections.Generic;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Collections;
using SwissAcademic.Drawing;

namespace SwissAcademic.Citavi.Citations
{
public class ComponentPartFilter
:
IComponentPartFilter
{
public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
//return handled = true if this macro generates the output (as an IEnumerable<ITextUnit>); the standard output will be suppressed
//return handled = false if you want Citavi to produce the standard output;

handled = true; // this results in that the component is suppressed by default.

if (componentPart == null) return null;
if (componentPart.Elements == null || componentPart.Elements.Count == 0) return null;

if (citation == null) return null;
if (citation.Reference == null) return null;

//if online-Adress is empty, the component will be suppressed
if (string.IsNullOrEmpty(citation.Reference.OnlineAddress)) return null;

if (componentPart.Scope == ComponentPartScope.ParentReference && citation.Reference.ParentReference == null) return null;

//the component will only be shown if one of the following conditions is fulfilled
if (citation.Reference.CustomField2.Contains("Internet") ||
citation.Reference.ReferenceType == ReferenceType.InternetDocument)
handled = false;

return null;
}
}
}


Vielen Dank bereits

Kommentare (7)

Foto
1

Hallo Jakob,

vielen Dank für Ihre Frage.

Bitte verwenden Sie für die programmierte Komponente die angehängte Skript-Version.

Viele Grüße

Susanne

Foto
1

Vielen Dank, Susanne. Das funktioniert genauso wie erhofft.

Foto
1

Hallo Jakob,

gern geschehen und vielen Dank für Ihre freundliche Rückmeldung.

Viele Grüße

Susanne

Foto
1

Hallo Susanne, jetzt muss ich leider doch noch einmal zurückrudern. Mir ist gerade aufgefallen, dass die Komponente doch nicht nicht ganz das macht, was sie soll. Wird bei irgendeinem Eintrag Option 3 aktiviert, dann wird die Internetadresse bei allen Fußnotennachweisen angezeigt, nicht nur bei demjenigen, bei dem der Option 3 ausgewählt ist.


Kann man das irgendwie beheben?


Vielen Dank

Jakob

Foto
1

Hallo Jakob,

vielen Dank für Ihre Rückfrage.

Entschuldigen Sie bitte das Versehen - ich hatte angenommen, dass Sie die Komponente fürs Literaturverzeichnis benötigen. Dann muss die Komponente tatsächlich über alle Nachweise iterieren, um eine ggf. gesetzte Option 3 zu erkennen.

Im Anhang finden Sie die korrigierte Version, bei der nur noch beim aktiven Nachweis geprüft wird, ob die Format-Option 3 aktiviert ist.

Viele Grüße

Susanne

Foto
1

Wunderbar, vielen dank. Jetzt funktioniert es genau so wie ich das erwartet habe.

An dieser Stelle auch nochmal ganz großes Lob für den tollen und schnellen Support, den das Citavi-Team immer bietet.

Foto
1

Hallo Jakob,

gern geschehen und vielen Dank für Ihre freundliche Rückmeldung und das ausgesprochen nette Lob!

Viele Grüße

Susanne

Antwort schreiben
 
Dateianlage anfügen (KEINE vertraulichen Dokumente!)