Permalink
Browse files

Merge branch 'MDL-38508-m' of git://github.com/andrewnicols/moodle

  • Loading branch information...
2 parents 0180dfd + 56d465b commit 163e0d3e706085455c092e3a243cc1c72f52979b @nebgor nebgor committed Apr 9, 2013
View
@@ -32,73 +32,22 @@
$identifier = required_param('identifier', PARAM_STRINGID);
$component = required_param('component', PARAM_COMPONENT);
-$lang = required_param('lang', PARAM_LANG); // TODO: maybe split into separate scripts
-$ajax = optional_param('ajax', 0, PARAM_BOOL);
+$lang = optional_param('lang', 'en', PARAM_LANG);
-if (!$lang) {
- $lang = 'en';
-}
-$SESSION->lang = $lang; // does not actually modify session because we do not use cookies here
-
-$sm = get_string_manager();
+// We don't actually modify the session here as we have NO_MOODLE_COOKIES set.
+$SESSION->lang = $lang;
$PAGE->set_url('/help.php');
$PAGE->set_pagelayout('popup');
$PAGE->set_context(context_system::instance());
-if ($ajax) {
- @header('Content-Type: text/plain; charset=utf-8');
-}
-
-if (!$sm->string_exists($identifier.'_help', $component)) {
- // strings on disk-cache may be dirty - try to rebuild it and check again
- $sm->load_component_strings($component, current_language(), true);
-}
-
-$data = new stdClass();
-
-if ($sm->string_exists($identifier.'_help', $component)) {
- $options = new stdClass();
- $options->trusted = false;
- $options->noclean = false;
- $options->smiley = false;
- $options->filter = false;
- $options->para = true;
- $options->newlines = false;
- $options->overflowdiv = !$ajax;
-
- $data->heading = format_string(get_string($identifier, $component));
- // Should be simple wiki only MDL-21695
- $data->text = format_text(get_string($identifier.'_help', $component), FORMAT_MARKDOWN, $options);
-
- $helplink = $identifier . '_link';
- if ($sm->string_exists($helplink, $component)) { // Link to further info in Moodle docs
- $link = get_string($helplink, $component);
- $linktext = get_string('morehelp');
-
- $data->doclink = new stdClass();
- $url = new moodle_url(get_docs_url($link));
- $data->doclink->link = $url->out();
- $data->doclink->linktext = $linktext;
- $data->doclink->class = ($CFG->doctonewwindow) ? 'helplinkpopup' : '';
-
- $completedoclink = html_writer::tag('div', $OUTPUT->doc_link($link, $linktext), array('class' => 'helpdoclink'));
- }
-} else {
- $data->text = html_writer::tag('p',
- html_writer::tag('strong', 'TODO') . ": missing help string [{$identifier}_help, {$component}]");
+$data = get_formatted_help_string($identifier, $component, false);
+echo $OUTPUT->header();
+if (!empty($data->heading)) {
+ echo $OUTPUT->heading($data->heading, 1, 'helpheading');
}
-
-if ($ajax) {
- echo json_encode($data);
-} else {
- echo $OUTPUT->header();
- if (isset($data->heading)) {
- echo $OUTPUT->heading($data->heading, 1, 'helpheading');
- }
- echo $data->text;
- if (isset($completedoclink)) {
- echo $completedoclink;
- }
- echo $OUTPUT->footer();
+echo $data->text;
+if (isset($data->completedoclink)) {
+ echo $data->completedoclink;
}
+echo $OUTPUT->footer();
View
@@ -0,0 +1,40 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Displays help via AJAX call
+ *
+ * @copyright 2013 onwards Andrew Nicols
+ * @package core
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+define('NO_MOODLE_COOKIES', true);
+define('AJAX_SCRIPT', true);
+require_once(__DIR__ . '/config.php');
+
+$identifier = required_param('identifier', PARAM_STRINGID);
+$component = required_param('component', PARAM_COMPONENT);
+$lang = optional_param('lang', 'en', PARAM_LANG);
+
+// We don't actually modify the session here as we have NO_MOODLE_COOKIES set.
+$SESSION->lang = $lang;
+$PAGE->set_url('/help_ajax.php');
+$PAGE->set_context(context_system::instance());
+
+$data = get_formatted_help_string($identifier, $component, true);
+echo json_encode($data);
View
@@ -3463,3 +3463,72 @@ function print_password_policy() {
}
return $message;
}
+
+/**
+ * Get the value of a help string fully prepared for display in the current language.
+ *
+ * @param string $identifier The identifier of the string to search for.
+ * @param string $component The module the string is associated with.
+ * @param boolean $ajax Whether this help is called from an AJAX script.
+ * This is used to influence text formatting and determines
+ * which format to output the doclink in.
+ * @return Object An object containing:
+ * - heading: Any heading that there may be for this help string.
+ * - text: The wiki-formatted help string.
+ * - doclink: An object containing a link, the linktext, and any additional
+ * CSS classes to apply to that link. Only present if $ajax = false.
+ * - completedoclink: A text representation of the doclink. Only present if $ajax = true.
+ */
+function get_formatted_help_string($identifier, $component, $ajax = false) {
+ global $CFG, $OUTPUT;
+ $sm = get_string_manager();
+
+ if (!$sm->string_exists($identifier, $component) ||
+ !$sm->string_exists($identifier . '_help', $component)) {
+ // Strings in the on-disk cache may be dirty - try to rebuild it and check again.
+ $sm->load_component_strings($component, current_language(), true);
+ }
+
+ $data = new stdClass();
+
+ if ($sm->string_exists($identifier, $component)) {
+ $data->heading = format_string(get_string($identifier, $component));
+ } else {
+ // Gracefully fall back to an empty string.
+ $data->heading = '';
+ }
+
+ if ($sm->string_exists($identifier . '_help', $component)) {
+ $options = new stdClass();
+ $options->trusted = false;
+ $options->noclean = false;
+ $options->smiley = false;
+ $options->filter = false;
+ $options->para = true;
+ $options->newlines = false;
+ $options->overflowdiv = !$ajax;
+
+ // Should be simple wiki only MDL-21695.
+ $data->text = format_text(get_string($identifier.'_help', $component), FORMAT_MARKDOWN, $options);
+
+ $helplink = $identifier . '_link';
+ if ($sm->string_exists($helplink, $component)) { // Link to further info in Moodle docs
+ $link = get_string($helplink, $component);
+ $linktext = get_string('morehelp');
+
+ $data->doclink = new stdClass();
+ $url = new moodle_url(get_docs_url($link));
+ if ($ajax) {
+ $data->doclink->link = $url->out();
+ $data->doclink->linktext = $linktext;
+ $data->doclink->class = ($CFG->doctonewwindow) ? 'helplinkpopup' : '';
+ } else {
+ $data->completedoclink = html_writer::tag('div', $OUTPUT->doc_link($link, $linktext), array('class' => 'helpdoclink'));
+ }
+ }
+ } else {
+ $data->text = html_writer::tag('p',
+ html_writer::tag('strong', 'TODO') . ": missing help string [{$identifier}_help, {$component}]");
+ }
+ return $data;
+}
Oops, something went wrong.

0 comments on commit 163e0d3

Please sign in to comment.