Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
468a56f
refactor(pinia): move remaining vuex state to pinia setting store
grnd-alt Aug 11, 2026
cc2ba66
refactor(vue3): use vue3 slot syntax
grnd-alt Aug 13, 2026
e08584d
refactor(vue3): temporary vue3 compat build
grnd-alt Aug 13, 2026
cf25d56
refactor(vue3): temporarily disable secondary webpack entrypoints
grnd-alt Aug 13, 2026
4842900
refactor(vue3): initialize vue3 app correctly
grnd-alt Aug 13, 2026
6f9ff7a
refactor(vue3): replace beforeDestroy with beforeUnmount
grnd-alt Aug 13, 2026
8879900
refactor(vue3): temporarily enable new vue3 render API in compat
grnd-alt Aug 13, 2026
f146f5e
refactor(vue3): use vue3 modelValue syntax
grnd-alt Aug 14, 2026
4dace1a
refactor(vue3): replace value.sync with v-model
grnd-alt Aug 17, 2026
c1dfaad
refactore(vue3): use v-v-on-click-outside directive
grnd-alt Aug 17, 2026
e9cd1d2
refactor(vue3): remove Vue.set usage
grnd-alt Aug 17, 2026
fc8e998
refactor(vue3): replace deprecated vue-router next calls
grnd-alt Aug 17, 2026
ca41e4b
refactor(vue3): convert CardSidebar and DueDate to composition API
grnd-alt Aug 18, 2026
0017fde
refactor(vue3): disable vue3_compat watch_array flag
grnd-alt Aug 18, 2026
0f1062f
refactor(vue3): rename CardMenuEntries.vue to NcActionsCardMenuEntrie…
grnd-alt Aug 19, 2026
8a0fe46
refactor(vue3): align filter popover to nextcloud/vue@9
grnd-alt Aug 19, 2026
dd2ef52
refactor(vue3): bring back globalSearchResults vertical scroll
grnd-alt Aug 19, 2026
8fd5fd1
refactor(vue3): replace vue instance emitters with nextcloud event bus
grnd-alt Aug 19, 2026
47e4a0f
refactor(vue3): convert alternative entrypoints to vue3
grnd-alt Aug 19, 2026
221a1ad
refactor(vue3): remove @vue/compat
grnd-alt Aug 19, 2026
d70d493
refactor(vue3): update scss @import to @use
grnd-alt Aug 19, 2026
17d897f
refactor(vue3): cleanup transition remains
grnd-alt Aug 19, 2026
a273bc9
refactor(vue3): lint fixes
grnd-alt Aug 19, 2026
a68ca1b
refactor(vue3): remove nextcloud/axios usage from cypress commands
grnd-alt Aug 19, 2026
5249e64
refactor(vue3): replace .sync with v-model
grnd-alt Aug 20, 2026
ce95cec
fix(cypress): open dropdown before searching for option in dropdown
grnd-alt Aug 20, 2026
0e3a5be
fix(cypress): add data-cy identifier for app navigation categories
grnd-alt Aug 20, 2026
2962de6
refactor(vue3): replace this. calls from vue2
grnd-alt Aug 20, 2026
2c3045c
refactor(vue3): switch NcButton type prop to variant
grnd-alt Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cypress/e2e/cardActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ describe('Card actions', function () {

cy.get('.app-sidebar-header .action-item__menutoggle').click()
cy.get('.v-popper__popper button:contains("Move/copy card")').click()
cy.get('.vs__dropdown-toggle span[title="MyTestBoard"]').should('be.visible').click()
cy.get('.vs__dropdown-menu span[title="MyTestBoard"]').should('be.visible').click()
cy.wait(3000) // wait for select component to load stacks
cy.get('[data-cy="select-stack"] .vs__dropdown-toggle').should('be.visible').click()
Expand Down
6 changes: 3 additions & 3 deletions cypress/e2e/cardFeatures.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ describe('Card', function () {
cy.get('.modal-mask.card-selector .multiselect-list').should('be.visible').click()
cy.get('.vs__dropdown-menu span[title="TestList"]').should('be.visible').click()

cy.get('.modal-mask.card-selector button.button-vue--vue-primary').should('be.visible').click()
cy.get('.modal-mask.card-selector button.button-vue--primary').should('be.visible').click()
cy.wait('@save', { timeout: 7000 })

cy.reload()
Expand Down Expand Up @@ -187,7 +187,7 @@ describe('Card', function () {
cy.get('.file-picker__main').should('be.visible')
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
.click()
cy.get('.dialog__actions button.button-vue--vue-primary').click()
cy.get('.dialog__actions button.button-vue--primary').click()
cy.get('.attachment-list .filename').contains('welcome')
cy.get('.attachment-list .filename .extension').contains('txt')
})
Expand Down Expand Up @@ -231,7 +231,7 @@ describe('Card', function () {
cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle)
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').contains(boardData.title)
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--primary').should('be.visible').click()
cy.wait('@save', { timeout: 7000 })
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('have.length', 1)

Expand Down
20 changes: 13 additions & 7 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
*/

import { addCommands } from '@nextcloud/cypress'
import axios from '@nextcloud/axios'

addCommands()

Expand Down Expand Up @@ -93,7 +92,7 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
})

Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
return cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
return cy.get('[data-cy-navigation-category="deck-navigation-all"]').parent()
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
.find('a.app-navigation-entry-link')
})
Expand All @@ -116,9 +115,16 @@ Cypress.Commands.add('shareBoardWithUi', (query, userId=query) => {
})

Cypress.Commands.add('setUserEmail', (user, value) => {
Cypress.log()
return axios.put(
`${url}/ocs/v2.php/cloud/users/${user.userId}`,
{ key: 'email', value },
)
return cy.request({
method: 'PUT',
url: `${url}/ocs/v2.php/cloud/users/${user.userId}`,
auth: {
user: user.userId,
password: user.password,
},
headers: {
'OCS-APIRequest': 'true',
},
body: { key: 'email', value },
})
})
36 changes: 19 additions & 17 deletions lib/Controller/CardOcsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ public function removeLabel(?int $boardId, int $cardId, int $labelId): DataRespo

#[NoAdminRequired]
#[PublicPage]
public function update(int $id, string $title, int $stackId, string $type, int $order, string $description, $duedate, $deletedAt, int $boardId, array|string|null $owner = null, $archived = null, $startdate = null): DataResponse {
public function update(int $id, string $title, int $stackId, string $type, int $order, string $description, $duedate, $deletedAt, ?int $boardId, array|string|null $owner = null, $archived = null, $startdate = null): DataResponse {
$done = array_key_exists('done', $this->request->getParams())
? new OptionalNullableValue($this->request->getParam('done', null))
: null;
Expand All @@ -128,22 +128,24 @@ public function update(int $id, string $title, int $stackId, string $type, int $
}
}

$localBoard = $this->boardService->find($boardId, false);
if ($localBoard->getExternalId()) {
return new DataResponse($this->externalBoardService->updateCardOnRemote(
$localBoard,
$id,
$title,
$stackId,
$type,
$owner,
$description,
$order,
$duedate,
$deletedAt,
$archived,
$done
));
if ($boardId) {
$localBoard = $this->boardService->find($boardId, false);
if ($localBoard->getExternalId()) {
return new DataResponse($this->externalBoardService->updateCardOnRemote(
$localBoard,
$id,
$title,
$stackId,
$type,
$owner,
$description,
$order,
$duedate,
$deletedAt,
$archived,
$done
));
}
}

return new DataResponse($this->cardService->update($id,
Expand Down
Loading
Loading