diff --git a/models/core/src/security.ts b/models/core/src/security.ts index 6f671ddcc8..cd995e6c3f 100644 --- a/models/core/src/security.ts +++ b/models/core/src/security.ts @@ -75,8 +75,7 @@ export class TSpace extends TDoc implements Space { @Prop(ArrOf(TypeRef(core.class.Account)), core.string.Owners) owners?: Ref[] - @Prop(TypeBoolean(), getEmbeddedLabel('Auto-Join members')) - @Hidden() // let's hide it for now + @Prop(TypeBoolean(), core.string.AutoJoin) autoJoin?: boolean } @@ -119,6 +118,12 @@ export class TSpaceType extends TDoc implements SpaceType { @Prop(Collection(core.class.Role), core.string.Roles) roles!: CollectionSize + + @Prop(ArrOf(TypeRef(core.class.Account)), core.string.Members) + members!: Arr> + + @Prop(TypeBoolean(), core.string.AutoJoin) + autoJoin?: boolean } @Model(core.class.Role, core.class.AttachedDoc, DOMAIN_MODEL) diff --git a/models/server-contact/src/index.ts b/models/server-contact/src/index.ts index bb3e8da87e..9ccf0b083e 100644 --- a/models/server-contact/src/index.ts +++ b/models/server-contact/src/index.ts @@ -89,6 +89,14 @@ export function createModel (builder: Builder): void { } }) + builder.createDoc(serverCore.class.Trigger, core.space.Model, { + trigger: serverContact.trigger.OnSpaceTypeMembers, + txMatch: { + objectClass: core.class.SpaceType, + _class: core.class.TxUpdateDoc + } + }) + builder.mixin( contact.templateField.CurrentEmployeeName, templates.class.TemplateField, diff --git a/packages/core/lang/en.json b/packages/core/lang/en.json index 3e4201cb45..f3b58827ab 100644 --- a/packages/core/lang/en.json +++ b/packages/core/lang/en.json @@ -58,6 +58,8 @@ "DeleteObjectDescription": "Grants users ability to delete objects in the space", "ForbidDeleteObjectDescription": "Forbid users deleting objects in the space", "UpdateSpaceDescription": "Grants users ability to update the space", - "ArchiveSpaceDescription": "Grants users ability to archive the space" + "ArchiveSpaceDescription": "Grants users ability to archive the space", + "AutoJoin": "Auto join", + "AutoJoinDescr": "Automatically join new employees to this space" } } diff --git a/packages/core/lang/es.json b/packages/core/lang/es.json index d52668287a..9cde595554 100644 --- a/packages/core/lang/es.json +++ b/packages/core/lang/es.json @@ -38,6 +38,21 @@ "StatusCategory": "Categoría de estado", "Account": "Cuenta", "Rank": "Rango", - "Owners": "Propietarios" + "Owners": "Propietarios", + "Permission": "Permiso", + "CreateObject": "Crear objeto", + "UpdateObject": "Actualizar objeto", + "DeleteObject": "Eliminar objeto", + "ForbidDeleteObject": "Prohibir eliminar objeto", + "UpdateSpace": "Actualizar espacio", + "ArchiveSpace": "Archivar espacio", + "CreateObjectDescription": "Concede a los usuarios la capacidad de crear objetos en el espacio", + "UpdateObjectDescription": "Concede a los usuarios la capacidad de actualizar objetos en el espacio", + "DeleteObjectDescription": "Concede a los usuarios la capacidad de eliminar objetos en el espacio", + "ForbidDeleteObjectDescription": "Prohíbe a los usuarios eliminar objetos en el espacio", + "UpdateSpaceDescription": "Concede a los usuarios la capacidad de actualizar el espacio", + "ArchiveSpaceDescription": "Concede a los usuarios la capacidad de archivar el espacio", + "AutoJoin": "Auto unirse", + "AutoJoinDescr": "Unirse automáticamente a los nuevos empleados a este espacio" } } diff --git a/packages/core/lang/pt.json b/packages/core/lang/pt.json index 95245f15bf..87ecf87e08 100644 --- a/packages/core/lang/pt.json +++ b/packages/core/lang/pt.json @@ -38,6 +38,21 @@ "StatusCategory": "Categoria de estado", "Account": "Conta", "Rank": "Ranking", - "Owners": "Proprietários" + "Owners": "Proprietários", + "Permission": "Permissão", + "CreateObject": "Criar objeto", + "UpdateObject": "Atualizar objeto", + "DeleteObject": "Apagar objeto", + "ForbidDeleteObject": "Proibir apagar objeto", + "UpdateSpace": "Atualizar espaço", + "ArchiveSpace": "Arquivar espaço", + "CreateObjectDescription": "Concede aos usuários a capacidade de criar objetos no espaço", + "UpdateObjectDescription": "Concede aos usuários a capacidade de atualizar objetos no espaço", + "DeleteObjectDescription": "Concede aos usuários a capacidade de apagar objetos no espaço", + "ForbidDeleteObjectDescription": "Proíbe aos usuários a capacidade de apagar objetos no espaço", + "UpdateSpaceDescription": "Concede aos usuários a capacidade de atualizar o espaço", + "ArchiveSpaceDescription": "Concede aos usuários a capacidade de arquivar o espaço", + "AutoJoin": "Auto adesão", + "AutoJoinDescr": "Adesão automática de novos funcionários a este espaço" } } diff --git a/packages/core/lang/ru.json b/packages/core/lang/ru.json index 3ff1c54227..79b3555b02 100644 --- a/packages/core/lang/ru.json +++ b/packages/core/lang/ru.json @@ -58,6 +58,8 @@ "DeleteObjectDescription": "Дает пользователям разрешение удалять объекты в пространстве", "ForbidDeleteObjectDescription": "Запрещает пользователям удалять объекты в пространстве", "UpdateSpaceDescription": "Дает пользователям разрешение обновлять пространство", - "ArchiveSpaceDescription": "Дает пользователям разрешение архивировать пространство" + "ArchiveSpaceDescription": "Дает пользователям разрешение архивировать пространство", + "AutoJoin": "Автоприсоединение", + "AutoJoinDescr": "Автоматически присоединять новых сотрудников к этому пространству" } } diff --git a/packages/core/src/classes.ts b/packages/core/src/classes.ts index a47b08afdd..ddb291b59d 100644 --- a/packages/core/src/classes.ts +++ b/packages/core/src/classes.ts @@ -401,6 +401,8 @@ export interface SpaceType extends Doc { name: string shortDescription?: string descriptor: Ref + members?: Ref[] // this members will be added automatically to new space, also change this fiield will affect existing spaces + autoJoin?: boolean // if true, all new users will be added to space automatically targetClass: Ref> // A dynamic mixin for Spaces to hold custom attributes and roles assignment of the space type roles: CollectionSize } diff --git a/packages/core/src/component.ts b/packages/core/src/component.ts index b4e39f2c84..da2e42a808 100644 --- a/packages/core/src/component.ts +++ b/packages/core/src/component.ts @@ -230,7 +230,9 @@ export default plugin(coreId, { DeleteObjectDescription: '' as IntlString, ForbidDeleteObjectDescription: '' as IntlString, UpdateSpaceDescription: '' as IntlString, - ArchiveSpaceDescription: '' as IntlString + ArchiveSpaceDescription: '' as IntlString, + AutoJoin: '' as IntlString, + AutoJoinDescr: '' as IntlString }, descriptor: { SpacesType: '' as Ref diff --git a/packages/ui/src/components/Toggle.svelte b/packages/ui/src/components/Toggle.svelte index 284ff7cf53..3998717dcb 100644 --- a/packages/ui/src/components/Toggle.svelte +++ b/packages/ui/src/components/Toggle.svelte @@ -17,6 +17,7 @@ import { LabelAndProps } from '../types' import { tooltip } from '../tooltips' + export let id: string | undefined = undefined export let on: boolean = false export let disabled: boolean = false export let showTooltip: LabelAndProps | undefined = undefined @@ -24,7 +25,7 @@ const dispatch = createEventDispatcher() -