Skip to content
This repository has been archived by the owner on Jun 12, 2024. It is now read-only.

Commit

Permalink
Merge pull request #726 from kkrumlian/6.2.2.oc
Browse files Browse the repository at this point in the history
Merging latest master into 6.2.2.oc
  • Loading branch information
svadla-oc committed Dec 1, 2023
2 parents 1ac870c + 374dcb3 commit 758195e
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 57 deletions.
111 changes: 55 additions & 56 deletions public/js/src/module/controller-webform-oc.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,62 +170,6 @@ function init(formEl, data, loadErrors = []) {
// set form eventhandlers before initializing form
_setFormEventHandlers();

const handleGoToIrrelevant = (e) => {
let err;
// In OC hidden go_to fields should show loadError
// regular questions:
if (!e.target.classList.contains('or-appearance-dn')) {
err = t('alert.goto.irrelevant');
}
// Discrepancy notes
else {
err = `${t('alert.goto.irrelevant')} `;
const goToErrorLink = settings.goToErrorUrl
? `<a href="${settings.goToErrorUrl}">${settings.goToErrorUrl}</a>`
: '';
if (settings.interface === 'queries') {
err += goToErrorLink
? t('alert.goto.msg2', {
miniform: goToErrorLink,
// switch off escaping
interpolation: {
escapeValue: false,
},
})
: t('alert.goto.msg1');
}
}
// For goto targets that are discrepancy notes and are relevant but their linked question is not,
// the goto-irrelevant event will be fired twice. We can safely remove the eventlistener after the first
// event is caught (for all cases).
form.view.html.removeEventListener(
events.GoToIrrelevant().type,
handleGoToIrrelevant
);
goToHiddenErrors = [err];
loadErrors.push(err);
};

const handleGoToInvisible = () => {
form.view.html.removeEventListener(
events.GoToInvisible().type,
handleGoToInvisible
);
if (settings.interface === 'sdv') {
loadErrors.push(`${t('alert.goto.invisible')} `);
}
};

// listen for "goto-irrelevant" event and add error
form.view.html.addEventListener(
events.GoToIrrelevant().type,
handleGoToIrrelevant
);
form.view.html.addEventListener(
events.GoToInvisible().type,
handleGoToInvisible
);

loadErrors = loadErrors.concat(form.init());

// Determine whether UI language should be attempted to be switched.
Expand Down Expand Up @@ -293,6 +237,61 @@ function init(formEl, data, loadErrors = []) {
// this is placed in between form.init() and form.goTo().
$('.main-loader').remove();
if (settings.goTo && location.hash) {
const handleGoToIrrelevant = (e) => {
let err;
// In OC hidden go_to fields should show loadError
// regular questions:
if (!e.target.classList.contains('or-appearance-dn')) {
err = t('alert.goto.irrelevant');
}
// Discrepancy notes
else {
err = `${t('alert.goto.irrelevant')} `;
const goToErrorLink = settings.goToErrorUrl
? `<a href="${settings.goToErrorUrl}">${settings.goToErrorUrl}</a>`
: '';
if (settings.interface === 'queries') {
err += goToErrorLink
? t('alert.goto.msg2', {
miniform: goToErrorLink,
// switch off escaping
interpolation: {
escapeValue: false,
},
})
: t('alert.goto.msg1');
}
}
// For goto targets that are discrepancy notes and are relevant but their linked question is not,
// the goto-irrelevant event will be fired twice. We can safely remove the eventlistener after the first
// event is caught (for all cases).
form.view.html.removeEventListener(
events.GoToIrrelevant().type,
handleGoToIrrelevant
);
goToHiddenErrors = [err];
loadErrors.push(err);
};

const handleGoToInvisible = () => {
form.view.html.removeEventListener(
events.GoToInvisible().type,
handleGoToInvisible
);
if (settings.interface === 'sdv') {
loadErrors.push(`${t('alert.goto.invisible')} `);
}
};

form.view.html.addEventListener(
events.GoToIrrelevant().type,
handleGoToIrrelevant
);
form.view.html.addEventListener(
events.GoToInvisible().type,
handleGoToInvisible
);

// form.goTo returns an array of 1 error if it has error. We're using our special
// knowledge of Enketo Core to replace this error
goToErrors = form.goTo(
Expand Down
25 changes: 25 additions & 0 deletions public/js/src/module/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,31 @@ import reasons from './reasons';
import settings from './settings';
import gui from './gui';

// Contains fix for https://github.com/OpenClinica/enketo-express-oc/issues/720
// This function should be removed once PR https://github.com/enketo/enketo/pull/1286 is merged
// and published
pageModule.flipToPageContaining = function ($e) {
const e = $e[0];
const closestPage = e.closest('[role="page"]');

if (closestPage) {
this._flipTo(closestPage);
} else if (e.closest('.question')) {
// If $e is a comment question, and it is not inside a group, there will be no closestPage.
const referer = e.querySelector('[data-for]');
const ancestor = e.closest('.or-repeat, form.or');
if (referer && ancestor) {
const linkedQuestion = ancestor.querySelector(
`[name="${referer.dataset.for}"]`
);
if (linkedQuestion) {
this._flipTo(linkedQuestion.closest('[role="page"]'));
}
}
}
this.$toc.parent().find('.pages-toc__overlay').click();
};

/*
* The only thing we want to change in this function for OC,
* is to NOT flip to the next page when a repeat is the same as a page and
Expand Down
18 changes: 17 additions & 1 deletion widget/discrepancy-note/dn-widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -1585,6 +1585,20 @@ class Comment extends Widget {
}
}

_encodeHtml(str) {
return str.replace(
/[&<>'"]/g,
(tag) =>
({
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
"'": '&#39;',
'"': '&quot;',
}[tag])
);
}

_getHistoryRow(item, options = {}) {
const types = {
comment: '<span class="icon fa-comment-o"> </span>',
Expand Down Expand Up @@ -1638,7 +1652,9 @@ class Comment extends Widget {
types[item.type]
}</span>
<span class="or-comment-widget__content__history__row__main__comment">
<span class="or-comment-widget__content__history__row__main__comment__text">${msg}</span>
<span class="or-comment-widget__content__history__row__main__comment__text">${this._encodeHtml(
msg
)}</span>
<span class="or-comment-widget__content__history__row__main__comment__meta">
${
assignee
Expand Down

0 comments on commit 758195e

Please sign in to comment.