The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Prty::JQuery::Form::ViewEdit - Formular zum Ansehen und Bearbeiten von persistenten Daten

BASE CLASS

Prty::Hash

DESCRIPTION

Die Klasse implementiert ein jQuery UI Plugin zum Ansehen und Bearbeiten von persistenten Daten, die typischerweise aus einer Datenbank stammen.

Das Layout muss die Platzhalter __SAVE__, __DELETE__ und __EDIT__ enthalten. Für diese werden intern drei Widgets generiert: für __SAVE__ und __DELETE__ ein Button zum Speichern bzw. Löschen, für __EDIT__ eine Checkbox zum Umschalten zwischen Ansehen und Bearbeiten.

Bei Betätigung einer der beiden Button werden die Formulardaten an den action-URL gepostet. Im Erfolgsfall wird anschließend die onSuccess-Methode aufgerufen.

CSS-Klassen

  • editCheckbox

  • saveButton

  • deleteButton

  • enabled

  • disabled

Beschriftungen

  • Speichern

  • Löschen

  • Bearbeiten

ATTRIBUTES

action => $url (Default: undef)

URL, an den die Daten bei bei Betätigung des Save- oder des Delete-Buttons geschickt werden.

id (Default: undef)

Die DOM-Id des Formulars.

instantiate => $bool (Default: 0)

Füge die Plugin-Instantiierung beim Aufruf von html() zum HTML-Code hinzu.

layout => $html (Default: '')

Der HTML-Code des Layouts. In das Layout wird der HTML-Code der Widgets eingesetzt.

onSucces => $javaScript (Default: undef)

JavaScript-Methode, die nach einem erfolgreichen Ajax-Aufruf ausgeführt wird. Parameter: onSuccess(data,textStatus,jqXHR,op), wobei op 'save' oder 'delete' ist.

state => 'update' | 'insert' (Default: 'update')

Anfänglicher Zusatand des Formulars:

'update'

Der Save- und der Delete-Button werden im Edit-Modus freigeschaltet.

'insert'

Nur der Save-Button wird im Edit-Modus freigeschaltet.

text => \@keyVal (Default: s. Text)

Die Beschriftungen der intern generierten Widgets:

    saveButton=>'Speichern',
    deleteButton=>'Löschen',
    editCheckBox=>'Bearbeiten',
widgets => \@widgets (Default: [])

Liste der Widgets, die in das Layout eingesetzt werden.

EXAMPLE

    $html = Prty::JQuery::Form::ViewEdit->html($h,
        instantiate=>1,
        id=>'basisdatenForm',
        state=>'insert',
        action=>$c->url_for('/mandant/speichern'),
        onSuccess=>q|
            function () {
                var d = new Date;
                var date = d.getFullYear()+'-'
                    +('0'+(d.getMonth()+1)).slice(-2)+'-'
                    +('0'+d.getDate()).slice(-2)+' '
                    +('0'+d.getHours()).slice(-2)+':'
                    +('0'+d.getMinutes()).slice(-2)+':'
                    +('0'+d.getSeconds()).slice(-2);
                $('input[name=zeit]').val(date);
            }
        |,
        text=>{
            saveButton=>'Speichern',
            deleteButton=>'Löschen',
            editCheckbox=>'Bearbeiten',
        },
        layout=>$h->cat(
            Prty::Html::Table::Simple->html($h,
                class=>'form',
                rows=>[
                    ['form-section',[colspan=>2,'Basisdaten']],
                    ['form-widget',['Mandanten-Id:'],['__MANID__']],
                    ['form-widget',['Mandanten-Kürzel:'],['__KUERZEL__']],
                    ['form-widget',['Mandanten-Parent:'],['__PARENT__']],
                    ['form-widget',['Mandant/Firma:'],['__NAMEINTERN__']],
                    ['form-widget',['Zusatz:'],['__ZUSATZ__']],
                    ['form-widget',['Portal:'],['__PORTALNAME__']],
                    ['form-widget',['Faktura-Mandant:'],
                        ['__FAKTURAMANDANT__']],
                    ['form-widget',['Deaktiviert:'],['__INAKTIV__']],
                    ['form-widget',['Austausch-Kennwort:'],
                        ['__AUSTAUSCHKENNWORT__']],
                ],
            ),
            Prty::Html::Table::Simple->html($h,
                class=>'form',
                rows=>[
                    [['__SAVE__ __DELETE__ __EDIT__']],
                ],
            ),
        ),
        widgets=>[
            Prty::Html::Widget::Hidden->new(
                name=>'formular',
                value=>'basisdaten',
            ),
            Prty::Html::Widget::Hidden->new(
                name=>'zeit',
                value=>$zeit,
            ),
            Prty::Html::Widget::ReadOnly->new(
                name=>'manId',
                value=>$man->id,
            ),
            Prty::Html::Widget::TextField->new(
                name=>'kuerzel',
                size=>10,
                value=>$man->kuerzel,
            ),
            Prty::Html::Widget::SelectMenu->new(
                name=>'parent',
                options=>[$tab->values('id')],
                texts=>[$tab->values('kuerzelPfad')],
                value=>$man->parent,
            ),
            Prty::Html::Widget::TextField->new(
                name=>'nameintern',
                size=>45,
                maxLength=>100,
                value=>$man->nameintern,
            ),
            Prty::Html::Widget::TextField->new(
                name=>'zusatz',
                size=>45,
                maxLength=>4000,
                value=>$man->zusatz,
            ),
            Prty::Html::Widget::TextField->new(
                name=>'portalname',
                size=>45,
                maxLength=>50,
                value=>$man->portalname,
            ),
            Prty::Html::Widget::CheckBox->new(
                name=>'fakturamandant',
                option=>1,
                value=>$man->fakturamandant,
            ),
            Prty::Html::Widget::CheckBox->new(
                name=>'inaktiv',
                option=>1,
                value=>$man->inaktiv,
            ),
            Prty::Html::Widget::TextField->new(
                name=>'austauschkennwort',
                size=>15,
                maxLength=>30,
                value=>$man->austauschkennwort,
            ),
        ],
    );

METHODS

Konstruktor

new() - Instantiiere Objekt

Synopsis

    $e = $class->new(@keyVal);

Description

Instantiiere ein Formular-Objekt und liefere eine Referenz auf dieses Objekt zurück.

Klassenmethoden

pluginCode() - JavaScript-Code des Plugin

Synopsis

    $javascript = $e->pluginCode;

Description

Liefere den JavaScript-Code des jQuery UI Plugin. Dieser Code kann auf einer HTML-Seite inline verwendet oder - besser - vom Webserver ausgeliefert werden.

Objektmethoden

html() - Generiere HTML für die Widget-Instanz

Synopsis

    $html = $e->html($h);
    $html = $class->html($h,@keyVal);

Description

Generiere den HTML-Code des Formular-Objekts und liefere diesen zurück. Als Klassenmethode gerufen, wird das Objekt intern erzeugt und mit den Attributen @keyVal instantiiert.

instantiate() - JavaScript-Code, der das Widget instantiiert

Synopsis

    $javaScript = $e->instantiate;

VERSION

1.087

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2016 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.