Most information within Telligent Community and interactions with Telligent Community conform to the platform's content model, an abstract, global organization of all content and its associated containing structures to enable platform-level global functionality.
[toc]
What is the Content Model?
The content model is an abstract representation of general content and its containing structures. This generic model is used to provide global services from the platform to enable consistent interactions and simplified extensibility and integration. The content model consists of three types of entities: Containers, Applications, and Content.
Containers
Containers are the top-level organization structure for content. On their own, containers offer little functionality aside from organizing applications, which contain content. Containers can be nested within themselves to provide deep navigational structures.
Within Telligent Community, the most prominent example of a container is a group.
Applications
Applications exist within a single container and are the direct owner of content. That is, all content exists within a single application which exists within a single container. Within Telligent Community, applications are are used as the basis for URL routes and permissions/security.
An example of an application in Telligent Community is a blog.
Content
Content exists within a single application and represents authored, not structural, information. Most interactions within Telligent Community are on content. Likes, bookmarks, comments, activity streams, notifications, search, etc occurs on content.
An example of content in Telligent Community would be a post within a blog.
An Internal Example: Forums
The forums functionality in Telligent Community consists of the "Forums" application which references the "Groups" container (that is, a forum exists within a group). The forums functionality defines two types of content: "Forum Threads" and "Forum Replies" both of which are defined to exist within the "Forums" application. The forums application types, forum threads content type, and forum replies content type are registered with the Telligent Community platform via plugins, specifically as an IApplicationType (for the forum application type) and IContentType (for the forum thread and forum reply content types).
By integrating directly using server-installed code, the forums functionality connects its data store of forum data to the platform, extending the platform's "Group" container type and using other plugin types to define URLs/routes to access forum data through the Telligent Community web UI, permissions to secure forum data, as well as integrating with search, likes, bookmarks, and other platform-defined services.
An External Example: URLs
External integrations can also make use of the content model and associated platform services via an OAuth client and the REST API. An OAuth client is an external integration that uses the REST API to interact with the Telligent Community platform. OAuth clients can use Telligent Community services on external URLs.
In this situation, the OAuth client represents an application in the content model, extending the top-level group (container) of the Telligent Community site. URLs referenced using the OAuth client when interacting with the REST API are interpreted as content associated to the OAuth client within Telligent Community. This enables the OAuth client (external integration) to use platform-defined services such as bookmarking, liking, commenting, rating on data not stored within Telligent Community but able to be referenced by a unique URL.
Content and Core Services
As mentioned earlier, Telligent Community provides global services to interact with data socially. These "core services" act on the content model. Some examples of core services provided by the Telligent Community platform and how they interact with the content model is below:
How do I interact with the Content Model?
How you use the content model depends largely on whether you're implementing an external integration, integrating using plugins installed within Telligent Community, or using content while customizing the Telligent Community user interface:
Within an External Integration
With an external integration, you're primarily interacting with Telligent Community using the REST API. You can use the installed content model implementations (groups, blogs, forums, etc) regardless of how you authenticate your REST requests.
If you want to use Telligent Community services on external content, you can authenticate your REST requests using OAuth. By using an OAuth client, you can reference URLs within the context of your OAuth client and use Telligent Community's content services by providing a ContentUrl
to supporting services via their REST APIs.
Using Plugins Installed within Telligent Community
Plugins can interact with content generically or specifically using the in-process API to automate existing behavior or to expose functionality on existing content in a new way.
The Telligent Community platform also enables the implementation of new content model entities and types via content-related plugins: IContainerType, IApplicationType, and IContentType. These base plugin types can be extended to add support for Telligent Community services via extensions to these base plugin types. For an example of implementing a custom application, see Creating Custom Applications and Content and Adding Core Service Support to Content.
When Customizing the User Interface
Widgets can interact with content generically or specifically using the widget API to expose existing data in a new way.