private bool AVideoWasUploaded(CloudVideoPart part, IUpdateModel updater, CloudVideoPartViewModel viewModel) { var isValid = viewModel.WamsVideo.WamsAssetId != null || viewModel.TemporaryVideoFile.FileSize > 0 || part.MezzanineAsset != null; if (!isValid) { updater.AddModelError(Prefix + ".WamsVideo.WamsAssetId", T("You need to upload a video.")); } return(isValid); }
private void ProcessCreatedWamsAssets(CloudVideoPart part, CloudVideoPartViewModel viewModel) { if (viewModel.WamsVideo.AssetId == null && !String.IsNullOrWhiteSpace(viewModel.WamsVideo.WamsAssetId)) { var asset = _assetManager.CreateAssetFor <MezzanineAsset>(part, a => { a.Name = "Mezzanine"; a.IncludeInPlayer = false; a.OriginalFileName = viewModel.WamsVideo.FileName; a.WamsAssetId = viewModel.WamsVideo.WamsAssetId; a.UploadState.Status = AssetUploadStatus.Uploaded; CreatePrivateLocatorFor(a); }); viewModel.WamsVideo.AssetId = asset.Record.Id; } if (viewModel.WamsThumbnail.AssetId == null && !String.IsNullOrWhiteSpace(viewModel.WamsThumbnail.WamsAssetId)) { var asset = _assetManager.CreateAssetFor <ThumbnailAsset>(part, a => { a.Name = viewModel.WamsThumbnail.FileName; a.IncludeInPlayer = true; a.OriginalFileName = viewModel.WamsThumbnail.FileName; a.WamsAssetId = viewModel.WamsThumbnail.WamsAssetId; a.UploadState.Status = AssetUploadStatus.Uploaded; CreatePrivateLocatorFor(a); }); viewModel.WamsThumbnail.AssetId = asset.Record.Id; } if (viewModel.WamsSubtitle.AssetId == null && !String.IsNullOrWhiteSpace(viewModel.WamsSubtitle.WamsAssetId)) { var asset = _assetManager.CreateAssetFor <SubtitleAsset>(part, a => { a.Name = viewModel.AddedSubtitleLanguage; a.IncludeInPlayer = true; a.OriginalFileName = viewModel.WamsSubtitle.FileName; a.Language = viewModel.AddedSubtitleLanguage; a.WamsAssetId = viewModel.WamsSubtitle.WamsAssetId; a.UploadState.Status = AssetUploadStatus.Uploaded; CreatePrivateLocatorFor(a); }); viewModel.WamsThumbnail.AssetId = asset.Record.Id; } }
private void ProcessUploadedFiles(CloudVideoPart part, CloudVideoPartViewModel viewModel) { var httpContext = _httpContextAccessor.Current(); var files = httpContext.Request.Files; var postedThumbnailFile = files["ThumbnailFile.Proxied"]; var postedSubtitleFile = files["SubtitleFile.Proxied"]; if (viewModel.TemporaryVideoFile.FileSize > 0) { _assetManager.CreateAssetFor <MezzanineAsset>(part, a => { a.Name = "Mezzanine"; a.IncludeInPlayer = false; a.OriginalFileName = Path.GetFileName(viewModel.TemporaryVideoFile.OriginalFileName); a.LocalTempFileName = viewModel.TemporaryVideoFile.TemporaryFileName; a.LocalTempFileSize = viewModel.TemporaryVideoFile.FileSize; }); } if (postedThumbnailFile != null && postedThumbnailFile.ContentLength > 0) { var thumbnailTempFilePath = _assetManager.SaveTemporaryFile(postedThumbnailFile); _assetManager.CreateAssetFor <ThumbnailAsset>(part, a => { a.Name = Path.GetFileName(postedThumbnailFile.FileName); a.IncludeInPlayer = true; a.OriginalFileName = Path.GetFileName(postedThumbnailFile.FileName); a.LocalTempFileName = thumbnailTempFilePath; a.LocalTempFileSize = postedThumbnailFile.ContentLength; }); } if (postedSubtitleFile != null && postedSubtitleFile.ContentLength > 0) { var subtitleTempFilePath = _assetManager.SaveTemporaryFile(postedSubtitleFile); _assetManager.CreateAssetFor <SubtitleAsset>(part, a => { a.Name = Path.GetFileName(postedSubtitleFile.FileName); a.IncludeInPlayer = true; a.OriginalFileName = Path.GetFileName(postedSubtitleFile.FileName); a.LocalTempFileName = subtitleTempFilePath; a.LocalTempFileSize = postedSubtitleFile.ContentLength; a.Language = viewModel.AddedSubtitleLanguage; }); } }
protected override DriverResult Editor(CloudVideoPart part, IUpdateModel updater, dynamic shapeHelper) { var results = new List <DriverResult>(); results.Add(ContentShape("Parts_CloudVideo_Edit", () => { var settings = _services.WorkContext.CurrentSite.As <CloudMediaSettingsPart>(); var httpContext = _httpContextAccessor.Current(); var occupiedSubtitleLanguagesQuery = from asset in part.Assets where asset is SubtitleAsset select((SubtitleAsset)asset).Language; var availableSubtitleLanguagesQuery = from language in settings.SubtitleLanguages where !occupiedSubtitleLanguagesQuery.Contains(language) select language; var viewModel = new CloudVideoPartViewModel(availableSubtitleLanguagesQuery.ToArray()) { Id = part.Id, Part = part, AllowedVideoFilenameExtensions = settings.AllowedVideoFilenameExtensions, TemporaryVideoFile = new TemporaryFileViewModel { OriginalFileName = part.MezzanineAsset != null ? part.MezzanineAsset.OriginalFileName : "", FileSize = 0, TemporaryFileName = "" }, AddedSubtitleLanguage = settings.SubtitleLanguages.FirstOrDefault(), WamsVideo = new WamsAssetViewModel(), WamsThumbnail = new WamsAssetViewModel(), WamsSubtitle = new WamsAssetViewModel() }; if (updater != null) { if (updater.TryUpdateModel(viewModel, Prefix, null, null) && AVideoWasUploaded(part, updater, viewModel)) { ProcessCreatedWamsAssets(part, viewModel); ProcessUploadedFiles(part, viewModel); var unpublish = httpContext.Request.Form["submit.Save"] == "submit.Unpublish"; if (unpublish) { _services.ContentManager.Unpublish(part.ContentItem); _services.Notifier.Success(T("Your {0} has been unpublished.", part.ContentItem.TypeDefinition.DisplayName)); } if (part.IsPublished()) { _assetManager.PublishAssetsFor(part); } } } return(shapeHelper.EditorTemplate(TemplateName: "Parts/CloudVideo", Model: viewModel, Prefix: Prefix)); })); if (part.TypeDefinition.Settings.GetModel <ContentTypeSettings>().Draftable) { if (part.IsPublished()) { results.Add(ContentShape("CloudVideo_Edit_UnpublishButton", actions => actions)); } } return(Combined(results.ToArray())); }