48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web.Mvc;
|
|
using Disco.Data.Repository;
|
|
|
|
namespace Disco.Services.Plugins
|
|
{
|
|
public abstract class PluginConfigurationHandler : IDisposable
|
|
{
|
|
public PluginManifest Manifest { get; set; }
|
|
|
|
public abstract PluginConfigurationHandlerGetResponse Get(DiscoDataContext dbContext, Controller controller);
|
|
public abstract bool Post(DiscoDataContext dbContext, FormCollection form, Controller controller);
|
|
|
|
public virtual void Dispose()
|
|
{
|
|
// Nothing in Base Class
|
|
}
|
|
|
|
protected PluginConfigurationHandlerGetResponse GetResponse(Type ViewType, dynamic ViewModel = null)
|
|
{
|
|
return new PluginConfigurationHandlerGetResponse(this.Manifest, ViewType, ViewModel);
|
|
}
|
|
public class PluginConfigurationHandlerGetResponse
|
|
{
|
|
public PluginManifest Manifest { get; set; }
|
|
public Type ViewType { get; set; }
|
|
public dynamic ViewModel { get; set; }
|
|
|
|
public PluginConfigurationHandlerGetResponse(PluginManifest Manifest, Type ViewType, dynamic ViewModel = 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.ViewModel = ViewModel;
|
|
}
|
|
}
|
|
}
|
|
}
|