PowerShell: Settare un campo url/picture da event handler
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.
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.
PowerShell
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;
}