Skip to content

Commit d156e01

Browse files
committed
[CST-4875] Fix related page using the complete url
1 parent ed6cb04 commit d156e01

6 files changed

Lines changed: 31 additions & 11 deletions

File tree

src/app/app-routing-paths.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ export function getBitstreamRequestACopyRoute(item, bitstream): { routerLink: st
3232
};
3333
}
3434

35+
export const HOME_PAGE_PATH = 'admin';
36+
37+
export function getHomePageRoute() {
38+
return `/${HOME_PAGE_PATH}`;
39+
}
40+
3541
export const ADMIN_MODULE_PATH = 'admin';
3642

3743
export function getAdminModuleRoute() {

src/app/info/feedback/feedback-form/feedback-form.component.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ <h2>{{ 'info.feedback.head' | translate }}</h2>
88
<div class="control-group col-sm-12">
99
<label class="control-label" for="email">{{ 'info.feedback.email-label' | translate }}&nbsp;</label>
1010
<input id="email" class="form-control" name="email" type="text" value="" formControlName="email" autofocus="autofocus" title="{{ 'info.feedback.email_help' | translate }}">
11-
<p class="help-block">{{ 'info.feedback.email_help' | translate }}</p>
11+
<small class="text-muted">{{ 'info.feedback.email_help' | translate }}</small>
1212
</div>
1313
</div>
1414

@@ -27,12 +27,11 @@ <h2>{{ 'info.feedback.head' | translate }}</h2>
2727
class="alert">
2828
<ds-error *ngIf="feedbackForm.controls.message.errors?.required" message="{{'info.feedback.error.message.required' | translate}}"></ds-error>
2929
</ng-container>
30-
<!-- <input class="form-control" readonly formControlName="page" name="page" type="text" [value]="routeService.getPreviousUrl() | async"/> -->
3130
<div class="row">
3231
<div class="control-group col-sm-12">
3332
<label class="control-label" for="page">{{ 'info.feedback.page-label' | translate }}&nbsp;</label>
3433
<input id="page" readonly class="form-control" name="page" type="text" value="" formControlName="page" autofocus="autofocus" title="{{ 'info.feedback.page_help' | translate }}">
35-
<p class="help-block">{{ 'info.feedback.page_help' | translate }}</p>
34+
<small class="text-muted">{{ 'info.feedback.page_help' | translate }}</small>
3635
</div>
3736
</div>
3837
<div class="row py-2">
@@ -43,4 +42,4 @@ <h2>{{ 'info.feedback.head' | translate }}</h2>
4342
</fieldset>
4443
</form>
4544
</div>
46-
</div>
45+
</div>

src/app/info/feedback/feedback-form/feedback-form.component.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import { of } from 'rxjs';
1616
import { Feedback } from '../../../core/feedback/models/feedback.model';
1717
import { Router } from '@angular/router';
1818
import { RouterMock } from '../../../shared/mocks/router.mock';
19+
import { NativeWindowService } from '../../../core/services/window.service';
20+
import { NativeWindowMockFactory } from '../../../shared/mocks/mock-native-window-ref';
1921

2022

2123
describe('FeedbackFormComponent', () => {
@@ -43,6 +45,7 @@ describe('FeedbackFormComponent', () => {
4345
{ provide: NotificationsService, useValue: notificationService },
4446
{ provide: FeedbackDataService, useValue: feedbackDataServiceStub },
4547
{ provide: AuthService, useValue: authService },
48+
{ provide: NativeWindowService, useFactory: NativeWindowMockFactory },
4649
{ provide: Router, useValue: routerStub },
4750
],
4851
schemas: [NO_ERRORS_SCHEMA]
@@ -61,7 +64,7 @@ describe('FeedbackFormComponent', () => {
6164
});
6265

6366
it('should have page value', () => {
64-
expect(component.feedbackForm.controls.page.value).toEqual('/home');
67+
expect(component.feedbackForm.controls.page.value).toEqual('http://localhost/home');
6568
});
6669

6770
it('should have email if ePerson', () => {

src/app/info/feedback/feedback-form/feedback-form.component.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { RemoteData } from '../../../core/data/remote-data';
22
import { NoContent } from '../../../core/shared/NoContent.model';
33
import { FeedbackDataService } from '../../../core/feedback/feedback-data.service';
4-
import { Component, OnInit } from '@angular/core';
4+
import { Component, Inject, OnInit } from '@angular/core';
55
import { RouteService } from '../../../core/services/route.service';
66
import { FormBuilder, Validators } from '@angular/forms';
77
import { NotificationsService } from '../../../shared/notifications/notifications.service';
@@ -10,6 +10,10 @@ import { AuthService } from '../../../core/auth/auth.service';
1010
import { EPerson } from '../../../core/eperson/models/eperson.model';
1111
import { getFirstCompletedRemoteData } from '../../../core/shared/operators';
1212
import { Router } from '@angular/router';
13+
import { getHomePageRoute } from '../../../app-routing-paths';
14+
import { take } from 'rxjs/operators';
15+
import { NativeWindowRef, NativeWindowService } from '../../../core/services/window.service';
16+
import { URLCombiner } from '../../../core/url-combiner/url-combiner';
1317

1418
@Component({
1519
selector: 'ds-feedback-form',
@@ -31,6 +35,7 @@ export class FeedbackFormComponent implements OnInit {
3135
});
3236

3337
constructor(
38+
@Inject(NativeWindowService) protected _window: NativeWindowRef,
3439
public routeService: RouteService,
3540
private fb: FormBuilder,
3641
protected notificationsService: NotificationsService,
@@ -45,17 +50,18 @@ export class FeedbackFormComponent implements OnInit {
4550
*/
4651
ngOnInit() {
4752

48-
this.authService.getAuthenticatedUserFromStore().subscribe((user: EPerson) => {
53+
this.authService.getAuthenticatedUserFromStore().pipe(take(1)).subscribe((user: EPerson) => {
4954
if (!!user) {
5055
this.feedbackForm.patchValue({ email: user.email });
5156
}
5257
});
5358

54-
this.routeService.getPreviousUrl().subscribe((url: string) => {
59+
this.routeService.getPreviousUrl().pipe(take(1)).subscribe((url: string) => {
5560
if (!url) {
56-
url = '/home';
61+
url = getHomePageRoute();
5762
}
58-
this.feedbackForm.patchValue({ page: url });
63+
const relatedUrl = new URLCombiner(this._window.nativeWindow.origin, url).toString();
64+
this.feedbackForm.patchValue({ page: relatedUrl });
5965
});
6066

6167
}

src/app/shared/mocks/mock-native-window-ref.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ export const MockWindow = {
77
get href() {
88
return this._href;
99
}
10-
}
10+
},
11+
origin: 'http://localhost'
1112
};
1213

1314
export class NativeWindowRefMock {

src/assets/i18n/en.json5

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,6 +1594,11 @@
15941594

15951595
"info.feedback.error.message.required" : "A comment is required",
15961596

1597+
"info.feedback.page-label" : "Page",
1598+
1599+
"info.feedback.page_help" : "Tha page related to your feedback",
1600+
1601+
15971602

15981603
"item.alerts.private": "This item is private",
15991604

0 commit comments

Comments
 (0)