fixed settings validation

This commit is contained in:
msquare 2016-11-14 19:10:29 +01:00
parent d3e942f742
commit 16ed2ae683
3 changed files with 57 additions and 27 deletions

View File

@ -175,6 +175,22 @@ function User_validate_mail($mail) {
return new ValidationResult(check_email($mail), $mail); return new ValidationResult(check_email($mail), $mail);
} }
/**
* Validate user jabber address
*
* @param string $jabber
* Jabber-ID to validate
* @return ValidationResult
*/
function User_validate_jabber($jabber) {
$jabber = strip_item($jabber);
if ($jabber == '') {
// Empty is ok
return new ValidationResult(true, '');
}
return new ValidationResult(check_email($jabber), $jabber);
}
/** /**
* Validate the planned arrival date * Validate the planned arrival date
* *

View File

@ -29,7 +29,7 @@ function user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes) {
$user_source['email_by_human_allowed'] = isset($_REQUEST['email_by_human_allowed']); $user_source['email_by_human_allowed'] = isset($_REQUEST['email_by_human_allowed']);
if (isset($_REQUEST['jabber'])) { if (isset($_REQUEST['jabber'])) {
$result = User_validate_mail($_REQUEST['jabber']); $result = User_validate_jabber($_REQUEST['jabber']);
$user_source['jabber'] = $result->getValue(); $user_source['jabber'] = $result->getValue();
if (! $result->isValid()) { if (! $result->isValid()) {
$valid = false; $valid = false;
@ -77,6 +77,8 @@ function user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes) {
success(_("Settings saved.")); success(_("Settings saved."));
redirect(page_link_to('user_settings')); redirect(page_link_to('user_settings'));
} }
return $user_source;
} }
/** /**
@ -123,6 +125,8 @@ function user_settings_theme($user_source, $themes) {
success(_("Theme changed.")); success(_("Theme changed."));
redirect(page_link_to('user_settings')); redirect(page_link_to('user_settings'));
} }
return $user_source;
} }
/** /**
@ -149,6 +153,8 @@ function user_settings_locale($user_source, $locales) {
success("Language changed."); success("Language changed.");
redirect(page_link_to('user_settings')); redirect(page_link_to('user_settings'));
} }
return $user_source;
} }
/** /**
@ -173,13 +179,13 @@ function user_settings() {
$user_source = $user; $user_source = $user;
if (isset($_REQUEST['submit'])) { if (isset($_REQUEST['submit'])) {
user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes); $user_source = user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes);
} elseif (isset($_REQUEST['submit_password'])) { } elseif (isset($_REQUEST['submit_password'])) {
user_settings_password($user_source); user_settings_password($user_source);
} elseif (isset($_REQUEST['submit_theme'])) { } elseif (isset($_REQUEST['submit_theme'])) {
user_settings_theme($user_source, $themes); $user_source = user_settings_theme($user_source, $themes);
} elseif (isset($_REQUEST['submit_language'])) { } elseif (isset($_REQUEST['submit_language'])) {
user_settings_locale($user_source, $locales); $user_source = user_settings_locale($user_source, $locales);
} }
return User_settings_view($user_source, $locales, $themes, $buildup_start_date, $teardown_end_date, $enable_tshirt_size, $tshirt_sizes); return User_settings_view($user_source, $locales, $themes, $buildup_start_date, $teardown_end_date, $enable_tshirt_size, $tshirt_sizes);

View File

@ -12,29 +12,9 @@ function page_link_to_absolute($page) {
} }
/** /**
* Renders the header toolbar containing search, login/logout, user and settings links. * Render the user hints
*/ */
function header_toolbar() { function header_render_hints($user, $page, $enable_tshirt_size) {
global $page, $privileges, $user, $enable_tshirt_size, $max_freeloadable_shifts;
$toolbar_items = [];
if (isset($user)) {
$toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user));
}
if (! isset($user) && in_array('register', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register');
}
if (in_array('login', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login');
}
if (isset($user) && in_array('user_messages', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages());
}
$hints = []; $hints = [];
if (isset($user)) { if (isset($user)) {
$hint_class = 'info'; $hint_class = 'info';
@ -87,8 +67,36 @@ function header_toolbar() {
} }
} }
if (count($hints) > 0) { if (count($hints) > 0) {
$toolbar_items[] = toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class); return toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class);
} }
return '';
}
/**
* Renders the header toolbar containing search, login/logout, user and settings links.
*/
function header_toolbar() {
global $page, $privileges, $user, $enable_tshirt_size, $max_freeloadable_shifts;
$toolbar_items = [];
if (isset($user)) {
$toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user));
}
if (! isset($user) && in_array('register', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register');
}
if (in_array('login', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login');
}
if (isset($user) && in_array('user_messages', $privileges)) {
$toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages());
}
$toolbar_items[] = header_render_hints($user, $page, $enable_tshirt_size);
$user_submenu = make_langselect(); $user_submenu = make_langselect();
$user_submenu[] = toolbar_item_divider(); $user_submenu[] = toolbar_item_divider();