ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.libdir.'/formslib.php'); require_once($CFG->libdir.'/filelib.php'); require_once($CFG->libdir.'/completionlib.php'); require_once($CFG->libdir.'/gradelib.php'); /** * Default form for editing course section * * Course format plugins may specify different editing form to use */ class editsection_form extends moodleform { function definition() { global $CFG, $OUTPUT; $mform = $this->_form; $course = $this->_customdata['course']; $sectioninfo = $this->_customdata['cs']; $mform->addElement('header', 'generalhdr', get_string('general')); $mform->addElement( 'text', 'name', get_string('sectionname'), [ 'placeholder' => $this->_customdata['defaultsectionname'], 'size' => 30, 'maxlength' => 255, ], ); $mform->setType('name', PARAM_RAW); $mform->setDefault('name', $sectioninfo->name); $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client'); /// Prepare course and the editor $mform->addElement('editor', 'summary_editor', get_string('description'), null, $this->_customdata['editoroptions']); $mform->setType('summary_editor', PARAM_RAW); $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); // additional fields that course format has defined $courseformat = course_get_format($course); $formatoptions = $courseformat->section_format_options(true); if (!empty($formatoptions)) { $elements = $courseformat->create_edit_form_elements($mform, true); } if (!empty($CFG->enableavailability)) { $mform->addElement('header', 'availabilityconditions', get_string('restrictaccess', 'availability')); $mform->setExpanded('availabilityconditions', false); // Availability field. This is just a textarea; the user interface // interaction is all implemented in JavaScript. The field is named // availabilityconditionsjson for consistency with moodleform_mod. $mform->addElement('textarea', 'availabilityconditionsjson', get_string('accessrestrictions', 'availability'), ['class' => 'd-none'] ); // Availability loading indicator. $loadingcontainer = $OUTPUT->container( $OUTPUT->render_from_template('core/loading', []), 'd-flex justify-content-center py-5 icon-size-5', 'availabilityconditions-loading' ); $mform->addElement('html', $loadingcontainer); } $mform->_registerCancelButton('cancel'); } public function definition_after_data() { global $CFG; $mform = $this->_form; $course = $this->_customdata['course']; if (!empty($CFG->enableavailability)) { \core_availability\frontend::include_all_javascript($course, null, $this->_customdata['cs']); } $this->add_action_buttons(); } /** * Load in existing data as form defaults * * @param stdClass|array $default_values object or array of default values */ function set_data($default_values) { if (!is_object($default_values)) { // we need object for file_prepare_standard_editor $default_values = (object)$default_values; } $editoroptions = $this->_customdata['editoroptions']; $default_values = file_prepare_standard_editor($default_values, 'summary', $editoroptions, $editoroptions['context'], 'course', 'section', $default_values->id); parent::set_data($default_values); } /** * Return submitted data if properly submitted or returns NULL if validation fails or * if there is no submitted data. * * @return object submitted data; NULL if not valid or not submitted or cancelled */ function get_data() { $data = parent::get_data(); if ($data !== null) { $editoroptions = $this->_customdata['editoroptions']; // Set name as an empty string if use default section name is checked. if ($data->name === false) { $data->name = ''; } $data = file_postupdate_standard_editor($data, 'summary', $editoroptions, $editoroptions['context'], 'course', 'section', $data->id); $course = $this->_customdata['course']; foreach (course_get_format($course)->section_format_options() as $option => $unused) { // fix issue with unset checkboxes not being returned at all if (!isset($data->$option)) { $data->$option = null; } } } return $data; } public function validation($data, $files) { global $CFG; $errors = array(); // Availability: Check availability field does not have errors. if (!empty($CFG->enableavailability)) { \core_availability\frontend::report_validation_errors($data, $errors); } return $errors; } }