diff --git a/services/web/app/src/Features/User/UserPagesController.mjs b/services/web/app/src/Features/User/UserPagesController.mjs index bfc45f5345..edf8b72e8e 100644 --- a/services/web/app/src/Features/User/UserPagesController.mjs +++ b/services/web/app/src/Features/User/UserPagesController.mjs @@ -122,6 +122,8 @@ async function settingsPage(req, res) { await SplitTestHandler.promises.getAssignment(req, res, 'bootstrap-5') // Get the users write-and-cite assignment to switch between translation strings await SplitTestHandler.promises.getAssignment(req, res, 'write-and-cite') + // Get the users papers-integration assignment to show the linking widget + await SplitTestHandler.promises.getAssignment(req, res, 'papers-integration') res.render('user/settings', { title: 'account_settings', @@ -140,11 +142,13 @@ async function settingsPage(req, res) { github: user.features.github, mendeley: user.features.mendeley, zotero: user.features.zotero, + papers: user.features.papers, references: user.features.references, }, refProviders: { mendeley: Boolean(user.refProviders?.mendeley), zotero: Boolean(user.refProviders?.zotero), + papers: Boolean(user.refProviders?.papers), }, writefull: { enabled: Boolean(user.writefull?.enabled), diff --git a/services/web/app/src/models/User.js b/services/web/app/src/models/User.js index 13a480a5ee..707804ca63 100644 --- a/services/web/app/src/models/User.js +++ b/services/web/app/src/models/User.js @@ -128,6 +128,7 @@ const UserSchema = new Schema( }, mendeley: { type: Boolean, default: Settings.defaultFeatures.mendeley }, zotero: { type: Boolean, default: Settings.defaultFeatures.zotero }, + papers: { type: Boolean, default: Settings.defaultFeatures.papers }, referencesSearch: { type: Boolean, default: Settings.defaultFeatures.referencesSearch, @@ -163,6 +164,7 @@ const UserSchema = new Schema( templates: { type: Boolean }, trackChanges: { type: Boolean }, mendeley: { type: Boolean }, + papers: { type: Boolean }, zotero: { type: Boolean }, referencesSearch: { type: Boolean }, symbolPalette: { type: Boolean }, @@ -187,6 +189,7 @@ const UserSchema = new Schema( // The actual values are managed by third-party-references. mendeley: Schema.Types.Mixed, zotero: Schema.Types.Mixed, + papers: Schema.Types.Mixed, }, writefull: { enabled: { type: Boolean, default: null }, diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 460c5a8698..c57f04bcc6 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -1045,6 +1045,9 @@ "owner": "", "page_current": "", "pagination_navigation": "", + "papers_dynamic_sync_description": "", + "papers_integration": "", + "papers_sync_description": "", "partial_outline_warning": "", "password": "", "password_managed_externally": "", diff --git a/services/web/frontend/js/shared/svgs/papers-logo.tsx b/services/web/frontend/js/shared/svgs/papers-logo.tsx new file mode 100644 index 0000000000..583d0aaaa7 --- /dev/null +++ b/services/web/frontend/js/shared/svgs/papers-logo.tsx @@ -0,0 +1,58 @@ +function PapersLogo() { + return ( + + + + + + + + + + + + + + ) +} + +export default PapersLogo diff --git a/services/web/locales/en.json b/services/web/locales/en.json index c724f4580f..c0ef3860d5 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -1488,7 +1488,10 @@ "page_current": "Page __page__, Current Page", "page_not_found": "Page Not Found", "pagination_navigation": "Pagination Navigation", + "papers_dynamic_sync_description": "With the Papers integration, you can import your references into __appName__. You can either import all your references at once or dynamically search your Papers library directly from __appName__.", + "papers_integration": "Papers Integration", "papers_presentations_reports_and_more": "Papers, presentations, reports and more, written in LaTeX and published by our community.", + "papers_sync_description": "With the Papers integration you can import your references from Papers into your __appName__ projects.", "partial_outline_warning": "The File outline is out of date. It will update itself as you edit the document", "password": "Password", "password_cant_be_the_same_as_current_one": "Password can’t be the same as current one", diff --git a/services/web/test/acceptance/config/settings.test.defaults.js b/services/web/test/acceptance/config/settings.test.defaults.js index 7ab66049f0..72ca6c3616 100644 --- a/services/web/test/acceptance/config/settings.test.defaults.js +++ b/services/web/test/acceptance/config/settings.test.defaults.js @@ -109,6 +109,7 @@ module.exports = { references: false, referencesSearch: false, mendeley: true, + papers: true, zotero: true, compileTimeout: 60, compileGroup: 'standard', @@ -124,6 +125,7 @@ module.exports = { references: false, referencesSearch: false, mendeley: false, + papers: false, zotero: false, compileTimeout: 60, compileGroup: 'standard', @@ -139,6 +141,7 @@ module.exports = { references: true, referencesSearch: true, mendeley: true, + papers: true, zotero: true, compileTimeout: 180, compileGroup: 'priority', @@ -154,6 +157,7 @@ module.exports = { references: true, referencesSearch: true, mendeley: true, + papers: true, zotero: true, compileTimeout: 180, compileGroup: 'priority', diff --git a/services/web/test/unit/src/User/UserPagesControllerTests.mjs b/services/web/test/unit/src/User/UserPagesControllerTests.mjs index 5f81aa28df..6b19ef03f5 100644 --- a/services/web/test/unit/src/User/UserPagesControllerTests.mjs +++ b/services/web/test/unit/src/User/UserPagesControllerTests.mjs @@ -36,6 +36,7 @@ describe('UserPagesController', function () { refProviders: { mendeley: { encrypted: 'aaaa' }, zotero: { encrypted: 'bbbb' }, + papers: { encrypted: 'cccc' }, }, } this.adminEmail = 'group-admin-email@overleaf.com' @@ -338,6 +339,7 @@ describe('UserPagesController', function () { this.res.callback = () => { expect(this.res.renderedVariables.user.refProviders).to.deep.equal({ mendeley: true, + papers: true, zotero: true, }) done() diff --git a/services/web/types/user.ts b/services/web/types/user.ts index 0aec6c73d6..2ea85225e6 100644 --- a/services/web/types/user.ts +++ b/services/web/types/user.ts @@ -2,6 +2,7 @@ import { Brand } from './helpers/brand' export type RefProviders = { mendeley?: boolean + papers?: boolean zotero?: boolean } @@ -16,6 +17,7 @@ export type Features = { gitBridge?: boolean github?: boolean mendeley?: boolean + papers?: boolean references?: boolean referencesSearch?: boolean symbolPalette?: boolean