Partager via


Créer une extension de carte adaptative avec l’action sélectionner un média

Modèle d’un projet d’extension de carte adaptative

Créez un répertoire de projet pour votre projet et modifiez votre dossier actuel en répertoire.

Créez un nouveau projet en exécutant le Yeoman Microsoft Office SharePoint Online Generator à partir du nouveau répertoire que vous avez créé :

yo @microsoft/sharepoint

Lorsque vous y êtes invité, entrez les valeurs suivantes (sélectionnez l’option par défaut pour toutes les invites qui ne sont pas mentionnées ci-dessous):

  • Quel est le nom de votre solution ? media-upload-tutorial
  • Quel type de composant côté client créer? Extension de carte adaptative
  • Quel modèle voudriez-vous utiliser ? Modèle de texte principal
  • Quel est le nom de votre extension de carte adaptative? MediaUpload

À ce stade, Yeoman installe les dépendances requises et crée la structure des fichiers de la solution. Ce processus peut prendre quelques minutes.

Mettre à jour l’URL workbench hébergée de votre projet

Lorsque vous utilisez la tâche gulp servir, par défaut, il lance un navigateur avec l’URL workbench hébergée spécifiée dans votre projet. L’URL par défaut du workbench hébergé dans un nouveau projet pointe vers une URL non valide.

  • Recherchez et ouvrez le fichier ./config/serve.json dans votre projet.

  • Recherchez la propriété initialPage:

    {
      "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json",
      "port": 4321,
      "https": true,
      "initialPage": "https://enter-your-SharePoint-site/_layouts/workbench.aspx"
    }
    
  • Remplacez le domaine enter-your-SharePoint-site par l’URL de votre client SharePoint et du site que vous souhaitez utiliser pour les tests. Par exemple : https://contoso.sharepoint.com/sites/devsite/_layouts/workbench.aspx.

À ce stade, si vous faites gulp serve, vous verrez la MediaUpload carte :

Voir l’icône de carte MediaUpload dans la boîte à outils du composant WebPart

Ajouter une action de chargement multimédia à votre extension de carte adaptative

À ce stade, nous avons un code d’extension de carte adaptative prête à l’emploi. Il est maintenant temps d’activer les choses en sélectionnant le média à partir des vues Carte et Rapide.

Dans la vue Carte, nous allons fournir un bouton qui effectuera les actions suivantes :

  • Charger un fichier image

Mettre à jour les étiquettes qui apparaîtront sur la carte

Avant de commencer à ajouter les actions, commençons par mettre à jour les chaînes que vous verrez sur la carte.

Pour cela, recherchez et ouvrez le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/loc/en-us.js

Remplacez le contenu de ce fichier par :

define([], function() {
  return {
    "PropertyPaneDescription": "Tutorial on media upload action in ACE.",
    "TitleFieldLabel": "MediaUpload",
    "Title": "Media Upload",
    "SubTitle": "Media Upload Actions",
    "PrimaryText": "Media Upload Demo",
    "Description": "Demonstrating Media Upload Capabilities",
    "UploadPNG": "Upload PNG file"
  }
});

Ensuite, recherchez et ouvrez le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/loc/mystring.d.ts

Ajoutez les éléments suivants :

UploadPNG: string;

à l’interface IMediaUploadAdaptiveCardExtensionStrings.

Ajouter des actions dans l’affichage Carte

Comme mentionné précédemment, dans l’affichage Carte, nous allons ajouter un bouton, qui permet à l’utilisateur de charger un fichier png lorsqu’il clique sur l’affichage carte.

Recherchez et ouvrez le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/cardView/CardView.ts

Ici, remplacez la définition de la fonctioncardButtons par ce qui suit :

public get cardButtons(): [ICardButton] | [ICardButton, ICardButton] | undefined {
  return [
    {
      title: strings.UploadPNG,
      action: {
        type: 'VivaAction.SelectMedia'
        parameters: {
            mediaType: MediaType.Image
        }
      }
    }
  ];
}

Avec cette modification, nous avons configuré un bouton avec une étiquette Upload PNG file et l’action au clic est VivaAction.SelectMedia, qui charge le mode de chargement de fichiers.

Ensuite, remplacez le contenu de la fonctiononCardSelection par ce qui suit :

public get onCardSelection(): IQuickViewCardAction | IExternalLinkCardAction | undefined {
  return {
      type: 'QuickView',
      parameters: {
        view: QUICK_VIEW_REGISTRY_ID
      }
  };
}

Cette modification implique que lorsqu’un utilisateur clique sur l’affichage carte, il doit ouvrir un affichage rapide pour lui.

Avec les modifications apportées jusqu’à présent, l’affichage de votre carte ressemblerait à ceci :

Apparence de la carte après l’introduction des chaînes et des modifications dans la vue carte

Ajouter des actions dans l’affichage rapide

Dans l’affichage rapide, nous allons introduire des boutons pour trois actions :

  • Charger un fichier png
  • Charger un fichier jpg
  • Charger un fichier png et un fichier jpg

Nous allons d’abord définir le modèle de l’affichage rapide. Pour cela, recherchez et ouvrez le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/quickView/template/QuickViewTemplate.json

Remplacez le contenu de ce fichier par ce qui suit :

{
  "schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.2",
  "body": [
    {
      "type": "TextBlock",
      "text": "${filesUploaded}"
    }
  ],
  "actions": [
    {
      "title": "Upload a png",
      "type": "VivaAction.SelectMedia",
      "parameters": {
        "mediaType": "MediaType.Image",
        "allowMultipleCapture": false,
        "supportedFileFormats": "png"
      }
    },
    {
      "title": "Upload a jpg",
      "type": "VivaAction.SelectMedia",
      "parameters": {
        "mediaType": "MediaType.Image",
        "allowMultipleCapture": false,
        "supportedFileFormats": "jpg"
      }
    },
    {
      "title": "Upload a png and jpg",
      "type": "VivaAction.SelectMedia",
      "parameters": {
        "mediaType": "MediaType.Image",
        "allowMultipleCapture": true,
        "supportedFileFormats": "png jpg"
      }
    }
  ]
}

Après avoir ajouté ces actions, votre affichage rapide se présente comme suit :

Apparence de la carte après avoir introduit des modifications dans l’affichage rapide

Configurer l’état de notre extension de carte adaptative

Jusqu’à présent, nous avons créé l’affichage carte et l’affichage rapide. Si vous effectuez un gulp serve à ce stade, vous serez en mesure d’effectuer les actions décrites ci-dessus.

Mais maintenant, allons un peu plus loin.

Nous souhaitons maintenant afficher tous les fichiers chargés dans l’affichage rapide lorsque les actions respectives sont exécutées.

Nous devrons apporter quelques modifications rapides pour commencer par introduire de nouveaux états. Commencez par rechercher et ouvrir le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/MediaUploadAdaptiveCardExtension.ts

Ici, ajoutez les states suivantes à l’interface IMediaUploadAdaptiveCardExtensionState :

filesUploaded: string;

Ensuite, dans la fonction onInit, remplacez this.state={} par

this.state = {
  filesUploaded: ''
};

Nous allons maintenant également apporter des modifications similaires dans l’affichage rapide.

Recherchez et ouvrez le fichier suivant dans votre projet : ./src/adaptiveCardExtensions/mediaUpload/quickView/QuickView.ts

Ajoutez les propriétés suivantes à l’interface IQuickViewData :

filesUploaded: string;

puis ajoutez les deux lignes suivantes dans l’objet retourné de data getter :

filesUploaded: this.state.filesUploaded

Implémenter la fonction onAction

Jusqu’à présent, nous avons créé notre action de chargement multimédia définie et câblée dans nos états. Maintenant, nous pouvons enfin implémenter la onAction fonction, qui donne la possibilité au développeur tiers de décider ce qu’il souhaite faire avec les informations multimédias chargées.

Pour cela, ouvrez le fichier QuickView.ts (./src/adaptiveCardExtensions/mediaUpload/quickView/QuickView.ts) et importez l’interface ISelectMediaActionArguments , comme suit :

import {ISelectMediaActionArguments} from '@microsoft/sp-adaptive-card-extension-base';

Enfin, introduisez la fonction suivante onAction dans la classe QuickView afin que nous puissions obtenir la liste de nos fichiers :

public onAction(action: ISelectMediaActionArguments): void {
  if (action.type === 'VivaAction.SelectMedia') {
    // media is an array of attachment objects which contain the content and filename
    this.setState({
        filesUploaded: action.media.map(attachment => attachment.fileName).join(',')
    });
  }
}

Ainsi, chaque fois que l’action VivaAction.SelectMedia est déclenchée à partir de votre affichage rapide, en fonction des paramètres qui ont été passés, l’infrastructure d’extension de carte adaptative transmet une pièce jointe multimédia au onAction rappel. Dans l’implémentation partagée ci-dessus, nous vérifions si le action type est de type VivaAction.SelectMedia, et si c’est le cas, nous restituons l’affichage rapide en effectuant un setState, dans lequel nous mettons à jour le filesUploaded bloc de texte.

À ce stade, vous pouvez réexécuter gulp serve et voir comment toutes les modifications que vous avez apportées jusqu’à présent se sont regroupées.

Et voilà ! Félicitations pour avoir réussi à créer votre extension de carte adaptative avec l’action de chargement multimédia.

Deux médias chargés