Hands-on SharePoint Spaces, VR solution at the Microsoft Ignite 2018

I must admit that I was quite skeptical when I heard about this new feature earlier this year. One of the main reasons of my skepticism was that I could not find the right use case from an end-user perspective. During the Microsoft Ignite, 3 booths were available to get our hands on this new solution, so why not testing this and trying to change my mind ? 

SharePoint Spaces tested by Mozzaik Team

It started with a quick introduction from Vidya who’s part of the Microsoft SharePoint Space product team. I discovered that there are already 7 webparts developed, and more to come. Microsoft teams already using this feature internally, yet I couldn’t find if it would be easy to programmatically convert or extend a webpart so they support the 3D glasses, but I guess it’ll be possible with PnP in due time.

 

Creating a new space is really easy, you just need to select the « New » menu in the ribbon as you would do for a new page or a list. Select from the spaces available, and you’ll have the page loading instantly. I’ve seen the organization chart demo, then the data visualization (mind blowing!!)

SharePoint Spaces Data Vizualisation

 

So what about the rendering ? Though it’s still at the early stage for this technology, I can really see the potential in an industrial environment, especially for the FLW (First Line Workers) when browsing the details of a piece and following a specific process which could be a « Process viewer WebPart ». And folks, that’s the key take away here : the WebParts.

 

SharePoint Spaces Tent with the WebPart panel opened

My skepticism relied on the absence of solid user scenarios that could justify the investment on this technology, but knowing that it relies on webPart, I can easily imagine specific webparts for supply chain processes, where you trigger the right process with the controller, and it points out the manufactured pieces and the associated steps to build the piece. Also, knowing that FLW and Product teams could share and use the same Site and interface could really benefits for the communication for the whole building process. 

From a technology standpoint, it relies on BabylonJS , GLTF format for 3D scenes and models, and the HP Windows  Mixed Reality for the headset and the controller. 

If you want to know more about SharePoint Spaces and the mixed reality, check the Microsoft article : https://www.microsoft.com/en-us/microsoft-365/blog/2018/05/21/sharepoint-innovations-transform-content-collaboration-with-mixed-reality-and-ai/

Ignite 2018 – Building a modern intranet with SharePoint and Office 365 with Mark Kashman

One of the most expected session for this Ignite in termes of Intranet anc Communication area with SharePoint was this one. As you know, we are pushing torwards Modern Communication Sites for a few months now, and since Mozzaik365 is now full modern it makes it even easier to deploy it. I’ve caught up few phrases and outlined them.
Best intranet is about getting the work done. Users come back to intranet because it’s usefull, not because it’s beautifull

Fair point, you’d rather spend time interviewing users to get their need than producing a beautiful but very complexed intranet.

Search is one of the biggest pain points.

Definitly one of the paint points out there, and so far Modern SharePoint need an additional effort to customize it.

We should not talk about workloads or services, but more about building scenarios. Many organizations want to lock this down, and guess what ? People will find a way.

Music to my ears at this point, we see that all the time, it’s easier to lock everything than proposing solutions to end-users, and it often ends with the use of WhatsApp, DropBox, and non-governed-it solutions. And the remediation to that is …
It’s all about Governance.

The flat world is crowded with SIte Collections, and THAT’S OK ! Hub Sites is now allowing the  creation of Family of sites. #hubsbeforesubs

 

#gomodern
To read more about this : https://aka.ms/planningSPHubsites

Ignite 2018 – Customizing Modern SharePoint avec Ed Hild, Architecte Microsoft MCT

Une session au MTC qui fait salle comble, pas d’annonces en particulier. La session est tenue par Ed Hild, Architecte au MTC de Washington.
Rappel de 2 templates de site SharePoint
  • Team Sites : Department, Team, Project, Extranet (partner, customer), comittee
  • Communication sites : portails, communities, etc …
Gouvernance : Utilisation d’un préfixe lors de la création d’un Team Sites qui pointe directement sur le departement de l’utilisateur. Gestion de la confidentialité avec le choix. Lors de la démonstration, Ed nous présente le site de gouvernance du MTC. Intégration d’une PowerApps dans la page, vraiment sympa avec un Canvas complet. 
A noter : une évolution du Hightlight content, avec la capacité de rajouter une requête de recherche directement dans les paramètres de la WebPart 
Branding / Theming
Rappel des principes de bases du Themes SP Modern. Présentation de Primary Color et Accent Color. Un écran présente la navigation latérale avec un fond coloré en bleu, le rendu est vraiment sympa !
Site Design / Site script
Ed nous rappelle qu’il a commencé les templates depuis … un moment  Comment cela a évolué, avec les XML, les sites definitions, etc …
Démonstration du site design sur un nouveau site, effet démo, le panel latéral à droite ne s’affiche pas. En temps normal il aurait afficher la liste des éléments provisionnés (columns, permissions, etc…). Concernant leur utilisation au MTC, ils utilisent de l’Azure Queue couplé avec du PowerShell dans une Azure Function qui execute des scripts PNP (Site Scripts)
Hub Sites
Ne sera pas dans SharePoint 2019 Server. « Dynamic ever changing ». La meilleure option pour gérer le changement de périmètre et d’organisation des sites dans un ecosystem SharePoint  
Références disponible ici (powershell, github, etc …) : http://aka.ms/modernsp

Ignite 2018 – Office 365 Business Apps (SharePoint, PowerApps, Flow, Forms)

Une session que j’attendais avec impatience car elle réunit plusieurs Workload Office365 ! SharePoint, PowerApps, Flow, Forms, Power BI. On appelle cela, les Business Apps. La session commence par une mise en avant de Lego qui a su évoluer dans ses applications et Excel pour aller vers PowerApps. 
Lists (SharePoint)
Nouveau formulaire de création de listes, avec la possibilité d’utiliser depuis une liste déjà existante ou un modèle. On peut aussi créer une liste depuis un fichier Excel, avec la sélection de table. Présentation d’une nouvelle colonne de type « lieux » qui permet d’ouvrir un panel une fois cliqué dessus. Lorsqu’on ajoute une ville, cela va automatiquement peupler d’autres colonnes avec Code Postal, etc… Prévue pour Q4 2018
Présentation du column formating « avancé », où l’on se retrouve avec une interface similaire à de l’Excel et du color formating.
Workflow
Cas d’usage, on créé un site SharePoint et on souhaite le rattacher à un Hub Site, l’opération se fait avec Flow avec « Approval ». Au passage, on voit la nouvelle interface de « Settings » depuis la roue crantée. Flow directement dans un Column formatter. 
Set a reminder, Hub Join approval, Request Sign-Off, Content Approval, Page approvals et d’autres Flows présentés, la plupart se basent sur la fonctionnalité « Approval » de Flow. Une annonce majeure c’est le Flow « SharePoint permissions » et le « create your own template » au travers d’un SharePoint Connector updates où l’on va pouvoir gérer des colonnes multivaluées, partage de liens, file actions, ET le send HTTP request to SharePoint etc … 
Apps
Forms : WebPart avec gestion des données à récolter depuis SharePoint. 
SharePoint : compatible avec les DocLibs
PowerApps : On peut composer des pages avec une connexion vers des documents, un côté « Document sets » mais avec une page, très intéressant.
Cognitive Services : Présentation de la reconnaissance visuelle pour les images publiées dans SharePoint. Flow est présenté avec Get File Content puis « Predict tag from image », on n’a pas de difficultés à trouver un usage associé à cette fonctionnalité. On retrouve les classic « Sentiment, Translation », mais aussi « Key point summary », « recognized objects »
Power BI : Plus grande intégration avec SharePoint, mais pas d’annonces à cette session.
Roadmap à retenir :
Power BI dans des listes SP, Search connectors, etc … 
Ressources :https://aka.ms/sharepoint/bizapps
Citation

Ignite 2018 – Future of Yammer, Vision & Roadmap

Yammer a 10 ans !  Cette session est une présentation de la vision de Yammer par les équipes produits de Microsoft pour les prochaines années. On peut résumer en une phrase:
« Empower and connect every person accros organization to maximize their impact ». 
Parmi les points importants, la transparence et la sérendipité. Le souhait d’avancer sur une intégration avec Outlook, Stream, … 
Live Event
Le composant « Live Event » avec une nouvelle section « Group Events » dans la page Yammer, intégration de Stream directement. La video « flotte » en fonction du scroll vertical mais aussi des pages, un comportement similaire à ce qu’on peut retrouver sur FB. Une fois finie, l’événement est disponible sur Stream avec toutes les fonctionnalités associées (reconnaissance visuelle, transcript, etc ..) tout ça est prévu en Q4 2018
Yammer tab in Teams
Une nouvelle tab disponible. Intégration d’une conversation Yammer dans une conversation Teams !! (prévu en Q1 2019)
SharePoint
Nouvelle WebPart Yammer conversation, avec l’application du thème SP directement dans la composant. L’ajout d’un document Yammer l’enregistre directement dans le Team Site. (prévu en Q1 2019)
Microsoft Search
Présentation d’un vertical « Conversations » dans les résultats de recherche avec un filtre « Yammer », évolution prévue pour Q4 2018
Roadmap 2019
H1 2019
Mark « best answer », RTE, Q&A, eDiscovery 
H2 2019

Participation aux live events, Pin posts, People Cards, Geo Storage.
Un point d’attention sur le stockage des données pour l’Europe.

SharePoint 2016 Technical Preview vu depuis PowerShell

Ca y est ! La nouvelle version de SharePoint est arrivée en version Technical Preview. Il est donc temps de voir les nouvelles fonctionnalités mises à disposition par Microsoft dans SharePoint 2016. C’est aussi l’occasion d’apprécier les changements techniques annoncés dans cette nouvelle mouture, et principalement sur la partie hybride. De mon point de vue, l’une des meilleures façon d’aborder cette évolution technique est de faire le tour d’horizon des nouvelles commandes PowerShell disponible, c’est une méthode assez pertinente pour anticiper les évolutions à venir. Afin de bien comprendre et analyser ces évolutions, nous allons regrouper les commandes par thématiques.

Une remarque qui a son importance: à l’heure où nous écrivons ces lignes aucune de ces commandes n’a été référencé par Microsoft sur Technet.

Gestion des plages d’adresses autorisées

Add-SPIPRangeAllowList
Disable-SPIPRangeAllowList
Get-SPIPRangeAllowList
Test-SPIPRangeAllowList
Set-SPIPRangeAllowListSetting
Set-SPIPAccessControlOperationMode
Set-SPIPAccessControlSubscriptionId

Elles permettent tout simplement de restreindre l’accès d’une Collection de site à une adresse IP donnée. Malheureusement cela ne fonctionne que sur la collection de site racine de la Web Application. Pour plus de détails sur l’implémentation de cette fonctionnalité, je vous invite à lire ce post.

Gestion des bases de données

Dismount-SPSiteMapDatabase
Get-SPSiteMapDatabase
Mount-SPSiteMapDatabase
Upgrade-SPSiteMapDatabase

Aucune information filtré sur ce nouveau composant pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Reset-SPSites

Runtime Telemetry

Set-SPRuntimeTelemetry
Get-SPRuntimeTelemetry

Aucune information filtré sur ce  nouveau composant pour l’instant. A première vue il s’agirait d’un composant mesurant la disponibilité de service ou d’application par un lien ODL, peut être un lien avec le nouveau mode hybride ? Nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Get-SPRuntimeTelemetry

Gestion des serveurs

Set-SPServer
Upgrade-SPServer

Deux nouvelles commandes permettant de gérer les serveurs SharePoint. Un point intéressant est la commande Upgrade-SPServer qui vérifierait tout simplement les versions sur chacun des serveurs

get-spserver

Get-spserver

Gestion des serveurs et des rôles

Start-SPService
Stop-SPService
Get-SPService

Ces commandes vont tout simplement faciliter la gestion du provisioning ses services SharePoint, principalement sur une architecture à plusieurs tiers. On retrouve la notion de MinRole permettant de segmenter par rôle chacun de vos serveurs SharePoint 2016.

Get-spservice

Gestion des bases de données

Compare-SPDatabaseSchema
Copy-SPDatabase
Migrate-SPDatabase
Register-SPContentDatabase
Switch-SPSitesToNewDatabase
Upgrade-SPConfigurationDatabase

C’est probablement un des périmètres où il y a eu le plus d’évolutions, et pour cause, SharePoint vit au rythme de ses bases de données. La première commande Compare-SPDatabaseSchema nous permet de comparer les schémas de deux bases de données différentes. Cette commande a été testée avec deux bases de données de contenus.

compare-spdatabaseschema

La commande Copy-SPDatabase permet, comme son nom l’indique, de copier une base de donnée SharePoint. Aucune information n’existe pour l’instant sur ce nouveau composant, mais on se doute que cela sera utile dans un scénario hybride ! On remarquera que la propriété de cible pour la copie attend une Connection String. A force de travailler avec SharePoint, on en aurait presque oublié le principe 🙂

Register-SPContentDatabase s’inscrit très probablement dans cette continuité de plateforme hybride.

register-spcontentdatabase

Switch-SPSitesToNewDatabase est une commande plus ou moins identique à Move-SPSite. Elle permet le déplacement d’une Collection de site d’une base de données de contenu vers une autre. Le différence notable est la capacité de renseigner plusieurs collections de site en paramètre d’entrée.

switch-spsitestonewdatabase

Upgrade-SPConfigurationDatabase est l’équivalent de la commande Upgrade-SPServer pour notre base de donnée de configuration (SharePoint_Config)

upgrade-spconfigurationdatabase

Site Master

Enable-SPWebTemplateForSiteMaster
Disable-SPWebTemplateForSiteMaster
Get-SPWebTemplatesEnabledForSiteMaster
Get-SPSiteMaster
New-SPSiteMaster
Remove-SPSiteMaster

SharePoint 2016 ajoute une nouvelle fonctionnalité touchant la création des collections de site: le Fast Site Collection Creation. Cette fonctionnalité est en lien direct avec le principe de Site Provisioning, concept très populaire permettant la mise en place automatisé d’espaces collaboratifs aux utilisateurs. Le mécanisme permet d’accélérer la création d’une Collection de Site en se basant sur une copie de la collection de site au niveau de la base de donnée de contenu.

Son application est assez simple

  1. Définir le Web Template faisant l’objet du Site Master
  2. Créer le Site Master. Suite à cette commande, une nouvelle collection de site Master est créé
  3. Créer la Collection de Site depuis le Master

enable-spwebtemplateforsitemaster

new-spsitemaster new-spsitemaster3 new-spsitemaster

Pour en savoir plus sur ce mécanisme et son application direct, vous pouvez lire le récent post de Bill Baer à ce sujet.

Gestion des vidéos

Disable-SPVideoStreaming
Enable-SPVideoStreaming
Get-SPVideoStreamingConfig
Suspend-SPVideoStreamingAccess
Resume-SPVideoStreamingAccess

Un des axes de développements de SharePoint 2016 est la gestion des vidéos. Au travers de ces commandes, on découvre un service de streaming. Pour le rendre effectif, vous devrez créer une Service Application de type Subscription Settings Service Application comme décrit ici.

get-spsitesubscription

Il sera par la suite possible d’activer, suspendre ou désactiver le service de streaming et le service est activé par défaut lorsque l’on dispose d’une Subscription Service. . On regrette un peu l’absence de paramétrage avancé du service de streaming, mais on espère que d’ici la version RTM on ai une plus grande latitude de configuration. On imagine que comme beaucoup de services disponible dans cette Technical Preview, ce sont les mêmes composants actuellement exploités dans le cadre d’un service Office 365, et dans ce cas précis le service d’Office Video.

Get-SPVideoStreamingConfig

Azure

Update-SPAzureBlobConfigLocator
Update-SPAzureBlobConfigLocatorEx
Update-SPAzureBlobConfigLocatorEx1
Update-SPAzureBlobLogStoreSignatures
Update-SPAzureBlobSignaturesEx
Update-SPAzureBlobSignaturesEx1
New-SPAzureVideoServiceAccount
Get-SPAzureVideoServiceAccount
Remove-SPAzureVideoServiceAccount

Cette nouvelle version est résolument tourné vers le cloud et le modèle hybride. Nous avons désormais à disponibilité des commandes permettant d’interagir avec une plateforme Azure. Pour bénéficier de ces fonctionnalités il faudra cependant disposer d’un compte Azure, et surtout d’un abonnement Media Services.

Au niveau des commandes PowerShell, on distingue deux catégories : la gestion des vidéos, et la configuration d’un service permettant le stockage de fichiers binaire encryptés sur une plateforme Azure. Pour le coup on est vraiment sur de l’hybride avec les données techniques se trouvant sur la base de donnée de contenu sur notre environnement On Premise, et les documents hébergés directement sur la plateforme Azure. On a hâte de tester tout ça !

Très peu d’informations sont disponible à ce sujet,  néanmoins cet article nous donne un bon aperçu des commandes à effectuer pour disposer de cette fonctionnalité de stockage de fichiers dans Azure.

Office 365

Set-SPO365LinkSettings
Test-SPO365LinkSettings
Get-SPO365LinkSettings

Là encore, ces commandes mettent en avant le modèle hybride avec la configuration de OneDrive et des Sites. On retrouve également ces fonctionnalités au niveau de notre Central Administration.

On retiendra de cette fonctionnalité la capacité de choisir le mode de redirection pour le mode hybride choisit: OneDrive et les Sites, ou OneDrive uniquement.

get-spo365LinkSettings get-spo365LinkSettings get-spo365LinkSettings

Mise à jour des fichiers par serveurs

Copy-SPSideBySideFiles

Toujours dans cette optique de mettre à disposition des administrateurs des fonctionnalités pour gérer la performance et le dimensionnement d’infrastructure SharePoint On Premise, nous avons le droit à une commande permettant la copie de répertoires et de fichiers dans la ruche. Cette commande PowerShell se base sur le très populaire et robuste Robocopy.exe et permet la copie de fichiers web (js,css et htm) d’un server à l’autre. Nous n’avons pas trouvé de Timer Job associé à ces opérations, il y a donc fort à parier que son application direct soit laissé aux administrateurs. Très peu de paramètres sont disponible pour cette dernière, si ce n’est le choix du chemin de log.

Copy-SPSideBySideFiles

Secure Store

Disable-SPSecureStoreMinDB
Enable-SPSecureStoreMinDB
Move-SPSecureStorePartitionData

Aucune information n’a filtré sur cette fonctionnalité lié au Secure Store pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Apps et Apps Store

Get-SPAppStoreWebServiceConfiguration
Set-SPAppStoreWebServiceConfiguration
Move-SPAppManagementData
Upgrade-SPAppManagementServiceApplication

Aucune information filtré sur cette fonctionnalité pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Gestion de Projets

Beaucoup de fonctionnalités autour de Project et PWA (Project Web Application) sont disponible dans cette nouvelle version. Elles feront probablement l’objet d’une étude dans un post séparé tellement elles sont nombreuses.

Service Application

Get-SPConnectedServiceApplicationInformation

Aucune information filtré sur cette fonctionnalité pour l’instant, la commande nous retourne les différents EndPoint de nos Service Application. On peut partir de l’hypothèse que cette commande s’inscrit dans l’utilisation d’une architecture n-tiers avec les MinRoles, cette information permettrait la vérification centralisée de chacune des Service Applications d’une ferme disposant de plusieurs rôles.

Get-SPConnectedServiceApplicationInformation

Gestion des Collection de Sites

Reset-SPSites

Aucune information filtré sur cette fonctionnalité pour l’instant. Contrairement à ce que pourrait laisser penser cette commande, le paramètre d’entrée ID est celui de la base de données de contenu et non celui d’une collection de site. Nous n’avons pas remarqué de comportement particulier lors de l’exécution de cette commande, ni aucune indisponibilité.

Reset-SPSites

Gestion des Web Applications

Upgrade-SPWebApplication

Aucune information n’a filtré sur cette fonctionnalité pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Upgrade-SPWebApplication

Insights

Get-SPInsightsAuthSettings
Set-SPInsightsAuthSettings

D’après ce post sur le Forum Technet , on apprend que le composant n’est pas encore disponible dans cette Technical Preview. La commande nous retourne des informations sur notre ferme SharePoint, ainsi que sur une assembly (introuvable localement). En en saura probablement plus dans les semaines à venir.

Get-SPInsightsAuthSettings

Profils utilisateurs

Get-SPMicrofeedOptions
Set-SPMicrofeedOptions
Set-SPDefaultProfileConfig
Upgrade-SPProfileServiceApplication
Export-SPTagsAndNotesData

De nouvelles commandes sont disponible pour gérer les profils utilisateurs dans SharePoint, on rappellera qu’un des changements majeur de cette nouvelle version est la suppression complète de FIM (Forefront Identity Manager) et donc la possibilité d’exporter des propriétés de profils utilisateurs dans un annuaire en natif. On notera dans ces commandes la possibilité de gérer des options pour le MicroFeed ainsi que la possibilité d’exporter les Tags & Notes. Cette commande est la bienvenue sachant que la fonctionnalité de Tags & Notes sera dépréciée sur SharePoint 2016.

Get-SPmicrofeedoptions Export-sptagsandnotesdata

La Content Search Web Part et les Display Template

Content Search Web Part

Présentation de la CSWP

SharePoint 2013 apporte son lot de nouveautés, l’une d’entre elles est l’ajout d’une Web Part nommé « Content Search », « Recherche de contenu » en français. Cette dernière permet d’interroger le moteur de recherche pour restituer une information. Cette Web Part est une version amélioré de la Content Query Web Part qui ne reste, pour beaucoup, qu’un vestige des versions précédentes de SharePoint. Il faut noter que cette webpart est disponible pour la version Enterprise sur on-premises. Quant aux éditions Office 365 et SharePoint Online, la CSWP est désormais disponible sur les plans Entreprise (E3, E4, A3, A4, G3 et G4) au même titre que la fonctionnalité de Cross-Site Publishing et la navigation par facettes.

Content Search Web Part

Content Search Web Part

Dans les propriétés de cette Web Part, il est possible de définir une requête à l’intérieur de laquelle l’index du moteur de recherche est interrogé. Ces requêtes, une fois exécutée, retournent des résultats suivant plusieurs paramètres, à savoir:

  • Une source de résultats (anciennement l’étendue ou Scope)
  • Des règles de requêtes
CSWP

Propriété Content Search Web Part

Query Builder

Une interface de conception appelée Query Builder est à notre disposition pour créer la requête en sélectionnant la source de résultat, l’ordre avec laquelle les informations doivent remonter, etc. …Il est également possible de passer l’interface en mode avancé.  A partir de là, nous pouvons récupérer certaines propriétés et autres mots clés afin de filtrer le résultat. Le filtre de propriété apporte une grande profondeur dans la formulation de nos requêtes, il est entre autre possible de récupérer directement les paramètres d’URL.

Liste filtre Query Builder

Liste filtre Query Builder

Dans cet exemple, nous utilisons le filtre URLToken sur notre propriété ProductCatalogGroupNumberOWSTEXT afin de récupérer le deuxième paramètre de notre URL.

SPTokenURL

SPTokenURL

Cette propriété nous permet, in fine, de n’afficher que les résultats correspondants au deuxième paramètre d’URL. Dans ce contexte il s’agit de n’afficher que les produits faisant partit du groupe « 2146″.

Query Builder

Query Builder

Les Display Template

Présentation des modèles

Une fois que la requête est définie, il faut mettre en forme les résultats. Je vous vois venir de loin avec vos modifications de fichiers XSLT … Ici, il n’en est pas questions, nous allons utiliser les composants natifs livrés avec notre SharePoint 2013 : les Display Template et Control Display Template.

Ces derniers sont disponibles dans la galerie de pages maitre et mise en pages. De nombreux autres Templates sont également de la partie: Filter Display Template, Group Display Template, HTML Master Page pour ne citer qu’eux, mais ces derniers ne font pas l’objet de ce poste, donc je ne m’arrêterais pas dessus.

Lors des premières manipulations de ces fichiers, vous remarquerez assez rapidement que lorsque vous ajoutez un nouveau Template, un fichier JavaScript y est associé. Un conseil, n’y touchez pas. Le fichier associé est en fait le résultat d’une conversion du fichier source html en JS.  Une propriété « Associated File » est présente pour le fichier HTML.

Fichier associé

Display Template, fichier associé

Gestion des modèles

Dans le cadre de ce poste, nous récupérons des modèles par défaut pour en faire de nouveaux « custom ». Pour le modèle de type Control, nous partons sur le Control_List.html et pour celui de l’Item, nous prendrons le Item_Default.html. Une fois la copie de ces fichiers effectuée, il faut renommer le contenu de la balise <Title> avec quelque chose de plus approprié. Une fois nos modèles téléchargés, nous pouvons les associer à notre Web Part en les sélectionnant dans notre catégorie Display Template.

Control et Item display template

Control et Item display template

L’image ci-dessous illustre le positionnement de nos Display et Control Template dans le cadre d’un tableau de résultats. Ici, l’objectif est d’avoir un tableau dans lequel nous pouvons récupérer les éléments issus de notre requête définies plus haut.

Schéma display template

Schema Display Template

Comme mentionné précédemment, je vous recommande fortement de vous appuyer sur les modèles standard, de renommer les Title et l’ID de notre div et de les utiliser tel quel au début. Ensuite, une fois que vous avez l’assurance qu’il s’agit bien de votre modèle qui est utilisé pour l’affichage, vous pourrez effectuer les modifications dans SharePoint Designer 2013, ou par le biais d’un éditeur de texte comme Notepad++.

Modification des modèles

Plusieurs balises propres à SharePoint sont disponibles dans ces modèles afin de faciliter la récupération et la transformation des éléments issus de la recherche.

  • _#= ctx.RenderGroups(ctx) =#_  et _#= ctx.RenderItems(ctx) =#_ sont des fonctions utilisés pour appeler nos Display Template
  • _#= ctx.CurrentItem.xxx =#_ est une fonction utilisée pour afficher le rendu de notre propriété (ex : Title, Path, etc …).

Les propriétés disponible sont définies au début du modèle, dans la section  <mso:ManagedPropertyMapping msdt:dt= »string »>. Il est possible de rajouter des propriétés gérées dans cette même section. Dans notre cas, nous souhaitons rajouter des propriétés gérés liées à catalogue de produits provenant d’un autre site :

Managed properties display template

Managed properties display template

Un peu plus bas dans notre modèle, nous pouvons ajouter nos CSS et JavaScripts dans la balise <script>

Par exemple:

Javascript display template

Javascript display template

Il suffit ensuite d’éditer le code HTML juste en dessous pour créer notre tableau.

Notre Display Control

<table class="artis-tasktable" id="_#= encodedID =#_">
    <thead>
        <tr>
            <th>Product Model</th>
            <th>Product Name</th>
            <th>Price (in $)</th>
            <th>Color</th>
            <th>Size</th>
            <th>Weight</th>
        </tr>
    </thead>
    <tbody>
         _#= ctx.RenderGroups(ctx) =#_
    </tbody>
</table>      </div>
</body>
</html>

Notre Display Item 

        <div id="_#= containerId =#_" data-displaytemplate="ItemLargePicture">
            <div id="_#= pictureContainerId =#_">
                <h1 id="_#= line1Id =#_"> _#= line1 =#_</h1>
                <a href="_#= linkURL =#_" title="_#= $htmlEncode(line1) =#_" id="_#= pictureLinkId =#_">
                    _#= pictureMarkup =#_
                </a>
            </div>
        <div id="itemdescription">
            <p class="currency">$ _#= Math.round(ctx.CurrentItem.CostOWSCURR * 100) / 100 =#_ </p>
            <ul class="desclist">
                <li><span class="desc">Description:</span> _#= ctx.CurrentItem.Description =#_ </li>
                <li><span class="desc">Color:</span> _#= ctx.CurrentItem.ColorOWSTEXT =#_ </li>
                <li><span class="desc">Weight:</span> _#= ctx.CurrentItem.WeightOWSTEXT =#_ </li>
                <li><span class="desc">Size:</span> _#= ctx.CurrentItem.SizeOWSTEXT =#_ </li>               
            </ul>
         </div>
        </div>
    </div>
</body>
</html>

Et voilà le résultat final. Et surtout, n’oubliez pas de publier vos modèles !

Display Template

Display Template