Notifications: Retains postback values if input was invalid.

This commit is contained in:
Nate Jones 2014-07-07 15:37:34 +00:00
parent e2872a2e06
commit d29b5efb52
2 changed files with 62 additions and 44 deletions

View File

@ -114,6 +114,7 @@ else {
($project_notification_method == 'email' && $project_notification_recipient == '') || ($project_notification_method == 'email' && $project_notification_recipient == '') ||
($project_notification_method == 'text' && $project_notification_recipient == '') ($project_notification_method == 'text' && $project_notification_recipient == '')
)) { )) {
$_SESSION["form"] = $_POST;
$_SESSION["message"] = $text['message-invalid_recipient']; $_SESSION["message"] = $text['message-invalid_recipient'];
header("Location: notification_edit.php"); header("Location: notification_edit.php");
return; return;
@ -217,21 +218,24 @@ else {
} }
// check local project notification participation flag // check post back session
if (!isset($_SESSION["form"])) {
// check local project notification participation flag
$sql = "select project_notifications from v_notifications"; $sql = "select project_notifications from v_notifications";
$prep_statement = $db->prepare($sql); $prep_statement = $db->prepare($sql);
if ($prep_statement) { if ($prep_statement) {
$prep_statement->execute(); $prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) { foreach ($result as &$row) {
$project_notifications = $row["project_notifications"]; $setting["project_notifications"] = $row["project_notifications"];
break; // limit to 1 row break; // limit to 1 row
} }
} }
unset($sql, $prep_statement); unset($sql, $prep_statement);
// if participation enabled // if participation enabled
if ($project_notifications == 'true') { if ($setting["project_notifications"] == 'true') {
// get current project notification preferences // get current project notification preferences
$url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid; $url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid;
@ -248,9 +252,16 @@ else {
// parse response // parse response
$setting = json_decode($response, true); $setting = json_decode($response, true);
$setting["project_notifications"] = 'true';
} }
}
else {
$setting = fix_postback($_SESSION["form"]);
unset($_SESSION["form"]);
}
require_once "resources/header.php"; require_once "resources/header.php";
$page["title"] = $text['title-notifications']; $page["title"] = $text['title-notifications'];
@ -286,10 +297,9 @@ $page["title"] = $text['title-notifications'];
echo " </td>\n"; echo " </td>\n";
echo " <td class='vtable' align='left'>\n"; echo " <td class='vtable' align='left'>\n";
echo " <select name='project_notifications' class='formfld' style='width: auto;'>\n"; echo " <select name='project_notifications' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($project_notifications == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n"; echo " <option value='false' ".(($setting["project_notifications"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($project_notifications == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n"; echo " <option value='true' ".(($setting["project_notifications"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_notifications']."\n"; echo $text['description-project_notifications']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -302,8 +312,7 @@ $page["title"] = $text['title-notifications'];
echo " <select name='project_security' class='formfld' style='width: auto;'>\n"; echo " <select name='project_security' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_security"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n"; echo " <option value='false' ".(($setting["project_security"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_security"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n"; echo " <option value='true' ".(($setting["project_security"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_security']."\n"; echo $text['description-project_security']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -316,8 +325,7 @@ $page["title"] = $text['title-notifications'];
echo " <select name='project_releases' class='formfld' style='width: auto;'>\n"; echo " <select name='project_releases' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_releases"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n"; echo " <option value='false' ".(($setting["project_releases"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_releases"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n"; echo " <option value='true' ".(($setting["project_releases"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_releases']."\n"; echo $text['description-project_releases']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -330,8 +338,7 @@ $page["title"] = $text['title-notifications'];
echo " <select name='project_events' class='formfld' style='width: auto;'>\n"; echo " <select name='project_events' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_events"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n"; echo " <option value='false' ".(($setting["project_events"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_events"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n"; echo " <option value='true' ".(($setting["project_events"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_events']."\n"; echo $text['description-project_events']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -344,8 +351,7 @@ $page["title"] = $text['title-notifications'];
echo " <select name='project_news' class='formfld' style='width: auto;'>\n"; echo " <select name='project_news' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_news"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n"; echo " <option value='false' ".(($setting["project_news"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_news"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n"; echo " <option value='true' ".(($setting["project_news"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_news']."\n"; echo $text['description-project_news']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -360,8 +366,7 @@ $page["title"] = $text['title-notifications'];
//echo " <option value='ticker' ".(($setting["project_notification_method"] == 'ticker') ? "selected='selected'" : null).">".$text['option-ticker']."</option>\n"; //echo " <option value='ticker' ".(($setting["project_notification_method"] == 'ticker') ? "selected='selected'" : null).">".$text['option-ticker']."</option>\n";
echo " <option value='email' ".(($setting["project_notification_method"] == 'email') ? "selected='selected'" : null).">".$text['option-email']."</option>\n"; echo " <option value='email' ".(($setting["project_notification_method"] == 'email') ? "selected='selected'" : null).">".$text['option-email']."</option>\n";
//echo " <option value='text' ".(($setting["project_notification_method"] == 'text') ? "selected='selected'" : null).">".$text['option-text']."</option>\n"; //echo " <option value='text' ".(($setting["project_notification_method"] == 'text') ? "selected='selected'" : null).">".$text['option-text']."</option>\n";
echo " </select>\n"; echo " </select><br />\n";
echo " <br />\n";
echo $text['description-project_notification_method']."\n"; echo $text['description-project_notification_method']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";
@ -372,8 +377,7 @@ $page["title"] = $text['title-notifications'];
echo $text['label-project_notification_recipient']."\n"; echo $text['label-project_notification_recipient']."\n";
echo " </td>\n"; echo " </td>\n";
echo " <td class='vtable' align='left'>\n"; echo " <td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='project_notification_recipient' maxlength='50' value='".$setting["project_notification_recipient"]."'>\n"; echo " <input class='formfld' type='text' name='project_notification_recipient' maxlength='50' value='".$setting["project_notification_recipient"]."'><br />\n";
echo " <br />\n";
echo $text['description-project_notification_recipient']."\n"; echo $text['description-project_notification_recipient']."\n";
echo " </td>\n"; echo " </td>\n";
echo " </tr>\n"; echo " </tr>\n";

View File

@ -66,6 +66,20 @@
} }
} }
if (!function_exists('fix_postback')) {
function fix_postback($post_array) {
foreach ($post_array as $index => $value) {
if (is_array($value)) { fix_postback($value); }
else {
$value = str_replace('"', "&#34;", $value);
$value = str_replace("'", "&#39;", $value);
$post_array[$index] = $value;
}
}
return $post_array;
}
}
if (!function_exists('uuid')) { if (!function_exists('uuid')) {
function uuid() { function uuid() {
//uuid version 4 //uuid version 4