Autor Thema: Kalenderprofil per script ändern und refreshen  (Gelesen 6184 mal)

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Kalenderprofil per script ändern und refreshen
« am: 03.09.06 - 16:33:57 »
Hallo amSonntagnixandresvorhaben Spezis,

bei diesem tollen Wetter habe ich mich einfach mal an meinen Designer gesetzt und komm hier jetzt nicht mehr weg.

Ich brauche eure Hilfe bei folgendem Problem:

Gegeben:
Eine Mailschablone 6.54 deutsch.
Der Chef möchte eine Corporate Identity Signatur einführen. Die soll bei allen gleich aussehen, aber halt natürlich mit den entsprechenden Telefonnummern und Abteilungsnamen.

Ich habe dann im Postopen der DB ein cript, welches aus ($VimPeople) das entsprechende Doc über session.username.abbreviate lädt und die ganzen benötigten Felder in das CalenderProfile des jenigen Users im Feld Signature_1 schreibt. Dieses Feld habe ich in der Maske CalendarProfile von "bearbeitbar" in "berechnet" geändert, damit keiner mehr was eigenes schreiben kann.
Durch den internen Mechanismus läuft das alles auch ganz gut, sogar wenn ich offline bin (das war der Grund, warum ich mich für den Weg mit dem CalenderProfil entschieden habe). Jedoch gibt es einen gravierenden Haken.

Änderungen im NAB (glob. Directory) werden zwar im Onlinemode sofort in das Kalenderprofil reingeschrieben, aber sie sind nicht sofort aktiv. Vermutlich werden die Informationen gecached. Wenn ich nämlichüber Werkzeuge/Vorgaben das Profil öffne und sofort mit OK wieder schliesse, ist alles in Ordnung. Ich möchte dem User aber nicht zumuten (eigentlich will der Chef das nicht!!), bei jeder Änderung, die Vorgaben öffnen und bestätigen zu müssen.

Meine Frage:
Wie refreshe ich das Calenderprofil über script, sodass der User bei starten seines Mailfiles sofort die aktuellste Info als Signatur in seinem Body sehen kann? Es muß aber im KalenderProfile geschrieben sein. Ich möchte den Weg vermeiden, über ein anderes Profil gehen zu müssen.


Vielen Dank im Voraus



fsinani

Glombi

  • Gast
Re: Kalenderprofil per script ändern und refreshen
« Antwort #1 am: 03.09.06 - 16:42:13 »
Du könntest mit

'... dein besiheriger Code
' ws uidoc dim...
'profiledoc  ist das Backend-Dok. des Profils, das solltest Du schon am Wickel haben

set uidoc = ws.EditDocument( true, profiledoc )
call uidoc.Save
call uidoc.Close

das automatisch machen.

Andreas

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #2 am: 03.09.06 - 17:05:05 »
Hallo Glombi,

danke für deine Antwort.
Das is ein Ausschnitt des Codes.
#####
Dim ws As New NotesUIWorkspace
Dim profdoc As NotesDocument
Set profdoc = db.GetProfileDocument("CalendarProfile")     
call profdoc.ReplaceItemValue("Signature_1", Chr(13) & Chr(13) & Chr(13) & tmp)
'Call profdoc.Save(True,False)
Dim uiprofile As NotesUIDocument
Set uiprofile = ws.EditDocument(True, profdoc )
Call uiprofile.save
Call uiprofile.close
#####

steht, wie gesagt, im PostOpen des Datenbankscriptes.
Jetzt habe ich das Phänomen, dass ich beim öffnen der Maildb ein neues Memo erstelle und wieder schliessen will, was dann natürlich mit der Wollen SIe "senden... nur speichern...." Abfrage quittiert wird.

das Profil ist dadurch aber immer noch nicht aktiv.

fsinani

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #3 am: 03.09.06 - 17:10:39 »
Hallo Glombi,

du hast mir dennoch helfen können, denn das hier:


Set uiprofile = ws.EditProfile("CalendarProfile")
call uiprofile.save
call uiprofile.close

... geht auf jeden Fall. Ich probier nochmal ob ich keiner Phatamorgana zum Opfer falle und melde mich nochmal


Vielen Dank nochmal



Edit:

Also ist alles in bester Ordnung. So genau funktioniert es. Nochmals vielen Dank, jetzt kann ich mit meiner  Frau doch noch spazieren gehen :love:
« Letzte Änderung: 03.09.06 - 17:19:19 von fsinani »

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #4 am: 25.09.06 - 13:30:17 »
Hallo liebe Gemeinde,

habe jetzt die Krise bekommen. Nachdem also mein Postopen Script jetzt funktioniert (zumindest bei der guten alten KACHEL - Homepage), habe ich jetzt ein dickes Problem mit einigen Usern, die die tolle "Welcome Page" verwenden. Da läuft mein Script auf einen Fehler, warscheinlich mit dem uidoc.save. Ist in diesem Kontext nicht ausführbar. Ich weiss jetzt leider nicht, was ich noch ändern kann, damit mein Postopen - Script auch bei den WelcomePage usern läuft.

jmd. von euch auch schonmal sone Erfahrung gemacht? Ich hab jetzt echt keine Lust, die ganze Programmierung wieder abzuändern?

Danke für eure Hilfe

Glombi

  • Gast
Re: Kalenderprofil per script ändern und refreshen
« Antwort #5 am: 25.09.06 - 13:38:47 »
Vielleicht gehts wenn Du den Traget Frame setzt. Also sowas in der Art:

call ws.SetTargetFrame("_blank")
Set uiprofile = ws.EditProfile("CalendarProfile")
call uiprofile.save
call uiprofile.close


oder

call ws.SetTargetFrame("_top")
call ws.SetTargetFrame("_self")

Probiere es mal damit.

Andreas

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #6 am: 25.09.06 - 13:48:57 »
Vielen Dank für den Hinweis,

Das kann ich aber erst heute abend machen.

Ich gebe auf jeden Fall morgen wieder bescheid.

Danke

fsinani

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #7 am: 25.09.06 - 15:24:15 »
Also wider erwarten habe ich mit einem Kollegen gesprochen, der da jetzt schon Zugriff hat und das testen kann.

Mal angenommen, das funzt mit call ws.SetTargetFrame("_top").

Was passiert aber, wenn die MailDB in einem anderen Frame (zb: _left) auf ist, bzw. kann ich den Code auch für diejenigen verwenden, die über die Kachelansicht arbeiten?


Danke im Voraus

fsinani

EDIT'

Tja, leider erfolglos, auch mit dem SetTargetFrame. Ich erhalte immer noch den Fehler, dass er das uidoc über die bereits in der WelcomePage geöffnete MailDB nicht bekommen kann. Meine Signatur wird dann auch garnicht ins Body übernommen.
Am besten wäre es, wenn der Mist garnicht erst über Frontend ins CalendarProfil geschrieben werden müsste, sondern über Backend, nur leider ging das ja irgendwie nicht so richtig.

Son mist.
« Letzte Änderung: 25.09.06 - 15:36:24 von fsinani »

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #8 am: 26.09.06 - 13:27:46 »
So,

und jetzt klappt das alles ganz anders!!

O.K. habe alle ui - Sachen rausgeschissen. Speichere das CalendarProfile im Backend. Allerdings setze ich davor noch ein call CalendarProfil.ComputeWithForm(True,False)

Jetzt geht das.

Ichhatte das schon vorher mal ausprobiert, was aber nicht funktionierte. Jetzt habe ich herausgefunden, dass wohl mein Client (6.54) beschädigt war, denn nach der Neuinstallation geht es sowohl mit 6.54 alsauch mit 6.55.
Das ist mal wieder Toll, dass einem sone sch....e passiert.

Ich bedanke mich recht herrzlich für deine Hilfe Glombi.

bis zum nächsten Problem


ciao

Offline Silver

  • Senior Mitglied
  • ****
  • Beiträge: 294
  • Geschlecht: Männlich
  • "free your mind"
Re: Kalenderprofil per script ändern und refreshen
« Antwort #9 am: 05.02.07 - 16:25:20 »
Hallo!

Könntest Du mir wenn möglich bitte mal den kompletten Code für die Kalenderprofil-Aktualisierung posten. Habe hier das selbe Prob. Wäre spitze!  :-[

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re: Kalenderprofil per script ändern und refreshen
« Antwort #10 am: 05.02.07 - 16:57:06 »
Ich nehme auch eins :-) Wäre sehr verbunden wenn ich das Script sehen dürfte. Ich habe das Gefühl, dass die nette Änderung der Gesetzgebung bzgl. eMail-Signaturen bei vielen Chefs den gleichen Druck auf die IT auslöst :-)

Jenson

Offline schurke

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
Re: Kalenderprofil per script ändern und refreshen
« Antwort #11 am: 09.02.07 - 14:27:44 »
Kannst du mir bitte auch das script schicken. Mein Chef möchte auch eine einheitliche Signatur.

Vielen Dank

Wilfried
« Letzte Änderung: 09.02.07 - 15:21:12 von schurke »
notes 6.5.5

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #12 am: 11.02.07 - 16:12:04 »
Sorry, daß ich mich erst so spät melde

also klar- ich kann euch das script dafür geben.

Ihr müsst aber bis morgen warten, da ich die DB nicht zuhause habe.

Erwartet jedoch nicht besonderes.

bis morgen

Offline mkrauss

  • Aktives Mitglied
  • ***
  • Beiträge: 169
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #13 am: 14.02.07 - 13:21:44 »
Sorry ich bin spät dran,

aber hättest du dieses Sricp auch für mich??

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #14 am: 16.02.07 - 07:45:06 »
Und nochmal sorry,

haben einen ekelhaften Stromausfall gehabt, so kurz bevor wir unsere neue leistungsfähigere USV bekommen haben.

Tja, man muß auch ma verlieren können !!


Also nun dann jetzt erst der gewünschte Code:

im Postopen des DB Scriptes kommt folgender Code:

   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim nab As NotesDatabase
   Dim profdoc As NotesDocument
   Dim nabview As NotesView
   Dim nabdoc As NotesDocument
   Dim nabName As New NotesName(s.UserName)
   Dim key As String
   Set db = s.CurrentDatabase
   Set nab = s.GetDatabase(db.Server,"names.nsf") ' Achtung bei Verwendung mehrerer MailServer
   Set nabview = nab.GetView("($VIMPeople)")
   key = nabName.Abbreviated
   If Not ( db.Server = "" ) Then ' Nur wenn DB auf Server nicht lokal
      Set nabdoc = nabview.GetDocumentByKey(key)
      '################# Signatur zusammenbauen################
      ' Funktion mit mehrfach - Moeglichkeit
      Dim F_Val As Variant
      Dim F_item As NotesItem
      Set F_item = nabdoc.GetFirstItem("Department") ' Nur nötig, wenn Mehrfachwerte im Feld Department
      f = 0
      If Not F_item.Text = "" Then
         Forall v In F_item.Values
            tmp_Funktion = tmp_Funktion & v & Chr(13)
         End Forall
      Else
         tmp_Funktion = ""
      End If
      tmp_name = nabname.Common + Chr(13)
      tmp_Firma = nabdoc.CompanyName(0) + Chr(13)
      tmp_PLZ = nabdoc.OfficeZip(0)
      tmp_City =  nabdoc.OfficeCity(0)
      tmp_strasse = nabdoc.OfficeStreetAddress(0) + Chr(13)
      tmp_fon = nabdoc.OfficePhoneNumber(0)
      If Not tmp_fon = "" Then
         tmp_telefon = "Phone" & Chr(9) & tmp_fon & Chr(13)
      Else
         tmp_Telefon = ""
      End If
      tmp_fax = nabdoc.OfficeFAXPhoneNumber(0)
      If Not tmp_fax = "" Then
         tmp_telefax =  "Fax" & Chr(9) &  tmp_fax & Chr(13)
      Else
         tmp_Telefax = ""
      End If
      tmp_mob = nabdoc.CellPhoneNumber(0)
      If Not tmp_Mob = "" Then
         tmp_Mobil = "Mobile" & Chr(9) & tmp_mob & Chr(13)
      Else
         tmp_Mobil = ""
      End If
      Dim M_Val As Variant
      Dim M_item As NotesItem
      Set M_item = nabdoc.GetFirstItem("InternetAddress")
      Forall v In M_item.Values
         tmp_M = tmp_M & v & Chr(13)
         Exit Forall ' direkt nach der ersten Mailadresse rausspringen:
      End Forall
      tmp_Mail = "mailto:" & tmp_M
      tmp_web ="http://www." & Strtoken(tmp_Mail,"@",2)
      tmp_signatur = Chr(13) & Chr(13) & Chr(13) & tmp_name & tmp_Funktion & tmp_Firma   & tmp_Strasse & tmp_PLZ & " " & tmp_City & Chr(13) & Chr(13) & tmp_Telefon & tmp_Telefax & tmp_Mobil & Chr(13) & tmp_Mail & tmp_web
      '#######################################################
      Set profdoc = db.GetProfileDocument("CalendarProfile")     
      Call profdoc.ReplaceItemValue("Signature_1", tmp_signatur )
      Call profdoc.Save(True,False)
      Dim uiprofile As NotesUIDocument
      If Not profdoc.owner(0) = "" Then
         Set uiprofile = ws.EditProfile("CalendarProfile")
         Call uiprofile.save
         Call uiprofile.close
      Else
         err_msg = Msgbox("Die Datenbank wird aktualisiert und muss dafür geschlossen werden. Bitte öffnen Sie sie anschliessend erneut.",16, "DATENBANKAKTUALISIERUNG")
         Call db.close
      End If
   End If

CODE ENDE


In meinem Fall bin ich dann noch zusätzlich hingegeangen und habe im CalenderProfile die Bearbeitung der Signatur deaktiviert (von bearbeitbar  in berechnet). Allerdings ist die Signatur trotzdem im Body entfernbar bzw. veränderbar.

Es gibt da wohl auch professionelle Tools, die das anders und unveränderbar können, die aber wat kosten.
Naja und bei uns reichte das halt so.

Ich hoffe,, ihr könnt es gebrauchen

@headshrinker,
>> wir das auch bei internen Mails gesetzt? <<

leider ja. Das liegt daran, daß ich mir die Mühe nicht machen wollte, in den unendlichen Weiten der Lotus Development - Klassen rumzusuchen, wann die Mail entgültig an den Mailer übergeben wird. Denn nur da kann man in die Mail etwas Text hinzufügen,
1. ohne daß ein Benutzer es mehr verändern kann und
2. man dann dort überprüfen kann, wohin die Mail geht.

Ich würde mir das aber gut überlegen, wie du das anstellen willst. Da eine solche Abfrage auch auf die Performance geht. Ausserdem musst du dir überlegen, was du machen willst, wenn z. B. die mail im SendTo 4 interne und 1 externen Empfänger hat. Die Abfrage darfst du dann auch auf CopyTo und BCCTo ausdehenen.
Bei 2000 Notesusern ist das wohl gut zu überlegen!!



fsinani
« Letzte Änderung: 16.02.07 - 07:53:46 von fsinani »

Offline Jenson

  • Senior Mitglied
  • ****
  • Beiträge: 291
  • Geschlecht: Männlich
  • Geht nicht gibts nicht!
    • is Industrial Services AG
Re: Kalenderprofil per script ändern und refreshen
« Antwort #15 am: 16.02.07 - 09:35:21 »
Moin,

der Trend geht eindeutig zur "zweit-USV"  ;)

Zitat
In meinem Fall bin ich dann noch zusätzlich hingegeangen und habe im CalenderProfile die Bearbeitung der Signatur deaktiviert (von bearbeitbar  in berechnet). Allerdings ist die Signatur trotzdem im Body entfernbar bzw. veränderbar.

Hast Du dazu einen Wert im CalendarProfile verändert, so dass die User die Signatur nicht mehr ändern können, oder hast Du im Design der Datenbank etwas verändern müssen damit dass zuverlässig funktioniert?

Grüsse

Jenson

Offline fsinani

  • Senior Mitglied
  • ****
  • Beiträge: 264
  • Ich liebe dieses Forum!
Re: Kalenderprofil per script ändern und refreshen
« Antwort #16 am: 16.02.07 - 09:47:45 »
Hallo Jenson,

ja zweit-usv ist schön!

Also im CalendarProfile habe ich das Feld Signature_1, jedenfalls das Feld, wo die Signatur im CalendarProfile steht, von bearbeitbar auf berechnet umgestellt.
Das gleiche habe ich auf diesem Registerblatt mit allen Feldern gemacht.

Dann kann der User zumindest im Profil die Signatur nicht mehr ändern. Der Vorteil ist, daß das auch bei einer lokalen replik der Fall ist (z.B. für Ad´s)


fsinani

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz