PageRenderTime 61ms CodeModel.GetById 31ms RepoModel.GetById 0ms app.codeStats 0ms

/mod_form.php

https://bitbucket.org/denbro42/languagelesson
PHP | 341 lines | 243 code | 58 blank | 40 comment | 24 complexity | 12ab9af653b5475cc495cb2a8aa5b958 MD5 | raw file
  1. <?php // $Id: mod_form.php 673 2011-09-01 20:40:12Z griffisd $
  2. /**
  3. * Form to define a new instance of lesson or edit an instance.
  4. * It is used from /course/modedit.php.
  5. *
  6. * @version $Id: mod_form.php 673 2011-09-01 20:40:12Z griffisd $
  7. * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  8. * @package lesson
  9. **/
  10. require_once($CFG->dirroot.'/course/moodleform_mod.php');
  11. require_once('locallib.php');
  12. class mod_languagelesson_mod_form extends moodleform_mod {
  13. function definition() {
  14. global $CFG, $LL_NEXTPAGE_ACTION, $COURSE;
  15. $mform =& $this->_form;
  16. //-------------------------------------------------------------------------------
  17. $mform->addElement('header', 'general', get_string('general', 'form'));
  18. $mform->addElement('text', 'name', get_string('name'), array('size'=>'64'));
  19. if (!empty($CFG->formatstringstriptags)) {
  20. $mform->setType('name', PARAM_TEXT);
  21. } else {
  22. $mform->setType('name', PARAM_CLEAN);
  23. }
  24. $mform->addRule('name', null, 'required', null, 'client');
  25. // Create a text box that can be enabled/disabled for lesson time limit
  26. $timedgrp = array();
  27. $timedgrp[] = &$mform->createElement('text', 'maxtime');
  28. $timedgrp[] = &$mform->createElement('checkbox', 'timed', '', get_string('enable'));
  29. $mform->addGroup($timedgrp, 'timedgrp', get_string('maxtime', 'languagelesson'), array(' '), false);
  30. $mform->disabledIf('timedgrp', 'timed');
  31. // Add numeric rule to text field
  32. $timedgrprules = array();
  33. $timedgrprules['maxtime'][] = array(null, 'numeric', null, 'client');
  34. $mform->addGroupRule('timedgrp', $timedgrprules);
  35. // Rest of group setup
  36. $mform->setDefault('timed', 0);
  37. $mform->setDefault('maxtime', 20);
  38. $mform->setType('maxtime', PARAM_INT);
  39. $mform->setHelpButton('timedgrp', array('timed', get_string('timed', 'languagelesson'), 'languagelesson'));
  40. //-------------------------------------------------------------------------------
  41. $mform->addElement('header', '', get_string('gradeoptions', 'languagelesson'));
  42. $options = array();
  43. $options[LL_TYPE_PRACTICE] = get_string('practicetype', 'languagelesson');
  44. $options[LL_TYPE_ASSIGNMENT] = get_string('assignmenttype', 'languagelesson');
  45. $options[LL_TYPE_TEST] = get_string('testtype', 'languagelesson');
  46. $mform->addElement('select', 'type', get_string('type', 'languagelesson'), $options);
  47. $mform->setHelpButton('type', array('type', get_string('type', 'languagelesson'),'languagelesson'));
  48. $mform->setDefault('type', LL_TYPE_ASSIGNMENT);
  49. // assign custom javascript for updating form values based on lesson type selection
  50. $changeEvent = "var theform = document.getElementById('mform1');
  51. var typeField = theform.elements['type']
  52. autograde = theform.elements['autograde'];
  53. defaultpoints = theform.elements['defaultpoints'];
  54. penalty = theform.elements['penalty'];
  55. penaltytype = theform.elements['penaltytype'];
  56. penaltyvalue = theform.elements['penaltyvalue'];
  57. ongoingscore = theform.elements['showongoingscore'];
  58. maxattempts = theform.elements['maxattempts'];
  59. showoldanswer = theform.elements['showoldanswer'];
  60. defaultfeedback = theform.elements['defaultfeedback'];
  61. contextcolors = theform.elements['contextcolors'];
  62. if (typeField.value == ".LL_TYPE_PRACTICE.") {
  63. autograde.disabled = true;
  64. defaultpoints.disabled = true;
  65. penalty.disabled = true;
  66. penaltytype.disabled = true;
  67. penaltyvalue.disabled = true;
  68. ongoingscore.disabled = true;
  69. maxattempts.value = 0;
  70. showoldanswer.value = 1;
  71. defaultfeedback.value = 1;
  72. contextcolors.value = 1;
  73. } else {
  74. autograde.disabled = false;
  75. defaultpoints.disabled = false;
  76. penalty.disabled = false;
  77. if (penalty.value == '1') { penaltytype.disabled = false; }
  78. if (!penaltytype.disabled &&
  79. penaltytype.value == '".LL_PENALTY_SET."') { penaltyvalue.disabled = false; }
  80. ongoingscore.disabled = false;
  81. // if it's a test, change other things as necessary
  82. if (typeField.value == ".LL_TYPE_TEST.") {
  83. maxattempts.value = 1;
  84. showoldanswer.value = 0;
  85. defaultfeedback.value = 0;
  86. contextcolors.value = 0;
  87. } else {
  88. maxattempts.value = 0;
  89. showoldanswer.value = 1;
  90. contextcolors.value = 1;
  91. }
  92. }";
  93. $mform->updateElementAttr('type', 'onchange="'.$changeEvent.'"');
  94. $mform->addElement('selectyesno', 'autograde', get_string('automaticgrading', 'languagelesson'));
  95. $mform->setHelpButton('autograde', array('automaticgrading', get_string('automaticgrading', 'languagelesson'), 'languagelesson'));
  96. $mform->setDefault('autograde', 0);
  97. $mform->addElement('text', 'defaultpoints', get_string('defaultpoints', 'languagelesson'));
  98. $mform->setDefault('defaultpoints', 1);
  99. $mform->setType('defaultpoints', PARAM_NUMBER);
  100. $mform->setHelpButton('defaultpoints', array('defaultpoints', get_string('defaultpoints', 'languagelesson'),
  101. 'languagelesson'));
  102. $mform->addElement('selectyesno', 'penalty', get_string('usepenalty', 'languagelesson'));
  103. $mform->setHelpButton('penalty', array('penalty', get_string('usepenalty','languagelesson'), 'languagelesson'));
  104. $mform->setDefault('penalty', 0);
  105. $options = array();
  106. $options[LL_PENALTY_MEAN] = get_string('penaltymean', 'languagelesson');
  107. $options[LL_PENALTY_SET] = get_string('penaltyset', 'languagelesson');
  108. $mform->addElement('select', 'penaltytype', get_string('penaltytype', 'languagelesson'), $options);
  109. $mform->setHelpButton('penaltytype', array('penaltytype', get_string('penaltytype', 'languagelesson'), 'languagelesson'));
  110. // disable penalty type if Penalty is set to No
  111. $mform->disabledIf('penaltytype', 'penalty', 'selectedIndex', '1');
  112. $mform->addElement('text', 'penaltyvalue', get_string('penaltyvalue', 'languagelesson'));
  113. $mform->setDefault('penaltyvalue', 10);
  114. $mform->setType('penaltyvalue', PARAM_NUMBER);
  115. // disable the penalty value if Penalty is set to No, OR if the Penalty Type is set to Mean
  116. $mform->disabledIf('penaltyvalue', 'penalty', 'selectedIndex', '1');
  117. $mform->disabledIf('penaltyvalue', 'penaltytype', 'selectedIndex', '1');
  118. $mform->addElement('selectyesno', 'showongoingscore', get_string('showongoingscore', 'languagelesson'));
  119. $mform->setHelpButton('showongoingscore', array('showongoingscore', get_string('showongoingscore', 'languagelesson'), 'languagelesson'));
  120. $mform->setDefault('showongoingscore', 0);
  121. //-------------------------------------------------------------------------------
  122. $mform->addElement('header', '', get_string('flowcontrol', 'languagelesson'));
  123. $numbers = array();
  124. $numbers[0] = 'Unlimited';
  125. for ($i=10; $i>0; $i--) {
  126. $numbers[$i] = $i;
  127. }
  128. $mform->addElement('select', 'maxattempts', get_string('maximumnumberofattempts', 'languagelesson'), $numbers);
  129. $mform->setHelpButton('maxattempts', array('maxattempts', get_string('maximumnumberofattempts', 'languagelesson'), 'languagelesson'));
  130. $mform->setDefault('maxattempts', 0);
  131. $mform->addElement('selectyesno', 'showoldanswer', get_string('showoldanswer', 'languagelesson'));
  132. $mform->setHelpButton('showoldanswer', array('showoldanswer', get_string('showoldanswer', 'languagelesson'), 'languagelesson'));
  133. $mform->setDefault('showoldanswer', 1);
  134. $mform->addElement('selectyesno', 'defaultfeedback', get_string('displaydefaultfeedback', 'languagelesson'));
  135. $mform->setHelpButton('defaultfeedback', array('defaultfeedback', get_string('displaydefaultfeedback', 'languagelesson'),
  136. 'languagelesson'));
  137. $mform->setDefault('defaultfeedback', 0);
  138. $mform->addElement('text', 'defaultcorrect', get_string('defaultcorrectfeedback', 'languagelesson'));
  139. $mform->setHelpButton('defaultcorrect', array('defaultcorrect', get_string('defaultcorrectfeedback', 'languagelesson'),
  140. 'languagelesson'));
  141. $mform->setDefault('defaultcorrect', get_string('defaultcorrectfeedbacktext', 'languagelesson'));
  142. $mform->disabledIf('defaultcorrect', 'defaultfeedback', 'selectedIndex', '1');
  143. $mform->addElement('text', 'defaultwrong', get_string('defaultwrongfeedback', 'languagelesson'));
  144. $mform->setHelpButton('defaultwrong', array('defaultwrong', get_string('defaultwrongfeedback', 'languagelesson'),
  145. 'languagelesson'));
  146. $mform->setDefault('defaultwrong', get_string('defaultwrongfeedbacktext', 'languagelesson'));
  147. $mform->disabledIf('defaultwrong', 'defaultfeedback', 'selectedIndex', '1');
  148. $mform->addElement('selectyesno', 'shuffleanswers', get_string('shuffleanswers', 'languagelesson'));
  149. $mform->setHelpButton('shuffleanswers', array('shuffleanswers', get_string('shuffleanswers', 'languagelesson'), 'languagelesson'));
  150. $mform->setDefault('shuffleanswers', 1);
  151. //-------------------------------------------------------------------------------
  152. $mform->addElement('header', '', get_string('lessonformating', 'languagelesson'));
  153. $mform->addElement('selectyesno', 'displayleft', get_string('displayleftmenu', 'languagelesson'));
  154. $mform->setHelpButton('displayleft', array('displayleft', get_string('displayleftmenu', 'languagelesson'), 'languagelesson'));
  155. $mform->setDefault('displayleft', 1);
  156. $mform->addElement('selectyesno', 'contextcolors', get_string('displayleftmenucontextcolor', 'languagelesson'));
  157. $mform->setHelpButton('contextcolors', array('leftmenucontextcolors', get_string('displayleftmenucontextcolor', 'languagelesson'), 'languagelesson'));
  158. $mform->setDefault('contextcolors', 1);
  159. $mform->addElement('selectyesno', 'progressbar', get_string('progressbar', 'languagelesson'));
  160. $mform->setHelpButton('progressbar', array('progressbar', get_string('progressbar', 'languagelesson'), 'languagelesson'));
  161. $mform->setDefault('progressbar', 0);
  162. //-------------------------------------------------------------------------------
  163. $mform->addElement('header', '', get_string('accesscontrol', 'languagelesson'));
  164. $mform->addElement('date_time_selector', 'available', get_string('available', 'languagelesson'), array('optional'=>true));
  165. $mform->setDefault('available', 0);
  166. $mform->addElement('date_time_selector', 'deadline', get_string('deadline', 'languagelesson'), array('optional'=>true));
  167. $mform->setDefault('deadline', 0);
  168. //-------------------------------------------------------------------------------
  169. $mform->addElement('header', '', get_string('dependencyon', 'languagelesson'));
  170. $options = array(0=>get_string('none'));
  171. if ($lessons = get_all_instances_in_course('languagelesson', $COURSE)) {
  172. foreach($lessons as $lesson) {
  173. if ($lesson->id != $this->_instance){
  174. $options[$lesson->id] = format_string($lesson->name, true);
  175. }
  176. }
  177. }
  178. $mform->addElement('select', 'dependency', get_string('dependencyon', 'languagelesson'), $options);
  179. $mform->setHelpButton('dependency', array('dependency', get_string('dependencyon', 'languagelesson'), 'languagelesson'));
  180. $mform->setDefault('dependency', 0);
  181. $mform->addElement('text', 'timespent', get_string('timespentminutes', 'languagelesson'));
  182. $mform->setDefault('timespent', 0);
  183. $mform->setType('timespent', PARAM_INT);
  184. $mform->addElement('checkbox', 'completed', get_string('completed', 'languagelesson'));
  185. $mform->setDefault('completed', 0);
  186. $mform->addElement('text', 'gradebetterthan', get_string('gradebetterthan', 'languagelesson'));
  187. $mform->setDefault('gradebetterthan', 0);
  188. $mform->setType('gradebetterthan', PARAM_INT);
  189. //-------------------------------------------------------------------------------
  190. $mform->addElement('header', '', get_string('mediafile', 'languagelesson'));
  191. $mform->addElement('choosecoursefile', 'mediafile', get_string('mediafile', 'languagelesson'), array('courseid'=>$COURSE->id));
  192. $mform->setHelpButton('mediafile', array('mediafile', get_string('mediafile', 'languagelesson'), 'languagelesson'));
  193. $mform->setDefault('mediafile', '');
  194. $mform->setType('mediafile', PARAM_RAW);
  195. $mform->addElement('text', 'mediaheight', get_string('mediaheight', 'languagelesson'));
  196. $mform->setHelpButton('mediaheight', array('mediaheight', get_string('mediaheight', 'languagelesson'), 'languagelesson'));
  197. $mform->setDefault('mediaheight', 100);
  198. $mform->addRule('mediaheight', null, 'required', null, 'client');
  199. $mform->addRule('mediaheight', null, 'numeric', null, 'client');
  200. $mform->setType('mediaheight', PARAM_INT);
  201. $mform->addElement('text', 'mediawidth', get_string('mediawidth', 'languagelesson'));
  202. $mform->setHelpButton('mediawidth', array('mediawidth', get_string('mediawidth', 'languagelesson'), 'languagelesson'));
  203. $mform->setDefault('mediawidth', 650);
  204. $mform->addRule('mediawidth', null, 'required', null, 'client');
  205. $mform->addRule('mediawidth', null, 'numeric', null, 'client');
  206. $mform->setType('mediawidth', PARAM_INT);
  207. //-------------------------------------------------------------------------------
  208. $mform->addElement('header', '', get_string('other', 'languagelesson'));
  209. // get the modules
  210. if ($mods = get_course_mods($COURSE->id)) {
  211. $modinstances = array();
  212. foreach ($mods as $mod) {
  213. // get the module name and then store it in a new array
  214. if ($module = get_coursemodule_from_instance($mod->modname, $mod->instance, $COURSE->id)) {
  215. if (isset($this->_cm->id) and $this->_cm->id != $mod->id){
  216. $modinstances[$mod->id] = $mod->modname.' - '.$module->name;
  217. }
  218. }
  219. }
  220. asort($modinstances); // sort by module name
  221. $modinstances=array(0=>get_string('none'))+$modinstances;
  222. $mform->addElement('select', 'activitylink', get_string('activitylink', 'languagelesson'), $modinstances);
  223. $mform->setHelpButton('activitylink', array('activitylink', get_string('activitylink', 'languagelesson'), 'languagelesson'));
  224. $mform->setDefault('activitylink', 0);
  225. }
  226. $mform->addElement('selectyesno', 'lessondefault', get_string('lessondefault', 'languagelesson'));
  227. $mform->setHelpButton('lessondefault', array('lessondefault', get_string('lessondefault', 'languagelesson'), 'languagelesson'));
  228. $mform->setDefault('lessondefault', 0);
  229. //-------------------------------------------------------------------------------
  230. $features = new stdClass;
  231. $features->groups = false;
  232. $features->groupings = true;
  233. $features->groupmembersonly = true;
  234. $this->standard_coursemodule_elements($features);
  235. //-------------------------------------------------------------------------------
  236. // buttons
  237. $this->add_action_buttons();
  238. }
  239. /**
  240. * Enforce defaults here
  241. *
  242. * @param array $default_values Form defaults
  243. * @return void
  244. **/
  245. function data_preprocessing(&$default_values) {
  246. global $module;
  247. if (isset($default_values['conditions'])) {
  248. $conditions = unserialize($default_values['conditions']);
  249. $default_values['timespent'] = $conditions->timespent;
  250. $default_values['completed'] = $conditions->completed;
  251. $default_values['gradebetterthan'] = $conditions->gradebetterthan;
  252. }
  253. if (isset($default_values['add']) and $defaults = get_record('languagelesson_default', 'course', $default_values['course'])) {
  254. foreach ($defaults as $fieldname => $default) {
  255. switch ($fieldname) {
  256. case 'conditions':
  257. $conditions = unserialize($default);
  258. $default_values['timespent'] = $conditions->timespent;
  259. $default_values['completed'] = $conditions->completed;
  260. $default_values['gradebetterthan'] = $conditions->gradebetterthan;
  261. break;
  262. default:
  263. $default_values[$fieldname] = $default;
  264. break;
  265. }
  266. }
  267. }
  268. }
  269. /**
  270. * Enforce validation rules here
  271. *
  272. * @param object $data Post data to validate
  273. * @return array
  274. **/
  275. function validation($data, $files) {
  276. $errors = parent::validation($data, $files);
  277. if (empty($data['maxtime']) and !empty($data['timed'])) {
  278. $errors['timedgrp'] = get_string('err_numeric', 'form');
  279. }
  280. return $errors;
  281. }
  282. }
  283. ?>