[8.0] Add workplace search links to doc link service (#118814) (#119885)

This commit is contained in:
Lisa Cawley 2021-11-29 14:10:15 -08:00 committed by GitHub
parent 43dedaabde
commit 917f3ad756
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
58 changed files with 587 additions and 245 deletions

View file

@ -24,6 +24,9 @@ readonly links: {
readonly canvas: {
readonly guide: string;
};
readonly cloud: {
readonly indexManagement: string;
};
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
@ -55,10 +58,64 @@ readonly links: {
readonly install: string;
readonly start: string;
};
readonly appSearch: {
readonly apiRef: string;
readonly apiClients: string;
readonly apiKeys: string;
readonly authentication: string;
readonly crawlRules: string;
readonly curations: string;
readonly duplicateDocuments: string;
readonly entryPoints: string;
readonly guide: string;
readonly indexingDocuments: string;
readonly indexingDocumentsSchema: string;
readonly logSettings: string;
readonly metaEngines: string;
readonly nativeAuth: string;
readonly precisionTuning: string;
readonly relevanceTuning: string;
readonly resultSettings: string;
readonly searchUI: string;
readonly security: string;
readonly standardAuth: string;
readonly synonyms: string;
readonly webCrawler: string;
readonly webCrawlerEventLogs: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
readonly configuration: string;
readonly licenseManagement: string;
readonly mailService: string;
readonly usersAccess: string;
};
readonly workplaceSearch: {
readonly box: string;
readonly confluenceCloud: string;
readonly confluenceServer: string;
readonly customSources: string;
readonly customSourcePermissions: string;
readonly documentPermissions: string;
readonly dropbox: string;
readonly externalIdentities: string;
readonly gitHub: string;
readonly gettingStarted: string;
readonly gmail: string;
readonly googleDrive: string;
readonly indexingSchedule: string;
readonly jiraCloud: string;
readonly jiraServer: string;
readonly nativeAuth: string;
readonly oneDrive: string;
readonly permissions: string;
readonly salesforce: string;
readonly security: string;
readonly serviceNow: string;
readonly sharePoint: string;
readonly slack: string;
readonly standardAuth: string;
readonly synch: string;
readonly zendesk: string;
};
readonly heartbeat: {
readonly base: string;

File diff suppressed because one or more lines are too long

View file

@ -20,7 +20,7 @@ export interface OverlayFlyoutOpenOptions
| [className?](./kibana-plugin-core-public.overlayflyoutopenoptions.classname.md) | string | <i>(Optional)</i> |
| [closeButtonAriaLabel?](./kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md) | string | <i>(Optional)</i> |
| [hideCloseButton?](./kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md) | boolean | <i>(Optional)</i> |
| [maskProps](./kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md) | <code>EuiOverlayMaskProps</code> | |
| [maskProps?](./kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md) | EuiOverlayMaskProps | <i>(Optional)</i> |
| [maxWidth?](./kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md) | boolean \| number \| string | <i>(Optional)</i> |
| [onClose?](./kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md) | (flyout: OverlayRef) =&gt; void | <i>(Optional)</i> EuiFlyout onClose handler. If provided the consumer is responsible for calling flyout.close() to close the flyout; |
| [ownFocus?](./kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md) | boolean | <i>(Optional)</i> |

View file

@ -28,6 +28,9 @@ export class DocLinksService {
const APM_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/apm/`;
const SECURITY_SOLUTION_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/security/${DOC_LINK_VERSION}/`;
const STACK_GETTING_STARTED = `${ELASTIC_WEBSITE_URL}guide/en/elastic-stack-get-started/${DOC_LINK_VERSION}/`;
const APP_SEARCH_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/app-search/${DOC_LINK_VERSION}/`;
const ENTERPRISE_SEARCH_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/enterprise-search/${DOC_LINK_VERSION}/`;
const WORKPLACE_SEARCH_DOCS = `${ELASTIC_WEBSITE_URL}guide/en/workplace-search/${DOC_LINK_VERSION}/`;
return deepFreeze({
DOC_LINK_VERSION,
@ -49,6 +52,9 @@ export class DocLinksService {
canvas: {
guide: `${KIBANA_DOCS}canvas.html`,
},
cloud: {
indexManagement: `${ELASTIC_WEBSITE_URL}/guide/en/cloud/current/ec-configure-index-management.html`,
},
dashboard: {
guide: `${KIBANA_DOCS}dashboard.html`,
drilldowns: `${KIBANA_DOCS}drilldowns.html`,
@ -75,10 +81,64 @@ export class DocLinksService {
auditdModule: `${ELASTIC_WEBSITE_URL}guide/en/beats/auditbeat/${DOC_LINK_VERSION}/auditbeat-module-auditd.html`,
systemModule: `${ELASTIC_WEBSITE_URL}guide/en/beats/auditbeat/${DOC_LINK_VERSION}/auditbeat-module-system.html`,
},
appSearch: {
apiRef: `${APP_SEARCH_DOCS}api-reference.html`,
apiClients: `${APP_SEARCH_DOCS}api-clients.html`,
apiKeys: `${APP_SEARCH_DOCS}authentication.html#authentication-api-keys`,
authentication: `${APP_SEARCH_DOCS}authentication.html`,
crawlRules: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-crawl-rules`,
curations: `${APP_SEARCH_DOCS}curations-guide.html`,
duplicateDocuments: `${APP_SEARCH_DOCS}web-crawler-reference.html#web-crawler-reference-content-deduplication`,
entryPoints: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-entry-points`,
guide: `${APP_SEARCH_DOCS}index.html`,
indexingDocuments: `${APP_SEARCH_DOCS}indexing-documents-guide.html`,
indexingDocumentsSchema: `${APP_SEARCH_DOCS}indexing-documents-guide.html#indexing-documents-guide-schema`,
logSettings: `${APP_SEARCH_DOCS}logs.html`,
metaEngines: `${APP_SEARCH_DOCS}meta-engines-guide.html`,
nativeAuth: `${APP_SEARCH_DOCS}security-and-users.html#app-search-self-managed-security-and-user-management-elasticsearch-native-realm`,
precisionTuning: `${APP_SEARCH_DOCS}precision-tuning.html`,
relevanceTuning: `${APP_SEARCH_DOCS}relevance-tuning-guide.html`,
resultSettings: `${APP_SEARCH_DOCS}result-settings-guide.html`,
searchUI: `${APP_SEARCH_DOCS}reference-ui-guide.html`,
security: `${APP_SEARCH_DOCS}security-and-users.html`,
standardAuth: `${APP_SEARCH_DOCS}security-and-users.html#app-search-self-managed-security-and-user-management-standard`,
synonyms: `${APP_SEARCH_DOCS}synonyms-guide.html`,
webCrawler: `${APP_SEARCH_DOCS}web-crawler.html`,
webCrawlerEventLogs: `${APP_SEARCH_DOCS}view-web-crawler-events-logs.html`,
},
enterpriseSearch: {
base: `${ELASTIC_WEBSITE_URL}guide/en/enterprise-search/${DOC_LINK_VERSION}`,
appSearchBase: `${ELASTIC_WEBSITE_URL}guide/en/app-search/${DOC_LINK_VERSION}`,
workplaceSearchBase: `${ELASTIC_WEBSITE_URL}guide/en/workplace-search/${DOC_LINK_VERSION}`,
configuration: `${ENTERPRISE_SEARCH_DOCS}configuration.html`,
licenseManagement: `${ENTERPRISE_SEARCH_DOCS}license-management.html`,
mailService: `${ENTERPRISE_SEARCH_DOCS}mailer-configuration.html`,
usersAccess: `${ENTERPRISE_SEARCH_DOCS}users-access.html`,
},
workplaceSearch: {
box: `${WORKPLACE_SEARCH_DOCS}workplace-search-box-connector.html`,
confluenceCloud: `${WORKPLACE_SEARCH_DOCS}workplace-search-confluence-cloud-connector.html`,
confluenceServer: `${WORKPLACE_SEARCH_DOCS}workplace-search-confluence-server-connector.html`,
customSources: `${WORKPLACE_SEARCH_DOCS}workplace-search-custom-api-sources.html`,
customSourcePermissions: `${WORKPLACE_SEARCH_DOCS}workplace-search-custom-api-sources.html#custom-api-source-document-level-access-control`,
documentPermissions: `${WORKPLACE_SEARCH_DOCS}workplace-search-sources-document-permissions.html`,
dropbox: `${WORKPLACE_SEARCH_DOCS}workplace-search-dropbox-connector.html`,
externalIdentities: `${WORKPLACE_SEARCH_DOCS}workplace-search-external-identities-api.html`,
gettingStarted: `${WORKPLACE_SEARCH_DOCS}workplace-search-getting-started.html`,
gitHub: `${WORKPLACE_SEARCH_DOCS}workplace-search-github-connector.html`,
gmail: `${WORKPLACE_SEARCH_DOCS}workplace-search-gmail-connector.html`,
googleDrive: `${WORKPLACE_SEARCH_DOCS}workplace-search-google-drive-connector.html`,
indexingSchedule: `${WORKPLACE_SEARCH_DOCS}workplace-search-customizing-indexing-rules.html#_indexing_schedule`,
jiraCloud: `${WORKPLACE_SEARCH_DOCS}workplace-search-jira-cloud-connector.html`,
jiraServer: `${WORKPLACE_SEARCH_DOCS}workplace-search-jira-server-connector.html`,
nativeAuth: `${WORKPLACE_SEARCH_DOCS}workplace-search-security.html#elasticsearch-native-realm`,
oneDrive: `${WORKPLACE_SEARCH_DOCS}workplace-search-onedrive-connector.html`,
permissions: `${WORKPLACE_SEARCH_DOCS}workplace-search-permissions.html#organizational-sources-private-sources`,
salesforce: `${WORKPLACE_SEARCH_DOCS}workplace-search-salesforce-connector.html`,
security: `${WORKPLACE_SEARCH_DOCS}workplace-search-security.html`,
serviceNow: `${WORKPLACE_SEARCH_DOCS}workplace-search-servicenow-connector.html`,
sharePoint: `${WORKPLACE_SEARCH_DOCS}workplace-search-sharepoint-online-connector.html`,
slack: `${WORKPLACE_SEARCH_DOCS}workplace-search-slack-connector.html`,
standardAuth: `${WORKPLACE_SEARCH_DOCS}workplace-search-security.html#standard`,
synch: `${WORKPLACE_SEARCH_DOCS}workplace-search-customizing-indexing-rules.html`,
zendesk: `${WORKPLACE_SEARCH_DOCS}workplace-search-zendesk-connector.html`,
},
metricbeat: {
base: `${ELASTIC_WEBSITE_URL}guide/en/beats/metricbeat/${DOC_LINK_VERSION}`,
@ -547,6 +607,9 @@ export interface DocLinksStart {
readonly canvas: {
readonly guide: string;
};
readonly cloud: {
readonly indexManagement: string;
};
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
@ -578,10 +641,64 @@ export interface DocLinksStart {
readonly install: string;
readonly start: string;
};
readonly appSearch: {
readonly apiRef: string;
readonly apiClients: string;
readonly apiKeys: string;
readonly authentication: string;
readonly crawlRules: string;
readonly curations: string;
readonly duplicateDocuments: string;
readonly entryPoints: string;
readonly guide: string;
readonly indexingDocuments: string;
readonly indexingDocumentsSchema: string;
readonly logSettings: string;
readonly metaEngines: string;
readonly nativeAuth: string;
readonly precisionTuning: string;
readonly relevanceTuning: string;
readonly resultSettings: string;
readonly searchUI: string;
readonly security: string;
readonly standardAuth: string;
readonly synonyms: string;
readonly webCrawler: string;
readonly webCrawlerEventLogs: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
readonly configuration: string;
readonly licenseManagement: string;
readonly mailService: string;
readonly usersAccess: string;
};
readonly workplaceSearch: {
readonly box: string;
readonly confluenceCloud: string;
readonly confluenceServer: string;
readonly customSources: string;
readonly customSourcePermissions: string;
readonly documentPermissions: string;
readonly dropbox: string;
readonly externalIdentities: string;
readonly gitHub: string;
readonly gettingStarted: string;
readonly gmail: string;
readonly googleDrive: string;
readonly indexingSchedule: string;
readonly jiraCloud: string;
readonly jiraServer: string;
readonly nativeAuth: string;
readonly oneDrive: string;
readonly permissions: string;
readonly salesforce: string;
readonly security: string;
readonly serviceNow: string;
readonly sharePoint: string;
readonly slack: string;
readonly standardAuth: string;
readonly synch: string;
readonly zendesk: string;
};
readonly heartbeat: {
readonly base: string;

View file

@ -495,6 +495,9 @@ export interface DocLinksStart {
readonly canvas: {
readonly guide: string;
};
readonly cloud: {
readonly indexManagement: string;
};
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
@ -526,10 +529,64 @@ export interface DocLinksStart {
readonly install: string;
readonly start: string;
};
readonly appSearch: {
readonly apiRef: string;
readonly apiClients: string;
readonly apiKeys: string;
readonly authentication: string;
readonly crawlRules: string;
readonly curations: string;
readonly duplicateDocuments: string;
readonly entryPoints: string;
readonly guide: string;
readonly indexingDocuments: string;
readonly indexingDocumentsSchema: string;
readonly logSettings: string;
readonly metaEngines: string;
readonly nativeAuth: string;
readonly precisionTuning: string;
readonly relevanceTuning: string;
readonly resultSettings: string;
readonly searchUI: string;
readonly security: string;
readonly standardAuth: string;
readonly synonyms: string;
readonly webCrawler: string;
readonly webCrawlerEventLogs: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
readonly configuration: string;
readonly licenseManagement: string;
readonly mailService: string;
readonly usersAccess: string;
};
readonly workplaceSearch: {
readonly box: string;
readonly confluenceCloud: string;
readonly confluenceServer: string;
readonly customSources: string;
readonly customSourcePermissions: string;
readonly documentPermissions: string;
readonly dropbox: string;
readonly externalIdentities: string;
readonly gitHub: string;
readonly gettingStarted: string;
readonly gmail: string;
readonly googleDrive: string;
readonly indexingSchedule: string;
readonly jiraCloud: string;
readonly jiraServer: string;
readonly nativeAuth: string;
readonly oneDrive: string;
readonly permissions: string;
readonly salesforce: string;
readonly security: string;
readonly serviceNow: string;
readonly sharePoint: string;
readonly slack: string;
readonly standardAuth: string;
readonly synch: string;
readonly zendesk: string;
};
readonly heartbeat: {
readonly base: string;

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('No API events in the last 24 hours');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/api-reference.html')
expect.stringContaining(docLinks.appSearchApis)
);
});
});

View file

@ -8,9 +8,10 @@
import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { API_DOCS_URL } from '../../../routes';
export const EmptyState: React.FC = () => (
<EuiEmptyPrompt
@ -30,12 +31,7 @@ export const EmptyState: React.FC = () => (
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/api-reference.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={API_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.apiLogs.empty.buttonLabel', {
defaultMessage: 'View the API reference',
})}

View file

@ -27,7 +27,7 @@ import { clearFlashMessages, flashSuccessToast } from '../../../../shared/flash_
import { GenericEndpointInlineEditableTable } from '../../../../shared/tables/generic_endpoint_inline_editable_table';
import { InlineEditableTableColumn } from '../../../../shared/tables/inline_editable_table/types';
import { ItemWithAnID } from '../../../../shared/tables/types';
import { DOCS_PREFIX } from '../../../routes';
import { CRAWL_RULES_DOCS_URL } from '../../../routes';
import { CrawlerSingleDomainLogic } from '../crawler_single_domain_logic';
import {
CrawlerPolicies,
@ -53,11 +53,7 @@ const DEFAULT_DESCRIPTION = (
defaultMessage="Create a crawl rule to include or exclude pages whose URL matches the rule. Rules run in sequential order, and each URL is evaluated according to the first match. {link}"
values={{
link: (
<EuiLink
href={`${DOCS_PREFIX}/crawl-web-content.html#crawl-web-content-manage-crawl-rules`}
target="_blank"
external
>
<EuiLink href={CRAWL_RULES_DOCS_URL} target="_blank" external>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.crawlRulesTable.descriptionLinkText',
{ defaultMessage: 'Learn more about crawl rules' }

View file

@ -27,7 +27,7 @@ import { EuiSelectableLIOption } from '@elastic/eui/src/components/selectable/se
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { DOCS_PREFIX } from '../../../../routes';
import { DUPLICATE_DOCS_URL } from '../../../../routes';
import { DataPanel } from '../../../data_panel';
import { CrawlerSingleDomainLogic } from '../../crawler_single_domain_logic';
@ -84,11 +84,7 @@ export const DeduplicationPanel: React.FC = () => {
documents on this domain. {documentationLink}."
values={{
documentationLink: (
<EuiLink
href={`${DOCS_PREFIX}/web-crawler-reference.html#web-crawler-reference-content-deduplication`}
target="_blank"
external
>
<EuiLink href={DUPLICATE_DOCS_URL} target="_blank" external>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.deduplicationPanel.learnMoreMessage',
{

View file

@ -17,7 +17,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { GenericEndpointInlineEditableTable } from '../../../../shared/tables/generic_endpoint_inline_editable_table';
import { InlineEditableTableColumn } from '../../../../shared/tables/inline_editable_table/types';
import { ItemWithAnID } from '../../../../shared/tables/types';
import { DOCS_PREFIX } from '../../../routes';
import { ENTRY_POINTS_DOCS_URL } from '../../../routes';
import { CrawlerDomain, EntryPoint } from '../types';
import { EntryPointsTableLogic } from './entry_points_table_logic';
@ -80,11 +80,7 @@ export const EntryPointsTable: React.FC<EntryPointsTableProps> = ({
defaultMessage:
'Include the most important URLs for your website here. Entry point URLs will be the first pages to be indexed and processed for links to other pages.',
})}{' '}
<EuiLink
href={`${DOCS_PREFIX}/crawl-web-content.html#crawl-web-content-manage-entry-points`}
target="_blank"
external
>
<EuiLink href={ENTRY_POINTS_DOCS_URL} target="_blank" external>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.entryPointsTable.learnMoreLinkText',
{ defaultMessage: 'Learn more about entry points.' }

View file

@ -37,7 +37,7 @@ import {
} from '../../../../..//shared/constants/units';
import { CANCEL_BUTTON_LABEL, SAVE_BUTTON_LABEL } from '../../../../../shared/constants';
import { DOCS_PREFIX } from '../../../../routes';
import { WEB_CRAWLER_DOCS_URL } from '../../../../routes';
import { CrawlUnits } from '../../types';
import { AutomaticCrawlSchedulerLogic } from './automatic_crawl_scheduler_logic';
@ -81,7 +81,7 @@ export const AutomaticCrawlScheduler: React.FC = () => {
defaultMessage="Don't worry about it, we'll start a crawl for you. {readMoreMessage}."
values={{
readMoreMessage: (
<EuiLink href={`${DOCS_PREFIX}/web-crawler.html`} target="_blank">
<EuiLink href={WEB_CRAWLER_DOCS_URL} target="_blank">
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.automaticCrawlSchedule.readMoreLink',
{

View file

@ -13,7 +13,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiSpacer, EuiText, EuiTitle } from
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../routes';
import { WEB_CRAWLER_DOCS_URL, WEB_CRAWLER_LOG_DOCS_URL } from '../../routes';
import { getEngineBreadcrumbs } from '../engine';
import { AppSearchPageTemplate } from '../layout';
@ -77,7 +77,7 @@ export const CrawlerOverview: React.FC = () => {
defaultMessage:
"Easily index your website's content. To get started, enter your domain name, provide optional entry points and crawl rules, and we will handle the rest.",
})}{' '}
<EuiLink external target="_blank" href={`${DOCS_PREFIX}/web-crawler.html`}>
<EuiLink external target="_blank" href={WEB_CRAWLER_DOCS_URL}>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.empty.crawlerDocumentationLinkDescription',
{
@ -114,11 +114,7 @@ export const CrawlerOverview: React.FC = () => {
defaultMessage:
"Recent crawl requests are logged here. Using the request ID of each crawl, you can track progress and examine crawl events in Kibana's Discover or Logs user interfaces.",
})}{' '}
<EuiLink
href={`${DOCS_PREFIX}/view-web-crawler-events-logs.html`}
target="_blank"
external
>
<EuiLink href={WEB_CRAWLER_LOG_DOCS_URL} target="_blank" external>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.crawler.configurationDocumentationLinkDescription',
{

View file

@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../routes';
import { AUTHENTICATION_DOCS_URL } from '../../routes';
export const CREDENTIALS_TITLE = i18n.translate(
'xpack.enterpriseSearch.appSearch.credentials.title',
@ -109,4 +109,4 @@ export const TOKEN_TYPE_INFO = [
export const FLYOUT_ARIA_LABEL_ID = 'credentialsFlyoutTitle';
export const DOCS_HREF = `${DOCS_PREFIX}/authentication.html`;
export const DOCS_HREF = AUTHENTICATION_DOCS_URL;

View file

@ -21,7 +21,7 @@ import { i18n } from '@kbn/i18n';
import { EDIT_BUTTON_LABEL, DELETE_BUTTON_LABEL } from '../../../../shared/constants';
import { HiddenText } from '../../../../shared/hidden_text';
import { convertMetaToPagination, handlePageChange } from '../../../../shared/table_pagination';
import { DOCS_PREFIX } from '../../../routes';
import { API_KEYS_DOCS_URL } from '../../../routes';
import { TOKEN_TYPE_DISPLAY_NAMES } from '../constants';
import { CredentialsLogic } from '../credentials_logic';
import { ApiToken } from '../types';
@ -141,12 +141,7 @@ export const CredentialsList: React.FC = () => {
defaultMessage: 'Allow applications to access Elastic App Search on your behalf.',
})}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/authentication.html#authentication-api-keys`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={API_KEYS_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.credentials.empty.buttonLabel', {
defaultMessage: 'Learn about API keys',
})}

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Create your first curation');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/curations-guide.html')
expect.stringContaining(docLinks.appSearchCurations)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { CURATIONS_DOCS_URL } from '../../../routes';
export const EmptyState: React.FC = () => (
<EuiEmptyPrompt
@ -33,12 +33,7 @@ export const EmptyState: React.FC = () => (
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/curations-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={CURATIONS_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.curations.empty.buttonLabel', {
defaultMessage: 'Read the curations guide',
})}

View file

@ -19,6 +19,8 @@ import { EuiButtonEmpty, EuiCallOut, EuiSwitch } from '@elastic/eui';
import { mountWithIntl } from '@kbn/test/jest';
import { docLinks } from '../../../../../shared/doc_links';
import { Loading } from '../../../../../shared/loading';
import { EuiButtonTo } from '../../../../../shared/react_router_helpers';
import { DataPanel } from '../../../data_panel';
@ -227,7 +229,7 @@ describe('CurationsSettings', () => {
const wrapper = shallow(<CurationsSettings />);
expect(wrapper.is(DataPanel)).toBe(true);
expect(wrapper.prop('action').props.to).toEqual('/app/management/stack/license_management');
expect(wrapper.find(EuiButtonEmpty).prop('href')).toEqual('/license-management.html');
expect(wrapper.find(EuiButtonEmpty).prop('href')).toEqual(docLinks.licenseManagement);
});
});
});

View file

@ -110,11 +110,7 @@ export const CurationsSettings: React.FC = () => {
</EuiButtonTo>
}
>
<EuiButtonEmpty
target="_blank"
iconType="popout"
href={`${docLinks.enterpriseSearchBase}/license-management.html`}
>
<EuiButtonEmpty target="_blank" iconType="popout" href={docLinks.licenseManagement}>
{i18n.translate('xpack.enterpriseSearch.curations.settings.licenseUpgradeLink', {
defaultMessage: 'Learn more about license upgrades',
})}

View file

@ -30,7 +30,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { CANCEL_BUTTON_LABEL } from '../../../../shared/constants';
import { getEnterpriseSearchUrl } from '../../../../shared/enterprise_search_url';
import { DOCS_PREFIX } from '../../../routes';
import { API_CLIENTS_DOCS_URL, INDEXING_DOCS_URL } from '../../../routes';
import { EngineLogic } from '../../engine';
import { EngineDetails } from '../../engine/types';
@ -74,12 +74,12 @@ export const FlyoutBody: React.FC = () => {
defaultMessage="The {documentsApiLink} can be used to add new documents to your engine, update documents, retrieve documents by id, and delete documents. There are a variety of {clientLibrariesLink} to help you get started."
values={{
documentsApiLink: (
<EuiLink target="_blank" href={`${DOCS_PREFIX}/indexing-documents-guide.html`}>
<EuiLink target="_blank" href={INDEXING_DOCS_URL}>
documents API
</EuiLink>
),
clientLibrariesLink: (
<EuiLink target="_blank" href={`${DOCS_PREFIX}/api-clients.html`}>
<EuiLink target="_blank" href={API_CLIENTS_DOCS_URL}>
client libraries
</EuiLink>
),

View file

@ -27,7 +27,7 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { parseQueryParams } from '../../../shared/query_params';
import { EuiCardTo } from '../../../shared/react_router_helpers';
import { DOCS_PREFIX, ENGINE_CRAWLER_PATH } from '../../routes';
import { INDEXING_DOCS_URL, ENGINE_CRAWLER_PATH } from '../../routes';
import { generateEnginePath } from '../engine';
import { DocumentCreationLogic } from './';
@ -66,7 +66,7 @@ export const DocumentCreationButtons: React.FC<Props> = ({ disabled = false }) =
jsonCode: <EuiCode>.json</EuiCode>,
postCode: <EuiCode>POST</EuiCode>,
documentsApiLink: (
<EuiLink target="_blank" href={`${DOCS_PREFIX}/indexing-documents-guide.html`}>
<EuiLink target="_blank" href={INDEXING_DOCS_URL}>
documents API
</EuiLink>
),

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Add your first documents');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/indexing-documents-guide.html')
expect.stringContaining(docLinks.appSearchIndexingDocs)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { INDEXING_DOCS_URL } from '../../../routes';
export const EmptyState = () => (
<EuiEmptyPrompt
@ -32,12 +32,7 @@ export const EmptyState = () => (
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/indexing-documents-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={INDEXING_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.documents.empty.buttonLabel', {
defaultMessage: 'Read the documents guide',
})}

View file

@ -33,7 +33,7 @@ describe('EmptyEngineOverview', () => {
it('renders a documentation link', () => {
expect(getPageHeaderActions(wrapper).find(EuiButton).prop('href')).toEqual(
`${docLinks.appSearchBase}/index.html`
docLinks.appSearchGuide
);
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../routes';
import { DOCS_URL } from '../../routes';
import { DocumentCreationButtons, DocumentCreationFlyout } from '../document_creation';
import { getEngineBreadcrumbs } from '../engine';
@ -26,7 +26,7 @@ export const EmptyEngineOverview: React.FC = () => {
{ defaultMessage: 'Engine setup' }
),
rightSideItems: [
<EuiButton href={`${DOCS_PREFIX}/index.html`} target="_blank" iconType="popout">
<EuiButton href={DOCS_URL} target="_blank" iconType="popout">
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.overview.empty.headingAction',
{ defaultMessage: 'View documentation' }

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyMetaEnginesState } from './';
describe('EmptyMetaEnginesState', () => {
@ -21,7 +23,7 @@ describe('EmptyMetaEnginesState', () => {
expect(wrapper.find('h3').text()).toEqual('Create your first meta engine');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/meta-engines-guide.html')
expect.stringContaining(docLinks.appSearchMetaEngines)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { META_ENGINES_DOCS_URL } from '../../../routes';
export const EmptyMetaEnginesState: React.FC = () => (
<EuiEmptyPrompt
@ -34,12 +34,7 @@ export const EmptyMetaEnginesState: React.FC = () => (
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/meta-engines-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={META_ENGINES_DOCS_URL}>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engines.metaEngines.emptyPromptButtonLabel',
{ defaultMessage: 'Learn more about meta engines' }

View file

@ -11,7 +11,7 @@ import { EuiLink } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { DOCS_PREFIX } from '../../routes';
import { META_ENGINES_DOCS_URL } from '../../routes';
import {
META_ENGINE_CREATION_FORM_META_ENGINE_DESCRIPTION,
META_ENGINE_CREATION_FORM_DOCUMENTATION_LINK,
@ -40,7 +40,7 @@ export const META_ENGINES_DESCRIPTION = (
defaultMessage="{readDocumentationLink} for more information or upgrade to a Platinum license to get started."
values={{
readDocumentationLink: (
<EuiLink href={`${DOCS_PREFIX}/meta-engines-guide.html`} target="_blank">
<EuiLink href={META_ENGINES_DOCS_URL} target="_blank">
{META_ENGINE_CREATION_FORM_DOCUMENTATION_LINK}
</EuiLink>
),

View file

@ -11,7 +11,7 @@ import { EuiLink } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { DOCS_PREFIX } from '../../routes';
import { META_ENGINES_DOCS_URL } from '../../routes';
export const DEFAULT_LANGUAGE = 'Universal';
@ -57,7 +57,7 @@ export const META_ENGINE_CREATION_FORM_DOCUMENTATION_DESCRIPTION = (
defaultMessage="{documentationLink} for information about how to get started."
values={{
documentationLink: (
<EuiLink href={`${DOCS_PREFIX}/meta-engines-guide.html`} target="_blank">
<EuiLink href={META_ENGINES_DOCS_URL} target="_blank">
{META_ENGINE_CREATION_FORM_DOCUMENTATION_LINK}
</EuiLink>
),

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Add documents to tune relevance');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/relevance-tuning-guide.html')
expect.stringContaining(docLinks.appSearchRelevance)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { RELEVANCE_DOCS_URL } from '../../../routes';
export const EmptyState: React.FC = () => (
<EuiEmptyPrompt
@ -30,12 +30,7 @@ export const EmptyState: React.FC = () => (
}
)}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/relevance-tuning-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={RELEVANCE_DOCS_URL}>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.relevanceTuning.empty.buttonLabel',
{ defaultMessage: 'Read the relevance tuning guide' }

View file

@ -11,6 +11,8 @@ import React from 'react';
import { shallow, ShallowWrapper } from 'enzyme';
import { docLinks } from '../../../../../shared/doc_links';
import { rerender } from '../../../../../test_helpers';
import { STEP_DESCRIPTIONS } from './constants';
@ -82,7 +84,7 @@ describe('PrecisionSlider', () => {
it('contains a documentation link', () => {
const documentationLink = wrapper.find('[data-test-subj="documentationLink"]');
expect(documentationLink.prop('href')).toContain('/precision-tuning.html');
expect(documentationLink.prop('href')).toContain(docLinks.appSearchPrecision);
expect(documentationLink.prop('target')).toEqual('_blank');
});
});

View file

@ -21,7 +21,7 @@ import {
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../../routes';
import { PRECISION_DOCS_URL } from '../../../../routes';
import { RelevanceTuningLogic } from '../../relevance_tuning_logic';
import { STEP_DESCRIPTIONS } from './constants';
@ -57,11 +57,7 @@ export const PrecisionSlider: React.FC = () => {
defaultMessage: 'Fine tune the precision vs. recall settings on your engine.',
}
)}{' '}
<EuiLink
data-test-subj="documentationLink"
href={`${DOCS_PREFIX}/precision-tuning.html`}
target="_blank"
>
<EuiLink data-test-subj="documentationLink" href={PRECISION_DOCS_URL} target="_blank">
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.relevanceTuning.precisionSlider.learnMore.link',
{

View file

@ -14,7 +14,7 @@ import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiLinkTo } from '../../../shared/react_router_helpers';
import { DOCS_PREFIX, ENGINE_SCHEMA_PATH } from '../../routes';
import { META_ENGINES_DOCS_URL, ENGINE_SCHEMA_PATH } from '../../routes';
import { EngineLogic, generateEnginePath } from '../engine';
import { RelevanceTuningLogic } from '.';
@ -98,7 +98,7 @@ export const RelevanceTuningCallouts: React.FC = () => {
values={{
schemaFieldsWithConflictsCount,
link: (
<EuiLink href={`${DOCS_PREFIX}/meta-engines-guide.html`} target="_blank">
<EuiLink href={META_ENGINES_DOCS_URL} target="_blank">
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.relevanceTuning.whatsThisLinkLabel',
{

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Add documents to adjust settings');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/result-settings-guide.html')
expect.stringContaining(docLinks.appSearchResultSettings)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { RESULT_SETTINGS_DOCS_URL } from '../../../routes';
export const EmptyState: React.FC = () => (
<EuiEmptyPrompt
@ -30,12 +30,7 @@ export const EmptyState: React.FC = () => (
}
)}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/result-settings-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={RESULT_SETTINGS_DOCS_URL}>
{i18n.translate(
'xpack.enterpriseSearch.appSearch.engine.resultSettings.empty.buttonLabel',
{ defaultMessage: 'Read the result settings guide' }

View file

@ -22,7 +22,7 @@ import {
} from '../../../shared/role_mapping';
import { ROLE_MAPPINGS_TITLE } from '../../../shared/role_mapping/constants';
import { DOCS_PREFIX } from '../../routes';
import { SECURITY_DOCS_URL } from '../../routes';
import { AppSearchPageTemplate } from '../layout';
import { ROLE_MAPPINGS_ENGINE_ACCESS_HEADING } from './constants';
@ -30,8 +30,6 @@ import { RoleMapping } from './role_mapping';
import { RoleMappingsLogic } from './role_mappings_logic';
import { User } from './user';
const ROLES_DOCS_LINK = `${DOCS_PREFIX}/security-and-users.html`;
export const RoleMappings: React.FC = () => {
const {
enableRoleBasedAccess,
@ -60,7 +58,7 @@ export const RoleMappings: React.FC = () => {
const rolesEmptyState = (
<RolesEmptyPrompt
productName={APP_SEARCH_PLUGIN.NAME}
docsLink={ROLES_DOCS_LINK}
docsLink={SECURITY_DOCS_URL}
onEnable={enableRoleBasedAccess}
/>
);
@ -69,7 +67,7 @@ export const RoleMappings: React.FC = () => {
<section>
<RoleMappingsHeading
productName={APP_SEARCH_PLUGIN.NAME}
docsLink={ROLES_DOCS_LINK}
docsLink={SECURITY_DOCS_URL}
onClick={() => initializeRoleMapping()}
/>
<RoleMappingsTable

View file

@ -13,6 +13,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { SchemaAddFieldModal } from '../../../../shared/schema';
import { EmptyState } from './';
@ -25,7 +27,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Create a schema');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('#indexing-documents-guide-schema')
expect.stringContaining(docLinks.appSearchIndexingDocsSchema)
);
});

View file

@ -13,7 +13,7 @@ import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { SchemaAddFieldModal } from '../../../../shared/schema';
import { DOCS_PREFIX } from '../../../routes';
import { INDEXING_SCHEMA_DOCS_URL } from '../../../routes';
import { SchemaLogic } from '../schema_logic';
export const EmptyState: React.FC = () => {
@ -40,12 +40,7 @@ export const EmptyState: React.FC = () => {
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/indexing-documents-guide.html#indexing-documents-guide-schema`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={INDEXING_SCHEMA_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.schema.empty.buttonLabel', {
defaultMessage: 'Read the indexing schema guide',
})}

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState } from './empty_state';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Add documents to generate a Search UI');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/reference-ui-guide.html')
expect.stringContaining(docLinks.appSearchSearchUI)
);
});
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { SEARCH_UI_DOCS_URL } from '../../../routes';
export const EmptyState: React.FC = () => (
<EuiEmptyPrompt
@ -31,12 +31,7 @@ export const EmptyState: React.FC = () => (
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/reference-ui-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={SEARCH_UI_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.searchUI.empty.buttonLabel', {
defaultMessage: 'Read the Search UI guide',
})}

View file

@ -12,7 +12,7 @@ import { useActions, useValues } from 'kea';
import { EuiText, EuiFlexItem, EuiFlexGroup, EuiSpacer, EuiLink } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import { DOCS_PREFIX } from '../../routes';
import { SEARCH_UI_DOCS_URL } from '../../routes';
import { EngineLogic, getEngineBreadcrumbs } from '../engine';
import { AppSearchPageTemplate } from '../layout';
@ -62,7 +62,7 @@ export const SearchUI: React.FC = () => {
defaultMessage="Use the fields below to generate a sample search experience built with Search UI. Use the sample to preview search results, or build upon it to create your own custom search experience. {link}."
values={{
link: (
<EuiLink target="_blank" href={`${DOCS_PREFIX}/reference-ui-guide.html`}>
<EuiLink target="_blank" href={SEARCH_UI_DOCS_URL}>
<FormattedMessage
id="xpack.enterpriseSearch.appSearch.engine.searchUI.guideLinkText"
defaultMessage="Learn more about Search UI"

View file

@ -20,7 +20,7 @@ import {
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { LOG_SETTINGS_DOCS_URL } from '../../../routes';
import { LogRetentionLogic, LogRetentionOptions, LogRetentionMessage } from '../../log_retention';
@ -135,7 +135,7 @@ export const LogRetentionPanel: React.FC = () => {
defaultMessage: 'Log retention is determined by the ILM policies for your deployment.',
})}
<br />
<EuiLink href={`${DOCS_PREFIX}/logs.html`} target="_blank">
<EuiLink href={LOG_SETTINGS_DOCS_URL} target="_blank">
{i18n.translate('xpack.enterpriseSearch.appSearch.settings.logRetention.learnMore', {
defaultMessage: 'Learn more about log retention for Enterprise Search.',
})}

View file

@ -15,7 +15,7 @@ import { APP_SEARCH_PLUGIN } from '../../../../../common/constants';
import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome';
import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide';
import { SendAppSearchTelemetry as SendTelemetry } from '../../../shared/telemetry';
import { DOCS_PREFIX } from '../../routes';
import { NATIVE_AUTH_DOCS_URL, STANDARD_AUTH_DOCS_URL } from '../../routes';
import GettingStarted from './assets/getting_started.png';
@ -23,8 +23,8 @@ export const SetupGuide: React.FC = () => (
<SetupGuideLayout
productName={APP_SEARCH_PLUGIN.NAME}
productEuiIcon="logoAppSearch"
standardAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-standard`}
elasticsearchNativeAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-elasticsearch-native-realm`}
standardAuthLink={STANDARD_AUTH_DOCS_URL}
elasticsearchNativeAuthLink={NATIVE_AUTH_DOCS_URL}
>
<SetPageChrome trail={[SETUP_GUIDE_TITLE]} />
<SendTelemetry action="viewed" metric="setup_guide" />

View file

@ -11,6 +11,8 @@ import { shallow } from 'enzyme';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { docLinks } from '../../../../shared/doc_links';
import { EmptyState, SynonymModal } from './';
describe('EmptyState', () => {
@ -21,7 +23,7 @@ describe('EmptyState', () => {
expect(wrapper.find('h2').text()).toEqual('Create your first synonym set');
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/synonyms-guide.html')
expect.stringContaining(docLinks.appSearchSynonyms)
);
});

View file

@ -10,7 +10,7 @@ import React from 'react';
import { EuiEmptyPrompt, EuiButton } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { DOCS_PREFIX } from '../../../routes';
import { SYNONYMS_DOCS_URL } from '../../../routes';
import { SynonymModal, SynonymIcon } from './';
@ -35,12 +35,7 @@ export const EmptyState: React.FC = () => {
</p>
}
actions={
<EuiButton
size="s"
target="_blank"
iconType="popout"
href={`${DOCS_PREFIX}/synonyms-guide.html`}
>
<EuiButton size="s" target="_blank" iconType="popout" href={SYNONYMS_DOCS_URL}>
{i18n.translate('xpack.enterpriseSearch.appSearch.engine.synonyms.empty.buttonLabel', {
defaultMessage: 'Read the synonyms guide',
})}

View file

@ -7,7 +7,29 @@
import { docLinks } from '../shared/doc_links';
export const DOCS_PREFIX = docLinks.appSearchBase;
export const API_DOCS_URL = docLinks.appSearchApis;
export const API_CLIENTS_DOCS_URL = docLinks.appSearchApiClients;
export const API_KEYS_DOCS_URL = docLinks.appSearchApiKeys;
export const AUTHENTICATION_DOCS_URL = docLinks.appSearchAuthentication;
export const CRAWL_RULES_DOCS_URL = docLinks.appSearchCrawlRules;
export const CURATIONS_DOCS_URL = docLinks.appSearchCurations;
export const DOCS_URL = docLinks.appSearchGuide;
export const DUPLICATE_DOCS_URL = docLinks.appSearchDuplicateDocuments;
export const ENTRY_POINTS_DOCS_URL = docLinks.appSearchEntryPoints;
export const INDEXING_DOCS_URL = docLinks.appSearchIndexingDocs;
export const INDEXING_SCHEMA_DOCS_URL = docLinks.appSearchIndexingDocsSchema;
export const LOG_SETTINGS_DOCS_URL = docLinks.appSearchLogSettings;
export const META_ENGINES_DOCS_URL = docLinks.appSearchMetaEngines;
export const NATIVE_AUTH_DOCS_URL = docLinks.appSearchNativeAuth;
export const PRECISION_DOCS_URL = docLinks.appSearchPrecision;
export const RELEVANCE_DOCS_URL = docLinks.appSearchRelevance;
export const RESULT_SETTINGS_DOCS_URL = docLinks.appSearchResultSettings;
export const SEARCH_UI_DOCS_URL = docLinks.appSearchSearchUI;
export const SECURITY_DOCS_URL = docLinks.appSearchSecurity;
export const STANDARD_AUTH_DOCS_URL = docLinks.appSearchStandardAuth;
export const SYNONYMS_DOCS_URL = docLinks.appSearchSynonyms;
export const WEB_CRAWLER_DOCS_URL = docLinks.appSearchWebCrawler;
export const WEB_CRAWLER_LOG_DOCS_URL = docLinks.appSearchWebCrawlerEventLogs;
export const ROOT_PATH = '/';
export const SETUP_GUIDE_PATH = '/setup_guide';

View file

@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { ENTERPRISE_SEARCH_PLUGIN } from '../../../../../common/constants';
import { DOCS_PREFIX } from '../../../app_search/routes';
import { NATIVE_AUTH_DOCS_URL, STANDARD_AUTH_DOCS_URL } from '../../../app_search/routes';
import { SetEnterpriseSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome';
import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide';
import { SendEnterpriseSearchTelemetry as SendTelemetry } from '../../../shared/telemetry';
@ -23,8 +23,8 @@ export const SetupGuide: React.FC = () => (
<SetupGuideLayout
productName={ENTERPRISE_SEARCH_PLUGIN.NAME}
productEuiIcon="logoEnterpriseSearch"
standardAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-standard`}
elasticsearchNativeAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-elasticsearch-native-realm`}
standardAuthLink={STANDARD_AUTH_DOCS_URL}
elasticsearchNativeAuthLink={NATIVE_AUTH_DOCS_URL}
>
<SetPageChrome trail={[SETUP_GUIDE_TITLE]} />
<SendTelemetry action="viewed" metric="setup_guide" />

View file

@ -5,27 +5,23 @@
* 2.0.
*/
import { docLinksServiceMock } from '../../../../../../../src/core/public/mocks';
import { docLinks } from './';
describe('DocLinks', () => {
it('setDocLinks', () => {
const links = {
DOC_LINK_VERSION: '',
ELASTIC_WEBSITE_URL: 'https://elastic.co/',
links: {
enterpriseSearch: {
base: 'http://elastic.enterprise.search',
appSearchBase: 'http://elastic.app.search',
workplaceSearchBase: 'http://elastic.workplace.search',
},
},
DOC_LINK_VERSION: docLinksServiceMock.createStartContract().DOC_LINK_VERSION,
ELASTIC_WEBSITE_URL: docLinksServiceMock.createStartContract().ELASTIC_WEBSITE_URL,
links: docLinksServiceMock.createStartContract().links,
};
docLinks.setDocLinks(links as any);
expect(docLinks.enterpriseSearchBase).toEqual('http://elastic.enterprise.search');
expect(docLinks.appSearchBase).toEqual('http://elastic.app.search');
expect(docLinks.workplaceSearchBase).toEqual('http://elastic.workplace.search');
expect(docLinks.cloudBase).toEqual('https://elastic.co/guide/en/cloud/current');
expect(docLinks.appSearchApis).toEqual(links.links.appSearch.apiRef);
expect(docLinks.cloudIndexManagement).toEqual(links.links.cloud.indexManagement);
expect(docLinks.enterpriseSearchConfig).toEqual(links.links.enterpriseSearch.configuration);
expect(docLinks.workplaceSearchZendesk).toEqual(links.links.workplaceSearch.zendesk);
});
});

View file

@ -8,23 +8,174 @@
import { DocLinksStart } from 'kibana/public';
class DocLinks {
public enterpriseSearchBase: string;
public appSearchBase: string;
public workplaceSearchBase: string;
public cloudBase: string;
public appSearchApis: string;
public appSearchApiClients: string;
public appSearchApiKeys: string;
public appSearchAuthentication: string;
public appSearchCrawlRules: string;
public appSearchCurations: string;
public appSearchDuplicateDocuments: string;
public appSearchEntryPoints: string;
public appSearchGuide: string;
public appSearchIndexingDocs: string;
public appSearchIndexingDocsSchema: string;
public appSearchLogSettings: string;
public appSearchMetaEngines: string;
public appSearchNativeAuth: string;
public appSearchPrecision: string;
public appSearchRelevance: string;
public appSearchResultSettings: string;
public appSearchSearchUI: string;
public appSearchSecurity: string;
public appSearchStandardAuth: string;
public appSearchSynonyms: string;
public appSearchWebCrawler: string;
public appSearchWebCrawlerEventLogs: string;
public cloudIndexManagement: string;
public enterpriseSearchConfig: string;
public enterpriseSearchMailService: string;
public enterpriseSearchUsersAccess: string;
public licenseManagement: string;
public workplaceSearchBox: string;
public workplaceSearchConfluenceCloud: string;
public workplaceSearchConfluenceServer: string;
public workplaceSearchCustomSources: string;
public workplaceSearchCustomSourcePermissions: string;
public workplaceSearchDocumentPermissions: string;
public workplaceSearchDropbox: string;
public workplaceSearchExternalIdentities: string;
public workplaceSearchGettingStarted: string;
public workplaceSearchGitHub: string;
public workplaceSearchGmail: string;
public workplaceSearchGoogleDrive: string;
public workplaceSearchIndexingSchedule: string;
public workplaceSearchJiraCloud: string;
public workplaceSearchJiraServer: string;
public workplaceSearchNativeAuth: string;
public workplaceSearchOneDrive: string;
public workplaceSearchPermissions: string;
public workplaceSearchSalesforce: string;
public workplaceSearchSecurity: string;
public workplaceSearchServiceNow: string;
public workplaceSearchSharePoint: string;
public workplaceSearchSlack: string;
public workplaceSearchStandardAuth: string;
public workplaceSearchSynch: string;
public workplaceSearchZendesk: string;
constructor() {
this.enterpriseSearchBase = '';
this.appSearchBase = '';
this.workplaceSearchBase = '';
this.cloudBase = '';
this.appSearchApis = '';
this.appSearchApiClients = '';
this.appSearchApiKeys = '';
this.appSearchAuthentication = '';
this.appSearchCrawlRules = '';
this.appSearchCurations = '';
this.appSearchDuplicateDocuments = '';
this.appSearchEntryPoints = '';
this.appSearchGuide = '';
this.appSearchIndexingDocs = '';
this.appSearchIndexingDocsSchema = '';
this.appSearchLogSettings = '';
this.appSearchMetaEngines = '';
this.appSearchNativeAuth = '';
this.appSearchPrecision = '';
this.appSearchRelevance = '';
this.appSearchResultSettings = '';
this.appSearchSearchUI = '';
this.appSearchSecurity = '';
this.appSearchStandardAuth = '';
this.appSearchSynonyms = '';
this.appSearchWebCrawler = '';
this.appSearchWebCrawlerEventLogs = '';
this.cloudIndexManagement = '';
this.enterpriseSearchConfig = '';
this.enterpriseSearchMailService = '';
this.enterpriseSearchUsersAccess = '';
this.licenseManagement = '';
this.workplaceSearchBox = '';
this.workplaceSearchConfluenceCloud = '';
this.workplaceSearchConfluenceServer = '';
this.workplaceSearchCustomSources = '';
this.workplaceSearchCustomSourcePermissions = '';
this.workplaceSearchDocumentPermissions = '';
this.workplaceSearchDropbox = '';
this.workplaceSearchExternalIdentities = '';
this.workplaceSearchGettingStarted = '';
this.workplaceSearchGitHub = '';
this.workplaceSearchGmail = '';
this.workplaceSearchGoogleDrive = '';
this.workplaceSearchIndexingSchedule = '';
this.workplaceSearchJiraCloud = '';
this.workplaceSearchJiraServer = '';
this.workplaceSearchNativeAuth = '';
this.workplaceSearchOneDrive = '';
this.workplaceSearchPermissions = '';
this.workplaceSearchSalesforce = '';
this.workplaceSearchSecurity = '';
this.workplaceSearchServiceNow = '';
this.workplaceSearchSharePoint = '';
this.workplaceSearchSlack = '';
this.workplaceSearchStandardAuth = '';
this.workplaceSearchSynch = '';
this.workplaceSearchZendesk = '';
}
public setDocLinks(docLinks: DocLinksStart): void {
this.enterpriseSearchBase = docLinks.links.enterpriseSearch.base;
this.appSearchBase = docLinks.links.enterpriseSearch.appSearchBase;
this.workplaceSearchBase = docLinks.links.enterpriseSearch.workplaceSearchBase;
this.cloudBase = `${docLinks.ELASTIC_WEBSITE_URL}guide/en/cloud/current`;
this.appSearchApis = docLinks.links.appSearch.apiRef;
this.appSearchApiClients = docLinks.links.appSearch.apiClients;
this.appSearchApiKeys = docLinks.links.appSearch.apiKeys;
this.appSearchAuthentication = docLinks.links.appSearch.authentication;
this.appSearchCrawlRules = docLinks.links.appSearch.crawlRules;
this.appSearchCurations = docLinks.links.appSearch.curations;
this.appSearchDuplicateDocuments = docLinks.links.appSearch.duplicateDocuments;
this.appSearchEntryPoints = docLinks.links.appSearch.entryPoints;
this.appSearchGuide = docLinks.links.appSearch.guide;
this.appSearchIndexingDocs = docLinks.links.appSearch.indexingDocuments;
this.appSearchIndexingDocsSchema = docLinks.links.appSearch.indexingDocumentsSchema;
this.appSearchLogSettings = docLinks.links.appSearch.logSettings;
this.appSearchMetaEngines = docLinks.links.appSearch.metaEngines;
this.appSearchNativeAuth = docLinks.links.appSearch.nativeAuth;
this.appSearchPrecision = docLinks.links.appSearch.precisionTuning;
this.appSearchRelevance = docLinks.links.appSearch.relevanceTuning;
this.appSearchResultSettings = docLinks.links.appSearch.resultSettings;
this.appSearchSearchUI = docLinks.links.appSearch.searchUI;
this.appSearchSecurity = docLinks.links.appSearch.security;
this.appSearchStandardAuth = docLinks.links.appSearch.standardAuth;
this.appSearchSynonyms = docLinks.links.appSearch.synonyms;
this.appSearchWebCrawler = docLinks.links.appSearch.webCrawler;
this.appSearchWebCrawlerEventLogs = docLinks.links.appSearch.webCrawlerEventLogs;
this.cloudIndexManagement = docLinks.links.cloud.indexManagement;
this.enterpriseSearchConfig = docLinks.links.enterpriseSearch.configuration;
this.enterpriseSearchMailService = docLinks.links.enterpriseSearch.mailService;
this.enterpriseSearchUsersAccess = docLinks.links.enterpriseSearch.usersAccess;
this.licenseManagement = docLinks.links.enterpriseSearch.licenseManagement;
this.workplaceSearchBox = docLinks.links.workplaceSearch.box;
this.workplaceSearchConfluenceCloud = docLinks.links.workplaceSearch.confluenceCloud;
this.workplaceSearchConfluenceServer = docLinks.links.workplaceSearch.confluenceServer;
this.workplaceSearchCustomSources = docLinks.links.workplaceSearch.customSources;
this.workplaceSearchCustomSourcePermissions =
docLinks.links.workplaceSearch.customSourcePermissions;
this.workplaceSearchDocumentPermissions = docLinks.links.workplaceSearch.documentPermissions;
this.workplaceSearchDropbox = docLinks.links.workplaceSearch.dropbox;
this.workplaceSearchExternalIdentities = docLinks.links.workplaceSearch.externalIdentities;
this.workplaceSearchGettingStarted = docLinks.links.workplaceSearch.gettingStarted;
this.workplaceSearchGitHub = docLinks.links.workplaceSearch.gitHub;
this.workplaceSearchGmail = docLinks.links.workplaceSearch.gmail;
this.workplaceSearchGoogleDrive = docLinks.links.workplaceSearch.googleDrive;
this.workplaceSearchIndexingSchedule = docLinks.links.workplaceSearch.indexingSchedule;
this.workplaceSearchJiraCloud = docLinks.links.workplaceSearch.jiraCloud;
this.workplaceSearchJiraServer = docLinks.links.workplaceSearch.jiraServer;
this.workplaceSearchNativeAuth = docLinks.links.workplaceSearch.nativeAuth;
this.workplaceSearchOneDrive = docLinks.links.workplaceSearch.oneDrive;
this.workplaceSearchPermissions = docLinks.links.workplaceSearch.permissions;
this.workplaceSearchSalesforce = docLinks.links.workplaceSearch.salesforce;
this.workplaceSearchSecurity = docLinks.links.workplaceSearch.security;
this.workplaceSearchServiceNow = docLinks.links.workplaceSearch.serviceNow;
this.workplaceSearchSharePoint = docLinks.links.workplaceSearch.sharePoint;
this.workplaceSearchSlack = docLinks.links.workplaceSearch.slack;
this.workplaceSearchStandardAuth = docLinks.links.workplaceSearch.standardAuth;
this.workplaceSearchSynch = docLinks.links.workplaceSearch.synch;
this.workplaceSearchZendesk = docLinks.links.workplaceSearch.zendesk;
}
}

View file

@ -13,6 +13,8 @@ import { shallow } from 'enzyme';
import { EuiButton } from '@elastic/eui';
import { docLinks } from '../../shared/doc_links';
import { EuiButtonTo } from '../react_router_helpers';
import { ManageLicenseButton } from './';
@ -35,7 +37,7 @@ describe('ManageLicenseButton', () => {
const wrapper = shallow(<ManageLicenseButton />);
expect(wrapper.find(EuiButton).prop('href')).toEqual(
expect.stringContaining('/license-management.html')
expect.stringContaining(docLinks.licenseManagement)
);
});
});

View file

@ -27,12 +27,7 @@ export const ManageLicenseButton: React.FC<EuiButtonProps> = (props) => {
})}
</EuiButtonTo>
) : (
<EuiButton
{...props}
target="_blank"
iconType="popout"
href={`${docLinks.enterpriseSearchBase}/license-management.html`}
>
<EuiButton {...props} target="_blank" iconType="popout" href={docLinks.licenseManagement}>
{i18n.translate('xpack.enterpriseSearch.licenseDocumentationLink', {
defaultMessage: 'Learn more about license features',
})}

View file

@ -18,7 +18,7 @@ import { RoleRules } from '../types';
import './role_mappings_table.scss';
const AUTH_PROVIDER_DOCUMENTATION_URL = `${docLinks.enterpriseSearchBase}/users-access.html`;
const AUTH_PROVIDER_DOCUMENTATION_URL = `${docLinks.enterpriseSearchUsersAccess}`;
import {
ANY_AUTH_PROVIDER,

View file

@ -24,7 +24,7 @@ import { Role as WSRole } from '../../workplace_search/types';
import { USERNAME_LABEL, EMAIL_LABEL } from '../constants';
import { docLinks } from '../doc_links';
const SMTP_URL = `${docLinks.enterpriseSearchBase}/mailer-configuration.html`;
const SMTP_URL = `${docLinks.enterpriseSearchMailService}`;
import {
NEW_USER_LABEL,

View file

@ -20,7 +20,7 @@ import { docLinks } from '../doc_links';
import { NO_USERS_TITLE, NO_USERS_DESCRIPTION, ENABLE_USERS_LINK } from './constants';
const USERS_DOCS_URL = `${docLinks.enterpriseSearchBase}/users-access.html`;
const USERS_DOCS_URL = `${docLinks.enterpriseSearchUsersAccess}`;
export const UsersEmptyPrompt: React.FC = () => (
<EuiFlexGroup alignItems="center" justifyContent="center">

View file

@ -80,10 +80,7 @@ export const CloudSetupInstructions: React.FC<Props> = ({ productName, cloudDepl
defaultMessage="After enabling Enterprise Search for your instance you can customize the instance, including fault tolerance, RAM, and other {optionsLink}."
values={{
optionsLink: (
<EuiLink
href={`${docLinks.enterpriseSearchBase}/configuration.html`}
target="_blank"
>
<EuiLink href={docLinks.enterpriseSearchConfig} target="_blank">
{i18n.translate(
'xpack.enterpriseSearch.setupGuide.cloud.step3.instruction1LinkText',
{ defaultMessage: 'configurable options' }
@ -125,10 +122,7 @@ export const CloudSetupInstructions: React.FC<Props> = ({ productName, cloudDepl
values={{
productName,
configurePolicyLink: (
<EuiLink
href={`${docLinks.cloudBase}/ec-configure-index-management.html`}
target="_blank"
>
<EuiLink href={docLinks.cloudIndexManagement} target="_blank">
{i18n.translate(
'xpack.enterpriseSearch.setupGuide.cloud.step5.instruction1LinkText',
{ defaultMessage: 'configure an index lifecycle policy' }

View file

@ -17,37 +17,36 @@ export const LOGOUT_ROUTE = '/logout';
export const LEAVE_FEEDBACK_EMAIL = 'support@elastic.co';
export const LEAVE_FEEDBACK_URL = `mailto:${LEAVE_FEEDBACK_EMAIL}?Subject=Elastic%20Workplace%20Search%20Feedback`;
export const DOCS_PREFIX = docLinks.workplaceSearchBase;
export const PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-permissions.html`;
export const DOCUMENT_PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sources-document-permissions.html`;
export const DOCUMENT_PERMISSIONS_SYNC_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-synchronizing`;
export const PRIVATE_SOURCES_DOCS_URL = `${PERMISSIONS_DOCS_URL}#organizational-sources-private-sources`;
export const EXTERNAL_IDENTITIES_DOCS_URL = `${DOCS_PREFIX}/workplace-search-external-identities-api.html`;
export const SECURITY_DOCS_URL = `${DOCS_PREFIX}/workplace-search-security.html`;
export const SMTP_DOCS_URL = `${DOCS_PREFIX}/workplace-search-smtp-mailer.html`;
export const BOX_DOCS_URL = `${DOCS_PREFIX}/workplace-search-box-connector.html`;
export const CONFLUENCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-confluence-cloud-connector.html`;
export const CONFLUENCE_SERVER_DOCS_URL = `${DOCS_PREFIX}/workplace-search-confluence-server-connector.html`;
export const DROPBOX_DOCS_URL = `${DOCS_PREFIX}/workplace-search-dropbox-connector.html`;
export const GITHUB_DOCS_URL = `${DOCS_PREFIX}/workplace-search-github-connector.html`;
export const GITHUB_ENTERPRISE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-github-connector.html`;
export const GMAIL_DOCS_URL = `${DOCS_PREFIX}/workplace-search-gmail-connector.html`;
export const GOOGLE_DRIVE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-google-drive-connector.html`;
export const JIRA_DOCS_URL = `${DOCS_PREFIX}/workplace-search-jira-cloud-connector.html`;
export const JIRA_SERVER_DOCS_URL = `${DOCS_PREFIX}/workplace-search-jira-server-connector.html`;
export const ONEDRIVE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-onedrive-connector.html`;
export const SALESFORCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-salesforce-connector.html`;
export const SERVICENOW_DOCS_URL = `${DOCS_PREFIX}/workplace-search-servicenow-connector.html`;
export const SHAREPOINT_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sharepoint-online-connector.html`;
export const SLACK_DOCS_URL = `${DOCS_PREFIX}/workplace-search-slack-connector.html`;
export const ZENDESK_DOCS_URL = `${DOCS_PREFIX}/workplace-search-zendesk-connector.html`;
export const CUSTOM_SOURCE_DOCS_URL = `${DOCS_PREFIX}/workplace-search-custom-api-sources.html`;
export const CUSTOM_API_DOCS_URL = `${DOCS_PREFIX}/workplace-search-custom-sources-api.html`;
export const CUSTOM_API_DOCUMENT_PERMISSIONS_DOCS_URL = `${CUSTOM_SOURCE_DOCS_URL}#custom-api-source-document-level-access-control`;
export const ENT_SEARCH_LICENSE_MANAGEMENT = `${docLinks.enterpriseSearchBase}/license-management.html`;
export const SYNCHRONIZATION_DOCS_URL = `${DOCS_PREFIX}}/workplace-search-customizing-indexing-rules.html#workplace-search-customizing-indexing-rules`;
export const DIFFERENT_SYNC_TYPES_DOCS_URL = `${DOCS_PREFIX}}/workplace-search-customizing-indexing-rules.html#_indexing_schedule`;
export const OBJECTS_AND_ASSETS_DOCS_URL = `${DOCS_PREFIX}}/workplace-search-customizing-indexing-rules.html#workplace-search-customizing-indexing-rules`;
export const BOX_DOCS_URL = docLinks.workplaceSearchBox;
export const CONFLUENCE_DOCS_URL = docLinks.workplaceSearchConfluenceCloud;
export const CONFLUENCE_SERVER_DOCS_URL = docLinks.workplaceSearchConfluenceServer;
export const CUSTOM_SOURCE_DOCS_URL = docLinks.workplaceSearchCustomSources;
export const CUSTOM_API_DOCUMENT_PERMISSIONS_DOCS_URL =
docLinks.workplaceSearchCustomSourcePermissions;
export const DIFFERENT_SYNC_TYPES_DOCS_URL = docLinks.workplaceSearchIndexingSchedule;
export const DOCUMENT_PERMISSIONS_DOCS_URL = docLinks.workplaceSearchDocumentPermissions;
export const DROPBOX_DOCS_URL = docLinks.workplaceSearchDropbox;
export const ENT_SEARCH_LICENSE_MANAGEMENT = docLinks.licenseManagement;
export const EXTERNAL_IDENTITIES_DOCS_URL = docLinks.workplaceSearchExternalIdentities;
export const GETTING_STARTED_DOCS_URL = docLinks.workplaceSearchGettingStarted;
export const GITHUB_DOCS_URL = docLinks.workplaceSearchGitHub;
export const GITHUB_ENTERPRISE_DOCS_URL = docLinks.workplaceSearchGitHub;
export const GMAIL_DOCS_URL = docLinks.workplaceSearchGmail;
export const GOOGLE_DRIVE_DOCS_URL = docLinks.workplaceSearchGoogleDrive;
export const JIRA_DOCS_URL = docLinks.workplaceSearchJiraCloud;
export const JIRA_SERVER_DOCS_URL = docLinks.workplaceSearchJiraServer;
export const NATIVE_AUTH_DOCS_URL = docLinks.workplaceSearchNativeAuth;
export const OBJECTS_AND_ASSETS_DOCS_URL = docLinks.workplaceSearchSynch;
export const ONEDRIVE_DOCS_URL = docLinks.workplaceSearchOneDrive;
export const PRIVATE_SOURCES_DOCS_URL = docLinks.workplaceSearchPermissions;
export const SALESFORCE_DOCS_URL = docLinks.workplaceSearchSalesforce;
export const SECURITY_DOCS_URL = docLinks.workplaceSearchSecurity;
export const SERVICENOW_DOCS_URL = docLinks.workplaceSearchServiceNow;
export const SHAREPOINT_DOCS_URL = docLinks.workplaceSearchSharePoint;
export const SLACK_DOCS_URL = docLinks.workplaceSearchSlack;
export const STANDARD_AUTH_DOCS_URL = docLinks.workplaceSearchStandardAuth;
export const SYNCHRONIZATION_DOCS_URL = docLinks.workplaceSearchSynch;
export const ZENDESK_DOCS_URL = docLinks.workplaceSearchZendesk;
export const PERSONAL_PATH = '/p';

View file

@ -124,9 +124,9 @@ describe('OauthApplication', () => {
`);
});
/* This href test should ultimately use the docLinkServiceMock */
it('renders description', () => {
const wrapper = shallow(<OauthApplication />);
expect(wrapper.prop('pageHeader').description).toMatchInlineSnapshot(`
<React.Fragment>
<EuiText
@ -137,7 +137,7 @@ describe('OauthApplication', () => {
<EuiSpacer />
<EuiLink
external={true}
href="/license-management.html"
href=""
target="_blank"
>
Explore Platinum features

View file

@ -15,19 +15,23 @@ import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants';
import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome';
import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide';
import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry';
import { DOCS_PREFIX } from '../../routes';
import {
GETTING_STARTED_DOCS_URL,
NATIVE_AUTH_DOCS_URL,
STANDARD_AUTH_DOCS_URL,
} from '../../routes';
import GettingStarted from './assets/getting_started.png';
const GETTING_STARTED_LINK_URL = `${DOCS_PREFIX}/workplace-search-getting-started.html`;
const GETTING_STARTED_LINK_URL = GETTING_STARTED_DOCS_URL;
export const SetupGuide: React.FC = () => {
return (
<SetupGuideLayout
productName={WORKPLACE_SEARCH_PLUGIN.NAME}
productEuiIcon="logoWorkplaceSearch"
standardAuthLink={`${DOCS_PREFIX}/workplace-search-security.html#standard`}
elasticsearchNativeAuthLink={`${DOCS_PREFIX}/workplace-search-security.html#elasticsearch-native-realm`}
standardAuthLink={STANDARD_AUTH_DOCS_URL}
elasticsearchNativeAuthLink={NATIVE_AUTH_DOCS_URL}
>
<SetPageChrome trail={[SETUP_GUIDE_TITLE]} />
<SendTelemetry action="viewed" metric="setup_guide" />