Skip to content

Commit b0c494e

Browse files
committed
MOBILE-4616 chore: Move html mode classes to CoreHTMLClasses
1 parent 323ccc8 commit b0c494e

File tree

23 files changed

+141
-95
lines changed

23 files changed

+141
-95
lines changed

.github/workflows/testing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
cat circular-dependencies
7070
lines=$(cat circular-dependencies | wc -l)
7171
echo "Total circular dependencies: $lines"
72-
test $lines -eq 131
72+
test $lines -eq 130
7373
- name: JavaScript code compatibility
7474
run: |
7575
npx check-es-compat www/*.js --polyfills="\{Array,String,TypedArray\}.prototype.at,Object.hasOwn"

src/addons/mod/bigbluebuttonbn/components/index/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
} from '../../services/bigbluebuttonbn';
3434
import { ADDON_MOD_BBB_COMPONENT } from '../../constants';
3535
import { CoreLoadings } from '@services/loadings';
36-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
36+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
3737

3838
/**
3939
* Component that displays a Big Blue Button activity.
@@ -148,7 +148,7 @@ export class AddonModBBBIndexComponent extends CoreCourseModuleMainActivityCompo
148148

149149
this.recordings = recordingsTable.parsedData.map(recordingData => {
150150
const details: RecordingDetail[] = [];
151-
const playbacksEl = convertHTMLToHTMLElement(String(recordingData.playback));
151+
const playbacksEl = convertTextToHTMLElement(String(recordingData.playback));
152152
const playbacks: RecordingPlayback[] = Array.from(playbacksEl.querySelectorAll('a')).map(playbackAnchor => ({
153153
name: playbackAnchor.textContent ?? '',
154154
url: playbackAnchor.href,
@@ -165,7 +165,7 @@ export class AddonModBBBIndexComponent extends CoreCourseModuleMainActivityCompo
165165
value = CoreTimeUtils.userDate(Number(value), 'core.strftimedaydate');
166166
} else if (columnData.allowHTML && typeof value === 'string') {
167167
// If the HTML is empty, don't display it.
168-
const valueElement = convertHTMLToHTMLElement(value);
168+
const valueElement = convertTextToHTMLElement(value);
169169
if (!valueElement.querySelector('img') && (valueElement.textContent ?? '').trim() === '') {
170170
return;
171171
}

src/addons/mod/folder/services/handlers/module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { CoreModuleHandlerBase } from '@features/course/classes/module-base-hand
1818
import { CoreCourseModuleData } from '@features/course/services/course-helper';
1919
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/course/services/module-delegate';
2020
import { CoreNavigator } from '@services/navigator';
21-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
21+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
2222
import { makeSingleton } from '@singletons';
2323
import { ADDON_MOD_FOLDER_PAGE_NAME } from '../../constants';
2424

@@ -58,7 +58,7 @@ export class AddonModFolderModuleHandlerService extends CoreModuleHandlerBase im
5858

5959
if (module.description) {
6060
// Module description can contain the folder contents if it's inline, remove it.
61-
const descriptionElement = convertHTMLToHTMLElement(module.description);
61+
const descriptionElement = convertTextToHTMLElement(module.description);
6262

6363
Array.from(descriptionElement.querySelectorAll('.foldertree, .folderbuttons, .tertiary-navigation'))
6464
.forEach(element => element.remove());

src/addons/mod/lesson/services/lesson-helper.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {
2828
import { CoreTime } from '@singletons/time';
2929
import { CoreUtils } from '@services/utils/utils';
3030
import { AddonModLessonPageSubtype } from '../constants';
31-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
31+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
3232

3333
/**
3434
* Helper service that provides some features for quiz.
@@ -47,7 +47,7 @@ export class AddonModLessonHelperProvider {
4747
* @returns Formatted data.
4848
*/
4949
formatActivityLink(activityLink: string): AddonModLessonActivityLink {
50-
const element = convertHTMLToHTMLElement(activityLink);
50+
const element = convertTextToHTMLElement(activityLink);
5151
const anchor = element.querySelector('a');
5252

5353
if (!anchor) {
@@ -77,7 +77,7 @@ export class AddonModLessonHelperProvider {
7777
buttonText: '',
7878
content: '',
7979
};
80-
const element = convertHTMLToHTMLElement(html);
80+
const element = convertTextToHTMLElement(html);
8181

8282
// Search the input button.
8383
const button = <HTMLInputElement> element.querySelector('input[type="button"]');
@@ -101,7 +101,7 @@ export class AddonModLessonHelperProvider {
101101
*/
102102
getPageButtonsFromHtml(html: string): AddonModLessonPageButton[] {
103103
const buttons: AddonModLessonPageButton[] = [];
104-
const element = convertHTMLToHTMLElement(html);
104+
const element = convertTextToHTMLElement(html);
105105

106106
// Get the container of the buttons if it exists.
107107
let buttonsContainer = element.querySelector('.branchbuttoncontainer');
@@ -153,7 +153,7 @@ export class AddonModLessonHelperProvider {
153153
*/
154154
getPageContentsFromPageData(data: AddonModLessonGetPageDataWSResponse): string {
155155
// Search the page contents inside the whole page HTML. Use data.pagecontent because it's filtered.
156-
const element = convertHTMLToHTMLElement(data.pagecontent || '');
156+
const element = convertTextToHTMLElement(data.pagecontent || '');
157157
const contents = element.querySelector('.contents');
158158

159159
if (contents) {
@@ -179,7 +179,7 @@ export class AddonModLessonHelperProvider {
179179
* @returns Question data.
180180
*/
181181
getQuestionFromPageData(questionForm: FormGroup, pageData: AddonModLessonGetPageDataWSResponse): AddonModLessonQuestion {
182-
const element = convertHTMLToHTMLElement(pageData.pagecontent || '');
182+
const element = convertTextToHTMLElement(pageData.pagecontent || '');
183183

184184
// Get the container of the question answers if it exists.
185185
const fieldContainer = <HTMLElement> element.querySelector('.fcontainer');
@@ -464,7 +464,7 @@ export class AddonModLessonHelperProvider {
464464
* @returns Object with the data to render the answer. If the answer doesn't require any parsing, return a string with the HTML.
465465
*/
466466
getQuestionPageAnswerDataFromHtml(html: string): AddonModLessonAnswerData {
467-
const element = convertHTMLToHTMLElement(html);
467+
const element = convertTextToHTMLElement(html);
468468

469469
// Check if it has a checkbox.
470470
let input = element.querySelector<HTMLInputElement>('input[type="checkbox"][name*="answer"]');
@@ -589,7 +589,7 @@ export class AddonModLessonHelperProvider {
589589
* @returns Feedback without the question text.
590590
*/
591591
removeQuestionFromFeedback(html: string): string {
592-
const element = convertHTMLToHTMLElement(html);
592+
const element = convertTextToHTMLElement(html);
593593

594594
// Remove the question text.
595595
CoreDomUtils.removeElement(element, '.generalbox:not(.feedback):not(.correctanswer)');

src/addons/mod/lesson/services/lesson.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { CoreSite } from '@classes/sites/site';
1818
import { CoreCourseCommonModWSOptions } from '@features/course/services/course';
1919
import { CoreCourseLogHelper } from '@features/course/services/log-helper';
2020
import { CoreSites, CoreSitesCommonWSOptions, CoreSitesReadingStrategy } from '@services/sites';
21-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
21+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
2222
import { CoreText } from '@singletons/text';
2323
import { CoreUtils } from '@services/utils/utils';
2424
import { CoreWSExternalFile, CoreWSExternalWarning } from '@services/ws';
@@ -164,7 +164,7 @@ export class AddonModLessonProvider {
164164
if (page.answerdata && !this.answerPageIsQuestion(page)) {
165165
// It isn't a question page, but it can be an end of branch, etc. Check if the first answer has a button.
166166
if (page.answerdata.answers && page.answerdata.answers[0]) {
167-
const element = convertHTMLToHTMLElement(page.answerdata.answers[0][0]);
167+
const element = convertTextToHTMLElement(page.answerdata.answers[0][0]);
168168

169169
return !!element.querySelector('input[type="button"]');
170170
}

src/addons/mod/quiz/services/quiz-helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import { CoreGroups } from '@services/groups';
4242
import { CoreTimeUtils } from '@services/utils/time';
4343
import { CoreModals } from '@services/modals';
4444
import { CoreLoadings } from '@services/loadings';
45-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
45+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
4646

4747
/**
4848
* Helper service that provides some features for quiz.
@@ -302,7 +302,7 @@ export class AddonModQuizHelperProvider {
302302
* @returns Question's mark.
303303
*/
304304
getQuestionMarkFromHtml(html: string): string | undefined {
305-
const element = convertHTMLToHTMLElement(html);
305+
const element = convertTextToHTMLElement(html);
306306

307307
return CoreDomUtils.getContentsOfElement(element, '.grade');
308308
}

src/addons/mod/quiz/services/quiz.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
} from '@features/question/services/question';
3030
import { CoreQuestionDelegate } from '@features/question/services/question-delegate';
3131
import { CoreSites, CoreSitesCommonWSOptions, CoreSitesReadingStrategy } from '@services/sites';
32-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
32+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
3333
import { CoreTimeUtils } from '@services/utils/time';
3434
import { CoreUtils } from '@services/utils/utils';
3535
import { CoreStatusWithWarningsWSResponse, CoreWSExternalFile, CoreWSExternalWarning } from '@services/ws';
@@ -1588,7 +1588,7 @@ export class AddonModQuizProvider {
15881588
* @returns Whether it's blocked.
15891589
*/
15901590
isQuestionBlocked(question: CoreQuestionQuestionParsed): boolean {
1591-
const element = convertHTMLToHTMLElement(question.html);
1591+
const element = convertTextToHTMLElement(question.html);
15921592

15931593
return !!element.querySelector('.mod_quiz-blocked_question_warning');
15941594
}

src/addons/qtype/calculated/services/handlers/calculated.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Injectable, Type } from '@angular/core';
1616

1717
import { CoreQuestionQuestionParsed, CoreQuestionsAnswers } from '@features/question/services/question';
1818
import { CoreQuestionHandler } from '@features/question/services/question-delegate';
19-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
19+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
2020
import { CoreUtils } from '@services/utils/utils';
2121
import { makeSingleton } from '@singletons';
2222
import { AddonQtypeCalculatedComponent } from '../../component/calculated';
@@ -53,7 +53,7 @@ export class AddonQtypeCalculatedHandlerService implements CoreQuestionHandler {
5353
*/
5454
hasSeparateUnitField(question: CoreQuestionQuestionParsed): boolean {
5555
if (!question.parsedSettings) {
56-
const element = convertHTMLToHTMLElement(question.html);
56+
const element = convertTextToHTMLElement(question.html);
5757

5858
return !!(element.querySelector('select[name*=unit]') || element.querySelector('input[type="radio"]'));
5959
}

src/addons/qtype/essay/services/handlers/essay.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { CoreQuestionHandler } from '@features/question/services/question-delega
2222
import { CoreQuestionHelper } from '@features/question/services/question-helper';
2323
import { CoreFileSession } from '@services/file-session';
2424
import { CoreSites } from '@services/sites';
25-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
25+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
2626
import { CoreText } from '@singletons/text';
2727
import { CoreUtils } from '@services/utils/utils';
2828
import { CoreWSFile } from '@services/ws';
@@ -90,7 +90,7 @@ export class AddonQtypeEssayHandlerService implements CoreQuestionHandler {
9090
};
9191
}
9292

93-
const element = convertHTMLToHTMLElement(question.html);
93+
const element = convertTextToHTMLElement(question.html);
9494

9595
return {
9696
text: !!element.querySelector('textarea[name*=_answer]'),
@@ -116,7 +116,7 @@ export class AddonQtypeEssayHandlerService implements CoreQuestionHandler {
116116
* @inheritdoc
117117
*/
118118
getPreventSubmitMessage(question: CoreQuestionQuestionParsed): string | undefined {
119-
const element = convertHTMLToHTMLElement(question.html);
119+
const element = convertTextToHTMLElement(question.html);
120120
const uploadFilesSupported = question.responsefileareas !== undefined;
121121

122122
if (!uploadFilesSupported && element.querySelector('div[id*=filemanager]')) {
@@ -293,7 +293,7 @@ export class AddonQtypeEssayHandlerService implements CoreQuestionHandler {
293293
siteId?: string,
294294
): Promise<void> {
295295

296-
const element = convertHTMLToHTMLElement(question.html);
296+
const element = convertTextToHTMLElement(question.html);
297297
const attachmentsInput = <HTMLInputElement> element.querySelector('.attachments input[name*=_attachments]');
298298

299299
// Search the textarea to get its name.
@@ -375,7 +375,7 @@ export class AddonQtypeEssayHandlerService implements CoreQuestionHandler {
375375
siteId?: string,
376376
): Promise<void> {
377377

378-
const element = convertHTMLToHTMLElement(question.html);
378+
const element = convertTextToHTMLElement(question.html);
379379
const attachmentsInput = <HTMLInputElement> element.querySelector('.attachments input[name*=_attachments]');
380380

381381
if (attachmentsInput) {
@@ -454,7 +454,7 @@ export class AddonQtypeEssayHandlerService implements CoreQuestionHandler {
454454
isPlainText = question.parsedSettings.responseformat == 'monospaced' ||
455455
question.parsedSettings.responseformat == 'plain';
456456
} else {
457-
const questionEl = convertHTMLToHTMLElement(question.html);
457+
const questionEl = convertTextToHTMLElement(question.html);
458458
isPlainText = !!questionEl.querySelector('.qtype_essay_monospaced') || !!questionEl.querySelector('.qtype_essay_plain');
459459
}
460460

src/core/components/show-password/show-password.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import { Component, AfterViewInit, Input, ContentChild, ViewEncapsulation } from '@angular/core';
1616
import { IonInput } from '@ionic/angular';
17-
import { convertHTMLToHTMLElement } from '@/core/utils/create-html-element';
17+
import { convertTextToHTMLElement } from '@/core/utils/create-html-element';
1818

1919
import { CoreUtils } from '@services/utils/utils';
2020
import { CoreLogger } from '@singletons/logger';
@@ -84,7 +84,7 @@ export class CoreShowPasswordComponent implements AfterViewInit {
8484
return;
8585
}
8686

87-
const toggle = convertHTMLToHTMLElement('<ion-input-password-toggle slot="end" />');
87+
const toggle = convertTextToHTMLElement('<ion-input-password-toggle slot="end" />');
8888
input.parentElement?.appendChild(toggle.children[0]);
8989
}
9090

0 commit comments

Comments
 (0)