diff --git a/awx/ui_next/.eslintrc b/awx/ui_next/.eslintrc
index b7c86c305a..350f50379b 100644
--- a/awx/ui_next/.eslintrc
+++ b/awx/ui_next/.eslintrc
@@ -78,7 +78,8 @@
"src",
"theme",
"gridColumns",
- "rows"
+ "rows",
+ "href"
],
"ignore": ["Ansible", "Tower", "JSON", "YAML", "lg"],
"ignoreComponent": [
diff --git a/awx/ui_next/src/components/DocsLink/DocsLink.jsx b/awx/ui_next/src/components/DocsLink/DocsLink.jsx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/awx/ui_next/src/components/DocsLink/index.jsx b/awx/ui_next/src/components/DocsLink/index.jsx
new file mode 100644
index 0000000000..e1344df9d2
--- /dev/null
+++ b/awx/ui_next/src/components/DocsLink/index.jsx
@@ -0,0 +1 @@
+export { default } from './DocsLink';
diff --git a/awx/ui_next/src/components/Search/AdvancedSearch.jsx b/awx/ui_next/src/components/Search/AdvancedSearch.jsx
index 1700846b02..d98f0bbea5 100644
--- a/awx/ui_next/src/components/Search/AdvancedSearch.jsx
+++ b/awx/ui_next/src/components/Search/AdvancedSearch.jsx
@@ -11,9 +11,12 @@ import {
SelectOption,
SelectVariant,
TextInput,
+ Tooltip,
} from '@patternfly/react-core';
-import { SearchIcon } from '@patternfly/react-icons';
+import { SearchIcon, QuestionCircleIcon } from '@patternfly/react-icons';
import styled from 'styled-components';
+import { useConfig } from '../../contexts/Config';
+import getDocsBaseUrl from '../../util/getDocsBaseUrl';
const AdvancedGroup = styled.div`
display: flex;
@@ -45,6 +48,7 @@ function AdvancedSearch({
const [lookupSelection, setLookupSelection] = useState(null);
const [keySelection, setKeySelection] = useState(null);
const [searchValue, setSearchValue] = useState('');
+ const config = useConfig();
const handleAdvancedSearch = e => {
// keeps page from fully reloading
@@ -262,6 +266,19 @@ function AdvancedSearch({
+
+
+
);
}
diff --git a/awx/ui_next/src/screens/Job/JobOutput/JobOutput.jsx b/awx/ui_next/src/screens/Job/JobOutput/JobOutput.jsx
index 293986b779..06df7fe3cd 100644
--- a/awx/ui_next/src/screens/Job/JobOutput/JobOutput.jsx
+++ b/awx/ui_next/src/screens/Job/JobOutput/JobOutput.jsx
@@ -21,7 +21,7 @@ import {
ToolbarToggleGroup,
Tooltip,
} from '@patternfly/react-core';
-import { SearchIcon } from '@patternfly/react-icons';
+import { SearchIcon, QuestionCircleIcon } from '@patternfly/react-icons';
import AlertModal from '../../../components/AlertModal';
import { CardBody as _CardBody } from '../../../components/Card';
@@ -47,6 +47,8 @@ import {
removeParams,
getQSConfig,
} from '../../../util/qs';
+import getDocsBaseUrl from '../../../util/getDocsBaseUrl';
+import { useConfig } from '../../../contexts/Config';
const QS_CONFIG = getQSConfig('job_output', {
order_by: 'start_line',
@@ -280,6 +282,7 @@ function JobOutput({ job, eventRelatedSearchableKeys, eventSearchableKeys }) {
const jobSocketCounter = useRef(0);
const interval = useRef(null);
const history = useHistory();
+ const config = useConfig();
const [contentError, setContentError] = useState(null);
const [cssMap, setCssMap] = useState({});
const [currentlyLoading, setCurrentlyLoading] = useState([]);
@@ -730,6 +733,21 @@ function JobOutput({ job, eventRelatedSearchableKeys, eventSearchableKeys }) {
) : (
renderSearchComponent(i18n)
)}
+
+
+
diff --git a/awx/ui_next/src/util/getDocsBaseUrl.js b/awx/ui_next/src/util/getDocsBaseUrl.js
new file mode 100644
index 0000000000..31fc671de9
--- /dev/null
+++ b/awx/ui_next/src/util/getDocsBaseUrl.js
@@ -0,0 +1,7 @@
+export default function getDocsBaseUrl(config) {
+ let version = 'latest';
+ if (config?.license_info?.license_type !== 'open') {
+ version = config?.version ? config.version.split('-')[0] : 'latest';
+ }
+ return `https://docs.ansible.com/ansible-tower/${version}`;
+}