diff --git a/dashboard-ui/livetvsettings.html b/dashboard-ui/livetvsettings.html
index a3f7d070da..40a79c0138 100644
--- a/dashboard-ui/livetvsettings.html
+++ b/dashboard-ui/livetvsettings.html
@@ -11,6 +11,7 @@
diff --git a/dashboard-ui/livetvstatus.html b/dashboard-ui/livetvstatus.html
index 77e81a36ae..d02f63f897 100644
--- a/dashboard-ui/livetvstatus.html
+++ b/dashboard-ui/livetvstatus.html
@@ -11,6 +11,7 @@
diff --git a/dashboard-ui/scripts/addpluginpage.js b/dashboard-ui/scripts/addpluginpage.js
index fba9d4c6a4..53dea364ac 100644
--- a/dashboard-ui/scripts/addpluginpage.js
+++ b/dashboard-ui/scripts/addpluginpage.js
@@ -265,8 +265,11 @@
});
+
}).on('pagebeforeshow pageinit', "#addPluginPage", function () {
+ // This needs both events for the helpurl to get done at the right time
+
var page = this;
var context = getParameterByName('context');
@@ -274,12 +277,24 @@
if (context == 'sync') {
$('.syncTabs', page).show();
$('.pluginTabs', page).hide();
+ $('.livetvTabs', page).hide();
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
Dashboard.setPageTitle(Globalize.translate('TitleSync'));
- } else {
+ }
+ else if (context == 'livetv') {
+
+ $('.syncTabs', page).hide();
+ $('.pluginTabs', page).hide();
+ $('.livetvTabs', page).show();
+
+ Dashboard.setPageTitle(Globalize.translate('TitleLiveTV'));
+ page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Live%20TV');
+ }
+ else {
$('.syncTabs', page).hide();
$('.pluginTabs', page).show();
+ $('.livetvTabs', page).hide();
page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Plugins');
Dashboard.setPageTitle(Globalize.translate('TitlePlugins'));
diff --git a/dashboard-ui/scripts/appservices.js b/dashboard-ui/scripts/appservices.js
new file mode 100644
index 0000000000..64a2029712
--- /dev/null
+++ b/dashboard-ui/scripts/appservices.js
@@ -0,0 +1,110 @@
+(function ($, document) {
+
+ function reloadList(page) {
+
+ Dashboard.showLoadingMsg();
+
+ var promise1 = ApiClient.getAvailablePlugins({
+ TargetSystems: 'Server'
+ });
+
+ var promise2 = ApiClient.getInstalledPlugins();
+
+ $.when(promise1, promise2).done(function (response1, response2) {
+ renderInstalled(page, response1[0], response2[0]);
+ renderCatalog(page, response1[0], response2[0]);
+ });
+ }
+
+ function getCategories() {
+
+ var context = getParameterByName('context');
+
+ var categories = [];
+
+ if (context == 'sync') {
+ categories.push('Sync');
+ }
+ else if (context == 'livetv') {
+ categories.push('Live TV');
+ }
+
+ return categories;
+ }
+
+ function renderInstalled(page, availablePlugins, installedPlugins) {
+
+ var category = getCategories()[0];
+
+ installedPlugins = installedPlugins.filter(function (i) {
+
+ var catalogEntry = availablePlugins.filter(function (a) {
+ return a.guid == i.Id;
+ })[0];
+
+ return catalogEntry && catalogEntry.category == category;
+
+ });
+
+ PluginsPage.renderPlugins(page, installedPlugins);
+ }
+
+ function renderCatalog(page, availablePlugins, installedPlugins) {
+
+ var categories = getCategories();
+
+ PluginCatalog.renderCatalog({
+
+ catalogElement: $('.catalog', page),
+ availablePlugins: availablePlugins,
+ installedPlugins: installedPlugins,
+ categories: categories,
+ showCategory: false,
+ context: getParameterByName('context'),
+ targetSystem: 'Server'
+ });
+
+ }
+
+ $(document).on('pagebeforeshow pageinit', "#appServicesPage", function () {
+
+ // This needs both events for the helpurl to get done at the right time
+
+ var page = this;
+
+ var context = getParameterByName('context');
+
+ $('.sectionTabs', page).hide();
+ $('.' + context + 'SectionTabs', page).show();
+
+ if (context == 'sync') {
+ Dashboard.setPageTitle(Globalize.translate('TitleSync'));
+ page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Sync');
+ }
+ else if (context == 'livetv') {
+ Dashboard.setPageTitle(Globalize.translate('TitleLiveTV'));
+ page.setAttribute('data-helpurl', 'https://github.com/MediaBrowser/Wiki/wiki/Live%20TV');
+ }
+
+ }).on('pageshow', "#appServicesPage", function () {
+
+ // This needs both events for the helpurl to get done at the right time
+
+ var page = this;
+
+ reloadList(page);
+
+ var context = getParameterByName('context');
+
+ Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
+
+ if (pluginSecurityInfo.IsMBSupporter || context != 'sync') {
+ $('.syncPromotion', page).hide();
+ } else {
+ $('.syncPromotion', page).show();
+ }
+ });
+
+ });
+
+})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/scripts/encodingsettings.js b/dashboard-ui/scripts/encodingsettings.js
index 80b1063d59..fcd2548845 100644
--- a/dashboard-ui/scripts/encodingsettings.js
+++ b/dashboard-ui/scripts/encodingsettings.js
@@ -3,7 +3,8 @@
function loadPage(page, config) {
$('#chkEnableDebugEncodingLogging', page).checked(config.EnableDebugLogging).checkboxradio('refresh');
-
+ $('#chkEnableThrottle', page).checked(config.EnableThrottling).checkboxradio('refresh');
+
$('.radioEncodingQuality', page).each(function() {
this.checked = config.EncodingQuality == this.value;
@@ -67,6 +68,7 @@
config.EncodingQuality = $('.radioEncodingQuality:checked', form).val();
config.DownMixAudioBoost = $('#txtDownMixAudioBoost', form).val();
config.TranscodingTempPath = $('#txtTranscodingTempPath', form).val();
+ config.EnableThrottling = $('#chkEnableThrottle', form).checked();
ApiClient.updateNamedConfiguration("encoding", config).done(Dashboard.processServerConfigurationUpdateResult);
});
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index 739a699bd1..705ddc6200 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -756,6 +756,9 @@ var Dashboard = {
var pageElem = page[0];
+ var isServicesPage = page.hasClass('appServicesPage');
+ var context = getParameterByName('context');
+
return [{
name: Globalize.translate('TabServer'),
href: "dashboard.html",
@@ -793,7 +796,7 @@ var Dashboard = {
}, {
name: Globalize.translate('TabSync'),
href: "syncactivity.html",
- selected: page.hasClass('syncConfigurationPage'),
+ selected: page.hasClass('syncConfigurationPage') || (isServicesPage && context == 'sync'),
icon: 'fa-cloud'
}, {
divider: true,
@@ -813,7 +816,7 @@ var Dashboard = {
}, {
name: Globalize.translate('TabLiveTV'),
href: "livetvstatus.html",
- selected: page.hasClass("liveTvSettingsPage"),
+ selected: page.hasClass("liveTvSettingsPage") || (isServicesPage && context == 'livetv'),
icon: 'fa-video-camera',
color: '#293AAE'
}, {
diff --git a/dashboard-ui/scripts/syncservices.js b/dashboard-ui/scripts/syncservices.js
deleted file mode 100644
index 9d67478c19..0000000000
--- a/dashboard-ui/scripts/syncservices.js
+++ /dev/null
@@ -1,66 +0,0 @@
-(function ($, document) {
-
- function reloadList(page) {
-
- Dashboard.showLoadingMsg();
-
- var promise1 = ApiClient.getAvailablePlugins({
- TargetSystems: 'Server'
- });
-
- var promise2 = ApiClient.getInstalledPlugins();
-
- $.when(promise1, promise2).done(function (response1, response2) {
- renderInstalled(page, response1[0], response2[0]);
- renderCatalog(page, response1[0], response2[0]);
- });
- }
-
- function renderInstalled(page, availablePlugins, installedPlugins) {
-
- installedPlugins = installedPlugins.filter(function (i) {
-
- var catalogEntry = availablePlugins.filter(function (a) {
- return a.guid == i.Id;
- })[0];
-
- return catalogEntry && catalogEntry.category == 'Sync';
-
- });
-
- PluginsPage.renderPlugins(page, installedPlugins);
- }
-
- function renderCatalog(page, availablePlugins, installedPlugins) {
-
- PluginCatalog.renderCatalog({
-
- catalogElement: $('.catalog', page),
- availablePlugins: availablePlugins,
- installedPlugins: installedPlugins,
- categories: ['Sync'],
- showCategory: false,
- context: 'sync',
- targetSystem: 'Server'
- });
-
- }
-
- $(document).on('pageshow', "#syncServicesPage", function () {
-
- var page = this;
-
- reloadList(page);
-
- Dashboard.getPluginSecurityInfo().done(function (pluginSecurityInfo) {
-
- if (pluginSecurityInfo.IsMBSupporter) {
- $('.syncPromotion', page).hide();
- } else {
- $('.syncPromotion', page).show();
- }
- });
-
- });
-
-})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/syncactivity.html b/dashboard-ui/syncactivity.html
index 16726d34ea..179fa99584 100644
--- a/dashboard-ui/syncactivity.html
+++ b/dashboard-ui/syncactivity.html
@@ -11,7 +11,7 @@
diff --git a/dashboard-ui/syncjob.html b/dashboard-ui/syncjob.html
index b7efb95029..014ee76d63 100644
--- a/dashboard-ui/syncjob.html
+++ b/dashboard-ui/syncjob.html
@@ -11,7 +11,7 @@
diff --git a/dashboard-ui/syncservices.html b/dashboard-ui/syncservices.html
deleted file mode 100644
index 4ed3d72686..0000000000
--- a/dashboard-ui/syncservices.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
${TitleSync}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dashboard-ui/syncsettings.html b/dashboard-ui/syncsettings.html
index fe111383ec..3ff152dab9 100644
--- a/dashboard-ui/syncsettings.html
+++ b/dashboard-ui/syncsettings.html
@@ -11,7 +11,7 @@