diff --git a/CHANGELOG.md b/CHANGELOG.md
index 864b85b20..f622f8623 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Added
+- [BREAKING] Support Nextcloud 33 [#952](https://github.com/nextcloud/integration_openproject/pull/952)
+
### Changed
### Removed
diff --git a/REUSE.toml b/REUSE.toml
index ddfa4618e..25b549162 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -48,13 +48,13 @@ SPDX-FileCopyrightText = "2022-2024 Jankari Tech Pvt. Ltd."
SPDX-License-Identifier = "AGPL-3.0-or-later"
[[annotations]]
-path = ["img/app.svg", "img/app-dark.svg"]
+path = ["img/app.svg", "img/app-dark.svg", "img/openproject-icon.svg"]
precedence = "aggregate"
-SPDX-FileCopyrightText = "2018-2024 Google LLC"
+SPDX-FileCopyrightText = "2012-2025 OpenProject GmbH"
SPDX-License-Identifier = "LicenseRef-OpenProjectTrademarks"
[[annotations]]
path = ["img/bell-ring.svg", "img/bell-ring-dark.svg"]
precedence = "aggregate"
-SPDX-FileCopyrightText = "2012-2024 OpenProject GmbH"
+SPDX-FileCopyrightText = "2018-2025 Google LLC"
SPDX-License-Identifier = "Apache-2.0"
diff --git a/appinfo/info.xml b/appinfo/info.xml
index ebc07fae0..11d76ceee 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -33,7 +33,7 @@ On the OpenProject end, users are able to:
For more information on how to set up and use the OpenProject application, please refer to [integration setup guide](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/) for administrators and [the user guide](https://www.openproject.org/docs/user-guide/nextcloud-integration/).
]]>
- 2.11.0
+ 3.0.0-alpha.1
agpl
Julien Veyssier
OpenProject
@@ -49,7 +49,7 @@ For more information on how to set up and use the OpenProject application, pleas
https://github.com/nextcloud/integration_openproject/raw/master/img/screenshot1.png
https://github.com/nextcloud/integration_openproject/raw/master/img/screenshot2.png
-
+
OCA\OpenProject\BackgroundJob\RemoveExpiredDirectUploadTokens
@@ -60,4 +60,4 @@ For more information on how to set up and use the OpenProject application, pleas
OCA\OpenProject\Settings\Personal
OCA\OpenProject\Settings\PersonalSection
-
+
\ No newline at end of file
diff --git a/css/tab.css b/css/tab.css
index 86dc607d2..80f3d8f76 100644
--- a/css/tab.css
+++ b/css/tab.css
@@ -6,7 +6,7 @@
@import '../css/dashboard.css';
-#tab-open-project {
+#tab-integration_openproject {
height: 100%;
padding: 0;
}
diff --git a/img/openproject-icon.svg b/img/openproject-icon.svg
new file mode 100644
index 000000000..f7a577578
--- /dev/null
+++ b/img/openproject-icon.svg
@@ -0,0 +1,15 @@
+
diff --git a/package-lock.json b/package-lock.json
index 06e02e75b..9f0722096 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,19 +1,19 @@
{
"name": "integration_openproject",
- "version": "2.10.1",
+ "version": "3.0.0-alpha.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "integration_openproject",
- "version": "2.10.1",
+ "version": "3.0.0-alpha.1",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@mdi/svg": "^7.3.67",
"@nextcloud/auth": "^2.3.0",
"@nextcloud/axios": "^2.5.0",
"@nextcloud/dialogs": "^5.3.4",
- "@nextcloud/files": "^3.5.1",
+ "@nextcloud/files": "^4.0.0-rc.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/moment": "^1.3.1",
@@ -22,6 +22,7 @@
"dompurify": "^3.1.5",
"lodash": "^4.17.21",
"vue": "^2.7.16",
+ "vue-custom-element": "^3.3.0",
"vue-material-design-icons": "^5.3.0"
},
"devDependencies": {
@@ -2025,6 +2026,16 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@file-type/xml": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@file-type/xml/-/xml-0.4.4.tgz",
+ "integrity": "sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sax": "^1.4.1",
+ "strtok3": "^10.3.4"
+ }
+ },
"node_modules/@floating-ui/core": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.6.tgz",
@@ -3033,15 +3044,24 @@
}
},
"node_modules/@nextcloud/capabilities": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.0.tgz",
- "integrity": "sha512-L1NQtOfHWzkfj0Ple1MEJt6HmOHWAi3y4qs+OnwSWexqJT0DtXTVPyRxi7ADyITwRxS5H9R/HMl6USAj4Nr1nQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.1.tgz",
+ "integrity": "sha512-snZ0/910zzwN6PDsIlx2Uvktr1S5x0ClhDUnfPlCj7ntNvECzuVHNY5wzby22LIkc+9ZjaDKtCwuCt2ye+9p/Q==",
+ "license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/initial-state": "^2.1.0"
+ "@nextcloud/initial-state": "^3.0.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/dialogs": {
@@ -3075,22 +3095,67 @@
"vue": "^2.7.16"
}
},
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "license": "AGPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "cancelable-promise": "^4.3.1",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.1",
+ "webdav": "^5.8.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/node_modules/@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.0"
+ }
+ },
"node_modules/@nextcloud/dialogs/node_modules/@nextcloud/l10n": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.1.0.tgz",
- "integrity": "sha512-unciqr8QSJ29vFBw9S1bquyoj1PTWHszNL8tcUNuxUAYpq0hX+8o7rpB5gimELA4sj4m9+VCJwgLtBZd1Yj0lg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz",
+ "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==",
+ "license": "GPL-3.0-or-later",
"dependencies": {
"@nextcloud/router": "^3.0.1",
- "@nextcloud/typings": "^1.8.0",
- "@types/dompurify": "^3.0.5",
+ "@nextcloud/typings": "^1.9.1",
"@types/escape-html": "^1.0.4",
- "dompurify": "^3.1.2",
- "escape-html": "^1.0.3",
- "node-gettext": "^3.0.0"
+ "dompurify": "^3.2.6",
+ "escape-html": "^1.0.3"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20 || ^22 || ^24"
}
},
"node_modules/@nextcloud/dialogs/node_modules/@vueuse/core": {
@@ -3261,42 +3326,88 @@
}
},
"node_modules/@nextcloud/files": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.5.1.tgz",
- "integrity": "sha512-GkVWUgkBSVt27Carmp/DbnDiqHq03w3VQWt8xszacp/IQSB9G+8/KCvi8zxldac2q7lQ8NpHlB/Bqy8o+OOc0A==",
+ "version": "4.0.0-rc.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-4.0.0-rc.0.tgz",
+ "integrity": "sha512-zg/TQH4oQQYlntzkcWokjKIkTX39maiYXceDYrE3OnzCYZv0IKmOH3+pQer58/Z9QfsU8huTnzHblhzVNsJvAA==",
+ "license": "AGPL-3.0-or-later",
"dependencies": {
- "@nextcloud/auth": "^2.3.0",
- "@nextcloud/l10n": "^3.1.0",
- "@nextcloud/logger": "^3.0.2",
- "@nextcloud/paths": "^2.1.0",
- "@nextcloud/router": "^3.0.1",
- "@nextcloud/sharing": "^0.2.1",
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.2",
+ "webdav": "^5.8.0"
+ },
+ "engines": {
+ "node": "^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "license": "AGPL-3.0-or-later",
+ "optional": true,
+ "dependencies": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
"cancelable-promise": "^4.3.1",
- "is-svg": "^5.0.1",
+ "is-svg": "^6.1.0",
"typescript-event-target": "^1.1.1",
- "webdav": "^5.6.0"
+ "webdav": "^5.8.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/files/node_modules/@nextcloud/l10n": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.1.0.tgz",
- "integrity": "sha512-unciqr8QSJ29vFBw9S1bquyoj1PTWHszNL8tcUNuxUAYpq0hX+8o7rpB5gimELA4sj4m9+VCJwgLtBZd1Yj0lg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz",
+ "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==",
+ "license": "GPL-3.0-or-later",
"dependencies": {
"@nextcloud/router": "^3.0.1",
- "@nextcloud/typings": "^1.8.0",
- "@types/dompurify": "^3.0.5",
+ "@nextcloud/typings": "^1.9.1",
"@types/escape-html": "^1.0.4",
- "dompurify": "^3.1.2",
- "escape-html": "^1.0.3",
- "node-gettext": "^3.0.0"
+ "dompurify": "^3.2.6",
+ "escape-html": "^1.0.3"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20 || ^22 || ^24"
+ }
+ },
+ "node_modules/@nextcloud/files/node_modules/@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
+ },
+ "optionalDependencies": {
+ "@nextcloud/files": "^3.12.0"
}
},
"node_modules/@nextcloud/initial-state": {
@@ -3338,15 +3449,15 @@
}
},
"node_modules/@nextcloud/logger": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.2.tgz",
- "integrity": "sha512-wByt0R0/6QC44RBpaJr1MWghjjOxk/pRbACHo/ZWWKht1qYbJRHB4GtEi+35KEIHY07ZpqxiDk6dIRuN7sXYWQ==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.3.tgz",
+ "integrity": "sha512-TcbVRL4/O5ffI1RXFmQAFD3gwwT15AAdr1770x+RNqVvfBdoGVyhzOwCIyA5Vfc3fA1iJXFa+rE6buJZSoqlcw==",
+ "license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/auth": "^2.3.0"
+ "@nextcloud/auth": "^2.5.3"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/moment": {
@@ -3364,23 +3475,24 @@
}
},
"node_modules/@nextcloud/paths": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz",
- "integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==",
- "dependencies": {
- "core-js": "^3.6.4"
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz",
+ "integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA==",
+ "license": "GPL-3.0-or-later",
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/router": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.0.1.tgz",
- "integrity": "sha512-Ci/uD3x8OKHdxSqXL6gRJ+mGJOEXjeiHjj7hqsZqVTsT7kOrCjDf0/J8z5RyLlokKZ0IpSe+hGxgi3YB7Gpw3Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz",
+ "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==",
+ "license": "GPL-3.0-or-later",
"dependencies": {
- "@nextcloud/typings": "^1.7.0"
+ "@nextcloud/typings": "^1.10.0"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/sharing": {
@@ -3423,16 +3535,15 @@
}
},
"node_modules/@nextcloud/typings": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz",
- "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.10.0.tgz",
+ "integrity": "sha512-SMC42rDjOH3SspPTLMZRv76ZliHpj2JJkF8pGLP8l1QrVTZxE47Qz5qeKmbj2VL+dRv2e/NgixlAFmzVnxkhqg==",
"license": "GPL-3.0-or-later",
"dependencies": {
"@types/jquery": "3.5.16"
},
"engines": {
- "node": "^20.0.0",
- "npm": "^10.0.0"
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
}
},
"node_modules/@nextcloud/vue": {
@@ -3689,6 +3800,12 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "license": "MIT"
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -3790,14 +3907,6 @@
"@types/ms": "*"
}
},
- "node_modules/@types/dompurify": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
- "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
- "dependencies": {
- "@types/trusted-types": "*"
- }
- },
"node_modules/@types/escape-html": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz",
@@ -4137,7 +4246,8 @@
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
- "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "optional": true
},
"node_modules/@types/unist": {
"version": "2.0.6",
@@ -7500,6 +7610,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
"engines": {
"node": ">=0.12"
},
@@ -9054,21 +9165,18 @@
"peer": true
},
"node_modules/fast-xml-parser": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz",
- "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==",
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
+ "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
}
],
+ "license": "MIT",
"dependencies": {
- "strnum": "^1.0.5"
+ "strnum": "^1.1.1"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -10902,14 +11010,15 @@
}
},
"node_modules/is-svg": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.1.tgz",
- "integrity": "sha512-mLYxDsfisQWdS4+gSblAwhATDoNMS/tx8G7BKA+aBIf7F0m1iUwMvuKAo6mW4WMleQAEE50I1Zqef9yMMfHk3w==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz",
+ "integrity": "sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==",
+ "license": "MIT",
"dependencies": {
- "fast-xml-parser": "^4.1.3"
+ "@file-type/xml": "^0.4.3"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -13353,9 +13462,10 @@
}
},
"node_modules/layerr": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/layerr/-/layerr-2.1.0.tgz",
- "integrity": "sha512-xDD9suWxfBYeXgqffRVH/Wqh+mqZrQcqPRn0I0ijl7iJQ7vu8gMGPt1Qop59pEW/jaIDNUN7+PX1Qk40+vuflg=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/layerr/-/layerr-3.0.0.tgz",
+ "integrity": "sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==",
+ "license": "MIT"
},
"node_modules/leven": {
"version": "3.1.0",
@@ -16587,6 +16697,15 @@
}
}
},
+ "node_modules/sax": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz",
+ "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
"node_modules/saxes": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
@@ -17465,9 +17584,32 @@
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
},
"node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
+ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/strtok3": {
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz",
+ "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
},
"node_modules/style-loader": {
"version": "3.3.4",
@@ -18436,9 +18578,10 @@
}
},
"node_modules/typescript-event-target": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.1.tgz",
- "integrity": "sha512-dFSOFBKV6uwaloBCCUhxlD3Pr/P1a/tJdcmPrTXCHlEFD3faj0mztjcGn6VBAhQ0/Bdy8K3VWrrqwbt/ffsYsg=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz",
+ "integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw==",
+ "license": "MIT"
},
"node_modules/unbox-primitive": {
"version": "1.0.2",
@@ -18917,6 +19060,16 @@
"tinycolor2": "^1.1.2"
}
},
+ "node_modules/vue-custom-element": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/vue-custom-element/-/vue-custom-element-3.3.0.tgz",
+ "integrity": "sha512-ePuy1EDDJd9/piwXLwsCyMQ964HsdhXPzypM9OX0r4JBa20EVN28U7RXeTWwXkoFKim/b3sP7xT2NEM0Di6tUQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
"node_modules/vue-eslint-parser": {
"version": "9.4.3",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
@@ -19173,19 +19326,20 @@
}
},
"node_modules/webdav": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.6.0.tgz",
- "integrity": "sha512-1zpC9T+nZAEz3hHrEdis3gybiwoR5LillHmFiylhYWAsGU0bGlWlRZtK5NJ3bTr2wCoKABrRGGqLk24+UxF4Gg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.8.0.tgz",
+ "integrity": "sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==",
+ "license": "MIT",
"dependencies": {
"@buttercup/fetch": "^0.2.1",
"base-64": "^1.0.0",
"byte-length": "^1.0.2",
- "entities": "^4.5.0",
- "fast-xml-parser": "^4.2.4",
- "hot-patcher": "^2.0.0",
- "layerr": "^2.0.1",
+ "entities": "^6.0.0",
+ "fast-xml-parser": "^4.5.1",
+ "hot-patcher": "^2.0.1",
+ "layerr": "^3.0.0",
"md5": "^2.3.0",
- "minimatch": "^7.4.6",
+ "minimatch": "^9.0.5",
"nested-property": "^4.0.0",
"node-fetch": "^3.3.2",
"path-posix": "^1.0.0",
@@ -19193,26 +19347,40 @@
"url-parse": "^1.5.10"
},
"engines": {
- "node": ">=16"
+ "node": ">=14"
}
},
"node_modules/webdav/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
+ "node_modules/webdav/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/webdav/node_modules/minimatch": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
- "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -21146,6 +21314,15 @@
"dev": true,
"peer": true
},
+ "@file-type/xml": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@file-type/xml/-/xml-0.4.4.tgz",
+ "integrity": "sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==",
+ "requires": {
+ "sax": "^1.4.1",
+ "strtok3": "^10.3.4"
+ }
+ },
"@floating-ui/core": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.6.tgz",
@@ -21929,11 +22106,18 @@
"dev": true
},
"@nextcloud/capabilities": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.0.tgz",
- "integrity": "sha512-L1NQtOfHWzkfj0Ple1MEJt6HmOHWAi3y4qs+OnwSWexqJT0DtXTVPyRxi7ADyITwRxS5H9R/HMl6USAj4Nr1nQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/capabilities/-/capabilities-1.2.1.tgz",
+ "integrity": "sha512-snZ0/910zzwN6PDsIlx2Uvktr1S5x0ClhDUnfPlCj7ntNvECzuVHNY5wzby22LIkc+9ZjaDKtCwuCt2ye+9p/Q==",
"requires": {
- "@nextcloud/initial-state": "^2.1.0"
+ "@nextcloud/initial-state": "^3.0.0"
+ },
+ "dependencies": {
+ "@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ=="
+ }
}
},
"@nextcloud/dialogs": {
@@ -21959,18 +22143,51 @@
"webdav": "^5.6.0"
},
"dependencies": {
+ "@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "requires": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "cancelable-promise": "^4.3.1",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.1",
+ "webdav": "^5.8.0"
+ },
+ "dependencies": {
+ "@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ=="
+ },
+ "@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "requires": {
+ "@nextcloud/files": "^3.12.0",
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
+ }
+ }
+ }
+ },
"@nextcloud/l10n": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.1.0.tgz",
- "integrity": "sha512-unciqr8QSJ29vFBw9S1bquyoj1PTWHszNL8tcUNuxUAYpq0hX+8o7rpB5gimELA4sj4m9+VCJwgLtBZd1Yj0lg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz",
+ "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==",
"requires": {
"@nextcloud/router": "^3.0.1",
- "@nextcloud/typings": "^1.8.0",
- "@types/dompurify": "^3.0.5",
+ "@nextcloud/typings": "^1.9.1",
"@types/escape-html": "^1.0.4",
- "dompurify": "^3.1.2",
- "escape-html": "^1.0.3",
- "node-gettext": "^3.0.0"
+ "dompurify": "^3.2.6",
+ "escape-html": "^1.0.3"
}
},
"@vueuse/core": {
@@ -22060,34 +22277,66 @@
}
},
"@nextcloud/files": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.5.1.tgz",
- "integrity": "sha512-GkVWUgkBSVt27Carmp/DbnDiqHq03w3VQWt8xszacp/IQSB9G+8/KCvi8zxldac2q7lQ8NpHlB/Bqy8o+OOc0A==",
- "requires": {
- "@nextcloud/auth": "^2.3.0",
- "@nextcloud/l10n": "^3.1.0",
- "@nextcloud/logger": "^3.0.2",
- "@nextcloud/paths": "^2.1.0",
- "@nextcloud/router": "^3.0.1",
- "@nextcloud/sharing": "^0.2.1",
- "cancelable-promise": "^4.3.1",
- "is-svg": "^5.0.1",
- "typescript-event-target": "^1.1.1",
- "webdav": "^5.6.0"
- },
- "dependencies": {
+ "version": "4.0.0-rc.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-4.0.0-rc.0.tgz",
+ "integrity": "sha512-zg/TQH4oQQYlntzkcWokjKIkTX39maiYXceDYrE3OnzCYZv0IKmOH3+pQer58/Z9QfsU8huTnzHblhzVNsJvAA==",
+ "requires": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.2",
+ "webdav": "^5.8.0"
+ },
+ "dependencies": {
+ "@nextcloud/files": {
+ "version": "3.12.2",
+ "resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.12.2.tgz",
+ "integrity": "sha512-vBo8tf3Xh6efiF8CrEo3pKj9AtvAF6RdDGO1XKL65IxV8+UUd9Uxl2lUExHlzoDRRczCqfGfaWfRRaFhYqce5Q==",
+ "optional": true,
+ "requires": {
+ "@nextcloud/auth": "^2.5.3",
+ "@nextcloud/capabilities": "^1.2.1",
+ "@nextcloud/l10n": "^3.4.1",
+ "@nextcloud/logger": "^3.0.3",
+ "@nextcloud/paths": "^3.0.0",
+ "@nextcloud/router": "^3.1.0",
+ "@nextcloud/sharing": "^0.3.0",
+ "cancelable-promise": "^4.3.1",
+ "is-svg": "^6.1.0",
+ "typescript-event-target": "^1.1.1",
+ "webdav": "^5.8.0"
+ }
+ },
+ "@nextcloud/initial-state": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/initial-state/-/initial-state-3.0.0.tgz",
+ "integrity": "sha512-cV+HBdkQJGm8FxkBI5rFT/FbMNWNBvpbj6OPrg4Ae4YOOsQ15CL8InPOAw1t4XkOkQK2NEdUGQLVUz/19wXbdQ=="
+ },
"@nextcloud/l10n": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.1.0.tgz",
- "integrity": "sha512-unciqr8QSJ29vFBw9S1bquyoj1PTWHszNL8tcUNuxUAYpq0hX+8o7rpB5gimELA4sj4m9+VCJwgLtBZd1Yj0lg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-3.4.1.tgz",
+ "integrity": "sha512-aTFinTcKiK2gEXwLgutXekpZZ8/v/4QiC8C3QCLH5m0o+WtxsBC+fqV142ebC/rfDnzCLhY4ZtswSu8bFbZocg==",
"requires": {
"@nextcloud/router": "^3.0.1",
- "@nextcloud/typings": "^1.8.0",
- "@types/dompurify": "^3.0.5",
+ "@nextcloud/typings": "^1.9.1",
"@types/escape-html": "^1.0.4",
- "dompurify": "^3.1.2",
- "escape-html": "^1.0.3",
- "node-gettext": "^3.0.0"
+ "dompurify": "^3.2.6",
+ "escape-html": "^1.0.3"
+ }
+ },
+ "@nextcloud/sharing": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/sharing/-/sharing-0.3.0.tgz",
+ "integrity": "sha512-kV7qeUZvd1fTKeFyH+W5Qq5rNOqG9rLATZM3U9MBxWXHJs3OxMqYQb8UQ3NYONzsX3zDGJmdQECIGHm1ei2sCA==",
+ "requires": {
+ "@nextcloud/files": "^3.12.0",
+ "@nextcloud/initial-state": "^3.0.0",
+ "is-svg": "^6.1.0"
}
}
}
@@ -22121,11 +22370,11 @@
}
},
"@nextcloud/logger": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.2.tgz",
- "integrity": "sha512-wByt0R0/6QC44RBpaJr1MWghjjOxk/pRbACHo/ZWWKht1qYbJRHB4GtEi+35KEIHY07ZpqxiDk6dIRuN7sXYWQ==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-3.0.3.tgz",
+ "integrity": "sha512-TcbVRL4/O5ffI1RXFmQAFD3gwwT15AAdr1770x+RNqVvfBdoGVyhzOwCIyA5Vfc3fA1iJXFa+rE6buJZSoqlcw==",
"requires": {
- "@nextcloud/auth": "^2.3.0"
+ "@nextcloud/auth": "^2.5.3"
}
},
"@nextcloud/moment": {
@@ -22139,19 +22388,16 @@
}
},
"@nextcloud/paths": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-2.1.0.tgz",
- "integrity": "sha512-8wX0gqwez0bTuAS8A0OEiqbbp0ZsqLr07zSErmS6OYhh9KZcSt/kO6lQV5tnrFqIqJVsxwz4kHUjtZXh6DSf9Q==",
- "requires": {
- "core-js": "^3.6.4"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/paths/-/paths-3.0.0.tgz",
+ "integrity": "sha512-+sTfTkIbVUa2Ue3bkz3R7F1mhddvHPOWUxkSNg7Q5dAsimVFBaTRgiBAJmsAag3JPsxyuS8kUgeb0zdEssRdTA=="
},
"@nextcloud/router": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.0.1.tgz",
- "integrity": "sha512-Ci/uD3x8OKHdxSqXL6gRJ+mGJOEXjeiHjj7hqsZqVTsT7kOrCjDf0/J8z5RyLlokKZ0IpSe+hGxgi3YB7Gpw3Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-3.1.0.tgz",
+ "integrity": "sha512-e4dkIaxRSwdZJlZFpn9x03QgBn/Sa2hN1hp/BA7+AbzykmSAlKuWfdmX8j/8ewrLpQwYmZR23IZO9XwpJXq2Uw==",
"requires": {
- "@nextcloud/typings": "^1.7.0"
+ "@nextcloud/typings": "^1.10.0"
}
},
"@nextcloud/sharing": {
@@ -22178,9 +22424,9 @@
}
},
"@nextcloud/typings": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz",
- "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.10.0.tgz",
+ "integrity": "sha512-SMC42rDjOH3SspPTLMZRv76ZliHpj2JJkF8pGLP8l1QrVTZxE47Qz5qeKmbj2VL+dRv2e/NgixlAFmzVnxkhqg==",
"requires": {
"@types/jquery": "3.5.16"
}
@@ -22377,6 +22623,11 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
+ },
"@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -22474,14 +22725,6 @@
"@types/ms": "*"
}
},
- "@types/dompurify": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
- "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
- "requires": {
- "@types/trusted-types": "*"
- }
- },
"@types/escape-html": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz",
@@ -22819,7 +23062,8 @@
"@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
- "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "optional": true
},
"@types/unist": {
"version": "2.0.6",
@@ -25371,7 +25615,8 @@
"entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true
},
"envinfo": {
"version": "7.13.0",
@@ -26518,11 +26763,11 @@
"peer": true
},
"fast-xml-parser": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz",
- "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==",
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
+ "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
"requires": {
- "strnum": "^1.0.5"
+ "strnum": "^1.1.1"
}
},
"fastest-levenshtein": {
@@ -27854,11 +28099,11 @@
}
},
"is-svg": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-5.0.1.tgz",
- "integrity": "sha512-mLYxDsfisQWdS4+gSblAwhATDoNMS/tx8G7BKA+aBIf7F0m1iUwMvuKAo6mW4WMleQAEE50I1Zqef9yMMfHk3w==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-6.1.0.tgz",
+ "integrity": "sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==",
"requires": {
- "fast-xml-parser": "^4.1.3"
+ "@file-type/xml": "^0.4.3"
}
},
"is-symbol": {
@@ -29708,9 +29953,9 @@
}
},
"layerr": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/layerr/-/layerr-2.1.0.tgz",
- "integrity": "sha512-xDD9suWxfBYeXgqffRVH/Wqh+mqZrQcqPRn0I0ijl7iJQ7vu8gMGPt1Qop59pEW/jaIDNUN7+PX1Qk40+vuflg=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/layerr/-/layerr-3.0.0.tgz",
+ "integrity": "sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA=="
},
"leven": {
"version": "3.1.0",
@@ -31985,6 +32230,11 @@
"neo-async": "^2.6.2"
}
},
+ "sax": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz",
+ "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw=="
+ },
"saxes": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
@@ -32716,9 +32966,17 @@
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
},
"strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
+ "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="
+ },
+ "strtok3": {
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz",
+ "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==",
+ "requires": {
+ "@tokenizer/token": "^0.3.0"
+ }
},
"style-loader": {
"version": "3.3.4",
@@ -33440,9 +33698,9 @@
"peer": true
},
"typescript-event-target": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.1.tgz",
- "integrity": "sha512-dFSOFBKV6uwaloBCCUhxlD3Pr/P1a/tJdcmPrTXCHlEFD3faj0mztjcGn6VBAhQ0/Bdy8K3VWrrqwbt/ffsYsg=="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/typescript-event-target/-/typescript-event-target-1.1.2.tgz",
+ "integrity": "sha512-TvkrTUpv7gCPlcnSoEwUVUBwsdheKm+HF5u2tPAKubkIGMfovdSizCTaZRY/NhR8+Ijy8iZZUapbVQAsNrkFrw=="
},
"unbox-primitive": {
"version": "1.0.2",
@@ -33803,6 +34061,11 @@
"tinycolor2": "^1.1.2"
}
},
+ "vue-custom-element": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/vue-custom-element/-/vue-custom-element-3.3.0.tgz",
+ "integrity": "sha512-ePuy1EDDJd9/piwXLwsCyMQ964HsdhXPzypM9OX0r4JBa20EVN28U7RXeTWwXkoFKim/b3sP7xT2NEM0Di6tUQ=="
+ },
"vue-eslint-parser": {
"version": "9.4.3",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
@@ -33996,19 +34259,19 @@
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="
},
"webdav": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.6.0.tgz",
- "integrity": "sha512-1zpC9T+nZAEz3hHrEdis3gybiwoR5LillHmFiylhYWAsGU0bGlWlRZtK5NJ3bTr2wCoKABrRGGqLk24+UxF4Gg==",
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.8.0.tgz",
+ "integrity": "sha512-iuFG7NamJ41Oshg4930iQgfIpRrUiatPWIekeznYgEf2EOraTRcDPTjy7gIOMtkdpKTaqPk1E68NO5PAGtJahA==",
"requires": {
"@buttercup/fetch": "^0.2.1",
"base-64": "^1.0.0",
"byte-length": "^1.0.2",
- "entities": "^4.5.0",
- "fast-xml-parser": "^4.2.4",
- "hot-patcher": "^2.0.0",
- "layerr": "^2.0.1",
+ "entities": "^6.0.0",
+ "fast-xml-parser": "^4.5.1",
+ "hot-patcher": "^2.0.1",
+ "layerr": "^3.0.0",
"md5": "^2.3.0",
- "minimatch": "^7.4.6",
+ "minimatch": "^9.0.5",
"nested-property": "^4.0.0",
"node-fetch": "^3.3.2",
"path-posix": "^1.0.0",
@@ -34017,17 +34280,22 @@
},
"dependencies": {
"brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"requires": {
"balanced-match": "^1.0.0"
}
},
+ "entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="
+ },
"minimatch": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
- "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"requires": {
"brace-expansion": "^2.0.1"
}
diff --git a/package.json b/package.json
index a64856685..0c3e17dd5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "integration_openproject",
- "version": "2.11.0",
+ "version": "3.0.0-alpha.1",
"description": "OpenProject Integration",
"main": "index.js",
"directories": {
@@ -42,7 +42,7 @@
"@nextcloud/auth": "^2.3.0",
"@nextcloud/axios": "^2.5.0",
"@nextcloud/dialogs": "^5.3.4",
- "@nextcloud/files": "^3.5.1",
+ "@nextcloud/files": "^4.0.0-rc.0",
"@nextcloud/initial-state": "^2.2.0",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/moment": "^1.3.1",
@@ -51,6 +51,7 @@
"dompurify": "^3.1.5",
"lodash": "^4.17.21",
"vue": "^2.7.16",
+ "vue-custom-element": "^3.3.0",
"vue-material-design-icons": "^5.3.0"
},
"devDependencies": {
diff --git a/src/components/tab/WorkPackage.vue b/src/components/tab/WorkPackage.vue
index d8b600e95..23ab8d93a 100644
--- a/src/components/tab/WorkPackage.vue
+++ b/src/components/tab/WorkPackage.vue
@@ -145,7 +145,7 @@ export default {
el = document.getElementById('workpackage-link-previews')
}
if (el === null) {
- el = document.getElementById('tab-open-project')
+ el = document.getElementById('tab-integration_openproject')
}
return el
},
diff --git a/src/fileActions.js b/src/fileActions.js
deleted file mode 100644
index 6dbfe5475..000000000
--- a/src/fileActions.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
- * SPDX-FileCopyrightText: 2022 Jankari Tech Pvt. Ltd.
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import './bootstrap.js'
-
-OCA.Files.fileActions.registerAction({
- name: 'open-project',
- displayName: t('integration_openproject', 'OpenProject'),
- mime: 'all',
- permissions: OC.PERMISSION_READ,
- iconClass: 'icon-openproject',
- actionHandler: (filename, context) => {
- const fileList = context.fileList
- if (!fileList._detailsView) {
- return
- }
- // use the sidebar-tab id for the navigation
- fileList.showDetailsView(filename, 'open-project')
- },
-})
diff --git a/src/filesPlugin/filesPlugin.js b/src/filesPlugin/filesPlugin.js
index 5de0ac8be..17f48f766 100644
--- a/src/filesPlugin/filesPlugin.js
+++ b/src/filesPlugin/filesPlugin.js
@@ -4,7 +4,7 @@
*/
import '../bootstrap.js'
-import { registerFileAction, FileAction, Permission } from '@nextcloud/files'
+import { registerFileAction, FileAction, Permission, getSidebar } from '@nextcloud/files'
import OpenProjectIcon from '../../img/app-dark.svg'
import LinkMultipleFilesModal from '../views/LinkMultipleFilesModal.vue'
import Vue from 'vue'
@@ -36,37 +36,50 @@ const compare = (files) => {
// registering file action for single file selection
const singleFileAction = new FileAction({
- id: 'open-project-single',
+ id: 'integration_openproject-single',
displayName: () => t('integration_openproject', 'OpenProject'),
order: 0,
- enabled(nodes, view) {
+ enabled({ nodes, view }) {
// we don't want 'files.public' or any other view
return view.id === 'files'
&& nodes.length === 1
&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)
},
iconSvgInline: () => OpenProjectIcon,
- async exec(node, view, dir) {
- window.OCA.Files.Sidebar.setActiveTab('open-project')
- await window.OCA.Files.Sidebar.open(node.path)
- return null
+ async exec({ nodes }) {
+ const sidebar = getSidebar()
+ const [node] = nodes
+ try {
+ // If the sidebar is already open for the current file, do nothing
+ if (sidebar.node?.source === node.source) {
+ console.debug('Sidebar already open for this file', { node })
+ return null
+ }
+
+ sidebar.open(node, 'integration_openproject')
+ return null
+ } catch (error) {
+ console.error('Error while opening sidebar', { error })
+ return false
+ }
},
})
registerFileAction(singleFileAction)
// registering file action for multiple file selection
const multipleFileAction = new FileAction({
- id: 'open-project-multiple',
+ id: 'integration_openproject-multiple',
displayName: () => t('integration_openproject', 'Link to work package'),
order: 0,
- enabled(nodes, view) {
+ enabled({ nodes, view }) {
// we don't want 'files.public' or any other view
return view.id === 'files'
&& nodes.length >= 1
&& !nodes.some(({ permissions }) => (permissions & Permission.READ) === 0)
},
iconSvgInline: () => OpenProjectIcon,
- async exec(node, view, dir) {
+ async exec({ nodes }) {
+ const node = nodes[0]
console.debug('in the single action handler')
OCA.OpenProject.LinkMultipleFilesModalVue.$children[0].setFileInfos([{
id: node.fileid,
@@ -76,7 +89,7 @@ const multipleFileAction = new FileAction({
// to avoid the toast message
return null
},
- async execBatch(nodes, view, dir) {
+ async execBatch({ nodes }) {
console.debug('in the multi action handler')
compare(nodes)
// to avoid the toast message
diff --git a/src/filesPlugin/filesPluginLessThan28.js b/src/filesPlugin/filesPluginLessThan28.js
deleted file mode 100644
index 0a0f9f148..000000000
--- a/src/filesPlugin/filesPluginLessThan28.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * SPDX-FileCopyrightText: 2023 Jankari Tech Pvt. Ltd.
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-import '../bootstrap.js'
-import Vue from 'vue'
-import LinkMultipleFilesModal from '../views/LinkMultipleFilesModal.vue'
-
-(function() {
- if (!OCA.OpenProject) {
- /**
- * @namespace
- */
- OCA.OpenProject = {
- requestOnFileChange: false,
- }
- }
-
- /**
- * @namespace
- */
- OCA.OpenProject.FilesPlugin = {
- ignoreLists: [
- 'trashbin',
- 'files.public',
- ],
-
- attach(fileList) {
- if (this.ignoreLists.indexOf(fileList.id) >= 0) {
- return
- }
- fileList.registerMultiSelectFileAction({
- name: 'open-project',
- displayName: t('integration_openproject', 'Link to work package'),
- mime: 'all',
- permissions: OC.PERMISSION_READ,
- iconClass: 'icon-openproject',
- action: (selectedFiles) => { this.signExample(selectedFiles) },
- })
- },
- signExample: (selectedFiles) => {
- // store all the file-id in an array and set the file ids
- const fileInfos = []
- for (const file of selectedFiles) {
- const fileInfo = {
- id: file.id,
- name: file.name,
- }
- fileInfos.push(fileInfo)
- }
- OCA.OpenProject.LinkMultipleFilesModalVue.$children[0].setFileInfos(fileInfos)
- OCA.OpenProject.LinkMultipleFilesModalVue.$children[0].showModal()
- },
- }
-})()
-
-OC.Plugins.register('OCA.Files.FileList', OCA.OpenProject.FilesPlugin)
-
-const modalId = 'multipleFileLinkModal'
-const modalElement = document.createElement('div')
-modalElement.id = modalId
-document.body.append(modalElement)
-
-OCA.OpenProject.LinkMultipleFilesModalVue = new Vue({
- el: modalElement,
- render: h => {
- return h(LinkMultipleFilesModal)
- },
-})
diff --git a/src/projectTab.js b/src/projectTab.js
index 01eab3090..f3521361e 100644
--- a/src/projectTab.js
+++ b/src/projectTab.js
@@ -5,46 +5,33 @@
*/
import Vue from 'vue'
+import vueCustomElement from 'vue-custom-element'
+import { registerSidebarTab } from '@nextcloud/files'
import './bootstrap.js'
+import OpenProjectSvgIcon from '../img/openproject-icon.svg'
import ProjectsTab from './views/ProjectsTab.vue'
-// Init OpenProject Tab Service
-if (!window.OCA.OpenProject) {
- window.OCA.OpenProject = {}
-}
+Vue.use(vueCustomElement)
-const View = Vue.extend(ProjectsTab)
-let TabInstance = null
+const tagName = 'integration_openproject-files-sidebar-tab'
-const projectTab = new OCA.Files.Sidebar.Tab({
- id: 'open-project',
- name: t('integration_openproject', 'OpenProject'),
- icon: 'icon-openproject',
-
- async mount(el, fileInfo, context) {
- if (TabInstance) {
- TabInstance.$destroy()
+registerSidebarTab({
+ id: 'integration_openproject',
+ order: 50,
+ displayName: t('integration_openproject', 'OpenProject'),
+ iconSvgInline: OpenProjectSvgIcon,
+ enabled() {
+ return true
+ },
+ tagName,
+ onInit: () => {
+ if (window.customElements.get(tagName)) {
+ // element already defined
+ return
}
- TabInstance = new View({
- // Better integration with vue parent component
- parent: context,
+ Vue.customElement(tagName, ProjectsTab, {
+ shadow: false,
})
- // Only mount after we have all the info we need
- await TabInstance.update(fileInfo)
- TabInstance.$mount(el)
- },
- update(fileInfo) {
- TabInstance.update(fileInfo)
},
- destroy() {
- TabInstance.$destroy()
- TabInstance = null
- },
-})
-
-window.addEventListener('DOMContentLoaded', function() {
- if (OCA.Files && OCA.Files.Sidebar) {
- OCA.Files.Sidebar.registerTab(projectTab)
- }
})
diff --git a/src/views/ProjectsTab.vue b/src/views/ProjectsTab.vue
index e5746879c..2f2532e4e 100644
--- a/src/views/ProjectsTab.vue
+++ b/src/views/ProjectsTab.vue
@@ -73,6 +73,12 @@ export default {
NcLoadingIcon,
LinkOffIcon,
},
+ props: {
+ node: {
+ type: Object,
+ required: true,
+ },
+ },
data: () => ({
error: '',
fileInfo: {},
@@ -103,7 +109,13 @@ export default {
})
},
},
+ watch: {
+ node() {
+ this.update()
+ },
+ },
mounted() {
+ this.update()
if (this.authMethod === AUTH_METHOD.OAUTH2) {
checkOauthConnectionResult(this.oauthConnectionResult, this.oauthConnectionErrorMessage)
}
@@ -111,11 +123,13 @@ export default {
methods: {
/**
* updates current resource
- *
- * @param {object} fileInfo file information
*/
- async update(fileInfo) {
- this.fileInfo = fileInfo
+ async update() {
+ this.fileInfo = {
+ id: this.node.fileid,
+ name: this.node.basename,
+ dir: this.node.dirname,
+ }
this.workpackages = []
this.state = STATE.LOADING
if (this.isAdminConfigOk) {
diff --git a/webpack.js b/webpack.js
index 8ddb2d02e..9538cd541 100644
--- a/webpack.js
+++ b/webpack.js
@@ -24,9 +24,7 @@ webpackConfig.entry = {
adminSettings: { import: path.join(__dirname, 'src', 'adminSettings.js'), filename: appId + '-adminSettings.js' },
dashboard: { import: path.join(__dirname, 'src', 'dashboard.js'), filename: appId + '-dashboard.js' },
'openproject-tab': { import: path.join(__dirname, 'src', 'projectTab.js'), filename: appId + '-projectTab.js' },
- fileActions: { import: path.join(__dirname, 'src', 'fileActions.js'), filename: appId + '-fileActions.js' },
filesPlugin: { import: path.join(__dirname, 'src/filesPlugin', 'filesPlugin'), filename: appId + '-filesPlugin.js' },
- filesPluginLessThan28: { import: path.join(__dirname, 'src/filesPlugin', 'filesPluginLessThan28.js'), filename: appId + '-filesPluginLessThan28.js' },
reference: { import: path.join(__dirname, 'src', 'reference.js'), filename: appId + '-reference.js' },
}