Files
Disco/Disco.Services/Plugins/PluginConfigurationHandler.cs
2025-07-20 13:47:56 +10:00

51 lines
1.9 KiB
C#

using Disco.Data.Repository;
using System;
using System.Web.Mvc;
namespace Disco.Services.Plugins
{
public abstract class PluginConfigurationHandler : IDisposable
{
public PluginManifest Manifest { get; set; }
public abstract PluginConfigurationHandlerGetResponse Get(DiscoDataContext Database, Controller controller);
public abstract bool Post(DiscoDataContext Database, FormCollection form, Controller controller);
public virtual void Dispose()
{
// Nothing in Base Class
}
[Obsolete("Use: Response<ViewType>(dynamic ViewModel)")]
protected PluginConfigurationHandlerGetResponse GetResponse(Type ViewType, dynamic ViewModel = null)
{
return new PluginConfigurationHandlerGetResponse(Manifest, ViewType, ViewModel);
}
protected PluginConfigurationHandlerGetResponse Response<ViewType>(dynamic Model = null) where ViewType : WebViewPage
{
return new PluginConfigurationHandlerGetResponse(Manifest, typeof(ViewType), Model);
}
public class PluginConfigurationHandlerGetResponse
{
public PluginManifest Manifest { get; set; }
public Type ViewType { get; set; }
public dynamic Model { get; set; }
public PluginConfigurationHandlerGetResponse(PluginManifest Manifest, Type ViewType, dynamic Model = null)
{
if (ViewType == null)
throw new ArgumentNullException("ViewType");
if (!typeof(WebViewPage).IsAssignableFrom(ViewType))
throw new ArgumentException("The PluginConfigurationHandler ViewType must inherit System.Web.Mvc.WebViewPage", "ViewType");
this.Manifest = Manifest;
this.ViewType = ViewType;
this.Model = Model;
}
}
}
}