L'esempio seguente per
SharePoint 2007 (WSS3 - MOSS) sfrutta gli
event handler scritti in
PowerShell 1.1.
Questo event handler in pratica prende la url del primo allegato, dell'item corrente, e la imposta in un campo di tipo url/picture (SPFieldUrl) in modo da poterlo vedere quando si va in visualizzazione dell'item. Si parte del presupposto che l'allegato sarà sempre una immagine.
function Update()
{
$this.DisableEventFiring();
#setta il campo come non visiile in edit, one shot
#$fld = $list.Fields.GetFieldByInternalName("Foto_x0020_Evento")
#$fld.ShowInEditForm = $false
#$fld.ShowInNewForm = $false
#$fld.Update()
#$fld = $list.Fields["Foto_x0020_Evento"];
$url = "";
if($item.Attachments.Count -gt 0 ){
$attachments = $list.RootFolder.SubFolders["Attachments"];
$folder = $attachments.SubFolders[$item.ID.ToString()];
$file = $folder.Files[0];
$url = $site.url + $folder.ServerRelativeUrl + "/" + $file.Name;
$u = New-Object microsoft.sharepoint.spfieldurlvalue($url);
$u.Description = "Foto";
$item["Foto_x0020_Evento"] = [microsoft.sharepoint.SPFieldUrlValue]$u;
$item["Con_x0020_Foto"] = $true;
}else {
$item["Foto_x0020_Evento"] = "";
$item["Con_x0020_Foto"] = $false;
}
$item.SystemUpdate($false);
$this.EnableEventFiring();
}
function ItemUpdated()
{
Update;
}
function ItemAdded()
{
Update;
}