Cleaned up Quality partial page.

Fixed the sortable, so multiple user profiles correctly update order (and save), user profile sortable is no long connected.
pull/4/head
markus101 14 years ago
parent e7cbc4cbcf
commit baeda11ece

@ -137,6 +137,15 @@ namespace NzbDrone.Web.Controllers
return PartialView(); return PartialView();
} }
public QualityModel GetUpdatedProfileList()
{
var profiles = _qualityProvider.GetAllProfiles().ToList();
var defaultQualityProfileId = Convert.ToInt32(_configProvider.GetValue("DefaultQualityProfile", profiles[0].ProfileId, true));
var selectList = new SelectList(profiles, "ProfileId", "Name");
return new QualityModel {DefaultProfileId = defaultQualityProfileId, SelectList = selectList};
}
[HttpPost] [HttpPost]
public ActionResult Index(SettingsModel data) public ActionResult Index(SettingsModel data)
{ {

@ -270,6 +270,7 @@
<Content Include="Views\Series\EpisodeDetail.ascx" /> <Content Include="Views\Series\EpisodeDetail.ascx" />
<Content Include="Views\Series\index.aspx" /> <Content Include="Views\Series\index.aspx" />
<Content Include="Views\Series\Unmapped.aspx" /> <Content Include="Views\Series\Unmapped.aspx" />
<Content Include="Views\Settings\Copy of UserProfileSection.ascx" />
<Content Include="Views\Settings\Downloads.ascx" /> <Content Include="Views\Settings\Downloads.ascx" />
<Content Include="Views\Settings\General.ascx" /> <Content Include="Views\Settings\General.ascx" />
<Content Include="Views\Settings\Index.aspx" /> <Content Include="Views\Settings\Index.aspx" />

@ -29,7 +29,7 @@
<% using (Html.BeginForm("SaveDownloads", "Settings", FormMethod.Post, new { id = "form", name = "form" })) <% using (Html.BeginForm("SaveDownloads", "Settings", FormMethod.Post, new { id = "form", name = "form" }))
{%> {%>
<%: Html.ValidationSummary(true, "Unable to save your settings. Please correct the errors and try again.") %> <%--<%: Html.ValidationSummary(true, "Unable to save your settings. Please correct the errors and try again.") %>--%>
<fieldset> <fieldset>
<legend>Download Settings</legend> <legend>Download Settings</legend>

@ -6,32 +6,14 @@
$(document).ready(function () { $(document).ready(function () {
var options = { var options = {
target: '#result', target: '#result',
beforeSerialize: saveOrder,
beforeSubmit: showRequest, beforeSubmit: showRequest,
success: showResponse, success: showResponse,
type: 'post', type: 'post',
resetForm: false resetForm: false
}; };
$('#form').ajaxForm(options); $('#form').ajaxForm(options);
$.simpledropdown("#dropdown1");
}); });
function saveOrder(jqForm, options) {
//Save the order of the sortable
var sortResult = $('#sortable').sortable("toArray");
var firstPart = "Indexers_";
var secondPart = "__Order";
jQuery.each(sortResult, function (index, value) {
var id = firstPart + value + secondPart;
var newValue = index + 1;
$("#" + id).val(newValue);
});
}
function showRequest(formData, jqForm, options) { function showRequest(formData, jqForm, options) {
$("#result").empty().html('Saving...'); $("#result").empty().html('Saving...');
$("#form :input").attr("disabled", true); $("#form :input").attr("disabled", true);
@ -40,26 +22,10 @@
function showResponse(responseText, statusText, xhr, $form) { function showResponse(responseText, statusText, xhr, $form) {
$("#result").empty().html(responseText); $("#result").empty().html(responseText);
$("#form :input").attr("disabled", false); $("#form :input").attr("disabled", false);
} }
</script> </script>
<style type="text/css">
#sortable { list-style-type: none; margin: 0; padding: 0; width: 30%; }
#sortable li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; height: 1.5em; }
#sortable li { height: 1.5em; line-height: 1.2em; }
.ui-state-highlight { height: 1.5em; line-height: 1.2em; }
</style>
<script type="text/javascript">
$(function () {
$("#sortable").sortable({
placeholder: "ui-state-highlight"
});
$("#sortable").disableSelection();
});
</script>
<% using (Html.BeginForm("SaveQuality", "Settings", FormMethod.Post, new { id = "form", name = "form" })) <% using (Html.BeginForm("SaveQuality", "Settings", FormMethod.Post, new { id = "form", name = "form" }))
{%> {%>
<fieldset> <fieldset>

@ -3,40 +3,50 @@
<%@ Import Namespace="NzbDrone.Core.Repository.Quality" %> <%@ Import Namespace="NzbDrone.Core.Repository.Quality" %>
<% using (Html.BeginCollectionItem("UserProfiles")) <% using (Html.BeginCollectionItem("UserProfiles"))
{ %> { %>
<%
var idClean = ViewData.TemplateInfo.HtmlFieldPrefix.Replace('[', '_').Replace(']', '_');
string sortable1 = String.Format("{0}_sortable1", idClean);
string sortable2 = String.Format("{0}_sortable2", idClean);
string allowedStringName = String.Format("{0}_AllowedString", idClean);
string connectedSortable = String.Format("connected{0}", idClean);
%>
<style type="text/css"> <style type="text/css">
#sortable1, #sortable2 { list-style-type: none; margin-right: 10px; background: #eee; padding-left: 5px; padding-right: 5px; padding-top: 0px; padding-bottom: 6px; width: 107px; margin-bottom: 3px; } .sortable1, .sortable2 { list-style-type: none; margin-right: 10px; background: #eee; padding-left: 5px; padding-right: 5px; padding-top: 0px; padding-bottom: 6px; width: 107px; margin-bottom: 3px; }
.allowedQualities, .otherQualities { list-style-type: none; float: left; margin-right: 10px; background: #eee; padding-left: 5px; padding-right: 5px; padding-top:6px; width: 112px; -khtml-border-radius:8px;border-radius:8px;-moz-border-radius:8px;-webkit-border-radius:8px; } .allowedQualities, .otherQualities { list-style-type: none; float: left; margin-right: 10px; background: #eee; padding-left: 5px; padding-right: 5px; padding-top:6px; width: 112px; -khtml-border-radius:8px;border-radius:8px;-moz-border-radius:8px;-webkit-border-radius:8px; }
#sortable1 li, #sortable2 li { margin: 5px; margin-left: 0px; padding: 0px; font-size: 1.2em; width: 100px; -khtml-border-radius:8px;border-radius:8px;-moz-border-radius:8px;-webkit-border-radius:8px; } .sortable1 li, .sortable2 li { margin: 5px; margin-left: 0px; padding: 0px; font-size: 1.2em; width: 100px; -khtml-border-radius:8px;border-radius:8px;-moz-border-radius:8px;-webkit-border-radius:8px; }
#sortable1 li { background: #ddd; } .sortable1 li { background: #ddd; }
#sortable2 li { background: #DAA2A2; } .sortable2 li { background: #DAA2A2; }
.sortableHeader { margin:2px; margin-left:12px } .sortableHeader { margin:2px; margin-left:12px }
#sortable1 li.ui-state-highlight, #sortable2 li.ui-state-highlight { background: #fbf5d0; border-color: #065EFE; } .sortable1 li.ui-state-highlight, .sortable2 li.ui-state-highlight { background: #fbf5d0; border-color: #065EFE; }
.removeDiv { float: left; display:block; } .removeDiv { float: left; display:block; }
.ui-state-highlight { height: 1.5em; line-height: 1.2em; }
</style>
</style>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
$("#sortable1, #sortable2").sortable({ $("#<%= sortable1 %>, #<%= sortable2 %>").sortable({
connectWith: ".connectedSortable", connectWith: ".<%= connectedSortable %>",
placeholder: "ui-state-highlight", placeholder: "ui-state-highlight",
dropOnEmpty: true, dropOnEmpty: true,
create: function (event, ui) { create: function (event, ui) {
var order = $('#sortable1').sortable("toArray"); var order = $('#<%= sortable1 %>').sortable("toArray");
$("#allowedString").val(order); $("#<%= allowedStringName %>").val(order);
}, },
update: function (event, ui) { update: function (event, ui) {
var order = $('#sortable1').sortable("toArray"); var order = $('#<%= sortable1 %>').sortable("toArray");
$("#allowedString").val(order); $("#<%= allowedStringName %>").val(order);
} }
}).disableSelection(); }).disableSelection();
}); });
</script>
</script>
<div class="userProfileSectionEditor"> <div class="userProfileSectionEditor">
@ -56,7 +66,7 @@
<div id="sortablesDiv" style="margin: 0px;"> <div id="sortablesDiv" style="margin: 0px;">
<div class="allowedQualities"> <div class="allowedQualities">
<h4 class="sortableHeader">Allowed</h4> <h4 class="sortableHeader">Allowed</h4>
<ul id="sortable1" class="connectedSortable"> <ul id="<%= sortable1 %>" class="<%= connectedSortable %> sortable1">
<% if (Model.Allowed != null) { %> <% if (Model.Allowed != null) { %>
<%for (int i = 0; i < Model.Allowed.Count(); i++){%> <%for (int i = 0; i < Model.Allowed.Count(); i++){%>
<li class="ui-state-default" id="<%= Model.Allowed[i].ToString() %>"> <li class="ui-state-default" id="<%= Model.Allowed[i].ToString() %>">
@ -70,7 +80,7 @@
<div class="otherQualities"> <div class="otherQualities">
<h4 class="sortableHeader">Not-Allowed</h4> <h4 class="sortableHeader">Not-Allowed</h4>
<ul id="sortable2" class="connectedSortable"> <ul id="<%= sortable2 %>" class="<%= connectedSortable %> sortable2">
<% var qualitiesList = (List<QualityTypes>) ViewData["Qualities"]; %> <% var qualitiesList = (List<QualityTypes>) ViewData["Qualities"]; %>
<%for (int i = 0; i < qualitiesList.Count(); i++){%> <%for (int i = 0; i < qualitiesList.Count(); i++){%>
@ -101,9 +111,8 @@
<div class="hiddenProfileDetails"> <div class="hiddenProfileDetails">
<%= Html.TextBoxFor(x => x.ProfileId, new { @style = "display:none" })%> <%= Html.TextBoxFor(x => x.ProfileId, new { @style = "display:none" })%>
<%= Html.CheckBoxFor(x => x.UserProfile, new { @style = "display:none" })%> <%= Html.CheckBoxFor(x => x.UserProfile, new { @style = "display:none" })%>
<%= Html.TextBoxFor(m => m.AllowedString, new { @id = "allowedString", @style = "display:none" })%> <%= Html.TextBoxFor(m => m.AllowedString, new { @style = "display:none" })%>
</div> </div>
</fieldset> </fieldset>
</div> </div>
<% } %> <% } %>
Loading…
Cancel
Save