21

Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Embed Size (px)

Citation preview

Page 1: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!
Page 2: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack

et bien plus encore!

Franck Cornu

SharePoint Saturday Genève – 3 Décembre 2016

Page 3: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Franck CornuArchitecte SharePoint

Blog: http://thecollaborationcorner.com/Réalisations: • Réussir son analyse fonctionnelle SharePoint: Guide méthodologiq

ue (170 pages)

• Étude de cas d’intranet en SharePoint 2013 (323 pages)• Contributeur Pattern & PracticesTwitter: @FranckCornu

Montréal, QC

Page 4: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Sharing is caring…

• Solution disponible gratuitement sur le repository PnP

https://github.com/SharePoint/PnP/tree/master/Solutions/Business.O365StarterIntranet

• Documentation complète (technique + utilisateur)

http://thecollaborationcorner.com/category/office-365-pnp-starter-

intranet

PnP Starter Intranet for Office 365/SharePoint Online

Page 5: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Plan de la session

• Aperçu fonctionnel de la solution/contexte• Frameworks, librairies et outils utilisés• Design et de l’identité graphique• Navigation• Multilinguisme• Recherche• Conclusion

Page 6: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Aperçu fonctionnel de la solution

Page 7: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Aperçu fonctionnel (Résumé)

• Solution d’intranet de publication issue d’un véritable projet• Expérience de création/visualisation de contenu (pages et

nouvelles) desktop et mobile• Gestion des menus de navigation avec mécanisme de cache• Mécanisme de traduction des pages et des menus en anglais et

français• Page d’accueil

• Carrousel de nouvelles• Fil de nouvelles de page d’accueil• Tuiles de liens

• Expérience de recherche par catégorie (intranet, documents, personnes)• Isolée dans une collection de sites 2 sites différents avec la

même solution peuvent coexister sur le même tenant• Déploiement entièrement automatisé

Page 8: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Frameworks et outils

Page 9: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Frameworks et outils utilisés (Résumé)

Code/Packaging

UI

Multilinguisme

Divers

Déploiement

Page 10: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Design et identité graphique

Page 11: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Design et identité graphique (Résumé)

• Création d’une master page et pages layouts personnalisés• Bootstrap est utilisé en mode « isolé » pour

la gestion du design responsive dans SharePoint• Les styles sont gérés en utilisant SASS et

Webpack• Utiliastion d’Office UI Fabric pour les icônes• Architecture modulaire par composants

(Knockout JS)• Utilisation des display templates par défaut

de SharePoint ainsi que des rendus d’images• Création d’un thème spécifique (spcolor)

Page 12: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Navigation

Page 13: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Navigation (Résumé)

• Utilise la navigation par taxonomie SharePoint via JSOM• Pas d’API REST pour la taxonomie,

chargement des scripts par SOD• Utilise le champ « Site Map Position »

pour la construction des menus contextuels• Implémente un système de cache pour la

gestion des performances via le localStorage du navigateur• Utilise le pattern Pub/Sub pour la

communication entre composant sur la page (menu principal vers menu contextuel et fil d’Ariane)• Utilise le groupe de termes de la

collection de sites (isolation)

Page 14: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Multilinguisme

Page 15: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Multilinguisme (Résumé)

• Pas de variantes SharePoint ! Contexte de langue donné par la page elle-même.• S’appuie sur un seul site SharePoint

(MUI ≠ langue du contenu)• Utilise la libraire « i18next » pour la

gestion des ressources en JavaScript• Configuration spéciale de Webpack

pour faire communiquer le contexte SharePoint et celui de l’application• Dans tous les cas, nécessité de traduire

les termes de taxonomie pour le refinement panel• Si un seul site, nécessité de modifier les

display templates de SharePoint pour traduire les labels

Page 16: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Recherche

Page 17: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Recherche (Résumé)

• Utilisation des composants et display templates de recherche par défaut de SharePoint• Modification du display template du

refinement panel nécessaire pour la prise en charge des valeurs de taxonomie multilingues• Utilisation des query rules et de

requête raffinées (paramètre « r ») pour la gestion de archives de contenu• Utilisation des propriétés de

recherche RefinableXXX de SharePoint• Configuration de la recherche au

niveau de la collection de sites (isolation)

Page 18: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Conclusion

Page 19: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Conclusion

• Faire un intranet de publication mobile dans SharePoint Online et totalement client-side avec SharePoint, c’est possible!• Avec l’arrivée de gros changements UI dans SharePoint

Online, solution davantage orientée On-Premise.• Possibilité de compléter la solution avec Azure (ex:

Application Insights pour les statistiques) ou notification en temps réel…(https://dev.office.com/blogs/building-real-time-news-feed-web-part-with-sharepoint-framework) • En tant que développeur SharePoint, il serait temps de

s’intéresser de près au monde JavaScript (SPFx)…

Page 20: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Evaluez les sessions grâce à l’application SPS Genève !

Et gagnez des licences

Cherchez « SPSGenève » sur le store

Page 21: Votre intranet "Client-Side" en SharePoint Online/O365 avec PnP, Knockout JS, TypeScript, Webpack et bien plus encore!

Sponsorship Level: Raffle