1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 defined('MOODLE_INTERNAL') || die(); 18 19 /** 20 * Plugin for spell checking (Moodle custom replacement for standard TinyMCE 21 * plugin, but with same name, which seems a bit unhelpful). 22 * 23 * @package tinymce_spellchecker 24 * @copyright 2012 The Open University 25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 26 */ 27 class tinymce_spellchecker extends editor_tinymce_plugin { 28 /** @var array list of buttons defined by this plugin */ 29 protected $buttons = array('spellchecker'); 30 31 protected function update_init_params(array &$params, context $context, 32 array $options = null) { 33 global $CFG; 34 35 if (!$this->is_legacy_browser()) { 36 return; 37 } 38 39 // Check some speller is configured. 40 $engine = $this->get_config('spellengine', ''); 41 if (!$engine or $engine === 'GoogleSpell') { 42 return; 43 } 44 45 // Check at least one language is supported. 46 $spelllanguagelist = $this->get_config('spelllanguagelist', ''); 47 if ($spelllanguagelist !== '') { 48 // Prevent the built-in spell checker in Firefox, Safari and other sane browsers. 49 unset($params['gecko_spellcheck']); 50 51 if ($row = $this->find_button($params, 'code')) { 52 // Add button after 'code'. 53 $this->add_button_after($params, $row, 'spellchecker', 'code'); 54 } 55 56 // Add JS file, which uses default name. 57 $this->add_js_plugin($params); 58 $params['spellchecker_rpc_url'] = $CFG->wwwroot . 59 '/lib/editor/tinymce/plugins/spellchecker/rpc.php'; 60 $params['spellchecker_languages'] = $spelllanguagelist; 61 } 62 } 63 64 protected function is_legacy_browser() { 65 // IE8 and IE9 are the only supported browsers that do not have spellchecker. 66 if (core_useragent::is_ie() and !core_useragent::check_ie_version(10)) { 67 return true; 68 } 69 // The rest of browsers supports spellchecking or is horribly outdated and we do not care... 70 return false; 71 } 72 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body