From 8dec2253cfa211db5881e1480404a89be33b18cc Mon Sep 17 00:00:00 2001 From: moodler Date: Fri, 16 Mar 2007 01:46:17 +0000 Subject: [PATCH] Merged autofocus fixes for formslib to dev from stable --- lib/formslib.php | 12 ++++++++---- mod/forum/post.php | 7 +++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/formslib.php b/lib/formslib.php index 53d8d3f110..03d3260ad8 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -129,11 +129,13 @@ class moodleform { /** * To autofocus on first form element or first element with error. * + * @param string $name if this is set then the focus is forced to a field with this name + * * @return string javascript to select form element with first error or * first element if no errors. Use this as a parameter * when calling print_header */ - function focus(){ + function focus($name=NULL){ $form =& $this->_form; $elkeys=array_keys($form->_elementIndex); if (isset($form->_errors) && 0 != count($form->_errors)){ @@ -142,10 +144,12 @@ class moodleform { } $names=null; while (!$names){ - $el = array_shift($elkeys); - $names = $form->_getElNamesRecursive($el); + $el = array_shift($elkeys); + $names = $form->_getElNamesRecursive($el); + } + if (empty($name)) { + $name=array_shift($names); } - $name=array_shift($names); $focus='forms[\''.$this->_form->getAttribute('id').'\'].elements[\''.$name.'\']'; return $focus; } diff --git a/mod/forum/post.php b/mod/forum/post.php index 845057dd7c..a17f6f17b8 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -654,16 +654,19 @@ // Show the discussion name in the breadcrumbs. $strdiscussionname = format_string($discussion->name).':'; } + + $forcefocus = empty($reply) ? NULL : 'message'; + if ($course->id != SITEID) { print_header("$course->shortname: $strdiscussionname ". format_string($toppost->subject), $course->fullname, "id\">$course->shortname -> - $navmiddle $navtail", $mform_post->focus(), "", true, "", navmenu($course, $cm)); + $navmiddle $navtail", $mform_post->focus($forcefocus), "", true, "", navmenu($course, $cm)); } else { print_header("$course->shortname: $strdiscussionname ". format_string($toppost->subject), $course->fullname, - "$navmiddle $navtail", $mform_post->focus(), "", true, "", navmenu($course, $cm)); + "$navmiddle $navtail", $mform_post->focus($forcefocus), "", true, "", navmenu($course, $cm)); } -- 2.39.5