diff --git a/composer.json b/composer.json index 35f80b547..6aca86b34 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,7 @@ "classmap-authoritative": true }, "scripts": { - "lint": "find . -name \\*.php -not -path './vendor/*' -exec php -l \"{}\" \\;", + "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l", "cs:check": "php-cs-fixer fix --dry-run --diff", "cs:fix": "php-cs-fixer fix" } diff --git a/css/icons.scss b/css/icons.scss index f58b8b28d..af3a99736 100644 --- a/css/icons.scss +++ b/css/icons.scss @@ -60,6 +60,7 @@ @include icon-black-white('circles', 'deck', 1); @include icon-black-white('clone', 'deck', 1); @include icon-black-white('filter', 'deck', 1); + @include icon-black-white('filter_set', 'deck', 1); @include icon-black-white('attach', 'deck', 1); @include icon-black-white('reply', 'deck', 1); diff --git a/img/filter_set.svg b/img/filter_set.svg new file mode 100644 index 000000000..a9561096f --- /dev/null +++ b/img/filter_set.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/l10n/ca.js b/l10n/ca.js index d4c857036..987707f41 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -56,7 +56,9 @@ OC.L10N.register( "You have added the attachment {attachment} to card {card}" : "Heu afegit l'adjunt {attachment} a la targeta {card}", "{user} has added the attachment {attachment} to card {card}" : "{user} ha afegit l'adjunt {attachment} a la targeta {card}", "You have updated the attachment {attachment} on card {card}" : "Heu actualitzat l'adjunt {attachment} a la targeta {card}", + "{user} has updated the attachment {attachment} on card {card}" : "{user} ha actualitzat l’adjunt {attachment} a la targeta {card}", "You have deleted the attachment {attachment} from card {card}" : "Heu suprimit l'adjunt {attachment} de la targeta {card}", + "{user} has deleted the attachment {attachment} from card {card}" : "{user} ha suprimit l'adjunt {attachment} de la targeta {card}", "You have restored the attachment {attachment} to card {card}" : "Heu restaurat l'adjunt {attachment} a la targeta {card}", "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}", "You have commented on card {card}" : "Heu comentat la targeta {card}", @@ -94,60 +96,122 @@ OC.L10N.register( "Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc", "A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer", "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", + "Personal planning and team project organization" : "Planificació personal i organització de projectes en equip", "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- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", "Create new board" : "Crea un nou tauler", + "new board" : "nou tauler", "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", "Select board" : "Selecciona un tauler", + "Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte", + "Select a board" : "Selecciona un tauler", + "Select a card" : "Selecciona una targeta", + "Link to card" : "Enllaç a la targeta", "Cancel" : "Cancel·la", "File already exists" : "El fitxer ja existeix", + "A file with the name {filename} already exists." : "Ja existeix un fitxer amb el nom {filename}.", "Do you want to overwrite it?" : "Voleu sobre-escriure'l?", + "Overwrite file" : "Sobreescriu el fitxer", + "Keep existing file" : "Mantén el fitxer existent", + "This board is read only" : "Aquest tauler és només de lectura", + "Drop your files to upload" : "Deixeu anar els fitxers per penjar-los", "Archived cards" : "Targetes arxivades", + "Add new list" : "Afegeix una llista nova", + "List name" : "Nom de llista", + "Apply filter" : "Aplica el filtre", + "Filter by tag" : "Filtra per etiqueta", + "Filter by assigned user" : "Filtra per usuari assignat", + "Filter by due date" : "Filtra per data de venciment", + "Overdue" : "Endarrerit", + "Next 24 hours" : "Pròximes 24 hores", + "Next 7 days" : "Propers 7 dies", + "Next 30 days" : "Propers 30 dies", + "No due date" : "Sense venciment", "Show archived cards" : "Mostra les targetes arxivades", "Toggle compact mode" : "Commuta el mode compacte", "Details" : "Detalls", + "Loading board" : "Carregant tauler", + "Board not found" : "Tauler no trobat", "Sharing" : "Compartició", "Tags" : "Etiquetes", "Deleted items" : "Elements suprimits", "Timeline" : "Línia de temps", + "Deleted lists" : "Llistes suprimides", "Undo" : "Desfés", "Deleted cards" : "Targetes suprimides", + "Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle ...", + "Board owner" : "Propietari del tauler", "(Group)" : "(Grup)", + "(Circle)" : "(Cercle)", "Can edit" : "Pot editar", "Can share" : "Pot compartir", + "Can manage" : "Pot gestionar", "Delete" : "Eliminar", "Add a new stack" : "Afegeix una nova pila", + "Delete list" : "Suprimeix la llista", "Add card" : "Afegeix una targeta", + "Add a new card" : "Afegir una nova targeta", "Edit" : "Edita", + "Add a new tag" : "Afegir una etiqueta nova", + "title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color", + "Add this attachment" : "Afegeix aquest adjunt", + "Delete Attachment" : "Suprimeix l’adjunt", + "Restore Attachment" : "Restaura l'adjunt", + "Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta...", + "Assign to users" : "Assigna als usuaris", + "Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles", + "Assign a user to this card…" : "Assigneu un usuari a aquesta targeta...", "Due date" : "Per la data", + "Set a due date" : "Definir una data de venciment", "Remove due date" : "Elimina la data de venciment", "Description" : "Descripció", + "(Unsaved)" : "(No desat)", + "(Saving…)" : "(Desant…)", "Formatting help" : "Format d'ajuda", + "Add Attachment" : "Afegeix un adjunt", + "Edit description" : "Edita descripció", + "View description" : "Veure descripció", "Attachments" : "Adjunts", "Comments" : "Comentaris", + "Choose attachment" : "Triar adjunt", "Modified" : "Darrera modificació", "Created" : "Creat", "Upload attachment" : "Carrega l'adjunt", + "No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!", "Save" : "Desa", + "The comment cannot be empty." : "El comentari no pot estar buit.", + "The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.", + "In reply to" : "En resposta a", "Reply" : "Respon", "Update" : "Actualitza", "(group)" : "(grup)", + "(circle)" : "(cercle)", + "Assign to me" : "Assigna'm a mi", "Delete card" : "Suprimeix targeta", "Move card" : "Mou la targeta", + "Card details" : "Dades de la targeta", + "Select a stack" : "Seleccioneu una pila", "seconds ago" : "fa uns segons", + "All boards" : "Tots els taulers", "Archived boards" : "Taulers arxivats", "Shared boards" : "Taulers compartits", "Settings" : "Paràmetres", + "Limit deck usage of groups" : "Limitar l'ús del tauler de grups", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.", "New board title" : "Títol del nou tauler", "Share" : "Compartir", "Options" : "Opcions", "Edit board" : "Edita el tauler", "An error occurred" : "S'ha produït un error", + "Clone board" : "Clonar tauler", "Archive board" : "Arxiva tauler", "Unarchive board" : "Desarxiva tauler", + "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler.", + "Delete the board?" : "Suprimir el tauler?", "Delete board" : "Suprimeix tauler", "Board details" : "Detalls de la junta", "Link to a board" : "Enllaça a un tauler", + "Link to a card" : "Enllaç una targeta", + "Something went wrong" : "Alguna cosa ha anat malament", "Maximum file size of {size} exceeded" : "S'ha superat la mida màxima per fitxer de {size}" }, "nplurals=2; plural=(n != 1);"); diff --git a/l10n/ca.json b/l10n/ca.json index f7a1004b0..e823e10ee 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -54,7 +54,9 @@ "You have added the attachment {attachment} to card {card}" : "Heu afegit l'adjunt {attachment} a la targeta {card}", "{user} has added the attachment {attachment} to card {card}" : "{user} ha afegit l'adjunt {attachment} a la targeta {card}", "You have updated the attachment {attachment} on card {card}" : "Heu actualitzat l'adjunt {attachment} a la targeta {card}", + "{user} has updated the attachment {attachment} on card {card}" : "{user} ha actualitzat l’adjunt {attachment} a la targeta {card}", "You have deleted the attachment {attachment} from card {card}" : "Heu suprimit l'adjunt {attachment} de la targeta {card}", + "{user} has deleted the attachment {attachment} from card {card}" : "{user} ha suprimit l'adjunt {attachment} de la targeta {card}", "You have restored the attachment {attachment} to card {card}" : "Heu restaurat l'adjunt {attachment} a la targeta {card}", "{user} has restored the attachment {attachment} to card {card}" : "{user} ha restaurat l'adjunt {attachment} a la targeta {card}", "You have commented on card {card}" : "Heu comentat la targeta {card}", @@ -92,60 +94,122 @@ "Could not write file to disk" : "No s’ha pogut escriure el fitxer al disc", "A PHP extension stopped the file upload" : "Una extensió del PHP ha aturat la carregada del fitxer", "No file uploaded or file size exceeds maximum of %s" : "No s'ha carregat cap fitxer o la mida del fitxer sobrepassa el màxim de %s", + "Personal planning and team project organization" : "Planificació personal i organització de projectes en equip", "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- 📎 Attach files and embed them in your markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tauler és una eina d'organització a l'estil kanban dirigida a la planificació personal i a l'organització de projectes per equips integrada a Nextcloud.\n\n\n- 📥 Afegiu les tasques en targetes i poseu-les en ordre\n- 📄 Apunteu notes addicionals en markdown\n- 🔖 Assigneu etiquetes per una organització encara millor\n- 👥 Compartiu amb el vostre equip, família o amics\n- 📎 Adjunteu fitxers i encasteu-los en la descripció en markdown\n- 💬 Debateu amb el vostre equip fent servir comentaris\n- ⚡ Mantingueu el seguiment de canvis al flux d'activitat\n- 🚀 Tingueu el vostre projecte organitzat", "Create new board" : "Crea un nou tauler", + "new board" : "nou tauler", "Select the board to link to a project" : "Selecciona el tauler per enllaçar a un projecte", "Select board" : "Selecciona un tauler", + "Select the card to link to a project" : "Selecciona la targeta per enllaçar a un projecte", + "Select a board" : "Selecciona un tauler", + "Select a card" : "Selecciona una targeta", + "Link to card" : "Enllaç a la targeta", "Cancel" : "Cancel·la", "File already exists" : "El fitxer ja existeix", + "A file with the name {filename} already exists." : "Ja existeix un fitxer amb el nom {filename}.", "Do you want to overwrite it?" : "Voleu sobre-escriure'l?", + "Overwrite file" : "Sobreescriu el fitxer", + "Keep existing file" : "Mantén el fitxer existent", + "This board is read only" : "Aquest tauler és només de lectura", + "Drop your files to upload" : "Deixeu anar els fitxers per penjar-los", "Archived cards" : "Targetes arxivades", + "Add new list" : "Afegeix una llista nova", + "List name" : "Nom de llista", + "Apply filter" : "Aplica el filtre", + "Filter by tag" : "Filtra per etiqueta", + "Filter by assigned user" : "Filtra per usuari assignat", + "Filter by due date" : "Filtra per data de venciment", + "Overdue" : "Endarrerit", + "Next 24 hours" : "Pròximes 24 hores", + "Next 7 days" : "Propers 7 dies", + "Next 30 days" : "Propers 30 dies", + "No due date" : "Sense venciment", "Show archived cards" : "Mostra les targetes arxivades", "Toggle compact mode" : "Commuta el mode compacte", "Details" : "Detalls", + "Loading board" : "Carregant tauler", + "Board not found" : "Tauler no trobat", "Sharing" : "Compartició", "Tags" : "Etiquetes", "Deleted items" : "Elements suprimits", "Timeline" : "Línia de temps", + "Deleted lists" : "Llistes suprimides", "Undo" : "Desfés", "Deleted cards" : "Targetes suprimides", + "Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle ...", + "Board owner" : "Propietari del tauler", "(Group)" : "(Grup)", + "(Circle)" : "(Cercle)", "Can edit" : "Pot editar", "Can share" : "Pot compartir", + "Can manage" : "Pot gestionar", "Delete" : "Eliminar", "Add a new stack" : "Afegeix una nova pila", + "Delete list" : "Suprimeix la llista", "Add card" : "Afegeix una targeta", + "Add a new card" : "Afegir una nova targeta", "Edit" : "Edita", + "Add a new tag" : "Afegir una etiqueta nova", + "title and color value must be provided" : "s’ha de proporcionar el valor del títol i del color", + "Add this attachment" : "Afegeix aquest adjunt", + "Delete Attachment" : "Suprimeix l’adjunt", + "Restore Attachment" : "Restaura l'adjunt", + "Assign a tag to this card…" : "Assigna una etiqueta a aquesta targeta...", + "Assign to users" : "Assigna als usuaris", + "Assign to users/groups/circles" : "Assigna a usuaris/grups/cercles", + "Assign a user to this card…" : "Assigneu un usuari a aquesta targeta...", "Due date" : "Per la data", + "Set a due date" : "Definir una data de venciment", "Remove due date" : "Elimina la data de venciment", "Description" : "Descripció", + "(Unsaved)" : "(No desat)", + "(Saving…)" : "(Desant…)", "Formatting help" : "Format d'ajuda", + "Add Attachment" : "Afegeix un adjunt", + "Edit description" : "Edita descripció", + "View description" : "Veure descripció", "Attachments" : "Adjunts", "Comments" : "Comentaris", + "Choose attachment" : "Triar adjunt", "Modified" : "Darrera modificació", "Created" : "Creat", "Upload attachment" : "Carrega l'adjunt", + "No comments yet. Begin the discussion!" : "No hi ha comentaris encara. Començar la discussió!", "Save" : "Desa", + "The comment cannot be empty." : "El comentari no pot estar buit.", + "The comment cannot be longer than 1000 characters." : "El comentari no pot ser més llarg que 1000 caràcters.", + "In reply to" : "En resposta a", "Reply" : "Respon", "Update" : "Actualitza", "(group)" : "(grup)", + "(circle)" : "(cercle)", + "Assign to me" : "Assigna'm a mi", "Delete card" : "Suprimeix targeta", "Move card" : "Mou la targeta", + "Card details" : "Dades de la targeta", + "Select a stack" : "Seleccioneu una pila", "seconds ago" : "fa uns segons", + "All boards" : "Tots els taulers", "Archived boards" : "Taulers arxivats", "Shared boards" : "Taulers compartits", "Settings" : "Paràmetres", + "Limit deck usage of groups" : "Limitar l'ús del tauler de grups", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitant el Tauler bloquejarà la creació de taulers als usuaris que no són part d'aquests grups. Els usuaris podran seguir treballant en els taulers que hagin estat compartits amb ells.", "New board title" : "Títol del nou tauler", "Share" : "Compartir", "Options" : "Opcions", "Edit board" : "Edita el tauler", "An error occurred" : "S'ha produït un error", + "Clone board" : "Clonar tauler", "Archive board" : "Arxiva tauler", "Unarchive board" : "Desarxiva tauler", + "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Esteu segur que voleu suprimir el tauler {title}? Això eliminarà totes les dades d'aquest tauler.", + "Delete the board?" : "Suprimir el tauler?", "Delete board" : "Suprimeix tauler", "Board details" : "Detalls de la junta", "Link to a board" : "Enllaça a un tauler", + "Link to a card" : "Enllaç una targeta", + "Something went wrong" : "Alguna cosa ha anat malament", "Maximum file size of {size} exceeded" : "S'ha superat la mida màxima per fitxer de {size}" },"pluralForm" :"nplurals=2; plural=(n != 1);" } \ No newline at end of file diff --git a/l10n/de.js b/l10n/de.js index 0b050b209..fdcc85187 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -135,7 +135,7 @@ OC.L10N.register( "Tags" : "Schlagworte", "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", - "Deleted lists" : "Listen löschen", + "Deleted lists" : "Gelöschte Listen", "Undo" : "Rückgängig", "Deleted cards" : "Gelöschte Karten", "Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …", diff --git a/l10n/de.json b/l10n/de.json index 9f1fd434e..7928d1a69 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -133,7 +133,7 @@ "Tags" : "Schlagworte", "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", - "Deleted lists" : "Listen löschen", + "Deleted lists" : "Gelöschte Listen", "Undo" : "Rückgängig", "Deleted cards" : "Gelöschte Karten", "Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index 1adc76cd1..ee324dedd 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -135,7 +135,7 @@ OC.L10N.register( "Tags" : "Schlagworte", "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", - "Deleted lists" : "Listen löschen", + "Deleted lists" : "Gelöschte Listen", "Undo" : "Rückgängig", "Deleted cards" : "Gelöschte Karten", "Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 54b8c3af3..9854cc5ce 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -133,7 +133,7 @@ "Tags" : "Schlagworte", "Deleted items" : "Gelöschte Objekte", "Timeline" : "Zeitachse", - "Deleted lists" : "Listen löschen", + "Deleted lists" : "Gelöschte Listen", "Undo" : "Rückgängig", "Deleted cards" : "Gelöschte Karten", "Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …", diff --git a/l10n/nb.js b/l10n/nb.js index a810b6537..c21bf9f96 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -101,6 +101,7 @@ OC.L10N.register( "Do you want to overwrite it?" : "Vil du overskrive?", "Archived cards" : "Arkiver tavle", "Filter by tag" : "Filtrer på knagg", + "Overdue" : "Utløpt", "Show archived cards" : "Vis arkiverkte kort", "Toggle compact mode" : "Endre kompakt modus", "Details" : "Detaljer", @@ -114,6 +115,7 @@ OC.L10N.register( "Can share" : "Kan dele", "Delete" : "Slett", "Add a new stack" : "Legg til en ny stabel", + "Delete list" : "Slett listen", "Add card" : "Legg til kort", "Edit" : "Rediger", "Due date" : "Forfallsdato", diff --git a/l10n/nb.json b/l10n/nb.json index 1776be5ed..77f99b55a 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -99,6 +99,7 @@ "Do you want to overwrite it?" : "Vil du overskrive?", "Archived cards" : "Arkiver tavle", "Filter by tag" : "Filtrer på knagg", + "Overdue" : "Utløpt", "Show archived cards" : "Vis arkiverkte kort", "Toggle compact mode" : "Endre kompakt modus", "Details" : "Detaljer", @@ -112,6 +113,7 @@ "Can share" : "Kan dele", "Delete" : "Slett", "Add a new stack" : "Legg til en ny stabel", + "Delete list" : "Slett listen", "Add card" : "Legg til kort", "Edit" : "Rediger", "Due date" : "Forfallsdato", diff --git a/l10n/ru.js b/l10n/ru.js index 7b8a7b512..fc8c798c9 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -128,13 +128,13 @@ OC.L10N.register( "No due date" : "Без назначенной даты", "Show archived cards" : "Показать архивные карточки", "Toggle compact mode" : "Переключение в компактный режим и обратно", - "Details" : "Подробнее", + "Details" : "Свойства", "Loading board" : "Загрузка доски", "Board not found" : "Доска не найдена", "Sharing" : "Общий доступ", "Tags" : "Метки", "Deleted items" : "Объекты в корзине", - "Timeline" : "Шкала времени", + "Timeline" : "История", "Deleted lists" : "Удалённые списки", "Undo" : "Отменить", "Deleted cards" : "Карточки в корзине", @@ -188,7 +188,7 @@ OC.L10N.register( "Assign to me" : "Назначить себе", "Delete card" : "Удалить", "Move card" : "Переместить карточку", - "Card details" : "Подробные сведения", + "Card details" : "Свойства карточки", "Select a stack" : "Выберите стопку", "seconds ago" : "несколько секунд назад", "All boards" : "Все доски", @@ -208,7 +208,7 @@ OC.L10N.register( "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Подтвердите удаление доски «{title}»; это действие приведёт к удалению также все данных, принадлежащих этой доске.", "Delete the board?" : "Удалить доску?", "Delete board" : "Удалить доску", - "Board details" : "Подробные сведения", + "Board details" : "Свойства доски", "Link to a board" : "Ссылка на доску", "Link to a card" : "Ссылка на карточку", "Something went wrong" : "Неизвестная ошибка", diff --git a/l10n/ru.json b/l10n/ru.json index 933b7d88e..f45fb9678 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -126,13 +126,13 @@ "No due date" : "Без назначенной даты", "Show archived cards" : "Показать архивные карточки", "Toggle compact mode" : "Переключение в компактный режим и обратно", - "Details" : "Подробнее", + "Details" : "Свойства", "Loading board" : "Загрузка доски", "Board not found" : "Доска не найдена", "Sharing" : "Общий доступ", "Tags" : "Метки", "Deleted items" : "Объекты в корзине", - "Timeline" : "Шкала времени", + "Timeline" : "История", "Deleted lists" : "Удалённые списки", "Undo" : "Отменить", "Deleted cards" : "Карточки в корзине", @@ -186,7 +186,7 @@ "Assign to me" : "Назначить себе", "Delete card" : "Удалить", "Move card" : "Переместить карточку", - "Card details" : "Подробные сведения", + "Card details" : "Свойства карточки", "Select a stack" : "Выберите стопку", "seconds ago" : "несколько секунд назад", "All boards" : "Все доски", @@ -206,7 +206,7 @@ "Are you sure you want to delete the board {title}? This will delete all the data of this board." : "Подтвердите удаление доски «{title}»; это действие приведёт к удалению также все данных, принадлежащих этой доске.", "Delete the board?" : "Удалить доску?", "Delete board" : "Удалить доску", - "Board details" : "Подробные сведения", + "Board details" : "Свойства доски", "Link to a board" : "Ссылка на доску", "Link to a card" : "Ссылка на карточку", "Something went wrong" : "Неизвестная ошибка", diff --git a/l10n/uk.js b/l10n/uk.js index 6ab1a5746..ca08a4b23 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -39,6 +39,7 @@ OC.L10N.register( "Attachments" : "Вкладення", "Comments" : "Коментарі", "Modified" : "Змінено", + "Upload attachment" : "Завантажити вкладення", "Save" : "Зберегти", "Reply" : "Відповісти", "Update" : "Оновлення", diff --git a/l10n/uk.json b/l10n/uk.json index 486b9aeb4..4a5bb9871 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -37,6 +37,7 @@ "Attachments" : "Вкладення", "Comments" : "Коментарі", "Modified" : "Змінено", + "Upload attachment" : "Завантажити вкладення", "Save" : "Зберегти", "Reply" : "Відповісти", "Update" : "Оновлення", diff --git a/lib/Controller/BoardController.php b/lib/Controller/BoardController.php index 33ff48fb1..9d0b9fcaf 100644 --- a/lib/Controller/BoardController.php +++ b/lib/Controller/BoardController.php @@ -153,6 +153,6 @@ class BoardController extends ApiController { * @return \OCP\Deck\DB\Board */ public function clone($boardId) { - return $this->boardService->clone($boardId); + return $this->boardService->clone($boardId, $this->userId); } } diff --git a/lib/Service/BoardService.php b/lib/Service/BoardService.php index 58cd4022a..868164b91 100644 --- a/lib/Service/BoardService.php +++ b/lib/Service/BoardService.php @@ -621,13 +621,14 @@ class BoardService { /** * @param $id + * @param $userId * @return Board * @throws DoesNotExistException * @throws \OCA\Deck\NoPermissionException * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws BadRequestException */ - public function clone($id) { + public function clone($id, $userId) { if (is_numeric($id) === false) { throw new BadRequestException('board id must be a number'); } @@ -637,7 +638,7 @@ class BoardService { $board = $this->boardMapper->find($id); $newBoard = new Board(); $newBoard->setTitle($board->getTitle() . ' (' . $this->l10n->t('copy') . ')'); - $newBoard->setOwner($board->getOwner()); + $newBoard->setOwner($userId); $newBoard->setColor($board->getColor()); $permissions = $this->permissionService->matchPermissions($board); $newBoard->setPermissions([ diff --git a/package-lock.json b/package-lock.json index 4cfaf2ee4..44e6b2ba8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2835,18 +2835,18 @@ "integrity": "sha512-f+sKpdLZXkODV+OY39K1M+Spmd4RgxmtEXmNn4Bviv4R7uBFHXuw+JX9ZdfDeOryfHjJ/TRQxQEp0GMpBwZFUw==" }, "@nextcloud/dialogs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-1.2.2.tgz", - "integrity": "sha512-N8A8J8UKSvz/hqNcm7gwpm70uAAsx0wurjhdYZ989jaMho+H/Hinjd2jkbV8UnsYYw0x/vWvEX5t6Lwbv08K0g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-1.3.0.tgz", + "integrity": "sha512-Fm/SEcd8DNZzmn/2Uv9O/5sweXkcywqnJuhK5xH3P0c5Ug3Z/mJwGP3EXgLtyjgQUJtmY1DBahqiUYsVNdDkng==", "requires": { - "core-js": "3.6.4", + "core-js": "^3.6.4", "toastify-js": "^1.7.0" }, "dependencies": { "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" } } }, @@ -3296,9 +3296,9 @@ } }, "@vue/test-utils": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.33.tgz", - "integrity": "sha512-Xzqoe0lTLn3QRWfjhmKPOXYR86l0Y+g/zPHaheJQOkPLj5ojJl3rG0t4F3kXFWuLD88YzUVRMIBWOG7v9KOJQQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.2.tgz", + "integrity": "sha512-pnRWJbb0cLqjSJIKRpqoSISeYtufEn8D16VmhlCrDWIVt4iAY4Og4JpOPmFytvtQVz96p6n7T6ERI55ue6n0Ew==", "dev": true, "requires": { "dom-event-types": "^1.0.0", @@ -3516,9 +3516,9 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", "dev": true }, "acorn-globals": { @@ -4906,9 +4906,9 @@ "dev": true }, "blueimp-md5": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.13.0.tgz", - "integrity": "sha512-lmp0m647R5e77ORduxLW5mISIDcvgJZa52vMBv5uVI3UmSWTQjkJsZVBfaFqQPw/QFogJwvY6e3Gl9nP+Loe+Q==" + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.15.0.tgz", + "integrity": "sha512-Zc6sowqlCWu3+V0bocZwdaPPXlRv14EHtYcQDCOghj9EdyKLMkAOODBh3HHAx5r7QRylDYCOaXa/b/edgBLDpA==" }, "bn.js": { "version": "4.11.8", @@ -6575,9 +6575,9 @@ } }, "dompurify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.10.tgz", - "integrity": "sha512-ok1dcSztsIuVxWG6Cx0ujyDIzNclz9W9OIU0cOb0IT+VAtSLrOelZF4miUvSm1U4PoCw8D7sIOLCnCQOaVpr3w==" + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.11.tgz", + "integrity": "sha512-qVoGPjIW9IqxRij7klDQQ2j6nSe4UNWANBhZNLnsS7ScTtLb+3YdxkRY8brNTpkUiTtcXsCJO+jS0UCDfenLuA==" }, "domutils": { "version": "1.7.0", @@ -9093,9 +9093,9 @@ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stdin": { @@ -9537,12 +9537,6 @@ "toidentifier": "1.0.0" } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true - }, "http-proxy": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", @@ -13305,9 +13299,9 @@ "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==" }, "node-sass": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.0.tgz", - "integrity": "sha512-AxqU+DFpk0lEz95sI6jO0hU0Rwyw7BXVEv6o9OItoXLyeygPeaSpiV4rwQb10JiTghHaa0gZeD21sz+OsQluaw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -13324,7 +13318,7 @@ "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", - "sass-graph": "^2.2.4", + "sass-graph": "2.2.5", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" }, @@ -13773,9 +13767,9 @@ "dev": true }, "p-queue": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.3.0.tgz", - "integrity": "sha512-fg5dJlFpd5+3CgG3/0ogpVZUeJbjiyXFg0nu53hrOYsybqSiDyxyOpad0Rm6tAiGjgztAwkyvhlYHC53OiAJOA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.4.0.tgz", + "integrity": "sha512-X7ddxxiQ+bLR/CUt3/BVKrGcJDNxBr0pEEFKHHB6vTPWNUhgDv36GpIH18RmGM3YGPpBT+JWGjDDqsVGuF0ERw==", "requires": { "eventemitter3": "^4.0.0", "p-timeout": "^3.1.0" @@ -14073,9 +14067,9 @@ "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "dev": true, "requires": { "async": "^2.6.2", @@ -15148,9 +15142,9 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -15160,7 +15154,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -15170,25 +15164,19 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } } } @@ -15705,177 +15693,118 @@ } }, "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", "dev": true, "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" + "yargs": "^13.3.2" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^3.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "p-try": "^2.0.0" } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "lcid": "^1.0.0" + "p-limit": "^2.0.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -16376,13 +16305,22 @@ } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", "dev": true, "requires": { "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "sockjs-client": { @@ -17464,46 +17402,35 @@ } }, "stylelint-scss": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.17.1.tgz", - "integrity": "sha512-KywqqHfK1otZv1QJA4xJDgcPJp1/cP3jnABpbU9gmXOKqKt8cNt27Imsh9JhY133X8D4zDh/38pNq4WjVfUQWQ==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.17.2.tgz", + "integrity": "sha512-e0dmxqsofy/HZj4urcGSJw4S6yHDJxiQdT20/1ciCsd5lomisa7YM4+Qtt1EG4hsqEG1dbEeF855tec1UyqcSA==", "dev": true, "requires": { "lodash": "^4.17.15", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.3" + "postcss-value-parser": "^4.1.0" }, "dependencies": { - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true } } }, "stylelint-webpack-plugin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-1.2.3.tgz", - "integrity": "sha512-XEevZZzlI6k3e0Amp7AtpZ/elgaOdPPwLFY9InNoajw4KNRcZTkK61ZsZdHvIyK32Ej9L9u4fwfXG2QGKW0imA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stylelint-webpack-plugin/-/stylelint-webpack-plugin-2.0.0.tgz", + "integrity": "sha512-tN7AnjntcmDnCSxhFgBYctelmth+CQMTSfPeIXpN/9vbkm4747FFaUKOzgWJa4UyAPl98wh8SAhVtqV5Qdxsug==", "dev": true, "requires": { "arrify": "^2.0.1", "micromatch": "^4.0.2", - "schema-utils": "^2.6.1" + "schema-utils": "^2.6.6" }, "dependencies": { "arrify": { @@ -19078,17 +19005,17 @@ }, "dependencies": { "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true } } }, "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", - "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -19099,60 +19026,38 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, "debug": { "version": "4.1.1", @@ -19212,12 +19117,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -19225,22 +19124,23 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" }, "dependencies": { "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -19264,29 +19164,27 @@ } }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -19333,13 +19231,11 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -19422,16 +19318,6 @@ "errno": "~0.1.7" } }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index e64962a18..e5af2b91d 100644 --- a/package.json +++ b/package.json @@ -33,21 +33,21 @@ "@juliushaertl/vue-richtext": "^0.3.1", "@nextcloud/auth": "^1.2.3", "@nextcloud/axios": "^1.3.2", - "@nextcloud/dialogs": "^1.2.2", + "@nextcloud/dialogs": "^1.3.0", "@nextcloud/files": "^1.0.1", "@nextcloud/initial-state": "^1.1.2", "@nextcloud/l10n": "^1.2.3", "@nextcloud/moment": "^1.1.1", "@nextcloud/router": "^1.0.2", "@nextcloud/vue": "^1.5.0", - "blueimp-md5": "^2.13.0", - "dompurify": "^2.0.10", + "blueimp-md5": "^2.15.0", + "dompurify": "^2.0.11", "lodash": "^4.17.15", "markdown-it": "^10.0.0", "markdown-it-task-lists": "^2.1.1", "moment": "^2.25.3", "nextcloud-vue-collections": "^0.7.2", - "p-queue": "^6.3.0", + "p-queue": "^6.4.0", "url-search-params-polyfill": "^8.1.0", "vue": "^2.6.11", "vue-at": "^2.5.0-beta.2", @@ -72,8 +72,8 @@ "@nextcloud/browserslist-config": "^1.0.0", "@nextcloud/eslint-config": "^2.0.0", "@nextcloud/eslint-plugin": "^1.4.0", - "@vue/test-utils": "^1.0.0-beta.33", - "acorn": "^7.1.1", + "@vue/test-utils": "^1.0.2", + "acorn": "^7.2.0", "babel-eslint": "^10.1.0", "babel-jest": "^26.0.1", "babel-loader": "^8.1.0", @@ -91,14 +91,14 @@ "jest": "^26.0.1", "jest-serializer-vue": "^2.0.2", "minimist": "^1.2.5", - "node-sass": "^4.14.0", + "node-sass": "^4.14.1", "raw-loader": "^4.0.1", "sass-loader": "^8.0.2", "stylelint": "^13.3.3", "stylelint-config-recommended": "^3.0.0", "stylelint-config-recommended-scss": "^4.2.0", - "stylelint-scss": "^3.17.1", - "stylelint-webpack-plugin": "^1.2.3", + "stylelint-scss": "^3.17.2", + "stylelint-webpack-plugin": "^2.0.0", "url-loader": "^4.1.0", "vue-jest": "^3.0.5", "vue-loader": "^15.9.2", @@ -106,7 +106,7 @@ "vue-template-compiler": "^2.6.11", "webpack": "^4.43.0", "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3", + "webpack-dev-server": "^3.11.0", "webpack-merge": "^4.2.2" }, "jest": { diff --git a/src/BoardSelector.vue b/src/BoardSelector.vue index 6fc841804..55691c140 100644 --- a/src/BoardSelector.vue +++ b/src/BoardSelector.vue @@ -24,6 +24,7 @@ + + this.$el.scrollIntoView()) - } - }, - }, methods: { openCard() { - this.$router.push({ name: 'card', params: { cardId: this.id } }) + this.$router.push({ name: 'card', params: { cardId: this.id } }).catch(() => {}) }, startEditing(card) { this.copiedCard = Object.assign({}, card) @@ -175,6 +171,10 @@ export default { border: 1px solid var(--color-border); } + .card:hover { + box-shadow: 0 0 5px 1px var(--color-box-shadow); + } + .card { transition: box-shadow 0.1s ease-in-out; box-shadow: 0 0 2px 0 var(--color-box-shadow); diff --git a/src/components/cards/CardMenu.vue b/src/components/cards/CardMenu.vue new file mode 100644 index 000000000..76ebff908 --- /dev/null +++ b/src/components/cards/CardMenu.vue @@ -0,0 +1,171 @@ + + + + + + diff --git a/src/components/navigation/AppNavigationBoard.vue b/src/components/navigation/AppNavigationBoard.vue index c3e810ef0..d8e5c2667 100644 --- a/src/components/navigation/AppNavigationBoard.vue +++ b/src/components/navigation/AppNavigationBoard.vue @@ -149,26 +149,27 @@ export default { text: t('deck', 'Edit board'), }) } - - actions.push({ - action: async() => { - this.hideMenu() - this.loading = true - try { - const newBoard = await this.$store.dispatch('cloneBoard', this.board) - this.loading = false - const route = this.routeTo - route.params.id = newBoard.id - this.$router.push(route) - } catch (e) { - OC.Notification.showTemporary(t('deck', 'An error occurred')) - console.error(e) - } - }, - icon: 'icon-clone', - text: t('deck', 'Clone board'), - }) if (canManage) { + + actions.push({ + action: async() => { + this.hideMenu() + this.loading = true + try { + const newBoard = await this.$store.dispatch('cloneBoard', this.board) + this.loading = false + const route = this.routeTo + route.params.id = newBoard.id + this.$router.push(route) + } catch (e) { + OC.Notification.showTemporary(t('deck', 'An error occurred')) + console.error(e) + } + }, + icon: 'icon-clone', + text: t('deck', 'Clone board'), + }) + if (!this.board.archived) { actions.push({ action: () => { diff --git a/src/components/navigation/AppNavigationBoardCategory.vue b/src/components/navigation/AppNavigationBoardCategory.vue index e6d078d31..d4a7ec202 100644 --- a/src/components/navigation/AppNavigationBoardCategory.vue +++ b/src/components/navigation/AppNavigationBoardCategory.vue @@ -29,7 +29,7 @@ {{ text }}
    - +
@@ -78,6 +78,9 @@ export default { } }, computed: { + boardsSorted() { + return [...this.boards].sort((a, b) => (a.title < b.title) ? -1 : 1) + }, collapsible() { return this.boards.length > 0 }, diff --git a/src/css/markdown.scss b/src/css/markdown.scss new file mode 100644 index 000000000..7dc74c6c1 --- /dev/null +++ b/src/css/markdown.scss @@ -0,0 +1,102 @@ +p { + margin-bottom: 15px; +} + +* { + white-space: normal; + word-wrap: break-word; + overflow-wrap: break-word; +} + +a { + opacity: 0.5; + text-decoration: underline; +} + +ol, +ul { + margin-left: 20px; + margin-bottom: 10px; +} + +ul { + list-style-type: disc; +} + +h1 { + font-size: 18px; + font-weight: 600; + margin-bottom: 5px; +} + +h2 { + font-size: 16px; + font-weight: 600; +} + +h3 { + font-size: 14px; + font-weight: 600; +} + +h4 { + font-size: 13px; + font-weight: 600; +} + +h6 { + font-size: 12px; + font-weight: 600; +} + +pre { + background-color: var(--color-background-dark); + padding: 3px; + overflow: auto; + + code { + white-space: pre; + } +} + +img { + max-width: 100%; + max-height: 50vh; + margin: auto; + display: block; +} + +input[type=checkbox] { + margin: 0px 10px 0px 0px; + line-height: 10px; + font-size: 10px; + display: inline-block; + min-height: 12px; +} + +li input[type="checkbox"].checkbox + label::before { + margin-left: -15px; + +} +input[type="checkbox"].checkbox + label::before { + position: relative; + z-index: 100; + margin-right: 10px; + margin-top: 0; +} +li input[type="checkbox"].checkbox:not(:checked) + label::before { + background-color: var(--color-main-background); +} + +table { + margin-bottom: 10px; + border-collapse: collapse; + + thead { + background-color: var(--color-background-dark); + } + td, th { + border: 1px solid var(--color-background-darker); + padding: 3px; + } +} diff --git a/src/main.js b/src/main.js index 93a1d729b..c73025e2c 100644 --- a/src/main.js +++ b/src/main.js @@ -62,7 +62,7 @@ Vue.config.errorHandler = (err, vm, info) => { const errorMessage = t('deck', 'Something went wrong') OCP.Toast.error(`${errorMessage}: ${err.response.data.status} ${err.response.data.message}`) } - throw err + console.error(err) } /* eslint-disable-next-line no-new */