diff --git a/Dockerfile b/Dockerfile index 83ee8aab..482ec279 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,31 +3,39 @@ # ------------------- FROM node:alpine AS appbuild -RUN apk add --update --no-cache p7zip +RUN apk add --update --no-cache \ + p7zip \ + python2 \ + build-base \ + curl \ + php7 \ + php7-json \ + php7-phar \ + php7-iconv \ + php7-openssl \ + php7-dom \ + php7-mbstring \ + php7-xml \ + php7-xmlwriter \ + php7-ctype \ + php7-tokenizer + +# Install Composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer WORKDIR /usr/src/app COPY ./package.json ./ -RUN npm install COPY . ./ -RUN npm run build:prod -# RUN npm run build - - -# ------------------------ -# Build Stage 2 (composer) -# ------------------------ -FROM composer AS apibuild - -WORKDIR /app -COPY ./src/api ./ -RUN composer install +RUN npm install +# RUN npm run build:prod +RUN npm run build # -------------------------- -# Build Stage 3 (php-apache) +# Build Stage 2 (php-apache) # This build takes the production build from staging builds # -------------------------- FROM php:7.3-apache @@ -43,7 +51,9 @@ RUN a2enmod rewrite expires WORKDIR $PROJECT COPY --from=appbuild /usr/src/app/dist ./ -RUN rm -rf ./api/* -COPY --from=apibuild /app ./api/ -RUN chmod 777 ./api +RUN mkdir ./api/db && chown 33:33 ./api && chown 33:33 ./api/db && \ + mkdir ./api/logs && chown 33:33 ./api/logs + EXPOSE 80 + +VOLUME $PROJECT/api/db diff --git a/docker-compose.yml b/docker-compose.yml index cca2b66a..3a13d834 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,3 +7,8 @@ services: context: . ports: - "8081:80" + volumes: + - database:/var/www/html/api/db + +volumes: + database: diff --git a/src/api/index.php b/src/api/index.php index 51d888e2..17a16dc5 100644 --- a/src/api/index.php +++ b/src/api/index.php @@ -11,7 +11,7 @@ require './vendor/autoload.php'; -R::setup('sqlite:taskboard.sqlite'); +R::setup('sqlite:db/taskboard.sqlite'); $container = new DI\Container(); AppFactory::setContainer($container); diff --git a/src/app/settings/user-settings/user-settings.component.html b/src/app/settings/user-settings/user-settings.component.html index a076a0a0..31d665ad 100644 --- a/src/app/settings/user-settings/user-settings.component.html +++ b/src/app/settings/user-settings/user-settings.component.html @@ -40,6 +40,7 @@

{{ strings['settings_globalOptions'] }}

+   Add Yours? diff --git a/src/json/ru.json b/src/json/ru.json new file mode 100644 index 00000000..cf958365 --- /dev/null +++ b/src/json/ru.json @@ -0,0 +1,235 @@ +{ + "reset": "Сброс", + "none": "Отсутствует", + "yes": "Да", + "no": "Нет", + "save": "Сохранить", + "cancel": "Отмена", + "sortBy": "Сортировать по", + "loading": "Загрузка", + + "dashboard": "Панель", + "boards": "Доски", + "files": "Обзор файлов", + "attachment": "Вложение", + "settings": "Настройки", + "logout": "Выход", + + "settings_userSettings": "Мои настройки", + "settings_changePassword": "Сменить пароль", + "settings_currentPassword": "Текущий пароль", + "settings_newPassword": "Новый пароль", + "settings_verifyPassword": "Повторите пароль", + "settings_changeUsername": "Сменить логин", + "settings_newUsername": "Новый логин", + "settings_changeEmail": "Сменить EMail", + "settings_newEmail": "Новый Email", + "settings_blank": "Очистить для отмены", + "settings_globalOptions": "Глобальные опции", + "settings_displayLanguage": "Язык интерфейса", + "settings_selectDefaultBoard": "Доска по-умолчанию", + "settings_newTasks": "Новые задачи появляются в колонке", + "settings_bottom": "снизу", + "settings_top": "сверху", + "settings_optionsDisplay": "Отображать задачи одна-к-одной в колонках?", + "settings_optionsAnimate": "Отображать анимации?", + "settings_optionsAssignee": "Отображать исполнителя в карточке задачи?", + + "settings_userAdmin": "Управление пользователями", + "settings_user": "Пользователь", + "settings_email": "Email", + "settings_securityLevel": "Уровень доступа", + "settings_defaultBoard": "Доска по-умолчанию", + "settings_actions": "Действия", + "settings_edit": "Редактировать", + "settings_removeUser": "Удалить пользователя", + "settings_addUser": "Добавить пользователя", + "settings_editUser": "Редактировать пользователя", + "settings_saveUser": "Сохранить пользователя", + "settings_confirmUserRemoval": "Подтвердите удаление пользователя", + "settings_removeUserWarning": "Удаление пользователя не может быть отменено.", + "settings_continue": "Продолжить?", + "settings_username": "Логин", + "settings_password": "Пароль", + "settings_emailPlaceholder": "Новый Email - очистить, чтобы отключить", + "settings_defaultBoardHelp": "Выбор доски по-умолчанию добавляет пользователя на эту доску.", + "settings_boardAccess": "Доступ к доске", + "settings_boardAdmin": "Управление доской", + "settings_admin": "Администратор", + "settings_usernameRequired": "Логин обязателен.", + "settings_passwordRequired": "Пароль обязателен.", + "settings_verifyError": "Пароли не совпадают.", + "settings_emailError": "Неверный EMail.", + + "settings_boardAdministration": "Управление досками", + "settings_currentBoards": "Текущие доски", + "settings_showByUser": "Отображать по пользователям", + "settings_filterBy": "Сортировать по", + "settings_allBoards": "Все доски", + "settings_active": "Активные", + "settings_inactive": "Неактивные", + "settings_anyUser": "Любой пользователь", + "settings_creationNew": "Создание (сначала новые)", + "settings_creationOld": "Создание (сначала старые)", + "settings_name": "Название", + "settings_columns": "Колонки", + "settings_categories": "Категории", + "settings_users": "Пользователи", + "settings_editBoard": "Изменить доску", + "settings_addBoard": "Добавить доску", + "settings_removeBoard": "Удалить доску", + "settings_confirmBoardRemoval": "Подтвердите удаление доски", + "settings_removeBoardWarning": "Удаление доски не может быть отменено.", + "settings_boardName": "Название доски", + "settings_removeColumn": "Удалить колонку", + "settings_columnName": "Название колонки", + "settings_addColumn": "Добавить колонку", + "settings_removeCategory": "Удалить категорию", + "settings_categoryName": "Название категории", + "settings_defaultTaskColor": "Цвет задач по-умолчанию", + "settings_addCategory": "Добавить категорию", + "settings_issueTrackers": "Системы отслеживания ошибок", + "settings_issueTrackersHelp": "Образец URL: https://github.com/kiswa/TaskBoard/issues/%BUGID% Образец RegExp: (?:Issue)?#(\\d+)", + "settings_issueTrakcerUrl": "URL системы отслеживания ошибок - используйте %BUGID% как заменитель", + "settings_issueTrackerRegExp": "BUGID RegExp", + "settings_addIssueTracker": "Добавить систему отслеживания ошибок", + "settings_selectUsers": "Выбор пользователей", + "settings_boardAdminMessage": "Добавление администратора доски дает ему право управления доской.", + "settings_adminAccessMessage": "Администраторы системы имеют доступ ко всем доскам и здесь не перечислены.", + "settings_saveBoard": "Сохранить доску", + "settings_noBoards": "Вы не присоединены ни к одной доске. Свяжитесь с администратором, чтобы вас добавили.", + "settings_noBoardsAdmin": "Нет текущих досок. Нажмите кнопку Добавить доску ниже, чтобы добавить.", + "settings_boardNameError": "Название доски обязательно.", + "settings_columnError": "Должна быть хоть одна колонка.", + + "settings_automaticActions": "Автоматические действия", + "settings_currentAction": "Текущие действия", + "settings_board": "Доска", + "settings_trigger": "Триггер", + "settings_action": "Действие", + "settings_remove": "Удалить", + "settings_inactiveBoardMessage": "Неактивная доска.", + "settings_removeAutoAction": "Удалить автоматическое действие", + "settings_triggerMoveToColumn": "Задача перемещается в колонку:", + "settings_triggerAssignedToUser": "Задача назначается пользователю:", + "settings_triggerAddedToCategory": "Задача добавляется в категорию:", + "settings_triggerPointsChanged": "Поинты задачи меняются.", + "settings_actionSetColor": "Установить цвет задачи:", + "settings_actionSetCategory": "Установить категорию задачи:", + "settings_actionAddCategory": "Добавить категорию к задаче:", + "settings_actionSetAssignee": "Установить исполнителя задачи:", + "settings_actionAddAssignee": "Добавить исполнителя к задаче:", + "settings_actionClearDueDate": "Очистить срок выполнения задачи.", + "settings_actionAlterColor": "Изменять цвет задачи от поинтов.", + "settings_addAction": "Добавить действие", + "settings_selectBoard": "Выбор доски", + "settings_selectTrigger": "Выбор триггера", + "settings_selectAction": "Выбор действия", + "settings_selectColumn": "Выбор колонки", + "settings_selectUser": "Выбор пользователя", + "settings_selectCategory": "Выбор категории", + "settings_selectAssignee": "Выбор исполнителя", + "settings_alterByPoints": "Изменить цвет от поинтов", + "settings_noActions": "Не найдены автоматические действия. Обратитесь к администратору, чтобы создать.", + "settings_noActionsAdmin": "Не найдены автоматические действия. Используйте форму Добавить действие ниже, чтобы добавить.", + + "boards_selectBoard": "Выбор доски", + "boards_selectColumn": "Выбор колонки", + "boards_hideFiltered": "Скрыть отфильтрованное", + "boards_userFilter": "Фильтр по пользователю", + "boards_categoryFilter": "Фильтр по категории", + "boards_noBoards": "Нет досок", + "boards_noBoardsMessageUser": "Вы не присоединены ни к одной доске. Свяжитесь с администратором, чтобы вас добавили.", + "boards_noBoardsMessageAdmin": "Добавьте доску в настройках.", + "boards_noDefault": "Нет доски по-умолчанию", + "boards_noDefaultMessage": "Вы не выбрали доску по-умолчанию. Вы можете выбрать её в настройках профиля", + "boards_noDefaultMessage2": "или выберете доску из списка выше.", + + "boards_collapseAllTasks": "Свернуть все задачи", + "boards_expandAllTasks": "Раскрыть все задачи", + "boards_tasksInColumn": "Задачи в колонке", + "boards_expandColumn": "Раскрыть колонку", + "boards_collapseColumn": "Свернуть колонку", + "boards_editTaskLimit": "Редактировать лимит задач", + "boards_noLimit": "без ограничений", + "boards_limitCancel": "Отменить изменения", + "boards_limitSave": "Сохранить изменения", + "boards_quickAdd": "Быстрое добавление задачи - только название", + "boards_confirmRemoveTask": "Подтвердите удаление задачи", + "boards_confirmWarning": "Удаление задачи не может быть отменено.", + "boards_confirmContinue": "Продолжить?", + "boards_confirmRemoveAttachment": "Подтвердите удаление вложения", + "boards_confirmWarningAttachment": "Удаление вложения не может быть отменено.", + "boards_confirmRemoveComment": "Подтвердите удаление комментария", + "boards_confirmWarningComment": "Удаление комментария не может быть отменено.", + + "boards_addTask": "Добавить задачу", + "boards_editTask": "Изменить задачу", + "boards_viewTask": "Просмотр задачи", + "boards_removeTask": "Удаление задачи", + "boards_moveTask": "Переместить в колонку", + + "boards_taskTitle": "Название", + "boards_taskTitlePlaceholder": "Название задачи", + "boards_taskDescription": "Описание", + "boards_taskDescriptionPlaceholder": "Что надо сделать?", + "boards_taskAssignees": "Исполнители", + "boards_taskActivity": "Активность", + "boards_taskCategories": "Категории", + "boards_taskColumn": "Колонка", + "boards_taskColor": "Цвет", + "boards_taskDateDue": "Срок выполнения", + "boards_taskPoints": "Поинты", + "boards_saveTask": "Сохранить задачу", + + "boards_copyTaskTo": "Копировать на доску", + "boards_moveTaskTo": "Переместить на доску", + "boards_copyMoveHelp": "Задача будет помещена в первой колонке выбранной доски.", + "boards_expandTask": "Раскрыть задачу", + "boards_collapseTask": "Свернуть задачу", + "boards_taskAssignedTo": "Назначена для исполнения", + "boards_taskUnassigned": "Не назначена", + "boards_taskDue": "Срок", + "boards_taskCategory": "Категория", + "boards_taskCurrentColumn": "Текущая колонка", + + "boards_taskComments": "Комментарии", + "boards_taskAddComment": "Добавить комментарий", + "boards_taskEditComment": "Изменить комментарий", + "boards_taskRemoveComment": "Удалить комментарий", + "boards_postedBy": "Опубликовано", + "boards_editedBy": "Отредактировано", + + "boards_taskAttachments": "Вложения", + "boards_taskAddAttachment": "Добавить вложение", + "boards_taskEditAttachment": "Изменить вложение", + "boards_taskRemoveAttachment": "Удалить вложение", + "boards_taskNoFileError": "Выбор файла для загрузки.", + "boards_taskUpload": "Загрузить", + "boards_taskUploadedBy": "Загружено", + "boards_taskUploadedOn": "в", + "boards_taskView": "Просмотр", + "boards_taskDownload": "Скачать", + + "boards_task": "Задача", + "boards_taskComplete": "Завершена", + "boards_taskCopied": "скопирована на доску", + "boards_taskMoved": "перемещена на доску", + + "boards_filterByAny": "Любой", + "boards_filterByUnassigned": "Не назначена", + "boards_filterByUncategorized": "Без категории", + + "boards_sortByPosition": "Позиция", + "boards_sortByDueDate": "Срок выполнения", + "boards_sortByLastModified": "Последнее изменение", + "boards_sortByPoints": "Поинты", + + "dashboard_boardsAndTasks": "Доски и задачи", + "dashboard_myBoards": "Мои доски", + "dashboard_myTasks": "Мои задачи", + "dashboard_tasksInCategory": "Задачи в категории", + "dashboard_details": "Подробности", + "dashboard_analytics": "Аналитика" +} + diff --git a/src/json/ru_api.json b/src/json/ru_api.json new file mode 100644 index 00000000..27e1b07d --- /dev/null +++ b/src/json/ru_api.json @@ -0,0 +1,83 @@ +{ + "api_accessRestricted": "Доступ ограничен.", + "api_badLogin": "Неверный логин или пароль.", + "api_firstLoginWarn": "Это ваш первый вход, поменяйте свой пароль в настройках.", + "api_firstLogin": "Зайдите в настройки, чтобы создать свою первую доску.", + "api_invalidToken": "Неверный ключ доступа.", + "api_loggedOut": "Вы вышли из системы.", + "api_noAttachmentId": "Не найдено вложение ID ", + "api_noAttachmentHash": "Не найдено вложение по хэшу ", + "api_attachmentFailed": "Ошибка добавления вложения. Попробуйте еще раз.", + "api_attachmentSucceed": "Вложение добавлено.", + "api_uploadFailed": "Ошибка загрузки вложения. Попробуйте еще раз.", + "api_attachmentPermission": "Не хватает прав для удаления вложения.", + "api_attachmentNoRemove": "Ошибка удаления вложения. Не найдено вложение ID ", + "api_attachmentRemoved": "Вложение удалено ", + "api_noActions": "Нет автоматических действий в базе данных.", + "api_actionError": "Ошибка добавления действия. Проверьте настройки и попробуйте еще раз.", + "api_actionAdded": "Автоматическое действие добавлено.", + "api_actionRemoveError": "Ошибка удаления действия. Не найдено действие ID ", + "api_actionRemoved": "Автоматическое действие удалено.", + "api_noBoards": "Нет досок в базе данных.", + "api_noBoardId": "Не найдена доска ID ", + "api_boardError": "Ошибка добавления доски. Проверьте настройки и попробуйте еще раз.", + "api_boardAdded": "Доска добавлена ", + "api_boardUpdateError": "Ошибка изменения доски. Проверьте настройки и попробуйте еще раз.", + "api_boardUpdated": "Доска изменена ", + "api_boardRemoveError": "Ошибка удаления доски. Не найдена доска ID ", + "api_boardRemoved": "Доска удалена ", + "api_noColumnId": "Не найдена колонка ID ", + "api_columnError": "Ошибка добавления колонки. Попробуйте еще раз.", + "api_columnAdded": "Колонка добавлена ", + "api_columnUpdateError": "Ошибка изменения колонки. Попробуйте еще раз.", + "api_columnUpdated": "Колонка изменена ", + "api_columnRemoveError": "Ошибка удаления колонки. Не найдена колонка ID ", + "api_columnRemoved": "Колонка удалена ", + "api_noCommentId": "Не найден комментарий ID ", + "api_commentError": "Ошибка добавления комментария. Попробуйте еще раз.", + "api_commentAdded": "Комментарий добавлен.", + "api_commentUpdateError": "Ошибка изменения комментария. Попробуйте еще раз.", + "api_commentUpdated": "Комментарий изменен.", + "api_commentRemoveError": "Ошибка удаления комментария. Не найден комментарий ID ", + "api_commentRemoved": "Комментарий удален.", + "api_noTaskId": "Не найдена задача ID ", + "api_taskError": "Ошибка добавления задачи. Проверьте настройки и попробуйте еще раз.", + "api_taskAdded": "Задача добавлена ", + "api_taskUpdateError": "Ошибка изменения задачи. Попробуйте еще раз.", + "api_taskUpdated": " Задача изменена ", + "api_taskRemoveError": "Ошибка удаления задачи. Не найдена задача ID ", + "api_taskRemoved": "Задача удалена ", + "api_taskAutoColor": "Цвет задачи изменен автоматическим действием.", + "api_taskAutoCategory": "Категории задачи изменены автоматическим действием.", + "api_taskAutoAssignee": "Исполнители задачи изменены автоматическим действием.", + "api_taskAutoDate": "Срок задачи изменен автоматическим действием.", + "api_noUserId": "Не найден пользователь ID ", + "api_userError": "Ошибка добавления пользователя. Проверьте настройки и попробуйте еще раз.", + "api_userAdded": "Пользователь добавлен ", + "api_userUpdateError": "Ошибка изменения пользователя. Проверьте настройки и попробуйте еще раз.", + "api_userUpdated": "Пользователь изменен ", + "api_userOptError": "Ошибка изменения настроек пользователя. Проверьте настройки и попробуйте еще раз.", + "api_userOptUpdated": "Настройки пользователя изменены.", + "api_userRemoveError": "Ошибка удаления пользователя. Не найден пользователь ID ", + "api_userRemoved": "Пользователь удален ", + "api_usernameExists": "Пользователь существует. Измените логин и попробуйте еще раз.", + "api_userBadPword": "Ошибка изменения пользователя. Неверный пароль.", + + "mail_sent": "Email отправлен.", + "mail_error": "Ошибка отправки Email.", + "mail_subject": "Оповещение TaskBoard", + + "mail_template_openBoardLink": "

Открыть TaskBoard", + + "mail_template_newBoard": "%username% добавил доску %boardName%.", + "mail_template_newComment": "%username% добавил комментарий на доске %boardName%.
Задача: %taskName%
Комментарий: %comment%", + "mail_template_newTask": "%username% добавил задачу на доске %boardName%.
Задача: %taskName%
Описание: %taskDescription%
Срок: %taskDueDate%
Исполнители: %taskAssignees%
Категории: %taskCategories%
Поинты: %taskPoints%
Колонка: %taskColumnName%
Позиция: %taskPosition%", + + "mail_template_editBoard": "%username% изменил доску %boardName%.", + "mail_template_editComment": "%username% изменил комментарий на доске %boardName%.
Задача: %taskName%
Комментарий: %comment%", + "mail_template_editTask": "%username% изменил задачу на доске %boardName%.
Задача: %taskName%
Описание: %taskDescription%
Срок: %taskDueDate%
Исполнители: %taskAssignees%
Категории: %taskCategories%
Поинты: %taskPoints%
Column: %taskColumnName%
Позиция: %taskPosition%", + + "mail_template_removeBoard": "%username% удалил доску %boardName%.", + "mail_template_removeComment": "%username% удалил комментарий на доске %boardName%.
Задача: %taskName%", + "mail_template_removeTask": "%username% удалил задачу на доске %boardName%
Задача: %taskName%" +}