diff --git a/foundations/core/packages/core/src/classes.ts b/foundations/core/packages/core/src/classes.ts index d780f9cc53..dc242de928 100644 --- a/foundations/core/packages/core/src/classes.ts +++ b/foundations/core/packages/core/src/classes.ts @@ -593,7 +593,7 @@ export interface ModulePermissionGroup extends Doc { role: AccountRole permissions: Ref[] disabledPermissions?: Ref[] - spaceClass: Ref> + spaceClass?: Ref> enabled: boolean order?: number } diff --git a/models/chunter/src/index.ts b/models/chunter/src/index.ts index 6d7231b9dc..3a70e8692c 100644 --- a/models/chunter/src/index.ts +++ b/models/chunter/src/index.ts @@ -76,7 +76,7 @@ export function createModel (builder: Builder): void { application: chunter.app.Chunter, role: AccountRole.Guest, permissions: [], - spaceClass: chunter.class.ChunterSpace, + spaceClass: chunter.class.Channel, enabled: true, order: 30 }, @@ -90,7 +90,7 @@ export function createModel (builder: Builder): void { application: chunter.app.Chunter, role: AccountRole.ReadOnlyGuest, permissions: [], - spaceClass: chunter.class.ChunterSpace, + spaceClass: chunter.class.Channel, enabled: true, order: 15 }, diff --git a/models/love/src/index.ts b/models/love/src/index.ts index 343c2aa218..760d8bc982 100644 --- a/models/love/src/index.ts +++ b/models/love/src/index.ts @@ -273,7 +273,6 @@ export function createModel (builder: Builder): void { application: love.app.Love, role: AccountRole.Guest, permissions: [], - spaceClass: love.class.Office, enabled: true, order: 50 }, @@ -287,7 +286,6 @@ export function createModel (builder: Builder): void { application: love.app.Love, role: AccountRole.ReadOnlyGuest, permissions: [], - spaceClass: love.class.Office, enabled: false, order: 50 }, diff --git a/models/time/src/index.ts b/models/time/src/index.ts index c8a0f4ec5c..4e64b04b08 100644 --- a/models/time/src/index.ts +++ b/models/time/src/index.ts @@ -220,7 +220,7 @@ export function createModel (builder: Builder): void { application: time.app.Me, role: AccountRole.Guest, permissions: [], - spaceClass: core.class.TypedSpace, + spaceClass: tracker.class.Project, enabled: true, order: 55 }, @@ -234,7 +234,7 @@ export function createModel (builder: Builder): void { application: time.app.Me, role: AccountRole.ReadOnlyGuest, permissions: [], - spaceClass: core.class.TypedSpace, + spaceClass: tracker.class.Project, enabled: false, order: 55 }, diff --git a/models/training/src/index.ts b/models/training/src/index.ts index 1b531e8506..449846c00f 100644 --- a/models/training/src/index.ts +++ b/models/training/src/index.ts @@ -917,7 +917,6 @@ function defineSettings (builder: Builder): void { application: training.app.Training, role: AccountRole.Guest, permissions: [training.ids.GuestTrainingAttemptClassPermission], - spaceClass: core.class.TypedSpace, enabled: true, order: 25 }, @@ -931,7 +930,6 @@ function defineSettings (builder: Builder): void { application: training.app.Training, role: AccountRole.ReadOnlyGuest, permissions: [], - spaceClass: core.class.TypedSpace, enabled: false, order: 25 }, diff --git a/plugins/setting-assets/lang/cs.json b/plugins/setting-assets/lang/cs.json index 750a405a7b..14aba53801 100644 --- a/plugins/setting-assets/lang/cs.json +++ b/plugins/setting-assets/lang/cs.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Umožňuje anonymním uživatelům připojit se k vašemu pracovnímu prostoru jako hosté s omezenými editačními právy", "GuestChannelsDescription": "Kanály, kde hosté mohou psát zprávy po připojení", "GuestChannelsArrayLabel": "Vybrat kanály", + "GuestAutoJoinAvailableSpaces": "Dostupné prostory", + "GuestAutoJoinAvailableSpacesHint": "Každá karta aplikace má vlastní řádek „Dostupné prostory“ pro automatické připojení hostů; změny se projeví okamžitě.", "ManageIdentities": "Spravovat identity", "Release": "Uvolnění", "ReleaseSocialId": "Uvolnit sociální ID", diff --git a/plugins/setting-assets/lang/de.json b/plugins/setting-assets/lang/de.json index 8564840884..d44044976d 100644 --- a/plugins/setting-assets/lang/de.json +++ b/plugins/setting-assets/lang/de.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Ermöglicht anonymen Benutzern den Beitritt zu Ihrem Arbeitsbereich als Gäste mit eingeschränkten Bearbeitungsrechten", "GuestChannelsDescription": "Kanäle, in denen Gäste nach dem Beitritt Nachrichten schreiben können", "GuestChannelsArrayLabel": "Kanäle auswählen", + "GuestAutoJoinAvailableSpaces": "Verfügbare Bereiche", + "GuestAutoJoinAvailableSpacesHint": "Jede Anwendungskarte hat eine eigene Zeile „Verfügbare Bereiche“ für den automatischen Gästebeitritt; Änderungen gelten sofort.", "ManageIdentities": "Identitäten verwalten", "Release": "Freigeben", "ReleaseSocialId": "Social ID freigeben", diff --git a/plugins/setting-assets/lang/en.json b/plugins/setting-assets/lang/en.json index 3d5efb12b8..f867cf36b4 100644 --- a/plugins/setting-assets/lang/en.json +++ b/plugins/setting-assets/lang/en.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Allows anonymous users to join your workspace as guests with limited editing rights", "GuestChannelsDescription": "Channels where guests can write messages after joining", "GuestChannelsArrayLabel": "Select channels", + "GuestAutoJoinAvailableSpaces": "Available spaces", + "GuestAutoJoinAvailableSpacesHint": "Each application card has its own “Available spaces” row to pick where workspace guests are added on activation. Changes apply immediately.", "ManageIdentities": "Manage identities", "Release": "Release", "ReleaseSocialId": "Release social ID", diff --git a/plugins/setting-assets/lang/es.json b/plugins/setting-assets/lang/es.json index 12b8659bf6..a63b17d0eb 100644 --- a/plugins/setting-assets/lang/es.json +++ b/plugins/setting-assets/lang/es.json @@ -165,6 +165,8 @@ "GuestSignUpDescription": "Permite a usuarios anónimos unirse a su espacio de trabajo como invitados con derechos de edición limitados", "GuestChannelsDescription": "Canales donde los invitados pueden escribir mensajes después de unirse", "GuestChannelsArrayLabel": "Seleccionar canales", + "GuestAutoJoinAvailableSpaces": "Espacios disponibles", + "GuestAutoJoinAvailableSpacesHint": "Cada tarjeta de aplicación tiene su propia fila « Espacios disponibles » para la adhesión automática de invitados; los cambios son inmediatos.", "ManageIdentities": "Gestionar identidades", "Release": "Liberar", "ReleaseSocialId": "Liberar ID social", diff --git a/plugins/setting-assets/lang/fr.json b/plugins/setting-assets/lang/fr.json index 1abd0c8933..8305bd751e 100644 --- a/plugins/setting-assets/lang/fr.json +++ b/plugins/setting-assets/lang/fr.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Permet aux utilisateurs anonymes de rejoindre votre espace de travail en tant qu'invités avec des droits d'édition limités", "GuestChannelsDescription": "Canaux où les invités peuvent écrire des messages après leur adhésion", "GuestChannelsArrayLabel": "Sélectionner des canaux", + "GuestAutoJoinAvailableSpaces": "Espaces disponibles", + "GuestAutoJoinAvailableSpacesHint": "Chaque carte d’application a sa propre ligne « Espaces disponibles » pour l’adhésion automatique des invités ; les changements sont immédiats.", "ManageIdentities": "Gérer les identités", "Release": "Libération", "ReleaseSocialId": "Libérer l'ID social", diff --git a/plugins/setting-assets/lang/it.json b/plugins/setting-assets/lang/it.json index a221189882..a2f4e354c5 100644 --- a/plugins/setting-assets/lang/it.json +++ b/plugins/setting-assets/lang/it.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Consente agli utenti anonimi di unirsi al tuo spazio di lavoro come ospiti con diritti di modifica limitati", "GuestChannelsDescription": "Canali in cui gli ospiti possono scrivere messaggi dopo essersi uniti", "GuestChannelsArrayLabel": "Seleziona canali", + "GuestAutoJoinAvailableSpaces": "Spazi disponibili", + "GuestAutoJoinAvailableSpacesHint": "Ogni scheda applicazione ha la propria riga « Spazi disponibili » per l’ingresso automatico degli ospiti; le modifiche sono immediate.", "ManageIdentities": "Gestisci identità", "Release": "Rilascio", "ReleaseSocialId": "Rilascia ID social", diff --git a/plugins/setting-assets/lang/ja.json b/plugins/setting-assets/lang/ja.json index 6d09048146..2abcffd54e 100644 --- a/plugins/setting-assets/lang/ja.json +++ b/plugins/setting-assets/lang/ja.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "匿名ユーザーがゲストとしてワークスペースに参加し、制限された編集権限を得られるようにします", "GuestChannelsDescription": "参加後、ゲストがメッセージを書き込めるチャンネル", "GuestChannelsArrayLabel": "チャンネルを選択", + "GuestAutoJoinAvailableSpaces": "利用可能なスペース", + "GuestAutoJoinAvailableSpacesHint": "各アプリのカードにゲスト自動参加用の「利用可能なスペース」行があります。変更はすぐに反映されます。", "ManageIdentities": "IDを管理", "Release": "リリース", "ReleaseSocialId": "ソーシャルIDをリリース", diff --git a/plugins/setting-assets/lang/pt-br.json b/plugins/setting-assets/lang/pt-br.json index 3410f19f0a..8550ff3875 100644 --- a/plugins/setting-assets/lang/pt-br.json +++ b/plugins/setting-assets/lang/pt-br.json @@ -165,6 +165,8 @@ "GuestSignUpDescription": "Permite que usuários anônimos entrem em seu espaço de trabalho como convidados com direitos de edição limitados", "GuestChannelsDescription": "Canais onde convidados podem escrever mensagens após entrar", "GuestChannelsArrayLabel": "Selecionar canais", + "GuestAutoJoinAvailableSpaces": "Espaços disponíveis", + "GuestAutoJoinAvailableSpacesHint": "Cada cartão de app tem sua própria linha « Espaços disponíveis » para adesão automática de convidados; as alterações são aplicadas na hora.", "ManageIdentities": "Gerenciar identidades", "Release": "Liberação", "ReleaseSocialId": "Liberar ID social", diff --git a/plugins/setting-assets/lang/pt.json b/plugins/setting-assets/lang/pt.json index adfc22ba78..cd79967e81 100644 --- a/plugins/setting-assets/lang/pt.json +++ b/plugins/setting-assets/lang/pt.json @@ -165,6 +165,8 @@ "GuestSignUpDescription": "Permite que usuários anônimos entrem em seu espaço de trabalho como convidados com direitos de edição limitados", "GuestChannelsDescription": "Canais onde convidados podem escrever mensagens após ingressar", "GuestChannelsArrayLabel": "Selecionar canais", + "GuestAutoJoinAvailableSpaces": "Espaços disponíveis", + "GuestAutoJoinAvailableSpacesHint": "Cada cartão de aplicação tem a sua própria linha « Espaços disponíveis » para adesão automática de convidados; as alterações aplicam-se de imediato.", "ManageIdentities": "Gerenciar identidades", "Release": "Libertação", "ReleaseSocialId": "Liberar ID social", diff --git a/plugins/setting-assets/lang/ru.json b/plugins/setting-assets/lang/ru.json index fe29107b42..f1b902d2ca 100644 --- a/plugins/setting-assets/lang/ru.json +++ b/plugins/setting-assets/lang/ru.json @@ -179,6 +179,8 @@ "GuestSignUpDescription": "Позволяет анонимным пользователям присоединяться к вашему рабочему пространству в качестве гостей с ограниченными правами редактирования", "GuestChannelsDescription": "Каналы, в которых гости могут писать сообщения после присоединения", "GuestChannelsArrayLabel": "Выбрать каналы", + "GuestAutoJoinAvailableSpaces": "Доступные пространства", + "GuestAutoJoinAvailableSpacesHint": "У каждого приложения ниже своя строка «Доступные пространства»: выберите, куда при активации добавлять гостей воркспейса. Изменения применяются сразу.", "ManageIdentities": "Управление идентификаторами", "Release": "Освободить", "ReleaseSocialId": "Освободить социальный ID", diff --git a/plugins/setting-assets/lang/tr.json b/plugins/setting-assets/lang/tr.json index 1aa6cf55f1..a6823e1518 100644 --- a/plugins/setting-assets/lang/tr.json +++ b/plugins/setting-assets/lang/tr.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "Anonim kullanıcıların çalışma alanınıza sınırlı düzenleme haklarıyla misafir olarak katılmasına izin verir", "GuestChannelsDescription": "Misafirlerin katıldıktan sonra mesaj yazabileceği kanallar", "GuestChannelsArrayLabel": "Kanalları seç", + "GuestAutoJoinAvailableSpaces": "Kullanılabilir alanlar", + "GuestAutoJoinAvailableSpacesHint": "Her uygulama kartının misafir otomatik katılımı için kendi « Kullanılabilir alanlar » satırı vardır; değişiklikler hemen uygulanır.", "ManageIdentities": "Kimlikleri yönet", "Release": "Serbest bırak", "ReleaseSocialId": "Sosyal ID'yi serbest bırak", diff --git a/plugins/setting-assets/lang/zh.json b/plugins/setting-assets/lang/zh.json index 4c2e15f2ba..dbb836da06 100644 --- a/plugins/setting-assets/lang/zh.json +++ b/plugins/setting-assets/lang/zh.json @@ -174,6 +174,8 @@ "GuestSignUpDescription": "允许匿名用户以访客身份加入您的工作区,获得有限的编辑权限", "GuestChannelsDescription": "访客加入后可以发送消息的频道", "GuestChannelsArrayLabel": "选择频道", + "GuestAutoJoinAvailableSpaces": "可用空间", + "GuestAutoJoinAvailableSpacesHint": "每个应用卡片都有各自的「可用空间」行,用于选择在激活时添加工作区访客的位置;更改会立即生效。", "ManageIdentities": "管理身份", "Release": "释放", "ReleaseSocialId": "释放社交ID", diff --git a/plugins/setting-resources/src/components/AvailableSpacesInput.svelte b/plugins/setting-resources/src/components/AvailableSpacesInput.svelte new file mode 100644 index 0000000000..9ae1f0d4c7 --- /dev/null +++ b/plugins/setting-resources/src/components/AvailableSpacesInput.svelte @@ -0,0 +1,143 @@ + + + + diff --git a/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte b/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte index 551258871a..4e4eff6c4d 100644 --- a/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte +++ b/plugins/setting-resources/src/components/GuestPermissionsSettings.svelte @@ -48,6 +48,7 @@ } from '@hcengineering/ui' import setting from '@hcengineering/setting' import { onMount } from 'svelte' + import AvailableSpacesInput from './AvailableSpacesInput.svelte' import settingsRes from '../plugin' let loadingSettings = true @@ -244,6 +245,14 @@ allowGuestSignUp = e.detail } + function onReadonlyGuestsToggle (e: CustomEvent): void { + void handleToggleReadonlyAccess(e) + } + + function onGuestSignUpToggle (e: CustomEvent): void { + void handleToggleGuestSignUp(e) + } + async function onAllowedCardsChange (value: Ref[]): Promise { if (existingGuestChatSettings === undefined) { await client.createDoc(communication.class.GuestCommunicationSettings, core.space.Workspace, { @@ -317,12 +326,7 @@