Skip to content

Commit b0daa06

Browse files
committed
Merge branch 'develop' into staging-new
2 parents 123a6e4 + 89f7445 commit b0daa06

File tree

160 files changed

+6082
-204
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+6082
-204
lines changed

common/config/rush/pnpm-lock.yaml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

desktop/src/ui/platform.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ export async function configurePlatform (onWorkbenchConnect?: () => Promise<void
412412
const languages =
413413
myBranding.languages !== undefined && myBranding.languages !== ''
414414
? myBranding.languages.split(',').map((l) => l.trim())
415-
: ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
415+
: ['en', 'ru', 'es', 'pt', 'pt-br', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
416416

417417
setMetadata(uiPlugin.metadata.Languages, languages)
418418

dev/prod/public/branding.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"huly.local:8080": {
33
"title": "Huly",
4-
"languages": "en,ru,pt,es,zh,fr,de,ja,tr",
4+
"languages": "en,ru,pt,pt-br,es,zh,fr,de,ja,tr",
55
"defaultLanguage": "en",
66
"defaultApplication": "tracker",
77
"defaultSpace": "tracker:project:DefaultProject",
@@ -30,7 +30,7 @@
3030
},
3131
"huly.local:8087": {
3232
"title": "Huly",
33-
"languages": "en,ru,pt,es,zh,fr,de,ja,tr",
33+
"languages": "en,ru,pt,pt-br,es,zh,fr,de,ja,tr",
3434
"defaultLanguage": "en",
3535
"defaultApplication": "tracker",
3636
"defaultSpace": "tracker:project:DefaultProject",

dev/prod/src/platform.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ export async function configurePlatform() {
543543

544544
const languages = myBranding.languages
545545
? myBranding.languages.split(',').map((l) => l.trim())
546-
: ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
546+
: ['en', 'ru', 'es', 'pt', 'pt-br', 'zh', 'fr', 'cs', 'it', 'de', 'ja', 'tr']
547547

548548
setMetadata(uiPlugin.metadata.Languages, languages)
549549

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{
2+
"string": {
3+
"Id": "Id",
4+
"Space": "Espaço",
5+
"Spaces": "Espaços",
6+
"SpacesDescription": "Gestão do tipo de espaço para todas as espaços",
7+
"Modified": "Modificado",
8+
"ModifiedDate": "Data de modificação",
9+
"ModifiedBy": "Modificado por",
10+
"Class": "Classe",
11+
"AttachedTo": "Anexado a",
12+
"AttachedToClass": "Classe anexada",
13+
"Name": "Nome",
14+
"Description": "Descrição",
15+
"Private": "Privado",
16+
"Archived": "Arquivado",
17+
"ClassLabel": "Tipo",
18+
"ClassPropertyLabel": "Rótulo",
19+
"String": "Texto",
20+
"Markup": "Marcação",
21+
"Number": "Número",
22+
"Boolean": "Caixa de seleção",
23+
"Timestamp": "Marca de data/hora",
24+
"Date": "Data",
25+
"IntlString": "Cadeia de texto internacionalizada",
26+
"Ref": "Referência",
27+
"Collection": "Coleção",
28+
"Array": "Seleção múltipla",
29+
"Enum": "Seleção",
30+
"Members": "Membros",
31+
"Hyperlink": "URL",
32+
"MarkupBlobRef": "Colaborativo",
33+
"Object": "Objeto",
34+
"System": "Sistema",
35+
"CreatedBy": "Criado por",
36+
"CreatedDate": "Data de criação",
37+
"Status": "Estado",
38+
"StatusCategory": "Categoria de estado",
39+
"Account": "Conta",
40+
"Rank": "Ranking",
41+
"Owners": "Proprietários",
42+
"Permission": "Permissão",
43+
"CreateObject": "Criar objeto",
44+
"UpdateObject": "Atualizar objeto",
45+
"DeleteObject": "Apagar objeto",
46+
"ForbidDeleteObject": "Proibir apagar objeto",
47+
"UpdateSpace": "Atualizar espaço",
48+
"ArchiveSpace": "Arquivar espaço",
49+
"CreateObjectDescription": "Concede aos usuários a capacidade de criar objetos no espaço",
50+
"UpdateObjectDescription": "Concede aos usuários a capacidade de atualizar objetos no espaço",
51+
"DeleteObjectDescription": "Concede aos usuários a capacidade de apagar objetos no espaço",
52+
"ForbidDeleteObjectDescription": "Proíbe aos usuários a capacidade de apagar objetos no espaço",
53+
"UpdateSpaceDescription": "Concede aos usuários a capacidade de atualizar o espaço",
54+
"ArchiveSpaceDescription": "Concede aos usuários a capacidade de arquivar o espaço",
55+
"AutoJoin": "Auto adesão",
56+
"AutoJoinDescr": "Adesão automática de novos funcionários a este espaço",
57+
"RBAC": "Controle de acesso baseado em funções",
58+
"RBACDescr": "Exigir acesso baseado em funções para executar ações neste espaço",
59+
"BlobSize": "Tamanho",
60+
"BlobContentType": "Tipo de conteúdo",
61+
"Relation": "Relação",
62+
"Relations": "Relações",
63+
"AddRelation": "Adicionar relação",
64+
"PersonId": "ID de pessoa",
65+
"AccountId": "Conta",
66+
"Version": "Versão"
67+
}
68+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"status": {
3+
"LoadingPlugin": "Carregando plugin {plugin}...",
4+
"UnknownError": "Erro desconhecido: {message}",
5+
"InvalidId": "Id inválido: {id}",
6+
"BadRequest": "Pedido inválido",
7+
"Forbidden": "Proibido",
8+
"Conflict": "Conflito",
9+
"ExpiredLink": "Este link de convite expirou",
10+
"Unauthorized": "Não autorizado",
11+
"UnknownMethod": "Método desconhecido: {method}",
12+
"InternalServerError": "Erro interno do servidor",
13+
"MaintenanceWarning": "Manutenção programada dentro de",
14+
"MaintenanceWarningTime": "{time, plural, =1 {menos de um minuto} other {# minutos}}",
15+
"AccountNotFound": "Conta não encontrada",
16+
"AccountNotConfirmed": "Conta não confirmada",
17+
"WorkspaceNotFound": "Espaço de trabalho não encontrado",
18+
"InvalidPassword": "Senha inválida",
19+
"AccountAlreadyExists": "Conta já existe",
20+
"WorkspaceRateLimit": "O servidor está ocupado. Por favor, espere um pouco e tente novamente",
21+
"AccountAlreadyConfirmed": "Conta já confirmada",
22+
"WorkspaceAlreadyExists": "Espaço de trabalho já existe",
23+
"InvalidOtp": "Código inválido",
24+
"PasswordLoginLocked": "O login com senha está bloqueado devido a muitas tentativas falhadas. Use um método de login OTP para desbloquear sua conta.",
25+
"InviteNotFound": "Convite com e-mail:{email} não encontrado.",
26+
"WorkspaceLimitReached": "Você atingiu o limite de espaço de trabalho. Entre em contato conosco...",
27+
"ReadOnlyAccount": "Demonstração anônima de convidado",
28+
"SystemAccount": "Conta do sistema",
29+
"SocialIdAlreadyExists": "ID social já existe"
30+
}
31+
}

models/drive/src/index.ts

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,12 @@ function defineDrive (builder: Builder): void {
234234
icon: drive.icon.Drive,
235235
baseClass: drive.class.Drive,
236236
availablePermissions: [
237+
drive.permission.CreateFolder,
238+
drive.permission.UpdateFolder,
239+
drive.permission.RemoveFolder,
240+
drive.permission.CreateFile,
241+
drive.permission.UpdateFile,
242+
drive.permission.RemoveFile,
237243
core.permission.UpdateSpace,
238244
core.permission.ArchiveSpace,
239245
core.permission.ForbidDeleteObject
@@ -326,7 +332,8 @@ function defineDrive (builder: Builder): void {
326332
mode: ['context', 'browser'],
327333
application: drive.app.Drive,
328334
group: 'create'
329-
}
335+
},
336+
visibilityTester: drive.function.CanCreateFolder
330337
},
331338
drive.action.CreateRootFolder
332339
)
@@ -475,6 +482,7 @@ function defineFolder (builder: Builder): void {
475482
actions: [
476483
view.action.Open,
477484
view.action.OpenInNewTab,
485+
view.action.Delete,
478486
print.action.Print,
479487
tracker.action.EditRelatedTargets,
480488
tracker.action.NewRelatedIssue
@@ -494,7 +502,8 @@ function defineFolder (builder: Builder): void {
494502
mode: ['context', 'browser'],
495503
application: drive.app.Drive,
496504
group: 'create'
497-
}
505+
},
506+
visibilityTester: drive.function.CanCreateFolder
498507
},
499508
drive.action.CreateChildFolder
500509
)
@@ -518,6 +527,25 @@ function defineFolder (builder: Builder): void {
518527
drive.action.RenameFolder
519528
)
520529

530+
createAction(
531+
builder,
532+
{
533+
action: view.actionImpl.Delete,
534+
label: view.string.Delete,
535+
icon: view.icon.Delete,
536+
category: drive.category.Drive,
537+
input: 'none',
538+
target: drive.class.Folder,
539+
context: {
540+
mode: ['context', 'browser'],
541+
application: drive.app.Drive,
542+
group: 'edit'
543+
},
544+
visibilityTester: drive.function.CanDeleteFolder
545+
},
546+
drive.action.DeleteFolder
547+
)
548+
521549
createAction(builder, {
522550
...actionTemplates.move,
523551
action: view.actionImpl.ShowPopup,
@@ -529,6 +557,7 @@ function defineFolder (builder: Builder): void {
529557
}
530558
},
531559
target: drive.class.Folder,
560+
visibilityTester: drive.function.CanUpdateFolder,
532561
context: {
533562
mode: ['browser', 'context'],
534563
group: 'tools'
@@ -569,7 +598,8 @@ function defineFileVersion (builder: Builder): void {
569598
mode: ['context', 'browser'],
570599
application: drive.app.Drive,
571600
group: 'edit'
572-
}
601+
},
602+
visibilityTester: drive.function.CanUpdateFileVersion
573603
},
574604
drive.action.RestoreFileVersion
575605
)
@@ -649,6 +679,7 @@ function defineFile (builder: Builder): void {
649679
actions: [
650680
view.action.Open,
651681
view.action.OpenInNewTab,
682+
view.action.Delete,
652683
print.action.Print,
653684
tracker.action.EditRelatedTargets,
654685
tracker.action.NewRelatedIssue
@@ -692,6 +723,25 @@ function defineFile (builder: Builder): void {
692723
drive.action.RenameFile
693724
)
694725

726+
createAction(
727+
builder,
728+
{
729+
action: view.actionImpl.Delete,
730+
label: view.string.Delete,
731+
icon: view.icon.Delete,
732+
category: drive.category.Drive,
733+
input: 'none',
734+
target: drive.class.File,
735+
context: {
736+
mode: ['context', 'browser'],
737+
application: drive.app.Drive,
738+
group: 'edit'
739+
},
740+
visibilityTester: drive.function.CanDeleteFile
741+
},
742+
drive.action.DeleteFile
743+
)
744+
695745
// createAction(
696746
// builder,
697747
// {
@@ -721,6 +771,7 @@ function defineFile (builder: Builder): void {
721771
}
722772
},
723773
target: drive.class.File,
774+
visibilityTester: drive.function.CanUpdateFile,
724775
context: {
725776
mode: ['browser', 'context'],
726777
group: 'tools'

models/drive/src/migration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
//
1515

1616
import core, { type Blob, type Ref, DOMAIN_BLOB, generateId, toIdMap } from '@hcengineering/core'
17-
import type { Drive, File, FileVersion, Resource } from '@hcengineering/drive'
17+
import type { File, FileVersion, Resource } from '@hcengineering/drive'
1818
import {
1919
type MigrateOperation,
2020
type MigrationClient,
@@ -56,7 +56,7 @@ async function migrateFileVersions (client: MigrationClient): Promise<void> {
5656
collection: 'versions',
5757
modifiedOn: file.modifiedOn,
5858
modifiedBy: file.modifiedBy,
59-
space: file.space as Ref<Drive>,
59+
space: file.space,
6060
title: exfile.title,
6161
file: blob._id,
6262
size: blob.size,

models/drive/src/permissions.ts

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,84 @@ import core from '@hcengineering/core'
33
import drive from '@hcengineering/drive'
44

55
export function definePermissions (builder: Builder): void {
6+
builder.createDoc(
7+
core.class.Permission,
8+
core.space.Model,
9+
{
10+
scope: 'space',
11+
label: drive.string.CreateFilePermission,
12+
description: drive.string.CreateFilePermissionDescription,
13+
txClass: core.class.TxCreateDoc,
14+
objectClass: drive.class.File
15+
},
16+
drive.permission.CreateFile
17+
)
18+
19+
builder.createDoc(
20+
core.class.Permission,
21+
core.space.Model,
22+
{
23+
scope: 'space',
24+
label: drive.string.UpdateFilePermission,
25+
description: drive.string.UpdateFilePermissionDescription,
26+
txClass: core.class.TxUpdateDoc,
27+
objectClass: drive.class.File
28+
},
29+
drive.permission.UpdateFile
30+
)
31+
32+
builder.createDoc(
33+
core.class.Permission,
34+
core.space.Model,
35+
{
36+
scope: 'space',
37+
label: drive.string.RemoveFilePermission,
38+
description: drive.string.RemoveFilePermissionDescription,
39+
txClass: core.class.TxRemoveDoc,
40+
objectClass: drive.class.File
41+
},
42+
drive.permission.RemoveFile
43+
)
44+
45+
builder.createDoc(
46+
core.class.Permission,
47+
core.space.Model,
48+
{
49+
scope: 'space',
50+
label: drive.string.CreateFolderPermission,
51+
description: drive.string.CreateFolderPermissionDescription,
52+
txClass: core.class.TxCreateDoc,
53+
objectClass: drive.class.Folder
54+
},
55+
drive.permission.CreateFolder
56+
)
57+
58+
builder.createDoc(
59+
core.class.Permission,
60+
core.space.Model,
61+
{
62+
scope: 'space',
63+
label: drive.string.UpdateFolderPermission,
64+
description: drive.string.UpdateFolderPermissionDescription,
65+
txClass: core.class.TxUpdateDoc,
66+
objectClass: drive.class.Folder
67+
},
68+
drive.permission.UpdateFolder
69+
)
70+
71+
builder.createDoc(
72+
core.class.Permission,
73+
core.space.Model,
74+
{
75+
scope: 'space',
76+
label: drive.string.RemoveFolderPermission,
77+
description: drive.string.RemoveFolderPermissionDescription,
78+
txClass: core.class.TxRemoveDoc,
79+
objectClass: drive.class.Folder
80+
},
81+
drive.permission.RemoveFolder
82+
)
83+
684
builder.createDoc(
785
core.class.Permission,
886
core.space.Model,

0 commit comments

Comments
 (0)