/*--------------------------------------------------------------- Copyright 2020 Le Filament License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). ------------------------------------------------------------------*/ odoo.define('cgscop_alfresco.form_widgets', function(require) { "use strict"; var core = require('web.core'); var form_widgets = require('cmis_web.form_widgets'); var session = require('web.session'); form_widgets.CmisObjectWrapper.include({ /* * Surcharge les fonction parse_object (téléchargement) * et get_content_url (preview) pour passer le ticket * l'url appelée */ parse_object: function (cmis_object) { this._super.apply(this, arguments); if (this.cmis_session.alf_ticket) { this.url = this.cmis_session.getContentStreamURL(this.objectId, 'attachment', {'alf_ticket': this.cmis_session.alf_ticket}); } }, get_content_url: function () { var options = {} if (this.cmis_session.alf_ticket) { options = {'alf_ticket': this.cmis_session.alf_ticket}; } return this.cmis_session.getContentStreamURL(this.objectId, 'inline', options); }, }), form_widgets.FieldCmisFolder.include({ /** * Surcharge la fonction d'initialisation de la session CMIS pour * passer le token de l'utilisateur */ init_cmis_session: function () { var self = this; $.when(this.cmis_config_loaded).done(function () { self.cmis_session = cmis.createSession(self.cmis_location); self.cmis_session.setGlobalHandlers(self.on_cmis_error, self.on_cmis_error); // CGSCOP : appel vers la fonction custom self._rpc({route:'/web/alfresco/session', params:{ 'username': session.username }}).done(function (result) { self.cmis_session['alf_ticket'] = result; self.cmis_session.setCredentials('ROLE_TICKET', result); }); self.cmis_session_initialized.resolve(); self.cmis_session.setCharacterSet(document.characterSet); }); }, load_cmis_repositories: function () { /** * Surcharge la fonction de chargement des repositories après initialisation * du dossier initial pour recharger correctement la page */ var dfd = $.Deferred(); var self = this; if (this.cmis_session.repositories) { return dfd.resolve(); } else { if (self.cmis_session.alf_ticket) { self.cmis_session .loadRepositories() .ok(function (data) { dfd.resolve(); }) .notOk(function (error) { self.on_cmis_error(error); dfd.reject(error); }); } else { // CGSCOP : appel vers la fonction custom self._rpc({route:'/web/alfresco/session', params:{ 'username': session.username }}).done(function (result) { self.cmis_session['alf_ticket'] = result; self.cmis_session.setCredentials('ROLE_TICKET', result); self.cmis_session .loadRepositories() .ok(function (data) { dfd.resolve(); }) .notOk(function (error) { self.on_cmis_error(error); dfd.reject(error); }); }); } } return dfd.promise(); }, }); });