You need to sign in to do that
Don't have an account?
APEX and Visualforce integration
Hello folks. This is probably very simple...
I am creating an apex page, and want to imbed chatter updates into the page. The Apex code for the feed is as follows:
List<NewsFeed> myfeed = [SELECT Id, Type,
CreatedById, CreatedBy.FirstName, CreatedBy.LastName,
ParentId, Parent.Name,
Body, Title, LinkUrl, ContentData, ContentFileName,
(SELECT Id, FieldName, OldValue, NewValue
FROM FeedTrackedChanges ORDER BY Id DESC),
(SELECT Id, CommentBody, CreatedDate,
CreatedBy.FirstName, CreatedBy.LastName
FROM FeedComments ORDER BY CreatedDate LIMIT 10),
(SELECT CreatedBy.FirstName, CreatedBy.LastName
FROM FeedLikes)
FROM NewsFeed
ORDER BY CreatedDate DESC, Id DESC
LIMIT 20];
Of course, I can't place this code directly into a Visualforce <apex> tag (or can I?). So the question is, where do I save this code, and how do I reference it in my VF page?
Thanks!
You will need to use Visualforce and Apex Controllers / Extensions to accomplish this.
http://www.salesforce.com/us/developer/docs/pages/index.htm
Take a look at the section on Apex Custom Controllers and Extensions.
You will put your Query in the Apex Controller code. You will then bind a <apex:repeat> or <apex:datatable> to the List<NewsFeed> in the Controller.
All Answers
You will need to use Visualforce and Apex Controllers / Extensions to accomplish this.
http://www.salesforce.com/us/developer/docs/pages/index.htm
Take a look at the section on Apex Custom Controllers and Extensions.
You will put your Query in the Apex Controller code. You will then bind a <apex:repeat> or <apex:datatable> to the List<NewsFeed> in the Controller.
Use any chatter component as per your need.
See this
http://blog.sforce.com/sforce/2010/08/visualforce-components-for-salesforce-chatter-here-in-winter-11.html
You can get examples in Visualforce Developers guide.
Cory, i created the following class in my sandbox instance of Salesforce:
public class News {
public List<NewsFeed> myfeed;
public News() {
List<NewsFeed> myfeed = [SELECT Id, Type,
CreatedById, CreatedBy.FirstName, CreatedBy.LastName,
ParentId, Parent.Name,
Body, Title, LinkUrl, ContentData, ContentFileName,
(SELECT Id, FieldName, OldValue, NewValue
FROM FeedTrackedChanges ORDER BY Id DESC),
(SELECT Id, CommentBody, CreatedDate,
CreatedBy.FirstName, CreatedBy.LastName
FROM FeedComments ORDER BY CreatedDate LIMIT 10),
(SELECT CreatedBy.FirstName, CreatedBy.LastName
FROM FeedLikes)
FROM NewsFeed
ORDER BY CreatedDate DESC, Id DESC
LIMIT 20];
}
}
When I use <apex:repeat value="{!myfeed}">, I get an error that News.myfeed is an unknown property. Please help. Thanks.
Visualforce needs to have get and set for the property to be visible. This is similar to JSF if you know that.
public List<NewsFeed> myfeed {get;set;}
Sharma, none of the available chatter components provide the updates feed as needed. chatter:feed gives only items in a users feed, and does not iclude items he/she is following. Thanks nonetheless.
Thanks, Cory. Okay. No errors, but I can't seem to get any data out. Do you know the syntax for dumping the contents of my array?
Thanks again.
<apex:repeat value="{!myFeed}" var="currFeedItem">
<apex:outputText value="Body: {!currFeedItem.Body}"/><br/>
<apex:outputText value="ID: {!currFeedItem.Id}"/><br/>
</apex:repeat>
Hi Cory, i was also facing the same issues as Fredrege. I followed the steps told by you still i am getting an error. The error message is "CustomChatterController Compile Error: sObject type 'NewsFeed' is not supported".
Here is the code of my controller :
public class CustomChatterController {
public List<NewsFeed> myfeed {get;set;}
public CustomChatterController (){
List<NewsFeed> myfeed = [SELECT Id, Type,
CreatedById, CreatedBy.FirstName, CreatedBy.LastName,
ParentId, Parent.Name,
Body, Title, LinkUrl, ContentData, ContentFileName,
(SELECT Id, FieldName, OldValue, NewValue
FROM FeedTrackedChanges ORDER BY Id DESC),
(SELECT Id, CommentBody, CreatedDate,
CreatedBy.FirstName, CreatedBy.LastName
FROM FeedComments ORDER BY CreatedDate LIMIT 10),
(SELECT CreatedBy.FirstName, CreatedBy.LastName
FROM FeedLikes)
FROM NewsFeed
ORDER BY CreatedDate DESC, Id DESC
LIMIT 20];
}
}
Please Help.. Thanks.