MOBILE-4247 mod_data: Add otherfields support
This commit is contained in:
		
							parent
							
								
									cfaa844414
								
							
						
					
					
						commit
						7eb86ced57
					
				| @ -125,6 +125,18 @@ export class AddonModDataSearchComponent implements OnInit { | |||||||
|         [placeholder]="\'addon.mod_data.authorlastname\' | translate" formControlName="lastname"></ion-input></span>'; |         [placeholder]="\'addon.mod_data.authorlastname\' | translate" formControlName="lastname"></ion-input></span>'; | ||||||
|         template = template.replace(replaceRegex, render); |         template = template.replace(replaceRegex, render); | ||||||
| 
 | 
 | ||||||
|  |         // Searching by otherfields.
 | ||||||
|  |         const regex = new RegExp('##otherfields##', 'gi'); | ||||||
|  | 
 | ||||||
|  |         if (template.match(regex)) { | ||||||
|  |             const unusedFields = this.fieldsArray.filter(field => !template.includes(`[field]="fields[${field.id}]`)).map((field) => | ||||||
|  |                 `<p><strong>${field.name}</strong></p>` + | ||||||
|  |                     '<p><addon-mod-data-field-plugin mode="search" [field]="fields[' + field.id + | ||||||
|  |                     ']" [form]="form" [searchFields]="search"></addon-mod-data-field-plugin><p>'); | ||||||
|  | 
 | ||||||
|  |             template = template.replace(regex, unusedFields.join('')); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         // Searching by tags is not supported.
 |         // Searching by tags is not supported.
 | ||||||
|         replaceRegex = new RegExp('##tags##', 'gi'); |         replaceRegex = new RegExp('##tags##', 'gi'); | ||||||
|         const message = CoreTag.areTagsAvailableInSite() ? |         const message = CoreTag.areTagsAvailableInSite() ? | ||||||
|  | |||||||
| @ -440,6 +440,18 @@ export class AddonModDataEditPage implements OnInit { | |||||||
|             template = template.replace(replaceRegEx, 'field_' + field.id); |             template = template.replace(replaceRegEx, 'field_' + field.id); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|  |         const regex = new RegExp('##otherfields##', 'gi'); | ||||||
|  | 
 | ||||||
|  |         if (template.match(regex)) { | ||||||
|  |             const unusedFields = this.fieldsArray.filter(field => !template.includes(`[field]="fields[${field.id}]`)).map((field) => | ||||||
|  |                 `<p><strong>${field.name}</strong></p>` + | ||||||
|  |                 '<p><addon-mod-data-field-plugin [class.has-errors]="!!errors[' + field.id + ']" mode="edit" \ | ||||||
|  |                 [field]="fields[' + field.id + ']" [value]="contents[' + field.id + ']" [form]="form" [database]="database" \ | ||||||
|  |                 [error]="errors[' + field.id + ']" (onFieldInit)="onFieldInit($event)"></addon-mod-data-field-plugin><p>'); | ||||||
|  | 
 | ||||||
|  |             template = template.replace(regex, unusedFields.join('')); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         // Editing tags is not supported.
 |         // Editing tags is not supported.
 | ||||||
|         const replaceRegEx = new RegExp('##tags##', 'gi'); |         const replaceRegEx = new RegExp('##tags##', 'gi'); | ||||||
|         const message = CoreTag.areTagsAvailableInSite() |         const message = CoreTag.areTagsAvailableInSite() | ||||||
|  | |||||||
| @ -191,9 +191,10 @@ export class AddonModDataHelperProvider { | |||||||
|      * @param template Template HMTL. |      * @param template Template HMTL. | ||||||
|      * @param fields Fields that defines every content in the entry. |      * @param fields Fields that defines every content in the entry. | ||||||
|      * @param entry Entry. |      * @param entry Entry. | ||||||
|      * @param offset Entry offset. |  | ||||||
|      * @param mode Mode list or show. |      * @param mode Mode list or show. | ||||||
|      * @param actions Actions that can be performed to the record. |      * @param actions Actions that can be performed to the record. | ||||||
|  |      * @param options Show fields options (sortBy, offset, etc). | ||||||
|  |      * | ||||||
|      * @returns Generated HTML. |      * @returns Generated HTML. | ||||||
|      */ |      */ | ||||||
|     displayShowFields( |     displayShowFields( | ||||||
| @ -225,28 +226,54 @@ export class AddonModDataHelperProvider { | |||||||
|         for (const action in actions) { |         for (const action in actions) { | ||||||
|             const replaceRegex = new RegExp('##' + action + '##', 'gi'); |             const replaceRegex = new RegExp('##' + action + '##', 'gi'); | ||||||
|             // Is enabled?
 |             // Is enabled?
 | ||||||
|             if (actions[action]) { |             if (!actions[action]) { | ||||||
|                 let render = ''; |  | ||||||
|                 if (action == AddonModDataAction.MOREURL) { |  | ||||||
|                     // Render more url directly because it can be part of an HTML attribute.
 |  | ||||||
|                     render = CoreSites.getRequiredCurrentSite().getURL() + '/mod/data/view.php?d={{database.id}}&rid=' + entry.id; |  | ||||||
|                 } else if (action == 'approvalstatus') { |  | ||||||
|                     render = Translate.instant('addon.mod_data.' + (entry.approved ? 'approved' : 'notapproved')); |  | ||||||
|                 } else { |  | ||||||
|                     render = `<addon-mod-data-action action="${action}" [entry]="entries[${entry.id}]" mode="${mode}" ` + |  | ||||||
|                         '[database]="database" [access]="access" [title]="title" ' + |  | ||||||
|                         (options.offset !== undefined ? `[offset]="${options.offset}" ` : '') + |  | ||||||
|                         (options.sortBy !== undefined ? `[sortBy]="${options.sortBy}" ` : '') + |  | ||||||
|                         (options.sortDirection !== undefined ? `sortDirection="${options.sortDirection}" ` : '') + |  | ||||||
|                         '[group]="group"></addon-mod-data-action>'; |  | ||||||
|                 } |  | ||||||
|                 template = template.replace(replaceRegex, render); |  | ||||||
|             } else { |  | ||||||
|                 template = template.replace(replaceRegex, ''); |                 template = template.replace(replaceRegex, ''); | ||||||
|  | 
 | ||||||
|  |                 continue; | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|  |             if (action == AddonModDataAction.MOREURL) { | ||||||
|  |                 // Render more url directly because it can be part of an HTML attribute.
 | ||||||
|  |                 template = template.replace( | ||||||
|  |                     replaceRegex, | ||||||
|  |                     CoreSites.getRequiredCurrentSite().getURL() + '/mod/data/view.php?d={{database.id}}&rid=' + entry.id, | ||||||
|  |                 ); | ||||||
|  | 
 | ||||||
|  |                 continue; | ||||||
|  |             } else if (action == 'approvalstatus') { | ||||||
|  |                 template = template.replace( | ||||||
|  |                     replaceRegex, | ||||||
|  |                     Translate.instant('addon.mod_data.' + (entry.approved ? 'approved' : 'notapproved')), | ||||||
|  |                 ); | ||||||
|  | 
 | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             template = template.replace( | ||||||
|  |                 replaceRegex, | ||||||
|  |                 `<addon-mod-data-action action="${action}" [entry]="entries[${entry.id}]" mode="${mode}" ` + | ||||||
|  |                 '[database]="database" [access]="access" [title]="title" ' + | ||||||
|  |                 (options.offset !== undefined ? `[offset]="${options.offset}" ` : '') + | ||||||
|  |                 (options.sortBy !== undefined ? `[sortBy]="${options.sortBy}" ` : '') + | ||||||
|  |                 (options.sortDirection !== undefined ? `sortDirection="${options.sortDirection}" ` : '') + | ||||||
|  |                 '[group]="group"></addon-mod-data-action>', | ||||||
|  |             ); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return template; |         // Replace otherfields found on template.
 | ||||||
|  |         const regex = new RegExp('##otherfields##', 'gi'); | ||||||
|  | 
 | ||||||
|  |         if (!template.match(regex)) { | ||||||
|  |             return template; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const unusedFields = fields.filter(field => !template.includes(`[field]="fields[${field.id}]`)).map((field) => | ||||||
|  |             `<p><strong>${field.name}</strong></p>` + | ||||||
|  |                 '<p><addon-mod-data-field-plugin [field]="fields[' + field.id + ']" [value]="entries[' + entry.id + | ||||||
|  |                 '].contents[' + field.id + ']" mode="' + mode + '" [database]="database" (gotoEntry)="gotoEntry($event)">' + | ||||||
|  |                 '</addon-mod-data-field-plugin></p>'); | ||||||
|  | 
 | ||||||
|  |         return template.replace(regex, unusedFields.join('')); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user