mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Merge branch 'dev' into feature-global-ui-permissions
This commit is contained in:
		| @@ -73,7 +73,7 @@ describe('settings', () => { | |||||||
|     cy.contains('a', 'Dashboard').click() |     cy.contains('a', 'Dashboard').click() | ||||||
|     cy.contains('You have unsaved changes') |     cy.contains('You have unsaved changes') | ||||||
|     cy.contains('button', 'Cancel').click() |     cy.contains('button', 'Cancel').click() | ||||||
|     cy.contains('button', 'Save').click().wait(2000) |     cy.contains('button', 'Save').click().wait('@savedViews').wait(2000) | ||||||
|     cy.contains('a', 'Dashboard').click() |     cy.contains('a', 'Dashboard').click() | ||||||
|     cy.contains('You have unsaved changes').should('not.exist') |     cy.contains('You have unsaved changes').should('not.exist') | ||||||
|   }) |   }) | ||||||
|   | |||||||
| @@ -166,6 +166,11 @@ const routes: Routes = [ | |||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|       }, |       }, | ||||||
|  |       { | ||||||
|  |         path: 'settings/:section', | ||||||
|  |         component: SettingsComponent, | ||||||
|  |         canDeactivate: [DirtyFormGuard], | ||||||
|  |       }, | ||||||
|       { path: 'tasks', component: TasksComponent }, |       { path: 'tasks', component: TasksComponent }, | ||||||
|     ], |     ], | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -227,6 +227,90 @@ | |||||||
|       </ng-template> |       </ng-template> | ||||||
|     </li> |     </li> | ||||||
|  |  | ||||||
|  |     <li [ngbNavItem]="SettingsNavIDs.Mail" (mouseover)="maybeInitializeTab(SettingsNavIDs.Mail)" (focusin)="maybeInitializeTab(SettingsNavIDs.Mail)"> | ||||||
|  |       <a ngbNavLink i18n>Mail</a> | ||||||
|  |       <ng-template ngbNavContent> | ||||||
|  |  | ||||||
|  |         <ng-container *ngIf="mailAccounts && mailRules"> | ||||||
|  |           <h4> | ||||||
|  |             <ng-container i18n>Mail accounts</ng-container> | ||||||
|  |             <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailAccount()"> | ||||||
|  |               <svg class="sidebaricon me-1" fill="currentColor"> | ||||||
|  |                 <use xlink:href="assets/bootstrap-icons.svg#plus-circle" /> | ||||||
|  |               </svg> | ||||||
|  |               <ng-container i18n>Add Account</ng-container> | ||||||
|  |             </button> | ||||||
|  |           </h4> | ||||||
|  |           <ul class="list-group" formGroupName="mailAccounts"> | ||||||
|  |  | ||||||
|  |               <li class="list-group-item"> | ||||||
|  |                 <div class="row"> | ||||||
|  |                   <div class="col" i18n>Name</div> | ||||||
|  |                   <div class="col" i18n>Server</div> | ||||||
|  |                   <div class="col" i18n>Actions</div> | ||||||
|  |                 </div> | ||||||
|  |               </li> | ||||||
|  |  | ||||||
|  |               <li *ngFor="let account of mailAccounts" class="list-group-item" [formGroupName]="account.id"> | ||||||
|  |                 <div class="row"> | ||||||
|  |                   <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailAccount(account)">{{account.name}}</button></div> | ||||||
|  |                   <div class="col d-flex align-items-center">{{account.imap_server}}</div> | ||||||
|  |                   <div class="col"> | ||||||
|  |                     <div class="btn-group"> | ||||||
|  |                       <button class="btn btn-sm btn-primary" type="button" (click)="editMailAccount(account)" i18n>Edit</button> | ||||||
|  |                       <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailAccount(account)" i18n>Delete</button> | ||||||
|  |                     </div> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |               </li> | ||||||
|  |  | ||||||
|  |               <div *ngIf="mailAccounts.length == 0" i18n>No mail accounts defined.</div> | ||||||
|  |           </ul> | ||||||
|  |  | ||||||
|  |           <h4 class="mt-4"> | ||||||
|  |             <ng-container i18n>Mail rules</ng-container> | ||||||
|  |             <button type="button" class="btn btn-sm btn-primary ms-4" (click)="editMailRule()"> | ||||||
|  |               <svg class="sidebaricon me-1" fill="currentColor"> | ||||||
|  |                 <use xlink:href="assets/bootstrap-icons.svg#plus-circle" /> | ||||||
|  |               </svg> | ||||||
|  |               <ng-container i18n>Add Rule</ng-container> | ||||||
|  |             </button> | ||||||
|  |           </h4> | ||||||
|  |           <ul class="list-group" formGroupName="mailRules"> | ||||||
|  |  | ||||||
|  |               <li class="list-group-item"> | ||||||
|  |                 <div class="row"> | ||||||
|  |                   <div class="col" i18n>Name</div> | ||||||
|  |                   <div class="col" i18n>Account</div> | ||||||
|  |                   <div class="col" i18n>Actions</div> | ||||||
|  |                 </div> | ||||||
|  |               </li> | ||||||
|  |  | ||||||
|  |               <li *ngFor="let rule of mailRules" class="list-group-item" [formGroupName]="rule.id"> | ||||||
|  |                 <div class="row"> | ||||||
|  |                   <div class="col d-flex align-items-center"><button class="btn btn-link p-0" type="button" (click)="editMailRule(rule)">{{rule.name}}</button></div> | ||||||
|  |                   <div class="col d-flex align-items-center">{{(mailAccountService.getCached(rule.account) | async)?.name}}</div> | ||||||
|  |                   <div class="col"> | ||||||
|  |                     <div class="btn-group"> | ||||||
|  |                       <button class="btn btn-sm btn-primary" type="button" (click)="editMailRule(rule)" i18n>Edit</button> | ||||||
|  |                       <button class="btn btn-sm btn-outline-danger" type="button" (click)="deleteMailRule(rule)" i18n>Delete</button> | ||||||
|  |                     </div> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |               </li> | ||||||
|  |  | ||||||
|  |               <div *ngIf="mailRules.length == 0" i18n>No mail rules defined.</div> | ||||||
|  |           </ul> | ||||||
|  |         </ng-container> | ||||||
|  |  | ||||||
|  |         <div *ngIf="!mailAccounts || !mailRules"> | ||||||
|  |           <div class="spinner-border spinner-border-sm fw-normal ms-2 me-auto" role="status"></div> | ||||||
|  |           <div class="visually-hidden" i18n>Loading...</div> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |       </ng-template> | ||||||
|  |     </li> | ||||||
|  |  | ||||||
|     <li *ifPermissions="{ action: PermissionAction.View, type: PermissionType.MailRule }" [ngbNavItem]="SettingsNavIDs.Mail" (mouseover)="maybeInitializeTab(SettingsNavIDs.Mail)" (focusin)="maybeInitializeTab(SettingsNavIDs.Mail)"> |     <li *ifPermissions="{ action: PermissionAction.View, type: PermissionType.MailRule }" [ngbNavItem]="SettingsNavIDs.Mail" (mouseover)="maybeInitializeTab(SettingsNavIDs.Mail)" (focusin)="maybeInitializeTab(SettingsNavIDs.Mail)"> | ||||||
|       <a ngbNavLink i18n>Mail</a> |       <a ngbNavLink i18n>Mail</a> | ||||||
|       <ng-template ngbNavContent> |       <ng-template ngbNavContent> | ||||||
|   | |||||||
| @@ -31,7 +31,6 @@ import { ViewportScroller } from '@angular/common' | |||||||
| import { TourService } from 'ngx-ui-tour-ng-bootstrap' | import { TourService } from 'ngx-ui-tour-ng-bootstrap' | ||||||
| import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' | import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' | ||||||
| import { NgbModal, NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap' | import { NgbModal, NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap' | ||||||
| import { Results } from 'src/app/data/results' |  | ||||||
| import { UserService } from 'src/app/services/rest/user.service' | import { UserService } from 'src/app/services/rest/user.service' | ||||||
| import { GroupService } from 'src/app/services/rest/group.service' | import { GroupService } from 'src/app/services/rest/group.service' | ||||||
| import { PaperlessUser } from 'src/app/data/paperless-user' | import { PaperlessUser } from 'src/app/data/paperless-user' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Shamoon
					Michael Shamoon