mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-04-14 19:56:23 +00:00
fix: I18n string update (#13588)
* i18n string updates (issue #9210) * change offHand to offHandCapitalized * added removeTasks to challenge.json * added hairBangs back to character.json * added hairBangs back to character.json * more hairBangs nonsense * added hairBangs to hair-settings.vue, removed same from character.json * changed levelUp to levelup in levelUp.vue and achievements.json * fix duplicate string values * fixed different strings with same content in different files * updated test/api/v3 and test/api/v4 with messageTaskNotFound * Delete POST-tasks_taskId_checklist_itemId_score.test.js File got copied to a new directory, doesn't need to be here. * fix: userID token in patrons.vue and heroes.vue * removed: unused clock of code * Restored eggsItemType to inventory.json Co-authored-by: Sabe Jones <sabrecat@gmail.com>
This commit is contained in:
parent
56ac23bea6
commit
5d87c2af13
70 changed files with 116 additions and 151 deletions
|
|
@ -14,7 +14,7 @@ describe('GET /shops/backgrounds', () => {
|
|||
const shop = await user.get('/shops/backgrounds');
|
||||
expect(shop.identifier).to.equal('backgroundShop');
|
||||
expect(shop.text).to.eql(t('backgroundShop'));
|
||||
expect(shop.notes).to.eql(t('backgroundShopText'));
|
||||
expect(shop.notes).to.eql(t('backgroundShop'));
|
||||
expect(shop.imageName).to.equal('background_shop');
|
||||
expect(shop.sets).to.be.an('array');
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -123,7 +123,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.del('/tasks/550e8400-e29b-41d4-a716-446655440000')).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.del(`/tasks/${anotherUsersTask._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ describe('GET /tasks/:taskId', () => {
|
|||
await expect(user.get(`/tasks/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ describe('GET /tasks/:taskId', () => {
|
|||
await expect(anotherUser.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ describe('GET /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${dummyId}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -63,7 +63,7 @@ describe('GET /tasks/:id', () => {
|
|||
await expect(anotherUser.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -118,7 +118,7 @@ describe('GET /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -163,7 +163,7 @@ describe('GET /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ describe('POST /tasks/:taskId/move/to/:position', () => {
|
|||
await expect(user.post(`/tasks/${generateUUID()}/move/to/1`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ describe('POST /tasks/unlink-all/:challengeId', () => {
|
|||
await expect(user.get(`/tasks/${daily._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ describe('POST /tasks/unlink-one/:taskId', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ describe('DELETE /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.del(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.del(`/tasks/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(anotherUser.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ describe('DELETE /tasks/:id', () => {
|
|||
await expect(anotherUser.get(`/tasks/${anotherUsersNewChallengeTaskID}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ describe('POST /tasks/:taskId/checklist/', () => {
|
|||
})).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ describe('PUT /tasks/:id', () => {
|
|||
})).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ describe('PUT /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.put(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ describe('DELETE /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.del(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ describe('POST /tasks/:taskId/checklist/', () => {
|
|||
})).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ describe('POST /tasks/:taskId/checklist/:itemId/score', () => {
|
|||
await expect(user.post(`/tasks/${generateUUID()}/checklist/${generateUUID()}/score`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ describe('PUT /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.put(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ describe('Groups DELETE /tasks/:id', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ describe('Groups DELETE /tasks/:id', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ describe('POST /tasks/:id/approve/:userId', () => {
|
|||
.to.eventually.be.rejected.and.to.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ describe('POST /tasks/:id/needs-work/:userId', () => {
|
|||
.to.eventually.be.rejected.and.to.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ describe('POST /tasks/:taskId/assign/:memberId', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ describe('POST /tasks/:taskId/unassign/:memberId', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ describe('DELETE group /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.del(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ describe('POST group /tasks/:taskId/checklist/', () => {
|
|||
})).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ describe('PUT group /tasks/:taskId/checklist/:itemId', () => {
|
|||
await expect(user.put(`/tasks/${generateUUID()}/checklist/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ describe('POST /user/class/cast/:spellId', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.habits).to.be.empty;
|
||||
|
|
@ -45,7 +45,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.dailys).to.be.empty;
|
||||
|
|
@ -63,7 +63,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.todos).to.be.empty;
|
||||
|
|
@ -81,7 +81,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.rewards).to.be.empty;
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ describe('POST /user/class/cast/:spellId', () => {
|
|||
.to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.habits).to.be.empty;
|
||||
|
|
@ -45,7 +45,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.dailys).to.be.empty;
|
||||
|
|
@ -63,7 +63,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.todos).to.be.empty;
|
||||
|
|
@ -81,7 +81,7 @@ describe('POST /user/reset', () => {
|
|||
await expect(user.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||
code: 404,
|
||||
error: 'NotFound',
|
||||
message: t('taskNotFound'),
|
||||
message: t('messageTaskNotFound'),
|
||||
});
|
||||
|
||||
expect(user.tasksOrder.rewards).to.be.empty;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
class="btn btn-primary btn-lg flex-column"
|
||||
@click="ready()"
|
||||
>
|
||||
{{ $t('imReady') }}
|
||||
{{ $t('enterHabitica') }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-3"></div>
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
<span v-if="isLeader || isAdmin">
|
||||
<b-dropdown
|
||||
class="create-dropdown select-list"
|
||||
:text="$t('addTaskToChallenge')"
|
||||
:text="$t('addTask')"
|
||||
:variant="'success'"
|
||||
>
|
||||
<b-dropdown-item
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
class="btn btn-primary"
|
||||
@click="leaveChallenge('keep')"
|
||||
>
|
||||
{{ $t('keepThem') }}
|
||||
{{ $t('keepTasks') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-danger"
|
||||
@click="leaveChallenge('remove-all')"
|
||||
>
|
||||
{{ $t('removeThem') }}
|
||||
{{ $t('removeTasks') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
{{ $t('noChallengeTitle') }}
|
||||
</h2>
|
||||
<p v-once>
|
||||
{{ $t('challengeDescription1') }}
|
||||
{{ $t('challengeDetails') }}
|
||||
</p>
|
||||
<p v-once>
|
||||
{{ $t('challengeDescription2') }}
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
>
|
||||
<button
|
||||
class="btn btn-secondary form-control"
|
||||
:value="$t('createGroupPlan')"
|
||||
:value="$t('create')"
|
||||
@click="createGroup()"
|
||||
></button>
|
||||
</div>
|
||||
|
|
@ -74,7 +74,7 @@
|
|||
:disabled="!newGroupIsReady"
|
||||
@click="createGroup()"
|
||||
>
|
||||
{{ $t('createGroupPlan') }}
|
||||
{{ $t('create') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
target="create-task-btn"
|
||||
placement="bottom"
|
||||
>
|
||||
{{ $t('addTaskToGroupPlan') }}
|
||||
{{ $t('create') }}
|
||||
</b-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ b-dropdown(:text="$t('sort')", right=true)
|
|||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
<span v-once>{{ $t('createGuild2') }}</span>
|
||||
<span v-once>{{ $t('create') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@
|
|||
>
|
||||
<button
|
||||
class="btn btn-secondary form-control"
|
||||
:value="$t('createGroupPlan')"
|
||||
:value="$t('create')"
|
||||
@click="createGroup()"
|
||||
></button>
|
||||
</div>
|
||||
|
|
@ -232,7 +232,7 @@
|
|||
:disabled="!newGroupIsReady"
|
||||
@click="createGroup()"
|
||||
>
|
||||
{{ $t('createGroupPlan') }}
|
||||
{{ $t('create') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
class="svg-icon positive-icon"
|
||||
v-html="icons.positiveIcon"
|
||||
></div>
|
||||
<span v-once>{{ $t('createGuild2') }}</span>
|
||||
<span v-once>{{ $t('create') }}</span>
|
||||
</button>
|
||||
<!-- @TODO: Add when we implement recent activity
|
||||
.float-rightspan.dropdown-label {{ $t('sortBy') }}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<close-icon @click="close()" />
|
||||
</div>
|
||||
<h2 class="text-center textCondensed">
|
||||
{{ selectMode ? $t('selectQuest') : $t('questDetailsTitle') }}
|
||||
{{ selectMode ? $t('selectQuest') : $t('questDetails') }}
|
||||
</h2>
|
||||
<div
|
||||
v-if="selectMode"
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
:disabled="!Boolean(selectedQuest) || loading"
|
||||
@click="questInit()"
|
||||
>
|
||||
{{ $t('inviteToPartyOrQuest') }}
|
||||
{{ $t('inviteParty') }}
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<sidebar-section :title="$t('questDetailsTitle')">
|
||||
<sidebar-section :title="$t('questDetails')">
|
||||
<div
|
||||
v-if="!onPendingQuest && !onActiveQuest"
|
||||
class="row no-quest-section"
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@
|
|||
v-once
|
||||
to="/static/community-guidelines"
|
||||
>
|
||||
{{ $t('communityGuidelinesLink') }}
|
||||
{{ $t('communityGuidelines') }}
|
||||
</router-link>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@
|
|||
<tr>
|
||||
<th>{{ $t('name') }}</th>
|
||||
<th v-if="user.contributor && user.contributor.admin">
|
||||
{{ $t('UUID') }}
|
||||
{{ $t('userId') }}
|
||||
</th>
|
||||
<th>{{ $t('contribLevel') }}</th>
|
||||
<th>{{ $t('title') }}</th>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<tr>
|
||||
<th>{{ $t('name') }}</th>
|
||||
<th v-if="user.contributor.admin">
|
||||
{{ $t('UUID') }}
|
||||
{{ $t('userId') }}
|
||||
</th>
|
||||
<th>{{ $t('backerTier') }}</th>
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -320,13 +320,13 @@
|
|||
class="topbar-dropdown-item dropdown-item"
|
||||
to="/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a"
|
||||
>
|
||||
{{ $t('askAQuestion') }}
|
||||
{{ $t('askQuestion') }}
|
||||
</router-link>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
href="https://docs.google.com/forms/d/e/1FAIpQLScPhrwq_7P1C6PTrI3lbvTsvqGyTNnGzp1ugi1Ml0PFee_p5g/viewform?usp=sf_link"
|
||||
target="_blank"
|
||||
>{{ $t('requestAF') }}</a>
|
||||
>{{ $t('requestFeature') }}</a>
|
||||
<a
|
||||
class="topbar-dropdown-item dropdown-item"
|
||||
href="https://habitica.fandom.com/wiki/Contributing_to_Habitica"
|
||||
|
|
|
|||
|
|
@ -357,10 +357,10 @@ export default {
|
|||
groupBy: 'type', // or 'class'
|
||||
gearTypesToStrings: Object.freeze({ // TODO use content.itemList?
|
||||
weapon: i18n.t('weaponCapitalized'),
|
||||
shield: i18n.t('offhandCapitalized'),
|
||||
shield: i18n.t('offHandCapitalized'),
|
||||
head: i18n.t('headgearCapitalized'),
|
||||
armor: i18n.t('armorCapitalized'),
|
||||
headAccessory: i18n.t('headAccessoryCapitalized'),
|
||||
headAccessory: i18n.t('headAccessory'),
|
||||
eyewear: i18n.t('eyewear'),
|
||||
body: i18n.t('body'),
|
||||
back: i18n.t('back'),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
v-else
|
||||
>{{ $t('sendGiftCost', {cost: gift.gems.amount / 4}) }}</span>
|
||||
</div>
|
||||
{{ $t('gemsPopoverTitle') }}
|
||||
{{ $t('gems') }}
|
||||
</h3>
|
||||
<div class="panel-body">
|
||||
<div class="d-flex mb-3">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<a
|
||||
target="_blank"
|
||||
:href="`https://oldgods.net/habitica/habitrpg_user_data_display.html?uuid=` + user._id"
|
||||
>{{ $t('dataTool') }}</a>
|
||||
>{{ $t('dataDisplayTool') }}</a>
|
||||
<br>
|
||||
{{ $t('dataToolDesc') }}
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<close-icon @click="hideDialog()" />
|
||||
</div>
|
||||
<h2 class="text-center textCondensed">
|
||||
{{ $t('questDetailsTitle') }}
|
||||
{{ $t('questDetails') }}
|
||||
</h2>
|
||||
<div
|
||||
v-if="item != null"
|
||||
|
|
|
|||
|
|
@ -399,10 +399,10 @@ export default {
|
|||
|
||||
gearTypesToStrings: Object.freeze({ // TODO use content.itemList?
|
||||
weapon: i18n.t('weaponCapitalized'),
|
||||
shield: i18n.t('offhandCapitalized'),
|
||||
shield: i18n.t('offHandCapitalized'),
|
||||
head: i18n.t('headgearCapitalized'),
|
||||
armor: i18n.t('armorCapitalized'),
|
||||
headAccessory: i18n.t('headAccessoryCapitalized'),
|
||||
headAccessory: i18n.t('headAccessory'),
|
||||
body: i18n.t('body'),
|
||||
back: i18n.t('back'),
|
||||
eyewear: i18n.t('eyewear'),
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@
|
|||
class="btn btn-primary pull-right"
|
||||
@click="playButtonClick()"
|
||||
>
|
||||
{{ $t('playButtonFull') }}
|
||||
{{ $t('enterHabitica') }}
|
||||
</button>
|
||||
</div>
|
||||
<router-link
|
||||
|
|
|
|||
|
|
@ -36,13 +36,13 @@
|
|||
class="btn btn-primary"
|
||||
@click="unlink('keep-all')"
|
||||
>
|
||||
{{ $t('keepThem') }}
|
||||
{{ $t('keepTasks') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-danger"
|
||||
@click="unlink('remove-all')"
|
||||
>
|
||||
{{ $t('removeThem') }}
|
||||
{{ $t('removeTasks') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -53,23 +53,16 @@
|
|||
class="btn btn-primary"
|
||||
@click="unlink('keep-all')"
|
||||
>
|
||||
{{ $t('keepThem') }}
|
||||
{{ $t('keepTasks') }}
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-danger"
|
||||
@click="unlink('remove-all')"
|
||||
>
|
||||
{{ $t('removeThem') }}
|
||||
{{ $t('removeTasks') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- @TODO: I ported this over, but do we use it anymore?-->
|
||||
<!--div(v-if='brokenChallengeTask.challenge.broken
|
||||
=== "UNSUBSCRIBED"')p {{ $t('unsubChallenge') }}
|
||||
p
|
||||
a(@click="unlink('keep-all')") {{ $t('keepThem') }}
|
||||
| |
|
||||
a(@click="unlink('remove-all')") {{ $t('removeThem') }}-->
|
||||
</div>
|
||||
</b-modal>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
v-if="tagsType.key !== 'groups' && !editingTags"
|
||||
class="d-block"
|
||||
@click="editTags(tagsType.key)"
|
||||
>{{ $t('editTags2') }}</a>
|
||||
>{{ $t('editTagsText') }}</a>
|
||||
</div>
|
||||
<div class="tags-list container">
|
||||
<div
|
||||
|
|
@ -197,7 +197,7 @@
|
|||
target="create-task-btn"
|
||||
placement="bottom"
|
||||
>
|
||||
{{ $t('addTaskToUser') }}
|
||||
{{ $t('addTask') }}
|
||||
</b-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ export default {
|
|||
body: this.$t('bodyAccess'),
|
||||
weapon: this.$t('mainHand'),
|
||||
_skip: 'skip',
|
||||
shield: this.$t('offHand'),
|
||||
shield: this.$t('offHandCapitalized'),
|
||||
},
|
||||
|
||||
allocateStatsList: {
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ export default {
|
|||
orphan: true,
|
||||
intro: this.$t('tourTavernPage'),
|
||||
final: true,
|
||||
proceed: this.$t('tourAwesome'),
|
||||
proceed: this.$t('awesome'),
|
||||
hideNavigation: true,
|
||||
},
|
||||
]],
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
"backgrounds": "Backgrounds",
|
||||
"background": "Background",
|
||||
"backgroundShop": "Background Shop",
|
||||
"backgroundShopText": "Background Shop",
|
||||
"noBackground": "No Background Selected",
|
||||
|
||||
"backgrounds062014": "SET 1: Released June 2014",
|
||||
|
|
|
|||
|
|
@ -5,9 +5,8 @@
|
|||
"brokenTask": "Broken Challenge Link: this task was part of a challenge, but has been removed from it. What would you like to do?",
|
||||
"keepIt": "Keep It",
|
||||
"removeIt": "Remove It",
|
||||
"removeTasks": "Remove Tasks",
|
||||
"brokenChallenge": "Broken Challenge Link: this task was part of a challenge, but the challenge (or group) has been deleted. What to do with the orphan tasks?",
|
||||
"keepThem": "Keep Tasks",
|
||||
"removeThem": "Remove Tasks",
|
||||
"challengeCompleted": "This challenge has been completed, and the winner was <span class=\"badge\"><%- user %></span>! What to do with the orphan tasks?",
|
||||
"unsubChallenge": "Broken Challenge Link: this task was part of a challenge, but you have unsubscribed from the challenge. What to do with the orphan tasks?",
|
||||
"challenges": "Challenges",
|
||||
|
|
@ -24,7 +23,6 @@
|
|||
"createChallenge": "Create Challenge",
|
||||
"createChallengeAddTasks": "Add Challenge Tasks",
|
||||
"createChallengeCloneTasks": "Clone Challenge Tasks",
|
||||
"addTaskToChallenge": "Add Task",
|
||||
"challengeTag": "Tag Name",
|
||||
"prize": "Prize",
|
||||
"publicChallengesTitle": "Public Challenges",
|
||||
|
|
@ -32,7 +30,6 @@
|
|||
"by": "by",
|
||||
"participants": "<%= membercount %> Participants",
|
||||
"join": "Join",
|
||||
"exportChallengeCSV": "Export to CSV",
|
||||
"challengeCreated": "Challenge created",
|
||||
"sureDelCha": "Are you sure you want to delete this challenge?",
|
||||
"keepTasks": "Keep Tasks",
|
||||
|
|
@ -60,7 +57,6 @@
|
|||
"myChallenges": "My Challenges",
|
||||
"findChallenges": "Discover Challenges",
|
||||
"noChallengeTitle": "You don't have any Challenges.",
|
||||
"challengeDescription1": "Challenges are community events in which players compete and earn prizes by completing a group of related tasks.",
|
||||
"challengeDescription2": "Find recommended Challenges based on your interests, browse Habitica's public Challenges, or create your own Challenges.",
|
||||
"noChallengeMatchFilters": "We couldn't find any matching Challenges.",
|
||||
"createdBy": "Created By",
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@
|
|||
"color": "Color",
|
||||
"hair": "Hair",
|
||||
"bangs": "Bangs",
|
||||
"hairBangs": "Bangs",
|
||||
"glasses": "Glasses",
|
||||
"hairSet1": "Hairstyle Set 1",
|
||||
"hairSet2": "Hairstyle Set 2",
|
||||
|
|
@ -87,7 +86,6 @@
|
|||
"allocateIntPop": "Add a Point to Intelligence",
|
||||
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='https://habitica.fandom.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a>!",
|
||||
"stats": "Stats",
|
||||
"achievs": "Achievements",
|
||||
"strength": "Strength",
|
||||
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
|
||||
"constitution": "Constitution",
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
"contribLevel": "Contrib Tier",
|
||||
"hallContributors": "Hall of Contributors",
|
||||
"hallPatrons": "Hall of Patrons",
|
||||
"UUID": "User ID",
|
||||
"noAdminAccess": "You don't have admin access.",
|
||||
"userNotFound": "User not found.",
|
||||
"invalidUUID": "UUID must be valid",
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
"setNewPass": "Set New Password",
|
||||
"password": "Password",
|
||||
"playButton": "Play",
|
||||
"playButtonFull": "Enter Habitica",
|
||||
"enterHabitica": "Enter Habitica",
|
||||
"presskit": "Press Kit",
|
||||
"presskitText": "Thanks for your interest in Habitica! The following images can be used for articles or videos about Habitica. For more information, please contact us at <%= pressEnquiryEmail %>.",
|
||||
"pkQuestion1": "What inspired Habitica? How did it start?",
|
||||
|
|
@ -83,8 +83,6 @@
|
|||
"pkBoss": "Bosses",
|
||||
"pkSamples": "Sample Screens",
|
||||
"pkWebsite": "Website",
|
||||
"pkiOS": "iOS",
|
||||
"pkAndroid": "Android",
|
||||
"privacy": "Privacy Policy",
|
||||
"register": "Register",
|
||||
"school": "School",
|
||||
|
|
|
|||
|
|
@ -1957,7 +1957,7 @@
|
|||
"headArmoireBlackFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a bold black color. Increases Constitution, Perception, and Strength by <%= attrs %> each. Enchanted Armoire: Black Loungewear Set (Item 1 of 3).",
|
||||
|
||||
"offhand": "off-hand item",
|
||||
"offhandCapitalized": "Off-Hand Item",
|
||||
"offHandCapitalized": "Off-Hand Item",
|
||||
|
||||
"shieldBase0Text": "No Off-Hand Equipment",
|
||||
"shieldBase0Notes": "No shield or other off-hand item.",
|
||||
|
|
@ -2320,7 +2320,6 @@
|
|||
"shieldArmoireSoftBlackPillowNotes": "The brave warrior packs a pillow for any expedition. Guard yourself from tiresome tasks... even while you nap. Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Black Loungewear Set (Item 3 of 3).",
|
||||
|
||||
"back": "Back Accessory",
|
||||
"backCapitalized": "Back Accessory",
|
||||
"backBase0Text": "No Back Accessory",
|
||||
"backBase0Notes": "No Back Accessory.",
|
||||
"animalTails": "Animal Tails",
|
||||
|
|
@ -2414,7 +2413,6 @@
|
|||
"backWolfTailNotes": "This tail makes you look like a loyal wolf! Confers no benefit.",
|
||||
|
||||
"body": "Body Accessory",
|
||||
"bodyCapitalized": "Body Accessory",
|
||||
"bodyBase0Text": "No Body Accessory",
|
||||
"bodyBase0Notes": "No Body Accessory.",
|
||||
|
||||
|
|
@ -2470,8 +2468,7 @@
|
|||
"bodyArmoireClownsBowtieText": "Clown's Bow-Tie",
|
||||
"bodyArmoireClownsBowtieNotes": "A nice bow-tie is no joking matter, even for a clown. Increases Strength, Intelligence, Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Clown Set (Item 5 of 5).",
|
||||
|
||||
"headAccessory": "head accessory",
|
||||
"headAccessoryCapitalized": "Head Accessory",
|
||||
"headAccessory": "Head Accessory",
|
||||
"accessories": "Accessories",
|
||||
"animalEars": "Animal Ears",
|
||||
|
||||
|
|
@ -2588,7 +2585,6 @@
|
|||
"headAccessoryArmoireGogglesOfBookbindingNotes": "These goggles will help you zero in on any task, large or small! Increases Perception by <%= per %>. Enchanted Armoire: Bookbinder Set (Item 1 of 4).",
|
||||
|
||||
"eyewear": "Eyewear",
|
||||
"eyewearCapitalized": "Eyewear",
|
||||
"eyewearBase0Text": "No Eyewear",
|
||||
"eyewearBase0Notes": "No Eyewear.",
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@
|
|||
"notEnoughGems": "Not enough Gems",
|
||||
"alreadyHave": "Whoops! You already have this item. No need to buy it again!",
|
||||
"delete": "Delete",
|
||||
"gemsPopoverTitle": "Gems",
|
||||
"gems": "Gems",
|
||||
"needMoreGems": "Need More Gems?",
|
||||
"needMoreGemsInfo": "Purchase Gems now, or become a subscriber to buy Gems with Gold, get monthly mystery items, enjoy increased drop caps and more!",
|
||||
|
|
@ -201,5 +200,6 @@
|
|||
"selected": "Selected",
|
||||
"howManyToBuy": "How many would you like to buy?",
|
||||
"contactForm": "Contact the Moderation Team",
|
||||
"loadEarlierMessages": "Load Earlier Messages"
|
||||
"loadEarlierMessages": "Load Earlier Messages",
|
||||
"askQuestion": "Ask a Question"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,26 +5,21 @@
|
|||
"innCheckOutBannerShort": "You are checked into the Inn.",
|
||||
"resumeDamage": "Resume Damage",
|
||||
"helpfulLinks": "Helpful Links",
|
||||
"communityGuidelinesLink": "Community Guidelines",
|
||||
"lookingForGroup": "Looking for Group (Party Wanted) Posts",
|
||||
"dataDisplayTool": "Data Display Tool",
|
||||
"requestFeature": "Request a Feature",
|
||||
"askAQuestion": "Ask a Question",
|
||||
"askQuestionGuild": "Ask a Question (Habitica Help guild)",
|
||||
"contributing": "Contributing",
|
||||
"faq": "FAQ",
|
||||
"tutorial": "Tutorial",
|
||||
"glossary": "<a target='_blank' href='https://habitica.fandom.com/wiki/Glossary'>Glossary</a>",
|
||||
"wiki": "Wiki",
|
||||
"requestAF": "Request a Feature",
|
||||
"dataTool": "Data Display Tool",
|
||||
"resources": "Resources",
|
||||
"communityGuidelines": "Community Guidelines",
|
||||
"bannedWordUsed": "Oops! Looks like this post contains a swearword, religious oath, or reference to an addictive substance or adult topic (<%= swearWordsUsed %>). Habitica has users from all backgrounds, so we keep our chat very clean. Feel free to edit your message so you can post it!",
|
||||
"bannedSlurUsed": "Your post contained inappropriate language, and your chat privileges have been revoked.",
|
||||
"party": "Party",
|
||||
"usernameCopied": "Username copied to clipboard.",
|
||||
"createGroupPlan": "Create",
|
||||
"create": "Create",
|
||||
"userId": "User ID",
|
||||
"invite": "Invite",
|
||||
|
|
@ -55,7 +50,6 @@
|
|||
"search": "Search",
|
||||
"publicGuilds": "Public Guilds",
|
||||
"createGuild": "Create Guild",
|
||||
"createGuild2": "Create",
|
||||
"guild": "Guild",
|
||||
"guilds": "Guilds",
|
||||
"sureKick": "Do you really want to remove this member from the Party/Guild?",
|
||||
|
|
@ -237,7 +231,6 @@
|
|||
"userMustBeMember": "User must be a member",
|
||||
"userIsNotManager": "User is not manager",
|
||||
"canOnlyApproveTaskOnce": "This task has already been approved.",
|
||||
"addTaskToGroupPlan": "Create",
|
||||
"joinedGuild": "Joined a Guild",
|
||||
"joinedGuildText": "Ventured into the social side of Habitica by joining a Guild!",
|
||||
"badAmountOfGemsToPurchase": "Amount must be at least 1.",
|
||||
|
|
@ -304,7 +297,6 @@
|
|||
"wantToJoinPartyTitle": "Want to join a Party?",
|
||||
"wantToJoinPartyDescription": "Give your username to a friend who already has a Party, or head to the <a href='/groups/guild/f2db2a7f-13c5-454d-b3ee-ea1f5089e601'>Party Wanted Guild</a> to meet potential comrades!",
|
||||
"copy": "Copy",
|
||||
"inviteToPartyOrQuest": "Invite Party to Quest",
|
||||
"questOwnerRewards": "Quest Owner Rewards",
|
||||
"updateParty": "Update Party",
|
||||
"upgradeToGroup": "Upgrade to Group",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@
|
|||
"tourEquipmentPage": "This is where your Equipment is stored! Your Battle Gear affects your Stats. If you want to show different Equipment on your avatar without changing your Stats, click \"Enable Costume.\"",
|
||||
"equipmentAlreadyOwned": "You already own that piece of equipment",
|
||||
"tourOkay": "Okay!",
|
||||
"tourAwesome": "Awesome!",
|
||||
"tourSplendid": "Splendid!",
|
||||
"welcomeToHabit": "Welcome to Habitica!",
|
||||
"welcome1": "Create a basic avatar.",
|
||||
|
|
@ -125,7 +124,6 @@
|
|||
"welcome2notes": "How well you do on your real-life tasks will control how well you do in the game!",
|
||||
"welcome3": "Progress in life and the game!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"imReady": "Enter Habitica",
|
||||
"limitedOffer": "Available until <%= date %>",
|
||||
"limitedAvailabilityDays": "Available for <%= days %>d <%= hours %>h <%= minutes %>m",
|
||||
"limitedAvailabilityHours": "Available for <%= hours %>h <%= minutes %>m",
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@
|
|||
"questConfirm": "Are you sure you want to start this Quest? Not all Party members have accepted the Quest invite. Quests start automatically after all members respond to the invite.",
|
||||
"sureCancel": "Are you sure you want to cancel this Quest? Canceling the Quest will cancel all accepted and pending invitations. The Quest will be returned to the owner's inventory.",
|
||||
"sureAbort": "Are you sure you want to cancel this Quest? All progress will be lost. The Quest will be returned to the owner's inventory.",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"selectQuest": "Select Quest",
|
||||
"startQuest": "Start Quest",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
"addATitle": "Add a title",
|
||||
"editATask": "Edit <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
"addTaskToUser": "Add Task",
|
||||
"scheduled": "Scheduled",
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "Habit",
|
||||
|
|
@ -72,9 +71,8 @@
|
|||
"silver": "Silver (100 silver = 1 gold)",
|
||||
"price": "Price",
|
||||
"tags": "Tags",
|
||||
"editTags": "Edit",
|
||||
"newTag": "New Tag",
|
||||
"editTags2": "Edit Tags",
|
||||
"editTagsText": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Start Date",
|
||||
"streaks": "Streak Achievements",
|
||||
|
|
@ -96,7 +94,6 @@
|
|||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
"invalidTasksType": "Task type must be one of \"habits\", \"dailys\", \"todos\", \"rewards\".",
|
||||
"invalidTasksTypeExtra": "Task type must be one of \"habits\", \"dailys\", \"todos\", \"rewards\", \"completedTodos\".",
|
||||
|
|
|
|||
|
|
@ -3861,7 +3861,7 @@ each(quests, (v, key) => {
|
|||
});
|
||||
if (b.rage) {
|
||||
defaults(b.rage, {
|
||||
title: t('bossRageTitle'),
|
||||
title: t('rage'),
|
||||
description: t('bossRageDescription'),
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ api.getBackgroundShopItems = {
|
|||
const resObject = {
|
||||
identifier: 'backgroundShop',
|
||||
text: res.t('backgroundShop'),
|
||||
notes: res.t('backgroundShopText'),
|
||||
notes: res.t('backgroundShop'),
|
||||
imageName: 'background_shop',
|
||||
sets: shops.getBackgroundShopSets(user, req.language),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -511,27 +511,27 @@ api.getTask = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
} else if (task.group.id && !task.userId) {
|
||||
// @TODO: Abstract this access snippet
|
||||
const fields = requiredGroupFields.concat(' managers');
|
||||
const group = await Group.getGroup({ user, groupId: task.group.id, fields });
|
||||
if (!group) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!group) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
|
||||
const isNotGroupLeader = group.leader !== user._id;
|
||||
if (!group.isMember(user) && isNotGroupLeader) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!group.isMember(user) && isNotGroupLeader) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
// If the task belongs to a challenge make sure the user has rights (leader, admin or members)
|
||||
} else if (task.challenge.id && !task.userId) {
|
||||
const challenge = await Challenge.findOne({ _id: task.challenge.id }).select('leader').exec();
|
||||
// @TODO: Abstract this access snippet
|
||||
if (!challenge) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!challenge) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
if (!challenge.canModify(user) && !challenge.isMember(user)) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
// If the task is owned by a user make it's the current one
|
||||
} else if (task.userId !== user._id) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
res.respond(200, task);
|
||||
|
|
@ -607,14 +607,14 @@ api.updateTask = {
|
|||
const { taskId } = req.params;
|
||||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
const challenge = await getChallengeFromTask(task);
|
||||
// Verify that the user can modify the task.
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
} else if (task.group.id && !task.userId) {
|
||||
// If the task is in a group and only modifying `collapseChecklist`,
|
||||
// the modification should be allowed.
|
||||
|
|
@ -825,7 +825,7 @@ api.moveTask = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
|
|
@ -913,7 +913,7 @@ api.addChecklistItem = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
|
|
@ -965,7 +965,7 @@ api.scoreCheckListItem = {
|
|||
const { taskId } = req.params;
|
||||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id, { userId: user._id });
|
||||
|
||||
if (!task) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!task) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
if (task.type !== 'daily' && task.type !== 'todo') throw new BadRequest(res.t('checklistOnlyDailyTodo'));
|
||||
|
||||
const item = _.find(task.checklist, { id: req.params.itemId });
|
||||
|
|
@ -1021,7 +1021,7 @@ api.updateChecklistItem = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
|
|
@ -1085,7 +1085,7 @@ api.removeChecklistItem = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
|
|
@ -1150,7 +1150,7 @@ api.addTagToTask = {
|
|||
const { taskId } = req.params;
|
||||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id, { userId: user._id });
|
||||
|
||||
if (!task) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!task) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
const { tagId } = req.params;
|
||||
|
||||
const alreadyTagged = task.tags.indexOf(tagId) !== -1;
|
||||
|
|
@ -1206,7 +1206,7 @@ api.removeTagFromTask = {
|
|||
const { taskId } = req.params;
|
||||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id, { userId: user._id });
|
||||
|
||||
if (!task) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!task) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
|
||||
const hasTag = removeFromArray(task.tags, req.params.tagId);
|
||||
if (!hasTag) throw new NotFound(res.t('tagNotFound'));
|
||||
|
|
@ -1320,7 +1320,7 @@ api.unlinkOneTask = {
|
|||
|
||||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id, { userId: user._id });
|
||||
|
||||
if (!task) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!task) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
if (!task.challenge.id) throw new BadRequest(res.t('cantOnlyUnlinkChalTask'));
|
||||
if (!task.challenge.broken) throw new BadRequest(res.t('cantOnlyUnlinkChalTask'));
|
||||
|
||||
|
|
@ -1418,7 +1418,7 @@ api.deleteTask = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
const group = await getGroupFromTaskAndUser(task, user);
|
||||
const challenge = await getChallengeFromTask(task);
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ api.groupMoveTask = {
|
|||
const to = Number(req.params.position);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
if (task.type === 'todo' && task.completed) throw new BadRequest(res.t('cantMoveCompletedTodo'));
|
||||
|
|
@ -197,7 +197,7 @@ api.assignTask = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
if (!task.group.id) {
|
||||
|
|
@ -272,7 +272,7 @@ api.unassignTask = {
|
|||
const task = await Tasks.Task.findByIdOrAlias(taskId, user._id);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
if (!task.group.id) {
|
||||
|
|
@ -332,7 +332,7 @@ api.approveTask = {
|
|||
}).exec();
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const fields = requiredGroupFields.concat(' managers');
|
||||
|
|
@ -440,7 +440,7 @@ api.taskNeedsWork = {
|
|||
]);
|
||||
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
|
||||
const fields = requiredGroupFields.concat(' managers');
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ async function castTaskSpell (res, req, targetId, user, spell, quantity = 1) {
|
|||
_id: targetId,
|
||||
userId: user._id,
|
||||
}).exec();
|
||||
if (!task) throw new NotFound(res.t('taskNotFound'));
|
||||
if (!task) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
if (task.challenge.id) throw new BadRequest(res.t('challengeTasksNoCast'));
|
||||
if (task.group.id) throw new BadRequest(res.t('groupTasksNoCast'));
|
||||
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ async function getChallengeFromTask (task) {
|
|||
|
||||
function verifyTaskModification (task, user, group, challenge, res) {
|
||||
if (!task) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
} else if (task.group.id && !task.userId) {
|
||||
if (!group) throw new NotFound(res.t('groupNotFound'));
|
||||
if (canNotEditTasks(group, user)) throw new NotAuthorized(res.t('onlyGroupLeaderCanEditTasks'));
|
||||
|
|
@ -274,7 +274,7 @@ function verifyTaskModification (task, user, group, challenge, res) {
|
|||
|
||||
// If the task is owned by a user make it's the current one
|
||||
} else if (task.userId !== user._id) {
|
||||
throw new NotFound(res.t('taskNotFound'));
|
||||
throw new NotFound(res.t('messageTaskNotFound'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -474,7 +474,7 @@ export async function scoreTasks (user, taskScorings, req, res) {
|
|||
}
|
||||
});
|
||||
|
||||
if (Object.keys(tasks).length === 0) throw new NotFound(res.t('taskNotFound'));
|
||||
if (Object.keys(tasks).length === 0) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
|
||||
// Score each task separately to make sure changes to user._tmp don't overlap.
|
||||
// scoreTask is an async function but the only async operation happens when a group task
|
||||
|
|
|
|||
Loading…
Reference in a new issue