diff --git a/message/edit.php b/message/edit.php index 4d1b54ff178..54381dcd4d9 100644 --- a/message/edit.php +++ b/message/edit.php @@ -135,7 +135,8 @@ if (($form = data_submitted()) && confirm_sesskey()) { } user_update_user($user, false, false); - redirect("$CFG->wwwroot/message/edit.php?id=$user->id"); + $redirect = new moodle_url("/user/preferences.php", array('userid' => $userid)); + redirect($redirect); } /// Load preferences @@ -180,7 +181,8 @@ $renderer = $PAGE->get_renderer('core', 'message'); // Fetch default (site) preferences $defaultpreferences = get_message_output_default_preferences(); -$messagingoptions = $renderer->manage_messagingoptions($processors, $providers, $preferences, $defaultpreferences, $user->emailstop); +$messagingoptions = $renderer->manage_messagingoptions($processors, $providers, $preferences, $defaultpreferences, + $user->emailstop, $user->id); echo $OUTPUT->header(); echo $messagingoptions; diff --git a/message/renderer.php b/message/renderer.php index e3f919f0339..558287c28de 100644 --- a/message/renderer.php +++ b/message/renderer.php @@ -223,9 +223,15 @@ class core_message_renderer extends plugin_renderer_base { * @param array $preferences Array of objects containing current preferences * @param array $defaultpreferences Array of objects containing site default preferences * @param bool $notificationsdisabled Indicate if the user's "emailstop" flag is set (shouldn't receive any non-forced notifications) + * @param null|int $userid User id, or null if current user. * @return string The text to render */ - public function manage_messagingoptions($processors, $providers, $preferences, $defaultpreferences, $notificationsdisabled = false) { + public function manage_messagingoptions($processors, $providers, $preferences, $defaultpreferences, + $notificationsdisabled = false, $userid = null) { + global $USER; + if (empty($userid)) { + $userid = $USER->id; + } // Filter out enabled, available system_configured and user_configured processors only. $readyprocessors = array_filter($processors, create_function('$a', 'return $a->enabled && $a->configured && $a->object->is_user_configured();')); @@ -379,10 +385,13 @@ class core_message_renderer extends plugin_renderer_base { $disableallcheckbox .= $this->output->help_icon('disableall', 'message'); $output .= html_writer::nonempty_tag('div', $disableallcheckbox, array('class'=>'disableall')); + $redirect = new moodle_url("/user/preferences.php", array('userid' => $userid)); $output .= html_writer::end_tag('fieldset'); $output .= html_writer::start_tag('div', array('class' => 'mdl-align')); $output .= html_writer::empty_tag('input', array('type' => 'submit', 'value' => get_string('savechanges'), 'class' => 'form-submit')); + $output .= html_writer::link($redirect, html_writer::empty_tag('input', array('type' => 'button', + 'value' => get_string('cancel'), 'class' => 'btn-cancel'))); $output .= html_writer::end_tag('div'); $output .= html_writer::end_tag('form'); diff --git a/message/upgrade.txt b/message/upgrade.txt index 5a96c1e6275..91906a46407 100644 --- a/message/upgrade.txt +++ b/message/upgrade.txt @@ -1,6 +1,9 @@ This files describes API changes in /message/ messaging system, information provided here is intended especially for developers. +=== 2.9 === +* Renderer method \core_message_renderer::manage_messagingoptions now accepts a user id parameter as well. + === 2.6 === * Message processor extending message_output, should return true in can_send_to_any_users() if it supports message sending to internal (noreply/support) users. diff --git a/user/editor.php b/user/editor.php index 7a3267d7cc3..3abcc04b2d0 100644 --- a/user/editor.php +++ b/user/editor.php @@ -41,7 +41,10 @@ $editorform = new user_edit_editor_form(null, array('userid' => $user->id)); $user->preference_htmleditor = get_user_preferences( 'htmleditor', '', $user->id); $editorform->set_data($user); -if ($data = $editorform->get_data()) { +$redirect = new moodle_url("/user/preferences.php", array('userid' => $user->id)); +if ($editorform->is_cancelled()) { + redirect($redirect); +} else if ($data = $editorform->get_data()) { $user->preference_htmleditor = $data->preference_htmleditor; @@ -49,7 +52,7 @@ if ($data = $editorform->get_data()) { // Trigger event. \core\event\user_updated::create_from_userid($user->id)->trigger(); - redirect("$CFG->wwwroot/user/preferences.php?userid=$user->id"); + redirect($redirect); } // Display page header. diff --git a/user/editor_form.php b/user/editor_form.php index e11468ba544..b0c24cfe5e7 100644 --- a/user/editor_form.php +++ b/user/editor_form.php @@ -63,7 +63,7 @@ class user_edit_editor_form extends moodleform { $mform->setType('preference_htmleditor', PARAM_PLUGIN); } - $this->add_action_buttons(false, get_string('savechanges')); + $this->add_action_buttons(true, get_string('savechanges')); } } diff --git a/user/forum.php b/user/forum.php index 88b8628866e..0de9bd130a0 100644 --- a/user/forum.php +++ b/user/forum.php @@ -40,7 +40,10 @@ $forumform = new user_edit_forum_form(null, array('userid' => $user->id)); $forumform->set_data($user); -if ($data = $forumform->get_data()) { +$redirect = new moodle_url("/user/preferences.php", array('userid' => $user->id)); +if ($forumform->is_cancelled()) { + redirect($redirect); +} else if ($data = $forumform->get_data()) { $user->maildigest = $data->maildigest; $user->autosubscribe = $data->autosubscribe; @@ -50,7 +53,7 @@ if ($data = $forumform->get_data()) { // Trigger event. \core\event\user_updated::create_from_userid($user->id)->trigger(); - redirect("$CFG->wwwroot/user/preferences.php?userid=$user->id"); + redirect($redirect); } // Display page header. diff --git a/user/forum_form.php b/user/forum_form.php index 3a4b04df1b1..4809a6127d2 100644 --- a/user/forum_form.php +++ b/user/forum_form.php @@ -75,7 +75,7 @@ class user_edit_forum_form extends moodleform { $mform->addElement('hidden', 'course', $COURSE->id); $mform->setType('course', PARAM_INT); - $this->add_action_buttons(false, get_string('savechanges')); + $this->add_action_buttons(true, get_string('savechanges')); } } diff --git a/user/language.php b/user/language.php index b49f69b52cb..6c4a597b960 100644 --- a/user/language.php +++ b/user/language.php @@ -39,7 +39,10 @@ list($user, $course) = useredit_setup_preference_page($userid, $courseid); $languageform = new user_edit_language_form(null, array('userid' => $user->id)); $languageform->set_data($user); -if ($data = $languageform->get_data()) { +$redirect = new moodle_url("/user/preferences.php", array('userid' => $user->id)); +if ($languageform->is_cancelled()) { + redirect($redirect); +} else if ($data = $languageform->get_data()) { $lang = $data->lang; // If the specified language does not exist, use the site default. if (!get_string_manager()->translation_exists($lang, false)) { @@ -53,7 +56,7 @@ if ($data = $languageform->get_data()) { // Trigger event. \core\event\user_updated::create_from_userid($user->id)->trigger(); - redirect("$CFG->wwwroot/user/preferences.php?userid=$user->id"); + redirect($redirect); } // Display page header. diff --git a/user/language_form.php b/user/language_form.php index 36f0ef5ae73..3c9a548c523 100644 --- a/user/language_form.php +++ b/user/language_form.php @@ -60,7 +60,7 @@ class user_edit_language_form extends moodleform { $mform->addElement('select', 'lang', get_string('preferredlanguage'), get_string_manager()->get_list_of_translations()); $mform->setDefault('lang', $CFG->lang); - $this->add_action_buttons(false, get_string('savechanges')); + $this->add_action_buttons(true, get_string('savechanges')); } /**