Zapisanie dokumentu przed wywołaniem custom widgeta
Mniej 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']);