From ea65f5836cb4c69a9a8e697922de41cdd1b1f3e2 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 26 Feb 2012 17:45:07 -0800 Subject: [PATCH] PendingMapping Editor added to Services. --- .../Providers/SceneMappingProvider.cs | 17 + .../Content/ActionButton.css | 22 + .../media/css/jquery.dataTables.css | 310 + .../media/images/Sorting icons.psd | Bin 0 -> 27490 bytes .../media/images/back_disabled.png | Bin 0 -> 1361 bytes .../media/images/back_enabled.png | Bin 0 -> 1379 bytes .../media/images/back_enabled_hover.png | Bin 0 -> 1375 bytes .../DataTables-1.9.0/media/images/favicon.ico | Bin 0 -> 894 bytes .../media/images/forward_disabled.png | Bin 0 -> 1363 bytes .../media/images/forward_enabled.png | Bin 0 -> 1380 bytes .../media/images/forward_enabled_hover.png | Bin 0 -> 1379 bytes .../media/images/sort_asc.png | Bin 0 -> 1118 bytes .../media/images/sort_asc_disabled.png | Bin 0 -> 1050 bytes .../media/images/sort_both.png | Bin 0 -> 1136 bytes .../media/images/sort_desc.png | Bin 0 -> 1127 bytes .../media/images/sort_desc_disabled.png | Bin 0 -> 1045 bytes .../Content/Grid.css | 88 + .../Content/Images/Downloading.png | Bin 0 -> 3239 bytes .../Content/Images/Failed.png | Bin 0 -> 3931 bytes .../Content/Images/Gear.png | Bin 0 -> 1910 bytes .../Content/Images/Indexers/Newzbin.png | Bin 0 -> 902 bytes .../Content/Images/Indexers/Newznab.png | Bin 0 -> 172 bytes .../Content/Images/Indexers/NzbMatrix.png | Bin 0 -> 719 bytes .../Content/Images/Indexers/Nzbs.org.png | Bin 0 -> 198 bytes .../Content/Images/Indexers/NzbsRus.png | Bin 0 -> 264 bytes .../Content/Images/Indexers/Unknown.png | Bin 0 -> 816 bytes .../Content/Images/Missing.png | Bin 0 -> 5089 bytes .../Content/Images/NotAired.png | Bin 0 -> 3372 bytes .../Content/Images/Plus.png | Bin 0 -> 589 bytes .../Content/Images/Promote.png | Bin 0 -> 1555 bytes .../Content/Images/Ready.png | Bin 0 -> 534 bytes .../Content/Images/Rename.png | Bin 0 -> 1185 bytes .../Content/Images/Search.png | Bin 0 -> 743 bytes .../Content/Images/Unpacking.png | Bin 0 -> 4178 bytes .../Content/Images/VideoFolder.png | Bin 0 -> 1133 bytes .../Content/Images/X.png | Bin 0 -> 1716 bytes .../Content/Images/XbmcNotification.png | Bin 0 -> 6280 bytes .../Content/Images/ajax-loader.gif | Bin 0 -> 4782 bytes .../Content/Images/arrow.png | Bin 0 -> 1041 bytes .../Content/Images/background.jpg | Bin 0 -> 6462 bytes .../Content/Images/blue.png | Bin 0 -> 1182 bytes .../Content/Images/close.png | Bin 0 -> 288 bytes .../Content/Images/error.png | Bin 0 -> 3376 bytes .../Content/Images/green.png | Bin 0 -> 1179 bytes .../Content/Images/gritter.png | Bin 0 -> 4880 bytes .../Content/Images/header.jpg | Bin 0 -> 10297 bytes .../Content/Images/icon_source.url | 2 + .../Content/Images/ignored.png | Bin 0 -> 3485 bytes .../Content/Images/ignoredNeutral.png | Bin 0 -> 3719 bytes .../Content/Images/notIgnored.png | Bin 0 -> 5898 bytes .../Content/Images/pause.png | Bin 0 -> 288 bytes .../Content/Images/play.png | Bin 0 -> 534 bytes .../Content/Images/red.png | Bin 0 -> 1190 bytes .../Content/Images/redownload.png | Bin 0 -> 800 bytes .../Content/Images/settings.png | Bin 0 -> 819 bytes .../Content/Images/stop.png | Bin 0 -> 314 bytes .../Content/Images/success.png | Bin 0 -> 1937 bytes .../Content/Images/x_16.png | Bin 0 -> 570 bytes .../Content/Images/yellow.png | Bin 0 -> 1230 bytes .../Content/Menu.css | 26 + .../Content/Messages.css | 55 + .../Content/NzbDrone.css | 280 + .../Content/Overrides.css | 59 + .../ui-bg_diagonals-thick_30_a32d00_40x40.png | Bin 0 -> 261 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_0_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_flat_100__40x100.png | Bin 0 -> 607 bytes .../images/ui-bg_flat_20_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_flat_30_065efe_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_flat_30_616161_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_30_b40404_40x100.png | Bin 0 -> 288 bytes .../images/ui-bg_flat_40_065efe_40x100.png | Bin 0 -> 182 bytes .../ui-bg_white-lines_10_000000_40x100.png | Bin 0 -> 202 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../jQueryUI/jquery-ui-1.8.16.custom.css | 568 + .../Content/jquery.gritter.css | 118 + .../Controllers/SceneMappingController.cs | 66 +- .../NzbDrone.Services.Service/Global.asax.cs | 3 + .../Helpers/HtmlIncludeExtentions.cs | 48 + .../Migrations/Migration20120226.cs | 35 + .../NzbDrone.Services.Service.csproj | 117 +- .../Providers/SceneMappingProvider.cs | 28 +- .../Repository/PendingSceneMapping.cs | 6 +- .../media/js/jquery.dataTables.editable.js | 1296 ++ .../media/js/jquery.dataTables.js | 11612 +++++++++++++++ .../media/js/jquery.dataTables.min.js | 153 + .../media/js/jquery.dataTables.reloadAjax.js | 39 + .../media/js/jquery.jeditable.js | 507 + .../Scripts/NzbDrone/grid.js | 57 + .../Scripts/jquery-1.7.1-vsdoc.js | 7153 ++++++++++ .../Scripts/jquery-1.7.1.js | 9266 ++++++++++++ .../Scripts/jquery-1.7.1.min.js | 4 + .../Scripts/jquery-ui-1.8.17.js | 11827 ++++++++++++++++ .../Scripts/jquery-ui-1.8.17.min.js | 15 + .../jquery.dataTables.4button.pagination.js | 93 + .../Scripts/jquery.validate-vsdoc.js | 1291 ++ .../Scripts/jquery.validate.js | 1188 ++ .../Scripts/jquery.validate.min.js | 51 + .../Views/SceneMapping/Pending.cshtml | 150 + .../Views/Shared/Error.cshtml | 7 + .../Views/Shared/Footer.cshtml | 1 + .../Views/Shared/NoSeriesBanner.cshtml | 2 + .../Views/Shared/QuickAdd.cshtml | 15 + .../Views/Shared/_Layout.cshtml | 51 + .../Views/Shared/_ReferenceLayout.cshtml | 33 + .../Views/Web.config | 20 + .../Views/_ViewStart.cshtml | 3 + .../NzbDrone.Services.Service/Web.config | 14 + .../NzbDrone.Services.Service/packages.config | 4 + NzbDrone.sln | 3 + 112 files changed, 46688 insertions(+), 15 deletions(-) create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/ActionButton.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/css/jquery.dataTables.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/Sorting icons.psd create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_disabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_enabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_enabled_hover.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/favicon.ico create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_disabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled_hover.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc_disabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_both.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc_disabled.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Grid.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Downloading.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Failed.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Gear.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Newzbin.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Newznab.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/NzbMatrix.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Nzbs.org.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/NzbsRus.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Unknown.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Missing.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/NotAired.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Plus.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Promote.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Ready.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Rename.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Search.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Unpacking.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/VideoFolder.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/X.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/XbmcNotification.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/ajax-loader.gif create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/arrow.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/background.jpg create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/blue.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/close.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/error.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/green.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/gritter.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/header.jpg create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/icon_source.url create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/ignored.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/ignoredNeutral.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/notIgnored.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/pause.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/play.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/red.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/redownload.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/settings.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/stop.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/success.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/x_16.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Images/yellow.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Menu.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Messages.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/NzbDrone.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/Overrides.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_diagonals-thick_30_a32d00_40x40.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_ffffff_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_100__40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_20_ffffff_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_065efe_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_616161_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_b40404_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_40_065efe_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_white-lines_10_000000_40x100.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_9ccdfc_256x240.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_ffffff_256x240.png create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/jquery-ui-1.8.16.custom.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Content/jquery.gritter.css create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Helpers/HtmlIncludeExtentions.cs create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Migrations/Migration20120226.cs create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.editable.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.min.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.reloadAjax.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.jeditable.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/NzbDrone/grid.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery-1.7.1-vsdoc.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery-1.7.1.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery-1.7.1.min.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery-ui-1.8.17.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery-ui-1.8.17.min.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery.dataTables.4button.pagination.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery.validate-vsdoc.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery.validate.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Scripts/jquery.validate.min.js create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/SceneMapping/Pending.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/Error.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/Footer.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/NoSeriesBanner.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/QuickAdd.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/_Layout.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Shared/_ReferenceLayout.cshtml create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/Web.config create mode 100644 NzbDrone.Services/NzbDrone.Services.Service/Views/_ViewStart.cshtml diff --git a/NzbDrone.Core/Providers/SceneMappingProvider.cs b/NzbDrone.Core/Providers/SceneMappingProvider.cs index f4520e723..ad70a6d65 100644 --- a/NzbDrone.Core/Providers/SceneMappingProvider.cs +++ b/NzbDrone.Core/Providers/SceneMappingProvider.cs @@ -82,5 +82,22 @@ namespace NzbDrone.Core.Providers if (count == 0) UpdateMappings(); } + + public virtual bool SubmitMapping(int id, string postTitle) + { + Logger.Trace("Parsing example post"); + var episodeParseResult = Parser.ParseTitle(postTitle); + var cleanTitle = episodeParseResult.CleanTitle; + var title = episodeParseResult.SeriesTitle.Replace('.', ' '); + Logger.Trace("Example post parsed. CleanTitle: {0}, Title: {1}", cleanTitle, title); + + var newMapping = String.Format("/SceneMapping/AddPending?cleanTitle={0}&id={1}&title={2}", cleanTitle, id, title); + var response = _httpProvider.DownloadString(_configProvider.ServiceRootUrl + newMapping); + + if (JsonConvert.DeserializeObject(response).Equals("Ok")) + return true; + + return false; + } } } diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/ActionButton.css b/NzbDrone.Services/NzbDrone.Services.Service/Content/ActionButton.css new file mode 100644 index 000000000..4727720a2 --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Content/ActionButton.css @@ -0,0 +1,22 @@ +.actionButton +{ + margin: 5px; + padding: 2px 5px; + background-repeat: no-repeat; + background-position: 5px center; + background-color: #cccccc; + display: inline-block; + font-size: 15px; +} + +.actionButton img +{ + cursor: pointer; + vertical-align: middle; + position: relative; + bottom: 3px; +} + +.delete +{ +} diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/css/jquery.dataTables.css b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/css/jquery.dataTables.css new file mode 100644 index 000000000..cd31baaf4 --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/css/jquery.dataTables.css @@ -0,0 +1,310 @@ + +/* + * Table + */ +table.dataTable { + margin: 0 auto; + clear: both; + width: 100%; + border-style: none; + border-width: 1px; + border-spacing: 2px; + border-color: white; + border-collapse: collapse; +} + +table.dataTable thead th { + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + border-width: 300; + font-size: 17px; + padding: 2px; + border-style: none; + border-color: #EEEEEE; + padding-left: 7px; + text-align: left; + background-color: white; + font-weight: lighter; + cursor: pointer; + *cursor: hand; +} + +table.dataTable tfoot th +{ + padding: 3px 18px 3px 10px; + border-top: 1px solid black; + font-weight: bold; +} + +table.dataTable td { + /*padding: 3px 10px;*/ + border-width: 1px; + border-style: solid; + border-color: #EEEEEE; + padding: 0px 8px 0px 8px; +} + +table.dataTable td.center, +table.dataTable td.dataTables_empty { + text-align: center; +} + +table.dataTable tr.odd { background-color: white; } +table.dataTable tr.even { background-color: #F0F5FF; } + +/* Disable Sorting Highlighting +table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } +table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } +table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } +table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } +table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } +table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } +*/ + + +/* + * Table wrapper + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; +} + + +/* + * Page length menu + */ +.dataTables_length { + float: left; +} + + +/* + * Filter + */ +.dataTables_filter { + float: right; + text-align: right; +} + + +/* + * Table information + */ +.dataTables_info { + clear: both; + float: right; +} + + +/* + * Pagination + */ +.dataTables_paginate { + float: left; + text-align: right; +} + +/* Two button pagination - previous / next */ +/*.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_next, +.paginate_enabled_next { + height: 19px; + float: left; + cursor: pointer; + *cursor: hand; + color: #111 !important; +} +.paginate_disabled_previous:hover, +.paginate_enabled_previous:hover, +.paginate_disabled_next:hover, +.paginate_enabled_next:hover { + text-decoration: none !important; +} +.paginate_disabled_previous:active, +.paginate_enabled_previous:active, +.paginate_disabled_next:active, +.paginate_enabled_next:active { + outline: none; +} + +.paginate_disabled_previous, +.paginate_disabled_next { + color: #666 !important; +} +.paginate_disabled_previous, +.paginate_enabled_previous { + padding-left: 23px; +} +.paginate_disabled_next, +.paginate_enabled_next { + padding-right: 23px; + margin-left: 10px; +} + +.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } +.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } +.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } + +.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } +.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } +.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } +*/ +/* Four button pagination - first / previous / next / last */ +.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_next, +.paginate_enabled_next, +.paginate_disabled_first, +.paginate_enabled_first, +.paginate_disabled_last, +.paginate_enabled_last { + height: 19px; + float: left; + cursor: pointer; + *cursor: hand; + color: #111 !important; +} +.paginate_disabled_previous:hover, +.paginate_enabled_previous:hover, +.paginate_disabled_next:hover, +.paginate_enabled_next:hover, +.paginate_disabled_first:hover, +.paginate_enabled_first:hover, +.paginate_disabled_last:hover, +.paginate_enabled_last:hover { + text-decoration: none !important; +} +.paginate_disabled_previous:active, +.paginate_enabled_previous:active, +.paginate_disabled_next:active, +.paginate_enabled_next:active, +.paginate_disabled_first:active, +.paginate_enabled_first:active, +.paginate_disabled_last:active, +.paginate_enabled_last:active { + outline: none; +} + +.paginate_disabled_previous, +.paginate_disabled_next, +.paginate_disabled_first, +.paginate_disabled_last { + color: #666 !important; +} +.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_first, +.paginate_enabled_first { + padding-left: 23px; +} +.paginate_disabled_next, +.paginate_enabled_next, +.paginate_disabled_last, +.paginate_enabled_last { + padding-right: 23px; + margin-left: 10px; +} + +.paginate_enabled_first { background: url('../images/back_enabled.png') no-repeat top left; } +.paginate_enabled_first:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } +.paginate_disabled_first { background: url('../images/back_disabled.png') no-repeat top left; } + +.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } +.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } +.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } + +.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } +.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } +.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } + +.paginate_enabled_last { background: url('../images/forward_enabled.png') no-repeat top right; } +.paginate_enabled_last:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } +.paginate_disabled_last { background: url('../images/forward_disabled.png') no-repeat top right; } + +/* Full number pagination */ +.paging_full_numbers { + height: 22px; + line-height: 22px; +} +.paging_full_numbers a:active { + outline: none +} +.paging_full_numbers a:hover { + text-decoration: none; +} + +.paging_full_numbers a.paginate_button, +.paging_full_numbers a.paginate_active { + border: 1px solid #aaa; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 2px 5px; + margin: 0 3px; + cursor: pointer; + *cursor: hand; + color: #333 !important; +} + +.paging_full_numbers a.paginate_button { + background-color: #ddd; +} + +.paging_full_numbers a.paginate_button:hover { + background-color: #ccc; + text-decoration: none !important; +} + +.paging_full_numbers a.paginate_active { + background-color: #99B3FF; +} + + +/* + * Processing indicator + */ +.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 250px; + height: 30px; + margin-left: -125px; + margin-top: -15px; + padding: 14px 0 2px 0; + border: 1px solid #ddd; + text-align: center; + color: #999; + font-size: 14px; + background-color: white; +} + + +/* + * Sorting + */ +.sorting { background: url('../images/sort_both.png') no-repeat center right; } +.sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } +.sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } + +.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } +.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } + +table.dataTable th:active { + outline: none; +} + + +/* + * Scrolling + */ +.dataTables_scroll { + clear: both; +} + +.dataTables_scrollBody { + *margin-top: -1px; +} + diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/Sorting icons.psd b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/Sorting icons.psd new file mode 100644 index 0000000000000000000000000000000000000000..53b2e06850767cb57c52b316f0b845b1a8e0ca0e GIT binary patch literal 27490 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 Y16@Zf7?Q8!JB-NJ(KYBs*Ff|C0Zg4MIsgCw literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_disabled.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..881de7976ff98955e2a5487dca66e618a0655f3d GIT binary patch literal 1361 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVin+1c5}%-r12$=KP@(AChw*vQht)WY1&)XmVs z#Kj1v*Cju>G&eP`1g19yq1OVZUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnv1?G!Lpb z1-DzwaO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i-f{BMZ3YI$qn<8~Ar-gQ zOt$tu93XPMc=CmoA1oW4o1+WYIB!k3r72K4*@xA>;l+b1ClB@qaOE!8@r8RwiN1wc zl+_Cb3(lEQAv#$bmh>Mfe(I7Woy4{G!}EFf?)^FUc%F02^;EH~5owLt3k}+qS-P)U z616t%^wT0PX2liq$807FHoQ4d$0`5rkQ{U2Kkgclu0)Awnd5T>ob((vrABTq*u(RS z>E?oy`!@uw+@i*D$dKV&#I(EL&;9;u$GTQAMM5faVZejQCzo(NvvlZ75dZt%IYnd( z*RL;GX3W}R-P)5>-Zsu`&nUT&Ho^GzHq{#}Ya$hT91>M0@O`!9^}b&yQ@87fac$Vj zkb72h`!2pMTYunpu!r@;1)uFRXDvHO zu{mw?PmW#JOy1f}J}ILj)G2cQ^TrhhTtyr5@7eCYm=Uoy?6qTPsOnt5?2i>S(pg>~ z>M~M93=YlxcD}*xKl_@hz5j0IZGT@9Yu_^8_RN8=&YkAdFR(fGAAWd4CvkG#0^hlN z8>(g;?I=2=cEEAHaL+WiOvRp~fl`n5dTf5V)bNv|ZcjyzLHRnz@2)SdPWo#3tF@Nf ZfT6u;&2Oo-XD5RSIZszVmvv4FO#nm}^+Nyv literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_enabled.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/back_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..c608682b04a6d9b8002602450c8ef7e80ebba099 GIT binary patch literal 1379 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 bdL|wQU%!)=<|i%z6_yO1u6{1-oD!M<;V$ow literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e6b5384b8454ee7f44a8f7c75b0321b7eeb9b1 GIT binary patch literal 1380 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVip+||I$+{MJu$=KP@(AChw*vQht)WY1&)XmVs z#Kj1v*Cju>G&eP`1g19yq1P0rUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnqfWG!Lpb z1-Dy_aq86vIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@iW_)h2mVtrshNp{TNX4zB zKmY&RGjC-OW)@`(g)dh`10)R-NpU#bM1=1eo8Z2AYd)<-?^`_sqOFY@6XS7KM&8JXTA5$g^A9S z{TX;`xlCJF@2;-kt^WS)-(qj^YjbRh3Qo21zn9<7##PJs=)J=q?vtT6c$tqWSn$;S z{q^hJt*2*?^Szy4@bTi|;PVYm@{K=qh5oS|v0uoRWd7#=|NZ;-*VL7!+I+Ui=RzOdW2D@cF)|8@0kar@euUy>OYxL3%Wh|X{LVLRn7b4UH-Q)xXL zlsIOXI?k$WjNtJ4&-&^N(`qv`*KNBfVYRHPjKr+8GT t=fC*;><^O18kWptJjt-AJE?(znPJ1m)BPofdH;jTJx^CZmvv4FO#l_Q2A%)_ literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled_hover.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/forward_enabled_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..fc46c5ebf0524b72a509fe2d7c1bc74995cb8a9d GIT binary patch literal 1379 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVi#&A{2f&C=1($=KD<(AChw*vQht)WY1&)XmVs z#Kj1v*Cju>G&eP`1g19yq1OqgUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZns$AG!Lpb z1-Dx)aq86vIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@imN7BvVqjpr?&;zfQgJKk z&;S4S%v%{AKQQkRwI?VL9s)YsRaG&b6_ zgRo<91_J$Y%O?`e|&#$ZtS+eXp_f= zjUUrLb7!pi%4at>{rxttxB!poqO-MU1}Hz4_scgh+`O`|pzGU*Ppd<;SGk>1td!-8 z=;-~nzrMci*RP)sFMiM0pIiAYgm$R?>m2vx|wYgZ#kAH7}W-quPuJDiV$o>g2t#=I)c$y9~%y7A9 zTfgc1jk&Lj_4ZX)f0PV(p)9c9_0ar=AL>^e-n9Mw|Nr~<^YZ!qF*`48{dsWi)b|VZ zD%w*xPFz?Y(EM+~bAgn@|LT8!dGP4_dwn}*-YUka%$2Ws1@^aZs%Q9^A9It(GQY{> zGt)+aDgU^S%wM?fC!gsP`E`4^jM#4)q-B&8J6^t!zrwrDf%l)k#^S|Oq%QdIe*R^@ tLh*lxrsW37V+~Wv{w==9!pqEIz%cpgo%)U5J^Y|z&(qb2Z8_q literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..a88d7975fe9017e4e5f2289a94bd1ed66a5f59dc GIT binary patch literal 1118 zcmbVLO=#0l98awuV{uMt6P_}u4rcI3idKFP2SpU%ZJIE?RL`X zK?Oyo=*5GG2SxDYK=7akJqV&hrl{aWJa`y*5xh+1%i2y4V}gO?edPc9{r;a9vjc}) zn|Cxb4AYwFmvVG%_ui)U^y_4!ujsO!qzYuv8YUIR!Aw%KiWp=JrG#@>(I!s4#N7H->?w+cxsH2#GA};A>g8lyFDGPKh!5)vuP_{)}*83+N zJUBU!S0_i+E{*Lu1iGsNB``2iK-CyCU7?y_mv{xb_pUh>ESZqe1Y2{eAZLMSIT%EO zFrdOH1W^=3p>Qk~I{J+k#s5zQ@j{%aIA!l^GQjJ zqA1Uc2%!{8qBKfMNh#9DCnKS_*uZ8?mnf!+8@f8xtz#prVg=E`3bCBLWsNmDAX~PG z<(4fQh=UOzE2?gKXRkc9XeI3Er?HlHECVd%SI}3`hy1_du3@$R$r(qT;k@Sft63UX zv;)2Ea_iH>^6+4jPK-lGM{Zw37Tz>~~zlHzO61x51(V4jcaKrcIVDG$-d>)z}S|7f!xxYhfUE}Kj zug_h&HZN}go22$5Ym1}P8~vYNx7-~$TWFJ;_nh!wFYSAQJF{CCo=xpK8^7?iY1^!H haOA^1D_`VC7fU=jcT literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc_disabled.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_asc_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..4e144cf0b1f786a9248a2998311e8109998d8a2d GIT binary patch literal 1050 zcmaJ=O-K|`93R^(@goeAz6hRU)S-61)?IaU({*Myml|8vh4x}JJM&z}b>>Yo&vx~s z*1>{0Sk$FMM28~iln?~vp$ zL+z1TilQ3g{c@7*P2Q^6L;g-8^nq-LaWstw(J;=d4x}PF%0Lh|)htXxRiC)>9(Gfd zk2X?ioL0_@8ZsHx!!QNYCTxo8?kU)+mV+2%VAin0^v_psXkh4J`eIPw6kCELM*pM( z2PX$o+GI}a)ajlxpt~Rv0TW^s6wEQp6$@dys4J4Qcg@nE2*J59y%|(mNdO5s5Cj>{ zuW=y`gm{Jzw6(Xlp9TWQb1WyYyx`~C#eg7k94LJ>@#g5mVp5Kkd=V>5k6>(zESt~g znS6jjPL}06J3BoMLGTlV-<`0qTJT$LYgs{tuI3mvHjo88MKy!QahN8NZl++`Te6m0 zDibLfTTpG5XE-mVGEhip#w2PB)JKi0I-PD8)*(7w)xTBHA4Yzu(Y*BKcijk8- zXslet#0bL39YHpb27^FRHN*1kB3@C%xaDHi(qLQ;(?o$W3|;IHBC-_Xc|nkPo{#bo zKE_Anh#c$_BEdk1ROZS^8#kea%Upe%D^%oqqhQ*^vkV>MD%4{RGC?tA(byrDwm?jZ z#$wTmdL^!2ITo%WmnFflUSt1hboq)*k9XV}TViYtKD5ZRJ7lb1H!ZJ`CviJ2M^c5A z%=*Sgk8hr8@-S*Kr`Ol~RJX(fddmmK4eR}O=#0l98WD1Hz^GK+C=e@fhgE~b#2$Ux^~T`1v5)mw1NlIe}zC z+ge9alrMQeN|SYi`>tC{zIG}!O_oO7k;UC8kBf>8sknx65F`zy2d1H-4fel=trX>@ z^-LCL<%6P%3`TJ=Ov$hao1$9VN|vJbLJV@SM>nJN{L>dS(6uOiBq(#Tm4F5Pz>p2Q zhq^NAP_G)%=(c^JwImV&17Zb~j6Ty5OHq1RS0sD)n5Dro1ouYi-$7;N6i6T&f*`~B zRW8JV5YO;|=5RQ?2M8R`v7Es2f}anI0YT(Au=3Evo2})=wA8uci&#;*fUzaAY_V8m ziU9`MJuDxIL|hF)@DqgJ88op{@|#XmML~j&YU>u(kqKNyC5HxZlqQk>PQkENWld+L zOr&6JNwHX-;oOueKw17j)G$`j4o<^A@%~fT$qZVMO+yC_*eYpUzR7iEi3uAj7}*(w z`YKgS6%a;F0a+l?9R#wX>ZWTi<7HV)nhsV>6(*%9O%xbi*F?TK!383rh#(|*p6}q} zd?z25;!?0(hzA2Li3(Rj>VN@FT;Xbexbdo7cN7eZc$T28pMYAYjSR4yvZz;&C0tc+ zg{xJMrKKvDCBd+6WB+P&<%mp=yImbyVyq56G|9BvWUP^I>ms=lb4e+lDSgg;Us`JO zKB6{wH+j~F#-A4FY3K3qm~Z6m@V6}oQ%8?p-E$dw`#0C$PJfmCV8)v}3>Ydha%`fZ zJk~G*M^A3LGk$Td;R`icF67R~`sBOHv)Hlqlc%$jy~9_oZJcNyWxkbb_O9u#|7hLF z-<-NMLzh3S0YA@8gd1Pt(Df|3@16Y-n=aSvsF@AkI`ioeFg>&H3bXU&vBnE6gIChkL+(Ey+0iB4Z$Eze7t_CX>Hq)$ literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc.png new file mode 100644 index 0000000000000000000000000000000000000000..def071ed5afd264a036f6d9e75856366fd6ad153 GIT binary patch literal 1127 zcmbVMOK8+U7*1U&zKRu5sR)h{1;yRWWV^4}ShvZpU2*HWU2!iy(qy)cZ89;Lb+`3m zMbruv!GjkO!3qksP*5)lD)k}=Dp*ht-n@8G5m8XoN!zU+ih_Y;=AZe$?|)|~*Ri8v z(dtDU$2DZy)jV65`|pB!_H}d7Cv0h=sUqzpC0fy3%q0!dg+a#Bx^W(BM*oq=xP{{a zC9_bZ#q2IgCss)FbwX9kVQ7wPX{|b%-is;d!ri7V^Y8E8=YeU+{JuyQW*r6hnC$~D z?i}bS=mWia!r)uCftISo2rNuBP__DOPpZoN6tBeg{;|M=DHYl)^V3chvpJv;7lTL$ z26Y&PAc{gL+#HL=wg3?#C_qs_Vi3iouqZ(YW*(kdbB&UeSJN}Lm?ZN(lsb|iR4SEF zB^)Adw}29fgwG+0L8cM(`faLJgSNN6#-L(PcTI+l@K3y+Xf(g*^61+0|J+O6zN2mb?UNGh6GU@A{1+eF%d@N2(^XdVmhis(y25|iAr;gV=io5OsYy0 zB}Gv|2&GUGrBPB%s*yG^841Ug8a88lRI_zlvuiTDGuXsmv6A9qjS{y&NMEf3ay^6+ zuZK85>5PD^rkl1e`{kLAR>iJ)6dP%mSYRr@k~xQcDE=$%X{_--ITM&Og5Ml}G)wJ> zb)dhUZG9%p4iC23#JFrUCcmwHz{cugMoku~ue-kg{Mj0~%`FeCcz9jAdg}QET-kSG za`+2B_+lRTaeAVz>E`F1pN7h>B=BbGqcz13d%ywZR&4OjkNNrF_U}#EcXDGa@V52B z>JnIW7#s%CHi literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc_disabled.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/DataTables-1.9.0/media/images/sort_desc_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..7824973cc60fc1841b16f2cb39323cefcdc3f942 GIT binary patch literal 1045 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 Z3;<~=(>!Q73nl;n002ovPDHLkV1hUG?+yR} literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Failed.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Failed.png new file mode 100644 index 0000000000000000000000000000000000000000..0da8602713314fc239b4baef14a10db58a51ab37 GIT binary patch literal 3931 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Gear.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Gear.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4fedcaa7e1f1ddf375713f2ad7c5edc92f997f GIT binary patch literal 1910 zcmV-+2Z{KJP)}@Vtl{GCmIlg zB#I#Jh$x7Mw3l4r zlK6Lyh{zp_YGgxm-1A9uUk5 zdV%+O!4AQ*)nL-r*7ik#nLtZROYym@t1CTc&YZ61=4Mq_S68y`-o1NXcXzk<{{8!I z*;BCg{I6W7wXv~L3;*WL8}K86ts6KuAH0?VIEL*lr(=lsZ;29p7 zYAbMZ#flaE+qZ8&D(=xEf1eX<_CL;@J6D}KbEa+a;>GoA*REBcKYyM^;N!=SYW@24 zO4ejp%N`4$bq?C_fEPUD2$teFBeKxRjT<*+J@1R*M@L6hKA*=m{=`EBf2bD_=1Q2W zXV0EF32_2Xo;*=~eSOdvHCc(kZ->5+_>!`O{_yZH-+wBXg`yNF3XcU}zI>^zyU1XgV^_f*0P7aVRYdM@2KW4 zb|nrJo??rDAhxyRB71x#f`GeKvl6#%+O$bCwJn4T+`4s3`+ZGKO(JA3G@xbE=9?*M z`(~;@+lCDr((~rc)A`?K^6=q9H90w1vE_pZ4QSc4DQ2Y4b?erlMO!5bq)oefTCiV= z$*FDIwiPXI`!N|J#IjR@e+ljvtTVXZyqj|EftDRVJi~A2&YcvrQ^;auYBe%C)93+) z5sr?2o^%I7jACZj1HZ_?JlI_e9y4geKL$qxkJ7>fH z1|@nfQ9@n3crhDPpk5j@kHrWbmG}AXus(1hMpC%oQov8CE?yuC&YnHno*PPBsDA$Z z`Jr8;t8j%Va4E+2OJOvlz-8FlGUH)rOB~`pGXiKrJL>eq6ezGUZsW#LhMd-J6RhQ6 zcNk4SjV76i2P7~DqFP)(#Sv5?d3|q;-0xgN^^IeFBjbR}g*vWWxpIoDk0nc%=z+ot zni2)b78EuId~Z@^SSC7Z)=UF?o_VhPCWr zud4!6(6(;fiqYEb8^9zAWOwY?p)Ep>?i&3#3HlT=$m-Rrbu&mxv}*;=yyM!DHLPV1 zdtEd+O->x%=C_7KF62o&y>I2pm6};pui`7>U-WVl?T?1Io`16!x7UIeypcg#=|uNJ z9@ilL)kr0PuwY2Biv^rGhz#WvDCa_Xe~|f_Xl@4cNn!v6I=RCMvohBsVB9vm(*4|8 zhzuR&6o^Wr9S~s_C3D!*)Aj4uaS`rq)a~21596;)O;NXQxRtEeRh$~bJ28^ZbmkYF zqVNwMJP5sBkE_5{pO{Q)tu%OK2qEnEB)L6%_Nbnoo@4UvS5d6pWR6gvw-F_dn7swr zi$R92UAvYQBW0)$1iL60DSX^Qh7wnW;03{qxoGXQhak`MDEYtT^ZBeagz2zTFzI$c z)*lZHQ2aoV6C-fzP;Z*H^VR;5?|clR10tkn59dJz>|Wk=q5NO|$QK8Cxx@_vqrhM_ z8O~S%JLM4;H8oB2_V)hR*VmU7H_F&4Q>?E8U)B_= wdKnPoSIVT|*=>1*?^g^Zzfyk7@UH*^0MT$d>;M1& literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Newzbin.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Newzbin.png new file mode 100644 index 0000000000000000000000000000000000000000..66ebe4329e24f1fb090caca12ebbd1679540ce1f GIT binary patch literal 902 zcmV;119|+3P)0 zUG|N9-iY=-__OKYwPSHi)(xEa1C6%8;M$*)BbAyX@9F8u_4=u0ag@KGnon#Nx8UYA zJoRv5xM1T{vK1BpkhfDJEK5k{Qsc(~5eaoa@U@rWrH2AIxKOlCrSlbAkx0?eyo39i z&|sFfJ~@|JTnTo>-wi4lW2V6CsWaa_8;ykY=N{RU$=7gj#l*<@O&qD#NG0CL)ONq? z+cSAgj~DRi%KYkWok)B@Eq@&Fx|$gUGzr|lx}L{{Y%b!7#OAO4wcW-v4fi#%@rc4o zsWP579sYtX=vBKRGF8hj#3KP0IETsr01`t-TLkIcb+0+U)Yux|J7qA!W@|{yTHw5f zY|)|Dm#;f?2}>176a-vSQ~-Drz$5@)$iV3q16OQ949JS!7w?{E z(IE{^AXQmgPI@BI-wd}0jDS!AfGH}t03!rHQ3)+I2mM70aJk&V)!?sWGwCO1GMS8D zh2n3%v&R+~Qgjz6g+u|AsH{K`D1=}yCHSV@htbt-l>BZ@4|#N>#F=$}*UlH;>cOsN z9or0ePu3*JI*ODFjD*`e_Ztj9a)G|PeKAE*BfaJMR5qmj_>dHHXg@ zZ<|?3#vM$f2PB50|9K&M3u6r8=}TJ#GiBtKW*4krAmr9mS<6?2X6V`*Ou^i@IIKw`tXGTt=9*;$q8(otIz~?H#ti_Y|9j&ClG> cT&m~&4e|w7Z`48GO8@`>07*qoM6N<$g3zC93t!MCb^>bP0l+XkKZHyCT6M_Vn@tEB@HAb)CVX^@v-cpF4~35 z4pyNQtzc~Hu2Ml=DGGuS!HuBBji3aokkG275eYSFjm@KZjftgB)MjSxz29*WGHP(= zS)J#f^Y|YnBEox!ooDL@1DrqC(bp`oM@T9G52OMU9cXX)v9^{gbAI(^2UFARZa?zN z>A(J*;{NZCFs_Q%iHf*rShKojvh(WBHe(nE&~pi~=fe{h?;a|JLSx%vve`vAVyX;O zSx8w=Ivvq-XQHmFi&K@B=ahj7j{ZHEUlItI(6VyvGBAQl9NJq%c@&VYPV>c%@3xQU z$yG*}DYG?q@Y3~QK?bc9C?PN*z1@!)>dWJT5U_4AF9 z9-qpf6bJ$Wu|%wDTTXuTDW&HT%7FM7?_;!4437T)!O1g2XY4-(4qWYi*zCeGh~xE6 zBEpR0qt;d2`=cKhI>OLm1BG)I(E-Dg0}b}sG%YF#&_sX$>Mf8Z4H>e9#b`954GKk) z2uV`l@DE#d>!vKA60Iz=Y_Sx}Wj_0K^~1JC4pz=sU&HYopKtChM+pkhT8JZI zVt5KIW)@UwyjarJD%$_``kdB0f0GBLZ7pt(QxPHw+Qy8H6qqRj+5(1hY)Rw=7fye9 ztUASS@1*kBGtPc{>{_l|3>oenAi)zTPqhnJ`*G9YS35U!H7;itPxz+2HaGV)Eai4)Aw4eOkygB9o~ZYI=T~hzA9LL6nfw3%002ovPDHLkV1hgf BMq>Z~ literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Nzbs.org.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Nzbs.org.png new file mode 100644 index 0000000000000000000000000000000000000000..36e68a30f14caf5b2b224d35aad71e2f621bc31c GIT binary patch literal 198 zcmZQzU<5(|0VW0z*Z{<0K&%180zj+)#2|SPZ~&7K0-~CM!PwZC;s5{tK+M3<%*?B9u*c{#$SSG50 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Unknown.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Indexers/Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac1ae7b691b878d9a835251a978287885a64ca9 GIT binary patch literal 816 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 DXn)yy literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/NotAired.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/NotAired.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1158e25f73783ed7530bb395ae7fa2d8d54e45 GIT binary patch literal 3372 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 bQ-A>gj7vUFY6VE800000NkvXXu0mjffzJi! literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Promote.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Promote.png new file mode 100644 index 0000000000000000000000000000000000000000..ead6f552e62d982d5fbaecd1ab56f7587a7392f8 GIT binary patch literal 1555 zcmV+u2JHEXP)JDv5z6rqNJhAOU&MU=4=&U;uj|&}xZK z5SkbhjBlppqSD0FC({d7qYu^sF{Dx=AWbdOZK0RF%pAWnGu!KKEzaH^IO*SWy7SMO z@B9Dn{O9bHan8w1V;^=ccliiRhMf!Nz(1}u^?VDNY~cWaSoP-o)N>NX*GDGrpzEM0 zG$|UBvbwGpoassJ9fw@f6=!)S>m8UcVWNVCcv-yCu!C#P7+X0sAVBs*-D zZ*h5JLT7;0b=$47{9XG&*XnFX3O!bc9;-y@87b8E=9Zi!iwqLX9?29)5d<$Y#@ar8 zV{@r9KZE`O_zA;2Ad#7sMi=%yUo1=PYq(nzF$3pMR2A>uxHgMM0ssx*C(r7|u0L@4S0Z9@jGQhM9=rZEE+yS0c<8O@9;g`y% z>F|{s4<`LeId7`?E9wMTL$4LsI*;ur+L_~U(BEEFL#cs>_+^6tV?h!+c&0^Pd*Cb) z3B6+#K2xTt_Ug?WipoL4Jss^TbauaM?asV3JKaaEoSEU|_i^(1Rq}(3&!>=2^x9bT zTsMsU;+pXDiF;J?!bT@mkWHfc%A!&bZbN|Ns8u1>*n7NkowK&QAcqDY`N^;8ULpmH zR8|J^BHKYn4bN9RNX0atGJeWu(%s4bJM$+r#JK{%*u2#2T;F zY|3_AdTVPT4L($9Mgvc}bTsWtMsG-n^u>&|3WA)xShxbL7a34Mg2Pl*^rVe#xVI$F zLRW7+pr3|EPw>;*&qRy>z?WNPsq5n2GTZPtqbEqc1{4~f#KT9Y6!g00bpmuUI>2W_a?w`n$iD14<^tzvUs&;1mfMy zS0U`a&*iOp>f5w?7)t;GXnVfuk6Q+q*>|JQ)4OS@s zxDnvZJEU;TK0D&pMu%H_qgFU9Q7aFK?u=K}4|*(ttI%=`j$Y`C+_^bwWwfz(VOc!w z)+EB4+|nYykY&`Yq%4t$bbaL(ZPeV=zoN7M%KT$^m%!bQBkqD%+eGmw~Nw5p*a37v!H{%PlfjdeCvdqer}Rvrq!%=!M9!vlX` zyfTm?zMB{%L=&&s2H2@S@y{A+?j2aXeue)AgM?@v*zX4MxDc3v-CC4^DSq;$kWxXk zh5zlv{t5Sm20)icMMT?-RARjoM_ekgCJ=F{glqo_FaQR+cW~k$pxOWc002ovPDHLk FV1oWG?79E| literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Ready.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Ready.png new file mode 100644 index 0000000000000000000000000000000000000000..8501a8b58649150bf75ce22871727e5111027c85 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Rename.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Rename.png new file mode 100644 index 0000000000000000000000000000000000000000..bfeb37431de199efae76ab06e62355d2e0e24a31 GIT binary patch literal 1185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(3*9myU+z6=aistgPb%?u1b{{!il3=E|P3=FRl7#OT(FffScPl`Y4 z#=yYL5a1Ky%EHdRaM7ao@84gzaKYHjOhjBfDJA8=!GjMTJSZwD2@VZaR#TfeY0`#` z8=YNU8=IT||Nk#2C@3T(BrGf}A|fIxDk>%>CN3^6At50tDJdl-B`qy2BO@a#D=Q}_ zCoeCrprD|rsHmi*q^zv0qN1Xzs;Z`@rmn88p`oFvsi~!4qobp%tE;D{r?0PX zU|?WqXlP_)WNd6~Vq#)yYHDU?W^Qh7VPRouX=!C;Wo>P3V`F1$Yinm`XK!!s;Nals z=;-9+gwj^=I-w9;o;%w>FMR=+9#|=kM(9qD>*x1z6)ZE)2+uPUI*WceiVZwxo6M+#jY4YUBQ>ILrI(6!_Y15`p zpFU&8jF~fM&YCrA_Uzen=FFKpckaA-^XAW=zhJ?Fg$sc(ylC;_#Y>hfS-N!TvSrJb zFJHc5#fp_HSFT#MYW3>XYu2n;yLRomb?erzU%z1kFse6h+O%o&=FMBSY}vYX>$Yv% zwr}6QW5mU4oj-pbn9MF-ym;x-rOTHuU%7JS>eZ{) zu3fu+{rZg?H*Vg%dF$4#+qZAuxpU|4-Mjbh-MfGPJ}@0VeE9IuqeqV)KYsG$$`1tYTr%#_gfByXC%a^ZT zzkd7n?fdudKYsl9`Sa(mU%!6;{{83ApTB?q{`>b2n3yNLwgu%j!IB`qU?3L-FsQDb znFN%4=jq}YQgJIuK!JgQsiScMQv-w23I>G+4lM=_g(fbrn1KUBV)%gr4C3q@3T!f; z3Pc$gTQ0NA;A&tF z$r+@20oM-616l@8fzlm}51G^$bs$#EbO~T|U~qJqDOsQv2Xy?5Rg6p>3oyL_5@Kdh XPcsh@;w-of^f`m4tDnm{r-UW|TO122 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Search.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Search.png new file mode 100644 index 0000000000000000000000000000000000000000..c445e5c6dd31177accbc2f881840f78b3110fed0 GIT binary patch literal 743 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9DoT z=lFzskoK&=l_5E!wyUh3`vL7Po6lD!FlAZLyb_!e#VdW8nr@Nd7dko8JId4 zMVMYlaBOL)5EuBb&eVJ*GtszRf=9sNh7LdDqw_9Ne1{djDn7AbP-u{tc$vY#gSqjF zl@4R6d`G$S%`*;fxQ-M>Tw!HA8}0AK!@wd?wV~em^UX?yZAS!s{TymUegB#VEoN3| zn854O|M{xJnYM6aW@dGPe0P80B_J~s*lsSC{KV4nv(u=d(NU!1{-T%L)vqx!FtVI( z3(PQ_%rWJUM~cWkwjkDwLxD%s7#kRxem-KG^jd%7oT&<&!j>X=0;|P=#wa$-S#*9< z;Iu!iLB}VyJn6W~E#TmDV9jx6Umt@HeP@h#Bjwev#54hIbWr>t+wotivvbl*21S)` z@hf(+Fgh?CeDuLA=#T9ZC#fC2YvO>mENu)v@sXX!PF<*0zC(;@dB;@_0f!SyrK&hj zcrJPW^P-bL%iIoLpnIImUKq?$ly02S&T*Q5!Aol&uP=-&0-F-k9R3KOH3<0mp!aZ5 zz}iZF@3S1Ml`!~s2$ZlmFbH}*lyk6Q>^QFw`AJ|_g0$mHwpHh5#JB^)oOx%irB0vf zX+Z`?7gKhDhaJ*4WPm1wlrmWMF>olXvTg_gDf5+aXi@e%bOq?Tvmj=RLl!Xlm+>8V z+~I0a*}$-9C-VfEk1Sa~xt=_;b6_yMw7Q%pC;5YO^IyA77C=5<$#)rr0}Lx}Xvxp6 SNIeNmlnkD(elF{r5}E++qziNa literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Unpacking.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/Unpacking.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed2b590512c024a8aec73a4076fdbc063e4bb26 GIT binary patch literal 4178 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 QsdWRoC_~N0n|2ZZ2S|O3&;S4c literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/VideoFolder.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/VideoFolder.png new file mode 100644 index 0000000000000000000000000000000000000000..566c41eb7cb3507d10adb99500b8edfb5d60c2cb GIT binary patch literal 1133 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 KMNUMnLSTZ=_%X=< literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/XbmcNotification.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/XbmcNotification.png new file mode 100644 index 0000000000000000000000000000000000000000..abbbe37bc0c0d5bc23c4fd396cebc84af691ec0b GIT binary patch literal 6280 zcmV;37i4uv#Boah8gu@}+;cj>4 z^F!yExq#aRupktDfWA?_3a$w+3ynO7p|AWxxrSXoafG!!nqaqD%G?4Uj4v> zB60(8LluXMNvcze-}AwjHi5ihDrf$MWd;vd02D(goEserODs0xLckZhS24fpUd6_Z zp6R9+pMCHE9i%Q;ysY!Up>K4av<8WSBmtE`qLlfrNE7Ar5}jv{C8c~tnt%$An{!;A zy^pzvGQy>lA^{^j7Mj9>710eR2$Jh;np^y-ui}8LBoI(d;{A9&&7bw zg)A4d_20A1Z>P_+faB3~cA7c{Uz8Q4l(9ISqrh3BQc8bN=DYbM@i~dI5Y2uPd{i}b z`&}sy-qu0aO#jJ6H-O50qZH244V36}RbtC2`i#y}SDb64&B}!-{^1SqM8)}0V}$2e zc`59BsnOda^ialJ`FQ98B)I|V>h1RgNCff(l<0ei==&8kzGGtD(0IaVB?fDO20fr) z*(zv^BxsPtHH5X~_y(QT z)XGzrEZ%RG`Rk*LIMT4^R7sJwejs}2L@gjiNhm?y@@-_K{fViaX!%eIRIcetLS*UQ z!X;{OH@ve2bs=?4$&2)is0Z0&zA++*A$();WI=4M@Q{mjvMm+WBY-YF zA~mph7hJRvRJ>iX!NPq{FOmk=GfaM(DzaQV%+fuA#$2+#68o`E)1}e)%aFp`RRtPW z!?WDP@ZojQNpa>vPf#`S*GcM{)GXxf7p68swj7RpDkKW%#?tIp67nL zK<5=yJ1AEctWOUOpo*a+s3ofv!uF-uzZKVuAfjBy3L$Hd%FHI}s3y;SDGJ|CcDB(s zK=|>E5!TTjb2aRhI6j6hfx9Ze3?8I-Ze-Oau#TXZvo$~!=Zl_cOvFozP1cdx`|24< ziMC=tR5V7=6r~Y*hpB6GHAv6}LkV#f6I-&Djlhx%ko92|l@(6wh88ZO$nzM8p!5jT zR>NGI=i+3?Z3U!Cih_Doh+apjJ5m!?OkzupJ%G1X=Z{0nj{p-qydoEzRTuYFuFDSZ zBqDC$X3N(4@8{j!M`G)*lA^Heo&aC$f)UKH;swi(yS9BBq%AdkU=3Nyz;hEa=2dmV zyDDXJ6Z8LYC#xD?InH*Ji$qNOlU_&|$@~&&pHB;3e{;v3{=} zZ}Oo%YmE~%+DV0#Q`A^-4$sR&xb>j2V4Gz^I{@6yg?5(H4jQ1H7vSeb_{Dn}i?`2e z_Bu^nA3!-vHrcmq9p$Z~vmAK+Y^>#>jO1FA?Z78dXpJq%irWT`G^~c0d3rzN7*x}q zW2MaLdf00UPB*app4E8oRQ&_m^x-{gnLIhinRBg3Mxw~1*Z|=tf?mG6g)S0LmX&H6 z`4B1e9%9QcI9?CEJCkHxkeWblqUgk@Mm^z?_g_ttm~|_;2cDaK31aG~n@9TvX)&;z z%mg~$4)xqhP#(xlBsmmhr+i=Uzlu+{vec#d_&Bl=12@Zj{=`Uw_ujFZr=LGTF0!zN z7pyzB^f*?Bz}l6*K9ZR*oOBW=&ho9ri-gu*wtPRy)`J@FN1N7iwUvcw+vX9@oNM#q z{^>|!ysn#uaL{Ezd9gbxctNd_;JON}iF}L;8^!dx(AuR0-}PhZj@Wc@L6Zk>p*rvZ zgWWfeGvChH|Jqq+&2C~#0VX!r$5d%HM{I$j-zF(z@ww8me$m>a>%{w@JaDq!*~X(< zD?@qiukDt1?cRbW>v)2&&`OOP$e48ZEfdVm=e+s$jJI%O-B9I7{rJ<}&b&9Z%QvEE zM%nRkjNUu`*vU#BEa?-8WXCo@H$zG2vc}uNkabQ)sR?`ky|=BR-Of2OdBIt?KFLBa zKA^(EQ$Cte%7>BRn!F{=CQN2A*73R!jY>jq{GyGjSs@G zb|^K$PH4^d?pnn&FC6Fe*;a)k4X3!!gD$hQE{xl)#3W|L(!v^FjBLsc;N$mDc5KM( zpR?1{-9@WzxF2YIXn_F@3q>i#p51GB;U}j!esYfTgDEFrZas{#@;q8)to`yrgC|#0 ztM9>n$>KxVF&f|PNwO}@$4jsuTD`BNhT;21u_5lbd4iV?PV?5`8H!Pi2yUoXjN3)U zGE-&krLyoApF8UhEk3q<$*k1Ge>+LtpO3dzp9!r@B28BXYp1Z}V*8d+`Wh(*-#CkF zqyqF}+@33<<=-grb2)_p6!-w3GPG8n^G9;N@4QIX}~OPSsj`1m2bvX?z(_9N8=q z-H090iZ`GLc`ry!=vawo^|IVrc4+moNFxNAub|OLxNZA5uOB+c;iEI9xV^OS6e5W! zTRgGFQvp7(c(oh25XU}&kHRwO+p zJ53X|Z5ie5qca>jdY&BbRF{fq;;M$w7k9FDy14fy$s}|<+94?u4Yad7hFWZd3XLx{ zLKN_5C%kTLKO;kRUORM_nVBpYt@?TRD)!#FE)?Cw4dA3EoFtR(L^fTYtFcmJUm!yW zrD*lO5yFr%Y6N|HG}2W9ea#v>wv2P^#4Lx7o;MK`aYI#jS8?ztOHBwqu=w1>@!eXm z3f=zIpNVFad#9<%yI1l?Q@)(wsSqIQf@3b zXZZ_7HV(L-DC@yRt3-}RcTMHqKq+IQkp>5OCD|#&;30h9E5bF&`iExMT|3P9Sd*U~ zI>%fqBWf{IH&fNZb`kJKezIV$raMAoz~8dxiCYo57g&e?4|aToT_{#)bq#z&SgA~e zM1+CED4c6Il;}}OKXE<_vHkzb!wU&4rul0#v zggd!$*SqKb#Z9+-{-I(h9fnR7tVG}l$a9BY`sEkZ&G$U^v%o)sr11qr(MlXjRXG`< zoute)nGK9-mr554SU z{Tz;P@W(IFo}Z6kModam3Jc|vf&4WV*6)tRY;_6l&6UwycTCWEb_j3JbJ0iqvH3RkUp3xjz9o9v!8uMpZ7mY6 zAR~C?7vzbMCMoC7OqZFISjERGSS2E|tp+j{O>&vgL+99ju6!XSQ&Y5)gjTIauJruv zu5A+x4b+23!~PP_l&Xp&S0gD-VnRo24-%gn8iOhszDsGEuxY~(YghO4){*l}P0x92 z4;r`VWQ(KNfw6JcCJARwo}k^DH}7F}9r7Z4*OSbv&%6zJTOZe_j@1PDBJc^DlOxPD z>ML>}gZ(vj-Z0AMYlr;`gF@`C2Ry!6OHS2DOXO6QuT4CsAB8+syDl~A30pP}bM|~6 zZy%dsYFfYNE$e&eWP=9Cp)oMbME`JUNr+pGAYo52uMOKR+NWPDMnzv#JMaF=2=EP% z-L_j~N-@)DED66>OIS75Wc7HH)n*(1{{bGZfvNBfP@(Cu117R$75oYBu$0!@RD6~T za~VfZ%rbd$mUcUjMzY~ssmhfIL4IlRYp|cUTePNLg={{o!4E+`phSe7_k3j>_&UgL zT}vTL5@zakq#_`0)Dzxy`x?ea8dR;=DkTRtwsJqjFIu?0YypSs&ha_Rs6~`4hCCN0 zPt9^gt7Q4aJtxep0$yknSI32_X`{gDv-2FDoZ;l@ z3*NFT8X&Ux(8BG0d!F{`*C3m7cMxsqA3pr@uT25*e}A~+?*ADF`5M9hA(c&M@D~y@g9? z>2X82NGO{pI~~i5zzc}ne|WEk4h8T4JMR9kao}qpci2ODqL^*;NANeU8|3D#;}`j~ z=BDP4bGE^E2RYRD$e|KMKg12RL@HUll=I!Rf&qQ}9~1Xr)_U&bR>r*QNd!>^E^1uVW&R+gIr z@HPx|*@ZBD`rJHk9X-$F$yu_jLV7X_ea_pt@B);f!vf#|w%_$1V@7uFw3W(}lnYG{ zzgA1Q_qH|k_oXX*@>pVkaw9D1V0|go-+U@RskiP@u7q1ZjeKHijvwti8Cg7e0lGf< zd64@L@BQ`DmCwD{ROhz4{$0Zt?(~|UFxMP%@CW*8+_7^Njrz*r>zWj;J`Ovf!urGW zSCB%>*1Ls<2>gHuoSSL!e|t|cKcC^IfeduX=E4h~2Nr}5OMnO1cIUqZmhYpTx#qBg zKQvJ1_8k+XY3IM*EJrvtUsXbmjlMK>R!WgWt%!6ij*yFn-sVU9PBPaDe$kw_$fjR~ z>_XUzOG1ZbfCsqg&VL;Po&vec-XKd-=KDq*{L$eCw`?6Jx#;j>p_+NUH(v?9miGNQ zOQT;1wmBTntcY-Kw#|$CPSI*tKyP0N&;EfR4;)b=%-&Xak>+u9{|gO4i^C) zVCx-U9yPLam#tZz)R^!0@K=xbapR_u6$I87m#TU|>9{?%*x)JB_&CkXwt4xLg`i&u zu9F`C_aE8&vFT;k|6<=GZoT85M?s!KxZ63SBxSyT%)wtZ)?~}Zk>yP%_}X`tmKo2> zf?wh^JJ)9KtEU%*Zl3@9AP*eb`y0!K4l4i;aO3VTjRH>rciYwt9@+Qt6+wp%!2{fI`#+3;JO$k2G+)(d z4X$?ZM}`_~T0hiX_+6Hr`BuiOZ=R`uen1b7yodgtAP*ef_wh5G+^=Ks09$VV`w@^Q z5$^SxU!y&^#=##Rth4c&%O^V*ljd7FufMejbUz|}PT;{#p+lFz18mv#cOz)czt>gM z!PnCXLj!fLUDsvH?=ZDm8E?FOb^+*qL@Mwc$b(1seWGLN&_(b7n|J-KgKsOGr**Qy zwGRH^K%EU&5A}rQw^})G9SD) zCq+Db(s~5HzggqzHG?Ew`7h~~m)dRN?a6BBc@|B0J*(yAH@glUE+Ke;>u&wRFz^J( zyL65qX@h+58b~z!W+Ub5)fZ{`D@^Sy=g9H%70~ySXW_5P<+}(E9o>Ivpu;5w4{+VB zf9c@6w=-#jd}zIcU#}%xwR(^=y>#%iOgMU?481+IKNuVVBHtBw=-4HM4wnHuz@}UO zVi=Lffp_a1ZTT{^9umD$yp|@cS=CRy);-;^kCx@am8CI-3+Kg)&Vr>daui$*gowN?a8$Eobm>BP)+37o6H1rdvW@%>&K=-S8p8*~^w*QmoI=<;L(`5w@ zu<_&{$FcB5YrYz}&cO#59d6Rs7rv~0?!xaJ#aP7^1 zGK9$E0`Kv0egidfeFT4aut9%cec9#aBAl**erlhI(_P5;9pH*UhbsskV8hNo9s(W% z-s?xW4U*B#5&XgaIs^Sn!_RZ!^w~N0YeNX3&)OV-Z-YF1Z2zaP2z0o@-~l%5{G%b@ zF%fyM&JjqP2EK>g-&bRxzp-FBk_*%43edB8+EaVukP*Hu$itIY5IXb#c!2dg{%{a@ z4CH+}N078hI=Ur--)z(v9H>)#r7a?ySrodHm#0N|c=Euf&tK99T1M&#@Br&~{J|i| zV*>AUZ+p@v>DUbs{CYiQu)pD^l|_WJ=jRuI?&U> zj{@)a4!4im#5M%BJr(O!87XbODz$3?d7&^QIzyn-$(`N^OuY!EQWu{Ht3Br(3|4{m)#}E8gPeX@y z2zY?2Zu-ms@Kr%R5G`!?ucqHI(BT~f9$@X(PY-~66)=|X=F`7{@X_N3-x<*19R?m? y?bc8Af&9F{FBymX1&}WtKlr%|OJChP>Hh(0jGmwPZqJYa00002)Gd(Q0p@wO((>>s6|));_4?>a|^++lgIWo%t~Ck9(c7 z);_=eKmW7#F_=~L^ z+qP}ju3Z}$88Ms9R;%^WrArMB4V9IZlarI7Q0RphUN~^z!2JCD7hil)R#vuS$Bz5= z?+*Z&b;>8 zYx(*4GMVhbg9m+meG?NCZ@&5F%9SgHLg8C)y%mW>Zrr$W@7}%9(a|ect~`AB@W&s2 z^!xoQR;=J~IPvlE(Z_VV-S58pZdO(nilP@UUc7$&`lCmWrlzK@UcLJH=bu+sSJ&0m z_4oG=4i2teyVmRVo;r2v?YG~ySS&uDub`k{>C&Yyz4Q`-AXQaW8#it&EiG+qY}9JC zg@uLL+1d5=^#+4MEEXpwCZ?vQu3NXRxw+Y9vl)%XjEoG0LXnx7nUj;lVzKOYyIQRV zzYWg65N&g9_4e8t_O55Q*R!h|s#_YLtF940yS45)!1)OW;OKRnU&$7|y+o_F>hr}C zEG9aY^Z541n+RflbpzDnZS%GJ+hAd!v)%kuD3H0tySkX>arA`&S+X33i`Ljt2jmz4 ztVGF5U|3^O0EbdJhQ<}BbmZyGb33P&2 zY=nSVDU`zP#KhDr(X8*D{-3NsQd(kuC+nY|%OAKkYq?3nuxz)xx_dZ=P9?G3K;xr{ zct;~>+XZ)gKOx>o=Rp31a9zdx;Ngry0Q2a?2^Et`5w_H+E&XJDoY)89ITJ6WaX&UIDL_&GNfa9DAkEXr#T;6YZ>*3Uu|2$Fh3oP zQJ`FV~A!B>tT1G+@EN*w)Ga8kFrR5A_rxH53dAkl~7~s>K-Gi!g6cde$Fe92a ziZD0U*gQ$Z(sl#N?Uql5@US>#Q;sM+1ao*!0Y%7p!yMtUY45S}#ogppp%abj#i4l$ z)rsSYCWh`2juueapPjfomypa`pNeT}!`Qd$VmGkdcRC;~#oUjNcvOBNR1~UU47Q#_ zTOATG;LX4h@TKD|6(?Mg;{%-Iz-m2mJ|9cr-QMoST!z$2g5EIpc3tnCNNkP1C~fpWCX&r+?j#aFnE2d7|G9D2L%rZ?_qwe17?>KRA!;m$cokzS$ zEY{kHS(b$^;YJmmM#yOj=G-I3n6sL{ba5U=Hgv>?i{2+r0Mn3YI`z&r*^yNgLfi|B z&fR_^<#lF|%Zy-6f7KFvRt414K}c`Ifj1W%?oy4^X0tQAHRsT52Qq9#4;#CWibpSR zkww0qh9d#nJ=pxZKJt z%_rsWY*GJF6u2iav!qdGO-v}DlY5uti#@LRFv{oRP}oKff+cM70B|HND*@Qr+A^SJ zBt)HY*)rG}C&+{n$_qnOp#v4lmaViWiFE7MmcI>*WUbHX%E=T0tLSfsl6U~g-n4mL zyMd!nkm1Wd8Zj+)Coy0rdQUuHGY%}4F>X=tDCxsd9!&fpvnL~bTW#z) zYZ>18&bO-HJDKnVWF;$#Tt*26AiGzt6?@W=FlsFA2M(M9Lgo2{0W`f-2Vez<3Jl8% zm16*r%OQwkl}2|#6Jo)%Lw`m|L!X?$E~`l2eV3%6z%I*7Qg85|=AkvX@` z+zF=0bL;I3cNw=6{Gs5%A_;mvTf-EZMMJmD9i46IE`ZoCG7QR&`0Ad!?E|q(nL1^_+EFT)Pl)A_S8kw(_!x zoB;g8U)#ldt~-mTi+c$VnMdjQM~ZuSj{N0F)9sGd3QvVgFg0O>O)ITE!VKRfd1uqlT&}hv_w|l=LjwRC)iNdUKq0} zb#M+3{QI&11VM&e`kAmjNrb+527J9k>?w~x?z9OPj-)M_}z7F4m~hA^6)L)@~) z`}{wsiBF)WDWlX>W+-4JcoDM6!`FpT8iMsODKJXV@&`~XLIt!;iXI5_^WSDPbrDix~ctfLYw`zbMa1*m+t9EUB0`%EjG;+@4fe53+ITr z8yy(Mr(co)o~^i9xNv^Wh=uPO=_|`bu`hw~{&W9nLVJ$n7VJ3+^v`piN~l=2pw_>$ zMf=D1kMsm)@#93p_E3N(^b!!0N5~JOVregGM}k0_P8~p5`rasIFH9yYM**bQ8)*o_ z0-0n(h~^LiwR6fN$G8$NoiC<4!_AMm*-^$ zKL4)Mke7#qN0s$6(;jq{^q9MvE!1~#p(#uRR9{Zdvha;zfR71rD0M^|Xzff5B5BV* ztk10BP{_WDZm(L+SQn7YVGat~sN9fdd|o=l=t;>Y8hNMHv$1KF$C9U9M`t@yR_=$` zbG|kE=^)rbk~e#T4LOr+`i2YGwrAloRny!jHz5*1Yd!7a_?g|UfuN!(qG{bPb%6_l zQwxc1#&ho%jSu2;_UG49Miz=+$DfSJh(cwr^#h~vPlus5oXGJJlT!JL zUJnDi(;nsO0%FJr(O{MmMx3t$6D)3%TVC9O0}kj@ukb95z@!-3pMKtA*(~&n`I%(0 z;b427+VWJ8K%qGQ9xW21%YKJQh+5N~bdnaX{S^o%F%YqD=}$;;GV{p!o{VpRtLu~M z%b}&^+%4Z24|^qQ@d*7<-tetp#lzUbYg3Y9CLEKTHou`-XVDroUIC+<-c}Hss*9lh zb^@f(SQVnX#P-;PlOG6F-Y!T`kdV*9bRcNDOJZ%C z?;m42w)Qj%zMoqiY`XHleKnnMx+brd1 zG@yVM4fY6F`S_d-DNhK6dU24PegYVGTMA&)aY(9v9i=H>@oIPP+^zsT2ET1iEEZxB z=XBfBf`S!mrG7DFcRKBTKG#c4m49t#$?92)-*;i;rATrlLNsBqw-ARZ%=;5N$;Edo z7zF)rG9|I6OLfN?PTBUgqGcc3hNY2pW}|up?iMNpx`kpMp1;bfl%PpU@R z{N^Cb$*epar@n*}`NOV2amFgr4sX$9fc-%`nUpPa>zhCL@crzPYG03JhCSm}FDpOI zMyF@vMb;))XD{m4Ys)@79l13W0|~(RO_uG%ypJTiQ0Y_y6`aaJ26wYpU6f@Ij}Z~@ oB`l&O1tC`}n+vdp#)LCrY!3LxnX$>MYksk^!HUO!H+~!c1MY)bWB>pF literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/arrow.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7e687e6aed3818ef4a81fbfc824755cf2c32a3db GIT binary patch literal 1041 zcmaJ=&rcIU6y72Rg>aGJuZxq##Dli`qm;5s3thUcZL|$3O{h1vyF@nGF#vhyb2_r34Ed9yi}y*)g5 zb&#T{;dDyQk^g|V&h=50FA_ewK!PhcQNZ(P30D*wQj&&>5Tp&I1anZ)s`vL{grd#> zJzv0u%w17MMnLf}0oSkyo1!8!uBE8U5Q8Et>1LEZe7!>hU5nBSp$wa`;;^izYBrp& zW%FunSrs&TW*S6Xkq8(NE5J2YOh&{1vO!a6d6r>GRsDvr{`=}8HO)s;1!cAH4U z7+0|vF2H&vb%2@7|DlG_MLReLPyPN=*vVHd$mF1dR&AAB+|rnr$`a!?R4}sh2(5Iw zI9Em(Ib~#l_z)NycVmVGuP9}qV zf=>vNByr;cH__qBNL@9ci91~Flsns#>kWcok<2o*^#@Q(+Qg|aW9{LzqfZ5ti|fh#+&{9OlqG9~{(pYb%7QY?50_R6ZpNG+>*v5~qA9tyN?d|PHzmEm? e2uw{)JsqMh4%~?iZ{57)J<@a{E5Dpwtp5QR&QP%c literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/background.jpg b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64f983548ee2d339197ceb5821bd3c3a2b042fb5 GIT binary patch literal 6462 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/blue.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8e03a6927972aaf30c09c36862dd6f4706ef13 GIT binary patch literal 1182 zcmV;P1Y!G$P)ZDnKYK0CUN!HDbw5yyZjf-{7WB@3cBJ_f|Zg(YrS4(c3RN4tL9_j&wrKh~8^`Nx~w+>__Yd(Qiu zbMFg0==Jn-yF}}OmmC1_*2kYU?%DTzF#zm;`8CJ=>^INXIQYgpMN1Z!D5Vw4>((~5 z^f?M_-c_5PZ5JkU#S@#GmY3D6J)D;=JJxO3WP4~?MdG^GLv!(n`2;@v;>3G-ixzJS zhb96g%U5lcQc8v}Ng`$lAr(dXFJCxbwsQTB3txZG(AC*_^}Yn&{^axRQc>)-;BzKY!NT;_k3U&jY+K;=4Gj?hm~?^QpT5cL!jf$zRdp>2F-u}d^__wVbM@1* za&7j9H@=z(hpI>_tn-=xVC(i>qP)8H(Qs%YplyUg3`He_UX!dnT7RYvNM-Lktcx1^$;h=n$~W(9;yv16vM)|deX3kb6*yR5n)5eeDL@)n#M z92}Hp0JwI=b+@!A*IQg!w^!X{_{=(%NthVSDlron%rNj&V90mtcjtlc&YT%DCV2h* zPa7*YZfh5o^lXhx5E*2%rXgl9AXpPqu_{7fk(OPMpJB7FSdy3F^jvd?O#pE7`me5l z=Te`dNYaB-RKJZ7iNVGc#H`xJto|Q>WM(38bmH$j;{!kU%S1G4g#7KPleZN`@em+n za(G&>qy?*g|1#x2NPgI4rbHyMXXDUvYi7118T@_*KcFJrV2mpjN$68ojzeDPyC)q=kWCz`QRj^@?#hg>QetRq)kKJ=s zRFsz`#)mGR4UgR%wk=)Rm~>jhj@i~|wrMzeXEZq4*S0en^!LW1v9aOdVV-r_ojco` z0C4q{kB&VP3x}piD$8>vCoR^)xmO1io zjCp?g%4E$-w-%N^CY88^FqyO(yE5=Up}9CVSYh;a_o*w#3H05->SV9Q%riYyBNl!@s;s@rX4V{NrfQ=jw_^qho%* wpXcNH-__LAlnwwpcki(`H#g@b*B~)xpI)V*?@=j!U}E!ukaUY^(=0`lnuSyGAvm* z6+Lo~Pb>N`y{7n(uwRgu+T_lYo33vY7tOwLP3K-mzBZSj`+n|cT@w;2F59!(U_F1z+>M>45l;NfWBeyboFyt=akR{0H)k)w0L;g6Zwy>s`@o!Rx;u|&Vp(YbTa>-YPf z-+A2MIRpRCAwG;oUjoyGoP?|mhJw|7u=aWIZnrGAoPZZ$pM;+WJ}qDhxJN^wNA?xq zvVeCqyk)|_J_6IXQodV4!1rKM!sEab8YYDhGM~+=^1NO+FL!>7r zFf$p15U6?`-DsetL`&Hc!Zg7!5Qzk4GKm%fwZ2YuexCBo4D&NHj?-+$1Y7`~eiU96 zpm#&&T_NCk_>=+9X!zLh@UXZ4BOkGHM~+~`VtAzza%Ba%vVv+f`d6kkMk0Zk&tnb^ zVU3QWJ&(1S8E#y>D2q!=rU4%)c=8E&{bpsqDFR-C5eL2n{QA(yh&=r9k6W382T`>e z&g?9*SVSx3Yi+>hw6Al8z$z55CnhlSd1}|MGjrjBEG{mZ2K(=YYkD__Z(EdgDw)n zp4+imD3F+(M7l25-grYT&dmwn>Br!y?amF`B0z&U2Y&+m{$0n9i+vA1h^$m-eDDE; znR*Bjy_DZ*BSP^mQVfIm(W6*nV=TP=Hdo$#R|&2E-iF^i3vy7M%t12(9D`>O;))FkNxBC$w#NhKnpdOS$mP+V)ouR2IGV!=ro}HbNTA%tdy!`zE zEn#2+&cPpP`1;8Q9xz5voudB!`?w1Wn+ipleLLQwe8_V@3kgD2tH{+=vL{cHPp6Hg z>(`HZTJJj#uMJXuAOg;{HZ*^EY--9F{pd%jzw-{>%1XDuH$%WpLN}Yp<*PLPSk z%%vMQKK9E{Jr8g7E8CZV=ir0^KR9&PUDm|u(=;w!YAGL7>O&*|K)Wt-Wrf_-6tPA_ zl#9h*_!7MSGF*=;XGA4_8*CF^8Or6%{ijdUym}RHd3jd_-%ZF$h5DsS?0w(?_7n;L z=l>3}QDq_t$inZKLL54J=8UB(72LVG{!#?j^RA>m%Um$ecF->8l}fk^3*7aY&zQDl z4JF~}sA4?{cn%I~cy# z4Mk4^O!%{GGARo8-%sPpm5mRV9bv#8?r9-AXs>zsGWn?~3fZg{@NBQFp#(e+M>YJ) zffFZU+I5koQct0D*e1m%NVt3v^$b$S0OZI@1-ZJ)fm5d}4QF0}2gCA(5@5g|W)lf7 zf9x2}^z`<7V*sJG)?J}*`Osz}+R++kdYaVX!;Iu|%7AZ%)v<+u7a%9#k@3mNn3fXR zUhj8|?V9xf6Xl>#wHm5gW#6%5mWGF(gM-05VHWTugfK=XCvoTJ2NSfPkb^2RNWN_j z33qOe?BT=MmgR_+m#Pb41pM0A*qCMIa<~f%y@l;+e*mF^%7umA4Gh+12)tqu5sR^B zVj^zBSAywX1iS=E;KBUfy+YON;JRCd=+|&mFAh2cwmA%RCurRr16nD(wKeh+6DTYg+j{?#fDUA$;$;bnPX0`}Y=NqRcD}`z{clO2R zca8)dB^}{<)f*Tt!FQ408BsDRg>oDcnGCuQ0TXs2f%Z>+orVKS9eeFH63356HGA7I z^R=&0e)ZMvmw{oY90x0rK*N|nTW|=Z4Z}dW?m(t`r=TNCaOiYFDNM@(Fuo0`&g(7$ z1f&eZ*!=Jbm|xf|e5W8d9|Y$Qg$=9%LI@gHu56}9IXiFG`5E#V z-7`IEhiF+eYc&X*BX$h|4HxURnuq6M#A1V29wJbe8TQ)#Mui?*<83Q1C30;IwZ2Zh zwYht*iJj+siKm7-a#HgyyM0{-2TGUimPn3)V-xeQW9j@^wkA-V~%?N%I%Vc0g9 zAx99~b&&Kar(73Rt0C9d(T=n6-W(djtJkU3>$VAR`pa|?V8aCms_Uz(>3lA?y-7=J zwCir&MRs5q7#&hNv1LJ+1<_-e`QItkQn=ATJ5KB7i5Gsy%FN}cw!dzzC<4xcJO}@> zRxW>Wc+VbF#A01chUy)e>Vs0qW)qst@N^+IugbKoMHt4$FzIa0w3IDH{io3pvI*0~ z$mLkOd|4at_E}i<=Lvob0DPxXt$xw1*D;5O2lfix3^cSXs7DXp46H%{?Rk{TWmm#? zg6UgaVmADvfNG^!#2y*hBIvCMH;bsct>~s zP59%m`a%hK6p9+2Ef$Ln33YK--dpisRwQZW%`}VOqH%G&DrGl^bs;?&jk3&VkSBsU3>(uMSCMLGEum3PD zAijS;(sfxZm72gGJOMq=^&{^GJOeWK8#EoKso|IUU771kz@xA} z3tw5Q*Y)zkf;LA+FtXVXZD#KkjC2}%e4LfVMOG>my#T-QScK_!(C?B|5=gxc%lE?n zq#frALMf3N83C5C;j z{*Kd&00G#vtRUulw*M1mZTQIn&--MpRx?xaxDm_c5Qc%;tuMzY2!WN)V~>sDDaHK4 zf~+~v@;?vEXM%mYybsCK&14#F3U5;T7Z zKbnAA!F5m6>UCiXVZ>9Z77>Qg^6A~=&=8h|naN-c4`U>g)arGXN+nrsG~|E7`9Fnc zehN!KBM_SH(0LB8zfb!Htz)F5FC>ETB<%TBc=!l>)-((CNWL3<-l;9)^VHX zwHzA}uCR`G$cV)t7Q?VCq?FVf4Jx&olu{bk;jQn&ix*qhU>iW)7uN&7YebB`LHD*D zg%g42xc~Vc*n1X!@d*5!1xd@YbUGF@; zYPznF;QSPR^a{N4U+}+d_N+hllhFy0*pAa)_>_opr0NY=?vm#o1grI>A4ob^>(oYCD@2|N1TICZX@_ zJ}7R*KSw*OMUVu8tps$?F;~SV37w5hN9hhBKf}+ki}*h~Mv!7#x{BEV0000+<-hL-k1ORaGqh|l3d~biyM(ZaZ6t43Ju(Z6mvM#i_ zr@&nj-r2CJ&1P4Dopm*3!RP!(GRf2a;>(rp4S_N}JbZ;$<53T4@a?I?pZeFk_sq>k zC(1W_cOw&l5*rZ-C{c(=moDBq`Am&(?}^X)YCAeQ2Og=x7hknDXiZ+2Fv_k)Vh$u+b#7 z(ii~?!_K#!JhnKWT=@I^?T(dvDGxquX)b*CP<^W_-&yJL=R9kYDl+~QSV%FDGDyt~ ztjwE0ERu|6t+hF}@7Pk3mt8zKIy%Mx05+?^^|3p1p5mN68>@;!Bq+oP#3&>vBnTuV z#3UpHDU4BwQBV-F^K9;oFXSDH&g%+77K_&g0Px2C*VU%2C0pk1MJI>}3=#s9#K_iS z1YG3|GD19&Ae%#Cp5k2JGKrqAuJXSY3ikK|xz*lpwfM$(?FgX?* zyYgG)z`3*M?xb$;`Im=w?Whm5*)t)Rg_UU@EWeFe8`3CZ1Qb-bq$WX?l?VB2JP`C{ zSM&}Kh9forfN}c( zJzI4{BAH0s_ZH1g$7jzT9j`6g;C!WefBrFIV~R)!n9a!%PSr+cYpP&zN~XupWi<)I zO{S#W*Wl-$&T9Y|`1tFl`o+1#0%{_M8{8>EVWCt_LY&4T(=eUk(r$pPi8GyD;Z+|y zD@yXqZv68{^n`tlIC6_&doqc{ifovEGE$}*duY4Xp0n@n<*Z{OFcluY5`Accp@HyR zI2@kYRue3l9Mq#T*YSe8lxt_kX)MEy1(6xPr{fgWNv3P3vzr;1qZ64wp6TcsUP-=c z11nsa{=vJqqrck4F_Mgc_tr%?;K;||g?WDx)$W4Lb*_@?=xsSEf}j=ky@>l}G27U}m#5O6s#(m&{wO}JlhkW-Lf zU_$giL8bukW1Y>F%Qx?`7RFH-aDH*uia`wL`Mn!ygw7jo^Sf?_g;qYUK78Up;hi#z z0St?nllk&5`)cZ65uGlBg_2T|JrP}TgBkLo=tSJ@XAfU$&EL7YzxtA`LU^g^nKMq$ z{n8TJl2YE%rgwiJwF-ytCD8spQYde5nv?yk5tp=7swE19F~}KkJ3~`03NlI38_7@Ddgo5^^R>&8%f}dyS!(+urDQF{{E&=N15T)nOd>5$6YQ z7%x&j-XS>RCJLpj+;o?|{$i6S4=pA)F&K=6nukenKlZu(^Yi$oIPUOLrixKKO|;aC z5^nH0U6e!?b>G>WN-S)O+P%Y%U}Qfk2$CAd!l_gbFAW zN;*C+b zN?x%aY+OB~I~Dr+`sB5xQ#D?#dk(4^Kg}o3_b@jW$2Q)L2IEk6&d$yo`MMqg-gv7K zjaqoWx-DYAF5r8m!d$0ikQo;q9-hg;p(Rb#x;%=4g)6*Q9}f0oq$$dFloAT z?0oNW;G9J+g#FYUTC-g(}blG#-ka#OW_af#=An@unq4dw7g}TX+la z1^1irXuwtul!(F+4TrE|gW&$p>u>&4G#{a(M1s;rc~FJ!wD?6VPyI4=d+o#{Sz zYqRr-5)%G?m_-du{|~p4P%_^toGnVyq6afd%sN3k9c*uiog38Kv8eZs__ZjQq9Xa} z_nD!pu$1kl^(hlxTg*GhpCq$J^f|}cA{qEaX~@!c5X z=&6CRhXp<T` z%=Focl-W5NTbW$sb>6+;l7v~(`WxNG&rTJ|!0oN0Q-gTBR{B~oFV=Npvn1jv&LG%< zvpUn86w$WweyInN!X-5xv>Xa0(;9v?*}SsZK8Wsho&*ixEyS^J|C7C+&*w{x!O(jS z=E*$#nTDfeuoyWpy7nhz`@bCN>YwE1Sqvs!EwQ4stZaI*(wQLf2hTk6s~#cyRC^KR zWT*d1>PJODwRiAEo(qBU8$Pd!R$m{($WB==gU%^Nw#=2c9KD7Uq?e=1IT8^M(sn_T zW2Ke=%_fcuBR2?A%Q@)1>-*mZ0)gNs5-dKvQD(Vl!X?(<@{Au1 zf_D1rd(aa3>~%dmG}nV&B^)BBzR`_I|eO-JpJDZEduLt1ELPKR?r|E7oo!s!>Y&U}NMeN>4B|)ybwuu{}-yAsS zZ=qdz_9PYm#r85(%cLnP^K7T9v*x=V$9sBgYqtC2D#2im8fO45N2CNQ1Rl$dJG7IH z@}$*J&4xR+Rtb|@kT^WE7w2|u<&&#i)zafK!g`{x**!fsZ$K8X^bdizduP?Gl4sZu z3955Y|N3EgUNk?a>c^eWD3GKKwzx>nb|=a%P#pfvezH1^-7dsJj$qH8y57PtFhfS7 zQcMdVWK@sTCZ!i{fV<%hGO*Z$>I?CxXb$my>>klfD zo~=zUZ5Mt`mU(-r#aH|rEJdVW8rKcw&Jl3^YG9LvEwZSivwcOyW~Z*%+1VL}4im#B z-#i>OYG27DQmOn$Ok&S~t+R-pC*d9PHEuS8xu_mT{LUmQdEfn6B-x{|hwqZJNTL^=2JWQDfnaL12k|{h3MpBgAWF z9eDd02H#ek`~u}prbGI{UgG@=ynRn)dKWE@)CPRR@k*0rY85X8p1u| znO?{X>K(7@BH8T=jr5Z(N|I_#iUSgnTJ~;z6&fnu;`i@4r$h2={$po-^^m4a){jSe zn8fi`q=`z$D+<_{rJ*izBn06H%pP1c)#z++R>md6*uAVnO^`4`BV4Ng=(NM zF6$st2W0p8e~^7}{L-N($4^m!`)(AVboZfmFLv+KO+9s7_fm+=549mO;F?EQ<-afa zPVBp2zWe2STzpT<|EDaXC=Z5X9Ck(J-mOgTL%j06S1)tG&Msd^x#bpqfQ5k+6(9d{ zX4zASfd=*DE~KeML|LZ#;oIBITbJL+r`Nd8G#-?WSIVR{yRHQU%s{!UP;%e={5)3K zcjWFuZCBk9N7LwU82CXFVQqTDLGj!*{%n_?R=Zl;tv>7p1CLt&hxNM-$oJ;!_JY%6 zELi5Mh+V=JvaptUTQ;o}H{0cL%tz6yewKm5k-TXai=d(T^*3soJn?}z#RY}icK*0x*m$+nzzb@R!~_!{?)SFN|i*}yKK Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/header.jpg b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a5d8e148929678b83d68400a7358e99e1ca2f37 GIT binary patch literal 10297 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 LNkvXXu0mjfK}uCR literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/ignoredNeutral.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/ignoredNeutral.png new file mode 100644 index 0000000000000000000000000000000000000000..a7181b004e995bd53d50e8846873a5181c979c45 GIT binary patch literal 3719 zcmV;24tVj2P)KLZ*U+9)Gc>Uwq5=^`M4BQav zC@~mCR4i{s){CyJy!Z0*`{S%{?X&l}`|Q2XS{DG4r!SY621@~u$`kN|Je=tfkx_K) z0Du7=V1OwAOjbs^U$A=!5XsBUg`OdD0$&6H@OoIh0&vsNGk{J9|DU8;>3o6cm;e!* zvpE?o5f_L!B}hR1Px(02E1V7jRgKA~q2*i60W=BI4x$ z;7AEyaokrd;A9KLmvTu<&*5_u5(RV}mM-1Y+L}T4YB~8euXQVS(9J=A3hxi`{{&gM(L7aFFpTiSHgo&n% z%S#Zoo5$t~xM@5(m-nBV_z%PWq{X=wiPHEHP-BdM)O9LAe(eV+3K1aD`^8=Vqi??W zFd%+;;VP4hbN}x*{b#|Y;w6Kd@Hx&UD1^=u@-r9r#Lp6-0Rcz?Dv$@tKpp4+LtqB1 zfGuzYZonJ(gAfo2Rs$AD1gU@zvOpf#1PVbh*a`N4YETCnK{IFt$3Z7J13Xv3lIchAu>dPU)xk0{A5EKc;LJ1HL5<+>_t9A*$Rj+w(^vGQ1b ztR2=L%ft$>h1e?WQS4dl5OxCl21mrH;LLFDxF{SCmyfH!9l@Q!4dEtn3wSBKCf)|` zk7wg^@TK@hd^i3&egeNhkS1so>_C83pYk??@5*JW(Ig>h2k8*$9O*9UC7DdtB0G|!$O7^Xax?h?`4Rbz1VzF~!b^fJ zu|c9nqC;Xx;<+SVQd81Nay<4KR#Ayj<$@V3!ONN%r%Pp02 zl;g-1$+gMdmU|~pmv@s-mft1cDgRIbrJ$z}sF0L~^(u2np!*snOJq^#tjl&(~zbU|rGnWpThoTOZ?d`5X%g`#4w!c{3(Iji!NE=zZ! zr_d|uz4TdCMO9B#p=!PAfa-#pwpyrKzFM2wLv?~WLp@%-T)jtqRzpR@Pa{vGMdO|( zUX!7jsJU0OPjg;NTPs{^t5&Dhl(w9*gyjC_sqjXI5<8*3Ox z8SgUgGyZ5|VUl9fXma0F#?;$1-?ZEGcQZXRmRXJ2EpxKDyZHw5F7p@5^p|m#?O%4s zf@0xkvDKo-;)A7?CEv2ua@tD6D%PsjYJ@>$1Tab%m#xv(&ej{OPg%dUv9uA`9Jl$+ z*3dTD_K5A&a_!}u<&De7?bPg;cJ+3n_H_GL`vdl)4yq1JhX#koj_QtV$0o-~Ctar` zr=w2KolTti&h5_gE;cUfT+X>7t{$#Mt^;l|ZlP|~Zjap6+!Nee+-E&3Jl1-g^F(|4 zc<%BX@lx_)c{O{@dRuv~^X~N_`2_n^`#kp5^X2D$*}0K=CJv2 z*YL9N(Fo&+brIJh6(YHjT~XMmu&Ab}xs`4!_pF?Vwuml_9$uxrDtpzH)e5UqR-cZM zjA6!{h(*VS#~z7&&-7UTb~$^RW5+4uOvc;Am&H#d*d^>v zm`-#^tVo>Ux^SzxFOocy>XPP@{gV$Re@Y2YX-mbW#-^U+$?%eSy=ls6*=d96`ssz~ zqibx|>{&C*_u)5XKpCqtx&&0w&s4uqN4P~emT8|^lldkqEbBzJbT%)$KSwWTd(LF8 zd+xVuQEORid-7ECHsy`2b6Quw9$Fu_zGs8_hJpTWll-#$SDV8( zcNZuXY%Cbx;<2TrP@<4uII`7tYuz@~Htx28?dIF7wtp;Q7hNqjDXu7fU&1Q6`iQBE%}Du1;nX3v$1WfgUM344Wm zM=O0RyQ(y*c2>QwPOQFN<6P5Lt600ec77jw-_U-?{jGIMb;Wh>4sZ|LsrRVwXwYh? zIEXozdGJYNSYzL}jBlHp6q<^gJ{;m58a*6zxVPD=x%r6Vk*;`ZQh=^oC;Q|`XFmw9jD{>BIB2SpF19#%Y3 zeAMu>?$2$bmZPV~T*vw!2S2_)&KiIAOU5tnCkmdBpHxh$Og2xMO`V!{pT6;Q<CYBs3V)UUwf4Er^B;b5{H=dBVs_#M|HY@@OJ2&qJoIYWtDd=lxks;4UoXrTy^()& z_$}jY-@EX4lM7kzvF|HC=zi$_==1Txr_@iM{sjY=^Zb#(TH62s00d`2O+f$vv5tKE zQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C1Gq^< zK~#9!V*LOAKf^!*fB<4*7+?SpKm+aofB+hB2LJ@nfI9#nfCk(F00G3ZWXTeu6dpf* zyzSGcPadydzt#X^PHbwVrKLac^Yh>5>7RzA(^6%fj z1q6&*ASfuv@c#Y#g#ZD>40Lhmp+kq-K`zFJWn^SNgolS)6LRGD@82&1bASVosX#z! z08rfqfB<4SbLPylzkmM{OjJ@*QfrX;Yu2pUf9~8lkVOoUk&z2@b#)VAazF=zLcoED zw7LNxfS7=B!2%32211yHh2=6#*WSH*t$+@90Ev5ecraL7TPGl!3Ut5&LLmyp3IGAb zLX7XhB^D#&b9nj9#Pk@X&)eIZ!OP1F>_B9I&c_D;0*D0^w~rn@5+J1T%a<>1Kx#FJ z?da(E7+B;ku(h>KfTs2av=C4r(*6Sg0mP!ErKJZVSBl0~`p% z{RNO3U~&BsAb^;lB^THcz~b^dC~k3KV6dmKv$MzJvK%A_$^irtG}v-rsDA|M0SF*? zN$Bb6`4}jn4y=Gq0K&3%(4oVM%vfc(@Vom_otRG1_?CJ+e5RN1BrHnEN%cg{2)F>00G28$P}mn zjzEXV1LGJJ4*}4s6}{~E0L@yUc-{ci_mCJ@0t67_K=+IQ0%*Wn#Q*^`;0^!?paFLP lKmZN60{{YOz#RY(U;z5n6TaU)d=~%!002ovPDHLkV1kpB-!}jN literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/notIgnored.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/notIgnored.png new file mode 100644 index 0000000000000000000000000000000000000000..4ead4b480bc90f4635b7da458a6ed6d111819a4a GIT binary patch literal 5898 zcmcIo2{@Ep`+r1sQbHxYV@MJ+X6(~gXKdNBg|v;C$CxlPX2x2)R6@KY*&{8ot0-kn zl9CX;DN9sHc$dZPAPn~Df-5d;80 z#M}&T2mQj>AAVlwn;8@|1pos56bEOPvy~-=Nb^PzNHjMP5#UXS#sL7UA3!G%JwX=C z4J1>jy6}&c_uw!JNf+*LyOD4h$Asmn3pZo~!kn%4!f-SO2vbL(5oi^ns-_xDLk*#(f!0K; zE5p#Ls@h0ZEu@;N3Q8M;LSs=|Q8fKv0?ARfF_Ht_&kl2vy{2M{_!hs1E7Ep5}@#ghk|#W3oud)fOCg zj(R@?ArV(x>Anmvjw^|X1ie6Skji30UZ@}JAv`+@*@MMgar=R70D;Z{VsLDJ_WaL2 ztLFy6SXupNb8qh-!ZTUMevq=?SLv6em=1w-5NQW8X}%01XzT|~P>ut-qA>MD+E z4rmlc4UN&z*`-F`y#kNig_DV*DK3k@4O97m0*inmUPyS=vjS=2B5H^kOZw zmYQA^b|t}h5vXKneN{+MGWvS4;CdXPD1IPR2fe*%R3^-j#bQw0d^yF)nnqP&_k#=~ zh2RCVror$agW^YEK@LnTl3lC3DBm$Ttz}Rw@<&Qos7Yk+7#d?0MSIZaM~ZreUSI%$ zN&*=$3knk|FMhuQS$5-qtd7b?A^o$Ku0mSo^}XQ!J24zQC`=giW_f@x3K6Qt?hKkY z4BBL?HZRl%E{!r_Opt|u{fgo;9*5%3l-M+xzHUdMExd}N5rO=Z7;FYV247xEy_F6B zi*IT8naH4qz^MSLp)nIvu z^1qf_sMIY5_xAvyvts4=`DJNeF(!II8=rk#A=x(}_Q?QWsvY0ccX=LIe6@j@<8UxKgXT{00s$bPE5n}bU_UIWJJUO5WDyy9-hyT)!4I=DiVocvub?C= zAhst`_EM*W?fvz}#yrxGvm&`;V?$#kY?X!22)^PQki8sx@=D~HCv$I)UGeOwnt9*6 zaQmg+P~l`oX)9kXzi^V7nyp5taGue&^>0o-s&9BZfG`LXl&1q?{G}vW=DZviFdKr! z?t<6y)c{-p&xQDbTC4P0)vXbW>qd-H4{(K^;;LoEYg_P#ZUhX1VvVi=1}0pg87T_( zKo$>hq>1R(5A0O|j_mmT{c|8RV>a~|7vOqcR)Q-l9)O91k$AvkH&EER?~F0vtO{&& zx2V?vUa0`8=1%Trz>PaVZHt&t3BWH5sM`0Y@Io$prwXQh|*o6HeGqyNbnz zlpv*2OR(kgI>uqH{3)uR01%Rx0323&H z^8qcQ#VswGv1Ou%RYvadF2dd1`WFUU3+M&_@Rk+QwxEnG-4eQ+H`IIK^7e5ak3&LP zzBAG8CF=}s16jjePLp)DHpZ9EmUngz4h+27Q*Y!-c;XbiK(0Gn>oo86B?S9zX8KLd zJNYp5!7x*v**A4hr!2F#ww@C><<|2)&h*(c;k9M$7G7O#?fkjVYnVuzSBtM=Ut08CWU?*FOC&mHP< z@@=dC;z#{?)2!`4sJr<&9{@Onmq$1}Db;_(4*>YAFr^!Y(o^?0DcACDy}!2SzR+6ifj08!cTNy`o7M?ItJl%XlM(GIhPXihCT3e6P33O3Jo#S0mUHZDO1pdtX zidA6(Jcf_?#R;-qkz8(PoaJKqrBcIZW$&BuY>1YJHAZf>IKUjuWF~YO zYjh$Gm{i2?ehi>bd^=rbiaH-wVypY7@NHaquGW@QCYObtkyxm-ILWN^XN+50bYnCx z4LvLHSl1P&hkK-2`(YEGTD_MlqTzwjO>Jd?1Y*-oc%g7X!SsZgtM8l zT*rnuairL>NL;;^{DvqTdPn)$HRd<3I<#+SH)*HZ$qg&#rK_85kxOXoB6*hZ>6}-F z?Rp$OkTLLJKy5&JKz71aFvHEj=jyEeJ4L%ENB3+V6dP0@|WB3d=97}<7THCY6Q6JKkn)(JT>rqTSpPb4n|1Otr}m~{(+|lX zxTpMuMNUhcd=yDm+?>9NZxea5|EB9Hme)2vkKX*qK~)PinlhBSE|uo!tW>6STq6F7 zVB(%cg+ys3q(ff*wfx?EA;(F_CWpAZL-xVNCXQ*b@On4RRc_jxVbbyS=Lje;Iwa;M!mw#=Fa1ON|h<| zGL_M~`FWRgaB6$hoJ#E`&%5jM^{4pEUSL@Z3@PR$PllZ7-S~0myPeY4)Gf^QK)lpNQxHe<-X)BbgiV2-4fE@rwI zk?)x;eW?=fe~+3oo|0K}C^XZOmeU(pJ@j>JFmm2u-ur9Lw5hN&Z>g|6Z?|yEChS8E z9~xE$`KbGoE$-k016(#Ck&yiMRD5|G_R0&BKTOueP#O;O%lCUXcsE>8;8l=Su&^4j z8c(ycD!;b#+HT9;mXDgBHeYV;NYzN!MZH81r4OaQOz*pMWPiYZ<+9weyP$c=!2WA4 z<7HLU@clY2+0Ksp50;t~WfX1is4S|?S)WsGonT#%*+G7A<5O8Bz^HwItvb{Cg< zmjx5ZZc^ks4~rj+CsZc{R|NktugfPA(J5LWvtK5Jd5f_Tvk%jo)^cH7KltHP(lC85tdAaiR&4tcOUKZg~B;dSDN0+UMZgp!VsE z^wRXYvE1(KK6~&O_r`XxO<(9@qN-?FO3}*2crD9F0S54oyvB`*c8SjMpk4dE< zA0MO#UTUeE3eS%xs%0w=mY>>@cect>#PW4ICQ~xa59W>5#Z;qCo{K;0W0Wsz zl~6_=A-{L`Ybpf8OBNndqwgTMCGs_TmYywK>!Ko9W_0a?!+yn=N_-_`(8>K?bJP=^ zq=L*{&0|kXpLCzqy72Mh;@F0|4R6ntWuLZiQju|fUtM@qrv&R0*e%#Ev3A$#eY}O( zyJyOjykFQ9j5#G2hg2&BS$T#Xy8qpFsiah~?(h;;L_fmV#-^wefFDJFSx4RF&?^Vfk6-~-dexEE#73u7{ zCDOO=*4XrC<8EYfvtoDU$ueB|m3!E`RbWnIOY?4hhpP@#4qqKK$J<}uCcK=bwv9_4 ztNN_|*Nbk~s+oDc#+q(NE=Q{u?k~VO^SRO){o<(n;n}1)?}J6w-accGxZAns`Q${) zUY7s)LZ)5U!7i?2*QlxJqu**4GCumNh-iv9{&AtI50dT&^NP91k>dgbFA+b_t`#;<_1Zc{dV{{1cK^2Sf;!eEaL=SeBc*Hj#PbC5 zL~Be&Vn%QX;!Dqw?#pGzhKMbFN7vClR*13Qwi_=-5ACkn-Ev^!E^DHsdr;izu2b4| z%wg{l)(CbX;knJD$_tfg#pMS)%g2MNZy$4?8J5n}YI!|X9r#IdvExOij_&K~$spRy z!70D+BY|L-@nIS=Hr#Vbv6UXVZSRbdVIM# zZT~E1E@5**!XgiM%H%hqno2ix--Hp(?5qGFXgdIeo&5v>24?3&7GJgjd$P}oWW{^DuYKbV><9K6isAXV z6(yr>fGzm*ItmZrXzpi0At4I{o;M2%HF&%?FesjU3T*!7m1%_DIH`3F|I)cYk>!`hkA*=%{BzYPx5cLa0Qj zb}SBeu{gGWR?N+%$UkFu?T(FVb5CP}w>slgQ$6(!=L zeWuuj0IcTGx&sJu`zdaCz8G-e(4j41V(V#|>ArqrjU=?faWw4m6B0UVAD+}*hKl@h zyhZ|#$ClaaK;TI#T1{q)GE^hTG`t5dyZqe#EwcTF1HME>xN%;NpKk9&3#@U4p(V1Bre{frwhH@3zX8yz|E4_EC^A^-pY literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/pause.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..289b66e4bdb3750ebe1cb37fd3dc3e9a63649fc3 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X4tcsbhE&{obIFm5L4k+);G^TeOa3+sa9J_$e7+$Rr~nQM zGTE;+&X@gVmG$y{K9c|glLG?>1ET^1O9KO4ISfeP!xH5K3^#UY=g(Lrw-+St>FVdQ I&MBb@07>0CMgRZ+ literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/play.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/play.png new file mode 100644 index 0000000000000000000000000000000000000000..8501a8b58649150bf75ce22871727e5111027c85 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/red.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/red.png new file mode 100644 index 0000000000000000000000000000000000000000..719f81074331ef4f4fd835d0336ae706070390fe GIT binary patch literal 1190 zcmV;X1X=ruP)9QHi24fbu{>!jlgsKA1)f z55`C^L4&baC`5rKn#P302cto7mzH7!@<%{Q+wGs->C8Q!4>P-MDIjm0Wb#eUoqN7} ze&=R@haDSgpO@{M8p;7+-+Of{Uw@_HQ2^Na+S>95*)R86`0%Z|vShFH&7CCG8)tY; z`#M8!zdtAaRonH@Nl%%WUFdGu(^Efebf=I}B1ZgoQUGME>&w$)8HYq~SM zQeNObw!6wXVbNGG#+^+TRg9{si}RBe(Sdba|C~|-;LHPcuzyE=y=xeoQK-w7mbvSx z20|685;PE1A(c>*ReXA}Z0FnwLleL6E$JDEhJ+9S%@Mc-lo%QVO%kEcKmF-$JcULUmESeT^=liEMA~ZrZ06l>kf%ySXqN)uhlm#;;nf$>a3@Fgz-RiN#haffySes zcR}??}NfGzd(YHTClpB}fXCA|$93{E;r{ zJk&RJ%i$wOZsj`o;@y=iH&yf=2*WLc2B!{8pq^w+NFz`M2~h%sh!QelB2s2MrRAYa zmCRhydM4REXaT^_-4jo@-HMzv#;89`H#fv!kp5tmR04)VrNF4rzs(44HF(Vp_xv;% zYfGz@$qo7Iro%TpqX|o089ht}s;W>0j7soej4B1j?*c+-kI8FoZf;KH5N&;Vb@}p1 zsgFwSOqr#|M(*zG9S9%_0V$%)sVD_Xh*HE+%M5B>I8s^N+TI=v`PamSf&Pl84~C%e z*#&(IM{y?MZ)SicC`x}_n7u)y(4l2M?wPZ>(~0bDX=xcj1OQR(4X-G=v5ravoDpz_ z1~|qjN2Bq-w@G_h_}}_r$8pB}i>^8az1uD=sF@c@t=Kxbt8wIHfR6V@vtK&pOm0-jjYRU? z(0vU~Cp!9)$#dP$&40Y&mvr=e`*2a)lliHdgj3uZwT7eDy>L%j?V*g?W>0F?W&qmh z6&`E)?r`GH;&(O3MQrBTiv#@8%bU=VVt(xC;FK+KJ5zOHD1Pu%Ci=k;?eJgjguTCY zn?sq5bE~VXi}$Sce^Faon-2gR*VV@w8XAg6=N@|e2M`5agdtGK7XSbN07*qoM6N<$ Ef+hGj?EnA( literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/redownload.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/redownload.png new file mode 100644 index 0000000000000000000000000000000000000000..77e12d1c6acb7ad8defd5410e695d603097fba04 GIT binary patch literal 800 zcmV+*1K<3KP);XHLv^X{MWe`Tlinj{a@#N-#PzxnA+M}IA}100Yb>4X_(gy!}zoRE}P9-Gcn=d zkLP%hWjQ4)@@JM~+i8G(XAfenZNtG5HYNzd8%dOYyWMWnOnF3+72tRd!jUi}2NK|K@I&8)OF&qx6p4}p zNk|SR-ebsy13*!0YHDW7YT0sZYHEb3naQ_!H+||v`?BIuOy6N2+`4@WqS457TO^h) zm&>rVwN(K?sZ?EUrDdq93cY>3t8LL(cd1me(hdXzFq59yt*$=OA8Cm$X{rYHyV)7A z#X?cQ`YiyT&v&O(EP<};pb-roKY8>C?|NIBLs@#ZUja+Twe?j%i2xe~G);pCbMras zNLeT#2A>Qz9?$BUE+N?{W;%*H`IOjtzBJ zbcqY1Brc%;m;*rB&UK$%qceTbLcVYjRapQA4pnLuP|^uxzK1(Rn)UJR(iAxgof;y1uelRaG_g>g8*| zAi&Pe?eA0t^n1W zX4Kl&3PZywBhVa}N1wF+SVMXH*LDTK>)l&an7)3`#Be)-7DtoN3TR7cbNHakwn95Q eJ67C30R{j{$`Q#a2a=)y0000jF|8&l+T}r%g=FYv}`Of{$Irnnke2cJllowYR)k*3lffpbei$XXQP9L8b zn_ug6{pU7w4(| zo@kY2d4T76Lo62CyYg#gK$0XNLlXG?{u;zP5#OrBl!NGRLq#7G0W!^*mr$l5Nlb!B zB(lZp^)^VN1Q-l>j)#SXg<}{1)M_<^f+2%$gRTu}2Z+nl=fNZUO4jBqP^nZ*HW|lr zEC9{4CN+fPVPJoF-yctbGn>sOYq52kwZ!^#cyL&cGC^<9!^u-8Am5S?(^J!M_s%_7 z_ARr3He2P-Pm`0?&N1h-$K#pja&mGMQ4&FutN|%mVo@)&p8t-8JdVF3XnRISM(x+y zuBQ?f2n47m5DWyt<#KVnMymm>RtthkU?+q^AuyRtMD9oP(k$!bX4)rQ5CrB=JXQnB zi;SdWi>Qcjy7A0^{l0SfD%&TV{Nfx|1GmSm%*}m;!B<1j*W1S&!{P9v&+9w-Ve0+M z9hRc~##G~DB%~3k=1>jTswyEPBNMXC*&Hv+TK(#(zsm8#;Uh8)JZTeF-BD6hs$g9l zC_Rn#34h-I%uD{nV+!ah?<(Kjh0*I-`?x>ti$9*rMdQSE!!uY{5o#7>k=*Y8;p9jD#3M!V$Mn`xVA+Ru7XO=2w-xhkAo-Lxwzvmd*VuZo x^)}+2pf>2Mzp1W*6C>LKIh*83;@qaL3_RFF0%jt002ovPDHLkV1n@Liedl& literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/stop.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..c61d557d47344b1be6a06a16597486963ca0f2ce GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X?s&R5hE&{obNL`|gMxso;|9YQJ=Yc(-DR?Q)9EtD^WV&l zevsjC(C~hx^!cof?@k4$<;?vSs9YAEm3-ZQr_Hu{;RXf)1||mv4hBXA1{OMTKD|1& pIcm-BPg5kL*D*36fr{@O1`OLy`+Ewp5+BGa2`^qqN+h5pCL|^%#75(TpfN#B@Ih%)45ea1 zY$^~9P*M?7X(*Qf?Ox_S>ayM0otZWyB%I_A+nqhCzVym#qqb$k zcVF-Ky=UL2+SF$*GX??>h@!+$UMQba)>OZ&0jlR$!`yilP!+9W#Ap!EtK(N;;^qWg zzBCT!{}_hJiTI!R=nzUb%J|(TP>HfVQWSZob#*H&Y*+{tbLWDl7@(rizlLssWm;)J z9l~glwvM$>9j%U?7&s9_&sdL-duM|{Cok|lYdhN^T2liPH&SS7 zvw(&zP<0J-Lr0J{i0CJhi0%^N0TnTQ0xp+InxN|jJXZfW6qlAjfA7&A(=ZE?C`6#1 zG{5GVHh8c)3dsqX1!p1fNhJmCi{F4%i=JcOja(jr{&NQ)p^t+oh^})rg#zDXd(oc9 z`ucm&5)Jv>sZb%?*78&K8W(2CQCCbGL=Sjb0y~w&3;n7);1lfYP>?b!bo8 zn=lX-!sLfQtgdk}2!a5rta%1cB4D5%KD7^iJ@>=ZV#8yD@XhhvAff;JS&Q~241~q0 z_|rzNLRJ%rL@u?hdzK!9;n8*ONGceJnyzCOGML5*L|7Do=lO!}GtI{(o+aFYzMnx+ zl!x(;vCKl2%L1{Q+FHVn0i}b9nwXiO%ODB!w)mV+7zhi)l*04RSCZ+-)Y=ki%fhaXx z*hB^HG^v+yF#vmJ+4MXB0h?pZpmPdzB~VH!%b-(Az)qP`pW9T^rqpP&*9n{zPc z>xIb7oW()V!H$tG8YZ{2I4iJna=BhMfrO#!l~gf<6L7EGHj+yd2pV5(?LxJZNM^0kb&43#(V?@WMoNh5Zr~_vye>%lC?1b38XDBkdMHiswmhF zr2Fu|h0Jz)Mi#IFS%8WwVaseIauFc)>`BDqUFCDi16#m74O;0!7Qh0@cpRMDJG0Q4 zxEp`mRZ>zMsOd^qV%t54ZT~?``9F~+(Cy_=KZf~sUm}s%8YGzWRbm#zw&gpGrjkjj z0sHXdsMlMG?nFGXH7rTM`Rp9+JT8=!Z$U^REBIRvvEao=IQDl#|AIg>t0jLPbe+8@aNQzP*-WOqBMI#Ytq`Z2kqtTIcqOC zXwX~6E!eD$$%ed35Cyb`FiTpecWMTG^z@1;hy^kSZBT_9?p0(Jbj@J>4;3jtLUU*? ztwC$ints9iwLs>$hVm|Eu#Yj|Vqm}~Y&#n17~W@PJtQ= zYQ35Iz_=(0WcHn?%}24@+>EVO=8NuZ7yQfV=MUn%i|K1aV@3eD`~TVFK7pBy{{$ES XsYhH?BH27f00000NkvXXu0mjfgwcml literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/x_16.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/Images/x_16.png new file mode 100644 index 0000000000000000000000000000000000000000..cf640c1058ffa30fe3de0bf9a35a04ce6a52dd45 GIT binary patch literal 570 zcmV-A0>%A_P)Q560ZAwo!~#h@(=+LR26Al?(i)ybijh9LY0T+=Q54}#W~T5PBgLEmIUic-*^ zREvWRHU$29{&<~p-c>YcsSDq`=brC7=bm%#eGbdA@Sow5?@5@yNx~^XCm6rzH9~=q z68(A3PB0#gB-j~=V4TgeKzCl`=aP(%LlUesyb+v~#L32RIFw)v2H=_21@mZMn*_7X zz8@M%;@~sr9_~u^#c1%?EZk2%(`mSa>K)PiYZ>AGyttbg9$(-vKz(ZEtHCSaR=%&|skF-jrvub#HppflbF7(-aj6!jr#-bj9-!H@ZLfDuGpn1c;C*jZBfGE`j{|RS zb`=b=*~c7fW@F?Q>f0;RN8(E)fP7xadZ{F{FBr794TVrorzf{#_#RuB+=9lZEx~tp za@sG&;^ee-w&iw+V~x5U`<-wFPn!#tb#-Q02Ri~@6Ex-&uZc$Std%u!(n4j!B~Llv z_oGs+N{M98J!SGsi!+*3pf*fOg7UiKPe0SvtE%8X<6D3M0AA%l5xV>HXg8GdoIXVA4C-?v4 z{Qfrwc-&RB;{`hK=Boh!s5!oG&1S){iYhrhaNTHeBJw>%$nxj z*w?T1EPEzzgG}jCkRg=RS-_x_smrrh;wRQFHMhNf#8r8+zM=Jh4XFL%oz13c`ey{) zD^@J=?gASir4zHxPzH!~Vm8?784RW4)4K78o-P`kaQf%`+OJMD-O2WIjvSCk=>F<$ z!7qsoVx=*Z4zPjD&N`s%-Rd3QdH>jh0j1SkDySdnm&xG6L%Rz;II!w)VLmM?3h;cW z7)Zs5I8IP;5NGSys9rQ?CMHgZxmGQoI)x@IXbW|P6#xi(K-;Z>fuaCytX!0{i>1a; z8dzzZ(NbfU(TpB>?)OA|o61A``?TDr%oN!66#%e%$7*_R!Nh0#9z=T}H9)0TwjQfz zYZ(KS3Bz#6@j0nPQ2>*NAzD_xF!0t+?}gIovV1rSTgNP|;smz()_H|%}Du#g9tmC39CNMa}fmV#Lch7@3B>7IzE zzqzIOay;qOGa-Ld*KjvwCfWr@X>^E#fHVLFKnbMHz)}E;z>)w(fV7sASoLYS7aJNH zq8UW{tJeiqFYZ5D;29`zAm$jtk|ZdQ&3On15o|0h2uc8KX+7zbn(oSV^JY5a ztJlMW4^>&6Q|OcD1bY`+oE1S?!KIC}0u`J#XUp6=HuxlG+(!!C2f|UTWupo_vC4m)LeJS7)?09kB@0*iJ!x;5c1cGzT^Vdty-R^xN zyu74$O$H0wILOjAj-j2v0=Msb?;Si{vAy-LNzI0yjD*8s9`@LsIeWLoSZbI~=_H8spkV1MqG-zH z&R|#DACoSZO^Z}szvI6Z@aU6z`t$k|MowH$=E!%O%k~gRwf5#WpR8|eA89`30K3d_ zbK1hajvtcngdWD+{+eG(s;5tkmwtO~X5Dw4Q$N;pS8n^?-s3-o#HoaCM7q1X`B7f~ sS?kxYcLBieU7P${w{G=j_a1xw1EgmLrr|#@;{X5v07*qoM6N<$g1*S)5>)S}=hDRUNPW zt9hH0<+gEJe70D_ls^BeT7elK&jKbsE(cMWA8H?cFNJ^W%%8M2b)To(=`}ypGBr;h zHTU$7l)0}Ged>Vu$%x48n#og6W&J$u`-!ba^;6;IUAkw0{$lWS^>bP0l+XkKL3wB| literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_ffffff_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_0_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_100__40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_100__40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..842d6f3753703935826f9c5144d8b166c46eeb48 GIT binary patch literal 607 zcmV-l0-*hgP)AQvrr{()S}e~APr5GPpwXb9!>H*K&fzF9jgS^qO`)JQ6F^!-A87^!bSMdQ5wt~5 zC~QqfgGP@t3k%R;ohkxNgtRDX2zm80FbJM;mf#oYQI3!K z9hN*01Gn)78VAAlM$sr3 t1*2dTjDk@x3P!;w7zLwX6pVs_0|3Nxhr6mVN1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_065efe_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_065efe_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8ef82ce6d6d8358427d44c990cedc7b6dc4304 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA98(mQ z{SDR-l*qgAQ2$`;>$-a%lRv*c;OQ6|AR59NN?mFzW8NiZ&4)7ocK{v2;OXk;vd$@? F2>|i~Gr#}< literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_616161_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_616161_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..b913bd7d1f7f9535c3149d3106bd317f4d7a18f8 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#?`} zTRc#ubP0l+XkK DkpVFB literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_b40404_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_30_b40404_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..08c16fc87e1755cfe88dde66d8435720b84b0c17 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FDaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5M?jcysy3fAP;jfKi(^QJ^V>@sIS&{JusBB6{J*-xUi!)* z6|S(Khm3bUpZoLL(fs(D+m>sYzqSkc1h8(&Z{}Rp@GaNCQS`z-UbPiWx3(W-33d2w vHe&%-#(g&75XQH+6PmOZ)JoGz@n8Ps?M%(D&wgbBdVs;x)z4*}Q$iB}+WTpa literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_40_065efe_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_flat_40_065efe_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8ef82ce6d6d8358427d44c990cedc7b6dc4304 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA98(mQ z{SDR-l*qgAQ2$`;>$-a%lRv*c;OQ6|AR59NN?mFzW8NiZ&4)7ocK{v2;OXk;vd$@? F2>|i~Gr#}< literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_white-lines_10_000000_40x100.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-bg_white-lines_10_000000_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..c5187eb3584eb24882ab9cb0ddef7e3c7274a17a GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsfnI0jv*P1Z!d1-ZEz4cu%X)J z_wRmgX@`eQT@_6pk;cVm`(@+V_gH?v7jJG8bvfyB(p4J5ufLC)$H}OlvwSth0q8ge MPgg&ebxsLQ0KRWs(EtDd literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..81c5eb0bc51430515660cba7aa18f440ed3a478c GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_ffffff_256x240.png b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/jquery-ui-1.8.16.custom.css b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/jquery-ui-1.8.16.custom.css new file mode 100644 index 000000000..a50b1b905 --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Content/jQueryUI/jquery-ui-1.8.16.custom.css @@ -0,0 +1,568 @@ +/* + * jQuery UI CSS Framework 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=&fwDefault=normal&fsDefault=&cornerRadius=1px&bgColorHeader=ffffff&bgTextureHeader=01_flat.png&bgImgOpacityHeader=0&borderColorHeader=ffffff&fcHeader=000000&iconColorHeader=98d2fb&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=20&borderColorContent=e8e8e8&fcContent=&iconColorContent=9ccdfc&bgColorDefault=616161&bgTextureDefault=01_flat.png&bgImgOpacityDefault=30&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=&bgTextureHover=01_flat.png&bgImgOpacityHover=100&borderColorHover=ffffff&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=065efe&bgTextureActive=01_flat.png&bgImgOpacityActive=40&borderColorActive=ffffff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=065efe&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=30&borderColorHighlight=065efe&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=000000&bgTextureOverlay=11_white_lines.png&bgImgOpacityOverlay=10&opacityOverlay=60&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=0px%20 + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: ; font-size: ; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; } +.ui-widget-content { border: 1px solid #e8e8e8; background: #ffffff url(images/ui-bg_flat_20_ffffff_40x100.png) 50% 50% repeat-x; color: #; } +.ui-widget-content a { color: #; } +.ui-widget-header { border: 1px solid #ffffff; background: #ffffff url(images/ui-bg_flat_0_ffffff_40x100.png) 50% 50% repeat-x; color: #000000; font-weight: bold; } +.ui-widget-header a { color: #000000; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #ffffff; background: #616161 url(images/ui-bg_flat_30_616161_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #ffffff; background: # url(images/ui-bg_flat_100__40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #ffffff; background: #065efe url(images/ui-bg_flat_40_065efe_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #065efe; background: #065efe url(images/ui-bg_flat_30_065efe_40x100.png) 50% 50% repeat-x; color: #ffffff; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #ffffff; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #a32d00 url(images/ui-bg_diagonals-thick_30_a32d00_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_98d2fb_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 1px; -webkit-border-top-left-radius: 1px; -khtml-border-top-left-radius: 1px; border-top-left-radius: 1px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 1px; -webkit-border-top-right-radius: 1px; -khtml-border-top-right-radius: 1px; border-top-right-radius: 1px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 1px; -webkit-border-bottom-left-radius: 1px; -khtml-border-bottom-left-radius: 1px; border-bottom-left-radius: 1px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 1px; -webkit-border-bottom-right-radius: 1px; -khtml-border-bottom-right-radius: 1px; border-bottom-right-radius: 1px; } + +/* Overlays */ +.ui-widget-overlay { background: #000000 url(images/ui-bg_white-lines_10_000000_40x100.png) 50% 50% repeat; opacity: .60;filter:Alpha(Opacity=60); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 0px ; -khtml-border-radius: 0px ; -webkit-border-radius: 0px ; border-radius: 0px ; }/* + * jQuery UI Resizable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/* + * jQuery UI Autocomplete 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.16 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Content/jquery.gritter.css b/NzbDrone.Services/NzbDrone.Services.Service/Content/jquery.gritter.css new file mode 100644 index 000000000..2e9bfa6df --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Content/jquery.gritter.css @@ -0,0 +1,118 @@ +/* the norm */ +#gritter-notice-wrapper +{ + position: fixed; + top: 60px; + right: 20px; + width: 301px; + z-index: 9999; +} +#gritter-notice-wrapper.top-left +{ + left: 20px; + right: auto; +} +#gritter-notice-wrapper.bottom-right +{ + top: auto; + left: auto; + bottom: 20px; + right: 20px; +} +#gritter-notice-wrapper.bottom-left +{ + top: auto; + right: auto; + bottom: 20px; + left: 20px; +} +.gritter-item-wrapper +{ + position: relative; + margin: 0; +} +.gritter-top +{ + height: 10px; +} +.hover .gritter-top +{ + background-position: right -30px; +} +.gritter-bottom +{ + height: 8px; + margin: 0; +} +.hover .gritter-bottom +{ + background-position: bottom right; +} +.gritter-item +{ + display: block; + background-color: #272525; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); + color: #eee; + padding: 8px 11px; + font-size: 11px; + border-bottom-style: solid; + border-bottom-width: 5px; +} + +.gritter-success .gritter-item +{ + border-color: rgb(100, 135, 46); +} + +.gritter-fail .gritter-item +{ + border-color: rgb(212, 44, 44); +} + +.hover .gritter-item +{ + background-position: right -40px; +} +.gritter-item p +{ + padding: 0; + margin: 0; +} +.gritter-close +{ + display: none; + position: absolute; + top: 0px; + right: -10px; + background: url(../content/images/gritter.png) no-repeat left top; + cursor: pointer; + width: 30px; + height: 30px; +} +.gritter-title +{ + font-size: 20px; + padding: 0; + display: block; + line-height: 1; + padding-bottom: 10px; + text-shadow: 1px 1px #000; /* Not supported by IE :( */ +} +.gritter-image +{ + width: 48px; + height: 48px; + float: left; +} +.gritter-with-image, .gritter-without-image +{ + padding: 0 0 5px 0; +} +.gritter-with-image +{ + width: 220px; + float: right; +} diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Controllers/SceneMappingController.cs b/NzbDrone.Services/NzbDrone.Services.Service/Controllers/SceneMappingController.cs index 3b2ab0174..14a5b5ff9 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/Controllers/SceneMappingController.cs +++ b/NzbDrone.Services/NzbDrone.Services.Service/Controllers/SceneMappingController.cs @@ -1,6 +1,10 @@ -using System.Linq; +using System; +using System.Linq; +using System.Web; using System.Web.Mvc; +using Newtonsoft.Json; using NzbDrone.Services.Service.Providers; +using NzbDrone.Services.Service.Repository; namespace NzbDrone.Services.Service.Controllers { @@ -23,11 +27,67 @@ namespace NzbDrone.Services.Service.Controllers } [HttpGet] - public JsonResult Pending() + [Authorize(Roles = "Users")] + public ActionResult Pending() { var mappings = _sceneMappingProvider.AllPending(); + var serialized = JsonConvert.SerializeObject(mappings); - return Json(mappings, JsonRequestBehavior.AllowGet); + return View((object)serialized); + } + + [HttpPost] + [Authorize(Roles = "Users")] + public string UpdatePending(int id, string value, int columnId) + { + var mapping = _sceneMappingProvider.GetPending(id); + + if (columnId == 0) + mapping.CleanTitle = value.Trim(); + + if (columnId == 1) + mapping.Id = Int32.Parse(value); + + if (columnId == 2) + mapping.Title = value.Trim(); + + _sceneMappingProvider.Update(mapping); + + return value; + } + + [HttpPost] + [Authorize(Roles = "Users")] + public JsonResult AddPending(string cleanTitle, int id, string title) + { + _sceneMappingProvider.Insert(new PendingSceneMapping { CleanTitle = cleanTitle, Id = id, Title = title }); + + return Json("Ok", JsonRequestBehavior.AllowGet); + } + + [Authorize(Roles = "Users")] + public JsonResult Promote(int mappingId) + { + _sceneMappingProvider.Promote(mappingId); + HttpResponse.RemoveOutputCacheItem(VirtualPathUtility.ToAbsolute("~/SceneMapping/Active")); + + return Json("Ok", JsonRequestBehavior.AllowGet); + } + + [Authorize(Roles = "Users")] + public JsonResult PromoteAll() + { + _sceneMappingProvider.PromoteAll(); + return Json("Ok", JsonRequestBehavior.AllowGet); + } + + [Authorize(Roles = "Users")] + public JsonResult Delete(int mappingId) + { + _sceneMappingProvider.DeletePending(mappingId); + HttpResponse.RemoveOutputCacheItem(VirtualPathUtility.ToAbsolute("~/SceneMapping/Active")); + + return Json("Ok", JsonRequestBehavior.AllowGet); } } } \ No newline at end of file diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Global.asax.cs b/NzbDrone.Services/NzbDrone.Services.Service/Global.asax.cs index 17c6c8f47..50e388b73 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/Global.asax.cs +++ b/NzbDrone.Services/NzbDrone.Services.Service/Global.asax.cs @@ -1,5 +1,6 @@ using System; using System.Data.Common; +using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; @@ -35,7 +36,9 @@ namespace NzbDrone.Services.Service RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); + var razor = ViewEngines.Engines.Single(e => e is RazorViewEngine); ViewEngines.Engines.Clear(); + ViewEngines.Engines.Add(razor); ModelBinders.Binders.DefaultBinder = new JsonModelBinder(); } diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Helpers/HtmlIncludeExtentions.cs b/NzbDrone.Services/NzbDrone.Services.Service/Helpers/HtmlIncludeExtentions.cs new file mode 100644 index 000000000..94848660b --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Helpers/HtmlIncludeExtentions.cs @@ -0,0 +1,48 @@ +using System; +using System.IO; +using System.Linq; +using System.Web.Mvc; +using NzbDrone.Common; + +namespace NzbDrone.Web.Helpers +{ + public static class HtmlIncludeExtentions + { + private static readonly string versionString; + private static readonly bool isProduction; + + static HtmlIncludeExtentions() + { + versionString = new EnviromentProvider().Version.ToString().Replace('.', '_'); + isProduction = EnviromentProvider.IsProduction; + } + + public static MvcHtmlString IncludeScript(this HtmlHelper helper, string filename) + { + var relativePath = "/Scripts/" + filename; + VerifyFile(helper, relativePath); + return MvcHtmlString.Create(String.Format("", relativePath, versionString)); + } + + public static MvcHtmlString IncludeCss(this HtmlHelper helper, string filename) + { + var relativePath = "/Content/" + filename; + VerifyFile(helper, relativePath); + return MvcHtmlString.Create(String.Format("", relativePath, versionString)); + } + + private static void VerifyFile(HtmlHelper helper, string filename) + { + if (isProduction) + return; + + var path = helper.ViewContext.RequestContext.HttpContext.Server.MapPath(filename); + + if (!File.Exists(path)) + { + throw new FileNotFoundException("Included static resource was not found.", path); + } + + } + } +} \ No newline at end of file diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Migrations/Migration20120226.cs b/NzbDrone.Services/NzbDrone.Services.Service/Migrations/Migration20120226.cs new file mode 100644 index 000000000..e78a6706d --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Migrations/Migration20120226.cs @@ -0,0 +1,35 @@ +using System; +using System.Data; +using System.Linq; +using Migrator.Framework; + +namespace NzbDrone.Services.Service.Migrations +{ + [Migration(20120226)] + public class Migration20120226 : Migration + { + public override void Up() + { + Database.RenameTable("PendingSceneMappings", "OldPendingSceneMappings"); + + Database.AddTable("PendingSceneMappings", new[] + { + new Column("MappingId", DbType.Int32, ColumnProperty.PrimaryKeyWithIdentity), + new Column("CleanTitle", DbType.String, ColumnProperty.NotNull), + new Column("Id", DbType.Int32, ColumnProperty.NotNull), + new Column("Title", DbType.String, ColumnProperty.NotNull) + }); + + Database.ExecuteNonQuery(@"INSERT INTO PendingSceneMappings (CleanTitle, Id, Title) + SELECT CleanTitle, Id, Title + FROM OldPendingSceneMappings"); + + Database.RemoveTable("OldPendingSceneMappings"); + } + + public override void Down() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Services/NzbDrone.Services.Service/NzbDrone.Services.Service.csproj b/NzbDrone.Services/NzbDrone.Services.Service/NzbDrone.Services.Service.csproj index cfb8153fc..db988fd2d 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/NzbDrone.Services.Service.csproj +++ b/NzbDrone.Services/NzbDrone.Services.Service/NzbDrone.Services.Service.csproj @@ -78,7 +78,16 @@ - + + True + + + True + + + + True + @@ -93,7 +102,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer @@ -110,6 +209,8 @@ + + @@ -149,6 +250,18 @@ NzbDrone.Core + + + + + + + + + + + + @@ -160,7 +273,7 @@ True 62182 / - http://localhost:1542/ + http://localhost:62182/ False False diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs b/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs index 91d31a2fb..1ff2519ef 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs +++ b/NzbDrone.Services/NzbDrone.Services.Service/Providers/SceneMappingProvider.cs @@ -36,21 +36,31 @@ namespace NzbDrone.Services.Service.Providers _database.Insert(pendingSceneMapping); } - public void DeleteLive(string cleanTitle) + public void Update(PendingSceneMapping pendingSceneMapping) { - _database.Delete(cleanTitle); + _database.Update(pendingSceneMapping); } - public void DeletePending(string cleanTitle) + public PendingSceneMapping GetPending(int mappingId) { - _database.Delete(cleanTitle); + return _database.SingleOrDefault("WHERE MappingId = @mappingId", new{ mappingId }); } - public bool Promote(string cleanTitle) + public void DeleteLive(int mappingId) + { + _database.Delete(mappingId); + } + + public void DeletePending(int mappingId) + { + _database.Delete(mappingId); + } + + public bool Promote(int mappingId) { try { - var pendingItem = _database.Single(cleanTitle); + var pendingItem = GetPending(mappingId); var mapping = new SceneMapping { @@ -59,8 +69,8 @@ namespace NzbDrone.Services.Service.Providers Title = pendingItem.Title }; - _database.Insert(mapping); - _database.Delete(pendingItem); + Insert(mapping); + DeletePending(mappingId); } catch (Exception ex) { @@ -78,7 +88,7 @@ namespace NzbDrone.Services.Service.Providers foreach (var pendingItem in pendingItems) { - Promote(pendingItem.Title); + Promote(pendingItem.MappingId); } } catch (Exception ex) diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Repository/PendingSceneMapping.cs b/NzbDrone.Services/NzbDrone.Services.Service/Repository/PendingSceneMapping.cs index 115832ae4..14bb44929 100644 --- a/NzbDrone.Services/NzbDrone.Services.Service/Repository/PendingSceneMapping.cs +++ b/NzbDrone.Services/NzbDrone.Services.Service/Repository/PendingSceneMapping.cs @@ -7,11 +7,15 @@ using Services.PetaPoco; namespace NzbDrone.Services.Service.Repository { [TableName("PendingSceneMappings")] - [PrimaryKey("CleanTitle", autoIncrement = false)] + [PrimaryKey("MappingId", autoIncrement = true)] public class PendingSceneMapping { + public int MappingId { get; set; } public string CleanTitle { get; set; } public int Id { get; set; } public string Title { get; set; } + + [ResultColumn] + public string Commands { get; set; } } } \ No newline at end of file diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.editable.js b/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.editable.js new file mode 100644 index 000000000..bd0c287f8 --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.editable.js @@ -0,0 +1,1296 @@ +/* +* File: jquery.dataTables.editable.js +* Version: 2.0.8 +* Author: Jovan Popovic +* +* Copyright 2010-2011 Jovan Popovic, all rights reserved. +* +* This source file is free software, under either the GPL v2 license or a +* BSD style license, as supplied with this software. +* +* This source file is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +* or FITNESS FOR A PARTICULAR PURPOSE. +* +* Parameters: +* @sUpdateURL String URL of the server-side page used for updating cell. Default value is "UpdateData". +* @sAddURL String URL of the server-side page used for adding new row. Default value is "AddData". +* @sDeleteURL String URL of the server-side page used to delete row by id. Default value is "DeleteData". +* @fnShowError Function function(message, action){...} used to show error message. Action value can be "update", "add" or "delete". +* @sAddNewRowFormId String Id of the form for adding new row. Default id is "formAddNewRow". +* @oAddNewRowFormOptions Object Options that will be set to the "Add new row" dialog +* @sAddNewRowButtonId String Id of the button for adding new row. Default id is "btnAddNewRow". +* @oAddNewRowButtonOptions Object Options that will be set to the "Add new" button +* @sAddNewRowOkButtonId String Id of the OK button placed in add new row dialog. Default value is "btnAddNewRowOk". +* @oAddNewRowOkButtonOptions Object Options that will be set to the Ok button in the "Add new row" form +* @sAddNewRowCancelButtonId String Id of the Cancel button placed in add new row dialog. Default value is "btnAddNewRowCancel". +* @oAddNewRowCancelButtonOptions Object Options that will be set to the Cancel button in the "Add new row" form +* @sDeleteRowButtonId String Id of the button for adding new row. Default id is "btnDeleteRow". +* @oDeleteRowButtonOptions Object Options that will be set to the Delete button +* @sSelectedRowClass String Class that will be associated to the selected row. Default class is "row_selected". +* @sReadOnlyCellClass String Class of the cells that should not be editable. Default value is "read_only". +* @sAddDeleteToolbarSelector String Selector used to identify place where add and delete buttons should be placed. Default value is ".add_delete_toolbar". +* @fnStartProcessingMode Function function(){...} called when AJAX call is started. Use this function to add "Please wait..." message when some button is pressed. +* @fnEndProcessingMode Function function(){...} called when AJAX call is ended. Use this function to close "Please wait..." message. +* @aoColumns Array Array of the JEditable settings that will be applied on the columns +* @sAddHttpMethod String Method used for the Add AJAX request (default is 'POST') +* @sAddDataType String Data type expected from the server when adding a row; allowed values are the same as those accepted by JQuery's "datatype" parameter, e.g. 'text' and 'json'. The default is 'text'. +* @sDeleteHttpMethod String Method used for the Delete AJAX request (default is 'POST') +* @sDeleteDataType String Data type expected from the server when deleting a row; allowed values are the same as those accepted by JQuery's "datatype" parameter, e.g. 'text' and 'json'. The default is 'text'. +* @fnOnDeleting Function function(tr, id, fnDeleteRow){...} Function called before row is deleted. +tr isJQuery object encapsulating row that will be deleted +id is an id of the record that will be deleted. +fnDeleteRow(id) callback function that should be called to delete row with id +returns true if plugin should continue with deleting row, false will abort delete. +* @fnOnDeleted Function function(status){...} Function called after delete action. Status can be "success" or "failure" +* @fnOnAdding Function function(){...} Function called before row is added. +returns true if plugin should continue with adding row, false will abort add. +* @fnOnNewRowPosted Function function(data) Function that can override default function that is called when server-side sAddURL returns result +You can use this function to add different behaviour when server-side page returns result +* @fnOnAdded Function function(status){...} Function called after add action. Status can be "success" or "failure" +* @fnOnEditing Function function(input){...} Function called before cell is updated. +input JQuery object wrapping the input element used for editing value in the cell. +returns true if plugin should continue with sending AJAX request, false will abort update. +* @fnOnEdited Function function(status){...} Function called after edit action. Status can be "success" or "failure" +* @sEditorHeight String Default height of the cell editors +* @sEditorWidth String Default width of the cell editors +* @oDeleteParameters Object Additonal objects added to the DELETE Ajax request +* @oUpdateParameters Object Additonal objects added to the UPDATE Ajax request +* @sIDToken String Token in the add new row dialog that will be replaced with a returned id of the record that is created +* @sSuccessResponse String Text returned from the server if record is successfully deleted or edited. Default "ok" +*/ +(function ($) { + + $.fn.makeEditable = function (options) { + + var iDisplayStart = 0; + + function fnGetCellID(cell) { + /// + ///Utility function used to determine id of the cell + ///By default it is assumed that id is placed as an id attribute of that that surround the cell ( tag). E.g.: + /// + /// ............ + /// + /// + ///TD cell refference + + return properties.fnGetRowID($(cell.parentNode)); + } + + function _fnSetRowIDInAttribute(row, id, overwrite) { + /// + ///Utility function used to set id of the row. Usually when a new record is created, added to the table, + ///and when id of the record is retrieved from the server-side. + ///It is assumed that id is placed as an id attribute of that that surround the cell ( tag). E.g.: + /// + /// ............ + /// + ///This function is used when a datatable is configured in the server side processing mode or ajax source mode + /// + ///TR row where record is placed + + if (overwrite) { + row.attr("id", id); + } else { + if (row.attr("id") == null || row.attr("id") == "") + row.attr("id", id); + } + } + + function _fnGetRowIDFromAttribute(row) { + /// + ///Utility function used to get id of the row. + ///It is assumed that id is placed as an id attribute of that that surround the cell ( tag). E.g.: + /// + /// ............ + /// + ///This function is used when a datatable is configured in the standard client side mode + /// + ///TR row where record is placed + ///Id of the row - by default id attribute placed in the TR tag + + return row.attr("id"); + } + + function _fnSetRowIDInFirstCell(row, id) { + /// + ///Utility function used to set id of the row. Usually when a new record is created, added to the table, + ///and when id of the record is retrieved from the server-side). + ///It is assumed that id is placed as a value of the first <TD> cell in the <TR>. As example: + /// + /// 17......... + /// + ///This function is used when a datatable is configured in the server side processing mode or ajax source mode + /// + ///TR row where record is placed + + $("td:first", row).html(id); + } + + + function _fnGetRowIDFromFirstCell(row) { + /// + ///Utility function used to get id of the row. + ///It is assumed that id is placed as a value of the first <TD> cell in the <TR>. As example: + /// + /// 17......... + /// + ///This function is used when a datatable is configured in the server side processing mode or ajax source mode + /// + ///TR row where record is placed + ///Id of the row - by default id attribute placed in the TR tag + + return $("td:first", row).html(); + + } + + //Reference to the DataTable object + var oTable; + //Refences to the buttons used for manipulating table data + var oAddNewRowButton, oDeleteRowButton, oConfirmRowAddingButton, oCancelRowAddingButton; + //Reference to the form used for adding new data + var oAddNewRowForm; + + //Plugin options + var properties; + + function _fnShowError(errorText, action) { + /// + ///Shows an error message (Default function) + /// + ///text that should be shown + /// action that was executed when error occured e.g. "update", "delete", or "add" + + alert(errorText); + } + + function _fnStartProcessingMode() { + /// + ///Function that starts "Processing" mode i.e. shows "Processing..." dialog while some action is executing(Default function) + /// + + if (oTable.fnSettings().oFeatures.bProcessing) { + $(".dataTables_processing").css('visibility', 'visible'); + } + } + + function _fnEndProcessingMode() { + /// + ///Function that ends the "Processing" mode and returns the table in the normal state(Default function) + /// + + if (oTable.fnSettings().oFeatures.bProcessing) { + $(".dataTables_processing").css('visibility', 'hidden'); + } + } + + var sOldValue, sNewCellValue, sNewCellDislayValue; + + function fnApplyEditable(aoNodes) { + /// + ///Function that applies editable plugin to the array of table rows + /// + ///Aray of table rows <TR> that should be initialized with editable plugin + + if (properties.bDisableEditing) + return; + var oDefaultEditableSettings = { + event: 'dblclick', + + "onsubmit": function (settings, original) { + sOldValue = original.revert; + sNewCellValue = null; + sNewCellDisplayValue = null; + if(settings.type == "text" || settings.type == "select" || settings.type == "textarea" ) + { + var input = $("input,select,textarea", this); + sNewCellValue = $("input,select,textarea", $(this)).val(); + if (input.length == 1) { + var oEditElement = input[0]; + if (oEditElement.nodeName.toLowerCase() == "select" || oEditElement.tagName.toLowerCase() == "select") + sNewCellDisplayValue = $("option:selected", oEditElement).text(); //For select list use selected text instead of value for displaying in table + else + sNewCellDisplayValue = sNewCellValue; + } + + if (!properties.fnOnEditing(input)) + return false; + var x = settings; + if (settings.cssclass != null) { + input.addClass(settings.cssclass); + if (!input.valid() || 0 == input.valid()) + return false; + else + return true; + } + } + + iDisplayStart = fnGetDisplayStart(); + properties.fnStartProcessingMode(); + }, + "submitdata": function (value, settings) { + //iDisplayStart = fnGetDisplayStart(); + //properties.fnStartProcessingMode(); + var id = fnGetCellID(this); + var rowId = oTable.fnGetPosition(this)[0]; + var columnPosition = oTable.fnGetPosition(this)[1]; + var columnId = oTable.fnGetPosition(this)[2]; + var sColumnName = oTable.fnSettings().aoColumns[columnId].sName; + if (sColumnName == null || sColumnName == "") + sColumnName = oTable.fnSettings().aoColumns[columnId].sTitle; + var updateData = null; + if (properties.aoColumns == null || properties.aoColumns[columnId] == null) { + updateData = $.extend({}, + properties.oUpdateParameters, + { + "id": id, + "rowId": rowId, + "columnPosition": columnPosition, + "columnId": columnId, + "columnName": sColumnName + }); + } + else { + updateData = $.extend({}, + properties.oUpdateParameters, + properties.aoColumns[columnId].oUpdateParameters, + { + "id": id, + "rowId": rowId, + "columnPosition": columnPosition, + "columnId": columnId, + "columnName": sColumnName + }); + } + return updateData; + }, + "callback": function (sValue, settings) { + properties.fnEndProcessingMode(); + var status = ""; + var aPos = oTable.fnGetPosition(this); + + if (properties.sSuccessResponse == "IGNORE" || + ( properties.aoColumns != null + && properties.aoColumns[aPos[2]] != null + && properties.aoColumns[aPos[2]].sSuccessResponse == "IGNORE") || + (sNewCellValue == sValue) || + properties.sSuccessResponse == sValue) { + if(sNewCellDisplayValue == null) + { + //sNewCellDisplayValue = sValue; + oTable.fnUpdate(sValue, aPos[0], aPos[2]); + }else{ + oTable.fnUpdate(sNewCellDisplayValue, aPos[0], aPos[2]); + } + $("td.last-updated-cell", oTable).removeClass("last-updated-cell"); + $(this).addClass("last-updated-cell"); + status = "success"; + } else { + oTable.fnUpdate(sOldValue, aPos[0], aPos[2]); + properties.fnShowError(sValue, "update"); + status = "failure"; + } + + properties.fnOnEdited(status, sOldValue, sNewCellDisplayValue, aPos[0], aPos[1], aPos[2]); + if (settings.fnOnCellUpdated != null) { + settings.fnOnCellUpdated(status, sValue, aPos[0], aPos[2], settings); + } + + fnSetDisplayStart(); + }, + "onerror": function () { + properties.fnEndProcessingMode(); + properties.fnShowError("Cell cannot be updated", "update"); + properties.fnOnEdited("failure"); + }, + "height": properties.sEditorHeight, + "width": properties.sEditorWidth + }; + + var cells = null; + + if (properties.aoColumns != null) { + + for (var iDTindex = 0, iDTEindex = 0; iDTindex < oSettings.aoColumns.length; iDTindex++) { + if (oSettings.aoColumns[iDTindex].bVisible) {//if DataTables column is visible + if (properties.aoColumns[iDTEindex] == null) { + //If editor for the column is not defined go to the next column + iDTEindex++; + continue; + } + //Get all cells in the iDTEindex column (nth child is 1-indexed array) + cells = $("td:nth-child(" + (iDTEindex + 1) + ")", aoNodes); + + var oColumnSettings = oDefaultEditableSettings; + oColumnSettings = $.extend({}, oDefaultEditableSettings, properties.oEditableSettings, properties.aoColumns[iDTEindex]); + iDTEindex++; + var sUpdateURL = properties.sUpdateURL; + try { + if (oColumnSettings.sUpdateURL != null) + sUpdateURL = oColumnSettings.sUpdateURL; + } catch (ex) { + } + //cells.editable(sUpdateURL, oColumnSettings); + cells.each(function () { + if (!$(this).hasClass(properties.sReadOnlyCellClass)) { + $(this).editable(sUpdateURL, oColumnSettings); + } + }); + } + + } //end for + } else { + cells = $('td:not(.' + properties.sReadOnlyCellClass + ')', aoNodes); + cells.editable(properties.sUpdateURL, $.extend({}, oDefaultEditableSettings, properties.oEditableSettings)); + } + } + + function fnOnRowAdding(event) { + /// + ///Event handler called when a user click on the submit button in the "Add new row" form. + /// + ///Event that caused the action + + if (properties.fnOnAdding()) { + if (oAddNewRowForm.valid()) { + iDisplayStart = fnGetDisplayStart(); + properties.fnStartProcessingMode(); + + if (properties.bUseFormsPlugin) { + //Still in beta(development) + $(oAddNewRowForm).ajaxSubmit({ + dataType: 'xml', + success: function (response, statusString, xhr) { + if (xhr.responseText.toLowerCase().indexOf("error") != -1) { + properties.fnEndProcessingMode(); + properties.fnShowError(xhr.responseText.replace("Error",""), "add"); + properties.fnOnAdded("failure"); + } else { + fnOnRowAdded(xhr.responseText); + } + + }, + error: function (response) { + properties.fnEndProcessingMode(); + properties.fnShowError(response.responseText, "add"); + properties.fnOnAdded("failure"); + } + } + ); + + } else { + + var params = oAddNewRowForm.serialize(); + $.ajax({ 'url': properties.sAddURL, + 'data': params, + 'type': properties.sAddHttpMethod, + 'dataType': properties.sAddDataType, + success: fnOnRowAdded, + error: function (response) { + properties.fnEndProcessingMode(); + properties.fnShowError(response.responseText, "add"); + properties.fnOnAdded("failure"); + } + }); + } + } + } + event.stopPropagation(); + event.preventDefault(); + } + + function _fnOnNewRowPosted(data) { + ///Callback function called BEFORE a new record is posted to the server + ///TODO: Check this + + return true; + } + + function fnAddRowFromForm(oForm) { + /// + ///Adding a row in the table from the action form + /// + ///Form that contains data to be copied into the row + + var oSettings = oTable.fnSettings(); + var iColumnCount = oSettings.aoColumns.length; + var values = new Array(); + + $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel],input:checkbox[rel]", oForm).each(function () { + var rel = $(this).attr("rel"); + var sCellValue = ""; + if (rel >= iColumnCount) + properties.fnShowError("In the add form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add"); + else { + if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") { + //sCellValue = $("option:selected", this).text(); + sCellValue = $.map( + $.makeArray($("option:selected", this)), + function (n, i) { + return $(n).text(); + }).join(","); + } + else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span") + sCellValue = $(this).html(); + else { + if (this.type == "checkbox") { + if (this.checked) + sCellValue = (this.value != "on") ? this.value : "true"; + else + sCellValue = (this.value != "on") ? "" : "false"; + } else + sCellValue = this.value; + } + sCellValue = sCellValue.replace(properties.sIDToken, data);//@BUG What is data????? + values[rel] = sCellValue; + } + }); + + //Add values from the form into the table + var rtn = oTable.fnAddData(values); + var oTRAdded = oTable.fnGetNodes(rtn); + //Apply editable plugin on the cells of the table + fnApplyEditable(oTRAdded); + + } + + function fnOnRowAdded(data) { + /// + ///Function that is called when a new row is added, and Ajax response is returned from server + /// + ///Id of the new row that is returned from the server + + properties.fnEndProcessingMode(); + + if (properties.fnOnNewRowPosted(data)) { + + var oSettings = oTable.fnSettings(); + if (!oSettings.oFeatures.bServerSide) { + var iColumnCount = oSettings.aoColumns.length; + var values = new Array(); + var rowData = new Object(); + + $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel],input:checkbox[rel]", oAddNewRowForm).each(function () { + var rel = $(this).attr("rel"); + var sCellValue = ""; + if (rel >= iColumnCount) + properties.fnShowError("In the add form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add"); + else { + if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") { + //sCellValue = $("option:selected", this).text(); + sCellValue = $.map( + $.makeArray($("option:selected", this)), + function (n, i) { + return $(n).text(); + }).join(","); + } + else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span") + sCellValue = $(this).html(); + else { + if (this.type == "checkbox") { + if (this.checked) + sCellValue = (this.value != "on") ? this.value : "true"; + else + sCellValue = (this.value != "on") ? "" : "false"; + } else + sCellValue = this.value; + } + + sCellValue = sCellValue.replace(properties.sIDToken, data); + if (oSettings.aoColumns != null + && oSettings.aoColumns[rel] != null + && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) { + rowData[oSettings.aoColumns[rel].mDataProp] = sCellValue; + } else { + values[rel] = sCellValue; + } + } + }); + + var rtn; + //Add values from the form into the table + if (oSettings.aoColumns != null && isNaN(parseInt(oSettings.aoColumns[0].mDataProp))) { + rtn = oTable.fnAddData(rowData); + } + else { + rtn = oTable.fnAddData(values); + } + + var oTRAdded = oTable.fnGetNodes(rtn); + //add id returned by server page as an TR id attribute + properties.fnSetRowID($(oTRAdded), data, true); + //Apply editable plugin on the cells of the table + fnApplyEditable(oTRAdded); + + $("tr.last-added-row", oTable).removeClass("last-added-row"); + $(oTRAdded).addClass("last-added-row"); + } else { + oTable.fnDraw(false); + } + //Close the dialog + oAddNewRowForm.dialog('close'); + $(oAddNewRowForm)[0].reset(); + $(".error", $(oAddNewRowForm)).html(""); + + fnSetDisplayStart(); + properties.fnOnAdded("success"); + } + } + + function fnOnCancelRowAdding(event) { + /// + ///Event handler function that is executed when a user press cancel button in the add new row form + /// + ///DOM event that caused an error + + //Clear the validation messages and reset form + $(oAddNewRowForm).validate().resetForm(); // Clears the validation errors + $(oAddNewRowForm)[0].reset(); + + $(".error", $(oAddNewRowForm)).html(""); + $(".error", $(oAddNewRowForm)).hide(); // Hides the error element + + //Close the dialog + oAddNewRowForm.dialog('close'); + event.stopPropagation(); + event.preventDefault(); + } + + + function fnDisableDeleteButton() { + /// + ///Function that disables delete button + /// + + if (properties.oDeleteRowButtonOptions != null) { + //oDeleteRowButton.disable(); + oDeleteRowButton.button("option", "disabled", true); + } else { + oDeleteRowButton.attr("disabled", "true"); + } + } + + function fnEnableDeleteButton() { + /// + ///Function that enables delete button + /// + + if (properties.oDeleteRowButtonOptions != null) { + //oDeleteRowButton.enable(); + oDeleteRowButton.button("option", "disabled", false); + } else { + oDeleteRowButton.removeAttr("disabled"); + } + } + + + + function fnDeleteRow(id, sDeleteURL) { + /// + ///Function that deletes a row with an id, using the sDeleteURL server page + /// + ///Id of the row that will be deleted. Id value is placed in the attribute of the TR tag that will be deleted + ///Server URL where delete request will be posted + + var sURL = sDeleteURL; + if (sDeleteURL == null) + sURL = properties.sDeleteURL; + properties.fnStartProcessingMode(); + var data = $.extend(properties.oDeleteParameters, { "id": id }); + $.ajax({ 'url': sURL, + 'type': properties.sDeleteHttpMethod, + 'data': data, + "success": fnOnRowDeleted, + "dataType": properties.sDeleteDataType, + "error": function (response) { + properties.fnEndProcessingMode(); + properties.fnShowError(response.responseText, "delete"); + properties.fnOnDeleted("failure"); + + } + }); + } + + function _fnOnRowDelete(event) { + /// + ///Event handler for the delete button + /// + ///DOM event + + iDisplayStart = fnGetDisplayStart(); + if ($('tr.' + properties.sSelectedRowClass + ' td', oTable).length == 0) { + fnDisableDeleteButton(); + return; + } + var id = fnGetCellID($('tr.' + properties.sSelectedRowClass + ' td', oTable)[0]); + if (properties.fnOnDeleting($('tr.' + properties.sSelectedRowClass, oTable), id, fnDeleteRow)) { + fnDeleteRow(id); + } + } + + function fnOnRowDeleted(response) { + /// + ///Called after the record is deleted on the server (in the ajax success callback) + /// + ///Response text eturned from the server-side page + + properties.fnEndProcessingMode(); + var oTRSelected = $('tr.' + properties.sSelectedRowClass, oTable)[0]; + if (response == properties.sSuccessResponse || response == "") { + oTable.fnDeleteRow(oTRSelected); + fnDisableDeleteButton(); + fnSetDisplayStart(); + properties.fnOnDeleted("success"); + } + else { + properties.fnShowError(response, "delete"); + properties.fnOnDeleted("failure"); + } + } + + function _fnOnDeleting(tr, id, fnDeleteRow) { + /// + ///The default function that is called before row is deleted + ///Returning false will abort delete + ///Function can be overriden via plugin properties in order to create custom delete functionality + ///in that case call fnDeleteRow with parameter id, and return false to prevent double delete action + /// + ///JQuery wrapper around the TR tag that will be deleted + ///Id of the record that wil be deleted + ///Function that will be called to delete a row. Default - fnDeleteRow(id) + + return confirm("Are you sure that you want to delete this record?"); ; + } + + /* Function called after delete action + * @param result string + * "success" if row is actually deleted + * "failure" if delete failed + * @return void + */ + function _fnOnDeleted(result) { } + + function _fnOnEditing(input) { return true; } + function _fnOnEdited(result, sOldValue, sNewValue, iRowIndex, iColumnIndex, iRealColumnIndex) { + + } + + function fnOnAdding() { return true; } + function _fnOnAdded(result) { } + + var oSettings; + function fnGetDisplayStart() { + return oSettings._iDisplayStart; + } + + function fnSetDisplayStart() { + /// + ///Set the pagination position(do nothing in the server-side mode) + /// + + if (oSettings.oFeatures.bServerSide === false) { + oSettings._iDisplayStart = iDisplayStart; + oSettings.oApi._fnCalculateEnd(oSettings); + //draw the 'current' page + oSettings.oApi._fnDraw(oSettings); + } + } + + function _fnOnBeforeAction(sAction) { + return true; + } + + function _fnOnActionCompleted(sStatus) { + + } + + function fnGetActionSettings(sAction) { + ///Returns settings object for the action + ///The name of the action + + if (properties.aoTableAction) + properties.fnShowError("Configuration error - aoTableAction setting are not set", sAction); + var i = 0; + + for (i = 0; i < properties.aoTableActions.length; i++) { + if (properties.aoTableActions[i].sAction == sAction) + return properties.aoTableActions[i]; + } + + properties.fnShowError("Cannot find action configuration settings", sAction); + } + + + function fnUpdateRow(oActionForm) { + ///Updates table row using form fields + ///Form used to enter data + + var sAction = $(oActionForm).attr("id"); + sAction = sAction.replace("form", ""); + var sActionURL = $(oActionForm).attr("action"); + if (properties.fnOnBeforeAction(sAction)) { + if ($(oActionForm).valid()) { + iDisplayStart = fnGetDisplayStart(); + properties.fnStartProcessingMode(); + if (properties.bUseFormsPlugin) { + + //Still in beta(development) + var oAjaxSubmitOptions = { + success: function (response, statusString, xhr) { + properties.fnEndProcessingMode(); + if (response.toLowerCase().indexOf("error") != -1 || statusString != "success") { + properties.fnShowError(response, sAction); + properties.fnOnActionCompleted("failure"); + } else { + fnUpdateRowOnSuccess(oActionForm); + properties.fnOnActionCompleted("success"); + } + + }, + error: function (response) { + properties.fnEndProcessingMode(); + properties.fnShowError(response.responseText, sAction); + properties.fnOnActionCompleted("failure"); + } + }; + var oActionSettings = fnGetActionSettings(sAction); + oAjaxSubmitOptions = $.extend({}, properties.oAjaxSubmitOptions, oAjaxSubmitOptions); + $(oActionForm).ajaxSubmit(oAjaxSubmitOptions); + + } else { + var params = $(oActionForm).serialize(); + $.ajax({ 'url': sActionURL, + 'data': params, + 'type': properties.sAddHttpMethod, + 'dataType': properties.sAddDataType, + success: function (response) { + properties.fnEndProcessingMode(); + fnUpdateRowOnSuccess(oActionForm); + properties.fnOnActionCompleted("success"); + }, + error: function (response) { + properties.fnEndProcessingMode(); + properties.fnShowError(response.responseText, sAction); + properties.fnOnActionCompleted("failure"); + } + }); + } + } + } + } + + function fnUpdateRowOnSuccess(oActionForm) { + ///Updates table row using form fields after the ajax success callback is executed + ///Form used to enter data + + var iRowID = jQuery.data(oActionForm, 'ROWID'); + //var iDataRowID = jQuery.data(oActionForm, 'DATAROWID'); + var oSettings = oTable.fnSettings(); + var iColumnCount = oSettings.aoColumns.length; + var values = new Array(); + + var sAction = $(oActionForm).attr("id"); + sAction = sAction.replace("form", ""); + + //$("input.ROWID").val(iRowID); + //$("input.DATAROWID").val(iDataRowID); + + $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],span.datafield[rel],input:checkbox[rel]", oActionForm).each(function () { + var rel = $(this).attr("rel"); + var sCellValue = ""; + if (rel >= iColumnCount) + properties.fnShowError("In the add form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add"); + else { + if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") { + //sCellValue = $("option:selected", this).text(); + sCellValue = $.map( + $.makeArray($("option:selected", this)), + function (n, i) { + return $(n).text(); + }).join(","); + } + else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span") + sCellValue = $(this).html(); + else { + if (this.type == "checkbox") { + if (this.checked) + sCellValue = (this.value != "on") ? this.value : "true"; + else + sCellValue = (this.value != "on") ? "" : "false"; + } else + sCellValue = this.value; + } + + //sCellValue = sCellValue.replace(properties.sIDToken, data); + //values[rel] = sCellValue; + oTable.fnUpdate(sCellValue, iRowID, rel); + } + }); + $(oActionForm).dialog('close'); + + + } + + oTable = this; + + var defaults = { + + sUpdateURL: "UpdateData", + sAddURL: "AddData", + sDeleteURL: "DeleteData", + sAddNewRowFormId: "formAddNewRow", + oAddNewRowFormOptions: { autoOpen: false, modal: true }, + sAddNewRowButtonId: "btnAddNewRow", + oAddNewRowButtonOptions: null, + sAddNewRowOkButtonId: "btnAddNewRowOk", + sAddNewRowCancelButtonId: "btnAddNewRowCancel", + oAddNewRowOkButtonOptions: { label: "Ok" }, + oAddNewRowCancelButtonOptions: { label: "Cancel" }, + sDeleteRowButtonId: "btnDeleteRow", + oDeleteRowButtonOptions: null, + sSelectedRowClass: "row_selected", + sReadOnlyCellClass: "read_only", + sAddDeleteToolbarSelector: ".add_delete_toolbar", + fnShowError: _fnShowError, + fnStartProcessingMode: _fnStartProcessingMode, + fnEndProcessingMode: _fnEndProcessingMode, + aoColumns: null, + fnOnDeleting: _fnOnDeleting, + fnOnDeleted: _fnOnDeleted, + fnOnAdding: fnOnAdding, + fnOnNewRowPosted: _fnOnNewRowPosted, + fnOnAdded: _fnOnAdded, + fnOnEditing: _fnOnEditing, + fnOnEdited: _fnOnEdited, + sAddHttpMethod: 'POST', + sAddDataType: "text", + sDeleteHttpMethod: 'POST', + sDeleteDataType: "text", + fnGetRowID: _fnGetRowIDFromAttribute, + fnSetRowID: _fnSetRowIDInAttribute, + sEditorHeight: "100%", + sEditorWidth: "100%", + bDisableEditing: false, + oDeleteParameters: {}, + oUpdateParameters: {}, + sIDToken: "DATAROWID", + aoTableActions: null, + fnOnBeforeAction: _fnOnBeforeAction, + bUseFormsPlugin: false, + fnOnActionCompleted: _fnOnActionCompleted, + sSuccessResponse: "ok" + + + }; + + properties = $.extend(defaults, options); + oSettings = oTable.fnSettings(); + + return this.each(function () { + + if (oTable.fnSettings().sAjaxSource != null) { + oTable.fnSettings().aoDrawCallback.push({ + "fn": function () { + //Apply jEditable plugin on the table cells + fnApplyEditable(oTable.fnGetNodes()); + $(oTable.fnGetNodes()).each(function () { + var position = oTable.fnGetPosition(this); + var id = oTable.fnGetData(position)[0]; + properties.fnSetRowID($(this), id); + } + ); + }, + "sName": "fnApplyEditable" + }); + + } else { + //Apply jEditable plugin on the table cells + fnApplyEditable(oTable.fnGetNodes()); + } + + //Setup form to open in dialog + oAddNewRowForm = $("#" + properties.sAddNewRowFormId); + if (oAddNewRowForm.length != 0) { + + ///Check does the add new form has all nessecary fields + var oSettings = oTable.fnSettings(); + var iColumnCount = oSettings.aoColumns.length; + for (i = 0; i < iColumnCount; i++) { + if ($("[rel=" + i + "]", oAddNewRowForm).length == 0) + properties.fnShowError("In the form that is used for adding new records cannot be found an input element with rel=" + i + " that will be bound to the value in the column " + i + ". See http://code.google.com/p/jquery-datatables-editable/wiki/AddingNewRecords#Add_new_record_form for more details", "init"); + } + + + if (properties.oAddNewRowFormOptions != null) { + properties.oAddNewRowFormOptions.autoOpen = false; + } else { + properties.oAddNewRowFormOptions = { autoOpen: false }; + } + oAddNewRowForm.dialog(properties.oAddNewRowFormOptions); + + //Add button click handler on the "Add new row" button + oAddNewRowButton = $("#" + properties.sAddNewRowButtonId); + if (oAddNewRowButton.length != 0) { + oAddNewRowButton.click(function () { + oAddNewRowForm.dialog('open'); + }); + } else { + if ($(properties.sAddDeleteToolbarSelector).length == 0) { + throw "Cannot find a button with an id '" + properties.sAddNewRowButtonId + "', or placeholder with an id '" + properties.sAddDeleteToolbarSelector + "' that should be used for adding new row although form for adding new record is specified"; + } else { + oAddNewRowButton = null; //It will be auto-generated later + } + } + + //Prevent Submit handler + if (oAddNewRowForm[0].nodeName.toLowerCase() == "form") { + oAddNewRowForm.unbind('submit'); + oAddNewRowForm.submit(function (event) { + fnOnRowAdding(event); + return false; + }); + } else { + $("form", oAddNewRowForm[0]).unbind('submit'); + $("form", oAddNewRowForm[0]).submit(function (event) { + fnOnRowAdding(event); + return false; + }); + } + + // array to add default buttons to + var aAddNewRowFormButtons = []; + + oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId, oAddNewRowForm); + if (oConfirmRowAddingButton.length == 0) { + //If someone forgotten to set the button text + if (properties.oAddNewRowOkButtonOptions.text == null + || properties.oAddNewRowOkButtonOptions.text == "") { + properties.oAddNewRowOkButtonOptions.text = "Ok"; + } + properties.oAddNewRowOkButtonOptions.click = fnOnRowAdding; + properties.oAddNewRowOkButtonOptions.id = properties.sAddNewRowOkButtonId; + // push the add button onto the array + aAddNewRowFormButtons.push(properties.oAddNewRowOkButtonOptions); + } else { + oConfirmRowAddingButton.click(fnOnRowAdding); + } + + oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId); + if (oCancelRowAddingButton.length == 0) { + //If someone forgotten to the button text + if (properties.oAddNewRowCancelButtonOptions.text == null + || properties.oAddNewRowCancelButtonOptions.text == "") { + properties.oAddNewRowCancelButtonOptions.text = "Cancel"; + } + properties.oAddNewRowCancelButtonOptions.click = fnOnCancelRowAdding; + properties.oAddNewRowCancelButtonOptions.id = properties.sAddNewRowCancelButtonId; + // push the cancel button onto the array + aAddNewRowFormButtons.push(properties.oAddNewRowCancelButtonOptions); + } else { + oCancelRowAddingButton.click(fnOnCancelRowAdding); + } + // if the array contains elements, add them to the dialog + if (aAddNewRowFormButtons.length > 0) { + oAddNewRowForm.dialog('option', 'buttons', aAddNewRowFormButtons); + } + //Issue: It cannot find it with this call: + //oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId, oAddNewRowForm); + //oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId, oAddNewRowForm); + oConfirmRowAddingButton = $("#" + properties.sAddNewRowOkButtonId); + oCancelRowAddingButton = $("#" + properties.sAddNewRowCancelButtonId); + } else { + oAddNewRowForm = null; + } + + //Set the click handler on the "Delete selected row" button + oDeleteRowButton = $('#' + properties.sDeleteRowButtonId); + if (oDeleteRowButton.length != 0) + oDeleteRowButton.click(_fnOnRowDelete); + else { + oDeleteRowButton = null; + } + + //If an add and delete buttons does not exists but Add-delete toolbar is specificed + //Autogenerate these buttons + oAddDeleteToolbar = $(properties.sAddDeleteToolbarSelector); + if (oAddDeleteToolbar.length != 0) { + if (oAddNewRowButton == null && properties.sAddNewRowButtonId != "" + && oAddNewRowForm != null) { + oAddDeleteToolbar.append(""); + oAddNewRowButton = $("#" + properties.sAddNewRowButtonId); + oAddNewRowButton.click(function () { oAddNewRowForm.dialog('open'); }); + } + if (oDeleteRowButton == null && properties.sDeleteRowButtonId != "") { + oAddDeleteToolbar.append(""); + oDeleteRowButton = $("#" + properties.sDeleteRowButtonId); + oDeleteRowButton.click(_fnOnRowDelete); + } + } + + //If delete button exists disable it until some row is selected + if (oDeleteRowButton != null) { + if (properties.oDeleteRowButtonOptions != null) { + oDeleteRowButton.button(properties.oDeleteRowButtonOptions); + } + fnDisableDeleteButton(); + } + + //If add button exists convert it to the JQuery-ui button + if (oAddNewRowButton != null) { + if (properties.oAddNewRowButtonOptions != null) { + oAddNewRowButton.button(properties.oAddNewRowButtonOptions); + } + } + + + //If form ok button exists convert it to the JQuery-ui button + if (oConfirmRowAddingButton != null) { + if (properties.oAddNewRowOkButtonOptions != null) { + oConfirmRowAddingButton.button(properties.oAddNewRowOkButtonOptions); + } + } + + //If form cancel button exists convert it to the JQuery-ui button + if (oCancelRowAddingButton != null) { + if (properties.oAddNewRowCancelButtonOptions != null) { + oCancelRowAddingButton.button(properties.oAddNewRowCancelButtonOptions); + } + } + + //Add handler to the inline delete buttons + $(".table-action-deletelink", oTable).live("click", function (e) { + + e.preventDefault(); + e.stopPropagation(); + var sURL = $(this).attr("href"); + + if (sURL == null || sURL == "") + sURL = properties.sDeleteURL; + + iDisplayStart = fnGetDisplayStart(); + var oTD = ($(this).parents('td'))[0]; + var oTR = ($(this).parents('tr'))[0]; + + $(oTR).addClass(properties.sSelectedRowClass); + + var id = fnGetCellID(oTD); + if (properties.fnOnDeleting(oTD, id, fnDeleteRow)) { + fnDeleteRow(id, sURL); + } + + + } + ); + + //Add handler to the inline delete buttons + $(".table-action-editlink", oTable).live("click", function (e) { + + e.preventDefault(); + e.stopPropagation(); + var sURL = $(this).attr("href"); + + if (sURL == null || sURL == "") + sURL = properties.sDeleteURL; + + iDisplayStart = fnGetDisplayStart(); + var oTD = ($(this).parents('td'))[0]; + var oTR = ($(this).parents('tr'))[0]; + + $(oTR).addClass(properties.sSelectedRowClass); + + var id = fnGetCellID(oTD); + if (properties.fnOnDeleting(oTD, id, fnDeleteRow)) { + fnDeleteRow(id, sURL); + } + + + } + ); + + //Set selected class on row that is clicked + //Enable delete button if row is selected, disable delete button if selected class is removed + $("tbody", oTable).click(function (event) { + if ($(event.target.parentNode).hasClass(properties.sSelectedRowClass)) { + $(event.target.parentNode).removeClass(properties.sSelectedRowClass); + if (oDeleteRowButton != null) { + fnDisableDeleteButton(); + } + } else { + $(oTable.fnSettings().aoData).each(function () { + $(this.nTr).removeClass(properties.sSelectedRowClass); + }); + $(event.target.parentNode).addClass(properties.sSelectedRowClass); + if (oDeleteRowButton != null) { + fnEnableDeleteButton(); + } + } + }); + + + if (properties.aoTableActions != null) { + for (var i = 0; i < properties.aoTableActions.length; i++) { + var oTableAction = $.extend({ sType: "edit" }, properties.aoTableActions[i]); + var sAction = oTableAction.sAction; + var sActionFormId = oTableAction.sActionFormId; + + var oActionForm = $("#form" + sAction); + if (oActionForm.length != 0) { + var oFormOptions = { autoOpen: false, modal: true }; + oFormOptions = $.extend({}, oTableAction.oFormOptions, oFormOptions); + oActionForm.dialog(oFormOptions); + oActionForm.data("action-options", oTableAction); + + var oActionFormLink = $(".table-action-" + sAction); + if (oActionFormLink.length != 0) { + + oActionFormLink.live("click", function () { + + + var sClass = this.className; + var classList = sClass.split(/\s+/); + var sActionFormId = ""; + var sAction = ""; + for (i = 0; i < classList.length; i++) { + if (classList[i].indexOf("table-action-") > -1) { + sAction = classList[i].replace("table-action-", ""); + sActionFormId = "#form" + sAction; + } + } + if (sActionFormId == "") { + properties.fnShowError("Cannot find a form with an id " + sActionFormId + " that should be associated to the action - " + sAction, sAction) + } + + var oTableAction = $(sActionFormId).data("action-options"); + + if (oTableAction.sType == "edit") { + + var oTD = ($(this).parents('td'))[0]; + var oTR = ($(this).parents('tr'))[0]; + + $(oTR).addClass(properties.sSelectedRowClass); + + var iRowID = oTable.fnGetPosition(oTR); + + var id = fnGetCellID(oTD); + + $(sActionFormId).validate().resetForm(); + jQuery.data($(sActionFormId)[0], 'DATARECORDID', id); + $("input.DATARECORDID", $(sActionFormId)).val(id); + jQuery.data($(sActionFormId)[0], 'ROWID', iRowID); + $("input.ROWID", $(sActionFormId)).val(iRowID); + + + var oSettings = oTable.fnSettings(); + var iColumnCount = oSettings.aoColumns.length; + + + $("input:text[rel],input:radio[rel][checked],input:hidden[rel],select[rel],textarea[rel],input:checkbox[rel]", + $(sActionFormId)).each(function () { + var rel = $(this).attr("rel"); + + + if (rel >= iColumnCount) + properties.fnShowError("In the action form is placed input element with the name '" + $(this).attr("name") + "' with the 'rel' attribute that must be less than a column count - " + iColumnCount, "add"); + else { + var sCellValue = oTable.fnGetData(oTR)[rel]; + if (this.nodeName.toLowerCase() == "select" || this.tagName.toLowerCase() == "select") { + //sCellValue = $("option:selected", this).text(); + /*sCellValue = $.map( + $.makeArray($("option:selected", this)), + function (n, i) { + return $(n).text(); + }).join(","); + */ + //$(this).val(sCellValue); + $(this).attr("value", sCellValue); + + } + else if (this.nodeName.toLowerCase() == "span" || this.tagName.toLowerCase() == "span") + $(this).html(sCellValue); + else { + if (this.type == "checkbox") { + if (sCellValue == "true") { + $(this).attr("checked", true); + } + } else + { + if(this.type == "radio"){ + if(this.value == sCellValue){ + this.checked = true; + } + }else{ + this.value = sCellValue; + } + } + } + + //sCellValue = sCellValue.replace(properties.sIDToken, data); + //values[rel] = sCellValue; + //oTable.fnUpdate(sCellValue, iRowID, rel); + } + }); + + + } + $(sActionFormId).dialog('open'); + }); + } + + oActionForm.submit(function (event) { + + var oTableAction = $(this).data("action-options"); + + if (oTableAction.sType == "edit") { + ///Start function fnUpdateRow + fnUpdateRow(this); + ///end function fnUpdateRow + } else { + fnAddRowFromForm(this); + } + return false; + }); + + + var aActionFormButtons = new Array(); + + //var oActionSubmitButton = $("#form" + sAction + "Ok", oActionForm); + //aActionFormButtons.push(oActionSubmitButton); + var oActionFormCancel = $("#form" + sAction + "Cancel", oActionForm); + if (oActionFormCancel.length != 0) { + aActionFormButtons.push(oActionFormCancel); + oActionFormCancel.click(function () { + + var oActionForm = $(this).parents("form")[0]; + //Clear the validation messages and reset form + $(oActionForm).validate().resetForm(); // Clears the validation errors + $(oActionForm)[0].reset(); + + $(".error", $(oActionForm)).html(""); + $(".error", $(oActionForm)).hide(); // Hides the error element + $(oActionForm).dialog('close'); + }); + } + + //Convert all action form buttons to the JQuery UI buttons + $("button", oActionForm).button(); + /* + if (aActionFormButtons.length > 0) { + oActionForm.dialog('option', 'buttons', aActionFormButtons); + } + */ + + + + } + + + + + } // end for (var i = 0; i < properties.aoTableActions.length; i++) + } //end if (properties.aoTableActions != null) + + + }); + }; +})(jQuery); diff --git a/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.js b/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.js new file mode 100644 index 000000000..35b8d1b57 --- /dev/null +++ b/NzbDrone.Services/NzbDrone.Services.Service/Scripts/DataTables-1.9.0/media/js/jquery.dataTables.js @@ -0,0 +1,11612 @@ +/** + * @summary DataTables + * @description Paginate, search and sort HTML tables + * @version 1.9.0 + * @file jquery.dataTables.js + * @author Allan Jardine (www.sprymedia.co.uk) + * @contact www.sprymedia.co.uk/contact + * + * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved. + * + * This source file is free software, under either the GPL v2 license or a + * BSD style license, available at: + * http://datatables.net/license_gpl2 + * http://datatables.net/license_bsd + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +/*jslint evil: true, undef: true, browser: true */ +/*globals $, jQuery,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex*/ + +(/** @lends */function($, window, document, undefined) { + /** + * DataTables is a plug-in for the jQuery Javascript library. It is a + * highly flexible tool, based upon the foundations of progressive + * enhancement, which will add advanced interaction controls to any + * HTML table. For a full list of features please refer to + * DataTables.net. + * + * Note that the DataTable object is not a global variable but is + * aliased to jQuery.fn.DataTable and jQuery.fn.dataTable through which + * it may be accessed. + * + * @class + * @param {object} [oInit={}] Configuration object for DataTables. Options + * are defined by {@link DataTable.defaults} + * @requires jQuery 1.3+ + * + * @example + * // Basic initialisation + * $(document).ready( function { + * $('#example').dataTable(); + * } ); + * + * @example + * // Initialisation with configuration options - in this case, disable + * // pagination and sorting. + * $(document).ready( function { + * $('#example').dataTable( { + * "bPaginate": false, + * "bSort": false + * } ); + * } ); + */ + var DataTable = function( oInit ) + { + + + /** + * Add a column to the list used for the table with default values + * @param {object} oSettings dataTables settings object + * @param {node} nTh The th element for this column + * @memberof DataTable#oApi + */ + function _fnAddColumn( oSettings, nTh ) + { + var oDefaults = DataTable.defaults.columns; + var iCol = oSettings.aoColumns.length; + var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { + "sSortingClass": oSettings.oClasses.sSortable, + "sSortingClassJUI": oSettings.oClasses.sSortJUI, + "nTh": nTh ? nTh : document.createElement('th'), + "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', + "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], + "mDataProp": oDefaults.mDataProp ? oDefaults.oDefaults : iCol + } ); + oSettings.aoColumns.push( oCol ); + + /* Add a column specific filter */ + if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null ) + { + oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch ); + } + else + { + var oPre = oSettings.aoPreSearchCols[ iCol ]; + + /* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */ + if ( oPre.bRegex === undefined ) + { + oPre.bRegex = true; + } + + if ( oPre.bSmart === undefined ) + { + oPre.bSmart = true; + } + + if ( oPre.bCaseInsensitive === undefined ) + { + oPre.bCaseInsensitive = true; + } + } + + /* Use the column options function to initialise classes etc */ + _fnColumnOptions( oSettings, iCol, null ); + } + + + /** + * Apply options for a column + * @param {object} oSettings dataTables settings object + * @param {int} iCol column index to consider + * @param {object} oOptions object with sType, bVisible and bSearchable + * @memberof DataTable#oApi + */ + function _fnColumnOptions( oSettings, iCol, oOptions ) + { + var oCol = oSettings.aoColumns[ iCol ]; + + /* User specified column options */ + if ( oOptions !== undefined && oOptions !== null ) + { + if ( oOptions.sType !== undefined ) + { + oCol.sType = oOptions.sType; + oCol._bAutoType = false; + } + + $.extend( oCol, oOptions ); + _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); + + /* iDataSort to be applied (backwards compatibility), but aDataSort will take + * priority if defined + */ + if ( oOptions.iDataSort !== undefined ) + { + oCol.aDataSort = [ oOptions.iDataSort ]; + } + _fnMap( oCol, oOptions, "aDataSort" ); + } + + /* Cache the data get and set functions for speed */ + oCol.fnGetData = _fnGetObjectDataFn( oCol.mDataProp ); + oCol.fnSetData = _fnSetObjectDataFn( oCol.mDataProp ); + + /* Feature sorting overrides column specific when off */ + if ( !oSettings.oFeatures.bSort ) + { + oCol.bSortable = false; + } + + /* Check that the class assignment is correct for sorting */ + if ( !oCol.bSortable || + ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) ) + { + oCol.sSortingClass = oSettings.oClasses.sSortableNone; + oCol.sSortingClassJUI = ""; + } + else if ( oCol.bSortable || + ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) ) + { + oCol.sSortingClass = oSettings.oClasses.sSortable; + oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI; + } + else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 ) + { + oCol.sSortingClass = oSettings.oClasses.sSortableAsc; + oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed; + } + else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 ) + { + oCol.sSortingClass = oSettings.oClasses.sSortableDesc; + oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed; + } + } + + + /** + * Adjust the table column widths for new data. Note: you would probably want to + * do a redraw after calling this function! + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnAdjustColumnSizing ( oSettings ) + { + /* Not interested in doing column width calculation if autowidth is disabled */ + if ( oSettings.oFeatures.bAutoWidth === false ) + { + return false; + } + + _fnCalculateColumnWidths( oSettings ); + for ( var i=0 , iLen=oSettings.aoColumns.length ; i