Exam Area: Area 1 – Product Knowledge (15%) Reference: https://docs.developers.optimizely.com/content-management-system/docs/edit-view
The Edit View is the primary interface for content editors. It is a single-page application
(SPA) built on the Dojo JavaScript framework, accessible at /episerver/cms.
Edit View Layout:
┌─────────────────────────────────────────────────┐
│ Top Bar: Logo | View toggles | User menu │
├──────────────┬──────────────────────────────────┤
│ │ Content Editing Area │
│ Navigation │ ┌──────────────────────────┐ │
│ Panel │ │ On-page Edit / Preview │ │
│ (Left) │ │ or All Properties form │ │
│ │ └──────────────────────────┘ │
│ Page Tree ├──────────────────────────────────┤
│ Media │ Status Bar / Breadcrumbs │
│ Blocks │ │
│ Gadgets ├──────────────────────────────────┤
└──────────────┴──────────────────────────────────┘
│ Bottom: Language | Version | Publish toolbar │
└─────────────────────────────────────────────────┘
| Tab | Purpose |
|---|---|
| Page Tree | Browse site structure; drag to move pages |
| Media Library | Browse/upload images, videos, files |
| Blocks Library | Browse/create shared blocks |
| Search | Search content across the site |
| Gadgets | Customisable widgets (tasks, recent changes, etc.) |
| Mode | Icon | Description |
|---|---|---|
| On-page Edit | ✏️ | Live preview + in-place editing overlays |
| All Properties | ≡ | Full property form (like a traditional CMS form) |
| Preview | 👁 | Read-only preview, no overlays |
When in On-page Edit mode:
@* Enable on-page editing for a property *@
@Html.PropertyFor(m => m.CurrentPage.Heading)
@Html.PropertyFor(m => m.CurrentPage.MainContentArea)
The All Properties view renders all [Display] properties in a form:
// Properties appear in the form, grouped by tab
[Display(
Name = "Page Heading",
Description = "The H1 for this page",
GroupName = SystemTabNames.Content,
Order = 10)]
public virtual string Heading { get; set; }
[Display(GroupName = "SEO", Order = 100)]
public virtual string MetaTitle { get; set; }
[Display(GroupName = "SEO", Order = 110)]
public virtual string MetaDescription { get; set; }
Built-in tab names:
SystemTabNames.Content // "Content" tab
SystemTabNames.Settings // "Settings" tab
SystemTabNames.Shortcut // "Shortcut" tab
SystemTabNames.Archives // Not commonly used
Located at the bottom of the Edit View:
| Action | Description |
|---|---|
| Save | Save as draft (not published) |
| Publish | Publish the content immediately |
| Schedule | Schedule publish at a future date/time |
| Set to Ready for Review | Triggers approval workflow |
| Reject | Reject in approval workflow |
| Undo | Undo unpublished changes |
Every save creates a version. Access via the Version History panel:
Edit View → Top bar → (clock icon) Versions
→ Shows list of all versions
→ Click a version to compare
→ Restore a previous version
→ "Language versions" tab shows versions per language
// Programmatic access to versions
public class VersionService
{
private readonly IContentVersionRepository _versionRepo;
public VersionService(IContentVersionRepository versionRepo)
{
_versionRepo = versionRepo;
}
public IEnumerable<ContentVersion> GetVersions(ContentReference contentRef)
{
return _versionRepo.List(contentRef);
}
}
Editors can add comments to content and create tasks for other editors:
All Properties → Activity feed (bottom)
→ Add comment
→ @mention another editor
→ Create a task/reminder
The Assets Pane appears when editing a content area:
Right panel shows when editing a ContentArea:
→ Media tab: images, videos, documents
→ Blocks tab: shared blocks
→ Drag item from pane into ContentArea
// ContentArea accepts dragged-in media/blocks
[AllowedTypes(typeof(SiteBlockData), typeof(ImageData))]
[Display(GroupName = SystemTabNames.Content, Order = 50)]
public virtual ContentArea MainContentArea { get; set; }
Gadgets are mini-applications displayed in the Gadgets panel (left sidebar):
Built-in gadgets:
Custom gadget (developer):
[EPiServer.Shell.Web.ScriptModule(
ModuleName = "/Modules/MyGadgets")]
// → Add a Dojo widget registered as an EPiServer gadget
// See: 04_Framework_Components/05_extending_cms_ui_gadgets.md
Bottom bar → Language selector
→ Switch between configured languages
→ Shows translation status (✅ / ⚠️ missing / 🔒 no access)
→ Language access rights control which languages editors can edit
Top bar → Projects
→ Manage related content changes as a "project"
→ Publish all changes in a project together
→ Useful for coordinated campaign launches