diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js
index a79459737..c2166d113 100644
--- a/dashboard-ui/scripts/itemdetailpage.js
+++ b/dashboard-ui/scripts/itemdetailpage.js
@@ -383,8 +383,6 @@
$('.itemCommunityRating', page).html(LibraryBrowser.getRatingHtml(item));
- LibraryBrowser.renderBudget($('#itemBudget', page), item);
- LibraryBrowser.renderRevenue($('#itemRevenue', page), item);
LibraryBrowser.renderAwardSummary($('#awardSummary', page), item);
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
@@ -405,7 +403,6 @@
}
renderTags(page, item);
- renderKeywords(page, item);
renderSeriesAirTime(page, item, context);
@@ -712,25 +709,6 @@
}
}
- function renderKeywords(page, item) {
-
- if (item.Keywords && item.Keywords.length) {
-
- var html = '';
- html += '
' + Globalize.translate('HeaderPlotKeywords') + '
';
- for (var i = 0, length = item.Keywords.length; i < length; i++) {
-
- html += '
' + item.Keywords[i] + '
';
-
- }
-
- $('.itemKeywords', page).show().html(html);
-
- } else {
- $('.itemKeywords', page).hide();
- }
- }
-
function getEpisodesFunction(seriesId, query) {
query = $.extend({}, query);
diff --git a/dashboard-ui/scripts/livetvguideprovider-scd.js b/dashboard-ui/scripts/livetvguideprovider-scd.js
new file mode 100644
index 000000000..9034f4861
--- /dev/null
+++ b/dashboard-ui/scripts/livetvguideprovider-scd.js
@@ -0,0 +1,160 @@
+(function ($, document, window) {
+
+ var providerId;
+ var listingsId;
+
+ function reload(page) {
+
+ ApiClient.getNamedConfiguration("livetv").done(function (config) {
+
+ var info = config.ListingProviders.filter(function (i) {
+ return i.Id == providerId;
+ })[0];
+
+ listingsId = info.ListingsId;
+ $('#selectListing', page).val(info.ListingsId || '').selectmenu('refresh');
+ $('#txtZipCode', page).val(info.ZipCode || '').trigger('change');
+ $('#txtUser', page).val(info.Username || '');
+
+ });
+ }
+
+ function submitLoginForm(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var info = {
+ Type: 'SchedulesDirect',
+ Username: $('#txtUser', page).val(),
+ Password: CryptoJS.SHA1($('#txtPass', page).val()).toString()
+ };
+
+ var id = providerId;
+
+ if (id) {
+ info.Id = id;
+ }
+
+ ApiClient.ajax({
+ type: "POST",
+ url: ApiClient.getUrl('LiveTv/ListingProviders'),
+ data: JSON.stringify(info),
+ contentType: "application/json"
+
+ }).done(function (result) {
+
+ Dashboard.processServerConfigurationUpdateResult();
+
+ }).fail(function () {
+ Dashboard.alert({
+ message: Globalize.translate('ErrorSavingTvProvider')
+ });
+ });
+
+ }
+
+ function submitListingsForm(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var id = providerId;
+
+ ApiClient.getNamedConfiguration("livetv").done(function (config) {
+
+ var info = config.ListingProviders.filter(function (i) {
+ return i.Id == id;
+ })[0];
+
+ info.ZipCode = $('#txtZipCode', page).val();
+ info.ListingsId = $('#selectListing', page).val();
+
+ ApiClient.ajax({
+ type: "POST",
+ url: ApiClient.getUrl('LiveTv/ListingProviders'),
+ data: JSON.stringify(info),
+ contentType: "application/json"
+
+ }).done(function (result) {
+
+ Dashboard.processServerConfigurationUpdateResult();
+
+ }).fail(function () {
+ Dashboard.alert({
+ message: Globalize.translate('ErrorSavingTvProvider')
+ });
+ });
+
+ });
+ }
+
+ function refreshListings(page, value) {
+
+ if (!value) {
+ $('#selectListing', page).html('').selectmenu('refresh');
+ return;
+ }
+
+ Dashboard.showModalLoadingMsg();
+
+ ApiClient.ajax({
+ type: "GET",
+ url: ApiClient.getUrl('LiveTv/ListingProviders/Lineups', {
+ Id: providerId,
+ Location: value
+ }),
+ dataType: 'json'
+
+ }).done(function (result) {
+
+ $('#selectListing', page).html(result.map(function (o) {
+
+ return '
';
+
+ })).selectmenu('refresh');
+
+ if (listingsId) {
+ $('#selectListing', page).val(listingsId).selectmenu('refresh');
+ }
+
+ Dashboard.hideModalLoadingMsg();
+
+ }).fail(function (result) {
+
+ //Dashboard.alert({
+ // message: Globalize.translate('ErrorGettingTvLineups')
+ //});
+ //refreshListings(page, '');
+ Dashboard.hideModalLoadingMsg();
+
+ });
+
+ }
+
+ $(document).on('pageinitdepends', "#liveTvGuideProviderScdPage", function () {
+
+ var page = this;
+
+ $('.formLogin', page).on('submit', function () {
+ submitLoginForm(page);
+ return false;
+ });
+
+ $('.formListings', page).on('submit', function () {
+ submitListingsForm(page);
+ return false;
+ });
+
+ $('#txtZipCode', page).on('change', function () {
+ refreshListings(page, this.value);
+ });
+
+
+ }).on('pageshowready', "#liveTvGuideProviderScdPage", function () {
+
+ providerId = getParameterByName('id');
+
+ var page = this;
+ reload(page);
+ });
+
+})(jQuery, document, window);
diff --git a/dashboard-ui/scripts/livetvguidesettings.js b/dashboard-ui/scripts/livetvguidesettings.js
deleted file mode 100644
index dc8626ed2..000000000
--- a/dashboard-ui/scripts/livetvguidesettings.js
+++ /dev/null
@@ -1,111 +0,0 @@
-(function ($, document, window) {
-
- function loadPage(page) {
-
- ApiClient.getNamedConfiguration("livetv").done(function (config) {
-
- renderProviders(page, config.ListingProviders);
- Dashboard.hideLoadingMsg();
- });
- }
-
- function renderProviders(page, providers) {
-
- var html = '';
-
- html += '
';
-
- var elem = $('.providerList', page).html(html).trigger('create');
-
- $('.btnDelete', elem).on('click', function () {
-
- var id = this.getAttribute('data-id');
-
- deleteProvider(page, id);
- });
- }
-
- function deleteProvider(page, id) {
-
- var message = Globalize.translate('MessageConfirmDeleteGuideProvider');
-
- Dashboard.confirm(message, Globalize.translate('HeaderDeleteProvider'), function (confirmResult) {
-
- if (confirmResult) {
-
- Dashboard.showLoadingMsg();
-
- ApiClient.ajax({
- type: "DELETE",
- url: ApiClient.getUrl('LiveTv/TunerHosts', {
- Id: id
- })
-
- }).done(function () {
-
- loadPage(page);
- });
- }
- });
- }
-
- function submitAddProviderForm(page) {
-
- page.querySelector('.dlgAddProvider').close();
- Dashboard.showLoadingMsg();
-
- ApiClient.ajax({
- type: "POST",
- url: ApiClient.getUrl('LiveTv/TunerHosts'),
- data: JSON.stringify({
- Type: $('#selectTunerDeviceType', page).val(),
- Url: $('#txtDevicePath', page).val()
- }),
- contentType: "application/json"
-
- }).done(function () {
-
- loadPage(page);
- });
-
- }
-
- $(document).on('pageinitdepends', "#liveTvGuideSettingsPage", function () {
-
- var page = this;
-
- $('.btnAddProvider', page).on('click', function () {
- page.querySelector('.dlgAddProvider').open();
- });
-
- $('.formAddProvider', page).on('submit', function () {
- submitAddProviderForm(page);
- return false;
- });
-
- }).on('pageshowready', "#liveTvGuideSettingsPage", function () {
-
- var page = this;
-
- loadPage(page);
- });
-
-})(jQuery, document, window);
diff --git a/dashboard-ui/scripts/livetvsettings.js b/dashboard-ui/scripts/livetvsettings.js
index d0c5eacc9..80db5a1ed 100644
--- a/dashboard-ui/scripts/livetvsettings.js
+++ b/dashboard-ui/scripts/livetvsettings.js
@@ -1,16 +1,9 @@
(function ($, document, window) {
- function loadPage(page, config, liveTvInfo) {
+ function loadPage(page, config) {
- if (liveTvInfo.IsEnabled) {
-
- $('.liveTvSettingsForm', page).show();
- $('.noLiveTvServices', page).hide();
-
- } else {
- $('.liveTvSettingsForm', page).hide();
- $('.noLiveTvServices', page).show();
- }
+ $('.liveTvSettingsForm', page).show();
+ $('.noLiveTvServices', page).hide();
$('#selectGuideDays', page).val(config.GuideDays || '').selectmenu('refresh');
@@ -47,13 +40,9 @@
var page = this;
- var promise1 = ApiClient.getNamedConfiguration("livetv");
+ ApiClient.getNamedConfiguration("livetv").done(function (config) {
- var promise2 = ApiClient.getLiveTvInfo();
-
- $.when(promise1, promise2).done(function (response1, response2) {
-
- loadPage(page, response1[0], response2[0]);
+ loadPage(page, config);
});
diff --git a/dashboard-ui/scripts/livetvstatus.js b/dashboard-ui/scripts/livetvstatus.js
index 63235d502..97d1b480a 100644
--- a/dashboard-ui/scripts/livetvstatus.js
+++ b/dashboard-ui/scripts/livetvstatus.js
@@ -177,6 +177,7 @@
ApiClient.getNamedConfiguration("livetv").done(function (config) {
renderDevices(page, config.TunerHosts);
+ renderProviders(page, config.ListingProviders);
});
Dashboard.hideLoadingMsg();
@@ -210,7 +211,7 @@
html += '';
html += '';
- html += '
';
+ html += '';
html += '';
html += '';
}
@@ -279,15 +280,128 @@
}).done(function () {
reload(page);
+
+ }).fail(function () {
+ Dashboard.alert({
+ message: Globalize.translate('ErrorAddingTunerDevice')
+ });
});
}
+ function renderProviders(page, providers) {
+
+ var html = '';
+
+ html += '
';
+
+ var elem = $('.providerList', page).html(html).trigger('create');
+
+ $('.btnDelete', elem).on('click', function () {
+
+ var id = this.getAttribute('data-id');
+
+ deleteProvider(page, id);
+ });
+ }
+
+ function deleteProvider(page, id) {
+
+ var message = Globalize.translate('MessageConfirmDeleteGuideProvider');
+
+ Dashboard.confirm(message, Globalize.translate('HeaderDeleteProvider'), function (confirmResult) {
+
+ if (confirmResult) {
+
+ Dashboard.showLoadingMsg();
+
+ ApiClient.ajax({
+ type: "DELETE",
+ url: ApiClient.getUrl('LiveTv/ListingProviders', {
+ Id: id
+ })
+
+ }).always(function () {
+
+ reload(page);
+ });
+ }
+ });
+ }
+
+ function getProviderName(providerId) {
+
+ providerId = providerId.toLowerCase();
+
+ switch (providerId) {
+
+ case 'schedulesdirect':
+ return 'Schedules Direct';
+ default:
+ return 'Unknown';
+ }
+ }
+
+ function getProviderConfigurationUrl(providerId) {
+
+ providerId = providerId.toLowerCase();
+
+ switch (providerId) {
+
+ case 'schedulesdirect':
+ return 'livetvguideprovider-scd.html';
+ default:
+ break;
+ }
+ }
+
+ function addProvider(button) {
+
+ var menuItems = [];
+
+ menuItems.push({
+ name: 'Schedules Direct (USA / Canada)',
+ id: 'SchedulesDirect'
+ });
+
+ require(['actionsheet'], function () {
+
+ ActionSheetElement.show({
+ items: menuItems,
+ positionTo: button,
+ callback: function (id) {
+
+ Dashboard.navigate(getProviderConfigurationUrl(id));
+ }
+ });
+
+ });
+ }
+
$(document).on('pageinitdepends', "#liveTvStatusPage", function () {
var page = this;
$('.btnAddDevice', page).on('click', function () {
+ $('#txtDevicePath', page).val('');
page.querySelector('.dlgAddDevice').open();
});
@@ -296,6 +410,10 @@
return false;
});
+ $('.btnAddProvider', page).on('click', function () {
+ addProvider(this);
+ });
+
}).on('pageshowready', "#liveTvStatusPage", function () {
var page = this;
diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js
index eeec93b33..c2ca114ed 100644
--- a/dashboard-ui/scripts/mediaplayer.js
+++ b/dashboard-ui/scripts/mediaplayer.js
@@ -139,12 +139,15 @@
profile.MusicStreamingTranscodingBitrate = Math.min(bitrateSetting, 192000);
profile.DirectPlayProfiles = [];
- profile.DirectPlayProfiles.push({
- Container: 'mp4,m4v',
- Type: 'Video',
- VideoCodec: 'h264',
- AudioCodec: 'aac,mp3'
- });
+
+ if (canPlayH264()) {
+ profile.DirectPlayProfiles.push({
+ Container: 'mp4,m4v',
+ Type: 'Video',
+ VideoCodec: 'h264',
+ AudioCodec: 'aac,mp3'
+ });
+ }
if ($.browser.chrome) {
profile.DirectPlayProfiles.push({
@@ -1717,11 +1720,20 @@
}
}
+ function canPlayH264() {
+
+ if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) {
+ return false;
+ }
+
+ return true;
+ }
+
self._canPlayWebm = null;
self.canPlayWebm = function () {
if (self._canPlayWebm == null) {
- self._canPlayWebm = ($.browser.android && AppInfo.isNativeApp) || document.createElement('video').canPlayType('video/webm').replace(/no/, '');
+ self._canPlayWebm = document.createElement('video').canPlayType('video/webm').replace(/no/, '');
}
return self._canPlayWebm;
};
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 3c9bf58be..476e0c040 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -112,8 +112,8 @@ var Dashboard = {
}
}
return;
+ Dashboard.hideLoadingMsg();
}
- Dashboard.hideLoadingMsg();
},
getCurrentUser: function () {
@@ -518,8 +518,8 @@ var Dashboard = {
},
showModalLoadingMsg: function () {
- Dashboard.showLoadingMsg();
Dashboard.getModalLoadingMsg().show();
+ Dashboard.showLoadingMsg();
},
hideModalLoadingMsg: function () {