Question

Existe-t-il un moyen de récupérer le fil d'actualité avec un lien vers un hashtag et tout le contenu riche à l'aide de JSOM ?

Nous sommes en mesure de récupérer le fil d'actualité, mais tout le texte arrive en texte brut, sans aucun lien vers les hashtags.

Existe-t-il un moyen de le faire en utilisant JSOM ?

Était-ce utile?

La solution

Afin de récupérer le contenu de la publication, SP.Social.SocialPost expose les propriétés suivantes :

  • Pièce jointe - obtient une image, une vidéo ou une pièce jointe de document associée au message
  • Texte - Récupère le texte d'affichage du message
  • Superpositions - Obtient un tableau d'objets qui associe les sous-chaînes d'espace réservées dans le texte post-URIS et d'autres données.

L'exemple suivant montre comment imprimer le contenu du flux social (les publications contenant attachments et external links)

Comment récupérer et imprimer le flux social à l'aide de JSOM dans SharePoint 2013

function loadFeed(feedType,feedOptions,success,error) {
    var context = SP.ClientContext.get_current();
    var feedManager = new SP.Social.SocialFeedManager(context);
    var feed = feedManager.getFeed(feedType, feedOptions);
    context.load(feedManager);
    context.executeQueryAsync(
       function(){
          success(feed);
       }, 
       error
    );
}

function renderRootBody(feed) {
    var postHtml = '<div class="ms-microfeed-rootBody">';
    postHtml+='<div class="ms-microfeed-text ms-microfeed-rootText">';  
    var threads = feed.get_threads();
    for (var i = 0; i < threads.length ; i++) {
        var thread = threads[i];
        var post = thread.get_rootPost();
        postHtml+= renderPostBody(post);
    }
    postHtml+='</div>';
    postHtml+='</div>';
    return postHtml;
}




function renderPostBody(post) {
   var postHtml = '';      
   //get post Text
   var postText = post.get_text(); 
   //get Post Overlays
   var overlays = post.get_overlays();
   postHtml+='<span class="ms-microfeed-postBody ms-textSmall">';
   for(var i = 0; i < overlays.length;i++) {
     var overlayLinkUrl = overlays[i].get_linkUri();
     var overlayIndex = overlays[i].get_index();
     var overlayLength = overlays[i].get_length();  
     var overlayText = postText.substr(overlayIndex,overlayLength);
     var overlayLinkHtml = String.format('<a id="ms-externalLink" class="" href="{0}" target="_blank">{1}</a>',overlayLinkUrl,overlayText);
     postHtml+=overlayLinkHtml;
   }
   postHtml+='</span>';
   //get post Attachment
   var attachment = post.get_attachment();
   var attachmentUrl = attachment.get_uri();
   var attachmentName = attachment.get_name();
   postHtml+= String.format('<div id="" class="ms-microfeed-attachmentDiv"><img class="ms-microfeed-attachmentImage" src="{0}" alt="{1}"/></div>',attachmentUrl,attachmentName);
   return postHtml;
}

Exemple

Supposons que la page contient l'espace réservé suivant :

<div class='ms-microfeed-thread'/>

Ensuite, le script suivant montre comment récupérer et imprimer le fil d'actualité :

SP.SOD.executeFunc('userprofile', 'SP.Social.SocialFeedManager', function() {
    var feedOptions = new SP.Social.SocialFeedOptions();
    loadFeed(SP.Social.SocialFeedType.news,feedOptions, 
      function(feed)
      {
          var feedContent = renderRootBody(feed);
          $('div.ms-microfeed-thread').append(feedContent);
      },
      function(sender, args) {
          console.log(args.get_message());
      }
   );
});

Résultat

enter image description here

Les références

Autres conseils

Yes please find the Social feed REST API here.

Then consume the REST web service using jQuery as it tells here.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top