forked from EVOgeek/Vmeda.Online
		
	MOBILE-4084 folder: Restore access to inline folders
Add temporary fix to restore access to inline folders. Change module description to exclude inline folder data.
This commit is contained in:
		
							parent
							
								
									689a36ac12
								
							
						
					
					
						commit
						c1afc4b614
					
				| @ -15,7 +15,10 @@ | ||||
| import { CoreConstants, ModPurpose } from '@/core/constants'; | ||||
| import { Injectable, Type } from '@angular/core'; | ||||
| import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler'; | ||||
| import { CoreCourseModuleHandler } from '@features/course/services/module-delegate'; | ||||
| import { CoreCourseModuleData } from '@features/course/services/course-helper'; | ||||
| import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/course/services/module-delegate'; | ||||
| import { CoreNavigator } from '@services/navigator'; | ||||
| import { CoreDomUtils } from '@services/utils/dom'; | ||||
| import { makeSingleton } from '@singletons'; | ||||
| import { AddonModFolderIndexComponent } from '../../components/index'; | ||||
| 
 | ||||
| @ -44,6 +47,41 @@ export class AddonModFolderModuleHandlerService extends CoreModuleHandlerBase im | ||||
|         [CoreConstants.FEATURE_MOD_PURPOSE]: ModPurpose.MOD_PURPOSE_CONTENT, | ||||
|     }; | ||||
| 
 | ||||
|     /** | ||||
|      * @inheritdoc | ||||
|      */ | ||||
|     async getData( | ||||
|         module: CoreCourseModuleData, | ||||
|         courseId: number, | ||||
|         sectionId?: number, | ||||
|         forCoursePage?: boolean, | ||||
|     ): Promise<CoreCourseModuleHandlerData> { | ||||
|         const data = await super.getData(module, courseId, sectionId, forCoursePage); | ||||
| 
 | ||||
|         if (module.description) { | ||||
|             // Module description can contain the folder contents if it's inline, remove it.
 | ||||
|             const descriptionElement = CoreDomUtils.convertToElement(module.description); | ||||
| 
 | ||||
|             Array.from(descriptionElement.querySelectorAll('.foldertree, .folderbuttons, .tertiary-navigation')) | ||||
|                 .forEach(element => element.remove()); | ||||
| 
 | ||||
|             module.description = descriptionElement.innerHTML; | ||||
|         } | ||||
| 
 | ||||
|         // @todo: Temporary fix to open inline folders. We should use a more generic solution.
 | ||||
|         data.action = async (event, module, courseId, options): Promise<void> => { | ||||
|             options = options || {}; | ||||
|             options.params = options.params || {}; | ||||
|             Object.assign(options.params, { module }); | ||||
| 
 | ||||
|             const routeParams = '/' + courseId + '/' + module.id; | ||||
| 
 | ||||
|             await CoreNavigator.navigateToSitePath(this.pageName + routeParams, options); | ||||
|         }; | ||||
| 
 | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @inheritdoc | ||||
|      */ | ||||
|  | ||||
| @ -24,8 +24,8 @@ | ||||
|                     </core-format-text> | ||||
|                 </h1> | ||||
|             </ion-label> | ||||
|             <ion-button fill="clear" *ngIf="displayOptions.displayOpenInBrowser" [href]="externalUrl" core-link [showBrowserWarning]="false" | ||||
|                 [attr.aria-label]="'core.openinbrowser' | translate" slot="end"> | ||||
|             <ion-button fill="clear" *ngIf="displayOptions.displayOpenInBrowser && externalUrl" [href]="externalUrl" core-link | ||||
|                 [showBrowserWarning]="false" [attr.aria-label]="'core.openinbrowser' | translate" slot="end"> | ||||
|                 <ion-icon name="fas-external-link-alt" slot="icon-only" aria-hidden="true"></ion-icon> | ||||
|             </ion-button> | ||||
|         </ion-item> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user