I'm developing a custom application type using IManageableApplicationType (Version 2). Create works perfectly, but Edit does not display control panel categories.
Current Behavior
Create (Works):
- URL: #_cptype=panel&_cpcontexttype=Container&_cppanelid=...
- Control panel opens with configuration fields
- Event Log shows: GetCreateConfiguration returned 1 property groups
Edit (Fails):
- Initial URL: #_cptype=category&_cpcontexttype=Application&_cpcontextid={app-type-guid}
- Redirects to: #_cptype=panel&_cpcontexttype=Container&_cppanelid=...
- No control panel categories appear
- Event Logs show CanEdit and Get are called, but ConfigurationOptions and GetEditConfiguration are never accessed
Blog Application Edit (For Comparison):
- URL stays at: #_cptype=category&_cpcontexttype=Application&_cpcontextid={blog-app-type-guid}
- Control panel sidebar shows categories (Blog Options, Post Options, Posts, etc.)
- No redirect occurs
Implementation
public class AnalogDoceboApplicationType : IManageableApplicationType, ITranslatablePlugin
{
public Guid ApplicationTypeId => new Guid("026019E1-1A2E-4716-9429-BB7B308A4E94");
public PropertyGroup[] ConfigurationOptions { get { return GetConfigurationProperties(); } }
public bool CanManage(int userId, Guid applicationId) { return true; }
public bool CanEdit(int userId, Guid applicationId) { return true; }
// Works - called during Create
public PropertyGroup[] GetCreateConfiguration(int userId, Guid containerTypeId, Guid containerId)
{
return GetConfigurationProperties(); // Returns catalog_id, catalog_name, app_name
}
public IApplication Create(int userId, Guid containerTypeId, Guid containerId, IReadOnlyConfigurationData data)
{
// Successfully creates application
}
// Never called
public PropertyGroup[] GetEditConfiguration(int userId, Guid applicationId)
{
// Pre-populates PropertyGroups with current values from database
}
// Never called
public void Update(int userId, Guid applicationId, IReadOnlyConfigurationData data)
{
// Updates database with new values
}
}
The IApplication implementation has a valid Url property and properly set Container.
What I've Verified
- IApplication.Url is not null - returns valid URL
- IApplication.Container is properly set
- CanEdit returns true for administrators
- Tried CanManage returning both true and false - no difference
- Added ConfigurationOptions to both ApplicationType and Application classes - never accessed
Questions
1. How do custom IManageableApplicationType implementations register control panel categories for the Edit button?
2. Is there a separate interface (like IApplicationControlPanelCategories) needed to register control panel categories for the Application context type?
3. Are GetEditConfiguration and Update methods part of the standard IManageableApplicationType interface? The documentation doesn't mention them.
4. Why does Create use a Container-level panel while Edit tries to use an Application-level category? Is this expected behavior?
5. Is Edit functionality for custom IManageableApplicationType applications supported the same way as built-in applications?