Mercator offre depuis longtemps diverses fonctionnalités pour l'affichage de fichiers dans différents écrans et dans MercatorPenguin. Ces fichiers peuvent être stockés sur disque / un volume partagé (FileView) ou dans la base de données SQL (SqlFileView). Mercator 12.0 ou ultérieur contient à présent le composant OneDriveFileView. Son fonctionnement est identique à celui du SqlFileView, mais les fichiers sont stockés sur un drive OneDrive. Les interactions entre Mercator et ce drive s'effectuent via l'api Graph.
Pour activer cette fonctionnalité, il faut d'abord configurer l'Api Graph d'Office 365 tel que décrit sur cette page. Des droits spécifiques à la gestion des fichiers doivent toutefois être accordés :
- Sites.Read.All
- Files.ReadWrite
- Files.ReadWrite.All
Comme les crédentiales de l'Api Graph peuvent être stockées de différentes manières, il est nécessaire de mettre en place un code sur mesure qui popule MercatorOutlook.OutlookStatic.Office365GraphParams. Si l'exemple du bas de cette page a été mis en place, alors ce code peut être placé dans le customizer Main.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using System.Linq;
// <CompileWithRoslyn />
namespace Main
{
public class Customizer : MercatorUi.ICustomizers.IExec, MercatorUi.ICustomizers.IPenginServerInstanceInitialized
{
public void Main(MercatorUi.ICustomizers.ExecAction action)
{
if (action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
MercatorOutlook.OutlookStatic.Office365GraphParams = SendMailOffice365GraphParameters;
}
public void PenginServerInstanceInitialized()
{
MercatorOutlook.OutlookStatic.Office365GraphParams = SendMailOffice365GraphParameters;
}
private IneoSmtp.Smtp.SendMailOffice365GraphParameters SendMailOffice365GraphParameters
{
get //!\ ne pas mémoriser dans une statique car le clientSecret va changer
{
var l = Api.Zselect<(string id, string secret)>(Globals.RepData, "select id,secret from FREE_TABLE_SECRETS where id like 'Off365%'");
if (l == null)
throw new ApplicationException("SendMailOffice365GraphParameters SQL error : " + Api.LastError);
foreach (string key in new string[4] { "Off365ClId", "Off365ClSe", "Off365Tena", "Off365UId" })
if (!l.Any(p => p.id == key))
throw new ApplicationException($"SendMailOffice365GraphParameters key \"{key}\" is missing !");
return new IneoSmtp.Smtp.SendMailOffice365GraphParameters(
l.First(p => p.id == "Off365ClId").secret,
l.First(p => p.id == "Off365ClSe").secret,
l.First(p => p.id == "Off365Tena").secret,
l.First(p => p.id == "Off365UId").secret);
}
}
}
}
En populant MercatorOutlook.OutlookStatic.Office365GraphParams, on active aussi l'envoi de mails vers le Nouveau Outlook (projet Monarch). Si cela n'est pas souhaité, il faut mettre à false la propriété NotUsedForMails de SendMailOffice365GraphParameters.
Ensuite, il faut se rendre dans le menu "Outils / Paramètres / OneDrive" de Mercator. Cela permet de saisir ces paramètres :
- Site : site au sens OneDrive du terme. Le cas échéant créez dans le portail d'administration un nouveau site afin que les fichiers de Mercator soient séparés. Ce site devra contenir au moins un drive.
- Drive : le drive OneDrive à utiliser.
- Répertoire : un nom libre qui sera le répertoire root pour les fichiers de ce Mercator. Si plusieurs Mercator utilisent ce même site et ce même drive, il faut veiller à ce que ce répertoire soit différent pour chacun.
Si ces paramètres sont modifiés par la suite, les fichiers déjà chargés par Mercator ne seront plus visibles. Ces paramètres doivent donc être déterminés une seule fois et ne plus être modifiés.
Utilisation dans Mercator desktop
En mode paramétrage, il suffit d'ajouter un Object de type OneDriveFileView. Le comportement est semblable à celui du SqlFileView avec ces limitations :
- Il n'y a pas d'audit sur un OneDriveFileView.
- La notion d'alias n'existe pas.
- Le fonctionnement est moins rapide que le SqlFileView car les données sont distantes et l'Api Graph ne permet aucune modification en lot (pas de bulk de fichiers par exemple, tous les fichiers ajoutés / modifiés sont uploadés individuellement).
Utilisation dans MercatorPenguin
MercatorPenguin dispose aussi d'un EditOneDriveFileView qui fonctionne exactement comme l'EditFileView.
<m:EditOneDriveFileView Margin="25,10,25,10" />