Page 1 sur 2

Créer dossier personnel via lotusscript

MessagePublié: 03 Oct 2011 à 08:53
par mleclercq
Bonjour,

Je voudrais savoir s'il est possible de créer un dossier de type "Partagé, devenant privé à la 1e ouverture" en lotusscript ???

En effet, je parcours une vue et en fonction de l'utilisateur référencé dans la fiche et d'autres critères, je mets ce document dans son propre dossier.
Donc si le dossier n'existe pas, il faut le créer.

Merci pour vos réponses.
Bien cordialement,
Michael

MessagePublié: 03 Oct 2011 à 09:08
par Michael DELIQUE
hello

il n'y a pas de méthode en Ls pour faire celà, pour créer une vue oui (mais toujours partagé). c'est peut être faisable via une API mais je ne la connais pas.

par contre ce qui peut être jouable c'est de créé une vue partagé puis de changé son type, c'est une simple valeur dans un champ systeme de la vue cette fonction un peu vieille et que j'ai pas utilisé depuis une éternité le permet. par contre en fonction des version les valeurs peuvent changer

Code : Tout sélectionner
Public Function ViewConvert (wDB As NotesDatabase, wPseudoVue As String, wnbConverTO As Integer) As Integer

   Dim DBCible As NotesDatabase
   Dim vwView As NotesView
   Dim ConverTO As String
   Dim Doc As NotesDocument
   
   On Error Goto CatchError   
   ViewConvert = False
   
   rem   détect si un pseudo est passé en parametre
   If Trim(wPseudoVue) = "" Then
      Error 9999,"wPseudoVue vide"
      Exit Function
   End If
   
   Select Case wnbConverTO
   Case 1
      ConverTO = "PY"
      rem   (Partagée)
   Case 2
      ConverTO = "PYa"
      rem   (Partagé, contient documents figurant dans aucun dossier)
   Case 3
      ConverTO = "PYl"
      rem   (Partagé, contient documents supprimés)
   Case 4
      ConverTO = "pPY"
      rem   (Partagé, devenant privé à la 1er ouverture)
   Case 5
      ConverTO = "poPY"
      rem   (Partagé, bureau privé à la 1er ouverture)
   Case 6
      ConverTO = "PYV"
      rem   (Privé)
   Case Else
      Error 9999,"Paramètre de conversion érroné"
      Exit Function
   End Select
   
   rem   initialise la base ou est la vue
   If Not wDB Is Nothing Then
      Set DBCible = wDB
   Else
      If Session Is Nothing Then
         Set Session = New NotesSession
      End If
      Set DBCible = Session.CUrrentdatabase
   End If
   
   Set vwView = DBCible.GetView(wPseudoVue)
   If vwView Is Nothing Then
      Set DBCible = Nothing
      Error 9999, wPseudoVue+" : Introuvable"
      Exit Function
   End If
   
   Set Doc = DB.GetDOcumentByUNID(vwView.universalID)
   If Doc Is Nothing Then
      Set vwView = Nothing
      Set DBCible = Nothing
      Error 9999, wPseudoVue+" : Introuvable"
      Exit Function
   End If
   
   Call Doc.ReplaceItemValue("$Flags",ConverTO)
   
   Call Doc.save(True,False)
   
   Set vwView = Nothing
   Set DBCible = Nothing
   Set Doc = Nothing
   
   ViewConvert = True
   
   %REM
      
Créé en V6
Vue normale :
"Y" visible web+notes+mobile
"PY" idem Y + coché "prohibit design refresh" sans nom héritage
"PY" idem Y + coché "prohibit design refresh" avec nom héritage

"dY" coché "default design for new folders and views"
"YP" coché "default when datyabse is first opened"

Vue calendrier :
"Yc" visible web+notes+mobile
"YcP" idem Y + coché "prohibit design refresh" sans nom héritage
"YcP" idem Y + coché "prohibit design refresh" avec nom héritage
   %END REM
   
   Exit Function
CatchError:
   Msgbox "("+str(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   ViewConvert = False
   Exit Function
End Function

MessagePublié: 03 Oct 2011 à 09:26
par mleclercq
Bonjour,
Merci pour ta réponse.
Comment fait-on pour affecter le dossier à un utilisateur donné ?

En effet, si j'ai 10 users, je voudrais créer les 10 dossiers en les affectant à chaque user.

Merci

Michael

MessagePublié: 03 Oct 2011 à 09:27
par Michael DELIQUE
(le partagé devenant privé a lapremiere ouverture) s'en occuppe pour toi. la partie public ne contient que la structure qui sera dupliqué pour lapartie privé visible uniquement par l'utilisateur.

MessagePublié: 03 Oct 2011 à 13:34
par mleclercq
Merci pour ces infos.

Mon problème est qu'il faut que c'est dossier existe. En effet, j'ai un agent qui s'exécute toutes les nuits pour alimenter ce dossier. Il met des fiches en fonction du propriétaire de la fiche et d'autres critères. Si le dossier n'existe pas, il faut que l'agent puisse le créer pour un utilisateur précis.

Est-ce faisable ?

Merci.
Michael

MessagePublié: 03 Oct 2011 à 13:56
par Michael DELIQUE
je pense pas !
ou alors il faut voir directement du coté des dossier privés et comment est géré l'accès (certainement un champ auteur)

MessagePublié: 03 Oct 2011 à 14:56
par mleclercq
Ok, je m'en doutais un peu.
Le souci est que je ne veux pas utiliser la notion de champ "authors" car la base est assez volumineuse et le temps de mise à jour des vues risquent d'être long.

Je vais voir pour une autre solution. Merci pour ton aide.

MessagePublié: 03 Oct 2011 à 15:04
par Michael DELIQUE
je parlais de champs auteur pour les dossiers pas pour les documents !

mais d'un point de vue sécurité limité l'accès des documents par les dossier/vues est une utopie

MessagePublié: 03 Oct 2011 à 15:10
par Raziel
Et pourquoi pas un masque contenant une vue intégrée qui affiche les doc en fonction du propriétaire. ensuite tu limite l'affichage à l'utlisateur courant

MessagePublié: 03 Oct 2011 à 16:51
par DeadAngel
Ou la création d'un bouton ouvrant un dossier en fonction de l'utilisateur.
Le dossier est publique, mais a une convention de nommage définie.

Le bouton se contentant d'ouvrir le document en question ?
Il suffit alors de forcer ton agent à créer le dossier si celui-ci n'existe pas.

MessagePublié: 03 Oct 2011 à 18:15
par Michael DELIQUE
le souci, c'est que n'importe quelle petit malin aurra acces aux vues et dossier

MessagePublié: 04 Oct 2011 à 08:18
par Raziel
Pas si on les caches

MessagePublié: 04 Oct 2011 à 08:24
par Michael DELIQUE
même si on les caches !

maintenir enfoncé les touches

[Ctrl] + [Shift]

menu : vue\ aller à...

et hop toutes les vues


il faut bien ce dire que les vues n'ont JAMAIS été prévu pour interdire l'accès aux documents (d'ou leur nom : view).

MessagePublié: 04 Oct 2011 à 08:26
par Raziel
Ok... mais là faut vraiment être un petit malin... ;-)

MessagePublié: 04 Oct 2011 à 08:28
par Raziel
La commande vue\ aller à... ne permet pas d'afficher les vues cachées (celle dont le nom a été placé entre parenthèses)