forked from CIT/Vmeda.Online
		
	Merge pull request #2433 from crazyserver/MOBILE-3463
MOBILE-3463 login: Add url and sitefinder options for multisite
This commit is contained in:
		
						commit
						7b6b71d6e1
					
				| @ -14,16 +14,22 @@ | |||||||
|         <div text-center padding margin-bottom [class.hidden]="hasSites || enteredSiteUrl" class="core-login-site-logo"> |         <div text-center padding margin-bottom [class.hidden]="hasSites || enteredSiteUrl" class="core-login-site-logo"> | ||||||
|             <img src="assets/img/login_logo.png" class="avatar-full login-logo" role="presentation"> |             <img src="assets/img/login_logo.png" class="avatar-full login-logo" role="presentation"> | ||||||
|         </div> |         </div> | ||||||
|         <form ion-list [formGroup]="siteForm" (ngSubmit)="connect($event, siteForm.value.siteUrl)" *ngIf="!fixedSites || fixedDisplay == 'select'" #siteFormEl> |         <form ion-list [formGroup]="siteForm" (ngSubmit)="connect($event, siteForm.value.siteUrl)" *ngIf="!fixedSites || siteSelector == 'select'" #siteFormEl> | ||||||
|             <!-- Form to input the site URL if there are no fixed sites. --> |             <!-- Form to input the site URL if there are no fixed sites. --> | ||||||
|             <ng-container *ngIf="!fixedSites"> |             <ng-container *ngIf="!fixedSites"> | ||||||
|  |                 <ng-container *ngIf="siteSelector == 'url'"> | ||||||
|  |                     <ion-item> | ||||||
|  |                         <ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label> | ||||||
|  |                         <ion-input name="url" type="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard"></ion-input> | ||||||
|  |                     </ion-item> | ||||||
|  |                 </ng-container> | ||||||
|  |                 <ng-container *ngIf="siteSelector != 'url'"> | ||||||
|                     <ion-item> |                     <ion-item> | ||||||
|                         <ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label> |                         <ion-label stacked><h2>{{ 'core.login.siteaddress' | translate }}</h2></ion-label> | ||||||
|                         <ion-input name="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard" (ionChange)="searchSite($event, siteForm.value.siteUrl)"></ion-input> |                         <ion-input name="url" placeholder="https://campus.example.edu" formControlName="siteUrl" [core-auto-focus]="showKeyboard" (ionChange)="searchSite($event, siteForm.value.siteUrl)"></ion-input> | ||||||
|                     </ion-item> |                     </ion-item> | ||||||
|             </ng-container> |  | ||||||
| 
 | 
 | ||||||
|             <ion-list *ngIf="!fixedSites" [class.hidden]="!hasSites && !enteredSiteUrl" class="core-login-site-list"> |                     <ion-list [class.hidden]="!hasSites && !enteredSiteUrl" class="core-login-site-list"> | ||||||
|                         <ion-item no-lines class="core-login-site-list-title"><h2 class="item-heading">{{ 'core.login.selectsite' | translate }}</h2></ion-item> |                         <ion-item no-lines class="core-login-site-list-title"><h2 class="item-heading">{{ 'core.login.selectsite' | translate }}</h2></ion-item> | ||||||
|                         <button ion-item *ngIf="enteredSiteUrl" (click)="connect($event, enteredSiteUrl.url)" [attr.aria-label]="'core.login.connect' | translate" detail-push class="core-login-entered-site"> |                         <button ion-item *ngIf="enteredSiteUrl" (click)="connect($event, enteredSiteUrl.url)" [attr.aria-label]="'core.login.connect' | translate" detail-push class="core-login-entered-site"> | ||||||
|                             <ion-thumbnail item-start> |                             <ion-thumbnail item-start> | ||||||
| @ -47,32 +53,38 @@ | |||||||
|                         </div> |                         </div> | ||||||
|                     </ion-list> |                     </ion-list> | ||||||
| 
 | 
 | ||||||
|             <div *ngIf="!fixedSites && !hasSites && loadingSites" class="core-login-site-nolist-loading"><ion-spinner></ion-spinner></div> |                     <div *ngIf="!hasSites && loadingSites" class="core-login-site-nolist-loading"><ion-spinner></ion-spinner></div> | ||||||
|  |                 </ng-container> | ||||||
|  |             </ng-container> | ||||||
| 
 | 
 | ||||||
|             <!-- Pick the site from a list of fixed sites. --> |             <!-- Pick the site from a list of fixed sites. --> | ||||||
|             <ion-item *ngIf="fixedSites && fixedDisplay == 'select'" margin-vertical text-wrap> |             <ion-item *ngIf="fixedSites && siteSelector == 'select'" margin-vertical text-wrap> | ||||||
|                 <ion-label stacked for="siteSelect">{{ 'core.login.selectsite' | translate }}</ion-label> |                 <ion-label stacked for="siteSelect">{{ 'core.login.selectsite' | translate }}</ion-label> | ||||||
|                 <ion-select formControlName="siteUrl" name="url" placeholder="{{ 'core.login.siteaddress' | translate }}" interface="action-sheet"> |                 <ion-select formControlName="siteUrl" name="url" placeholder="{{ 'core.login.siteaddress' | translate }}" interface="action-sheet"> | ||||||
|                     <ion-option *ngFor="let site of fixedSites" [value]="site.url">{{site.name}}</ion-option> |                     <ion-option *ngFor="let site of fixedSites" [value]="site.url">{{site.name}}</ion-option> | ||||||
|                 </ion-select> |                 </ion-select> | ||||||
|             </ion-item> |             </ion-item> | ||||||
|  | 
 | ||||||
|  |             <button *ngIf="(fixedSites && siteSelector == 'select') || (!fixedSites && siteSelector == 'url')" ion-button block [disabled]="!siteForm.valid">{{ 'core.login.connect' | translate }}</button> | ||||||
|         </form> |         </form> | ||||||
| 
 | 
 | ||||||
|  |         <ng-container *ngIf="fixedSites"> | ||||||
|             <!-- Pick the site from a list of fixed sites. --> |             <!-- Pick the site from a list of fixed sites. --> | ||||||
|         <ion-list *ngIf="fixedSites && (fixedDisplay == 'list' || fixedDisplay == 'listnourl')"> |             <ion-list *ngIf="siteSelector == 'list' || siteSelector == 'listnourl'"> | ||||||
|                 <ion-item no-lines><h2 class="item-heading">{{ 'core.login.selectsite' | translate }}</h2></ion-item> |                 <ion-item no-lines><h2 class="item-heading">{{ 'core.login.selectsite' | translate }}</h2></ion-item> | ||||||
|                 <ion-searchbar *ngIf="fixedSites.length > 4" [(ngModel)]="filter" (ionInput)="filterChanged($event)" (ionCancel)="filterChanged()" [placeholder]="'core.login.findyoursite' | translate"></ion-searchbar> |                 <ion-searchbar *ngIf="fixedSites.length > 4" [(ngModel)]="filter" (ionInput)="filterChanged($event)" (ionCancel)="filterChanged()" [placeholder]="'core.login.findyoursite' | translate"></ion-searchbar> | ||||||
|                 <ion-item *ngFor="let site of filteredSites" (click)="connect($event, site.url)" [title]="site.name" detail-push text-wrap> |                 <ion-item *ngFor="let site of filteredSites" (click)="connect($event, site.url)" [title]="site.name" detail-push text-wrap> | ||||||
|                     <h2>{{site.name}}</h2> |                     <h2>{{site.name}}</h2> | ||||||
|                 <p *ngIf="fixedDisplay == 'list'">{{site.url}}</p> |                     <p *ngIf="siteSelector == 'list'">{{site.url}}</p> | ||||||
|                 </ion-item> |                 </ion-item> | ||||||
|             </ion-list> |             </ion-list> | ||||||
| 
 | 
 | ||||||
|             <!-- Display them using buttons. --> |             <!-- Display them using buttons. --> | ||||||
|         <div *ngIf="fixedSites && fixedDisplay == 'buttons'"> |             <div *ngIf="siteSelector == 'buttons'"> | ||||||
|                 <p class="padding no-padding-bottom">{{ 'core.login.selectsite' | translate }}</p> |                 <p class="padding no-padding-bottom">{{ 'core.login.selectsite' | translate }}</p> | ||||||
|                 <a *ngFor="let site of fixedSites" ion-button block (click)="connect($event, site.url)" [title]="site.name" margin-bottom>{{site.name}}</a> |                 <a *ngFor="let site of fixedSites" ion-button block (click)="connect($event, site.url)" [title]="site.name" margin-bottom>{{site.name}}</a> | ||||||
|             </div> |             </div> | ||||||
|  |         </ng-container> | ||||||
| 
 | 
 | ||||||
|         <ng-container *ngIf="showScanQR && !hasSites && !enteredSiteUrl"> |         <ng-container *ngIf="showScanQR && !hasSites && !enteredSiteUrl"> | ||||||
|             <div class="core-login-site-qrcode-separator">{{ 'core.login.or' | translate }}</div> |             <div class="core-login-site-qrcode-separator">{{ 'core.login.or' | translate }}</div> | ||||||
|  | |||||||
| @ -53,7 +53,7 @@ export class CoreLoginSitePage { | |||||||
|     siteForm: FormGroup; |     siteForm: FormGroup; | ||||||
|     fixedSites: CoreLoginSiteInfo[]; |     fixedSites: CoreLoginSiteInfo[]; | ||||||
|     filteredSites: CoreLoginSiteInfo[]; |     filteredSites: CoreLoginSiteInfo[]; | ||||||
|     fixedDisplay = 'buttons'; |     siteSelector = 'sitefinder'; | ||||||
|     showKeyboard = false; |     showKeyboard = false; | ||||||
|     filter = ''; |     filter = ''; | ||||||
|     sites: CoreLoginSiteInfoExtended[] = []; |     sites: CoreLoginSiteInfoExtended[] = []; | ||||||
| @ -82,14 +82,14 @@ export class CoreLoginSitePage { | |||||||
|         this.showKeyboard = !!navParams.get('showKeyboard'); |         this.showKeyboard = !!navParams.get('showKeyboard'); | ||||||
| 
 | 
 | ||||||
|         let url = ''; |         let url = ''; | ||||||
|  |         this.siteSelector = CoreConfigConstants.multisitesdisplay; | ||||||
| 
 | 
 | ||||||
|         // Load fixed sites if they're set.
 |         // Load fixed sites if they're set.
 | ||||||
|         if (this.loginHelper.hasSeveralFixedSites()) { |         if (this.loginHelper.hasSeveralFixedSites()) { | ||||||
|             this.fixedSites = <any[]> this.loginHelper.getFixedSites(); |             this.fixedSites = <any[]> this.loginHelper.getFixedSites(); | ||||||
|             this.fixedDisplay = CoreConfigConstants.multisitesdisplay; |  | ||||||
|             // Autoselect if not defined.
 |             // Autoselect if not defined.
 | ||||||
|             if (['list', 'listnourl', 'select', 'buttons'].indexOf(this.fixedDisplay) < 0) { |             if (['list', 'listnourl', 'select', 'buttons'].indexOf(this.siteSelector) < 0) { | ||||||
|                 this.fixedDisplay = this.fixedSites.length > 8 ? 'list' : (this.fixedSites.length > 3 ? 'select' : 'buttons'); |                 this.siteSelector = this.fixedSites.length > 8 ? 'list' : (this.fixedSites.length > 3 ? 'select' : 'buttons'); | ||||||
|             } |             } | ||||||
|             this.filteredSites = this.fixedSites; |             this.filteredSites = this.fixedSites; | ||||||
|             url = this.fixedSites[0].url; |             url = this.fixedSites[0].url; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user