Mercator biedt al lange tijd verschillende functionaliteiten voor het weergeven van bestanden in diverse schermen en in MercatorPenguin. Deze bestanden kunnen worden opgeslagen op schijf / een gedeeld volume (FileView) of in de SQL-database (SqlFileView). Mercator 12.0 of later bevat nu ook de component OneDriveFileView. Deze werkt identiek aan de SqlFileView, maar de bestanden worden opgeslagen op een OneDrive-schijf. De interacties tussen Mercator en deze schijf verlopen via de Graph API.
Om deze functionaliteit te activeren, moet eerst de Graph API van Office 365 geconfigureerd worden zoals beschreven op deze pagina. Specifieke rechten voor bestandsbeheer moeten echter worden toegekend:
- Sites.Read.All
- Files.ReadWrite
- Files.ReadWrite.All
Aangezien de inloggegevens voor de Graph API op verschillende manieren kunnen worden opgeslagen, is het nodig om aangepaste code te voorzien die MercatorOutlook.OutlookStatic.Office365GraphParams vult. Als het voorbeeld onderaan deze pagina is geïmplementeerd, dan kan deze code worden geplaatst in de Main customizer.
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 //!\ niet opslaan in een statische variabele want de clientSecret zal wijzigen
{
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);
}
}
}
}
Door MercatorOutlook.OutlookStatic.Office365GraphParams in te vullen, wordt ook het verzenden van e-mails naar de Nieuwe Outlook (project Monarch). Als dit niet gewenst is, moet de eigenschap NotUsedForMails van SendMailOffice365GraphParameters op false worden gezet.
Vervolgens moet je naar het menu "Tools / Setup / OneDrive" in Mercator gaan. Daar kunnen de volgende parameters worden ingevoerd:
- Site : site in de betekenis van OneDrive. Indien nodig, maak in het beheerdersportaal een nieuwe site aan zodat de bestanden van Mercator gescheiden blijven. Deze site moet minstens één drive bevatten.
- Drive : de te gebruiken OneDrive-schijf.
- Map : een vrije naam die als rootmap zal dienen voor de bestanden van deze Mercator. Indien meerdere Mercator-installaties dezelfde site en drive gebruiken, moet deze map verschillend zijn voor elk van hen.
Als deze parameters achteraf gewijzigd worden, zullen eerder opgeladen bestanden niet meer zichtbaar zijn. Deze instellingen moeten dus slechts één keer vastgelegd worden en daarna niet meer worden gewijzigd.
Gebruik in Mercator desktop
In de parametrering volstaat het om een Object van het type OneDriveFileView toe te voegen. Het gedrag is vergelijkbaar met dat van de SqlFileView, met deze beperkingen:
- Er is geen audit op een OneDriveFileView.
- Het concept van aliassen bestaat niet.
- De werking is trager dan SqlFileView omdat de gegevens op afstand staan en de Graph API geen batchbewerkingen toelaat (geen bulkbestanden, bijvoorbeeld alle toegevoegde/gewijzigde bestanden worden afzonderlijk geüpload).
Gebruik in MercatorPenguin
MercatorPenguin beschikt ook over een EditOneDriveFileView die exact werkt zoals de EditFileView.
<m:EditOneDriveFileView Margin="25,10,25,10" />