| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 <?php 2 require_once ($CFG->dirroot.'/course/moodleform_mod.php'); 3 require_once ($CFG->dirroot.'/mod/hotpot/lib.php'); 4 5 $HOTPOT_TEXTSOURCE = array( 6 HOTPOT_TEXTSOURCE_QUIZ => get_string('textsourcequiz', 'hotpot'), 7 HOTPOT_TEXTSOURCE_FILENAME => get_string('textsourcefilename', 'hotpot'), 8 HOTPOT_TEXTSOURCE_FILEPATH => get_string('textsourcefilepath', 'hotpot'), 9 HOTPOT_TEXTSOURCE_SPECIFIC => get_string('textsourcespecific', 'hotpot') 10 ); 11 12 class mod_hotpot_mod_form extends moodleform_mod { 13 // documentation on formslib.php here: 14 // http://docs.moodle.org/en/Development:lib/formslib.php_Form_Definition 15 16 function definition() { 17 // TO DO 18 // ===== 19 // $mform->setType('name', PARAM_xxx); 20 // $mform->setDefault('name', array('elementhelpfilename', get_string('helpicontitlestring', 'hotpot'), 'hotpot')); 21 22 global $CFG, $COURSE; 23 global $HOTPOT_FEEDBACK, $HOTPOT_GRADEMETHOD, $HOTPOT_LOCATION; 24 global $HOTPOT_NAVIGATION, $HOTPOT_OUTPUTFORMAT, $HOTPOT_TEXTSOURCE; 25 26 $mform =&$this->_form; 27 28 // initialize values for $hours, $minutes and $seconds 29 $hours = array(); 30 $minutes = array(); 31 $seconds = array(); 32 for ($i=0; $i<60; $i++) { 33 $str = sprintf('%02d', $i); 34 if ($i<24) { 35 $hours[$i] = $str; 36 } 37 $minutes[$i] = $str; 38 $seconds[$i] = $str; 39 } 40 41 //----------------------------------------------------------------------------------------------- 42 $mform->addElement('header', 'general', get_string('general', 'form')); 43 //----------------------------------------------------------------------------------------------- 44 45 // Name 46 global $form; 47 if (isset($form->add)) { 48 // new HotPot 49 $elements = array(); 50 $elements[] = &$mform->createElement('select', 'namesource', '', $HOTPOT_TEXTSOURCE); 51 $elements[] = &$mform->createElement('text', 'name', '', array('size' => '40')); 52 $mform->addGroup($elements, 'name_elements', get_string('name'), array(' '), false); 53 $mform->disabledIf('name_elements', 'namesource', 'ne', HOTPOT_TEXTSOURCE_SPECIFIC); 54 // $mform->setAdvanced('name_elements'); 55 } else { 56 // existing HotPot 57 $mform->addElement('hidden', 'namesource', HOTPOT_TEXTSOURCE_SPECIFIC); 58 $mform->addElement('text', 'name', get_string('name'), array('size' => '40')); 59 } 60 $mform->setType('namesource', PARAM_INT); 61 if (!empty($CFG->formatstringstriptags)) { 62 $mform->setType('name', PARAM_TEXT); 63 } else { 64 $mform->setType('name', PARAM_CLEAN); 65 } 66 67 // Location 68 $sitecontext = get_context_instance(CONTEXT_SYSTEM); 69 if (has_capability('moodle/course:managefiles', $sitecontext)) { 70 $site = get_site(); 71 if ($COURSE->id==$site->id) { 72 $id = $site->id; 73 $location = HOTPOT_LOCATION_SITEFILES; 74 } else { 75 $id = "'+(getObjValue(this.form.location)==".HOTPOT_LOCATION_SITEFILES."?".$site->id.":".$COURSE->id.")+'"; 76 $location = ''; 77 } 78 } else { // ordinary teacher or content creator 79 $id = $COURSE->id; 80 $location = HOTPOT_LOCATION_COURSEFILES; 81 } 82 if (array_key_exists($location, $HOTPOT_LOCATION)) { 83 $mform->addElement('hidden', 'location', $location); 84 } else { // admin can select from "site" or "course" files 85 $mform->addElement('select', 'location', get_string('location', 'hotpot'), $HOTPOT_LOCATION); 86 } 87 $mform->setType('location', PARAM_INT); 88 89 // Reference 90 // create "Choose file" button 91 $choosefile_button = $mform->createElement('button', 'popup', get_string('chooseafile', 'resource') .' ...'); 92 93 // create a 'reference' group of form elements, comprising text box + buttons 94 $elements = array(); 95 $elements[] = $mform->createElement('text', 'reference', '', array('size'=>'60')); 96 $elements[] = &$choosefile_button; 97 $mform->addGroup($elements, 'reference_elements', get_string('filename', 'resource'), ' ' , false); 98 99 // set attributes on the button 100 if ($choosefile_button) { 101 $wdir = "'+getDir(this.form.reference.value)+'"; 102 $url="/files/index.php?id=$id&wdir=$wdir&choose=id_reference"; 103 $options = 'menubar=0,location=0,scrollbars,resizable,width=750,height=500'; 104 $attributes = array( 105 'title'=>get_string('chooseafile', 'resource'), 106 'onclick'=>"return openpopup('$url', '".$choosefile_button->getName()."', '$options', 0);" 107 ); 108 $choosefile_button->updateAttributes($attributes); 109 } 110 $mform->setType('reference', PARAM_TEXT); 111 112 // Summary 113 if (isset($form->add)) { 114 // new HotPot 115 $elements = array(); 116 $elements[] = &$mform->createElement('select', 'summarysource', '', $HOTPOT_TEXTSOURCE); 117 $elements[] = &$mform->createElement('htmleditor', 'summary', ''); 118 $mform->addGroup($elements, 'summary_elements', get_string('summary'), array(' '), false); 119 $mform->setAdvanced('summary_elements'); 120 } else { 121 // existing HotPot 122 $mform->addElement('hidden', 'summarysource', HOTPOT_TEXTSOURCE_SPECIFIC); 123 $mform->addElement('htmleditor', 'summary', get_string('summary')); 124 $mform->setType('summary', PARAM_RAW); 125 $mform->setHelpButton('summary', array('writing', 'questions', 'richtext'), false, 'editorhelpbutton'); 126 $mform->setAdvanced('summary'); 127 } 128 $mform->setType('summarysource', PARAM_INT); 129 $mform->setType('summary', PARAM_RAW); 130 131 // Add/Update quiz chain? 132 if (isset($form->add)) { 133 $quizchain = 'addquizchain'; 134 } else { 135 $quizchain = 'updatequizchain'; 136 } 137 $mform->addElement('selectyesno', 'quizchain', get_string($quizchain, 'hotpot')); 138 $mform->setDefault('quizchain', get_user_preferences("hotpot_$quizchain", HOTPOT_NO)); 139 $mform->setHelpButton('quizchain', array($quizchain, get_string($quizchain, 'hotpot'), 'hotpot')); 140 // $mform->setAdvanced('quizchain'); 141 142 //----------------------------------------------------------------------------------------------- 143 $mform->addElement('header', 'displayhdr', get_string('display', 'form')); 144 //----------------------------------------------------------------------------------------------- 145 146 // Output format 147 $mform->addElement('select', 'outputformat', get_string('outputformat', 'hotpot'), $HOTPOT_OUTPUTFORMAT); 148 $mform->setDefault('outputformat', get_user_preferences('hotpot_outputformat', HOTPOT_OUTPUTFORMAT_BEST)); 149 $mform->setHelpButton('outputformat', array('outputformat', get_string('outputformat', 'hotpot'), 'hotpot')); 150 151 // Navigation 152 $mform->addElement('select', 'navigation', get_string('navigation', 'hotpot'), $HOTPOT_NAVIGATION); 153 $mform->setDefault('navigation', get_user_preferences('hotpot_navigation', HOTPOT_NAVIGATION_BAR)); 154 $mform->setHelpButton('navigation', array('navigation', get_string('navigation', 'hotpot'), 'hotpot')); 155 156 // Use Moode player ? 157 $mform->addElement('selectyesno', 'forceplugins', get_string('forceplugins', 'hotpot')); 158 $mform->setDefault('forceplugins', get_user_preferences('hotpot_forceplugins', HOTPOT_NO)); 159 $mform->setHelpButton('forceplugins', array('forceplugins', get_string('forceplugins', 'hotpot'), 'hotpot')); 160 // $mform->setAdvanced('forceplugins'); 161 162 // Student feedback 163 $elements = array(); 164 $elements[] = &$mform->createElement('select', 'studentfeedback', '', $HOTPOT_FEEDBACK); 165 $elements[] = &$mform->createElement('text', 'studentfeedbackurl', '', array('size'=>'50')); 166 $mform->addGroup($elements, 'studentfeedback_elements', get_string('studentfeedback', 'hotpot'), array(' '), false); 167 $mform->setHelpButton('studentfeedback_elements', array('studentfeedback', get_string('studentfeedback', 'hotpot'), 'hotpot')); 168 $mform->disabledIf('studentfeedback_elements', 'studentfeedback', 'eq', HOTPOT_FEEDBACK_NONE); 169 $mform->disabledIf('studentfeedback_elements', 'studentfeedback', 'eq', HOTPOT_FEEDBACK_MOODLEFORUM); 170 $mform->disabledIf('studentfeedback_elements', 'studentfeedback', 'eq', HOTPOT_FEEDBACK_MOODLEMESSAGING); 171 // $mform->setAdvanced('studentfeedback_elements'); 172 $mform->setType('studentfeedbackurl', PARAM_URL); 173 174 // Show next quiz ? 175 $mform->addElement('selectyesno', 'shownextquiz', get_string('shownextquiz', 'hotpot')); 176 $mform->setDefault('shownextquiz', get_user_preferences('hotpot_shownextquiz', HOTPOT_NO)); 177 $mform->setHelpButton('shownextquiz', array('shownextquiz', get_string('shownextquiz', 'hotpot'), 'hotpot')); 178 // $mform->setAdvanced('forceplugins'); 179 180 //----------------------------------------------------------------------------------------------- 181 $mform->addElement('header', 'accesscontrolhdr', get_string('accesscontrol', 'lesson')); 182 //----------------------------------------------------------------------------------------------- 183 184 // Open time 185 $mform->addElement('date_time_selector', 'timeopen', get_string('quizopen', 'quiz'), array('optional'=>true)); 186 $mform->setHelpButton('timeopen', array('timeopen', get_string('quizopen', 'quiz'), 'quiz')); 187 188 // Close time 189 $mform->addElement('date_time_selector', 'timeclose', get_string('quizclose', 'quiz'), array('optional'=>true)); 190 $mform->setHelpButton('timeclose', array('timeopen', get_string('quizclose', 'quiz'), 'quiz')); 191 192 // Password 193 $mform->addElement('text', 'password', get_string('requirepassword', 'quiz')); 194 $mform->setType('password', PARAM_TEXT); 195 $mform->setHelpButton('password', array('requirepassword', get_string('requirepassword', 'quiz'), 'quiz')); 196 // $mform->setAdvanced('password'); 197 198 // Subnet 199 $mform->addElement('text', 'subnet', get_string('requiresubnet', 'quiz')); 200 $mform->setType('subnet', PARAM_TEXT); 201 $mform->setHelpButton('subnet', array('requiresubnet', get_string('requiresubnet', 'quiz'), 'quiz')); 202 $mform->setDefault('subnet', get_user_preferences('hotpot_subnet')); 203 // $mform->setAdvanced('subnet'); 204 205 // Allow review? 206 $mform->addElement('selectyesno', 'review', get_string('allowreview', 'quiz')); 207 $mform->setDefault('review', get_user_preferences('hotpot_review', HOTPOT_YES)); 208 $mform->setHelpButton('review', array('review', get_string('allowreview', 'quiz'), 'quiz')); 209 // $mform->setAdvanced('forceplugins'); 210 211 // Maximum number of attempts 212 $options = array( 213 0 => get_string("attemptsunlimited", "quiz"), 214 1 => '1 '.strtolower(get_string("attempt", "quiz")) 215 ); 216 for ($i=2; $i<=10; $i++) { 217 $options[$i] = "$i ".strtolower(get_string("attempts", "quiz")); 218 } 219 $mform->addElement('select', 'attempts', get_string('attemptsallowed', 'quiz'), $options); 220 $mform->setDefault('attempts', get_user_preferences('hotpot_attempts', 0)); // 0=unlimited 221 $mform->setHelpButton('attempts', array('attempts', get_string('attemptsallowed', 'quiz'), 'quiz')); 222 // $mform->setAdvanced('forceplugins'); 223 224 //----------------------------------------------------------------------------------------------- 225 $mform->addElement('header', 'gradeshdr', get_string('grades', 'grades')); 226 //----------------------------------------------------------------------------------------------- 227 228 // Maximum grade 229 $options = array(); 230 for ($i=100; $i>=1; $i--) { 231 $options[$i] = $i; 232 } 233 $options[0] = get_string("nograde"); 234 $mform->addElement('select', 'grade', get_string('maximumgrade'), $options); 235 $mform->setDefault('grade', get_user_preferences('hotpot_grade', 100)); 236 $mform->setHelpButton('grade', array('maxgrade', get_string('maximumgrade'), 'quiz')); 237 // $mform->setAdvanced('forceplugins'); 238 239 // Maximum grading method 240 $mform->addElement('select', 'grademethod', get_string('grademethod', 'quiz'), $HOTPOT_GRADEMETHOD); 241 $mform->setDefault('grademethod', get_user_preferences('hotpot_grademethod', HOTPOT_GRADEMETHOD_HIGHEST)); 242 $mform->setHelpButton('grademethod', array('grademethod', get_string('grademethod', 'quiz'), 'quiz')); 243 // $mform->setAdvanced('forceplugins'); 244 245 //----------------------------------------------------------------------------------------------- 246 $mform->addElement('header', 'reportshdr', get_string('reports')); 247 //----------------------------------------------------------------------------------------------- 248 249 // Enable click reporting? 250 $mform->addElement('selectyesno', 'clickreporting', get_string('clickreporting', 'hotpot')); 251 $mform->setDefault('clickreporting', get_user_preferences('hotpot_clickreporting', HOTPOT_NO)); 252 $mform->setHelpButton('clickreporting', array('clickreporting', get_string('clickreporting', 'hotpot'), 'hotpot')); 253 // $mform->setAdvanced('forceplugins'); 254 255 //---------------------------------------------- 256 $this->standard_coursemodule_elements(); 257 //---------------------------------------------- 258 259 $this->add_action_buttons(); 260 261 $js = '<script type="text/javascript" src="'.$CFG->wwwroot.'/mod/hotpot/mod_form.js"></script>'; 262 $mform->addElement('static', 'hotpot_mod_form_js', '', $js); 263 } 264 265 function data_preprocessing(&$defaults){ 266 } 267 268 function validation(&$data) { 269 // http://docs.moodle.org/en/Development:lib/formslib.php_Validation 270 global $CFG, $COURSE; 271 $errors = array(); 272 273 // location 274 if (empty($data['location'])) { 275 // this shouldn't happen 276 $data['location'] = $COURSE->id; 277 } else { 278 if ($data['location']==$COURSE->id) { 279 // this is normal 280 } else if ($data['location']==SITEID && has_capability('moodle/course:managefiles', get_context_instance(CONTEXT_SYSTEM))) { 281 // admin can access site files 282 } else { 283 // location is invalid or missing, so set to default 284 $data['location'] = $COURSE->id; 285 } 286 } 287 288 // reference 289 if (isset($data['reference'])) { 290 $data['reference'] = trim($data['reference']); 291 } 292 if (empty($data['reference'])) { 293 $errors['reference_elements'] = get_string('error_nofilename', 'hotpot'); 294 } else { 295 if (preg_match('|^https?://|', $data['reference'])) { 296 // URL 297 $errors['reference_elements'] = 'Sorry, handling of URLs is not implemented yet'; 298 } else { 299 // course files 300 $filepath = $CFG->dataroot.'/'.$data['location'].'/'.$data['reference']; 301 if (! file_exists($filepath)) { 302 $errors['reference_elements'] = get_string('error_pathdoesnotexist', 'hotpot', $filepath); 303 } else if (! $data['quizchain'] && ! is_file($filepath)) { 304 $errors['reference_elements'] = get_string('error_folderwithoutquizchain', 'hotpot'); 305 } 306 } 307 } 308 309 // studentfeedbackurl 310 if (empty($data['studentfeedbackurl']) || $data['studentfeedbackurl']=='http://') { 311 $data['studentfeedbackurl'] = ''; 312 $error = false; 313 if ($data['studentfeedback']==HOTPOT_FEEDBACK_WEBPAGE) { 314 $error = true; 315 } 316 if ($data['studentfeedback']==HOTPOT_FEEDBACK_FORMMAIL) { 317 $error = true; 318 } 319 if ($error) { 320 $errors['studentfeedback_elements']= get_string('error_nofeedbackurlformmail', 'hotpot'); 321 } 322 } 323 324 return $errors; 325 } 326 } 327 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Jan 14 11:33:29 2009 | Cross-referenced by PHPXref 0.7 |