feat: Rebrand circles to teams in the frontend

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2024-02-20 18:34:39 +01:00
parent 40bd712eb3
commit 45b7dcadcf
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
12 changed files with 49 additions and 49 deletions

View File

@ -1 +1 @@
<svg height="16" viewBox="0 0 21.33 21.33" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M10.67 1.33a9.34 9.34 0 100 18.68 9.34 9.34 0 000-18.68zM6.93 15.8a2.33 2.33 0 110-4.67 2.33 2.33 0 010 4.67zm1.4-8.87a2.33 2.33 0 114.67 0 2.33 2.33 0 01-4.67 0zm6.07 8.87a2.33 2.33 0 110-4.67 2.33 2.33 0 010 4.67z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z" /></svg>

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 655 B

View File

@ -22,7 +22,7 @@
<template>
<AppContent v-if="!circle">
<EmptyContent :name="t('contacts', 'Please select a circle')">
<EmptyContent :name="t('contacts', 'Please select a team')">
<template #icon>
<IconCircles :size="20" />
</template>
@ -30,7 +30,7 @@
</AppContent>
<AppContent v-else-if="loading">
<EmptyContent class="empty-content" :name="t('contacts', 'Loading circle …')">
<EmptyContent class="empty-content" :name="t('contacts', 'Loading team…')">
<template #icon>
<IconLoading :size="20" />
</template>
@ -50,7 +50,7 @@
<!-- not a member -->
<template v-if="!circle.isMember">
<!-- Pending request validation -->
<EmptyContent v-if="circle.isPendingMember" :name="t('contacts', 'Your request to join this circle is pending approval')">
<EmptyContent v-if="circle.isPendingMember" :name="t('contacts', 'Your request to join this team is pending approval')">
<template #icon>
<IconLoading :size="20" />
</template>

View File

@ -57,7 +57,7 @@
<!-- leave circle -->
<ActionButton v-if="circle.canLeave"
@click="confirmLeaveCircle">
{{ t('contacts', 'Leave circle') }}
{{ t('contacts', 'Leave team') }}
<ExitToApp slot="icon"
:size="16"
decorative />
@ -79,7 +79,7 @@
<template #icon>
<IconDelete :size="20" />
</template>
{{ t('contacts', 'Delete circle') }}
{{ t('contacts', 'Delete team') }}
</ActionButton>
</template>

View File

@ -132,13 +132,13 @@
<!-- New circle button caption and modal -->
<AppNavigationCaption id="newcircle"
:name="t('contacts', 'Circles')">
:name="t('contacts', 'Teams')">
<template #actions>
<NcActionButton @click="toggleNewCircleModal">
<template #icon>
<IconAdd :size="20" />
</template>
{{ t('contacts', 'Create a new circle') }}
{{ t('contacts', 'Create a new team') }}
</NcActionButton>
</template>
</AppNavigationCaption>
@ -390,8 +390,8 @@ export default {
},
collapseCirclesTitle() {
return this.collapsedCircles
? t('contacts', 'Show all circles')
: t('contacts', 'Collapse circles')
? t('contacts', 'Show all teams')
: t('contacts', 'Collapse teams')
},
},
@ -437,13 +437,13 @@ export default {
this.isNewCircleModalOpen = true
},
async createNewCircle(circleName, isPersonal, isLocal) {
this.logger.debug('Creating new circle', { circleName })
this.logger.debug('Creating new team', { circleName })
this.createCircleLoading = true
// Check if already exists
if (this.circles.find(circle => circle.name === circleName)) {
this.createCircleError = t('contacts', 'This circle already exists')
this.createCircleError = t('contacts', 'This team already exists')
return
}
this.createCircleError = null
@ -460,7 +460,7 @@ export default {
},
})
} catch (error) {
showError(t('contacts', 'An error happened during the creation of the circle'))
showError(t('contacts', 'An error happened during the creation of the team'))
} finally {
this.createCircleLoading = false
}

View File

@ -36,7 +36,7 @@
<template #title>
<input v-model="circle.displayName"
:readonly="!circle.isOwner"
:placeholder="t('contacts', 'Circle name')"
:placeholder="t('contacts', 'Team name')"
type="text"
autocomplete="off"
autocorrect="off"
@ -48,7 +48,7 @@
<!-- org, title -->
<template v-if="!circle.isOwner" #subtitle>
{{ t('contacts', 'Circle owned by {owner}', { owner: circle.owner.displayName}) }}
{{ t('contacts', 'Team owned by {owner}', { owner: circle.owner.displayName}) }}
</template>
</DetailsHeader>
@ -105,7 +105,7 @@
<Logout slot="icon"
:size="16"
decorative />
{{ t('contacts', 'Leave circle') }}
{{ t('contacts', 'Leave team') }}
</Button>
<!-- delete circle -->
@ -116,7 +116,7 @@
<template #icon>
<IconDelete :size="20" />
</template>
{{ t('contacts', 'Delete circle') }}
{{ t('contacts', 'Delete team') }}
</Button>
</section>
</AppContentDetails>
@ -173,9 +173,9 @@ export default {
computed: {
descriptionPlaceholder() {
if (this.circle.description.trim() === '') {
return t('contacts', 'There is no description for this circle')
return t('contacts', 'There is no description for this team')
}
return t('contacts', 'Enter a description for the circle')
return t('contacts', 'Enter a description for the team')
},
isEmptyDescription() {
@ -211,7 +211,7 @@ export default {
try {
await editCircle(this.circle.id, CircleEdit.Description, description)
} catch (error) {
console.error('Unable to edit circle description', description, error)
console.error('Unable to edit team description', description, error)
showError(t('contacts', 'An error happened during description sync'))
} finally {
this.loadingDescription = false
@ -226,7 +226,7 @@ export default {
try {
await editCircle(this.circle.id, CircleEdit.Name, name)
} catch (error) {
console.error('Unable to edit circle name', name, error)
console.error('Unable to edit name', name, error)
showError(t('contacts', 'An error happened during name sync'))
} finally {
this.loadingName = false

View File

@ -33,7 +33,7 @@
:disabled="loading.length > 0"
wrapper-element="li"
@update:checked="changePasswordProtection">
{{ t('contacts', 'Enforce password protection on files shared to this circle') }}
{{ t('contacts', 'Enforce password protection on files shared to this team') }}
</CheckboxRadioSwitch>
<CheckboxRadioSwitch v-if="enforcePasswordProtection"
@ -42,7 +42,7 @@
:disabled="loading.length > 0"
wrapper-element="li"
@update:checked="changeUseUniquePassword">
{{ t('contacts', 'Use a unique password for all shares to this circle') }}
{{ t('contacts', 'Use a unique password for all shares to this team') }}
</CheckboxRadioSwitch>
<li class="unique-password">

View File

@ -28,7 +28,7 @@
<div class="entity-picker__new">
<input ref="input"
v-model="circleName"
:placeholder="t('contacts', 'New circle name')"
:placeholder="t('contacts', 'New team name')"
class="entity-picker__new-input"
type="text"
@keypress.enter="onSubmit">
@ -42,10 +42,10 @@
<template v-if="false">
<CheckboxRadioSwitch :checked.sync="isPersonal"
:disabled="loading !== false">
{{ t('contacts', 'Personal circle') }}
{{ t('contacts', 'Personal team') }}
</CheckboxRadioSwitch>
<p>
{{ t('contacts', 'This circle will only be visible to you. Other members will not be able to see or use it.') }}
{{ t('contacts', 'This team will only be visible to you. Other members will not be able to see or use it.') }}
</p>
</template>
@ -53,10 +53,10 @@
<template v-if="isGlobalScale">
<CheckboxRadioSwitch :checked.sync="isLocal"
:disabled="loading !== false">
{{ t('contacts', 'Local circle') }}
{{ t('contacts', 'Local team') }}
</CheckboxRadioSwitch>
<p>
{{ t('contacts', 'This circle will not be shared with the other instances of the global scale') }}
{{ t('contacts', 'This team will not be shared with the other instances of the global scale') }}
</p>
</template>
</div>
@ -70,7 +70,7 @@
<button :disabled="isEmptyName || loading"
class="navigation__button-right primary"
@click="onSubmit">
{{ t('contacts', 'Create circle') }}
{{ t('contacts', 'Create team') }}
</button>
</div>
</div>

View File

@ -30,7 +30,7 @@
</EmptyContent>
</template>
<template v-else-if="!circle.isMember">
<EmptyContent class="empty-content" :name="t('contacts', 'The list of members is only visible to members of this circle')">
<EmptyContent class="empty-content" :name="t('contacts', 'The list of members is only visible to members of this team')">
<template #icon>
<IconContact :size="20" />
</template>
@ -60,7 +60,7 @@
<template #icon>
<IconInfo :size="20" />
</template>
{{ t('contacts', 'Show circle details') }}
{{ t('contacts', 'Show team details') }}
</Button>
</div>
@ -294,7 +294,7 @@ export default {
this.resetPicker()
} catch (error) {
showError(t('contacts', 'There was an issue adding members to the circle'))
showError(t('contacts', 'There was an issue adding members to the team'))
console.error('There was an issue adding members to the circle', this.pickerCircle, error)
} finally {
this.pickerLoading = false

View File

@ -81,7 +81,7 @@
<!-- Leave or delete member from circle -->
<ActionButton v-if="isCurrentUser && !circle.isOwner" @click="deleteMember">
{{ t('contacts', 'Leave circle') }}
{{ t('contacts', 'Leave team') }}
<ExitToApp slot="icon"
:size="16"
decorative />

View File

@ -64,7 +64,7 @@ export default {
if (this.circle.requireJoinAccept) {
return t('contacts', 'Request to join')
}
return t('contacts', 'Join circle')
return t('contacts', 'Join team')
},
},
@ -74,7 +74,7 @@ export default {
t('contacts', 'You are about to leave {circle}.\nAre you sure?', {
circle: this.circle.displayName,
}),
t('contacts', 'Please confirm circle leave'),
t('contacts', 'Please confirm team leave'),
OC.dialogs.YES_NO_BUTTONS,
this.leaveCircle,
true,
@ -99,7 +99,7 @@ export default {
this.circle.initiator = null
} catch (error) {
console.error('Could not leave the circle', member, error)
showError(t('contacts', 'Could not leave the circle {displayName}', this.circle))
showError(t('contacts', 'Could not leave the team {displayName}', this.circle))
} finally {
this.loadingAction = false
}
@ -118,7 +118,7 @@ export default {
// Append new member
member.circle.addMember(member)
} catch (error) {
showError(t('contacts', 'Unable to join the circle'))
showError(t('contacts', 'Unable to join the team'))
console.error('Unable to join the circle', error)
} finally {
this.loadingJoin = false
@ -131,7 +131,7 @@ export default {
t('contacts', 'You are about to delete {circle}.\nAre you sure?', {
circle: this.circle.displayName,
}),
t('contacts', 'Please confirm circle deletion'),
t('contacts', 'Please confirm team deletion'),
OC.dialogs.YES_NO_BUTTONS,
this.deleteCircle,
true,
@ -148,7 +148,7 @@ export default {
try {
this.$store.dispatch('deleteCircle', this.circle.id)
} catch (error) {
showError(t('contacts', 'Unable to delete the circle'))
showError(t('contacts', 'Unable to delete the team'))
} finally {
this.loadingAction = false
}

View File

@ -67,7 +67,7 @@ const MEMBER_TYPE_MAIL: MemberType = 4
const MEMBER_TYPE_CONTACT: MemberType = 8
const MEMBER_TYPE_CIRCLE: MemberType = 16
export const CIRCLE_DESC = t('contacts', 'Circles are groups of people that you can create yourself and with whom you can share data. They can be made up of other accounts or groups of accounts of the Nextcloud instance, but also of contacts from your address book or even external people by simply entering their e-mail addresses.')
export const CIRCLE_DESC = t('contacts', 'Teams are groups of people that you can create yourself and with whom you can share data. They can be made up of other accounts or groups of accounts of the Nextcloud instance, but also of contacts from your address book or even external people by simply entering their e-mail addresses.')
// Circles config flags
/* eslint-disable no-tabs */
@ -90,7 +90,7 @@ const CIRCLE_CONFIG_FEDERATED: CircleConfig = 32768 // Federated
// Existing members types
export const CIRCLES_MEMBER_TYPES = {
[MEMBER_TYPE_CIRCLE]: t('contacts', 'Circle'),
[MEMBER_TYPE_CIRCLE]: t('contacts', 'Team'),
[MEMBER_TYPE_USER]: t('contacts', 'User'),
[MEMBER_TYPE_GROUP]: t('contacts', 'Group'),
[MEMBER_TYPE_MAIL]: t('contacts', 'Email'),
@ -121,10 +121,10 @@ export const PUBLIC_CIRCLE_CONFIG = {
[CIRCLE_CONFIG_VISIBLE]: t('contacts', 'Visible to everyone'),
},
[t('contacts', 'Circle membership')]: {
[t('contacts', 'Team membership')]: {
// TODO: implement backend
// [CIRCLE_CONFIG_CIRCLE_INVITE]: t('contacts', 'Circle must confirm when invited in another circle'),
[CIRCLE_CONFIG_ROOT]: t('contacts', 'Prevent circle from being a member of another circle'),
// [CIRCLE_CONFIG_CIRCLE_INVITE]: t('contacts', 'Team must confirm when invited in another circle'),
[CIRCLE_CONFIG_ROOT]: t('contacts', 'Prevent teams from being a member of another team'),
},
}
@ -158,7 +158,7 @@ export const CIRCLES_MEMBER_GROUPING = [
// },
{
id: `picker-${Type.SHARE_TYPE_CIRCLE}`,
label: t('contacts', 'Circles'),
label: t('contacts', 'Teams'),
share: Type.SHARE_TYPE_CIRCLE,
type: MEMBER_TYPE_CIRCLE,
},
@ -171,7 +171,7 @@ export const CIRCLES_MEMBER_GROUPING = [
// TODO: implement SHARE_TYPE_CONTACT
{
id: 'picker-contact',
label: t('contacts', 'Contacts'),
label: t('contacts', 'Teams'),
share: Type.SHARE_TYPE_EMAIL,
type: MEMBER_TYPE_CONTACT,
},

View File

@ -140,7 +140,7 @@ const actions = {
})
if (failure) {
showError(t('contacts', 'An error has occurred in circle(s). Check the console for more details.'))
showError(t('contacts', 'An error has occurred in team(s). Check the console for more details.'))
}
return circles
@ -200,7 +200,7 @@ const actions = {
return circle
} catch (error) {
console.error(error)
showError(t('contacts', 'Unable to create circle {circleName}', { circleName }))
showError(t('contacts', 'Unable to create team {circleName}', { circleName }))
}
},
@ -218,7 +218,7 @@ const actions = {
logger.debug('Deleted circle', { circleId })
} catch (error) {
console.error(error)
showError(t('contacts', 'Unable to delete circle {circleId}', circleId))
showError(t('contacts', 'Unable to delete team {circleId}', circleId))
}
},