Et TRÆLS problem ved mapper der er private on first use er at man ikke kan ændre designet centralt.
Defor troede jeg at nedenstående kode ville slette den gamle private mappe, og derefter oprette en ny mmmeen det gør den tilsyneladende ikke, den sletter men opretter ikke en ny (måske pga en tidsforsinkelse mellem sletning og oprettelse ????)
%REM Sørger for at den private mappe "Soegeres" oprettes første gang databasen benyttes. Virker vha. et profildokument %END REM Sub Postopen(Source As Notesuidatabase) Dim view As NotesView Dim workspace As New NotesUIWorkspace Dim session As New NotesSession Dim db As NotesDatabase Dim dc As NotesDocumentCollection Dim doc As NotesDocument Dim pro As Variant Dim user As String Set db = session.CurrentDatabase user = session.UserName Set doc=db.GetProfileDocument("vr profil", user) mappe = doc.mappe
'Dette afsnit har til formål at slette den private mappe, så der kan laves en ny med de nye egenskaber. 'Det må kun afvikles hvis der forefindes en privat mape. If (mappe(0) = "Ja") Then 'Hvis mappe findes, skal den slettes så der kan laves en ny privat mappe, med nye egenskaber. Set view = db.GetView( "Soegeres" ) Call view.Remove mappe(0) = "" doc.mappe = mappe Call doc.Save(True,False) Msgbox " Slettet" End If
If (mappe(0) <> "JaJa") Then 'Mappe er Ja, hvis mappe er privat/brugt før. mappe(0) = "JaJa" doc.mappe = mappe Call doc.Save(True,False) Call Source.OpenView("Soegeres") Call workspace.OpenDatabase("","","værktøj") Msgbox " Gendannet" End If End Sub
Mappe(0) er på forhånd = "Ja" hvis bruger har den som privat mappe.
Det jeg søger er en metode til først at slette den 'gamle' private mappe, og derefter oprette den igen - ud fra skabelonen.
Indtil videre har jeg oprettet EN TIL private on first use folder, som har det nye design - så sletter jeg den gamle og opretter en ny ud fra den nye. --- det virker bare lidt akavet.
Hvis du sletter folderen, forsvinder jo også alt hvad brugeren har lagt i den. Hvis det ingen betydning har, hvorfor sletter/opretter du så ikke folderen hver gang basen lukkes/åbnes - så er designet altid opdateret.
Om det der ligger i mappen bliver slettet, har ingen betydning.
Man kunne godt åbne/slette ved åbning/lukning, men da det kun skal ske nå designeren har ændret på skabelonen, er det spild af pc tid at gøre det hver gang(det sker ikke ret ofte). Er det ikke muligt i samme arbejdsgang at slette den private, og så "oprette den igen" ??
"Er det evt. muligt at opdatere design i private Private on first use mapper??" Nej, for husk på en Private folder er en kopi af et design og med sit eget UNID. Når du opdaterer "masteren" opdaterer du ikke hver kopi. For at det skulle kunne lade sig gøre skulle designet "replikeres" ud til hver folder - det bliver det ikke, for Notes holder ikke rede på hvor designet kommer fra. Hver "Private" folder er hel sin egen når først den er oprettet.
"Er det ikke muligt i samme arbejdsgang at slette den private, og så "oprette den igen" ??" Jo, det skulle kunne lade sig gøre med "PutInFolder method". Første gang du lægger noget i en folder, der ikke eksisterer oprettes den. Det sparer dig også pc tid ;-)
Tak for et fyldestgørende svar. Når jeg bruger "PutInFolder", og mappen ikke er "Private", så får jeg meddelsen: "Cant move to folder on first use" Hvordan forklare jeg iøvrigt at det skal være den private mappe, og ikke den distribuerede skabelon, de har jo samme navn ??
1) PutInFolder kan ikke lægge første dokument i "Delte, private efter første brug" foldere. 2) Det holder Notes rede på. Hvis du lægger noget i en folder og kun skabelonen findes oprettes en ny kopi til brug for brugeren. Bemærk, du kan altså IKKE lægge noget i folderen fra central hold - det er kun den enkelte bruger ser kan lægge i sin egen folder - og kun sin egen!
2) Men hvordan kan jeg i script vide om der findes en privat mappe?? - det duer jo ikke at slette skabelonen. Og PutInfoldder duer jo ikke til private mapper, når de ikke er brugt 1. gang endnu.
F.eks. en af følgende.... 1) Du sikrer dig bare at funktionen som ligger noget i folderen kun kan kaldes inde fra folderen. Dermed er den oprettet. 2) Du lader din folder være default view i basen 3) Før du bruger PutInFolder kalder du @Command([OpenView])
Ja..Joo, men så 'forstyrres' bruger(dog ikke ved 2., men hvad så hvis der er flere private mapper?). P.T. kan jeg læse i view.readers(0). Vha. IsEmpty kan jeg se om der er en person i denne variabel - hvilket der lader til at være når mappen er brugt første gang. Dette vil jeg dog gerne være sikker på!!
PS. kan man tilsvarende 'læse' i en variabel om mapper er stored lokalt??
Jeg har rodet lidt med samme problem og har lavet en lille funktion.
Funktionen kan så kaldes fra databasecriptet PostOpen.
Hvis funktionen returnerer TRUE er der et behov for at åbne "Private on first Use mappen" for at den bliver privat. Hvis man ikke gør dette kan LotusScript ikke benytte den.
IF OpdaterPriveteView("MinMappe") = TRUE THEN source.OpenView("MinMappe") END ID
På den måde har brugeren altid en opdateret mappe. Der er dog et problem med OpenView som har det med at åbne i et nyt vindue og uden navigator. MEn det er jo en anden sag.
Function OpdaterPrivateView(viewname As String) As Integer
Dim viewdoc As NotesDocument Dim templateDoc As NotesDocument Dim db As NotesDatabase Dim session As New NotesSession Dim itemV As NotesItem Dim itemT As NotesItem Dim datoopdateret As Variant Dim Streng As String
Set db = session.CurrentDatabase Set view = db.GetView(viewname) SkalOpdaters=False
If Not (view Is Nothing) Then Set viewdoc = db.GetDocumentByUnid(view.UniversalID) streng = viewdoc.GetItemValue("$Flags")(0) If Instr(streng,"V")=0 Then 'Ikke privat endnu Call session.SetEnvironmentVar("MappeID",viewdoc.UniversalID)
SkalOpdateres=True Else ' den er allerede privat Set templatedoc = db.GetDocumentByUnid_ (session.getEnvironmentString("MappeID")) Set itemV = viewdoc.GetFirstItem("$UpdatedBy") Set itemT = templatedoc.GetFirstItem("$UpdatedBy") If itemV.lastmodified < itemT.lastmodified Then ' Template er opdateret siden privatisering Call view.Remove() SkalOpdaters=True End If End If End If UpdatePrivateView=SkalOpdateres End Function
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.