Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Sutpen am 10.06.13 - 16:58:18

Titel: RichText Felder + Kalendereintrag
Beitrag von: Sutpen am 10.06.13 - 16:58:18
Hallo zusammen,

ich habe momentan noch zwei kleine Probleme bei einer XPage. Vielleicht hat einer von euch einen Hinweis.

1. Erstelle ich einen Kalendereintrag. Dies funktioniert auch soweit bis auf einen kleinen Schönheitsfehler - Der Benutzer bekommt neben dem Kalendereintrag noch einen Entwurf zu diesem Kalendereintrag, welchen er bei seinen Mailentwürfen sieht. Anbei der Code den ich verwende:

Code
var db:NotesDatabase = session.getCurrentDatabase();

var id = currentDocument.getParentId();

var parent:NotesDocument = db.getDocumentByID(id);

var category = parent.getItemValueString("Kategorie");

var dir = session.getDbDirectory( session.getServerName() );

var mail = dir.openMailDatabase();

var doc = mail.createDocument();

doc.appendItemValue("Form", "Appointment");

doc.appendItemValue("AppointmentType", "3");

doc.appendItemValue("From", session.getEffectiveUserName());

doc.appendItemValue("Principle", session.getEffectiveUserName());

doc.appendItemValue("Chair", session.getEffectiveUserName());

doc.appendItemValue("Subject", category);

doc.appendItemValue("Location", parent.getItemValueString("Ort"));

doc.appendItemValue("Categories", "Allgemein");

var dt = parent.getItemValue("Date");

var dt2 = parent.getItemValue("Begin");

var dt3 = parent.getItemValue("End");

var date = @Date(dt).getDateOnly();

//Now the Starttime

var time = @Time(dt2).getTimeOnly();

var d1 = session.createDateTime(date + " " + time);

doc.replaceItemValue("StartDateTime", d1);

doc.replaceItemValue("StartDate", d1);

doc.replaceItemValue("StartTime", d1);

var tz = session.evaluate("@GetCurrentTimeZone");

doc.replaceItemValue("StartTimeZone", tz[0]);

doc.replaceItemValue("CalendarDateTime", d1);

//Now the Endtime

time = @Time(dt3).getTimeOnly();

var d2 = session.createDateTime(date + " " + time);

doc.replaceItemValue("EndDateTime", d2);

doc.replaceItemValue("EndDate", d2);

doc.replaceItemValue("EndTime", d2);

doc.replaceItemValue("EndTimeZone", tz[0]);

var description = @DbLookup(db,"vwCategory",category,"description");

var body = description;

doc.replaceItemValue("Body", body);

doc.computeWithForm(true, false);

doc.save(true, false);


2. In einem Dokument gibt es ein RichText Feld, in welchem ein formatierter Text gespeichert wird, ohne Bilder. Diesen würde ich gerne an anderer Stelle wieder abrufen. Kann ich das über ein Computed Field lösen? Bisher bekomme ich keine Daten angezeigt.

Ich habe versucht über einen DbLookup und über die View->Documentbykey->document->getitemvalue das Feld zu bekommen. Leider beides vergebens.

Vielen Dank für Eure Hilfe


Gruß René
Titel: Re: RichText Felder + Kalendereintrag
Beitrag von: Sven Hasselbach am 12.06.13 - 09:36:34
Hast Du Dir schonmal die Kalender-Klassen auf den XSnippets angesehen? Da gibt es entsprechenden Code von Ulrich.
http://openntf.org/XSnippets.nsf/snippet.xsp?id=create-calendar-entry-with-ssjs (http://openntf.org/XSnippets.nsf/snippet.xsp?id=create-calendar-entry-with-ssjs)

Zu deinem RT-Problem:
Wenn Du statt dem Lookup eine Document Datasouurce nutzt, kannst Du den Inhalt des RT Items direkt darstellen, z.B. so:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
	xmlns:xp="http://www.ibm.com/xsp/core">
	
	<xp:this.data>
		<xp:dominoDocument
			var="document1"
			action="openDocument">
			<xp:this.documentId>
				<![CDATA[#{javascript:database.getView("All").getLastDocument().getUniversalID()}]]>
			</xp:this.documentId>
		</xp:dominoDocument>
	</xp:this.data>
	<xp:text
		escape="false"
		id="computedField1"
		value="#{document1.Body}">
	</xp:text>
	
</xp:view>

Die documentId ist dynamisch berechnet, kann natürlich auch ein Lookup o.ä. sein. Dann kann das RT-Item Body in einem computedField direkt dargestellt werden.


Titel: Re: RichText Felder + Kalendereintrag
Beitrag von: Sutpen am 12.06.13 - 10:11:16
Hallo Sven,

den Code von Ulrich hatte ich mir noch nicht angesehen, da ich damals diesen Code einmal gefunden hatte (http://blog.balfes.net/2010/01/14/creating-a-calendar-entry-from-an-xpage-event/).  Aber das werde ich gleich mal nachholen.

Freut mich, dass ich das auf das RT Feld dann doch recht einfach zugreifen kann.

Danke für Deine Hilfe