diff --git a/src/app.config.json b/src/app.config.json
index 476d72c49..3497e0e6f 100644
--- a/src/app.config.json
+++ b/src/app.config.json
@@ -159,7 +159,7 @@
}
},
"search": {
- "include": ["path", "allowableOperations"],
+ "include": ["path", "allowableOperations", "properties"],
"sorting": {
"options": [
{
@@ -217,6 +217,7 @@
"filterQueries": [
{ "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" },
{ "query": "NOT cm:creator:System" },
+ { "query": "NOT TYPE:'dl:dataList' AND NOT TYPE:'dl:todoList' AND NOT TYPE:'dl:issue' AND NOT TYPE:'fm:topic' AND NOT TYPE:'lnk:link' AND NOT TYPE:'fm:post'" },
{ "query": "-(SITE: _REPOSITORY_)" }
],
"facetFields": [
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 7cea82e7a..b4d5658e0 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -57,6 +57,7 @@ import { SearchInputComponent } from './components/search-input/search-input.com
import { SidenavComponent } from './components/sidenav/sidenav.component';
import { AboutComponent } from './components/about/about.component';
import { LocationLinkComponent } from './components/location-link/location-link.component';
+import { CustomDlRowComponent } from './components/custom-dl-row/custom-dl-row.component';
import { NodeCopyDirective } from './common/directives/node-copy.directive';
import { NodeDeleteDirective } from './common/directives/node-delete.directive';
import { NodeMoveDirective } from './common/directives/node-move.directive';
@@ -139,6 +140,7 @@ import { ViewerEffects } from './store/effects/viewer.effects';
PreviewComponent,
AboutComponent,
LocationLinkComponent,
+ CustomDlRowComponent,
NodeCopyDirective,
NodeDeleteDirective,
NodeMoveDirective,
diff --git a/src/app/components/custom-dl-row/custom-dl-row.component.html b/src/app/components/custom-dl-row/custom-dl-row.component.html
new file mode 100644
index 000000000..7384e3a68
--- /dev/null
+++ b/src/app/components/custom-dl-row/custom-dl-row.component.html
@@ -0,0 +1,21 @@
+
+
+
+
{{ description }}
+
+
+ {{ 'APP.BROWSE.SEARCH.CUSTOM_ROW.MODIFIED' | translate }}: {{ modifiedAt | date:'medium' }}
+
+ by {{ user }}
+
+ | {{ size }}
+
+
+
{{ 'APP.BROWSE.SEARCH.CUSTOM_ROW.LOCATION' | translate }}:
+
\ No newline at end of file
diff --git a/src/app/components/custom-dl-row/custom-dl-row.component.scss b/src/app/components/custom-dl-row/custom-dl-row.component.scss
new file mode 100644
index 000000000..39b45278b
--- /dev/null
+++ b/src/app/components/custom-dl-row/custom-dl-row.component.scss
@@ -0,0 +1,24 @@
+@import 'mixins';
+
+.app-custom-search-row {
+ @include flex-column;
+}
+
+.line {
+ margin: 5px 0;
+}
+
+.bold {
+ font-weight: 400;
+ color: rgba(0, 0, 0, 0.87);
+}
+
+.link {
+ text-decoration: none;
+ color: rgba(0, 0, 0, 0.87);
+}
+
+.link:hover {
+ color: #2196F3;
+ text-decoration: underline;
+}
diff --git a/src/app/components/custom-dl-row/custom-dl-row.component.ts b/src/app/components/custom-dl-row/custom-dl-row.component.ts
new file mode 100644
index 000000000..6753b4a65
--- /dev/null
+++ b/src/app/components/custom-dl-row/custom-dl-row.component.ts
@@ -0,0 +1,108 @@
+/*!
+ * @license
+ * Alfresco Example Content Application
+ *
+ * Copyright (C) 2005 - 2018 Alfresco Software Limited
+ *
+ * This file is part of the Alfresco Example Content Application.
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ *
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+
+import { Component, Input, OnInit } from '@angular/core';
+import { MinimalNodeEntryEntity } from 'alfresco-js-api';
+import { ViewNodeAction } from '../../store/actions/viewer.action';
+import { Store } from '@ngrx/store';
+import { AppStore } from '../../store/states/app.state';
+
+@Component({
+ selector: 'app-custom-dl-row',
+ templateUrl: './custom-dl-row.component.html',
+ styleUrls: ['./custom-dl-row.component.scss']
+})
+export class CustomDlRowComponent implements OnInit {
+ private node: MinimalNodeEntryEntity;
+
+ @Input()
+ context: any;
+
+ constructor(private store: Store) {}
+
+ ngOnInit() {
+ this.node = this.context.row.node.entry;
+ }
+
+
+ get name() {
+ return this.getValue('name');
+ }
+
+ get title() {
+ return this.getValue('properties["cm:title"]');
+ }
+
+ get description() {
+ return this.getValue('properties["cm:description"]');
+ }
+
+ get modifiedAt() {
+ return this.getValue('modifiedAt');
+ }
+
+ get size() {
+ return this.getValue('content.modifiedAt');
+ }
+
+ get user() {
+ return this.getValue('modifiedByUser.displayName');
+ }
+
+ get hasDescription() {
+ return this.description;
+ }
+
+ get hasTitle() {
+ return this.title;
+ }
+
+ get hasSize() {
+ return this.size;
+ }
+
+ get isFile() {
+ return this.getValue('isFile');
+ }
+
+ showPreview() {
+ const { id, name} = this.node;
+
+ this.store.dispatch(new ViewNodeAction({
+ id,
+ name
+ }));
+ }
+
+ private getValue(path) {
+ return path
+ .replace('["', '.')
+ .replace('"]', '')
+ .replace('[', '.')
+ .replace(']', '')
+ .split('.')
+ .reduce((acc, part) => acc ? acc[part] : null, this.node);
+ }
+}
diff --git a/src/app/components/location-link/location-link.component.ts b/src/app/components/location-link/location-link.component.ts
index a64d7c9ef..1cf93f11f 100644
--- a/src/app/components/location-link/location-link.component.ts
+++ b/src/app/components/location-link/location-link.component.ts
@@ -78,7 +78,8 @@ export class LocationLinkComponent implements OnInit {
const data: DataTableAdapter = this.context.data;
const col: DataColumn = this.context.col;
const row: DataRow = this.context.row;
- const value: PathInfoEntity = data.getValue(row, col);
+ const path: PathInfoEntity = data.getValue(row, col);
+ const value = path || this.context.row.node.entry.path;
if (value && value.name && value.elements) {
this.displayText = this.getDisplayText(value);
diff --git a/src/app/components/search/search.component.html b/src/app/components/search/search.component.html
index 44f8bc4d5..614de260e 100644
--- a/src/app/components/search/search.component.html
+++ b/src/app/components/search/search.component.html
@@ -100,32 +100,15 @@
[sr-title]="'ADF-DOCUMENT-LIST.LAYOUT.THUMBNAIL'"
[sortable]="false">
+
-
-
-
-
-
-
+ key
+ type="text">
+
+
+
+
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 0a29509db..7e39669eb 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -98,7 +98,11 @@
},
"SEARCH": {
"TITLE": "Search Results",
- "FOUND_RESULTS": "{{ number }} results found"
+ "FOUND_RESULTS": "{{ number }} results found",
+ "CUSTOM_ROW": {
+ "MODIFIED": "Modified",
+ "LOCATION": "Location"
+ }
}
},
"ACTIONS": {