Compare commits
90 Commits
v0.4.0-bet
...
v0.4.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8e50a3e31 | ||
|
|
769053b76d | ||
|
|
1948c303f2 | ||
|
|
476b15ee9d | ||
|
|
9595e00ae1 | ||
|
|
fdc1f275c5 | ||
|
|
1276dddc37 | ||
|
|
ed62a48ddd | ||
|
|
327c379ff3 | ||
|
|
77472b978d | ||
|
|
e81c08f7f0 | ||
|
|
1e24b3d774 | ||
|
|
a4044eff30 | ||
|
|
31c690ebf8 | ||
|
|
b84f118b4d | ||
|
|
c33783ac81 | ||
|
|
725ba6ff72 | ||
|
|
bf9811bf11 | ||
|
|
e08c430422 | ||
|
|
c72000bfc0 | ||
|
|
a131e468c0 | ||
|
|
d4a16589af | ||
|
|
5e69a453a2 | ||
|
|
23d3425ca4 | ||
|
|
653a1ccd58 | ||
|
|
09105d6e3d | ||
|
|
4d8acecc57 | ||
|
|
8d54028b31 | ||
|
|
415acfce57 | ||
|
|
f25401e9fd | ||
|
|
bcf26cee53 | ||
|
|
161bfb0e91 | ||
|
|
c1e52d7837 | ||
|
|
9cb096046a | ||
|
|
3c32f0533a | ||
|
|
3bf197bb32 | ||
|
|
4dc5c7da18 | ||
|
|
9ad070f40a | ||
|
|
a806714f56 | ||
|
|
bd630e31bc | ||
|
|
6313f24dc9 | ||
|
|
5a5cd23eb2 | ||
|
|
7fda7c1a4a | ||
|
|
ab637c7c13 | ||
|
|
7f497d59bc | ||
|
|
d794d61337 | ||
|
|
9f03854b3c | ||
|
|
17996822d3 | ||
|
|
ee438ad7b2 | ||
|
|
6bf4efbfe6 | ||
|
|
3163563fce | ||
|
|
04cb5f656d | ||
|
|
3863c7497b | ||
|
|
8d4dbd4d82 | ||
|
|
8f4fe1b05b | ||
|
|
7794fa065c | ||
|
|
af92da9a7c | ||
|
|
ba378ea00b | ||
|
|
be8a3479ac | ||
|
|
2002841c61 | ||
|
|
fde5096856 | ||
|
|
08f9874745 | ||
|
|
712ab9e0bc | ||
|
|
e07fc0a2c7 | ||
|
|
61fb68f4cf | ||
|
|
f3296dd443 | ||
|
|
8a8cffc542 | ||
|
|
820ad7c523 | ||
|
|
9f66ce618e | ||
|
|
2318425160 | ||
|
|
a36dfcc144 | ||
|
|
213e3083a1 | ||
|
|
683354da9d | ||
|
|
e208fd8222 | ||
|
|
4fc65c8302 | ||
|
|
bcb54faeaf | ||
|
|
f5753f3fde | ||
|
|
5ff8618c10 | ||
|
|
bee918e810 | ||
|
|
37301ae92b | ||
|
|
bd304d5f27 | ||
|
|
827c69bd7b | ||
|
|
812a225334 | ||
|
|
90c4e7818a | ||
|
|
1299df539e | ||
|
|
20b25e0108 | ||
|
|
e959afb2de | ||
|
|
cb25643741 | ||
|
|
bbfb9e713a | ||
|
|
e71a38fe96 |
19
.drone.yml
19
.drone.yml
@@ -22,6 +22,24 @@ pipeline:
|
||||
when:
|
||||
matrix:
|
||||
TESTS: check-app-compatbility
|
||||
check-app-compatbility-13:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=stable13
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server
|
||||
# Code checker
|
||||
- ./occ app:check-code $APP_NAME -c strong-comparison
|
||||
- ./occ app:check-code $APP_NAME -c deprecation
|
||||
- cd apps/$APP_NAME/
|
||||
when:
|
||||
matrix:
|
||||
TESTS: check-app-compatbility-13
|
||||
signed-off-check:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
@@ -194,6 +212,7 @@ pipeline:
|
||||
matrix:
|
||||
include:
|
||||
- TESTS: check-app-compatbility
|
||||
- TESTS: check-app-compatbility-13
|
||||
- TESTS: signed-off-check
|
||||
- TESTS: syntax-php5.6
|
||||
- TESTS: syntax-php7.0
|
||||
|
||||
17
.github/pull_request_template.md
vendored
Normal file
17
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
* Fixes issue: #
|
||||
* Target version: master
|
||||
|
||||
### Summary
|
||||
|
||||
|
||||
### TODO
|
||||
|
||||
- [ ] ...
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] Code is properly formatted
|
||||
- [ ] Sign-off message is added to all commits
|
||||
- [ ] Tests (unit, integration, api and/or acceptance) are included
|
||||
- [ ] Documentation (manuals or wiki) has been updated or is not required
|
||||
@@ -1,7 +1,7 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 0.4.0 - unreleased
|
||||
## 0.4.0 - 2018-07-11
|
||||
|
||||
### Added
|
||||
|
||||
|
||||
4
Makefile
4
Makefile
@@ -12,7 +12,7 @@ sign_dir=$(build_dir)/sign
|
||||
cert_dir=$(HOME)/.nextcloud/certificates
|
||||
|
||||
|
||||
default: build
|
||||
default: package
|
||||
|
||||
clean-build:
|
||||
rm -rf $(build_dir)
|
||||
@@ -95,3 +95,5 @@ test-integration:
|
||||
test-js: install-deps
|
||||
cd js && run test
|
||||
|
||||
package:
|
||||
krankerl package
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>0.4.0-beta4</version>
|
||||
<version>0.5.0-dev1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<namespace>Deck</namespace>
|
||||
@@ -26,7 +26,7 @@
|
||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png</screenshot>
|
||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot>
|
||||
<dependencies>
|
||||
<nextcloud min-version="12" max-version="14" />
|
||||
<nextcloud min-version="13" max-version="14" />
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
|
||||
38
css/comp-13.scss
Normal file
38
css/comp-13.scss
Normal file
@@ -0,0 +1,38 @@
|
||||
#content-wrapper #content {
|
||||
height: 100%;
|
||||
}
|
||||
#app-content {
|
||||
flex-grow: 1;
|
||||
height: 100%;
|
||||
|
||||
&.details-visible {
|
||||
margin-right: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
#app-sidebar {
|
||||
right: -500px;
|
||||
max-width: 100%;
|
||||
width: 500px;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
|
||||
&.details-visible {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#content[class*='app-'] * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body:not(.snapjs-left) {
|
||||
.app-navigation-hide {
|
||||
#app-content {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
#app-navigation {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,6 +70,26 @@ input.input-inline {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic app layout
|
||||
*/
|
||||
|
||||
#content {
|
||||
height: 100%;
|
||||
min-height: initial;
|
||||
}
|
||||
|
||||
.app.app-deck {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#app-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigation sidebar
|
||||
*/
|
||||
@@ -238,7 +258,7 @@ input.input-inline {
|
||||
}
|
||||
}
|
||||
|
||||
#app-navigation-toggle {
|
||||
#app-navigation-toggle-custom {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
cursor: pointer;
|
||||
@@ -617,17 +637,6 @@ input.input-inline {
|
||||
/**
|
||||
* App sidebar
|
||||
*/
|
||||
#app-sidebar {
|
||||
right: -500px;
|
||||
max-width: 100%;
|
||||
width: 500px;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
|
||||
&.details-visible {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#sidebar-header {
|
||||
h3 {
|
||||
@@ -922,16 +931,6 @@ input.input-inline {
|
||||
}
|
||||
}
|
||||
|
||||
#app-content {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&.details-visible {
|
||||
margin-right: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
.labels {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
@@ -1434,3 +1433,22 @@ input.input-inline {
|
||||
.ui-select-dropdown.select2-drop-active {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom app sidebar handling
|
||||
*/
|
||||
body:not(.snapjs-left) {
|
||||
.app-navigation-hide {
|
||||
#app-content {
|
||||
margin-left: 0 !important; /* overwrite margin since we want the translateX to handle it*/
|
||||
}
|
||||
#app-navigation {
|
||||
transform: translateX(-300px);
|
||||
}
|
||||
}
|
||||
}
|
||||
@media only screen and (max-width: 768px) {
|
||||
#app-navigation-toggle-custom {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -71,8 +71,9 @@ app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterPr
|
||||
tab: {value: 0, dynamic: true},
|
||||
},
|
||||
views: {
|
||||
'sidebarView': {
|
||||
templateUrl: '/board.sidebarView.html'
|
||||
'sidebarView@': {
|
||||
templateUrl: '/board.sidebarView.html',
|
||||
controller: 'BoardController'
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -82,7 +83,7 @@ app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterPr
|
||||
tab: {value: 0, dynamic: true},
|
||||
},
|
||||
views: {
|
||||
'sidebarView': {
|
||||
'sidebarView@': {
|
||||
templateUrl: '/card.sidebarView.html',
|
||||
controller: 'CardController'
|
||||
}
|
||||
|
||||
@@ -56,26 +56,6 @@ app.run(function ($document, $rootScope, $transitions, BoardService) {
|
||||
OC.filePath('deck', 'img', 'app-512.png')
|
||||
);
|
||||
|
||||
$('#app-navigation-toggle').off('click');
|
||||
// App sidebar on mobile
|
||||
var snapper = new Snap({
|
||||
element: document.getElementById('app-content'),
|
||||
disable: 'right',
|
||||
maxPosition: 250,
|
||||
touchToDrag: false
|
||||
});
|
||||
|
||||
$('#app-navigation-toggle').click(function () {
|
||||
if ($(window).width() > 768) {
|
||||
$('#app-navigation').toggle('hidden');
|
||||
} else {
|
||||
if (snapper.state().state === 'left') {
|
||||
snapper.close();
|
||||
} else {
|
||||
snapper.open('left');
|
||||
}
|
||||
}
|
||||
});
|
||||
// Select all elements with data-toggle="tooltips" in the document
|
||||
$('body').tooltip({
|
||||
selector: '[data-toggle="tooltip"]'
|
||||
|
||||
@@ -30,4 +30,13 @@ app.controller('AppController', function ($scope, $location, $http, $log, $rootS
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
$scope.user = oc_current_user;
|
||||
$rootScope.config = JSON.parse($attrs.config);
|
||||
|
||||
$scope.appNavigationHide = false;
|
||||
|
||||
$scope.toggleSidebar = function() {
|
||||
if ($(window).width() > 768) {
|
||||
$scope.appNavigationHide = !$scope.appNavigationHide;
|
||||
console.log($scope.appNavigationHide);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
@@ -200,6 +200,29 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
CardService.archive(card);
|
||||
StackService.removeCard(card);
|
||||
};
|
||||
$scope.isCurrentUserAssigned = function (card) {
|
||||
if (! CardService.get(card.id).assignedUsers) {
|
||||
return false;
|
||||
}
|
||||
var userList = CardService.get(card.id).assignedUsers.filter(function (obj) {
|
||||
return obj.participant.uid === OC.getCurrentUser().uid;
|
||||
});
|
||||
return userList.length === 1;
|
||||
};
|
||||
$scope.cardAssignToMe = function (card) {
|
||||
CardService.assignUser(card, OC.getCurrentUser().uid)
|
||||
.then(
|
||||
function() {StackService.updateCard(card);}
|
||||
);
|
||||
// TODO: remove this jquery call. Fix and use appPopoverMenuUtils instead
|
||||
$('.popovermenu').addClass('hidden');
|
||||
};
|
||||
$scope.cardUnassignFromMe = function (card) {
|
||||
CardService.unassignUser(card, OC.getCurrentUser().uid);
|
||||
StackService.updateCard(card);
|
||||
// TODO: remove this jquery call.Fix and use appPopoverMenuUtils instead
|
||||
$('.popovermenu').addClass('hidden');
|
||||
};
|
||||
$scope.cardUnarchive = function (card) {
|
||||
CardService.unarchive(card);
|
||||
StackService.removeCard(card);
|
||||
|
||||
1562
js/package-lock.json
generated
1562
js/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -8,28 +8,28 @@
|
||||
"test": "tests"
|
||||
},
|
||||
"dependencies": {
|
||||
"@uirouter/angularjs": "^1.0.18",
|
||||
"@uirouter/angularjs": "^1.0.19",
|
||||
"angular": "^1.7.2",
|
||||
"angular-animate": "^1.7.2",
|
||||
"angular-file-upload": "^2.5.0",
|
||||
"angular-markdown-it": "^0.6.1",
|
||||
"angular-sanitize": "^1.7.2",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"markdown-it": "^8.4.1",
|
||||
"markdown-it": "^8.4.2",
|
||||
"markdown-it-link-target": "^1.0.2",
|
||||
"ng-sortable": "^1.3.8",
|
||||
"ui-select": "^0.19.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.2",
|
||||
"babel-loader": "^7.1.5",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"css-loader": "^0.28.9",
|
||||
"css-loader": "^1.0.0",
|
||||
"karma": "^2.0.4",
|
||||
"mini-css-extract-plugin": "^0.4.1",
|
||||
"node-sass": "^4.5.3",
|
||||
"webpack": "^4.14.0",
|
||||
"webpack-cli": "^3.0.8",
|
||||
"node-sass": "^4.9.2",
|
||||
"webpack": "^4.16.1",
|
||||
"webpack-cli": "^3.1.0",
|
||||
"webpack-merge": "^4.1.3"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -106,11 +106,11 @@ app.factory('CardService', function (ApiService, $http, $q) {
|
||||
CardService.prototype.assignUser = function (card, user) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
if (self.getCurrent().assignedUsers === null) {
|
||||
self.getCurrent().assignedUsers = [];
|
||||
if (self.get(card.id).assignedUsers === null) {
|
||||
self.get(card.id).assignedUsers = [];
|
||||
}
|
||||
$http.post(this.baseUrl + '/' + card.id + '/assign', {'userId': user}).then(function (response) {
|
||||
self.getCurrent().assignedUsers.push(response.data);
|
||||
self.get(card.id).assignedUsers.push(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
@@ -123,7 +123,7 @@ app.factory('CardService', function (ApiService, $http, $q) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(this.baseUrl + '/' + card.id + '/assign/' + user, {}).then(function (response) {
|
||||
self.getCurrent().assignedUsers = self.getCurrent().assignedUsers.filter(function (obj) {
|
||||
self.get(card.id).assignedUsers = self.get(card.id).assignedUsers.filter(function (obj) {
|
||||
return obj.participant.uid !== user;
|
||||
});
|
||||
deferred.resolve(response.data);
|
||||
@@ -174,4 +174,4 @@ app.factory('CardService', function (ApiService, $http, $q) {
|
||||
|
||||
var service = new CardService($http, 'cards', $q);
|
||||
return service;
|
||||
});
|
||||
});
|
||||
|
||||
30
l10n/ast.js
30
l10n/ast.js
@@ -1,30 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Desaniciar",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minutos",
|
||||
"Finished" : "Finó",
|
||||
"Action needed" : "Precísase aición",
|
||||
"Later" : "Más sero",
|
||||
"Deck" : "Deck",
|
||||
"Submit" : "Unviar",
|
||||
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||
"Close" : "Zarrar",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
|
||||
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Xestionar",
|
||||
"Discard share" : "Escartar compartición",
|
||||
"Title" : "Títulu",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más aiciones",
|
||||
"by" : "por",
|
||||
"Click to set" : "Primi p'afitar",
|
||||
"Description" : "Descripción",
|
||||
"Saved" : "Guardóse"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
@@ -1,28 +0,0 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Desaniciar",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minutos",
|
||||
"Finished" : "Finó",
|
||||
"Action needed" : "Precísase aición",
|
||||
"Later" : "Más sero",
|
||||
"Deck" : "Deck",
|
||||
"Submit" : "Unviar",
|
||||
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||
"Close" : "Zarrar",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
|
||||
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Xestionar",
|
||||
"Discard share" : "Escartar compartición",
|
||||
"Title" : "Títulu",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más aiciones",
|
||||
"by" : "por",
|
||||
"Click to set" : "Primi p'afitar",
|
||||
"Description" : "Descripción",
|
||||
"Saved" : "Guardóse"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
25
l10n/cs.js
25
l10n/cs.js
@@ -6,20 +6,35 @@ OC.L10N.register(
|
||||
"Remove user from card" : "Odebrat uživatele z karty",
|
||||
"Hours" : "Hodiny",
|
||||
"Minutes" : "Minuty",
|
||||
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Opravdu chcete smazat stack a všechna data v něm?",
|
||||
"Personal" : "Osobní",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
|
||||
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
|
||||
"No data was provided to create an attachment." : "Žádná data k vytvoření přílohy.",
|
||||
"Finished" : "Dokončeno",
|
||||
"To review" : "K revizi",
|
||||
"Action needed" : "Nutná akce",
|
||||
"Later" : "Později",
|
||||
"To do" : "Udělat",
|
||||
"Doing" : "Provádím",
|
||||
"Done" : "Hotovo",
|
||||
"Example Task 3" : "Třetí úkol pro ukázku",
|
||||
"Example Task 2" : "Druhý úkol pro ukázku",
|
||||
"Example Task 1" : "První úkol pro ukázku",
|
||||
"The file was uploaded" : "Soubor byl nahrán",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahrávaný soubor přesahuje nastavení upload_max_filesize v php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Odeslaný soubor přesáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný ve formuláři HTML",
|
||||
"The file was only partially uploaded" : "Soubor byl nahrán pouze z části",
|
||||
"No file was uploaded" : "Nebyl nahrán žádný soubor",
|
||||
"Missing a temporary folder" : "Chybí adresář pro dočasné soubory",
|
||||
"Could not write file to disk" : "Nedaří se zapsat soubor do úložiště",
|
||||
"A PHP extension stopped the file upload" : "Rozšíření PHP zastavilo nahrávání souboru.",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Soubor nebyl nahrán nebo jeho velikost přesáhla %s",
|
||||
"Deck" : "Balík",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní management ve stylu Kanban.",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, jenž je zaintegrovaný do Nextcloudu.\n\n\n- 📥 Vložte a uspořádejte své úkoly do karet\n- 📄 Zapište si dodatečné poznámky \n- 🔖 Přilepte štítek pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přátely nebo rodinou\n- 🚀 Dostaťe svůj projekt pod kontrolu",
|
||||
"Add a new stack" : "Přidat nový zásobník",
|
||||
"Submit" : "Odeslat",
|
||||
"Show archived cards" : "Zobrazit archivované karty",
|
||||
@@ -27,6 +42,9 @@ OC.L10N.register(
|
||||
"Board details" : "Detaily desky",
|
||||
"All Boards" : "Všechny desky",
|
||||
"Archived boards" : "Archivované desky",
|
||||
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
|
||||
"Assign to me" : "Přiřadit mě",
|
||||
"Unassign from me" : "Zrušit přiřazení mě",
|
||||
"Archive" : "Archiv",
|
||||
"Unarchive" : "Zrušit archivování",
|
||||
"Enter a card title" : "Zadejte nadpis karty",
|
||||
@@ -55,9 +73,14 @@ OC.L10N.register(
|
||||
"Delete board" : "Smazat desku",
|
||||
"Reset" : "Obnovit",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
|
||||
"Create new board" : "VYtvořit ovou desku",
|
||||
"Create new board" : "Vytvořit novou desku",
|
||||
"New board title" : "Nadpis nové desky",
|
||||
"Select an attachment" : "Vybrat přílohu",
|
||||
"Cancel upload" : "Zrušit nahrávání",
|
||||
"by" : "od",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátit smazání souboru - v opačném případě bude soubor trvale smazán při dalším běhu cronjobu.",
|
||||
"Undo file deletion" : "Vzít zpět smazání souboru",
|
||||
"Insert the file into the description" : "Vložte soubor do popisku.",
|
||||
"Modified:" : "Upraveno:",
|
||||
"Created:" : "Vytvořeno:",
|
||||
"Choose a tag" : "Vyberte štítek",
|
||||
|
||||
25
l10n/cs.json
25
l10n/cs.json
@@ -4,20 +4,35 @@
|
||||
"Remove user from card" : "Odebrat uživatele z karty",
|
||||
"Hours" : "Hodiny",
|
||||
"Minutes" : "Minuty",
|
||||
"Maximum file size of {size} exceeded" : "U souboru {size} překročena nejvyšší umožněná velikost",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Opravdu chcete smazat stack a všechna data v něm?",
|
||||
"Personal" : "Osobní",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
|
||||
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
|
||||
"No data was provided to create an attachment." : "Žádná data k vytvoření přílohy.",
|
||||
"Finished" : "Dokončeno",
|
||||
"To review" : "K revizi",
|
||||
"Action needed" : "Nutná akce",
|
||||
"Later" : "Později",
|
||||
"To do" : "Udělat",
|
||||
"Doing" : "Provádím",
|
||||
"Done" : "Hotovo",
|
||||
"Example Task 3" : "Třetí úkol pro ukázku",
|
||||
"Example Task 2" : "Druhý úkol pro ukázku",
|
||||
"Example Task 1" : "První úkol pro ukázku",
|
||||
"The file was uploaded" : "Soubor byl nahrán",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Nahrávaný soubor přesahuje nastavení upload_max_filesize v php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Odeslaný soubor přesáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný ve formuláři HTML",
|
||||
"The file was only partially uploaded" : "Soubor byl nahrán pouze z části",
|
||||
"No file was uploaded" : "Nebyl nahrán žádný soubor",
|
||||
"Missing a temporary folder" : "Chybí adresář pro dočasné soubory",
|
||||
"Could not write file to disk" : "Nedaří se zapsat soubor do úložiště",
|
||||
"A PHP extension stopped the file upload" : "Rozšíření PHP zastavilo nahrávání souboru.",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Soubor nebyl nahrán nebo jeho velikost přesáhla %s",
|
||||
"Deck" : "Balík",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Nástroj pro projektový a osobní management ve stylu Kanban.",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Karty jsou nástroj zacílený na osobní nebo projektové plánování týmů v Kanban stylu, jenž je zaintegrovaný do Nextcloudu.\n\n\n- 📥 Vložte a uspořádejte své úkoly do karet\n- 📄 Zapište si dodatečné poznámky \n- 🔖 Přilepte štítek pro ještě lepší organizaci\n- 👥 Sdílejte se svým týmem, přátely nebo rodinou\n- 🚀 Dostaťe svůj projekt pod kontrolu",
|
||||
"Add a new stack" : "Přidat nový zásobník",
|
||||
"Submit" : "Odeslat",
|
||||
"Show archived cards" : "Zobrazit archivované karty",
|
||||
@@ -25,6 +40,9 @@
|
||||
"Board details" : "Detaily desky",
|
||||
"All Boards" : "Všechny desky",
|
||||
"Archived boards" : "Archivované desky",
|
||||
"Drop your files here to upload it to the card" : "Přetáhněte soubor sem, pokud jej chcete připojit ke kartě.",
|
||||
"Assign to me" : "Přiřadit mě",
|
||||
"Unassign from me" : "Zrušit přiřazení mě",
|
||||
"Archive" : "Archiv",
|
||||
"Unarchive" : "Zrušit archivování",
|
||||
"Enter a card title" : "Zadejte nadpis karty",
|
||||
@@ -53,9 +71,14 @@
|
||||
"Delete board" : "Smazat desku",
|
||||
"Reset" : "Obnovit",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
|
||||
"Create new board" : "VYtvořit ovou desku",
|
||||
"Create new board" : "Vytvořit novou desku",
|
||||
"New board title" : "Nadpis nové desky",
|
||||
"Select an attachment" : "Vybrat přílohu",
|
||||
"Cancel upload" : "Zrušit nahrávání",
|
||||
"by" : "od",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Vrátit smazání souboru - v opačném případě bude soubor trvale smazán při dalším běhu cronjobu.",
|
||||
"Undo file deletion" : "Vzít zpět smazání souboru",
|
||||
"Insert the file into the description" : "Vložte soubor do popisku.",
|
||||
"Modified:" : "Upraveno:",
|
||||
"Created:" : "Vytvořeno:",
|
||||
"Choose a tag" : "Vyberte štítek",
|
||||
|
||||
10
l10n/de.js
10
l10n/de.js
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minuten",
|
||||
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"Personal" : "Persönlich",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"To do" : "Offen",
|
||||
"Doing" : "In Arbeit",
|
||||
"Done" : "Erledigt",
|
||||
"Example Task 3" : "Beispielaufgabe 3",
|
||||
"Example Task 2" : "Beispielaufgabe 2",
|
||||
"Example Task 1" : "Beispielaufgabe 1",
|
||||
"The file was uploaded" : "Die Datei wurde hochgeladen",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign from me" : "Nicht mir zuweisen",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Select an attachment" : "Anhang auswählen",
|
||||
"Cancel upload" : "Hochladen abbrechen",
|
||||
"by" : "von",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Undo file deletion" : "Dateilöschung rückgängig machen",
|
||||
|
||||
10
l10n/de.json
10
l10n/de.json
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minuten",
|
||||
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"Personal" : "Persönlich",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"To do" : "Offen",
|
||||
"Doing" : "In Arbeit",
|
||||
"Done" : "Erledigt",
|
||||
"Example Task 3" : "Beispielaufgabe 3",
|
||||
"Example Task 2" : "Beispielaufgabe 2",
|
||||
"Example Task 1" : "Beispielaufgabe 1",
|
||||
"The file was uploaded" : "Die Datei wurde hochgeladen",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Drop your files here to upload it to the card" : "Lege Deine Dateien hier ab, um sie auf die Karte hochzuladen",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign from me" : "Nicht mir zuweisen",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Select an attachment" : "Anhang auswählen",
|
||||
"Cancel upload" : "Hochladen abbrechen",
|
||||
"by" : "von",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Undo file deletion" : "Dateilöschung rückgängig machen",
|
||||
|
||||
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minuten",
|
||||
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"Personal" : "Persönlich",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"To do" : "Offen",
|
||||
"Doing" : "In Arbeit",
|
||||
"Done" : "Erledigt",
|
||||
"Example Task 3" : "Beispielaufgabe 3",
|
||||
"Example Task 2" : "Beispielaufgabe 2",
|
||||
"Example Task 1" : "Beispielaufgabe 1",
|
||||
"The file was uploaded" : "Die Datei wurde hochgeladen",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
|
||||
@@ -27,7 +34,7 @@ OC.L10N.register(
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
|
||||
"Deck" : "Deck",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Add a new stack" : "Neuen Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign from me" : "Nicht mir zuweisen",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
@@ -53,7 +62,7 @@ OC.L10N.register(
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Tag erstellen",
|
||||
"Create a new tag" : "Schlagwort erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Select an attachment" : "Wählen Sie einen Anhang",
|
||||
"Cancel upload" : "Hochladen abbrechen",
|
||||
"by" : "von",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Undo file deletion" : "Dateilöschung rückgängig machen",
|
||||
@@ -76,9 +86,9 @@ OC.L10N.register(
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagworte auswählen",
|
||||
"Assign users" : "Benutzer zuordnen",
|
||||
"Assign users" : "Benutzer zuweisen",
|
||||
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
|
||||
"Due date" : "Zieltermin",
|
||||
"Click to set" : "Setzen",
|
||||
"Remove due date" : "Zieltermin entfernen",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minuten",
|
||||
"Maximum file size of {size} exceeded" : "Maximale Dateigröße von {size} überschritten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"Personal" : "Persönlich",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"To do" : "Offen",
|
||||
"Doing" : "In Arbeit",
|
||||
"Done" : "Erledigt",
|
||||
"Example Task 3" : "Beispielaufgabe 3",
|
||||
"Example Task 2" : "Beispielaufgabe 2",
|
||||
"Example Task 1" : "Beispielaufgabe 1",
|
||||
"The file was uploaded" : "Die Datei wurde hochgeladen",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Die Datei ist größer, als die MAX_FILE_SIZE-Vorgabe, die im HTML-Formular angegeben ist.",
|
||||
@@ -25,7 +32,7 @@
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Keine Datei hochgeladen oder die Dateigröße überschreitet %s",
|
||||
"Deck" : "Deck",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Ein Kanban Werzeug für Nextcloud",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Vergabe von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deck ist ein Organisationstool im Kanban-Stil für die persönliche Planung und Projektorganisation von Teams, die in Nextcloud integriert sind.\n\n\n- 📥 Fügen Sie Ihre Aufgaben zu den Karten hinzu und ordnen Sie diese\n- 📄 Zusätzliche Hinweise in der Abschrift notieren\n- 🔖 Zuweisung von Labels für noch bessere Organisation\n- 👥 Teilen Sie mit Ihrem Team, Ihren Freunden oder Ihrer Familie\n- 🚀 Organisieren Sie Ihr Projekt",
|
||||
"Add a new stack" : "Neuen Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Drop your files here to upload it to the card" : "Legen Sie Ihre Dateien hier ab, um sie auf die Karte hochzuladen",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign from me" : "Nicht mir zuweisen",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
@@ -51,7 +60,7 @@
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Tag erstellen",
|
||||
"Create a new tag" : "Schlagwort erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Select an attachment" : "Wählen Sie einen Anhang",
|
||||
"Cancel upload" : "Hochladen abbrechen",
|
||||
"by" : "von",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dateilöschung rückgängig machen - Andernfalls wird die Datei beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Undo file deletion" : "Dateilöschung rückgängig machen",
|
||||
@@ -74,9 +84,9 @@
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagworte auswählen",
|
||||
"Assign users" : "Benutzer zuordnen",
|
||||
"Assign users" : "Benutzer zuweisen",
|
||||
"Choose a user to assign" : "Wähle einen Benutzer für die Zuweisung aus",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
|
||||
"Due date" : "Zieltermin",
|
||||
"Click to set" : "Setzen",
|
||||
"Remove due date" : "Zieltermin entfernen",
|
||||
|
||||
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minutos",
|
||||
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro de que quieres eliminar el mazo con todos sus datos?",
|
||||
"Personal" : "Personal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción necesaria",
|
||||
"Later" : "Después",
|
||||
"To do" : "Por hacer",
|
||||
"Doing" : "Haciendo",
|
||||
"Done" : "Hecho",
|
||||
"Example Task 3" : "Tarea de ejemplo 3",
|
||||
"Example Task 2" : "Tarea de ejemplo 2",
|
||||
"Example Task 1" : "Tarea de ejemplo 1",
|
||||
"The file was uploaded" : "Se ha subido el archivo",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo subido excede la directiva upload_max_filesize en php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo subido excede la directiva MAX_FILE-SIZE directive que se especificó en el formulario web",
|
||||
@@ -24,6 +31,7 @@ OC.L10N.register(
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
|
||||
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s",
|
||||
"Deck" : "Deck",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Una herramienta de manejo de proyectos y personal al estilo kanban para Nextcloud.",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deckes una herramienta de organización al estilo kanban enfocada en la planificación personal y en la organización de proyectos para equipos, integrada en Nextcloud.\n\n\n- 📥 Añade tus tareas a tarjetas y ordénalas\n- 📄 Escribe notas adicionales en markdown\n- 🔖 Asigna etiquetas para una organización aún mejor\n- 👥 Comparte con tu equipo, amigos o familia\n- 🚀 Organiza tu proyecto",
|
||||
@@ -66,6 +74,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Crear nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Select an attachment" : "Selecciona un adjunto",
|
||||
"Cancel upload" : "Cancelar la subida",
|
||||
"by" : "por",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.",
|
||||
"Undo file deletion" : "Deshacer eliminación del archivo",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minutos",
|
||||
"Maximum file size of {size} exceeded" : "Tamaño máximo de archivo de {size} excedido",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro de que quieres eliminar el mazo con todos sus datos?",
|
||||
"Personal" : "Personal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción necesaria",
|
||||
"Later" : "Después",
|
||||
"To do" : "Por hacer",
|
||||
"Doing" : "Haciendo",
|
||||
"Done" : "Hecho",
|
||||
"Example Task 3" : "Tarea de ejemplo 3",
|
||||
"Example Task 2" : "Tarea de ejemplo 2",
|
||||
"Example Task 1" : "Tarea de ejemplo 1",
|
||||
"The file was uploaded" : "Se ha subido el archivo",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El archivo subido excede la directiva upload_max_filesize en php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El archivo subido excede la directiva MAX_FILE-SIZE directive que se especificó en el formulario web",
|
||||
@@ -22,6 +29,7 @@
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "No se ha podido escribir el archivo al disco",
|
||||
"A PHP extension stopped the file upload" : "Una extensión de PHP ha detenido la subida del archivo",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "No se ha subido ningún archivo, o el tamaño del archivo excede el máximo de %s",
|
||||
"Deck" : "Deck",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Una herramienta de manejo de proyectos y personal al estilo kanban para Nextcloud.",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deckes una herramienta de organización al estilo kanban enfocada en la planificación personal y en la organización de proyectos para equipos, integrada en Nextcloud.\n\n\n- 📥 Añade tus tareas a tarjetas y ordénalas\n- 📄 Escribe notas adicionales en markdown\n- 🔖 Asigna etiquetas para una organización aún mejor\n- 👥 Comparte con tu equipo, amigos o familia\n- 🚀 Organiza tu proyecto",
|
||||
@@ -64,6 +72,7 @@
|
||||
"Create new board" : "Crear nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Select an attachment" : "Selecciona un adjunto",
|
||||
"Cancel upload" : "Cancelar la subida",
|
||||
"by" : "por",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Deshacer eliminación del archivo. De otra forma el archivo se borrará durante la próxima ejecución del trabajo cron.",
|
||||
"Undo file deletion" : "Deshacer eliminación del archivo",
|
||||
|
||||
10
l10n/fr.js
10
l10n/fr.js
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minutes",
|
||||
"Maximum file size of {size} exceeded" : "Taille de fichier maximale de {size} dépassée",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Êtes-vous sûr de vouloir supprimer la pile avec toutes ses données ?",
|
||||
"Personal" : "Personnel",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Le délais de la carte %s de %s est expiré.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Le tableau %s a été partagé avec vous par %s.",
|
||||
"{user} has shared the board %s with you." : "{user} a partagé le tableau %s avec vous.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "A réviser",
|
||||
"Action needed" : "Action requise",
|
||||
"Later" : "Plus tard",
|
||||
"To do" : "À faire",
|
||||
"Doing" : "En cours",
|
||||
"Done" : "Terminé",
|
||||
"Example Task 3" : "Exemple de tâche 3",
|
||||
"Example Task 2" : "Exemple de tâche 2",
|
||||
"Example Task 1" : "Exemple de tâche 1",
|
||||
"The file was uploaded" : "Le fichier a été téléchargé",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Tous les tableaux",
|
||||
"Archived boards" : "Tableaux archivés",
|
||||
"Drop your files here to upload it to the card" : "Déposez vos fichiers ici pour les téléverser sur la carte",
|
||||
"Assign to me" : "Me l'assigner",
|
||||
"Unassign from me" : "Me le désassigner",
|
||||
"Archive" : "Archiver",
|
||||
"Unarchive" : "Ne plus archiver",
|
||||
"Enter a card title" : "Saisissez un titre de carte",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Créer un nouveau tableau",
|
||||
"New board title" : "Nouveau titre pour le tableau",
|
||||
"Select an attachment" : "Sélectionner une pièce jointe",
|
||||
"Cancel upload" : "Annuler le téléversement",
|
||||
"by" : "par",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier - Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.",
|
||||
"Undo file deletion" : "Annuler la suppression du fichier",
|
||||
|
||||
10
l10n/fr.json
10
l10n/fr.json
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minutes",
|
||||
"Maximum file size of {size} exceeded" : "Taille de fichier maximale de {size} dépassée",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Êtes-vous sûr de vouloir supprimer la pile avec toutes ses données ?",
|
||||
"Personal" : "Personnel",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Le délais de la carte %s de %s est expiré.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Le tableau %s a été partagé avec vous par %s.",
|
||||
"{user} has shared the board %s with you." : "{user} a partagé le tableau %s avec vous.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "A réviser",
|
||||
"Action needed" : "Action requise",
|
||||
"Later" : "Plus tard",
|
||||
"To do" : "À faire",
|
||||
"Doing" : "En cours",
|
||||
"Done" : "Terminé",
|
||||
"Example Task 3" : "Exemple de tâche 3",
|
||||
"Example Task 2" : "Exemple de tâche 2",
|
||||
"Example Task 1" : "Exemple de tâche 1",
|
||||
"The file was uploaded" : "Le fichier a été téléchargé",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse la valeur MAX_FILE_SIZE qui était spécifiée dans le formulaire HTML",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Tous les tableaux",
|
||||
"Archived boards" : "Tableaux archivés",
|
||||
"Drop your files here to upload it to the card" : "Déposez vos fichiers ici pour les téléverser sur la carte",
|
||||
"Assign to me" : "Me l'assigner",
|
||||
"Unassign from me" : "Me le désassigner",
|
||||
"Archive" : "Archiver",
|
||||
"Unarchive" : "Ne plus archiver",
|
||||
"Enter a card title" : "Saisissez un titre de carte",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Créer un nouveau tableau",
|
||||
"New board title" : "Nouveau titre pour le tableau",
|
||||
"Select an attachment" : "Sélectionner une pièce jointe",
|
||||
"Cancel upload" : "Annuler le téléversement",
|
||||
"by" : "par",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annuler la suppression du fichier - Autrement le fichier sera supprimé lors du prochain lancement de la tâche cron.",
|
||||
"Undo file deletion" : "Annuler la suppression du fichier",
|
||||
|
||||
20
l10n/he.js
20
l10n/he.js
@@ -6,14 +6,25 @@ OC.L10N.register(
|
||||
"Remove user from card" : "הסרת משתמש מכרטיס",
|
||||
"Hours" : "שעות",
|
||||
"Minutes" : "דקות",
|
||||
"Maximum file size of {size} exceeded" : "גודל הקבצים המרבי {size} הושג",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "למחוק את הערימה הזאת עם כל הנתונים שלה?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "הכרטיס „%s” שתחת „%s” הגיע למועד התפוגה שלו.",
|
||||
"The board \"%s\" has been shared with you by %s." : "הלוח „%s” שותף אתך על ידי %s.",
|
||||
"{user} has shared the board %s with you." : "הלוח %s שותף אתך על ידי {user}",
|
||||
"No data was provided to create an attachment." : "לא סופקו נתונים ליצירת קובץ מצורף",
|
||||
"Finished" : "הסתיים",
|
||||
"To review" : "לסקירה",
|
||||
"Action needed" : "נדרשת פעולה",
|
||||
"Later" : "מאוחר יותר",
|
||||
"The file was uploaded" : "הקובץ הועלה",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "הקובץ שהועלה חורג מההנחיה upload_max_filesize ב־php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "הקובץ שהועלה חורג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML",
|
||||
"The file was only partially uploaded" : "הקובץ הועלה באופן חלקי בלבד",
|
||||
"No file was uploaded" : "לא הועלה קובץ",
|
||||
"Missing a temporary folder" : "חסרה תיקייה זמנית",
|
||||
"Could not write file to disk" : "לא ניתן לכתוב לכונן",
|
||||
"A PHP extension stopped the file upload" : "הרחבת PHP עצרה את העלאת הקובץ",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "לא הועלה אף קובץ או שגודל הקובץ חרג מהסף המרבי של %s",
|
||||
"Deck" : "חפיסה",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "כלי ניהול למיזמים או לדברים אישיים עבור Nextcloud",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "חבילה היא כלי ניהול בסגנון קנבן שמיועד לתכנון אישי או לארגון מיזמים לצוותים בשילוב עם Nextcloud.\n\n\n- 📥 הוספת המשימות שלך וסידור שלהן\n- 📄 כתיבת הערות נוספות בתצורת markdown\n- 🔖 הקצאת תוויות למטרת ארגון טוב יותר\n- 👥 שיתוף עם הצוות, החברים או המשפחה שלך\n- 🚀 ארגון המיזם שלך כמו שצריך",
|
||||
@@ -24,6 +35,7 @@ OC.L10N.register(
|
||||
"Board details" : "פרטי לוח",
|
||||
"All Boards" : "כל הלוחות",
|
||||
"Archived boards" : "לוחות שנשמרו בארכיון",
|
||||
"Drop your files here to upload it to the card" : "ניתן להשליך את הקבצים שלך כאן כדי להעלות אותם לכרטיס",
|
||||
"Archive" : "לארכיון",
|
||||
"Unarchive" : "הוצאה מהארכיון",
|
||||
"Enter a card title" : "נא להקליד כותרת לכרטיס",
|
||||
@@ -54,7 +66,12 @@ OC.L10N.register(
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "ביטול מחיקת לוח - אחרת הלוח יימחק במהלך ריצת ה־cronjob הבאה.",
|
||||
"Create new board" : "יצירת לוח חדש",
|
||||
"New board title" : "כותרת לוח חדשה",
|
||||
"Select an attachment" : "נא לבחור קובץ מצורף",
|
||||
"Cancel upload" : "ביטול העלאה",
|
||||
"by" : "מאת",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "ביטול מחיקת קובץ - אחרת הקובץ יימחק עם ריצת משימת ה־cron הבאה.",
|
||||
"Undo file deletion" : "ביטול מחיקת קובץ",
|
||||
"Insert the file into the description" : "הוספת הקובץ לתיאור",
|
||||
"Modified:" : "מועד השינוי",
|
||||
"Created:" : "מועד היצירה:",
|
||||
"Choose a tag" : "נא לבחור תגית",
|
||||
@@ -67,9 +84,12 @@ OC.L10N.register(
|
||||
"Click to set" : "יש ללחוץ להגדרה",
|
||||
"Remove due date" : "הסרת מועד התפוגה",
|
||||
"Description" : "תיאוג",
|
||||
"Attachments" : "קבצים מצורפים",
|
||||
"Saved" : "נשמר",
|
||||
"Unsaved changes" : "שינויים שלא נשמרו",
|
||||
"Formatting help" : "עזרה בסידור בתבנית",
|
||||
"Upload attachment" : "העלאת קבצים מצורפים",
|
||||
"Insert attachment" : "הוספת קובץ מצורף",
|
||||
"Add a card description…" : "הוספת תיאור כרטיס…",
|
||||
"Shared boards" : "לוחות משותפים",
|
||||
"View more" : "הצגת עוד",
|
||||
|
||||
20
l10n/he.json
20
l10n/he.json
@@ -4,14 +4,25 @@
|
||||
"Remove user from card" : "הסרת משתמש מכרטיס",
|
||||
"Hours" : "שעות",
|
||||
"Minutes" : "דקות",
|
||||
"Maximum file size of {size} exceeded" : "גודל הקבצים המרבי {size} הושג",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "למחוק את הערימה הזאת עם כל הנתונים שלה?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "הכרטיס „%s” שתחת „%s” הגיע למועד התפוגה שלו.",
|
||||
"The board \"%s\" has been shared with you by %s." : "הלוח „%s” שותף אתך על ידי %s.",
|
||||
"{user} has shared the board %s with you." : "הלוח %s שותף אתך על ידי {user}",
|
||||
"No data was provided to create an attachment." : "לא סופקו נתונים ליצירת קובץ מצורף",
|
||||
"Finished" : "הסתיים",
|
||||
"To review" : "לסקירה",
|
||||
"Action needed" : "נדרשת פעולה",
|
||||
"Later" : "מאוחר יותר",
|
||||
"The file was uploaded" : "הקובץ הועלה",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "הקובץ שהועלה חורג מההנחיה upload_max_filesize ב־php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "הקובץ שהועלה חורג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML",
|
||||
"The file was only partially uploaded" : "הקובץ הועלה באופן חלקי בלבד",
|
||||
"No file was uploaded" : "לא הועלה קובץ",
|
||||
"Missing a temporary folder" : "חסרה תיקייה זמנית",
|
||||
"Could not write file to disk" : "לא ניתן לכתוב לכונן",
|
||||
"A PHP extension stopped the file upload" : "הרחבת PHP עצרה את העלאת הקובץ",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "לא הועלה אף קובץ או שגודל הקובץ חרג מהסף המרבי של %s",
|
||||
"Deck" : "חפיסה",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "כלי ניהול למיזמים או לדברים אישיים עבור Nextcloud",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "חבילה היא כלי ניהול בסגנון קנבן שמיועד לתכנון אישי או לארגון מיזמים לצוותים בשילוב עם Nextcloud.\n\n\n- 📥 הוספת המשימות שלך וסידור שלהן\n- 📄 כתיבת הערות נוספות בתצורת markdown\n- 🔖 הקצאת תוויות למטרת ארגון טוב יותר\n- 👥 שיתוף עם הצוות, החברים או המשפחה שלך\n- 🚀 ארגון המיזם שלך כמו שצריך",
|
||||
@@ -22,6 +33,7 @@
|
||||
"Board details" : "פרטי לוח",
|
||||
"All Boards" : "כל הלוחות",
|
||||
"Archived boards" : "לוחות שנשמרו בארכיון",
|
||||
"Drop your files here to upload it to the card" : "ניתן להשליך את הקבצים שלך כאן כדי להעלות אותם לכרטיס",
|
||||
"Archive" : "לארכיון",
|
||||
"Unarchive" : "הוצאה מהארכיון",
|
||||
"Enter a card title" : "נא להקליד כותרת לכרטיס",
|
||||
@@ -52,7 +64,12 @@
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "ביטול מחיקת לוח - אחרת הלוח יימחק במהלך ריצת ה־cronjob הבאה.",
|
||||
"Create new board" : "יצירת לוח חדש",
|
||||
"New board title" : "כותרת לוח חדשה",
|
||||
"Select an attachment" : "נא לבחור קובץ מצורף",
|
||||
"Cancel upload" : "ביטול העלאה",
|
||||
"by" : "מאת",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "ביטול מחיקת קובץ - אחרת הקובץ יימחק עם ריצת משימת ה־cron הבאה.",
|
||||
"Undo file deletion" : "ביטול מחיקת קובץ",
|
||||
"Insert the file into the description" : "הוספת הקובץ לתיאור",
|
||||
"Modified:" : "מועד השינוי",
|
||||
"Created:" : "מועד היצירה:",
|
||||
"Choose a tag" : "נא לבחור תגית",
|
||||
@@ -65,9 +82,12 @@
|
||||
"Click to set" : "יש ללחוץ להגדרה",
|
||||
"Remove due date" : "הסרת מועד התפוגה",
|
||||
"Description" : "תיאוג",
|
||||
"Attachments" : "קבצים מצורפים",
|
||||
"Saved" : "נשמר",
|
||||
"Unsaved changes" : "שינויים שלא נשמרו",
|
||||
"Formatting help" : "עזרה בסידור בתבנית",
|
||||
"Upload attachment" : "העלאת קבצים מצורפים",
|
||||
"Insert attachment" : "הוספת קובץ מצורף",
|
||||
"Add a card description…" : "הוספת תיאור כרטיס…",
|
||||
"Shared boards" : "לוחות משותפים",
|
||||
"View more" : "הצגת עוד",
|
||||
|
||||
10
l10n/it.js
10
l10n/it.js
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minuti",
|
||||
"Maximum file size of {size} exceeded" : "Dimensione massima dei file di {size} superata",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Sei sicuro di voler eliminare questa pila con tutti i suoi dati?",
|
||||
"Personal" : "Personale",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La scheda \"%s\" in \"%s\" ha raggiunto la sua data di scadenza.",
|
||||
"The board \"%s\" has been shared with you by %s." : "La lavagna \"%s\" è stata condivisa con te da %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha condiviso la lavagna %s con te.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Da revisionare",
|
||||
"Action needed" : "Azione necessaria",
|
||||
"Later" : "Dopo",
|
||||
"To do" : "Da fare",
|
||||
"Doing" : "In corso",
|
||||
"Done" : "Fatto",
|
||||
"Example Task 3" : "Attività di esempio 3",
|
||||
"Example Task 2" : "Attività di esempio 2",
|
||||
"Example Task 1" : "Attività di esempio 1",
|
||||
"The file was uploaded" : "Il file è stato caricato",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Il file caricato supera la direttiva upload_max_filesize in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Tutte le lavagne",
|
||||
"Archived boards" : "Lavagne archiviate",
|
||||
"Drop your files here to upload it to the card" : "Rilascia qui i tuoi file per caricarli nella scheda",
|
||||
"Assign to me" : "Assegna a me",
|
||||
"Unassign from me" : "Rimuovi assegnazione da me",
|
||||
"Archive" : "Archivio",
|
||||
"Unarchive" : "Togli dall'archivio",
|
||||
"Enter a card title" : "Inserisci un titolo alla scheda",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Crea una nuova lavagna",
|
||||
"New board title" : "Titolo nuova lavagna",
|
||||
"Select an attachment" : "Scegli un allegato",
|
||||
"Cancel upload" : "Annulla caricamento",
|
||||
"by" : "da",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annulla eliminazione del file - Altrimenti il file sarà eliminato durante la prossima esecuzione del job di cron.",
|
||||
"Undo file deletion" : "Annulla l'eliminazione della file",
|
||||
|
||||
10
l10n/it.json
10
l10n/it.json
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minuti",
|
||||
"Maximum file size of {size} exceeded" : "Dimensione massima dei file di {size} superata",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Sei sicuro di voler eliminare questa pila con tutti i suoi dati?",
|
||||
"Personal" : "Personale",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La scheda \"%s\" in \"%s\" ha raggiunto la sua data di scadenza.",
|
||||
"The board \"%s\" has been shared with you by %s." : "La lavagna \"%s\" è stata condivisa con te da %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha condiviso la lavagna %s con te.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Da revisionare",
|
||||
"Action needed" : "Azione necessaria",
|
||||
"Later" : "Dopo",
|
||||
"To do" : "Da fare",
|
||||
"Doing" : "In corso",
|
||||
"Done" : "Fatto",
|
||||
"Example Task 3" : "Attività di esempio 3",
|
||||
"Example Task 2" : "Attività di esempio 2",
|
||||
"Example Task 1" : "Attività di esempio 1",
|
||||
"The file was uploaded" : "Il file è stato caricato",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Il file caricato supera la direttiva upload_max_filesize in php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Tutte le lavagne",
|
||||
"Archived boards" : "Lavagne archiviate",
|
||||
"Drop your files here to upload it to the card" : "Rilascia qui i tuoi file per caricarli nella scheda",
|
||||
"Assign to me" : "Assegna a me",
|
||||
"Unassign from me" : "Rimuovi assegnazione da me",
|
||||
"Archive" : "Archivio",
|
||||
"Unarchive" : "Togli dall'archivio",
|
||||
"Enter a card title" : "Inserisci un titolo alla scheda",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Crea una nuova lavagna",
|
||||
"New board title" : "Titolo nuova lavagna",
|
||||
"Select an attachment" : "Scegli un allegato",
|
||||
"Cancel upload" : "Annulla caricamento",
|
||||
"by" : "da",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Annulla eliminazione del file - Altrimenti il file sarà eliminato durante la prossima esecuzione del job di cron.",
|
||||
"Undo file deletion" : "Annulla l'eliminazione della file",
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "Ar tikrai norite ištrinti šią kortelę ir visus jos duomenis?",
|
||||
"Delete" : "Ištrinti",
|
||||
"Remove user from card" : "Šalinti naudotoją iš kortelės",
|
||||
"Hours" : "Valandos",
|
||||
"Minutes" : "Minutės",
|
||||
"Finished" : "Baigta",
|
||||
"To review" : "Peržiūrėti",
|
||||
"Action needed" : "Reikalingas veiksmas",
|
||||
"Later" : "Vėliau",
|
||||
"Done" : "Atlikta",
|
||||
"Example Task 3" : "Pavyzdinė užduotis 3",
|
||||
"Example Task 2" : "Pavyzdinė užduotis 2",
|
||||
"Example Task 1" : "Pavyzdinė užduotis 1",
|
||||
"The file was uploaded" : "Failas buvo įkeltas",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Įkeliamas failas viršija upload_max_filesize direktyvą, esančią faile php.ini",
|
||||
"The file was only partially uploaded" : "Failas buvo tik dalinai įkeltas",
|
||||
"No file was uploaded" : "Nebuvo įkeltas joks failas",
|
||||
"Missing a temporary folder" : "Trūksta laikinojo aplanko",
|
||||
@@ -22,6 +29,7 @@ OC.L10N.register(
|
||||
"Board details" : "Detalesnė informacija",
|
||||
"All Boards" : "Visi užduočių sąrašai",
|
||||
"Archived boards" : "Archyvuoti sąrašai",
|
||||
"Drop your files here to upload it to the card" : "Vilkite savo failus čia, norėdami įkelti juos į kortelę",
|
||||
"Archive" : "Archyvuoti",
|
||||
"Unarchive" : "Išskleisti",
|
||||
"Enter a card title" : "Įveskite kortelės vardą",
|
||||
@@ -50,12 +58,15 @@ OC.L10N.register(
|
||||
"Reset" : "Atstatyti",
|
||||
"Create new board" : "Sukurti naują sąrašą",
|
||||
"New board title" : "Naujas sąrašo vardas",
|
||||
"Cancel upload" : "Atsisakyti įkėlimo",
|
||||
"by" : " ",
|
||||
"Undo file deletion" : "Atšaukti failo ištrynimą",
|
||||
"Insert the file into the description" : "Įterpti failą į aprašą",
|
||||
"Modified:" : "Keitimo laikas:",
|
||||
"Created:" : "Sukūrimo laikas:",
|
||||
"Add a tag" : "Pridėti žymę",
|
||||
"Assign users" : "Priskirti naudotojus",
|
||||
"Assign this card to a user" : "Priskirti šią kortelę naudotojui",
|
||||
"Due date" : "Terminas",
|
||||
"Click to set" : "Spustelėkite pakeitimams atlikti",
|
||||
"Remove due date" : "Pašalinti terminą",
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "Ar tikrai norite ištrinti šią kortelę ir visus jos duomenis?",
|
||||
"Delete" : "Ištrinti",
|
||||
"Remove user from card" : "Šalinti naudotoją iš kortelės",
|
||||
"Hours" : "Valandos",
|
||||
"Minutes" : "Minutės",
|
||||
"Finished" : "Baigta",
|
||||
"To review" : "Peržiūrėti",
|
||||
"Action needed" : "Reikalingas veiksmas",
|
||||
"Later" : "Vėliau",
|
||||
"Done" : "Atlikta",
|
||||
"Example Task 3" : "Pavyzdinė užduotis 3",
|
||||
"Example Task 2" : "Pavyzdinė užduotis 2",
|
||||
"Example Task 1" : "Pavyzdinė užduotis 1",
|
||||
"The file was uploaded" : "Failas buvo įkeltas",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Įkeliamas failas viršija upload_max_filesize direktyvą, esančią faile php.ini",
|
||||
"The file was only partially uploaded" : "Failas buvo tik dalinai įkeltas",
|
||||
"No file was uploaded" : "Nebuvo įkeltas joks failas",
|
||||
"Missing a temporary folder" : "Trūksta laikinojo aplanko",
|
||||
@@ -20,6 +27,7 @@
|
||||
"Board details" : "Detalesnė informacija",
|
||||
"All Boards" : "Visi užduočių sąrašai",
|
||||
"Archived boards" : "Archyvuoti sąrašai",
|
||||
"Drop your files here to upload it to the card" : "Vilkite savo failus čia, norėdami įkelti juos į kortelę",
|
||||
"Archive" : "Archyvuoti",
|
||||
"Unarchive" : "Išskleisti",
|
||||
"Enter a card title" : "Įveskite kortelės vardą",
|
||||
@@ -48,12 +56,15 @@
|
||||
"Reset" : "Atstatyti",
|
||||
"Create new board" : "Sukurti naują sąrašą",
|
||||
"New board title" : "Naujas sąrašo vardas",
|
||||
"Cancel upload" : "Atsisakyti įkėlimo",
|
||||
"by" : " ",
|
||||
"Undo file deletion" : "Atšaukti failo ištrynimą",
|
||||
"Insert the file into the description" : "Įterpti failą į aprašą",
|
||||
"Modified:" : "Keitimo laikas:",
|
||||
"Created:" : "Sukūrimo laikas:",
|
||||
"Add a tag" : "Pridėti žymę",
|
||||
"Assign users" : "Priskirti naudotojus",
|
||||
"Assign this card to a user" : "Priskirti šią kortelę naudotojui",
|
||||
"Due date" : "Terminas",
|
||||
"Click to set" : "Spustelėkite pakeitimams atlikti",
|
||||
"Remove due date" : "Pašalinti terminą",
|
||||
|
||||
29
l10n/mn.js
29
l10n/mn.js
@@ -1,29 +0,0 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Устгах",
|
||||
"Finished" : "Дуусгасан",
|
||||
"To review" : "Дахин хянах",
|
||||
"Action needed" : "Үйлдэл шаардлагатай",
|
||||
"Later" : "Хойшлуулах",
|
||||
"Deck" : "Ажлын талбар",
|
||||
"Show archived cards" : "Архивлагдсан картуудыг харах",
|
||||
"Hide archived cards" : "Архивлагдсан картуудыг нуух",
|
||||
"Archive" : "Архивлах",
|
||||
"Unarchive" : "Архиваас гаргах",
|
||||
"Enter a card title" : "Картын нэр оруулах",
|
||||
"Sharing" : "Түгээх",
|
||||
"Select users or groups to share with" : "Түгээх хэрэглэгч, бүлэг сонгоно уу",
|
||||
"No matching user or group found." : "Тохирох бүлэг эсвэл хэрэглэгч олдохгүй байна.",
|
||||
"Share" : "Түгээх",
|
||||
"Edit" : "Засварлах",
|
||||
"Manage" : "Зохицуулах",
|
||||
"Discard share" : "Түгээлтийг хүчингүй болгох",
|
||||
"Members" : "Гишүүд",
|
||||
"Modified:" : "Өөрчлөгдсөн:",
|
||||
"Created:" : "Үүсгэсэн:",
|
||||
"Description" : "Тайлбар",
|
||||
"Saved" : "Хадгалсан",
|
||||
"Add a card description…" : "Картын тайлбар..."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
27
l10n/mn.json
27
l10n/mn.json
@@ -1,27 +0,0 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Устгах",
|
||||
"Finished" : "Дуусгасан",
|
||||
"To review" : "Дахин хянах",
|
||||
"Action needed" : "Үйлдэл шаардлагатай",
|
||||
"Later" : "Хойшлуулах",
|
||||
"Deck" : "Ажлын талбар",
|
||||
"Show archived cards" : "Архивлагдсан картуудыг харах",
|
||||
"Hide archived cards" : "Архивлагдсан картуудыг нуух",
|
||||
"Archive" : "Архивлах",
|
||||
"Unarchive" : "Архиваас гаргах",
|
||||
"Enter a card title" : "Картын нэр оруулах",
|
||||
"Sharing" : "Түгээх",
|
||||
"Select users or groups to share with" : "Түгээх хэрэглэгч, бүлэг сонгоно уу",
|
||||
"No matching user or group found." : "Тохирох бүлэг эсвэл хэрэглэгч олдохгүй байна.",
|
||||
"Share" : "Түгээх",
|
||||
"Edit" : "Засварлах",
|
||||
"Manage" : "Зохицуулах",
|
||||
"Discard share" : "Түгээлтийг хүчингүй болгох",
|
||||
"Members" : "Гишүүд",
|
||||
"Modified:" : "Өөрчлөгдсөн:",
|
||||
"Created:" : "Үүсгэсэн:",
|
||||
"Description" : "Тайлбар",
|
||||
"Saved" : "Хадгалсан",
|
||||
"Add a card description…" : "Картын тайлбар..."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -28,7 +28,7 @@ OC.L10N.register(
|
||||
"Add card" : "Dodaj kartę",
|
||||
"Close" : "Zamknij",
|
||||
"Sharing" : "Współdzielenie",
|
||||
"Tags" : "Tagi",
|
||||
"Tags" : "Etykiety",
|
||||
"Select users or groups to share with" : "Wybierz użytkowników lub grupy, żeby współdzielić z nimi",
|
||||
"Access for" : "Dostęp dla",
|
||||
"No matching user or group found." : "Nie znaleziono pasujących użytkowników lub grup",
|
||||
@@ -52,6 +52,7 @@ OC.L10N.register(
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Cofnij usunięcie tablicy - w innym przypadku tablica zostanie usunięta przy kolejnym wykonaniu zadania cron.",
|
||||
"Create new board" : "Utwórz nową tablicę",
|
||||
"New board title" : "Tytuł nowej tablicy",
|
||||
"Cancel upload" : "Anuluj wysyłanie",
|
||||
"by" : "przez",
|
||||
"Modified:" : "Zmodyfikowano:",
|
||||
"Created:" : "Utworzono:",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"Add card" : "Dodaj kartę",
|
||||
"Close" : "Zamknij",
|
||||
"Sharing" : "Współdzielenie",
|
||||
"Tags" : "Tagi",
|
||||
"Tags" : "Etykiety",
|
||||
"Select users or groups to share with" : "Wybierz użytkowników lub grupy, żeby współdzielić z nimi",
|
||||
"Access for" : "Dostęp dla",
|
||||
"No matching user or group found." : "Nie znaleziono pasujących użytkowników lub grup",
|
||||
@@ -50,6 +50,7 @@
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Cofnij usunięcie tablicy - w innym przypadku tablica zostanie usunięta przy kolejnym wykonaniu zadania cron.",
|
||||
"Create new board" : "Utwórz nową tablicę",
|
||||
"New board title" : "Tytuł nowej tablicy",
|
||||
"Cancel upload" : "Anuluj wysyłanie",
|
||||
"by" : "przez",
|
||||
"Modified:" : "Zmodyfikowano:",
|
||||
"Created:" : "Utworzono:",
|
||||
|
||||
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Minutos",
|
||||
"Maximum file size of {size} exceeded" : "Excedeu o tamanho máximo de arquivo de {size}",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Quer realmente excluir a pilha com todos os seus dados?",
|
||||
"Personal" : "Pessoal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.",
|
||||
"The board \"%s\" has been shared with you by %s." : "O quadro \"%s\" foi compartilhado com você por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} compartilhou o quadro %s com você.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Para revisão",
|
||||
"Action needed" : "Ação necessária",
|
||||
"Later" : "Depois",
|
||||
"To do" : "A fazer",
|
||||
"Doing" : "Fazendo",
|
||||
"Done" : "Feito",
|
||||
"Example Task 3" : "Tarefa exemplo 3",
|
||||
"Example Task 2" : "Tarefa exemplo 2",
|
||||
"Example Task 1" : "Tarefa exemplo 1",
|
||||
"The file was uploaded" : "O arquivo foi enviado",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O arquivo enviado excede a diretiva MAX_FILE_SIZE especificada no formulário HTML",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Todos os paineis",
|
||||
"Archived boards" : "Painéis arquivados",
|
||||
"Drop your files here to upload it to the card" : "Solte seus arquivos aqui para enviá-los para o cartão",
|
||||
"Assign to me" : "Atribuir a mim",
|
||||
"Unassign from me" : "Desatribuir de mim",
|
||||
"Archive" : "Arquivar",
|
||||
"Unarchive" : "Desarquivar",
|
||||
"Enter a card title" : "Digite um título de cartão",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Criar novo painel",
|
||||
"New board title" : "Título do novo painel",
|
||||
"Select an attachment" : "Selecionar um anexo",
|
||||
"Cancel upload" : "Cancelar envio",
|
||||
"by" : "por",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfazer exclusão de arquivo - Caso contrário será excluído na próxima execução do cronjob.",
|
||||
"Undo file deletion" : "Desfazer exclusão de arquivo",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Minutos",
|
||||
"Maximum file size of {size} exceeded" : "Excedeu o tamanho máximo de arquivo de {size}",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Quer realmente excluir a pilha com todos os seus dados?",
|
||||
"Personal" : "Pessoal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.",
|
||||
"The board \"%s\" has been shared with you by %s." : "O quadro \"%s\" foi compartilhado com você por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} compartilhou o quadro %s com você.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Para revisão",
|
||||
"Action needed" : "Ação necessária",
|
||||
"Later" : "Depois",
|
||||
"To do" : "A fazer",
|
||||
"Doing" : "Fazendo",
|
||||
"Done" : "Feito",
|
||||
"Example Task 3" : "Tarefa exemplo 3",
|
||||
"Example Task 2" : "Tarefa exemplo 2",
|
||||
"Example Task 1" : "Tarefa exemplo 1",
|
||||
"The file was uploaded" : "O arquivo foi enviado",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "O arquivo enviado excede a diretiva upload_max_filesize do php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "O arquivo enviado excede a diretiva MAX_FILE_SIZE especificada no formulário HTML",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Todos os paineis",
|
||||
"Archived boards" : "Painéis arquivados",
|
||||
"Drop your files here to upload it to the card" : "Solte seus arquivos aqui para enviá-los para o cartão",
|
||||
"Assign to me" : "Atribuir a mim",
|
||||
"Unassign from me" : "Desatribuir de mim",
|
||||
"Archive" : "Arquivar",
|
||||
"Unarchive" : "Desarquivar",
|
||||
"Enter a card title" : "Digite um título de cartão",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Criar novo painel",
|
||||
"New board title" : "Título do novo painel",
|
||||
"Select an attachment" : "Selecionar um anexo",
|
||||
"Cancel upload" : "Cancelar envio",
|
||||
"by" : "por",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Desfazer exclusão de arquivo - Caso contrário será excluído na próxima execução do cronjob.",
|
||||
"Undo file deletion" : "Desfazer exclusão de arquivo",
|
||||
|
||||
11
l10n/ru.js
11
l10n/ru.js
@@ -6,7 +6,9 @@ OC.L10N.register(
|
||||
"Remove user from card" : "Убрать пользователя из карточки",
|
||||
"Hours" : "Часы",
|
||||
"Minutes" : "Минуты",
|
||||
"Maximum file size of {size} exceeded" : "Максимальный размер файла {size} превышен",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Вы действительно хотите удалить стек со всеми его данными?",
|
||||
"Personal" : "Личное",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Настал срок карточки «%s» в «%s» .",
|
||||
"The board \"%s\" has been shared with you by %s." : "%s предоставил(а) Вам доступ к доске «%s».",
|
||||
"{user} has shared the board %s with you." : "{user} предоставил(а) Вам доступ к доске «%s».",
|
||||
@@ -15,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Просмотреть",
|
||||
"Action needed" : "Требуется действие",
|
||||
"Later" : "Позже",
|
||||
"To do" : "Надо сделать",
|
||||
"Doing" : "В работе",
|
||||
"Done" : "Готово",
|
||||
"Example Task 3" : "Пример задачи 3",
|
||||
"Example Task 2" : "Пример задачи 2",
|
||||
"Example Task 1" : "Пример задачи 1",
|
||||
"The file was uploaded" : "Файл был загружен",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер загруженного файла превышает установленный предел upload_max_filesize в php.ini:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер загруженного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
|
||||
@@ -35,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Все доски",
|
||||
"Archived boards" : "Архив досок",
|
||||
"Drop your files here to upload it to the card" : "Перетащите файл сюда, чтобы загрузить его на карту",
|
||||
"Assign to me" : "Назначить на меня",
|
||||
"Unassign from me" : "Убрать с меня назначение",
|
||||
"Archive" : "Архивировать",
|
||||
"Unarchive" : "Разархивировать",
|
||||
"Enter a card title" : "Введите заголовок карточки",
|
||||
@@ -66,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Создать новую доску",
|
||||
"New board title" : "Заголовок новой доски",
|
||||
"Select an attachment" : "Выберите вложение",
|
||||
"Cancel upload" : "Прервать загрузку",
|
||||
"by" : "автор",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Отменить удаление файла, иначе он будет автоматически удалена при следующей обработке cronjob.",
|
||||
"Undo file deletion" : "Отменить удаление файла",
|
||||
|
||||
11
l10n/ru.json
11
l10n/ru.json
@@ -4,7 +4,9 @@
|
||||
"Remove user from card" : "Убрать пользователя из карточки",
|
||||
"Hours" : "Часы",
|
||||
"Minutes" : "Минуты",
|
||||
"Maximum file size of {size} exceeded" : "Максимальный размер файла {size} превышен",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Вы действительно хотите удалить стек со всеми его данными?",
|
||||
"Personal" : "Личное",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Настал срок карточки «%s» в «%s» .",
|
||||
"The board \"%s\" has been shared with you by %s." : "%s предоставил(а) Вам доступ к доске «%s».",
|
||||
"{user} has shared the board %s with you." : "{user} предоставил(а) Вам доступ к доске «%s».",
|
||||
@@ -13,6 +15,12 @@
|
||||
"To review" : "Просмотреть",
|
||||
"Action needed" : "Требуется действие",
|
||||
"Later" : "Позже",
|
||||
"To do" : "Надо сделать",
|
||||
"Doing" : "В работе",
|
||||
"Done" : "Готово",
|
||||
"Example Task 3" : "Пример задачи 3",
|
||||
"Example Task 2" : "Пример задачи 2",
|
||||
"Example Task 1" : "Пример задачи 1",
|
||||
"The file was uploaded" : "Файл был загружен",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Размер загруженного файла превышает установленный предел upload_max_filesize в php.ini:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Размер загруженного файла превышает установленный предел MAX_FILE_SIZE в HTML-форме",
|
||||
@@ -33,6 +41,8 @@
|
||||
"All Boards" : "Все доски",
|
||||
"Archived boards" : "Архив досок",
|
||||
"Drop your files here to upload it to the card" : "Перетащите файл сюда, чтобы загрузить его на карту",
|
||||
"Assign to me" : "Назначить на меня",
|
||||
"Unassign from me" : "Убрать с меня назначение",
|
||||
"Archive" : "Архивировать",
|
||||
"Unarchive" : "Разархивировать",
|
||||
"Enter a card title" : "Введите заголовок карточки",
|
||||
@@ -64,6 +74,7 @@
|
||||
"Create new board" : "Создать новую доску",
|
||||
"New board title" : "Заголовок новой доски",
|
||||
"Select an attachment" : "Выберите вложение",
|
||||
"Cancel upload" : "Прервать загрузку",
|
||||
"by" : "автор",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Отменить удаление файла, иначе он будет автоматически удалена при следующей обработке cronjob.",
|
||||
"Undo file deletion" : "Отменить удаление файла",
|
||||
|
||||
@@ -11,6 +11,7 @@ OC.L10N.register(
|
||||
"To review" : "Na posúdenie",
|
||||
"Action needed" : "Potrebná akcia",
|
||||
"Later" : "Neskôr",
|
||||
"The file was uploaded" : "Súbor bol nahraný",
|
||||
"Deck" : "Tabuľa",
|
||||
"Add a new stack" : "Pridať nový stoh",
|
||||
"Submit" : "Odoslať",
|
||||
@@ -61,6 +62,7 @@ OC.L10N.register(
|
||||
"Click to set" : "Kliknite pre nastavenie",
|
||||
"Remove due date" : "Odstrániť do dátumu",
|
||||
"Description" : "Popis",
|
||||
"Attachments" : "Prílohy",
|
||||
"Saved" : "Uložené",
|
||||
"Unsaved changes" : "Neuložené zmeny",
|
||||
"Formatting help" : "Pomoc pri formátovaní",
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"To review" : "Na posúdenie",
|
||||
"Action needed" : "Potrebná akcia",
|
||||
"Later" : "Neskôr",
|
||||
"The file was uploaded" : "Súbor bol nahraný",
|
||||
"Deck" : "Tabuľa",
|
||||
"Add a new stack" : "Pridať nový stoh",
|
||||
"Submit" : "Odoslať",
|
||||
@@ -59,6 +60,7 @@
|
||||
"Click to set" : "Kliknite pre nastavenie",
|
||||
"Remove due date" : "Odstrániť do dátumu",
|
||||
"Description" : "Popis",
|
||||
"Attachments" : "Prílohy",
|
||||
"Saved" : "Uložené",
|
||||
"Unsaved changes" : "Neuložené zmeny",
|
||||
"Formatting help" : "Pomoc pri formátovaní",
|
||||
|
||||
10
l10n/sr.js
10
l10n/sr.js
@@ -8,6 +8,7 @@ OC.L10N.register(
|
||||
"Minutes" : "Минути",
|
||||
"Maximum file size of {size} exceeded" : "Премашена максимална величина фајла од {size}",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Да ли стварно желите да обришете ову гомилу са свим подацима на њој?",
|
||||
"Personal" : "Лично",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Картици \"%s\" на табли \"%s\" је истекао рок.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Таблу \"%s\" је поделио \"%s\" са Вама. ",
|
||||
"{user} has shared the board %s with you." : "{user} је поделио таблу %s са Вама.",
|
||||
@@ -16,6 +17,12 @@ OC.L10N.register(
|
||||
"To review" : "Треба прегледати",
|
||||
"Action needed" : "Потребна акција",
|
||||
"Later" : "После",
|
||||
"To do" : "За урадити",
|
||||
"Doing" : "Ради се",
|
||||
"Done" : "Готово",
|
||||
"Example Task 3" : "Пример задатка 3",
|
||||
"Example Task 2" : "Пример задатка 2",
|
||||
"Example Task 1" : "Пример задатка 1",
|
||||
"The file was uploaded" : "Фајл је отпремљен",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Фајл за отпремање премашује upload_max_filesize директиву у php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Фајл за отпремање премашује MAX_FILE_SIZE директиву наведену у HTML форми",
|
||||
@@ -36,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Све табле",
|
||||
"Archived boards" : "Архивиране табле",
|
||||
"Drop your files here to upload it to the card" : "Превуците Ваше фајлове овде да их отпремите у картицу",
|
||||
"Assign to me" : "Додели мени",
|
||||
"Unassign from me" : "Склони са мене",
|
||||
"Archive" : "Архива",
|
||||
"Unarchive" : "Врати из архиве",
|
||||
"Enter a card title" : "Унесите назив картице",
|
||||
@@ -67,6 +76,7 @@ OC.L10N.register(
|
||||
"Create new board" : "Направи нову таблу",
|
||||
"New board title" : "Назив нове табле",
|
||||
"Select an attachment" : "Одаберите прилог",
|
||||
"Cancel upload" : "Откажи отпремање",
|
||||
"by" : "од",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Поништи брисање фајла - у супротном, фајл ће бити обрисан на следеће покретање крон посла.",
|
||||
"Undo file deletion" : "Поништи брисање фајла",
|
||||
|
||||
10
l10n/sr.json
10
l10n/sr.json
@@ -6,6 +6,7 @@
|
||||
"Minutes" : "Минути",
|
||||
"Maximum file size of {size} exceeded" : "Премашена максимална величина фајла од {size}",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Да ли стварно желите да обришете ову гомилу са свим подацима на њој?",
|
||||
"Personal" : "Лично",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Картици \"%s\" на табли \"%s\" је истекао рок.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Таблу \"%s\" је поделио \"%s\" са Вама. ",
|
||||
"{user} has shared the board %s with you." : "{user} је поделио таблу %s са Вама.",
|
||||
@@ -14,6 +15,12 @@
|
||||
"To review" : "Треба прегледати",
|
||||
"Action needed" : "Потребна акција",
|
||||
"Later" : "После",
|
||||
"To do" : "За урадити",
|
||||
"Doing" : "Ради се",
|
||||
"Done" : "Готово",
|
||||
"Example Task 3" : "Пример задатка 3",
|
||||
"Example Task 2" : "Пример задатка 2",
|
||||
"Example Task 1" : "Пример задатка 1",
|
||||
"The file was uploaded" : "Фајл је отпремљен",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Фајл за отпремање премашује upload_max_filesize директиву у php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Фајл за отпремање премашује MAX_FILE_SIZE директиву наведену у HTML форми",
|
||||
@@ -34,6 +41,8 @@
|
||||
"All Boards" : "Све табле",
|
||||
"Archived boards" : "Архивиране табле",
|
||||
"Drop your files here to upload it to the card" : "Превуците Ваше фајлове овде да их отпремите у картицу",
|
||||
"Assign to me" : "Додели мени",
|
||||
"Unassign from me" : "Склони са мене",
|
||||
"Archive" : "Архива",
|
||||
"Unarchive" : "Врати из архиве",
|
||||
"Enter a card title" : "Унесите назив картице",
|
||||
@@ -65,6 +74,7 @@
|
||||
"Create new board" : "Направи нову таблу",
|
||||
"New board title" : "Назив нове табле",
|
||||
"Select an attachment" : "Одаберите прилог",
|
||||
"Cancel upload" : "Откажи отпремање",
|
||||
"by" : "од",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Поништи брисање фајла - у супротном, фајл ће бити обрисан на следеће покретање крон посла.",
|
||||
"Undo file deletion" : "Поништи брисање фајла",
|
||||
|
||||
@@ -64,9 +64,12 @@ OC.L10N.register(
|
||||
"Click to set" : "Klicka för att sätta",
|
||||
"Remove due date" : "Ta bort slutdatum",
|
||||
"Description" : "Beskrivning",
|
||||
"Attachments" : "Bilagor",
|
||||
"Saved" : "Sparad",
|
||||
"Unsaved changes" : "Osparade ändringar",
|
||||
"Formatting help" : "Formatteringshjälp",
|
||||
"Upload attachment" : "Ladda upp bilaga",
|
||||
"Insert attachment" : "Infoga bilaga",
|
||||
"Add a card description…" : "Lägg till en kortbeskrivning...",
|
||||
"Shared boards" : "Delade tavlor",
|
||||
"View more" : "Titta mer",
|
||||
|
||||
@@ -62,9 +62,12 @@
|
||||
"Click to set" : "Klicka för att sätta",
|
||||
"Remove due date" : "Ta bort slutdatum",
|
||||
"Description" : "Beskrivning",
|
||||
"Attachments" : "Bilagor",
|
||||
"Saved" : "Sparad",
|
||||
"Unsaved changes" : "Osparade ändringar",
|
||||
"Formatting help" : "Formatteringshjälp",
|
||||
"Upload attachment" : "Ladda upp bilaga",
|
||||
"Insert attachment" : "Infoga bilaga",
|
||||
"Add a card description…" : "Lägg till en kortbeskrivning...",
|
||||
"Shared boards" : "Delade tavlor",
|
||||
"View more" : "Titta mer",
|
||||
|
||||
19
l10n/tr.js
19
l10n/tr.js
@@ -6,14 +6,23 @@ OC.L10N.register(
|
||||
"Remove user from card" : "Kullanıcıyı karttan kaldır",
|
||||
"Hours" : "Saat",
|
||||
"Minutes" : "Dakika",
|
||||
"Maximum file size of {size} exceeded" : "{size} olan en büyük dosya boyutu sınırı aşıldı",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Bu yığını tüm bilgileri ile silmek istediğinize emin misiniz?",
|
||||
"Personal" : "Kişisel",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "\"%s\" kartı \"%s\" zamanında son kullanma tarihine ulaştı.",
|
||||
"The board \"%s\" has been shared with you by %s." : "\"%s\" panosu %s tarafından sizinle paylaşıldı.",
|
||||
"{user} has shared the board %s with you." : "{user} sizinle %s panosunu paylaştı.",
|
||||
"No data was provided to create an attachment." : "Bir ek dosyası oluşturmak için herhangi bir veri sağlanmadı.",
|
||||
"Finished" : "Tamamlandı",
|
||||
"To review" : "İncelenecek",
|
||||
"Action needed" : "İşlem yapılması gerekiyor",
|
||||
"Later" : "Sonra",
|
||||
"To do" : "Yapılacak işler",
|
||||
"Doing" : "Yapılanlar",
|
||||
"Done" : "Bitenler",
|
||||
"Example Task 3" : "3. Örnek Görev",
|
||||
"Example Task 2" : "2. Örnek Görev",
|
||||
"Example Task 1" : "1. Örnek Görev",
|
||||
"The file was uploaded" : "Dosya yüklendi",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Yüklenen dosya php.ini dosyasındaki yüklenebilecek dosya boyutunu belirten upload_max_filesize değişkeninin değerini aşıyor",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklenen dosya HTML formundaki yüklenebilecek dosya boyutunu belirten MAX_FILE_SIZE değişkeninin değerini aşıyor",
|
||||
@@ -22,6 +31,7 @@ OC.L10N.register(
|
||||
"Missing a temporary folder" : "Geçici bir klasör eksik",
|
||||
"Could not write file to disk" : "Dosya diske yazılamadı",
|
||||
"A PHP extension stopped the file upload" : "Bir PHP eklentisi dosyanın yüklenmesini engelledi",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı",
|
||||
"Deck" : "Tahta",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Nextcloud için Kanban tarzında bir proje ve kişisel yönetim uygulaması",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deste, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz",
|
||||
@@ -33,6 +43,8 @@ OC.L10N.register(
|
||||
"All Boards" : "Tüm Panolar",
|
||||
"Archived boards" : "Arşivlenmiş panolar",
|
||||
"Drop your files here to upload it to the card" : "Karta yüklemek istediğiniz dosyalarınızı sürükleyip buraya bırakın",
|
||||
"Assign to me" : "Bana ata",
|
||||
"Unassign from me" : "Benden atamasını kaldır",
|
||||
"Archive" : "Arşivle",
|
||||
"Unarchive" : "Arşivden Çıkar",
|
||||
"Enter a card title" : "Bir kart başlığı yazın",
|
||||
@@ -50,7 +62,7 @@ OC.L10N.register(
|
||||
"Discard share" : "Paylaşımı kaldır",
|
||||
"Update" : "Güncelle",
|
||||
"Create" : "Ekle",
|
||||
"Create a new tag" : "Yeni bir etiket ekle",
|
||||
"Create a new tag" : "Etiket ekle",
|
||||
"Status" : "Durum",
|
||||
"Title" : "Başlık",
|
||||
"Members" : "Üyeler",
|
||||
@@ -61,9 +73,10 @@ OC.L10N.register(
|
||||
"Delete board" : "Panoyu sil",
|
||||
"Reset" : "Sıfırla",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Pano silme işlemini geri alır. Yoksa pano zamanlanmış görevin bir sonraki çalışmasında silinir.",
|
||||
"Create new board" : "Yeni pano ekle",
|
||||
"Create new board" : "Pano ekle",
|
||||
"New board title" : "Yeni pano başlığı",
|
||||
"Select an attachment" : "Bir ek dosyası seçin",
|
||||
"Cancel upload" : "Yüklemeyi iptal et",
|
||||
"by" : "Kişi:",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dosya silme işlemini geri alır. Yoksa dosya zamanlanmış görevin bir sonraki çalışmasında silinir.",
|
||||
"Undo file deletion" : "Dosya silmeyi geri al",
|
||||
@@ -90,6 +103,6 @@ OC.L10N.register(
|
||||
"Shared boards" : "Paylaşılmış panolar",
|
||||
"View more" : "Diğerlerini görüntüle",
|
||||
"Move board to archive" : "Panoyu arşive taşı",
|
||||
"Create a new board" : "Yeni bir pano ekle"
|
||||
"Create a new board" : "Pano ekle"
|
||||
},
|
||||
"nplurals=2; plural=(n > 1);");
|
||||
|
||||
19
l10n/tr.json
19
l10n/tr.json
@@ -4,14 +4,23 @@
|
||||
"Remove user from card" : "Kullanıcıyı karttan kaldır",
|
||||
"Hours" : "Saat",
|
||||
"Minutes" : "Dakika",
|
||||
"Maximum file size of {size} exceeded" : "{size} olan en büyük dosya boyutu sınırı aşıldı",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Bu yığını tüm bilgileri ile silmek istediğinize emin misiniz?",
|
||||
"Personal" : "Kişisel",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "\"%s\" kartı \"%s\" zamanında son kullanma tarihine ulaştı.",
|
||||
"The board \"%s\" has been shared with you by %s." : "\"%s\" panosu %s tarafından sizinle paylaşıldı.",
|
||||
"{user} has shared the board %s with you." : "{user} sizinle %s panosunu paylaştı.",
|
||||
"No data was provided to create an attachment." : "Bir ek dosyası oluşturmak için herhangi bir veri sağlanmadı.",
|
||||
"Finished" : "Tamamlandı",
|
||||
"To review" : "İncelenecek",
|
||||
"Action needed" : "İşlem yapılması gerekiyor",
|
||||
"Later" : "Sonra",
|
||||
"To do" : "Yapılacak işler",
|
||||
"Doing" : "Yapılanlar",
|
||||
"Done" : "Bitenler",
|
||||
"Example Task 3" : "3. Örnek Görev",
|
||||
"Example Task 2" : "2. Örnek Görev",
|
||||
"Example Task 1" : "1. Örnek Görev",
|
||||
"The file was uploaded" : "Dosya yüklendi",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Yüklenen dosya php.ini dosyasındaki yüklenebilecek dosya boyutunu belirten upload_max_filesize değişkeninin değerini aşıyor",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Yüklenen dosya HTML formundaki yüklenebilecek dosya boyutunu belirten MAX_FILE_SIZE değişkeninin değerini aşıyor",
|
||||
@@ -20,6 +29,7 @@
|
||||
"Missing a temporary folder" : "Geçici bir klasör eksik",
|
||||
"Could not write file to disk" : "Dosya diske yazılamadı",
|
||||
"A PHP extension stopped the file upload" : "Bir PHP eklentisi dosyanın yüklenmesini engelledi",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Herhangi bir dosya yüklenmedi ya da %s olan en büyük dosya boyutu sınırı aşıldı",
|
||||
"Deck" : "Tahta",
|
||||
"A kanban style project and personal management tool for Nextcloud" : "Nextcloud için Kanban tarzında bir proje ve kişisel yönetim uygulaması",
|
||||
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 🚀 Get your project organized" : "Deste, Nextcloud ile bütünleştirilmiş takımlar için Kanban tarzında bir kişisel planlama ve proje yönetimi uygulamasıdır.\n\n\n- 📥 Görevleri kartlara ekleyerek sıralayabilirsiniz\n- 📄 Markdown ile biçimlendirilmiş notlar ekleyebilirsiniz\n- 🔖 Daha iyi düzenleme için etiketler atayabilirsiniz\n- 👥 Takımınız, arkadaşlarınız ya da aileniz ile paylaşabilirsiniz\n- 🚀 Projelerinizi düzenli tutarak izleyebilirsiniz",
|
||||
@@ -31,6 +41,8 @@
|
||||
"All Boards" : "Tüm Panolar",
|
||||
"Archived boards" : "Arşivlenmiş panolar",
|
||||
"Drop your files here to upload it to the card" : "Karta yüklemek istediğiniz dosyalarınızı sürükleyip buraya bırakın",
|
||||
"Assign to me" : "Bana ata",
|
||||
"Unassign from me" : "Benden atamasını kaldır",
|
||||
"Archive" : "Arşivle",
|
||||
"Unarchive" : "Arşivden Çıkar",
|
||||
"Enter a card title" : "Bir kart başlığı yazın",
|
||||
@@ -48,7 +60,7 @@
|
||||
"Discard share" : "Paylaşımı kaldır",
|
||||
"Update" : "Güncelle",
|
||||
"Create" : "Ekle",
|
||||
"Create a new tag" : "Yeni bir etiket ekle",
|
||||
"Create a new tag" : "Etiket ekle",
|
||||
"Status" : "Durum",
|
||||
"Title" : "Başlık",
|
||||
"Members" : "Üyeler",
|
||||
@@ -59,9 +71,10 @@
|
||||
"Delete board" : "Panoyu sil",
|
||||
"Reset" : "Sıfırla",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Pano silme işlemini geri alır. Yoksa pano zamanlanmış görevin bir sonraki çalışmasında silinir.",
|
||||
"Create new board" : "Yeni pano ekle",
|
||||
"Create new board" : "Pano ekle",
|
||||
"New board title" : "Yeni pano başlığı",
|
||||
"Select an attachment" : "Bir ek dosyası seçin",
|
||||
"Cancel upload" : "Yüklemeyi iptal et",
|
||||
"by" : "Kişi:",
|
||||
"Undo file deletion - Otherwise the file will be deleted during the next cronjob run." : "Dosya silme işlemini geri alır. Yoksa dosya zamanlanmış görevin bir sonraki çalışmasında silinir.",
|
||||
"Undo file deletion" : "Dosya silmeyi geri al",
|
||||
@@ -88,6 +101,6 @@
|
||||
"Shared boards" : "Paylaşılmış panolar",
|
||||
"View more" : "Diğerlerini görüntüle",
|
||||
"Move board to archive" : "Panoyu arşive taşı",
|
||||
"Create a new board" : "Yeni bir pano ekle"
|
||||
"Create a new board" : "Pano ekle"
|
||||
},"pluralForm" :"nplurals=2; plural=(n > 1);"
|
||||
}
|
||||
@@ -61,6 +61,10 @@ class Application extends App {
|
||||
return $container->getServer()->getConfig()->getSystemValue('dbtype', 'sqlite');
|
||||
});
|
||||
|
||||
$container->registerService('database4ByteSupport', function($container) {
|
||||
return $container->getServer()->getDatabaseConnection()->supports4ByteText();
|
||||
});
|
||||
|
||||
// Delete user/group acl entries when they get deleted
|
||||
/** @var IUserManager $userManager */
|
||||
$userManager = $server->getUserManager();
|
||||
|
||||
@@ -23,17 +23,30 @@
|
||||
|
||||
namespace OCA\Deck\Controller;
|
||||
|
||||
use OCA\Deck\Service\DefaultBoardService;
|
||||
use OCP\IRequest;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\IL10N;
|
||||
|
||||
class PageController extends Controller {
|
||||
|
||||
private $defaultBoardService;
|
||||
private $userId;
|
||||
private $l10n;
|
||||
|
||||
public function __construct($AppName, IRequest $request, $userId) {
|
||||
public function __construct(
|
||||
$AppName,
|
||||
IRequest $request,
|
||||
DefaultBoardService $defaultBoardService,
|
||||
IL10N $l10n,
|
||||
$userId
|
||||
) {
|
||||
parent::__construct($AppName, $request);
|
||||
|
||||
$this->userId = $userId;
|
||||
$this->defaultBoardService = $defaultBoardService;
|
||||
$this->l10n = $l10n;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -46,8 +59,13 @@ class PageController extends Controller {
|
||||
public function index() {
|
||||
$params = [
|
||||
'user' => $this->userId,
|
||||
'maxUploadSize' => \OCP\Util::uploadLimit(),
|
||||
'maxUploadSize' => (int)\OCP\Util::uploadLimit(),
|
||||
];
|
||||
|
||||
if ($this->defaultBoardService->checkFirstRun($this->userId, $this->appName)) {
|
||||
$this->defaultBoardService->createDefaultBoard($this->l10n->t('Personal'), $this->userId, '000000');
|
||||
}
|
||||
|
||||
return new TemplateResponse('deck', 'main', $params);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,29 +38,40 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
|
||||
/** @var IManager */
|
||||
private $notificationManager;
|
||||
private $databaseType;
|
||||
private $database4ByteSupport;
|
||||
|
||||
public function __construct(
|
||||
IDBConnection $db,
|
||||
LabelMapper $labelMapper,
|
||||
IUserManager $userManager,
|
||||
IManager $notificationManager,
|
||||
$databaseType = 'sqlite'
|
||||
$databaseType = 'sqlite',
|
||||
$database4ByteSupport = true
|
||||
) {
|
||||
parent::__construct($db, 'deck_cards', Card::class);
|
||||
$this->labelMapper = $labelMapper;
|
||||
$this->userManager = $userManager;
|
||||
$this->notificationManager = $notificationManager;
|
||||
$this->databaseType = $databaseType;
|
||||
$this->database4ByteSupport = $database4ByteSupport;
|
||||
}
|
||||
|
||||
public function insert(Entity $entity) {
|
||||
$entity->setDatabaseType($this->databaseType);
|
||||
$entity->setCreatedAt(time());
|
||||
$entity->setLastModified(time());
|
||||
if (!$this->database4ByteSupport) {
|
||||
$description = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $entity->getDescription());
|
||||
$entity->setDescription($description);
|
||||
}
|
||||
return parent::insert($entity);
|
||||
}
|
||||
|
||||
public function update(Entity $entity, $updateModified = true) {
|
||||
if (!$this->database4ByteSupport) {
|
||||
$description = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $entity->getDescription());
|
||||
$entity->setDescription($description);
|
||||
}
|
||||
$entity->setDatabaseType($this->databaseType);
|
||||
|
||||
if ($updateModified) {
|
||||
|
||||
@@ -94,6 +94,24 @@ class NotificationHelper {
|
||||
$this->cardMapper->markNotified($card);
|
||||
}
|
||||
|
||||
public function sendCardAssigned($card, $userId) {
|
||||
$boardId = $this->cardMapper->findBoardId($card->getId());
|
||||
$board = $this->getBoard($boardId);
|
||||
|
||||
$notification = $this->notificationManager->createNotification();
|
||||
$notification
|
||||
->setApp('deck')
|
||||
->setUser((string) $userId)
|
||||
->setDateTime(new DateTime())
|
||||
->setObject('card', $card->getId())
|
||||
->setSubject('card-assigned', [
|
||||
$card->getTitle(),
|
||||
$board->getTitle(),
|
||||
$this->currentUser
|
||||
]);
|
||||
$this->notificationManager->notify($notification);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send notifications that a board was shared with a user/group
|
||||
*
|
||||
|
||||
@@ -73,6 +73,30 @@ class Notifier implements INotifier {
|
||||
$params = $notification->getSubjectParameters();
|
||||
|
||||
switch ($notification->getSubject()) {
|
||||
case 'card-assigned':
|
||||
$cardId = $notification->getObjectId();
|
||||
$boardId = $this->cardMapper->findBoardId($cardId);
|
||||
$initiator = $this->userManager->get($params[2]);
|
||||
if ($initiator !== null) {
|
||||
$dn = $initiator->getDisplayName();
|
||||
} else {
|
||||
$dn = $params[2];
|
||||
}
|
||||
$notification->setParsedSubject(
|
||||
(string) $l->t('The card "%s" on "%s" has been assigned to you by %s.', [$params[0], $params[1], $dn])
|
||||
);
|
||||
$notification->setRichSubject(
|
||||
(string) $l->t('{user} has assigned the card "%s" on "%s" to you.', [$params[0], $params[1]]),
|
||||
[
|
||||
'user' => [
|
||||
'type' => 'user',
|
||||
'id' => $params[2],
|
||||
'name' => $dn,
|
||||
]
|
||||
]
|
||||
);
|
||||
$notification->setLink($this->url->linkToRouteAbsolute('deck.page.index') . '#!/board/' . $boardId . '//card/' . $cardId . '');
|
||||
break;
|
||||
case 'card-overdue':
|
||||
$cardId = $notification->getObjectId();
|
||||
$boardId = $this->cardMapper->findBoardId($cardId);
|
||||
|
||||
@@ -29,6 +29,7 @@ use OCA\Deck\Db\Card;
|
||||
use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\Acl;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\Notification\NotificationHelper;
|
||||
use OCA\Deck\NotFoundException;
|
||||
use OCA\Deck\StatusException;
|
||||
|
||||
@@ -39,16 +40,20 @@ class CardService {
|
||||
private $stackMapper;
|
||||
private $permissionService;
|
||||
private $boardService;
|
||||
private $notificationHelper;
|
||||
private $assignedUsersMapper;
|
||||
private $attachmentService;
|
||||
private $currentUser;
|
||||
|
||||
public function __construct(CardMapper $cardMapper, StackMapper $stackMapper, PermissionService $permissionService, BoardService $boardService, AssignedUsersMapper $assignedUsersMapper, AttachmentService $attachmentService) {
|
||||
public function __construct(CardMapper $cardMapper, StackMapper $stackMapper, PermissionService $permissionService, BoardService $boardService, NotificationHelper $notificationHelper, AssignedUsersMapper $assignedUsersMapper, AttachmentService $attachmentService, $userId) {
|
||||
$this->cardMapper = $cardMapper;
|
||||
$this->stackMapper = $stackMapper;
|
||||
$this->permissionService = $permissionService;
|
||||
$this->boardService = $boardService;
|
||||
$this->notificationHelper = $notificationHelper;
|
||||
$this->assignedUsersMapper = $assignedUsersMapper;
|
||||
$this->attachmentService = $attachmentService;
|
||||
$this->currentUser = $userId;
|
||||
}
|
||||
|
||||
public function find($cardId) {
|
||||
@@ -195,12 +200,20 @@ class CardService {
|
||||
}
|
||||
|
||||
public function assignUser($cardId, $userId) {
|
||||
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_EDIT);
|
||||
$assignments = $this->assignedUsersMapper->find($cardId);
|
||||
foreach ($assignments as $assignment) {
|
||||
if ($assignment->getParticipant() === $userId) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($userId !== $this->currentUser) {
|
||||
/* Notifyuser about the card assignment */
|
||||
$card = $this->cardMapper->find($cardId);
|
||||
$this->notificationHelper->sendCardAssigned($card, $userId);
|
||||
}
|
||||
|
||||
$assignment = new AssignedUsers();
|
||||
$assignment->setCardId($cardId);
|
||||
$assignment->setParticipant($userId);
|
||||
@@ -208,6 +221,7 @@ class CardService {
|
||||
}
|
||||
|
||||
public function unassignUser($cardId, $userId) {
|
||||
$this->permissionService->checkPermission($this->cardMapper, $cardId, Acl::PERMISSION_EDIT);
|
||||
$assignments = $this->assignedUsersMapper->find($cardId);
|
||||
foreach ($assignments as $assignment) {
|
||||
if ($assignment->getParticipant() === $userId) {
|
||||
|
||||
88
lib/Service/DefaultBoardService.php
Normal file
88
lib/Service/DefaultBoardService.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Deck\Service;
|
||||
|
||||
use OCA\Deck\Db\BoardMapper;
|
||||
use OCA\Deck\Service\BoardService;
|
||||
use OCA\Deck\Service\StackService;
|
||||
use OCA\Deck\Service\CardService;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
|
||||
class DefaultBoardService {
|
||||
|
||||
private $boardMapper;
|
||||
private $boardService;
|
||||
private $stackService;
|
||||
private $cardService;
|
||||
private $config;
|
||||
private $l10n;
|
||||
|
||||
public function __construct(
|
||||
IL10N $l10n,
|
||||
BoardMapper $boardMapper,
|
||||
BoardService $boardService,
|
||||
StackService $stackService,
|
||||
CardService $cardService,
|
||||
IConfig $config
|
||||
) {
|
||||
|
||||
$this->boardService = $boardService;
|
||||
$this->stackService = $stackService;
|
||||
$this->cardService = $cardService;
|
||||
$this->config = $config;
|
||||
$this->boardMapper = $boardMapper;
|
||||
$this->l10n = $l10n;
|
||||
}
|
||||
|
||||
public function checkFirstRun($userId, $appName) {
|
||||
$firstRun = $this->config->getUserValue($userId, $appName, 'firstRun', 'yes');
|
||||
$userBoards = $this->boardMapper->findAllByUser($userId);
|
||||
|
||||
if ($firstRun === 'yes' && count($userBoards) === 0) {
|
||||
$this->config->setUserValue($userId, $appName, 'firstRun', 'no');
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function createDefaultBoard($title, $userId, $color) {
|
||||
$defaultBoard = $this->boardService->create($title, $userId, $color);
|
||||
$defaultStacks = [];
|
||||
$defaultCards = [];
|
||||
|
||||
$boardId = $defaultBoard->getId();
|
||||
|
||||
$defaultStacks[] = $this->stackService->create($this->l10n->t('To do'), $boardId, 1);
|
||||
$defaultStacks[] = $this->stackService->create($this->l10n->t('Doing'), $boardId, 1);
|
||||
$defaultStacks[] = $this->stackService->create($this->l10n->t('Done'), $boardId, 1);
|
||||
|
||||
$defaultCards[] = $this->cardService->create($this->l10n->t('Example Task 3'), $defaultStacks[0]->getId(), 'text', 0, $userId);
|
||||
$defaultCards[] = $this->cardService->create($this->l10n->t('Example Task 2'), $defaultStacks[1]->getId(), 'text', 0, $userId);
|
||||
$defaultCards[] = $this->cardService->create($this->l10n->t('Example Task 1'), $defaultStacks[2]->getId(), 'text', 0, $userId);
|
||||
|
||||
return $defaultBoard;
|
||||
}
|
||||
}
|
||||
@@ -29,12 +29,16 @@ use OCA\Deck\StatusException;
|
||||
use OCP\AppFramework\Http\ContentSecurityPolicy;
|
||||
use OCP\AppFramework\Http\EmptyContentSecurityPolicy;
|
||||
use OCP\AppFramework\Http\FileDisplayResponse;
|
||||
use OCP\AppFramework\Http\StreamResponse;
|
||||
use OCP\Files\Cache\IScanner;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\NotPermittedException;
|
||||
use OCP\Files\SimpleFS\ISimpleFile;
|
||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\ILogger;
|
||||
use OCP\IRequest;
|
||||
@@ -45,17 +49,23 @@ class FileService implements IAttachmentService {
|
||||
private $appData;
|
||||
private $request;
|
||||
private $logger;
|
||||
private $rootFolder;
|
||||
private $config;
|
||||
|
||||
public function __construct(
|
||||
IL10N $l10n,
|
||||
IAppData $appData,
|
||||
IRequest $request,
|
||||
ILogger $logger
|
||||
ILogger $logger,
|
||||
IRootFolder $rootFolder,
|
||||
IConfig $config
|
||||
) {
|
||||
$this->l10n = $l10n;
|
||||
$this->appData = $appData;
|
||||
$this->request = $request;
|
||||
$this->logger = $logger;
|
||||
$this->rootFolder = $rootFolder;
|
||||
$this->config = $config;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -174,9 +184,32 @@ class FileService implements IAttachmentService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Workaround until ISimpleFile can be fetched as a resource
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function getFileFromRootFolder(Attachment $attachment) {
|
||||
$folderName = 'file-card-' . (int)$attachment->getCardId();
|
||||
$instanceId = $this->config->getSystemValue('instanceid', null);
|
||||
if ($instanceId === null) {
|
||||
throw new \Exception('no instance id!');
|
||||
}
|
||||
$name = 'appdata_' . $instanceId;
|
||||
$appDataFolder = $this->rootFolder->get($name);
|
||||
$appDataFolder = $appDataFolder->get('deck');
|
||||
$cardFolder = $appDataFolder->get($folderName);
|
||||
return $cardFolder->get($attachment->getData());
|
||||
}
|
||||
|
||||
public function display(Attachment $attachment) {
|
||||
$file = $this->getFileForAttachment($attachment);
|
||||
$response = new FileDisplayResponse($file);
|
||||
$file = $this->getFileFromRootFolder($attachment);
|
||||
if (method_exists($file, 'fopen')) {
|
||||
$response = new StreamResponse($file->fopen('r'));
|
||||
$response->addHeader('Content-Disposition', 'inline; filename="' . rawurldecode($file->getName()) . '"');
|
||||
} else {
|
||||
$response = new FileDisplayResponse($file);
|
||||
}
|
||||
if ($file->getMimeType() === 'application/pdf') {
|
||||
// We need those since otherwise chrome won't show the PDF file with CSP rule object-src 'none'
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=271452
|
||||
|
||||
@@ -28,32 +28,30 @@ Util::addScript('deck', 'build/vendor');
|
||||
|
||||
Util::addStyle('deck', 'style');
|
||||
Util::addScript('deck', 'build/deck');
|
||||
|
||||
if (\OC_Util::getVersion()[0] < 14) {
|
||||
Util::addStyle('deck', 'comp-13');
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="app" class="app-deck" data-ng-app="Deck" ng-controller="AppController" ng-cloak config="<?php p(json_encode($_)); ?>">
|
||||
<div class="app app-deck" data-ng-app="Deck" ng-controller="AppController" ng-cloak config="<?php p(json_encode($_)); ?>" ng-class="{'app-navigation-hide': appNavigationHide}">
|
||||
|
||||
<div id="app-navigation" data-ng-controller="ListController" ng-init="initSidebar()">
|
||||
<?php print_unescaped($this->inc('part.navigation')); ?>
|
||||
<?php /* print_unescaped($this->inc('part.settings')); */ ?>
|
||||
</div>
|
||||
<div id="app-content" ng-class="{ 'details-visible': sidebar.show }">
|
||||
<div ui-view></div>
|
||||
</div>
|
||||
<div id="app-content" ng-class="{ 'details-visible': sidebar.show }"><div id="app-navigation-toggle-custom" class="icon-menu" ng-click="toggleSidebar()"></div><div ui-view></div></div>
|
||||
<div id="app-sidebar" ng-class="{ 'details-visible': sidebar.show }" ng-if="sidebar.show" class="details-view scroll-container" ui-view="sidebarView"></div>
|
||||
<route-loading-indicator></route-loading-indicator>
|
||||
|
||||
|
||||
|
||||
<script type="text/ng-template" id="/boardlist.mainView.html">
|
||||
<?php print_unescaped($this->inc('part.boardlist')); ?>
|
||||
</script>
|
||||
<script type="text/ng-template" id="/board.sidebarView.html">
|
||||
<?php print_unescaped($this->inc('part.board.sidebarView')); ?>
|
||||
</script>
|
||||
<script type="text/ng-template" id="/board.mainView.html">
|
||||
<?php print_unescaped($this->inc('part.board.mainView')); ?>
|
||||
</script>
|
||||
<script type="text/ng-template" id="/board.html">
|
||||
<?php print_unescaped($this->inc('part.board')); ?>
|
||||
<?php print_unescaped($this->inc('part.board.mainView')); ?>
|
||||
</script>
|
||||
<script type="text/ng-template" id="/card.sidebarView.html">
|
||||
<?php print_unescaped($this->inc('part.card')); ?>
|
||||
@@ -62,4 +60,4 @@ Util::addScript('deck', 'build/deck');
|
||||
<?php print_unescaped($this->inc('part.card.attachments')); ?>
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
|
||||
<div id="board" class="scroll-container" ng-click="sidebar.show=false" ui-sref="board" ng-class="{'card-selected': params.cardId}">
|
||||
{{ cardOpen }}
|
||||
<search on-search="search" class="ng-hide"></search>
|
||||
|
||||
<div id="innerBoard" data-ng-model="stacks" data-as-sortable="sortOptionsStack">
|
||||
@@ -53,7 +52,7 @@
|
||||
</form>
|
||||
<button class="icon-delete button-inline stack-actions"
|
||||
ng-if="!s.status.editStack"
|
||||
ng-click="stackservice.delete(s.id)"></button>
|
||||
ng-click="stackservice.delete(s.id)"></button>
|
||||
</h3>
|
||||
<ul data-as-sortable="sortOptions" is-disabled="!boardservice.canEdit() || filter==='archive'" data-ng-model="s.cards" class="card-list" ng-class="{emptyStack: !s.cards.length}">
|
||||
<li class="card as-sortable-item"
|
||||
@@ -101,6 +100,18 @@
|
||||
<button class="button-inline card-options icon-more" ng-model="card"></button>
|
||||
<div class="popovermenu hidden">
|
||||
<ul>
|
||||
<li ng-if="!isCurrentUserAssigned(c)">
|
||||
<a class="menuitem action action-rename permanent"
|
||||
data-action="AssignToMe"
|
||||
ng-click="cardAssignToMe(c); $event.stopPropagation();"><span
|
||||
class="icon icon-user"></span><span><?php p($l->t('Assign to me')); ?></span></a>
|
||||
</li>
|
||||
<li ng-if="isCurrentUserAssigned(c)">
|
||||
<a class="menuitem action action-rename permanent"
|
||||
data-action="UnassignFromMe"
|
||||
ng-click="cardUnassignFromMe(c); $event.stopPropagation();"><span
|
||||
class="icon icon-user"></span><span><?php p($l->t('Unassign from me')); ?></span></a>
|
||||
</li>
|
||||
<li ng-if="params.filter!=='archive'">
|
||||
<a class="menuitem action action-rename permanent"
|
||||
data-action="Archive"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<?php print_unescaped($this->inc('part.board.mainView')); ?>
|
||||
<div id="app-sidebar" class="details-view scroll-container"
|
||||
ng-class="{ 'details-visible': sidebar.show }" ui-view="sidebarView">
|
||||
</div>
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="filename">
|
||||
<span class="basename">{{ attachment.file.name }}</span>
|
||||
</div>
|
||||
<progress value="{{ attachment.progress }}" max="100"></progress>
|
||||
<progress ng-attr-value="{{ attachment.progress }}" max="100"></progress>
|
||||
</div>
|
||||
<button class="icon icon-close button-inline" ng-click="attachment.cancel()">
|
||||
<span class="hidden-visually"><?php p($l->t('Cancel upload')); ?></span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div nv-file-drop="" uploader="uploader" class="drop-zone" options="{cardId: cardservice.getCurrent().id}">
|
||||
<div class="drop-indicator" nv-file-over uploader="uploader">
|
||||
<div nv-file-drop="" uploader="fileservice.uploader" class="drop-zone" options="{cardId: cardservice.getCurrent().id}">
|
||||
<div class="drop-indicator" nv-file-over uploader="fileservice.uploader">
|
||||
<p><?php p($l->t('Drop your files here to upload it to the card')); ?></p>
|
||||
</div>
|
||||
<div id="board-status" ng-if="statusservice.active">
|
||||
@@ -53,9 +53,9 @@
|
||||
</ui-select-choices>
|
||||
</ui-select>
|
||||
</div>
|
||||
<div class="section-header">
|
||||
<div class="section-header" ng-click="toggleAssignUser()">
|
||||
<h4><?php p($l->t('Assign users')); ?></h4>
|
||||
<button class="button icon-add" ng-click="toggleAssignUser()"></button>
|
||||
<button class="button icon-add"></button>
|
||||
</div>
|
||||
<div class="section-content card-details-assign-users" ng-if="cardservice.getCurrent()">
|
||||
<ui-select id="assignUserSelect" class="card-details-assign-user" ng-model="status.assignedUser" ng-show="status.showAssignUser" uis-open-close="assingUserOpenClose(isOpen)"
|
||||
@@ -97,8 +97,8 @@
|
||||
<span class="save-indicator saved"><?php p($l->t('Saved')); ?></span>
|
||||
<span class="save-indicator unsaved"><?php p($l->t('Unsaved changes')); ?></span>
|
||||
<a ng-if="params.tab === 0" href="https://github.com/nextcloud/deck/wiki/Markdown-Help" target="_blank" class="icon icon-help" data-toggle="tooltip" data-placement="left" title="<?php p($l->t('Formatting help')); ?>"><span class="hidden-visually"><?php p($l->t('Formatting help')); ?></span></a>
|
||||
<label ng-if="params.tab === 1" for="attachment-upload" class="button icon-upload" ng-class="{'icon-loading-small': uploader.isUploading}" data-toggle="tooltip" data-placement="left" title="<?php p($l->t('Upload attachment')); ?>"></label>
|
||||
<input id="attachment-upload" type="file" nv-file-select="" uploader="uploader" class="hidden" options="{cardId: cardservice.getCurrent().id}"/>
|
||||
<label ng-if="params.tab === 1" for="attachment-upload" class="button icon-upload" ng-class="{'icon-loading-small': fileservice.uploader.isUploading}" data-toggle="tooltip" data-placement="left" title="<?php p($l->t('Upload attachment')); ?>"></label>
|
||||
<input id="attachment-upload" type="file" nv-file-select="" uploader="fileservice.uploader" class="hidden" options="{cardId: cardservice.getCurrent().id}"/>
|
||||
<input ng-if="status.cardEditDescription" type="button" ng-mousedown="status.continueEdit = true; status.selectAttachment = true;" class="icon-files-dark" data-toggle="tooltip" data-placement="left" title="<?php p($l->t('Insert attachment')); ?>"/>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -184,6 +184,49 @@ class NotificationHelperTest extends \Test\TestCase {
|
||||
$this->notificationHelper->sendCardDuedate($card);
|
||||
}
|
||||
|
||||
public function testSendCardAssignedUser() {
|
||||
$board = new Board();
|
||||
$board->setId(123);
|
||||
$board->setTitle('MyBoardTitle');
|
||||
$this->boardMapper->expects($this->once())
|
||||
->method('find')
|
||||
->with(123)
|
||||
->willReturn($board);
|
||||
|
||||
$acl = new Acl();
|
||||
$acl->setParticipant('admin');
|
||||
$acl->setType(Acl::PERMISSION_TYPE_USER);
|
||||
|
||||
$card = new Card();
|
||||
$card->setTitle('MyCardTitle');
|
||||
$card->setOwner('admin');
|
||||
$card->setStackId(123);
|
||||
$card->setOrder(999);
|
||||
$card->setType('text');
|
||||
$card->setId(1337);
|
||||
$card->setAssignedUsers(['userA']);
|
||||
$this->cardMapper->expects($this->once())
|
||||
->method('findBoardId')
|
||||
->with(1337)
|
||||
->willReturn(123);
|
||||
|
||||
$notification = $this->createMock(INotification::class);
|
||||
$notification->expects($this->once())->method('setApp')->with('deck')->willReturn($notification);
|
||||
$notification->expects($this->once())->method('setUser')->with('userA')->willReturn($notification);
|
||||
$notification->expects($this->once())->method('setObject')->with('card', 1337)->willReturn($notification);
|
||||
$notification->expects($this->once())->method('setSubject')->with('card-assigned', ['MyCardTitle', 'MyBoardTitle', 'admin'])->willReturn($notification);
|
||||
$notification->expects($this->once())->method('setDateTime')->willReturn($notification);
|
||||
|
||||
$this->notificationManager->expects($this->at(0))
|
||||
->method('createNotification')
|
||||
->willReturn($notification);
|
||||
$this->notificationManager->expects($this->at(1))
|
||||
->method('notify')
|
||||
->with($notification);
|
||||
|
||||
$this->notificationHelper->sendCardAssigned($card, 'userA');
|
||||
}
|
||||
|
||||
public function testSendBoardSharedUser() {
|
||||
$board = new Board();
|
||||
$board->setId(123);
|
||||
|
||||
@@ -129,11 +129,82 @@ class UnknownUserTest extends \Test\TestCase {
|
||||
|
||||
}
|
||||
|
||||
public function dataPrepareCardAssigned() {
|
||||
return [
|
||||
[true], [false]
|
||||
];
|
||||
}
|
||||
|
||||
/** @dataProvider dataPrepareCardAssigned */
|
||||
public function testPrepareCardAssigned($withUserFound = true) {
|
||||
/** @var INotification $notification */
|
||||
$notification = $this->createMock(INotification::class);
|
||||
$notification->expects($this->once())
|
||||
->method('getApp')
|
||||
->willReturn('deck');
|
||||
|
||||
$notification->expects($this->once())
|
||||
->method('getSubjectParameters')
|
||||
->willReturn(['Card title','Board title', 'otheruser']);
|
||||
|
||||
$notification->expects($this->once())
|
||||
->method('getSubject')
|
||||
->willReturn('card-assigned');
|
||||
$notification->expects($this->once())
|
||||
->method('getObjectId')
|
||||
->willReturn('123');
|
||||
if ($withUserFound) {
|
||||
$user = $this->createMock(IUser::class);
|
||||
$user->expects($this->any())
|
||||
->method('getDisplayName')
|
||||
->willReturn('Other User');
|
||||
$dn = 'Other User';
|
||||
} else {
|
||||
$user = null;
|
||||
$dn = 'otheruser';
|
||||
}
|
||||
$this->userManager->expects($this->once())
|
||||
->method('get')
|
||||
->with('otheruser')
|
||||
->willReturn($user);
|
||||
|
||||
$expectedMessage = 'The card "Card title" on "Board title" has been assigned to you by '.$dn.'.';
|
||||
$notification->expects($this->once())
|
||||
->method('setParsedSubject')
|
||||
->with($expectedMessage);
|
||||
$notification->expects($this->once())
|
||||
->method('setRichSubject')
|
||||
->with('{user} has assigned the card "Card title" on "Board title" to you.', [
|
||||
'user' => [
|
||||
'type' => 'user',
|
||||
'id' => 'otheruser',
|
||||
'name' => $dn,
|
||||
]
|
||||
]);
|
||||
|
||||
$this->url->expects($this->once())
|
||||
->method('imagePath')
|
||||
->with('deck', 'deck-dark.svg')
|
||||
->willReturn('deck-dark.svg');
|
||||
$this->url->expects($this->once())
|
||||
->method('getAbsoluteURL')
|
||||
->with('deck-dark.svg')
|
||||
->willReturn('/absolute/deck-dark.svg');
|
||||
$notification->expects($this->once())
|
||||
->method('setIcon')
|
||||
->with('/absolute/deck-dark.svg');
|
||||
|
||||
$actualNotification = $this->notifier->prepare($notification, 'en_US');
|
||||
|
||||
$this->assertEquals($notification, $actualNotification);
|
||||
}
|
||||
|
||||
public function dataPrepareBoardShared() {
|
||||
return [
|
||||
[true], [false]
|
||||
];
|
||||
}
|
||||
|
||||
/** @dataProvider dataPrepareBoardShared */
|
||||
public function testPrepareBoardShared($withUserFound = true) {
|
||||
/** @var INotification $notification */
|
||||
|
||||
@@ -30,6 +30,7 @@ use OCA\Deck\Db\Card;
|
||||
use OCA\Deck\Db\CardMapper;
|
||||
use OCA\Deck\Db\StackMapper;
|
||||
use OCA\Deck\NotFoundException;
|
||||
use OCA\Deck\Notification\NotificationHelper;
|
||||
use OCA\Deck\StatusException;
|
||||
use Test\TestCase;
|
||||
|
||||
@@ -43,6 +44,8 @@ class CardServiceTest extends TestCase {
|
||||
private $stackMapper;
|
||||
/** @var PermissionService|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $permissionService;
|
||||
/** @var NotificationHelper */
|
||||
private $notificationHelper;
|
||||
/** @var AssignedUsersMapper|\PHPUnit\Framework\MockObject\MockObject */
|
||||
private $assignedUsersMapper;
|
||||
/** @var BoardService|\PHPUnit\Framework\MockObject\MockObject */
|
||||
@@ -54,9 +57,10 @@ class CardServiceTest extends TestCase {
|
||||
$this->stackMapper = $this->createMock(StackMapper::class);
|
||||
$this->permissionService = $this->createMock(PermissionService::class);
|
||||
$this->boardService = $this->createMock(BoardService::class);
|
||||
$this->notificationHelper = $this->createMock(NotificationHelper::class);
|
||||
$this->assignedUsersMapper = $this->createMock(AssignedUsersMapper::class);
|
||||
$this->attachmentService = $this->createMock(AttachmentService::class);
|
||||
$this->cardService = new CardService($this->cardMapper, $this->stackMapper, $this->permissionService, $this->boardService, $this->assignedUsersMapper, $this->attachmentService);
|
||||
$this->cardService = new CardService($this->cardMapper, $this->stackMapper, $this->permissionService, $this->boardService, $this->notificationHelper, $this->assignedUsersMapper, $this->attachmentService, 'userXY');
|
||||
}
|
||||
|
||||
public function testFind() {
|
||||
|
||||
195
tests/unit/Service/DefaultBoardServiceTest.php
Normal file
195
tests/unit/Service/DefaultBoardServiceTest.php
Normal file
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2018 Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace OCA\Deck\Service;
|
||||
|
||||
use OCA\Deck\Db\Card;
|
||||
use OCA\Deck\Db\Board;
|
||||
use OCA\Deck\Db\Stack;
|
||||
use OCA\Deck\Db\BoardMapper;
|
||||
use OCA\Deck\Service\DefaultBoardService;
|
||||
use OCA\Deck\Service\BoardService;
|
||||
use OCA\Deck\Service\StackService;
|
||||
use OCA\Deck\Service\CardService;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use \Test\TestCase;
|
||||
|
||||
class DefaultBoardServiceTest extends TestCase {
|
||||
|
||||
/** @var DefaultBoardService */
|
||||
private $service;
|
||||
|
||||
/** @var BoardService */
|
||||
private $boardService;
|
||||
|
||||
/** @var StackService */
|
||||
private $stackService;
|
||||
|
||||
/** @var CardService */
|
||||
private $cardService;
|
||||
|
||||
/** @var BoardMapper */
|
||||
private $boardMapper;
|
||||
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
|
||||
private $l10n;
|
||||
|
||||
private $userId = 'admin';
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
$this->boardMapper = $this->createMock(BoardMapper::class);
|
||||
$this->boardService = $this->createMock(BoardService::class);
|
||||
$this->stackService = $this->createMock(StackService::class);
|
||||
$this->cardService = $this->createMock(CardService::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->l10n = $this->createMock(IL10N::class);
|
||||
|
||||
$this->service = new DefaultBoardService(
|
||||
$this->l10n,
|
||||
$this->boardMapper,
|
||||
$this->boardService,
|
||||
$this->stackService,
|
||||
$this->cardService,
|
||||
$this->config
|
||||
);
|
||||
}
|
||||
|
||||
public function testCheckFirstRunCaseTrue() {
|
||||
$appName = 'deck';
|
||||
$userBoards = [];
|
||||
|
||||
$this->config->expects($this->once())
|
||||
->method('getUserValue')
|
||||
->willReturn('yes');
|
||||
|
||||
$this->boardMapper->expects($this->once())
|
||||
->method('findAllByUser')
|
||||
->willReturn($userBoards);
|
||||
|
||||
$this->config->expects($this->once())
|
||||
->method('setUserValue');
|
||||
|
||||
$result = $this->service->checkFirstRun($this->userId, $appName);
|
||||
$this->assertEquals($result, true);
|
||||
}
|
||||
|
||||
public function testCheckFirstRunCaseFalse() {
|
||||
$appName = 'deck';
|
||||
$board = new Board();
|
||||
$board->setTitle('Personal');
|
||||
$board->setOwner($this->userId);
|
||||
$board->setColor('000000');
|
||||
|
||||
$userBoards = [$board];
|
||||
|
||||
$this->config->expects($this->once())
|
||||
->method('getUserValue')
|
||||
->willReturn('no');
|
||||
|
||||
$this->boardMapper->expects($this->once())
|
||||
->method('findAllByUser')
|
||||
->willReturn($userBoards);
|
||||
|
||||
$result = $this->service->checkFirstRun($this->userId, $appName);
|
||||
$this->assertEquals($result, false);
|
||||
}
|
||||
|
||||
public function testCreateDefaultBoard() {
|
||||
$title = 'Personal';
|
||||
$color = '000000';
|
||||
$boardId = 5;
|
||||
|
||||
$board = new Board();
|
||||
$board->setId($boardId);
|
||||
$board->setTitle($title);
|
||||
$board->setOwner($this->userId);
|
||||
$board->setColor($color);
|
||||
$this->boardService->expects($this->once())
|
||||
->method('create')
|
||||
->willReturn($board);
|
||||
|
||||
$this->l10n->expects($this->any())
|
||||
->method('t')
|
||||
->willReturnCallback(function($text) { return $text; });
|
||||
|
||||
$stackToDoId = '123';
|
||||
$stackToDo = $this->assembleTestStack('To do', $stackToDoId, $boardId);
|
||||
|
||||
$stackDoingId = '124';
|
||||
$stackDoing = $this->assembleTestStack('Doing', $stackDoingId, $boardId);
|
||||
|
||||
$stackDoneId = '125';
|
||||
$stackDone = $this->assembleTestStack('Done', $stackDoneId, $boardId);
|
||||
$this->stackService->expects($this->exactly(3))
|
||||
->method('create')
|
||||
->withConsecutive(
|
||||
[$this->l10n->t('To do'), $boardId, 1],
|
||||
[$this->l10n->t('Doing'), $boardId, 1],
|
||||
[$this->l10n->t('Done'), $boardId, 1]
|
||||
)
|
||||
->willReturnOnConsecutiveCalls($stackToDo, $stackDoing, $stackDone);
|
||||
|
||||
$cardExampleTask3 = $this->assembleTestCard('Example Task 3', $stackToDoId, $this->userId);
|
||||
$cardExampleTask2 = $this->assembleTestCard('Example Task 2', $stackDoingId, $this->userId);
|
||||
$cardExampleTask1 = $this->assembleTestCard('Example Task 1', $stackDoneId, $this->userId);
|
||||
$this->cardService->expects($this->exactly(3))
|
||||
->method('create')
|
||||
->withConsecutive(
|
||||
['Example Task 3', $stackToDoId, 'text', 0, $this->userId],
|
||||
['Example Task 2', $stackDoingId, 'text', 0, $this->userId],
|
||||
['Example Task 1', $stackDoneId, 'text', 0, $this->userId]
|
||||
)
|
||||
->willReturnonConsecutiveCalls($cardExampleTask3, $cardExampleTask2, $cardExampleTask1);
|
||||
|
||||
$result = $this->service->createDefaultBoard($title, $this->userId, $color);
|
||||
|
||||
$this->assertEquals($result->getTitle(), $title);
|
||||
$this->assertEquals($result->getOwner(), $this->userId);
|
||||
$this->assertEquals($result->getColor(), $color);
|
||||
}
|
||||
|
||||
private function assembleTestStack($title, $id, $boardId) {
|
||||
$stack = new Stack();
|
||||
$stack->setId($id);
|
||||
$stack->setTitle($title);
|
||||
$stack->setBoardId($boardId);
|
||||
$stack->setOrder(1);
|
||||
|
||||
return $stack;
|
||||
}
|
||||
|
||||
private function assembleTestCard($title, $stackId, $userId) {
|
||||
$card = new Card();
|
||||
$card->setTitle($title);
|
||||
$card->setStackId($stackId);
|
||||
$card->setType('text');
|
||||
$card->setOrder(0);
|
||||
$card->setOwner($userId);
|
||||
|
||||
return $card;
|
||||
}
|
||||
}
|
||||
@@ -38,11 +38,15 @@ use OCA\Deck\StatusException;
|
||||
use OCP\AppFramework\Http\ContentSecurityPolicy;
|
||||
use OCP\AppFramework\Http\FileDisplayResponse;
|
||||
use OCP\AppFramework\Http\Response;
|
||||
use OCP\AppFramework\Http\StreamResponse;
|
||||
use OCP\AppFramework\IAppContainer;
|
||||
use OCP\Files\Folder;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\SimpleFS\ISimpleFile;
|
||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\ILogger;
|
||||
use OCP\IRequest;
|
||||
@@ -61,6 +65,10 @@ class FileServiceTest extends TestCase {
|
||||
private $logger;
|
||||
/** @var FileService */
|
||||
private $fileService;
|
||||
/** @var IRootFolder */
|
||||
private $rootFolder;
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
@@ -68,7 +76,9 @@ class FileServiceTest extends TestCase {
|
||||
$this->appData = $this->createMock(IAppData::class);
|
||||
$this->l10n = $this->createMock(IL10N::class);
|
||||
$this->logger = $this->createMock(ILogger::class);
|
||||
$this->fileService = new FileService($this->l10n, $this->appData, $this->request, $this->logger);
|
||||
$this->rootFolder = $this->createMock(IRootFolder::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->fileService = new FileService($this->l10n, $this->appData, $this->request, $this->logger, $this->rootFolder, $this->config);
|
||||
}
|
||||
|
||||
public function mockGetFolder($cardId) {
|
||||
@@ -253,33 +263,60 @@ class FileServiceTest extends TestCase {
|
||||
}
|
||||
|
||||
public function testDisplay() {
|
||||
$this->config->expects($this->once())
|
||||
->method('getSystemValue')
|
||||
->willReturn('123');
|
||||
$appDataFolder = $this->createMock(Folder::class);
|
||||
$deckAppDataFolder = $this->createMock(Folder::class);
|
||||
$cardFolder = $this->createMock(Folder::class);
|
||||
$this->rootFolder->expects($this->once())->method('get')->willReturn($appDataFolder);
|
||||
$appDataFolder->expects($this->once())->method('get')->willReturn($deckAppDataFolder);
|
||||
$deckAppDataFolder->expects($this->once())->method('get')->willReturn($cardFolder);
|
||||
$attachment = $this->getAttachment();
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$folder = $this->mockGetFolder('123');
|
||||
$folder->expects($this->once())
|
||||
->method('getFile')
|
||||
->willReturn($file);
|
||||
$file->expects($this->exactly(2))
|
||||
$file = $this->createMock(\OCP\Files\File::class);
|
||||
$cardFolder->expects($this->once())->method('get')->willReturn($file);
|
||||
$file->expects($this->any())
|
||||
->method('getMimeType')
|
||||
->willReturn('image/jpeg');
|
||||
$file->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('file1');
|
||||
$file->expects($this->any())
|
||||
->method('fopen')
|
||||
->willReturn('fileresource');
|
||||
$actual = $this->fileService->display($attachment);
|
||||
$expected = new FileDisplayResponse($file);
|
||||
$expected = new StreamResponse('fileresource');
|
||||
$expected->addHeader('Content-Type', 'image/jpeg');
|
||||
$expected->addHeader('Content-Disposition', 'inline; filename="' . rawurldecode($file->getName()) . '"');
|
||||
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
public function testDisplayPdf() {
|
||||
$this->config->expects($this->once())
|
||||
->method('getSystemValue')
|
||||
->willReturn('123');
|
||||
$appDataFolder = $this->createMock(Folder::class);
|
||||
$deckAppDataFolder = $this->createMock(Folder::class);
|
||||
$cardFolder = $this->createMock(Folder::class);
|
||||
$this->rootFolder->expects($this->once())->method('get')->willReturn($appDataFolder);
|
||||
$appDataFolder->expects($this->once())->method('get')->willReturn($deckAppDataFolder);
|
||||
$deckAppDataFolder->expects($this->once())->method('get')->willReturn($cardFolder);
|
||||
$attachment = $this->getAttachment();
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$folder = $this->mockGetFolder('123');
|
||||
$folder->expects($this->once())
|
||||
->method('getFile')
|
||||
->willReturn($file);
|
||||
$file->expects($this->exactly(2))
|
||||
$file = $this->createMock(\OCP\Files\File::class);
|
||||
$cardFolder->expects($this->once())->method('get')->willReturn($file);
|
||||
$file->expects($this->any())
|
||||
->method('getMimeType')
|
||||
->willReturn('application/pdf');
|
||||
$file->expects($this->any())
|
||||
->method('getName')
|
||||
->willReturn('file1');
|
||||
$file->expects($this->any())
|
||||
->method('fopen')
|
||||
->willReturn('fileresource');
|
||||
$actual = $this->fileService->display($attachment);
|
||||
$expected = new FileDisplayResponse($file);
|
||||
$expected = new StreamResponse('fileresource');
|
||||
$expected->addHeader('Content-Disposition', 'inline; filename="' . rawurldecode($file->getName()) . '"');
|
||||
$expected->addHeader('Content-Type', 'application/pdf');
|
||||
$policy = new ContentSecurityPolicy();
|
||||
$policy->addAllowedObjectDomain('\'self\'');
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
* @author Ryan Fletcher <ryan.fletcher@codepassion.ca>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -24,6 +25,9 @@
|
||||
namespace OCA\Deck\Controller;
|
||||
|
||||
use PHPUnit_Framework_TestCase;
|
||||
use OCA\Deck\Service\DefaultBoardService;
|
||||
use OCA\Deck\Db\Board;
|
||||
use OCP\IConfig;
|
||||
|
||||
class PageControllerTest extends \Test\TestCase {
|
||||
|
||||
@@ -31,6 +35,8 @@ class PageControllerTest extends \Test\TestCase {
|
||||
private $request;
|
||||
private $l10n;
|
||||
private $userId = 'john';
|
||||
private $defaultBoardService;
|
||||
private $config;
|
||||
|
||||
public function setUp() {
|
||||
$this->l10n = $this->request = $this->getMockBuilder(
|
||||
@@ -42,16 +48,43 @@ class PageControllerTest extends \Test\TestCase {
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->defaultBoardService = $this->createMock(DefaultBoardService::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
|
||||
$this->controller = new PageController(
|
||||
'deck', $this->request, $this->l10n, $this->userId
|
||||
'deck', $this->request, $this->defaultBoardService, $this->l10n, $this->userId
|
||||
);
|
||||
}
|
||||
|
||||
public function testIndexOnFirstRun() {
|
||||
|
||||
$board = new Board();
|
||||
$board->setTitle('Personal');
|
||||
$board->setOwner($this->userId);
|
||||
$board->setColor('000000');
|
||||
|
||||
$this->defaultBoardService->expects($this->once())
|
||||
->method('checkFirstRun')
|
||||
->willReturn(true);
|
||||
|
||||
$this->defaultBoardService->expects($this->once())
|
||||
->method('createDefaultBoard')
|
||||
->willReturn($board);
|
||||
|
||||
$response = $this->controller->index();
|
||||
$this->assertEquals('main', $response->getTemplateName());
|
||||
}
|
||||
|
||||
public function testIndexOnSecondRun() {
|
||||
|
||||
$this->config->setUserValue($this->userId, 'deck', 'firstRun', 'no');
|
||||
|
||||
$this->defaultBoardService->expects($this->once())
|
||||
->method('checkFirstRun')
|
||||
->willReturn(false);
|
||||
|
||||
public function testIndex() {
|
||||
$response = $this->controller->index();
|
||||
$this->assertEquals('main', $response->getTemplateName());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user