mirror of
https://github.com/plankanban/planka.git
synced 2025-07-22 06:39:44 +02:00
parent
d386c82973
commit
2d7812a679
18 changed files with 219 additions and 301 deletions
|
@ -1,4 +1,5 @@
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
import { transformUser } from './users';
|
||||||
|
|
||||||
/* Transformers */
|
/* Transformers */
|
||||||
|
|
||||||
|
@ -13,6 +14,10 @@ const getActivities = (cardId, data, headers) =>
|
||||||
socket.get(`/cards/${cardId}/actions`, data, headers).then((body) => ({
|
socket.get(`/cards/${cardId}/actions`, data, headers).then((body) => ({
|
||||||
...body,
|
...body,
|
||||||
items: body.items.map(transformActivity),
|
items: body.items.map(transformActivity),
|
||||||
|
included: {
|
||||||
|
...body.included,
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/* Event handlers */
|
/* Event handlers */
|
||||||
|
|
|
@ -1,18 +1,50 @@
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
|
||||||
|
/* Transformers */
|
||||||
|
|
||||||
|
export const transformBoardMembership = (boardMembership) => ({
|
||||||
|
...boardMembership,
|
||||||
|
createdAt: new Date(boardMembership.createdAt),
|
||||||
|
});
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
|
|
||||||
const createBoardMembership = (boardId, data, headers) =>
|
const createBoardMembership = (boardId, data, headers) =>
|
||||||
socket.post(`/boards/${boardId}/memberships`, data, headers);
|
socket.post(`/boards/${boardId}/memberships`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformBoardMembership(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateBoardMembership = (id, data, headers) =>
|
const updateBoardMembership = (id, data, headers) =>
|
||||||
socket.patch(`/board-memberships/${id}`, data, headers);
|
socket.patch(`/board-memberships/${id}`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformBoardMembership(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const deleteBoardMembership = (id, headers) =>
|
const deleteBoardMembership = (id, headers) =>
|
||||||
socket.delete(`/board-memberships/${id}`, undefined, headers);
|
socket.delete(`/board-memberships/${id}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformBoardMembership(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
|
/* Event handlers */
|
||||||
|
|
||||||
|
const makeHandleBoardMembershipCreate = (next) => (body) => {
|
||||||
|
next({
|
||||||
|
...body,
|
||||||
|
item: transformBoardMembership(body.item),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const makeHandleBoardMembershipUpdate = makeHandleBoardMembershipCreate;
|
||||||
|
|
||||||
|
const makeHandleBoardMembershipDelete = makeHandleBoardMembershipCreate;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
createBoardMembership,
|
createBoardMembership,
|
||||||
updateBoardMembership,
|
updateBoardMembership,
|
||||||
deleteBoardMembership,
|
deleteBoardMembership,
|
||||||
|
makeHandleBoardMembershipCreate,
|
||||||
|
makeHandleBoardMembershipUpdate,
|
||||||
|
makeHandleBoardMembershipDelete,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
import http from './http';
|
import http from './http';
|
||||||
|
import { transformUser } from './users';
|
||||||
|
import { transformBoardMembership } from './board-memberships';
|
||||||
import { transformCard } from './cards';
|
import { transformCard } from './cards';
|
||||||
import { transformAttachment } from './attachments';
|
import { transformAttachment } from './attachments';
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
|
|
||||||
const createBoard = (projectId, data, headers) =>
|
const createBoard = (projectId, data, headers) =>
|
||||||
socket.post(`/projects/${projectId}/boards`, data, headers);
|
socket.post(`/projects/${projectId}/boards`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
included: {
|
||||||
|
...body.included,
|
||||||
|
boardMemberships: body.included.boardMemberships.map(transformBoardMembership),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
const createBoardWithImport = (projectId, data, requestId, headers) =>
|
const createBoardWithImport = (projectId, data, requestId, headers) =>
|
||||||
http.post(`/projects/${projectId}/boards?requestId=${requestId}`, data, headers);
|
http.post(`/projects/${projectId}/boards?requestId=${requestId}`, data, headers);
|
||||||
|
@ -18,6 +26,8 @@ const getBoard = (id, subscribe, headers) =>
|
||||||
...body,
|
...body,
|
||||||
included: {
|
included: {
|
||||||
...body.included,
|
...body.included,
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
|
boardMemberships: body.included.boardMemberships.map(transformBoardMembership),
|
||||||
cards: body.included.cards.map(transformCard),
|
cards: body.included.cards.map(transformCard),
|
||||||
attachments: body.included.attachments.map(transformAttachment),
|
attachments: body.included.attachments.map(transformAttachment),
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import omit from 'lodash/omit';
|
import omit from 'lodash/omit';
|
||||||
|
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
import { transformUser } from './users';
|
||||||
import { transformCard } from './cards';
|
import { transformCard } from './cards';
|
||||||
import { transformActivity } from './activities';
|
import { transformActivity } from './activities';
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ const getNotifications = (headers) =>
|
||||||
items: body.items.map(transformNotification),
|
items: body.items.map(transformNotification),
|
||||||
included: {
|
included: {
|
||||||
...omit(body.included, 'actions'),
|
...omit(body.included, 'actions'),
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
cards: body.included.cards.map(transformCard),
|
cards: body.included.cards.map(transformCard),
|
||||||
activities: body.included.actions.map(transformActivity),
|
activities: body.included.actions.map(transformActivity),
|
||||||
},
|
},
|
||||||
|
@ -30,6 +32,7 @@ const getNotification = (id, headers) =>
|
||||||
item: transformNotification(body.item),
|
item: transformNotification(body.item),
|
||||||
included: {
|
included: {
|
||||||
...omit(body.included, 'actions'),
|
...omit(body.included, 'actions'),
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
cards: body.included.cards.map(transformCard),
|
cards: body.included.cards.map(transformCard),
|
||||||
activities: body.included.actions.map(transformActivity),
|
activities: body.included.actions.map(transformActivity),
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,14 +1,40 @@
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
|
||||||
|
/* Transformers */
|
||||||
|
|
||||||
|
export const transformProjectManager = (projectManager) => ({
|
||||||
|
...projectManager,
|
||||||
|
createdAt: new Date(projectManager.createdAt),
|
||||||
|
});
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
|
|
||||||
const createProjectManager = (projectId, data, headers) =>
|
const createProjectManager = (projectId, data, headers) =>
|
||||||
socket.post(`/projects/${projectId}/managers`, data, headers);
|
socket.post(`/projects/${projectId}/managers`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformProjectManager(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const deleteProjectManager = (id, headers) =>
|
const deleteProjectManager = (id, headers) =>
|
||||||
socket.delete(`/project-managers/${id}`, undefined, headers);
|
socket.delete(`/project-managers/${id}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformProjectManager(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
|
/* Event handlers */
|
||||||
|
|
||||||
|
const makeHandleProjectManagerCreate = (next) => (body) => {
|
||||||
|
next({
|
||||||
|
...body,
|
||||||
|
item: transformProjectManager(body.item),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const makeHandleProjectManagerDelete = makeHandleProjectManagerCreate;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
createProjectManager,
|
createProjectManager,
|
||||||
deleteProjectManager,
|
deleteProjectManager,
|
||||||
|
makeHandleProjectManagerCreate,
|
||||||
|
makeHandleProjectManagerDelete,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,13 +1,41 @@
|
||||||
import http from './http';
|
import http from './http';
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
import { transformUser } from './users';
|
||||||
|
import { transformProjectManager } from './project-managers';
|
||||||
|
import { transformBoardMembership } from './board-memberships';
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
|
|
||||||
const getProjects = (headers) => socket.get('/projects', undefined, headers);
|
const getProjects = (headers) =>
|
||||||
|
socket.get('/projects', undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
included: {
|
||||||
|
...body.included,
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
|
projectManagers: body.included.projectManagers.map(transformProjectManager),
|
||||||
|
boardMemberships: body.included.boardMemberships.map(transformBoardMembership),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
const createProject = (data, headers) => socket.post('/projects', data, headers);
|
const createProject = (data, headers) =>
|
||||||
|
socket.post('/projects', data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
included: {
|
||||||
|
...body.included,
|
||||||
|
projectManagers: body.included.projectManagers.map(transformProjectManager),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
const getProject = (id, headers) => socket.get(`/projects/${id}`, undefined, headers);
|
const getProject = (id, headers) =>
|
||||||
|
socket.get(`/projects/${id}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
included: {
|
||||||
|
...body.included,
|
||||||
|
users: body.included.users.map(transformUser),
|
||||||
|
projectManagers: body.included.projectManagers.map(transformProjectManager),
|
||||||
|
boardMemberships: body.included.boardMemberships.map(transformBoardMembership),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
const updateProject = (id, data, headers) => socket.patch(`/projects/${id}`, data, headers);
|
const updateProject = (id, data, headers) => socket.patch(`/projects/${id}`, data, headers);
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,87 @@
|
||||||
import http from './http';
|
import http from './http';
|
||||||
import socket from './socket';
|
import socket from './socket';
|
||||||
|
|
||||||
|
/* Transformers */
|
||||||
|
|
||||||
|
export const transformUser = (user) => ({
|
||||||
|
...user,
|
||||||
|
createdAt: new Date(user.createdAt),
|
||||||
|
});
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
|
|
||||||
const getUsers = (headers) => socket.get('/users', undefined, headers);
|
const getUsers = (headers) =>
|
||||||
|
socket.get('/users', undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
items: body.items.map(transformUser),
|
||||||
|
}));
|
||||||
|
|
||||||
const createUser = (data, headers) => socket.post('/users', data, headers);
|
const createUser = (data, headers) =>
|
||||||
|
socket.post('/users', data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const getUser = (id, headers) => socket.get(`/users/${id}`, undefined, headers);
|
const getUser = (id, headers) =>
|
||||||
|
socket.get(`/users/${id}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const getCurrentUser = (subscribe, headers) =>
|
const getCurrentUser = (subscribe, headers) =>
|
||||||
socket.get(`/users/me${subscribe ? '?subscribe=true' : ''}`, undefined, headers);
|
socket.get(`/users/me${subscribe ? '?subscribe=true' : ''}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateUser = (id, data, headers) => socket.patch(`/users/${id}`, data, headers);
|
const updateUser = (id, data, headers) =>
|
||||||
|
socket.patch(`/users/${id}`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateUserEmail = (id, data, headers) => socket.patch(`/users/${id}/email`, data, headers);
|
const updateUserEmail = (id, data, headers) =>
|
||||||
|
socket.patch(`/users/${id}/email`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateUserPassword = (id, data, headers) =>
|
const updateUserPassword = (id, data, headers) =>
|
||||||
socket.patch(`/users/${id}/password`, data, headers);
|
socket.patch(`/users/${id}/password`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateUserUsername = (id, data, headers) =>
|
const updateUserUsername = (id, data, headers) =>
|
||||||
socket.patch(`/users/${id}/username`, data, headers);
|
socket.patch(`/users/${id}/username`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const updateUserAvatar = (id, data, headers) => http.post(`/users/${id}/avatar`, data, headers);
|
const updateUserAvatar = (id, data, headers) =>
|
||||||
|
http.post(`/users/${id}/avatar`, data, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
const deleteUser = (id, headers) => socket.delete(`/users/${id}`, undefined, headers);
|
const deleteUser = (id, headers) =>
|
||||||
|
socket.delete(`/users/${id}`, undefined, headers).then((body) => ({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
}));
|
||||||
|
|
||||||
|
/* Event handlers */
|
||||||
|
|
||||||
|
const makeHandleUserCreate = (next) => (body) => {
|
||||||
|
next({
|
||||||
|
...body,
|
||||||
|
item: transformUser(body.item),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const makeHandleUserUpdate = makeHandleUserCreate;
|
||||||
|
|
||||||
|
const makeHandleUserDelete = makeHandleUserCreate;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
getUsers,
|
getUsers,
|
||||||
|
@ -37,4 +94,7 @@ export default {
|
||||||
updateUserUsername,
|
updateUserUsername,
|
||||||
updateUserAvatar,
|
updateUserAvatar,
|
||||||
deleteUser,
|
deleteUser,
|
||||||
|
makeHandleUserCreate,
|
||||||
|
makeHandleUserUpdate,
|
||||||
|
makeHandleUserDelete,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
import fromPairs from 'lodash/fromPairs';
|
|
||||||
|
|
||||||
import cs from './cs/embed';
|
|
||||||
import da from './da/embed';
|
|
||||||
import de from './de/embed';
|
|
||||||
import en from './en/embed';
|
|
||||||
import es from './es/embed';
|
|
||||||
import fr from './fr/embed';
|
|
||||||
import ja from './ja/embed';
|
|
||||||
import pl from './pl/embed';
|
|
||||||
import ru from './ru/embed';
|
|
||||||
import uz from './uz/embed';
|
|
||||||
import zh from './zh/embed';
|
|
||||||
|
|
||||||
const localePairs = [
|
|
||||||
['cs', cs],
|
|
||||||
['da', da],
|
|
||||||
['de', de],
|
|
||||||
['en', en],
|
|
||||||
['es', es],
|
|
||||||
['fr', fr],
|
|
||||||
['ja', ja],
|
|
||||||
['pl', pl],
|
|
||||||
['ru', ru],
|
|
||||||
['uz', uz],
|
|
||||||
['zh', zh],
|
|
||||||
];
|
|
||||||
|
|
||||||
export const languages = localePairs.map((locale) => locale[0]);
|
|
||||||
|
|
||||||
export const embedLocales = fromPairs(localePairs);
|
|
|
@ -1,207 +0,0 @@
|
||||||
export default {
|
|
||||||
format: {
|
|
||||||
date: 'M/d/yyyy',
|
|
||||||
time: 'p',
|
|
||||||
dateTime: '$t(format:date) $t(format:time)',
|
|
||||||
longDate: 'MMM d',
|
|
||||||
longDateTime: "MMMM d 'at' p",
|
|
||||||
},
|
|
||||||
|
|
||||||
translation: {
|
|
||||||
common: {
|
|
||||||
account: '账号',
|
|
||||||
actions: '操作',
|
|
||||||
addAttachment_title: '添加附件',
|
|
||||||
addComment: '添加评论',
|
|
||||||
addManager_title: '添加管理员',
|
|
||||||
addMember_title: '添加成员',
|
|
||||||
addUser_title: '添加用户',
|
|
||||||
administrator: '管理员',
|
|
||||||
all: '全部',
|
|
||||||
allChangesWillBeAutomaticallySavedAfterConnectionRestored: '所有修改会在重连后自动保存',
|
|
||||||
areYouSureYouWantToDeleteThisAttachment: '确认删除此附件吗?',
|
|
||||||
areYouSureYouWantToDeleteThisBoard: '确认删除此面板吗?',
|
|
||||||
areYouSureYouWantToDeleteThisCard: '确认删除此卡片吗?',
|
|
||||||
areYouSureYouWantToDeleteThisComment: '确认删除此评论吗?',
|
|
||||||
areYouSureYouWantToDeleteThisLabel: '确认删除此标签吗?',
|
|
||||||
areYouSureYouWantToDeleteThisList: '确认删除此列表吗?',
|
|
||||||
areYouSureYouWantToDeleteThisProject: '确认删除此项目吗?',
|
|
||||||
areYouSureYouWantToDeleteThisTask: '确认删除此任务吗?',
|
|
||||||
areYouSureYouWantToDeleteThisUser: '确认删除此用户吗?',
|
|
||||||
areYouSureYouWantToLeaveBoard: '确认离开此面板吗?',
|
|
||||||
areYouSureYouWantToLeaveProject: '确认离开此项目吗?',
|
|
||||||
areYouSureYouWantToRemoveThisManagerFromProject: '确认从本项目删除该管理员吗?',
|
|
||||||
areYouSureYouWantToRemoveThisMemberFromBoard: '确认本面板删除该成员吗?',
|
|
||||||
attachment: '附件',
|
|
||||||
attachments: '多个附件',
|
|
||||||
authentication: '认证',
|
|
||||||
background: '背景',
|
|
||||||
board: '面板',
|
|
||||||
boardNotFound_title: '面板不存在',
|
|
||||||
cardActions_title: '卡片操作',
|
|
||||||
cardNotFound_title: '卡片不存在',
|
|
||||||
cardOrActionAreDeleted: '卡片或操作已经被删除',
|
|
||||||
color: '颜色',
|
|
||||||
createBoard_title: '创建面板',
|
|
||||||
createLabel_title: '创建标签',
|
|
||||||
createNewOneOrSelectExistingOne: '创建一个新的或者选择一个已创建的',
|
|
||||||
createProject_title: '创建项目',
|
|
||||||
createTextFile_title: '创建文本文件',
|
|
||||||
currentPassword: '当前密码',
|
|
||||||
dangerZone_title: '危险区域',
|
|
||||||
date: '日期',
|
|
||||||
dueDate_title: '截止日期',
|
|
||||||
deleteAttachment_title: '删除附件',
|
|
||||||
deleteBoard_title: '删除面板',
|
|
||||||
deleteCard_title: '删除擦片',
|
|
||||||
deleteComment_title: '删除评论',
|
|
||||||
deleteLabel_title: '删除标签',
|
|
||||||
deleteList_title: '删除列表',
|
|
||||||
deleteProject_title: '删除项目',
|
|
||||||
deleteTask_title: '删除任务',
|
|
||||||
deleteUser_title: '删除用户',
|
|
||||||
description: '描述',
|
|
||||||
dropFileToUpload: '拖放文件以上传',
|
|
||||||
editAttachment_title: '编辑附件',
|
|
||||||
editAvatar_title: '编辑头像',
|
|
||||||
editBoard_title: '编辑面板',
|
|
||||||
editDueDate_title: '编辑截止时间',
|
|
||||||
editEmail_title: '编辑邮箱',
|
|
||||||
editLabel_title: '编辑标签',
|
|
||||||
editPassword_title: '修改密码',
|
|
||||||
editTimer_title: '修改时间',
|
|
||||||
editUsername_title: '修改用户名',
|
|
||||||
email: '邮箱',
|
|
||||||
emailAlreadyInUse: '邮箱已使用',
|
|
||||||
enterCardTitle: '输入卡片标题...',
|
|
||||||
enterDescription: '输入描述...',
|
|
||||||
enterFilename: '输入文件名',
|
|
||||||
enterListTitle: '输入列表标题...',
|
|
||||||
enterProjectTitle: '输入项目标题',
|
|
||||||
enterTaskDescription: '输入任务描述...',
|
|
||||||
filterByLabels_title: '通过标签筛选',
|
|
||||||
filterByMembers_title: '通过成员筛选',
|
|
||||||
fromComputer_title: '从电脑',
|
|
||||||
general: '全体',
|
|
||||||
hours: '小时',
|
|
||||||
invalidCurrentPassword: '当前密码错误',
|
|
||||||
labels: '标签',
|
|
||||||
leaveBoard_title: '离开面板',
|
|
||||||
leaveProject_title: '离开项目',
|
|
||||||
list: '列表',
|
|
||||||
listActions_title: '列表操作',
|
|
||||||
managers: '管理员',
|
|
||||||
members: '成员',
|
|
||||||
minutes: '分钟',
|
|
||||||
moveCard_title: '移动卡片',
|
|
||||||
name: '姓名',
|
|
||||||
newEmail: '新邮箱',
|
|
||||||
newPassword: '新密码',
|
|
||||||
newUsername: '新用户名',
|
|
||||||
noConnectionToServer: '未连接服务器',
|
|
||||||
noBoards: '没有面板',
|
|
||||||
noLists: '没有列表',
|
|
||||||
noProjects: '没有项目',
|
|
||||||
notifications: '通知',
|
|
||||||
noUnreadNotifications: '没有未读通知',
|
|
||||||
openBoard_title: '打开面板',
|
|
||||||
optional_inline: '可选的',
|
|
||||||
organization: '组织机构',
|
|
||||||
phone: '电话',
|
|
||||||
preferences: '偏好',
|
|
||||||
pressPasteShortcutToAddAttachmentFromClipboard:
|
|
||||||
'提示: 点击 Ctrl-V (Mac: Cmd-V) 从剪切板添加附件.',
|
|
||||||
project: '项目',
|
|
||||||
projectNotFound_title: '项目未找到',
|
|
||||||
removeManager_title: '删除管理员',
|
|
||||||
removeMember_title: '删除成员',
|
|
||||||
seconds: '秒',
|
|
||||||
selectBoard: '选择面板',
|
|
||||||
selectList: '选择列表',
|
|
||||||
selectProject: '选择项目',
|
|
||||||
settings: '设置',
|
|
||||||
subscribeToMyOwnCardsByDefault: '默认关注自己创建的卡片',
|
|
||||||
taskActions_title: '任务操作',
|
|
||||||
tasks: '任务',
|
|
||||||
time: '时间',
|
|
||||||
timer: '计时器',
|
|
||||||
title: '标题',
|
|
||||||
userActions_title: '用户操作',
|
|
||||||
userAddedThisCardToList: '<0>{{user}}</0><1> 向列表 {{list}} 添加了该卡片</1>',
|
|
||||||
userLeftNewCommentToCard: '{{user}} 给 {{card}} 添加了一个新评论 «{{comment}}»',
|
|
||||||
userMovedCardFromListToList:
|
|
||||||
'{{user}} 将卡片 <2>{{card}}</2> 从 {{fromList}} 移动到 {{toList}}',
|
|
||||||
userMovedThisCardFromListToList:
|
|
||||||
'<0>{{user}}</0><1> 将该卡片从 {{fromList}} 移动到 {{toList}}</1>',
|
|
||||||
username: '用户名',
|
|
||||||
usernameAlreadyInUse: '用户名已占用',
|
|
||||||
users: '用户',
|
|
||||||
writeComment: '编写评论...',
|
|
||||||
},
|
|
||||||
|
|
||||||
action: {
|
|
||||||
addAnotherCard: '添加别的卡片',
|
|
||||||
addAnotherList: '添加别的列表',
|
|
||||||
addAnotherTask: '添加别的任务',
|
|
||||||
addCard: '添加卡片',
|
|
||||||
addCard_title: '添加卡片',
|
|
||||||
addComment: '添加评论',
|
|
||||||
addList: '添加列表',
|
|
||||||
addMoreDetailedDescription: '添加更多详细描述',
|
|
||||||
addTask: '添加任务',
|
|
||||||
addToCard: '添加擦篇',
|
|
||||||
addUser: '添加用户',
|
|
||||||
createBoard: '创建面板',
|
|
||||||
createFile: '创建文件',
|
|
||||||
createLabel: '创建标签',
|
|
||||||
createNewLabel: '创建新标签',
|
|
||||||
createProject: '创建项目',
|
|
||||||
delete: '删除',
|
|
||||||
deleteAttachment: '删除附件',
|
|
||||||
deleteAvatar: '删除头像',
|
|
||||||
deleteBoard: '删除面板',
|
|
||||||
deleteCard: '删除卡片',
|
|
||||||
deleteCard_title: '删除卡片',
|
|
||||||
deleteComment: '删除评论',
|
|
||||||
deleteImage: '删除图片',
|
|
||||||
deleteLabel: '删除标签',
|
|
||||||
deleteList: '删除列表',
|
|
||||||
deleteList_title: '删除列表',
|
|
||||||
deleteProject: '删除项目',
|
|
||||||
deleteProject_title: '删除项目',
|
|
||||||
deleteTask: '删除任务',
|
|
||||||
deleteTask_title: '删除任务',
|
|
||||||
deleteUser: '删除用户',
|
|
||||||
edit: '编辑',
|
|
||||||
editDueDate_title: '编辑到期时间',
|
|
||||||
editDescription_title: '编辑描述',
|
|
||||||
editEmail_title: '编辑邮箱',
|
|
||||||
editPassword_title: '编辑密码',
|
|
||||||
editTimer_title: '编辑实践',
|
|
||||||
editTitle_title: '编辑标题',
|
|
||||||
editUsername_title: '编辑用户名',
|
|
||||||
leaveBoard: '离开面板',
|
|
||||||
leaveProject: '离开项目',
|
|
||||||
logOut_title: '退出',
|
|
||||||
makeCover_title: '设置标题',
|
|
||||||
move: '移动',
|
|
||||||
moveCard_title: '移动卡片',
|
|
||||||
remove: '删除',
|
|
||||||
removeBackground: '删除背景',
|
|
||||||
removeCover_title: '删除封面',
|
|
||||||
removeFromBoard: '从面板中删除',
|
|
||||||
removeFromProject: '从项目中删除',
|
|
||||||
removeManager: '删除管理者',
|
|
||||||
removeMember: '删除成员',
|
|
||||||
save: '保存',
|
|
||||||
showAllAttachments: '显示所有的附件 ({{hidden}} 隐藏)',
|
|
||||||
showFewerAttachments: '显示较少的附件',
|
|
||||||
start: '开始',
|
|
||||||
stop: '结束',
|
|
||||||
subscribe: '关注',
|
|
||||||
unsubscribe: '取消关注',
|
|
||||||
uploadNewAvatar: '上传新头像',
|
|
||||||
uploadNewImage: '上传图片',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
|
@ -1,20 +0,0 @@
|
||||||
export default {
|
|
||||||
translation: {
|
|
||||||
common: {
|
|
||||||
emailOrUsername: '邮箱或用户名',
|
|
||||||
invalidEmailOrUsername: '错误的邮箱或用户名',
|
|
||||||
invalidPassword: '密码错误',
|
|
||||||
logInToPlanka: '登录至 Planka',
|
|
||||||
noInternetConnection: '没有网络连接',
|
|
||||||
pageNotFound_title: '页面找不到',
|
|
||||||
password: '密码',
|
|
||||||
projectManagement: '项目管理',
|
|
||||||
serverConnectionFailed: '服务连接失败',
|
|
||||||
unknownError: '未知错误,请稍后重试',
|
|
||||||
},
|
|
||||||
|
|
||||||
action: {
|
|
||||||
logIn: '登录',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
|
@ -12,6 +12,9 @@ export default class extends BaseModel {
|
||||||
coverUrl: attr(),
|
coverUrl: attr(),
|
||||||
image: attr(),
|
image: attr(),
|
||||||
name: attr(),
|
name: attr(),
|
||||||
|
createdAt: attr({
|
||||||
|
getDefault: () => new Date(),
|
||||||
|
}),
|
||||||
cardId: fk({
|
cardId: fk({
|
||||||
to: 'Card',
|
to: 'Card',
|
||||||
as: 'card',
|
as: 'card',
|
||||||
|
|
|
@ -172,7 +172,7 @@ export default class extends BaseModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedMembershipsQuerySet() {
|
getOrderedMembershipsQuerySet() {
|
||||||
return this.memberships.orderBy('id');
|
return this.memberships.orderBy('createdAt');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedLabelsQuerySet() {
|
getOrderedLabelsQuerySet() {
|
||||||
|
|
|
@ -10,6 +10,9 @@ export default class extends BaseModel {
|
||||||
id: attr(),
|
id: attr(),
|
||||||
role: attr(),
|
role: attr(),
|
||||||
canComment: attr(),
|
canComment: attr(),
|
||||||
|
createdAt: attr({
|
||||||
|
getDefault: () => new Date(),
|
||||||
|
}),
|
||||||
boardId: fk({
|
boardId: fk({
|
||||||
to: 'Board',
|
to: 'Board',
|
||||||
as: 'board',
|
as: 'board',
|
||||||
|
|
|
@ -244,7 +244,7 @@ export default class extends BaseModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedAttachmentsQuerySet() {
|
getOrderedAttachmentsQuerySet() {
|
||||||
return this.attachments.orderBy('id', false);
|
return this.attachments.orderBy('createdAt', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
getFilteredOrderedInCardActivitiesQuerySet() {
|
getFilteredOrderedInCardActivitiesQuerySet() {
|
||||||
|
@ -256,7 +256,7 @@ export default class extends BaseModel {
|
||||||
filter.type = ActivityTypes.COMMENT_CARD;
|
filter.type = ActivityTypes.COMMENT_CARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.activities.filter(filter).orderBy('id', false);
|
return this.activities.filter(filter).orderBy('createdAt', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
getUnreadNotificationsQuerySet() {
|
getUnreadNotificationsQuerySet() {
|
||||||
|
|
|
@ -137,7 +137,7 @@ export default class extends BaseModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedManagersQuerySet() {
|
getOrderedManagersQuerySet() {
|
||||||
return this.managers.orderBy('id');
|
return this.managers.orderBy('createdAt');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedBoardsQuerySet() {
|
getOrderedBoardsQuerySet() {
|
||||||
|
|
|
@ -8,6 +8,9 @@ export default class extends BaseModel {
|
||||||
|
|
||||||
static fields = {
|
static fields = {
|
||||||
id: attr(),
|
id: attr(),
|
||||||
|
createdAt: attr({
|
||||||
|
getDefault: () => new Date(),
|
||||||
|
}),
|
||||||
projectId: fk({
|
projectId: fk({
|
||||||
to: 'Project',
|
to: 'Project',
|
||||||
as: 'project',
|
as: 'project',
|
||||||
|
|
|
@ -43,6 +43,9 @@ export default class extends BaseModel {
|
||||||
organization: attr(),
|
organization: attr(),
|
||||||
language: attr(),
|
language: attr(),
|
||||||
subscribeToOwnCards: attr(),
|
subscribeToOwnCards: attr(),
|
||||||
|
createdAt: attr({
|
||||||
|
getDefault: () => new Date(),
|
||||||
|
}),
|
||||||
deletedAt: attr(),
|
deletedAt: attr(),
|
||||||
isAdmin: attr({
|
isAdmin: attr({
|
||||||
getDefault: () => false,
|
getDefault: () => false,
|
||||||
|
@ -293,15 +296,15 @@ export default class extends BaseModel {
|
||||||
static getOrderedUndeletedQuerySet() {
|
static getOrderedUndeletedQuerySet() {
|
||||||
return this.filter({
|
return this.filter({
|
||||||
deletedAt: null,
|
deletedAt: null,
|
||||||
}).orderBy('id');
|
}).orderBy('createdAt');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedProjectManagersQuerySet() {
|
getOrderedProjectManagersQuerySet() {
|
||||||
return this.projectManagers.orderBy('id');
|
return this.projectManagers.orderBy('createdAt');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedBoardMembershipsQuerySet() {
|
getOrderedBoardMembershipsQuerySet() {
|
||||||
return this.boardMemberships.orderBy('id');
|
return this.boardMemberships.orderBy('createdAt');
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedUnreadNotificationsQuerySet() {
|
getOrderedUnreadNotificationsQuerySet() {
|
||||||
|
@ -309,7 +312,7 @@ export default class extends BaseModel {
|
||||||
.filter({
|
.filter({
|
||||||
isRead: false,
|
isRead: false,
|
||||||
})
|
})
|
||||||
.orderBy('id', false);
|
.orderBy('createdAt', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrderedAvailableProjectsModelArray() {
|
getOrderedAvailableProjectsModelArray() {
|
||||||
|
|
|
@ -16,17 +16,17 @@ const createSocketEventsChannel = () =>
|
||||||
emit(entryActions.handleSocketReconnect());
|
emit(entryActions.handleSocketReconnect());
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleUserCreate = ({ item }) => {
|
const handleUserCreate = api.makeHandleUserCreate(({ item }) => {
|
||||||
emit(entryActions.handleUserCreate(item));
|
emit(entryActions.handleUserCreate(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleUserUpdate = ({ item }) => {
|
const handleUserUpdate = api.makeHandleUserUpdate(({ item }) => {
|
||||||
emit(entryActions.handleUserUpdate(item));
|
emit(entryActions.handleUserUpdate(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleUserDelete = ({ item }) => {
|
const handleUserDelete = api.makeHandleUserDelete(({ item }) => {
|
||||||
emit(entryActions.handleUserDelete(item));
|
emit(entryActions.handleUserDelete(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleProjectCreate = ({ item }) => {
|
const handleProjectCreate = ({ item }) => {
|
||||||
emit(entryActions.handleProjectCreate(item));
|
emit(entryActions.handleProjectCreate(item));
|
||||||
|
@ -40,13 +40,13 @@ const createSocketEventsChannel = () =>
|
||||||
emit(entryActions.handleProjectDelete(item));
|
emit(entryActions.handleProjectDelete(item));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleProjectManagerCreate = ({ item }) => {
|
const handleProjectManagerCreate = api.makeHandleProjectManagerCreate(({ item }) => {
|
||||||
emit(entryActions.handleProjectManagerCreate(item));
|
emit(entryActions.handleProjectManagerCreate(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleProjectManagerDelete = ({ item }) => {
|
const handleProjectManagerDelete = api.makeHandleProjectManagerDelete(({ item }) => {
|
||||||
emit(entryActions.handleProjectManagerDelete(item));
|
emit(entryActions.handleProjectManagerDelete(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleBoardCreate = ({ item, requestId }) => {
|
const handleBoardCreate = ({ item, requestId }) => {
|
||||||
emit(entryActions.handleBoardCreate(item, requestId));
|
emit(entryActions.handleBoardCreate(item, requestId));
|
||||||
|
@ -60,17 +60,17 @@ const createSocketEventsChannel = () =>
|
||||||
emit(entryActions.handleBoardDelete(item));
|
emit(entryActions.handleBoardDelete(item));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleBoardMembershipCreate = ({ item }) => {
|
const handleBoardMembershipCreate = api.makeHandleBoardMembershipCreate(({ item }) => {
|
||||||
emit(entryActions.handleBoardMembershipCreate(item));
|
emit(entryActions.handleBoardMembershipCreate(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleBoardMembershipUpdate = ({ item }) => {
|
const handleBoardMembershipUpdate = api.makeHandleBoardMembershipUpdate(({ item }) => {
|
||||||
emit(entryActions.handleBoardMembershipUpdate(item));
|
emit(entryActions.handleBoardMembershipUpdate(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleBoardMembershipDelete = ({ item }) => {
|
const handleBoardMembershipDelete = api.makeHandleBoardMembershipDelete(({ item }) => {
|
||||||
emit(entryActions.handleBoardMembershipDelete(item));
|
emit(entryActions.handleBoardMembershipDelete(item));
|
||||||
};
|
});
|
||||||
|
|
||||||
const handleListCreate = ({ item }) => {
|
const handleListCreate = ({ item }) => {
|
||||||
emit(entryActions.handleListCreate(item));
|
emit(entryActions.handleListCreate(item));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue