Das Combo Input Plugin ist alleine schon sehr mächtig. In Kombination mit dialog.input können sogar individuelle Daten Felder erzeugt werden, ähnlich wie beim Multiple Input Plugin, allerdings mit den optischen Vorteilen des Combo Input Plugins (und der Möglichkeit Elemente per Drag & Drop zu verschieben).
Zunächst definieren wir ein Combo Input Plugin:
{input
type="combo"
name="contact"
title="Kontakte"
limit=3
full=true
no_pages=true
no_users=true
no_rights=true
no_text=true
custom.0.click="contact_add()"
custom.0.name="Kontakt hinzufügen"
editFunc="contact_edit"
}
Und definieren nun die Javascript Funktionen (contact_add, contact_edit):
// Wird verwendet, um für die Dialoge in contact_add und contact_edit einfach die anzuzeigenenden Input Plugins zu definieren
function contact_input(data) {
data = data || {};
return [{
type : 'text',
title : main_window.dialog.translate('Anrede'),
name : 'intro',
width : 225,
labelWidth : 150,
value : data.intro || ''
}, {
type : 'select',
title : main_window.dialog.translate('Person'),
name : 'person',
width : 225,
labelWidth : 150,
options : ['Person A', 'Person B', 'Person C', 'Person D', 'Person E'],
value : data.key || '',
mandatory : true
}];
}
// Kontakt hinzufügen
function contact_add() {
main_window.dialog.input({
title : main_window.dialog.translate('Kontakt hinzufügen'),
input : contact_input(),
onConfirm : function(result, inputs) {
combo_add({
key : result.person,
name : (result.intro ? result.intro + ' ' : '')
+ inputs.person.get('displayedValue'),
intro : result.intro
});
}
});
}
// Kontakt bearbeiten
function contact_edit(data, combo) {
main_window.dialog.input({
title : main_window.dialog.translate('Kontakt hinzufügen'),
input : contact_input(data),
onConfirm : function(result, inputs) {
combo_edit(data.key, {
key : result.person,
name : (result.intro ? result.intro + ' ' : '')
+ inputs.person.get('displayedValue'),
intro : result.intro
});
}
});
}