aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/app/shared/forms/form-validators/video-validators.service.ts6
-rw-r--r--client/src/app/shared/video-import/video-import.service.ts4
-rw-r--r--client/src/app/shared/video/video-edit.model.ts11
-rw-r--r--client/src/app/shared/video/video.model.ts4
-rw-r--r--client/src/app/shared/video/video.service.ts4
-rw-r--r--client/src/app/videos/+video-edit/shared/video-edit.component.html14
-rw-r--r--client/src/app/videos/+video-edit/shared/video-edit.component.ts4
-rw-r--r--client/src/app/videos/+video-watch/video-watch.component.html6
-rw-r--r--client/src/app/videos/+video-watch/video-watch.component.scss2
9 files changed, 49 insertions, 6 deletions
diff --git a/client/src/app/shared/forms/form-validators/video-validators.service.ts b/client/src/app/shared/forms/form-validators/video-validators.service.ts
index 81ed0666f..e3f7a0969 100644
--- a/client/src/app/shared/forms/form-validators/video-validators.service.ts
+++ b/client/src/app/shared/forms/form-validators/video-validators.service.ts
@@ -16,6 +16,7 @@ export class VideoValidatorsService {
16 readonly VIDEO_TAGS: BuildFormValidator 16 readonly VIDEO_TAGS: BuildFormValidator
17 readonly VIDEO_SUPPORT: BuildFormValidator 17 readonly VIDEO_SUPPORT: BuildFormValidator
18 readonly VIDEO_SCHEDULE_PUBLICATION_AT: BuildFormValidator 18 readonly VIDEO_SCHEDULE_PUBLICATION_AT: BuildFormValidator
19 readonly VIDEO_ORIGINALLY_PUBLISHED_AT: BuildFormValidator
19 20
20 constructor (private i18n: I18n) { 21 constructor (private i18n: I18n) {
21 22
@@ -92,5 +93,10 @@ export class VideoValidatorsService {
92 'required': this.i18n('A date is required to schedule video update.') 93 'required': this.i18n('A date is required to schedule video update.')
93 } 94 }
94 } 95 }
96
97 this.VIDEO_ORIGINALLY_PUBLISHED_AT = {
98 VALIDATORS: [ ],
99 MESSAGES: {}
100 }
95 } 101 }
96} 102}
diff --git a/client/src/app/shared/video-import/video-import.service.ts b/client/src/app/shared/video-import/video-import.service.ts
index 2163eb905..7ae13154d 100644
--- a/client/src/app/shared/video-import/video-import.service.ts
+++ b/client/src/app/shared/video-import/video-import.service.ts
@@ -67,6 +67,7 @@ export class VideoImportService {
67 const description = video.description || null 67 const description = video.description || null
68 const support = video.support || null 68 const support = video.support || null
69 const scheduleUpdate = video.scheduleUpdate || null 69 const scheduleUpdate = video.scheduleUpdate || null
70 const originallyPublishedAt = video.originallyPublishedAt || null
70 71
71 return { 72 return {
72 name: video.name, 73 name: video.name,
@@ -84,7 +85,8 @@ export class VideoImportService {
84 downloadEnabled: video.downloadEnabled, 85 downloadEnabled: video.downloadEnabled,
85 thumbnailfile: video.thumbnailfile, 86 thumbnailfile: video.thumbnailfile,
86 previewfile: video.previewfile, 87 previewfile: video.previewfile,
87 scheduleUpdate 88 scheduleUpdate,
89 originallyPublishedAt
88 } 90 }
89 } 91 }
90 92
diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts
index 18c62a1f9..c5d5bb406 100644
--- a/client/src/app/shared/video/video-edit.model.ts
+++ b/client/src/app/shared/video/video-edit.model.ts
@@ -26,6 +26,7 @@ export class VideoEdit implements VideoUpdate {
26 uuid?: string 26 uuid?: string
27 id?: number 27 id?: number
28 scheduleUpdate?: VideoScheduleUpdate 28 scheduleUpdate?: VideoScheduleUpdate
29 originallyPublishedAt?: Date | string
29 30
30 constructor ( 31 constructor (
31 video?: Video & { 32 video?: Video & {
@@ -56,6 +57,7 @@ export class VideoEdit implements VideoUpdate {
56 this.previewUrl = video.previewUrl 57 this.previewUrl = video.previewUrl
57 58
58 this.scheduleUpdate = video.scheduledUpdate 59 this.scheduleUpdate = video.scheduledUpdate
60 this.originallyPublishedAt = new Date(video.originallyPublishedAt)
59 } 61 }
60 } 62 }
61 63
@@ -77,6 +79,12 @@ export class VideoEdit implements VideoUpdate {
77 } else { 79 } else {
78 this.scheduleUpdate = null 80 this.scheduleUpdate = null
79 } 81 }
82
83 // Convert originallyPublishedAt to string so that function objectToFormData() works correctly
84 if (this.originallyPublishedAt) {
85 const originallyPublishedAt = new Date(values['originallyPublishedAt'])
86 this.originallyPublishedAt = originallyPublishedAt.toISOString()
87 }
80 } 88 }
81 89
82 toFormPatch () { 90 toFormPatch () {
@@ -93,7 +101,8 @@ export class VideoEdit implements VideoUpdate {
93 downloadEnabled: this.downloadEnabled, 101 downloadEnabled: this.downloadEnabled,
94 waitTranscoding: this.waitTranscoding, 102 waitTranscoding: this.waitTranscoding,
95 channelId: this.channelId, 103 channelId: this.channelId,
96 privacy: this.privacy 104 privacy: this.privacy,
105 originallyPublishedAt: this.originallyPublishedAt
97 } 106 }
98 107
99 // Special case if we scheduled an update 108 // Special case if we scheduled an update
diff --git a/client/src/app/shared/video/video.model.ts b/client/src/app/shared/video/video.model.ts
index 6ea83d13b..460c09258 100644
--- a/client/src/app/shared/video/video.model.ts
+++ b/client/src/app/shared/video/video.model.ts
@@ -17,6 +17,7 @@ export class Video implements VideoServerModel {
17 createdAt: Date 17 createdAt: Date
18 updatedAt: Date 18 updatedAt: Date
19 publishedAt: Date 19 publishedAt: Date
20 originallyPublishedAt: Date | string
20 category: VideoConstant<number> 21 category: VideoConstant<number>
21 licence: VideoConstant<number> 22 licence: VideoConstant<number>
22 language: VideoConstant<string> 23 language: VideoConstant<string>
@@ -116,6 +117,9 @@ export class Video implements VideoServerModel {
116 this.privacy.label = peertubeTranslate(this.privacy.label, translations) 117 this.privacy.label = peertubeTranslate(this.privacy.label, translations)
117 118
118 this.scheduledUpdate = hash.scheduledUpdate 119 this.scheduledUpdate = hash.scheduledUpdate
120 this.originallyPublishedAt = hash.originallyPublishedAt ?
121 new Date(hash.originallyPublishedAt.toString())
122 : null
119 if (this.state) this.state.label = peertubeTranslate(this.state.label, translations) 123 if (this.state) this.state.label = peertubeTranslate(this.state.label, translations)
120 124
121 this.blacklisted = hash.blacklisted 125 this.blacklisted = hash.blacklisted
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts
index 565aad93b..960846e21 100644
--- a/client/src/app/shared/video/video.service.ts
+++ b/client/src/app/shared/video/video.service.ts
@@ -81,6 +81,7 @@ export class VideoService implements VideosProvider {
81 const description = video.description || null 81 const description = video.description || null
82 const support = video.support || null 82 const support = video.support || null
83 const scheduleUpdate = video.scheduleUpdate || null 83 const scheduleUpdate = video.scheduleUpdate || null
84 const originallyPublishedAt = video.originallyPublishedAt || null
84 85
85 const body: VideoUpdate = { 86 const body: VideoUpdate = {
86 name: video.name, 87 name: video.name,
@@ -98,7 +99,8 @@ export class VideoService implements VideosProvider {
98 downloadEnabled: video.downloadEnabled, 99 downloadEnabled: video.downloadEnabled,
99 thumbnailfile: video.thumbnailfile, 100 thumbnailfile: video.thumbnailfile,
100 previewfile: video.previewfile, 101 previewfile: video.previewfile,
101 scheduleUpdate 102 scheduleUpdate,
103 originallyPublishedAt
102 } 104 }
103 105
104 const data = objectToFormData(body) 106 const data = objectToFormData(body)
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.html b/client/src/app/videos/+video-edit/shared/video-edit.component.html
index 59ba15b53..2fb540170 100644
--- a/client/src/app/videos/+video-edit/shared/video-edit.component.html
+++ b/client/src/app/videos/+video-edit/shared/video-edit.component.html
@@ -114,6 +114,20 @@
114 </div> 114 </div>
115 </div> 115 </div>
116 116
117 <div class="form-group">
118 <label i18n for="originallyPublishedAt">Original publication date</label>
119 <my-help i18n-preHtml preHtml="This is the date when the content was originally published (e.g. the release date for a film)"></my-help>
120 <p-calendar
121 id="originallyPublishedAt" formControlName="originallyPublishedAt" [dateFormat]="calendarDateFormat"
122 [locale]="calendarLocale" [showTime]="true" [hideOnDateTimeSelect]="true" [monthNavigator]="true" [yearNavigator]="true" [yearRange]="myYearRange"
123 >
124 </p-calendar>
125
126 <div *ngIf="formErrors.originallyPublishedAt" class="form-error">
127 {{ formErrors.originallyPublishedAt }}
128 </div>
129 </div>
130
117 <my-peertube-checkbox 131 <my-peertube-checkbox
118 inputName="nsfw" formControlName="nsfw" 132 inputName="nsfw" formControlName="nsfw"
119 i18n-labelText labelText="This video contains mature or explicit content" 133 i18n-labelText labelText="This video contains mature or explicit content"
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.ts b/client/src/app/videos/+video-edit/shared/video-edit.component.ts
index 3ed7a4a10..836452948 100644
--- a/client/src/app/videos/+video-edit/shared/video-edit.component.ts
+++ b/client/src/app/videos/+video-edit/shared/video-edit.component.ts
@@ -45,6 +45,7 @@ export class VideoEditComponent implements OnInit, OnDestroy {
45 45
46 calendarLocale: any = {} 46 calendarLocale: any = {}
47 minScheduledDate = new Date() 47 minScheduledDate = new Date()
48 myYearRange = '1880:' + (new Date()).getFullYear()
48 49
49 calendarTimezone: string 50 calendarTimezone: string
50 calendarDateFormat: string 51 calendarDateFormat: string
@@ -101,7 +102,8 @@ export class VideoEditComponent implements OnInit, OnDestroy {
101 thumbnailfile: null, 102 thumbnailfile: null,
102 previewfile: null, 103 previewfile: null,
103 support: this.videoValidatorsService.VIDEO_SUPPORT, 104 support: this.videoValidatorsService.VIDEO_SUPPORT,
104 schedulePublicationAt: this.videoValidatorsService.VIDEO_SCHEDULE_PUBLICATION_AT 105 schedulePublicationAt: this.videoValidatorsService.VIDEO_SCHEDULE_PUBLICATION_AT,
106 originallyPublishedAt: this.videoValidatorsService.VIDEO_ORIGINALLY_PUBLISHED_AT
105 } 107 }
106 108
107 this.formValidatorService.updateForm( 109 this.formValidatorService.updateForm(
diff --git a/client/src/app/videos/+video-watch/video-watch.component.html b/client/src/app/videos/+video-watch/video-watch.component.html
index 1875230d8..6e18ab6a6 100644
--- a/client/src/app/videos/+video-watch/video-watch.component.html
+++ b/client/src/app/videos/+video-watch/video-watch.component.html
@@ -33,7 +33,6 @@
33 <div> 33 <div>
34 <div class="d-block d-sm-none"> <!-- only shown on small devices, has its conterpart for larger viewports below --> 34 <div class="d-block d-sm-none"> <!-- only shown on small devices, has its conterpart for larger viewports below -->
35 <h1 class="video-info-name">{{ video.name }}</h1> 35 <h1 class="video-info-name">{{ video.name }}</h1>
36
37 <div i18n class="video-info-date-views"> 36 <div i18n class="video-info-date-views">
38 Published {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views 37 Published {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views
39 </div> 38 </div>
@@ -162,6 +161,11 @@
162 <span class="video-attribute-value">{{ video.privacy.label }}</span> 161 <span class="video-attribute-value">{{ video.privacy.label }}</span>
163 </div> 162 </div>
164 163
164 <div *ngIf="!!video.originallyPublishedAt" class="video-attribute">
165 <span i18n class="video-attribute-label">Originally published</span>
166 <span class="video-attribute-value">{{ video.originallyPublishedAt | date: 'dd MMMM yyyy' }}</span>
167 </div>
168
165 <div class="video-attribute"> 169 <div class="video-attribute">
166 <span i18n class="video-attribute-label">Category</span> 170 <span i18n class="video-attribute-label">Category</span>
167 <span *ngIf="!video.category.id" class="video-attribute-value">{{ video.category.label }}</span> 171 <span *ngIf="!video.category.id" class="video-attribute-value">{{ video.category.label }}</span>
diff --git a/client/src/app/videos/+video-watch/video-watch.component.scss b/client/src/app/videos/+video-watch/video-watch.component.scss
index b03ed197d..cfe3533b6 100644
--- a/client/src/app/videos/+video-watch/video-watch.component.scss
+++ b/client/src/app/videos/+video-watch/video-watch.component.scss
@@ -286,7 +286,7 @@ $other-videos-width: 260px;
286 margin-bottom: 12px; 286 margin-bottom: 12px;
287 287
288 .video-attribute-label { 288 .video-attribute-label {
289 min-width: 91px; 289 min-width: 142px;
290 padding-right: 5px; 290 padding-right: 5px;
291 display: inline-block; 291 display: inline-block;
292 color: $grey-foreground-color; 292 color: $grey-foreground-color;