- <div class="form-group">
- <label i18n for="adminEmail">Admin email</label>
- <input
- type="text" id="adminEmail"
- formControlName="adminEmail" [ngClass]="{ 'input-error': formErrors['adminEmail'] }"
- >
- <div *ngIf="formErrors.adminEmail" class="form-error">
- {{ formErrors.adminEmail }}
- </div>
- </div>
-
- <div i18n class="inner-form-title">Users</div>
-
- <div class="form-group">
- <label i18n for="userVideoQuota">User default video quota</label>
- <div class="peertube-select-container">
- <select id="userVideoQuota" formControlName="userVideoQuota">
- <option *ngFor="let videoQuotaOption of videoQuotaOptions" [value]="videoQuotaOption.value">
- {{ videoQuotaOption.label }}
- </option>
- </select>
- </div>
- <div *ngIf="formErrors.userVideoQuota" class="form-error">
- {{ formErrors.userVideoQuota }}
- </div>
- </div>
- </tab>
-
- <tab i18n-heading heading="Services">
-
- <div i18n class="inner-form-title">Twitter</div>
-
- <div class="form-group">
- <label i18n for="signupLimit">Your Twitter username</label>
- <my-help
- helpType="custom" i18n-customHtml
- customHtml="Indicates the Twitter account for the website or platform on which the content was published."
- ></my-help>
- <input
- type="text" id="servicesTwitterUsername"
- formControlName="servicesTwitterUsername" [ngClass]="{ 'input-error': formErrors['servicesTwitterUsername'] }"
- >
- <div *ngIf="formErrors.servicesTwitterUsername" class="form-error">
- {{ formErrors.servicesTwitterUsername }}
- </div>
- </div>
+ <div class="form-group">
+ <label i18n for="instanceCategories">Main instance categories</label>
+
+ <div>
+ <p-multiSelect
+ inputId="instanceCategories" [options]="categoryItems" formControlName="categories" [showToggleAll]="false"
+ [defaultLabel]="getDefaultCategoryLabel()" [selectedItemsLabel]="getSelectedCategoryLabel()"
+ emptyFilterMessage="No results found" i18n-emptyFilterMessage
+ ></p-multiSelect>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceLanguages">Main languages you/your moderators speak</label>
+
+ <div>
+ <p-multiSelect
+ inputId="instanceLanguages" [options]="languageItems" formControlName="languages" [showToggleAll]="false"
+ [defaultLabel]="getDefaultLanguageLabel()" [selectedItemsLabel]="getSelectedLanguageLabel()"
+ emptyFilterMessage="No results found" i18n-emptyFilterMessage
+ ></p-multiSelect>
+ </div>
+ </div>
+
+ <div i18n class="inner-form-title">MODERATION & NSFW</div>
+
+ <div class="form-group">
+ <my-peertube-checkbox inputName="instanceIsNSFW" formControlName="isNSFW">
+ <ng-template ptTemplate="label">
+ <ng-container i18n>This instance is dedicated to sensitive or NSFW content</ng-container>
+ </ng-template>
+
+ <ng-template ptTemplate="help">
+ <ng-container i18n>
+ Enabling it will allow other administrators to know that you are mainly federating sensitive content.<br /><br />
+ Moreover, the NSFW checkbox on video upload will be automatically checked by default.
+ </ng-container>
+ </ng-template>
+ </my-peertube-checkbox>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceDefaultNSFWPolicy">Policy on videos containing sensitive content</label>
+
+ <my-help>
+ <ng-template ptTemplate="customHtml">
+ <ng-container i18n>
+ With <strong>Do not list</strong> or <strong>Blur thumbnails</strong>, a confirmation will be requested to watch the video.
+ </ng-container>
+ </ng-template>
+ </my-help>
+
+ <div class="peertube-select-container">
+ <select id="instanceDefaultNSFWPolicy" formControlName="defaultNSFWPolicy">
+ <option i18n value="do_not_list">Do not list</option>
+ <option i18n value="blur">Blur thumbnails</option>
+ <option i18n value="display">Display</option>
+ </select>
+ </div>
+ <div *ngIf="formErrors.instance.defaultNSFWPolicy" class="form-error">{{ formErrors.instance.defaultNSFWPolicy }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help>
+ <my-markdown-textarea
+ name="instanceTerms" formControlName="terms" textareaWidth="500px" [previewColumn]="true"
+ [ngClass]="{ 'input-error': formErrors['instance.terms'] }"
+ ></my-markdown-textarea>
+ <div *ngIf="formErrors.instance.terms" class="form-error">{{ formErrors.instance.terms }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceCodeOfConduct">Code of conduct</label><my-help helpType="markdownText"></my-help>
+ <my-markdown-textarea
+ name="instanceCodeOfConduct" formControlName="codeOfConduct" textareaWidth="500px" [previewColumn]="true"
+ [ngClass]="{ 'input-error': formErrors['instance.codeOfConduct'] }"
+ ></my-markdown-textarea>
+ <div *ngIf="formErrors.instance.codeOfConduct" class="form-error">{{ formErrors.instance.codeOfConduct }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceModerationInformation">Moderation information</label><my-help helpType="markdownText"></my-help>
+ <div i18n class="label-small-info">Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc</div>
+
+ <my-markdown-textarea
+ name="instanceModerationInformation" formControlName="moderationInformation" textareaWidth="500px" [previewColumn]="true"
+ [ngClass]="{ 'input-error': formErrors['instance.moderationInformation'] }"
+ ></my-markdown-textarea>
+ <div *ngIf="formErrors.instance.moderationInformation" class="form-error">{{ formErrors.instance.moderationInformation }}</div>
+ </div>
+
+ <div i18n class="inner-form-title">YOU AND YOUR INSTANCE</div>
+
+ <div class="form-group">
+ <label i18n for="instanceAdministrator">Who is behind the instance?</label>
+ <div i18n class="label-small-info">A single person? A non-profit? A company?</div>
+
+ <my-markdown-textarea
+ name="instanceAdministrator" formControlName="administrator" textareaWidth="500px" textareaHeight="75px" [previewColumn]="true"
+ [classes]="{ 'input-error': formErrors['instance.administrator'] }"
+ ></my-markdown-textarea>
+
+ <div *ngIf="formErrors.instance.administrator" class="form-error">{{ formErrors.instance.administrator }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceCreationReason">Why did you create this instance?</label>
+ <div i18n class="label-small-info">To share your personal videos? To open registrations and allow people to upload what they want?</div>
+
+ <textarea
+ id="instanceCreationReason" formControlName="creationReason" class="small"
+ [ngClass]="{ 'input-error': formErrors['instance.creationReason'] }"
+ ></textarea>
+ <div *ngIf="formErrors.instance.creationReason" class="form-error">{{ formErrors.instance.creationReason }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceMaintenanceLifetime">How long do you plan to maintain this instance?</label>
+ <div i18n class="label-small-info">It's important to know for users who want to register on your instance</div>
+
+ <textarea
+ id="instanceMaintenanceLifetime" formControlName="maintenanceLifetime" class="small"
+ [ngClass]="{ 'input-error': formErrors['instance.maintenanceLifetime'] }"
+ ></textarea>
+ <div *ngIf="formErrors.instance.maintenanceLifetime" class="form-error">{{ formErrors.instance.maintenanceLifetime }}</div>
+ </div>
+
+ <div class="form-group">
+ <label i18n for="instanceBusinessModel">How will you finance the PeerTube server?</label>
+ <div i18n class="label-small-info">With your own funds? With users donations? Advertising?</div>
+
+ <textarea
+ id="instanceBusinessModel" formControlName="businessModel" class="small"
+ [ngClass]="{ 'input-error': formErrors['instance.businessModel'] }"
+ ></textarea>
+ <div *ngIf="formErrors.instance.businessModel" class="form-error">{{ formErrors.instance.businessModel }}</div>
+ </div>
+
+ <div i18n class="inner-form-title">OTHER INFORMATION</div>
+
+ <div class="form-group">
+ <label i18n for="instanceHardwareInformation">What server/hardware does the instance run on?</label>
+ <div i18n class="label-small-info">2vCore 2GB RAM/or directly the link to the server you rent etc</div>
+
+ <my-markdown-textarea
+ name="instanceHardwareInformation" formControlName="hardwareInformation" textareaWidth="500px" textareaHeight="75px" [previewColumn]="true"
+ [classes]="{ 'input-error': formErrors['instance.hardwareInformation'] }"
+ ></my-markdown-textarea>
+
+ <div *ngIf="formErrors.instance.hardwareInformation" class="form-error">{{ formErrors.instance.hardwareInformation }}</div>
+ </div>
+
+ </ng-container>
+ </ng-template>
+ </ngb-tab>
+
+ <ngb-tab i18n-title title="Basic configuration">
+ <ng-template ngbTabContent>