diff --git a/static/src/js/form_widgets.js b/static/src/js/form_widgets.js index 54ed6d9f6855277452a2a3460a9a009596b7632c..180a62547a4ddaecacf4497fcab5e822cfe6454b 100644 --- a/static/src/js/form_widgets.js +++ b/static/src/js/form_widgets.js @@ -1,6 +1,6 @@ /*--------------------------------------------------------------- - Copyright 2020 Le Filament - License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +Copyright 2020 Le Filament +License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). ------------------------------------------------------------------*/ odoo.define('cgscop_alfresco.form_widgets', function(require) { @@ -11,9 +11,10 @@ odoo.define('cgscop_alfresco.form_widgets', function(require) { 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 + /* + * 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); @@ -32,10 +33,10 @@ odoo.define('cgscop_alfresco.form_widgets', function(require) { form_widgets.FieldCmisFolder.include({ /** - * Surcharge la fonction d'initialisation de la session CMIS pour - * passer le token de l'utilisateur - */ - init_cmis_session: function () { + * 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); @@ -52,6 +53,47 @@ odoo.define('cgscop_alfresco.form_widgets', function(require) { 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(); + }); + + });