diff --git a/apps/maarch_entreprise/Views/save-numeric-package.component.html b/apps/maarch_entreprise/Views/save-numeric-package.component.html new file mode 100644 index 0000000000000000000000000000000000000000..749eaa4e463f20d9660a562143ccc6e734e7c99c --- /dev/null +++ b/apps/maarch_entreprise/Views/save-numeric-package.component.html @@ -0,0 +1,28 @@ +<div id="resultInfo" class="fade" style="display:none;"> + {{resultInfo}} +</div> +<div *ngIf="loading"> + <i class="fa fa-spinner fa-spin fa-5x" style="margin-left: 50%;margin-top: 16%;font-size: 8em"></i> +</div> +<div *ngIf="!loading" class="container-fluid"> + <h1 style="margin-top: 0"><i class="fa fa-file-archive-o fa-2x"></i> Enregistrer un pli numérique</h1> + <nav class="navbar navbar-default"> + <div class="container-fluid"> + <div class="navbar-header"> + <a class="navbar-brand" href="index.php" style="cursor: pointer"> + <i class="fa fa-arrow-circle-left" title="Retour"></i> + </a> + </div> + </div> + </nav> + <div class="row row-eq-height"> + <div class="col-md-4 col-md-offset-4" style="background-color: #CEE9F1;padding:10px;"> + <h2>Enregistrer un pli numérique</h2> + <form class="form-horizontal" (ngSubmit)="submitNumericPackage()" #saveNumericPackageForm="ngForm"> + <input id="numericPackageFilePath" type="file" name="files[]"(change)="uploadNumericPackage($event)"> + <br> + <input type="submit" class="btn btn-success" [disabled]="!saveNumericPackageForm.form.valid" value="Enregistrer"> + </form> + </div> + </div> +</div> diff --git a/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.js b/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.js new file mode 100644 index 0000000000000000000000000000000000000000..2dd960620a4a73dcffbfeb75203a548585cdfc8c --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.js @@ -0,0 +1,143 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var core_1 = require("@angular/core"); +var http_1 = require("@angular/http"); +require("rxjs/add/operator/map"); +var SaveNumericPackageComponent = (function () { + function SaveNumericPackageComponent(http, zone) { + var _this = this; + this.http = http; + this.zone = zone; + this.numericPackage = { + base64: "", + name: "", + type: "", + size: 0, + label: "", + extension: "", + }; + this.resultInfo = ""; + this.loading = false; + window['angularSaveNumericPackageComponent'] = { + componentAfterUpload: function (base64Content) { return _this.processAfterUpload(base64Content); }, + }; + } + SaveNumericPackageComponent.prototype.preparePage = function () { + $j('#inner_content').remove(); + $j('#menunav').hide(); + $j('#divList').remove(); + $j('#magicContactsTable').remove(); + $j('#manageBasketsOrderTable').remove(); + $j('#controlParamTechnicTable').remove(); + $j('#container').width("99%"); + if ($j('#content h1')[0] && $j('#content h1')[0] != $j('my-app h1')[0]) { + $j('#content h1')[0].remove(); + } + if (Prototype.BrowserFeatures.ElementExtensions) { + //FIX PROTOTYPE CONFLICT + var pluginsToDisable = ['collapse', 'dropdown', 'modal', 'tooltip', 'popover', 'tab']; + disablePrototypeJS('show', pluginsToDisable); + disablePrototypeJS('hide', pluginsToDisable); + } + }; + SaveNumericPackageComponent.prototype.updateBreadcrumb = function (applicationName) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > Enregistrer un pli numérique"; + } + }; + SaveNumericPackageComponent.prototype.ngOnInit = function () { + this.preparePage(); + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + this.loading = false; + }; + SaveNumericPackageComponent.prototype.processAfterUpload = function (b64Content) { + var _this = this; + this.zone.run(function () { return _this.resfreshUpload(b64Content); }); + }; + SaveNumericPackageComponent.prototype.resfreshUpload = function (b64Content) { + this.numericPackage.base64 = b64Content.replace(/^data:.*?;base64,/, ""); + }; + SaveNumericPackageComponent.prototype.uploadNumericPackage = function (fileInput) { + if (fileInput.target.files && fileInput.target.files[0]) { + var reader = new FileReader(); + this.numericPackage.name = fileInput.target.files[0].name; + this.numericPackage.size = fileInput.target.files[0].size; + this.numericPackage.type = fileInput.target.files[0].type; + this.numericPackage.extension = fileInput.target.files[0].name.split('.').pop(); + if (this.numericPackage.label == "") { + this.numericPackage.label = this.numericPackage.name; + } + reader.readAsDataURL(fileInput.target.files[0]); + reader.onload = function (value) { + window['angularSaveNumericPackageComponent'].componentAfterUpload(value.target.result); + }; + } + }; + SaveNumericPackageComponent.prototype.submitNumericPackage = function () { + var _this = this; + if (this.numericPackage.size != 0) { + this.http.post(this.coreUrl + 'rest/saveNumericPackage', this.numericPackage) + .map(function (res) { return res.json(); }) + .subscribe(function (data) { + if (data.errors) { + _this.resultInfo = data.errors; + $j('#resultInfo').removeClass().addClass('alert alert-danger alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function () { + $j("#resultInfo").slideUp(500); + }); + } + else { + _this.numericPackage = { + base64: "", + name: "", + type: "", + size: 0, + label: "", + extension: "", + }; + $j("#numericPackageFilePath").val(null); + _this.resultInfo = 'Pli numérique correctement importé'; + $j('#resultInfo').removeClass().addClass('alert alert-success alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function () { + $j("#resultInfo").slideUp(500); + }); + if (data.basketRedirection != null) { + window.location.href = data.basketRedirection; + // action_send_first_request('index.php?display=true&page=manage_action&module=core', 'page', 22, '', 'res_letterbox', 'basket', 'letterbox_coll'); + } + } + }); + } + else { + this.numericPackage.name = ""; + this.numericPackage.size = 0; + this.numericPackage.type = ""; + this.numericPackage.base64 = ""; + this.numericPackage.extension = ""; + this.resultInfo = "Aucun pli numérique séléctionné"; + $j('#resultInfo').removeClass().addClass('alert alert-danger alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function () { + $j("#resultInfo").slideUp(500); + }); + } + }; + return SaveNumericPackageComponent; +}()); +SaveNumericPackageComponent = __decorate([ + core_1.Component({ + templateUrl: angularGlobals["save-numeric-packageView"], + styleUrls: ['../../node_modules/bootstrap/dist/css/bootstrap.min.css', 'css/profile.component.css'] + }), + __metadata("design:paramtypes", [http_1.Http, core_1.NgZone]) +], SaveNumericPackageComponent); +exports.SaveNumericPackageComponent = SaveNumericPackageComponent; diff --git a/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.ts b/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..70198afe552ed109fb2291535ee57f12bfc307c3 --- /dev/null +++ b/apps/maarch_entreprise/js/angular/app/save-numeric-package.component.ts @@ -0,0 +1,155 @@ +import { Component, OnInit, NgZone } from '@angular/core'; +import { Http } from '@angular/http'; +import 'rxjs/add/operator/map'; + +declare function $j(selector: any) : any; +declare function disablePrototypeJS(method: string, plugins: any) : any; +declare function createModal(a: string, b: string, c: string, d: string) : any; +declare function autocomplete(a: number, b: string) : any; + +declare var tinymce : any; +declare var Prototype : any; +declare var angularGlobals : any; + + +@Component({ + templateUrl : angularGlobals["save-numeric-packageView"], + styleUrls : ['../../node_modules/bootstrap/dist/css/bootstrap.min.css', 'css/profile.component.css'] +}) +export class SaveNumericPackageComponent implements OnInit { + + coreUrl : string; + + numericPackage : any = { + base64 : "", + name : "", + type : "", + size : 0, + label : "", + extension : "", + }; + + resultInfo : string = ""; + loading : boolean = false; + + + constructor(public http: Http, private zone: NgZone) { + window['angularSaveNumericPackageComponent'] = { + componentAfterUpload: (base64Content: any) => this.processAfterUpload(base64Content), + }; + } + + preparePage() { + $j('#inner_content').remove(); + $j('#menunav').hide(); + $j('#divList').remove(); + $j('#magicContactsTable').remove(); + $j('#manageBasketsOrderTable').remove(); + $j('#controlParamTechnicTable').remove(); + $j('#container').width("99%"); + if ($j('#content h1')[0] && $j('#content h1')[0] != $j('my-app h1')[0]) { + $j('#content h1')[0].remove(); + } + + if (Prototype.BrowserFeatures.ElementExtensions) { + //FIX PROTOTYPE CONFLICT + let pluginsToDisable = ['collapse', 'dropdown', 'modal', 'tooltip', 'popover','tab']; + disablePrototypeJS('show', pluginsToDisable); + disablePrototypeJS('hide', pluginsToDisable); + } + + } + + updateBreadcrumb(applicationName: string) { + if ($j('#ariane')[0]) { + $j('#ariane')[0].innerHTML = "<a href='index.php?reinit=true'>" + applicationName + "</a> > Enregistrer un pli numérique"; + } + } + + ngOnInit(): void { + this.preparePage(); + this.updateBreadcrumb(angularGlobals.applicationName); + this.coreUrl = angularGlobals.coreUrl; + + this.loading = false; + + } + + processAfterUpload(b64Content: any) { + this.zone.run(() => this.resfreshUpload(b64Content)); + } + + resfreshUpload(b64Content: any) { + this.numericPackage.base64 = b64Content.replace(/^data:.*?;base64,/, ""); + } + + uploadNumericPackage(fileInput: any) { + if (fileInput.target.files && fileInput.target.files[0]) { + var reader = new FileReader(); + + this.numericPackage.name = fileInput.target.files[0].name; + this.numericPackage.size = fileInput.target.files[0].size; + this.numericPackage.type = fileInput.target.files[0].type; + this.numericPackage.extension = fileInput.target.files[0].name.split('.').pop(); + if (this.numericPackage.label == "") { + this.numericPackage.label = this.numericPackage.name; + } + + reader.readAsDataURL(fileInput.target.files[0]); + + reader.onload = function (value: any) { + window['angularSaveNumericPackageComponent'].componentAfterUpload(value.target.result); + }; + + } + } + + submitNumericPackage() { + if(this.numericPackage.size != 0) { + this.http.post(this.coreUrl + 'rest/saveNumericPackage', this.numericPackage) + .map(res => res.json()) + .subscribe((data) => { + if (data.errors) { + this.resultInfo = data.errors; + $j('#resultInfo').removeClass().addClass('alert alert-danger alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function(){ + $j("#resultInfo").slideUp(500); + }); + } else { + this.numericPackage = { + base64 : "", + name : "", + type : "", + size : 0, + label : "", + extension : "", + }; + $j("#numericPackageFilePath").val(null); + this.resultInfo = 'Pli numérique correctement importé'; + $j('#resultInfo').removeClass().addClass('alert alert-success alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function(){ + $j("#resultInfo").slideUp(500); + }); + + if(data.basketRedirection != null){ + window.location.href = data.basketRedirection; + // action_send_first_request('index.php?display=true&page=manage_action&module=core', 'page', 22, '', 'res_letterbox', 'basket', 'letterbox_coll'); + } + } + }); + } else { + this.numericPackage.name = ""; + this.numericPackage.size = 0; + this.numericPackage.type = ""; + this.numericPackage.base64 = ""; + this.numericPackage.extension = ""; + + this.resultInfo = "Aucun pli numérique séléctionné"; + $j('#resultInfo').removeClass().addClass('alert alert-danger alert-dismissible'); + $j("#resultInfo").fadeTo(3000, 500).slideUp(500, function(){ + $j("#resultInfo").slideUp(500); + }); + } + } + +}