@using NzbDrone.Web.Helpers @model NzbDrone.Web.Models.IndexerSettingsModel @{ Layout = null; } <style> .indexerStatusContainer { margin-left: 14px; } </style> <div class="infoBox"> RSS feeds are checked every 25 minutes for new episodes.</div> <div class="indexerStatusContainer"> @Html.CheckBox("nzbsOrgStatus", @Model.NzbsOrgEnabled, new{ @class = "indexerStatusButton" }) <label for="nzbsOrgStatus">Nzbs.Org</label> @Html.CheckBox("nzbMatrixStatus", @Model.NzbMatrixEnabled, new { @class = "indexerStatusButton" }) <label for="nzbMatrixStatus">NZBMatrix</label> @Html.CheckBox("nzbsRusStatus", @Model.NzbsRUsEnabled, new { @class = "indexerStatusButton" }) <label for="nzbsRusStatus">NZBsRus</label> @Html.CheckBox("newzbinStatus", @Model.NewzbinEnabled, new { @class = "indexerStatusButton" }) <label for="newzbinStatus">Newzbin</label> @Html.CheckBox("newznabStatus", @Model.NewznabEnabled, new { @class = "indexerStatusButton" }) <label for="newznabStatus">Newznab</label> @Html.CheckBox("womblesStatus", @Model.WomblesEnabled, new { @class = "indexerStatusButton" }) <label for="womblesStatus">Womble's Index</label> @Html.CheckBox("fileSharingTalkStatus", @Model.FileSharingTalkEnabled, new { @class = "indexerStatusButton" }) <label for="fileSharingTalkStatus">File Sharing Talk</label> @Html.CheckBox("nzbIndexStatus", @Model.NzbIndexEnabled, new { @class = "indexerStatusButton" }) <label for="nzbIndexStatus">NzbIndex</label> @Html.CheckBox("nzbClubStatus", @Model.NzbClubEnabled, new { @class = "indexerStatusButton" }) <label for="nzbClubStatus">Nzb Club</label> </div> <div id="stylized"> @using (Html.BeginForm("SaveIndexers", "Settings", FormMethod.Post, new { id = "IndexersForm", name = "IndexersForm", @class = "settingsForm" })) { <div class="jquery-accordion"> <h3><a href="#">NZBs.org</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NzbsOrgEnabled)</span> </label> @Html.CheckBoxFor(m => m.NzbsOrgEnabled, new { @class = "inputClass checkClass enabledCheck" }) <label class="labelClass">@Html.LabelFor(m => m.NzbsOrgUId) <span class="small">@Html.DescriptionFor(m => m.NzbsOrgUId)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbsOrgUId)</span> </label> @Html.TextBoxFor(m => m.NzbsOrgUId, new { @class = "inputClass" }) <label class="labelClass">@Html.LabelFor(m => m.NzbsOrgHash) <span class="small">@Html.DescriptionFor(m => m.NzbsOrgHash)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbsOrgHash)</span> </label> @Html.TextBoxFor(m => m.NzbsOrgHash, new { @class = "inputClass" }) </div> <h3><a href="#">NZBMatrix</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NzbMatrixEnabled)</span> </label> @Html.CheckBoxFor(m => m.NzbMatrixEnabled, new { @class = "inputClass checkClass enabledCheck" }) <label class="labelClass">@Html.LabelFor(m => m.NzbMatrixUsername) <span class="small">@Html.DescriptionFor(m => m.NzbMatrixUsername)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbMatrixUsername)</span> </label> @Html.TextBoxFor(m => m.NzbMatrixUsername, new { @class = "inputClass" }) <label class="labelClass">@Html.LabelFor(m => m.NzbMatrixApiKey) <span class="small">@Html.DescriptionFor(m => m.NzbMatrixApiKey)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbMatrixApiKey)</span> </label> @Html.TextBoxFor(m => m.NzbMatrixApiKey, new { @class = "inputClass" }) </div> <h3><a href="#">NZBsRus</a></h3> <div class="indexerPanel"> <div class="warningBox">NZBsRus does not support backlog searching</div> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NzbsRUsEnabled)</span> </label> @Html.CheckBoxFor(m => m.NzbsRUsEnabled, new { @class = "inputClass checkClass enabledCheck" }) <label class="labelClass">@Html.LabelFor(m => m.NzbsrusUId) <span class="small">@Html.DescriptionFor(m => m.NzbsrusUId)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbsrusUId)</span> </label> @Html.TextBoxFor(m => m.NzbsrusUId, new { @class = "inputClass" }) <label class="labelClass">@Html.LabelFor(m => m.NzbsrusHash) <span class="small">@Html.DescriptionFor(m => m.NzbsrusHash)</span> <span class="small">@Html.ValidationMessageFor(m => m.NzbsrusHash)</span> </label> @Html.TextBoxFor(m => m.NzbsrusHash, new { @class = "inputClass" }) </div> <h3><a href="#">Newzbin</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NewzbinEnabled)</span> </label> @Html.CheckBoxFor(m => m.NewzbinEnabled, new { @class = "inputClass checkClass enabledCheck" }) <label class="labelClass">@Html.LabelFor(m => m.NewzbinUsername) <span class="small">@Html.DescriptionFor(m => m.NewzbinUsername)</span> <span class="small">@Html.ValidationMessageFor(m => m.NewzbinUsername)</span> </label> @Html.TextBoxFor(m => m.NewzbinUsername, new { @class = "inputClass" }) <label class="labelClass">@Html.LabelFor(m => m.NewzbinPassword) <span class="small">@Html.DescriptionFor(m => m.NewzbinPassword)</span> <span class="small">@Html.ValidationMessageFor(m => m.NewzbinPassword)</span> </label> @Html.TextBoxFor(m => m.NewzbinPassword, new { @class = "inputClass", type = "password" }) </div> <h3><a href="#">Newznab</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NewznabEnabled)</span> </label> @Html.CheckBoxFor(m => m.NewznabEnabled, new { @class = "inputClass checkClass enabledCheck" }) <br /> <br /> <p> </p> <a id="addNewznab" href="@Url.Action("AddNewznabProvider", "Settings")"> <img src="../../Content/Images/Plus.png" alt="Add Newznab Provider" width="20px" height="20px" /> Add Newznab Provider</a> <div id="newznabProviders"> @foreach (var provider in Model.NewznabDefinitions) { Html.RenderAction("GetNewznabProviderView", provider); } </div> </div> <h3><a href="#">Womble's Index</a></h3> <div class="indexerPanel"> <div class="warningBox">Womble's Index does not support backlog searching</div> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.WomblesEnabled)</span> </label> @Html.CheckBoxFor(m => m.WomblesEnabled, new { @class = "inputClass checkClass enabledCheck" }) </div> <h3><a href="#">File Sharing Talk</a></h3> <div class="indexerPanel"> <div class="warningBox">File Sharing Talk does not support backlog searching</div> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkEnabled)</span> </label> @Html.CheckBoxFor(m => m.FileSharingTalkEnabled, new { @class = "inputClass checkClass enabledCheck" }) <label class="labelClass">@Html.LabelFor(m => m.FileSharingTalkUid) <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkUid)</span> <span class="small">@Html.ValidationMessageFor(m => m.FileSharingTalkUid)</span> </label> @Html.TextBoxFor(m => m.FileSharingTalkUid, new { @class = "inputClass" }) <label class="labelClass">@Html.LabelFor(m => m.FileSharingTalkSecret) <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkSecret)</span> <span class="small">@Html.ValidationMessageFor(m => m.FileSharingTalkSecret)</span> </label> @Html.TextBoxFor(m => m.FileSharingTalkSecret, new { @class = "inputClass" }) </div> <h3><a href="#">NzbIndex</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NzbIndexEnabled)</span> </label> @Html.CheckBoxFor(m => m.NzbIndexEnabled, new { @class = "inputClass checkClass enabledCheck" }) </div> <h3><a href="#">NzbClub</a></h3> <div class="indexerPanel"> <label class="labelClass"> Enable <span class="small">@Html.DescriptionFor(m => m.NzbClubEnabled)</span> </label> @Html.CheckBoxFor(m => m.NzbClubEnabled, new { @class = "inputClass checkClass enabledCheck" }) </div> </div> <div class="retentionContainer"> @Html.ValidationSummary(true, "Unable to save your settings. Please correct the errors and try again.") <label class="labelClass">@Html.LabelFor(m => m.Retention) <span class="small">@Html.DescriptionFor(m => m.Retention)</span> <span class="small">@Html.ValidationMessageFor(m => m.Retention)</span> </label> @Html.TextBoxFor(m => m.Retention, new { @class = "inputClass" }) </div> <button type="submit" class="save_button" disabled="disabled">Save</button> } </div> <script type="text/javascript"> $(document).ready(function () { //Allow unobstrusive validation of the AJAX loaded form $.validator.unobtrusive.parse("#IndexersForm"); //Make the buttons $('.indexerStatusButton').button(); //Validator Settings var settings = $.data($('#IndexersForm')[0], 'validator').settings; settings.ignore = []; settings.focusInvalid = false; settings.onfocusout = function (element) { $(element).valid(); }; var oldHighlight = settings.highlight; var oldUnhighlight = settings.unhighlight; settings.highlight = function (element, errorClass, validClass) { oldHighlight(element, errorClass, validClass); $(element).parents('div.ui-accordion-content').prev('h3.ui-accordion-header').addClass('validation-error'); }; settings.unhighlight = function (element, errorClass, validClass) { oldUnhighlight(element, errorClass, validClass); var container = $(element).parents('div.ui-accordion-content'); if ($(container).children('.' + errorClass).length == 0) $(container).prev('h3.ui-accordion-header').removeClass('validation-error'); }; }); $(document).on('change', '.enabledCheck', function () { var id = $(this).prop('id'); var checked = $(this).prop('checked'); if (id == 'NzbsOrgEnabled') $('#nzbsOrgStatus').prop('checked', checked); if (id == 'NzbMatrixEnabled') $('#nzbMatrixStatus').prop('checked', checked); if (id == 'NzbsRUsEnabled') $('#nzbsRusStatus').prop('checked', checked); if (id == 'NewzbinEnabled') $('#newzbinStatus').prop('checked', checked); if (id == 'NewznabEnabled') $('#newznabStatus').prop('checked', checked); if (id == 'WomblesEnabled') $('#womblesStatus').prop('checked', checked); if (id == 'FileSharingTalkEnabled') $('#fileSharingTalkStatus').prop('checked', checked); if (id == 'NzbIndexEnabled') $('#nzbIndexStatus').prop('checked', checked); if (id == 'NzbClubEnabled') $('#nzbClubStatus').prop('checked', checked); $('.indexerStatusButton').button("refresh"); reValidate(); }); $(document).on('change', '.indexerStatusButton', function () { var id = $(this).prop('id'); var checked = $(this).prop('checked'); if (id == 'nzbsOrgStatus') $('#NzbsOrgEnabled').prop('checked', checked); if (id == 'nzbMatrixStatus') $('#NzbMatrixEnabled').prop('checked', checked); if (id == 'nzbsRusStatus') $('#NzbsRUsEnabled').prop('checked', checked); if (id == 'newzbinStatus') $('#NewzbinEnabled').prop('checked', checked); if (id == 'newznabStatus') $('#NewznabEnabled').prop('checked', checked); if (id == 'womblesStatus') $('#WomblesEnabled').prop('checked', checked); if (id == 'fileSharingTalkStatus') $('#FileSharingTalkEnabled').prop('checked', checked); if (id == 'nzbIndexStatus') $('#NzbIndexEnabled').prop('checked', checked); if (id == 'nzbClubStatus') $('#NzbClubEnabled').prop('checked', checked); reValidate(); }); function reValidate() { $("#IndexersForm").validate().form(); var container = $('div.ui-accordion-content'); if ($(container).children('.input-validation-error').length == 0) $(container).prev('h3.ui-accordion-header').removeClass('validation-error'); } //Newznab $("#addNewznab").on('click', function (event) { $.ajax({ url: this.href, cache: false, success: function (html) { $("#newznabProviders").append(html); } }); event.preventDefault(); //event.stopPropagation(); }); var deleteNewznabProviderUrl = '@Url.Action("DeleteNewznabProvider", "Settings")'; function deleteProvider(id) { $.ajax({ type: "POST", url: deleteNewznabProviderUrl, data: jQuery.param({ providerId: id }), error: function (req, status, error) { alert("Sorry! We could not delete your Provider at this time. " + error); }, success: function (data, textStatus, jqXHR) { $("#provider_" + id).remove(); } }); } function getProviderId(obj) { var parentProviderSection = $(obj).parents('.providerSection'); return parentProviderSection.children('.newznabProviderId').val(); } $(".providerName_textbox").on('keyup', function () { var value = $(this).val(); var profileId = getProviderId(this); $("#title_" + profileId).text(value); }).keyup(); </script>