forked from EVOgeek/Vmeda.Online
		
	MOBILE-3780 course: Use right max upload size when set to course limit
This commit is contained in:
		
							parent
							
								
									9a63793cf2
								
							
						
					
					
						commit
						628f380d7c
					
				| @ -35,6 +35,7 @@ import { CoreGroups } from '@services/groups'; | |||||||
| import { AddonModAssignSync, AddonModAssignSyncResult } from '../assign-sync'; | import { AddonModAssignSync, AddonModAssignSyncResult } from '../assign-sync'; | ||||||
| import { CoreUser } from '@features/user/services/user'; | import { CoreUser } from '@features/user/services/user'; | ||||||
| import { CoreGradesHelper } from '@features/grades/services/grades-helper'; | import { CoreGradesHelper } from '@features/grades/services/grades-helper'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Handler to prefetch assigns. |  * Handler to prefetch assigns. | ||||||
| @ -252,6 +253,8 @@ export class AddonModAssignPrefetchHandlerService extends CoreCourseActivityPref | |||||||
|         promises.push(this.prefetchSubmissions(assign, courseId, module.id, userId, siteId)); |         promises.push(this.prefetchSubmissions(assign, courseId, module.id, userId, siteId)); | ||||||
| 
 | 
 | ||||||
|         promises.push(CoreCourseHelper.getModuleCourseIdByInstance(assign.id, 'assign', siteId)); |         promises.push(CoreCourseHelper.getModuleCourseIdByInstance(assign.id, 'assign', siteId)); | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
| 
 | 
 | ||||||
|         // Download intro files and attachments. Do not call getFiles because it'd call some WS twice.
 |         // Download intro files and attachments. Do not call getFiles because it'd call some WS twice.
 | ||||||
|         let files: CoreWSFile[] = assign.introattachments || []; |         let files: CoreWSFile[] = assign.introattachments || []; | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|     <ion-item-divider class="ion-text-wrap" sticky="true"> |     <ion-item-divider class="ion-text-wrap" sticky="true"> | ||||||
|         <ion-label><h2>{{ plugin.name }}</h2></ion-label> |         <ion-label><h2>{{ plugin.name }}</h2></ion-label> | ||||||
|     </ion-item-divider> |     </ion-item-divider> | ||||||
|     <core-attachments [files]="files" [maxSize]="maxSize" [maxSubmissions]="maxSubmissions" |     <core-attachments [files]="files" [maxSize]="maxSize" [maxSubmissions]="maxSubmissions" [courseId]="assign.course" | ||||||
|         [component]="component" [componentId]="assign.cmid" [acceptedTypes]="acceptedTypes" [allowOffline]="allowOffline"> |         [component]="component" [componentId]="assign.cmid" [acceptedTypes]="acceptedTypes" [allowOffline]="allowOffline"> | ||||||
|     </core-attachments> |     </core-attachments> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| <span *ngIf="editMode && form"> | <span *ngIf="editMode && form"> | ||||||
|     <span [core-mark-required]="field.required" class="core-mark-required"></span> |     <span [core-mark-required]="field.required" class="core-mark-required"></span> | ||||||
|     <core-attachments [files]="files" [maxSize]="maxSizeBytes" maxSubmissions="1" [component]="component" |     <core-attachments [files]="files" [maxSize]="maxSizeBytes" maxSubmissions="1" [component]="component" | ||||||
|         [componentId]="componentId" [allowOffline]="true"> |         [componentId]="componentId" [allowOffline]="true" [courseId]="database?.course"> | ||||||
|     </core-attachments> |     </core-attachments> | ||||||
|     <core-input-errors *ngIf="error" [errorText]="error"></core-input-errors> |     <core-input-errors *ngIf="error" [errorText]="error"></core-input-errors> | ||||||
| </span> | </span> | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| <span *ngIf="editMode && form" [formGroup]="form"> | <span *ngIf="editMode && form" [formGroup]="form"> | ||||||
|     <span [core-mark-required]="field.required" class="core-mark-required"></span> |     <span [core-mark-required]="field.required" class="core-mark-required"></span> | ||||||
|     <core-attachments [files]="files" [maxSize]="maxSizeBytes" maxSubmissions="1" [component]="component" |     <core-attachments [files]="files" [maxSize]="maxSizeBytes" maxSubmissions="1" [component]="component" | ||||||
|         [componentId]="componentId" [allowOffline]="true" acceptedTypes="image"> |         [componentId]="componentId" [allowOffline]="true" acceptedTypes="image" [courseId]="database?.course"> | ||||||
|     </core-attachments> |     </core-attachments> | ||||||
|     <core-input-errors *ngIf="error" [errorText]="error"></core-input-errors> |     <core-input-errors *ngIf="error" [errorText]="error"></core-input-errors> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ import { Injectable } from '@angular/core'; | |||||||
| import { CoreComments } from '@features/comments/services/comments'; | import { CoreComments } from '@features/comments/services/comments'; | ||||||
| import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | ||||||
| import { CoreCourseCommonModWSOptions, CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | import { CoreCourseCommonModWSOptions, CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| import { CoreFilepool } from '@services/filepool'; | import { CoreFilepool } from '@services/filepool'; | ||||||
| import { CoreGroup, CoreGroups } from '@services/groups'; | import { CoreGroup, CoreGroups } from '@services/groups'; | ||||||
| import { CoreSitesCommonWSOptions, CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | import { CoreSitesCommonWSOptions, CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | ||||||
| @ -269,6 +270,9 @@ export class AddonModDataPrefetchHandlerService extends CoreCourseActivityPrefet | |||||||
|         // Add Basic Info to manage links.
 |         // Add Basic Info to manage links.
 | ||||||
|         promises.push(CoreCourse.getModuleBasicInfoByInstance(database.id, 'data', siteId)); |         promises.push(CoreCourse.getModuleBasicInfoByInstance(database.id, 'data', siteId)); | ||||||
| 
 | 
 | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
|  | 
 | ||||||
|         await Promise.all(promises); |         await Promise.all(promises); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ | |||||||
|         <div *ngIf="advanced" id="addon-mod-forum-advanced"> |         <div *ngIf="advanced" id="addon-mod-forum-advanced"> | ||||||
|             <core-attachments *ngIf="forum.id && forum.maxattachments > 0" |             <core-attachments *ngIf="forum.id && forum.maxattachments > 0" | ||||||
|                 [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" [allowOffline]="true" [files]="replyData.files" |                 [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" [allowOffline]="true" [files]="replyData.files" | ||||||
|                 [component]="component" [componentId]="forum.cmid"> |                 [component]="component" [componentId]="forum.cmid" [courseId]="forum.course"> | ||||||
|             </core-attachments> |             </core-attachments> | ||||||
|         </div> |         </div> | ||||||
|         <ion-grid> |         <ion-grid> | ||||||
|  | |||||||
| @ -139,7 +139,7 @@ | |||||||
|             <div *ngIf="advanced" [id]="'addon-forum-reply-edit-form-advanced-' + uniqueId"> |             <div *ngIf="advanced" [id]="'addon-forum-reply-edit-form-advanced-' + uniqueId"> | ||||||
|                 <core-attachments |                 <core-attachments | ||||||
|                     [files]="replyData.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" |                     [files]="replyData.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" | ||||||
|                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true"> |                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true" [courseId]="courseId"> | ||||||
|                 </core-attachments> |                 </core-attachments> | ||||||
|             </div> |             </div> | ||||||
|         </ng-container> |         </ng-container> | ||||||
|  | |||||||
| @ -68,7 +68,7 @@ | |||||||
|                 </ion-item> |                 </ion-item> | ||||||
|                 <core-attachments *ngIf="canCreateAttachments && forum && forum.maxattachments > 0" |                 <core-attachments *ngIf="canCreateAttachments && forum && forum.maxattachments > 0" | ||||||
|                     [files]="newDiscussion.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" |                     [files]="newDiscussion.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" | ||||||
|                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true"> |                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true" [courseId]="courseId"> | ||||||
|                 </core-attachments> |                 </core-attachments> | ||||||
|             </div> |             </div> | ||||||
|             <ion-item> |             <ion-item> | ||||||
|  | |||||||
| @ -86,8 +86,8 @@ export class AddonModForumNewDiscussionPage implements OnInit, OnDestroy, CanLea | |||||||
| 
 | 
 | ||||||
|     advanced = false; // Display all form fields.
 |     advanced = false; // Display all form fields.
 | ||||||
|     accessInfo: AddonModForumAccessInformation = {}; |     accessInfo: AddonModForumAccessInformation = {}; | ||||||
|  |     courseId!: number; | ||||||
| 
 | 
 | ||||||
|     protected courseId!: number; |  | ||||||
|     protected cmId!: number; |     protected cmId!: number; | ||||||
|     protected forumId!: number; |     protected forumId!: number; | ||||||
|     protected timeCreated!: number; |     protected timeCreated!: number; | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ import { CoreGroups, CoreGroupsProvider } from '@services/groups'; | |||||||
| import { CoreUtils } from '@services/utils/utils'; | import { CoreUtils } from '@services/utils/utils'; | ||||||
| import { AddonModForumSync } from '../forum-sync'; | import { AddonModForumSync } from '../forum-sync'; | ||||||
| import { makeSingleton } from '@singletons'; | import { makeSingleton } from '@singletons'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Handler to prefetch forums. |  * Handler to prefetch forums. | ||||||
| @ -229,6 +230,9 @@ export class AddonModForumPrefetchHandlerService extends CoreCourseActivityPrefe | |||||||
|             promises.push(CoreUser.getUserPreference(AddonModForumProvider.PREFERENCE_SORTORDER, siteId)); |             promises.push(CoreUser.getUserPreference(AddonModForumProvider.PREFERENCE_SORTORDER, siteId)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
|  | 
 | ||||||
|         await Promise.all(promises); |         await Promise.all(promises); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -50,7 +50,7 @@ | |||||||
|                 <ion-label><h2>{{ 'addon.mod_glossary.attachment' | translate }}</h2></ion-label> |                 <ion-label><h2>{{ 'addon.mod_glossary.attachment' | translate }}</h2></ion-label> | ||||||
|             </ion-item-divider> |             </ion-item-divider> | ||||||
|             <core-attachments [files]="attachments" [component]="component" [componentId]="glossary.coursemodule" |             <core-attachments [files]="attachments" [component]="component" [componentId]="glossary.coursemodule" | ||||||
|                 [allowOffline]="true"> |                 [allowOffline]="true" [courseId]="courseId"> | ||||||
|             </core-attachments> |             </core-attachments> | ||||||
|             <ng-container *ngIf="glossary.usedynalink"> |             <ng-container *ngIf="glossary.usedynalink"> | ||||||
|                 <ion-item-divider> |                 <ion-item-divider> | ||||||
|  | |||||||
| @ -16,9 +16,11 @@ import { Injectable } from '@angular/core'; | |||||||
| import { CoreComments } from '@features/comments/services/comments'; | import { CoreComments } from '@features/comments/services/comments'; | ||||||
| import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | ||||||
| import { CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | import { CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| import { CoreUser } from '@features/user/services/user'; | import { CoreUser } from '@features/user/services/user'; | ||||||
| import { CoreFilepool } from '@services/filepool'; | import { CoreFilepool } from '@services/filepool'; | ||||||
| import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | ||||||
|  | import { CoreUtils } from '@services/utils/utils'; | ||||||
| import { CoreWSFile } from '@services/ws'; | import { CoreWSFile } from '@services/ws'; | ||||||
| import { makeSingleton } from '@singletons'; | import { makeSingleton } from '@singletons'; | ||||||
| import { AddonModGlossary, AddonModGlossaryEntry, AddonModGlossaryGlossary, AddonModGlossaryProvider } from '../glossary'; | import { AddonModGlossary, AddonModGlossaryEntry, AddonModGlossaryGlossary, AddonModGlossaryProvider } from '../glossary'; | ||||||
| @ -210,6 +212,9 @@ export class AddonModGlossaryPrefetchHandlerService extends CoreCourseActivityPr | |||||||
|         promises.push(CoreCourse.getModuleBasicInfo(module.id, siteId)); |         promises.push(CoreCourse.getModuleBasicInfo(module.id, siteId)); | ||||||
|         promises.push(CoreCourse.getModuleBasicInfoByInstance(glossary.id, 'glossary', siteId)); |         promises.push(CoreCourse.getModuleBasicInfoByInstance(glossary.id, 'glossary', siteId)); | ||||||
| 
 | 
 | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
|  | 
 | ||||||
|         await Promise.all(promises); |         await Promise.all(promises); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import { Injectable } from '@angular/core'; | |||||||
| import { CoreError } from '@classes/errors/error'; | import { CoreError } from '@classes/errors/error'; | ||||||
| import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | ||||||
| import { CoreCourseAnyModuleData, CoreCourseCommonModWSOptions } from '@features/course/services/course'; | import { CoreCourseAnyModuleData, CoreCourseCommonModWSOptions } from '@features/course/services/course'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| import { CoreQuestionHelper } from '@features/question/services/question-helper'; | import { CoreQuestionHelper } from '@features/question/services/question-helper'; | ||||||
| import { CoreFilepool } from '@services/filepool'; | import { CoreFilepool } from '@services/filepool'; | ||||||
| import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; | ||||||
| @ -374,6 +375,9 @@ export class AddonModQuizPrefetchHandlerService extends CoreCourseActivityPrefet | |||||||
|         promises.push(this.prefetchGradeAndFeedback(quiz, modOptions, siteId)); |         promises.push(this.prefetchGradeAndFeedback(quiz, modOptions, siteId)); | ||||||
|         promises.push(AddonModQuiz.getAttemptAccessInformation(quiz.id, 0, modOptions)); // Last attempt.
 |         promises.push(AddonModQuiz.getAttemptAccessInformation(quiz.id, 0, modOptions)); // Last attempt.
 | ||||||
| 
 | 
 | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
|  | 
 | ||||||
|         await Promise.all(promises); |         await Promise.all(promises); | ||||||
| 
 | 
 | ||||||
|         // We have quiz data, now we'll get specific data for each attempt.
 |         // We have quiz data, now we'll get specific data for each attempt.
 | ||||||
|  | |||||||
| @ -37,7 +37,7 @@ | |||||||
|             </ion-item> |             </ion-item> | ||||||
|             <core-attachments *ngIf="edit && workshop.overallfeedbackfiles" [files]="data.assessment?.feedbackattachmentfiles" |             <core-attachments *ngIf="edit && workshop.overallfeedbackfiles" [files]="data.assessment?.feedbackattachmentfiles" | ||||||
|                 [maxSize]="workshop.overallfeedbackmaxbytes" [maxSubmissions]="workshop.overallfeedbackfiles" |                 [maxSize]="workshop.overallfeedbackmaxbytes" [maxSubmissions]="workshop.overallfeedbackfiles" | ||||||
|                 [component]="component" [componentId]="componentId" [allowOffline]="true"> |                 [component]="component" [componentId]="componentId" [allowOffline]="true" [courseId]="workshop.course"> | ||||||
|             </core-attachments> |             </core-attachments> | ||||||
|             <ion-item *ngIf="edit && access && access.canallocate"> |             <ion-item *ngIf="edit && access && access.canallocate"> | ||||||
|                 <ion-label position="stacked"> |                 <ion-label position="stacked"> | ||||||
|  | |||||||
| @ -39,7 +39,8 @@ | |||||||
| 
 | 
 | ||||||
|             <core-attachments *ngIf="fileAvailable" [files]="attachments" [maxSize]="workshop.maxbytes" |             <core-attachments *ngIf="fileAvailable" [files]="attachments" [maxSize]="workshop.maxbytes" | ||||||
|                 [maxSubmissions]="workshop.nattachments" [component]="component" [componentId]="workshop.coursemodule" |                 [maxSubmissions]="workshop.nattachments" [component]="component" [componentId]="workshop.coursemodule" | ||||||
|                 allowOffline="true" [acceptedTypes]="workshop.submissionfiletypes" [required]="fileRequired"> |                 allowOffline="true" [acceptedTypes]="workshop.submissionfiletypes" [required]="fileRequired" | ||||||
|  |                 [courseId]="workshop.course"> | ||||||
|             </core-attachments> |             </core-attachments> | ||||||
|         </form> |         </form> | ||||||
|     </core-loading> |     </core-loading> | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ import { AddonModDataSyncResult } from '@addons/mod/data/services/data-sync'; | |||||||
| import { Injectable } from '@angular/core'; | import { Injectable } from '@angular/core'; | ||||||
| import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | import { CoreCourseActivityPrefetchHandlerBase } from '@features/course/classes/activity-prefetch-handler'; | ||||||
| import { CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | import { CoreCourse, CoreCourseAnyModuleData } from '@features/course/services/course'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
| import { CoreUser } from '@features/user/services/user'; | import { CoreUser } from '@features/user/services/user'; | ||||||
| import { CoreFilepool } from '@services/filepool'; | import { CoreFilepool } from '@services/filepool'; | ||||||
| import { CoreGroup, CoreGroups } from '@services/groups'; | import { CoreGroup, CoreGroups } from '@services/groups'; | ||||||
| @ -372,6 +373,9 @@ export class AddonModWorkshopPrefetchHandlerService extends CoreCourseActivityPr | |||||||
|         promises.push(CoreCourse.getModuleBasicInfoByInstance(workshop.id, 'workshop', siteId)); |         promises.push(CoreCourse.getModuleBasicInfoByInstance(workshop.id, 'workshop', siteId)); | ||||||
|         promises.push(CoreCourse.getModuleBasicGradeInfo(module.id, siteId)); |         promises.push(CoreCourse.getModuleBasicGradeInfo(module.id, siteId)); | ||||||
| 
 | 
 | ||||||
|  |         // Get course data, needed to determine upload max size if it's configured to be course limit.
 | ||||||
|  |         promises.push(CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', courseId, siteId))); | ||||||
|  | 
 | ||||||
|         await Promise.all(promises); |         await Promise.all(promises); | ||||||
| 
 | 
 | ||||||
|         // Prefetch user profiles.
 |         // Prefetch user profiles.
 | ||||||
|  | |||||||
| @ -52,7 +52,7 @@ | |||||||
|             <core-attachments *ngIf="uploadFilesSupported && essayQuestion.attachmentsDraftIdInput" [files]="attachments" |             <core-attachments *ngIf="uploadFilesSupported && essayQuestion.attachmentsDraftIdInput" [files]="attachments" | ||||||
|                 [component]="component" [componentId]="componentId" [maxSize]="essayQuestion.attachmentsMaxBytes" |                 [component]="component" [componentId]="componentId" [maxSize]="essayQuestion.attachmentsMaxBytes" | ||||||
|                 [maxSubmissions]="essayQuestion.attachmentsMaxFiles" [allowOffline]="offlineEnabled" |                 [maxSubmissions]="essayQuestion.attachmentsMaxFiles" [allowOffline]="offlineEnabled" | ||||||
|                 [acceptedTypes]="essayQuestion.attachmentsAcceptedTypes"> |                 [acceptedTypes]="essayQuestion.attachmentsAcceptedTypes" [courseId]="courseId"> | ||||||
|             </core-attachments> |             </core-attachments> | ||||||
| 
 | 
 | ||||||
|             <input *ngIf="essayQuestion.attachmentsDraftIdInput" type="hidden" [name]="essayQuestion.attachmentsDraftIdInput.name" |             <input *ngIf="essayQuestion.attachmentsDraftIdInput" type="hidden" [name]="essayQuestion.attachmentsDraftIdInput.name" | ||||||
|  | |||||||
| @ -23,6 +23,8 @@ import { CoreApp } from '@services/app'; | |||||||
| import { CoreDomUtils } from '@services/utils/dom'; | import { CoreDomUtils } from '@services/utils/dom'; | ||||||
| import { CoreFileUploaderHelper } from '@features/fileuploader/services/fileuploader-helper'; | import { CoreFileUploaderHelper } from '@features/fileuploader/services/fileuploader-helper'; | ||||||
| import { CoreFileEntry } from '@services/file-helper'; | import { CoreFileEntry } from '@services/file-helper'; | ||||||
|  | import { CoreCourses } from '@features/courses/services/courses'; | ||||||
|  | import { CoreUtils } from '@services/utils/utils'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Component to render attachments, allow adding more and delete the current ones. |  * Component to render attachments, allow adding more and delete the current ones. | ||||||
| @ -44,13 +46,14 @@ import { CoreFileEntry } from '@services/file-helper'; | |||||||
| export class CoreAttachmentsComponent implements OnInit { | export class CoreAttachmentsComponent implements OnInit { | ||||||
| 
 | 
 | ||||||
|     @Input() files?: CoreFileEntry[]; // List of attachments. New attachments will be added to this array.
 |     @Input() files?: CoreFileEntry[]; // List of attachments. New attachments will be added to this array.
 | ||||||
|     @Input() maxSize?: number; // Max size for attachments. -1 means unlimited, 0 means user max size, not defined means unknown.
 |     @Input() maxSize?: number; // Max size. -1 means unlimited, 0 means course/user max size, not defined means unknown.
 | ||||||
|     @Input() maxSubmissions?: number; // Max number of attachments. -1 means unlimited, not defined means unknown limit.
 |     @Input() maxSubmissions?: number; // Max number of attachments. -1 means unlimited, not defined means unknown limit.
 | ||||||
|     @Input() component?: string; // Component the downloaded files will be linked to.
 |     @Input() component?: string; // Component the downloaded files will be linked to.
 | ||||||
|     @Input() componentId?: string | number; // Component ID.
 |     @Input() componentId?: string | number; // Component ID.
 | ||||||
|     @Input() allowOffline?: boolean | string; // Whether to allow selecting files in offline.
 |     @Input() allowOffline?: boolean | string; // Whether to allow selecting files in offline.
 | ||||||
|     @Input() acceptedTypes?: string; // List of supported filetypes. If undefined, all types supported.
 |     @Input() acceptedTypes?: string; // List of supported filetypes. If undefined, all types supported.
 | ||||||
|     @Input() required?: boolean; // Whether to display the required mark.
 |     @Input() required?: boolean; // Whether to display the required mark.
 | ||||||
|  |     @Input() courseId?: number; // Course ID.
 | ||||||
| 
 | 
 | ||||||
|     maxSizeReadable?: string; |     maxSizeReadable?: string; | ||||||
|     maxSubmissionsReadable?: string; |     maxSubmissionsReadable?: string; | ||||||
| @ -65,15 +68,7 @@ export class CoreAttachmentsComponent implements OnInit { | |||||||
|         this.maxSize = this.maxSize !== null ? Number(this.maxSize) : NaN; |         this.maxSize = this.maxSize !== null ? Number(this.maxSize) : NaN; | ||||||
| 
 | 
 | ||||||
|         if (this.maxSize === 0) { |         if (this.maxSize === 0) { | ||||||
|             const currentSite = CoreSites.getCurrentSite(); |             this.getMaxSizeOfArea(); | ||||||
|             const siteInfo = currentSite?.getInfo(); |  | ||||||
| 
 |  | ||||||
|             if (siteInfo?.usermaxuploadfilesize) { |  | ||||||
|                 this.maxSize = siteInfo.usermaxuploadfilesize; |  | ||||||
|                 this.maxSizeReadable = CoreTextUtils.bytesToSize(this.maxSize, 2); |  | ||||||
|             } else { |  | ||||||
|                 this.maxSizeReadable = Translate.instant('core.unknown'); |  | ||||||
|             } |  | ||||||
|         } else if (this.maxSize > 0) { |         } else if (this.maxSize > 0) { | ||||||
|             this.maxSizeReadable = CoreTextUtils.bytesToSize(this.maxSize, 2); |             this.maxSizeReadable = CoreTextUtils.bytesToSize(this.maxSize, 2); | ||||||
|         } else if (this.maxSize === -1) { |         } else if (this.maxSize === -1) { | ||||||
| @ -97,6 +92,36 @@ export class CoreAttachmentsComponent implements OnInit { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Get max size of the area. | ||||||
|  |      * | ||||||
|  |      * @return Promise resolved when done. | ||||||
|  |      */ | ||||||
|  |     protected async getMaxSizeOfArea(): Promise<void> { | ||||||
|  |         if (this.courseId) { | ||||||
|  |             // Check course max size.
 | ||||||
|  |             const course = await CoreUtils.ignoreErrors(CoreCourses.getCourseByField('id', this.courseId)); | ||||||
|  | 
 | ||||||
|  |             if (course?.maxbytes) { | ||||||
|  |                 this.maxSize = course.maxbytes; | ||||||
|  |                 this.maxSizeReadable = CoreTextUtils.bytesToSize(this.maxSize, 2); | ||||||
|  | 
 | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Check user max size.
 | ||||||
|  |         const currentSite = CoreSites.getCurrentSite(); | ||||||
|  |         const siteInfo = currentSite?.getInfo(); | ||||||
|  | 
 | ||||||
|  |         if (siteInfo?.usermaxuploadfilesize) { | ||||||
|  |             this.maxSize = siteInfo.usermaxuploadfilesize; | ||||||
|  |             this.maxSizeReadable = CoreTextUtils.bytesToSize(this.maxSize, 2); | ||||||
|  |         } else { | ||||||
|  |             this.maxSizeReadable = Translate.instant('core.unknown'); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Add a new attachment. |      * Add a new attachment. | ||||||
|      */ |      */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user