diff options
-rw-r--r-- | History.md | 10 | ||||
-rw-r--r-- | README.md | 39 | ||||
-rw-r--r-- | app.json | 19 | ||||
-rw-r--r-- | client/components/boards/boardBody.js | 8 | ||||
-rw-r--r-- | client/components/cards/cardDetails.js | 3 | ||||
-rw-r--r-- | client/components/sidebar/sidebar.jade | 2 | ||||
-rw-r--r-- | client/config/router.js | 4 | ||||
-rw-r--r-- | i18n/fr.i18n.json | 6 | ||||
-rw-r--r-- | i18n/pt-BR.i18n.json | 68 | ||||
-rw-r--r-- | meta/icons/wekan-150.png | bin | 0 -> 4323 bytes | |||
-rw-r--r-- | sandstorm-pkgdef.capnp | 2 |
11 files changed, 100 insertions, 61 deletions
@@ -13,15 +13,15 @@ security. It also features the following improvements: by Sandstorm); * Cards multi-selection to facilitate batch actions such as moving all the cards of selection, or attaching a label or a member to them; +* Automatic drafts saving synced with the server; * Keyboard navigation, press `?` to read the list of available shortcuts; * The possibility to restore archived boards, lists, and cards. Starting from this release we will also distribute official docker images on -both the -[GitHub release page](https://github.com/wekan/wekan/releases) -and on the -[DockerHub](https://hub.docker.com/r/mquandalle/wekan). We also improved -Sandstorm integration with the support of its build-in sharing model. +both the [GitHub release page](https://github.com/wekan/wekan/releases) and on +the [DockerHub](https://hub.docker.com/r/mquandalle/wekan). We also configured +Heroku one-click install and improved Sandstorm integration with the integration +of its build-in sharing model. New languages supported: Chinese, Finnish, Spanish, Korean, and Russian. @@ -1,27 +1,38 @@ # Wekan -[![Join the chat at https://gitter.im/wekan/wekan](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/wekan/wekan?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Join the chat][gitter_badge]][gitter_chat] -<!-- XXX Need to improve this introduction --> +Wekan is an open-source and collaborative kanban board application. -Wekan is an open-source *kanban* board that let you organize things in cards, -and cards in lists. You can use it alone, or with your team and family thanks to -our real-time synchronisation feature. Wekan is a land of liberty and you can -implement all sort of workflows on it using tags, comments, member assignation, -and many more. +Whether you’re maintaining a personal todo list, planning your holidays with +some friends, or working in a team on your next revolutionary idea, Kanban +boards are an unbeatable tool to keep your things organized. They give you a +visual overview of the current state of your project, and make you productive by +allowing you to focus on the few items that matter the most. -[![Our roadmap is self-hosted on LibreBoard][thumbnail]][roadmap] +[![Our roadmap is self-hosted on Wekan][screenshot]][roadmap] + +Wekan supports most features you would expect of it including a real-time user +interface, cards comments, member assignations, customizable labels, filtered +views, and more. Since it is a free software, you don’t have to trust us with your data and can install Wekan on your own computer or server. In fact we encourage you to do -that by providing one-click installation for the -[Sandstorm](https://sandstorm.io) platform and verified -[Docker](https://www.docker.com) images. +that by providing one-click installation on Heroku or [Sandstorm] +[sandstorm_market] platforms and verified [Docker][docker_image] images. + +[![Deploy][heroku_button]][heroku_deploy] Wekan is released under the very permissive [MIT license](LICENSE), and made with [Meteor](https://www.meteor.com). -[Our roadmap is self-hosted on LibreBoard][roadmap] +[Our roadmap is self-hosted on Wekan][roadmap] -[thumbnail]: http://i.imgur.com/IIdHUmW.png -[roadmap]: http://libreboard.com/boards/MeSsFJaSqeuo9M6bs/libreboard-roadmap +[screenshot]: http://i.imgur.com/cI4jW2h.png +[gitter_badge]: https://badges.gitter.im/Join%20Chat.svg +[gitter_chat]: https://gitter.im/wekan/wekan +[roadmap]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap +[sandstorm_market]: https://oasis.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h +[docker_image]: https://hub.docker.com/r/mquandalle/wekan/ +[heroku_button]: https://www.herokucdn.com/deploy/button.png +[heroku_deploy]: https://heroku.com/deploy?template=https://github.com/wekan/wekan/tree/master diff --git a/app.json b/app.json new file mode 100644 index 00000000..2bf5cf37 --- /dev/null +++ b/app.json @@ -0,0 +1,19 @@ +{ + "name": "Wekan", + "description": "The open-source Trello-like kanban", + "repository": "https://github.com/wekan/wekan", + "logo": "https://raw.githubusercontent.com/wekan/wekan/master/meta/icons/wekan-150.png", + "keywords": ["productivity", "tool", "team", "kanban"], + "website": "http://wekan.io", + "env": { + "BUILDPACK_URL": "https://github.com/AdmitHub/meteor-buildpack-horse.git", + "ROOT_URL": { + "description": "IMPORTANT! Please replace <App Name> with the value provided on the top. This will be the full URL of your Wekan app.", + "value": "https://<App Name>.herokuapp.com" + } + }, + "addons": [ + "mongolab", + "logentries" + ] +} diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index 980a9015..95590beb 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -68,7 +68,13 @@ BlazeComponent.extendComponent({ // Click-and-drag action 'mousedown .board-canvas'(evt) { - if ($(evt.target).closest('a,.js-list-header').length === 0) { + // Translating the board canvas using the click-and-drag action can + // conflict with the build-in browser mechanism to select text. We + // define a list of elements in which we disable the dragging because + // the user will legitimately expect to be able to select some text with + // his mouse. + const noDragInside = ['a', 'input', 'textarea', 'p', '.js-list-header']; + if ($(evt.target).closest(noDragInside.join(',')).length === 0) { this._isDragging = true; this._lastDragPositionX = evt.clientX; } diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index a493d938..6ea6e777 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -96,6 +96,9 @@ BlazeComponent.extendComponent({ _getUnsavedEditKey() { return { fieldName: 'cardDescription', + // XXX Recovering the currentCard identifier form a session variable is + // fragile because this variable may change for instance if the route + // change. We should use some component props instead. docId: Session.get('currentCard'), }; } diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade index e7cd1159..7f7519c6 100644 --- a/client/components/sidebar/sidebar.jade +++ b/client/components/sidebar/sidebar.jade @@ -42,7 +42,7 @@ template(name="labelsWidget") .board-widget-content each currentBoard.labels a.card-label(class="card-label-{{color}}" - class="{{#if currentUser.isBoardMember}}js-add-labels{{/if}}") + class="{{#if currentUser.isBoardMember}}js-label{{/if}}") span.card-label-name= name if currentUser.isBoardAdmin a.card-label.add-label.js-add-label diff --git a/client/config/router.js b/client/config/router.js index 76d7b3ad..1cac43a0 100644 --- a/client/config/router.js +++ b/client/config/router.js @@ -40,11 +40,11 @@ FlowRouter.route('/b/:id/:slug', { FlowRouter.route('/b/:boardId/:slug/:cardId', { name: 'card', action(params) { + EscapeActions.executeUpTo('inlinedForm'); + Session.set('currentBoard', params.boardId); Session.set('currentCard', params.cardId); - EscapeActions.executeUpTo('inlinedForm'); - BlazeLayout.render('defaultLayout', { content: 'board' }); }, }); diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index b57905d4..a63fb0ce 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -24,7 +24,7 @@ "added": "Ajouté", "addMemberPopup-title": "Membres", "admin": "Admin", - "admin-desc": "Peut voir et éditer les cartes, supprimer des membres, et changer les paramètres du tableau.", + "admin-desc": "Peut voir et éditer les cartes, supprimer des membres et changer les paramètres du tableau.", "all-boards": "Tous les tableaux", "and-n-other-card": "Et __count__ autre carte", "and-n-other-card_plural": "Et __count__ autres cartes", @@ -43,7 +43,7 @@ "attachment-delete-pop": "La suppression d'une pièce jointe est définitive. Elle ne peut être annulée.", "attachmentDeletePopup-title": "Supprimer la pièce jointe ?", "attachments": "Pièces jointes", - "avatar-too-big": "L’avatar est trop gros (70Kb max)", + "avatar-too-big": "La taille du fichier de l’avatar est trop importante (70 Ko au maximum)", "back": "Retour", "board-change-color": "Changer la couleur", "board-nb-stars": "%s étoiles", @@ -195,6 +195,6 @@ "uploaded-avatar": "Avatar téléchargé", "username": "Nom d'utilisateur", "view-it": "Le voir", - "warn-list-archived": "attention: cette carte est dans une liste archivée", + "warn-list-archived": "Attention : cette carte est dans une liste archivée", "what-to-do": "Que voulez-vous faire ?" }
\ No newline at end of file diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index 106728e9..381dc9b5 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -1,6 +1,6 @@ { "actions": "Ações", - "activities": "Activities", + "activities": "Atividades", "activity": "Atividade", "activity-added": "adicionou %s a %s", "activity-archived": "arquivou %s", @@ -14,30 +14,30 @@ "activity-sent": "enviou %s de %s", "activity-unjoined": "deixou %s", "add": "Novo", - "add-attachment": "Add an attachment", + "add-attachment": "Adicionar um anexo", "add-board": "Criar um quadro novo", - "add-card": "Add a card", + "add-card": "Adicionar um cartão", "add-cover": "Adicionar Capa", - "add-label": "Add the label", - "add-list": "Add a list", - "add-members": "Add Members", + "add-label": "Adicionar a Etiqueta", + "add-list": "Adicionar uma lista", + "add-members": "Adicionar Membros", "added": "Criado", "addMemberPopup-title": "Membros", "admin": "Administrador", "admin-desc": "Pode ver e editar cartões, remover membros e alterar configurações do quadro.", - "all-boards": "All boards", + "all-boards": "Todos os quadros", "and-n-other-card": "And __count__ other card", "and-n-other-card_plural": "And __count__ other cards", "archive": "Arquivar", "archive-all": "Arquivar Tudo", - "archive-board": "Archive Board", - "archive-card": "Archive Card", + "archive-board": "Arquivar Quadro", + "archive-card": "Arquivar Cartão", "archive-list": "Arquivar esta lista", - "archive-selection": "Archive selection", + "archive-selection": "Arquivar seleção", "archiveBoardPopup-title": "Fechar Quadro?", "archived-items": "Itens Arquivados", - "archives": "Archives", - "assign-member": "Assign member", + "archives": "Arquivos", + "assign-member": "Atribuir Membro", "attached": "anexado", "attachment": "Anexo", "attachment-delete-pop": "Excluir um anexo é permanente. Não será possível recuperá-lo.", @@ -45,15 +45,15 @@ "attachments": "Anexos", "avatar-too-big": "The avatar is too large (70Kb max)", "back": "Voltar", - "board-change-color": "Change color", + "board-change-color": "Alterar cor", "board-nb-stars": "%s stars", "board-not-found": "Quadro não encontrado", - "board-private-info": "This board will be <strong>private</strong>.", + "board-private-info": "Este quadro será <strong>privado</strong>.", "board-public-info": "Este quadro será <strong>público</strong>.", - "boardChangeColorPopup-title": "Change Board Background", + "boardChangeColorPopup-title": "Alterar Tela de Fundo", "boardChangeTitlePopup-title": "Renomear Quadro", "boardChangeVisibilityPopup-title": "Alterar Visibilidade", - "boardMenuPopup-title": "Board Menu", + "boardMenuPopup-title": "Menu do Quadro", "boards": "Quadros", "bucket-example": "Like “Bucket List” for example", "cancel": "Cancelar", @@ -62,21 +62,21 @@ "card-delete-notice": "A exclusão será permanente. Você perderá todas as ações associadas a este cartão.", "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.", "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.", - "card-edit-attachments": "Edit attachments", - "card-edit-labels": "Edit labels", - "card-edit-members": "Edit members", + "card-edit-attachments": "Editar anexos", + "card-edit-labels": "Editar etiquetas", + "card-edit-members": "Editar membros", "card-labels-title": "Alterar etiquetas do cartão.", "card-members-title": "Acrescentar ou remover membros do quadro deste cartão.", - "cardAttachmentsPopup-title": "Attach From", + "cardAttachmentsPopup-title": "Anexar a partir de", "cardDeletePopup-title": "Excluir Cartão?", "cardDetailsActionsPopup-title": "Card Actions", "cardLabelsPopup-title": "Etiquetas", "cardMembersPopup-title": "Membros", "cardMorePopup-title": "Mais", - "cards": "Cards", + "cards": "Cartões", "change-avatar": "Alterar Avatar", "change-password": "Alterar Senha", - "change-permissions": "Change permissions", + "change-permissions": "Alterar permissões", "changeAvatarPopup-title": "Alterar Avatar", "changeLanguagePopup-title": "Alterar Idioma", "changePasswordPopup-title": "Alterar Senha", @@ -84,10 +84,10 @@ "click-to-star": "Marcar quadro como favorito.", "click-to-unstar": "Remover quadro dos favoritos.", "close": "Fechar", - "close-board": "Close Board", + "close-board": "Fechar Quadro", "close-board-pop": "Você pode reabrir um quadro clicando em “Quadros” no menu no cabeçalho, selecionando “Exibir Quadros Fechados”, encontrando-o e clicando em “Reabrir”.", "comment": "Comentário", - "comment-placeholder": "Write a comment", + "comment-placeholder": "Escrever um comentário", "computer": "Computador", "create": "Criar", "createBoardPopup-title": "Criar Quadro", @@ -103,21 +103,21 @@ "download": "Baixar", "edit": "Editar", "edit-avatar": "Alterar Avatar", - "edit-profile": "Edit Profile", + "edit-profile": "Editar Perfil", "editLabelPopup-title": "Alterar Etiqueta", - "editProfilePopup-title": "Edit Profile", + "editProfilePopup-title": "Editar Perfil", "email": "E-mail", - "filter": "Filter", + "filter": "Filtrar", "filter-cards": "Filtrar Cartões", - "filter-clear": "Clear filter", - "filter-on": "Filter is on", + "filter-clear": "Limpar filtro", + "filter-on": "Filtro está ativo", "filter-on-desc": "Você está filtrando cartões neste quadro. Clique aqui para editar o filtro.", "filter-to-selection": "Filter to selection", "fullname": "Nome Completo", "header-logo-title": "Voltar para a lista de quadros.", "home": "Início", "info": "Informações", - "initials": "Initials", + "initials": "Iniciais", "joined": "juntou-se", "keyboard-shortcuts": "Keyboard shortcuts", "label-create": "Criar uma nova etiqueta", @@ -126,7 +126,7 @@ "labels": "Etiquetas", "language": "Idioma", "last-admin-desc": "Você não pode alterar funções porque deve existir pelo menos um administrador.", - "leave-board": "Leave Board", + "leave-board": "Sair do Quadro", "link-card": "Vincular a este cartão", "list-archive-cards": "Archive all cards in this list", "list-archive-cards-pop": "Isto removerá todos os cartões desta lista do quadro. Para visualizar os cartões arquivados e trazê-los de volta para o quadro, clique em “Menu” > “Itens Arquivados”.", @@ -135,13 +135,13 @@ "listActionPopup-title": "Listar Ações", "listArchiveCardsPopup-title": "Arquivar Todos Os Cartões Nesta Lista?", "listMoveCardsPopup-title": "Mover Todos Os Cartões Nesta Lista", - "lists": "Lists", + "lists": "Listas", "log-out": "Sair", "loginPopup-title": "Entrar", "memberMenuPopup-title": "Member Settings", "members": "Membros", "menu": "Menu", - "moveCardPopup-title": "Move Card", + "moveCardPopup-title": "Mover Cartão", "multi-selection": "Multi-Selection", "my-boards": "Meus Quadros", "name": "Nome", @@ -169,7 +169,7 @@ "removeMemberPopup-title": "Remover Membro?", "rename": "Renomear", "rename-board": "Renomear Quadro", - "restore": "Restore", + "restore": "Restaurar", "save": "Salvar", "search": "Buscar", "select-color": "Selecione uma cor", diff --git a/meta/icons/wekan-150.png b/meta/icons/wekan-150.png Binary files differnew file mode 100644 index 00000000..baca8d9d --- /dev/null +++ b/meta/icons/wekan-150.png diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index b3ce6a85..0e41b5a1 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -25,7 +25,7 @@ const pkgdef :Spk.PackageDefinition = ( appVersion = 5, # Increment this for every release. - appMarketingVersion = (defaultText = "0.9.0-rc2"), + appMarketingVersion = (defaultText = "0.9.0"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, |