Autor Thema: In Ordner verschieben Funktionalität  (Gelesen 7625 mal)

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
In Ordner verschieben Funktionalität
« am: 13.01.09 - 11:28:30 »
Hallo,

im Posteingang gibt es die Funktionalität "In Ordner verschieben...". Diese stellt mir nur die Ordner dar, in die es auch Sinn macht, eine Mail zu verschieben. Außerdem enthält sie zusätzlich ggf. auch selbst erstellte Ordner.

Ich würde gern per LotusScript auch nur diese Ordner ermitteln wollen!
Ich habe bisher eine LS-Funktion, die mir sämtliche Ordner (über die DB) ausliest. Die will ich nun so ändern, dass ich nur die "sinnvollen" Ordner (siehe Screenshot) erhalte.

a) Weiß jemand, wo ich den Code der "In Ordner verschieben..."-Funktionalität finde, der das Auslesen bzw. Darstellen der Ordner realisiert?
b) Es sollte doch auch per LS möglich sein, nur genau diese Ordner (siehe Screenshot) und ggf. selbst erstellte Ordner auszulesen, oder?

Danke und Gruß

Rico.

EDIT: Ich hab bereits im Designer nach dem Code dieser Funktionalität gesucht, doch leider nicht gefunden.
Lotus Notes 8.0.2

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: In Ordner verschieben Funktionalität
« Antwort #1 am: 13.01.09 - 11:37:39 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #2 am: 13.01.09 - 12:05:48 »
Guckst du hier: http://atnotes.de/index.php/topic,43701.0.html

Danke. Ich ermittle mir jedoch bereits genauso die Folders der Mail-DB.
Aber bei dieser Ermittlung erhalte ich als 'view.Name' bspw .:
Code
(Group Calendars)
(Regeln)
($Alarms)
($MAPIUseContacts)
($Inbox-Categorized1)
($Inbox)
($JunkMail)
($Trash)
Eigener Ordner
Die Darstellung der "In Ordner verschieben..."-Funktionalität von Notes (siehe Screenshot Ausgangspost) scheint zwar auch Ordner der Mail-DB zu ermitteln (?), aber eben nur die "sinnvollen", in welche man Maildokumente verschieben kann/sollte.

Die Frage ist für mich eben nur, wie macht das diese Funktionalität? ...damit ich das für mich mehr oder minder nachbauen kann.
Kommt man irgendwie an den Code der Funktionalität ran?

Rico.
Lotus Notes 8.0.2

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: In Ordner verschieben Funktionalität
« Antwort #3 am: 13.01.09 - 12:20:48 »
Kommt man irgendwie an den Code der Funktionalität ran?

Nein. Das ist eine interne Notesfunktion.

Du kannst beim Ermitteln der Ordnernamen prüfen ob es sich beim entsprechenden Ordner um einen "sinnvollen" oder um einen (...) Ordner handelt. In Abhängigkeit davon nimmst du ihn in die Liste der auszuwählenden Ordner auf oder nicht.

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #4 am: 13.01.09 - 12:30:23 »
Zitat
Nein. Das ist eine interne Notesfunktion.
Mist - hab ich mir fast gedacht.  ::)

Zitat
Du kannst beim Ermitteln der Ordnernamen prüfen ob es sich beim entsprechenden Ordner um einen "sinnvollen" oder um einen (...) Ordner handelt. In Abhängigkeit davon nimmst du ihn in die Liste der auszuwählenden Ordner auf oder nicht.
Mh, so werd ich das wohl auch machen müssen...
Sinnvoll wären dann ja eigentlich nur: ($Inbox), ($JunkMail) und außerdem alle weiteren Ordner ohne die Zeichen '( $ )'?! Das sind ja dann i.d.R. nur alle selbst erstellten Ordner.

...dann werd ich mal ein bischen selectieren.  ;)

Danke und Gruß

Rico.
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #5 am: 13.01.09 - 16:53:03 »
Ok, hab jetzt alles soweit umgebastelt - funzt prima. Ich werd mir nur nochwas ausdenken, dass die Darstellung ($Inbox) in bspw. Posteingang umformatiert wird... aber das zu seiner Zeit.


Frage:
Ich verschiebe eine Mail von einem in einen anderen Ordner (Ausgangspkt. ist hierbei der Posteingang):
Code
' Maildokument verschieben nach <foldername>
Call docMail.PutInFolder(foldername, False)
'Maildokument aus Folder ($Inbox) entfernen (...da Agent nur in ($Inbox) ausführbar)
Call docMail.RemoveFromFolder("($Inbox)")

Ich möchte später aber auch mal eine Mail aus der View ($Sent) verschieben.
Ich hab´s jetzt noch nicht implementiert, aber kann ich da einfach schreiben:
Code
Call docMail.RemoveFromFolder("($Sent)")
Lt. meinem dafürhalten sollte das nicht funktionieren, da es eben eine View ist und kein Folder, aus dem Removed werden soll und auch die Hilfe nichts anderes sagt?!

Was meint ihr dazu?

Danke und Gruß

Rico.
Lotus Notes 8.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #6 am: 13.01.09 - 17:07:42 »
Ansicht <> Ordner - das kann also nicht funktionieren.

Du kannst aber dem Dokument ein Flag verpassen, damit es via Ansichtsauswahlformel aus der Gesendet-Ansicht fliegt. Schau Dir hierzu eben jene Ansichtsauswahlformel an.

Bernhard

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #7 am: 14.01.09 - 07:58:23 »
So, das ist auch gelöst - danke Bernhard für den Tip.  ;)

Ich habe folgendes gemacht:
1. im LS-Agent die Mail-Verschiebung und das Flag setzen realisiert:
Code
...
' Maildokument verschieben nach <foldername>
Call docMail.PutInFolder(foldername, False)
		
status = "1"
Set item_isMovedAfterKorrespondenzerstellung = docMail.ReplaceItemValue("KorrespondenzVerschoben", status)
Call docMail.Save(True, True)

2. die Ansichtsauswahlformel um mein Flag erweitert:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & KorrespondenzVerschoben != "1"

So klappt das nun wie gewollt.

Danke und Gruß

Rico.
« Letzte Änderung: 14.01.09 - 09:16:25 von magic_halli »
Lotus Notes 8.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #8 am: 14.01.09 - 09:43:26 »
2. die Ansichtsauswahlformel um mein Flag erweitert:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & KorrespondenzVerschoben != "1"

So klappt das nun wie gewollt.

Das ist schlecht. Du solltest das vorhandene Item mit derartigen Flags nutzen und daher dafür sorgen, dass "S" in ExludeFromView vorhanden ist (Achtung - darin können bereits Werte stehen!).

Bernhard

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #9 am: 14.01.09 - 10:01:31 »
Zitat
Das ist schlecht. Du solltest das vorhandene Item mit derartigen Flags nutzen und daher dafür sorgen, dass "S" in ExludeFromView vorhanden ist (Achtung - darin können bereits Werte stehen!).
Aha?!
So richtig schlau macht mich das jetzt momentan nicht... Was heißt das im Klartext?

Ich soll lieber doch nicht ein Item am Dokument anlegen und in der Ansichtsauswahlformel abfragen?! ...Stattdessen was machen? Ich hab das jetzt grob so verstanden, dass es bereits ein "allgemeingültiges Item" gibt, wo ich meinen Wert aus dem Agent mit anhängen kann?!

Unter welchen Stichworten kann ich hierzu die Hilfe befragen? (@IsMember in der Hilfe hat noch nicht viel Licht ins Dunkel gebracht)

Rico.

EDIT: 'ExcludeFromView' ist ein Feld in der Mail-DB, welches bereits die Werte S,A und D besitzt, richtig? An dieses Feld müsste ich einen weiteren Wert anhängen und in der Auswahlformel der Ansicht abfragen?! Also so in etwa:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & (@IsMember("<myValue>"; ExcludeFromView))
Hab ich das richtig gelesen/verstanden bzw. ist das der richtige Weg? Wenn ja, wie fügt man aber hier einen neuen Wert ein?
« Letzte Änderung: 14.01.09 - 10:38:32 von magic_halli »
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #10 am: 14.01.09 - 11:10:22 »
Ach, jetzt hats klick gemacht...

Ich muss ein Item 'ExcludeFromView' am Maildokument erzeugen, nachdem es verschoben wurde. Da hinein speichere ich einen aussagekräftigen String-Value.
Dann ergänze ich einfach die Ansichtauswahl-Formel von der View ($Sent) um dieses Statement.
Damit sollte das doch dann korrekt erledigt sein?!
Also etwa so:
im LS-Agent:
Code
...
' Maildokument verschieben nach <foldername>
Call docMail.PutInFolder(foldername, False)

Dim status As String	
status = "MOVED"
Set item_isMovedAfterKorrespondenzerstellung = docMail.ReplaceItemValue("ExcludeFromView", status)
Call docMail.Save(True, True)

in Ansichtsauswahlformel:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & !(@IsMember("MOVED"; ExcludeFromView))

@Bernhard aka koehlerbv
Hab ich damit Deine Aussage richtig interpretiert bzw. ist diese Vorgehen besser?


Rico.
Lotus Notes 8.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #11 am: 14.01.09 - 11:18:06 »
Du näherst Dich  ;)

Im Mailfile wird bereits ein Item für derartige Fälle von IBM Lotus vorgesehen - ExcludeFromView.
Wie Du in der Auswahlformel von Sent sehen kannst, werden in der Ansicht Dokumente standardmässig nicht angezeigt, wenn ExcludeFromView den String "S" (für "Sent view") enthält. Die Ansicht ist also für Deine Zwecke bereits ausgesrüstet.

Nochmals: ExcludeFromView kann auch mehrere Characters enthalten - also auf keinen Fall einfach den Inhalt des Items durch "S" ersetzen!

Bernhard

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #12 am: 14.01.09 - 11:32:50 »
Du näherst Dich  ;)

Im Mailfile wird bereits ein Item für derartige Fälle von IBM Lotus vorgesehen - ExcludeFromView.
Wie Du in der Auswahlformel von Sent sehen kannst, werden in der Ansicht Dokumente standardmässig nicht angezeigt, wenn ExcludeFromView den String "S" (für "Sent view") enthält. Die Ansicht ist also für Deine Zwecke bereits ausgesrüstet.
Ok, dann also doch im LS-Agent ein neues Item erzeugen und bspw. mit String 'MOVE' belegen?!
In der Auswahlformel dann einfach:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & !(@IsMember("MOVED"; <myItem>))
Macht das dann aber was, wenn 'myItem' am Dokument nicht existiert?


Zitat
Nochmals: ExcludeFromView kann auch mehrere Characters enthalten - also auf keinen Fall einfach den Inhalt des Items durch "S" ersetzen!
Verschrieben? Ich würde den Inhalt doch nicht mit "S" ersetzen, sondern... Ahaaa, in meinem vorherigen Post hätte ich den gesamten Inhalt durch meinen Variablenwert ersetzt (wegen ReplaceItemValue), richtig?!

Hoffentlich liege ich jetzt richtig.  ;)

Rico.
Lotus Notes 8.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #13 am: 14.01.09 - 11:35:30 »
Ich gebs auf ...

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #14 am: 14.01.09 - 11:39:13 »
Nein, ich habs... sorry!
Ich hänge ans Item ExcludeFromView im LS-Agent mittels 'AppendToTextList' den Wert 'MOVED' an und gebe das in der Auswahlformel noch als Kriterium mit an:
Code
SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView)) & !(@IsMember("MOVED"; ExcludeFromView))
Aber jetzt...  ;)
« Letzte Änderung: 14.01.09 - 11:41:52 von magic_halli »
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #15 am: 14.01.09 - 12:37:08 »
@Bernhard
Ich sehe schon, ich treibe Dich an den Rande des Wahnsinns!  ::)
Aber ich habe jetzt Deine Aussage von vorhin erst richtig kappiert...
Zitat
Du solltest das vorhandene Item mit derartigen Flags nutzen und daher dafür sorgen, dass "S" in ExludeFromView vorhanden ist
Das heißt, ich ändere gar nichts an der Auswahlformel der Ansicht!
Ich füge lediglich ans Maildokument der ($Sent)-Ansicht zum Item 'ExcludeFromView' ein "S" (String) hinzu. Somit fliegt die Mail dann automatisch aus der Ansicht raus.

Nur ein kleine Frage:  ;)
Mein LS-Agent greift nur, wenn sich der User in der Gesendet-Ansicht befindet. Die selectierte Mail soll dann verschoben werden in einen anderen Ordner und anschließend aus der Ansicht verbannt werden.
Also muss einfach ein "S" ans Item 'ExcludeFromView' ran, nachdem
Code
Call docMail.PutInFolder(foldername, False)
passiert ist?!
In den Dokumenteigenschaften einer gesendet-Mail gibts aber dieses Item nicht!!!
Ergo: Ich müsste 'ExcludeFromView' für dieses Dokument als Item neu erstellen?

Bitte, lass mich richtig liegen!  :)

Rico.


EDIT: So wie beschrieben funktionierts jetzt erstmal - muss also richtig sein.
« Letzte Änderung: 14.01.09 - 12:44:18 von magic_halli »
Lotus Notes 8.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #16 am: 14.01.09 - 12:54:32 »
Jetzt haben wirs  :)

Wenn ExcludeFromView noch nicht existiert (das ist der Regelfall), gilt
docMail.ExcludeFromView (0) = ""
ergo kannst Du dann einfach mit
docMail.ExcludeFromView = "S"
weitermachen.

Ansonsten musst Du dem Item ein weiteres Element "S" hinzufügen (ExcludeFromView ist dann nicht skalar! Es muss ein Array sein).

HTH,
Bernhard

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: In Ordner verschieben Funktionalität
« Antwort #17 am: 14.01.09 - 13:50:10 »
So, der Vollständigkeit halber hier der entsprechende Code vom LS-Agent:
Code
          ' Item ExcludeFromView existiert
		If Not(docMail.ExcludeFromView(0) = "") Then
			Call docMail.ExcludeFromView.AppendToTextList("S")
			Call docMail.Save(True, True)
		Else
			docMail.ExcludeFromView = "S"
			Call docMail.Save(True, True)
		End If
Die Auswahlformel der Ansicht ($Sent) bleibt unberührt.

So läuft das jetzt endlich bei mir durch.


Danke Bernhard für Deine Geduld!  :)


Gruß Rico.
Lotus Notes 8.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz