mirror of
https://github.com/moodle/moodle.git
synced 2025-03-18 22:50:19 +01:00
Merge branch 'MDL-60209-master-mathjaxlib' of git://github.com/mudrd8mz/moodle
This commit is contained in:
commit
b43a99ad92
@ -131,5 +131,14 @@ function xmldb_filter_mathjaxloader_upgrade($oldversion) {
|
||||
upgrade_plugin_savepoint(true, 2017091900, 'filter', 'mathjaxloader');
|
||||
}
|
||||
|
||||
if ($oldversion < 2017100900) {
|
||||
// Update the MathJax CDN URL to the new default if the site has been using default value.
|
||||
$httpsurl = get_config('filter_mathjaxloader', 'httpsurl');
|
||||
if ($httpsurl === 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js') {
|
||||
set_config('httpsurl', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js', 'filter_mathjaxloader');
|
||||
}
|
||||
upgrade_plugin_savepoint(true, 2017100900, 'filter', 'mathjaxloader');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -36,55 +36,39 @@ class filter_mathjaxloader extends moodle_text_filter {
|
||||
* @return string The MathJax language code.
|
||||
*/
|
||||
public function map_language_code($moodlelangcode) {
|
||||
$mathjaxlangcodes = array('br',
|
||||
'cdo',
|
||||
'cs',
|
||||
'da',
|
||||
'de',
|
||||
'en',
|
||||
'eo',
|
||||
'es',
|
||||
'fa',
|
||||
'fi',
|
||||
'fr',
|
||||
'gl',
|
||||
'he',
|
||||
'ia',
|
||||
'it',
|
||||
'ja',
|
||||
'ko',
|
||||
'lb',
|
||||
'mk',
|
||||
'nl',
|
||||
'oc',
|
||||
'pl',
|
||||
'pt',
|
||||
'pt-br',
|
||||
'ru',
|
||||
'sl',
|
||||
'sv',
|
||||
'tr',
|
||||
'uk',
|
||||
'zh-hans');
|
||||
$exceptions = array('cz' => 'cs');
|
||||
|
||||
// First see if this is an exception.
|
||||
if (isset($exceptions[$moodlelangcode])) {
|
||||
$moodlelangcode = $exceptions[$moodlelangcode];
|
||||
// List of language codes found in the MathJax/localization/ directory.
|
||||
$mathjaxlangcodes = [
|
||||
'ar', 'ast', 'bcc', 'bg', 'br', 'ca', 'cdo', 'ce', 'cs', 'cy', 'da', 'de', 'diq', 'en', 'eo', 'es', 'fa',
|
||||
'fi', 'fr', 'gl', 'he', 'ia', 'it', 'ja', 'kn', 'ko', 'lb', 'lki', 'lt', 'mk', 'nl', 'oc', 'pl', 'pt',
|
||||
'pt-br', 'qqq', 'ru', 'scn', 'sco', 'sk', 'sl', 'sv', 'th', 'tr', 'uk', 'vi', 'zh-hans', 'zh-hant'
|
||||
];
|
||||
|
||||
// List of explicit mappings and known exceptions (moodle => mathjax).
|
||||
$explicit = [
|
||||
'cz' => 'cs',
|
||||
'pt_br' => 'pt-br',
|
||||
'zh_tw' => 'zh-hant',
|
||||
'zh_cn' => 'zh-hans',
|
||||
];
|
||||
|
||||
// If defined, explicit mapping takes the highest precedence.
|
||||
if (isset($explicit[$moodlelangcode])) {
|
||||
return $explicit[$moodlelangcode];
|
||||
}
|
||||
|
||||
// Now look for an exact lang string match.
|
||||
// If there is exact match, it will be probably right.
|
||||
if (in_array($moodlelangcode, $mathjaxlangcodes)) {
|
||||
return $moodlelangcode;
|
||||
}
|
||||
|
||||
// Now try shortening the moodle lang string.
|
||||
$moodlelangcode = preg_replace('/-.*/', '', $moodlelangcode);
|
||||
// Look for a match on the shortened string.
|
||||
if (in_array($moodlelangcode, $mathjaxlangcodes)) {
|
||||
return $moodlelangcode;
|
||||
// Finally try to find the best matching mathjax pack.
|
||||
$parts = explode('_', $moodlelangcode, 2);
|
||||
if (in_array($parts[0], $mathjaxlangcodes)) {
|
||||
return $parts[0];
|
||||
}
|
||||
// All failed - use english.
|
||||
|
||||
// No more guessing, use English.
|
||||
return 'en';
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,19 @@
|
||||
Description of MathJAX library integration in Moodle
|
||||
=========================================================================================
|
||||
====================================================
|
||||
|
||||
License: Apache 2.0
|
||||
Source: http://www.mathjax.org
|
||||
* Default MathJax version: 2.7.2
|
||||
* License: Apache 2.0
|
||||
* Source: https://www.mathjax.org/
|
||||
|
||||
Moodle maintainer: Damyon Wiese
|
||||
|
||||
=========================================================================================
|
||||
This library is not shipped with Moodle, but this filter is provided, which can be used to
|
||||
correctly load MathJax into a page from the CDN. Alternatively you can download the entire
|
||||
library and install it locally, then use this filter to load that local version.
|
||||
|
||||
The only changes required to this filter to handle different MathJax versions is to update
|
||||
the default CDN urls in settings.php - and update the list of language mappings - in filter.php.
|
||||
Upgrading the default MathJax version
|
||||
-------------------------------------
|
||||
|
||||
1. Update the default CDN URL in settings.php
|
||||
2. Perform an upgrade step to change the configured URL if it matches the
|
||||
previous default.
|
||||
3. Check and eventually update the list of language mappings in filter.php.
|
||||
Also see the unit test for the language mappings.
|
||||
|
@ -33,7 +33,7 @@ if ($ADMIN->fulltree) {
|
||||
$item = new admin_setting_configtext('filter_mathjaxloader/httpsurl',
|
||||
new lang_string('httpsurl', 'filter_mathjaxloader'),
|
||||
new lang_string('httpsurl_help', 'filter_mathjaxloader'),
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js',
|
||||
'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js',
|
||||
PARAM_RAW);
|
||||
$settings->add($item);
|
||||
|
||||
|
72
filter/mathjaxloader/tests/filter_test.php
Normal file
72
filter/mathjaxloader/tests/filter_test.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Provides the {@link filter_mathjaxloader_filter_testcase} class.
|
||||
*
|
||||
* @package filter_mathjaxloader
|
||||
* @category test
|
||||
* @copyright 2017 David Mudrák <david@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
global $CFG;
|
||||
require_once($CFG->dirroot.'/filter/mathjaxloader/filter.php');
|
||||
|
||||
/**
|
||||
* Unit tests for the MathJax loader filter.
|
||||
*
|
||||
* @copyright 2017 David Mudrak <david@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class filter_mathjaxloader_filter_testcase extends advanced_testcase {
|
||||
|
||||
/**
|
||||
* Test the functionality of {@link filter_mathjaxloader::map_language_code()}.
|
||||
*
|
||||
* @param string $moodlelangcode the user's current language
|
||||
* @param string $mathjaxlangcode the mathjax language to be used for the moodle language
|
||||
*
|
||||
* @dataProvider test_map_language_code_expected_mappings
|
||||
*/
|
||||
public function test_map_language_code($moodlelangcode, $mathjaxlangcode) {
|
||||
|
||||
$filter = new filter_mathjaxloader(context_system::instance(), []);
|
||||
$this->assertEquals($mathjaxlangcode, $filter->map_language_code($moodlelangcode));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for {@link self::test_map_language_code}
|
||||
*
|
||||
* @return array of [moodlelangcode, mathjaxcode] tuples
|
||||
*/
|
||||
public function test_map_language_code_expected_mappings() {
|
||||
|
||||
return [
|
||||
['cz', 'cs'], // Explicit mapping.
|
||||
['cs', 'cs'], // Implicit mapping (exact match).
|
||||
['ca_valencia', 'ca'], // Implicit mapping of a Moodle language variant.
|
||||
['pt_br', 'pt-br'], // Explicit mapping.
|
||||
['en_kids', 'en'], // Implicit mapping of English variant.
|
||||
['de_kids', 'de'], // Implicit mapping of non-English variant.
|
||||
['es_mx_kids', 'es'], // More than one underscore in the name.
|
||||
['zh_tw', 'zh-hant'], // Explicit mapping of the Taiwain Chinese in the traditional script.
|
||||
['zh_cn', 'zh-hans'], // Explicit mapping of the Simplified Chinese script.
|
||||
];
|
||||
}
|
||||
}
|
@ -24,6 +24,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->version = 2017091900;
|
||||
$plugin->version = 2017100900;
|
||||
$plugin->requires = 2017050500; // Requires this Moodle version.
|
||||
$plugin->component= 'filter_mathjaxloader';
|
||||
|
Loading…
x
Reference in New Issue
Block a user