Przejdź do głównej treści

Zapisanie dokumentu przed wywołaniem custom widgeta

Ready_™ Developer TeamMniej niż 1 minuta

Zapisanie dokumentu przed wywołaniem custom widgeta

Przykładowy kod

ZreDialog.inc

Charakterystycznym elementem jest poniższy fragment:

final class ZreDialogInitializer {
    public static function init($args) {

        // fkelid z listy
        if (!isset($args['keyval']) || !$args['keyval']) {
            throw new WidgetException($args['listName'], Translator::translate('Wybierz pozycje'));
        }

        $dHWND = Application::registerDialog(Application::getShortName('ZreDialogD'), 'ZreDialog', './scripts/ZreDialog.inc');
        $args = JSON::encode($args);
        if (get_magic_quotes_gpc() == 1) {
            $args = addSlashes($args);
        }

        JScript::add('App.openDialogEx(\''.$dHWND.'\', null, ('.$args.').toJSONString())');

    }
}

Co w przypadku jeśli przed uruchomienie naszego dialoga potrzebne jest zapisanie dokumentu.

Parametr js_save przekazywany jest w tablic $args i zawiera on dokładnie ten sam kod, który wykonywany jest na przycisku Zapisz na formatce dokumentu.

W naszym przypadku należy dokonać modyfikacji jak poniżej

if (isset($args['js_save'])) {
    JScript::add($args['js_save']);
    unset($args['js_save']);
}

JScript::add('App.openDialogEx(\''.$dHWND.'\', null, ('.$args.').toJSONString())');

UWAGA

Bardzo ważna jest linijka unset($args['js_save']); należy to bezwzględnie dodać aby

  • Nie przekazywać parametru js_save do swojego dialoga.

Jeśli potrzebujemy ten parametr to należy dodatkowo wykonać

$args['js_save'] = addSlashes($args['js_save']);