Feature: All bussiness units get a tile
This commit is contained in:
@@ -66,6 +66,7 @@ public class PluginConfiguration : BasePluginConfiguration
|
||||
{
|
||||
// Set default options
|
||||
BusinessUnit = BusinessUnit.SRF;
|
||||
EnabledBusinessUnits = new System.Collections.Generic.List<BusinessUnit> { BusinessUnit.SRF };
|
||||
QualityPreference = QualityPreference.Auto;
|
||||
ContentRefreshIntervalHours = 6;
|
||||
ExpirationCheckIntervalHours = 24;
|
||||
@@ -78,10 +79,20 @@ public class PluginConfiguration : BasePluginConfiguration
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the business unit to fetch content from.
|
||||
/// Gets or sets the legacy single business unit. Retained for backwards compatibility and
|
||||
/// migration into <see cref="EnabledBusinessUnits"/>; new code should use the list instead.
|
||||
/// </summary>
|
||||
public BusinessUnit BusinessUnit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of business units to expose as channels. One channel tile is shown
|
||||
/// per enabled unit, so polylingual households can browse e.g. SRF (German) and RTS (French)
|
||||
/// at the same time.
|
||||
/// </summary>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "Required for configuration serialization")]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1002:Do not expose generic lists", Justification = "Configuration DTO")]
|
||||
public System.Collections.Generic.List<BusinessUnit> EnabledBusinessUnits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the preferred video quality.
|
||||
/// </summary>
|
||||
@@ -161,4 +172,20 @@ public class PluginConfiguration : BasePluginConfiguration
|
||||
/// Gets or sets the output directory for sport livestream recordings.
|
||||
/// </summary>
|
||||
public string RecordingOutputPath { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the effective set of enabled business units, migrating from the legacy single
|
||||
/// <see cref="BusinessUnit"/> value when the list has not been populated yet.
|
||||
/// </summary>
|
||||
/// <returns>The business units that should have channels.</returns>
|
||||
public System.Collections.Generic.IReadOnlyList<BusinessUnit> ResolveEnabledUnits()
|
||||
{
|
||||
if (EnabledBusinessUnits != null && EnabledBusinessUnits.Count > 0)
|
||||
{
|
||||
return EnabledBusinessUnits;
|
||||
}
|
||||
|
||||
// Legacy installs only had a single BusinessUnit; honour it so they keep working.
|
||||
return new System.Collections.Generic.List<BusinessUnit> { BusinessUnit };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,16 +2,29 @@
|
||||
<div data-role="content">
|
||||
<div class="content-primary">
|
||||
<form id="SRFPlayConfigForm">
|
||||
<div class="selectContainer">
|
||||
<label class="selectLabel" for="BusinessUnit">Business Unit</label>
|
||||
<select is="emby-select" id="BusinessUnit" name="BusinessUnit" class="emby-select-withcolor emby-select">
|
||||
<option id="optSRF" value="SRF">SRF (German)</option>
|
||||
<option id="optRTS" value="RTS">RTS (French)</option>
|
||||
<option id="optRSI" value="RSI">RSI (Italian)</option>
|
||||
<option id="optRTR" value="RTR">RTR (Romansh)</option>
|
||||
<option id="optSWI" value="SWI">SWI (International)</option>
|
||||
</select>
|
||||
<div class="fieldDescription">Select the Swiss broadcasting unit to fetch content from</div>
|
||||
<div class="checkboxContainer checkboxContainer-withDescription">
|
||||
<h3>Channels (Business Units)</h3>
|
||||
<div class="fieldDescription" style="margin-bottom: 0.5em;">Enable a channel tile for each Swiss broadcaster you want. A separate tile appears per enabled unit, so polylingual households can browse e.g. SRF (German) and RTS (French) at the same time.</div>
|
||||
<label class="emby-checkbox-label">
|
||||
<input id="buSRF" type="checkbox" is="emby-checkbox" data-bu="SRF" />
|
||||
<span>SRF — Schweizer Radio und Fernsehen (German)</span>
|
||||
</label>
|
||||
<label class="emby-checkbox-label">
|
||||
<input id="buRTS" type="checkbox" is="emby-checkbox" data-bu="RTS" />
|
||||
<span>RTS — Radio Télévision Suisse (French)</span>
|
||||
</label>
|
||||
<label class="emby-checkbox-label">
|
||||
<input id="buRSI" type="checkbox" is="emby-checkbox" data-bu="RSI" />
|
||||
<span>RSI — Radiotelevisione svizzera (Italian)</span>
|
||||
</label>
|
||||
<label class="emby-checkbox-label">
|
||||
<input id="buRTR" type="checkbox" is="emby-checkbox" data-bu="RTR" />
|
||||
<span>RTR — Radiotelevisiun Svizra Rumantscha (Romansh)</span>
|
||||
</label>
|
||||
<label class="emby-checkbox-label">
|
||||
<input id="buSWI" type="checkbox" is="emby-checkbox" data-bu="SWI" />
|
||||
<span>SWI — swissinfo.ch (International)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="selectContainer">
|
||||
<label class="selectLabel" for="QualityPreference">Quality Preference</label>
|
||||
@@ -142,7 +155,12 @@
|
||||
.addEventListener('pageshow', function() {
|
||||
Dashboard.showLoadingMsg();
|
||||
ApiClient.getPluginConfiguration(SRFPlayConfig.pluginUniqueId).then(function (config) {
|
||||
document.querySelector('#BusinessUnit').value = config.BusinessUnit;
|
||||
var enabled = (config.EnabledBusinessUnits && config.EnabledBusinessUnits.length)
|
||||
? config.EnabledBusinessUnits
|
||||
: [config.BusinessUnit]; // migrate legacy single value
|
||||
['SRF','RTS','RSI','RTR','SWI'].forEach(function(bu) {
|
||||
document.querySelector('#bu' + bu).checked = enabled.indexOf(bu) !== -1;
|
||||
});
|
||||
document.querySelector('#QualityPreference').value = config.QualityPreference;
|
||||
document.querySelector('#ContentRefreshIntervalHours').value = config.ContentRefreshIntervalHours;
|
||||
document.querySelector('#ExpirationCheckIntervalHours').value = config.ExpirationCheckIntervalHours;
|
||||
@@ -168,7 +186,11 @@
|
||||
.addEventListener('submit', function(e) {
|
||||
Dashboard.showLoadingMsg();
|
||||
ApiClient.getPluginConfiguration(SRFPlayConfig.pluginUniqueId).then(function (config) {
|
||||
config.BusinessUnit = document.querySelector('#BusinessUnit').value;
|
||||
config.EnabledBusinessUnits = ['SRF','RTS','RSI','RTR','SWI'].filter(function(bu) {
|
||||
return document.querySelector('#bu' + bu).checked;
|
||||
});
|
||||
// Keep legacy field in sync with the first enabled unit for backwards compat.
|
||||
config.BusinessUnit = config.EnabledBusinessUnits[0] || 'SRF';
|
||||
config.QualityPreference = document.querySelector('#QualityPreference').value;
|
||||
config.ContentRefreshIntervalHours = parseInt(document.querySelector('#ContentRefreshIntervalHours').value);
|
||||
config.ExpirationCheckIntervalHours = parseInt(document.querySelector('#ExpirationCheckIntervalHours').value);
|
||||
|
||||
Reference in New Issue
Block a user