mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Added support for custom encoding presets to Orchard.Azure.MediaServices.
This commit is contained in:
@@ -76,8 +76,8 @@ namespace Orchard.Azure.MediaServices.Controllers {
|
||||
|
||||
var presetPattern = new Regex(@"^[\w\s]*$");
|
||||
foreach (var preset in viewModel.EncodingSettings.WamsEncodingPresets) {
|
||||
if (!presetPattern.IsMatch(preset)) {
|
||||
_services.Notifier.Error(T("The encoding preset '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset));
|
||||
if (!presetPattern.IsMatch(preset.Name)) {
|
||||
_services.Notifier.Error(T("The encoding preset name '{0}' is invalid. Encoding presets can only contain letters, numbers and spaces.", preset.Name));
|
||||
return View("Index", viewModel);
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
using Orchard.Azure.MediaServices.Models;
|
||||
using System.Linq;
|
||||
using Orchard.Azure.MediaServices.Models;
|
||||
using Orchard;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Environment;
|
||||
@@ -53,7 +54,7 @@ namespace Orchard.Azure.MediaServices.Events {
|
||||
"H264 Adaptive Bitrate MP4 Set SD 4x3 for iOS Cellular Only",
|
||||
"H264 Smooth Streaming 720p Xbox Live ADK",
|
||||
"H264 Smooth Streaming Windows Phone 7 Series"
|
||||
};
|
||||
}.Select(x => new EncodingPreset() { Name = x });
|
||||
settings.SubtitleLanguages = new[] {
|
||||
"da-DK",
|
||||
"nl-BE",
|
||||
|
@@ -3,6 +3,7 @@ using System.Globalization;
|
||||
using Orchard.ContentManagement;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Orchard.Azure.MediaServices.Models {
|
||||
|
||||
@@ -18,10 +19,10 @@ namespace Orchard.Azure.MediaServices.Models {
|
||||
set { this.Store(x => x.WamsAccountKey, value); }
|
||||
}
|
||||
|
||||
public string StorageAccountKey {
|
||||
get { return this.Retrieve(x => x.StorageAccountKey); }
|
||||
set { this.Store(x => x.StorageAccountKey, value); }
|
||||
}
|
||||
public string StorageAccountKey {
|
||||
get { return this.Retrieve(x => x.StorageAccountKey); }
|
||||
set { this.Store(x => x.StorageAccountKey, value); }
|
||||
}
|
||||
|
||||
public bool EnableDynamicPackaging {
|
||||
get { return this.Retrieve(x => x.EnableDynamicPackaging); }
|
||||
@@ -49,14 +50,21 @@ namespace Orchard.Azure.MediaServices.Models {
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<string> WamsEncodingPresets {
|
||||
public IEnumerable<EncodingPreset> WamsEncodingPresets {
|
||||
get {
|
||||
var presets = Retrieve<string>("WamsEncodingPresets");
|
||||
return !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
|
||||
var presets = Retrieve<string>("WamsEncodingPresetsJson");
|
||||
if (!String.IsNullOrEmpty(presets)) {
|
||||
return JsonConvert.DeserializeObject<EncodingPreset[]>(presets);
|
||||
}
|
||||
// Fall back to old style property for compatibility with existing data.
|
||||
presets = Retrieve<string>("WamsEncodingPresets");
|
||||
var presetNames = !String.IsNullOrEmpty(presets) ? presets.Split(';') : new string[] { };
|
||||
return presetNames.Select(x => new EncodingPreset() { Name = x });
|
||||
}
|
||||
set {
|
||||
var presets = value != null && value.Any() ? String.Join(";", value) : null;
|
||||
Store("WamsEncodingPresets", presets);
|
||||
// Clear out old style property, migrate setting to the new one.
|
||||
Store("WamsEncodingPresets", default(string));
|
||||
Store("WamsEncodingPresetsJson", JsonConvert.SerializeObject(value.ToArray()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace Orchard.Azure.MediaServices.Models {
|
||||
public class EncodingPreset {
|
||||
public string Name { get; set; }
|
||||
[AllowHtml]
|
||||
public string CustomXml { get; set; }
|
||||
}
|
||||
}
|
@@ -149,6 +149,7 @@
|
||||
<Content Include="Content\expressInstall.swf" />
|
||||
<Content Include="Content\MSAdaptiveStreamingPlugin.swf" />
|
||||
<Content Include="Content\StrobeMediaPlayback.swf" />
|
||||
<Compile Include="Models\EncodingPreset.cs" />
|
||||
<Compile Include="Shapes\CloudVideoPlayerShape.cs" />
|
||||
<Compile Include="Helpers\BitExtensions.cs" />
|
||||
<Compile Include="Infrastructure\Assets\AssetDriverResult.cs" />
|
||||
@@ -553,6 +554,9 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Scripts\lib\MPEG Dash Notice.docx" />
|
||||
<Content Include="Styles\cloudmedia-admin-settings.css.map">
|
||||
<DependentUpon>cloudmedia-admin-settings.css</DependentUpon>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\cloudmedia-admin-common.js.map" />
|
||||
|
@@ -15,6 +15,25 @@ var Orchard;
|
||||
})();
|
||||
Settings.StringItem = StringItem;
|
||||
|
||||
var EncodingPreset = (function () {
|
||||
function EncodingPreset(name, customXml) {
|
||||
this.name = ko.observable(name);
|
||||
this.customXml = ko.observable(customXml);
|
||||
this.isExpanded = ko.observable(false);
|
||||
this.type = ko.computed(function () {
|
||||
var customXml = this.customXml();
|
||||
if (!!customXml && customXml.length > 0)
|
||||
return "Custom preset";
|
||||
return "Standard preset";
|
||||
}, this);
|
||||
}
|
||||
EncodingPreset.prototype.toggle = function () {
|
||||
this.isExpanded(!this.isExpanded());
|
||||
};
|
||||
return EncodingPreset;
|
||||
})();
|
||||
Settings.EncodingPreset = EncodingPreset;
|
||||
|
||||
Settings.clientViewModel = {
|
||||
wamsEncodingPresets: ko.observableArray(),
|
||||
defaultWamsEncodingPresetIndex: ko.observable(),
|
||||
@@ -32,7 +51,7 @@ var Orchard;
|
||||
Settings.deleteWamsEncodingPreset = deleteWamsEncodingPreset;
|
||||
|
||||
function addNewWamsEncodingPreset() {
|
||||
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
|
||||
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
|
||||
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
|
||||
}
|
||||
Settings.addNewWamsEncodingPreset = addNewWamsEncodingPreset;
|
||||
@@ -49,8 +68,8 @@ var Orchard;
|
||||
Settings.addNewSubtitleLanguage = addNewSubtitleLanguage;
|
||||
|
||||
$(function () {
|
||||
$.each(initWamsEncodingPresets, function (presetIndex, presetName) {
|
||||
Settings.clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
|
||||
$.each(initWamsEncodingPresets, function (presetIndex, preset) {
|
||||
Settings.clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
|
||||
});
|
||||
|
||||
Settings.clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);
|
||||
|
@@ -1 +1 @@
|
||||
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}
|
||||
{"version":3,"file":"cloudmedia-admin-settings.js","sourceRoot":"","sources":["cloudmedia-admin-settings.ts"],"names":["Orchard","Orchard.Azure","Orchard.Azure.MediaServices","Orchard.Azure.MediaServices.Admin","Orchard.Azure.MediaServices.Admin.Settings","Orchard.Azure.MediaServices.Admin.Settings.StringItem","Orchard.Azure.MediaServices.Admin.Settings.StringItem.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.constructor","Orchard.Azure.MediaServices.Admin.Settings.EncodingPreset.toggle","Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset","Orchard.Azure.MediaServices.Admin.Settings.deleteSubtitleLanguage","Orchard.Azure.MediaServices.Admin.Settings.addNewSubtitleLanguage"],"mappings":"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"}
|
@@ -1,37 +1,56 @@
|
||||
/// <reference path="typings/jquery.d.ts" />
|
||||
/// <reference path="typings/knockout.d.ts" />
|
||||
|
||||
declare var initWamsEncodingPresets: string[];
|
||||
declare var initWamsEncodingPresets: any[];
|
||||
declare var initDefaultWamsEncodingPresetIndex: number;
|
||||
declare var initSubtitleLanguages: string[];
|
||||
|
||||
module Orchard.Azure.MediaServices.Admin.Settings
|
||||
{
|
||||
export class StringItem
|
||||
{
|
||||
constructor(value: string)
|
||||
{
|
||||
module Orchard.Azure.MediaServices.Admin.Settings {
|
||||
|
||||
export class StringItem {
|
||||
constructor(value: string) {
|
||||
this.value = ko.observable(value);
|
||||
}
|
||||
|
||||
public value: KnockoutObservable<string>;
|
||||
}
|
||||
|
||||
export interface IClientViewModel
|
||||
{
|
||||
wamsEncodingPresets: KnockoutObservableArray<StringItem>;
|
||||
export class EncodingPreset {
|
||||
constructor(name: string, customXml: string) {
|
||||
this.name = ko.observable(name);
|
||||
this.customXml = ko.observable(customXml);
|
||||
this.isExpanded = ko.observable(false);
|
||||
this.type = ko.computed(function () {
|
||||
var customXml: string = this.customXml();
|
||||
if (!!customXml && customXml.length > 0)
|
||||
return "Custom preset";
|
||||
return "Standard preset";
|
||||
}, this);
|
||||
}
|
||||
|
||||
public name: KnockoutObservable<string>;
|
||||
public customXml: KnockoutObservable<string>;
|
||||
public isExpanded: KnockoutObservable<boolean>;
|
||||
public type: KnockoutComputed<string>;
|
||||
|
||||
public toggle() {
|
||||
this.isExpanded(!this.isExpanded());
|
||||
}
|
||||
}
|
||||
|
||||
export interface IClientViewModel {
|
||||
wamsEncodingPresets: KnockoutObservableArray<EncodingPreset>;
|
||||
defaultWamsEncodingPresetIndex: KnockoutObservable<number>;
|
||||
subtitleLanguages: KnockoutObservableArray<StringItem>;
|
||||
}
|
||||
|
||||
export var clientViewModel: IClientViewModel = {
|
||||
wamsEncodingPresets: ko.observableArray<StringItem>(),
|
||||
wamsEncodingPresets: ko.observableArray<EncodingPreset>(),
|
||||
defaultWamsEncodingPresetIndex: ko.observable<number>(),
|
||||
subtitleLanguages: ko.observableArray<StringItem>()
|
||||
};
|
||||
|
||||
export function deleteWamsEncodingPreset(preset: StringItem)
|
||||
{
|
||||
export function deleteWamsEncodingPreset(preset: EncodingPreset) {
|
||||
var removedIndex = clientViewModel.wamsEncodingPresets.indexOf(preset);
|
||||
clientViewModel.wamsEncodingPresets.remove(preset);
|
||||
if (removedIndex === clientViewModel.defaultWamsEncodingPresetIndex())
|
||||
@@ -40,34 +59,28 @@ module Orchard.Azure.MediaServices.Admin.Settings
|
||||
clientViewModel.defaultWamsEncodingPresetIndex(clientViewModel.defaultWamsEncodingPresetIndex() - 1);
|
||||
}
|
||||
|
||||
export function addNewWamsEncodingPreset()
|
||||
{
|
||||
clientViewModel.wamsEncodingPresets.push(new StringItem("Unnamed"));
|
||||
export function addNewWamsEncodingPreset() {
|
||||
clientViewModel.wamsEncodingPresets.push(new EncodingPreset("Unnamed", null));
|
||||
$("#presets-table tbody:first-of-type tr:last-of-type td:nth-child(2) input").focus().select();
|
||||
}
|
||||
|
||||
export function deleteSubtitleLanguage(languageCultureCode: StringItem)
|
||||
{
|
||||
export function deleteSubtitleLanguage(languageCultureCode: StringItem) {
|
||||
clientViewModel.subtitleLanguages.remove(languageCultureCode);
|
||||
}
|
||||
|
||||
export function addNewSubtitleLanguage()
|
||||
{
|
||||
export function addNewSubtitleLanguage() {
|
||||
clientViewModel.subtitleLanguages.push(new StringItem("Unnamed"));
|
||||
$("#languages-table tbody:first-of-type tr:last-of-type td:nth-child(1) input").focus().select();
|
||||
}
|
||||
|
||||
$(function ()
|
||||
{
|
||||
$.each(initWamsEncodingPresets, function (presetIndex: number, presetName: string)
|
||||
{
|
||||
clientViewModel.wamsEncodingPresets.push(new StringItem(presetName));
|
||||
$(function () {
|
||||
$.each(initWamsEncodingPresets, function (presetIndex: number, preset: any) {
|
||||
clientViewModel.wamsEncodingPresets.push(new EncodingPreset(preset.name, preset.customXml));
|
||||
});
|
||||
|
||||
clientViewModel.defaultWamsEncodingPresetIndex(initDefaultWamsEncodingPresetIndex);
|
||||
|
||||
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string)
|
||||
{
|
||||
$.each(initSubtitleLanguages, function (languageIndex: number, languageCultureCode: string) {
|
||||
clientViewModel.subtitleLanguages.push(new StringItem(languageCultureCode));
|
||||
});
|
||||
|
||||
@@ -80,6 +93,6 @@ module Orchard.Azure.MediaServices.Admin.Settings
|
||||
localStorage.setItem("selectedCloudMediaSettingsTab", $("#tabs").tabs("option", "active"));
|
||||
},
|
||||
active: localStorage && localStorage.getItem ? localStorage.getItem("selectedCloudMediaSettingsTab") : null
|
||||
}).show();
|
||||
}).show();
|
||||
});
|
||||
}
|
||||
|
@@ -38,8 +38,8 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
|
||||
public override TaskConfiguration Editor(dynamic shapeFactory, IUpdateModel updater) {
|
||||
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
|
||||
var viewModel = new EncodeViewModel() {
|
||||
EncodingPresets = settings.WamsEncodingPresets,
|
||||
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex] : null
|
||||
EncodingPresets = settings.WamsEncodingPresets.Select(x => x.Name),
|
||||
SelectedEncodingPreset = settings.WamsEncodingPresets.Any() ? settings.WamsEncodingPresets.ToArray()[settings.DefaultWamsEncodingPresetIndex].Name : null
|
||||
};
|
||||
|
||||
if (updater != null) {
|
||||
@@ -66,12 +66,14 @@ namespace Orchard.Azure.MediaServices.Services.Tasks.Providers {
|
||||
}
|
||||
|
||||
public override ITask CreateTask(TaskConfiguration config, TaskCollection tasks, IEnumerable<IAsset> inputAssets) {
|
||||
var settings = _orchardServices.WorkContext.CurrentSite.As<CloudMediaSettingsPart>();
|
||||
var viewModel = (EncodeViewModel)config.Settings;
|
||||
var encodingPreset = settings.WamsEncodingPresets.Where(x => x.Name == viewModel.SelectedEncodingPreset).Single();
|
||||
|
||||
var task = tasks.AddNew(
|
||||
viewModel.SelectedEncodingPreset,
|
||||
_wamsClient.GetLatestMediaProcessorByName(MediaProcessorName.WindowsAzureMediaEncoder),
|
||||
viewModel.SelectedEncodingPreset,
|
||||
!String.IsNullOrEmpty(encodingPreset.CustomXml) ? encodingPreset.CustomXml : encodingPreset.Name,
|
||||
TaskOptions.None);
|
||||
|
||||
task.InputAssets.AddRange(inputAssets);
|
||||
|
@@ -1,35 +1,30 @@
|
||||
h2 {
|
||||
margin-top: 1em !important;
|
||||
margin-top: 1em !important;
|
||||
}
|
||||
|
||||
#test-button,
|
||||
#save-button {
|
||||
margin-top: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
#presets-table {
|
||||
width: auto;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#presets-table th:nth-child(1),
|
||||
#presets-table th:nth-child(3),
|
||||
#presets-table th:nth-child(4),
|
||||
#presets-table td:nth-child(1),
|
||||
#presets-table td:nth-child(3) {
|
||||
text-align: center;
|
||||
#presets-table td:nth-child(4) {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#presets-table td:nth-child(2) {
|
||||
width: 400px;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#languages-table {
|
||||
width: auto;
|
||||
/*td:nth-child(2) {
|
||||
width: auto;
|
||||
/*td:nth-child(2) {
|
||||
width: 400px;
|
||||
}*/
|
||||
}
|
||||
|
||||
#languages-table th:nth-child(2),
|
||||
#languages-table td:nth-child(2) {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
/*# sourceMappingURL=cloudmedia-admin-settings.css.map */
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": 3,
|
||||
"file": "cloudmedia-admin-settings.css",
|
||||
"sources": [
|
||||
"cloudmedia-admin-settings.less"
|
||||
],
|
||||
"names": [],
|
||||
"mappings": "AAAA;EACC,0BAAA;;AAGD;AAAc;EACb,eAAA;;AAGD;EACC,WAAA;;AADD,cAEC,GAAE,UAAU;AAFb,cAEkB,GAAE,UAAU;AAF9B,cAEmC,GAAE,UAAU;AAF/C,cAEoD,GAAE,UAAU;EAC9D,kBAAA;;AAHF,cAKC,GAAE,UAAU;EACX,YAAA;;AAIF;EACC,WAAA;;;;;AADD,gBAEC,GAAE,UAAU;AAFb,gBAEkB,GAAE,UAAU;EAC5B,kBAAA"
|
||||
}
|
@@ -8,7 +8,7 @@
|
||||
|
||||
#presets-table {
|
||||
width: auto;
|
||||
th:nth-child(1), th:nth-child(3), td:nth-child(1), td:nth-child(3) {
|
||||
th:nth-child(1), th:nth-child(4), td:nth-child(1), td:nth-child(4) {
|
||||
text-align: center;
|
||||
}
|
||||
td:nth-child(2) {
|
||||
|
@@ -1,8 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Azure.MediaServices.Models;
|
||||
|
||||
namespace Orchard.Azure.MediaServices.ViewModels.Settings {
|
||||
public class EncodingSettingsViewModel {
|
||||
public IEnumerable<string> WamsEncodingPresets { get; set; }
|
||||
public IEnumerable<EncodingPreset> WamsEncodingPresets { get; set; }
|
||||
public int DefaultWamsEncodingPresetIndex { get; set; }
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
@model Orchard.Azure.MediaServices.ViewModels.Settings.EncodingSettingsViewModel
|
||||
@using (Script.Head()) {
|
||||
<script type="text/javascript">
|
||||
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("'{0}'", s))) : Html.Raw(""))];
|
||||
var initWamsEncodingPresets = [ @(Model.WamsEncodingPresets != null && Model.WamsEncodingPresets.Any() ? Html.Raw(String.Join(", ", from s in Model.WamsEncodingPresets select String.Format("{{name: '{0}', customXml: '{1}'}}", s.Name, HttpUtility.JavaScriptStringEncode(s.CustomXml)))) : Html.Raw(""))];
|
||||
var initDefaultWamsEncodingPresetIndex = @Model.DefaultWamsEncodingPresetIndex +0;
|
||||
</script>
|
||||
}
|
||||
@@ -18,13 +18,25 @@
|
||||
<tr>
|
||||
<th scope="col">@T("Default")</th>
|
||||
<th scope="col">@T("Name")</th>
|
||||
<th scope="col">@T("Type")</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody data-bind="foreach: wamsEncodingPresets">
|
||||
<tr>
|
||||
<td><input type="radio" name="presets-requiredUploads" data-bind="value: $index(), checked: $parent.defaultWamsEncodingPresetIndex" /></td>
|
||||
<td><input type="text" class="text large" data-bind="value: value, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index(), name: 'EncodingSettings.WamsEncodingPresets[' + $index() + ']'}" /></td>
|
||||
<td>
|
||||
<input type="text" class="text large" data-bind="value: name, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().Name, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].Name'}" />
|
||||
<section class="preset-custom-section" data-bind="visible: isExpanded">
|
||||
<label>@T("Custom encoding preset XML")</label>
|
||||
<textarea data-bind="value: customXml, attr: { id: 'EncodingSettings_WamsEncodingPresets_' + $index().CustomXml, name: 'EncodingSettings.WamsEncodingPresets[' + $index() + '].CustomXml'}"></textarea>
|
||||
<p class="hint">@T("Leave empty if this is standard preset (in which case the name must match a standard Microsoft Azure Media Services encoding preset name.")</p>
|
||||
</section>
|
||||
</td>
|
||||
<td>
|
||||
<strong data-bind="text: type"></strong>
|
||||
<a href="#" data-bind="click: toggle">@T("Change")</a>
|
||||
</td>
|
||||
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.deleteWamsEncodingPreset">@T("Delete")</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -33,6 +45,7 @@
|
||||
<td></td>
|
||||
<td><a href="#" data-bind="click: Orchard.Azure.MediaServices.Admin.Settings.addNewWamsEncodingPreset"><i class="icon-plus-sign icon-large"></i> Add new</a></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
Reference in New Issue
Block a user