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 @@ +
+
+ {{ name }} + + {{ name }} + + ( {{ title }} ) +
+ +
{{ 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": {