qol: impove plugin installation/update api
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
_restartTimer = new Timer((state) =>
|
||||
{
|
||||
if (delay == TimeSpan.Zero)
|
||||
HttpRuntime.UnloadAppDomain();
|
||||
//AppDomain.Unload(AppDomain.CurrentDomain);
|
||||
}, null, DelayMilliseconds, Timeout.Infinite);
|
||||
else
|
||||
{
|
||||
_restartTimer = new Timer((state) =>
|
||||
{
|
||||
HttpRuntime.UnloadAppDomain();
|
||||
}, 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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
<div id="plugins">
|
||||
@{
|
||||
if (Model.PluginManifests.Count == 0)
|
||||
{
|
||||
<div class="form" style="width: 450px; padding: 100px 0;">
|
||||
<h2>No Plugins are Installed</h2>
|
||||
</div>
|
||||
{
|
||||
<div class="form" style="width: 450px; padding: 100px 0;">
|
||||
<h2>No Plugins are Installed</h2>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -23,186 +23,191 @@
|
||||
|
||||
int itemsPerColumn = pluginGroups.Count / 3;
|
||||
var itemNextId = 0;
|
||||
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
@for (int i = 0; i < 3; i++)
|
||||
{
|
||||
<td>
|
||||
@{
|
||||
int itemsForThisColumn = itemsPerColumn + (pluginGroups.Count % 3 > i ? 1 : 0);
|
||||
for (int i2 = 0; i2 < itemsForThisColumn && itemNextId < pluginGroups.Count; i2++)
|
||||
|
||||
<table id="pageMenu">
|
||||
<tr>
|
||||
@for (int i = 0; i < 3; i++)
|
||||
{
|
||||
var pluginGroup = pluginGroups[itemNextId];
|
||||
itemNextId++;
|
||||
<div class="pageMenuArea">
|
||||
<h2>@pluginGroup.Key</h2>
|
||||
@foreach (var pluginDefinition in pluginGroup.Value.OrderBy(p => p.Name))
|
||||
<td>
|
||||
@{
|
||||
int itemsForThisColumn = itemsPerColumn + (pluginGroups.Count % 3 > i ? 1 : 0);
|
||||
for (int i2 = 0; i2 < itemsForThisColumn && itemNextId < pluginGroups.Count; i2++)
|
||||
{
|
||||
if (canConfig)
|
||||
{
|
||||
<a href="@Url.Action(MVC.Config.Plugins.Configure(pluginDefinition.Id))">
|
||||
<i class="fa fa-cogs"></i>
|
||||
<h3>@pluginDefinition.Name</h3>
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h3>@pluginDefinition.Name</h3>
|
||||
}
|
||||
<div class="pageMenuBlurb">
|
||||
<span class="pluginVersion">v@(pluginDefinition.VersionFormatted)</span> | @pluginDefinition.Author | <a href="@pluginDefinition.Url" title="More Information" target="_blank"><i class="fa fa-external-link"></i></a>
|
||||
var pluginGroup = pluginGroups[itemNextId];
|
||||
itemNextId++;
|
||||
<div class="pageMenuArea">
|
||||
<h2>@pluginGroup.Key</h2>
|
||||
@foreach (var pluginDefinition in pluginGroup.Value.OrderBy(p => p.Name))
|
||||
{
|
||||
if (canConfig)
|
||||
{
|
||||
<a href="@Url.Action(MVC.Config.Plugins.Configure(pluginDefinition.Id))">
|
||||
<i class="fa fa-cogs"></i>
|
||||
<h3>@pluginDefinition.Name</h3>
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h3>@pluginDefinition.Name</h3>
|
||||
}
|
||||
<div class="pageMenuBlurb">
|
||||
<span class="pluginVersion">v@(pluginDefinition.VersionFormatted)</span> | @pluginDefinition.Author | <a href="@pluginDefinition.Url" title="More Information" target="_blank"><i class="fa fa-external-link"></i></a>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
</table>
|
||||
if (canUninstall)
|
||||
{
|
||||
<div id="dialogUninstallPlugins" title="Uninstall Plugin">
|
||||
<div>
|
||||
@Html.DropDownList("uninstallPlugin", Model.PluginManifests.ToSelectListItems(null, true, "Select a Plugin to Uninstall"))
|
||||
</div>
|
||||
<div>
|
||||
<input id="uninstallPluginData" type="checkbox" /><label for="uninstallPluginData"> Uninstall Plugin Data</label>
|
||||
<div id="uninstallPluginDataAlert" class="info-box error" style="display: none;">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-exclamation-triangle"></i><strong>Warning:</strong> Data will be permanently deleted
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dialogUninstallPluginConfirm" title="Confirm Plugin Uninstall">
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>Are you sure you want to uninstall this plugin?
|
||||
</p>
|
||||
<h4 id="uninstallPluginConfirm"></h4>
|
||||
</div>
|
||||
<div id="uninstallPluginDataConfirm" class="info-box error" style="display: none;">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-exclamation-triangle"></i><strong>Warning:</strong> Data will be permanently deleted
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
// Uninstall
|
||||
var uninstallUrl = '@(Url.Action(MVC.API.Plugin.Uninstall()))/';
|
||||
var uninstallPlugin, uninstallPluginData, $dialogConfirm, uninstallPluginConfirm, uninstallPluginDataConfirm;
|
||||
|
||||
var pluginId, pluginName, pluginUninstallData;
|
||||
|
||||
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');
|
||||
|
||||
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");
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
</table>
|
||||
if (canUninstall)
|
||||
{
|
||||
<div id="dialogUninstallPlugins" title="Uninstall Plugin" class="dialog">
|
||||
<div>
|
||||
@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>
|
||||
<div id="uninstallPluginDataAlert" class="info-box error" style="display: none;">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-exclamation-triangle"></i><strong>Warning:</strong> Data will be permanently deleted
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<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?
|
||||
</p>
|
||||
<h4 id="uninstallPluginConfirm"></h4>
|
||||
</div>
|
||||
<div id="uninstallPluginDataConfirm" class="info-box error" style="display: none;">
|
||||
<p class="fa-p">
|
||||
<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 () {
|
||||
|
||||
let $dialog = null;
|
||||
|
||||
$('#buttonUninstall').on('click', function () {
|
||||
|
||||
if (!$dialog) {
|
||||
const $dialogConfirm = $('#dialogUninstallPluginConfirm').dialog({
|
||||
resizable: false,
|
||||
modal: true,
|
||||
width: 350,
|
||||
autoOpen: false,
|
||||
buttons: {
|
||||
"Confirm Uninstall": function () {
|
||||
$dialogConfirm.find('form').submit();
|
||||
$(this).dialog("disable");
|
||||
},
|
||||
Cancel: function () {
|
||||
$('#uninstallPluginData').prop('checked', false);
|
||||
$('#uninstallPluginDataAlert').hide();
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$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');
|
||||
|
||||
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 () {
|
||||
if ($(this).is(':checked')) {
|
||||
$('#uninstallPluginDataAlert').slideDown();
|
||||
} else {
|
||||
$('#uninstallPluginDataAlert').slideUp();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$dialog.dialog('open');
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
if (Model.PluginUpdates.Count > 0)
|
||||
{
|
||||
<div id="updateAvailableContainer">
|
||||
<i class="fa fa-cloud-download"></i>
|
||||
<div>@(Model.PluginUpdates.Count) plugin update@(Model.PluginUpdates.Count == 1 ? " is" : "s are") available</div>
|
||||
@if (canInstall)
|
||||
{
|
||||
using (Html.BeginForm(MVC.API.Plugin.UpdateAll()))
|
||||
{
|
||||
@Html.AntiForgeryToken()
|
||||
<button class="button small alert" type="submit">Update All</button>
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$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;
|
||||
$(this).dialog("disable");
|
||||
},
|
||||
Cancel: function () {
|
||||
uninstallPluginData.prop('checked', false);
|
||||
$('#uninstallPluginDataAlert').hide();
|
||||
$(this).dialog("close");
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="smallMessage">You do not have sufficient permission to install these updates.</div>
|
||||
}
|
||||
});
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
$(function () {
|
||||
var layout_PageHeading = $('#layout_PageHeading').height(80);
|
||||
var updateAvailableContainer = $('#updateAvailableContainer');
|
||||
updateAvailableContainer.appendTo(layout_PageHeading);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
uninstallPlugin = $('#uninstallPlugin');
|
||||
uninstallPluginData = $('#uninstallPluginData');
|
||||
uninstallPluginConfirm = $('#uninstallPluginConfirm');
|
||||
uninstallPluginDataConfirm = $('#uninstallPluginDataConfirm');
|
||||
|
||||
$('#buttonUninstall').click(function () {
|
||||
$dialog.dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#uninstallPluginData').change(function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$('#uninstallPluginDataAlert').slideDown();
|
||||
} else {
|
||||
$('#uninstallPluginDataAlert').slideUp();
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
if (Model.PluginUpdates.Count > 0)
|
||||
{
|
||||
<div id="updateAvailableContainer">
|
||||
<i class="fa fa-cloud-download"></i>
|
||||
<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")
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="smallMessage">You do not have sufficient permission to install these updates.</div>
|
||||
}
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
$(function () {
|
||||
var layout_PageHeading = $('#layout_PageHeading').height(80);
|
||||
var updateAvailableContainer = $('#updateAvailableContainer');
|
||||
updateAvailableContainer.appendTo(layout_PageHeading);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="actionBar">
|
||||
@if (canUninstall && Model.PluginManifests.Count > 0)
|
||||
{
|
||||
{
|
||||
@Html.ActionLinkButton("Uninstall Plugins", MVC.Config.Plugins.Index(), "buttonUninstall")
|
||||
}
|
||||
@if (canInstall)
|
||||
|
||||
@@ -73,18 +73,18 @@ WriteLiteral(">\r\n");
|
||||
#line 12 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
if (Model.PluginManifests.Count == 0)
|
||||
{
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
WriteLiteral(" <div");
|
||||
|
||||
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"
|
||||
@@ -96,60 +96,60 @@ WriteLiteral(">\r\n <h2>No Plugins are Installed</h2>\r\n </di
|
||||
|
||||
int itemsPerColumn = pluginGroups.Count / 3;
|
||||
var itemNextId = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <table");
|
||||
WriteLiteral(" <table");
|
||||
|
||||
WriteLiteral(" id=\"pageMenu\"");
|
||||
|
||||
WriteLiteral(">\r\n <tr>\r\n");
|
||||
WriteLiteral(">\r\n <tr>\r\n");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 29 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <td>\r\n");
|
||||
|
||||
|
||||
#line 32 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 32 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
int itemsForThisColumn = itemsPerColumn + (pluginGroups.Count % 3 > i ? 1 : 0);
|
||||
for (int i2 = 0; i2 < itemsForThisColumn && itemNextId < pluginGroups.Count; i2++)
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
var pluginGroup = pluginGroups[itemNextId];
|
||||
itemNextId++;
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
WriteLiteral(" <td>\r\n");
|
||||
|
||||
|
||||
#line 32 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 32 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
int itemsForThisColumn = itemsPerColumn + (pluginGroups.Count % 3 > i ? 1 : 0);
|
||||
for (int i2 = 0; i2 < itemsForThisColumn && itemNextId < pluginGroups.Count; i2++)
|
||||
{
|
||||
var pluginGroup = pluginGroups[itemNextId];
|
||||
itemNextId++;
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuArea\"");
|
||||
|
||||
WriteLiteral(">\r\n <h2>");
|
||||
WriteLiteral(">\r\n <h2>");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(pluginGroup.Key);
|
||||
Write(pluginGroup.Key);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -158,61 +158,61 @@ WriteLiteral("</h2>\r\n");
|
||||
|
||||
|
||||
#line 40 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 40 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
foreach (var pluginDefinition in pluginGroup.Value.OrderBy(p => p.Name))
|
||||
{
|
||||
if (canConfig)
|
||||
{
|
||||
foreach (var pluginDefinition in pluginGroup.Value.OrderBy(p => p.Name))
|
||||
{
|
||||
if (canConfig)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <a");
|
||||
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");
|
||||
WriteLiteral(">\r\n <i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-cogs\"");
|
||||
|
||||
WriteLiteral("></i>\r\n <h3>");
|
||||
WriteLiteral("></i>\r\n <h3>");
|
||||
|
||||
|
||||
#line 46 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(pluginDefinition.Name);
|
||||
Write(pluginDefinition.Name);
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</h3>\r\n </a>\r\n");
|
||||
WriteLiteral("</h3>\r\n </a>\r\n");
|
||||
|
||||
|
||||
#line 48 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <h3>");
|
||||
WriteLiteral(" <h3>");
|
||||
|
||||
|
||||
#line 51 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(pluginDefinition.Name);
|
||||
Write(pluginDefinition.Name);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -221,16 +221,16 @@ WriteLiteral("</h3>\r\n");
|
||||
|
||||
|
||||
#line 52 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" class=\"pageMenuBlurb\"");
|
||||
|
||||
WriteLiteral(">\r\n <span");
|
||||
WriteLiteral(">\r\n <span");
|
||||
|
||||
WriteLiteral(" class=\"pluginVersion\"");
|
||||
|
||||
@@ -238,7 +238,7 @@ WriteLiteral(">v");
|
||||
|
||||
|
||||
#line 54 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(pluginDefinition.VersionFormatted);
|
||||
Write(pluginDefinition.VersionFormatted);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -247,21 +247,21 @@ WriteLiteral("</span> | ");
|
||||
|
||||
|
||||
#line 54 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(pluginDefinition.Author);
|
||||
Write(pluginDefinition.Author);
|
||||
|
||||
|
||||
#line default
|
||||
#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\"");
|
||||
@@ -272,61 +272,64 @@ WriteLiteral("><i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-external-link\"");
|
||||
|
||||
WriteLiteral("></i></a>\r\n </div>\r\n");
|
||||
WriteLiteral("></i></a>\r\n </div>\r\n");
|
||||
|
||||
|
||||
#line 56 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n");
|
||||
WriteLiteral(" </div>\r\n");
|
||||
|
||||
|
||||
#line 58 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n");
|
||||
WriteLiteral("\r\n </td>\r\n");
|
||||
|
||||
|
||||
#line 61 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </tr>\r\n </table>\r\n");
|
||||
WriteLiteral(" </tr>\r\n </table>\r\n");
|
||||
|
||||
|
||||
#line 64 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
if (canUninstall)
|
||||
{
|
||||
if (canUninstall)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" id=\"dialogUninstallPlugins\"");
|
||||
|
||||
WriteLiteral(" title=\"Uninstall Plugin\"");
|
||||
|
||||
WriteLiteral(">\r\n <div>\r\n");
|
||||
WriteLiteral(" class=\"dialog\"");
|
||||
|
||||
WriteLiteral(" ");
|
||||
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\"");
|
||||
|
||||
@@ -336,7 +339,7 @@ WriteLiteral(" /><label");
|
||||
|
||||
WriteLiteral(" for=\"uninstallPluginData\"");
|
||||
|
||||
WriteLiteral("> Uninstall Plugin Data</label>\r\n <div");
|
||||
WriteLiteral("> Uninstall Plugin Data</label>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"uninstallPluginDataAlert\"");
|
||||
|
||||
@@ -344,41 +347,44 @@ WriteLiteral(" class=\"info-box error\"");
|
||||
|
||||
WriteLiteral(" style=\"display: none;\"");
|
||||
|
||||
WriteLiteral(">\r\n <p");
|
||||
WriteLiteral(">\r\n <p");
|
||||
|
||||
WriteLiteral(" class=\"fa-p\"");
|
||||
|
||||
WriteLiteral(">\r\n <i");
|
||||
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");
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" id=\"dialogUninstallPluginConfirm\"");
|
||||
|
||||
WriteLiteral(" title=\"Confirm Plugin Uninstall\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
WriteLiteral(" class=\"dialog\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"info-box\"");
|
||||
|
||||
WriteLiteral(">\r\n <p");
|
||||
WriteLiteral(">\r\n <p");
|
||||
|
||||
WriteLiteral(" class=\"fa-p\"");
|
||||
|
||||
WriteLiteral(">\r\n <i");
|
||||
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\"");
|
||||
|
||||
WriteLiteral("></h4>\r\n </div>\r\n <div");
|
||||
WriteLiteral("></h4>\r\n </div>\r\n <div");
|
||||
|
||||
WriteLiteral(" id=\"uninstallPluginDataConfirm\"");
|
||||
|
||||
@@ -386,95 +392,154 @@ WriteLiteral(" class=\"info-box error\"");
|
||||
|
||||
WriteLiteral(" style=\"display: none;\"");
|
||||
|
||||
WriteLiteral(">\r\n <p");
|
||||
WriteLiteral(">\r\n <p");
|
||||
|
||||
WriteLiteral(" class=\"fa-p\"");
|
||||
|
||||
WriteLiteral(">\r\n <i");
|
||||
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
|
||||
|
||||
#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
|
||||
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 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"
|
||||
}
|
||||
if (Model.PluginUpdates.Count > 0)
|
||||
{
|
||||
}
|
||||
if (Model.PluginUpdates.Count > 0)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" id=\"updateAvailableContainer\"");
|
||||
|
||||
WriteLiteral(">\r\n <i");
|
||||
WriteLiteral(">\r\n <i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-cloud-download\"");
|
||||
|
||||
WriteLiteral("></i>\r\n <div>");
|
||||
WriteLiteral("></i>\r\n <div>");
|
||||
|
||||
|
||||
#line 180 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(Model.PluginUpdates.Count);
|
||||
Write(Model.PluginUpdates.Count);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -483,7 +548,7 @@ WriteLiteral(" plugin update");
|
||||
|
||||
|
||||
#line 180 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
Write(Model.PluginUpdates.Count == 1 ? " is" : "s are");
|
||||
Write(Model.PluginUpdates.Count == 1 ? " is" : "s are");
|
||||
|
||||
|
||||
#line default
|
||||
@@ -492,64 +557,82 @@ WriteLiteral(" available</div>\r\n");
|
||||
|
||||
|
||||
#line 181 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 181 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
if (canInstall)
|
||||
{
|
||||
|
||||
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"
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
#line 185 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
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
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n");
|
||||
WriteLiteral(" </div>\r\n");
|
||||
|
||||
WriteLiteral(@" <script>
|
||||
(function () {
|
||||
$(function () {
|
||||
var layout_PageHeading = $('#layout_PageHeading').height(80);
|
||||
var updateAvailableContainer = $('#updateAvailableContainer');
|
||||
updateAvailableContainer.appendTo(layout_PageHeading);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
WriteLiteral(@" <script>
|
||||
(function () {
|
||||
$(function () {
|
||||
var layout_PageHeading = $('#layout_PageHeading').height(80);
|
||||
var updateAvailableContainer = $('#updateAvailableContainer');
|
||||
updateAvailableContainer.appendTo(layout_PageHeading);
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
");
|
||||
|
||||
|
||||
#line 199 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
}
|
||||
#line 203 "..\..\Areas\Config\Views\Plugins\Index.cshtml"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -562,28 +645,28 @@ 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)
|
||||
{
|
||||
{
|
||||
|
||||
|
||||
#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,15 +480,29 @@ 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
|
||||
@@ -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"
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
font-size: 50px;
|
||||
color: #e51400;
|
||||
}
|
||||
#updateAvailableContainer a.button {
|
||||
#updateAvailableContainer button {
|
||||
font-size: 12px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
color: @ButtonAlertColour;
|
||||
}
|
||||
|
||||
a.button {
|
||||
button {
|
||||
font-size: @FontSizeDefault;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
+1
-1
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user