I have recently been piloting Salesforce Communities to understand the impact on our Portals, and also (as an ISV) on our products.
Functionally, we can think of Salesforce Communities as an upgrade to Customer Portal / Partner Portal. However, Salesforce Communities represents a change in the positioning of "portal" functionality. There's a considerable gulf in user experience (look, feel and functionality) between internal org users and portal users. With Communities Salesforce is closing this gulf, making the experience across internal and external users seamless. We're familiar with the "App" selection menu which in a sense provides different perspectives within an org. Communities uses similar thinking - internal users will be able to switch their org perspective from "internal community" to "partner community" or to "customer community" or indeed any other Community they may have, from a Communities drop-down menu which is ever present at the top of the page. Within each community / perspective the experience will be very similar, and significantly this includes Chatter functionality.
Themes / Branding
Default styling is far prettier than default portal. There are some coarse customisation options: several colour schemes, override of 5 key colours, header (JPG, GIF, PNG or HTML) and footer (HTML) docs.
If you want to use an icon for a community theme:
- an image has to be loaded as a document
- the document has to be set as an "Externally Available Image"
Identification and Authentication
Authentication options for external users: Username/Password & SAML. When GA it should also support Auth Providers.
You can have pages that are accessible without requiring login.
Customer Chatter Groups
There is no connection / commonality between Customer Chatter Groups and Salesforce (Chatter) Communities. Chatter customers from private groups with customers can’t be added to communities.
Salesforce Communities and Chatter Customer Groups are complementary.
Chatter Customer Groups is designed for ad hoc collaboration with
external users on files and projects on a small scale. Salesforce
Chatter Communities is designed to create a highly engaging and
customized experience for anywhere from just a few hundred members to
millions of members.
Ideas
Ideas with Communities are not supported in the pilot, but should available in the Summer 13 release.
Chatter Groups
Posts to Chatter Groups are accessible only within the Community in which the Group was created. This principle includes the "Internal Community".
Once Communities are enabled, an Internal Community is established which contains all the org’s existing groups.
It is not possible to create a Chatter Group which is accessible from multiple communities - e.g. by the internal community and the customer community.
The only way to post to a Chatter Group is to first switch into that community.
Customers can create their own Chatter Groups within their community.
Chatter On Records
It is possible to Chatter on records in Communities. You can configure which objects are accessible to which communities, and in addition you can employ sharing techniques for controlling access to specific records for an object.
However, it is important to note that if a user has access to a record, and Chatter is enabled for the object type, then that user also has access to the chatter feed for that record. Records and accompanying Chatter posts span communities.
Visualforce, HTML an CSS
I have seen no problems so far with Visualforce transitioned from Portal to Communities, though there appear to be some issues with custom HTML/CSS which will need to be investigated further.
Documentation
This basically comes down to creating a custom theme layout with custom styling. You will need to create a lightning component that :
implements="forceCommunity:themeLayout"
as follows:
<aura:component implements="forceCommunity:themeLayout" access="global" description="Sample Custom Theme Layout">
<aura:attribute name="search" type="Aura.Component[]" required="false"/>
<aura:attribute name="profileMenu" type="Aura.Component[]" required="false"/>
<aura:attribute name="navBar" type="Aura.Component[]" required="false"/>
<aura:attribute name="newHeader" type="Aura.Component[]" required="false"/>
<div>
<div class="searchRegion">
{!v.search}
</div>
<div class="profileMenuRegion">
{!v.profileMenu}
</div>
<div class="navigation">
{!v.navBar}
</div>
<div class="newHeader">
{!v.newHeader}
</div>
<div class="mainContentArea">
{!v.body}
</div>
</div>
you will notice that each class represents a section/component of the standard layout, you can then add custom styling (and reorder the components) to fit your needs.
once you have created the above component, you will need to assign it to a layout under community settings:
and finally to the page in question:
Best Answer
ConnectApi.Communities.getCommunities() This works from developer console as well as from apex class, but you must use API 28.0 (or above).
Communities is called Network in the SObject API. So if you didn't want to use the ConnectApi, you could query Communities by running: