Comment récupérer le fil d'actualité à l'aide de JSOM
-
29-09-2020 - |
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 ?
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
Les références
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange