Autor Thema: Weblink auf ersten Dateianhang  (Gelesen 2331 mal)

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Weblink auf ersten Dateianhang
« am: 18.05.11 - 11:01:36 »
Guten Morgen,

mein Kunde hat eine Anforderung von der ich nicht weiß, ob sie so umsetzbar ist. Es geht um folgendes:

In einem Dokument wird in einem RT-Feld eine Datei eingehängt. Normalerweise könne es auch mehrere sein, aber für diesen speziellen Fall ist es immer nur eine Datei. Über einen Browser und verschiedene andere Applikationan kann diese Datei nun einzeln heruntergeladen werden. Hierfür benutze ich die URL

http://server/pfad/datenbank/view/document/$File/dateiname
oder
http://server/pfad/datenbank/_/uid/$file/dateiname

was auch problemlos funktioniert. Dieser Link wird aber von einigen Applikationen gespeichert und an verschiedenen Stellen immer wieder benutzt. Und jetzt soll sich die Datei ändern. Dummerweise wird nicht nur der Inhalt der Datei geändert, sondern auch der Dateiname. So wird zum Beispiel aus der alten Officewelt eine Vorlage als "Vorlage-Version-4.doc" angeboten und später auf das neue Office gewechselt und die Vorlage heißt nun "Vorlage-Version-5.docx". Der Link soll aber trotzdem noch der gleiche sein.

Gibt es da eine Möglichkeit? Innerhalb des Notes-Clients kann ich z. B. automatisch den ersten Dateianhang öffnen. Gibt es so etwas auch für das Web? Oder gibt es Default-Werte für den ersten Dateianhang in der Form

http://server/pfad/datenbank/_/uid/$file/$FirstAttachment

oder so ähnlich  :-\?

Vielleicht musste ja jemand schon eine ähnliche Anforderung umsetzen und hat einen anderen Ansatz.

Bin für jeden Tipp dankbar.


Viele Grüße,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Weblink auf ersten Dateianhang
« Antwort #1 am: 18.05.11 - 13:10:53 »
Evtl geht es so (ungetestet):
1. Du erstellst dir eine "launcherView" welche die gewünschten (oder alle) Dokumente enthält.
2. Diese View hat eine Form-Selection Formel, welche eine "launcherMaske" definiert
3. Die Launchermaske macht dann mit @SetHttpHeader/<meta...>/javascript einen Redirect auf:
"/" + @WebDbName + "/0/" +@DocumentUniqueID + "/$file/" + @attachmentNames[1]
(ggf. reicht auch der rel. Pfad @DocumentUniqueID + "/$file/" + @attachmentNames[1])

Das Dokument öffnest du dann mittels
http://server/pfad/datenbank/launcherView/uid?OpenDocument

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Weblink auf ersten Dateianhang
« Antwort #2 am: 18.05.11 - 15:38:06 »
Hallo Roland,

vielen Dank für Deine Antwort. Die Idee ist klasse und ich habs gleich mal ausprobiert. Prinzipiell scheint das zu funktionieren, wenn ich auch im Detail noch ein bisschen was machen muss. Ich bin mir aber noch nicht sicher, ob diese Umleitung von den Zielapplikationen erkannt wird, das muss ich dann beim Kunden prüfen.

Hier meine Umsetzung:

1. Eine Ansicht mit den Dokumenten und einer Link-Spalte. Eine Maskenformel "WebOpen" und der Link wird wie folgt generiert (sKey ist ein Primärschlüssel):
   "[" + "<a href='" + "viewLookupByKey/" + sKey + "?OpenDocument" + "'>" + sTitle + "</a>]"

2. Maske WebOpen mit folgendem Code im HTML Head Content:
   url   := @Text(@DocumentUniqueID) + "/$File/" + @Subset(@AttachmentNames; 1);
   "<script language='JavaScript' type='text/javascript'>window.open('" + url + "', '_self');</script>"

   oder alternativ

   "<meta http-equiv='refresh' content='0; " + url + "'>"

Klick auf den Link bringt öffnet sofort den "Datei speichern"-Dialog im Browser. Bei der meta-Variante erscheint im Browser noch das Dokument selbst (was nur aus dem Dateianhang besteht), was ich eigentlich vermeiden möchte.

Jetzt gibts aber noch folgendes kleine Problemchan: Bei a href ohne target öffnet er die leere Seite (im Prinzip die Maske WebOpen) und die Ansicht ist weg. Mit target=_blank macht er eine neue Seite auf. Dort wird dann der "Datei speichern"-Dialog angezeigt, aber das Fenster bekomme ich nicht mehr weg. Wenn ich im HTML Head Content noch ein "opener.close()" hinzufüge, erscheint der Dialog erst gar nicht, sondern öffnet kurz das Fenster und schließt es gleich wieder. Wenn ich im window.open ein anderen target angebe, dann will er einen Popup öffnen und das sperrt der Browser. Hab noch keine sinnvolle Lösung gefunden, aber das sind nur Kleinigkeiten und ist sicher irgend wie hinzubekommen.

Das größere Problem ist die Umleitung. Ob mit <meta http-equiv...> oder window.open, beides sind Umleitungen auf eine zweite Seite und ich vermute, dass das Zielprogramm einfach den HTML-Code ausliest. Aber wie gesagt kann ich das erst beim Kunden testen. Auf jeden Fall ein super Ansatz und jetzt heißt es für mich "mach was draus.." ;-)

Nochmals vielen Dank,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Weblink auf ersten Dateianhang
« Antwort #3 am: 18.05.11 - 15:58:20 »
du könntest noch versuchen, wie ich bereits angemerkt habe, ein Redirect über HTTP-Header auslösen, das müsste mit
@setHTTPHeader("Location","/"+@webDBName....)
gehen, das wäre m.E. die sicherste Variante.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Weblink auf ersten Dateianhang
« Antwort #4 am: 18.05.11 - 17:51:40 »
Danke für den Tipp. Ich werde alle Varianten durchtesten.

Gruß,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Weblink auf ersten Dateianhang
« Antwort #5 am: 19.05.11 - 08:29:33 »
Hallo,

als Alternative kannst Du über einen Webagenten gehen in der Form
http:/server/db/redirectagent?openagent&targetunid=...

Im Script des Agenten kannst Du dann das Zieldokument holen und den ersten Anhang ermitteln und daraus die eigentliche Adresse (am besten mit relativen Pfad) ermitteln. Wenn Du dann über ein Print-Statement diese Adresse in eckigen Klammern ausgibst, macht Notes sofort ein Redirect von dem die Zielapplikation nichts mitbekommt.

Gruß

André

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Weblink auf ersten Dateianhang
« Antwort #6 am: 19.05.11 - 10:50:13 »
Hallo André,

geniale Lösung. Auch wenn ich es noch nicht beim Kunden testen konnte. Aber so wie es aussieht, wird mit dieser Lösung überhaupt keine Umleitung vorgenommen, sondern es ist schlicht das Ergebnis der URL. Habe es jetzt hier sofort umgesetzt und beim mir getestet. Funktioniert einwandfrei. Es wird nicht einmal ein extra Fenster aufgemacht.

Wenn es interessiert, hier die Umsetzung des Agenten:
Code
Sub Initialize
	Dim	session	As New NotesSession
	Dim	ctx		As NotesDocument
	Dim	doc		As NotesDocument
	Dim	view		As NotesView
	Dim	rtItem	As NotesRichTextItem
	Dim	param	List As Variant
	Dim	i		As Integer
	
	Set	ctx		= session.DocumentContext
	i			= GetURLParam(ctx.Query_String_Decoded(0), param)
	
	Set	view		= session.CurrentDatabase.GetView("viewLookupByKey")
	Set	doc		= view.GetDocumentByKey(param("ID"), True)
	
	If (doc Is Nothing) Then Print "<h1>Not Found</h1>The requested URL was not found on this server." : Exit Sub
	
	Set	rtItem	= doc.GetFirstItem("rtFile")
	Print "[" & Strleftback(ctx.Path_Translated(0), "/") & "/" & doc.UniversalID & "/$File/" & rtItem.EmbeddedObjects(0).Name & "]"
End Sub

GetURLParam berechnet nur eine Liste der Parameter in der Form [PARAM] := Wert.

Der Agentenaufruf erfolgt dann so:
Code
http://server/db/OpenFile?OpenAgent&id=primärschlüssel

Vielen Dank für die Hilfe.

Gruß,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz