Combo und dialog.input Beispiel

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=1
no_pages=1
no_users=1
no_rights=1
no_text=1
custom.1.click="contact_add()"
custom.1.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
            });
        }
    });
}