Adding ActivityFeed to ASP.NET website
- Add OpenWaves.ActivityFeed and OpenWaves.ActivityFeed.Web NuGet packages
- Add references to required script dependencies to a page (or master page)
- json2
- jquery
- knockoutjs
- knockoutjs.mapping
- Add ActivityFeed to a page
<af:ActivityFeed runat="server" />
Markup rendered by the control can be customized using KnockoutJs syntax:
<af:ActivityFeed runat="server">
<Template>
<div>
<textarea data-bind="value: newMessageText" />
<a href="#" data-bind="click: postNewMessage">
<span>Share</span>
</a>
<af:UpdatesPlaceHolder runat="server" />
</div>
</Template>
<UpdateTemplate>
<li>
<span data-bind="text: publisher.name"></span>
<p data-bind="text: activity.text"></p>
...
<af:UpdateCommentsPlaceHolder runat="server" />
</li>
</UpdateTemplate>
<CommentTemplate>
<p data-bind="text: comment"></p>
...
</CommentTemplate>
</af:ActivityFeed>
Adding Subscribe/Unsubscribe (Follow/Unfollow) button to a user profile page
This is a button you want to add to a user profile page, a club page or SPSite page. It will allow users to easily subscribe to updates from a given topic.
- Add SubscribeToTopicButton to a page
<af:SubscribeToTopicButton runat="server" Topic="<%# Topic.FromUserId(userId) %>"/>
Markup rendered by the button can be customized.
<af:SubscribeToTopicButton runat="server" Topic="<%# Topic.FromUserId(userId) %>">
<img class="subscribe" src="follow.png" alt="Subscribe" />
<img class="unsubscribe" src="unfollow.png" alt="Unsubscribe" />
</af:SubscribeToTopicButton>
Integrating ActivityFeed with EPiServer
Connector will hook up to DataFactory.Instance.PagePublished event and will create an updated each time a page is published.
- Add OpenWaves.ActivityFeed.EPiServer NuGet package
- Configure how update title, description, thumbnail url, and topics should be extracted from published pages
ServiceLocator.SetResolver(new BasicResolver()
.Register<IActivityFeedPageDataExtractor>(new ActivityFeedPageDataExtractor {
Title = page => page.PageName,
Description = page => page["Description"].ToString(),
ThumbnailUrl = page => page["ImageUrl"].ToString(),
Topics = page.Category.AsTopics()
});
Getting all topics a user has subscribed to
var activityFeed = ServiceLocator.Resolve<IActivityFeedService>();
var topics = activityFeed.GetSubscriptions(user);
Subscribing and unsubscribing a user from topics
To subscribe a user to updates from another user:
var activityFeed = ServiceLocator.Resolve<IActivityFeedService>();
activityFeed.Subscribe(user, new [] { Topic.FromUserId(userToFollow) });
To subscribe a user to updates from EPiServer category
var category = ...;
var activityFeed = ServiceLocator.Resolve<IActivityFeedService>();
activityFeed.Subscribe(user, new [] { category.AsTopic() });