Page d'accueil : accès aux objets manipulés

Publié le par samuel

Premier article de l'année 2009 et vous souhaite par la même occassion tous mes voeux pour cette nouvelle année.

Voici une "suite" au premier article (page accueil MEGA) ou une deuxième expérience avec la page d'accueil MEGA.
Nous allons voir ici comment personnaliser une peu plus cette page et la rendre plus "utile".

En réalité nous avons déjà vu comment accèder à des données du référentiel (le nom du compte utilisateur MEGA connecté) dans le précédent article. Nous allons présenter ici une manière de requêter les objets manipulés par cet utilisateur connecté afin de lui fournir d'un seul coup d'oeil l'ensemble de ses dernières manipulations.

L'intérêt de cela ? Pouvoir lui permettre d'accèder directement au contenu qu'il manipule fréquement, car nous allons pouvoir rendre "cliquable" ou accessible les objets affichés !

Première étape : la requête et ses limites


Voici la requête et le code associé proposé :

[CODE = VBS]

'on reccupère l'id de l'utilisateur connecté en ce moment
user_id = external.megaroot.currentenvironment.getcurrentuserid
'on reccupere le nom de l'utilisateur connecté grâce à l'id reccupéré
util = external.megaroot.getobjectfromid(user_id).getprop("nom")
'on va poser une limite de temps pour la requête à savoir la date du jour moins 7 jours
debut = Cstr(left((now - 7),10))
'et enfin on ecrit la requête
req1 = "Select [Application] Where [Nom du Créateur] ='" & util & "' and [Date de création] >=" & "'" & debut & "'"


[CODE]

Voici donc avec ce code, nous reccupérons toutes les applications dont le créateur est actuellement connecté à MEGA sur la base courante (celle sur laquelle il est connecté, bien entendu). Et on reccupère toutes les applications dont la date de création est supérieur ou égale à la date du jour moins 7 soit toutes les applications créés depuis une semaine.

Il va falloir maintenant executer et traiter cette requéte puis afficher et formater les résultats.

Deuxième étape : l'execution de la requête et formatage des résultats


Il faut interroger MEGA et executer la requête puis exploiter les résultats obtenus. Voici le code associé à cette action :

[CODE = VBS]

Dim oMegaObject1
Dim cMegaObject1

SET cMegaObject1 = external.MegaRoot.GetSelection(req1)

IF cMegaObject1.count>0 THEN

    FOR EACH oMegaObject1 IN cMegaObject1 
          
          document.write "<tr><td>"
          document.write "<Span style=" & """" _
& "cursor:hand" & """" & " language=" & """" & "vbscript" & """" & _
"onclick=" & """" & "ObjectPropertiesBoxOpen '" &  _
LCase(oMegaObject1.GetProp("_hexaIdAbs")) & "'" & """" & _
"><A title=" & """"  & oMegaObject1.GetProp("commentaire","display") & _
 """" & "> " & oMegaObject1.GetProp("nom court") & _
 "</A></span></td><td align='center'>" & _
left(oMegaObject1.GetProp("date de création"),10) &  "</td>"
     
           document.write "<td align='center'><a href='reglmt1.htm?idabs=" & _
 LCase(oMegaObject1.GetProp("_hexaIdAbs")) & "#" & _
 "' target='blank'><img src='contrat_service.ico' border=0 alt='Ouvrir le règlement associé'></img></a></td></tr>"
 
   
 NEXT 

END IF
   
SET
 cMegaObject1 = Nothing


[CODE]

Alors détaillons maintenant ce code un peu "lourd".

Nous déclarons dans un premier temps deux variables, l'une pour accueillir une collection (le résultat de notre requête) et l'autre pour gérer chaque objet de cette collection.

Ensuite nous reccupérons le resultat de la requête dans la collection "cMegaObject1" via le GetSelection.
Puis si il existe au moins un objet dans la collection nous parcourons celle-ci objet par objet.
Nous affichons tout cela dans un tableau afin d'avoir un affichage plus structuré donc vous trouverez les balises <tr> et <td> correspondantes.

Puis voici la structure des lignes suivantes : <TR><TD><SPAN><A></A></SPAN></TD><TD></TD>
Et d'autre part <TD><A><IMG></IMG></A></TD></TR>

Dans la première colonne de chaque ligne nous allons afficher le "Nom court" de l'objet dans le lien. Le title du lien est rempli avec le commentaire de l'objet. Et ce qui est réalisé lorsque l'on clique sur le lien est défini dans la balise d'ouverture du SPAN que nous allons détailler :

"<Span style=" & """" _
& "cursor:hand" & """" & " language=" & """" & "vbscript" & """" & _
"onclick=" & """" & "ObjectPropertiesBoxOpen '" &  _
LCase(oMegaObject1.GetProp("_hexaIdAbs")) & "'" & """" & _
">


Nous positionnons dans le style du span la définition du cursor:hand.
Puis nous définissons le langage du script que nous allons utiliser, ici vbscript : language = "vbscript"
Enfin on défini la méthode onclick (c'est àdire ce qui se passera lorsque l'on clique sur le lien) : nous allons ouvrir le menu contextuel des propriétés de l'objet (ObjectPropertiesBoxOpen) en lui passant l'HexaIdAbs de l'objet ( oMegaObject1.GetProp("_hexaIdAbs"))
Autrement dit on offre la possibilité à l'utilisateur de pouvoir accèder au même menu que lorsqu'il fait un clique droit sur un objet dans MEGA.

Dans la deuxième colonne on affiche la date de création :oMegaObject1.GetProp("date de création")
Et enfin dans la troisième colonne au travers d'une image on donne un accès direct aux règlements de modélisations de l'objet ! Pour cela on pointe sur une autre page qui affichera le règlement concerné en lui passant en paramètre l'hexaidabs de l'objet concerné.

Voilà une manière qui peut être bien plus détaillée, améliorée pour faciliter la vie des utilisateurs dans MEGA.
Nous avons vu l'exemple sur une seule requête, plusieurs auraient pu être mises en oeuvre.
De même des conditions fonction de l'utilisateur peuvent être positionnées afin de réaliser tel ou tel affichage.

Voilà je vous laisse explorer les différentes pistes qui s'offrent à vous maintenant !

Publié dans MEGA

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
S
En effet, et c'est un oubli, je vais définir immédiatement cette méthode que j'avais oubliée. Merci de votre remarque !
Répondre
S
Bon article!<br /> <br /> Scripts fonctionnels mais il faudrait définir la fonction "ObjectPropertiesBoxOpen", car le menu contextuel du coup ne s'affiche pas.
Répondre