};
export const VIDEO_TAGS = {
- VALIDATORS: [ Validators.pattern('^[a-zA-Z0-9]{0,10}$') ],
+ VALIDATORS: [ Validators.maxLength(10) ],
MESSAGES: {
- 'pattern': 'A tag should be between 2 and 10 alphanumeric characters long.'
+ 'maxlength': 'A tag should be less than 10 characters long.'
}
};
checkForm() {
this.forceCheck();
- if (this.tags.length === 0) {
- this.tagsError = 'You have 0 tags';
- }
-
if (this.filename === null) {
this.fileError = 'You did not add a file.';
}
}
onTagKeyPress(event: KeyboardEvent) {
- const currentTag = this.form.value['currentTag'];
-
// Enter press
if (event.keyCode === 13) {
- // Check if the tag is valid and does not already exist
- if (
- currentTag.length >= 2 &&
- this.form.controls['currentTag'].valid &&
- this.tags.indexOf(currentTag) === -1
- ) {
- this.tags.push(currentTag);
- this.form.patchValue({ currentTag: '' });
-
- if (this.tags.length >= 3) {
- this.form.get('currentTag').disable();
- }
-
- this.tagsError = '';
- }
+ this.addTagIfPossible();
}
}
}
upload() {
+ // Maybe the user forgot to press "enter" when he filled the field
+ this.addTagIfPossible();
+
if (this.checkForm() === false) {
return;
}
this.uploader.uploadAll();
}
+
+ private addTagIfPossible() {
+ const currentTag = this.form.value['currentTag'];
+ if (currentTag === undefined) return;
+
+ // Check if the tag is valid and does not already exist
+ if (
+ currentTag.length >= 2 &&
+ this.form.controls['currentTag'].valid &&
+ this.tags.indexOf(currentTag) === -1
+ ) {
+ this.tags.push(currentTag);
+ this.form.patchValue({ currentTag: '' });
+
+ if (this.tags.length >= 3) {
+ this.form.get('currentTag').disable();
+ }
+
+ this.tagsError = '';
+ }
+ }
}
display: inline-block;
position: relative;
min-width: 220px;
+ height: 190px;
.video-miniature-thumbnail {
display: inline-block;
return miscValidators.isArray(tags) &&
validator.isInt(tags.length, VIDEOS_CONSTRAINTS_FIELDS.TAGS) &&
tags.every(function (tag) {
- return validator.isAlphanumeric(tag) &&
- validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG)
+ return validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG)
})
}
EXTNAME: [ '.mp4', '.ogv', '.webm' ],
INFO_HASH: { min: 40, max: 40 }, // Length, infohash is 20 bytes length but we represent it in hexa so 20 * 2
DURATION: { min: 1, max: 7200 }, // Number
- TAGS: { min: 1, max: 3 }, // Number of total tags
+ TAGS: { min: 0, max: 3 }, // Number of total tags
TAG: { min: 2, max: 10 }, // Length
THUMBNAIL: { min: 2, max: 30 },
THUMBNAIL_DATA: { min: 0, max: 20000 }, // Bytes
req.checkBody('name', 'Should have a valid name').isVideoNameValid()
req.checkBody('category', 'Should have a valid category').isVideoCategoryValid()
req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid()
- req.checkBody('tags', 'Should have correct tags').isVideoTagsValid()
+ req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
logger.debug('Checking videosAdd parameters', { parameters: req.body, files: req.files })
requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
})
- it('Should fail with malformed tags', function (done) {
- const data = {
- name: 'my super name',
- category: 5,
- description: 'my super description',
- tags: [ 'my tag' ]
- }
- const attach = {
- 'videofile': pathUtils.join(__dirname, '..', 'fixtures', 'video_short.webm')
- }
- requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
- })
-
it('Should fail without an input file', function (done) {
const data = {
name: 'my super name',