1 <ng-template #modal
let-hide=
"close">
2 <div class=
"modal-header">
3 <h4 class=
"modal-title">
4 <ng-container i18n
>Download
</ng-container>
6 <div class=
"peertube-select-container title-select" *
ngIf=
"hasCaptions()">
7 <select id=
"type" name=
"type" [(ngModel)]=
"type" class=
"form-control">
8 <option value=
"video" i18n
>Video
</option>
9 <option value=
"subtitles" i18n
>Subtitles
</option>
14 <my-global-icon iconName=
"cross" aria-label=
"Close" role=
"button" (click)=
"hide()"></my-global-icon>
17 <div class=
"modal-body">
18 <div class=
"alert alert-warning" *
ngIf=
"isConfidentialVideo()" i18n
>
19 The following link contains a private token and should not be shared with anyone.
23 <ng-container *
ngIf=
"type === 'subtitles'">
24 <div ngbNav #
subtitleNav=
"ngbNav" class=
"nav-tabs" [activeId]=
"subtitleLanguageId" (activeIdChange)=
"onSubtitleIdChange($event)">
26 <ng-container *
ngFor=
"let caption of getCaptions()" [ngbNavItem]=
"caption.language.id">
27 <a ngbNavLink i18n
>{{ caption.language.label }}
</a>
29 <ng-template ngbNavContent
>
30 <div class=
"nav-content">
31 <div class=
"input-group">
32 <input #urlInput (click)=
"urlInput.select()" type=
"text" class=
"form-control readonly" readonly [value]=
"getLink()" />
35 *
ngIf=
"!isConfidentialVideo()" type=
"button" class=
"btn btn-outline-secondary"
36 [cdkCopyToClipboard]=
"urlInput.value" (click)=
"activateCopiedMessage()"
38 <span class=
"glyphicon glyphicon-duplicate"></span>
46 <div [ngbNavOutlet]=
"subtitleNav"></div>
50 <ng-container *
ngIf=
"type === 'video'">
51 <div ngbNav #
resolutionNav=
"ngbNav" class=
"nav-tabs" [activeId]=
"resolutionId" (activeIdChange)=
"onResolutionIdChange($event)">
52 <ng-container *
ngFor=
"let file of getVideoFiles()" [ngbNavItem]=
"file.resolution.id">
53 <a ngbNavLink i18n
>{{ file.resolution.label }}
</a>
55 <ng-template ngbNavContent
>
56 <div class=
"nav-content">
57 <div class=
"input-group">
58 <input #urlInput (click)=
"urlInput.select()" type=
"text" class=
"form-control readonly" readonly [value]=
"getLink()" />
61 *
ngIf=
"!isConfidentialVideo()" type=
"button" class=
"btn btn-outline-secondary"
62 [cdkCopyToClipboard]=
"urlInput.value" (click)=
"activateCopiedMessage()"
64 <span class=
"glyphicon glyphicon-duplicate"></span>
72 <div [ngbNavOutlet]=
"resolutionNav"></div>
74 <div class=
"advanced-filters collapse-transition" [ngbCollapse]=
"isAdvancedCustomizationCollapsed">
75 <div ngbNav #
navMetadata=
"ngbNav" class=
"nav-tabs nav-metadata">
76 <ng-container ngbNavItem
>
77 <a ngbNavLink i18n
>Format
</a>
78 <ng-template ngbNavContent
>
79 <div class=
"file-metadata">
80 <div class=
"metadata-attribute metadata-attribute-tags" *
ngFor=
"let item of videoFileMetadataFormat | keyvalue">
81 <span i18n
class=
"metadata-attribute-label">{{ item.value.label }}
</span>
82 <span class=
"metadata-attribute-value">{{ item.value.value }}
</span>
87 <ng-container ngbNavItem [disabled]=
"videoFileMetadataVideoStream === undefined">
88 <a ngbNavLink i18n
>Video stream
</a>
89 <ng-template ngbNavContent
>
90 <div class=
"file-metadata">
91 <div class=
"metadata-attribute metadata-attribute-tags" *
ngFor=
"let item of videoFileMetadataVideoStream | keyvalue">
92 <span i18n
class=
"metadata-attribute-label">{{ item.value.label }}
</span>
93 <span class=
"metadata-attribute-value">{{ item.value.value }}
</span>
99 <ng-container ngbNavItem [disabled]=
"videoFileMetadataAudioStream === undefined">
100 <a ngbNavLink i18n
>Audio stream
</a>
101 <ng-template ngbNavContent
>
102 <div class=
"file-metadata">
103 <div class=
"metadata-attribute metadata-attribute-tags" *
ngFor=
"let item of videoFileMetadataAudioStream | keyvalue">
104 <span i18n
class=
"metadata-attribute-label">{{ item.value.label }}
</span>
105 <span class=
"metadata-attribute-value">{{ item.value.value }}
</span>
114 <div *
ngIf=
"getFileMetadata()" [ngbNavOutlet]=
"navMetadata"></div>
116 <div class=
"download-type">
117 <div class=
"peertube-radio-container">
118 <input type=
"radio" name=
"download" id=
"download-direct" [(ngModel)]=
"downloadType" value=
"direct">
119 <label i18n
for=
"download-direct">Direct download
</label>
122 <div class=
"peertube-radio-container">
123 <input type=
"radio" name=
"download" id=
"download-torrent" [(ngModel)]=
"downloadType" value=
"torrent">
124 <label i18n
for=
"download-torrent">Torrent (.torrent file)
</label>
130 (click)=
"isAdvancedCustomizationCollapsed = !isAdvancedCustomizationCollapsed"
131 role=
"button" class=
"advanced-filters-button"
132 [attr.aria-expanded]=
"!isAdvancedCustomizationCollapsed" aria-controls=
"collapseBasic"
134 <ng-container *
ngIf=
"isAdvancedCustomizationCollapsed">
135 <span class=
"glyphicon glyphicon-menu-down"></span>
142 <ng-container *
ngIf=
"!isAdvancedCustomizationCollapsed">
143 <span class=
"glyphicon glyphicon-menu-up"></span>
153 <div class=
"modal-footer inputs">
155 type=
"button" role=
"button" i18n-value
value=
"Cancel" class=
"peertube-button grey-button"
156 (click)=
"hide()" (key.enter)=
"hide()"
159 <input type=
"submit" i18n-value
value=
"Download" class=
"peertube-button orange-button" (click)=
"download()" />