Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Glombi am 25.01.08 - 12:37:29

Titel: Beim Aufruf einer Ansicht aus der Bookmark einen Filter setzen
Beitrag von: Glombi am 25.01.08 - 12:37:29
Hallo,
ich brauche mal einen Denkanstoß für folgende Ausgangslage:

Per Gliederungseintrag kann eine Kalenderansicht (die in einem Frameset angezeigt wird) in einer Datenbank geöffnet werden. In dieser Ansicht ist es möglich, nur bestimmte Einträge per Filter anzuzeigen.
Da die Anwender bekanntlich bequem sind und nicht nach jedem Öffnen der Ansicht ihren "Lieblingsfilter" setzen möchten, habe ich in der Seite mit der Ansicht einen Button gemacht, mit dem man den letzten Filter in die NOTES.INI schrieben und diesen als "permament" deklarieren kann.

Folgende Formel wird nun beim Klick auf den Gliederungspunkt ausgeführt.

@If(
@Environment("EnvFilterMerker") = "" | @Environment("EnvFilterMerker") = "0";
@SetEnvironment("EnvFilter";"(kein Filter)");
""
);
@Command([OpenFrameset];"WartungskalenderFS");

@If(
@Environment("EnvFilterMerker") = "" | @Environment("EnvFilterMerker") = "0";
@Return("");
""
);

_Key := @Environment("EnvFilterKey");
_ColumnAlias := @Environment("EnvFilterColumnAlias");
_Exakt := @If(@Environment("EnvFilterExakt") = "1";1;0);
@SetViewInfo([SetViewFilter];_Key;_ColumnAlias; FALSE;_Exakt);
@SetTargetFrame("Filter");
@Command([OpenPage];"FilterPage")



Alles schön und gut. Weil aber die Anwender bequem sind, haben sich einige nun einen Ansichtslink in die Bookmark-Leiste gesetzt. Damit wird dann zwar die Kalenderansicht geöffnet, aber der Filter natürlich nicht ausgeführt.

Habt Ihr eine Idee, wie das gehen kann?

Im Postopen der Kalenderansicht ist schon Scriptcode hinterlegt, das vorab.

Danke für alle sachdienlichen Hinweise!

Andreas
Titel: Re: Beim Aufruf einer Ansicht aus der Bookmark einen Filter setzen
Beitrag von: Glombi am 25.01.08 - 12:51:07
Eine Idee, die mir gerade durch den Kopf ging:
Ich stelle den Anwendern eine Seite "Bookmark-Link" zur Verfügung, die die dann in die Bookmarkleiste ziehen können. Diese müsste dann im Postopen den Code der Gliederung ausführen.

Könnte klappen...

Andreas
Titel: Re: Beim Aufruf einer Ansicht aus der Bookmark einen Filter setzen
Beitrag von: Glombi am 25.01.08 - 14:00:47
Mit der Seite funktioniert es.
In der Gliederung des Kalenders habe ich einen Eintrag, mit der ein Bookmarklink erzeugt werden kann:
_Server := @Name([CN];@Subset(@DbName;1));
_Path := @Subset(@DbName;-1);
_URL := "notes:\\\\" + _Server  + "\\" + _Path + "\\BookmarkLink?OpenPage";
_Title := "Wartungskalender";
@Command([AddBookmark];_URL;_Title )


In der Seite "BookmarkLink" ist nun im Postopen folgendes:

@If(
@Environment("EnvFilterMerker") = "" | @Environment("EnvFilterMerker") = "0";
@SetEnvironment("EnvFilter";"(kein Filter)");
""
);
@Command([OpenFrameset];"WartungskalenderFS");

@If(
@Environment("EnvFilterMerker") = "" | @Environment("EnvFilterMerker") = "0";
@Return("");
""
);
_Key := @Environment("EnvFilterKey");
_ColumnAlias := @Environment("EnvFilterColumnAlias");
_Exakt := @If(@Environment("EnvFilterExakt") = "1";1;0);
@SetViewInfo([SetViewFilter];_Key;_ColumnAlias; FALSE;_Exakt);
@SetTargetFrame("Filter");
@Command([OpenPage];"FilterPage")


Eine Unschönheit gibt es noch: Es wird immer ein neues Fenster aufgemacht, die Seite bleibt als Fenster erhalten.

Ich habe schon
@SetTargetFrame("_self");
am Anfang der Formel ausprobiert, es nützt aber nichts.

Irgendwelche Ideen?

Andreas
Titel: Re: Beim Aufruf einer Ansicht aus der Bookmark einen Filter setzen
Beitrag von: Glombi am 28.01.08 - 11:40:33
Ende des Monologs  ;D

Falls es jemanden interessiert oder wenn Ihr mal ein ähnliches Problem habt. Hier meine Lösung:

Den Bookmarklink setze ich nun mit

_Server := @Name([CN];@Subset(@DbName;1));
_Path := @Subset(@DbName;-1);
_URL := "notes:\\\\" + _Server  + "\\" + _Path + "\\LaunchFromBookmark?OpenForm";
_Title := "Wartungskalender";
@Command([AddBookmark];_URL;_Title )

D.h. es wird eine Maske aufgerufen (neues Dokument erstellt). Das setzt voraus, dass die Anwender das dürfen - ok mit Verfügbar für Public Access lässt es sich auch für Leser einrichten.
In der Maske ist dann im Postopen der Code aus dem letzten Post.

Damit das Dokument geschlossen wird, habe ich in der Maske noch eine Teilmaske eingefügt. Die Teilmaske hat im Postopen folgenden Code:
Call Source.Close


Das funktioniert nun wie gewünscht  :)

Andreas