<th scope="col" i18n>Title</th>
</tr>
</thead>
- <tbody>
+ <tbody *ifPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
- <tr *ngFor="let doc of documents" (click)="openDocumentsService.openDocument(doc)">
- <td>{{doc.created_date | customDate}}</td>
- <td>{{doc.title | documentTitle}}<app-tag [tag]="t" *ngFor="let t of doc.tags$ | async" class="ms-1" (click)="clickTag(t); $event.stopPropagation();"></app-tag></td>
+ <tr *ngFor="let doc of documents">
+ <td><a routerLink="/documents/{{doc.id}}" class="d-block text-dark text-decoration-none">{{doc.created_date | customDate}}</a></td>
+ <td><a routerLink="/documents/{{doc.id}}" class="d-block text-dark text-decoration-none">{{doc.title | documentTitle}}<app-tag [tag]="t" *ngFor="let t of doc.tags$ | async" class="ms-1" (click)="clickTag(t, $event)"></app-tag></a></td>
</tr>
</tbody>
</table>
<use xlink:href="assets/bootstrap-icons.svg#diagram-3"/>
</svg> <span class="d-none d-md-inline" i18n>More like this</span>
</a>
- <a (click)="openDocumentsService.openDocument(document)" class="btn btn-sm btn-outline-secondary" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }">
- <a routerLink="/documents/{{document.id}}" class="btn btn-sm btn-outline-secondary">
++ <a routerLink="/documents/{{document.id}}" class="btn btn-sm btn-outline-secondary" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }">
<svg class="sidebaricon" fill="currentColor" class="sidebaricon">
<use xlink:href="assets/bootstrap-icons.svg#pencil"/>
</svg> <span class="d-none d-md-inline" i18n>Edit</span>
import { DocumentService } from 'src/app/services/rest/document.service'
import { SettingsService } from 'src/app/services/settings.service'
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'
- import { OpenDocumentsService } from 'src/app/services/open-documents.service'
import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
+import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component'
@Component({
selector: 'app-document-card-large',
'../popover-preview/popover-preview.scss',
],
})
-export class DocumentCardLargeComponent implements OnInit {
+export class DocumentCardLargeComponent
+ extends ComponentWithPermissions
+ implements OnInit
+{
constructor(
private documentService: DocumentService,
- private settingsService: SettingsService,
- public openDocumentsService: OpenDocumentsService
+ private settingsService: SettingsService
- ) {}
+ ) {
+ super()
+ }
@Input()
selected = false
</div>
<div class="d-flex justify-content-between align-items-center">
<div class="btn-group w-100">
- <a (click)="openDocumentsService.openDocument(document)" class="btn btn-sm btn-outline-secondary" title="Edit" *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n-title>
- <a routerLink="/documents/{{document.id}}" class="btn btn-sm btn-outline-secondary" title="Edit" i18n-title>
++ <a routerLink="/documents/{{document.id}}" class="btn btn-sm btn-outline-secondary" title="Edit" i18n-title *ifPermissions="{ action: PermissionAction.Change, type: PermissionType.Document }" i18n-title>
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-pencil" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"/>
</svg>
import { DocumentService } from 'src/app/services/rest/document.service'
import { SettingsService } from 'src/app/services/settings.service'
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'
- import { OpenDocumentsService } from 'src/app/services/open-documents.service'
import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
+import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component'
@Component({
selector: 'app-document-card-small',
'../popover-preview/popover-preview.scss',
],
})
-export class DocumentCardSmallComponent implements OnInit {
+export class DocumentCardSmallComponent extends ComponentWithPermissions {
constructor(
private documentService: DocumentService,
- private settingsService: SettingsService,
- public openDocumentsService: OpenDocumentsService
+ private settingsService: SettingsService
- ) {}
+ ) {
+ super()
+ }
@Input()
selected = false
fields = fields_param.split(",")
else:
fields = None
+ truncate_content = self.request.query_params.get("truncate_content", "False")
serializer_class = self.get_serializer_class()
+ kwargs.setdefault("user", self.request.user) # PassUserMixin
kwargs.setdefault("context", self.get_serializer_context())
kwargs.setdefault("fields", fields)
+ kwargs.setdefault("truncate_content", truncate_content.lower() in ["true", "1"])
return serializer_class(*args, **kwargs)
def update(self, request, *args, **kwargs):