diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index facbd7ff3c..f03a148839 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -1314,6 +1314,9 @@ const ProjectController = { gitBridgePublicBaseUrl: Settings.gitBridgePublicBaseUrl, wsUrl, showSupport: Features.hasFeature('support'), + showTemplatesServerPro: Features.hasFeature( + 'templates-server-pro' + ), pdfjsVariant: pdfjsAssignment.variant, debugPdfDetach, showLegacySourceEditor, diff --git a/services/web/app/views/project/editor/meta.pug b/services/web/app/views/project/editor/meta.pug index 981b7f205d..50c219016f 100644 --- a/services/web/app/views/project/editor/meta.pug +++ b/services/web/app/views/project/editor/meta.pug @@ -36,6 +36,7 @@ meta(name="ol-legacyEditorThemes" data-type="json" content=legacyEditorThemes) meta(name="ol-showUpgradePrompt" data-type="boolean" content=showUpgradePrompt) meta(name="ol-useOpenTelemetry" data-type="boolean" content=useOpenTelemetry) meta(name="ol-showSupport", data-type="boolean" content=showSupport) +meta(name="ol-showTemplatesServerPro", data-type="boolean" content=showTemplatesServerPro) meta(name="ol-showCM6SwitchAwaySurvey", data-type="boolean" content=showCM6SwitchAwaySurvey) meta(name="ol-richTextVariant" content=richTextVariant) meta(name="ol-showOnboardingVideoTour", data-type="boolean" content=showOnboardingVideoTour) diff --git a/services/web/config/settings.defaults.js b/services/web/config/settings.defaults.js index 44849806bc..fcbd390957 100644 --- a/services/web/config/settings.defaults.js +++ b/services/web/config/settings.defaults.js @@ -794,6 +794,7 @@ module.exports = { importProjectFromGithubModalWrapper: [], importProjectFromGithubMenu: [], editorLeftMenuSync: [], + editorLeftMenuManageTemplate: [], }, moduleImportSequence: [ diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index cc02aea255..0bbc244b92 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -600,6 +600,7 @@ "priority_support": "", "privacy_policy": "", "private": "", + "problem_talking_to_publishing_service": "", "problem_with_subscription_contact_us": "", "proceed_to_paypal": "", "proceeding_to_paypal_takes_you_to_the_paypal_site_to_pay": "", @@ -610,6 +611,7 @@ "project_approaching_file_limit": "", "project_flagged_too_many_compiles": "", "project_has_too_many_files": "", + "project_last_published_at": "", "project_layout_sharing_submission": "", "project_name": "", "project_not_linked_to_github": "", @@ -629,7 +631,10 @@ "projects": "", "projects_list": "", "public": "", + "publish": "", + "publish_as_template": "", "publisher_account": "", + "publishing": "", "pull_github_changes_into_sharelatex": "", "push_sharelatex_changes_to_github": "", "raw_logs": "", @@ -672,6 +677,7 @@ "rename_project": "", "renaming": "", "repository_name": "", + "republish": "", "resend": "", "resend_confirmation_email": "", "resending_confirmation_email": "", @@ -799,6 +805,8 @@ "tags_slash_folders": "", "take_short_survey": "", "template_approved_by_publisher": "", + "template_description": "", + "template_title_taken_from_project_title": "", "templates": "", "terminated": "", "tex_live_version": "", @@ -885,6 +893,8 @@ "unlink_reference": "", "unlink_warning_reference": "", "unlinking": "", + "unpublish": "", + "unpublishing": "", "unsubscribe": "", "untrash": "", "update": "", @@ -911,6 +921,7 @@ "vat_number": "", "view_all": "", "view_hub": "", + "view_in_template_gallery": "", "view_logs": "", "view_metrics": "", "view_pdf": "", diff --git a/services/web/frontend/js/features/editor-left-menu/components/actions-menu.tsx b/services/web/frontend/js/features/editor-left-menu/components/actions-menu.tsx index f6937ba2ff..b94a11f15b 100644 --- a/services/web/frontend/js/features/editor-left-menu/components/actions-menu.tsx +++ b/services/web/frontend/js/features/editor-left-menu/components/actions-menu.tsx @@ -1,8 +1,15 @@ +import { ElementType } from 'react' import { useTranslation } from 'react-i18next' import getMeta from '../../../utils/meta' +import importOverleafModules from '../../../../macros/import-overleaf-module.macro' import ActionsCopyProject from './actions-copy-project' import ActionsWordCount from './actions-word-count' +const components = importOverleafModules('editorLeftMenuManageTemplate') as { + import: { default: ElementType } + path: string +}[] + export default function ActionsMenu() { const { t } = useTranslation() const anonymous = getMeta('ol-anonymous') as boolean | undefined @@ -18,6 +25,11 @@ export default function ActionsMenu() {