23 avril 2015

SHAREPOINT 2013 : Vérifier page en mode édition


Aujourd'hui un petit post sur la détection en JavaScript du mode édition sur une page SharePoint.
Sur une page de publication, il suffit d'interroger la valeur d'une variable existante:



Il est de même possible d'utiliser les modifications suivantes dans la page maitre sur un site de publication:



Il suffira à présent d'utiliser la variable "IsEditMode" pour tester que la page est bien en mode édition.
Mais ce serait trop simple si tous les cas étaient traités avec cette simple manipulation. Sur les pages Wiki, il faudra ajouter le script suivant pour détecter le mode édition:



Pour les pages de WebPart, il faudra utiliser le script suivant:

 
 
Il sera tout de même nécessaire de tester sur les 2 derniers scripts que les valeurs ne sont pas nulles avant d'accéder à la propriété value: 
(typeof document.forms[MSOWebPartPageFormName]._wikiPageMode != 'undefined'
(typeof document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode!= 'undefined'

17 avril 2015

SHAREPOINT 2013 : Mapper propriété UPS sur attribut AD

Le service de profil utilisateur de SharePoint 2013 met à disposition des propriétés utilisateurs pouvant être utilisées dans vos applications. Dans ce contexte, il peut être intéressant de mapper ces propriétés sur des attributs de l'Active Directory.
 
Pour se faire, il peut être intéressant d'utiliser un script PowerShell (l'avantage est qu'il permet un déploiement uniforme entre les divers environnements).

Le script suivant permet de parcourir chacune de vos connexions AD définies dans l'UPS et d'ajouter le mappage de la propriété AD "mail" sur la propriété utilisateur "WorkEmail".
# Récupération du UPS associé au site sharepointsite
$site = New-Object Microsoft.SharePoint.SPSite "http://Sharepointsite"
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($site)
$configManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager $context
# Parcours de toutes les connexions AD définies dans l'UPS
foreach ($ADConnection in $configManager.ConnectionManager)
{
     Write-Host $ADConnection.DisplayName -foregroundcolor blue
     # Ajout du mappage de la propriété "WorkEmail" sur l'attribut AD nommé "mail"
     Write-Host $ADConnection.DisplayName "- Workemail" -foregroundcolor green
     $ADConnection.PropertyMapping.AddNewMapping([Microsoft.Office.Server.UserProfiles.ProfileType]::User,"WorkEmail","mail")
     ...
}
 

12 avril 2015

SHAREPOINT 2013 : Liste des collections de sites

Aujourd'hui, une petite commande PowerShell utile pour tout administrateur SharePoint.
En effet, certaines interfaces de l'administration centrale de SharePoint ne sont pas conçues pour synthétiser l'information, il est donc nécessaire de réaliser des extractions ou des audits via les applets de commandes PowerShell pour SharePoint.

La commande ci-dessous permet de d'obtenir la liste des collections de sites présentes sur une ferme SharePoint ou sur une application web spécifique.
 
Get-SPWebApplication -Limit All | Get-SPSite | Format-Table -Property URL,ContentDatabase, Owner, SecondaryOwner
 
Pour expliquer le fonctionnement:
  • Get-SPWebApplication récupère une collection d'applications web. Le paramètre -Limit All permet de ramener toutes les applications web de la ferme SP. Il serait possible de spécifier une application web particulière en précisant l'url,
  • Get-SPSite : Récupère la liste des collections de sites associées à la (ou les) application(s) web SharePoint.
  • Format-Table : Affiche les données en renvoyant les propriétés sélectionnées.


Tout cela en une seule ligne, merci Powershell! Réaliser la même chose en code managé aurait pris au moins une vingtaine de lignes.
L'utilisation de PowerShell pour administrer et auditer SharePoint doit être un reflexe.
 

23 mars 2015

WAC : Vérifier la version de votre serveur Offce Web Apps

Sur un serveur WAC (Office Web Apps 2013), il n'existe pas d'interface déportée, comme l'administration centrale de SharePoint, permettant de trouver votre niveau de version.
 
Si vous allez dans les programmes installés sur le serveur, vous n'obtiendrez que la version classique (RTM, SP1,...) mais pas plus.
Comme dans SharePoint, il n'est pas possible de déterminer la CU ou le patch de sécurité installé via cet écran.
 
Pour se faire, il suffit de se connecter de vous connecter sur votre serveur Office Web Apps et de lancer la commande PowerShell suivante:
get-content C:\ProgramData\Microsoft\OfficeWebApps\Data\local\OfficeVersion.inc
Le résultat sera le suivant:
 
Par exemple ici, il s'agit de la build 15.0.4701.1000 correspondant au patch de sécurité "Mars 2015".

17 mars 2015

SHAREPOINT 2013 : Envoi de mail sur liste de tâche

Aujourd'hui, une petite astuce lors de la conception de modèle de listes basés sur le modèle "Tâches" de SharePoint 2013.
 
Le fonctionnement natif est l'envoi automatique d'un mail lorsqu'une tâche est affectée à l'utilisateur. Cette option est visible dans les paramètres avancés de la liste de tâches, puis "Email notification option":
 
 
 
Mais comment intégrer automatiquement cette option dans un modèle de liste?
Pour se faire, il faut rajouter l'attribut "EmailAssignTo" dans la définition de votre modèle de liste (sur le nœud "List"):
 
<List xmlns:ows="Microsoft SharePoint" Title="MyTask" Name="MyTask" ... EmailAssignTo="TRUE" ...>
 
 
Cette propriété n'est actuellement pas documentée sur le MSDN : https://msdn.microsoft.com/en-us/library/ms415091.aspx . Malgré tout, cela fonctionne correctement.