Skip to content

Commit cafeaaf

Browse files
authored
[ENG-8507] feat(preprint): add preprint warning banner (#295)
* feat(preprint): add preprint warning banner * feat(preprint): remove unused styles * feat(preprint): CR followup
1 parent feb7c69 commit cafeaaf

File tree

7 files changed

+69
-0
lines changed

7 files changed

+69
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<p-message styleClass="w-full" icon="fas fa-triangle-exclamation" severity="warn">
2+
{{ 'preprints.details.warningBanner' | translate }}
3+
</p-message>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
import { provideNoopAnimations } from '@angular/platform-browser/animations';
3+
4+
import { PreprintWarningBannerComponent } from './preprint-warning-banner.component';
5+
6+
import { OSFTestingModule } from '@testing/osf.testing.module';
7+
8+
describe('PreprintWarningBannerComponent', () => {
9+
let component: PreprintWarningBannerComponent;
10+
let fixture: ComponentFixture<PreprintWarningBannerComponent>;
11+
12+
beforeEach(async () => {
13+
await TestBed.configureTestingModule({
14+
imports: [PreprintWarningBannerComponent, OSFTestingModule],
15+
providers: [provideNoopAnimations()],
16+
}).compileComponents();
17+
18+
fixture = TestBed.createComponent(PreprintWarningBannerComponent);
19+
component = fixture.componentInstance;
20+
fixture.detectChanges();
21+
});
22+
23+
it('should create', () => {
24+
expect(component).toBeTruthy();
25+
});
26+
27+
it('should show correct icon and text', () => {
28+
const banner: HTMLElement = fixture.nativeElement;
29+
const icon = banner.querySelector('i');
30+
const text = banner.querySelector('span');
31+
expect(icon).toBeDefined();
32+
expect(text).toBeDefined();
33+
expect(icon?.getAttribute('ng-reflect-ng-class')).toEqual('fas fa-triangle-exclamation');
34+
expect(text?.textContent?.trim()).toEqual('preprints.details.warningBanner');
35+
});
36+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { TranslatePipe } from '@ngx-translate/core';
2+
3+
import { Message } from 'primeng/message';
4+
5+
import { ChangeDetectionStrategy, Component } from '@angular/core';
6+
7+
@Component({
8+
selector: 'osf-preprint-warning-banner',
9+
imports: [TranslatePipe, Message],
10+
templateUrl: './preprint-warning-banner.component.html',
11+
changeDetection: ChangeDetectionStrategy.OnPush,
12+
})
13+
export class PreprintWarningBannerComponent {
14+
//
15+
}

src/app/features/preprints/pages/preprint-details/preprint-details.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ <h1>{{ preprint()!.title }}</h1>
6868
</section>
6969

7070
<section class="flex-1 flex flex-column gap-2 bg-white py-2 px-3 md:px-4">
71+
@if (isOsfPreprint()) {
72+
<osf-preprint-warning-banner />
73+
}
7174
@if (moderationStatusBannerVisible()) {
7275
<osf-moderation-status-banner
7376
[provider]="preprintProvider()!"

src/app/features/preprints/pages/preprint-details/preprint-details.component.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,8 @@ describe.skip('PreprintDetailsComponent', () => {
6969
it('should create', () => {
7070
expect(component).toBeTruthy();
7171
});
72+
73+
it('isOsfPreprint should be true if providerId === osf', () => {
74+
expect(component.isOsfPreprint()).toBeTruthy();
75+
});
7276
});

src/app/features/preprints/pages/preprint-details/preprint-details.component.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ import { ReviewPermissions, UserPermissions } from '@shared/enums';
5050
import { MetaTagsService } from '@shared/services';
5151
import { ContributorsSelectors } from '@shared/stores';
5252

53+
import { PreprintWarningBannerComponent } from '../../components/preprint-details/preprint-warning-banner/preprint-warning-banner.component';
54+
5355
import { environment } from 'src/environments/environment';
5456

5557
@Component({
@@ -64,6 +66,7 @@ import { environment } from 'src/environments/environment';
6466
StatusBannerComponent,
6567
TranslatePipe,
6668
PreprintTombstoneComponent,
69+
PreprintWarningBannerComponent,
6770
ModerationStatusBannerComponent,
6871
MakeDecisionComponent,
6972
],
@@ -235,6 +238,10 @@ export class PreprintDetailsComponent implements OnInit, OnDestroy {
235238
);
236239
});
237240

241+
isOsfPreprint = computed(() => {
242+
return this.providerId() === 'osf';
243+
});
244+
238245
moderationStatusBannerVisible = computed(() => {
239246
return (
240247
this.moderationMode() &&

src/assets/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,6 +2093,7 @@
20932093
"moderatorFeedback": "Moderator Feedback",
20942094
"showModeratorFeedback": "Show moderator feedback"
20952095
},
2096+
"warningBanner": "OSF preprints are not peer reviewed and acceptance into OSF preprints is not an indicator of scholarly merit.",
20962097
"withdrawDialog": {
20972098
"title": "Withdraw {{preprintWord}}",
20982099
"withdrawalExplanation": "You are about to withdraw this version of your {{singularPreprintWord}}. Withdrawing a version will remove it from public view but will not affect other versions of this {{singularPreprintWord}}, if available.",

0 commit comments

Comments
 (0)