Compare commits

...

28 Commits

Author SHA1 Message Date
Julius Härtl
acc168e174 Merge pull request #384 from nextcloud/prepare-0.3.0
Prepare 0.3.0
2018-01-12 15:12:36 +01:00
Julius Härtl
6998a4a643 Fix jquery exclude
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 14:17:01 +01:00
Julius Härtl
2a6db83804 Bump version to 0.3.0 final and update CHANGELOG
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 10:31:16 +01:00
Julius Härtl
31e4d370c3 Exclude more files from build
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-12 10:28:04 +01:00
Julius Härtl
ce3e979452 Merge pull request #382 from nextcloud/small-prerelease-fixes
Small fixes
2018-01-12 10:16:53 +01:00
Nextcloud bot
4ec2ae2a61 [tx-robot] updated from transifex 2018-01-12 01:17:41 +00:00
Nextcloud bot
904eecd155 [tx-robot] updated from transifex 2018-01-11 01:17:43 +00:00
Julius Härtl
e70045f7d3 Hide "no actions" from current users avatar menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-10 10:54:12 +01:00
Julius Härtl
75f95db0b1 Fix undelete description not being translated
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-10 10:39:31 +01:00
Nextcloud bot
63d29ae533 [tx-robot] updated from transifex 2018-01-10 01:17:12 +00:00
Julius Härtl
59ac632d0e Merge pull request #377 from nextcloud/fix-label-style
Fix label style issue when list of labels is updated
2018-01-08 14:52:17 +01:00
Julius Härtl
b57e8e56fa Merge branch 'master' into fix-label-style 2018-01-08 14:38:42 +01:00
Julius Härtl
5b28365444 Merge pull request #376 from nextcloud/fix-avatar-stuff
Fix avatar issues
2018-01-08 14:38:05 +01:00
Julius Härtl
f55fb90cfa Fix label style issue when list of labels is updated
fixes #373

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 14:37:44 +01:00
Julius Härtl
c517dbdb77 Merge pull request #371 from nextcloud/minor-fixes
Various fixes
2018-01-08 13:44:46 +01:00
Julius Härtl
14d5af683e Show contacts menu for board owner
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 13:42:37 +01:00
Julius Härtl
e1e01c0e0d Unify avatar directive
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 13:35:49 +01:00
Julius Härtl
403629c91a Move unassign button to avatar menu
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-01-08 12:44:15 +01:00
Nextcloud bot
15d642efa4 [tx-robot] updated from transifex 2018-01-04 01:07:56 +00:00
Nextcloud bot
d3d888fb43 [tx-robot] updated from transifex 2017-12-31 01:07:33 +00:00
Nextcloud bot
5ac2b91542 [tx-robot] updated from transifex 2017-12-30 01:07:44 +00:00
Julius Härtl
de4e90b52e Check for undefined type when getting the acl string representation
fixes #367

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:40:31 +01:00
Julius Härtl
dc37dd2c60 Use separate object when editing card descriptions (fixes #369)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:37:57 +01:00
Julius Härtl
5d38f6a176 Fix board bullet opacity (fixes #364)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:20:21 +01:00
Julius Härtl
70d28ec376 Remove duplicate and unused id
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:16:29 +01:00
Julius Härtl
8cec7cb571 Check if board is undefined (fixes #366)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2017-12-22 12:16:08 +01:00
Nextcloud bot
52ac77ea90 [tx-robot] updated from transifex 2017-12-21 01:07:11 +00:00
Nextcloud bot
dd0c26b298 [tx-robot] updated from transifex 2017-12-19 01:07:09 +00:00
43 changed files with 401 additions and 47 deletions

View File

@@ -1,7 +1,7 @@
# Changelog
All notable changes to this project will be documented in this file.
## 0.3.0 - unreleased
## 0.3.0 - 2018-01-12
### Added
- Allow to assign users to cards
@@ -23,6 +23,8 @@ All notable changes to this project will be documented in this file.
- Improve accessibility
- Fix issue when assigning labels after creating them
- Allow to save tag changes with enter
- Fix bug when removing labels changed the color of the remaining ones
- Fix issues with auto saving of card descriptions
## 0.2.8 - 2017-11-26

View File

@@ -14,7 +14,7 @@
- 🚀 Get your project organized
</description>
<version>0.3.0-beta1</version>
<version>0.3.0</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Deck</namespace>

View File

@@ -190,6 +190,10 @@ input.input-inline {
.crumb {
order: 0;
.bullet {
opacity: 1;
}
a:nth-child(2),
a:nth-child(3) {
padding-left: 0;
@@ -720,19 +724,9 @@ input.input-inline {
.avatardiv-container {
margin-right: 5px;
}
.icon-delete {
display: none;
position: absolute;
top: 8px;
left: 8px;
}
&:hover .icon-delete {
display: inline-block;
cursor: pointer;
}
&:hover .avatardiv {
opacity: .7;
}
}
.tooltip {
z-index: 998;
}
}
}
@@ -1006,6 +1000,10 @@ input.input-inline {
padding: 16px;
opacity: 0.5;
}
&.has-contactsmenu img {
cursor: pointer;
}
}
.avatardiv-container {

View File

@@ -55,7 +55,11 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
};
$scope.$watch(function () {
return BoardService.getCurrent().title;
if (typeof BoardService.getCurrent() !== 'undefined') {
return BoardService.getCurrent().title;
} else {
return null;
}
}, function () {
$scope.setPageTitle();
});
@@ -211,6 +215,9 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
};
$scope.aclTypeString = function (acl) {
if (typeof acl === 'undefined') {
return '';
}
switch (acl.type) {
case OC.Share.SHARE_TYPE_USER:
return 'user';
@@ -313,4 +320,11 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
}
};
$scope.labelStyle = function (color) {
return {
'background-color': '#' + color,
'color': $filter('textColorFilter')(color)
};
};
});

View File

@@ -22,7 +22,7 @@
/* global app moment */
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, $interval, $timeout, BoardService, CardService, StackService, StatusService) {
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService) {
$scope.sidebar = $rootScope.sidebar;
$scope.status = {
lastEdit: 0,
@@ -58,6 +58,7 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
return false;
}
$scope.status.cardEditDescription = true;
$scope.status.edit = angular.copy(CardService.getCurrent());
return true;
};
$scope.cardEditDescriptionChanged = function ($event) {
@@ -73,7 +74,7 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
$scope.status.lastSave = currentTime;
var header = $('.section-header.card-description');
header.find('.save-indicator.unsaved').fadeIn(500);
CardService.update(CardService.getCurrent()).then(function (data) {
CardService.update($scope.status.edit).then(function (data) {
var header = $('.section-header.card-description');
header.find('.save-indicator.unsaved').hide();
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
@@ -89,7 +90,7 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
});
};
$scope.cardUpdate = function (card) {
CardService.update(CardService.getCurrent()).then(function (data) {
CardService.update(card).then(function (data) {
$scope.status.cardEditDescription = false;
var header = $('.section-content.card-description');
header.find('.save-indicator.unsaved').hide();
@@ -169,10 +170,17 @@ app.controller('CardController', function ($scope, $rootScope, $routeParams, $lo
$scope.status.showAssignUser = false;
};
$scope.removeAssignedUser = function(item) {
CardService.unassignUser(CardService.getCurrent(), item.participant.uid).then(function (data) {
$scope.removeAssignedUser = function(uid) {
CardService.unassignUser(CardService.getCurrent(), uid).then(function (data) {
StackService.updateCard(CardService.getCurrent());
});
};
$scope.labelStyle = function (color) {
return {
'background-color': '#' + color,
'color': $filter('textColorFilter')(color)
};
};
});

View File

@@ -23,15 +23,28 @@
app.directive('avatar', function() {
'use strict';
return {
restrict: 'A',
scope: true,
restrict: 'AEC',
transclude: true,
replace: true,
template: '<div class="avatardiv-container"><div class="avatardiv" data-toggle="tooltip" ng-transclude></div></div>',
scope: { attr: '=' },
link: function(scope, element, attr){
scope.uid = attr.displayname;
scope.displayname = attr.displayname;
var value = attr.user;
$(element).wrap('<div class="avatardiv-container"></div>');
if(attr.contactsmenu && oc_current_user !== value) {
$(element).contactsMenu(value, 0, $(element).parent());
var avatardiv = $(element).find('.avatardiv');
if(typeof attr.contactsmenu !== 'undefined' && attr.contactsmenu !== 'false') {
avatardiv.contactsMenu(value, 0, $(element));
avatardiv.addClass('has-contactsmenu');
}
$(element).avatar(value, 32, false, false, false, attr.displayname);
}
if(typeof attr.tooltip !== 'undefined' && attr.tooltip !== 'false') {
$(element).tooltip({
title: scope.displayname,
placement: 'top'
});
}
avatardiv.avatar(value, 32, false, false, false, attr.displayname);
},
controller: function () {}
};
});

View File

@@ -0,0 +1,41 @@
/*
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @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/>.
*
*/
app.directive('contactsmenudelete', function() {
'use strict';
return {
restrict: 'A',
priority: 1,
link: function(scope, element, attr){
var user = attr.user;
var menu = $(element).parent().find('.contactsmenu-popover');
if (oc_current_user === user) {
menu.children(':first').remove();
}
var menuEntry = $('<li><a><span class="icon icon-delete"></span><span>' + t('deck', 'Remove user from card') + '</span></a></li>');
menuEntry.on('click', function () {
scope.removeAssignedUser(user);
});
$(menu).append(menuEntry);
}
};
});

View File

@@ -5,15 +5,19 @@ exclude = [
"js/node_modules",
"js/tests",
"js/bower.json",
"js/.bowerrc",
"js/.jshintrc",
"js/Gruntfile.js",
"js/package.json",
"js/package-lock.json",
"js/vendor/jquery",
"tests",
".codecov.yml",
"composer.json",
"composer.lock",
"_config.yml",
".drone.yml",
".travis.yml",
".eslintignore",
".eslintrc.yml",
".gitignore",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Benutzer von Karte entfernen",
"Hours" : "Stunden",
"Minutes" : "Minuten",
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",

View File

@@ -10,6 +10,7 @@ OC.L10N.register(
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
@@ -19,6 +20,7 @@ OC.L10N.register(
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",

View File

@@ -8,6 +8,7 @@
"Later" : "Αργότερα",
"Deck" : "Deck",
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
"Submit" : "Υποβολή",
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
"Board details" : "Λεπτομέριες πίνακα",
@@ -17,6 +18,7 @@
"Unarchive" : "Αναίρεση αρχειοθέτησης",
"Delete" : "Διαγραφή",
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
"Add card" : "Προσθήκη κάρτας",
"Sharing" : "Διαμοιρασμός",
"Tags" : "Ετικέτες",
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Remove user from card",
"Hours" : "Hours",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Eliminar usuario de la tarjeta",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",

73
l10n/es_419.js Normal file
View File

@@ -0,0 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"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. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},
"nplurals=2; plural=(n != 1);");

71
l10n/es_419.json Normal file
View File

@@ -0,0 +1,71 @@
{ "translations": {
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
"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. ",
"Finished" : "Terminado",
"To review" : "Para revisar",
"Action needed" : "Acción requerida",
"Later" : "Después",
"Deck" : "Deck",
"Add a new stack" : "Agregar una nueva pila",
"Submit" : "Enviar",
"Show archived cards" : "Mostrar tarjetas archivadas",
"Hide archived cards" : "Ocultar tarjetas archivadas",
"Board details" : "Detalles del tablero",
"All Boards" : "Todos los Tableros",
"Archived boards" : "Tableros archivados",
"Archive" : "Archivar",
"Unarchive" : "Desarchivar",
"Delete" : "Borrar",
"Enter a card title" : "Ingresa el título de la tarjeta",
"Add card" : "Agregar tarjeta",
"Close" : "Cerrar",
"Sharing" : "Compartiendo",
"Tags" : "Etiquetas",
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
"Access for" : "Acceso para",
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
"Loading" : "Cargando",
"Share" : "Compartir",
"Edit" : "Editar",
"Manage" : "Administrar",
"Discard share" : "Descartar elemento compartido",
"Update" : "Actualizar",
"Create" : "Crear",
"Create a new tag" : "Crear una nueva etiqueta",
"Status" : "Estatus",
"Title" : "Título",
"Members" : "Miembros",
"More actions" : "Más acciones",
"Edit board" : "Editar el tablero",
"Archive board" : "Archivar tablero",
"Unarchive board" : "Desarchivar tablero",
"Delete board" : "Borrar tableros",
"Reset" : "Reiniciar",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
"Create new board" : "Crear un nuevo tablero",
"New board title" : "Nuevo título del tablero",
"Modified:" : "Modificado:",
"Created:" : "Creado:",
"by" : "por",
"Choose a tag" : "Elije una etiqueta",
"Add a tag" : "Agrega una etiqueta",
"Select tags" : "Selecciona las etiquetas",
"Assign users" : "Asingar usuarios",
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
"Due date" : "Fecha de vencimiento",
"Click to set" : "Da click aquí para establecer",
"Remove due date" : "Eliminar fecha de expiración",
"Description" : "Descripción",
"Formatting help" : "Ayuda de formato",
"Saved" : "Guardado",
"Unsaved changes" : "Cambios no guardados",
"Add a card description…" : "Agregar una descripción de tarjeta...",
"Shared boards" : "Tableros compartidos",
"View more" : "Ver más",
"Move board to archive" : "Mover el tablero al archivo",
"Create a new board" : "Crear un nuevo tablero"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Supprimer l'utilisateur de la carte",
"Hours" : "Heures",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "Le délais de la carte %s de %s est expiré.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Supprimer l'utilisateur de la carte",
"Hours" : "Heures",
"Minutes" : "Minutes",
"The card \"%s\" on \"%s\" has reached its due date." : "Le délais de la carte %s de %s est expiré.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Felhasználó eltávolítása a kártyáról",
"Hours" : "Óra",
"Minutes" : "Perc",
"The card \"%s\" on \"%s\" has reached its due date." : "A(z) \"%s\" kártya a(z) \"%s\" táblán a határidejéhez ért.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Felhasználó eltávolítása a kártyáról",
"Hours" : "Óra",
"Minutes" : "Perc",
"The card \"%s\" on \"%s\" has reached its due date." : "A(z) \"%s\" kártya a(z) \"%s\" táblán a határidejéhez ért.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Rimuovi utente dalla scheda",
"Hours" : "Ore",
"Minutes" : "Minuti",
"The card \"%s\" on \"%s\" has reached its due date." : "La scheda \"%s\" in \"%s\" ha raggiunto la sua data di scadenza.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Rimuovi utente dalla scheda",
"Hours" : "Ore",
"Minutes" : "Minuti",
"The card \"%s\" on \"%s\" has reached its due date." : "La scheda \"%s\" in \"%s\" ha raggiunto la sua data di scadenza.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "მომხმარებლის ბარათიდან ამოშლა",
"Hours" : "საათი",
"Minutes" : "წუთი",
"The card \"%s\" on \"%s\" has reached its due date." : "ბარათმა \"%s\" \"%s\"-ზე მიაღწია დანიშნულ დროს.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "მომხმარებლის ბარათიდან ამოშლა",
"Hours" : "საათი",
"Minutes" : "წუთი",
"The card \"%s\" on \"%s\" has reached its due date." : "ბარათმა \"%s\" \"%s\"-ზე მიაღწია დანიშნულ დროს.",

View File

@@ -1,33 +1,73 @@
OC.L10N.register(
"deck",
{
"Hours" : "시간",
"Minutes" : "분",
"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 게시판을 공유했습니다.",
"Finished" : "완료됨",
"To review" : "리뷰할 항목",
"Action needed" : "동작 필요",
"Later" : "나중에",
"Deck" : "덱",
"Add a new stack" : "새 스택 추가",
"Submit" : "제출",
"Show archived cards" : "보관된 카드 보기",
"Hide archived cards" : "보관된 카드 숨기기",
"Board details" : "게시판 정보",
"All Boards" : "모든 게시판",
"Archived boards" : "보관된 게시판",
"Archive" : "보관",
"Unarchive" : "보관 해제",
"Delete" : "삭제",
"Enter a card title" : "카드 제목 입력",
"Add card" : "카드 추가",
"Close" : "닫기",
"Sharing" : "공유",
"Tags" : "태그",
"Select users or groups to share with" : "공유할 사용자나 그룹 선택",
"Access for" : "접근 권한",
"No matching user or group found." : "일치하는 사용자나 그룹이 없습니다.",
"Loading" : "불러오는 중",
"Share" : "공유",
"Edit" : "편집",
"Manage" : "관리",
"Discard share" : "공유 무시",
"Update" : "업데이트",
"Create" : "만들기",
"Create a new tag" : "새 태그 만들기",
"Status" : "상태",
"Title" : "제목",
"Members" : "구성원",
"More actions" : "더 많은 동작",
"Edit board" : "게시판 편집",
"Archive board" : "게시판 보관",
"Unarchive board" : "게시판 보관 해제",
"Delete board" : "게시판 삭제",
"Reset" : "초기화",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "게시판 삭제 실행 취소 - 작업을 계속 진행하면 다음 cron 작업 실행 시 게시판을 삭제합니다.",
"Create new board" : "새 게시판 만들기",
"New board title" : "새 게시판 제목",
"Modified:" : "수정한 날짜:",
"Created:" : "만든 날짜:",
"by" : "by",
"Choose a tag" : "태그 선택",
"Add a tag" : "태그 추가",
"Select tags" : "태그 선택",
"Assign users" : "사용자 할당",
"Assign this card to a user" : "이 카드를 사용자에게 할당",
"Due date" : "만료 날짜",
"Click to set" : "설정하려면 누르기",
"Remove due date" : "만료 날짜 삭제",
"Description" : "설명",
"Formatting help" : "서식 도움말",
"Saved" : "저장됨",
"Unsaved changes" : "저장하지 않은 변경 사항",
"Add a card description…" : "카드 설명 추가…",
"Shared boards" : "공유된 게시판",
"View more" : "더 보기",
"Move board to archive" : "게시판을 보관 항목으로 이동",
"Create a new board" : "새 게시판 만들기"
},
"nplurals=1; plural=0;");

View File

@@ -1,31 +1,71 @@
{ "translations": {
"Hours" : "시간",
"Minutes" : "분",
"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 게시판을 공유했습니다.",
"Finished" : "완료됨",
"To review" : "리뷰할 항목",
"Action needed" : "동작 필요",
"Later" : "나중에",
"Deck" : "덱",
"Add a new stack" : "새 스택 추가",
"Submit" : "제출",
"Show archived cards" : "보관된 카드 보기",
"Hide archived cards" : "보관된 카드 숨기기",
"Board details" : "게시판 정보",
"All Boards" : "모든 게시판",
"Archived boards" : "보관된 게시판",
"Archive" : "보관",
"Unarchive" : "보관 해제",
"Delete" : "삭제",
"Enter a card title" : "카드 제목 입력",
"Add card" : "카드 추가",
"Close" : "닫기",
"Sharing" : "공유",
"Tags" : "태그",
"Select users or groups to share with" : "공유할 사용자나 그룹 선택",
"Access for" : "접근 권한",
"No matching user or group found." : "일치하는 사용자나 그룹이 없습니다.",
"Loading" : "불러오는 중",
"Share" : "공유",
"Edit" : "편집",
"Manage" : "관리",
"Discard share" : "공유 무시",
"Update" : "업데이트",
"Create" : "만들기",
"Create a new tag" : "새 태그 만들기",
"Status" : "상태",
"Title" : "제목",
"Members" : "구성원",
"More actions" : "더 많은 동작",
"Edit board" : "게시판 편집",
"Archive board" : "게시판 보관",
"Unarchive board" : "게시판 보관 해제",
"Delete board" : "게시판 삭제",
"Reset" : "초기화",
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "게시판 삭제 실행 취소 - 작업을 계속 진행하면 다음 cron 작업 실행 시 게시판을 삭제합니다.",
"Create new board" : "새 게시판 만들기",
"New board title" : "새 게시판 제목",
"Modified:" : "수정한 날짜:",
"Created:" : "만든 날짜:",
"by" : "by",
"Choose a tag" : "태그 선택",
"Add a tag" : "태그 추가",
"Select tags" : "태그 선택",
"Assign users" : "사용자 할당",
"Assign this card to a user" : "이 카드를 사용자에게 할당",
"Due date" : "만료 날짜",
"Click to set" : "설정하려면 누르기",
"Remove due date" : "만료 날짜 삭제",
"Description" : "설명",
"Formatting help" : "서식 도움말",
"Saved" : "저장됨",
"Unsaved changes" : "저장하지 않은 변경 사항",
"Add a card description…" : "카드 설명 추가…",
"Shared boards" : "공유된 게시판",
"View more" : "더 보기",
"Move board to archive" : "게시판을 보관 항목으로 이동",
"Create a new board" : "새 게시판 만들기"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Remover usuário do cartão",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Remover usuário do cartão",
"Hours" : "Horas",
"Minutes" : "Minutos",
"The card \"%s\" on \"%s\" has reached its due date." : "O cartão \"%s\" em \"%s\" atingiu sua data de vencimento.",

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Убрать пользователя из карточки",
"Hours" : "Часы",
"Minutes" : "Минуты",
"The card \"%s\" on \"%s\" has reached its due date." : "Настал срок карточки «%s» в «%s» .",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Убрать пользователя из карточки",
"Hours" : "Часы",
"Minutes" : "Минуты",
"The card \"%s\" on \"%s\" has reached its due date." : "Настал срок карточки «%s» в «%s» .",

View File

@@ -12,6 +12,7 @@ OC.L10N.register(
"Later" : "Senare",
"Deck" : "Kort",
"Add a new stack" : "Lägg till en ny hög",
"Submit" : "Skicka",
"Show archived cards" : "Visa arkiverade kort",
"Hide archived cards" : "Göm arkiverade kort",
"Board details" : "Taveldetaljer",
@@ -21,15 +22,22 @@ OC.L10N.register(
"Unarchive" : "Ta bort ur arkivet",
"Delete" : "Radera",
"Enter a card title" : "Ange en korttitel",
"Add card" : "Lägg till kort",
"Close" : "Stäng",
"Sharing" : "Delning",
"Tags" : "Taggar",
"Select users or groups to share with" : "Välj användare och grupper att dela med",
"Access for" : "Tillgång till",
"No matching user or group found." : "Ingen matchande användare eller grupp hittades.",
"Loading" : "Laddar",
"Share" : "Dela",
"Edit" : "Redigera",
"Manage" : "Hantera",
"Discard share" : "Ta bort delning",
"Update" : "Uppdatera",
"Create" : "Skapa",
"Create a new tag" : "Skapa en ny tagg",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Medlemmar",
"More actions" : "Fler händelser",
@@ -37,6 +45,7 @@ OC.L10N.register(
"Archive board" : "Arkivera tavla",
"Unarchive board" : "Ta bort tavla ur arkivet",
"Delete board" : "Ta bort tavla",
"Reset" : "Återställ",
"Create new board" : "Skapa ny tavla",
"New board title" : "Ny taveltitel",
"Modified:" : "Ändrad:",
@@ -45,14 +54,18 @@ OC.L10N.register(
"Choose a tag" : "Välj en tagg",
"Add a tag" : "Lägg till en tagg",
"Select tags" : "Välj taggar",
"Assign users" : "Tilldela användare",
"Assign this card to a user" : "Tilldela detta kort till en användare",
"Due date" : "Slutdatum",
"Click to set" : "Klicka för att sätta",
"Remove due date" : "Ta bort slutdatum",
"Description" : "Beskrivning",
"Formatting help" : "Formatteringshjälp",
"Saved" : "Sparad",
"Unsaved changes" : "Osparade ändringar",
"Add a card description…" : "Lägg till en kortbeskrivning...",
"Shared boards" : "Delade tavlor",
"View more" : "Titta mer",
"Move board to archive" : "Flytta tavla till arkiv",
"Create a new board" : "Skapa en ny tavla"
},

View File

@@ -10,6 +10,7 @@
"Later" : "Senare",
"Deck" : "Kort",
"Add a new stack" : "Lägg till en ny hög",
"Submit" : "Skicka",
"Show archived cards" : "Visa arkiverade kort",
"Hide archived cards" : "Göm arkiverade kort",
"Board details" : "Taveldetaljer",
@@ -19,15 +20,22 @@
"Unarchive" : "Ta bort ur arkivet",
"Delete" : "Radera",
"Enter a card title" : "Ange en korttitel",
"Add card" : "Lägg till kort",
"Close" : "Stäng",
"Sharing" : "Delning",
"Tags" : "Taggar",
"Select users or groups to share with" : "Välj användare och grupper att dela med",
"Access for" : "Tillgång till",
"No matching user or group found." : "Ingen matchande användare eller grupp hittades.",
"Loading" : "Laddar",
"Share" : "Dela",
"Edit" : "Redigera",
"Manage" : "Hantera",
"Discard share" : "Ta bort delning",
"Update" : "Uppdatera",
"Create" : "Skapa",
"Create a new tag" : "Skapa en ny tagg",
"Status" : "Status",
"Title" : "Titel",
"Members" : "Medlemmar",
"More actions" : "Fler händelser",
@@ -35,6 +43,7 @@
"Archive board" : "Arkivera tavla",
"Unarchive board" : "Ta bort tavla ur arkivet",
"Delete board" : "Ta bort tavla",
"Reset" : "Återställ",
"Create new board" : "Skapa ny tavla",
"New board title" : "Ny taveltitel",
"Modified:" : "Ändrad:",
@@ -43,14 +52,18 @@
"Choose a tag" : "Välj en tagg",
"Add a tag" : "Lägg till en tagg",
"Select tags" : "Välj taggar",
"Assign users" : "Tilldela användare",
"Assign this card to a user" : "Tilldela detta kort till en användare",
"Due date" : "Slutdatum",
"Click to set" : "Klicka för att sätta",
"Remove due date" : "Ta bort slutdatum",
"Description" : "Beskrivning",
"Formatting help" : "Formatteringshjälp",
"Saved" : "Sparad",
"Unsaved changes" : "Osparade ändringar",
"Add a card description…" : "Lägg till en kortbeskrivning...",
"Shared boards" : "Delade tavlor",
"View more" : "Titta mer",
"Move board to archive" : "Flytta tavla till arkiv",
"Create a new board" : "Skapa en ny tavla"
},"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -1,6 +1,7 @@
OC.L10N.register(
"deck",
{
"Remove user from card" : "Kullanıcıyı karttan kaldır",
"Hours" : "Saat",
"Minutes" : "Dakika",
"The card \"%s\" on \"%s\" has reached its due date." : "\"%s\" kartı \"%s\" zamanında son kullanma tarihine ulaştı.",

View File

@@ -1,4 +1,5 @@
{ "translations": {
"Remove user from card" : "Kullanıcıyı karttan kaldır",
"Hours" : "Saat",
"Minutes" : "Dakika",
"The card \"%s\" on \"%s\" has reached its due date." : "\"%s\" kartı \"%s\" zamanında son kullanma tarihine ulaştı.",

View File

@@ -46,7 +46,7 @@ if(!\OC::$server->getConfig()->getSystemValue('debug', false)) {
$js = [
'app' => ['App', 'Config', 'Run'],
'controller' => ['AppController', 'BoardController', 'CardController', 'ListController'],
'directive' => ['appnavigationentryutils', 'appPopoverMenuUtils', 'autofocusoninsert', 'avatar', 'elastic', 'search', 'datepicker', 'timepicker'],
'directive' => ['appnavigationentryutils', 'appPopoverMenuUtils', 'autofocusoninsert', 'avatar', 'contactsmenudelete', 'elastic', 'search', 'datepicker', 'timepicker'],
'filters' => ['boardFilterAcl', 'cardFilter', 'cardSearchFilter', 'iconWhiteFilter', 'lightenColorFilter', 'orderObjectBy', 'dateFilters', 'textColorFilter', 'withoutAssignedUsers'],
'service' => ['ApiService', 'BoardService', 'CardService', 'LabelService', 'StackService', 'StatusService'],
];

View File

@@ -14,7 +14,7 @@
<a ui-sref="list({ filter: 'archived' })"><?php p($l->t('Archived boards')); ?></a>
</div>
<div class="crumb title">
<a><span class="board-bullet" ng-style="{'background-color':'#' + boardservice.getCurrent().color}"></span></a>
<a class="bullet"><span class="board-bullet" ng-style="{'background-color':'#' + boardservice.getCurrent().color}"></span></a>
<a ui-sref=".({filter: ''})">{{ boardservice.getCurrent().title }}</a>
<a ui-sref=".detail({ tab: 0 })"><span class="icon icon-share"></span></a>
</div>
@@ -67,7 +67,7 @@
<h4>{{ c.title }}</h4>
<ul class="labels">
<li ng-repeat="label in c.labels"
ng-style="{'background-color':'#{{ label.color }}'}" title="{{ label.title }}">
ng-style="labelStyle(label.color)" title="{{ label.title }}">
<span>{{ label.title }}</span>
</li>
</ul>
@@ -82,7 +82,7 @@
</span>
<div class="card-assigned-users">
<div class="assigned-user" ng-repeat="user in c.assignedUsers | limitTo: 3">
<div class="avatardiv" avatar ng-attr-user="{{ user.participant.uid }}" ng-attr-displayname="{{ user.participant.displayname }}" data-toggle="tooltip" data-placement="bottom" title="{{ user.participant.displayname }}"></div>
<avatar data-user="{{ user.participant.uid }}" data-displayname="{{ user.participant.displayname }}" data-tooltip></avatar>
</div>
</div>
<div class="app-popover-menu-utils" ng-if="!boardservice.isArchived()">

View File

@@ -32,7 +32,7 @@
<div ng-click="gotoBoard(b)" ng-show="!b.status.edit">{{ b.title }}</div>
<div class="app-navigation-entry-edit" ng-show="b.status.edit">
<form ng-disabled="isAddingList" class="ng-pristine ng-valid" ng-submit="boardUpdate(b)">
<input id="newTitle" class="edit ng-valid ng-empty" type="text" autofocus-on-insert ng-model="b.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<input class="edit ng-valid ng-empty" type="text" autofocus-on-insert ng-model="b.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<div class="colorselect">
<div class="color" ng-repeat="c in ::colors" ng-style="{'background-color':'#{{ c }}'}" ng-click="b.color=c" ng-class="{'selected': (c == b.color) }"><br /></div>
</div>
@@ -41,8 +41,8 @@
</td>
<td>
<div id="assigned-users">
<div class="avatardiv" avatar data-user="{{ b.owner.uid }}" data-displayname="{{ b.owner.displayname }}" data-toggle="tooltip" title="{{ b.owner.displayname }}"></div>
<div class="avatardiv" avatar data-contactsmenu="true" data-user="{{ acl.participant.uid }}" data-displayname="{{ acl.participant.displayname }}" data-toggle="tooltip" title="{{ acl.participant.displayname }}" ng-repeat="acl in b.acl | limitTo: 7"></div>
<avatar data-contactsmenu data-tooltip data-user="{{ b.owner.uid }}" data-displayname="{{ b.owner.displayname }}"></avatar>
<avatar data-contactsmenu data-tooltip data-user="{{ acl.participant.uid }}" data-displayname="{{ acl.participant.displayname }}" ng-repeat="acl in b.acl | limitTo: 7"></avatar>
</div>
</td>
<td>
@@ -80,7 +80,7 @@
<span class="icon icon-close" ng-click="boardUpdateReset(b)" title="<?php p($l->t('Reset')); ?>"><span class="hidden-visually"><?php p($l->t('Reset')); ?></span></span>
</div>
<div class="app-popover-menu-utils" ng-if="b.deletedAt > 0">
<button class="icon icon-history button-inline" ng-click="boardDeleteUndo(b)" title="Undo board deletion - Otherwise the board will be deleted during the next cronjob run."><span class="hidden-visually"><?php p($l->t('Undo board deletion - Otherwise the board will be deleted during the next cronjob run.')); ?></span></button>
<button class="icon icon-history button-inline" ng-click="boardDeleteUndo(b)" title="<?php p($l->t('Undo board deletion - Otherwise the board will be deleted during the next cronjob run.')); ?>"><span class="hidden-visually"><?php p($l->t('Undo board deletion - Otherwise the board will be deleted during the next cronjob run.')); ?></span></button>
</div>
</td>
</tr>
@@ -99,7 +99,7 @@
<td>
<form ng-disabled="isAddingList"
class="ng-pristine ng-valid" ng-submit="boardCreate()">
<input id="newTitle" class="edit ng-valid ng-empty"
<input class="edit ng-valid ng-empty"
type="text" placeholder="<?php p($l->t('New board title')); ?>"
autofocus-on-insert ng-model="newBoard.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<div class="colorselect">

View File

@@ -41,11 +41,11 @@
on-select="labelAssign($item, $model)"
on-remove="labelRemove($item, $model)" ng-disabled="!boardservice.canEdit() || archived">
<ui-select-match placeholder="<?php p($l->t('Select tags')); ?>">
<span class="select-label" ng-style="{'background-color':'#{{$item.color}}','color':'{{ $item.color|textColorFilter }}'}">{{$item.title}}&nbsp;</span>
<span class="select-label" ng-style="labelStyle($item.color)">{{$item.title}}&nbsp;</span>
</ui-select-match>
<ui-select-choices
repeat="label in boardservice.getCurrent().labels | filter:$select.search">
<span class="choose-label" ng-style="{'background-color':'#{{label.color}}','color':'{{ label.color|textColorFilter }}'}">{{label.title}}</span>
<span class="choose-label" ng-style="labelStyle(label.color)">{{label.title}}</span>
</ui-select-choices>
</ui-select>
</div>
@@ -66,10 +66,8 @@
</ui-select-choices>
</ui-select>
<div class="card-details-assign-users-list">
<div class="assigned-user" ng-repeat="user in cardservice.getCurrent().assignedUsers"
data-toggle="tooltip" data-placement="bottom" title="{{ user.participant.displayname }}">
<div class="avatardiv" avatar data-contactsmenu="true" ng-attr-user="{{ user.participant.uid }}" ng-attr-displayname="{{ user.participant.uid }}"></div>
<div class="icon icon-delete" ng-click="removeAssignedUser(user)"></div>
<div class="assigned-user" ng-repeat="user in cardservice.getCurrent().assignedUsers">
<avatar ng-attr-contactsmenu ng-attr-tooltip ng-attr-user="{{ user.participant.uid }}" ng-attr-displayname="{{ user.participant.displayname }}" contactsmenudelete ></avatar>
</div>
</div>
</div>
@@ -98,8 +96,8 @@
<div class="section-content card-description">
<textarea elastic ng-if="status.cardEditDescription"
placeholder="<?php p($l->t('Add a card description…')); ?>"
ng-blur="cardUpdate(cardservice.getCurrent())"
ng-model="cardservice.getCurrent().description"
ng-blur="cardUpdate(status.edit)"
ng-model="status.edit.description"
ng-change="cardEditDescriptionChanged()"
autofocus-on-insert> </textarea>
<div class="container" ng-click="cardEditDescriptionShow($event)"

View File

@@ -35,7 +35,7 @@
<div class="app-navigation-entry-edit">
<form ng-disabled="isAddingList" class="ng-pristine ng-valid" ng-submit="boardUpdate(b)">
<input id="newTitle" class="edit ng-valid ng-empty" type="text" autofocus-on-insert ng-model="b.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<input class="edit ng-valid ng-empty" type="text" autofocus-on-insert ng-model="b.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<input type="submit" value="" class="action icon-checkmark svg">
</form>
<div class="colorselect">
@@ -50,7 +50,7 @@
</a>
<div class="app-navigation-entry-edit" ng-if="status.addBoard">
<form ng-disabled="isAddingList" class="ng-pristine ng-valid" ng-submit="boardCreate()">
<input id="newTitle" class="edit ng-valid ng-empty" type="text" placeholder="<?php p($l->t('New board title')); ?>" autofocus-on-insert ng-model="newBoard.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<input class="edit ng-valid ng-empty" type="text" placeholder="<?php p($l->t('New board title')); ?>" autofocus-on-insert ng-model="newBoard.title" maxlength="100" ng-model-options="{ debounce: 250 }">
<input type="submit" value="" class="action icon-checkmark svg">
</form>
<div class="colorselect">