Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 2.11.0-privacyPolicy
  • APIv2
  • Docs/Setup
  • Experiment/fix-debugging
  • Experimental/Heinrichs-cypress
  • Feature/xxxx-turnOffDataPub
  • Fix/xxxx-ToS400Error
  • Fix/xxxx-migrateLogin
  • Fix/xxxx-tokenUploadButton
  • Hotfix/0038-correctDownload
  • Hotfix/1917-PublicFilesVisibility
  • Hotfix/1963-fixOrganizationField
  • Hotfix/2015-PublicFilesVisibility
  • Hotfix/2130-uiv2ContactChange
  • Hotfix/2144-invitationCall
  • Hotfix/2150-fixUpload
  • Hotfix/2160-userOrgsInst
  • Hotfix/2190-requiredFieldsForUserProfile
  • Hotfix/2196-RCVTableTranslation
  • Hotfix/2212-fixFiles
  • Hotfix/2226-userProfileSaveButton
  • Hotfix/2232-dependencyFix
  • Hotfix/2233-fixMe
  • Hotfix/2258-saveButtonWorksAsExpected
  • Hotfix/2296-selectedValuesNotReturned
  • Hotfix/2308-defaultLicense
  • Hotfix/2335-fixingSearchRCV
  • Hotfix/2353-dropShape
  • Hotfix/2370-fixDeleteButton
  • Hotfix/2378-linkedFix
  • Hotfix/2379-filesDragAndDrop
  • Hotfix/2382-guestStillBuggy
  • Hotfix/2384-guestsAndLinked
  • Hotfix/2427-adminTrouble
  • Hotfix/2459-EncodingPath
  • Hotfix/2465-orcidLink
  • Hotfix/2465-orcidLink-v1.25.1
  • Hotfix/2504-formGen
  • Hotfix/2541-resCreate
  • Hotfix/2601-correctMetadataIdentity
  • Hotfix/2611-feedback
  • Hotfix/2618-turtle
  • Hotfix/2681-validationErrors
  • Hotfix/2684-correctEncoding
  • Hotfix/2684-fixSubMetadata
  • Hotfix/2713-validateEntryName
  • Hotfix/2734-allowEmptyLicense
  • Hotfix/2765-encodingAgain
  • Hotfix/2852-adaptTextForToSUi
  • Hotfix/2853-optimizationV4
  • Hotfix/2943-reloadingResources
  • Hotfix/2943-searchHighlighting
  • Hotfix/2957-styleAndUpgrade
  • Hotfix/2971-fixTextInDataPub
  • Hotfix/2989-cookieLength
  • Hotfix/662-keepSidebarExpanded
  • Hotfix/xxxx-correctLinking
  • Hotfix/xxxx-folderRecursive
  • Hotfix/xxxx-fullscreenCss
  • Hotfix/xxxx-homepageDisplay
  • Hotfix/xxxx-liveReleaseFixes
  • Hotfix/xxxx-partnerProjects
  • Hotfix/xxxx-workingFileIndex
  • Issue/1782-structualDataIntegration
  • Issue/1792-newMetadataStructure
  • Issue/1822-coscineUIv2App
  • Issue/1824-componentsUIv2
  • Issue/1824-routerAdditions
  • Issue/1825-codeQualityPipelines
  • Issue/1833-newLogin
  • Issue/1843-multipleFilesValidation
  • Issue/1860-searchScoping
  • Issue/1861-searchMetadata
  • Issue/1862-searchFacets
  • Issue/1863-paginationForSearch
  • Issue/1926-userProfile
  • Issue/1927-projectAppMigration
  • Issue/1928-sidebarmenuAddition
  • Issue/1929-vuexToPinia
  • Issue/1938-internalHandling
  • Issue/1951-quotaImplementation
  • Issue/1953-owlImports
  • Issue/1957-resourceAppMigration
  • Issue/1957-resourceAppMigrationNew
  • Issue/1962-SearchAppUI2
  • Issue/1964-tokenExpiryUIv2
  • Issue/1965-userListMigration
  • Issue/1970-breadcrumbs
  • Issue/1971-projectEditCreateMigration
  • Issue/1972-homeDepot
  • Issue/1974-shibbolethLogout
  • Issue/1976-resouceCreationVaildEmail
  • Issue/1979-supportAdminUIv2Migration
  • Issue/1980-userManagement
  • Issue/1985-adaptSidebar
  • Issue/2002-migrateResourceCreate
  • Issue/2003-resourceSettings
  • Issue/2008-quotaManagement
  • Issue/2011-pathConfig
  • Issue/2016-BannerMigration
  • 1.28.0-pilot
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.10.1
  • v1.10.2
  • v1.10.3
  • v1.11.0
  • v1.11.1
  • v1.11.2
  • v1.11.3
  • v1.11.4
  • v1.11.5
  • v1.11.6
  • v1.11.7
  • v1.12.0
  • v1.13.0
  • v1.14.0
  • v1.14.1
  • v1.14.2
  • v1.14.3
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.16.1
  • v1.16.2
  • v1.16.3
  • v1.17.0
  • v1.17.1
  • v1.17.2
  • v1.18.0
  • v1.18.1
  • v1.19.0
  • v1.2.0
  • v1.20.0
  • v1.20.1
  • v1.20.2
  • v1.20.3
  • v1.20.4
  • v1.20.5
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.23.1
  • v1.23.2
  • v1.23.3
  • v1.23.4
  • v1.23.5
  • v1.23.6
  • v1.23.6-patch-2417-2427
  • v1.24.0
  • v1.24.1
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.26.1
  • v1.27.0
  • v1.27.1
  • v1.27.1-pilot
  • v1.28.0
  • v1.29.0
  • v1.29.1
  • v1.29.2
  • v1.3.0
  • v1.30.0
  • v1.30.1
  • v1.30.2
  • v1.31.0
  • v1.32.0
  • v1.4.0
  • v1.4.1
  • v1.5.0
  • v1.6.0
  • v1.6.1
  • v1.6.2
  • v1.7.0
  • v1.8.0
  • v1.8.1
  • v1.8.2
  • v1.9.0
  • v2.0.0
  • v2.1.0
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.12.0
  • v2.12.1
  • v2.12.2
  • v2.12.3
  • v2.12.4
  • v2.12.5
  • v2.13.0
  • v2.13.1
  • v2.13.2
  • v2.13.3
  • v2.13.4
  • v2.14.0
  • v2.15.0
200 results

Target

Select target project
  • coscine/frontend/apps/ui
1 result
Select Git revision
  • 2.11.0-privacyPolicy
  • APIv2
  • Docs/Setup
  • Experiment/fix-debugging
  • Experimental/Heinrichs-cypress
  • Feature/xxxx-turnOffDataPub
  • Fix/xxxx-ToS400Error
  • Fix/xxxx-migrateLogin
  • Fix/xxxx-tokenUploadButton
  • Hotfix/0038-correctDownload
  • Hotfix/1917-PublicFilesVisibility
  • Hotfix/1963-fixOrganizationField
  • Hotfix/2015-PublicFilesVisibility
  • Hotfix/2130-uiv2ContactChange
  • Hotfix/2144-invitationCall
  • Hotfix/2150-fixUpload
  • Hotfix/2160-userOrgsInst
  • Hotfix/2190-requiredFieldsForUserProfile
  • Hotfix/2196-RCVTableTranslation
  • Hotfix/2212-fixFiles
  • Hotfix/2226-userProfileSaveButton
  • Hotfix/2232-dependencyFix
  • Hotfix/2233-fixMe
  • Hotfix/2258-saveButtonWorksAsExpected
  • Hotfix/2296-selectedValuesNotReturned
  • Hotfix/2308-defaultLicense
  • Hotfix/2335-fixingSearchRCV
  • Hotfix/2353-dropShape
  • Hotfix/2370-fixDeleteButton
  • Hotfix/2378-linkedFix
  • Hotfix/2379-filesDragAndDrop
  • Hotfix/2382-guestStillBuggy
  • Hotfix/2384-guestsAndLinked
  • Hotfix/2427-adminTrouble
  • Hotfix/2459-EncodingPath
  • Hotfix/2465-orcidLink
  • Hotfix/2465-orcidLink-v1.25.1
  • Hotfix/2504-formGen
  • Hotfix/2541-resCreate
  • Hotfix/2601-correctMetadataIdentity
  • Hotfix/2611-feedback
  • Hotfix/2618-turtle
  • Hotfix/2681-validationErrors
  • Hotfix/2684-correctEncoding
  • Hotfix/2684-fixSubMetadata
  • Hotfix/2713-validateEntryName
  • Hotfix/2734-allowEmptyLicense
  • Hotfix/2765-encodingAgain
  • Hotfix/2852-adaptTextForToSUi
  • Hotfix/2853-optimizationV4
  • Hotfix/2943-reloadingResources
  • Hotfix/2943-searchHighlighting
  • Hotfix/2957-styleAndUpgrade
  • Hotfix/2971-fixTextInDataPub
  • Hotfix/2989-cookieLength
  • Hotfix/662-keepSidebarExpanded
  • Hotfix/xxxx-correctLinking
  • Hotfix/xxxx-folderRecursive
  • Hotfix/xxxx-fullscreenCss
  • Hotfix/xxxx-homepageDisplay
  • Hotfix/xxxx-liveReleaseFixes
  • Hotfix/xxxx-partnerProjects
  • Hotfix/xxxx-workingFileIndex
  • Issue/1782-structualDataIntegration
  • Issue/1792-newMetadataStructure
  • Issue/1822-coscineUIv2App
  • Issue/1824-componentsUIv2
  • Issue/1824-routerAdditions
  • Issue/1825-codeQualityPipelines
  • Issue/1833-newLogin
  • Issue/1843-multipleFilesValidation
  • Issue/1860-searchScoping
  • Issue/1861-searchMetadata
  • Issue/1862-searchFacets
  • Issue/1863-paginationForSearch
  • Issue/1926-userProfile
  • Issue/1927-projectAppMigration
  • Issue/1928-sidebarmenuAddition
  • Issue/1929-vuexToPinia
  • Issue/1938-internalHandling
  • Issue/1951-quotaImplementation
  • Issue/1953-owlImports
  • Issue/1957-resourceAppMigration
  • Issue/1957-resourceAppMigrationNew
  • Issue/1962-SearchAppUI2
  • Issue/1964-tokenExpiryUIv2
  • Issue/1965-userListMigration
  • Issue/1970-breadcrumbs
  • Issue/1971-projectEditCreateMigration
  • Issue/1972-homeDepot
  • Issue/1974-shibbolethLogout
  • Issue/1976-resouceCreationVaildEmail
  • Issue/1979-supportAdminUIv2Migration
  • Issue/1980-userManagement
  • Issue/1985-adaptSidebar
  • Issue/2002-migrateResourceCreate
  • Issue/2003-resourceSettings
  • Issue/2008-quotaManagement
  • Issue/2011-pathConfig
  • Issue/2016-BannerMigration
  • 1.28.0-pilot
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.10.1
  • v1.10.2
  • v1.10.3
  • v1.11.0
  • v1.11.1
  • v1.11.2
  • v1.11.3
  • v1.11.4
  • v1.11.5
  • v1.11.6
  • v1.11.7
  • v1.12.0
  • v1.13.0
  • v1.14.0
  • v1.14.1
  • v1.14.2
  • v1.14.3
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.16.1
  • v1.16.2
  • v1.16.3
  • v1.17.0
  • v1.17.1
  • v1.17.2
  • v1.18.0
  • v1.18.1
  • v1.19.0
  • v1.2.0
  • v1.20.0
  • v1.20.1
  • v1.20.2
  • v1.20.3
  • v1.20.4
  • v1.20.5
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.23.1
  • v1.23.2
  • v1.23.3
  • v1.23.4
  • v1.23.5
  • v1.23.6
  • v1.23.6-patch-2417-2427
  • v1.24.0
  • v1.24.1
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.26.1
  • v1.27.0
  • v1.27.1
  • v1.27.1-pilot
  • v1.28.0
  • v1.29.0
  • v1.29.1
  • v1.29.2
  • v1.3.0
  • v1.30.0
  • v1.30.1
  • v1.30.2
  • v1.31.0
  • v1.32.0
  • v1.4.0
  • v1.4.1
  • v1.5.0
  • v1.6.0
  • v1.6.1
  • v1.6.2
  • v1.7.0
  • v1.8.0
  • v1.8.1
  • v1.8.2
  • v1.9.0
  • v2.0.0
  • v2.1.0
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.12.0
  • v2.12.1
  • v2.12.2
  • v2.12.3
  • v2.12.4
  • v2.12.5
  • v2.13.0
  • v2.13.1
  • v2.13.2
  • v2.13.3
  • v2.13.4
  • v2.14.0
  • v2.15.0
200 results
Show changes
Commits on Source (11)
Showing
with 615 additions and 263 deletions
{
"name": "ui",
"version": "3.1.0",
"version": "3.2.0",
"scripts": {
"dev": "vite",
"build": "vite build",
......@@ -12,19 +12,15 @@
"coverage": "vitest run --coverage"
},
"dependencies": {
"@coscine/api-client": "^3.8.0",
"@coscine/form-generator": "^4.0.3",
"@coscine/api-client": "^3.9.0",
"@coscine/form-generator": "^4.0.4",
"@dynamic-mapper/mapper": "^1.10.4",
"@pinia/testing": "^0.1.3",
"@rdfjs-elements/formats-pretty": "^0.6.4",
"@rdfjs/data-model": "^2.0.1",
"@rdfjs/dataset": "^2.0.1",
"@rdfjs/to-ntriples": "^2.0.0",
"@rdfjs/types": "^1.1.0",
"@rdfjs-elements/formats-pretty": "^0.6.7",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"@vueuse/core": "^10.10.0",
"@zazuko/prefixes": "^2.1.1",
"@zazuko/prefixes": "^2.2.0",
"axios": "^1.7.2",
"bootstrap": "^5.3.3",
"bootstrap-icons": "^1.11.1",
......@@ -33,14 +29,12 @@
"file-saver": "^2.0.5",
"http-status-codes": "^2.3.0",
"jose": "^5.1.1",
"jquery": "^3.7.1",
"lodash": "^4.17.21",
"moment": "^2.29.4",
"pinia": "^2.1.7",
"rdf-canonize": "^4.0.1",
"rdf-ext": "^2.4.0",
"rdf-parse": "^2.3.2",
"rdf-validate-shacl": "^0.4.5",
"rdf-ext": "^2.5.2",
"rdf-parse": "^3.0.0",
"rdf-validate-shacl": "^0.5.5",
"sass": "^1.69.5",
"sass-loader": "^13.3.2",
"stream-to-string": "^1.2.1",
......@@ -56,6 +50,7 @@
},
"devDependencies": {
"@iconify-json/bi": "^1.1.23",
"@rdfjs/types": "^1.1.0",
"@semantic-release/commit-analyzer": "^10.0.4",
"@semantic-release/git": "^10.0.1",
"@semantic-release/gitlab": "^12.0.6",
......@@ -63,8 +58,8 @@
"@semantic-release/release-notes-generator": "^11.0.7",
"@types/file-saver": "^2.0.7",
"@types/lodash": "^4.14.201",
"@types/rdf-ext": "^2.2.5",
"@types/rdf-validate-shacl": "^0.4.6",
"@types/rdf-ext": "^2.5.0",
"@types/rdf-validate-shacl": "^0.4.7",
"@types/uuid": "^9.0.7",
"@types/vue-select": "^3.16.8",
"@typescript-eslint/eslint-plugin": "^7.12.0",
......
......@@ -12,22 +12,35 @@ declare module 'vue' {
BBreadcrumb: typeof import('bootstrap-vue-next')['BBreadcrumb']
BBreadcrumbItem: typeof import('bootstrap-vue-next')['BBreadcrumbItem']
BButton: typeof import('bootstrap-vue-next')['BButton']
BButtonGroup: typeof import('bootstrap-vue-next')['BButtonGroup']
BCard: typeof import('bootstrap-vue-next')['BCard']
BCardBody: typeof import('bootstrap-vue-next')['BCardBody']
BCardGroup: typeof import('bootstrap-vue-next')['BCardGroup']
BCardText: typeof import('bootstrap-vue-next')['BCardText']
BCardTitle: typeof import('bootstrap-vue-next')['BCardTitle']
BCol: typeof import('bootstrap-vue-next')['BCol']
BCollapse: typeof import('bootstrap-vue-next')['BCollapse']
BContainer: typeof import('bootstrap-vue-next')['BContainer']
BDropdown: typeof import('bootstrap-vue-next')['BDropdown']
BDropdownDivider: typeof import('bootstrap-vue-next')['BDropdownDivider']
BDropdownItem: typeof import('bootstrap-vue-next')['BDropdownItem']
BDropdownItemButton: typeof import('bootstrap-vue-next')['BDropdownItemButton']
BForm: typeof import('bootstrap-vue-next')['BForm']
BFormCheckbox: typeof import('bootstrap-vue-next')['BFormCheckbox']
BFormFile: typeof import('bootstrap-vue-next')['BFormFile']
BFormGroup: typeof import('bootstrap-vue-next')['BFormGroup']
BFormInput: typeof import('bootstrap-vue-next')['BFormInput']
BFormRadioGroup: typeof import('bootstrap-vue-next')['BFormRadioGroup']
BFormSelect: typeof import('bootstrap-vue-next')['BFormSelect']
BFormSelectOption: typeof import('bootstrap-vue-next')['BFormSelectOption']
BFormText: typeof import('bootstrap-vue-next')['BFormText']
BFormTextarea: typeof import('bootstrap-vue-next')['BFormTextarea']
BImg: typeof import('bootstrap-vue-next')['BImg']
BInputGroup: typeof import('bootstrap-vue-next')['BInputGroup']
BInputGroupText: typeof import('bootstrap-vue-next')['BInputGroupText']
BLink: typeof import('bootstrap-vue-next')['BLink']
BListGroup: typeof import('bootstrap-vue-next')['BListGroup']
BListGroupItem: typeof import('bootstrap-vue-next')['BListGroupItem']
BModal: typeof import('bootstrap-vue-next')['BModal']
BNavbar: typeof import('bootstrap-vue-next')['BNavbar']
BNavbarBrand: typeof import('bootstrap-vue-next')['BNavbarBrand']
......@@ -37,22 +50,31 @@ declare module 'vue' {
BNavItem: typeof import('bootstrap-vue-next')['BNavItem']
BNavItemDropdown: typeof import('bootstrap-vue-next')['BNavItemDropdown']
BOverlay: typeof import('bootstrap-vue-next')['BOverlay']
BPagination: typeof import('bootstrap-vue-next')['BPagination']
BPlaceholder: typeof import('bootstrap-vue-next')['BPlaceholder']
BPlaceholderTable: typeof import('bootstrap-vue-next')['BPlaceholderTable']
BPlaceholderWrapper: typeof import('bootstrap-vue-next')['BPlaceholderWrapper']
BPopover: typeof import('bootstrap-vue-next')['BPopover']
BProgress: typeof import('bootstrap-vue-next')['BProgress']
BProgressBar: typeof import('bootstrap-vue-next')['BProgressBar']
BreadCrumbs: typeof import('./components/elements/BreadCrumbs.vue')['default']
BRow: typeof import('bootstrap-vue-next')['BRow']
BSpinner: typeof import('bootstrap-vue-next')['BSpinner']
BTab: typeof import('bootstrap-vue-next')['BTab']
BTable: typeof import('bootstrap-vue-next')['BTable']
BTabs: typeof import('bootstrap-vue-next')['BTabs']
BTh: typeof import('bootstrap-vue-next')['BTh']
BToast: typeof import('bootstrap-vue-next')['BToast']
BToastOrchestrator: typeof import('bootstrap-vue-next')['BToastOrchestrator']
BTooltip: typeof import('bootstrap-vue-next')['BTooltip']
BTr: typeof import('bootstrap-vue-next')['BTr']
CoscineCard: typeof import('./components/coscine/CoscineCard.vue')['default']
CoscineFormGroup: typeof import('./components/coscine/CoscineFormGroup.vue')['default']
CoscineHeadline: typeof import('./components/coscine/CoscineHeadline.vue')['default']
CoscineModal: typeof import('./components/coscine/CoscineModal.vue')['default']
ExpiryToast: typeof import('./components/toasts/ExpiryToast.vue')['default']
Footer: typeof import('./components/elements/Footer.vue')['default']
FormGenerator: typeof import('@coscine/form-generator')['default']
IBiArchive: typeof import('~icons/bi/archive')['default']
IBiArrowBarLeft: typeof import('~icons/bi/arrow-bar-left')['default']
IBiArrowBarRight: typeof import('~icons/bi/arrow-bar-right')['default']
......@@ -60,16 +82,32 @@ declare module 'vue' {
IBiCheck2: typeof import('~icons/bi/check2')['default']
IBiCircleFill: typeof import('~icons/bi/circle-fill')['default']
IBiCircleHalf: typeof import('~icons/bi/circle-half')['default']
IBiClipboard: typeof import('~icons/bi/clipboard')['default']
IBiFileEarmark: typeof import('~icons/bi/file-earmark')['default']
IBiFileEarmarkPlus: typeof import('~icons/bi/file-earmark-plus')['default']
IBiFolder: typeof import('~icons/bi/folder')['default']
IBiFolder2Open: typeof import('~icons/bi/folder2-open')['default']
IBiFullscreen: typeof import('~icons/bi/fullscreen')['default']
IBiFullscreenExit: typeof import('~icons/bi/fullscreen-exit')['default']
IBiFunnel: typeof import('~icons/bi/funnel')['default']
IBiGear: typeof import('~icons/bi/gear')['default']
IBiGlobe2: typeof import('~icons/bi/globe2')['default']
IBiHouse: typeof import('~icons/bi/house')['default']
IBiHouseFill: typeof import('~icons/bi/house-fill')['default']
IBiInfoCircle: typeof import('~icons/bi/info-circle')['default']
IBiLink45deg: typeof import('~icons/bi/link45deg')['default']
IBiMoonStarsFill: typeof import('~icons/bi/moon-stars-fill')['default']
IBiPencilFill: typeof import('~icons/bi/pencil-fill')['default']
IBiPeopleFill: typeof import('~icons/bi/people-fill')['default']
IBiPerson: typeof import('~icons/bi/person')['default']
IBiPlus: typeof import('~icons/bi/plus')['default']
IBiPlusCircleFill: typeof import('~icons/bi/plus-circle-fill')['default']
IBiSearch: typeof import('~icons/bi/search')['default']
IBiShieldLockFill: typeof import('~icons/bi/shield-lock-fill')['default']
IBiSortDown: typeof import('~icons/bi/sort-down')['default']
IBiSortUp: typeof import('~icons/bi/sort-up')['default']
IBiSunFill: typeof import('~icons/bi/sun-fill')['default']
IBiThreeDotsVertical: typeof import('~icons/bi/three-dots-vertical')['default']
LoadingIndicator: typeof import('./components/elements/LoadingIndicator.vue')['default']
LoadingSpinner: typeof import('./components/coscine/LoadingSpinner.vue')['default']
Maintenance: typeof import('./components/banner/Maintenance.vue')['default']
......
......@@ -114,7 +114,8 @@ export default defineComponent({
},
];
// TODO: comment in when UB gives green light
/*if (
/*
if (
this.currentUserRole &&
this.currentUserRole.displayName === "Owner"
) {
......
......@@ -31,8 +31,7 @@ export default {
extrasHelp: "https://docs.coscine.de/de/",
privacyPolicy: "https://about.coscine.de/privacypolicy/",
extrasImprint: "https://www.coscine.de/imprint/",
extrasAccessibility:
"https://about.coscine.de/accessibility/",
extrasAccessibility: "https://about.coscine.de/accessibility/",
coscine: "https://www.coscine.de/",
},
},
......@@ -49,11 +48,11 @@ export default {
configurationMetadata: "Konfiguration & Metadaten",
users: "Mitglieder",
quota: "Quota",
projectDataPublication: "Antrag auf Datenveröffentlichung",
projectDataPublication: "Anfrage Datenveröffentlichung",
},
buttons: {
addUser: "Nutzenden hinzufügen",
addUser: "Mitglied hinzufügen",
archive: "@:{'default.archive'}",
back: "Zurück",
cancel: "Abbrechen",
......@@ -171,7 +170,7 @@ export default {
page: "{projectName}",
create: "Projekt erstellen",
configMetadata: "Projektkonfiguration & -metadaten",
dataPublication: "Antrag auf Datenveröffentlichung",
dataPublication: "Anfrage Datenveröffentlichung",
quota: "Projektquota",
members: "Projektmitglieder",
},
......
......@@ -31,8 +31,7 @@ export default {
extrasHelp: "https://docs.coscine.de/en/",
privacyPolicy: "https://about.coscine.de/privacypolicy/",
extrasImprint: "https://www.coscine.de/en/imprint/",
extrasAccessibility:
"https://about.coscine.de/en/accessibility/",
extrasAccessibility: "https://about.coscine.de/en/accessibility/",
coscine: "https://www.coscine.de/en/",
},
},
......
......@@ -31,14 +31,14 @@ export default {
pendingStatus: "Wartet",
expiredStatus: "Abgelaufen",
changeRole: "Rolle ändern",
noUserOptions: "Kein Benutzer gefunden",
noUserOptions: "Keine registrierte Person gefunden",
searchNotEnoughCharacters: "Bitte mehr als 3 Zeichen eingeben",
createUsersMenu: "Benutzer Menü öffnen",
user: "Benutzer",
user: "Mitglied",
role: "Rolle",
typeToSearch: "Projektmitglied suchen...",
perPage: "Pro Seite",
searchUserPlaceholder: "Nach Benutzer oder E-Mail Adresse suchen...",
searchUserPlaceholder:
"Nach registrierter Person oder E-Mail Adresse suchen...",
searchEmailInvite:
"Sie können eine Einladung an diese E-Mail Adresse senden",
alreadyGotRole: "(bereits Mitglied)",
......@@ -66,7 +66,7 @@ export default {
invitedUserText:
"Eine Einladung wurde an {email} mit einer Rolle als {role} für das Projekt {projectName} verschickt.",
invitationPendingText:
"Es wurde bereits eine Einladung an {email} gesendet. {br}Wenn Sie eine neue Einladungsemail an diesen Nutzenden schicken möchten, müssen Sie die vorherige Einladung über den Tab Eingeladene Benutzer löschen.",
"Es wurde bereits eine Einladung an {email} gesendet. {br}Wenn Sie eine neue Einladungsemail an diese Person schicken möchten, müssen Sie die vorherige Einladung über den Tab Eingeladene Personen löschen.",
invitedUserError:
"Ein Fehler ist beim Einladen von {email} aufgetreten. Eingaben sind fehlerhaft oder der Nutzende wurde bereits eingeladen.",
deleteExternalUserError:
......@@ -98,7 +98,7 @@ export default {
"Fügen Sie bitte {linkToUserProfile} Ihre E-Mail Adresse hinzu und verfizieren Sie diese, um eine neue Ressource anlegen zu können.",
tooltipHere: "hier",
members: {
toProjectMembers: "Benutzerverwaltung...",
toProjectMembers: "Mitgliederverwaltung...",
modal: {
// Leave project modal
......@@ -115,29 +115,29 @@ export default {
dataPublication: {
continue: "Weiter",
description1:
"Um Sie bei der Veröffentlichung Ihrer Daten zu unterstützen, stehen Ihnen Publikationsberatungsdienste zur Verfügung. Coscine bietet einen Service an, um den Datenveröffentlichungsdienst einer Partnerhochschule zu kontaktieren und gleichzeitig erste Informationen über Ihr Projekt, Ihre Ressourcen und die Daten, die Sie veröffentlichen möchten, weiterzuleiten.",
"Um Sie bei der Veröffentlichung Ihrer Daten zu unterstützen, stehen Ihnen Publikationsservices zur Verfügung. Coscine bietet einen Service an, um den Datenveröffentlichungsdienst einer Partnerhochschule zu kontaktieren und gleichzeitig erste Informationen über Ihr Projekt, Ihre Ressourcen und die Daten, die Sie veröffentlichen möchten, weiterzuleiten.",
description2:
"Nach erfolgreichem Übermitteln der Informationen, werden alle Project Owner benachrichtigt und der entsprechende Publikationsberatungsdienst wird sich mit Ihnen in Verbindung setzen, um die weiteren Schritte mit Ihnen zu besprechen. Bitte beachten Sie, dass es innerhalb von Coscine keine Möglichkeit zur Nachverfolgung des Status gibt.",
title: "Antrag auf Datenveröffentlichung",
"Nach erfolgreichem Übermitteln der Informationen, werden alle Project Owner benachrichtigt und der entsprechende Publikationsservice wird sich mit Ihnen in Verbindung setzen, um die weiteren Schritte mit Ihnen zu besprechen. Bitte beachten Sie, dass es innerhalb von Coscine keine Möglichkeit zur Nachverfolgung des Status gibt.",
title: "Anfrage Datenveröffentlichung",
tab1: "Informationen",
tab2: "Antrag auf Datenveröffentlichung",
tab2: "Anfrage Datenveröffentlichung",
tab3: "Zusammenfassung",
},
// DataPublicationProjectData.vue
dataPublicationForm: {
description1:
"Um mit dem von Ihnen bevorzugten Publikationsberatungsdienst Kontakt aufzunehmen, verwenden Sie bitte das nachstehende Formular. Wenn Sie unsicher sind oder Ihren gewünschten Dienst nicht in der Liste sehen, zögern Sie nicht, sich über die Kontaktseite an das FDM-Team Ihrer Organisation zu wenden.",
"Um mit dem von Ihnen bevorzugten Publikationsservice Kontakt aufzunehmen, verwenden Sie bitte das nachstehende Formular. Wenn Sie unsicher sind oder Ihren gewünschten Dienst nicht in der Liste sehen, zögern Sie nicht, sich über die Kontaktseite an das FDM-Team Ihrer Organisation zu wenden.",
description2:
"Bitte geben Sie unten die notwendigen Details über Ihr Projekt und Ihre Ressourcen an. Diese Informationen sind wichtig, damit Sie effektiv unterstützt werden können.",
description3:
"Fügen Sie bitte eine personalisierte Nachricht oder spezielle Wünsche für die Publikationsberatung hinzu.",
service: "Daten Publikations Service",
service: "Publikationsservice",
labelSymbol: ":",
requesterName: "Antragstellende Person",
email: "E-Mail",
projectName: "Projektname",
pid: "PID",
discipline: "Disziplin",
discipline: "Projektdisziplin",
message: "Ihre Nachricht",
resource: "Ressourcen",
resourceLabelPopover:
......@@ -168,9 +168,9 @@ export default {
back: "Zurück",
continue: "Abschicken",
description:
"Die folgenden Informationen werden an die {publicationService} und die Projekt-Besitzenden übermittelt:",
"Die folgenden Informationen werden an den Publikationsservice und die Projekt-Besitzer übermittelt.",
toastTitle: "Antrag versendet",
toastBody: "Der Antrag auf Datenveröffentlichung wurde versendet.",
toastBody: "Die Anfrage zur Datenveröffentlichung wurde versendet.",
},
// Quota.vue
......@@ -239,7 +239,7 @@ export default {
deleteModalDescription:
"Wenn Sie sicher sind, dass Sie dieses Projekt entfernen möchten, wiederholen Sie bitte den Projektnamen:",
deleteModalHelp:
"Der angegebene Name stimmt nicht mit dem Projektname überein.",
"Der angegebene Name stimmt nicht mit dem Projektnamen überein.",
},
},
},
......
......@@ -31,7 +31,6 @@ export default {
changeRole: "Change role",
noUserOptions: "No user found",
searchNotEnoughCharacters: "Please type more than 3 characters",
createUsersMenu: "Open user menu",
user: "User",
role: "Role",
typeToSearch: "Search within project members...",
......@@ -114,7 +113,7 @@ export default {
description2:
"Once your request has been successfully submitted, all project owners will be notified and the relevant publication advisory service will contact you to discuss the subsequent stages. Please note that Coscine does not offer a way to track the status of your submitted request.",
title: "Data Publication Request",
tab1: "Informations",
tab1: "Information",
tab2: "Data Publication Request",
tab3: "Summary",
},
......@@ -132,7 +131,7 @@ export default {
email: "Email",
projectName: "Project Name",
pid: "PID",
discipline: "Discipline",
discipline: "Project Discipline",
message: "Your message",
resource: "Resources",
resourceLabelPopover:
......@@ -163,7 +162,7 @@ export default {
back: "Back",
continue: "Submit",
description:
"The following data will be submitted to {publicationService} and the project owners:",
"The following data will be submitted to the Data Publication Service and the project owners.",
toastTitle: "Publication Request sent",
toastBody: "The Publication Request was sent.",
},
......
......@@ -55,6 +55,7 @@ import { defineComponent } from "vue";
// import the store for current module
import useProjectStore from "../store";
import useUserStore from "@/modules/user/store";
import useMainStore from "@/store/index";
import DataPublication from "./components/data-publication/DataPublication.vue";
import DataPublicationProjectData from "./components/data-publication/DataPublicationProjectData.vue";
import DataPublicationSummary from "./components/data-publication/DataPublicationSummary.vue";
......@@ -74,8 +75,9 @@ export default defineComponent({
setup() {
const projectStore = useProjectStore();
const userStore = useUserStore();
const mainStore = useMainStore();
return { projectStore, userStore };
return { projectStore, userStore, mainStore };
},
data() {
......@@ -87,6 +89,7 @@ export default defineComponent({
resourceIds: [],
message: "",
} as PublicationRequestForCreationDto,
currentLanguage: "" as string,
};
},
......@@ -143,7 +146,10 @@ export default defineComponent({
}
// Load Publication Services if not present
if (this.projectStore.publicationAdvisoryServices === null) {
await this.projectStore.retrievePublicationOrganizations();
this.currentLanguage = this.mainStore.coscine.locale;
await this.projectStore.retrievePublicationOrganizations(
this.currentLanguage,
);
}
},
back() {
......
......@@ -25,6 +25,9 @@
:placeholder="$t('page.dataPublicationForm.service')"
@search-change="retrievePublicationOrganizations"
/>
<template v-if="selectedServiceText" #hint>
{{ selectedServiceText }}
</template>
</CoscineFormGroup>
<!-- Form Description -->
......@@ -160,7 +163,7 @@
>
<b-form-textarea
id="message"
v-model="v$.modelValue.message.$model"
v-model="localMessage"
:disabled="disabled || !isOwner"
@update:modelValue="setMessage"
/>
......@@ -170,6 +173,8 @@
</CoscineFormGroup>
<!-- Continue Button -->
<b-form-group class="mb-3">
<b-button
id="SubmitRequestBtn"
:disabled="disabled || v$.modelValue.$invalid || !isOwner"
......@@ -179,6 +184,7 @@
>
{{ $t("buttons.next") }}
</b-button>
</b-form-group>
</div>
</template>
......@@ -190,12 +196,13 @@ import { useVuelidate } from "@vuelidate/core";
import useProjectStore from "../../../store";
import useUserStore from "@/modules/user/store";
import useResourceStore from "@/modules/resource/store";
import type {
DisciplineDto,
UserDto,
PublicationRequestForCreationDto,
ResourceDto,
OrganizationDto,
import useMainStore from "@/store/index";
import {
type DisciplineDto,
type UserDto,
type PublicationRequestForCreationDto,
type ResourceDto,
type OrganizationDto,
} from "@coscine/api-client/dist/types/Coscine.Api";
import type { VisitedProjectDto } from "@/modules/project/types";
......@@ -226,6 +233,7 @@ export default defineComponent({
const projectStore = useProjectStore();
const resourceStore = useResourceStore();
const userStore = useUserStore();
const mainStore = useMainStore();
/*
Definition of the validation rules and initial state
will enable proper typings in the code
......@@ -241,15 +249,15 @@ export default defineComponent({
message: { maxLength: maxLength(1000) },
},
};
const v$ = useVuelidate(rules, state);
return { projectStore, resourceStore, userStore, v$ };
return { projectStore, resourceStore, userStore, mainStore, v$ };
},
data() {
return {
isLoadingPublicationServices: false,
queryTimer: 0,
selectedService: undefined as OrganizationDto | undefined,
selectedServiceText: "" as string,
selectedResources: [] as ResourceDto[],
localMessage: this.modelValue.message,
localResourceIds: this.modelValue.resourceIds,
......@@ -271,8 +279,12 @@ export default defineComponent({
return this.organizationsWithPublicationService.map((org) => ({
displayName: org.publicationAdvisoryService?.displayName,
uri: org.uri,
publicationAdvisoryService: org.publicationAdvisoryService,
}));
},
currentLanguage(): string {
return this.mainStore.coscine.locale;
},
project(): VisitedProjectDto | null {
return this.projectStore.currentProject;
},
......@@ -315,6 +327,9 @@ export default defineComponent({
selectedService() {
this.v$.modelValue.dataPublicationServiceRorId.$model =
this.selectedService?.uri ?? "";
this.selectedServiceText =
this.selectedService?.publicationAdvisoryService?.text ?? "";
},
selectedResources() {
const resourceIds = this.selectedResources
......@@ -329,6 +344,16 @@ export default defineComponent({
"v$.modelValue.$invalid"() {
this.$emit("valid", !this.v$.modelValue.$invalid);
},
async currentLanguage(newValue, oldValue) {
if (newValue !== oldValue) {
await this.projectStore.retrievePublicationOrganizations(newValue);
this.selectedService = this.publicationServices.find(
(s) => s.uri === this.modelValue.dataPublicationServiceRorId,
);
this.selectedServiceText =
this.publicationServices[0].publicationAdvisoryService?.text ?? "";
}
},
},
async created() {
this.initTabContent();
......@@ -349,6 +374,8 @@ export default defineComponent({
// Should there be only one option inside the publication services list, select it
else if (this.publicationServices.length === 1) {
this.selectedService = this.publicationServices[0];
this.selectedServiceText =
this.publicationServices[0].publicationAdvisoryService?.text ?? "";
}
if (this.modelValue.resourceIds.length > 0) {
......@@ -364,7 +391,9 @@ export default defineComponent({
}
// Load Publication Services if not present
if (this.projectStore.publicationAdvisoryServices === null) {
await this.projectStore.retrievePublicationOrganizations();
await this.projectStore.retrievePublicationOrganizations(
this.currentLanguage,
);
}
},
async retrievePublicationOrganizations(search: string) {
......@@ -380,7 +409,10 @@ export default defineComponent({
// Add delay to API organization retrieval
this.queryTimer = window.setTimeout(async () => {
this.isLoadingPublicationServices = true;
await this.projectStore.retrievePublicationOrganizations(search);
await this.projectStore.retrievePublicationOrganizations(
this.currentLanguage,
search,
);
this.isLoadingPublicationServices = false;
}, 1000);
}
......
......@@ -2,11 +2,7 @@
<div id="dataPublicationSummary">
<!-- General Description -->
<p class="mb-3">
{{
$t("page.dataPublicationSummary.description", {
publicationService: selectedPublicationService?.displayName,
})
}}
{{ $t("page.dataPublicationSummary.description") }}
</p>
<!-- Fields from DataPublicationProjectData -->
......
......@@ -5,8 +5,8 @@ const RootProjectModule = () => import("./RootProjectModule.vue");
const ProjectModule = () => import("./ProjectModule.vue");
const ListProjects = () => import("./pages/ListProjects.vue");
const ProjectPage = () => import("./pages/ProjectPage.vue");
/*const CreatePublicationRequest = () =>
import("./pages/CreatePublicationRequest.vue");*/
const CreatePublicationRequest = () =>
import("./pages/CreatePublicationRequest.vue");
const Quota = () => import("./pages/Quota.vue");
const Members = () => import("./pages/Members.vue");
const ConfigurationMetadata = () => import("./pages/ConfigurationMetadata.vue");
......@@ -88,7 +88,8 @@ export const ProjectRoutes: RouteRecordRaw[] = [
requiresAuth: true,
breadCrumb: "project.dataPublication",
},
},*/
},
*/
{
path: "quota",
name: "project-quota",
......
import { defineStore } from "pinia";
import type { ProjectState, VisitedProjectDto } from "./types";
import {
AcceptedLanguages,
type ProjectState,
type VisitedProjectDto,
} from "./types";
import { removeQueryParameterFromUrl } from "@/router";
import { defaultOrganizations } from "./data/defaultOrganizations";
......@@ -22,7 +26,7 @@ import type { RouteLocationNormalized } from "vue-router";
import useNotificationStore from "@/store/notification";
import useUserStore from "../user/store";
import { AxiosError } from "axios";
import type {
import {
OrganizationDto,
ProjectDto,
ProjectForCreationDto,
......@@ -563,12 +567,17 @@ export const useProjectStore = defineStore({
notificationStore.postApiErrorNotification(error as AxiosError);
}
},
async retrievePublicationOrganizations(filter = "") {
async retrievePublicationOrganizations(
language: string | undefined,
filter = "",
) {
const notificationStore = useNotificationStore();
try {
const organizationDtos = await wrapListRequest((pageNumber: number) =>
OrganizationApi.getOrganizations({
searchTerm: filter,
language:
language == "de" ? AcceptedLanguages.De : AcceptedLanguages.En,
filterByPublicationService: true,
pageNumber,
pageSize: 50,
......
......@@ -33,6 +33,10 @@ export interface PublicationRequestTab {
hidden: boolean;
}
export enum AcceptedLanguages {
De = "de",
En = "en",
}
export interface ProjectState {
/*
--------------------------------------------------------------------------------------
......
import factory from "rdf-ext";
import { Readable } from "stream";
import rdfParser from "rdf-parse";
import { rdfParser } from "rdf-parse";
import type { Dataset, Quad } from "@rdfjs/types";
import formats, { mediaTypes } from "@rdfjs-elements/formats-pretty";
import stringifyStream from "stream-to-string";
......
This diff is collapsed.