Skip to content

Commit

Permalink
Merge pull request #34909 from dimagi/ml/change-language-case-list-se…
Browse files Browse the repository at this point in the history
…arch

Change language on case search/case list screens
  • Loading branch information
minhaminha authored Aug 8, 2024
2 parents e97b0e1 + a08072b commit 823141a
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
'cloudcare/js/form_entry/task_queue',
'cloudcare/js/form_entry/utils',
'cloudcare/js/form_entry/form_ui',
'cloudcare/js/formplayer/utils/utils',
], function (
$,
ko,
Expand All @@ -18,7 +19,8 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
errors,
taskQueue,
formEntryUtils,
formUI
formUI,
utils
) {
function WebFormSession(params) {
var self = {};
Expand Down Expand Up @@ -273,7 +275,6 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
'formplayer.' + constants.PREV_QUESTION,
'formplayer.' + constants.QUESTIONS_FOR_INDEX,
'formplayer.' + constants.FORMATTED_QUESTIONS,
'formplayer.' + constants.CHANGE_LANG,
].join(' '));
$.subscribe('formplayer.' + constants.SUBMIT, function (e, form) {
self.submitForm(form);
Expand Down Expand Up @@ -305,16 +306,14 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
$.subscribe('formplayer.' + constants.FORMATTED_QUESTIONS, function (e, callback) {
self.getFormattedQuestions(callback);
});
$.subscribe('formplayer.' + constants.CHANGE_LANG, function (e, lang) {
self.changeLang(lang);
});
$.subscribe('formplayer.' + constants.DIRTY, function (e) {
hqRequire([
"cloudcare/js/formplayer/app",
], function (FormplayerFrontend) {
FormplayerFrontend.trigger('setUnsavedFormInProgress');
});
});
applyLangListener(self);
};

self.loadForm = function ($form, initLang) {
Expand Down Expand Up @@ -479,7 +478,7 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
};

self.changeLang = function (lang) {
this.serverRequest(
self.serverRequest(
{
'action': constants.CHANGE_LOCALE,
'locale': lang,
Expand Down Expand Up @@ -610,7 +609,25 @@ hqDefine("cloudcare/js/form_entry/web_form_session", [
return self;
}

function applyLangListener(session) {
$.unsubscribe('formplayer.' + constants.CHANGE_LANG);
const fn = session ? session.changeLang : changeLang;
$.subscribe('formplayer.' + constants.CHANGE_LANG, function (e, lang) {
fn(lang);
});

}

function changeLang(lang) {
hqRequire(["cloudcare/js/formplayer/menus/controller"], function (menusController) {
var urlObject = utils.currentUrlToObject();
urlObject.changeLang = lang;
menusController.selectMenu(urlObject);
});
}

return {
WebFormSession: WebFormSession,
applyLangListener: applyLangListener,
};
});
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ hqDefine("cloudcare/js/formplayer/menus/api", [
"app_id": params.appId,
"endpoint_id": params.endpointId,
"endpoint_args": params.endpointArgs,
"locale": displayOptions.language,
"locale": params.changeLang || displayOptions.language,
"selections": params.selections,
"offset": params.page * casesPerPage,
"search_text": params.search,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,16 @@ hqDefine("cloudcare/js/formplayer/menus/collections", [
'sentry_browser',
'cloudcare/js/formplayer/app',
'cloudcare/js/formplayer/utils/utils',
'cloudcare/js/formplayer/users/models',
"cloudcare/js/form_entry/web_form_session",
], function (
_,
Backbone,
Sentry,
FormplayerFrontend,
Utils
Utils,
UsersModels,
webFormSession
) {
function addBreadcrumb(collection, type, data) {
Sentry.addBreadcrumb({
Expand Down Expand Up @@ -110,6 +114,10 @@ hqDefine("cloudcare/js/formplayer/menus/collections", [
_.pick(response, ["queryKey", "selections"]),
_.identity
);
if (response.locales && !response.tree) {
this.langs = response.locales.slice(1);
webFormSession.applyLangListener();
}
if (response.commands) {
_.extend(this, _.pick(response, this.commandProperties));
addBreadcrumb(this, "menu", _.extend(sentryData, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,7 @@ hqDefine("cloudcare/js/formplayer/menus/controller", [
if (menuResponse.breadcrumbs) {
menusUtils.showBreadcrumbs(menuResponse.breadcrumbs);
if (!appPreview) {
let isFormEntry = !menuResponse.queryKey;
if (isFormEntry) {
menusUtils.showMenuDropdown(menuResponse.langs, initialPageData.get('lang_code_name_mapping'));
}
if (menuResponse.type === constants.ENTITIES) {
menusUtils.showMenuDropdown();
}
menusUtils.showMenuDropdown(menuResponse.langs, initialPageData.get('lang_code_name_mapping'));
}
} else {
FormplayerFrontend.regions.getRegion('breadcrumb').empty();
Expand Down

0 comments on commit 823141a

Please sign in to comment.