Newer
Older
// This file is part of Stack - http://stack.maths.ed.ac.uk/
//
// Stack 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.
//
// Stack 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 Stack. If not, see <http://www.gnu.org/licenses/>.
/**
* Configuration settings declaration information for the Stack question type.
*
* @package qtype_stack
* @copyright 2012 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/settingslib.php');
require_once(__DIR__ . '/stack/options.class.php');
require_once(__DIR__ . '/stack/prt.class.php');
// Useful links.
$links = array(
get_string('stackDoc_docs_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/doc/doc.php/'))),
get_string('healthcheck_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/healthcheck.php'))),
get_string('chat_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/caschat.php'))),
get_string('bulktestindexintro_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/bulktestindex.php'))),
get_string('dependenciesintro_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/dependencies.php'))),
get_string('stackInstall_replace_dollars_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/replacedollarsindex.php'))),
get_string('stackInstall_testsuite_title_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/answertests.php'))),
get_string('stackInstall_input_title_desc', 'qtype_stack',
array('link' => (string) new moodle_url('/question/type/stack/adminui/studentinputs.php'))),
$settings->add(new admin_setting_heading('docs',
get_string('settingusefullinks', 'qtype_stack'),
'* ' . implode("\n* ", $links)));
// Options for connection to Maxima.
// Note that any settings here where we try to set the default
// intelligently in install.php, the default here must be null.
// Otherwise, the default here will overwrite anything set in install.php.
$settings->add(new admin_setting_heading('maixmasettingsheading',
get_string('settingsmaximasettings', 'qtype_stack'), ''));
$settings->add(new admin_setting_configselect('qtype_stack/platform',
get_string('settingplatformtype', 'qtype_stack'),
// Note, install.php tries to auto-detect Windows installs, and set the default appropriately.
get_string('settingplatformtype_desc', 'qtype_stack'), null, [
'linux' => get_string('settingplatformtypelinux', 'qtype_stack'),
'linux-optimised' => get_string('settingplatformtypelinuxoptimised', 'qtype_stack'),
'win' => get_string('settingplatformtypewin', 'qtype_stack'),
'server' => get_string('settingplatformtypeserver', 'qtype_stack'),
'server-proxy' => get_string('settingplatformtypeserverproxy', 'qtype_stack'),
]));
$settings->add(new admin_setting_configselect('qtype_stack/maximaversion',
get_string('settingcasmaximaversion', 'qtype_stack'),
get_string('settingcasmaximaversion_desc', 'qtype_stack'), null,
array('5.40.0' => '5.40.0', '5.41.0' => '5.41.0', '5.42.0' => '5.42.0',
'5.42.1' => '5.42.1', '5.42.2' => '5.42.2',
'5.43.0' => '5.43.0', '5.43.1' => '5.43.1', '5.43.2' => '5.43.2',
'5.44.0' => '5.44.0', '5.46.0' => '5.46.0', '5.47.0' => '5.47.0',
'default' => 'default')));
$settings->add(new admin_setting_configtext('qtype_stack/castimeout',
get_string('settingcastimeout', 'qtype_stack'),
get_string('settingcastimeout_desc', 'qtype_stack'), 20, PARAM_INT, 3));
$settings->add(new admin_setting_configselect('qtype_stack/casresultscache',
get_string('settingcasresultscache', 'qtype_stack'),
get_string('settingcasresultscache_desc', 'qtype_stack'), 'db', array(
'none' => get_string('settingcasresultscache_none', 'qtype_stack'),
'db' => get_string('settingcasresultscache_db', 'qtype_stack'),
)));
$settings->add(new admin_setting_configselect('qtype_stack/caspreparse',
get_string('settingcaspreparse', 'qtype_stack'),
get_string('settingcaspreparse_desc', 'qtype_stack'), 'true', array(
'true' => get_string('settingcaspreparse_true', 'qtype_stack'),
'false' => get_string('settingcaspreparse_false', 'qtype_stack'),
)));
Chris Sangwin
committed
$settings->add(new admin_setting_configtext('qtype_stack/maximacommand',
get_string('settingplatformmaximacommand', 'qtype_stack'),
get_string('settingplatformmaximacommand_desc', 'qtype_stack'), null));
Chris Sangwin
committed
Chris Sangwin
committed
$settings->add(new admin_setting_configtext('qtype_stack/maximacommandopt',
get_string('settingplatformmaximacommandopt', 'qtype_stack'),
get_string('settingplatformmaximacommandopt_desc', 'qtype_stack'), null));
$settings->add(new admin_setting_configtext('qtype_stack/maximacommandserver',
get_string('settingplatformmaximacommandserver', 'qtype_stack'),
get_string('settingplatformmaximacommandserver_desc', 'qtype_stack'), null));
$settings->add(new admin_setting_configtext('qtype_stack/serveruserpass',
get_string('settingserveruserpass', 'qtype_stack'),
get_string('settingserveruserpass_desc', 'qtype_stack'), ''));
Chris Sangwin
committed
$settings->add(new admin_setting_configtext('qtype_stack/plotcommand',
get_string('settingplatformplotcommand', 'qtype_stack'),
get_string('settingplatformplotcommand_desc', 'qtype_stack'), ''));
// The supported libraries are defined by public static $maximalibraries in installhelper.php.
Chris Sangwin
committed
$settings->add(new admin_setting_configtext('qtype_stack/maximalibraries',
get_string('settingmaximalibraries', 'qtype_stack'),
get_string('settingmaximalibraries_desc', 'qtype_stack'), null));
Chris Sangwin
committed
$settings->add(new admin_setting_configcheckbox('qtype_stack/casdebugging',
get_string('settingcasdebugging', 'qtype_stack'),
get_string('settingcasdebugging_desc', 'qtype_stack'), 0));
// @codingStandardsIgnoreStart
// ILIAS: will need to replicate this cache.
// The Moodle cache API is quite simple, so to replicate it we need only implement
// $cache = cache::make('qtype_stack', 'parsercache');
// $ast = $cache->get($cachekey); // Returns null/false or something if key not present.
// $cache->set($cachekey, $ast);
// Or, it is already possible to disable this, because there is a config variable that can be set to 0 to disable.
// @codingStandardsIgnoreEnd
$settings->add(new admin_setting_configtext('qtype_stack/parsercacheinputlength',
get_string('settingparsercacheinputlength', 'qtype_stack'),
get_string('settingparsercacheinputlength_desc', 'qtype_stack'), 50, PARAM_INT, 3));
// Options for maths display.
$settings->add(new admin_setting_heading('mathsdisplayheading',
get_string('settingsmathsdisplayheading', 'qtype_stack'), ''));
$settings->add(new admin_setting_configcheckbox('qtype_stack/ajaxvalidation',
get_string('settingajaxvalidation', 'qtype_stack'),
get_string('settingajaxvalidation_desc', 'qtype_stack'), 1));
$settings->add(new qtype_stack_admin_setting_maths_display_method('qtype_stack/mathsdisplay',
get_string('settingmathsdisplay', 'qtype_stack'),
get_string('settingmathsdisplay_desc', 'qtype_stack'), 'mathjax', null));
$settings->add(new admin_setting_configcheckbox('qtype_stack/replacedollars',
get_string('settingreplacedollars', 'qtype_stack'),
get_string('settingreplacedollars_desc', 'qtype_stack'), false));
// Options for new inputs.
$settings->add(new admin_setting_heading('inputoptionsheading',
get_string('settingdefaultinputoptions', 'qtype_stack'),
get_string('settingdefaultinputoptions_desc', 'qtype_stack')));
$settings->add(new qtype_stack_admin_setting_input_types('qtype_stack/inputtype',
get_string('inputtype', 'qtype_stack'),
get_string('inputtype_help', 'qtype_stack'), 'algebraic', null));
$settings->add(new admin_setting_configtext('qtype_stack/inputboxsize',
get_string('boxsize', 'qtype_stack'),
get_string('boxsize_help', 'qtype_stack'), '15', PARAM_INT));
$settings->add(new admin_setting_configselect('qtype_stack/inputstrictsyntax',
get_string('strictsyntax', 'qtype_stack'),
get_string('strictsyntax_help', 'qtype_stack'), '1',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inputinsertstars',
get_string('insertstars', 'qtype_stack'),
get_string('insertstars_help', 'qtype_stack'), '0',
stack_options::get_insert_star_options()));
$settings->add(new admin_setting_configtext('qtype_stack/inputforbidwords',
get_string('forbidwords', 'qtype_stack'),
get_string('forbidwords_help', 'qtype_stack'), '', PARAM_RAW));
$settings->add(new admin_setting_configselect('qtype_stack/inputforbidfloat',
get_string('forbidfloat', 'qtype_stack'),
get_string('forbidfloat_help', 'qtype_stack'), '1',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inputrequirelowestterms',
get_string('requirelowestterms', 'qtype_stack'),
get_string('requirelowestterms_help', 'qtype_stack'), '0',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inputcheckanswertype',
get_string('checkanswertype', 'qtype_stack'),
get_string('checkanswertype_help', 'qtype_stack'), '0',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inputmustverify',
get_string('mustverify', 'qtype_stack'),
get_string('mustverify_help', 'qtype_stack'), '1',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inputshowvalidation',
get_string('showvalidation', 'qtype_stack'),
get_string('showvalidation_help', 'qtype_stack'), '1',
Chris Sangwin
committed
stack_options::get_showvalidation_options()));
// Options for new questions.
$settings->add(new admin_setting_heading('questionoptionsheading',
get_string('settingdefaultquestionoptions', 'qtype_stack'),
get_string('settingdefaultquestionoptions_desc', 'qtype_stack')));
$settings->add(new admin_setting_configselect('qtype_stack/questionsimplify',
get_string('questionsimplify', 'qtype_stack'),
get_string('autosimplify_help', 'qtype_stack'), '1',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/assumepositive',
get_string('assumepositive', 'qtype_stack'),
get_string('assumepositive_help', 'qtype_stack'), '0',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/assumereal',
get_string('assumereal', 'qtype_stack'),
get_string('assumereal_help', 'qtype_stack'), '0',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/feedbackstyle',
get_string('feedbackstyle', 'qtype_stack'),
get_string('feedbackstyle', 'qtype_stack'), '1',
stack_potentialresponse_tree_lite::get_feedbackstyle_options()));
$settings->add(new admin_setting_configtextarea('qtype_stack/prtcorrect',
get_string('prtcorrectfeedback', 'qtype_stack'), '',
get_string('symbolicprtcorrectfeedback', 'qtype_stack') . ' ' .
get_string('defaultprtcorrectfeedback', 'qtype_stack'), PARAM_RAW, 60, 3));
$settings->add(new admin_setting_configtextarea('qtype_stack/prtpartiallycorrect',
get_string('prtpartiallycorrectfeedback', 'qtype_stack'), '',
get_string('symbolicprtpartiallycorrectfeedback', 'qtype_stack') . ' ' .
get_string('defaultprtpartiallycorrectfeedback', 'qtype_stack'), PARAM_RAW, 60, 3));
$settings->add(new admin_setting_configtextarea('qtype_stack/prtincorrect',
get_string('prtincorrectfeedback', 'qtype_stack'), '',
get_string('symbolicprtincorrectfeedback', 'qtype_stack') . ' ' .
get_string('defaultprtincorrectfeedback', 'qtype_stack'), PARAM_RAW, 60, 3));
$settings->add(new admin_setting_configselect('qtype_stack/decimals',
get_string('decimals', 'qtype_stack'),
get_string('decimals_help', 'qtype_stack'), '.',
stack_options::get_decimals_sign_options()));
$settings->add(new admin_setting_configselect('qtype_stack/multiplicationsign',
get_string('multiplicationsign', 'qtype_stack'),
get_string('multiplicationsign_help', 'qtype_stack'), 'dot',
stack_options::get_multiplication_sign_options()));
$settings->add(new admin_setting_configselect('qtype_stack/sqrtsign',
get_string('sqrtsign', 'qtype_stack'),
get_string('sqrtsign_help', 'qtype_stack'), '1',
stack_options::get_yes_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/complexno',
get_string('complexno', 'qtype_stack'),
get_string('complexno_help', 'qtype_stack'), 'i',
stack_options::get_complex_no_options()));
$settings->add(new admin_setting_configselect('qtype_stack/inversetrig',
get_string('inversetrig', 'qtype_stack'),
get_string('inversetrig_help', 'qtype_stack'), 'cos-1',
stack_options::get_inverse_trig_options()));
$settings->add(new admin_setting_configselect('qtype_stack/logicsymbol',
get_string('logicsymbol', 'qtype_stack'),
get_string('logicsymbol_help', 'qtype_stack'), 'lang',
stack_options::get_logic_options()));
$settings->add(new admin_setting_configselect('qtype_stack/matrixparens',
get_string('matrixparens', 'qtype_stack'),
get_string('matrixparens_help', 'qtype_stack'), '[',
stack_options::get_matrix_parens_options()));
$settings->add(new admin_setting_heading('geogebraoptionsheading',
get_string('stackBlock_geogebra_settingdefaultoptions', 'qtype_stack'),
get_string('stackBlock_geogebra_settingdefaultoptions_desc', 'qtype_stack')));
$settings->add(new admin_setting_configtext('qtype_stack/geogebrabaseurl',
get_string('stackBlock_geogebrabaseurl', 'qtype_stack'),
get_string('stackBlock_geogebrabaseurl_help', 'qtype_stack'), '', PARAM_RAW));