Content - for Developers
- 100%
- 6.0
- Enterprise
- Community
Planned
Overview
The content class is a high level object model for representing content repository content. It provides high level data manipulation features like field data accessing and field validation, provides a generalized interface to be used on the UI and wraps a node object which provides basic storage-related features.
Details
Loading content
There are two ways to load content from the content repository with the content API. The easiest is to use the Load function:
var content = Content.Load("/Root/Sites/Default_Site/myContent");
If the specified content does not exist Content.Load will return with null.
You can also create the content wrapper over a node object:
var node = Node.LoadNode("/Root/Sites/Default_Site/myContent"); var content = Content.Create(node);
Operations with content
Modifying field data
You can use an indexer to access field data:
var content = Content.Load("/Root/IMS/Builtin/Portal/Admin"); content["Email"] = "admin@example.com"; content.Save();
Please note that in an enterprise environment you need to take concurrency into account when saving content.
It is also possible to access fields and use the retrieved field object to manipulate data:
var content = Content.Load("/Root/IMS/Builtin/Portal/Admin"); content.Fields["Email"].SetData("admin@example.com"); content.Save();
Copying, moving
Copying and moving is not available from the content API. Use the underlying content handler for these operations:
var content = Content.Load("/Root/Sites/Default_Site/myContent"); var target = Node.LoadNode("/Root/Sites/Default_Site/myFolder"); content.ContentHandler.MoveTo(target);
Deleting
To delete a content using the content API use the following syntax:
var content = Content.Load("/Root/Sites/Default_Site/myContent"); content.Delete();
To move to trash instead of permanently delete the content use the following overload:
content.Delete(false);
Versioning and approval
For versioned saving of a content you can use the following functions:
content.CheckOut(); // checks out the content to the current user content.UndoCheckOut(); // undos changes by the current user content.ForceUndoCheckOut(); // undos changes made by another user content.CheckIn(); // checks in the content content.Publish(); // publishes the content (only in major&minor versioning) content.Approve(); // approves the content content.Reject(); // rejects the content
Calling content.Save() will save the content in the appropriate version according to the versioning of the content. You can use the SaveSameVersion in order to save changes on the current version:
// versioning: none content.Save(); // from 1.0A to 1.0A content.SaveSameVersion(); // from 1.0A to 1.0A // versioning: major content.Save(); // from 1.0A to 2.0A content.SaveSameVersion(); // from 1.0A to 1.0A // versioning: major and minor content.Save(); // from 1.0A to 1.1D, from 1.1D to 1.2D, etc.. content.SaveSameVersion(); // from 1.0A to 1.0A, from 1.1D to 1.1D, etc..
Calling content.Save() on a locked content will always save on the current version:
// content.ContentHandler.Locked == true content.Save(); // from 2.0L to 2.0L, from 1.1L to 1.1L, etc..
There are also some helper properties to determine the current state of the content:
content.Approvable; // true if content is approvable content.Publishable; // true if content is publishable content.IsLatestVersion; // true if content object corresponds to the latest version content.IsLastPublicVersion; // true if content object corresponds to the last public version
Creating content
To create a new content using the content API, use the following syntax:
var content = Content.CreateNew("Car", parent, "MyCar"); content.Save();
It is also possible to create a node using the node API or content handler and create the content wrapper afterwards:
var parent = Node.LoadNode("/Root/IMS/Builtin/Portal"); var user = new User(parent); var content = Content.Create(user); content.Save();
Content and the UI
Content is the general object model for UI-related functions. For example you need a content object to create a contentview and visualize it on a page (eg.: in a portlet):
var content = Content.Load("/Root/Sites/Default_Site/myList/myContent"); var contentview = ContentView.Create(content, this.Page, ViewMode.InlineEdit); this.Controls.Add(contentview);
You can also reach the visualized content from the markup of a contentview:
<%= this.Content["Email"] %>
or:
<%=GetValue("Email") %>
To learn more about contentviews, read the following article:
Content and node
Content is a high-level object model wrapping the low-level storage model node. The wrapped node object is always accessible from the content interface:
var underlyingnode = content.ContentHandler;
To learn more about the low-level object and its capabilities, read the following article:
Example/Tutorials
There are no examples for this article.
Related links
References
There are no related external articles for this article.