164 lines
7.1 KiB
Plaintext
164 lines
7.1 KiB
Plaintext
@model Disco.Web.Areas.Config.Models.Plugins.IndexViewModel
|
|
@using Disco.Services.Plugins;
|
|
@{
|
|
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Plugins");
|
|
}
|
|
<div id="plugins">
|
|
@{
|
|
if (Model.PluginManifests.Count == 0)
|
|
{
|
|
<div class="form" style="width: 450px; padding: 100px 0;">
|
|
<h2>No Plugins are Installed</h2>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
var pluginGroups = Model.PluginManifestsByType;
|
|
|
|
|
|
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++)
|
|
{
|
|
var pluginGroup = pluginGroups[itemNextId];
|
|
itemNextId++;
|
|
<div class="pageMenuArea">
|
|
<h2>@Plugins.PluginFeatureCategoryDisplayName(pluginGroup.Item1)</h2>
|
|
@foreach (var pluginDefinition in pluginGroup.Item2)
|
|
{
|
|
<a href="@Url.Action(MVC.Config.Plugins.Configure(pluginDefinition.Id))">
|
|
<h3>@pluginDefinition.Name</h3>
|
|
</a>
|
|
<div class="pageMenuBlurb">
|
|
<span class="pluginId">@pluginDefinition.Id</span> | <span class="pluginVersion">v@(pluginDefinition.VersionFormatted)</span> | @pluginDefinition.Author | <a href="@pluginDefinition.Url" target="_blank">More Information</a>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
}
|
|
</td>
|
|
}
|
|
</tr>
|
|
</table>
|
|
<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" style="display: none; padding: 0.7em 0.7em; margin-top: 8px;" class="ui-state-error ui-corner-all">
|
|
<span style="margin-right: 0.3em; float: left;" class="ui-icon ui-icon-alert"></span>NOTE: Data will be permanently deleted
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="dialogUninstallPluginConfirm" title="Confirm Plugin Uninstall">
|
|
<div style="padding: 0.7em 0.7em; margin-top: 8px;" class="ui-state-highlight ui-corner-all">
|
|
<span style="margin-right: 0.3em; float: left;" class="ui-icon ui-icon-help"></span>Are you sure you want to uninstall this plugin?
|
|
<h4 id="uninstallPluginConfirm"></h4>
|
|
</div>
|
|
<div id="uninstallPluginDataConfirm" style="display: none; padding: 0.7em 0.7em; margin-top: 8px;" class="ui-state-error ui-corner-all">
|
|
<span style="margin-right: 0.3em; float: left;" class="ui-icon ui-icon-alert"></span>NOTE: Data will be permanently deleted
|
|
</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.removeAttr('checked');
|
|
$('#uninstallPluginDataAlert').hide();
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
|
|
$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.removeAttr('checked');
|
|
$('#uninstallPluginDataAlert').hide();
|
|
$(this).dialog("close");
|
|
}
|
|
}
|
|
});
|
|
|
|
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>
|
|
}
|
|
}
|
|
</div>
|
|
<div class="actionBar">
|
|
@if (Model.PluginManifests.Count > 0)
|
|
{
|
|
@Html.ActionLinkButton("Uninstall Plugins", MVC.Config.Plugins.Index(), "buttonUninstall")
|
|
}
|
|
@Html.ActionLinkButton("Install Plugins", MVC.Config.Plugins.Install())
|
|
</div>
|