mirror of
https://github.com/callumalpass/tasknotes.git
synced 2026-07-22 12:50:26 +00:00
feat(calendar): add external calendar event creation from calendar view (#1548)
Add a "Create external calendar event" option to the calendar view's date selection context menu. When a user clicks or drags to select a time slot and has connected Google/Microsoft calendars, they can now create events directly on those calendars via a new CalendarEventCreationModal.
This commit is contained in:
parent
b07b3a0324
commit
51f85f3171
14 changed files with 1134 additions and 0 deletions
|
|
@ -45,6 +45,12 @@ Example:
|
|||
- Configurable via Settings > Features > Recurring Tasks > "Reset checkboxes on recurrence"
|
||||
- Thanks to @phortx for the feature request
|
||||
|
||||
- (#1548) Added ability to create calendar events on connected external calendars directly from the calendar view
|
||||
- When clicking or dragging to select a time slot, a new "Create calendar event" option appears in the context menu
|
||||
- Opens a modal to enter event title, description, location, and select which calendar to create on
|
||||
- Supports both Google Calendar and Microsoft Calendar providers
|
||||
- Thanks to @Robubble for the feature request
|
||||
|
||||
- (#1597) Added MCP server for AI agent integration
|
||||
- Exposes TaskNotes tools at `/mcp` endpoint, gated behind `enableMCP` setting
|
||||
- Supports tasks (CRUD, query, toggle status/archive, parse from text), time tracking, pomodoro, calendar events, and task statistics
|
||||
|
|
|
|||
|
|
@ -376,6 +376,8 @@
|
|||
"settings.features.timeTracking.stopNotificationDesc": "5287fd9c0436ce77cbb19b7b4ea66d83f6118a6c",
|
||||
"settings.features.recurring.maintainOffsetName": "192ccc835a7a65ea268e9dce076913ff06a3d06f",
|
||||
"settings.features.recurring.maintainOffsetDesc": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"settings.features.recurring.resetCheckboxesName": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"settings.features.recurring.resetCheckboxesDesc": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"settings.features.timeblocking.header": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"settings.features.timeblocking.description": "059472b98a0bf53f1703cbe859d50e55f6786f70",
|
||||
"settings.features.timeblocking.enableName": "50379298a9bbad30a8c2cdebca13115860f53477",
|
||||
|
|
@ -1055,6 +1057,7 @@
|
|||
"settings.integrations.googleCalendarExport.notices.notATask": "6bdba0269f78cacd170f9608ffa1d65b517f56f9",
|
||||
"settings.integrations.googleCalendarExport.notices.noDateToSync": "2bcf86e4954292d332550aaada711b6f5b0531e8",
|
||||
"settings.integrations.googleCalendarExport.notices.syncFailed": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": "84783064e6e5db03158e0b4e3f3b514b6f9e8027",
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"settings.integrations.googleCalendarExport.notices.syncComplete": "7cf19e37c30b10260d12ec55585fd7098e28f4ae",
|
||||
"settings.integrations.googleCalendarExport.notices.eventsDeletedAndUnlinked": "babcfd6bb63173ea2b582a8a5f0c336f84692cbb",
|
||||
|
|
@ -1079,6 +1082,8 @@
|
|||
"settings.integrations.httpApi.authToken.name": "1ba4dadc61225e43b73eaa19ae9c57856129ff60",
|
||||
"settings.integrations.httpApi.authToken.description": "93591c952b15b9261d1b5d5700e04a92329c45bd",
|
||||
"settings.integrations.httpApi.authToken.placeholder": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"settings.integrations.httpApi.mcp.enable.name": "1b4cc187a8ef57308b16a947dd993833e1910e12",
|
||||
"settings.integrations.httpApi.mcp.enable.description": "8d7793dc5646fed97cd0505769894e69227f59c4",
|
||||
"settings.integrations.httpApi.endpoints.header": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"settings.integrations.httpApi.endpoints.expandIcon": "867c2bf8761c97ae2c111d08b50b639901a3604d",
|
||||
"settings.integrations.httpApi.endpoints.collapseIcon": "535a8b5879535db4367815d26e3c7950a245a466",
|
||||
|
|
@ -1325,6 +1330,24 @@
|
|||
"modals.timeblockCreation.addAttachmentButton": "f3aaf19dab47f2aa461d2713ffc1188c3f4b2cab",
|
||||
"modals.timeblockCreation.addAttachmentTooltip": "39289e99c6326eb60ff29dad376a120671c3a2f1",
|
||||
"modals.timeblockCreation.createButton": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"modals.calendarEventCreation.heading": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"modals.calendarEventCreation.dateTimeLabel": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"modals.calendarEventCreation.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"modals.calendarEventCreation.titleDesc": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"modals.calendarEventCreation.titlePlaceholder": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"modals.calendarEventCreation.calendarLabel": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"modals.calendarEventCreation.calendarDesc": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"modals.calendarEventCreation.descriptionLabel": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"modals.calendarEventCreation.descriptionDesc": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"modals.calendarEventCreation.locationLabel": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"modals.calendarEventCreation.locationDesc": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"modals.calendarEventCreation.locationPlaceholder": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"modals.calendarEventCreation.createButton": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"modals.calendarEventCreation.titleRequired": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"modals.calendarEventCreation.noCalendarSelected": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"modals.calendarEventCreation.success": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"modals.calendarEventCreation.error": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"modals.icsNoteCreation.heading": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"modals.icsNoteCreation.titleLabel": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"modals.icsNoteCreation.titleDesc": "e5928c1bd84bd2735415d45d5f7e03f677ff5f52",
|
||||
|
|
|
|||
664
i18n.state.json
664
i18n.state.json
|
|
@ -1508,6 +1508,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "5a2479e8d695b0a30ed06ce40f23059a3979272f"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "701e1ec3839c57707e1ebeccea624a854c1af281"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "6bf9b5fc62f2a2bbf39ab9494fa5aacec929aae5"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "205a235d7e3e1488fb7982d6e5d83c6e7c3d7d13"
|
||||
|
|
@ -4224,6 +4232,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "f54cf866b81db50d694a4e9439d98d3813e75cfe"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "44b5cb5060fa752a6674bc33b1713a1507e048e7"
|
||||
|
|
@ -4320,6 +4329,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "d69df6760273a6efce583b3c98ef6fdd00d1d4d4"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "a5dfe0936bfd106daddd8787099886f2ea7d3bfd"
|
||||
|
|
@ -5304,6 +5315,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "901f706bc8539497483f268eb8b75e17180da316"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "f9bcdaf4ef4ed14ff80a6d5789de565c84e0719f"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "e0794ae909f0f6ef70a639a591b8fcfd82aeec8f"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "950701e758d18a72134a6b8948c7cf42867c0eb9"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "b7288a02748e8b098b4770d97d7eaf27b13dc6ce"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "8bb21e1258d6f1f7fc96a6234dc6913c35a616c4"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "33fe92f625e5e1d93b2f0ad659aeb0950c49bc06"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "18da3488adec22a4e61e9359debc085d93b4d6d4"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "b3c8defcacc0ad93a3cfcbdd962b7b95ab5d019f"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "01ff67508a846f687f68a2d152548fb225f884ec"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "f707cda841a7d21060233e4a10454cf5aa78bd7c"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "d95f9e67114d4f4267b966a80a35f074ad30dc5d"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "3a5e878cc749fbfbeb014708bd0f5bf97f08ed29"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "b157a409897013b700e15752c83fde971b8b44a2"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "48b363d26fdbfa518d7ec43df34da11cfd959188"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "26300832bc89fa836775f436bb837bff6c27eb6f"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "3620d26dcdfdd111f21b57e801b1628559b99b8f"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "c6c5fb66b7319090935d10009eabeec4924ec7cf"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "795bc46844e93adc571b477c10700e166dc960f0"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "81c836d8e8400ce625098ac41c63a3f6a77526bb"
|
||||
|
|
@ -9514,6 +9597,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "bc3794396b3c3b3017f5bc8696297cf595001714"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "cf8f53c0bb1aa8165a533abb8cd857b861b2258b"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "6527e50df91571a2a603f9e2fd4deba0ba1adcef"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "4e36b221ac10a0d6f8044e3df4e7934029b97271"
|
||||
|
|
@ -12230,6 +12321,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "36f5fedb80209c5a392142701c1d189a4b81ee39"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "9ade27e5f156dec6b71b2089dcff8f29429d858c"
|
||||
|
|
@ -12326,6 +12418,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "9d9df64baade40f7ef0ed5e17d000b7a6e78ce9b"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "dcee52f5ccc6e6abf2c7129584cb20d0b7dc5644"
|
||||
|
|
@ -13310,6 +13404,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "61a9103ef44153884f3f8c5cedcc1bfefd189d2f"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "baf2a6df744e9fb5fd13b55977e3a4b44d9d38d4"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "34ebd04dbf2153601d4e839c5ed13c3650164a24"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "98a5efa60beb882ed4dbac1ac013f73418acda77"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "1c2dc6fb6ac1f2d11ccc1bf8970de870423c0ed1"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "e1ec0ebc14b4eb5d1c1ba9c47aad5ed532aa7bd8"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "df824e6b9b926d40cc19b68662e959c8d43a8fff"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "f2bea7ba223cf1c072e451bc8287648ee023a34a"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "7fda3970598ef60b0b151b2274290dd18559cf83"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "f8e2d20c6ffaeb03aabadc1e8666bd9f15931476"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "f2c67432e271251fd08613dba800e79147408e05"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "7af1ffcca691e731c33e254a9d552915acd12ca6"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "9cc1c9fb966115b2b731804807e28c42d43b8306"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "5605012dda92560f7c6bc5d09b0adb8c5fd4e1ee"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "50ec735ccf4f957ecf8461cdc5e3de4d73afd065"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "cb95a1ed8752afa3d2eceea23ecdc45b65e3e94d"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "1ba9a3695a1ef8894c7ccb997d19a4ffd558bba1"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "db5084545c188a58640925e7af80b772f21b0b71"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "0f5caa5d0578d871e8fdf6e00b13e98e661f092b"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "1dcdb592eb0649fe79a88527224d55840b4c4f24"
|
||||
|
|
@ -17520,6 +17686,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "186a1a509f0cbba6179920b88cbeb6ece9e480b0"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "93e351fc6b481bb4b89d80a109ffb2822b655f1b"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "4be5ccf7b66a7d3aa24eb01b0de15c07084219fe"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "9a4650036fc33aec859867fae23a9b56135272a5"
|
||||
|
|
@ -20236,6 +20410,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "cf98643b82e793b6184e2098c89301f70316a59e"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "733a4d1f58cdf8379212d4d8b6fc6353d0dbfbd2"
|
||||
|
|
@ -20332,6 +20507,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "bbfef2a622f0672a3bb2ec04eee9c7b2ea53843d"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "3cbde2a054c4ea8464c2ad7135a69f1a4911af10"
|
||||
|
|
@ -21316,6 +21493,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "37f67e2819ebbe183e4df51aaa23648eb2083b45"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "0c5a479212c8af78fb1b6c95bd93f25613da4c55"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "1a0134fde9fabe377e46ba8ca85f9393e6bd3046"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "eb97899aedcd5609782b5ccb4ffa390e0e66a3eb"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "fba9d00bcd802badbcfdbdb40f3b6dd6c8c9b811"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "6d140ba6babef4f9a032a65a40e679f2f38fbaac"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "4c83736b7403957857c3e9951ecc30262711c6c7"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "ee01bcfeff16eb4cb8cd1fafcadf600661b6d502"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "fbdc5cbc88dbec17472a975f1f5337db90cd204b"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "3b2ac858bb897c14b946903c0da46bc1ace60b02"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "7791ebea903fa767c64733b14faed6d303d4f530"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "1fa4cbdddcd0605648fb5c3a289a1ee60c87320d"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "12967a434ca63945993ecb09decb9dc527893e44"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "adaf5aaf2c70a83d92fb889d608c774583cd9262"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "bb14c6abafd24525ab9199985a04e5d3c79910f4"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "8b3ad54a0b5e004d341a215c2024a2e58bacc184"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "201383d68f38a987b276d7b5897361756d1ebbb0"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "25243a191f03582b13b08571d4e67ef6ad3ced77"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "15e79e5a8ceabb713e1aa8010dc3e2d36c47e42a"
|
||||
|
|
@ -25526,6 +25775,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "3369f3cfb3dd58e32abf1ff03a1f8278561b61e9"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "583bbd6318f5cda9affcaf29496cb378e3e50eb5"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "8ecf91cc3e5d9965080e82f000aecc782883d885"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "f2fcea03bcd83ad35153c28849555e493cb14802"
|
||||
|
|
@ -28242,6 +28499,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "dd0beea7bf7f3133bb876d1dfe8fd203f6da0299"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "0d6bd6066443942da0008d16fe99bb8bbff500ad"
|
||||
|
|
@ -28338,6 +28596,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "0983fb3a73aec3ba20bad3da76764793cd218abf"
|
||||
|
|
@ -29322,6 +29582,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "a4214644f76b1fcc5961ce2d185488e8c2bb72ef"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "00aae20ac12579d3d84621fea2d275a30843e6e0"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "7a4a59242baa586d81e03e8742f165d07147239d"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "47b4753f220d4e6205ab2eb57371e940cbbdfd46"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "96a533f1510e477899dda309653887928eea3b93"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "b2196853c4f06a71696f8f87981a8a4cc64f8e5e"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "340ba3962c527f49e49344dece05361c260a6ad1"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "878433e598030b9b0d8b42bed54630438c3fec26"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "f6c2c8d0f4629d905c124c8a59694eb1343a2a5a"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "bd9a7e5d3c2af9ee1f6832cbaae21f4c1c94ec85"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "07889440bb68815d551e6407c06a94c631c85904"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "07c4e81b27751acb78bfcf22c34dde3f6694071e"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "b9707cf42ca828d80eec355937e2952f6c2cfdbc"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "17c4046c5ae9f398e34d6c73c76684b19fc29a6b"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "5bad02261d1cd2f9ca19c49216c4e50927f96d9b"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "27951470cc7fa8564c18f078baf1d2163121ab72"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "ed9bea2f74e507498ea98a7a8a50515cf2e48901"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "262b7275e9ee684fced44a5f8aa131e1f0c2f797"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "c70663d1fd14fa5a1cfb62d28cba33ce2246b3df"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "6daa771df70fcbe4899874ae75653b83b939b730"
|
||||
|
|
@ -33532,6 +33864,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "cfd36a058d13cbd6761b14ddec7aee48fcf66a44"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "0df82ace1efa3c9f52f8f306df340a3264eeee59"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "6b81770780b731fb0c2c3cb272af4fb9d794178c"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "df3742092e53303ce273ea5588d2dacf2f962074"
|
||||
|
|
@ -36248,6 +36588,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "8a35723a391a98c5bba7479aa98e201e11f556ef"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "4034ff1ad8940e29fefc752a9942059f332e74e0"
|
||||
|
|
@ -36344,6 +36685,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "9c0b7ae51ef45961aceea9cd82a01158a3d819f7"
|
||||
|
|
@ -37328,6 +37671,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "7658f71b16dde7acab45f40bd1cf49e9f26a6315"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "ae1068f2cfb9561bd6f74cdf4092a3f8a2472028"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "7cb0af58a2dec32c164946b8e17e5d043f7bf972"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "078b3a1b0a3dc17487beabf5119cf7cdf99489ff"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "2546eee40cc4a32e3c5a2feb6036033201c2ff9c"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "0ebb579be80cf3c79058dea0695954fd04c66917"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "fc8c5b6975f76dd90501f70e910006ef7b22aedf"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "8f9afd154b2607dcc1d81219d136fa4b8a3eccdf"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "841964364c395ce4575d8bb872725ce6f1481817"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "586f5422ba49bab461ff6bb1698bed81f166a6fc"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "1df765ebf155c142177ff52547560d63385d18c2"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "3d9d982dfd3191d6ed4ab87dc22e8ba32ac06edd"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "16061d9a09c58b7162dcacd7e0493c51fbfcd943"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "468156baa4767f7aaa40ced0a591e3f72a2d4fb6"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "2423bf5c21a19a5f9288121635a3afe59d4de3a3"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "a3ecdcc57b436c619a38c3c4f92b0edb45eb4283"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "c7e8b95e72b35299f58787b1c8f8ab757d3c80b6"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "91e89648b9afe2f12a77171fb4e51d18abaf5028"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "252f44e5279d54e28ba44839038248a2e03ef265"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "b7ec329de0883796ebc354c86c78e9e41dde63aa"
|
||||
|
|
@ -41538,6 +41953,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "90342838a0709bc9e6708f28726c6030143051ee"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "076faae40cb80513e1d50091b9409194d24f25e2"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "9aeb2f282783a6a5411dbcc90fc014ca1330ffd8"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "d3daff3df4681bcef1999205c2b5b762bdec5894"
|
||||
|
|
@ -44254,6 +44677,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "1707144d30124dd65bbaef57b093b762805af3cd"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "fa4fe08ec4d8255a48cbe5da23b7e4739f1da8d9"
|
||||
|
|
@ -44350,6 +44774,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "9f06048d726b915f674f33b7a1a31ec80e6492d0"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "449457e5dcc4cd6d5b48f94dc341ad61d16424f1"
|
||||
|
|
@ -45334,6 +45760,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "340938ad46760703b62374555f36ae6c2e2e7ef4"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "ef0f8d40cbed235b8f5f04d87ecd5e0637bfd36c"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "3946a54fa8927dceb1835a665c1650d0c4d886a8"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "98a5efa60beb882ed4dbac1ac013f73418acda77"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "d4b5fd65b0e728c1180607add3757aea904df707"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "363fe549100b76ea5b429305fcb338acc3bd6adc"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "439ade69fdcd320a3557e9e8e0daa7cb59aa3c5c"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "c9420bebe5a338b17eb83aea1b3e77a1015d577d"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "469768598e0fd225cdf8609caffb128dc3e0bcd0"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "7b98303bebb579af872b14102497b24e304754a1"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "bc8501fc83b3c2acc849f87de074e9fae2974198"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "dc99d54d9990e3c134420be3918e88f28531e630"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "8c966e300d17d3f79c820fcd0e770d8a703a5d63"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "c9cbbfae3b3110f4246b1872c6a7cea4c7bf80c9"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "b2c53f1e691f3824324ed3b7b3bac4529b40f9eb"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "efa41dc970170f11d8681d1096b08f2f767017ba"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "85fa471b9a749d3764cc7be275110a69f5e78d3d"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "2f1435846e1924df0e80556fa14a9ee1849f9413"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "404e96b97d4f2fdd7895c67bcedd22f335a51211"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "38d5f5bb9f52342891fdc73721abef6b493514b6"
|
||||
|
|
@ -49544,6 +50042,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "ee30c043b7740a0c996e372da9e4b1b92ae15e40"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "81ee8e080f197fe6b3cafcd3f4f9db185b83e792"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "b7d670eb366706e88daaa49ea2672377c65357ef"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "d3b8d0692a009a981d32bff05867c02291ea2552"
|
||||
|
|
@ -52260,6 +52766,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "1e1efd6c4e3dcd7d6519ecbb137bc4a886ea2536"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "9103ab380bc11c3048f9854599ed24b9df1b46f4"
|
||||
|
|
@ -52356,6 +52863,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "542cca6b9051576ac9fb6b7a3c7599a1d7f7ff8a"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "555612d1c2cdaf9af325c116cfba1192195787a4"
|
||||
|
|
@ -53340,6 +53849,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "8e0587de5c3133952114e8f24fa3aabd2a2ee782"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "94cffec71e95ea1e5ae2cf2df3610a5ea6448bad"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "c94349dc7d5476e6c6dd464496f6a11757a52005"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "3de49828e86a4016140f16781af6cceba1ad3c3c"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "bc68758df1cd47bdf6d0d533d130f6c4dadfa1e5"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "a6bca31bbddfce16028f0d451f8cbaf6be55d107"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "fa3a2f17993af6412508d17c3f63ece764af2c0b"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "5fa74131d1a12046ee7a4595bbb9e3d2d390340d"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "f5441f6aee76222c4120066575e80c2d177ac3c0"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "447047e88f7ae62259444200f61956ef44a4acc2"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "899b99f830697db7a6806fdfd5cc49c4642d1c9e"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "8e2fe0254e7864170067d43e7086384b09f00e2b"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "f5c917ba7f9a41e58374a8e1cd3904b173ec454c"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "2254f1e8c12aa455a6fa3f367f3b3be9d4f3acbf"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "1f8f703fdabefe57ab2e9ca902259e9e50f2ce52"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "338707109e4a967da58ff66b281c8983f0834fab"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "ca2a8f43ecf9e570e917c00803b288b09070d0ca"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "5fb297841cd255d4e5d5630d75b120264f49a163"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "c8902f90a019be329542abd5eddfe41716de116c"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "a0249b231395b6ec1919ad307b4ec58e0271a141"
|
||||
|
|
@ -57550,6 +58131,14 @@
|
|||
"source": "c91f5d8591a6cc0689595756dee86a1fdb64064e",
|
||||
"translation": "96646c4d3a60c0ffb0e5e50942286da005e2124e"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesName": {
|
||||
"source": "b2f84f2eee1e5f97fb92f3722e5f67519ed5bff6",
|
||||
"translation": "63f6b79cb9e820e64971f548379bd984e548dc9c"
|
||||
},
|
||||
"settings.features.recurring.resetCheckboxesDesc": {
|
||||
"source": "e1ba32bdec3d1cb31313e8c9bcc5b6917bb69343",
|
||||
"translation": "fb43877ea8061e50bfba09dcec8b92d6731cec73"
|
||||
},
|
||||
"settings.features.timeblocking.header": {
|
||||
"source": "d20cc29abb0ef8f4d49f2dfa3ab4e53db3a0fe7c",
|
||||
"translation": "93fcff18f5080cf382e59bdfe14fbd42205ad295"
|
||||
|
|
@ -60266,6 +60855,7 @@
|
|||
"source": "e260cf9e4f67bc503e435d6cd753b53f8284a087",
|
||||
"translation": "cf4413809fd14c375b99a88a7fa2e951c5d7f5d5"
|
||||
},
|
||||
"settings.integrations.googleCalendarExport.notices.connectionExpired": null,
|
||||
"settings.integrations.googleCalendarExport.notices.syncingTasks": {
|
||||
"source": "14a62327146b2d7ca0b391b34aea8564dbbbd26c",
|
||||
"translation": "ba3a4ece59db9c1255ad02d909fb8b41ac054277"
|
||||
|
|
@ -60362,6 +60952,8 @@
|
|||
"source": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c",
|
||||
"translation": "dfd8e9adf613d1b2a46dfac755c50174ccecef4c"
|
||||
},
|
||||
"settings.integrations.httpApi.mcp.enable.name": null,
|
||||
"settings.integrations.httpApi.mcp.enable.description": null,
|
||||
"settings.integrations.httpApi.endpoints.header": {
|
||||
"source": "0a8a75f95705a22596bf8a466d95bc6f53a613cf",
|
||||
"translation": "d3084f6cb039430a34c706caef7351a884335835"
|
||||
|
|
@ -61346,6 +61938,78 @@
|
|||
"source": "6ba03dee8a531db91b38fb09715e0c40304804d2",
|
||||
"translation": "6cc56418e8f47eba7ed05ed01b59d999ca98a311"
|
||||
},
|
||||
"modals.calendarEventCreation.heading": {
|
||||
"source": "0b87cfcf3e7c4b53d489fdfc5574bd6ac663c652",
|
||||
"translation": "65bff9abe407ea1183a303a52fa90db2c870d913"
|
||||
},
|
||||
"modals.calendarEventCreation.dateTimeLabel": {
|
||||
"source": "28948815dbd940aae135258b71870cac05cf589c",
|
||||
"translation": "de1fb2dc83361fa16f93a23dfeb90e651da06b43"
|
||||
},
|
||||
"modals.calendarEventCreation.titleLabel": {
|
||||
"source": "768e0c1c69573fb588f61f1308a015c11468e05f",
|
||||
"translation": "748d7dc7e3212d62e207d204624705af70ea635c"
|
||||
},
|
||||
"modals.calendarEventCreation.titleDesc": {
|
||||
"source": "204facdde5d37b2a8c6841d3b51506b09a7970aa",
|
||||
"translation": "8118625fa27300a52af04697368054c12e53c8e1"
|
||||
},
|
||||
"modals.calendarEventCreation.titlePlaceholder": {
|
||||
"source": "52d170c5b605d844a7c3833ffd0152d55ef21989",
|
||||
"translation": "011bc62ec3546f7692afb7e93a0d51fcc5b8239e"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarLabel": {
|
||||
"source": "adab5090ac6a1b7b5420faac7be86c41721ba27c",
|
||||
"translation": "2ecbc11608d1df5c4df3bca6864abb9faac6a3fb"
|
||||
},
|
||||
"modals.calendarEventCreation.calendarDesc": {
|
||||
"source": "96e367bdcacf395006d26ab3de76820862e371e9",
|
||||
"translation": "8c726c94ba58522a164df8e8fc4c03d384e4f443"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionLabel": {
|
||||
"source": "55f8ebc805e65b5b71ddafdae390e3be2bcd69af",
|
||||
"translation": "412f54dc38e642eda535746e715503df35ad768f"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionDesc": {
|
||||
"source": "1349d1871a2fde03ce6e7565bc8b2eb2eabbf991",
|
||||
"translation": "2f7aa04a0c167b34e430733285c6a695cd440af8"
|
||||
},
|
||||
"modals.calendarEventCreation.descriptionPlaceholder": {
|
||||
"source": "5f51a995cba708ec83e4707407cf61444efa286f",
|
||||
"translation": "c68ce34e5854fb1d9dc2e62840ae36f0970f7a0f"
|
||||
},
|
||||
"modals.calendarEventCreation.locationLabel": {
|
||||
"source": "d219c68101f532de10add2cf42fb9dbeca73d3be",
|
||||
"translation": "e9e0a3f4e5d4cb56f2d54bc30856201a1be5ef8d"
|
||||
},
|
||||
"modals.calendarEventCreation.locationDesc": {
|
||||
"source": "71432720c31437c6ac5c9d0d1824cb38ee8f7fb6",
|
||||
"translation": "2dbfef1cd901857c599566cb70b4902a0c5b18d1"
|
||||
},
|
||||
"modals.calendarEventCreation.locationPlaceholder": {
|
||||
"source": "a8040397f1794903936a6cc4c04acf255e336f1a",
|
||||
"translation": "1fd7b8ffb0cb552e54805ca41b9ab47b87fb07e6"
|
||||
},
|
||||
"modals.calendarEventCreation.createButton": {
|
||||
"source": "b8d8b9a919706adf04012ceb4de659811efac2f7",
|
||||
"translation": "314f65bd031dfc90ba7486fba95cc30e007c9061"
|
||||
},
|
||||
"modals.calendarEventCreation.titleRequired": {
|
||||
"source": "e103b10ec6905383118ee08d4e3df22cceada672",
|
||||
"translation": "59e6ffde9f02946267a579045c421d5e944e8291"
|
||||
},
|
||||
"modals.calendarEventCreation.noCalendarSelected": {
|
||||
"source": "92e6ee1f3406847d6cc155af79d7de9a3a63e3d7",
|
||||
"translation": "c704d3f2517bae364b6870e861d45453d1c745e9"
|
||||
},
|
||||
"modals.calendarEventCreation.success": {
|
||||
"source": "d456cfe80d68b0f592914ee969747d3dfb05aa2b",
|
||||
"translation": "605e7b1b2e0e8e4f786839799035b1746bf49364"
|
||||
},
|
||||
"modals.calendarEventCreation.error": {
|
||||
"source": "3124f35fa1cfca38954a50cc7fdbe161ae505aec",
|
||||
"translation": "d4a08e377dfb9af2d8e10fe3fe7b507efeacdee2"
|
||||
},
|
||||
"modals.icsNoteCreation.heading": {
|
||||
"source": "f75a2f58d0530c7a70c2df4d96166a16f0c47d31",
|
||||
"translation": "02062859d64d8d1162d8f7dc40ecfafd8cac896b"
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import {
|
|||
} from "./calendar-core";
|
||||
import { handleCalendarTaskClick } from "../utils/clickHandlers";
|
||||
import { TaskCreationModal } from "../modals/TaskCreationModal";
|
||||
import { CalendarEventCreationModal } from "../modals/CalendarEventCreationModal";
|
||||
import { ICSEventInfoModal } from "../modals/ICSEventInfoModal";
|
||||
import { Menu, TFile, setIcon, setTooltip } from "obsidian";
|
||||
import { format } from "date-fns";
|
||||
|
|
@ -1677,6 +1678,38 @@ export class CalendarView extends BasesViewBase {
|
|||
});
|
||||
});
|
||||
|
||||
// Show "Create calendar event" if any external calendars are connected
|
||||
const registry = this.plugin.calendarProviderRegistry;
|
||||
if (registry) {
|
||||
const hasWritableCalendars = registry.getAllProviders().some(
|
||||
(p) => p.getAvailableCalendars().length > 0
|
||||
);
|
||||
if (hasWritableCalendars) {
|
||||
menu.addSeparator();
|
||||
menu.addItem((item) => {
|
||||
item.setTitle("Create external calendar event")
|
||||
.setIcon("calendar-plus")
|
||||
.onClick(() => {
|
||||
const modal = new CalendarEventCreationModal(
|
||||
this.plugin.app,
|
||||
this.plugin,
|
||||
{
|
||||
start: info.start,
|
||||
end: info.end,
|
||||
allDay: info.allDay,
|
||||
onEventCreated: () => {
|
||||
this.expectImmediateUpdate();
|
||||
// Refresh provider data to show the new event
|
||||
registry.refreshAll();
|
||||
},
|
||||
}
|
||||
);
|
||||
modal.open();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
menu.showAtMouseEvent(info.jsEvent);
|
||||
|
||||
// Unselect after handling
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const de: TranslationTree = {
|
|||
addAttachmentTooltip: "Datei oder Notiz mit unscharfer Suche auswählen",
|
||||
createButton: "Timeblock erstellen",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Kalenderereignis erstellen",
|
||||
dateTimeLabel: "Datum & Uhrzeit: ",
|
||||
titleLabel: "Titel",
|
||||
titleDesc: "Titel für das Kalenderereignis",
|
||||
titlePlaceholder: "z.B. Teambesprechung",
|
||||
calendarLabel: "Kalender",
|
||||
calendarDesc: "In welchem Kalender das Ereignis erstellt werden soll",
|
||||
descriptionLabel: "Beschreibung",
|
||||
descriptionDesc: "Optionale Beschreibung für das Ereignis",
|
||||
descriptionPlaceholder: "Details zu diesem Ereignis hinzufügen...",
|
||||
locationLabel: "Ort",
|
||||
locationDesc: "Optionaler Ort für das Ereignis",
|
||||
locationPlaceholder: "z.B. Konferenzraum A",
|
||||
createButton: "Ereignis erstellen",
|
||||
titleRequired: "Ereignistitel ist erforderlich",
|
||||
noCalendarSelected: "Kein Kalender ausgewählt",
|
||||
success: "Kalenderereignis \"{title}\" erstellt",
|
||||
error: "Kalenderereignis konnte nicht erstellt werden: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Aus ICS Event erstellen",
|
||||
titleLabel: "Titel",
|
||||
|
|
|
|||
|
|
@ -2247,6 +2247,26 @@ export const en: TranslationTree = {
|
|||
addAttachmentTooltip: "Select a file or note using fuzzy search",
|
||||
createButton: "Create timeblock",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Create calendar event",
|
||||
dateTimeLabel: "Date & Time: ",
|
||||
titleLabel: "Title",
|
||||
titleDesc: "Title for the calendar event",
|
||||
titlePlaceholder: "e.g., Team meeting",
|
||||
calendarLabel: "Calendar",
|
||||
calendarDesc: "Which calendar to create the event on",
|
||||
descriptionLabel: "Description",
|
||||
descriptionDesc: "Optional description for the event",
|
||||
descriptionPlaceholder: "Add details about this event...",
|
||||
locationLabel: "Location",
|
||||
locationDesc: "Optional location for the event",
|
||||
locationPlaceholder: "e.g., Conference Room A",
|
||||
createButton: "Create event",
|
||||
titleRequired: "Event title is required",
|
||||
noCalendarSelected: "No calendar selected",
|
||||
success: "Calendar event \"{title}\" created",
|
||||
error: "Failed to create calendar event: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Create from ICS Event",
|
||||
titleLabel: "Title",
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const es: TranslationTree = {
|
|||
addAttachmentTooltip: "Seleccionar un archivo o nota usando búsqueda difusa",
|
||||
createButton: "Crear bloque de tiempo",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Crear evento de calendario",
|
||||
dateTimeLabel: "Fecha y hora: ",
|
||||
titleLabel: "Título",
|
||||
titleDesc: "Título para el evento de calendario",
|
||||
titlePlaceholder: "ej., Reunión de equipo",
|
||||
calendarLabel: "Calendario",
|
||||
calendarDesc: "En qué calendario crear el evento",
|
||||
descriptionLabel: "Descripción",
|
||||
descriptionDesc: "Descripción opcional para el evento",
|
||||
descriptionPlaceholder: "Agregar detalles sobre este evento...",
|
||||
locationLabel: "Ubicación",
|
||||
locationDesc: "Ubicación opcional para el evento",
|
||||
locationPlaceholder: "ej., Sala de conferencias A",
|
||||
createButton: "Crear evento",
|
||||
titleRequired: "El título del evento es obligatorio",
|
||||
noCalendarSelected: "No se seleccionó ningún calendario",
|
||||
success: "Evento de calendario \"{title}\" creado",
|
||||
error: "No se pudo crear el evento de calendario: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Crear desde evento ICS",
|
||||
titleLabel: "Título",
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const fr: TranslationTree = {
|
|||
addAttachmentTooltip: "Sélectionnez un fichier ou une note en utilisant la recherche floue",
|
||||
createButton: "Créer un bloc de temps",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Créer un événement",
|
||||
dateTimeLabel: "Date et heure : ",
|
||||
titleLabel: "Titre",
|
||||
titleDesc: "Titre de l'événement",
|
||||
titlePlaceholder: "ex., Réunion d'équipe",
|
||||
calendarLabel: "Calendrier",
|
||||
calendarDesc: "Dans quel calendrier créer l'événement",
|
||||
descriptionLabel: "Description",
|
||||
descriptionDesc: "Description facultative de l'événement",
|
||||
descriptionPlaceholder: "Ajouter des détails sur cet événement...",
|
||||
locationLabel: "Lieu",
|
||||
locationDesc: "Lieu facultatif de l'événement",
|
||||
locationPlaceholder: "ex., Salle de réunion A",
|
||||
createButton: "Créer l'événement",
|
||||
titleRequired: "Le titre de l'événement est requis",
|
||||
noCalendarSelected: "Aucun calendrier sélectionné",
|
||||
success: "Événement \"{title}\" créé",
|
||||
error: "Impossible de créer l'événement : {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Créer à partir d'un événement ICS",
|
||||
titleLabel: "Titre",
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const ja: TranslationTree = {
|
|||
addAttachmentTooltip: "ファジー検索を使用してファイルまたはノートを選択",
|
||||
createButton: "タイムブロックを作成",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "カレンダーイベントを作成",
|
||||
dateTimeLabel: "日時:",
|
||||
titleLabel: "タイトル",
|
||||
titleDesc: "カレンダーイベントのタイトル",
|
||||
titlePlaceholder: "例:チームミーティング",
|
||||
calendarLabel: "カレンダー",
|
||||
calendarDesc: "イベントを作成するカレンダー",
|
||||
descriptionLabel: "説明",
|
||||
descriptionDesc: "イベントの説明(任意)",
|
||||
descriptionPlaceholder: "イベントの詳細を追加...",
|
||||
locationLabel: "場所",
|
||||
locationDesc: "イベントの場所(任意)",
|
||||
locationPlaceholder: "例:会議室A",
|
||||
createButton: "イベントを作成",
|
||||
titleRequired: "イベントのタイトルは必須です",
|
||||
noCalendarSelected: "カレンダーが選択されていません",
|
||||
success: "カレンダーイベント「{title}」を作成しました",
|
||||
error: "カレンダーイベントの作成に失敗しました:{message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "ICSイベントから作成",
|
||||
titleLabel: "タイトル",
|
||||
|
|
|
|||
|
|
@ -2134,6 +2134,26 @@ export const ko: TranslationTree = {
|
|||
addAttachmentTooltip: "퍼지 검색을 사용하여 파일 또는 노트 선택",
|
||||
createButton: "타임블록 만들기",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "캘린더 이벤트 만들기",
|
||||
dateTimeLabel: "날짜 및 시간: ",
|
||||
titleLabel: "제목",
|
||||
titleDesc: "캘린더 이벤트 제목",
|
||||
titlePlaceholder: "예: 팀 회의",
|
||||
calendarLabel: "캘린더",
|
||||
calendarDesc: "이벤트를 만들 캘린더",
|
||||
descriptionLabel: "설명",
|
||||
descriptionDesc: "이벤트에 대한 선택적 설명",
|
||||
descriptionPlaceholder: "이벤트에 대한 세부정보 추가...",
|
||||
locationLabel: "위치",
|
||||
locationDesc: "이벤트의 선택적 위치",
|
||||
locationPlaceholder: "예: 회의실 A",
|
||||
createButton: "이벤트 만들기",
|
||||
titleRequired: "이벤트 제목은 필수입니다",
|
||||
noCalendarSelected: "캘린더가 선택되지 않았습니다",
|
||||
success: "캘린더 이벤트 \"{title}\" 생성됨",
|
||||
error: "캘린더 이벤트 생성 실패: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "ICS 이벤트에서 생성",
|
||||
titleLabel: "제목",
|
||||
|
|
|
|||
|
|
@ -2192,6 +2192,26 @@ export const pt: TranslationTree = {
|
|||
addAttachmentTooltip: "Selecionar um arquivo ou nota usando busca difusa",
|
||||
createButton: "Criar bloco de tempo"
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Criar evento no calendário",
|
||||
dateTimeLabel: "Data e hora: ",
|
||||
titleLabel: "Título",
|
||||
titleDesc: "Título do evento no calendário",
|
||||
titlePlaceholder: "ex., Reunião de equipe",
|
||||
calendarLabel: "Calendário",
|
||||
calendarDesc: "Em qual calendário criar o evento",
|
||||
descriptionLabel: "Descrição",
|
||||
descriptionDesc: "Descrição opcional do evento",
|
||||
descriptionPlaceholder: "Adicionar detalhes sobre este evento...",
|
||||
locationLabel: "Local",
|
||||
locationDesc: "Local opcional do evento",
|
||||
locationPlaceholder: "ex., Sala de conferência A",
|
||||
createButton: "Criar evento",
|
||||
titleRequired: "O título do evento é obrigatório",
|
||||
noCalendarSelected: "Nenhum calendário selecionado",
|
||||
success: "Evento \"{title}\" criado no calendário",
|
||||
error: "Falha ao criar evento no calendário: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Criar a partir de Evento ICS",
|
||||
titleLabel: "Título",
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const ru: TranslationTree = {
|
|||
addAttachmentTooltip: "Выберите файл или заметку с помощью нечеткого поиска",
|
||||
createButton: "Создать timeblock",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "Создать событие в календаре",
|
||||
dateTimeLabel: "Дата и время: ",
|
||||
titleLabel: "Название",
|
||||
titleDesc: "Название события в календаре",
|
||||
titlePlaceholder: "напр., Совещание команды",
|
||||
calendarLabel: "Календарь",
|
||||
calendarDesc: "В каком календаре создать событие",
|
||||
descriptionLabel: "Описание",
|
||||
descriptionDesc: "Необязательное описание события",
|
||||
descriptionPlaceholder: "Добавить подробности о событии...",
|
||||
locationLabel: "Место",
|
||||
locationDesc: "Необязательное место проведения события",
|
||||
locationPlaceholder: "напр., Переговорная А",
|
||||
createButton: "Создать событие",
|
||||
titleRequired: "Необходимо указать название события",
|
||||
noCalendarSelected: "Календарь не выбран",
|
||||
success: "Событие \"{title}\" создано в календаре",
|
||||
error: "Не удалось создать событие в календаре: {message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "Создать from ICS Event",
|
||||
titleLabel: "Название",
|
||||
|
|
|
|||
|
|
@ -2184,6 +2184,26 @@ export const zh: TranslationTree = {
|
|||
addAttachmentTooltip: "使用模糊搜索选择文件或笔记",
|
||||
createButton: "创建时间块",
|
||||
},
|
||||
calendarEventCreation: {
|
||||
heading: "创建日历事件",
|
||||
dateTimeLabel: "日期和时间:",
|
||||
titleLabel: "标题",
|
||||
titleDesc: "日历事件的标题",
|
||||
titlePlaceholder: "例如:团队会议",
|
||||
calendarLabel: "日历",
|
||||
calendarDesc: "在哪个日历中创建事件",
|
||||
descriptionLabel: "描述",
|
||||
descriptionDesc: "事件的可选描述",
|
||||
descriptionPlaceholder: "添加此事件的详细信息...",
|
||||
locationLabel: "地点",
|
||||
locationDesc: "事件的可选地点",
|
||||
locationPlaceholder: "例如:会议室A",
|
||||
createButton: "创建事件",
|
||||
titleRequired: "事件标题为必填项",
|
||||
noCalendarSelected: "未选择日历",
|
||||
success: "日历事件 \"{title}\" 已创建",
|
||||
error: "创建日历事件失败:{message}",
|
||||
},
|
||||
icsNoteCreation: {
|
||||
heading: "从 ICS 事件创建",
|
||||
titleLabel: "标题",
|
||||
|
|
|
|||
228
src/modals/CalendarEventCreationModal.ts
Normal file
228
src/modals/CalendarEventCreationModal.ts
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
import { App, Modal, Setting, Notice } from "obsidian";
|
||||
import TaskNotesPlugin from "../main";
|
||||
import { CalendarProvider, ProviderCalendar } from "../services/CalendarProvider";
|
||||
import { TranslationKey } from "../i18n";
|
||||
import { format } from "date-fns";
|
||||
|
||||
export interface CalendarEventCreationOptions {
|
||||
start: Date;
|
||||
end: Date;
|
||||
allDay: boolean;
|
||||
onEventCreated?: () => void;
|
||||
}
|
||||
|
||||
interface WritableCalendarEntry {
|
||||
provider: CalendarProvider;
|
||||
calendar: ProviderCalendar;
|
||||
}
|
||||
|
||||
export class CalendarEventCreationModal extends Modal {
|
||||
plugin: TaskNotesPlugin;
|
||||
options: CalendarEventCreationOptions;
|
||||
private translate: (key: TranslationKey, variables?: Record<string, any>) => string;
|
||||
|
||||
private titleInput: HTMLInputElement;
|
||||
private descriptionInput: HTMLTextAreaElement;
|
||||
private locationInput: HTMLInputElement;
|
||||
private calendarDropdown: HTMLSelectElement;
|
||||
|
||||
private writableCalendars: WritableCalendarEntry[] = [];
|
||||
private keyboardHandler: ((e: KeyboardEvent) => void) | null = null;
|
||||
|
||||
constructor(app: App, plugin: TaskNotesPlugin, options: CalendarEventCreationOptions) {
|
||||
super(app);
|
||||
this.plugin = plugin;
|
||||
this.options = options;
|
||||
this.translate = plugin.i18n.translate.bind(plugin.i18n);
|
||||
this.writableCalendars = this.getWritableCalendars();
|
||||
}
|
||||
|
||||
private getWritableCalendars(): WritableCalendarEntry[] {
|
||||
const entries: WritableCalendarEntry[] = [];
|
||||
const registry = this.plugin.calendarProviderRegistry;
|
||||
if (!registry) return entries;
|
||||
|
||||
for (const provider of registry.getAllProviders()) {
|
||||
for (const calendar of provider.getAvailableCalendars()) {
|
||||
entries.push({ provider, calendar });
|
||||
}
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
|
||||
onOpen() {
|
||||
const { contentEl } = this;
|
||||
contentEl.empty();
|
||||
contentEl.addClass("calendar-event-creation-modal");
|
||||
|
||||
// Global Ctrl/Cmd+Enter shortcut
|
||||
this.keyboardHandler = (e: KeyboardEvent) => {
|
||||
if (e.key === "Enter" && (e.ctrlKey || e.metaKey)) {
|
||||
e.preventDefault();
|
||||
this.handleSubmit();
|
||||
}
|
||||
};
|
||||
this.containerEl.addEventListener("keydown", this.keyboardHandler);
|
||||
|
||||
new Setting(contentEl)
|
||||
.setName(this.translate("modals.calendarEventCreation.heading"))
|
||||
.setHeading();
|
||||
|
||||
// Date/time display (read-only)
|
||||
const dateDisplay = contentEl.createDiv({ cls: "calendar-event-date-display" });
|
||||
dateDisplay.createEl("strong", {
|
||||
text: this.translate("modals.calendarEventCreation.dateTimeLabel"),
|
||||
});
|
||||
const dateText = this.options.allDay
|
||||
? format(this.options.start, "PPP")
|
||||
: `${format(this.options.start, "PPP p")} – ${format(this.options.end, "p")}`;
|
||||
dateDisplay.createSpan({ text: dateText });
|
||||
|
||||
// Title
|
||||
new Setting(contentEl)
|
||||
.setName(this.translate("modals.calendarEventCreation.titleLabel"))
|
||||
.setDesc(this.translate("modals.calendarEventCreation.titleDesc"))
|
||||
.addText((text) => {
|
||||
this.titleInput = text.inputEl;
|
||||
text.setPlaceholder(
|
||||
this.translate("modals.calendarEventCreation.titlePlaceholder")
|
||||
).onChange(() => this.validateForm());
|
||||
window.setTimeout(() => this.titleInput.focus(), 100);
|
||||
});
|
||||
|
||||
// Calendar selector
|
||||
if (this.writableCalendars.length > 1) {
|
||||
new Setting(contentEl)
|
||||
.setName(this.translate("modals.calendarEventCreation.calendarLabel"))
|
||||
.setDesc(this.translate("modals.calendarEventCreation.calendarDesc"))
|
||||
.addDropdown((dropdown) => {
|
||||
this.calendarDropdown = dropdown.selectEl;
|
||||
for (let i = 0; i < this.writableCalendars.length; i++) {
|
||||
const entry = this.writableCalendars[i];
|
||||
const label = `${entry.calendar.summary} (${entry.provider.providerName})`;
|
||||
dropdown.addOption(String(i), label);
|
||||
}
|
||||
// Default to primary calendar if available
|
||||
const primaryIdx = this.writableCalendars.findIndex(
|
||||
(e) => e.calendar.primary
|
||||
);
|
||||
if (primaryIdx >= 0) {
|
||||
dropdown.setValue(String(primaryIdx));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Description (optional)
|
||||
new Setting(contentEl)
|
||||
.setName(this.translate("modals.calendarEventCreation.descriptionLabel"))
|
||||
.setDesc(this.translate("modals.calendarEventCreation.descriptionDesc"))
|
||||
.addTextArea((text) => {
|
||||
this.descriptionInput = text.inputEl;
|
||||
text.setPlaceholder(
|
||||
this.translate("modals.calendarEventCreation.descriptionPlaceholder")
|
||||
);
|
||||
this.descriptionInput.rows = 3;
|
||||
});
|
||||
|
||||
// Location (optional)
|
||||
new Setting(contentEl)
|
||||
.setName(this.translate("modals.calendarEventCreation.locationLabel"))
|
||||
.setDesc(this.translate("modals.calendarEventCreation.locationDesc"))
|
||||
.addText((text) => {
|
||||
this.locationInput = text.inputEl;
|
||||
text.setPlaceholder(
|
||||
this.translate("modals.calendarEventCreation.locationPlaceholder")
|
||||
);
|
||||
});
|
||||
|
||||
// Buttons
|
||||
const buttonContainer = contentEl.createDiv({ cls: "calendar-event-modal-buttons" });
|
||||
|
||||
const cancelButton = buttonContainer.createEl("button", {
|
||||
text: this.translate("common.cancel"),
|
||||
});
|
||||
cancelButton.addEventListener("click", () => this.close());
|
||||
|
||||
const createButton = buttonContainer.createEl("button", {
|
||||
text: this.translate("modals.calendarEventCreation.createButton"),
|
||||
cls: "mod-cta calendar-event-create-button",
|
||||
});
|
||||
createButton.addEventListener("click", () => this.handleSubmit());
|
||||
|
||||
this.validateForm();
|
||||
}
|
||||
|
||||
private validateForm(): void {
|
||||
const createButton = this.contentEl.querySelector(
|
||||
".calendar-event-create-button"
|
||||
) as HTMLButtonElement;
|
||||
if (!createButton) return;
|
||||
|
||||
const isValid = !!this.titleInput?.value.trim();
|
||||
createButton.disabled = !isValid;
|
||||
createButton.style.opacity = isValid ? "1" : "0.5";
|
||||
}
|
||||
|
||||
private async handleSubmit(): Promise<void> {
|
||||
const title = this.titleInput.value.trim();
|
||||
if (!title) {
|
||||
new Notice(this.translate("modals.calendarEventCreation.titleRequired"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Determine which calendar to use
|
||||
const selectedIdx = this.calendarDropdown
|
||||
? parseInt(this.calendarDropdown.value)
|
||||
: 0;
|
||||
const entry = this.writableCalendars[selectedIdx];
|
||||
if (!entry) {
|
||||
new Notice(this.translate("modals.calendarEventCreation.noCalendarSelected"));
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const { start, end, allDay } = this.options;
|
||||
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
|
||||
const eventData: any = {
|
||||
summary: title,
|
||||
start: allDay
|
||||
? { date: format(start, "yyyy-MM-dd") }
|
||||
: { dateTime: format(start, "yyyy-MM-dd'T'HH:mm:ss"), timeZone },
|
||||
end: allDay
|
||||
? { date: format(end, "yyyy-MM-dd") }
|
||||
: { dateTime: format(end, "yyyy-MM-dd'T'HH:mm:ss"), timeZone },
|
||||
};
|
||||
|
||||
const description = this.descriptionInput?.value.trim();
|
||||
if (description) eventData.description = description;
|
||||
|
||||
const location = this.locationInput?.value.trim();
|
||||
if (location) eventData.location = location;
|
||||
|
||||
await entry.provider.createEvent(entry.calendar.id, eventData);
|
||||
|
||||
new Notice(
|
||||
this.translate("modals.calendarEventCreation.success", { title })
|
||||
);
|
||||
this.options.onEventCreated?.();
|
||||
this.close();
|
||||
} catch (error) {
|
||||
console.error("[TaskNotes] Error creating calendar event:", error);
|
||||
new Notice(
|
||||
this.translate("modals.calendarEventCreation.error", {
|
||||
message: error instanceof Error ? error.message : String(error),
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
onClose() {
|
||||
if (this.keyboardHandler) {
|
||||
this.containerEl.removeEventListener("keydown", this.keyboardHandler);
|
||||
this.keyboardHandler = null;
|
||||
}
|
||||
const { contentEl } = this;
|
||||
contentEl.empty();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue