mirror of https://github.com/Chocobozzz/PeerTube
Add short description in config
parent
44a9a76e29
commit
2e3a0215d0
|
@ -15,6 +15,17 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="instanceShortDescription">Short description</label>
|
||||
<textarea
|
||||
id="instanceShortDescription" formControlName="instanceShortDescription"
|
||||
[ngClass]="{ 'input-error': formErrors['instanceShortDescription'] }"
|
||||
></textarea>
|
||||
<div *ngIf="formErrors.instanceShortDescription" class="form-error">
|
||||
{{ formErrors.instanceShortDescription }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help>
|
||||
<my-markdown-textarea
|
||||
|
|
|
@ -34,4 +34,8 @@ textarea {
|
|||
@include peertube-textarea(500px, 150px);
|
||||
|
||||
display: block;
|
||||
|
||||
&#instanceShortDescription {
|
||||
height: 100px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import { FormReactive, USER_VIDEO_QUOTA } from '@app/shared'
|
|||
import {
|
||||
ADMIN_EMAIL,
|
||||
CACHE_PREVIEWS_SIZE,
|
||||
INSTANCE_NAME,
|
||||
INSTANCE_NAME, INSTANCE_SHORT_DESCRIPTION,
|
||||
SIGNUP_LIMIT,
|
||||
TRANSCODING_THREADS
|
||||
} from '@app/shared/forms/form-validators/custom-config'
|
||||
|
@ -44,6 +44,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
|||
form: FormGroup
|
||||
formErrors = {
|
||||
instanceName: '',
|
||||
instanceShortDescription: '',
|
||||
instanceDescription: '',
|
||||
instanceTerms: '',
|
||||
instanceDefaultClientRoute: '',
|
||||
|
@ -56,6 +57,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
|||
customizationCSS: ''
|
||||
}
|
||||
validationMessages = {
|
||||
instanceShortDescription: INSTANCE_SHORT_DESCRIPTION.MESSAGES,
|
||||
instanceName: INSTANCE_NAME.MESSAGES,
|
||||
cachePreviewsSize: CACHE_PREVIEWS_SIZE.MESSAGES,
|
||||
signupLimit: SIGNUP_LIMIT.MESSAGES,
|
||||
|
@ -84,6 +86,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
|||
buildForm () {
|
||||
const formGroupData = {
|
||||
instanceName: [ '', INSTANCE_NAME.VALIDATORS ],
|
||||
instanceShortDescription: [ '', INSTANCE_SHORT_DESCRIPTION.VALIDATORS ],
|
||||
instanceDescription: [ '' ],
|
||||
instanceTerms: [ '' ],
|
||||
instanceDefaultClientRoute: [ '' ],
|
||||
|
@ -158,6 +161,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
|||
const data: CustomConfig = {
|
||||
instance: {
|
||||
name: this.form.value['instanceName'],
|
||||
shortDescription: this.form.value['instanceShortDescription'],
|
||||
description: this.form.value['instanceDescription'],
|
||||
terms: this.form.value['instanceTerms'],
|
||||
defaultClientRoute: this.form.value['instanceDefaultClientRoute'],
|
||||
|
@ -214,6 +218,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
|||
private updateForm () {
|
||||
const data = {
|
||||
instanceName: this.customConfig.instance.name,
|
||||
instanceShortDescription: this.customConfig.instance.shortDescription,
|
||||
instanceDescription: this.customConfig.instance.description,
|
||||
instanceTerms: this.customConfig.instance.terms,
|
||||
instanceDefaultClientRoute: this.customConfig.instance.defaultClientRoute,
|
||||
|
|
|
@ -21,6 +21,7 @@ export class ServerService {
|
|||
private config: ServerConfig = {
|
||||
instance: {
|
||||
name: 'PeerTube',
|
||||
shortDescription: '',
|
||||
defaultClientRoute: '',
|
||||
customizations: {
|
||||
javascript: '',
|
||||
|
|
|
@ -7,6 +7,13 @@ export const INSTANCE_NAME = {
|
|||
}
|
||||
}
|
||||
|
||||
export const INSTANCE_SHORT_DESCRIPTION = {
|
||||
VALIDATORS: [ Validators.max(250) ],
|
||||
MESSAGES: {
|
||||
'max': 'Short description should not be longer than 250 characters.'
|
||||
}
|
||||
}
|
||||
|
||||
export const CACHE_PREVIEWS_SIZE = {
|
||||
VALIDATORS: [ Validators.required, Validators.min(1), Validators.pattern('[0-9]+') ],
|
||||
MESSAGES: {
|
||||
|
|
|
@ -72,6 +72,7 @@ transcoding:
|
|||
|
||||
instance:
|
||||
name: 'PeerTube'
|
||||
short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.'
|
||||
description: 'Welcome to this PeerTube instance!' # Support markdown
|
||||
terms: 'No terms for now.' # Support markdown
|
||||
default_client_route: '/videos/trending'
|
||||
|
|
|
@ -85,6 +85,7 @@ transcoding:
|
|||
|
||||
instance:
|
||||
name: 'PeerTube'
|
||||
short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.'
|
||||
description: '' # Support markdown
|
||||
terms: '' # Support markdown
|
||||
default_client_route: '/videos/trending'
|
||||
|
|
|
@ -44,6 +44,7 @@ async function getConfig (req: express.Request, res: express.Response, next: exp
|
|||
const json: ServerConfig = {
|
||||
instance: {
|
||||
name: CONFIG.INSTANCE.NAME,
|
||||
shortDescription: CONFIG.INSTANCE.SHORT_DESCRIPTION,
|
||||
defaultClientRoute: CONFIG.INSTANCE.DEFAULT_CLIENT_ROUTE,
|
||||
customizations: {
|
||||
javascript: CONFIG.INSTANCE.CUSTOMIZATIONS.JAVASCRIPT,
|
||||
|
@ -85,6 +86,7 @@ function getAbout (req: express.Request, res: express.Response, next: express.Ne
|
|||
const about: About = {
|
||||
instance: {
|
||||
name: CONFIG.INSTANCE.NAME,
|
||||
shortDescription: CONFIG.INSTANCE.SHORT_DESCRIPTION,
|
||||
description: CONFIG.INSTANCE.DESCRIPTION,
|
||||
terms: CONFIG.INSTANCE.TERMS
|
||||
}
|
||||
|
@ -116,8 +118,10 @@ async function updateCustomConfig (req: express.Request, res: express.Response,
|
|||
const toUpdateJSON = omit(toUpdate, 'videoQuota')
|
||||
toUpdateJSON.user['video_quota'] = toUpdate.user.videoQuota
|
||||
toUpdateJSON.instance['default_client_route'] = toUpdate.instance.defaultClientRoute
|
||||
toUpdateJSON.instance['short_description'] = toUpdate.instance.shortDescription
|
||||
delete toUpdate.user.videoQuota
|
||||
delete toUpdate.instance.defaultClientRoute
|
||||
delete toUpdate.instance.shortDescription
|
||||
|
||||
await writeFilePromise(CONFIG.CUSTOM_FILE, JSON.stringify(toUpdateJSON, undefined, 2))
|
||||
|
||||
|
@ -139,6 +143,7 @@ function customConfig (): CustomConfig {
|
|||
return {
|
||||
instance: {
|
||||
name: CONFIG.INSTANCE.NAME,
|
||||
shortDescription: CONFIG.INSTANCE.SHORT_DESCRIPTION,
|
||||
description: CONFIG.INSTANCE.DESCRIPTION,
|
||||
terms: CONFIG.INSTANCE.TERMS,
|
||||
defaultClientRoute: CONFIG.INSTANCE.DEFAULT_CLIENT_ROUTE,
|
||||
|
|
|
@ -157,6 +157,7 @@ const CONFIG = {
|
|||
},
|
||||
INSTANCE: {
|
||||
get NAME () { return config.get<string>('instance.name') },
|
||||
get SHORT_DESCRIPTION () { return config.get<string>('instance.short_description') },
|
||||
get DESCRIPTION () { return config.get<string>('instance.description') },
|
||||
get TERMS () { return config.get<string>('instance.terms') },
|
||||
get DEFAULT_CLIENT_ROUTE () { return config.get<string>('instance.default_client_route') },
|
||||
|
|
|
@ -39,7 +39,7 @@ async function processActivityPubHttpBroadcast (job: kue.Job) {
|
|||
}
|
||||
}
|
||||
|
||||
return ActorFollowModel.updateActorFollowsScoreAndRemoveBadOnes(goodUrls, badUrls, undefined)
|
||||
return ActorFollowModel.updateActorFollowsScore(goodUrls, badUrls, undefined)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
@ -28,9 +28,9 @@ async function processActivityPubHttpUnicast (job: kue.Job) {
|
|||
|
||||
try {
|
||||
await doRequest(options)
|
||||
ActorFollowModel.updateActorFollowsScoreAndRemoveBadOnes([ uri ], [], undefined)
|
||||
ActorFollowModel.updateActorFollowsScore([ uri ], [], undefined)
|
||||
} catch (err) {
|
||||
ActorFollowModel.updateActorFollowsScoreAndRemoveBadOnes([], [ uri ], undefined)
|
||||
ActorFollowModel.updateActorFollowsScore([], [ uri ], undefined)
|
||||
|
||||
throw err
|
||||
}
|
||||
|
|
|
@ -111,7 +111,7 @@ export class ActorFollowModel extends Model<ActorFollowModel> {
|
|||
if (numberOfActorFollowsRemoved) logger.info('Removed bad %d actor follows.', numberOfActorFollowsRemoved)
|
||||
}
|
||||
|
||||
static updateActorFollowsScoreAndRemoveBadOnes (goodInboxes: string[], badInboxes: string[], t: Sequelize.Transaction) {
|
||||
static updateActorFollowsScore (goodInboxes: string[], badInboxes: string[], t: Sequelize.Transaction) {
|
||||
if (goodInboxes.length === 0 && badInboxes.length === 0) return
|
||||
|
||||
logger.info('Updating %d good actor follows and %d bad actor follows scores.', goodInboxes.length, badInboxes.length)
|
||||
|
|
|
@ -16,6 +16,7 @@ describe('Test config API validators', function () {
|
|||
const updateParams: CustomConfig = {
|
||||
instance: {
|
||||
name: 'PeerTube updated',
|
||||
shortDescription: 'my short description',
|
||||
description: 'my super description',
|
||||
terms: 'my super terms',
|
||||
defaultClientRoute: '/videos/recently-added',
|
||||
|
|
|
@ -52,6 +52,10 @@ describe('Test config', function () {
|
|||
const data = res.body as CustomConfig
|
||||
|
||||
expect(data.instance.name).to.equal('PeerTube')
|
||||
expect(data.instance.shortDescription).to.equal(
|
||||
'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser ' +
|
||||
'with WebTorrent and Angular.'
|
||||
)
|
||||
expect(data.instance.description).to.equal('Welcome to this PeerTube instance!')
|
||||
expect(data.instance.terms).to.equal('No terms for now.')
|
||||
expect(data.instance.defaultClientRoute).to.equal('/videos/trending')
|
||||
|
@ -75,6 +79,7 @@ describe('Test config', function () {
|
|||
const newCustomConfig = {
|
||||
instance: {
|
||||
name: 'PeerTube updated',
|
||||
shortDescription: 'my short description',
|
||||
description: 'my super description',
|
||||
terms: 'my super terms',
|
||||
defaultClientRoute: '/videos/recently-added',
|
||||
|
@ -116,6 +121,7 @@ describe('Test config', function () {
|
|||
const data = res.body
|
||||
|
||||
expect(data.instance.name).to.equal('PeerTube updated')
|
||||
expect(data.instance.shortDescription).to.equal('my short description')
|
||||
expect(data.instance.description).to.equal('my super description')
|
||||
expect(data.instance.terms).to.equal('my super terms')
|
||||
expect(data.instance.defaultClientRoute).to.equal('/videos/recently-added')
|
||||
|
@ -146,6 +152,7 @@ describe('Test config', function () {
|
|||
const data = res.body
|
||||
|
||||
expect(data.instance.name).to.equal('PeerTube updated')
|
||||
expect(data.instance.shortDescription).to.equal('my short description')
|
||||
expect(data.instance.description).to.equal('my super description')
|
||||
expect(data.instance.terms).to.equal('my super terms')
|
||||
expect(data.instance.defaultClientRoute).to.equal('/videos/recently-added')
|
||||
|
@ -170,6 +177,7 @@ describe('Test config', function () {
|
|||
const data: About = res.body
|
||||
|
||||
expect(data.instance.name).to.equal('PeerTube updated')
|
||||
expect(data.instance.shortDescription).to.equal('my short description')
|
||||
expect(data.instance.description).to.equal('my super description')
|
||||
expect(data.instance.terms).to.equal('my super terms')
|
||||
})
|
||||
|
@ -183,6 +191,10 @@ describe('Test config', function () {
|
|||
const data = res.body
|
||||
|
||||
expect(data.instance.name).to.equal('PeerTube')
|
||||
expect(data.instance.shortDescription).to.equal(
|
||||
'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser ' +
|
||||
'with WebTorrent and Angular.'
|
||||
)
|
||||
expect(data.instance.description).to.equal('Welcome to this PeerTube instance!')
|
||||
expect(data.instance.terms).to.equal('No terms for now.')
|
||||
expect(data.instance.defaultClientRoute).to.equal('/videos/trending')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
export interface About {
|
||||
instance: {
|
||||
name: string
|
||||
shortDescription: string
|
||||
description: string
|
||||
terms: string
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
export interface CustomConfig {
|
||||
instance: {
|
||||
name: string
|
||||
shortDescription: string
|
||||
description: string
|
||||
terms: string
|
||||
defaultClientRoute: string
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
export interface Customization {
|
||||
instance: {
|
||||
customization: {
|
||||
javascript: string
|
||||
css: string
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ export interface ServerConfig {
|
|||
|
||||
instance: {
|
||||
name: string
|
||||
shortDescription: string
|
||||
defaultClientRoute: string
|
||||
customizations: {
|
||||
javascript: string
|
||||
|
|
|
@ -152,6 +152,8 @@ logs. You can set another password with:
|
|||
$ cd /var/www/peertube/peertube-latest && NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root
|
||||
```
|
||||
|
||||
Now you can subscribe to the mailing list for PeerTube administrators: https://framalistes.org/sympa/subscribe/peertube-admin
|
||||
|
||||
## Upgrade
|
||||
|
||||
#### Auto (minor versions only)
|
||||
|
|
Loading…
Reference in New Issue