Newer
Older
/*---------------------------------------------------------------
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 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
}}).done(function (result) {
self.cmis_session.setCredentials('ROLE_TICKET', result);
});
self.cmis_session_initialized.resolve();
self.cmis_session.setCharacterSet(document.characterSet);
});
},
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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();
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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;
}
}
}
});
},
});