Autor Thema: Öffnen einer klassischen Seite aus XPage in einem neuen Tab  (Gelesen 3831 mal)

Offline Rainer Merlin

  • Frischling
  • *
  • Beiträge: 16
Hallo,

mein Pfingstwochenende ist in Gefahr!

Seit Tagen versuche ich eine eigentlich einfache Anforderung umzusetzen, und schaff' es nicht:

Die Anforderung:
In XPiNC soll bei Klick auf einen Button/Link einer XPage "XPage_A" ein klassisches Dokument "Dokument_B" in einer klassischen Notes-Anwendung "Anwendung_B" erzeugt werden.
Dieses Dokument_B muss sich in einem neuen Tab neben XPage_A öffnen.

Meine bisherigen Lösungsversuche:

1.)
Als value des Links in der XPage_A rufe ich eine Java-Klasse auf, die in Anwendung_B das Dokument Dokument_B erstellt und die UNID zuückliefert. Mit dieser UNID baue ich eine URL ala "notes://..." auf.
Problem:
Bei jedem Aufbau von XPage_A wird in Anwendun_B ein Dokument_B erstellt.

2.)
Über das onClick-Event des Links wird eine Java-Klasse angesprochen, die Dokument_B erstellt und über FacesContext.getCurrentInstance().getExternalContext().redirect("notes://...") dieses aufruft.
Problem:
Dokument_B erschient in neuem Tab. Aber: Der Tab, der ursprünglich XPage_A beinhaltete, ist leer.

3.)
Der Link in XPage_A ruft einen XAgent auf (value="notes://.../XAgent.xsp?OpenXpage"), der in Anwendung_B das Dokument_B erzeugt und über FacesContext.getCurrentInstance().getExternalContext().redirect("notes://...") Dokument_B aufruft.
Problem: Nun habe ich 3 Tabs: XPage_A, XPage des XAgent, Dokument_B

4.)
Ich öffne über den Link in XPage_A eine neue XPage, in deren Header ich über <meta http-equiv="refresh" content="1; URL=notes://.../"> auf Dokument_B weiterleite.
Problem: Auch hier erscheinen 3 Tabs: Diesmal XPage_A, XPage mit meta-Tag, Dokument_B

Was soll ich tun?

Besten Dank für jede Hilfe
Rainer

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: Öffnen einer klassischen Seite aus XPage in einem neuen Tab
« Antwort #1 am: 23.05.13 - 16:37:31 »
Probiers doch mal mit einem CSJS Scriptblock, der das neue Dokument öffnet:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
	xmlns:xp="http://www.ibm.com/xsp/core">
	<xp:button
		value="OpenDoc"
		id="buttonOpenDoc">
		<xp:eventHandler
			event="onclick"
			submit="true"
			refreshMode="partial"
                        refreshId="refreshMe">
			<xp:this.action>
				<![CDATA[#{javascript:
					var doc:NotesDocument = database.createDocument();
					doc.replaceItemValue("Form", "Test");
					doc.save()
					
					requestScope.put("OpenDoc", true);
					requestScope.put("DocUNID", doc.getUniversalID() );
				}]]>
			</xp:this.action>
		</xp:eventHandler>
	</xp:button>
	<xp:br></xp:br>
	<xp:br></xp:br>
	<xp:div
		id="refreshMe">
		<xp:scriptBlock
			id="scriptBlockOpenDoc">
			<xp:this.value>
				<![CDATA[
					var url = "notes:///Pfad/zur/DB.nsf/0/";
					url += "#{javascript:requestScope.get('DocUNID')}?OpenDocument"; 
					window.open(url);
				]]>
			</xp:this.value>
			<xp:this.rendered><![CDATA[#{javascript:requestScope.containsKey("OpenDoc")}]]></xp:this.rendered>
		</xp:scriptBlock>
	</xp:div>

</xp:view>

Beim Klick auf den Button wird ein neues Dokument erstellt, und die DocUNID im requestScope abgelegt.
Durch den Refresh wird der Scriptblock an den Client gesendet und das CSJS öffnet dann das gewünschte Dokument.
« Letzte Änderung: 23.05.13 - 16:39:52 von Sven Hasselbach »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Öffnen einer klassischen Seite aus XPage in einem neuen Tab
« Antwort #2 am: 25.05.13 - 05:05:16 »
Wie wärs mit notes://db.nsf/Maskenname?openform

Dann ersparst Du Dir das erstellen es Dokuments und die übergabe der unid...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz