Skip to content
Snippets Groups Projects
form_widgets.js 3.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*---------------------------------------------------------------
    
    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();
    
    Benjamin - Le Filament's avatar
    Benjamin - Le Filament committed
            },