|
|
|
@ -33,9 +33,9 @@ class SelecteurGenerique {
|
|
|
|
|
* @param {Node} input
|
|
|
|
|
* @return {Object}
|
|
|
|
|
*/
|
|
|
|
|
static formulaire_editer_liens_data(input) {
|
|
|
|
|
static formulaire_editer_liens_params(input) {
|
|
|
|
|
const form = input.closest('.formulaire_editer_liens');
|
|
|
|
|
const data = {
|
|
|
|
|
const params = {
|
|
|
|
|
'objet': null,
|
|
|
|
|
'id_objet': null,
|
|
|
|
|
'objet_source': null,
|
|
|
|
@ -43,10 +43,10 @@ class SelecteurGenerique {
|
|
|
|
|
if (form) {
|
|
|
|
|
// SPIP 5
|
|
|
|
|
if (form.dataset.objet || '') {
|
|
|
|
|
data.objet = form.dataset.objet;
|
|
|
|
|
data.id_objet = form.dataset.idObjet;
|
|
|
|
|
data.objet_source = form.dataset.objetSource;
|
|
|
|
|
return data;
|
|
|
|
|
params.objet = form.dataset.objet;
|
|
|
|
|
params.id_objet = form.dataset.idObjet;
|
|
|
|
|
params.objet_source = form.dataset.objetSource;
|
|
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
// before SPIP 5…
|
|
|
|
|
form.classList.forEach(cls => {
|
|
|
|
@ -55,16 +55,16 @@ class SelecteurGenerique {
|
|
|
|
|
const expr = cls.split('-');
|
|
|
|
|
if (expr.length === 5) {
|
|
|
|
|
const source = expr[1];
|
|
|
|
|
data.objet = expr[2];
|
|
|
|
|
data.id_objet = expr[3];
|
|
|
|
|
params.objet = expr[2];
|
|
|
|
|
params.id_objet = expr[3];
|
|
|
|
|
// perfectible
|
|
|
|
|
data.objet_source = (source[source.length - 1] === 's') ? source.substring(0, source.length - 1) : source;
|
|
|
|
|
return data;
|
|
|
|
|
params.objet_source = (source[source.length - 1] === 's') ? source.substring(0, source.length - 1) : source;
|
|
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -74,14 +74,14 @@ class SelecteurGenerique {
|
|
|
|
|
*/
|
|
|
|
|
static formulaire_spip_hidden_ids(input) {
|
|
|
|
|
const hiddens = input.closest('form').querySelector('.form-hidden');
|
|
|
|
|
const data = {};
|
|
|
|
|
const params = {};
|
|
|
|
|
if (hiddens.querySelector('input[name=objet]')) {
|
|
|
|
|
data['objet'] = hiddens.querySelector('input[name=objet]').value;
|
|
|
|
|
params['objet'] = hiddens.querySelector('input[name=objet]').value;
|
|
|
|
|
}
|
|
|
|
|
hiddens.querySelectorAll('input[name^=id_]').forEach(input => {
|
|
|
|
|
data[input.name] = input.value;
|
|
|
|
|
params[input.name] = input.value;
|
|
|
|
|
});
|
|
|
|
|
return data;
|
|
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -91,11 +91,11 @@ class SelecteurGenerique {
|
|
|
|
|
* @param {object} params
|
|
|
|
|
*/
|
|
|
|
|
static formulaire_editer_liens_autocomplete(input, api, params = {}) {
|
|
|
|
|
const data = SelecteurGenerique.formulaire_editer_liens_data(input);
|
|
|
|
|
const args = SelecteurGenerique.formulaire_editer_liens_params(input);
|
|
|
|
|
input.spip_select2_on_input({
|
|
|
|
|
ajax: {
|
|
|
|
|
url: api,
|
|
|
|
|
data: (p) => { return {...data, ...params, q: p.term}; },
|
|
|
|
|
data: (p) => { return {...args, ...params, q: p.term}; },
|
|
|
|
|
processResults: data => SelecteurGenerique.processData(data),
|
|
|
|
|
},
|
|
|
|
|
events: {
|
|
|
|
@ -122,4 +122,41 @@ class SelecteurGenerique {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Applique un autocomplete sur un input
|
|
|
|
|
*
|
|
|
|
|
* @param {Node} input
|
|
|
|
|
* @param {string} api URL d’API d’autocomplete
|
|
|
|
|
* @param {object} params
|
|
|
|
|
*/
|
|
|
|
|
static on_input = function(input, api, params = {}) {
|
|
|
|
|
const callback = input.dataset.selectCallback;
|
|
|
|
|
const separator = input.dataset.selectSep || ',';
|
|
|
|
|
const multiple = input.hasAttribute('multiple');
|
|
|
|
|
|
|
|
|
|
let args = input.dataset.selectParams || {};
|
|
|
|
|
if (typeof args === 'string') {
|
|
|
|
|
try {
|
|
|
|
|
args = JSON.parse(args);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console && console.error('Erreur dans l’analyse des paramètres supplémentaires', e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (typeof args !== 'object') {
|
|
|
|
|
args = {};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (multiple) {
|
|
|
|
|
input.dataset.separator = separator;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
input.spip_select2_on_input({
|
|
|
|
|
ajax: {
|
|
|
|
|
url: api,
|
|
|
|
|
data: (p) => { return {...params, ...args, q: p.term}; },
|
|
|
|
|
processResults: data => SelecteurGenerique.processData(data),
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|