forked from CIT/Vmeda.Online
		
	MOBILE-2921 competency: Support push clicks and link clicks
This commit is contained in:
		
							parent
							
								
									a83ebdfec8
								
							
						
					
					
						commit
						bb7e1217a9
					
				| @ -18,10 +18,17 @@ import { AddonCompetencyHelperProvider } from './providers/helper'; | |||||||
| import { AddonCompetencyCourseOptionHandler } from './providers/course-option-handler'; | import { AddonCompetencyCourseOptionHandler } from './providers/course-option-handler'; | ||||||
| import { AddonCompetencyMainMenuHandler } from './providers/mainmenu-handler'; | import { AddonCompetencyMainMenuHandler } from './providers/mainmenu-handler'; | ||||||
| import { AddonCompetencyUserHandler } from './providers/user-handler'; | import { AddonCompetencyUserHandler } from './providers/user-handler'; | ||||||
|  | import { AddonCompetencyCompetencyLinkHandler } from './providers/competency-link-handler'; | ||||||
|  | import { AddonCompetencyPlanLinkHandler } from './providers/plan-link-handler'; | ||||||
|  | import { AddonCompetencyPlansLinkHandler } from './providers/plans-link-handler'; | ||||||
|  | import { AddonCompetencyUserCompetencyLinkHandler } from './providers/user-competency-link-handler'; | ||||||
|  | import { AddonCompetencyPushClickHandler } from './providers/push-click-handler'; | ||||||
| import { AddonCompetencyComponentsModule } from './components/components.module'; | import { AddonCompetencyComponentsModule } from './components/components.module'; | ||||||
| import { CoreCourseOptionsDelegate } from '@core/course/providers/options-delegate'; | import { CoreCourseOptionsDelegate } from '@core/course/providers/options-delegate'; | ||||||
| import { CoreMainMenuDelegate } from '@core/mainmenu/providers/delegate'; | import { CoreMainMenuDelegate } from '@core/mainmenu/providers/delegate'; | ||||||
| import { CoreUserDelegate } from '@core/user/providers/user-delegate'; | import { CoreUserDelegate } from '@core/user/providers/user-delegate'; | ||||||
|  | import { CoreContentLinksDelegate } from '@core/contentlinks/providers/delegate'; | ||||||
|  | import { CorePushNotificationsDelegate } from '@core/pushnotifications/providers/delegate'; | ||||||
| 
 | 
 | ||||||
| // List of providers (without handlers).
 | // List of providers (without handlers).
 | ||||||
| export const ADDON_COMPETENCY_PROVIDERS: any[] = [ | export const ADDON_COMPETENCY_PROVIDERS: any[] = [ | ||||||
| @ -40,16 +47,30 @@ export const ADDON_COMPETENCY_PROVIDERS: any[] = [ | |||||||
|         AddonCompetencyHelperProvider, |         AddonCompetencyHelperProvider, | ||||||
|         AddonCompetencyCourseOptionHandler, |         AddonCompetencyCourseOptionHandler, | ||||||
|         AddonCompetencyMainMenuHandler, |         AddonCompetencyMainMenuHandler, | ||||||
|         AddonCompetencyUserHandler |         AddonCompetencyUserHandler, | ||||||
|  |         AddonCompetencyCompetencyLinkHandler, | ||||||
|  |         AddonCompetencyPlanLinkHandler, | ||||||
|  |         AddonCompetencyPlansLinkHandler, | ||||||
|  |         AddonCompetencyUserCompetencyLinkHandler, | ||||||
|  |         AddonCompetencyPushClickHandler | ||||||
|     ] |     ] | ||||||
| }) | }) | ||||||
| export class AddonCompetencyModule { | export class AddonCompetencyModule { | ||||||
|     constructor(mainMenuDelegate: CoreMainMenuDelegate, mainMenuHandler: AddonCompetencyMainMenuHandler, |     constructor(mainMenuDelegate: CoreMainMenuDelegate, mainMenuHandler: AddonCompetencyMainMenuHandler, | ||||||
|             courseOptionsDelegate: CoreCourseOptionsDelegate, courseOptionHandler: AddonCompetencyCourseOptionHandler, |             courseOptionsDelegate: CoreCourseOptionsDelegate, courseOptionHandler: AddonCompetencyCourseOptionHandler, | ||||||
|             userDelegate: CoreUserDelegate, userHandler: AddonCompetencyUserHandler) { |             userDelegate: CoreUserDelegate, userHandler: AddonCompetencyUserHandler, | ||||||
|  |             contentLinksDelegate: CoreContentLinksDelegate, competencyLinkHandler: AddonCompetencyCompetencyLinkHandler, | ||||||
|  |             planLinkHandler: AddonCompetencyPlanLinkHandler, plansLinkHandler: AddonCompetencyPlansLinkHandler, | ||||||
|  |             userComptencyLinkHandler: AddonCompetencyUserCompetencyLinkHandler, | ||||||
|  |             pushNotificationsDelegate: CorePushNotificationsDelegate, pushClickHandler: AddonCompetencyPushClickHandler) { | ||||||
| 
 | 
 | ||||||
|         mainMenuDelegate.registerHandler(mainMenuHandler); |         mainMenuDelegate.registerHandler(mainMenuHandler); | ||||||
|         courseOptionsDelegate.registerHandler(courseOptionHandler); |         courseOptionsDelegate.registerHandler(courseOptionHandler); | ||||||
|         userDelegate.registerHandler(userHandler); |         userDelegate.registerHandler(userHandler); | ||||||
|  |         contentLinksDelegate.registerHandler(competencyLinkHandler); | ||||||
|  |         contentLinksDelegate.registerHandler(planLinkHandler); | ||||||
|  |         contentLinksDelegate.registerHandler(plansLinkHandler); | ||||||
|  |         contentLinksDelegate.registerHandler(userComptencyLinkHandler); | ||||||
|  |         pushNotificationsDelegate.registerClickHandler(pushClickHandler); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										74
									
								
								src/addon/competency/providers/competency-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								src/addon/competency/providers/competency-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler'; | ||||||
|  | import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate'; | ||||||
|  | import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper'; | ||||||
|  | import { AddonCompetencyProvider } from './competency'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler to treat links to a competency in a plan or in a course. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonCompetencyCompetencyLinkHandler extends CoreContentLinksHandlerBase { | ||||||
|  |     name = 'AddonCompetencyCompetencyLinkHandler'; | ||||||
|  |     pattern = /\/admin\/tool\/lp\/(user_competency_in_course|user_competency_in_plan)\.php/; | ||||||
|  | 
 | ||||||
|  |     constructor(private linkHelper: CoreContentLinksHelperProvider, private competencyProvider: AddonCompetencyProvider) { | ||||||
|  |         super(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Get the list of actions for a link (url). | ||||||
|  |      * | ||||||
|  |      * @param {string[]} siteIds List of sites the URL belongs to. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {CoreContentLinksAction[]|Promise<CoreContentLinksAction[]>} List of (or promise resolved with list of) actions. | ||||||
|  |      */ | ||||||
|  |     getActions(siteIds: string[], url: string, params: any, courseId?: number): | ||||||
|  |             CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> { | ||||||
|  |         courseId = courseId || params.courseid || params.cid; | ||||||
|  | 
 | ||||||
|  |         return [{ | ||||||
|  |             action: (siteId, navCtrl?): void => { | ||||||
|  |                 this.linkHelper.goInSite(navCtrl, 'AddonCompetencyCompetencyPage', { | ||||||
|  |                     planId: params.planid, | ||||||
|  |                     competencyId: params.competencyid, | ||||||
|  |                     courseId: courseId, | ||||||
|  |                     userId: params.userid | ||||||
|  |                 }, siteId); | ||||||
|  |             } | ||||||
|  |         }]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if the handler is enabled for a certain site (site + user) and a URL. | ||||||
|  |      * If not defined, defaults to true. | ||||||
|  |      * | ||||||
|  |      * @param {string} siteId The site ID. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {boolean|Promise<boolean>} Whether the handler is enabled for the URL and site. | ||||||
|  |      */ | ||||||
|  |     isEnabled(siteId: string, url: string, params: any, courseId?: number): boolean | Promise<boolean> { | ||||||
|  |         // Handler is disabled if all competency features are disabled.
 | ||||||
|  |         return this.competencyProvider.allCompetenciesDisabled(siteId).then((disabled) => { | ||||||
|  |             return !disabled; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -42,6 +42,20 @@ export class AddonCompetencyProvider { | |||||||
|         this.logger = loggerProvider.getInstance('AddonCompetencyProvider'); |         this.logger = loggerProvider.getInstance('AddonCompetencyProvider'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if all competencies features are disabled. | ||||||
|  |      * | ||||||
|  |      * @param {string} [siteId] Site ID. If not defined, current site. | ||||||
|  |      * @return {Promise<boolean>} Promise resolved with boolean: whether all competency features are disabled. | ||||||
|  |      */ | ||||||
|  |     allCompetenciesDisabled(siteId?: string): Promise<boolean> { | ||||||
|  |         return this.sitesProvider.getSite(siteId).then((site) => { | ||||||
|  |             return site.isFeatureDisabled('CoreMainMenuDelegate_AddonCompetency') && | ||||||
|  |                     site.isFeatureDisabled('CoreCourseOptionsDelegate_AddonCompetency') && | ||||||
|  |                     site.isFeatureDisabled('CoreUserDelegate_AddonCompetency'); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Get cache key for user learning plans data WS calls. |      * Get cache key for user learning plans data WS calls. | ||||||
|      * |      * | ||||||
|  | |||||||
							
								
								
									
										68
									
								
								src/addon/competency/providers/plan-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/addon/competency/providers/plan-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler'; | ||||||
|  | import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate'; | ||||||
|  | import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper'; | ||||||
|  | import { AddonCompetencyProvider } from './competency'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler to treat links to a plan. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonCompetencyPlanLinkHandler extends CoreContentLinksHandlerBase { | ||||||
|  |     name = 'AddonCompetencyPlanLinkHandler'; | ||||||
|  |     pattern = /\/admin\/tool\/lp\/plan\.php.*([\?\&]id=\d+)/; | ||||||
|  | 
 | ||||||
|  |     constructor(private linkHelper: CoreContentLinksHelperProvider, private competencyProvider: AddonCompetencyProvider) { | ||||||
|  |         super(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Get the list of actions for a link (url). | ||||||
|  |      * | ||||||
|  |      * @param {string[]} siteIds List of sites the URL belongs to. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {CoreContentLinksAction[]|Promise<CoreContentLinksAction[]>} List of (or promise resolved with list of) actions. | ||||||
|  |      */ | ||||||
|  |     getActions(siteIds: string[], url: string, params: any, courseId?: number): | ||||||
|  |             CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> { | ||||||
|  | 
 | ||||||
|  |         return [{ | ||||||
|  |             action: (siteId, navCtrl?): void => { | ||||||
|  |                 this.linkHelper.goInSite(navCtrl, 'AddonCompetencyPlanPage', { planId: params.id }, siteId); | ||||||
|  |             } | ||||||
|  |         }]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if the handler is enabled for a certain site (site + user) and a URL. | ||||||
|  |      * If not defined, defaults to true. | ||||||
|  |      * | ||||||
|  |      * @param {string} siteId The site ID. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {boolean|Promise<boolean>} Whether the handler is enabled for the URL and site. | ||||||
|  |      */ | ||||||
|  |     isEnabled(siteId: string, url: string, params: any, courseId?: number): boolean | Promise<boolean> { | ||||||
|  |         // Handler is disabled if all competency features are disabled.
 | ||||||
|  |         return this.competencyProvider.allCompetenciesDisabled(siteId).then((disabled) => { | ||||||
|  |             return !disabled; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										69
									
								
								src/addon/competency/providers/plans-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/addon/competency/providers/plans-link-handler.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler'; | ||||||
|  | import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate'; | ||||||
|  | import { CoreLoginHelperProvider } from '@core/login/providers/helper'; | ||||||
|  | import { AddonCompetencyProvider } from './competency'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler to treat links to user plans. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonCompetencyPlansLinkHandler extends CoreContentLinksHandlerBase { | ||||||
|  |     name = 'AddonCompetencyPlansLinkHandler'; | ||||||
|  |     pattern = /\/admin\/tool\/lp\/plans\.php/; | ||||||
|  | 
 | ||||||
|  |     constructor(private loginHelper: CoreLoginHelperProvider, private competencyProvider: AddonCompetencyProvider) { | ||||||
|  |         super(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Get the list of actions for a link (url). | ||||||
|  |      * | ||||||
|  |      * @param {string[]} siteIds List of sites the URL belongs to. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {CoreContentLinksAction[]|Promise<CoreContentLinksAction[]>} List of (or promise resolved with list of) actions. | ||||||
|  |      */ | ||||||
|  |     getActions(siteIds: string[], url: string, params: any, courseId?: number): | ||||||
|  |             CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> { | ||||||
|  | 
 | ||||||
|  |         return [{ | ||||||
|  |             action: (siteId, navCtrl?): void => { | ||||||
|  |                 // Always use redirect to make it the new history root (to avoid "loops" in history).
 | ||||||
|  |                 this.loginHelper.redirect('AddonCompetencyPlanListPage', { userId: params.userid }, siteId); | ||||||
|  |             } | ||||||
|  |         }]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if the handler is enabled for a certain site (site + user) and a URL. | ||||||
|  |      * If not defined, defaults to true. | ||||||
|  |      * | ||||||
|  |      * @param {string} siteId The site ID. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {boolean|Promise<boolean>} Whether the handler is enabled for the URL and site. | ||||||
|  |      */ | ||||||
|  |     isEnabled(siteId: string, url: string, params: any, courseId?: number): boolean | Promise<boolean> { | ||||||
|  |         // Handler is disabled if all competency features are disabled.
 | ||||||
|  |         return this.competencyProvider.allCompetenciesDisabled(siteId).then((disabled) => { | ||||||
|  |             return !disabled; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										100
									
								
								src/addon/competency/providers/push-click-handler.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								src/addon/competency/providers/push-click-handler.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,100 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreUrlUtilsProvider } from '@providers/utils/url'; | ||||||
|  | import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||||
|  | import { CorePushNotificationsClickHandler } from '@core/pushnotifications/providers/delegate'; | ||||||
|  | import { CoreLoginHelperProvider } from '@core/login/providers/helper'; | ||||||
|  | import { AddonCompetencyProvider } from './competency'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler for competencies push notifications clicks. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonCompetencyPushClickHandler implements CorePushNotificationsClickHandler { | ||||||
|  |     name = 'AddonCompetencyPushClickHandler'; | ||||||
|  |     priority = 200; | ||||||
|  | 
 | ||||||
|  |     constructor(private utils: CoreUtilsProvider, private urlUtils: CoreUrlUtilsProvider, | ||||||
|  |             private competencyProvider: AddonCompetencyProvider, private loginHelper: CoreLoginHelperProvider) {} | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if a notification click is handled by this handler. | ||||||
|  |      * | ||||||
|  |      * @param {any} notification The notification to check. | ||||||
|  |      * @return {boolean} Whether the notification click is handled by this handler | ||||||
|  |      */ | ||||||
|  |     handles(notification: any): boolean | Promise<boolean> { | ||||||
|  |         if (this.utils.isTrueOrOne(notification.notif) && notification.moodlecomponent == 'moodle' && | ||||||
|  |                 (notification.name == 'competencyplancomment' || notification.name == 'competencyusercompcomment')) { | ||||||
|  |             // If all competency features are disabled, don't handle the click.
 | ||||||
|  |             return this.competencyProvider.allCompetenciesDisabled(notification.site).then((disabled) => { | ||||||
|  |                 return !disabled; | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Handle the notification click. | ||||||
|  |      * | ||||||
|  |      * @param {any} notification The notification to check. | ||||||
|  |      * @return {Promise<any>} Promise resolved when done. | ||||||
|  |      */ | ||||||
|  |     handleClick(notification: any): Promise<any> { | ||||||
|  |         const contextUrlParams = this.urlUtils.extractUrlParams(notification.contexturl); | ||||||
|  | 
 | ||||||
|  |         if (notification.name == 'competencyplancomment') { | ||||||
|  |             // Open the learning plan.
 | ||||||
|  |             const planId = Number(contextUrlParams.id); | ||||||
|  | 
 | ||||||
|  |             return this.competencyProvider.invalidateLearningPlan(planId, notification.site).catch(() => { | ||||||
|  |                 // Ignore errors.
 | ||||||
|  |             }).then(() => { | ||||||
|  |                 return this.loginHelper.redirect('AddonCompetencyPlanPage', { planId: planId }, notification.site); | ||||||
|  |             }); | ||||||
|  |         } else { | ||||||
|  | 
 | ||||||
|  |             if (notification.contexturl && notification.contexturl.indexOf('user_competency_in_plan.php') != -1) { | ||||||
|  |                 // Open the competency.
 | ||||||
|  |                 const courseId = Number(notification.course), | ||||||
|  |                     competencyId = Number(contextUrlParams.competencyid), | ||||||
|  |                     planId = Number(contextUrlParams.planid), | ||||||
|  |                     userId = Number(contextUrlParams.userid); | ||||||
|  | 
 | ||||||
|  |                 return this.competencyProvider.invalidateCompetencyInPlan(planId, competencyId, notification.site).catch(() => { | ||||||
|  |                     // Ignore errors.
 | ||||||
|  |                 }).then(() => { | ||||||
|  |                     return this.loginHelper.redirect('AddonCompetencyCompetencyPage', { | ||||||
|  |                         planId: planId, | ||||||
|  |                         competencyId: competencyId, | ||||||
|  |                         courseId: courseId, | ||||||
|  |                         userId: userId | ||||||
|  |                     }, notification.site); | ||||||
|  |                 }); | ||||||
|  |             } else { | ||||||
|  |                 // Open the list of plans.
 | ||||||
|  |                 const userId = Number(contextUrlParams.userid); | ||||||
|  | 
 | ||||||
|  |                 return this.competencyProvider.invalidateLearningPlans(userId, notification.site).catch(() => { | ||||||
|  |                     // Ignore errors.
 | ||||||
|  |                 }).then(() => { | ||||||
|  |                     return this.loginHelper.redirect('AddonCompetencyPlanListPage', { userId: userId }, notification.site); | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,68 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler'; | ||||||
|  | import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate'; | ||||||
|  | import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper'; | ||||||
|  | import { AddonCompetencyProvider } from './competency'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler to treat links to a usr competency. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonCompetencyUserCompetencyLinkHandler extends CoreContentLinksHandlerBase { | ||||||
|  |     name = 'AddonCompetencyUserCompetencyLinkHandler'; | ||||||
|  |     pattern = /\/admin\/tool\/lp\/user_competency\.php.*([\?\&]id=\d+)/; | ||||||
|  | 
 | ||||||
|  |     constructor(private linkHelper: CoreContentLinksHelperProvider, private competencyProvider: AddonCompetencyProvider) { | ||||||
|  |         super(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Get the list of actions for a link (url). | ||||||
|  |      * | ||||||
|  |      * @param {string[]} siteIds List of sites the URL belongs to. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {CoreContentLinksAction[]|Promise<CoreContentLinksAction[]>} List of (or promise resolved with list of) actions. | ||||||
|  |      */ | ||||||
|  |     getActions(siteIds: string[], url: string, params: any, courseId?: number): | ||||||
|  |             CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> { | ||||||
|  | 
 | ||||||
|  |         return [{ | ||||||
|  |             action: (siteId, navCtrl?): void => { | ||||||
|  |                 this.linkHelper.goInSite(navCtrl, 'AddonCompetencyCompetencySummaryPage', { competencyId: params.id }, siteId); | ||||||
|  |             } | ||||||
|  |         }]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if the handler is enabled for a certain site (site + user) and a URL. | ||||||
|  |      * If not defined, defaults to true. | ||||||
|  |      * | ||||||
|  |      * @param {string} siteId The site ID. | ||||||
|  |      * @param {string} url The URL to treat. | ||||||
|  |      * @param {any} params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} | ||||||
|  |      * @param {number} [courseId] Course ID related to the URL. Optional but recommended. | ||||||
|  |      * @return {boolean|Promise<boolean>} Whether the handler is enabled for the URL and site. | ||||||
|  |      */ | ||||||
|  |     isEnabled(siteId: string, url: string, params: any, courseId?: number): boolean | Promise<boolean> { | ||||||
|  |         // Handler is disabled if all competency features are disabled.
 | ||||||
|  |         return this.competencyProvider.allCompetenciesDisabled(siteId).then((disabled) => { | ||||||
|  |             return !disabled; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user