/* --------------------------------------------------------------- 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 form_widgets = require("cmis_web.form_widgets"); var lf_form_widgets = require("lefilament_alfodoo.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, }, }).then(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(); } 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, }, }).then(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(); }, }); lf_form_widgets.CmisMetadataDialog.include({ /* * Surcharge la fonction on_click_metadata * pour la gestion des erreurs spécifique à la CG Scop */ on_click_metadata: function () { var self = this; this.metadata = {"cmis:name": Date.now().toString() + "_" + this.file.name}; _.each(this.parent_metadata, function (meta) { if (meta.value) { self.metadata[meta.name] = meta.value; } else if (meta.field_value) { self.metadata[meta.name] = self.record[meta.field_value]; } else { self.metadata[meta.name] = self.$el.find( "#" + meta.name.replace(":", "-") )[0].value; } }); this.cmis_session .createDocument( this.parent_cmisobject.objectId, this.file, this.metadata, this.file.mimeType ) .ok(function (new_cmisobject) { self.getParent().trigger("cmis_node_created", [new_cmisobject]); self.$el.parents(".modal").modal("hide"); }) .notOk(function (error) { console.log(error); if (error) { console.error(error.text); if (error.type === "application/json") { var jerror = JSON.parse(error.text); if (jerror.exception === "objectNotFound") { self.getParent().refresh_datatable(); self.$el.parents(".modal").modal("hide"); return; } } } }); }, }); });