diff --git a/dashboard-ui/components/tvproviders/schedulesdirect.js b/dashboard-ui/components/tvproviders/schedulesdirect.js index fdfdae2b78..3bd5584e14 100644 --- a/dashboard-ui/components/tvproviders/schedulesdirect.js +++ b/dashboard-ui/components/tvproviders/schedulesdirect.js @@ -259,7 +259,8 @@ html += ''; - var isChecked = providerInfo.EnableAllTuners || providerInfo.EnabledTuners.indexOf(device.Id) != -1; + var enabledTuners = providerInfo.EnableAllTuners || []; + var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) != -1; var checkedAttribute = isChecked ? ' checked' : ''; html += ''; diff --git a/dashboard-ui/components/tvproviders/xmltv.js b/dashboard-ui/components/tvproviders/xmltv.js new file mode 100644 index 0000000000..f432a80da7 --- /dev/null +++ b/dashboard-ui/components/tvproviders/xmltv.js @@ -0,0 +1,163 @@ +define(['jQuery', 'paper-checkbox', 'paper-button', 'paper-input', 'paper-item-body', 'paper-icon-item'], function ($) { + + return function (page, providerId, options) { + + var self = this; + + function reload() { + + Dashboard.showLoadingMsg(); + + ApiClient.getNamedConfiguration("livetv").then(function (config) { + + var info = config.ListingProviders.filter(function (i) { + return i.Id == providerId; + })[0] || {}; + + page.querySelector('.txtPath').value = info.Path || ''; + + page.querySelector('.chkAllTuners').checked = info.EnableAllTuners; + + if (page.querySelector('.chkAllTuners').checked) { + page.querySelector('.selectTunersSection').classList.add('hide'); + } else { + page.querySelector('.selectTunersSection').classList.remove('hide'); + } + + refreshTunerDevices(page, info, config.TunerHosts); + Dashboard.hideLoadingMsg(); + }); + } + + function submitListingsForm() { + + Dashboard.showLoadingMsg(); + + var id = providerId; + + ApiClient.getNamedConfiguration("livetv").then(function (config) { + + var info = config.ListingProviders.filter(function (i) { + return i.Id == id; + })[0] || {}; + + info.Type = 'xmltv'; + info.Path = page.querySelector('.txtPath').value; + info.EnableAllTuners = page.querySelector('.chkAllTuners').checked; + info.EnabledTuners = info.EnableAllTuners ? [] : $('.chkTuner', page).get().filter(function (i) { + return i.checked; + }).map(function (i) { + return i.getAttribute('data-id'); + }); + + ApiClient.ajax({ + type: "POST", + url: ApiClient.getUrl('LiveTv/ListingProviders', { + ValidateListings: true + }), + data: JSON.stringify(info), + contentType: "application/json" + + }).then(function (result) { + + Dashboard.hideLoadingMsg(); + if (options.showConfirmation !== false) { + Dashboard.processServerConfigurationUpdateResult(); + } + Events.trigger(self, 'submitted'); + + }, function () { + Dashboard.hideLoadingMsg(); + Dashboard.alert({ + message: Globalize.translate('ErrorAddingListingsToSchedulesDirect') + }); + }); + + }); + } + + function getTunerName(providerId) { + + providerId = providerId.toLowerCase(); + + switch (providerId) { + + case 'm3u': + return 'M3U Playlist'; + case 'hdhomerun': + return 'HDHomerun'; + case 'satip': + return 'DVB'; + default: + return 'Unknown'; + } + } + + function refreshTunerDevices(page, providerInfo, devices) { + + var html = ''; + + for (var i = 0, length = devices.length; i < length; i++) { + + var device = devices[i]; + + html += ''; + + var enabledTuners = providerInfo.EnableAllTuners || []; + var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) != -1; + var checkedAttribute = isChecked ? ' checked' : ''; + html += ''; + + html += ''; + html += '
'; + html += device.FriendlyName || getTunerName(device.Type); + html += '
'; + + html += '
'; + html += device.Url; + html += '
'; + html += '
'; + + html += '
'; + } + + page.querySelector('.tunerList').innerHTML = html; + } + + self.submit = function () { + page.querySelector('.btnSubmitListingsContainer').click(); + }; + + self.init = function () { + + options = options || {}; + + if (options.showCancelButton !== false) { + page.querySelector('.btnCancel').classList.remove('hide'); + } else { + page.querySelector('.btnCancel').classList.add('hide'); + } + + if (options.showSubmitButton !== false) { + page.querySelector('.btnSubmitListings').classList.remove('hide'); + } else { + page.querySelector('.btnSubmitListings').classList.add('hide'); + } + + $('form', page).on('submit', function () { + submitListingsForm(); + return false; + }); + + page.querySelector('.chkAllTuners').addEventListener('change', function (e) { + if (e.target.checked) { + page.querySelector('.selectTunersSection').classList.add('hide'); + } else { + page.querySelector('.selectTunersSection').classList.remove('hide'); + } + }); + + reload(); + }; + } +}); \ No newline at end of file diff --git a/dashboard-ui/components/tvproviders/xmltv.template.html b/dashboard-ui/components/tvproviders/xmltv.template.html new file mode 100644 index 0000000000..e8a1db0d35 --- /dev/null +++ b/dashboard-ui/components/tvproviders/xmltv.template.html @@ -0,0 +1,26 @@ +

Xml TV

+ +
+
+
+ +
+
+
+ ${OptionEnableForAllTuners} +
+

+
${HeaderTuners}
+
+
+
+
+

+
+ + ${ButtonCancel} +
+
+
\ No newline at end of file diff --git a/dashboard-ui/scripts/livetvstatus.js b/dashboard-ui/scripts/livetvstatus.js index 09583b91ac..08ff170c69 100644 --- a/dashboard-ui/scripts/livetvstatus.js +++ b/dashboard-ui/scripts/livetvstatus.js @@ -386,6 +386,8 @@ case 'schedulesdirect': return 'Schedules Direct'; + case 'xmltv': + return 'Xml TV'; case 'emby': return 'Emby Guide'; default: @@ -399,6 +401,8 @@ switch (providerId) { + case 'xmltv': + return 'livetvguideprovider.html?type=xmltv'; case 'schedulesdirect': return 'livetvguideprovider.html?type=schedulesdirect'; case 'emby': @@ -422,6 +426,11 @@ // id: 'emby' //}); + menuItems.push({ + name: 'Xml TV', + id: 'xmltv' + }); + menuItems.push({ name: Globalize.translate('ButtonOther'), id: 'other' diff --git a/dashboard-ui/supporterkey.html b/dashboard-ui/supporterkey.html index c271da2af6..ff6c81d254 100644 --- a/dashboard-ui/supporterkey.html +++ b/dashboard-ui/supporterkey.html @@ -1,4 +1,4 @@ -
+
@@ -26,8 +26,8 @@

${TabSupporterKey}

-
- +
+
${LabelSupporterKeyHelp}
@@ -54,8 +54,8 @@

${HeaderForgotKey}

-
- +
+
${LabelSupporterEmailAddress}

@@ -75,17 +75,17 @@

${MultipleKeyLinkingHelp}

-
- +
+
${LabelCurrentEmailAddressHelp}
-
- +
+
-
- +
+