From 3d8455abadbb7520257c201b60a7d169529766b0 Mon Sep 17 00:00:00 2001 From: nsemets Date: Wed, 1 Oct 2025 11:31:32 +0300 Subject: [PATCH] fix(bugs): fixed ui bugs --- .../metadata-publication-doi.component.html | 10 +- .../metadata-publication-doi.component.ts | 5 +- .../features/metadata/metadata.component.html | 2 +- .../moderators-table.component.html | 6 +- .../moderators-table.component.ts | 3 +- .../registries-moderation.component.ts | 2 +- .../moderation/registry-moderation.routes.ts | 2 +- .../contributors/contributors.component.html | 2 + .../contributors-table.component.html | 149 ++++++++++++------ .../contributors-table.component.ts | 28 ++-- .../resource-metadata.component.html | 4 +- src/assets/i18n/en.json | 20 ++- 12 files changed, 152 insertions(+), 81 deletions(-) diff --git a/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.html b/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.html index b01ba6977..44341e63e 100644 --- a/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.html +++ b/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.html @@ -1,6 +1,10 @@
-

{{ 'project.overview.metadata.publication' | translate }}

+

+ {{ + (isProject() ? 'project.overview.metadata.projectDOI' : 'project.overview.metadata.publicationDOI') | translate + }} +

@if (!hideEditDoi()) { {{ 'project.overview.metadata.publication' | translate }} }
- @if (resourceType() === ResourceType.Project) { + @if (isProject()) { @if (identifiers() && identifiers().length) {
@for (identifier of identifiers()!; track identifier.id) { @@ -25,7 +29,7 @@

{{ 'project.overview.metadata.publication' | translate }}

} @else {
-

{{ 'project.overview.metadata.noPublicationDoi' | translate }}

+

{{ 'project.overview.metadata.noProjectDoi' | translate }}

} } @else { diff --git a/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.ts b/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.ts index 4958f8e77..a8547da10 100644 --- a/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.ts +++ b/src/app/features/metadata/components/metadata-publication-doi/metadata-publication-doi.component.ts @@ -3,7 +3,7 @@ import { TranslatePipe } from '@ngx-translate/core'; import { Button } from 'primeng/button'; import { Card } from 'primeng/card'; -import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core'; import { ResourceType } from '@osf/shared/enums'; import { Identifier } from '@osf/shared/models'; @@ -22,5 +22,6 @@ export class MetadataPublicationDoiComponent { publicationDoi = input(null); resourceType = input(ResourceType.Project); doiHost = 'https://doi.org/'; - ResourceType = ResourceType; + + isProject = computed(() => this.resourceType() === ResourceType.Project); } diff --git a/src/app/features/metadata/metadata.component.html b/src/app/features/metadata/metadata.component.html index a5adc3975..c42cded59 100644 --- a/src/app/features/metadata/metadata.component.html +++ b/src/app/features/metadata/metadata.component.html @@ -92,7 +92,7 @@ (updateSelectedSubjects)="updateSelectedSubjects($event)" [isSubjectsUpdating]="isSubjectsUpdating()!" [selectedSubjects]="selectedSubjects()" - [readonly]="!hasAdminAccess()" + [readonly]="!hasWriteAccess()" /> diff --git a/src/app/features/moderation/components/moderators-table/moderators-table.component.html b/src/app/features/moderation/components/moderators-table/moderators-table.component.html index 715289e7f..94b0c4774 100644 --- a/src/app/features/moderation/components/moderators-table/moderators-table.component.html +++ b/src/app/features/moderation/components/moderators-table/moderators-table.component.html @@ -32,9 +32,9 @@ @if (item.id) { -

- {{ item.fullName }} -

+ + {{ item.fullName }} +
diff --git a/src/app/features/moderation/components/moderators-table/moderators-table.component.ts b/src/app/features/moderation/components/moderators-table/moderators-table.component.ts index 206cc71a4..be6eea1ec 100644 --- a/src/app/features/moderation/components/moderators-table/moderators-table.component.ts +++ b/src/app/features/moderation/components/moderators-table/moderators-table.component.ts @@ -6,6 +6,7 @@ import { TableModule } from 'primeng/table'; import { ChangeDetectionStrategy, Component, inject, input, output, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; +import { RouterLink } from '@angular/router'; import { MODERATION_PERMISSIONS } from '@osf/features/moderation/constants'; import { ModeratorPermission } from '@osf/features/moderation/enums'; @@ -21,7 +22,7 @@ import { CustomDialogService } from '@osf/shared/services'; @Component({ selector: 'osf-moderators-table', - imports: [TranslatePipe, FormsModule, TableModule, Skeleton, Button, SelectComponent], + imports: [TranslatePipe, FormsModule, TableModule, Skeleton, Button, SelectComponent, RouterLink], templateUrl: './moderators-table.component.html', styleUrl: './moderators-table.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/src/app/features/moderation/pages/registries-moderation/registries-moderation.component.ts b/src/app/features/moderation/pages/registries-moderation/registries-moderation.component.ts index c8cdda12d..4cf6b1805 100644 --- a/src/app/features/moderation/pages/registries-moderation/registries-moderation.component.ts +++ b/src/app/features/moderation/pages/registries-moderation/registries-moderation.component.ts @@ -48,7 +48,7 @@ export class RegistriesModerationComponent implements OnInit, OnDestroy { clearCurrentProvider: ClearCurrentProvider, }); - selectedTab = RegistryModerationTab.Submitted; + selectedTab = RegistryModerationTab.Pending; ngOnInit(): void { this.selectedTab = this.route.snapshot.firstChild?.data['tab']; diff --git a/src/app/features/moderation/registry-moderation.routes.ts b/src/app/features/moderation/registry-moderation.routes.ts index 930c502e5..953f3cb8b 100644 --- a/src/app/features/moderation/registry-moderation.routes.ts +++ b/src/app/features/moderation/registry-moderation.routes.ts @@ -20,7 +20,7 @@ export const registryModerationRoutes: Routes = [ { path: '', pathMatch: 'full', - redirectTo: 'submitted', + redirectTo: 'pending', }, { path: 'submitted', diff --git a/src/app/features/project/contributors/contributors.component.html b/src/app/features/project/contributors/contributors.component.html index 3656fe9c5..90fce479a 100644 --- a/src/app/features/project/contributors/contributors.component.html +++ b/src/app/features/project/contributors/contributors.component.html @@ -66,6 +66,8 @@

{{ 'navigation.contributors' | translate } [isCurrentUserAdminContributor]="isCurrentUserAdminContributor()" [currentUserId]="currentUser()?.id" [showCurator]="true" + [showInfo]="true" + [resourceType]="resourceType()" (remove)="removeContributor($event)" > diff --git a/src/app/shared/components/contributors/contributors-table/contributors-table.component.html b/src/app/shared/components/contributors/contributors-table/contributors-table.component.html index d789d61c8..1cb878070 100644 --- a/src/app/shared/components/contributors/contributors-table/contributors-table.component.html +++ b/src/app/shared/components/contributors/contributors-table/contributors-table.component.html @@ -17,54 +17,20 @@
{{ 'project.contributors.table.headers.permissions' | translate }} - - -
-

{{ 'project.contributors.permissionInfo.title' | translate }}

-
-

{{ 'project.contributors.permissions.read' | translate }}

-
    -
  • {{ 'project.contributors.permissionInfo.viewProjectContent' | translate }}
  • -
-
- -
-

{{ 'project.contributors.permissions.readAndWrite' | translate }}

-
    -
  • {{ 'project.contributors.permissionInfo.read' | translate }}
  • -
  • {{ 'project.contributors.permissionInfo.addComponents' | translate }}
  • -
  • {{ 'project.contributors.permissionInfo.editContent' | translate }}
  • -
-
- -
-

{{ 'project.contributors.permissions.administrator' | translate }}

-
    -
  • {{ 'project.contributors.permissionInfo.readWrite' | translate }}
  • -
  • {{ 'project.contributors.permissionInfo.manageContributors' | translate }}
  • -
  • {{ 'project.contributors.permissionInfo.deleteRegister' | translate }}
  • -
  • {{ 'project.contributors.permissionInfo.publicPrivate' | translate }}
  • -
-
-
-
+ @if (showInfo()) { + + }
{{ 'project.contributors.table.headers.contributor' | translate }} - - -
-

{{ 'project.contributors.bibliographicContributorInfo.heading' | translate }}

- - {{ 'project.contributors.bibliographicContributorInfo.description' | translate }} - -
-
+ @if (showInfo()) { + + }
@@ -72,14 +38,10 @@

{{ 'project.contributors.bibliographicContributorInfo.heading' | translate }
{{ 'project.contributors.table.headers.curator' | translate }} - - -
-

{{ 'project.contributors.curatorInfo.heading' | translate }}

- {{ 'project.contributors.curatorInfo.description' | translate }} -
-
+ @if (showInfo()) { + + }
} @@ -212,3 +174,96 @@

{{ 'project.contributors.curatorInfo.heading' | translate }}

+ + +
+

{{ 'project.contributors.permissionInfo.title' | translate }}

+ +
+

{{ 'project.contributors.permissions.read' | translate }}

+
    +
  • + {{ + (isProject() ? 'project.contributors.permissionInfo.viewProjectContent' : 'viewRegistrationContent') + | translate + }} +
  • +
+
+ +
+

{{ 'project.contributors.permissions.readAndWrite' | translate }}

+
    +
  • {{ 'project.contributors.permissionInfo.read' | translate }}
  • +
  • + {{ + (isProject() + ? 'project.contributors.permissionInfo.addComponents' + : 'project.contributors.permissionInfo.editMetadata' + ) | translate + }} +
  • +
  • + {{ + (isProject() + ? 'project.contributors.permissionInfo.editContent' + : 'project.contributors.permissionInfo.addResourcesLinks' + ) | translate + }} +
  • +
+
+ +
+

{{ 'project.contributors.permissions.administrator' | translate }}

+
    +
  • {{ 'project.contributors.permissionInfo.readWrite' | translate }}
  • +
  • {{ 'project.contributors.permissionInfo.manageContributors' | translate }}
  • +
  • + {{ + (isProject() + ? 'project.contributors.permissionInfo.deleteRegister' + : 'project.contributors.permissionInfo.withdrawRegistration' + ) | translate + }} +
  • +
  • + {{ + (isProject() + ? 'project.contributors.permissionInfo.publicPrivate' + : 'project.contributors.permissionInfo.endEmbargoEarly' + ) | translate + }} +
  • +
+
+
+
+ + +
+

{{ 'project.contributors.bibliographicContributorInfo.heading' | translate }}

+ + + {{ + (isProject() + ? 'project.contributors.bibliographicContributorInfo.projectDescription' + : 'project.contributors.bibliographicContributorInfo.registrationDescription' + ) | translate + }} + +
+
+ + +
+

{{ 'project.contributors.curatorInfo.heading' | translate }}

+ + {{ + (isProject() + ? 'project.contributors.curatorInfo.projectDescription' + : 'project.contributors.curatorInfo.registrationDescription' + ) | translate + }} +
+
diff --git a/src/app/shared/components/contributors/contributors-table/contributors-table.component.ts b/src/app/shared/components/contributors/contributors-table/contributors-table.component.ts index 1b42a40ec..3343069ae 100644 --- a/src/app/shared/components/contributors/contributors-table/contributors-table.component.ts +++ b/src/app/shared/components/contributors/contributors-table/contributors-table.component.ts @@ -9,12 +9,11 @@ import { Tooltip } from 'primeng/tooltip'; import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ModeratorPermission } from '@osf/features/moderation/enums'; import { EducationHistoryDialogComponent } from '@osf/shared/components/education-history-dialog/education-history-dialog.component'; import { EmploymentHistoryDialogComponent } from '@osf/shared/components/employment-history-dialog/employment-history-dialog.component'; import { SelectComponent } from '@osf/shared/components/select/select.component'; import { DEFAULT_TABLE_PARAMS, PERMISSION_OPTIONS } from '@osf/shared/constants'; -import { ContributorPermission } from '@osf/shared/enums'; +import { ContributorPermission, ResourceType } from '@osf/shared/enums'; import { ContributorModel, SelectOption, TableParameters } from '@osf/shared/models'; import { CustomDialogService } from '@osf/shared/services'; @@ -31,10 +30,24 @@ export class ContributorsTableComponent { showCurator = input(false); showEducation = input(true); showEmployment = input(true); + showInfo = input(false); + resourceType = input(ResourceType.Project); currentUserId = input(undefined); isCurrentUserAdminContributor = input(true); + remove = output(); + + customDialogService = inject(CustomDialogService); + + readonly tableParams = signal({ ...DEFAULT_TABLE_PARAMS }); + readonly permissionsOptions: SelectOption[] = PERMISSION_OPTIONS; + readonly ContributorPermission = ContributorPermission; + + skeletonData: ContributorModel[] = Array.from({ length: 3 }, () => ({}) as ContributorModel); + + isProject = computed(() => this.resourceType() === ResourceType.Project); + canRemoveContributor = computed(() => { const contributors = this.contributors(); const currentUserId = this.currentUserId(); @@ -53,17 +66,6 @@ export class ContributorsTableComponent { return result; }); - remove = output(); - - customDialogService = inject(CustomDialogService); - - readonly tableParams = signal({ ...DEFAULT_TABLE_PARAMS }); - readonly permissionsOptions: SelectOption[] = PERMISSION_OPTIONS; - readonly ModeratorPermission = ModeratorPermission; - readonly ContributorPermission = ContributorPermission; - - skeletonData: ContributorModel[] = Array.from({ length: 3 }, () => ({}) as ContributorModel); - removeContributor(contributor: ContributorModel) { this.remove.emit(contributor); } diff --git a/src/app/shared/components/resource-metadata/resource-metadata.component.html b/src/app/shared/components/resource-metadata/resource-metadata.component.html index f55eca0a1..cd4398182 100644 --- a/src/app/shared/components/resource-metadata/resource-metadata.component.html +++ b/src/app/shared/components/resource-metadata/resource-metadata.component.html @@ -106,7 +106,7 @@

{{ 'project.overview.metadata.internetArchiveLink' | translate }}

@if (!resource.isAnonymous) {

- {{ (isProject() ? 'project.overview.metadata.publication' : 'registry.overview.metadata.doi') | translate }} + {{ (isProject() ? 'project.overview.metadata.projectDOI' : 'registry.overview.metadata.doi') | translate }}

@if (resource.identifiers?.length) { @@ -118,7 +118,7 @@

} } } @else { -

{{ 'project.overview.metadata.noPublicationDoi' | translate }}

+

{{ 'project.overview.metadata.noProjectDoi' | translate }}

}

} diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 26dbcf9e3..5a8809c0e 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -588,21 +588,28 @@ "permissionInfo": { "title": "Permission Information", "viewProjectContent": "View project content and comment", + "viewRegistrationContent": "View registration content", "read": "Read privileges", "addComponents": "Add and configure components", + "editMetadata": "Edit metadata", + "addResourcesLinks": "Add resources links", "editContent": "Add and edit content", "readWrite": "Read and write privileges", "manageContributors": "Manage contributor", "deleteRegister": "Delete and register project", + "withdrawRegistration": "Withdraw registration", + "endEmbargoEarly": "End embargo early", "publicPrivate": "Public private settings" }, "bibliographicContributorInfo": { "heading": "Bibliographic Contributor Information", - "description": "Only bibliographic contributors will be displayed in the Contributors list and in project citations. Non-bibliographic contributors can read and modify the project as normal." + "projectDescription": "Only bibliographic contributors will be displayed in the Contributors list and in project citations. Non-bibliographic contributors can read and modify the project as normal.", + "registrationDescription": "Only bibliographic contributors will be displayed in the Contributors list and in registration citations. Non-bibliographic contributors can read and modify the registration as normal." }, "curatorInfo": { "heading": "Curator Information", - "description": "An administrator designated by your affiliated institution to curate your project." + "projectDescription": "An administrator designated by your affiliated institution to curate your project.", + "registrationDescription": "An administrator designated by your affiliated institution to curate your registration." }, "employment": { "show": "Show employment history", @@ -662,7 +669,8 @@ "dateCreated": "Date Created", "dateUpdated": "Date Updated", "license": "License", - "publication": "Publication DOI", + "projectDOI": "Project DOI", + "publicationDOI": "Publication DOI", "registrationDOI": "Registration DOI", "subjects": "Subjects", "tags": "Tags", @@ -679,6 +687,7 @@ "affiliatedInstitutionsDescription": "This is a service provided by the OSF and is automatically applied to your registration. If you are not sure if your institution has signed up for this service, you can look for their name in this list.", "noDescription": "No description", "noLicense": "No License", + "noProjectDoi": "No Project DOI", "noPublicationDoi": "No Publication DOI", "noSubjects": "No subjects", "noTags": "No tags", @@ -698,9 +707,6 @@ "placeholders": { "edit": "Edit description here", "add": "Add description here" - }, - "publicationDoi": { - "label": "Publication DOI" } }, "dialog": { @@ -1042,7 +1048,7 @@ }, "files": { "storageLocation": "OSF Storage", - "searchPlaceholder": "Search your projects", + "searchPlaceholder": "Search your files", "metaTagDescriptionPlaceholder": "Presented by OSF", "sort": { "placeholder": "Sort",