diff --git a/.gitignore b/.gitignore index 12c84289ee9c4e1764517848dbd64f85214d450c..81c306003eebce5b0cf2f4ff1415379001832bf0 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ unrar/* bower_components node_modules dist +package-lock.json # Unit test/Coverage # ###################### diff --git a/gui/slick/css/1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf b/gui/slick/css/1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf index d7d7cd1fcc97d7aaeb1ffa373ea86d0c2ee13b5e..69abfdcac2889c2e8000d51015ae904e3fba7717 100644 Binary files a/gui/slick/css/1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf and b/gui/slick/css/1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf differ diff --git a/gui/slick/css/702ZOKiLJc3WVjuplzInF5uFdDttMLvmWuJdhhgs.ttf b/gui/slick/css/702ZOKiLJc3WVjuplzInF5uFdDttMLvmWuJdhhgs.ttf index 974a7c5edd7f14486c43561220b54244da886885..ad31e3b8fc9baecb71d33cb9ce9ab9bce8b98219 100644 Binary files a/gui/slick/css/702ZOKiLJc3WVjuplzInF5uFdDttMLvmWuJdhhgs.ttf and b/gui/slick/css/702ZOKiLJc3WVjuplzInF5uFdDttMLvmWuJdhhgs.ttf differ diff --git a/gui/slick/css/JXh38I15wypJXxuGMBp0EAVxt0G0biEntp43Qt6E.ttf b/gui/slick/css/JXh38I15wypJXxuGMBp0EAVxt0G0biEntp43Qt6E.ttf index 53dbf96f7cde8a031fcea31baf7eaf9c9af36fbb..b67a92a091a4d280ce5f6c5a1545abd09096d042 100644 Binary files a/gui/slick/css/JXh38I15wypJXxuGMBp0EAVxt0G0biEntp43Qt6E.ttf and b/gui/slick/css/JXh38I15wypJXxuGMBp0EAVxt0G0biEntp43Qt6E.ttf differ diff --git a/gui/slick/css/KeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf b/gui/slick/css/KeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf index 0dae9c3bbc0b52ccd98b060849e631661a9bebdc..7abffe883663de93545150080507995a963c5d26 100644 Binary files a/gui/slick/css/KeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf and b/gui/slick/css/KeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf differ diff --git a/gui/slick/css/_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf b/gui/slick/css/_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf index 314e983a4bce3320b1ebeea9d21aeea88eaab52e..e5da0ec1e3f4ea21882b90bac9995282e20ec333 100644 Binary files a/gui/slick/css/_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf and b/gui/slick/css/_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf differ diff --git a/gui/slick/css/bV5DfGHOiMmvb1Xr-honF5uFdDttMLvmWuJdhhgs.ttf b/gui/slick/css/bV5DfGHOiMmvb1Xr-honF5uFdDttMLvmWuJdhhgs.ttf index 569e03a84014d5163582d148d6e090727eb61b53..b5662b48a6b621339c71b4169ebff5714cac5e53 100644 Binary files a/gui/slick/css/bV5DfGHOiMmvb1Xr-honF5uFdDttMLvmWuJdhhgs.ttf and b/gui/slick/css/bV5DfGHOiMmvb1Xr-honF5uFdDttMLvmWuJdhhgs.ttf differ diff --git a/gui/slick/css/dark.css b/gui/slick/css/dark.css index 7da99589cd9ccc0a6458e357a5a7baac4816296a..6c34ac3b44dec47c47cc9abaca34cf249131cb57 100644 --- a/gui/slick/css/dark.css +++ b/gui/slick/css/dark.css @@ -206,6 +206,17 @@ home_newShow.mako border: 1px solid #111111; } +.new-show-table { + color: #FFFFFF !important; + border-right: 1px solid black; + border-bottom: 1px solid black; +} + +.new-show-table tr.in-list, +.new-show-table tr.in-list a { + color: #ACACAC !important; +} + /* ======================================================================= home_addExistingShow.mako ========================================================================== */ diff --git a/gui/slick/css/iXeptR36kaC0GEAetxi8cqLH4MEiSE0ROcU-qHOA.ttf b/gui/slick/css/iXeptR36kaC0GEAetxi8cqLH4MEiSE0ROcU-qHOA.ttf index ee892609576fbea2b53f7e6506bba3a8aebca10e..8245485251fe16e2eb5267152b35a6bb7e1ac85f 100644 Binary files a/gui/slick/css/iXeptR36kaC0GEAetxi8cqLH4MEiSE0ROcU-qHOA.ttf and b/gui/slick/css/iXeptR36kaC0GEAetxi8cqLH4MEiSE0ROcU-qHOA.ttf differ diff --git a/gui/slick/css/iXeptR36kaC0GEAetxlDMrAYtoOisqqMDW9M_Mqc.ttf b/gui/slick/css/iXeptR36kaC0GEAetxlDMrAYtoOisqqMDW9M_Mqc.ttf index 57e8b7d54ffc5568301c942c4a7bfece55d080f7..b3d0ede0e7a670ed149d3ad30c6401eaa68aa9a5 100644 Binary files a/gui/slick/css/iXeptR36kaC0GEAetxlDMrAYtoOisqqMDW9M_Mqc.ttf and b/gui/slick/css/iXeptR36kaC0GEAetxlDMrAYtoOisqqMDW9M_Mqc.ttf differ diff --git a/gui/slick/css/iXeptR36kaC0GEAetxp_TkvowlIOtbR7ePgFOpF4.ttf b/gui/slick/css/iXeptR36kaC0GEAetxp_TkvowlIOtbR7ePgFOpF4.ttf index 1e54a3172d1f65d35e75139e5c22def8e95f0435..c1e2351c0215dbbda979e75c951eb23422dad10c 100644 Binary files a/gui/slick/css/iXeptR36kaC0GEAetxp_TkvowlIOtbR7ePgFOpF4.ttf and b/gui/slick/css/iXeptR36kaC0GEAetxp_TkvowlIOtbR7ePgFOpF4.ttf differ diff --git a/gui/slick/css/iXeptR36kaC0GEAetxrfB31yxOzP-czbf6AAKCVo.ttf b/gui/slick/css/iXeptR36kaC0GEAetxrfB31yxOzP-czbf6AAKCVo.ttf index 716c390d8f955339bda9fa605908e27038f5d892..6efbf93d406880a55274aec2ca5d0664cb8447e0 100644 Binary files a/gui/slick/css/iXeptR36kaC0GEAetxrfB31yxOzP-czbf6AAKCVo.ttf and b/gui/slick/css/iXeptR36kaC0GEAetxrfB31yxOzP-czbf6AAKCVo.ttf differ diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index 87ed27e80d13e674baddef254b80fb7c2dbea2e5..580c440db3eae55b745046dde48db635e03ba03b 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -815,6 +815,14 @@ home_newShow.mako border: 1px solid #DFDEDE; } +#searchResults { + height: 100%; +} + +#searchResults .legendStep { + margin-bottom: 5px; +} + #searchResults input[type="radio"] { vertical-align: -2px; } diff --git a/gui/slick/js/core.js b/gui/slick/js/core.js index 91cd9741fc4d5a7c7d8e97198594a588536584e0..a08ced1bda1889ea7ec63d0bc547cb9c7e6188d5 100644 --- a/gui/slick/js/core.js +++ b/gui/slick/js/core.js @@ -3825,68 +3825,122 @@ var SICKRAGE = { }, newShow: function() { - function updateSampleText() { + const updateSampleText = function() { // If something's selected then we have some behavior to figure out + let object = { + showName: '', + dir: 'unknown dir.', + sepChar: '' + }; - let showName = null; - let sepChar = null; // If they've picked a radio button then use that if ($('input:radio[name=whichSeries]:checked').length) { - showName = $('input:radio[name=whichSeries]:checked').val().split('|')[4]; + object.showName = $('input:radio[name=whichSeries]:checked').val().split('|')[4]; } else if ($('input:hidden[name=whichSeries]').length && $('input:hidden[name=whichSeries]').val().length) { // If we provided a show in the hidden field, use that - showName = $('#providedName').val(); - } else { - showName = ''; + object.showName = $('#providedName').val(); } - SICKRAGE.common.updateBlackWhiteList(showName); - let sampleText = 'Adding show <b>' + showName + '</b> into <b>'; + + SICKRAGE.common.updateBlackWhiteList(object.showName); // If we have a root dir selected, figure out the path if ($('#rootDirs option:selected').length) { - let rootDirectoryText = $('#rootDirs option:selected').val(); - if (rootDirectoryText.indexOf('/') >= 0) { - sepChar = '/'; - } else if (rootDirectoryText.indexOf('\\') >= 0) { - sepChar = '\\'; - } else { - sepChar = ''; - } + object.dir = $('#rootDirs option:selected').val(); - if (rootDirectoryText.substr(sampleText.length - 1) !== sepChar) { - rootDirectoryText += sepChar; + if (object.dir.indexOf('/') >= 0) { + object.sepChar = '/'; + } else if (object.dir.indexOf('\\') >= 0) { + object.sepChar = '\\'; } - rootDirectoryText += '<i>||</i>' + sepChar; - sampleText += rootDirectoryText; - } else if ($('#fullShowPath').length && $('#fullShowPath').val().length) { - sampleText += $('#fullShowPath').val(); - } else { - sampleText += 'unknown dir.'; + object.dir.trim(object.sepChar); + object.dir += object.sepChar; + } else if ($('#fullShowPath').val()) { + object.dir = $('#fullShowPath').val(); } - sampleText += '</b>'; - // If we have a show name then sanitize and use it for the dir name - if (showName.length) { - $.post(srRoot + '/addShows/sanitizeFileName', {name: showName}, function(data) { - $('#displayText').html(sampleText.replace('||', data)); + if (object.showName.length) { + $.post(srRoot + '/addShows/sanitizeFileName', {name: object.showName}, function(data) { + $('#desc-show-name').text(object.showName); + $('#desc-directory-name').html(object.dir + data + object.sepChar); }); - // If not then it's unknown - } else { - $('#displayText').html(sampleText.replace('||', '??')); + } else { // If not then it's unknown + $('#desc-show-name').text(object.showName); + $('#desc-directory-name').html(object.dir); } + $('#desc-quality-name').text($('#qualityPreset option:selected').text()); - // Also toggle the add show button - if (($('#rootDirs option:selected').length || ($('#fullShowPath').length && $('#fullShowPath').val().length)) && ($('input:radio[name=whichSeries]:checked').length) || ($('input:hidden[name=whichSeries]').length && $('input:hidden[name=whichSeries]').val().length)) { // eslint-disable-line no-mixed-operators - $('#addShowButton').attr('disabled', false); - } else { - $('#addShowButton').attr('disabled', true); + // If show has been selected + if (!($('input:radio[name=whichSeries]:checked').val() || $('input:hidden[name=whichSeries]').val())) { + return $('#addShowButton').attr('disabled', true); } - } + + // If root dir has been set properly + if (!($('#rootDirs option:selected').val() || $('#fullShowPath').val())) { + return $('#addShowButton').attr('disabled', true); + } + + $('#addShowButton').attr('disabled', false); + }; + + const showGroupPicker = function() { + $('#blackwhitelist').toggle($('#anime').prop('checked')); + }; + + const buildTable = function(shows) { + let table = + '<div class="row">' + + '<div class="col-lg-6 col-md-12">' + + '<table class="sickbeardTable new-show-table">' + + '<thead>' + + '<tr>' + + '<th style="width:40px;"> </th>' + + '<th>Show Name</th>' + + '<th>Premiere</th>' + + '<th>Indexer</th>' + + '</tr>' + + '<thead>'; + + const selectedIndex = shows.findIndex(function(show) { + return !show.inShowList; + }); + + shows.forEach(function(show, index) { + table += + '<tr class="' + (show.inShowList ? 'in-list' : '') + '">' + + '<td>' + + '<input type="radio" class="whichSeries" name="whichSeries" value="' + show.obj + '" ' + + (selectedIndex === index ? 'checked ' : '') + (show.inShowList ? 'disabled' : '') + '/>' + + '</td>' + + '<td>' + + (function() { + let string = '<a href='; + if (show.inShowList) { + string += '"/home/displayShow?show=' + show.id + '"'; + } else { + string += '"' + show.url + '" target="_blank"'; + } + string += '>' + show.title + '</a>'; + + return string; + })() + + '</td>' + + '<td>' + show.debut + '</td>' + + '<td>' + show.indexer + '</td>' + + '</tr>'; + }); + + table += + '</table>' + + '</div>' + + '</div>'; + + return table; + }; let searchRequestXhr = null; - function searchIndexers() { - if (!$('#nameToSearch').val().length) { + const searchIndexers = function() { + if (!$('#show-name').val()) { return; } @@ -3894,147 +3948,104 @@ var SICKRAGE = { searchRequestXhr.abort(); } - const searchingFor = $('#nameToSearch').val().trim() + ' on ' + $('#providedIndexer option:selected').text() + ' in ' + $('#indexerLangSelect').val(); - $('#searchResults').empty().html('<img id="searchingAnim" src="' + srRoot + '/images/loading32' + themeSpinner + '.gif" height="32" width="32" /> ' + _('searching {searchingFor}...').replace(/{searchingFor}/, searchingFor)); + const searchingFor = _($('#show-name').val().trim() + ' on ' + $('#providedIndexer option:selected').text() + ' in ' + $('#indexerLangSelect option:selected').text()); + $('#searchResults').empty().html( + '<img id="searchingAnim" src="' + srRoot + '/images/loading32' + themeSpinner + '.gif" height="32" width="32" /> ' + + _('searching {searchingFor}...').replace(/{searchingFor}/, searchingFor) + ); searchRequestXhr = $.ajax({ url: srRoot + '/addShows/searchIndexersForShowName', data: { - search_term: $('#nameToSearch').val().trim(), // eslint-disable-line camelcase + search_term: $('#show-name').val().trim(), // eslint-disable-line camelcase lang: $('#indexerLangSelect').val(), - indexer: $('#providedIndexer').val()}, + indexer: $('#providedIndexer').val() + }, timeout: parseInt($('#indexer_timeout').val(), 10) * 1000, dataType: 'json', error: function() { $('#searchResults').empty().html(_('search timed out, try again or try another indexer')); + $('.next-steps').hide(); }, success: function(data) { - let firstResult = true; - let resultStr = '<fieldset>\n<legend class="legendStep">Search Results:</legend>\n'; - let checked = ''; - let disabled = ''; + let resultStr = '<legend class="legendStep">#2 Pick a Show</legend>'; if (data.results.length === 0) { resultStr += '<b>No results found, try a different search.</b>'; + $('.next-steps').hide(); } else { - $.each(data.results, function(index, obj) { - const inShowList = obj[6]; - disabled = inShowList ? ' title="Already in your show list" disabled' : ''; - - if (firstResult && !inShowList) { - checked = ' checked'; - firstResult = false; - } else { - checked = ''; - } - - const whichSeries = obj.join('|'); - - resultStr += '<input type="radio" id="whichSeries" name="whichSeries" value="' + whichSeries.replace(/"/g, '') + '"' + disabled + checked + ' /> '; - if (data.langid && data.langid !== '') { - resultStr += '<a href="' + anonURL + obj[2] + obj[3] + '&lid=' + data.langid + '" onclick="window.open(this.href, \'_blank\'); return false;" ><b>' + obj[4] + '</b></a>'; - } else { - resultStr += '<a href="' + anonURL + obj[2] + obj[3] + '" onclick="window.open(this.href, \'_blank\'); return false;" ><b>' + obj[4] + '</b></a>'; - } + let shows = []; - if (obj[5] !== null) { - const startDate = new Date(obj[5]); - const today = new Date(); - if (startDate > today) { - resultStr += ' (will debut on ' + obj[5] + ')'; - } else { - resultStr += ' (started on ' + obj[5] + ')'; - } + $.each(data.results, function(index, obj) { + let whichSeries = obj.join('|').replace(/"/g, ''); + + let show = { + obj: whichSeries, + indexer: obj[0], + id: obj[3], + title: obj[4], + debut: obj[5], + inShowList: obj[6], + url: anonURL + obj[2] + obj[3] + }; + + if (data.langid) { + show.url += '&lid=' + data.langid; } - if (obj[0] !== null) { - resultStr += ' [' + obj[0] + ']'; - } + shows.push(show); + }); - if (inShowList) { - resultStr += ' — <a href="' + srRoot + '/home/displayShow?show=' + obj[3] + '"><strong>Already in your show list</strong></a>'; - } + resultStr += buildTable(shows); - resultStr += '<br>'; - }); - resultStr += '</ul>'; + $('.next-steps').show(); } - resultStr += '</fieldset>'; + $('#searchResults').html(resultStr); updateSampleText(); - myform.loadsection(0); // eslint-disable-line no-use-before-define } }); - } - - $('#searchName').on('click', function() { - searchIndexers(); - }); + }; - if ($('#nameToSearch').length && $('#nameToSearch').val().length) { - $('#searchName').click(); - } + $('#search-button').on('click', searchIndexers); $('#addShowButton').on('click', function() { // If they haven't picked a show don't let them submit - if (!$('input:radio[name="whichSeries"]:checked').val() && !$('input:hidden[name="whichSeries"]').val().length) { + if (!$('input:radio[name="whichSeries"]:checked').val()) { notifyModal('You must choose a show to continue'); return false; } + generateBlackWhiteList(); // eslint-disable-line no-undef $('#addShowForm').submit(); }); + $('#anime').on('click', function() { + showGroupPicker(); + updateSampleText(); + }); + $('#skipShowButton').on('click', function() { $('#skipShow').val('1'); $('#addShowForm').submit(); }); - /** ********************************************* - * JQuery Form to Form Wizard- (c) Dynamic Drive (www.dynamicdrive.com) - * This notice MUST stay intact for legal use - * Visit http://www.dynamicdrive.com/ for this script and 100s more. - ********************************************** */ - - function goToStep(num) { - $('.step').each(function() { - if ($.data(this, 'section') + 1 === num) { - $(this).click(); - } - }); - } - - $('#nameToSearch').focus(); - - // @TODO we need to move to real forms instead of this - const myform = new formtowizard({ // eslint-disable-line new-cap,no-undef - formid: 'addShowForm', - revealfx: ['slide', 500], - oninit: function() { - updateSampleText(); - if ($('input:hidden[name=whichSeries]').length && $('#fullShowPath').length) { - goToStep(3); - } - } - }); - $('#rootDirText').change(updateSampleText); - $('#searchResults').on('change', '#whichSeries', updateSampleText); + $('#qualityPreset').change(updateSampleText); + $('#searchResults').on('change', '.whichSeries', updateSampleText); - $('#nameToSearch').keyup(function(event) { - if (event.keyCode === 13) { - $('#searchName').click(); + $('#show-name').on('focus keyup', function(event) { + if (event.keyCode === 13) { // Enter + $('#search-button').click(); } }); - $('#anime').on('change', function() { - updateSampleText(); - myform.loadsection(2); - }); + if ($('#show-name').val()) { + $('#search-button').click(); + } - $('#qualityPreset').on('change', function() { - myform.loadsection(2); - }); + updateSampleText(); + showGroupPicker(); }, addExistingShow: function() { $('#tableDiv').on('click', '#checkAll', function() { diff --git a/gui/slick/js/core.min.js b/gui/slick/js/core.min.js index a9e01c745da9b335dd56c45d42df563e2dd38a7a..2e6e149e0d811be53c7ab794877943855521abbf 100644 Binary files a/gui/slick/js/core.min.js and b/gui/slick/js/core.min.js differ diff --git a/gui/slick/js/vender.min.js b/gui/slick/js/vender.min.js index 38f5dc932b00366fee8ffa75ae87eb9240ae95e2..ae576b12347249e1cae2373a1db6fa0c0ff7b598 100644 Binary files a/gui/slick/js/vender.min.js and b/gui/slick/js/vender.min.js differ diff --git a/gui/slick/views/addShows_newShow.mako b/gui/slick/views/addShows_newShow.mako index 83f4988597b34616299d113cf9786ac991488311..beea49e68471eb482e8977dbd2b0d892b948bae7 100644 --- a/gui/slick/views/addShows_newShow.mako +++ b/gui/slick/views/addShows_newShow.mako @@ -16,98 +16,155 @@ <%block name="pages"> <div id="core-component-group1" class="tab-pane active component-group"> - <div class="row"> - <div class="col-md-12"> - <div id="displayText"></div> - </div> - </div> - <br/> <div class="row"> <div class="col-md-12"> <form id="addShowForm" method="post" action="${srRoot}/addShows/addNewShow" accept-charset="utf-8"> - <fieldset class="sectionwrap"> - <legend class="legendStep">${_('Find a show on theTVDB')}</legend> - <div class="row stepDiv"> - <div class="col-md-12"> - <input type="hidden" id="indexer_timeout" value="${sickbeard.INDEXER_TIMEOUT}" /> + <legend class="legendStep">#1 ${_('Search for a Show')}</legend> + <div class="row stepDiv"> + <div class="col-md-12"> + <input type="hidden" id="indexer_timeout" value="${sickbeard.INDEXER_TIMEOUT}"/> - % if use_provided_info: - <label>${_('Show retrieved from existing metadata')}: <a href="${anon_url(sickbeard.indexerApi(provided_indexer).config['show_url'], provided_indexer_id)}">${provided_indexer_name}</a></label> - <input type="hidden" id="indexerLang" name="indexerLang" value="en" /> - <input type="hidden" id="whichSeries" name="whichSeries" value="${provided_indexer_id}" /> - <input type="hidden" id="providedIndexer" name="providedIndexer" value="${provided_indexer}" /> - <input type="hidden" id="providedName" value="${provided_indexer_name}" /> - % else: - <input type="text" id="nameToSearch" value="${default_show_name}" class="form-control form-control-inline input-sm input350" autocapitalize="off" /> - - <select name="indexerLang" id="indexerLangSelect" class="form-control form-control-inline input-sm bfh-languages" data-language="${sickbeard.INDEXER_DEFAULT_LANGUAGE}" data-available="${','.join(sickbeard.indexerApi().config['valid_languages'])}"> - </select> - <b>*</b> - - <select name="providedIndexer" id="providedIndexer" class="form-control form-control-inline input-sm"> - <option value="0" ${('', 'selected="selected"')[provided_indexer == 0]}>${_('All Indexers')}</option> - % for indexer in indexers: - <option value="${indexer}" ${('', 'selected="selected"')[provided_indexer == indexer]}> - ${indexers[indexer]} - </option> - % endfor - </select> - - <input class="btn btn-inline" type="button" id="searchName" value="${_('Search')}" /> - <br/><br/> - <p> - <b>*</b>${_('This will only affect the language of the retrieved metadata file contents and episode filenames.')}<br/> - ${_('This <b>DOES NOT</b> allow SickRage to download non-english TV episodes!')} - </p> - <br/><br/> - <div id="searchResults" style="height: 100%;"><br/></div> - % endif - </div> + % if use_provided_info: + <label>${_('Show retrieved from existing metadata')}: + <a href="${anon_url(sickbeard.indexerApi(provided_indexer).config['show_url'], provided_indexer_id)}">${provided_indexer_name}</a> + </label> + <input type="hidden" id="indexerLang" name="indexerLang" value="en"/> + <input type="hidden" id="whichSeries" name="whichSeries" + value="${provided_indexer_id}"/> + <input type="hidden" id="providedIndexer" name="providedIndexer" + value="${provided_indexer}"/> + <input type="hidden" id="providedName" value="${provided_indexer_name}"/> + % else: + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Show name')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc"> + <input type="text" id="show-name" value="${default_show_name}" + placeholder="Show name" autofocus + class="form-control form-control-inline input-sm input350" + autocapitalize="off"/> + </div> + </div> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Metadata language')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc"> + <div class="row"> + <div class="col-md-12"> + <select name="indexerLang" id="indexerLangSelect" + class="form-control form-control-inline input-sm bfh-languages" + data-language="${sickbeard.INDEXER_DEFAULT_LANGUAGE}" + data-available="${','.join(sickbeard.indexerApi().config['valid_languages'])}"></select> + </div> + </div> + <div class="row"> + <div class="col-md-12"> + <span>${_('This will only affect the language of the retrieved metadata file contents and episode filenames.')}</span> + <br/> + <span>${_('This <b>DOES NOT</b> allow SickRage to download non-english TV episodes!')}</span> + </div> + </div> + </div> + </div> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Indexer')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc"> + <select name="providedIndexer" id="providedIndexer" + class="form-control form-control-inline input-sm"> + <option value="0" ${('', 'selected="selected"')[provided_indexer == 0]}>${_('All Indexers')}</option> + % for indexer in indexers: + <option value="${indexer}" ${('', 'selected="selected"')[provided_indexer == indexer]}> + ${indexers[indexer]} + </option> + % endfor + </select> + </div> + </div> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title"> + <input class="btn btn-inline" type="button" id="search-button" value="${_('Search')}"/> + </span> + </div> + </div> + <div id="searchResults"><br/></div> + % endif </div> - </fieldset> + </div> - <fieldset class="sectionwrap"> + <div class="next-steps" style="display: none;"> + <legend class="legendStep">#3 ${_('Pick the Folder')}</legend> <div class="row stepDiv"> - <div class="col-md-12"> - <legend class="legendStep">${_('Pick the parent folder')}</legend> + <div class="col-lg-6 col-sm-12"> % if provided_show_dir: - <p>${_('Pre-chosen Destination Folder')}: <b>${provided_show_dir}</b></p> - <br> - <input type="hidden" id="fullShowPath" name="fullShowPath" value="${provided_show_dir}" /> + <p>${_('Pre-chosen Destination Folder')}:</p> + <b style="font-size: 15px;">${provided_show_dir}</b> <br> + <input type="hidden" id="fullShowPath" name="fullShowPath" + value="${provided_show_dir}"/> + <br/> % else: <%include file="/inc_rootDirs.mako"/> % endif </div> </div> - </fieldset> - <fieldset class="sectionwrap"> + <legend class="legendStep">#4 ${_('Customize options')}</legend> + <div class="row stepDiv"> + <div class="col-md-12"> + <%include file="/inc_addShowOptions.mako"/> + </div> + </div> + + <legend class="legendStep">#5 ${_('Verify Your Input')}</legend> <div class="row stepDiv"> <div class="col-md-12"> - <legend class="legendStep">${_('Customize options')}</legend> - <%include file="/inc_addShowOptions.mako"/> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Show name')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc"> + <span id="desc-show-name"></span> + </div> + </div> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Directory')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc desc-directory"> + <span id="desc-directory-name"></span> + </div> + </div> + <div class="field-pair row"> + <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> + <span class="component-title">${_('Quality')}</span> + </div> + <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc desc-quality"> + <span id="desc-quality-name"></span> + </div> + </div> </div> </div> - </fieldset> - % for curNextDir in other_shows: - <input type="hidden" name="other_shows" value="${curNextDir}" /> - % endfor - <input type="hidden" name="skipShow" id="skipShow"/> + % for curNextDir in other_shows: + <input type="hidden" name="other_shows" value="${curNextDir}"/> + % endfor + <input type="hidden" name="skipShow" id="skipShow"/> + </div> </form> </div> </div> - <br/> <div class="row"> <div class="col-md-12"> - <div style="text-align: center;"> - <input class="btn" type="button" id="addShowButton" value="${_('Add Show')}" disabled="disabled" /> - % if provided_show_dir: - <input class="btn" type="button" id="skipShowButton" value="${_('Skip Show')}" /> - % endif - </div> + <input class="btn" type="button" id="addShowButton" value="${_('Add Show')}" disabled="disabled"/> + % if provided_show_dir: + <input class="btn" type="button" id="skipShowButton" value="${_('Skip Show')}"/> + % endif </div> </div> </div> diff --git a/gui/slick/views/inc_addShowOptions.mako b/gui/slick/views/inc_addShowOptions.mako index afb55d55d1d7011382a50a48005e8277a27e2beb..361d48fd01f4b0324a9780c23a8b849132a3b88f 100644 --- a/gui/slick/views/inc_addShowOptions.mako +++ b/gui/slick/views/inc_addShowOptions.mako @@ -99,7 +99,7 @@ <div class="field-pair row"> <div class="col-lg-3 col-md-4 col-sm-5 col-xs-12"> <span class="component-title"> - <input class="btn btn-inline" type="button" id="saveDefaultsButton" value="${_('Save Defaults')}" disabled="disabled" /> + <input class="btn btn-inline" type="button" id="saveDefaultsButton" value="${_('Save as default')}" disabled="disabled" /> </span> </div> <div class="col-lg-9 col-md-8 col-sm-7 col-xs-12 component-desc"> diff --git a/gui/slick/views/inc_rootDirs.mako b/gui/slick/views/inc_rootDirs.mako index 8eadc297fd99aa235d3da0c25fc705aff8f82d7b..a4c5c1d7f656c315aadbc8a0eae9fe004b210042 100644 --- a/gui/slick/views/inc_rootDirs.mako +++ b/gui/slick/views/inc_rootDirs.mako @@ -30,7 +30,7 @@ <input class="btn" type="button" id="addRootDir" value="${_('New')}" /> <input class="btn" type="button" id="editRootDir" value="${_('Edit')}" /> <input class="btn" type="button" id="deleteRootDir" value="${_('Delete')}" /> - <input class="btn" type="button" id="defaultRootDir" value="${_('Set as Default')} *" /> + <input class="btn" type="button" id="defaultRootDir" value="${_('Set as default')} *" /> </div> <input type="text" style="display: none" id="rootDirText" autocapitalize="off" /> </div>