-<div class="margin-content">
+<div>
- <div i18n class="title-page title-page-single">
- Create an account
+ <div class="margin-content signup-disabled" *ngIf="signupDisabled">
+ <div class="alert alert-warning" i18n>Signup is not enabled on this instance.</div>
</div>
- <my-signup-success *ngIf="signupDone" [message]="success"></my-signup-success>
- <div *ngIf="info" class="alert alert-info">{{ info }}</div>
+ <ng-container *ngIf="!signupDisabled">
+ <h1 class="title-page-v2">
+ <strong class="underline-orange">{{ instanceName }}</strong>
+ >
+ <my-signup-label [requiresApproval]="requiresApproval"></my-signup-label>
+ </h1>
+
+ <div class="register-content">
+ <my-custom-stepper linear>
+
+ <cdk-step i18n-label label="About" [editable]="!signupSuccess">
+ <my-signup-step-title mascotImageName="about">
+ <strong>
+ <my-signup-label [requiresApproval]="requiresApproval"></my-signup-label>
+ </strong>
+
+ <div i18n>on {{ instanceName }}</div>
+ </my-signup-step-title>
+
+ <my-register-step-about [requiresApproval]="requiresApproval" [videoUploadDisabled]="videoUploadDisabled"></my-register-step-about>
+
+ <div class="step-buttons">
+ <a i18n class="skip-step underline-orange" routerLink="/login">
+ <strong>I already have an account</strong>, I log in
+ </a>
+
+ <button cdkStepperNext>
+ <my-signup-label [requiresApproval]="requiresApproval"></my-signup-label>
+ </button>
+ </div>
+ </cdk-step>
+
+ <cdk-step [stepControl]="formStepTerms" i18n-label label="Terms" [editable]="!signupSuccess">
+ <my-signup-step-title mascotImageName="terms" i18n>
+ <strong>Terms</strong>
+ <div>of {{ instanceName }}</div>
+ </my-signup-step-title>
+
+ <my-instance-about-accordion
+ [displayInstanceName]="false"
+ (init)="onInstanceAboutAccordionInit($event)" [panels]="instanceInformationPanels"
+ pluginScope="signup" pluginHook="filter:signup.instance-about-plugin-panels.create.result"
+ ></my-instance-about-accordion>
+
+ <my-register-step-terms
+ [hasCodeOfConduct]="!!aboutHtml.codeOfConduct" [minimumAge]="minimumAge" [instanceName]="instanceName"
+ [requiresApproval]="requiresApproval"
+ (formBuilt)="onTermsFormBuilt($event)" (termsClick)="onTermsClick()" (codeOfConductClick)="onCodeOfConductClick()"
+ ></my-register-step-terms>
+
+ <div class="step-buttons">
+ <button cdkStepperPrevious>{{ defaultPreviousStepButtonLabel }}</button>
+ <button cdkStepperNext [disabled]="!formStepTerms || !formStepTerms.valid">{{ defaultNextStepButtonLabel }}</button>
+ </div>
+ </cdk-step>
+
+ <cdk-step [stepControl]="formStepUser" i18n-label label="My account" [editable]="!signupSuccess">
+ <my-signup-step-title mascotImageName="account" i18n>
+ <strong>Setup</strong>
+ <div>your account</div>
+ </my-signup-step-title>
- <div class="wrapper" [hidden]="signupDone">
- <div class="register-form">
- <my-custom-stepper linear *ngIf="!signupDone">
- <cdk-step [stepControl]="formStepUser" i18n-label label="User information">
<my-register-step-user
- [hasCodeOfConduct]="!!aboutHtml.codeOfConduct"
- (formBuilt)="onUserFormBuilt($event)" (termsClick)="onTermsClick()" (codeOfConductClick)="onCodeOfConductClick()"
- >
- </my-register-step-user>
+ (formBuilt)="onUserFormBuilt($event)"
+ [videoUploadDisabled]="videoUploadDisabled" [requiresEmailVerification]="requiresEmailVerification"
+ ></my-register-step-user>
- <button i18n cdkStepperNext [disabled]="!formStepUser || !formStepUser.valid">Next</button>
+ <div class="step-buttons">
+ <button cdkStepperPrevious>{{ defaultPreviousStepButtonLabel }}</button>
+ <button cdkStepperNext [disabled]="!formStepUser || !formStepUser.valid" (click)="videoUploadDisabled && signup()">{{ stepUserButtonLabel }}</button>
+ </div>
</cdk-step>
- <cdk-step [stepControl]="formStepChannel" i18n-label label="Channel information">
- <my-register-step-channel (formBuilt)="onChannelFormBuilt($event)" [username]="getUsername()"></my-register-step-channel>
+ <cdk-step *ngIf="!videoUploadDisabled" [optional]="true" [stepControl]="formStepChannel" i18n-label label="My channel" [editable]="!signupSuccess">
+ <my-signup-step-title mascotImageName="channel" i18n>
+ <div>Create</div>
+ <strong>your first channel</strong>
+ </my-signup-step-title>
+
+ <my-register-step-channel
+ (formBuilt)="onChannelFormBuilt($event)"
+ [videoQuota]="videoQuota" [instanceName]="instanceName" [username]="getUsername()"
+ ></my-register-step-channel>
+
+ <div class="step-buttons">
+ <button cdkStepperPrevious>{{ defaultPreviousStepButtonLabel }}</button>
- <button i18n cdkStepperNext (click)="signup()"
- [disabled]="!formStepChannel || !formStepChannel.valid || hasSameChannelAndAccountNames()"
- >
- Create my account
- </button>
+ <div class="skip-step">
+ <span class="underline-orange" role="button" (click)="skipChannelCreation()">
+ <strong i18n>I don't want to create a channel</strong>
+ </span>
+
+ <div class="skip-step-description" i18n>You will be able to create a channel later</div>
+ </div>
+
+ <button cdkStepperNext [disabled]="!formStepChannel || !formStepChannel.valid || hasSameChannelAndAccountNames()" (click)="signup()">
+ <my-signup-label [requiresApproval]="requiresApproval"></my-signup-label>
+ </button>
+ </div>
</cdk-step>
- <cdk-step i18n-label label="Done" editable="false">
- <div *ngIf="!signupDone && !error" class="done-loader">
+ <cdk-step #lastStep i18n-label label="Done!" [editable]="false">
+ <!-- Account creation can be a little bit long so display a loader -->
+ <div *ngIf="!requiresApproval && !signupSuccess && !signupError" class="done-loader">
<my-loader [loading]="true"></my-loader>
<div i18n>PeerTube is creating your account...</div>
</div>
- <div *ngIf="error" class="alert alert-danger">{{ error }}</div>
+ <div *ngIf="signupError" class="alert alert-danger">{{ signupError }}</div>
+
+ <my-signup-success-before-email
+ *ngIf="signupSuccess"
+ [requiresEmailVerification]="requiresEmailVerification" [requiresApproval]="requiresApproval" [instanceName]="instanceName"
+ ></my-signup-success-before-email>
+
+ <div *ngIf="signupError" class="steps-button">
+ <button cdkStepperPrevious>{{ defaultPreviousStepButtonLabel }}</button>
+ </div>
</cdk-step>
</my-custom-stepper>
</div>
-
- <div class="instance-information">
- <ngb-accordion [closeOthers]="true" #accordion="ngbAccordion">
- <ngb-panel id="instance-features" i18n-title title="Features found on this instance">
- <ng-template ngbPanelContent>
- <my-instance-features-table></my-instance-features-table>
- </ng-template>
- </ngb-panel>
-
- <ng-container *ngIf="about">
- <ngb-panel
- *ngIf="aboutHtml.administrator || about.instance.maintenanceLifetime || about.instance.businessModel"
- id="admin-sustainability" i18n-title title="Administrators & Sustainability"
- >
- <ng-template ngbPanelContent>
- <div class="block">
- <strong i18n>Who are we?</strong>
- <div [innerHTML]="aboutHtml.administrator"></div>
- </div>
-
- <div class="block">
- <strong i18n>How long do we plan to maintain this instance?</strong>
- <div [innerHTML]="about.instance.maintenanceLifetime"></div>
- </div>
-
- <div class="block">
- <strong i18n>How will we pay this instance?</strong>
- <div [innerHTML]="about.instance.businessModel"></div>
- </div>
- </ng-template>
- </ngb-panel>
-
- <ngb-panel *ngIf="aboutHtml.moderationInformation" id="moderation-information" i18n-title title="Moderation information">
- <ng-template ngbPanelContent>
- <div class="block" [innerHTML]="aboutHtml.moderationInformation"></div>
- </ng-template>
- </ngb-panel>
-
- <ngb-panel *ngIf="aboutHtml.codeOfConduct" id="code-of-conduct" i18n-title title="Code of conduct">
- <ng-template ngbPanelContent>
- <div class="block" [innerHTML]="aboutHtml.codeOfConduct"></div>
- </ng-template>
- </ngb-panel>
-
- <ngb-panel *ngIf="aboutHtml.terms" id="terms" i18n-title title="Terms">
- <ng-template ngbPanelContent>
- <div class="block" [innerHTML]="aboutHtml.terms"></div>
- </ng-template>
- </ngb-panel>
- </ng-container>
- </ngb-accordion>
- </div>
- </div>
+ </ng-container>
</div>