diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index e472f8c7ed..ddecf48c81 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -1051,6 +1051,21 @@ const ProjectController = { } ) }, + editorDocumentationButton(cb) { + SplitTestHandler.getAssignment( + req, + res, + 'documentation-on-editor', + (error, assignment) => { + // do not fail editor load if assignment fails + if (error) { + cb(null, { variant: 'default' }) + } else { + cb(null, assignment) + } + } + ) + }, richTextAssignment(cb) { SplitTestHandler.getAssignment( req, diff --git a/services/web/app/views/project/editor/file-tree-react.pug b/services/web/app/views/project/editor/file-tree-react.pug index 5838ab541d..9ec480fbbc 100644 --- a/services/web/app/views/project/editor/file-tree-react.pug +++ b/services/web/app/views/project/editor/file-tree-react.pug @@ -1,38 +1,42 @@ -aside.editor-sidebar.full-size( - ng-show="ui.view != 'history'" - vertical-resizable-panes="outline-resizer" - vertical-resizable-panes-toggled-externally-on="outline-toggled" - vertical-resizable-panes-default-size="350" - vertical-resizable-panes-min-size="32" - vertical-resizable-panes-max-size="'75%'" - vertical-resizable-panes-resize-on="left-pane-resize-all" -) +aside.editor-sidebar.full-size - .file-tree( - ng-controller="ReactFileTreeController" - vertical-resizable-top + .resizable-side-bar( + ng-show="ui.view != 'history'" + vertical-resizable-panes="outline-resizer" + vertical-resizable-panes-toggled-externally-on="outline-toggled" + vertical-resizable-panes-default-size="350" + vertical-resizable-panes-min-size="32" + vertical-resizable-panes-max-size="'75%'" + vertical-resizable-panes-resize-on="left-pane-resize-all" ) - file-tree-root( - on-select="onSelect" - on-init="onInit" - is-connected="isConnected" - ref-providers="refProviders" - reindex-references="reindexReferences" - set-ref-provider-enabled="setRefProviderEnabled" - set-started-free-trial="setStartedFreeTrial" - ) - .outline-container( - vertical-resizable-bottom - ng-controller="OutlineController" - ) - outline-pane( - is-tex-file="isTexFile" - outline="outline" - project-id="project_id" - jump-to-line="jumpToLine" - on-toggle="onToggle" - event-tracking="eventTracking" - highlighted-line="highlightedLine" - show="show" + .file-tree( + ng-controller="ReactFileTreeController" + vertical-resizable-top ) + file-tree-root( + on-select="onSelect" + on-init="onInit" + is-connected="isConnected" + ref-providers="refProviders" + reindex-references="reindexReferences" + set-ref-provider-enabled="setRefProviderEnabled" + set-started-free-trial="setStartedFreeTrial" + ) + + .outline-container( + vertical-resizable-bottom + ng-controller="OutlineController" + ) + outline-pane( + is-tex-file="isTexFile" + outline="outline" + project-id="project_id" + jump-to-line="jumpToLine" + on-toggle="onToggle" + event-tracking="eventTracking" + highlighted-line="highlightedLine" + show="show" + ) + + documentation-button \ No newline at end of file diff --git a/services/web/app/views/project/editor/left-menu.pug b/services/web/app/views/project/editor/left-menu.pug index 8fd5c501ce..26fd8e1b97 100644 --- a/services/web/app/views/project/editor/left-menu.pug +++ b/services/web/app/views/project/editor/left-menu.pug @@ -238,7 +238,12 @@ aside#left-menu.full-size( ) if showSupport li - a(href='/learn', target="_blank") + a( + href='/learn', target="_blank" + event-tracking="left-menu-documentation-click " + event-tracking-mb="true" + event-tracking-trigger="click" + ) i.fa.fa-book.fa-fw | #{translate('documentation')} li diff --git a/services/web/frontend/js/features/outline/components/documentation-button.tsx b/services/web/frontend/js/features/outline/components/documentation-button.tsx new file mode 100644 index 0000000000..13c3f844cf --- /dev/null +++ b/services/web/frontend/js/features/outline/components/documentation-button.tsx @@ -0,0 +1,70 @@ +import { useState } from 'react' +import Icon from '../../../shared/components/icon' +import { useSplitTestContext } from '../../../shared/context/split-test-context' +import { sendMB } from '../../../infrastructure/event-tracking' +import PropTypes from 'prop-types' +import { Button } from 'react-bootstrap' + +function DocumentationButton() { + const { splitTestVariants } = useSplitTestContext({ + splitTestVariants: PropTypes.object, + }) + const documentationButtonVariant = + splitTestVariants['documentation-on-editor'] + + let documentationButtonText = '' + + if (documentationButtonVariant === 'latex-help') + documentationButtonText = 'LaTeX help' + else if (documentationButtonVariant === 'documentation') + documentationButtonText = 'Documentation' + else if (documentationButtonVariant === 'help-guides') + documentationButtonText = 'Help guides' + const [showDocumentationButton, setShowDocumentationButton] = useState( + !(documentationButtonVariant === 'default') + ) + + function handleCloseClick() { + sendMB('file-tree-documentation-dismiss ') + + setShowDocumentationButton(false) + } + + function handleDocumentationLinkClick() { + sendMB('file-tree-documentation-click') + } + return ( +