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.