diff --git a/src/app/+admin/admin-routing.module.ts b/src/app/+admin/admin-routing.module.ts
index 7864f91ad9..373551d3c0 100644
--- a/src/app/+admin/admin-routing.module.ts
+++ b/src/app/+admin/admin-routing.module.ts
@@ -18,7 +18,12 @@ export function getRegistriesModulePath() {
path: REGISTRIES_MODULE_PATH,
loadChildren: './admin-registries/admin-registries.module#AdminRegistriesModule'
},
- { path: 'search', resolve: { breadcrumb: I18nBreadcrumbResolver }, component: AdminSearchPageComponent, data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' } },
+ {
+ path: 'search',
+ resolve: { breadcrumb: I18nBreadcrumbResolver },
+ component: AdminSearchPageComponent,
+ data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' }
+ },
])
]
})
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.html
similarity index 100%
rename from src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.html
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.html
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.scss
similarity index 100%
rename from src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.scss
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts
similarity index 69%
rename from src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts
index 268ede777c..1dcd978095 100644
--- a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.spec.ts
@@ -1,20 +1,18 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { NO_ERRORS_SCHEMA } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
-import { mockTruncatableService } from '../../../mocks/mock-trucatable.service';
-import { SharedModule } from '../../../shared.module';
+import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
+import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service';
+import { SharedModule } from '../../../../../shared/shared.module';
import { CollectionAdminSearchResultGridElementComponent } from './collection-admin-search-result-grid-element.component';
import { TranslateModule } from '@ngx-translate/core';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
-import { Collection } from '../../../../core/shared/collection.model';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { CollectionSearchResult } from '../../../../../shared/object-collection/shared/collection-search-result.model';
+import { Collection } from '../../../../../core/shared/collection.model';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
-import { getCollectionEditPath } from '../../../../+collection-page/collection-page-routing.module';
+import { getCollectionEditPath } from '../../../../../+collection-page/collection-page-routing.module';
describe('CollectionAdminSearchResultGridElementComponent', () => {
let component: CollectionAdminSearchResultGridElementComponent;
@@ -37,6 +35,7 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
RouterTestingModule.withRoutes([]),
SharedModule
],
+ declarations: [CollectionAdminSearchResultGridElementComponent],
providers: [
{ provide: TruncatableService, useValue: mockTruncatableService },
{ provide: BitstreamDataService, useValue: {} },
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts
similarity index 51%
rename from src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts
index a43e6782e7..5e784165ab 100644
--- a/src/app/shared/object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component.ts
@@ -1,11 +1,11 @@
import { Component } from '@angular/core';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
-import { Collection } from '../../../../core/shared/collection.model';
-import { getCollectionEditPath } from '../../../../+collection-page/collection-page-routing.module';
-import { SearchResultGridElementComponent } from '../../search-result-grid-element/search-result-grid-element.component';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { CollectionSearchResult } from '../../../../../shared/object-collection/shared/collection-search-result.model';
+import { Collection } from '../../../../../core/shared/collection.model';
+import { getCollectionEditPath } from '../../../../../+collection-page/collection-page-routing.module';
+import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
@listableObjectComponent(CollectionSearchResult, ViewMode.GridElement, Context.AdminSearch)
@Component({
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.html
similarity index 100%
rename from src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.html
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.html
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.scss
similarity index 100%
rename from src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.scss
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts
similarity index 64%
rename from src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts
index fc8257289c..99d33f841a 100644
--- a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.spec.ts
@@ -3,18 +3,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule } from '@ngx-translate/core';
-import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
-import { mockTruncatableService } from '../../../mocks/mock-trucatable.service';
-import { SharedModule } from '../../../shared.module';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { Collection } from '../../../../core/shared/collection.model';
+import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
+import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service';
+import { SharedModule } from '../../../../../shared/shared.module';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
import { CommunityAdminSearchResultGridElementComponent } from './community-admin-search-result-grid-element.component';
-import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
-import { getCommunityEditPath } from '../../../../+community-page/community-page-routing.module';
+import { CommunitySearchResult } from '../../../../../shared/object-collection/shared/community-search-result.model';
+import { getCommunityEditPath } from '../../../../../+community-page/community-page-routing.module';
+import { Community } from '../../../../../core/shared/community.model';
+import { CommunityAdminSearchResultListElementComponent } from '../../admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component';
describe('CommunityAdminSearchResultGridElementComponent', () => {
let component: CommunityAdminSearchResultGridElementComponent;
@@ -25,7 +26,7 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
function init() {
id = '780b2588-bda5-4112-a1cd-0b15000a5339';
searchResult = new CommunitySearchResult();
- searchResult.indexableObject = new Collection();
+ searchResult.indexableObject = new Community();
searchResult.indexableObject.uuid = id;
}
beforeEach(async(() => {
@@ -37,6 +38,7 @@ describe('CommunityAdminSearchResultGridElementComponent', () => {
RouterTestingModule.withRoutes([]),
SharedModule
],
+ declarations: [CommunityAdminSearchResultGridElementComponent],
providers: [
{ provide: TruncatableService, useValue: mockTruncatableService },
{ provide: BitstreamDataService, useValue: {} },
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts
similarity index 51%
rename from src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts
index ae3221896e..8df12e703f 100644
--- a/src/app/shared/object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component.ts
@@ -1,11 +1,11 @@
import { Component } from '@angular/core';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
-import { Community } from '../../../../core/shared/community.model';
-import { getCommunityEditPath } from '../../../../+community-page/community-page-routing.module';
-import { SearchResultGridElementComponent } from '../../search-result-grid-element/search-result-grid-element.component';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { CommunitySearchResult } from '../../../../../shared/object-collection/shared/community-search-result.model';
+import { Community } from '../../../../../core/shared/community.model';
+import { getCommunityEditPath } from '../../../../../+community-page/community-page-routing.module';
+import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
@listableObjectComponent(CommunitySearchResult, ViewMode.GridElement, Context.AdminSearch)
@Component({
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html
new file mode 100644
index 0000000000..c571c3d663
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html
@@ -0,0 +1,15 @@
+
+
+
+
+ {{ "admin.search.item.private" | translate }}
+
+
+ {{ "admin.search.item.withdrawn" | translate }}
+
+
+
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.scss
similarity index 100%
rename from src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.scss
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts
new file mode 100644
index 0000000000..d940781f79
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts
@@ -0,0 +1,121 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+import { TranslateModule } from '@ngx-translate/core';
+import { Observable } from 'rxjs/internal/Observable';
+import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
+import { RemoteData } from '../../../../../core/data/remote-data';
+import { Bitstream } from '../../../../../core/shared/bitstream.model';
+import { Item } from '../../../../../core/shared/item.model';
+import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service';
+import { SharedModule } from '../../../../../shared/shared.module';
+import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { By } from '@angular/platform-browser';
+import { RouterTestingModule } from '@angular/router/testing';
+import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
+import { ItemAdminSearchResultGridElementComponent } from './item-admin-search-result-grid-element.component';
+
+describe('ItemAdminSearchResultGridElementComponent', () => {
+ let component: ItemAdminSearchResultGridElementComponent;
+ let fixture: ComponentFixture;
+ let id;
+ let searchResult;
+
+ const mockBitstreamDataService = {
+ getThumbnailFor(item: Item): Observable> {
+ return createSuccessfulRemoteDataObject$(new Bitstream());
+ }
+ };
+
+ function init() {
+ id = '780b2588-bda5-4112-a1cd-0b15000a5339';
+ searchResult = new ItemSearchResult();
+ searchResult.indexableObject = new Item();
+ searchResult.indexableObject.uuid = id;
+ }
+
+ beforeEach(async(() => {
+ init();
+ TestBed.configureTestingModule(
+ {
+ declarations: [ItemAdminSearchResultGridElementComponent],
+ imports: [
+ NoopAnimationsModule,
+ TranslateModule.forRoot(),
+ RouterTestingModule.withRoutes([]),
+ SharedModule
+ ],
+ providers: [
+ { provide: TruncatableService, useValue: mockTruncatableService },
+ { provide: BitstreamDataService, useValue: mockBitstreamDataService },
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ItemAdminSearchResultGridElementComponent);
+ component = fixture.componentInstance;
+ component.object = searchResult;
+ component.linkTypes = CollectionElementLinkType;
+ component.index = 0;
+ component.viewModes = ViewMode;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ describe('when the item is not withdrawn', () => {
+ beforeEach(() => {
+ component.dso.isWithdrawn = false;
+ fixture.detectChanges();
+ });
+
+ it('should not show the withdrawn badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
+ expect(badge).toBeNull();
+ });
+ });
+
+ describe('when the item is withdrawn', () => {
+ beforeEach(() => {
+ component.dso.isWithdrawn = true;
+ fixture.detectChanges();
+ });
+
+ it('should show the withdrawn badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
+ expect(badge).not.toBeNull();
+ });
+ });
+
+ describe('when the item is not private', () => {
+ beforeEach(() => {
+ component.dso.isDiscoverable = true;
+ fixture.detectChanges();
+ });
+ it('should not show the private badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.private-badge'));
+ expect(badge).toBeNull();
+ });
+ });
+
+ describe('when the item is private', () => {
+ beforeEach(() => {
+ component.dso.isDiscoverable = false;
+ fixture.detectChanges();
+ });
+
+ it('should show the private badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.private-badge'));
+ expect(badge).not.toBeNull();
+ });
+ })
+});
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts
new file mode 100644
index 0000000000..04558f6320
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts
@@ -0,0 +1,75 @@
+import { Component, ComponentFactoryResolver, ElementRef, OnInit, ViewChild, ViewContainerRef } from '@angular/core';
+import { Item } from '../../../../../core/shared/item.model';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { getListableObjectComponent, listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
+import { getItemEditPath } from '../../../../../+item-page/item-page-routing.module';
+import { URLCombiner } from '../../../../../core/url-combiner/url-combiner';
+import {
+ ITEM_EDIT_DELETE_PATH,
+ ITEM_EDIT_MOVE_PATH,
+ ITEM_EDIT_PRIVATE_PATH,
+ ITEM_EDIT_PUBLIC_PATH,
+ ITEM_EDIT_REINSTATE_PATH,
+ ITEM_EDIT_WITHDRAW_PATH
+} from '../../../../../+item-page/edit-item-page/edit-item-page.routing.module';
+import { SearchResultGridElementComponent } from '../../../../../shared/object-grid/search-result-grid-element/search-result-grid-element.component';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
+import { GenericConstructor } from '../../../../../core/shared/generic-constructor';
+import { ListableObjectDirective } from '../../../../../shared/object-collection/shared/listable-object/listable-object.directive';
+
+@listableObjectComponent(ItemSearchResult, ViewMode.GridElement, Context.AdminSearch)
+@Component({
+ selector: 'ds-item-admin-search-result-grid-element',
+ styleUrls: ['./item-admin-search-result-grid-element.component.scss'],
+ templateUrl: './item-admin-search-result-grid-element.component.html'
+})
+/**
+ * The component for displaying a list element for an item search result on the admin search page
+ */
+export class ItemAdminSearchResultGridElementComponent extends SearchResultGridElementComponent implements OnInit {
+ @ViewChild(ListableObjectDirective, { static: true }) listableObjectDirective: ListableObjectDirective;
+ @ViewChild('badges', { static: true }) badges: ElementRef;
+ @ViewChild('buttons', { static: true }) buttons: ElementRef;
+
+ constructor(protected truncatableService: TruncatableService,
+ protected bitstreamDataService: BitstreamDataService,
+ private componentFactoryResolver: ComponentFactoryResolver
+ ) {
+ super(truncatableService, bitstreamDataService);
+ }
+
+ /**
+ * Setup the dynamic child component
+ */
+ ngOnInit(): void {
+ super.ngOnInit();
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent());
+
+ const viewContainerRef = this.listableObjectDirective.viewContainerRef;
+ viewContainerRef.clear();
+
+ const componentRef = viewContainerRef.createComponent(
+ componentFactory,
+ 0,
+ undefined,
+ [
+ [this.badges.nativeElement],
+ [this.buttons.nativeElement]
+ ]);
+ (componentRef.instance as any).object = this.object;
+ (componentRef.instance as any).index = this.index;
+ (componentRef.instance as any).linkType = this.linkType;
+ (componentRef.instance as any).listID = this.listID;
+ }
+
+ /**
+ * Fetch the component depending on the item's relationship type, view mode and context
+ * @returns {GenericConstructor}
+ */
+ private getComponent(): GenericConstructor {
+ return getListableObjectComponent(this.object.getRenderTypes(), ViewMode.GridElement, undefined)
+ }
+}
diff --git a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.html
similarity index 100%
rename from src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.html
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.html
diff --git a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.scss
similarity index 100%
rename from src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.scss
diff --git a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts
similarity index 77%
rename from src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts
index 9e932db81c..259d1d64aa 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts
@@ -3,14 +3,14 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { CollectionAdminSearchResultListElementComponent } from './collection-admin-search-result-list-element.component';
import { TranslateModule } from '@ngx-translate/core';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
-import { Collection } from '../../../../core/shared/collection.model';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { CollectionSearchResult } from '../../../../../shared/object-collection/shared/collection-search-result.model';
+import { Collection } from '../../../../../core/shared/collection.model';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
-import { getCollectionEditPath } from '../../../../+collection-page/collection-page-routing.module';
+import { getCollectionEditPath } from '../../../../../+collection-page/collection-page-routing.module';
describe('CollectionAdminSearchResultListElementComponent', () => {
let component: CollectionAdminSearchResultListElementComponent;
diff --git a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts
similarity index 51%
rename from src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts
index 5adb12cf77..e49f272184 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.ts
@@ -1,11 +1,11 @@
import { Component } from '@angular/core';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
-import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model';
-import { Collection } from '../../../../core/shared/collection.model';
-import { getCollectionEditPath } from '../../../../+collection-page/collection-page-routing.module';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
+import { CollectionSearchResult } from '../../../../../shared/object-collection/shared/collection-search-result.model';
+import { Collection } from '../../../../../core/shared/collection.model';
+import { getCollectionEditPath } from '../../../../../+collection-page/collection-page-routing.module';
@listableObjectComponent(CollectionSearchResult, ViewMode.ListElement, Context.AdminSearch)
@Component({
diff --git a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.html
similarity index 100%
rename from src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.html
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.html
diff --git a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.scss
similarity index 100%
rename from src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.scss
diff --git a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts
similarity index 75%
rename from src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts
index 79e7350437..a7922d7cf5 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts
@@ -2,15 +2,15 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { Collection } from '../../../../core/shared/collection.model';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
import { CommunityAdminSearchResultListElementComponent } from './community-admin-search-result-list-element.component';
-import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
-import { getCommunityEditPath } from '../../../../+community-page/community-page-routing.module';
+import { CommunitySearchResult } from '../../../../../shared/object-collection/shared/community-search-result.model';
+import { getCommunityEditPath } from '../../../../../+community-page/community-page-routing.module';
+import { Community } from '../../../../../core/shared/community.model';
describe('CommunityAdminSearchResultListElementComponent', () => {
let component: CommunityAdminSearchResultListElementComponent;
@@ -21,7 +21,7 @@ describe('CommunityAdminSearchResultListElementComponent', () => {
function init() {
id = '780b2588-bda5-4112-a1cd-0b15000a5339';
searchResult = new CommunitySearchResult();
- searchResult.indexableObject = new Collection();
+ searchResult.indexableObject = new Community();
searchResult.indexableObject.uuid = id;
}
beforeEach(async(() => {
diff --git a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts
similarity index 51%
rename from src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts
index c835f02062..71fe4203ef 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.ts
@@ -1,11 +1,11 @@
import { Component } from '@angular/core';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
-import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model';
-import { Community } from '../../../../core/shared/community.model';
-import { getCommunityEditPath } from '../../../../+community-page/community-page-routing.module';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
+import { CommunitySearchResult } from '../../../../../shared/object-collection/shared/community-search-result.model';
+import { Community } from '../../../../../core/shared/community.model';
+import { getCommunityEditPath } from '../../../../../+community-page/community-page-routing.module';
@listableObjectComponent(CommunitySearchResult, ViewMode.ListElement, Context.AdminSearch)
@Component({
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html
new file mode 100644
index 0000000000..a74e339e63
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html
@@ -0,0 +1,12 @@
+
+ {{ "admin.search.item.private" | translate }}
+
+
+ {{ "admin.search.item.withdrawn" | translate }}
+
+
+
diff --git a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.scss b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.scss
similarity index 100%
rename from src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.scss
rename to src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.scss
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..8395bd4f11
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts
@@ -0,0 +1,101 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { TranslateModule } from '@ngx-translate/core';
+import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
+import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { By } from '@angular/platform-browser';
+import { RouterTestingModule } from '@angular/router/testing';
+import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
+import { ItemAdminSearchResultListElementComponent } from './item-admin-search-result-list-element.component';
+import { Item } from '../../../../../core/shared/item.model';
+
+describe('ItemAdminSearchResultListElementComponent', () => {
+ let component: ItemAdminSearchResultListElementComponent;
+ let fixture: ComponentFixture;
+ let id;
+ let searchResult;
+
+ function init() {
+ id = '780b2588-bda5-4112-a1cd-0b15000a5339';
+ searchResult = new ItemSearchResult();
+ searchResult.indexableObject = new Item();
+ searchResult.indexableObject.uuid = id;
+ }
+
+ beforeEach(async(() => {
+ init();
+ TestBed.configureTestingModule({
+ imports: [
+ TranslateModule.forRoot(),
+ RouterTestingModule.withRoutes([])
+ ],
+ declarations: [ItemAdminSearchResultListElementComponent],
+ providers: [{ provide: TruncatableService, useValue: {} }],
+ schemas: [NO_ERRORS_SCHEMA]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ItemAdminSearchResultListElementComponent);
+ component = fixture.componentInstance;
+ component.object = searchResult;
+ component.linkTypes = CollectionElementLinkType;
+ component.index = 0;
+ component.viewModes = ViewMode;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ describe('when the item is not withdrawn', () => {
+ beforeEach(() => {
+ component.dso.isWithdrawn = false;
+ fixture.detectChanges();
+ });
+
+ it('should not show the withdrawn badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
+ expect(badge).toBeNull();
+ });
+ });
+
+ describe('when the item is withdrawn', () => {
+ beforeEach(() => {
+ component.dso.isWithdrawn = true;
+ fixture.detectChanges();
+ });
+
+ it('should show the withdrawn badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
+ expect(badge).not.toBeNull();
+ });
+ });
+
+ describe('when the item is not private', () => {
+ beforeEach(() => {
+ component.dso.isDiscoverable = true;
+ fixture.detectChanges();
+ });
+ it('should not show the private badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.private-badge'));
+ expect(badge).toBeNull();
+ });
+ });
+
+ describe('when the item is private', () => {
+ beforeEach(() => {
+ component.dso.isDiscoverable = false;
+ fixture.detectChanges();
+ });
+
+ it('should show the private badge', () => {
+ const badge = fixture.debugElement.query(By.css('div.private-badge'));
+ expect(badge).not.toBeNull();
+ });
+ })
+});
diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts
new file mode 100644
index 0000000000..b1dea11341
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts
@@ -0,0 +1,20 @@
+import { Component } from '@angular/core';
+import { Item } from '../../../../../core/shared/item.model';
+import { ViewMode } from '../../../../../core/shared/view-mode.model';
+import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
+import { Context } from '../../../../../core/shared/context.model';
+import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
+import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
+
+@listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.AdminSearch)
+@Component({
+ selector: 'ds-item-admin-search-result-list-element',
+ styleUrls: ['./item-admin-search-result-list-element.component.scss'],
+ templateUrl: './item-admin-search-result-list-element.component.html'
+})
+/**
+ * The component for displaying a list element for an item search result on the admin search page
+ */
+export class ItemAdminSearchResultListElementComponent extends SearchResultListElementComponent {
+
+}
diff --git a/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.html b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.html
new file mode 100644
index 0000000000..a4a923e725
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.html
@@ -0,0 +1,27 @@
+
+ {{"admin.search.item.edit" | translate}}
+
+
+
+ {{"admin.search.item.withdraw" | translate}}
+
+
+
+ {{"admin.search.item.reinstate" | translate}}
+
+
+
+ {{"admin.search.item.make-private" | translate}}
+
+
+
+ {{"admin.search.item.make-public" | translate}}
+
+
+
+ {{"admin.search.item.delete" | translate}}
+
+
+
+ {{"admin.search.item.move" | translate}}
+
diff --git a/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.scss b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.scss
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.scss
@@ -0,0 +1 @@
+
diff --git a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.spec.ts
similarity index 52%
rename from src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts
rename to src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.spec.ts
index e75244ff3e..c1aceb477d 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.spec.ts
@@ -2,29 +2,31 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { Collection } from '../../../../core/shared/collection.model';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
-import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
-import { ItemAdminSearchResultListElementComponent } from './item-admin-search-result-list-element.component';
-import { getItemEditPath } from '../../../../+item-page/item-page-routing.module';
-import { URLCombiner } from '../../../../core/url-combiner/url-combiner';
-import { ITEM_EDIT_DELETE_PATH, ITEM_EDIT_MOVE_PATH, ITEM_EDIT_REINSTATE_PATH, ITEM_EDIT_WITHDRAW_PATH } from '../../../../+item-page/edit-item-page/edit-item-page.routing.module';
+import { ItemAdminSearchResultActionsComponent } from './item-admin-search-result-actions.component';
+import { Item } from '../../../core/shared/item.model';
+import {
+ ITEM_EDIT_DELETE_PATH,
+ ITEM_EDIT_MOVE_PATH,
+ ITEM_EDIT_PRIVATE_PATH,
+ ITEM_EDIT_PUBLIC_PATH,
+ ITEM_EDIT_REINSTATE_PATH,
+ ITEM_EDIT_WITHDRAW_PATH
+} from '../../../+item-page/edit-item-page/edit-item-page.routing.module';
+import { getItemEditPath } from '../../../+item-page/item-page-routing.module';
+import { URLCombiner } from '../../../core/url-combiner/url-combiner';
-describe('ItemAdminSearchResultListElementComponent', () => {
- let component: ItemAdminSearchResultListElementComponent;
- let fixture: ComponentFixture;
+describe('ItemAdminSearchResultActionsComponent', () => {
+ let component: ItemAdminSearchResultActionsComponent;
+ let fixture: ComponentFixture;
let id;
- let searchResult;
+ let item;
function init() {
id = '780b2588-bda5-4112-a1cd-0b15000a5339';
- searchResult = new ItemSearchResult();
- searchResult.indexableObject = new Collection();
- searchResult.indexableObject.uuid = id;
+ item = new Item();
+ item.uuid = id;
}
beforeEach(async(() => {
init();
@@ -33,20 +35,16 @@ describe('ItemAdminSearchResultListElementComponent', () => {
TranslateModule.forRoot(),
RouterTestingModule.withRoutes([])
],
- declarations: [ItemAdminSearchResultListElementComponent],
- providers: [{ provide: TruncatableService, useValue: {} }],
+ declarations: [ItemAdminSearchResultActionsComponent],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
- fixture = TestBed.createComponent(ItemAdminSearchResultListElementComponent);
+ fixture = TestBed.createComponent(ItemAdminSearchResultActionsComponent);
component = fixture.componentInstance;
- component.object = searchResult;
- component.linkTypes = CollectionElementLinkType;
- component.index = 0;
- component.viewModes = ViewMode;
+ component.item = item;
fixture.detectChanges();
});
@@ -74,15 +72,10 @@ describe('ItemAdminSearchResultListElementComponent', () => {
describe('when the item is not withdrawn', () => {
beforeEach(() => {
- component.dso.isWithdrawn = false;
+ component.item.isWithdrawn = false;
fixture.detectChanges();
});
- it('should not show the withdrawn badge', () => {
- const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
- expect(badge).toBeNull();
- });
-
it('should render a withdraw button with the correct link', () => {
const a = fixture.debugElement.query(By.css('a.withdraw-link'));
const link = a.nativeElement.href;
@@ -97,24 +90,55 @@ describe('ItemAdminSearchResultListElementComponent', () => {
describe('when the item is withdrawn', () => {
beforeEach(() => {
- component.dso.isWithdrawn = true;
+ component.item.isWithdrawn = true;
fixture.detectChanges();
});
- it('should show the withdrawn badge', () => {
- const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
- expect(badge).not.toBeNull();
- });
-
- it('should render a withdraw button with the correct link', () => {
+ it('should not render a withdraw button with the correct link', () => {
const a = fixture.debugElement.query(By.css('a.withdraw-link'));
expect(a).toBeNull();
});
- it('should not render a reinstate button with the correct link', () => {
+ it('should render a reinstate button with the correct link', () => {
const a = fixture.debugElement.query(By.css('a.reinstate-link'));
const link = a.nativeElement.href;
expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_REINSTATE_PATH).toString());
});
+ });
+
+ describe('when the item is not private', () => {
+ beforeEach(() => {
+ component.item.isDiscoverable = true;
+ fixture.detectChanges();
+ });
+
+ it('should render a make private button with the correct link', () => {
+ const a = fixture.debugElement.query(By.css('a.private-link'));
+ const link = a.nativeElement.href;
+ expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_PRIVATE_PATH).toString());
+ });
+
+ it('should not render a make public button with the correct link', () => {
+ const a = fixture.debugElement.query(By.css('a.public-link'));
+ expect(a).toBeNull();
+ });
+ });
+
+ describe('when the item is private', () => {
+ beforeEach(() => {
+ component.item.isDiscoverable = false;
+ fixture.detectChanges();
+ });
+
+ it('should not render a make private button with the correct link', () => {
+ const a = fixture.debugElement.query(By.css('a.private-link'));
+ expect(a).toBeNull();
+ });
+
+ it('should render a make private button with the correct link', () => {
+ const a = fixture.debugElement.query(By.css('a.public-link'));
+ const link = a.nativeElement.href;
+ expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_PUBLIC_PATH).toString());
+ });
})
});
diff --git a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.ts
similarity index 52%
rename from src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts
rename to src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.ts
index 3eb84e08ad..e8ce31bcf6 100644
--- a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.ts
+++ b/src/app/+admin/admin-search-page/admin-search-results/item-admin-search-result-actions.component.ts
@@ -1,36 +1,32 @@
-import { Component } from '@angular/core';
-import { Item } from '../../../../core/shared/item.model';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
-import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
-import { getItemEditPath } from '../../../../+item-page/item-page-routing.module';
-import { URLCombiner } from '../../../../core/url-combiner/url-combiner';
+import { Component, Input } from '@angular/core';
+import { Item } from '../../../core/shared/item.model';
+import { getItemEditPath } from '../../../+item-page/item-page-routing.module';
+import { URLCombiner } from '../../../core/url-combiner/url-combiner';
import {
ITEM_EDIT_DELETE_PATH,
ITEM_EDIT_MOVE_PATH,
- ITEM_EDIT_PRIVATE_PATH, ITEM_EDIT_PUBLIC_PATH,
+ ITEM_EDIT_PRIVATE_PATH,
+ ITEM_EDIT_PUBLIC_PATH,
ITEM_EDIT_REINSTATE_PATH,
ITEM_EDIT_WITHDRAW_PATH
-} from '../../../../+item-page/edit-item-page/edit-item-page.routing.module';
+} from '../../../+item-page/edit-item-page/edit-item-page.routing.module';
-@listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.AdminSearch)
@Component({
- selector: 'ds-item-admin-search-result-list-element',
- styleUrls: ['./item-admin-search-result-list-element.component.scss'],
- templateUrl: './item-admin-search-result-list-element.component.html'
+ selector: 'ds-item-admin-search-result-actions-element',
+ styleUrls: ['./item-admin-search-result-actions.component.scss'],
+ templateUrl: './item-admin-search-result-actions.component.html'
})
/**
* The component for displaying a list element for an item search result on the admin search page
*/
-export class ItemAdminSearchResultListElementComponent extends SearchResultListElementComponent {
-
+export class ItemAdminSearchResultActionsComponent {
+ @Input() public item: Item;
+ @Input() public small: boolean;
/**
* Returns the path to the edit page of this item
*/
getEditPath(): string {
- return getItemEditPath(this.dso.uuid)
+ return getItemEditPath(this.item.uuid)
}
/**
diff --git a/src/app/+admin/admin.module.ts b/src/app/+admin/admin.module.ts
index b3617cdf4d..90fe03cba0 100644
--- a/src/app/+admin/admin.module.ts
+++ b/src/app/+admin/admin.module.ts
@@ -4,6 +4,13 @@ import { AdminRoutingModule } from './admin-routing.module';
import { SharedModule } from '../shared/shared.module';
import { AdminSearchPageComponent } from './admin-search-page/admin-search-page.component';
import { SearchPageModule } from '../+search-page/search-page.module';
+import { ItemAdminSearchResultListElementComponent } from './admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component';
+import { CommunityAdminSearchResultListElementComponent } from './admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component';
+import { CollectionAdminSearchResultListElementComponent } from './admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component';
+import { ItemAdminSearchResultGridElementComponent } from './admin-search-page/admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component';
+import { CommunityAdminSearchResultGridElementComponent } from './admin-search-page/admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component';
+import { CollectionAdminSearchResultGridElementComponent } from './admin-search-page/admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component';
+import { ItemAdminSearchResultActionsComponent } from './admin-search-page/admin-search-results/item-admin-search-result-actions.component';
@NgModule({
imports: [
@@ -12,7 +19,25 @@ import { SearchPageModule } from '../+search-page/search-page.module';
SharedModule,
SearchPageModule
],
- declarations: [AdminSearchPageComponent],
+ declarations: [
+ AdminSearchPageComponent,
+ ItemAdminSearchResultListElementComponent,
+ CommunityAdminSearchResultListElementComponent,
+ CollectionAdminSearchResultListElementComponent,
+ ItemAdminSearchResultGridElementComponent,
+ CommunityAdminSearchResultGridElementComponent,
+ CollectionAdminSearchResultGridElementComponent,
+ ItemAdminSearchResultActionsComponent
+ ],
+ entryComponents: [
+ ItemAdminSearchResultListElementComponent,
+ CommunityAdminSearchResultListElementComponent,
+ CollectionAdminSearchResultListElementComponent,
+ ItemAdminSearchResultGridElementComponent,
+ CommunityAdminSearchResultGridElementComponent,
+ CollectionAdminSearchResultGridElementComponent,
+ ItemAdminSearchResultActionsComponent
+ ]
})
export class AdminModule {
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html b/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html
deleted file mode 100644
index 1394d49154..0000000000
--- a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- {{ "admin.search.item.private" | translate }}
-
-
- {{ "admin.search.item.withdrawn" | translate }}
-
-
-
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts b/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts
deleted file mode 100644
index 92110c4735..0000000000
--- a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.spec.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { NO_ERRORS_SCHEMA } from '@angular/core';
-import { NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { TranslateModule } from '@ngx-translate/core';
-import { Observable } from 'rxjs/internal/Observable';
-import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
-import { RemoteData } from '../../../../core/data/remote-data';
-import { Bitstream } from '../../../../core/shared/bitstream.model';
-import { Item } from '../../../../core/shared/item.model';
-import { mockTruncatableService } from '../../../mocks/mock-trucatable.service';
-import { SharedModule } from '../../../shared.module';
-import { createSuccessfulRemoteDataObject$ } from '../../../testing/utils';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { Collection } from '../../../../core/shared/collection.model';
-import { By } from '@angular/platform-browser';
-import { RouterTestingModule } from '@angular/router/testing';
-import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
-import { ItemAdminSearchResultGridElementComponent } from './item-admin-search-result-grid-element.component';
-import { getItemEditPath } from '../../../../+item-page/item-page-routing.module';
-import { URLCombiner } from '../../../../core/url-combiner/url-combiner';
-import { ITEM_EDIT_DELETE_PATH, ITEM_EDIT_MOVE_PATH, ITEM_EDIT_REINSTATE_PATH, ITEM_EDIT_WITHDRAW_PATH } from '../../../../+item-page/edit-item-page/edit-item-page.routing.module';
-
-describe('ItemAdminSearchResultListElementComponent', () => {
- let component: ItemAdminSearchResultGridElementComponent;
- let fixture: ComponentFixture;
- let id;
- let searchResult;
-
- const mockBitstreamDataService = {
- getThumbnailFor(item: Item): Observable> {
- return createSuccessfulRemoteDataObject$(new Bitstream());
- }
- };
-
- function init() {
- id = '780b2588-bda5-4112-a1cd-0b15000a5339';
- searchResult = new ItemSearchResult();
- searchResult.indexableObject = new Collection();
- searchResult.indexableObject.uuid = id;
- }
- beforeEach(async(() => {
- init();
- TestBed.configureTestingModule({
- imports: [
- NoopAnimationsModule,
- TranslateModule.forRoot(),
- RouterTestingModule.withRoutes([]),
- SharedModule
- ],
- providers: [
- { provide: TruncatableService, useValue: mockTruncatableService },
- { provide: BitstreamDataService, useValue: mockBitstreamDataService },
- ],
- schemas: [NO_ERRORS_SCHEMA]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(ItemAdminSearchResultGridElementComponent);
- component = fixture.componentInstance;
- component.object = searchResult;
- component.linkTypes = CollectionElementLinkType;
- component.index = 0;
- component.viewModes = ViewMode;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-
- it('should render an edit button with the correct link', () => {
- const button = fixture.debugElement.query(By.css('a.edit-link'));
- const link = button.nativeElement.href;
- expect(link).toContain(getItemEditPath(id));
- });
-
- it('should render a delete button with the correct link', () => {
- const button = fixture.debugElement.query(By.css('a.delete-link'));
- const link = button.nativeElement.href;
- expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_DELETE_PATH).toString());
- });
-
- it('should render a move button with the correct link', () => {
- const a = fixture.debugElement.query(By.css('a.move-link'));
- const link = a.nativeElement.href;
- expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_MOVE_PATH).toString());
- });
-
- describe('when the item is not withdrawn', () => {
- beforeEach(() => {
- component.dso.isWithdrawn = false;
- fixture.detectChanges();
- });
-
- it('should not show the withdrawn badge', () => {
- const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
- expect(badge).toBeNull();
- });
-
- it('should render a withdraw button with the correct link', () => {
- const a = fixture.debugElement.query(By.css('a.withdraw-link'));
- const link = a.nativeElement.href;
- expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_WITHDRAW_PATH).toString());
- });
-
- it('should not render a reinstate button with the correct link', () => {
- const a = fixture.debugElement.query(By.css('a.reinstate-link'));
- expect(a).toBeNull();
- });
- });
-
- describe('when the item is withdrawn', () => {
- beforeEach(() => {
- component.dso.isWithdrawn = true;
- fixture.detectChanges();
- });
-
- it('should show the withdrawn badge', () => {
- const badge = fixture.debugElement.query(By.css('div.withdrawn-badge'));
- expect(badge).not.toBeNull();
- });
-
- it('should render a withdraw button with the correct link', () => {
- const a = fixture.debugElement.query(By.css('a.withdraw-link'));
- expect(a).toBeNull();
- });
-
- it('should not render a reinstate button with the correct link', () => {
- const a = fixture.debugElement.query(By.css('a.reinstate-link'));
- const link = a.nativeElement.href;
- expect(link).toContain(new URLCombiner(getItemEditPath(id), ITEM_EDIT_REINSTATE_PATH).toString());
- });
- })
-});
diff --git a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts b/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts
deleted file mode 100644
index 8ac4f3904c..0000000000
--- a/src/app/shared/object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import { Component, ComponentFactoryResolver, ElementRef, OnInit, ViewChild, ViewContainerRef } from '@angular/core';
-import { Item } from '../../../../core/shared/item.model';
-import { ViewMode } from '../../../../core/shared/view-mode.model';
-import { getListableObjectComponent, listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
-import { Context } from '../../../../core/shared/context.model';
-import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
-import { getItemEditPath } from '../../../../+item-page/item-page-routing.module';
-import { URLCombiner } from '../../../../core/url-combiner/url-combiner';
-import {
- ITEM_EDIT_DELETE_PATH,
- ITEM_EDIT_MOVE_PATH,
- ITEM_EDIT_PRIVATE_PATH,
- ITEM_EDIT_PUBLIC_PATH,
- ITEM_EDIT_REINSTATE_PATH,
- ITEM_EDIT_WITHDRAW_PATH
-} from '../../../../+item-page/edit-item-page/edit-item-page.routing.module';
-import { SearchResultGridElementComponent } from '../../search-result-grid-element/search-result-grid-element.component';
-import { TruncatableService } from '../../../truncatable/truncatable.service';
-import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
-import { GenericConstructor } from '../../../../core/shared/generic-constructor';
-import { ListableObjectDirective } from '../../../object-collection/shared/listable-object/listable-object.directive';
-
-@listableObjectComponent(ItemSearchResult, ViewMode.GridElement, Context.AdminSearch)
-@Component({
- selector: 'ds-item-admin-search-result-grid-element',
- styleUrls: ['./item-admin-search-result-grid-element.component.scss'],
- templateUrl: './item-admin-search-result-grid-element.component.html'
-})
-/**
- * The component for displaying a list element for an item search result on the admin search page
- */
-export class ItemAdminSearchResultGridElementComponent extends SearchResultGridElementComponent implements OnInit {
- @ViewChild(ListableObjectDirective, {static: true}) listableObjectDirective: ListableObjectDirective;
- @ViewChild('badges', {static: true}) badges: ElementRef;
- @ViewChild('buttons', {static: true}) buttons: ElementRef;
-
- constructor(protected truncatableService: TruncatableService,
- protected bitstreamDataService: BitstreamDataService,
- private componentFactoryResolver: ComponentFactoryResolver,
- private viewContainerRef: ViewContainerRef) {
- super(truncatableService, bitstreamDataService);
- }
-
- /**
- * Setup the dynamic child component
- */
- ngOnInit(): void {
- super.ngOnInit();
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.getComponent());
-
- const viewContainerRef = this.listableObjectDirective.viewContainerRef;
- viewContainerRef.clear();
-
- const componentRef = viewContainerRef.createComponent(
- componentFactory,
- 0,
- undefined,
- [
- [this.badges.nativeElement],
- [this.buttons.nativeElement]
- ]);
- (componentRef.instance as any).object = this.object;
- (componentRef.instance as any).index = this.index;
- (componentRef.instance as any).linkType = this.linkType;
- (componentRef.instance as any).listID = this.listID;
- }
-
- /**
- * Fetch the component depending on the item's relationship type, view mode and context
- * @returns {GenericConstructor}
- */
- private getComponent(): GenericConstructor {
- return getListableObjectComponent(this.object.getRenderTypes(), ViewMode.GridElement, undefined)
- }
-
- /**
- * Returns the path to the edit page of this item
- */
- getEditPath(): string {
- return getItemEditPath(this.dso.uuid)
- }
-
- /**
- * Returns the path to the move page of this item
- */
- getMovePath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_MOVE_PATH).toString();
- }
-
- /**
- * Returns the path to the delete page of this item
- */
- getDeletePath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_DELETE_PATH).toString();
- }
-
- /**
- * Returns the path to the withdraw page of this item
- */
- getWithdrawPath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_WITHDRAW_PATH).toString();
- }
-
- /**
- * Returns the path to the reinstate page of this item
- */
- getReinstatePath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_REINSTATE_PATH).toString();
- }
-
- /**
- * Returns the path to the page where the user can make this item private
- */
- getPrivatePath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_PRIVATE_PATH).toString();
- }
-
- /**
- * Returns the path to the page where the user can make this item public
- */
- getPublicPath(): string {
- return new URLCombiner(this.getEditPath(), ITEM_EDIT_PUBLIC_PATH).toString();
- }
-}
diff --git a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html b/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html
deleted file mode 100644
index 6c9d422a06..0000000000
--- a/src/app/shared/object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
- {{ "admin.search.item.private" | translate }}
-
-
- {{ "admin.search.item.withdrawn" | translate }}
-
-
-
-
- {{"admin.search.item.edit" | translate}}
-
-
-
- {{"admin.search.item.withdraw" | translate}}
-
-
-
- {{"admin.search.item.reinstate" | translate}}
-
-
-
- {{"admin.search.item.make-private" | translate}}
-
-
-
- {{"admin.search.item.make-public" | translate}}
-
-
-
- {{"admin.search.item.delete" | translate}}
-
-
-
- {{"admin.search.item.move" | translate}}
-
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index 84738559ee..c229b6c429 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -177,13 +177,7 @@ import { ImportableListItemControlComponent } from './object-collection/shared/i
import { DragDropModule } from '@angular/cdk/drag-drop';
import { ExistingMetadataListElementComponent } from './form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component';
import { SortablejsModule } from 'ngx-sortablejs';
-import { ItemAdminSearchResultListElementComponent } from './object-list/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component';
-import { CommunityAdminSearchResultListElementComponent } from './object-list/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component';
-import { CollectionAdminSearchResultListElementComponent } from './object-list/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component';
import { MissingTranslationHelper } from './translate/missing-translation.helper';
-import { ItemAdminSearchResultGridElementComponent } from './object-grid/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component';
-import { CommunityAdminSearchResultGridElementComponent } from './object-grid/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component';
-import { CollectionAdminSearchResultGridElementComponent } from './object-grid/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component';
const MODULES = [
// Do NOT include UniversalModule, HttpModule, or JsonpModule here
@@ -351,12 +345,6 @@ const COMPONENTS = [
ImportableListItemControlComponent,
ExistingMetadataListElementComponent,
PublicationSearchResultListElementComponent,
- ItemAdminSearchResultListElementComponent,
- CommunityAdminSearchResultListElementComponent,
- CollectionAdminSearchResultListElementComponent,
- ItemAdminSearchResultGridElementComponent,
- CommunityAdminSearchResultGridElementComponent,
- CollectionAdminSearchResultGridElementComponent
];
const ENTRY_COMPONENTS = [
@@ -420,12 +408,6 @@ const ENTRY_COMPONENTS = [
DsDynamicLookupRelationSelectionTabComponent,
DsDynamicLookupRelationExternalSourceTabComponent,
ExternalSourceEntryImportModalComponent,
- ItemAdminSearchResultListElementComponent,
- CommunityAdminSearchResultListElementComponent,
- CollectionAdminSearchResultListElementComponent,
- ItemAdminSearchResultGridElementComponent,
- CommunityAdminSearchResultGridElementComponent,
- CollectionAdminSearchResultGridElementComponent
];
const SHARED_ITEM_PAGE_COMPONENTS = [