diff --git a/lang/en/deprecated.txt b/lang/en/deprecated.txt index d3b31d187aa..5a3e19451a1 100644 --- a/lang/en/deprecated.txt +++ b/lang/en/deprecated.txt @@ -120,3 +120,18 @@ selectnotestate,core_notes extendenrol,core groupextendenrol,core virusfounduser,core_antivirus +formattexttype,core +currentlyselectedusers,core +emailuserhasnone,core +emaildisplayhidden,core +sitemessage,core +coursemessage,core +addedrecip,core +addedrecips,core +messagingdisabled,core_message +messagedselectedcountusersfailed,core +backtoparticipants,core +keepsearching,core +allfieldsrequired,core +previewhtml,core +messagedselecteduserfailed,core diff --git a/lang/en/message.php b/lang/en/message.php index 917d352ef9d..5428f689275 100644 --- a/lang/en/message.php +++ b/lang/en/message.php @@ -72,7 +72,6 @@ $string['message'] = 'Message'; $string['messagepreferences'] = 'Message preferences'; $string['messages'] = 'Messages'; $string['messagingdatahasnotbeenmigrated'] = 'Your messages are temporarily unavailable due to upgrades in the messaging infrastructure. Please wait for them to be migrated.'; -$string['messagingdisabled'] = 'Messaging is disabled on this site, emails will be sent instead'; $string['newonlymsg'] = 'Show only new'; $string['newmessage'] = 'New message'; $string['newmessagesearch'] = 'Select or search for a contact to send a new message.'; @@ -179,3 +178,6 @@ $string['viewnotificationresource'] = 'Go to: {$a}'; $string['viewunreadmessageswith'] = 'View unread messages with {$a}'; $string['writeamessage'] = 'Write a message...'; $string['you'] = 'You:'; + +// Deprecated since Moodle 3.6. +$string['messagingdisabled'] = 'Messaging is disabled on this site, emails will be sent instead'; diff --git a/lang/en/moodle.php b/lang/en/moodle.php index 84b7020e4fd..df329321d0f 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -51,8 +51,6 @@ $string['addcountertousername'] = 'Create user by adding number to username'; $string['addcreator'] = 'Add course creator'; $string['adddots'] = 'Add...'; $string['added'] = 'Added {$a}'; -$string['addedrecip'] = 'Added {$a} new recipient'; -$string['addedrecips'] = 'Added {$a} new recipients'; $string['addedtogroup'] = 'Added to group "{$a}"'; $string['addedtogroupnot'] = 'Not added to group "{$a}"'; $string['addedtogroupnotenrolled'] = 'Not added to group "{$a}", because not enrolled in course'; @@ -127,7 +125,6 @@ $string['allactions'] = 'All actions'; $string['allactivities'] = 'All activities'; $string['allcategories'] = 'All categories'; $string['alldays'] = 'All days'; -$string['allfieldsrequired'] = 'All fields are required'; $string['allfiles'] = 'All files'; $string['allgroups'] = 'All groups'; $string['allchanges'] = 'All changes'; @@ -173,7 +170,6 @@ $string['backto'] = 'Back to {$a}'; $string['backtocourselisting'] = 'Back to course listing'; $string['backtohome'] = 'Back to the site home'; $string['backtopageyouwereon'] = 'Back to the page you were on'; -$string['backtoparticipants'] = 'Back to participants list'; $string['backup'] = 'Backup'; $string['backupactivehelp'] = 'Choose whether or not to do automated backups.'; $string['backupcancelled'] = 'Backup cancelled'; @@ -347,7 +343,6 @@ $string['courseoverviewfilesext'] = 'Course summary files extensions'; $string['courseoverviewfileslimit'] = 'Course summary files limit'; $string['courseoverviewfiles_help'] = 'Course summary files, such as images, are displayed in the list of courses together with the summary.'; $string['courseinfo'] = 'Course info'; -$string['coursemessage'] = 'Message course users'; $string['coursenotaccessible'] = 'This course does not allow public access'; $string['courselegacyfiles'] = 'Legacy course files'; $string['courselegacyfiles_help'] = 'The course files area provides some backward compatibility with Moodle 1.9 and earlier. All files in this area are always accessible to all participants in the course (whether you link to them or not) and there is no way to know where any of these files are being used in Moodle. @@ -437,7 +432,6 @@ $string['currentcourseadding'] = 'Current course, adding data to it'; $string['currentcoursedeleting'] = 'Current course, deleting it first'; $string['currentlanguage'] = 'Current language'; $string['currentlocaltime'] = 'your current local time'; -$string['currentlyselectedusers'] = 'Currently selected users'; $string['currentpicture'] = 'Current picture'; $string['currentrelease'] = 'Current release information'; $string['currentversion'] = 'Current version'; @@ -632,7 +626,6 @@ $string['emaildisableclick'] = 'Click here to disable all email from being sent $string['emaildisplay'] = 'Email display'; $string['emaildisplay_help'] = 'Privileged users (such as teachers and managers) will always be able to see your email address.'; $string['emaildisplaycourse'] = 'Allow only other course members to see my email address'; -$string['emaildisplayhidden'] = 'Email hidden'; $string['emaildisplayno'] = 'Hide my email address from non-privileged users'; $string['emaildisplayyes'] = 'Allow everyone to see my email address'; $string['emailenable'] = 'This email address is enabled'; @@ -726,7 +719,6 @@ $string['emailresetconfirmsent'] = 'An email has been sent to your address at print_textarea() instead.', DEBUG_DEVELOPER); - global $CFG; + global $OUTPUT; $mincols = 65; $minrows = 10; - $str = ''; if ($id === '') { $id = 'edit-'.$name; @@ -809,19 +811,12 @@ function print_textarea($unused, $rows, $cols, $width, $height, $name, $value='' $cols = $mincols; } - editors_head_setup(); - $editor = editors_get_preferred_editor(FORMAT_HTML); - $editor->set_text($value); - $editor->use_editor($id, array('legacy'=>true)); - - $str .= "\n".''."\n"; - + $textarea = $OUTPUT->print_textarea($name, $id, $value, $rows, $cols); if ($return) { - return $str; + return $textarea; } - echo $str; + + echo $textarea; } /** diff --git a/lib/form/htmleditor.php b/lib/form/htmleditor.php index 0216709fa23..1d6d4b1f66b 100644 --- a/lib/form/htmleditor.php +++ b/lib/form/htmleditor.php @@ -91,21 +91,17 @@ class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{ * * @return string */ - function toHtml(){ + public function toHtml() { + global $OUTPUT; + if ($this->_flagFrozen) { return $this->getFrozenHtml(); } else { + $value = preg_replace("/(\r\n|\n|\r)/", ' ', $this->getValue()); + return $this->_getTabs() . - print_textarea(true, - $this->_options['rows'], - $this->_options['cols'], - $this->_options['width'], - $this->_options['height'], - $this->getName(), - preg_replace("/(\r\n|\n|\r)/", ' ',$this->getValue()), - 0, // unused anymore - true, - $this->getAttribute('id')); + $OUTPUT->print_textarea($this->getName(), $this->getAttribute('id'), $value, $this->_options['rows'], + $this->_options['cols']); } } diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 17363792726..600e4b3017c 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -1518,6 +1518,35 @@ class core_renderer extends renderer_base { return $this->render($menu); } + /** + * Returns the HTML for a basic textarea field. + * + * @param string $name Name to use for the textarea element + * @param string $id The id to use fort he textarea element + * @param string $value Initial content to display in the textarea + * @param int $rows Number of rows to display + * @param int $cols Number of columns to display + * @return string the HTML to display + */ + public function print_textarea($name, $id, $value, $rows, $cols) { + global $OUTPUT; + + editors_head_setup(); + $editor = editors_get_preferred_editor(FORMAT_HTML); + $editor->set_text($value); + $editor->use_editor($id, []); + + $context = [ + 'id' => $id, + 'name' => $name, + 'value' => $value, + 'rows' => $rows, + 'cols' => $cols + ]; + + return $OUTPUT->render_from_template('core_form/editor_textarea', $context); + } + /** * Renders an action menu component. * diff --git a/lib/upgrade.txt b/lib/upgrade.txt index 7130f018077..3bff5eda5ac 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -7,6 +7,7 @@ information provided here is intended especially for developers. callback. If a string is returned, it is displayed instead of the list of suggested items. This can be used, for example, to inform the user that there are too many items matching the current search criteria. * The form element 'htmleditor' has been deprecated. Please use the 'editor' element instead. +* The print_textarea() function has been deprecated. Please use $OUTPUT->print_textarea() instead. * The following functions have been finally deprecated and can not be used any more: - external_function_info() - core_renderer::update_module_button() diff --git a/mod/feedback/show_nonrespondents.php b/mod/feedback/show_nonrespondents.php index d6297362dd3..8be8e65cc21 100644 --- a/mod/feedback/show_nonrespondents.php +++ b/mod/feedback/show_nonrespondents.php @@ -31,7 +31,7 @@ require_once($CFG->libdir.'/tablelib.php'); //////////////////////////////////////////////////////// $id = required_param('id', PARAM_INT); $subject = optional_param('subject', '', PARAM_CLEANHTML); -$message = optional_param('message', '', PARAM_CLEANHTML); +$message = optional_param_array('message', '', PARAM_CLEANHTML); $format = optional_param('format', FORMAT_MOODLE, PARAM_INT); $messageuser = optional_param_array('messageuser', false, PARAM_INT); $action = optional_param('action', '', PARAM_ALPHA); @@ -44,6 +44,10 @@ $current_tab = 'nonrespondents'; //get the objects //////////////////////////////////////////////////////// +if ($message) { + $message = $message['text']; +} + list ($course, $cm) = get_course_and_cm_from_cmid($id, 'feedback'); if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) { print_error('invalidcoursemodule'); @@ -275,7 +279,7 @@ if (empty($students)) { echo ''; echo ''; echo ''; - print_textarea(true, 15, 25, 30, 10, "message", $message); + echo $OUTPUT->print_textarea('message', 'edit-message', $message, 15, 25); print_string('formathtml'); echo ''; echo '
'; diff --git a/mod/wiki/editors/html.php b/mod/wiki/editors/html.php deleted file mode 100644 index 96b4e80e66a..00000000000 --- a/mod/wiki/editors/html.php +++ /dev/null @@ -1,34 +0,0 @@ -heading(strtoupper(get_string('formathtml', 'wiki')), 3); - - $action = $CFG->wwwroot.'/mod/wiki/edit.php?pageid='.$pageid; - - if (!empty($section)) { - $action .= "§ion=".urlencode($section); - } - - echo $OUTPUT->container_start('container'); - echo '
'; - $textarea = print_textarea(true, 20, 100, 0, 0, "newcontent", $content, 0, true, '', 'form-textarea-advanced'); - echo $OUTPUT->container($textarea, 'wiki_editor'); - wiki_print_edit_form_default_fields('html', $pageid, $version, $upload, $deleteuploads); - echo '
'; - echo $OUTPUT->container_end(); -} diff --git a/mod/wiki/editors/wiki_editor.php b/mod/wiki/editors/wiki_editor.php index 07166e4cf91..d68d9acc89f 100644 --- a/mod/wiki/editors/wiki_editor.php +++ b/mod/wiki/editors/wiki_editor.php @@ -75,7 +75,8 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect echo $OUTPUT->container_start(); echo '
'; - echo $OUTPUT->container(print_textarea(false, 20, 60, 0, 0, "newcontent", $content, 0, true), false, 'wiki_editor'); + $textarea = $OUTPUT->print_textarea('newcontent', 'edit-newcontent', $content, 20, 60); + echo $OUTPUT->container($textarea, false, 'wiki_editor'); echo $OUTPUT->container_start(); wiki_print_edit_form_default_fields($editor, $pageid, $version, $upload, $deleteuploads); echo $OUTPUT->container_end(); diff --git a/mod/wiki/instancecomments.php b/mod/wiki/instancecomments.php index 85366c9691b..b2466b6b57a 100644 --- a/mod/wiki/instancecomments.php +++ b/mod/wiki/instancecomments.php @@ -41,9 +41,13 @@ $pageid = required_param('pageid', PARAM_TEXT); $action = optional_param('action', '', PARAM_ALPHANUMEXT); $id = optional_param('id', 0, PARAM_INT); $commentid = optional_param('commentid', 0, PARAM_INT); -$newcontent = optional_param('newcontent', '', PARAM_CLEANHTML); +$newcontent = optional_param_array('newcontent', '', PARAM_CLEANHTML); $confirm = optional_param('confirm', 0, PARAM_BOOL); +if ($newcontent) { + $newcontent = $newcontent['text']; +} + if (!$page = wiki_get_page($pageid)) { print_error('incorrectpageid', 'wiki'); } diff --git a/user/message.html b/user/message.html deleted file mode 100644 index 3ad7466d468..00000000000 --- a/user/message.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - -box_start(); ?> - - - - - - - - - - - - -
- : - - -
- '; - ?> -
- - -
-box_end(); ?> - -emailto[$id])) { - foreach ($SESSION->emailto[$id] as $user) { - echo ''; - // Check to see if we should be showing the email address. - if ($user->maildisplay == 0) { // 0 = don't display my email to anyone. - echo ''; - } - } - else { - echo ''; - } -?> -
'.fullname($user,true).'' . get_string('emaildisplayhidden') . ''; - } else { - echo ''.$user->email.''; - } - if (empty($user->email)) { - $error = get_string('emailuserhasnone'); - } - if (!empty($error)) { - echo $OUTPUT->pix_icon('t/emailno', $error); - unset($error); - } - echo '
'.get_string('nousersyet').'
-
diff --git a/user/messageselect.php b/user/messageselect.php deleted file mode 100644 index 9d7412d428c..00000000000 --- a/user/messageselect.php +++ /dev/null @@ -1,205 +0,0 @@ -. - -/** - * This file is part of the User section Moodle - * - * @copyright 1999 Martin Dougiamas http://dougiamas.com - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - * @package core_user - */ - -require_once('../config.php'); -require_once($CFG->dirroot.'/message/lib.php'); -require_once($CFG->dirroot . '/course/lib.php'); - -$id = required_param('id', PARAM_INT); -$messagebody = optional_param('messagebody', '', PARAM_CLEANHTML); -$send = optional_param('send', '', PARAM_BOOL); -$preview = optional_param('preview', '', PARAM_BOOL); -$edit = optional_param('edit', '', PARAM_BOOL); -$returnto = optional_param('returnto', '', PARAM_LOCALURL); -$format = optional_param('format', FORMAT_MOODLE, PARAM_INT); -$deluser = optional_param('deluser', 0, PARAM_INT); - -$url = new moodle_url('/user/messageselect.php', array('id' => $id)); -if ($messagebody !== '') { - $url->param('messagebody', $messagebody); -} -if ($send !== '') { - $url->param('send', $send); -} -if ($preview !== '') { - $url->param('preview', $preview); -} -if ($edit !== '') { - $url->param('edit', $edit); -} -if ($returnto !== '') { - $url->param('returnto', $returnto); -} -if ($format !== FORMAT_MOODLE) { - $url->param('format', $format); -} -if ($deluser !== 0) { - $url->param('deluser', $deluser); -} -$PAGE->set_url($url); - -if (!$course = $DB->get_record('course', array('id' => $id))) { - print_error('invalidcourseid'); -} - -require_login($course); - -$coursecontext = context_course::instance($id); // Course context. -$systemcontext = context_system::instance(); // SYSTEM context. -require_capability('moodle/course:bulkmessaging', $coursecontext); - -if (empty($SESSION->emailto)) { - $SESSION->emailto = array(); -} -if (!array_key_exists($id, $SESSION->emailto)) { - $SESSION->emailto[$id] = array(); -} - -if ($deluser) { - if (array_key_exists($id, $SESSION->emailto) && array_key_exists($deluser, $SESSION->emailto[$id])) { - unset($SESSION->emailto[$id][$deluser]); - } -} - -if (empty($SESSION->emailselect[$id]) || $messagebody) { - $SESSION->emailselect[$id] = array('messagebody' => $messagebody); -} - -$messagebody = $SESSION->emailselect[$id]['messagebody']; - -$count = 0; - -if ($data = data_submitted()) { - require_sesskey(); - $namefields = get_all_user_name_fields(true); - foreach ($data as $k => $v) { - if (preg_match('/^(user|teacher)(\d+)$/', $k, $m)) { - if (!array_key_exists($m[2], $SESSION->emailto[$id])) { - if ($user = $DB->get_record_select('user', "id = ?", array($m[2]), 'id, '. - $namefields . ', idnumber, email, mailformat, lastaccess, lang, '. - 'maildisplay, auth, suspended, deleted, emailstop, username')) { - $SESSION->emailto[$id][$m[2]] = $user; - $count++; - } - } - } - } -} - -if ($course->id == SITEID) { - $strtitle = get_string('sitemessage'); - $PAGE->set_pagelayout('admin'); -} else { - $strtitle = get_string('coursemessage'); - $PAGE->set_pagelayout('incourse'); -} - -$link = null; -if (course_can_view_participants($coursecontext) || course_can_view_participants($systemcontext)) { - $link = new moodle_url("/user/index.php", array('id' => $course->id)); -} -$PAGE->navbar->add(get_string('participants'), $link); -$PAGE->navbar->add($strtitle); -$PAGE->set_title($strtitle); -$PAGE->set_heading($strtitle); -echo $OUTPUT->header(); -// If messaging is disabled on site, we can still allow users with capabilities to send emails instead. -if (empty($CFG->messaging)) { - echo $OUTPUT->notification(get_string('messagingdisabled', 'message')); -} - -if ($count) { - if ($count == 1) { - $heading = get_string('addedrecip', 'moodle', $count); - } else { - $heading = get_string('addedrecips', 'moodle', $count); - } - echo $OUTPUT->heading($heading); -} - -if (!empty($messagebody) && !$edit && !$deluser && ($preview || $send)) { - require_sesskey(); - if (count($SESSION->emailto[$id])) { - if (!empty($preview)) { - echo '
- - - - -'; - echo "

".get_string('previewhtml')."

"; - echo "
\n".format_text($messagebody, $format)."\n
\n"; - echo '

'."\n"; - echo '

'; - echo "\n
"; - } else if (!empty($send)) { - $fails = array(); - foreach ($SESSION->emailto[$id] as $user) { - if (!message_post_message($USER, $user, $messagebody, $format)) { - $user->fullname = fullname($user); - $fails[] = get_string('messagedselecteduserfailed', 'moodle', $user); - }; - } - if (empty($fails)) { - echo $OUTPUT->heading(get_string('messagedselectedusers')); - unset($SESSION->emailto[$id]); - unset($SESSION->emailselect[$id]); - } else { - echo $OUTPUT->heading(get_string('messagedselectedcountusersfailed', 'moodle', count($fails))); - echo ''; - } - echo '

'.get_string('backtoparticipants').'

'; - } - echo $OUTPUT->footer(); - exit; - } else { - echo $OUTPUT->notification(get_string('nousersyet')); - } -} - -echo '

'.get_string("keepsearching").''. - ((count($SESSION->emailto[$id])) ? ', '.get_string('usemessageform') : '').'

'; - -if ((!empty($send) || !empty($preview) || !empty($edit)) && (empty($messagebody))) { - echo $OUTPUT->notification(get_string('allfieldsrequired')); -} - -if (count($SESSION->emailto[$id])) { - require_sesskey(); - require("message.html"); -} - -$PAGE->requires->yui_module('moodle-core-formchangechecker', - 'M.core_formchangechecker.init', - array(array( - 'formid' => 'theform' - )) -); -$PAGE->requires->string_for_js('changesmadereallygoaway', 'moodle'); - -echo $OUTPUT->footer();