1 <ng-template #modal
let-hide=
"close">
2 <div class=
"modal-header">
3 <h4 i18n
class=
"modal-title">Share
</h4>
4 <my-global-icon iconName=
"cross" aria-label=
"Close" role=
"button" (click)=
"hide()"></my-global-icon>
8 <div class=
"modal-body">
10 <div class=
"playlist" *
ngIf=
"playlist">
11 <h5 i18n *
ngIf=
"video">Share the playlist
</h5>
13 <div *
ngIf=
"isPrivatePlaylist()" class=
"alert-private alert alert-warning">
14 <div i18n
>This playlist is private so you won't be able to share it with external users
</div>
16 <a i18n
class=
"peertube-button-link orange-button" [routerLink]=
"[ '/my-library/video-playlists/update', playlist.uuid ]" target=
"_blank" rel=
"noopener noreferrer">
17 Update playlist privacy
21 <div ngbNav #
nav=
"ngbNav" class=
"nav-tabs" [(activeId)]=
"activePlaylistId">
23 <ng-container ngbNavItem=
"url">
24 <a ngbNavLink i18n
>URL
</a>
26 <ng-template ngbNavContent
>
27 <div class=
"nav-content">
28 <my-input-text [value]=
"playlistUrl" [withToggle]=
"false" [withCopy]=
"true" [show]=
"true" [readonly]=
"true"></my-input-text>
33 <ng-container ngbNavItem=
"qrcode">
34 <a ngbNavLink i18n
>QR-Code
</a>
36 <ng-template ngbNavContent
>
37 <div class=
"nav-content">
38 <qrcode [qrdata]=
"playlistUrl" [width]=
"256" level=
"Q"></qrcode>
43 <ng-container ngbNavItem=
"embed">
44 <a ngbNavLink i18n
>Embed
</a>
46 <ng-template ngbNavContent
>
47 <div class=
"nav-content">
49 [value]=
"customizations.onlyEmbedUrl ? playlistEmbedUrl : playlistEmbedHTML" (change)=
"onUpdate()"
50 [withToggle]=
"false" [withCopy]=
"true" [show]=
"true" [readonly]=
"true"
53 <div i18n *
ngIf=
"notSecure()" class=
"alert alert-warning">
54 The url is not secured (no HTTPS), so the embed video won't work on HTTPS websites (web browsers block non secured HTTP requests on HTTPS websites).
57 <div class=
"embed" [innerHTML]=
"playlistEmbedSafeHTML"></div>
64 <div [ngbNavOutlet]=
"nav"></div>
68 <div class=
"form-group" *
ngIf=
"video">
70 inputName=
"includeVideoInPlaylist" [(ngModel)]=
"customizations.includeVideoInPlaylist"
71 i18n-labelText
labelText=
"Share the playlist at this video position"
72 ></my-peertube-checkbox>
75 <div class=
"form-group">
77 *
ngIf=
"isInPlaylistEmbedTab()"
78 inputName=
"onlyEmbedUrl" [(ngModel)]=
"customizations.onlyEmbedUrl"
79 i18n-labelText
labelText=
"Only display embed URL"
80 ></my-peertube-checkbox>
83 <my-plugin-placeholder pluginId=
"share-modal-playlist-settings"></my-plugin-placeholder>
88 <div class=
"video" *
ngIf=
"video">
89 <h5 *
ngIf=
"playlist" i18n
>Share the video
</h5>
91 <div *
ngIf=
"isPrivateVideo()" class=
"alert-private alert alert-warning">
92 <div i18n
>This video is private so you won't be able to share it with external users
</div>
94 <a i18n
class=
"peertube-button-link orange-button" [routerLink]=
"[ '/videos/', 'update', video.shortUUID ]" target=
"_blank" rel=
"noopener noreferrer">
99 <div ngbNav #
nav=
"ngbNav" class=
"nav-tabs" [(activeId)]=
"activeVideoId">
101 <ng-container ngbNavItem=
"url">
102 <a ngbNavLink i18n
>URL
</a>
104 <ng-template ngbNavContent
>
105 <div class=
"nav-content">
106 <my-input-text [value]=
"videoUrl" [withToggle]=
"false" [withCopy]=
"true" [show]=
"true" [readonly]=
"true"></my-input-text>
111 <ng-container ngbNavItem=
"qrcode">
112 <a ngbNavLink i18n
>QR-Code
</a>
114 <ng-template ngbNavContent
>
115 <div class=
"nav-content">
116 <qrcode [qrdata]=
"videoUrl" [width]=
"256" level=
"Q"></qrcode>
121 <ng-container ngbNavItem=
"embed">
122 <a ngbNavLink i18n
>Embed
</a>
124 <ng-template ngbNavContent
>
125 <div class=
"nav-content">
127 [value]=
"customizations.onlyEmbedUrl ? videoEmbedUrl : videoEmbedHTML" (ngModelChange)=
"onUpdate()"
128 [withToggle]=
"false" [withCopy]=
"true" [show]=
"true" [readonly]=
"true"
131 <div i18n *
ngIf=
"notSecure()" class=
"alert alert-warning">
132 The url is not secured (no HTTPS), so the embed video won't work on HTTPS websites (web browsers block non secured HTTP requests on HTTPS websites).
135 <div class=
"embed" [innerHTML]=
"videoEmbedSafeHTML"></div>
142 <div [ngbNavOutlet]=
"nav"></div>
144 <div class=
"filters">
146 <div class=
"form-group start-at" *
ngIf=
"!video.isLive">
147 <my-peertube-checkbox
148 inputName=
"startAt" [(ngModel)]=
"customizations.startAtCheckbox"
149 i18n-labelText
labelText=
"Start at"
150 ></my-peertube-checkbox>
153 [timestamp]=
"customizations.startAt"
154 [maxTimestamp]=
"video.duration"
155 [disabled]=
"!customizations.startAtCheckbox"
156 [(ngModel)]=
"customizations.startAt"
158 </my-timestamp-input>
161 <div *
ngIf=
"videoCaptions.length !== 0" class=
"form-group video-caption-block">
162 <my-peertube-checkbox
163 inputName=
"subtitleCheckbox" [(ngModel)]=
"customizations.subtitleCheckbox"
164 i18n-labelText
labelText=
"Auto select subtitle"
165 ></my-peertube-checkbox>
167 <div class=
"peertube-select-container" [ngClass]=
"{ disabled: !customizations.subtitleCheckbox }">
168 <select [(ngModel)]=
"customizations.subtitle" [disabled]=
"!customizations.subtitleCheckbox" class=
"form-control">
169 <option *
ngFor=
"let caption of videoCaptions" [value]=
"caption.language.id">{{ caption.language.label }}
</option>
174 <div class=
"form-group" *
ngIf=
"isInVideoEmbedTab()">
175 <my-peertube-checkbox
176 inputName=
"onlyEmbedUrl" [(ngModel)]=
"customizations.onlyEmbedUrl"
177 i18n-labelText
labelText=
"Only display embed URL"
178 ></my-peertube-checkbox>
181 <my-plugin-placeholder pluginId=
"share-modal-video-settings"></my-plugin-placeholder>
184 <div class=
"advanced-filters collapse-transition" [ngbCollapse]=
"isAdvancedCustomizationCollapsed">
186 <div class=
"form-group stop-at" *
ngIf=
"!video.isLive">
187 <my-peertube-checkbox
188 inputName=
"stopAt" [(ngModel)]=
"customizations.stopAtCheckbox"
189 i18n-labelText
labelText=
"Stop at"
190 ></my-peertube-checkbox>
193 [timestamp]=
"customizations.stopAt"
194 [maxTimestamp]=
"video.duration"
195 [disabled]=
"!customizations.stopAtCheckbox"
196 [(ngModel)]=
"customizations.stopAt"
198 </my-timestamp-input>
201 <div class=
"form-group">
202 <my-peertube-checkbox
203 inputName=
"autoplay" [(ngModel)]=
"customizations.autoplay"
204 i18n-labelText
labelText=
"Autoplay"
205 ></my-peertube-checkbox>
208 <div class=
"form-group">
209 <my-peertube-checkbox
210 inputName=
"muted" [(ngModel)]=
"customizations.muted"
211 i18n-labelText
labelText=
"Muted"
212 ></my-peertube-checkbox>
215 <div class=
"form-group" *
ngIf=
"!video.isLive">
216 <my-peertube-checkbox
217 inputName=
"loop" [(ngModel)]=
"customizations.loop"
218 i18n-labelText
labelText=
"Loop"
219 ></my-peertube-checkbox>
222 <div *
ngIf=
"!isLocalVideo() && !isInVideoEmbedTab()" class=
"form-group">
223 <my-peertube-checkbox
224 inputName=
"originUrl" [(ngModel)]=
"customizations.originUrl"
225 i18n-labelText
labelText=
"Use origin instance URL"
226 ></my-peertube-checkbox>
230 <ng-container *
ngIf=
"isInVideoEmbedTab()">
231 <div class=
"form-group">
232 <my-peertube-checkbox
233 inputName=
"title" [(ngModel)]=
"customizations.title"
234 i18n-labelText
labelText=
"Display video title"
235 ></my-peertube-checkbox>
238 <div class=
"form-group">
239 <my-peertube-checkbox
240 inputName=
"embedP2P" [(ngModel)]=
"customizations.embedP2P"
241 i18n-labelText
labelText=
"P2P"
242 ></my-peertube-checkbox>
245 <div class=
"form-group">
246 <my-peertube-checkbox
247 inputName=
"warningTitle" [(ngModel)]=
"customizations.warningTitle"
248 i18n-labelText
labelText=
"Display privacy warning" [disabled]=
"!customizations.embedP2P"
249 ></my-peertube-checkbox>
252 <div class=
"form-group">
253 <my-peertube-checkbox
254 inputName=
"controlBar" [(ngModel)]=
"customizations.controlBar"
255 i18n-labelText
labelText=
"Display player control bar"
256 ></my-peertube-checkbox>
259 <div class=
"form-group">
260 <my-peertube-checkbox
261 inputName=
"peertubeLink" [(ngModel)]=
"customizations.peertubeLink"
262 i18n-labelText
labelText=
"Display PeerTube button link"
263 ></my-peertube-checkbox>
268 <div (click)=
"isAdvancedCustomizationCollapsed = !isAdvancedCustomizationCollapsed" role=
"button" class=
"advanced-filters-button"
269 [attr.aria-expanded]=
"!isAdvancedCustomizationCollapsed" aria-controls=
"collapseBasic">
271 <ng-container *
ngIf=
"isAdvancedCustomizationCollapsed">
272 <span class=
"chevron-down"></span>
279 <ng-container *
ngIf=
"!isAdvancedCustomizationCollapsed">
280 <span class=
"chevron-up"></span>