({
executionEnvironment: t`The execution environment that will be used for jobs that use this project. This will be used as fallback when an execution environment has not been explicitly assigned at the job template or workflow level.`,
projectBasePath: (brandName = '') => (
@@ -132,6 +132,6 @@ const projectHelpTextStrings = {
considered current, and a new project update will be
performed.`,
},
-};
+});
export default projectHelpTextStrings;
diff --git a/awx/ui/src/screens/Project/shared/ProjectForm.js b/awx/ui/src/screens/Project/shared/ProjectForm.js
index 66a0aa8cd5..88d8732eab 100644
--- a/awx/ui/src/screens/Project/shared/ProjectForm.js
+++ b/awx/ui/src/screens/Project/shared/ProjectForm.js
@@ -17,7 +17,7 @@ import ExecutionEnvironmentLookup from 'components/Lookup/ExecutionEnvironmentLo
import { CredentialTypesAPI, ProjectsAPI } from 'api';
import { required } from 'util/validators';
import { FormColumnLayout, SubFormLayout } from 'components/FormLayout';
-import projectHelpText from './Project.helptext';
+import getProjectHelpText from './Project.helptext';
import {
GitSubForm,
SvnSubForm,
@@ -91,6 +91,7 @@ function ProjectFormFields({
setScmSubFormState,
scmSubFormState,
}) {
+ const projectHelpText = getProjectHelpText();
const scmFormFields = {
scm_url: '',
scm_branch: '',
diff --git a/awx/ui/src/screens/Project/shared/ProjectSubForms/ArchiveSubForm.js b/awx/ui/src/screens/Project/shared/ProjectSubForms/ArchiveSubForm.js
index 784c6275c4..4bc35817d2 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSubForms/ArchiveSubForm.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSubForms/ArchiveSubForm.js
@@ -1,6 +1,6 @@
import 'styled-components/macro';
import React from 'react';
-import projectHelpText from '../Project.helptext';
+import getProjectHelpText from '../Project.helptext';
import {
UrlFormField,
@@ -12,15 +12,18 @@ const ArchiveSubForm = ({
credential,
onCredentialSelection,
scmUpdateOnLaunch,
-}) => (
- <>
-
-
-
- >
-);
+}) => {
+ const projectHelpText = getProjectHelpText();
+ return (
+ <>
+
+
+
+ >
+ );
+};
export default ArchiveSubForm;
diff --git a/awx/ui/src/screens/Project/shared/ProjectSubForms/GitSubForm.js b/awx/ui/src/screens/Project/shared/ProjectSubForms/GitSubForm.js
index 533aa05aef..7a41b08090 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSubForms/GitSubForm.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSubForms/GitSubForm.js
@@ -11,8 +11,7 @@ import {
ScmCredentialFormField,
ScmTypeOptions,
} from './SharedFields';
-
-import projectHelpStrings from '../Project.helptext';
+import getProjectHelpStrings from '../Project.helptext';
const GitSubForm = ({
credential,
@@ -22,6 +21,7 @@ const GitSubForm = ({
const docsURL = `${getDocsBaseUrl(
useConfig()
)}/html/userguide/projects.html#manage-playbooks-using-source-control`;
+ const projectHelpStrings = getProjectHelpStrings();
return (
<>
diff --git a/awx/ui/src/screens/Project/shared/ProjectSubForms/ManualSubForm.js b/awx/ui/src/screens/Project/shared/ProjectSubForms/ManualSubForm.js
index 7984a10040..e1400664b7 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSubForms/ManualSubForm.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSubForms/ManualSubForm.js
@@ -8,13 +8,14 @@ import AnsibleSelect from 'components/AnsibleSelect';
import FormField from 'components/FormField';
import Popover from 'components/Popover';
import useBrandName from 'hooks/useBrandName';
-import projectHelpStrings from '../Project.helptext';
+import getProjectHelpStrings from '../Project.helptext';
const ManualSubForm = ({
localPath,
project_base_dir,
project_local_paths,
}) => {
+ const projectHelpStrings = getProjectHelpStrings();
const brandName = useBrandName();
const localPaths = [...new Set([...project_local_paths, localPath])];
const options = [
diff --git a/awx/ui/src/screens/Project/shared/ProjectSubForms/SharedFields.js b/awx/ui/src/screens/Project/shared/ProjectSubForms/SharedFields.js
index 7f2f9139a4..1db0242bb8 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSubForms/SharedFields.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSubForms/SharedFields.js
@@ -7,7 +7,7 @@ import CredentialLookup from 'components/Lookup/CredentialLookup';
import FormField, { CheckboxField } from 'components/FormField';
import { required } from 'util/validators';
import { FormCheckboxLayout, FormFullWidthLayout } from 'components/FormLayout';
-import projectHelpStrings from '../Project.helptext';
+import getProjectHelpStrings from '../Project.helptext';
export const UrlFormField = ({ tooltip }) => (
(
/>
);
-export const BranchFormField = ({ label }) => (
-
-);
+export const BranchFormField = ({ label }) => {
+ const projectHelpStrings = getProjectHelpStrings();
+ return (
+
+ );
+};
export const ScmCredentialFormField = ({
credential,
@@ -59,6 +62,7 @@ export const ScmCredentialFormField = ({
export const ScmTypeOptions = ({ scmUpdateOnLaunch, hideAllowOverride }) => {
const { values } = useFormikContext();
+ const projectHelpStrings = getProjectHelpStrings();
return (
diff --git a/awx/ui/src/screens/Project/shared/ProjectSubForms/SvnSubForm.js b/awx/ui/src/screens/Project/shared/ProjectSubForms/SvnSubForm.js
index 0add06dac0..9de7098a9d 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSubForms/SvnSubForm.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSubForms/SvnSubForm.js
@@ -1,7 +1,7 @@
import 'styled-components/macro';
import React from 'react';
import { t } from '@lingui/macro';
-import projectHelpStrings from '../Project.helptext';
+import getProjectHelpStrings from '../Project.helptext';
import {
UrlFormField,
@@ -14,16 +14,19 @@ const SvnSubForm = ({
credential,
onCredentialSelection,
scmUpdateOnLaunch,
-}) => (
- <>
-
-
-
-
- >
-);
+}) => {
+ const projectHelpStrings = getProjectHelpStrings();
+ return (
+ <>
+
+
+
+
+ >
+ );
+};
export default SvnSubForm;
diff --git a/awx/ui/src/screens/Project/shared/ProjectSyncButton.js b/awx/ui/src/screens/Project/shared/ProjectSyncButton.js
index d43c132e93..4daab8b1c3 100644
--- a/awx/ui/src/screens/Project/shared/ProjectSyncButton.js
+++ b/awx/ui/src/screens/Project/shared/ProjectSyncButton.js
@@ -11,9 +11,10 @@ import useRequest, { useDismissableError } from 'hooks/useRequest';
import AlertModal from 'components/AlertModal';
import ErrorDetail from 'components/ErrorDetail';
import { ProjectsAPI } from 'api';
-import projectHelpStrings from './Project.helptext';
+import getProjectHelpStrings from './Project.helptext';
function ProjectSyncButton({ projectId, lastJobStatus = null }) {
+ const projectHelpStrings = getProjectHelpStrings();
const match = useRouteMatch();
const { request: handleSync, error: syncError } = useRequest(
diff --git a/awx/ui/src/screens/Template/JobTemplateDetail/JobTemplateDetail.js b/awx/ui/src/screens/Template/JobTemplateDetail/JobTemplateDetail.js
index c99348c33c..22506185d6 100644
--- a/awx/ui/src/screens/Template/JobTemplateDetail/JobTemplateDetail.js
+++ b/awx/ui/src/screens/Template/JobTemplateDetail/JobTemplateDetail.js
@@ -34,7 +34,7 @@ import useRequest, { useDismissableError } from 'hooks/useRequest';
import useBrandName from 'hooks/useBrandName';
import ExecutionEnvironmentDetail from 'components/ExecutionEnvironmentDetail';
import { relatedResourceDeleteRequests } from 'util/getRelatedResourceDeleteDetails';
-import helpText from '../shared/JobTemplate.helptext';
+import getHelpText from '../shared/JobTemplate.helptext';
function JobTemplateDetail({ template }) {
const {
@@ -68,7 +68,7 @@ function JobTemplateDetail({ template }) {
const { id: templateId } = useParams();
const history = useHistory();
const brandName = useBrandName();
-
+ const helpText = getHelpText();
const {
isLoading: isLoadingInstanceGroups,
request: fetchInstanceGroups,
diff --git a/awx/ui/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.js b/awx/ui/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.js
index a3316b527c..f3a58c7b48 100644
--- a/awx/ui/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.js
+++ b/awx/ui/src/screens/Template/WorkflowJobTemplateDetail/WorkflowJobTemplateDetail.js
@@ -25,7 +25,7 @@ import Sparkline from 'components/Sparkline';
import { toTitleCase } from 'util/strings';
import { relatedResourceDeleteRequests } from 'util/getRelatedResourceDeleteDetails';
import useRequest, { useDismissableError } from 'hooks/useRequest';
-import helpText from '../shared/WorkflowJobTemplate.helptext';
+import getHelpText from '../shared/WorkflowJobTemplate.helptext';
function WorkflowJobTemplateDetail({ template }) {
const {
@@ -44,7 +44,7 @@ function WorkflowJobTemplateDetail({ template }) {
scm_branch: scmBranch,
limit,
} = template;
-
+ const helpText = getHelpText();
const urlOrigin = window.location.origin;
const history = useHistory();
diff --git a/awx/ui/src/screens/Template/shared/JobTemplate.helptext.js b/awx/ui/src/screens/Template/shared/JobTemplate.helptext.js
index 7d761d0fa1..4d7ce59c47 100644
--- a/awx/ui/src/screens/Template/shared/JobTemplate.helptext.js
+++ b/awx/ui/src/screens/Template/shared/JobTemplate.helptext.js
@@ -2,7 +2,7 @@ import React from 'react';
import { t } from '@lingui/macro';
import getDocsBaseUrl from 'util/getDocsBaseUrl';
-const jtHelpTextStrings = {
+const jtHelpTextStrings = () => ({
jobType: t`For job templates, select run to execute the playbook. Select check to only check playbook syntax, test environment setup, and report problems without executing the playbook.`,
inventory: t`Select the inventory containing the hosts you want this job to manage.`,
project: t`Select the project containing the playbook you want this job to execute.`,
@@ -60,6 +60,6 @@ const jtHelpTextStrings = {
{t`for more information.`}
),
-};
+});
export default jtHelpTextStrings;
diff --git a/awx/ui/src/screens/Template/shared/JobTemplateForm.js b/awx/ui/src/screens/Template/shared/JobTemplateForm.js
index 9aded8af1d..2bf799c8d7 100644
--- a/awx/ui/src/screens/Template/shared/JobTemplateForm.js
+++ b/awx/ui/src/screens/Template/shared/JobTemplateForm.js
@@ -46,7 +46,7 @@ import LabelSelect from 'components/LabelSelect';
import { VerbositySelectField } from 'components/VerbositySelectField';
import PlaybookSelect from './PlaybookSelect';
import WebhookSubForm from './WebhookSubForm';
-import helpText from './JobTemplate.helptext';
+import getHelpText from './JobTemplate.helptext';
const { origin } = document.location;
@@ -60,6 +60,7 @@ function JobTemplateForm({
validateField,
isOverrideDisabledLookup, // TODO: this is a confusing variable name
}) {
+ const helpText = getHelpText();
const [contentError, setContentError] = useState(false);
const [allowCallbacks, setAllowCallbacks] = useState(
Boolean(template?.host_config_key)
diff --git a/awx/ui/src/screens/Template/shared/WebhookSubForm.js b/awx/ui/src/screens/Template/shared/WebhookSubForm.js
index e832f1786e..ed5cf7a825 100644
--- a/awx/ui/src/screens/Template/shared/WebhookSubForm.js
+++ b/awx/ui/src/screens/Template/shared/WebhookSubForm.js
@@ -22,9 +22,10 @@ import {
WorkflowJobTemplatesAPI,
CredentialTypesAPI,
} from 'api';
-import helpText from './WorkflowJobTemplate.helptext';
+import getHelpText from './WorkflowJobTemplate.helptext';
function WebhookSubForm({ templateType }) {
+ const helpText = getHelpText();
const { setFieldValue } = useFormikContext();
const { id } = useParams();
const { pathname } = useLocation();
diff --git a/awx/ui/src/screens/Template/shared/WorkflowJobTemplate.helptext.js b/awx/ui/src/screens/Template/shared/WorkflowJobTemplate.helptext.js
index c09fb486cb..eba476a214 100644
--- a/awx/ui/src/screens/Template/shared/WorkflowJobTemplate.helptext.js
+++ b/awx/ui/src/screens/Template/shared/WorkflowJobTemplate.helptext.js
@@ -1,7 +1,7 @@
import React from 'react';
import { t } from '@lingui/macro';
-const wfHelpTextStrings = {
+const wfHelpTextStrings = () => ({
inventory: t`Select an inventory for the workflow. This inventory is applied to all workflow nodes that prompt for an inventory.`,
limit: t`Provide a host pattern to further constrain
the list of hosts that will be managed or affected by the
@@ -24,6 +24,6 @@ const wfHelpTextStrings = {
{t`Webhooks: Enable Webhook for this workflow job template.`}
>
),
-};
+});
export default wfHelpTextStrings;
diff --git a/awx/ui/src/screens/Template/shared/WorkflowJobTemplateForm.js b/awx/ui/src/screens/Template/shared/WorkflowJobTemplateForm.js
index d242f2a848..49ddb8892e 100644
--- a/awx/ui/src/screens/Template/shared/WorkflowJobTemplateForm.js
+++ b/awx/ui/src/screens/Template/shared/WorkflowJobTemplateForm.js
@@ -28,7 +28,7 @@ import Popover from 'components/Popover';
import { WorkFlowJobTemplate } from 'types';
import LabelSelect from 'components/LabelSelect';
import WebhookSubForm from './WebhookSubForm';
-import helpText from './WorkflowJobTemplate.helptext';
+import getHelpText from './WorkflowJobTemplate.helptext';
const urlOrigin = window.location.origin;
@@ -39,6 +39,7 @@ function WorkflowJobTemplateForm({
submitError,
isOrgAdmin,
}) {
+ const helpText = getHelpText();
const { setFieldValue, setFieldTouched } = useFormikContext();
const [enableWebhooks, setEnableWebhooks] = useState(
Boolean(template.webhook_service)
diff --git a/awx/ui/src/screens/User/UserTokenDetail/UserTokenDetail.js b/awx/ui/src/screens/User/UserTokenDetail/UserTokenDetail.js
index 3e885bc984..9d0d073ec0 100644
--- a/awx/ui/src/screens/User/UserTokenDetail/UserTokenDetail.js
+++ b/awx/ui/src/screens/User/UserTokenDetail/UserTokenDetail.js
@@ -12,9 +12,10 @@ import { TokensAPI } from 'api';
import { formatDateString } from 'util/dates';
import useRequest, { useDismissableError } from 'hooks/useRequest';
import { toTitleCase } from 'util/strings';
-import helptext from '../shared/User.helptext';
+import getHelptext from '../shared/User.helptext';
function UserTokenDetail({ token }) {
+ const helptext = getHelptext();
const { scope, description, created, modified, expires, summary_fields } =
token;
const history = useHistory();
diff --git a/awx/ui/src/screens/User/shared/User.helptext.js b/awx/ui/src/screens/User/shared/User.helptext.js
index c833bc68b8..d82f483466 100644
--- a/awx/ui/src/screens/User/shared/User.helptext.js
+++ b/awx/ui/src/screens/User/shared/User.helptext.js
@@ -1,8 +1,8 @@
import { t } from '@lingui/macro';
-const userHelpTextStrings = {
+const userHelpTextStrings = () => ({
application: t`The application that this token belongs to, or leave this field empty to create a Personal Access Token.`,
scope: t`Scope for the token's access`,
-};
+});
export default userHelpTextStrings;