diff --git a/client/src/app/+admin/users/user-edit/user-add.component.ts b/client/src/app/+admin/users/user-edit/user-add.component.ts
index 5dc069104..6d8151b42 100644
--- a/client/src/app/+admin/users/user-edit/user-add.component.ts
+++ b/client/src/app/+admin/users/user-edit/user-add.component.ts
@@ -11,12 +11,14 @@ import {
USER_PASSWORD,
USER_VIDEO_QUOTA
} from '../../../shared'
+import { ServerService } from '../../../core'
import { UserCreate } from '../../../../../../shared'
import { UserEdit } from './user-edit'
@Component({
selector: 'my-user-add',
- templateUrl: './user-edit.component.html'
+ templateUrl: './user-edit.component.html',
+ styleUrls: [ './user-edit.component.scss' ]
})
export class UserAddComponent extends UserEdit implements OnInit {
error: string
@@ -36,6 +38,7 @@ export class UserAddComponent extends UserEdit implements OnInit {
}
constructor (
+ protected serverService: ServerService,
private formBuilder: FormBuilder,
private router: Router,
private notificationsService: NotificationsService,
diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.html b/client/src/app/+admin/users/user-edit/user-edit.component.html
index 0e23cb731..6988071ce 100644
--- a/client/src/app/+admin/users/user-edit/user-edit.component.html
+++ b/client/src/app/+admin/users/user-edit/user-edit.component.html
@@ -47,6 +47,11 @@
{{ videoQuotaOption.label }}
+
+
+ Transcoding is enabled on server. The video quota only take in account original video.
+ In maximum, this user could use ~ {{ computeQuotaWithTranscoding() | bytes }}.
+
diff --git a/client/src/app/+admin/users/user-edit/user-edit.component.scss b/client/src/app/+admin/users/user-edit/user-edit.component.scss
new file mode 100644
index 000000000..401caa0c6
--- /dev/null
+++ b/client/src/app/+admin/users/user-edit/user-edit.component.scss
@@ -0,0 +1,4 @@
+.transcoding-information {
+ margin-top: 5px;
+ font-size: 11px;
+}
diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts
index 657c0f1c0..76497c9b6 100644
--- a/client/src/app/+admin/users/user-edit/user-edit.ts
+++ b/client/src/app/+admin/users/user-edit/user-edit.ts
@@ -1,17 +1,39 @@
+import { ServerService } from '../../../core'
import { FormReactive } from '../../../shared'
+import { VideoResolution } from '../../../../../../shared/models/videos/video-resolution.enum'
export abstract class UserEdit extends FormReactive {
videoQuotaOptions = [
{ value: -1, label: 'Unlimited' },
{ value: 0, label: '0'},
{ value: 100 * 1024 * 1024, label: '100MB' },
- { value: 5 * 1024 * 1024, label: '500MB' },
+ { value: 500 * 1024 * 1024, label: '500MB' },
{ value: 1024 * 1024 * 1024, label: '1GB' },
{ value: 5 * 1024 * 1024 * 1024, label: '5GB' },
{ value: 20 * 1024 * 1024 * 1024, label: '20GB' },
{ value: 50 * 1024 * 1024 * 1024, label: '50GB' }
]
+ protected abstract serverService: ServerService
abstract isCreation (): boolean
abstract getFormButtonTitle (): string
+
+ isTranscodingInformationDisplayed () {
+ const formVideoQuota = parseInt(this.form.value['videoQuota'], 10)
+
+ return this.serverService.getConfig().transcoding.enabledResolutions.length !== 0 &&
+ formVideoQuota > 0
+ }
+
+ computeQuotaWithTranscoding () {
+ const resolutions = this.serverService.getConfig().transcoding.enabledResolutions
+ const higherResolution = VideoResolution.H_1080P
+ let multiplier = 0
+
+ for (const resolution of resolutions) {
+ multiplier += resolution / higherResolution
+ }
+
+ return multiplier * parseInt(this.form.value['videoQuota'], 10)
+ }
}
diff --git a/client/src/app/+admin/users/user-edit/user-update.component.ts b/client/src/app/+admin/users/user-edit/user-update.component.ts
index 0966981c0..bd901e655 100644
--- a/client/src/app/+admin/users/user-edit/user-update.component.ts
+++ b/client/src/app/+admin/users/user-edit/user-update.component.ts
@@ -7,13 +7,15 @@ import { NotificationsService } from 'angular2-notifications'
import { UserService } from '../shared'
import { USER_EMAIL, USER_VIDEO_QUOTA } from '../../../shared'
+import { ServerService } from '../../../core'
import { UserUpdate } from '../../../../../../shared/models/users/user-update.model'
import { User } from '../../../shared/users/user.model'
import { UserEdit } from './user-edit'
@Component({
selector: 'my-user-update',
- templateUrl: './user-edit.component.html'
+ templateUrl: './user-edit.component.html',
+ styleUrls: [ './user-edit.component.scss' ]
})
export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
error: string
@@ -33,10 +35,11 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
private paramsSub: Subscription
constructor (
- private formBuilder: FormBuilder,
+ protected serverService: ServerService,
private route: ActivatedRoute,
private router: Router,
private notificationsService: NotificationsService,
+ private formBuilder: FormBuilder,
private userService: UserService
) {
super()
diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts
index f24df5a89..ae507afce 100644
--- a/client/src/app/core/server/server.service.ts
+++ b/client/src/app/core/server/server.service.ts
@@ -11,6 +11,9 @@ export class ServerService {
private config: ServerConfig = {
signup: {
allowed: false
+ },
+ transcoding: {
+ enabledResolutions: []
}
}
private videoCategories: Array<{ id: number, label: string }> = []
diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts
index f02a2bc58..c9a051bdc 100644
--- a/server/controllers/api/config.ts
+++ b/server/controllers/api/config.ts
@@ -1,21 +1,29 @@
import * as express from 'express'
import { isSignupAllowed } from '../../helpers'
+import { CONFIG } from '../../initializers'
import { ServerConfig } from '../../../shared'
const configRouter = express.Router()
configRouter.get('/', getConfig)
-// Get the client credentials for the PeerTube front end
function getConfig (req: express.Request, res: express.Response, next: express.NextFunction) {
isSignupAllowed().then(allowed => {
+ const enabledResolutions = Object.keys(CONFIG.TRANSCODING.RESOLUTIONS)
+ .filter(key => CONFIG.TRANSCODING.RESOLUTIONS[key] === true)
+ .map(r => parseInt(r, 10))
+
const json: ServerConfig = {
signup: {
allowed
+ },
+ transcoding: {
+ enabledResolutions
}
}
+
res.json(json)
})
}
diff --git a/shared/models/server-config.model.ts b/shared/models/server-config.model.ts
index aab842905..8de808e60 100644
--- a/shared/models/server-config.model.ts
+++ b/shared/models/server-config.model.ts
@@ -2,4 +2,7 @@ export interface ServerConfig {
signup: {
allowed: boolean
}
+ transcoding: {
+ enabledResolutions: number[]
+ }
}