forked from CIT/Vmeda.Online
		
	MOBILE-3742 links: Support choose site when clicking links
This commit is contained in:
		
							parent
							
								
									82c00bae84
								
							
						
					
					
						commit
						0d5e543713
					
				@ -4,6 +4,11 @@
 | 
			
		||||
            <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
        <ion-title>{{ 'core.contentlinks.chooseaccount' | translate }}</ion-title>
 | 
			
		||||
        <ion-buttons slot="end">
 | 
			
		||||
            <ion-button (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
 | 
			
		||||
                <ion-icon slot="icon-only" name="fas-times" aria-hidden="true"></ion-icon>
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-buttons>
 | 
			
		||||
    </ion-toolbar>
 | 
			
		||||
</ion-header>
 | 
			
		||||
<ion-content>
 | 
			
		||||
@ -27,11 +32,6 @@
 | 
			
		||||
                    <p>{{site.siteUrl}}</p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ion-item>
 | 
			
		||||
                <ion-label>
 | 
			
		||||
                    <ion-button expand="block" (click)="cancel()">{{ 'core.login.cancel' | translate }}</ion-button>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
        </ion-list>
 | 
			
		||||
    </core-loading>
 | 
			
		||||
</ion-content>
 | 
			
		||||
@ -12,10 +12,10 @@
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
import { Component, OnInit } from '@angular/core';
 | 
			
		||||
import { Component, Input, OnInit } from '@angular/core';
 | 
			
		||||
import { CoreSiteBasicInfo, CoreSites } from '@services/sites';
 | 
			
		||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
			
		||||
import { Translate } from '@singletons';
 | 
			
		||||
import { ModalController, Translate } from '@singletons';
 | 
			
		||||
import { CoreContentLinksAction } from '../../services/contentlinks-delegate';
 | 
			
		||||
import { CoreContentLinksHelper } from '../../services/contentlinks-helper';
 | 
			
		||||
import { CoreError } from '@classes/errors/error';
 | 
			
		||||
@ -27,12 +27,13 @@ import { CoreNavigator } from '@services/navigator';
 | 
			
		||||
 * @todo Include routing and testing.
 | 
			
		||||
 */
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'page-core-content-links-choose-site',
 | 
			
		||||
    templateUrl: 'choose-site.html',
 | 
			
		||||
    selector: 'core-content-links-choose-site-modal',
 | 
			
		||||
    templateUrl: 'choose-site-modal.html',
 | 
			
		||||
})
 | 
			
		||||
export class CoreContentLinksChooseSitePage implements OnInit {
 | 
			
		||||
export class CoreContentLinksChooseSiteModalComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
    @Input() url!: string;
 | 
			
		||||
 | 
			
		||||
    url!: string;
 | 
			
		||||
    sites: CoreSiteBasicInfo[] = [];
 | 
			
		||||
    loaded = false;
 | 
			
		||||
    protected action?: CoreContentLinksAction;
 | 
			
		||||
@ -42,12 +43,10 @@ export class CoreContentLinksChooseSitePage implements OnInit {
 | 
			
		||||
     * Component being initialized.
 | 
			
		||||
     */
 | 
			
		||||
    async ngOnInit(): Promise<void> {
 | 
			
		||||
        const url = CoreNavigator.getRouteParam<string>('url');
 | 
			
		||||
        if (!url) {
 | 
			
		||||
            return this.leaveView();
 | 
			
		||||
        if (!this.url) {
 | 
			
		||||
            return this.closeModal();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.url = url;
 | 
			
		||||
        let siteIds: string[] | undefined = [];
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
@ -75,25 +74,20 @@ export class CoreContentLinksChooseSitePage implements OnInit {
 | 
			
		||||
            this.sites = await CoreSites.getSites(siteIds);
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            CoreDomUtils.showErrorModalDefault(error, 'core.contentlinks.errornosites', true);
 | 
			
		||||
            this.leaveView();
 | 
			
		||||
            this.closeModal();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.loaded = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Cancel.
 | 
			
		||||
     */
 | 
			
		||||
    cancel(): void {
 | 
			
		||||
        this.leaveView();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Perform the action on a certain site.
 | 
			
		||||
     *
 | 
			
		||||
     * @param siteId Site ID.
 | 
			
		||||
     */
 | 
			
		||||
    siteClicked(siteId: string): void {
 | 
			
		||||
    async siteClicked(siteId: string): Promise<void> {
 | 
			
		||||
        await ModalController.dismiss();
 | 
			
		||||
 | 
			
		||||
        if (this.isRootURL) {
 | 
			
		||||
            CoreNavigator.navigateToSiteHome({ siteId });
 | 
			
		||||
        } else if (this.action) {
 | 
			
		||||
@ -102,14 +96,10 @@ export class CoreContentLinksChooseSitePage implements OnInit {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Cancel and leave the view.
 | 
			
		||||
     * Close the modal.
 | 
			
		||||
     */
 | 
			
		||||
    protected async leaveView(): Promise<void> {
 | 
			
		||||
        try {
 | 
			
		||||
            await CoreSites.logout();
 | 
			
		||||
        } finally {
 | 
			
		||||
            await CoreNavigator.navigate('/login/sites', { reset: true });
 | 
			
		||||
        }
 | 
			
		||||
    closeModal(): void {
 | 
			
		||||
        ModalController.dismiss();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -12,26 +12,19 @@
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
 | 
			
		||||
import { CoreSharedModule } from '@/core/shared.module';
 | 
			
		||||
import { CoreContentLinksChooseSitePage } from './choose-site';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
    {
 | 
			
		||||
        path: '',
 | 
			
		||||
        component: CoreContentLinksChooseSitePage,
 | 
			
		||||
    },
 | 
			
		||||
];
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
import { CoreContentLinksChooseSiteModalComponent } from './choose-site-modal/choose-site-modal';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
    declarations: [
 | 
			
		||||
        CoreContentLinksChooseSitePage,
 | 
			
		||||
        CoreContentLinksChooseSiteModalComponent,
 | 
			
		||||
    ],
 | 
			
		||||
    imports: [
 | 
			
		||||
        RouterModule.forChild(routes),
 | 
			
		||||
        CoreSharedModule,
 | 
			
		||||
    ],
 | 
			
		||||
    exports: [
 | 
			
		||||
        CoreContentLinksChooseSiteModalComponent,
 | 
			
		||||
    ],
 | 
			
		||||
})
 | 
			
		||||
export class CoreContentLinksChooseSitePageModule {}
 | 
			
		||||
export class CoreContentLinksComponentsModule {}
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
 | 
			
		||||
import { NgModule, Type } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
import { CoreContentLinksComponentsModule } from './components/components.module';
 | 
			
		||||
import { CoreContentLinksDelegateService } from './services/contentlinks-delegate';
 | 
			
		||||
import { CoreContentLinksHelperProvider } from './services/contentlinks-helper';
 | 
			
		||||
 | 
			
		||||
@ -22,5 +22,9 @@ export const CORE_CONTENTLINKS_SERVICES: Type<unknown>[] = [
 | 
			
		||||
    CoreContentLinksHelperProvider,
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@NgModule({})
 | 
			
		||||
@NgModule({
 | 
			
		||||
    imports: [
 | 
			
		||||
        CoreContentLinksComponentsModule,
 | 
			
		||||
    ],
 | 
			
		||||
})
 | 
			
		||||
export class CoreContentLinksModule {}
 | 
			
		||||
 | 
			
		||||
@ -17,9 +17,10 @@ import { CoreSites } from '@services/sites';
 | 
			
		||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
			
		||||
import { CoreContentLinksDelegate, CoreContentLinksAction } from './contentlinks-delegate';
 | 
			
		||||
import { CoreSite } from '@classes/site';
 | 
			
		||||
import { makeSingleton, Translate } from '@singletons';
 | 
			
		||||
import { makeSingleton, ModalController, Translate } from '@singletons';
 | 
			
		||||
import { CoreNavigator } from '@services/navigator';
 | 
			
		||||
import { Params } from '@angular/router';
 | 
			
		||||
import { CoreContentLinksChooseSiteModalComponent } from '../components/choose-site-modal/choose-site-modal';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Service that provides some features regarding content links.
 | 
			
		||||
@ -111,7 +112,15 @@ export class CoreContentLinksHelperProvider {
 | 
			
		||||
     * @todo set correct root.
 | 
			
		||||
     */
 | 
			
		||||
    async goToChooseSite(url: string): Promise<void> {
 | 
			
		||||
        await CoreNavigator.navigate('CoreContentLinksChooseSitePage @todo', { params: { url }, reset: true });
 | 
			
		||||
        const modal = await ModalController.create({
 | 
			
		||||
            component: CoreContentLinksChooseSiteModalComponent,
 | 
			
		||||
            componentProps: {
 | 
			
		||||
                url: url,
 | 
			
		||||
            },
 | 
			
		||||
            cssClass: 'core-modal-fullscreen',
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        await modal.present();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user