From 7e4bdaf308f9cfe2dc25a17be9db0f7850a5e889 Mon Sep 17 00:00:00 2001
From: Alex Orluc <alex.orluc@maarch.org>
Date: Wed, 6 Jun 2018 19:34:38 +0200
Subject: [PATCH] FEAT #7731 add docservers admin components

---
 .../docserver-administration.component.html   |  77 +++++++
 .../docservers-administration.component.html  | 193 ++++++++----------
 apps/maarch_entreprise/css/engine.css         |  10 +
 .../administration-routing.module.ts          |   2 +
 .../administration/administration.module.ts   |   2 +
 .../docserver-administration.component.ts     |  68 ++++++
 .../docservers-administration.component.ts    | 131 ++++++------
 .../entities-administration.component.ts      |   4 +
 .../js/angular/lang/lang-en.ts                |  12 ++
 .../js/angular/lang/lang-fr.ts                |  12 ++
 apps/maarch_entreprise/xml/services.xml       |   4 +-
 sql/data_fr.sql                               |  72 +++----
 12 files changed, 380 insertions(+), 207 deletions(-)
 create mode 100644 apps/maarch_entreprise/Views/docserver-administration.component.html
 create mode 100644 apps/maarch_entreprise/js/angular/app/administration/docserver-administration.component.ts

diff --git a/apps/maarch_entreprise/Views/docserver-administration.component.html b/apps/maarch_entreprise/Views/docserver-administration.component.html
new file mode 100644
index 00000000000..1d1ebd47082
--- /dev/null
+++ b/apps/maarch_entreprise/Views/docserver-administration.component.html
@@ -0,0 +1,77 @@
+<div class="admin-container" [class.admin-is-mobile]="mobileQuery.matches">
+    <mat-toolbar color="primary" class="admin-toolbar">
+        <button mat-button (click)="snav.toggle()">
+            <mat-icon class="maarchLogo" [svgIcon]="mobileQuery.matches ? 'maarchLogoOnly' : 'maarchLogo'"></mat-icon>
+        </button>
+        <h1 class="admin-toolbar-title">{{lang.docserverCreation}}
+            <small [class.hide-for-mobile]="mobileQuery.matches">{{docserver.docserver_id}}</small>
+        </h1>
+        <span style="flex: 1 1 auto;"></span>
+        <menu-top></menu-top>
+    </mat-toolbar>
+    <mat-sidenav-container class="admin-sidenav-container" [style.marginTop.px]="mobileQuery.matches ? 56 : 0">
+        <mat-sidenav #snav [mode]="mobileQuery.matches ? 'over' : 'side'" [fixedInViewport]="mobileQuery.matches" fixedTopGap="56"
+            [opened]="mobileQuery.matches ? false : true" style="width:300px;">
+            <menu-nav></menu-nav>
+            <mat-divider></mat-divider>
+        </mat-sidenav>
+        <mat-sidenav-content>
+            <div *ngIf="loading" style="display:flex;height:100%;">
+                <mat-spinner style="margin:auto;"></mat-spinner>
+            </div>
+            <mat-card *ngIf="!loading" class="card-app-content">
+                <form class="form-horizontal" (ngSubmit)="onSubmit(docserver)" #docserverForm="ngForm">
+                    <div class="row" style="margin-top: 10px;">
+                        <div class="col-md-12">
+                            <mat-form-field>
+                                <mat-select required name="docserver_type" id="docserver_type" title="{{lang.docserverType}}" placeholder="{{lang.docserverType}}"
+                                    [(ngModel)]="docserver.docserver_type_id" required>
+                                    <mat-option *ngFor="let docserverType of this.docserversTypes" [value]="docserverType.docserver_type_id">
+                                        {{docserverType.docserver_type_label}}
+                                    </mat-option>
+                                </mat-select>
+                            </mat-form-field>
+                            <mat-form-field>
+                                <input matInput required name="identifier" id="identifier" title="{{lang.id}}" type="text" placeholder="{{lang.id}}" [(ngModel)]="docserver.docserver_id"
+                                    maxlength="32" pattern="^[\w.-]*$" required>
+                            </mat-form-field>
+                            <mat-form-field>
+                                <input matInput required name="label" id="label" title="{{lang.label}}" type="text" placeholder="{{lang.label}}" maxlength="255"
+                                    [(ngModel)]="docserver.device_label" maxlength="255" required>
+                            </mat-form-field>
+                            <mat-form-field>
+                                <mat-select required name="collection" id="collection" title="{{lang.collection}}" placeholder="{{lang.collection}}" [(ngModel)]="docserver.coll_id"
+                                    required>
+                                    <mat-option value="letterbox_coll" selected>
+                                        letterbox_coll
+                                    </mat-option>
+                                    <mat-option value="attachments_coll">
+                                        attachments_coll
+                                    </mat-option>
+                                    <mat-option value="attachments_version_coll">
+                                        attachments_version_coll
+                                    </mat-option>
+                                    <mat-option value="archive_transfer_coll">
+                                        archive_transfer_coll
+                                    </mat-option>
+                                </mat-select>
+                            </mat-form-field>
+                            <mat-form-field>
+                                <input matInput required name="max_size" id="max_size" title="{{lang.maxSize}}" type="number" placeholder="{{lang.maxSize}}"
+                                    [(ngModel)]="docserver.limitSizeFormatted" [disabled]="docserver.is_readonly" pattern="^\d+$">
+                                <span matSuffix> Go</span>
+                            </mat-form-field>
+                            <mat-form-field>
+                                <input matInput required name="path" id="path" title="path" type="text" placeholder="Chemin" [(ngModel)]="docserver.path_template"
+                                    [disabled]="docserver.is_readonly">
+                            </mat-form-field>
+                        </div>
+                        <div class="col-md-12 text-center" style="padding:10px;">
+                            <button mat-raised-button color="primary" type="submit" [disabled]="!docserverForm.form.valid">{{lang.add}}</button>
+                        </div>
+                    </div>
+                </form>
+            </mat-card>
+        </mat-sidenav-content>
+    </mat-sidenav-container>
+</div>
\ No newline at end of file
diff --git a/apps/maarch_entreprise/Views/docservers-administration.component.html b/apps/maarch_entreprise/Views/docservers-administration.component.html
index db9da702701..2a23fb948af 100644
--- a/apps/maarch_entreprise/Views/docservers-administration.component.html
+++ b/apps/maarch_entreprise/Views/docservers-administration.component.html
@@ -13,119 +13,100 @@
             [opened]="mobileQuery.matches ? false : true" style="width:300px;">
             <menu-nav></menu-nav>
             <mat-divider></mat-divider>
+            <mat-nav-list>
+                <h3 mat-subheader>{{lang.actions}}</h3>
+                <a mat-list-item routerLink="/administration/docservers/new">
+                    <mat-icon color="primary" mat-list-icon class="fa fa-plus"></mat-icon>
+                    <p mat-line>
+                        {{lang.add}}
+                    </p>
+                </a>
+            </mat-nav-list>
+            <mat-divider></mat-divider>
         </mat-sidenav>
         <mat-sidenav-content>
             <div *ngIf="loading" style="display:flex;height:100%;">
                 <mat-spinner style="margin:auto;"></mat-spinner>
             </div>
             <mat-card *ngIf="!loading" class="card-app-content">
-                <h3>Zone documentaire <small>DOC</small></h3>
-                <hr/>
-                <div class="row">
-                    <div class="col-md-4" *ngFor="let docserver of this.docserversFasthd">
-                        <mat-card>
-                            <div color="warn" style="position: absolute;top: 10px;left: 10px;font-weight: bold;">
-                                {{docserver.priority_number}}
-                            </div>
-                            <button *ngIf="docserver.is_readonly == 'N'" mat-icon-button color="accent" style="position: absolute;top: 5px;right:10px;" title="Verrouiller la zone de stockage (lecture seule)">
-                                <mat-icon class="fa fa-lock-open"></mat-icon>
-                            </button>
-                            <button *ngIf="docserver.is_readonly == 'Y'" mat-icon-button color="warn" style="position: absolute;top: 5px;right:10px;" title="Déverouiller la zone de stockage (lecture seule)">
-                                <mat-icon class="fa fa-lock"></mat-icon>
-                            </button>
-                            <div class="row" style="margin-top: 10px;">
-                                <div class="col-md-12">
-                                    <mat-form-field>
-                                        <input matInput required name="label" id="label" title="{{lang.label}}" type="text" placeholder="{{lang.label}}" maxlength="255"
-                                        [(ngModel)]="docserver.device_label" [disabled]="docserver.is_readonly == 'Y'">
-                                    </mat-form-field>
-                                </div>
-                                <div class="col-md-4">
-                                    <mat-progress-spinner *ngIf="docserver.percent_number < 70" name="percent_val" id="percent_val" color="primary" mode="determinate" [value]="docserver.percent_number" style="margin:auto;">
-                                    </mat-progress-spinner>
-                                    <mat-progress-spinner *ngIf="docserver.percent_number >= 70" name="percent_val" id="percent_val" color="warn" mode="determinate" [value]="docserver.percent_number" style="margin:auto;">
-                                    </mat-progress-spinner>
-                                    <span style="position: absolute;top: 40px;left:60px;font-weight: bold;" title="{{docserver.actual_size_number}} Go">{{docserver.percent_number}}%</span>
-                                </div>
-                                <div class="col-md-8">
-                                    <mat-form-field>
-                                        <input matInput required name="Collection" id="Collection" title="Collection" type="text" placeholder="Collection"
-                                        [(ngModel)]="docserver.coll_id" maxlength="255" disabled>
-                                    </mat-form-field>
-                                    <mat-form-field>
-                                        <input matInput required name="identifier" id="identifier" title="Identifiant" type="text" placeholder="Identifiant"
-                                        [(ngModel)]="docserver.docserver_id" maxlength="255" disabled>
-                                    </mat-form-field>
-                                    <mat-form-field>
-                                        <mat-select id="status" name="status" title="Docserver secondaire" placeholder="Docserver secondaire"
-                                            required>
-                                            <mat-option value="none">
-                                                Aucun
-                                            </mat-option>
-                                            <mat-option value="fasthd_man_2">
-                                                FASTHD_MAN_2
-                                            </mat-option>
-                                        </mat-select>
-                                    </mat-form-field>
-                                    <mat-form-field>
-                                        <input matInput required name="max_size" id="max_size" title="Taille maximale" type="number" placeholder="Taille maximale"
-                                        [(ngModel)]="docserver.size_limit_number" [disabled]="docserver.is_readonly == 'Y'">
-                                        <span matSuffix> Go</span>
-                                    </mat-form-field>
-                                </div>
-                                <div class="col-md-12">
-                                    <mat-form-field>
-                                        <input matInput required name="path" id="path" title="path" type="text" placeholder="Chemin" maxlength="255" [(ngModel)]="docserver.path_template" [disabled]="docserver.is_readonly == 'Y'">
-                                    </mat-form-field>
-                                </div>
+                <mat-accordion>
+                    <mat-expansion-panel *ngFor="let docserverType of this.docserversTypes">
+                        <mat-expansion-panel-header>
+                            <mat-panel-title>
+                                {{docserverType.docserver_type_label}}
+                            </mat-panel-title>
+                            <mat-panel-description>
+                                {{docserverType.docserver_type_id}}
+                            </mat-panel-description>
+                        </mat-expansion-panel-header>
+                        <div class="row">
+                            <div class="col-md-4" *ngFor="let docserver of this.docservers[docserverType.docserver_type_id];let i=index">
+                                <mat-card>
+                                    <form class="form-horizontal" (ngSubmit)="onSubmit(docserver)" #docserverFormUp="ngForm">
+                                        <button *ngIf="!docserver.is_readonly" mat-icon-button color="accent" (click)="toggleDocserver(docserver)" style="position: absolute;top: 5px;right:10px;"
+                                            matTooltip="{{lang.lockDocserver}}">
+                                            <mat-icon class="fa fa-lock-open"></mat-icon>
+                                        </button>
+                                        <button *ngIf="docserver.is_readonly" mat-icon-button color="warn" (click)="toggleDocserver(docserver)" style="position: absolute;top: 5px;right:10px;"
+                                            matTooltip="{{lang.unlockDocserver}}">
+                                            <mat-icon class="fa fa-lock"></mat-icon>
+                                        </button>
+                                        <div class="row" style="margin-top: 10px;">
+                                            <div class="col-md-12">
+                                                <mat-form-field>
+                                                    <input matInput required name="label" id="label" title="{{lang.label}}" type="text" placeholder="{{lang.label}}" maxlength="255"
+                                                        [(ngModel)]="docserver.device_label" [disabled]="docserver.is_readonly">
+                                                </mat-form-field>
+                                            </div>
+                                            <div class="col-md-4">
+                                                <mat-progress-spinner *ngIf="docserver.percentage < 60" name="percent_val" id="percent_val" color="primary" mode="determinate"
+                                                    [value]="docserver.percentage" style="margin:auto;">
+                                                </mat-progress-spinner>
+                                                <mat-progress-spinner *ngIf="docserver.percentage >= 60" name="percent_val" id="percent_val" color="warn" mode="determinate"
+                                                    [value]="docserver.percentage" style="margin:auto;">
+                                                </mat-progress-spinner>
+                                                <span style="position: absolute;font-weight: bold;left: 50%;transform: translateX(-50%);top: 40%;font-weight: bold;" title="{{docserver.actualSizeFormatted}}">{{docserver.percentage}}%</span>
+                                            </div>
+                                            <div class="col-md-8">
+                                                <mat-form-field>
+                                                    <input matInput required name="collection" id="collection" title="{{lang.collection}}" type="text" placeholder="{{lang.collection}}" [(ngModel)]="docserver.coll_id" disabled>
+                                                </mat-form-field>
+                                                <mat-form-field>
+                                                    <input matInput required name="identifier" id="identifier" title="{{lang.id}}" type="text" placeholder="{{lang.id}}" [(ngModel)]="docserver.docserver_id"
+                                                        disabled>
+                                                </mat-form-field>
+                                            </div>
+                                            <div class="col-md-4">
+                                                <mat-form-field>
+                                                    <input matInput required name="max_size" id="max_size" title="{{lang.maxSize}}" type="number" placeholder="{{lang.maxSize}}"
+                                                        [(ngModel)]="docserver.limitSizeFormatted" [disabled]="docserver.is_readonly">
+                                                    <span matSuffix> Go</span>
+                                                </mat-form-field>
+                                            </div>
+                                            <div class="col-md-8">
+                                                <mat-form-field>
+                                                    <input matInput required name="priority" id="priority" title="{{lang.priority}}" type="number" placeholder="{{lang.priority}}"
+                                                        [(ngModel)]="docserver.priority_number" [disabled]="docserver.is_readonly">
+                                                </mat-form-field>
+                                            </div>
+                                            <div class="col-md-12">
+                                                <mat-form-field>
+                                                    <input matInput required name="path" id="path" title="path" type="text" placeholder="Chemin" [(ngModel)]="docserver.path_template"
+                                                        [disabled]="docserver.is_readonly">
+                                                </mat-form-field>
+                                            </div>
+                                            <div class="col-md-12 text-center" style="padding:10px;">
+                                                    <button mat-raised-button color="primary" type="submit" [disabled]="checkModif(docserver,this.docserversClone[docserverType.docserver_type_id][i])">{{lang.update}}</button>
+                                                    <button mat-raised-button color="default" [disabled]="checkModif(docserver,this.docserversClone[docserverType.docserver_type_id][i])" (click)="cancelModification(docserverType.docserver_type_id,i)">{{lang.cancel}}</button>
+                                                    <button mat-raised-button type="button" color="warn" (click)="delete(docserver,i)">{{lang.delete}}</button>
+                                            </div>
+                                        </div>
+                                    </form>
+                                </mat-card>
                             </div>
-
-                        </mat-card>
-                    </div>
-                </div>
-                <h3>Zone Imagette</h3>
-                <hr/>
-                <div class="row">
-                
-                </div>
-                <!--<div class="row">
-                    <div class="col-md-6 col-xs-6">
-                        <mat-form-field>
-                            <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}">
-                        </mat-form-field>
-                    </div>
-                    <div class="col-md-6 col-xs-6">
-                        <mat-paginator #paginator [length]="100" [pageSize]="10">
-                        </mat-paginator>
-                    </div>
-                </div>
-                <mat-table #table [dataSource]="dataSource" matSort matSortActive="docserver_id" matSortDirection="asc">
-                    <ng-container matColumnDef="docserver_id">
-                        <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.id}}</mat-header-cell>
-                        <mat-cell *matCellDef="let element">
-                        {{element.docserver_id}} </mat-cell>
-                    </ng-container>
-                    <ng-container matColumnDef="device_label">
-                        <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="mobileQuery.matches">{{lang.description}}</mat-header-cell>
-                        <mat-cell *matCellDef="let element" [class.hide-for-mobile]="mobileQuery.matches">
-                        {{element.device_label}} </mat-cell>
-                    </ng-container>
-                    <ng-container matColumnDef="docserver_type_id">
-                        <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.value}}</mat-header-cell>
-                        <mat-cell *matCellDef="let element">
-                        {{element.docserver_type_id}} </mat-cell>
-                    </ng-container>
-                    <ng-container matColumnDef="actions">
-                        <mat-header-cell *matHeaderCellDef></mat-header-cell>
-                        <mat-cell *matCellDef="let element" style="justify-content: flex-end;">
-                            <button mat-icon-button color="warn" matTooltip="{{lang.delete}}" (click)="$event.stopPropagation();">
-                                <mat-icon class="fa fa-trash-alt fa-2x" aria-hidden="true"></mat-icon>
-                            </button>
-                        </mat-cell>
-                    </ng-container>
-                    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
-                    <mat-row *matRowDef="let row; columns: displayedColumns;" routerLink="/administration/docservers/{{row.docserver_id}}" style="cursor:pointer;" matTooltip="{{lang.view}}"></mat-row>
-                </mat-table>-->
+                        </div>
+                    </mat-expansion-panel>
+                </mat-accordion>
             </mat-card>
         </mat-sidenav-content>
     </mat-sidenav-container>
diff --git a/apps/maarch_entreprise/css/engine.css b/apps/maarch_entreprise/css/engine.css
index 60df0821cd0..a1aa1287a8a 100755
--- a/apps/maarch_entreprise/css/engine.css
+++ b/apps/maarch_entreprise/css/engine.css
@@ -331,4 +331,14 @@ h1.admin-app-name {
 
 .mat-raised-button {
     margin : 5px !important;
+}
+
+.mat-expansion-panel-header-title, 
+.mat-expansion-panel-header-description {
+  flex-basis: 0;
+}
+
+.mat-expansion-panel-header-description {
+  justify-content: space-between;
+  align-items: center;
 }
\ No newline at end of file
diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
index 108ce9b88c1..aa7dc806fd1 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration-routing.module.ts
@@ -30,6 +30,7 @@ import { ContactsGroupsAdministrationComponent }        from './contacts-groups-
 import { ContactsGroupAdministrationComponent }         from './contacts-group-administration.component';
 import { VersionsUpdateAdministrationComponent }        from './versions-update-administration.component';
 import { DocserversAdministrationComponent }            from './docservers-administration.component';
+import { DocserverAdministrationComponent }            from './docserver-administration.component';
  
 @NgModule({
     imports: [
@@ -73,6 +74,7 @@ import { DocserversAdministrationComponent }            from './docservers-admin
             { path: 'administration/contacts-groups/:id', component: ContactsGroupAdministrationComponent },
             { path: 'administration/versions-update', component: VersionsUpdateAdministrationComponent },
             { path: 'administration/docservers', component: DocserversAdministrationComponent },
+            { path: 'administration/docservers/new', component: DocserverAdministrationComponent },
         ]),
     ],
     exports: [
diff --git a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
index eac9eee682e..1114b0ee92d 100755
--- a/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/administration.module.ts
@@ -39,6 +39,7 @@ import { ContactsGroupsAdministrationComponent }        from './contacts-groups-
 import { ContactsGroupAdministrationComponent }         from './contacts-group-administration.component';
 import { VersionsUpdateAdministrationComponent }        from './versions-update-administration.component';
 import { DocserversAdministrationComponent }            from './docservers-administration.component';
+import { DocserverAdministrationComponent }             from './docserver-administration.component';
 
 @NgModule({
     imports:      [
@@ -86,6 +87,7 @@ import { DocserversAdministrationComponent }            from './docservers-admin
         SortPipe,
         VersionsUpdateAdministrationComponent,
         DocserversAdministrationComponent,
+        DocserverAdministrationComponent,
     ],
     entryComponents: [
         UsersAdministrationRedirectModalComponent,
diff --git a/apps/maarch_entreprise/js/angular/app/administration/docserver-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/docserver-administration.component.ts
new file mode 100644
index 00000000000..f6117abfee0
--- /dev/null
+++ b/apps/maarch_entreprise/js/angular/app/administration/docserver-administration.component.ts
@@ -0,0 +1,68 @@
+import { ChangeDetectorRef, Component, OnInit, ViewChild, Pipe, PipeTransform } from '@angular/core';
+import { MediaMatcher } from '@angular/cdk/layout';
+import { HttpClient } from '@angular/common/http';
+import { Router } from '@angular/router';
+import { LANG } from '../translate.component';
+import { NotificationService } from '../notification.service';
+import { MatPaginator, MatTableDataSource, MatSort } from '@angular/material';
+
+declare function $j(selector: any): any;
+
+declare var angularGlobals: any;
+
+@Component({
+    templateUrl: "../../../../Views/docserver-administration.component.html",
+    providers   : [NotificationService]
+})
+
+export class DocserverAdministrationComponent implements OnInit {
+
+    mobileQuery                     : MediaQueryList;
+    private _mobileQueryListener    : () => void;
+
+    coreUrl     : string;
+    lang        : any = LANG;
+    loading     : boolean = false;
+    dataSource  : any;
+
+    docserver    : any = {coll_id:"letterbox_coll", docserver_type_id:"DOC", limitSizeFormatted :"50"};
+    docserversTypes : any = [];
+
+    @ViewChild(MatPaginator) paginator: MatPaginator;
+    @ViewChild(MatSort) sort: MatSort;
+    
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private router: Router, private notify: NotificationService) {
+        $j("link[href='merged_css.php']").remove();
+        this.mobileQuery = media.matchMedia('(max-width: 768px)');
+        this._mobileQueryListener = () => changeDetectorRef.detectChanges();
+        this.mobileQuery.addListener(this._mobileQueryListener);
+    }
+
+    ngOnDestroy(): void {
+        this.mobileQuery.removeListener(this._mobileQueryListener);
+    }
+
+    ngOnInit(): void {
+        this.coreUrl = angularGlobals.coreUrl;
+
+        this.loading = true;
+
+        this.http.get(this.coreUrl + 'rest/docserverTypes')
+            .subscribe((data: any) => {
+                this.docserversTypes = data.docserverTypes;
+                this.loading = false;
+            });
+    }
+
+
+    onSubmit(docserver:any) {
+        docserver.size_limit_number = docserver.limitSizeFormatted * 1000000000;
+        this.http.post(this.coreUrl + 'rest/docservers', docserver)
+            .subscribe((data: any) => {     
+                this.notify.success(this.lang.docserverAdded);
+                this.router.navigate(["/administration/docservers/"]);
+            }, (err) => {
+                this.notify.error(err.error.errors);
+            });
+    }
+}
diff --git a/apps/maarch_entreprise/js/angular/app/administration/docservers-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/docservers-administration.component.ts
index dab84c6f19d..41b27915ace 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/docservers-administration.component.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/docservers-administration.component.ts
@@ -1,17 +1,19 @@
-import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
+import { ChangeDetectorRef, Component, OnInit, ViewChild, Pipe, PipeTransform } from '@angular/core';
 import { MediaMatcher } from '@angular/cdk/layout';
 import { HttpClient } from '@angular/common/http';
 import { LANG } from '../translate.component';
+import { NotificationService } from '../notification.service';
 import { MatPaginator, MatTableDataSource, MatSort } from '@angular/material';
 
 declare function $j(selector: any): any;
 
 declare var angularGlobals: any;
 
-
 @Component({
-    templateUrl: "../../../../Views/docservers-administration.component.html"
+    templateUrl: "../../../../Views/docservers-administration.component.html",
+    providers   : [NotificationService]
 })
+
 export class DocserversAdministrationComponent implements OnInit {
 
     mobileQuery                     : MediaQueryList;
@@ -22,14 +24,14 @@ export class DocserversAdministrationComponent implements OnInit {
     loading     : boolean = false;
     dataSource  : any;
 
-    docservers    : any = {};
-    docserversFasthd : any = [];
+    docservers    : any = [];
+    docserversClone    : any = [];
+    docserversTypes    : any = {};
 
     @ViewChild(MatPaginator) paginator: MatPaginator;
     @ViewChild(MatSort) sort: MatSort;
-
-
-    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient) {
+    
+    constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher, public http: HttpClient, private notify: NotificationService) {
         $j("link[href='merged_css.php']").remove();
         this.mobileQuery = media.matchMedia('(max-width: 768px)');
         this._mobileQueryListener = () => changeDetectorRef.detectChanges();
@@ -40,12 +42,6 @@ export class DocserversAdministrationComponent implements OnInit {
         this.mobileQuery.removeListener(this._mobileQueryListener);
     }
 
-    applyFilter(filterValue: string) {
-        filterValue = filterValue.trim(); // Remove whitespace
-        filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
-        this.dataSource.filter = filterValue;
-    }
-
     ngOnInit(): void {
         this.coreUrl = angularGlobals.coreUrl;
 
@@ -54,58 +50,65 @@ export class DocserversAdministrationComponent implements OnInit {
         this.http.get(this.coreUrl + 'rest/docservers')
             .subscribe((data: any) => {
                 this.docservers = data.docservers;
-
-                this.docserversFasthd = [
-                    {
-                        actual_size_number: 44444444444,
-                        adr_priority_number: 2,
-                        coll_id: "letterbox_coll",
-                        creation_date: "2011-01-13 14:47:49.197164",
-                        device_label: "Fast internal disc bay for letterbox mode",
-                        docserver_id: "FASTHD_MAN",
-                        docserver_location_id: "NANTERRE",
-                        docserver_type_id: "DOC",
-                        enabled: "Y",
-                        is_readonly: "N",
-                        path_template: "/var/www/html/docservers/maarch_courrier_develop/manual/",
-                        priority_number: 10,
-                        size_limit_number: 50000000000
-                    },
-                    {
-                        actual_size_number: 2455890616,
-                        adr_priority_number: 2,
-                        coll_id: "letterbox_coll",
-                        creation_date: "2011-01-13 14:47:49.197164",
-                        device_label: "Fast internal disc bay for letterbox mode",
-                        docserver_id: "FASTHD_AI",
-                        docserver_location_id: "NANTERRE",
-                        docserver_type_id: "DOC",
-                        enabled: "Y",
-                        is_readonly: "Y",
-                        path_template: "/var/www/html/docservers/maarch_courrier_develop/ai/",
-                        priority_number: 10,
-                        size_limit_number: 50000000000
-                    }
-                ]
-                this.docserversFasthd.forEach((elem: any, index: number) => {
-                    var factor = null;
-
-                    elem.size_limit_number = elem.size_limit_number / 1000000000;
-                    factor = Math.pow(10, 2);
-                    elem.size_limit_number = Math.round(elem.size_limit_number * factor) / factor;
-
-                    elem.actual_size_number = elem.actual_size_number / 1000000000;
-                    factor = Math.pow(10, 2);
-                    elem.actual_size_number = Math.round(elem.actual_size_number * factor) / factor;
-
-                    //percent
-                    elem.percent_number = (elem.actual_size_number*100)/elem.size_limit_number;
-                });
-
-                console.log(this.docserversFasthd);
-                
+                this.docserversClone = JSON.parse(JSON.stringify(this.docservers));
+                this.docserversTypes = data.types;
                 this.loading = false;
+            });
+    }
 
+    toggleDocserver(docserver:any) {
+        //TO DO : implement secondary_docserver instead of priority
+        if (docserver.secondary_docserver == '') {
+            alert('Veuillez choisir un docserver secondaire');
+        } else {
+            docserver.is_readonly = !docserver.is_readonly;
+        }
+    }
+
+    cancelModification(docserverType:any, index:number) {
+        this.docservers[docserverType][index] =JSON.parse(JSON.stringify(this.docserversClone[docserverType][index]));
+    }
+
+    checkModif(docserver:any,docserversClone:any) {
+        docserver.size_limit_number = docserver.limitSizeFormatted * 1000000000;
+        if (JSON.stringify(docserver) === JSON.stringify(docserversClone)) {
+            return true 
+        } else {
+            if (docserver.size_limit_number >= docserver.actual_size_number && docserver.limitSizeFormatted > 0 && /^[\d]*$/.test(docserver.limitSizeFormatted) && /^[\d]*$/.test(docserver.priority_number) && /\/$/.test(docserver.path_template) ) {
+                return false;
+            } else {
+                return true;
+            } 
+        }
+    }
+
+    onSubmit(docserver:any) {
+        docserver.size_limit_number = docserver.limitSizeFormatted * 1000000000;
+        this.http.put(this.coreUrl + 'rest/docservers/'+docserver.id,docserver)
+            .subscribe((data: any) => {     
+                this.docserversClone = JSON.parse(JSON.stringify(this.docservers));
+                this.notify.success(this.lang.docserverUpdated);
+            }, (err) => {
+                this.notify.error(err.error.errors);
+            });
+    }
+
+    delete(docserver:any,i:number) {
+        let r = null;
+        if (docserver.actual_size_number == 0) {
+            r = confirm(this.lang.delete+' ?');
+        } else {
+            r = confirm(this.lang.docserverdeleteWarning);     
+        }
+        
+        if (r) {
+            this.http.delete(this.coreUrl + 'rest/docservers/'+docserver.id)
+            .subscribe((data: any) => {
+                this.docservers[docserver.docserver_type_id].splice(i, 1);
+                this.notify.success(this.lang.docserverDeleted);
+            }, (err) => {
+                this.notify.error(err.error.errors);
             });
+        }
     }
 }
diff --git a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
index 1faecccefe8..6f5f7e7d103 100644
--- a/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
+++ b/apps/maarch_entreprise/js/angular/app/administration/entities-administration.component.ts
@@ -181,8 +181,12 @@ export class EntitiesAdministrationComponent extends AutoCompletePlugin implemen
         this.http.get(this.coreUrl + "rest/entities/" + entity_id + '/details')
             .subscribe((data: any) => {
                 this.currentEntity = data['entity'];
+                console.log('oops');
                 if (this.currentEntity.visaTemplate[0]) {
                     this.idCircuitVisa = this.currentEntity.visaTemplate[0].id;
+                } else {
+                    console.log('oops');
+                    this.idCircuitVisa = null;
                 }
                 this.dataSource = new MatTableDataSource(this.currentEntity.users);
                 this.dataSource.paginator = this.paginator;
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
index d3611160851..06328f09d4a 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts
@@ -29,6 +29,7 @@ export const LANG_EN = {
     "addVisaSignUser"                   : "Add a visa / sign user",
     "administration"                    : "Administration",
     "administrationServices"            : "Administration services",
+    "adrPriority"                       : "Sequence priority",
     "allActions"                        : "All actions",
     "application"                       : "Application",
     "appUpToDate"                       : "Your application is up to date",
@@ -207,6 +208,7 @@ export const LANG_EN = {
     "manageSignatures"                  : "Manage signatures",
     "march"                             : "March",
     "may"                               : "May",
+    "maxSize"                           : "Maximum size",
     "memberAllUsers"                    : "All users member",
     "memberDiffTypeUsers"               : "Diffusion type users member",
     "memberUserDest"                    : "Dest user member",
@@ -278,6 +280,7 @@ export const LANG_EN = {
     "primary"                           : "Primaire",
     "primaryEntity"                     : "Primary entity",
     "priorities"                        : "Priorities",
+    "priority"                          : "Priority",
     "priorityAdded"                     : "Priority added",
     "priorityCreation"                  : "Priority creation",
     "priorityDeleted"                   : "Priority deleted",
@@ -372,6 +375,7 @@ export const LANG_EN = {
     "type"                              : "Type",
     "unlinkAction"                      : "Unlink action",
     "unlinkGroup"                       : "Unlink group",
+    "unlockDocserver"                   : "Unlock this docserver (read and write)",    
     "unselectAll"                       : "Unselect all",
     "until"                             : "Until",
     "update"                            : "Update",
@@ -405,6 +409,12 @@ export const LANG_EN = {
     "yes"                               : "Yes",
     "zipcode"                           : "Zip code",
     "doctypesAdmin"                     : "Document types",
+    "docserverAdded"                    : "Docserver added",
+    "docserverCreation"                 : "Docserver creation",
+    "docserverDeleted"                  : "Doctype deleted",
+    "docserverdeleteWarning"            : "This docserver have files, these files will not available in application, continue ?",
+    "docserverType"                     : "Docserver type",
+    "docserverUpdated"                  : "Doctype updated",
     "firstLevelDoctype"                 : "Folder",
     "secondLevelDoctype"                : "Sub-folder",
     "doctype"                           : "Document types",
@@ -422,6 +432,7 @@ export const LANG_EN = {
     "progression"                       : "Progression",
     "loadedFile"                        : "Loaded file",
     "loading"                           : "Loading",
+    "lockDocserver"                     : "Lock this docserver (read only)",
     "generatedFile"                     : "Generated file",
     "destruction"                       : "Destruction",
     "conservation"                      : "Retention",
@@ -437,6 +448,7 @@ export const LANG_EN = {
     "documentTypeReplacement"           : "Document type replacement",
     "transferToDoctype"                 : "Replace by this document type",
     "complementaryFields"               : "Complementary fields",
+    "collection"                        : "Collection",
     "archival"                          : "Archival",
     "field"                             : "Field",
     "mandatory"                         : "Mandatory",
diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
index 1306bd48e12..7afd2460fbe 100755
--- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
+++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts
@@ -35,6 +35,7 @@ export const LANG_FR = {
     "addVisaSignUser"                   : "Ajouter un viseur / signataire",
     "administration"                    : "Administration",
     "administrationServices"            : "Droits d'administration",
+    "adrPriority"                       : "Priorité de séquence",
     "allActions"                        : "Toutes les actions",
     "alreadyExist"                      : "L'identifiant existe déjà",
     "application"                       : "Application",
@@ -97,6 +98,7 @@ export const LANG_FR = {
     "clickOn"                           : "Cliquez sur",
     "color"                             : "Couleur",
     "complementaryFields"               : "Champs complémentaires",
+    "collection"                        : "Collection",
     "confirmAction"                     : "Voulez-vous vraiment effectuer cette action ?",
     "conservation"                      : "Conservation",
     "content_management"                : "Versionning de document",
@@ -138,6 +140,12 @@ export const LANG_FR = {
     "dlAttachment"                      : "Télécharger la pièce jointe",
     "doctype"                           : "Type de document",
     "doctypesAdmin"                     : "Typologie(s) documentaire(s)",
+    "docserverAdded"                    : "Zone de stockage ajoutée",
+    "docserverCreation"                 : "Création d'une zone de stockage",
+    "docserverDeleted"                  : "Zone de stockage supprimée",
+    "docserverdeleteWarning"            : "Le docserver semble avoir des fichiers stockés, cela entrainera la non dispoibilité ceux-ci dans l'application, continuer ?",
+    "docserverType"                     : "Type de Zone de stockage",
+    "docserverUpdated"                  : "Zone de stockage modifiée",
     "docservers"                        : "Zones de stockage",
     "documents"                         : "document(s)",
     "documentTypeAdded"                 : "Type de document ajouté",
@@ -255,6 +263,7 @@ export const LANG_FR = {
     "listTemplatesRolesUpdated"         : "Rôles modifiés",
     "loadedFile"                        : "Fichier importé",
     "loading"                           : "Chargement",
+    "lockDocserver"                     : "Verrouiller la zone de stockage (lecture seule)",
     "logout"                            : "Se déconnecter",
     "maarchApplication"                 : "Application Maarch",
     "mail"                              : "Courrier",
@@ -264,6 +273,7 @@ export const LANG_FR = {
     "mandatory"                         : "Obligatoire",
     "march"                             : "Mars",
     "may"                               : "Mai",
+    "maxSize"                           : "Taille maximale",
     "memberAllUsers"                    : "Tout les utilisateurs membres",
     "memberDiffTypeUsers"               : "Personnes membres du type de diffusion",
     "memberUserDest"                    : "Utilisateur destinataire membre",
@@ -347,6 +357,7 @@ export const LANG_FR = {
     "priorities"                        : "Priorité(s)",
     "prioritiesHelpDesc"                : "Glisser-déposer les priorités pour modifier l'ordre",
     "prioritiesOrder"                   : "Gérer l'ordre des priorités",
+    "priority"                          : "Priorité",
     "priorityAdded"                     : "Priorité ajoutée",
     "priorityCreation"                  : "Création d'une priorité",
     "priorityDeleted"                   : "Priorité supprimée",
@@ -462,6 +473,7 @@ export const LANG_FR = {
     "unlinkAction"                      : "Dissocier l'action",
     "unlinkGroup"                       : "Dissocier le groupe",
     "unselectAll"                       : "Tout désélectionner",
+    "unlockDocserver"                   : "Déverouiller la zone de stockage (lecture et écriture)",    
     "until"                             : "Jusqu'à",    
     "update"                            : "Modifier",
     "updateAtt"                         : "Modifier la pièce jointe",
diff --git a/apps/maarch_entreprise/xml/services.xml b/apps/maarch_entreprise/xml/services.xml
index 6af1f7bc828..562ef4fec16 100755
--- a/apps/maarch_entreprise/xml/services.xml
+++ b/apps/maarch_entreprise/xml/services.xml
@@ -238,12 +238,14 @@
     <id>admin_docservers</id>
     <name>_DOCSERVERS</name>
     <comment>_ADMIN_DOCSERVERS_DESC</comment>
-    <servicepage>index.php?page=admin_docservers&amp;admin=docservers&amp;mode=list</servicepage>
+    <servicepage>/administration/docservers</servicepage>
+    <!--<servicepage>index.php?page=admin_docservers&amp;admin=docservers&amp;mode=list</servicepage>-->
     <servicetype>admin</servicetype>
     <category>supervision</category>
     <system_service>false</system_service>
     <style>fa fa-hdd</style>
     <enabled>true</enabled>
+    <angular>true</angular>
   </SERVICE>
   <SERVICE>
     <id>view_technical_infos</id>
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index 8afd5294bc4..0a282dfbb43 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -997,49 +997,49 @@ INSERT INTO security (group_id, coll_id, where_clause, maarch_comment, can_inser
 ------------
 TRUNCATE TABLE docserver_types;
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('DOC', 'Documents', 'Y', 'SHA512');
+VALUES ('DOC', 'Documents numériques', 'Y', 'SHA512');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('CONVERT', 'Conversions', 'Y', 'SHA256');
+VALUES ('CONVERT', 'Conversions de formats', 'Y', 'SHA256');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('FULLTEXT', 'FULLTEXT', 'Y', 'SHA256');
+VALUES ('FULLTEXT', 'Plein texte', 'Y', 'SHA256');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('TNL', 'Thumbnails', 'Y', 'NONE');
+VALUES ('TNL', 'Miniatures', 'Y', 'NONE');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('TEMPLATES', 'TEMPLATES', 'Y', 'NONE');
+VALUES ('TEMPLATES', 'Modèles de documents', 'Y', 'NONE');
 INSERT INTO docserver_types (docserver_type_id, docserver_type_label, enabled, fingerprint_mode)
-VALUES ('ARCHIVETRANSFER', 'Archive Transfer', 'Y', 'SHA256');
+VALUES ('ARCHIVETRANSFER', 'Archives numériques', 'Y', 'SHA256');
 
 TRUNCATE TABLE docservers;
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_AI', 'DOC', 'Fast internal disc bay for autoimport', 'N', 'Y', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_coll', 11);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_MAN', 'DOC', 'Fast internal disc bay for letterbox mode', 'N', 'Y', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_coll', 10);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_ATTACH', 'FASTHD', 'Fast internal disc bay for attachments', 'N', 'Y', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_coll', 2);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Fast internal disc bay for attachments version', 'N', 'Y', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_coll', 100);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_MLB', 'CONVERT', 'Server for mlb documents conversion', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 13);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_ATTACH', 'CONVERT', 'Server for attachments documents conversion', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 14);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Server for attachments version documents conversion', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 101);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_MLB', 'TNL', 'Server for thumbnails of documents', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 12);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_ATTACH', 'TNL', 'Server for thumbnails of attachments', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 15);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TNL_ATTACH_VERSION', 'TNL', 'Server for thumbnails of attachments version', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 102);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_MLB', 'FULLTEXT', 'Server for mlb documents fulltext', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 16);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_ATTACH', 'FULLTEXT', 'Server for attachments documents fulltext', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 17);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Server for attachments version documents fulltext', 'N', 'Y', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 103);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('TEMPLATES', 'TEMPLATES', '[system] Templates', 'N', 'Y', 50000000000, 71511, '/opt/maarch/docservers/templates/', '2012-04-01 14:49:05.095119', 'templates', 1);
-INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, enabled, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
-VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Fast internal disc bay for archive transfer', 'N', 'Y', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', '2017-01-13 14:47:49.197164', 'archive_transfer_coll', 10);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FASTHD_AI', 'DOC', 'Dépôt documentaire issue d''imports de masse', 'N', 50000000000, 1, '/opt/maarch/docservers/ai/', '2011-01-07 13:43:48.696644', 'letterbox_coll', 11);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FASTHD_MAN', 'DOC', 'Dépôt documentaire de numérisation manuelle', 'N', 50000000000, 1290730, '/opt/maarch/docservers/manual/', '2011-01-13 14:47:49.197164', 'letterbox_coll', 10);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FASTHD_ATTACH', 'FASTHD', 'Dépôt des pièces jointes', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments/', '2011-01-13 14:47:49.197164', 'attachments_coll', 2);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FASTHD_ATTACH_VERSION', 'FASTHD', 'Dépôt des pièces jointes versionnées', 'N', 50000000000, 1, '/opt/maarch/docservers/manual_attachments_version/', '2011-01-13 14:47:49.197164', 'attachments_version_coll', 100);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('CONVERT_MLB', 'CONVERT', 'Dépôt des formats des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 13);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('CONVERT_ATTACH', 'CONVERT', 'Dépôt des formats des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 14);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('CONVERT_ATTACH_VERSION', 'CONVERT', 'Dépôt des formats des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/convert_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 101);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('TNL_MLB', 'TNL', 'Dépôt des maniatures des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 12);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('TNL_ATTACH', 'TNL', 'Dépôt des maniatures des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 15);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('TNL_ATTACH_VERSION', 'TNL', 'Dépôt des maniatures des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/thumbnails_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 102);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FULLTEXT_MLB', 'FULLTEXT', 'Dépôt de l''extraction plein texte des documents numérisés', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_mlb/', '2015-03-16 14:47:49.197164', 'letterbox_coll', 16);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FULLTEXT_ATTACH', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments/', '2015-03-16 14:47:49.197164', 'attachments_coll', 17);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('FULLTEXT_ATTACH_VERSION', 'FULLTEXT', 'Dépôt de l''extraction plein texte des pièces jointes versionnées', 'N', 50000000000, 0, '/opt/maarch/docservers/fulltext_attachments_version/', '2015-03-16 14:47:49.197164', 'attachments_version_coll', 103);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('TEMPLATES', 'TEMPLATES', 'Dépôt des modèles de documents', 'N', 50000000000, 71511, '/opt/maarch/docservers/templates/', '2012-04-01 14:49:05.095119', 'templates', 1);
+INSERT INTO docservers (docserver_id, docserver_type_id, device_label, is_readonly, size_limit_number, actual_size_number, path_template, creation_date, coll_id, priority_number)
+VALUES ('ARCHIVETRANSFER', 'ARCHIVETRANSFER', 'Dépôt des archives numériques', 'N', 50000000000, 1, '/opt/maarch/docservers/archive_transfer/', '2017-01-13 14:47:49.197164', 'archive_transfer_coll', 10);
 ------------
 --SUPERADMIN USER
 ------------
-- 
GitLab