diff --git a/edit.php b/edit.php index 0cb38f81..4292e44e 100644 --- a/edit.php +++ b/edit.php @@ -14,6 +14,11 @@ * * File: edit.php * This file implements the handling of edit forms. + * + * GET parameters: + * table what to edit (*Handler) + * edit item to edit + * active only change active state to given value (which must be 0 or 1) and return to listview */ require_once('common.php'); @@ -34,6 +39,8 @@ $edit = safepost('edit', safeget('edit')); $new = 0; if ($edit == "") $new = 1; +$active = safeget('active'); + $handler = new $handlerclass($new, $username); $formconf = $handler->webformConfig(); @@ -43,8 +50,11 @@ authentication_require_role($formconf['required_role']); $form_fields = $handler->getStruct(); $id_field = $handler->getId_field(); +if ($active != '0' && $active != '1') { + $active = ''; # ignore invalid values +} -if ($edit != "" || $formconf['early_init']) { +if ($edit != '' || $active != '' || $formconf['early_init']) { if (!$handler->init($edit)) { flash_error(join("
", $handler->errormsg)); header ("Location: " . $formconf['listview']); @@ -54,7 +64,7 @@ if ($edit != "" || $formconf['early_init']) { if ($edit != "") { $mode = 'edit'; - if ($_SERVER['REQUEST_METHOD'] == "GET") { # read values from database + if ($_SERVER['REQUEST_METHOD'] == "GET" && $active == '') { # read values from database (except if $active is set to save some CPU cycles) if (!$handler->view()) { flash_error(join("
", $handler->errormsg)); header ("Location: " . $formconf['listview']); @@ -80,7 +90,13 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { } } } +} + +if ($active != '') { + $values['active'] = $active; +} +if ($_SERVER['REQUEST_METHOD'] == "POST" || $active != '') { if ($edit != "") $values[$id_field] = $edit; if (!$handler->init($values[$id_field])) {