mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2026-09-03 20:53:09 -05:00
* give admins access to edit all channels
closes #4598
* test(channels): +admin update another users channel
* Fix tests
* fix(server): delete another users channel
Since the channel owner isn't necessary the auth user we need to check
the right account whether it's the last video or not.
* REMOVE_ANY_VIDEO_CHANNEL > MANAGE_ANY_VIDEO_CHANNEL
Merge REMOVE_ANY_VIDEO_CHANNEL and MANY_VIDEO_CHANNELS to
MANAGE_ANY_VIDEO_CHANNEL.
* user-right: moderator can't manage admins channel
* client: MyVideoChannelCreateComponent > VideoChannelCreateComponent
* client: MyVideoChannelEdit > VideoChannelEdit
* Revert "user-right: moderator can't manage admins channel"
This reverts commit 2c627c154e.
* server: clean dupl validator functionality
* fix ensureUserCanManageChannel usage
It's not async anymore.
* server: merge channel validator middleares
ensureAuthUserOwnsChannelValidator & ensureUserCanManageChannel gets
merged into one middleware.
* client(VideoChannelEdit): redirect to prev route
* fix(VideoChannels): handle anon users
* client: new routes for create/update channel
* Refactor channel validators
Co-authored-by: Chocobozzz <me@florianbigard.com>
96 lines
4.0 KiB
HTML
96 lines
4.0 KiB
HTML
<div *ngIf="error" class="alert alert-danger">{{ error }}</div>
|
|
|
|
<div class="margin-content">
|
|
<form role="form" (ngSubmit)="formValidated()" [formGroup]="form">
|
|
|
|
<div class="form-row"> <!-- channel grid -->
|
|
<div class="form-group col-12 col-lg-4 col-xl-3">
|
|
<div *ngIf="isCreation()" class="video-channel-title" i18n>NEW CHANNEL</div>
|
|
<div *ngIf="!isCreation() && videoChannel" class="video-channel-title" i18n>CHANNEL</div>
|
|
</div>
|
|
|
|
<div class="form-group col-12 col-lg-8 col-xl-9">
|
|
<h6 i18n>Banner image of the channel</h6>
|
|
|
|
<my-actor-banner-edit
|
|
*ngIf="videoChannel" [previewImage]="isCreation()"
|
|
[actor]="videoChannel" (bannerChange)="onBannerChange($event)" (bannerDelete)="onBannerDelete()"
|
|
></my-actor-banner-edit>
|
|
|
|
<my-actor-avatar-edit
|
|
*ngIf="videoChannel" [previewImage]="isCreation()"
|
|
[actor]="videoChannel" (avatarChange)="onAvatarChange($event)" (avatarDelete)="onAvatarDelete()"
|
|
[displayUsername]="!isCreation()" [displaySubscribers]="!isCreation()"
|
|
></my-actor-avatar-edit>
|
|
|
|
<div class="form-group" *ngIf="isCreation()">
|
|
<label i18n for="name">Name</label>
|
|
<div class="input-group">
|
|
<input
|
|
type="text" id="name" i18n-placeholder placeholder="Example: my_channel"
|
|
formControlName="name" [ngClass]="{ 'input-error': formErrors['name'] }" class="form-control"
|
|
>
|
|
<div class="input-group-append">
|
|
<span class="input-group-text">@{{ instanceHost }}</span>
|
|
</div>
|
|
</div>
|
|
<div *ngIf="formErrors['name']" class="form-error">
|
|
{{ formErrors['name'] }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label i18n for="display-name">Display name</label>
|
|
<input
|
|
type="text" id="display-name" class="form-control"
|
|
formControlName="display-name" [ngClass]="{ 'input-error': formErrors['display-name'] }"
|
|
>
|
|
<div *ngIf="formErrors['display-name']" class="form-error">
|
|
{{ formErrors['display-name'] }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label i18n for="description">Description</label>
|
|
<textarea
|
|
id="description" formControlName="description" class="form-control"
|
|
[ngClass]="{ 'input-error': formErrors['description'] }"
|
|
></textarea>
|
|
<div *ngIf="formErrors.description" class="form-error">
|
|
{{ formErrors.description }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="support">Support</label>
|
|
<my-help
|
|
helpType="markdownEnhanced" i18n-preHtml preHtml="Short text to tell people how they can support the channel (membership platform...).<br /><br />
|
|
When a video is uploaded in this channel, the video support field will be automatically filled by this text."
|
|
></my-help>
|
|
<my-markdown-textarea
|
|
id="support" formControlName="support" textareaMaxWidth="500px" markdownType="enhanced"
|
|
[classes]="{ 'input-error': formErrors['support'] }"
|
|
></my-markdown-textarea>
|
|
<div *ngIf="formErrors.support" class="form-error">
|
|
{{ formErrors.support }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" *ngIf="isBulkUpdateVideosDisplayed()">
|
|
<my-peertube-checkbox
|
|
inputName="bulkVideosSupportUpdate" formControlName="bulkVideosSupportUpdate"
|
|
i18n-labelText labelText="Overwrite support field of all videos of this channel"
|
|
></my-peertube-checkbox>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-row"> <!-- submit placement block -->
|
|
<div class="col-md-7 col-xl-5"></div>
|
|
<div class="col-md-5 col-xl-5 d-inline-flex">
|
|
<input type="submit" value="{{ getFormButtonTitle() }}" [disabled]="!form.valid">
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div> |