qol: impove plugin installation/update api

This commit is contained in:
Gary Sharp
2024-12-11 15:13:26 +11:00
parent f36871abe2
commit 343f20980d
13 changed files with 606 additions and 504 deletions
+7 -3
View File
@@ -505,7 +505,7 @@ namespace Disco.Services.Plugins
#region Restart App
private static object _restartTimerLock = new object();
private static Timer _restartTimer;
internal static void RestartApp(int DelayMilliseconds)
internal static void RestartApp(TimeSpan delay)
{
lock (_restartTimerLock)
{
@@ -514,11 +514,15 @@ namespace Disco.Services.Plugins
_restartTimer.Dispose();
}
if (delay == TimeSpan.Zero)
HttpRuntime.UnloadAppDomain();
else
{
_restartTimer = new Timer((state) =>
{
HttpRuntime.UnloadAppDomain();
//AppDomain.Unload(AppDomain.CurrentDomain);
}, null, DelayMilliseconds, Timeout.Infinite);
}, null, (int)delay.TotalMilliseconds, Timeout.Infinite);
}
}
}
#endregion
@@ -46,7 +46,7 @@ namespace Disco.Services.Plugins
}
Status.Finished("Restarting Disco ICT, please wait...", "/Config/Plugins");
Plugins.RestartApp(2500);
Plugins.RestartApp(TimeSpan.FromSeconds(1));
}
public static ScheduledTaskStatus UninstallPlugin(PluginManifest Manifest, bool UninstallData)
+15 -10
View File
@@ -18,8 +18,9 @@ namespace Disco.Services.Plugins
protected override void ExecuteTask()
{
string pluginId = (string)ExecutionContext.JobDetail.JobDataMap["PluginId"];
string packageFilePath = (string)ExecutionContext.JobDetail.JobDataMap["PackageFilePath"];
var pluginId = (string)ExecutionContext.JobDetail.JobDataMap["PluginId"];
var packageFilePath = (string)ExecutionContext.JobDetail.JobDataMap["PackageFilePath"];
var immediateRestart = (bool)ExecutionContext.JobDetail.JobDataMap["ImmediateRestart"];
PluginLibraryManifestV2 libraryManifest;
PluginLibraryIncompatibility libraryIncompatibility;
@@ -89,7 +90,7 @@ namespace Disco.Services.Plugins
ExecuteTaskInternal(Status, pluginPackagesLocation, updatePlugins);
Status.Finished("Restarting Disco ICT, please wait...", "/Config/Plugins");
Plugins.RestartApp(2500);
Plugins.RestartApp(immediateRestart ? TimeSpan.Zero : TimeSpan.FromSeconds(1));
}
public static List<PluginManifest> OfflineInstalledPlugins(DiscoDataContext Database)
@@ -258,7 +259,7 @@ namespace Disco.Services.Plugins
}
}
private static ScheduledTaskStatus UpdateHelper(string PluginId = null, string PackageFilePath = null)
private static ScheduledTaskStatus UpdateHelper(string pluginId, string packageFilePath, bool immediateRestart)
{
if (ScheduledTasks.GetTaskStatuses(typeof(UpdatePluginTask)).Where(s => s.IsRunning).Count() > 0)
throw new InvalidOperationException("A plugin is already being Updated");
@@ -267,24 +268,28 @@ namespace Disco.Services.Plugins
if (ScheduledTasks.GetTaskStatuses(typeof(InstallPluginTask)).Where(s => s.IsRunning).Count() > 0)
throw new InvalidOperationException("A plugin is being Installed");
JobDataMap taskData = new JobDataMap() { { "PluginId", PluginId }, { "PackageFilePath", PackageFilePath } };
JobDataMap taskData = new JobDataMap() {
{ "PluginId", pluginId },
{ "PackageFilePath", packageFilePath },
{ "ImmediateRestart", immediateRestart },
};
var instance = new UpdatePluginTask();
return instance.ScheduleTask(taskData);
}
public static ScheduledTaskStatus UpdateLocalPlugin(string PluginId, string PackageFilePath)
public static ScheduledTaskStatus UpdateLocalPlugin(string pluginId, string packageFilePath, bool immediateRestart = false)
{
return UpdateHelper(PluginId, PackageFilePath);
return UpdateHelper(pluginId, packageFilePath, immediateRestart);
}
public static ScheduledTaskStatus UpdatePlugin(string PluginId)
public static ScheduledTaskStatus UpdatePlugin(string pluginId, bool immediateRestart = false)
{
return UpdateHelper(PluginId);
return UpdateHelper(pluginId, packageFilePath: null, immediateRestart);
}
public static ScheduledTaskStatus UpdateAllPlugins()
{
return UpdateHelper();
return UpdateHelper(pluginId: null, packageFilePath: null, immediateRestart: false);
}
}
}
@@ -34,7 +34,7 @@ namespace Disco.Services.Plugins
// Restart
Status.Finished("Restarting Disco ICT, please wait...", "/");
Plugins.RestartApp(2500);
Plugins.RestartApp(TimeSpan.FromSeconds(1));
}
public static ScheduledTaskStatus UpdateDiscoPlugins(bool ReturnExistingStatusIfRunning)
@@ -15,12 +15,12 @@ namespace Disco.Web.Areas.API.Controllers
public partial class PluginController : AuthorizedDatabaseController
{
[DiscoAuthorize(Claims.Config.Plugin.Install)]
public virtual ActionResult UpdateLibraryManifest(bool TryWaitingForCompletion = false)
public virtual ActionResult UpdateLibraryManifest(bool tryWaitingForCompletion = false)
{
var status = PluginLibraryUpdateTask.ScheduleNow();
// If upload takes <= 2 seconds, return back to Plugin Install (rather than Task Status)
if (TryWaitingForCompletion && status.WaitUntilFinished(TimeSpan.FromSeconds(3)) && status.TaskException == null)
if (tryWaitingForCompletion && status.WaitUntilFinished(TimeSpan.FromSeconds(3)) && status.TaskException == null)
{
return RedirectToAction(MVC.Config.Plugins.Install());
}
@@ -31,7 +31,7 @@ namespace Disco.Web.Areas.API.Controllers
}
}
[DiscoAuthorize(Claims.Config.Plugin.Install)]
[HttpPost, DiscoAuthorize(Claims.Config.Plugin.Install), ValidateAntiForgeryToken]
public virtual ActionResult UpdateAll()
{
var status = UpdatePluginTask.UpdateAllPlugins();
@@ -39,63 +39,39 @@ namespace Disco.Web.Areas.API.Controllers
return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId));
}
[DiscoAuthorize(Claims.Config.Plugin.Install)]
public virtual ActionResult Update(string PluginId)
[HttpPost, DiscoAuthorize(Claims.Config.Plugin.Install), ValidateAntiForgeryToken]
public virtual ActionResult Update(string pluginId)
{
if (string.IsNullOrEmpty(PluginId))
if (string.IsNullOrEmpty(pluginId))
throw new ArgumentNullException("PluginId");
var status = UpdatePluginTask.UpdatePlugin(PluginId);
var status = UpdatePluginTask.UpdatePlugin(pluginId);
return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId));
}
[DiscoAuthorizeAll(Claims.Config.Plugin.Install, Claims.Config.Plugin.InstallLocal)]
public virtual ActionResult UpdateLocal(string PluginId, HttpPostedFileBase Plugin)
{
if (string.IsNullOrEmpty(PluginId))
throw new ArgumentNullException("PluginId");
if (Plugin == null || Plugin.ContentLength <= 0 || string.IsNullOrWhiteSpace(Plugin.FileName))
throw new ArgumentException("A discoPlugin file must be uploaded", "Plugin");
var tempPluginLocation = Path.Combine(Database.DiscoConfiguration.PluginPackagesLocation, Path.GetFileName(Plugin.FileName));
if (!Directory.Exists(Database.DiscoConfiguration.PluginPackagesLocation))
Directory.CreateDirectory(Database.DiscoConfiguration.PluginPackagesLocation);
if (System.IO.File.Exists(tempPluginLocation))
System.IO.File.Delete(tempPluginLocation);
Plugin.SaveAs(tempPluginLocation);
var status = UpdatePluginTask.UpdateLocalPlugin(PluginId, tempPluginLocation);
return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId));
}
[DiscoAuthorize(Claims.Config.Plugin.Uninstall)]
public virtual ActionResult Uninstall(string id, bool UninstallData)
[HttpPost, DiscoAuthorize(Claims.Config.Plugin.Uninstall), ValidateAntiForgeryToken]
public virtual ActionResult Uninstall(string id, bool uninstallData)
{
if (string.IsNullOrEmpty(id))
throw new ArgumentNullException("id");
PluginManifest manifest = Plugins.GetPlugin(id);
var status = UninstallPluginTask.UninstallPlugin(manifest, UninstallData);
var status = UninstallPluginTask.UninstallPlugin(manifest, uninstallData);
return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId));
}
[DiscoAuthorize(Claims.Config.Plugin.Install)]
public virtual ActionResult Install(string PluginId)
[HttpPost, DiscoAuthorize(Claims.Config.Plugin.Install), ValidateAntiForgeryToken]
public virtual ActionResult Install(string pluginId)
{
if (string.IsNullOrEmpty(PluginId))
if (string.IsNullOrEmpty(pluginId))
throw new ArgumentNullException("PluginId", "A PluginId must be supplied");
var library = PluginLibrary.LoadManifest(Database);
var libraryIncompatibility = library.LoadIncompatibilityData();
var libraryItem = library.Plugins.FirstOrDefault(p => p.Id.Equals(PluginId));
var libraryItem = library.Plugins.FirstOrDefault(p => p.Id.Equals(pluginId));
if (libraryItem == null)
throw new ArgumentNullException("PluginId", "Plugin not found in library");
@@ -116,13 +92,13 @@ namespace Disco.Web.Areas.API.Controllers
return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId));
}
[DiscoAuthorizeAll(Claims.Config.Plugin.Install, Claims.Config.Plugin.InstallLocal)]
public virtual ActionResult InstallLocal(HttpPostedFileBase Plugin)
[HttpPost, DiscoAuthorizeAll(Claims.Config.Plugin.Install, Claims.Config.Plugin.InstallLocal), ValidateAntiForgeryToken]
public virtual ActionResult InstallLocal(HttpPostedFileBase plugin, bool immediateRestart = false)
{
if (Plugin == null || Plugin.ContentLength <= 0 || string.IsNullOrWhiteSpace(Plugin.FileName))
if (plugin == null || plugin.ContentLength <= 0 || string.IsNullOrWhiteSpace(plugin.FileName))
throw new ArgumentException("A discoPlugin file must be uploaded", "Plugin");
var tempPluginLocation = Path.Combine(Database.DiscoConfiguration.PluginPackagesLocation, Path.GetFileName(Plugin.FileName));
var tempPluginLocation = Path.Combine(Database.DiscoConfiguration.PluginPackagesLocation, Path.GetFileName(plugin.FileName));
if (!Directory.Exists(Database.DiscoConfiguration.PluginPackagesLocation))
Directory.CreateDirectory(Database.DiscoConfiguration.PluginPackagesLocation);
@@ -130,7 +106,7 @@ namespace Disco.Web.Areas.API.Controllers
if (System.IO.File.Exists(tempPluginLocation))
System.IO.File.Delete(tempPluginLocation);
Plugin.SaveAs(tempPluginLocation);
plugin.SaveAs(tempPluginLocation);
// Check for Install/Update
PluginManifest packageManifest;
@@ -151,7 +127,7 @@ namespace Disco.Web.Areas.API.Controllers
ScheduledTaskStatus status;
if (Plugins.PluginInstalled(packageManifest.Id))
status = UpdatePluginTask.UpdateLocalPlugin(packageManifest.Id, tempPluginLocation);
status = UpdatePluginTask.UpdateLocalPlugin(packageManifest.Id, tempPluginLocation, immediateRestart);
else
status = InstallPluginTask.InstallLocalPlugin(tempPluginLocation, true);
@@ -63,9 +63,9 @@
</table>
if (canUninstall)
{
<div id="dialogUninstallPlugins" title="Uninstall Plugin">
<div id="dialogUninstallPlugins" title="Uninstall Plugin" class="dialog">
<div>
@Html.DropDownList("uninstallPlugin", Model.PluginManifests.ToSelectListItems(null, true, "Select a Plugin to Uninstall"))
@Html.DropDownList("uninstallPlugin", Model.PluginManifests.OrderBy(p => p.Name).ToSelectListItems(null, true, "Select a Plugin to Uninstall"))
</div>
<div>
<input id="uninstallPluginData" type="checkbox" /><label for="uninstallPluginData"> Uninstall Plugin Data</label>
@@ -76,7 +76,7 @@
</div>
</div>
</div>
<div id="dialogUninstallPluginConfirm" title="Confirm Plugin Uninstall">
<div id="dialogUninstallPluginConfirm" title="Confirm Plugin Uninstall" class="dialog">
<div class="info-box">
<p class="fa-p">
<i class="fa fa-info-circle"></i>Are you sure you want to uninstall this plugin?
@@ -88,79 +88,74 @@
<i class="fa fa-exclamation-triangle"></i><strong>Warning:</strong> Data will be permanently deleted
</p>
</div>
@using (Html.BeginForm(MVC.API.Plugin.Uninstall(), FormMethod.Post))
{
@Html.AntiForgeryToken()
<input type="hidden" name="id" id="dialogUninstallPluginId" />
<input type="hidden" name="uninstallData" id="dialogUninstallPluginData" value="false" />
}
</div>
<script>
$(function () {
// Uninstall
var uninstallUrl = '@(Url.Action(MVC.API.Plugin.Uninstall()))/';
var uninstallPlugin, uninstallPluginData, $dialogConfirm, uninstallPluginConfirm, uninstallPluginDataConfirm;
var pluginId, pluginName, pluginUninstallData;
let $dialog = null;
var $dialog = $('#dialogUninstallPlugins').dialog({
resizable: false,
modal: true,
width: 350,
autoOpen: false,
buttons: {
"Uninstall": function () {
pluginId = uninstallPlugin.val();
pluginName = uninstallPlugin.find('option:selected').text();
pluginUninstallData = uninstallPluginData.is(':checked');
$('#buttonUninstall').on('click', function () {
if (!pluginId) {
alert('Select a plugin to uninstall');
} else {
uninstallPluginConfirm.text(pluginName + ' [' + pluginId + ']');
if (pluginUninstallData)
uninstallPluginDataConfirm.show();
else
uninstallPluginDataConfirm.hide();
$dialogConfirm.dialog('open');
$(this).dialog("close");
}
},
Cancel: function () {
uninstallPluginData.prop('checked', false);
$('#uninstallPluginDataAlert').hide();
$(this).dialog("close");
}
}
});
$dialogConfirm = $('#dialogUninstallPluginConfirm').dialog({
if (!$dialog) {
const $dialogConfirm = $('#dialogUninstallPluginConfirm').dialog({
resizable: false,
modal: true,
width: 350,
autoOpen: false,
buttons: {
"Confirm Uninstall": function () {
var url = uninstallUrl + pluginId;
if (pluginUninstallData)
url += '?UninstallData=true'
else
url += '?UninstallData=false'
window.location.href = url;
$dialogConfirm.find('form').submit();
$(this).dialog("disable");
},
Cancel: function () {
uninstallPluginData.prop('checked', false);
$('#uninstallPluginData').prop('checked', false);
$('#uninstallPluginDataAlert').hide();
$(this).dialog("close");
}
}
});
uninstallPlugin = $('#uninstallPlugin');
uninstallPluginData = $('#uninstallPluginData');
uninstallPluginConfirm = $('#uninstallPluginConfirm');
uninstallPluginDataConfirm = $('#uninstallPluginDataConfirm');
$dialog = $('#dialogUninstallPlugins').dialog({
resizable: false,
modal: true,
width: 350,
autoOpen: false,
buttons: {
"Uninstall": function () {
const $uninstallPlugin = $('#uninstallPlugin');
pluginId = $uninstallPlugin.val();
pluginName = $uninstallPlugin.find('option:selected').text();
pluginUninstallData = $('#uninstallPluginData').is(':checked');
$('#buttonUninstall').click(function () {
$dialog.dialog('open');
return false;
if (!pluginId) {
alert('Select a plugin to uninstall');
} else {
$('#uninstallPluginConfirm').text(pluginName + ' [' + pluginId + ']');
const $uninstallPluginDataConfirm = $('#uninstallPluginDataConfirm');
if (pluginUninstallData)
$uninstallPluginDataConfirm.show();
else
$uninstallPluginDataConfirm.hide();
$('#dialogUninstallPluginId').val(pluginId);
$('#dialogUninstallPluginData').val(pluginUninstallData ? 'true' : 'false');
$dialogConfirm.dialog('open');
$(this).dialog("close");
}
},
Cancel: function () {
$('#uninstallPluginData').prop('checked', false);
$('#uninstallPluginDataAlert').hide();
$(this).dialog("close");
}
}
});
$('#uninstallPluginData').change(function () {
@@ -170,6 +165,11 @@
$('#uninstallPluginDataAlert').slideUp();
}
});
}
$dialog.dialog('open');
return false;
});
});
</script>
}
@@ -180,7 +180,11 @@
<div>@(Model.PluginUpdates.Count) plugin update@(Model.PluginUpdates.Count == 1 ? " is" : "s are") available</div>
@if (canInstall)
{
@Html.ActionLinkSmallButton("Update Now", MVC.API.Plugin.UpdateAll(), null, "alert")
using (Html.BeginForm(MVC.API.Plugin.UpdateAll()))
{
@Html.AntiForgeryToken()
<button class="button small alert" type="submit">Update All</button>
}
}
else
{
@@ -196,6 +200,7 @@
});
})();
</script>
}
}
}
@@ -84,7 +84,7 @@ WriteLiteral(" class=\"form\"");
WriteLiteral(" style=\"width: 450px; padding: 100px 0;\"");
WriteLiteral(">\r\n <h2>No Plugins are Installed</h2>\r\n </div> \r\n");
WriteLiteral(">\r\n <h2>No Plugins are Installed</h2>\r\n </div>\r\n");
#line 18 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
@@ -174,14 +174,14 @@ WriteLiteral("</h2>\r\n");
#line hidden
WriteLiteral(" <a");
WriteAttribute("href", Tuple.Create(" href=\"", 1781), Tuple.Create("\"", 1850)
WriteAttribute("href", Tuple.Create(" href=\"", 1930), Tuple.Create("\"", 1999)
#line 44 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
, Tuple.Create(Tuple.Create("", 1788), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.Plugins.Configure(pluginDefinition.Id))
, Tuple.Create(Tuple.Create("", 1937), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Config.Plugins.Configure(pluginDefinition.Id))
#line default
#line hidden
, 1788), false)
, 1937), false)
);
WriteLiteral(">\r\n <i");
@@ -254,14 +254,14 @@ WriteLiteral("</span> | ");
#line hidden
WriteLiteral(" | <a");
WriteAttribute("href", Tuple.Create(" href=\"", 2474), Tuple.Create("\"", 2502)
WriteAttribute("href", Tuple.Create(" href=\"", 2719), Tuple.Create("\"", 2747)
#line 54 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
, Tuple.Create(Tuple.Create("", 2481), Tuple.Create<System.Object, System.Int32>(pluginDefinition.Url
, Tuple.Create(Tuple.Create("", 2726), Tuple.Create<System.Object, System.Int32>(pluginDefinition.Url
#line default
#line hidden
, 2481), false)
, 2726), false)
);
WriteLiteral(" title=\"More Information\"");
@@ -315,18 +315,21 @@ WriteLiteral(" id=\"dialogUninstallPlugins\"");
WriteLiteral(" title=\"Uninstall Plugin\"");
WriteLiteral(" class=\"dialog\"");
WriteLiteral(">\r\n <div>\r\n");
WriteLiteral(" ");
#line 68 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.DropDownList("uninstallPlugin", Model.PluginManifests.ToSelectListItems(null, true, "Select a Plugin to Uninstall")));
Write(Html.DropDownList("uninstallPlugin", Model.PluginManifests.OrderBy(p => p.Name).ToSelectListItems(null, true, "Select a Plugin to Uninstall")));
#line default
#line hidden
WriteLiteral("\r\n </div>\r\n <div>\r\n <input");
WriteLiteral("\r\n </div>\r\n <div>\r\n " +
"<input");
WriteLiteral(" id=\"uninstallPluginData\"");
@@ -353,7 +356,8 @@ WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-exclamation-triangle\"");
WriteLiteral("></i><strong>Warning:</strong> Data will be permanently deleted\r\n " +
" </p>\r\n </div>\r\n </div>\r\n </div>\r\n");
" </p>\r\n </div>\r\n </div>\r\n " +
" </div>\r\n");
WriteLiteral(" <div");
@@ -361,6 +365,8 @@ WriteLiteral(" id=\"dialogUninstallPluginConfirm\"");
WriteLiteral(" title=\"Confirm Plugin Uninstall\"");
WriteLiteral(" class=\"dialog\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" class=\"info-box\"");
@@ -373,8 +379,8 @@ WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-info-circle\"");
WriteLiteral("></i>Are you sure you want to uninstall this plugin?\r\n </p>\r\n " +
" <h4");
WriteLiteral("></i>Are you sure you want to uninstall this plugin?\r\n </p" +
">\r\n <h4");
WriteLiteral(" id=\"uninstallPluginConfirm\"");
@@ -395,63 +401,122 @@ WriteLiteral(">\r\n <i");
WriteLiteral(" class=\"fa fa-exclamation-triangle\"");
WriteLiteral("></i><strong>Warning:</strong> Data will be permanently deleted\r\n " +
"</p>\r\n </div>\r\n </div>\r\n");
WriteLiteral(" <script>\r\n $(function () {\r\n // Uninstall\r\n " +
" var uninstallUrl = \'");
" </p>\r\n </div>\r\n");
#line 95 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Url.Action(MVC.API.Plugin.Uninstall()));
#line 91 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line default
#line hidden
WriteLiteral("/\';\r\n var uninstallPlugin, uninstallPluginData, $dialogConfirm, un" +
"installPluginConfirm, uninstallPluginDataConfirm;\r\n\r\n var pluginI" +
"d, pluginName, pluginUninstallData;\r\n\r\n var $dialog = $(\'#dialogU" +
"ninstallPlugins\').dialog({\r\n resizable: false,\r\n " +
" modal: true,\r\n width: 350,\r\n autoOp" +
"en: false,\r\n buttons: {\r\n \"Uninstall\":" +
" function () {\r\n pluginId = uninstallPlugin.val();\r\n " +
" pluginName = uninstallPlugin.find(\'option:selected\')." +
"text();\r\n pluginUninstallData = uninstallPluginData.i" +
"s(\':checked\');\r\n\r\n if (!pluginId) {\r\n " +
" alert(\'Select a plugin to uninstall\');\r\n " +
" } else {\r\n uninstallPluginConfirm.text(plugin" +
"Name + \' [\' + pluginId + \']\');\r\n if (pluginUninst" +
"allData)\r\n uninstallPluginDataConfirm.show();" +
"\r\n else\r\n unin" +
"stallPluginDataConfirm.hide();\r\n\r\n $dialogConfirm" +
".dialog(\'open\');\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n },\r\n C" +
"ancel: function () {\r\n uninstallPluginData.prop(\'chec" +
"ked\', false);\r\n $(\'#uninstallPluginDataAlert\').hide()" +
";\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n }\r\n });\r\n\r\n $dialogConfirm" +
" = $(\'#dialogUninstallPluginConfirm\').dialog({\r\n resizable: f" +
"alse,\r\n modal: true,\r\n width: 350,\r\n " +
" autoOpen: false,\r\n buttons: {\r\n " +
" \"Confirm Uninstall\": function () {\r\n var url " +
"= uninstallUrl + pluginId;\r\n if (pluginUninstallData)" +
"\r\n url += \'?UninstallData=true\'\r\n " +
" else\r\n url += \'?UninstallData=false\'\r" +
"\n\r\n window.location.href = url;\r\n " +
" $(this).dialog(\"disable\");\r\n },\r\n " +
" Cancel: function () {\r\n uninstallPluginData.p" +
"rop(\'checked\', false);\r\n $(\'#uninstallPluginDataAlert" +
"\').hide();\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n }\r\n });\r\n\r\n unins" +
"tallPlugin = $(\'#uninstallPlugin\');\r\n uninstallPluginData = $(\'#u" +
"ninstallPluginData\');\r\n uninstallPluginConfirm = $(\'#uninstallPlu" +
"ginConfirm\');\r\n uninstallPluginDataConfirm = $(\'#uninstallPluginD" +
"ataConfirm\');\r\n\r\n $(\'#buttonUninstall\').click(function () {\r\n " +
" $dialog.dialog(\'open\');\r\n return false;\r\n " +
" });\r\n\r\n $(\'#uninstallPluginData\').change(function () " +
"{\r\n if ($(this).is(\':checked\')) {\r\n $(" +
"\'#uninstallPluginDataAlert\').slideDown();\r\n } else {\r\n " +
" $(\'#uninstallPluginDataAlert\').slideUp();\r\n " +
"}\r\n });\r\n });\r\n </script>\r\n");
#line 91 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
using (Html.BeginForm(MVC.API.Plugin.Uninstall(), FormMethod.Post))
{
#line default
#line hidden
#line 93 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 93 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line default
#line hidden
WriteLiteral(" <input");
WriteLiteral(" type=\"hidden\"");
WriteLiteral(" name=\"id\"");
WriteLiteral(" id=\"dialogUninstallPluginId\"");
WriteLiteral(" />\r\n");
WriteLiteral(" <input");
WriteLiteral(" type=\"hidden\"");
WriteLiteral(" name=\"uninstallData\"");
WriteLiteral(" id=\"dialogUninstallPluginData\"");
WriteLiteral(" value=\"false\"");
WriteLiteral(" />\r\n");
#line 96 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
#line default
#line hidden
WriteLiteral(" </div>\r\n");
WriteLiteral(" <script>\r\n $(function () {\r\n\r\n " +
" let $dialog = null;\r\n\r\n $(\'#buttonUninstall\').on(" +
"\'click\', function () {\r\n\r\n if (!$dialog) {\r\n " +
" const $dialogConfirm = $(\'#dialogUninstallPluginConfirm\')" +
".dialog({\r\n resizable: false,\r\n " +
" modal: true,\r\n width: 3" +
"50,\r\n autoOpen: false,\r\n " +
" buttons: {\r\n \"Confirm Unin" +
"stall\": function () {\r\n $dialogConfir" +
"m.find(\'form\').submit();\r\n $(this).di" +
"alog(\"disable\");\r\n },\r\n " +
" Cancel: function () {\r\n " +
" $(\'#uninstallPluginData\').prop(\'checked\', false);\r\n " +
" $(\'#uninstallPluginDataAlert\').hide();\r\n " +
" $(this).dialog(\"close\");\r\n " +
" }\r\n }\r\n " +
" });\r\n\r\n $dialog = $(\'#dialogUninstallPlug" +
"ins\').dialog({\r\n resizable: false,\r\n " +
" modal: true,\r\n wid" +
"th: 350,\r\n autoOpen: false,\r\n " +
" buttons: {\r\n \"Uninsta" +
"ll\": function () {\r\n const $uninstall" +
"Plugin = $(\'#uninstallPlugin\');\r\n plu" +
"ginId = $uninstallPlugin.val();\r\n plu" +
"ginName = $uninstallPlugin.find(\'option:selected\').text();\r\n " +
" pluginUninstallData = $(\'#uninstallPluginData\').is(\':che" +
"cked\');\r\n\r\n if (!pluginId) {\r\n " +
" alert(\'Select a plugin to uninstall\');\r" +
"\n } else {\r\n " +
" $(\'#uninstallPluginConfirm\').text(pluginName + \' [\' + plu" +
"ginId + \']\');\r\n const $uninstallP" +
"luginDataConfirm = $(\'#uninstallPluginDataConfirm\');\r\n " +
" if (pluginUninstallData)\r\n " +
" $uninstallPluginDataConfirm.show();\r\n " +
" else\r\n " +
" $uninstallPluginDataConfirm.hide();\r\n\r\n " +
" $(\'#dialogUninstallPluginId\').val(pluginId);\r\n " +
" $(\'#dialogUninstallPluginData\').val(pluginUninstallData " +
"? \'true\' : \'false\');\r\n\r\n $dialogC" +
"onfirm.dialog(\'open\');\r\n $(this)." +
"dialog(\"close\");\r\n }\r\n " +
" },\r\n Cancel: fun" +
"ction () {\r\n $(\'#uninstallPluginData\'" +
").prop(\'checked\', false);\r\n $(\'#unins" +
"tallPluginDataAlert\').hide();\r\n $(thi" +
"s).dialog(\"close\");\r\n }\r\n " +
" }\r\n });\r\n\r\n " +
" $(\'#uninstallPluginData\').change(function () {\r\n " +
" if ($(this).is(\':checked\')) {\r\n " +
" $(\'#uninstallPluginDataAlert\').slideDown();\r\n " +
" } else {\r\n $(\'#uninstallPluginD" +
"ataAlert\').slideUp();\r\n }\r\n " +
" });\r\n }\r\n\r\n " +
"$dialog.dialog(\'open\');\r\n return false;\r\n " +
" });\r\n });\r\n </script>\r\n");
#line 175 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
@@ -500,20 +565,37 @@ WriteLiteral(" available</div>\r\n");
#line 181 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
if (canInstall)
{
using (Html.BeginForm(MVC.API.Plugin.UpdateAll()))
{
#line default
#line hidden
#line 183 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.ActionLinkSmallButton("Update Now", MVC.API.Plugin.UpdateAll(), null, "alert"));
#line 185 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 183 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 185 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line default
#line hidden
WriteLiteral(" <button");
WriteLiteral(" class=\"button small alert\"");
WriteLiteral(" type=\"submit\"");
WriteLiteral(">Update All</button>\r\n");
#line 187 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
}
else
{
@@ -528,7 +610,7 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">You do not have sufficient permission to install these updates.</div>\r\n");
#line 188 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 192 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
@@ -548,7 +630,8 @@ WriteLiteral(@" <script>
");
#line 199 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 203 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
}
@@ -562,13 +645,13 @@ WriteLiteral(" class=\"actionBar\"");
WriteLiteral(">\r\n");
#line 204 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 209 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line default
#line hidden
#line 204 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 209 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
if (canUninstall && Model.PluginManifests.Count > 0)
{
@@ -576,14 +659,14 @@ WriteLiteral(">\r\n");
#line default
#line hidden
#line 206 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 211 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.ActionLinkButton("Uninstall Plugins", MVC.Config.Plugins.Index(), "buttonUninstall"));
#line default
#line hidden
#line 206 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 211 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
@@ -593,7 +676,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 208 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 213 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
if (canInstall)
{
@@ -601,14 +684,14 @@ WriteLiteral(" ");
#line default
#line hidden
#line 210 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 215 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
Write(Html.ActionLinkButton("Install Plugins", MVC.Config.Plugins.Install()));
#line default
#line hidden
#line 210 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
#line 215 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
}
@@ -65,7 +65,7 @@
}
</div>
<div id="dialogInstallPlugin" title="Install this Plugin?">
<div id="dialogInstallPlugin" title="Install this Plugin?" class="dialog">
<h2 id="dialogInstallPluginName"></h2>
<h4 id="dialogInstallPluginDetails"></h4>
@@ -75,13 +75,18 @@
<strong>Only Install plugins from a trusted source.</strong>
</p>
</div>
@using (Html.BeginForm(MVC.API.Plugin.Install(), FormMethod.Post))
{
@Html.AntiForgeryToken()
}
</div>
@if (canInstallLocal)
{
<div id="dialogUploadPlugin" title="Install Plugin Package">
<div id="dialogUploadPlugin" title="Install Plugin Package" class="dialog">
<div style="padding-bottom: 10px;">
@using (Html.BeginForm(MVC.API.Plugin.InstallLocal(), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<label for="pluginFile">Plugin Package: </label>
<input id="pluginFile" name="Plugin" type="file" accept=".discoPlugin" />
}
@@ -114,8 +119,10 @@
return;
}
$(this).dialog("disable");
window.location.href = $selectedPluginUrl;
$(this)
.find('form')
.attr('action', $selectedPluginUrl)
.submit();
},
Cancel: function () {
$selectedPlugin = null;
@@ -400,6 +400,8 @@ WriteLiteral(" id=\"dialogInstallPlugin\"");
WriteLiteral(" title=\"Install this Plugin?\"");
WriteLiteral(" class=\"dialog\"");
WriteLiteral(">\r\n <h2");
WriteLiteral(" id=\"dialogInstallPluginName\"");
@@ -422,10 +424,41 @@ WriteLiteral(" class=\"fa fa-exclamation-triangle\"");
WriteLiteral("></i><strong>Warning:</strong> All plugins run with the same level of network pri" +
"vileges as the Disco ICT Web App.<br />\r\n <strong>Only Install plugin" +
"s from a trusted source.</strong>\r\n </p>\r\n </div>\r\n</div>\r\n");
"s from a trusted source.</strong>\r\n </p>\r\n </div>\r\n");
#line 79 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 78 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line default
#line hidden
#line 78 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
using (Html.BeginForm(MVC.API.Plugin.Install(), FormMethod.Post))
{
#line default
#line hidden
#line 80 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 80 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
}
#line default
#line hidden
WriteLiteral("</div>\r\n");
#line 83 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
if (canInstallLocal)
{
@@ -438,6 +471,8 @@ WriteLiteral(" id=\"dialogUploadPlugin\"");
WriteLiteral(" title=\"Install Plugin Package\"");
WriteLiteral(" class=\"dialog\"");
WriteLiteral(">\r\n <div");
WriteLiteral(" style=\"padding-bottom: 10px;\"");
@@ -445,17 +480,31 @@ WriteLiteral(" style=\"padding-bottom: 10px;\"");
WriteLiteral(">\r\n");
#line 83 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 87 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line default
#line hidden
#line 83 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 87 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
using (Html.BeginForm(MVC.API.Plugin.InstallLocal(), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
#line default
#line hidden
#line 89 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 89 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line default
#line hidden
WriteLiteral(" <label");
@@ -477,7 +526,7 @@ WriteLiteral(" accept=\".discoPlugin\"");
WriteLiteral(" />\r\n");
#line 87 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 92 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
}
@@ -501,7 +550,7 @@ WriteLiteral("></i><strong>Warning:</strong> All plugins run with the same level
"iv>\r\n");
#line 96 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 101 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
}
@@ -515,35 +564,36 @@ WriteLiteral("<script>\r\n $(function () {\r\n var $selectedPlugin;\r\
" \"Install\": function () {\r\n if ($selectedPlugin == null || " +
"!$selectedPluginUrl) {\r\n $(this).dialog(\"close\");\r\n " +
" return;\r\n }\r\n $(this).di" +
"alog(\"disable\");\r\n\r\n window.location.href = $selectedPluginUr" +
"l;\r\n },\r\n Cancel: function () {\r\n " +
" $selectedPlugin = null;\r\n $(this).dialog(\"close\");\r\n " +
" }\r\n }\r\n });\r\n $(\'#pluginLibraryGroups\').find(" +
"\'a.pluginInstallLink\').click(function () {\r\n $this = $(this);\r\n\r\n " +
" $selectedPlugin = $this.closest(\'.pluginItem\');\r\n $selectedPl" +
"uginUrl = $this.attr(\'href\');\r\n\r\n $(\'#dialogInstallPluginName\').text(" +
"$selectedPlugin.find(\'.pluginName\').text());\r\n $(\'#dialogInstallPlugi" +
"nDetails\').text($selectedPlugin.find(\'.pluginId\').text() + \' | \' + $selectedPlug" +
"in.find(\'.pluginVersion\').text());\r\n\r\n $dialogInstall.dialog(\'option\'" +
", \'title\', \'Install this Plugin?\');\r\n $dialogInstall.dialog(\'open\');\r" +
"\n\r\n return false;\r\n });\r\n $(\'#pluginLibraryGroups\').fin" +
"d(\'a.pluginUpdateLink\').click(function () {\r\n $this = $(this);\r\n\r\n " +
" $selectedPlugin = $this.closest(\'.pluginItem\');\r\n $selectedP" +
"luginUrl = $this.attr(\'href\');\r\n\r\n $(\'#dialogInstallPluginName\').text" +
"($selectedPlugin.find(\'.pluginName\').text());\r\n $(\'#dialogInstallPlug" +
"inDetails\').text($selectedPlugin.find(\'.pluginId\').text() + \' | \' + $selectedPlu" +
"gin.find(\'.pluginVersion\').text());\r\n\r\n $dialogInstall.dialog(\'option" +
"\', \'title\', \'Update this Plugin?\');\r\n $dialogInstall.dialog(\'open\');\r" +
"\n\r\n return false;\r\n });\r\n\r\n");
"alog(\"disable\");\r\n $(this)\r\n .find(\'fo" +
"rm\')\r\n .attr(\'action\', $selectedPluginUrl)\r\n " +
" .submit();\r\n },\r\n Cancel: function () {" +
"\r\n $selectedPlugin = null;\r\n $(this).dialo" +
"g(\"close\");\r\n }\r\n }\r\n });\r\n $(\'#pluginLi" +
"braryGroups\').find(\'a.pluginInstallLink\').click(function () {\r\n $this" +
" = $(this);\r\n\r\n $selectedPlugin = $this.closest(\'.pluginItem\');\r\n " +
" $selectedPluginUrl = $this.attr(\'href\');\r\n\r\n $(\'#dialogInstal" +
"lPluginName\').text($selectedPlugin.find(\'.pluginName\').text());\r\n $(\'" +
"#dialogInstallPluginDetails\').text($selectedPlugin.find(\'.pluginId\').text() + \' " +
"| \' + $selectedPlugin.find(\'.pluginVersion\').text());\r\n\r\n $dialogInst" +
"all.dialog(\'option\', \'title\', \'Install this Plugin?\');\r\n $dialogInsta" +
"ll.dialog(\'open\');\r\n\r\n return false;\r\n });\r\n $(\'#plugin" +
"LibraryGroups\').find(\'a.pluginUpdateLink\').click(function () {\r\n $thi" +
"s = $(this);\r\n\r\n $selectedPlugin = $this.closest(\'.pluginItem\');\r\n " +
" $selectedPluginUrl = $this.attr(\'href\');\r\n\r\n $(\'#dialogInsta" +
"llPluginName\').text($selectedPlugin.find(\'.pluginName\').text());\r\n $(" +
"\'#dialogInstallPluginDetails\').text($selectedPlugin.find(\'.pluginId\').text() + \'" +
" | \' + $selectedPlugin.find(\'.pluginVersion\').text());\r\n\r\n $dialogIns" +
"tall.dialog(\'option\', \'title\', \'Update this Plugin?\');\r\n $dialogInsta" +
"ll.dialog(\'open\');\r\n\r\n return false;\r\n });\r\n\r\n");
#line 155 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 162 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line default
#line hidden
#line 155 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 162 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
if (canInstallLocal)
{
@@ -578,7 +628,7 @@ WriteLiteral(@"
");
#line 182 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 189 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
}
@@ -593,7 +643,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 186 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 193 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
Write(Html.ActionLinkButton("Update Plugin Library", MVC.API.Plugin.UpdateLibraryManifest()));
@@ -602,13 +652,13 @@ Write(Html.ActionLinkButton("Update Plugin Library", MVC.API.Plugin.UpdateLibrar
WriteLiteral("\r\n");
#line 187 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 194 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line default
#line hidden
#line 187 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 194 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
if (canInstallLocal)
{
@@ -616,14 +666,14 @@ WriteLiteral("\r\n");
#line default
#line hidden
#line 189 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 196 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
Write(Html.ActionLinkButton("Install Plugin Package", MVC.API.Plugin.InstallLocal(), "buttonUpload"));
#line default
#line hidden
#line 189 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
#line 196 "..\..\Areas\Config\Views\Plugins\Install.cshtml"
}
+1 -1
View File
@@ -95,7 +95,7 @@
font-size: 50px;
color: #e51400;
}
#updateAvailableContainer a.button {
#updateAvailableContainer button {
font-size: 12px;
margin-top: 8px;
}
+1 -1
View File
@@ -21,7 +21,7 @@
color: @ButtonAlertColour;
}
a.button {
button {
font-size: @FontSizeDefault;
margin-top: 8px;
}
File diff suppressed because one or more lines are too long
@@ -67,12 +67,6 @@ namespace Disco.Web.Areas.API.Controllers
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult UpdateLocal()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateLocal);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult Uninstall()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Uninstall);
@@ -108,7 +102,6 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string UpdateLibraryManifest = "UpdateLibraryManifest";
public readonly string UpdateAll = "UpdateAll";
public readonly string Update = "Update";
public readonly string UpdateLocal = "UpdateLocal";
public readonly string Uninstall = "Uninstall";
public readonly string Install = "Install";
public readonly string InstallLocal = "InstallLocal";
@@ -120,7 +113,6 @@ namespace Disco.Web.Areas.API.Controllers
public const string UpdateLibraryManifest = "UpdateLibraryManifest";
public const string UpdateAll = "UpdateAll";
public const string Update = "Update";
public const string UpdateLocal = "UpdateLocal";
public const string Uninstall = "Uninstall";
public const string Install = "Install";
public const string InstallLocal = "InstallLocal";
@@ -133,7 +125,7 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateLibraryManifest
{
public readonly string TryWaitingForCompletion = "TryWaitingForCompletion";
public readonly string tryWaitingForCompletion = "tryWaitingForCompletion";
}
static readonly ActionParamsClass_Update s_params_Update = new ActionParamsClass_Update();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -141,16 +133,7 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_Update
{
public readonly string PluginId = "PluginId";
}
static readonly ActionParamsClass_UpdateLocal s_params_UpdateLocal = new ActionParamsClass_UpdateLocal();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_UpdateLocal UpdateLocalParams { get { return s_params_UpdateLocal; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_UpdateLocal
{
public readonly string PluginId = "PluginId";
public readonly string Plugin = "Plugin";
public readonly string pluginId = "pluginId";
}
static readonly ActionParamsClass_Uninstall s_params_Uninstall = new ActionParamsClass_Uninstall();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -159,7 +142,7 @@ namespace Disco.Web.Areas.API.Controllers
public class ActionParamsClass_Uninstall
{
public readonly string id = "id";
public readonly string UninstallData = "UninstallData";
public readonly string uninstallData = "uninstallData";
}
static readonly ActionParamsClass_Install s_params_Install = new ActionParamsClass_Install();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -167,7 +150,7 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_Install
{
public readonly string PluginId = "PluginId";
public readonly string pluginId = "pluginId";
}
static readonly ActionParamsClass_InstallLocal s_params_InstallLocal = new ActionParamsClass_InstallLocal();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -175,7 +158,8 @@ namespace Disco.Web.Areas.API.Controllers
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_InstallLocal
{
public readonly string Plugin = "Plugin";
public readonly string plugin = "plugin";
public readonly string immediateRestart = "immediateRestart";
}
static readonly ViewsClass s_views = new ViewsClass();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
@@ -197,14 +181,14 @@ namespace Disco.Web.Areas.API.Controllers
public T4MVC_PluginController() : base(Dummy.Instance) { }
[NonAction]
partial void UpdateLibraryManifestOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, bool TryWaitingForCompletion);
partial void UpdateLibraryManifestOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, bool tryWaitingForCompletion);
[NonAction]
public override System.Web.Mvc.ActionResult UpdateLibraryManifest(bool TryWaitingForCompletion)
public override System.Web.Mvc.ActionResult UpdateLibraryManifest(bool tryWaitingForCompletion)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateLibraryManifest);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "TryWaitingForCompletion", TryWaitingForCompletion);
UpdateLibraryManifestOverride(callInfo, TryWaitingForCompletion);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "tryWaitingForCompletion", tryWaitingForCompletion);
UpdateLibraryManifestOverride(callInfo, tryWaitingForCompletion);
return callInfo;
}
@@ -220,64 +204,52 @@ namespace Disco.Web.Areas.API.Controllers
}
[NonAction]
partial void UpdateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string PluginId);
partial void UpdateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string pluginId);
[NonAction]
public override System.Web.Mvc.ActionResult Update(string PluginId)
public override System.Web.Mvc.ActionResult Update(string pluginId)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Update);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "PluginId", PluginId);
UpdateOverride(callInfo, PluginId);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "pluginId", pluginId);
UpdateOverride(callInfo, pluginId);
return callInfo;
}
[NonAction]
partial void UpdateLocalOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string PluginId, System.Web.HttpPostedFileBase Plugin);
partial void UninstallOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, bool uninstallData);
[NonAction]
public override System.Web.Mvc.ActionResult UpdateLocal(string PluginId, System.Web.HttpPostedFileBase Plugin)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateLocal);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "PluginId", PluginId);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Plugin", Plugin);
UpdateLocalOverride(callInfo, PluginId, Plugin);
return callInfo;
}
[NonAction]
partial void UninstallOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, bool UninstallData);
[NonAction]
public override System.Web.Mvc.ActionResult Uninstall(string id, bool UninstallData)
public override System.Web.Mvc.ActionResult Uninstall(string id, bool uninstallData)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Uninstall);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "UninstallData", UninstallData);
UninstallOverride(callInfo, id, UninstallData);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "uninstallData", uninstallData);
UninstallOverride(callInfo, id, uninstallData);
return callInfo;
}
[NonAction]
partial void InstallOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string PluginId);
partial void InstallOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string pluginId);
[NonAction]
public override System.Web.Mvc.ActionResult Install(string PluginId)
public override System.Web.Mvc.ActionResult Install(string pluginId)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Install);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "PluginId", PluginId);
InstallOverride(callInfo, PluginId);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "pluginId", pluginId);
InstallOverride(callInfo, pluginId);
return callInfo;
}
[NonAction]
partial void InstallLocalOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, System.Web.HttpPostedFileBase Plugin);
partial void InstallLocalOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, System.Web.HttpPostedFileBase plugin, bool immediateRestart);
[NonAction]
public override System.Web.Mvc.ActionResult InstallLocal(System.Web.HttpPostedFileBase Plugin)
public override System.Web.Mvc.ActionResult InstallLocal(System.Web.HttpPostedFileBase plugin, bool immediateRestart)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.InstallLocal);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Plugin", Plugin);
InstallLocalOverride(callInfo, Plugin);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "plugin", plugin);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "immediateRestart", immediateRestart);
InstallLocalOverride(callInfo, plugin, immediateRestart);
return callInfo;
}