function definition() { global $USER, $context; /// Adding fields $mform =& $this->_form; $mform->addElement('hidden', 'post_form', 'addschool'); if (optional_param('detail', 0, PARAM_INT) == 1) { $mform->addElement('hidden', 'detail', 1); } $mform->addElement('header', 'praxeaddschoolfieldset'); $mform->addElement('text', 'name', get_string('schoolname', 'praxe'), array('size' => '64')); $mform->setType('name', PARAM_TEXT); $mform->addRule('name', null, 'required', null, 'client'); $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client'); $options = array(PRAXE_SCHOOL_TYPE_1 => PRAXE_SCHOOL_TYPE_1_TEXT, PRAXE_SCHOOL_TYPE_2 => PRAXE_SCHOOL_TYPE_2_TEXT, PRAXE_SCHOOL_TYPE_3 => PRAXE_SCHOOL_TYPE_3_TEXT, PRAXE_SCHOOL_TYPE_4 => PRAXE_SCHOOL_TYPE_4_TEXT, PRAXE_SCHOOL_TYPE_5 => PRAXE_SCHOOL_TYPE_5_TEXT, PRAXE_SCHOOL_TYPE_6 => PRAXE_SCHOOL_TYPE_6_TEXT); $mform->addElement('select', 'type', get_string('schooltype', 'praxe'), $options); $mform->addElement('text', 'street', get_string('street', 'praxe'), array('size' => '64')); $mform->setType('street', PARAM_TEXT); $mform->addRule('street', null, 'required', null, 'client'); $mform->addRule('street', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); $mform->addElement('text', 'city', get_string('city', 'praxe'), array('size' => '64')); $mform->setType('city', PARAM_TEXT); $mform->addRule('city', null, 'required', null, 'client'); $mform->addRule('city', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); $mform->addElement('text', 'zip', get_string('zipcode', 'praxe'), array('size' => '20')); $mform->setType('zip', PARAM_TEXT); $mform->addRule('zip', null, 'numeric', null, 'client'); $mform->addRule('zip', get_string('maximumchars', '', 5), 'maxlength', 5, 'client'); $mform->addElement('text', 'email', get_string('email', 'praxe'), array('size' => '20')); $mform->setType('email', PARAM_TEXT); $mform->addRule('email', null, 'email', null, 'client'); $mform->addRule('email', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); $mform->addElement('text', 'phone', get_string('phone', 'praxe'), array('size' => '20')); $mform->setType('phone', PARAM_TEXT); $mform->addRule('phone', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); $mform->addElement('text', 'website', get_string('website', 'praxe'), array('size' => '20')); $mform->setType('website', PARAM_TEXT); $mform->addRule('website', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); if (has_capability('mod/praxe:manageallincourse', $context)) { //TODO - nacist uzivatele z cohort EXTHEADM praxe_get_cohort_members('EXTHEADM'); $headms = praxe_get_cohort_members(PRAXE_COHORT_HEADMASTERS); if ($headms) { $options = array(0 => get_string('noselection', 'praxe')); foreach ($headms as $h) { $options[$h->id] = s($h->firstname) . " " . s($h->lastname); } $mform->addElement('select', 'headmaster', get_string('headmaster', 'praxe'), $options); } else { $mform->addElement('hidden', 'headmaster', 0); $mform->addElement('static', 'static_headm', get_string('headmaster', 'praxe'), get_string('noselection', 'praxe')); } } elseif (praxe_has_capability('beheadmaster')) { $mform->addElement('hidden', 'headmaster', $USER->id); } $this->add_action_buttons(true); }
/** * It is used if the edit data required. Set values of form elements and add hidden values for edit. * @param object $data - object with form data */ public function set_form_to_edit($data) { $mform =& $this->_form; foreach ((array) $data as $k => $v) { if ($mform->elementExists($k)) { $mform->setDefault($k, s($v), true); } } $actualyear = (int) date('Y', time()); $freeze = array(); if (!praxe_is_location_fully_editable($data->id)) { $freeze = array('studyfield', 'isced', 'year', 'term', 'active'); } if (!praxe_has_capability('assignteachertolocation')) { $freeze[] = 'teacher'; } $mform->freeze($freeze); $mform->addElement('hidden', 'edit', 'true'); $mform->addElement('hidden', 'locationid', $data->id); }
/** * * @param object $rec - object of praxe record to be shown * @return string */ public static function show_record_detail($rec) { global $mode, $USER, $CFG, $OUTPUT; /// left top table /// $tab1 = new html_table(); $tab1->align = array('right', 'left'); //$tab1->width = '300px'; $tab1->attributes['class'] = "floatinfotable left twocolstable"; $school = array($rec->name); if (strlen(trim($rec->city))) { $school[] = $rec->city; } if (strlen(trim($rec->street))) { $school[] = $rec->street; } if (strlen(trim($rec->phone))) { $school[] = $rec->phone; } if (strlen(trim($rec->email))) { $school[] = $rec->email; } $tab1->data[] = array(get_string('school', 'praxe') . ":", format_string(implode(', ', $school))); $tab1->data[] = array(get_string('subject', 'praxe') . ":", $rec->subject); if ($rec->teacherid && $USER->id != $rec->teacherid) { $tab1->data[] = array(get_string('teacher', 'praxe') . ":", praxe_get_user_fullname((object) array('id' => $rec->teacherid, 'firstname' => $rec->teacher_firstname, 'lastname' => $rec->teacher_lastname))); } /// right top table /// $tab2 = new html_table(); $tab2->align = array('right', 'left'); //$tab2->width = '350px'; $tab2->attributes['class'] = "floatinfotable left twocolstable last"; $tab2->data[] = array(get_string('student', 'praxe') . ":", praxe_get_user_fullname($rec->student)); $tab2->data[] = array(get_string('status', 'praxe') . ":", praxe_get_status_info($rec->status)); if ($rec->status == PRAXE_STATUS_ASSIGNED) { $tab2->data[] = array(get_string('action') . ':', self::confirm_location_form($rec->id)); return html_writer::table($tab1) . html_writer::table($tab2) . '<div class="clearer"></div>'; } $return = html_writer::table($tab1) . html_writer::table($tab2) . '<div class="clearer"></div>'; $return .= "<h3>" . get_string('schedule', 'praxe') . "</h3>"; $schedules = praxe_get_schedules($rec->id); if (!$schedules) { return $return . get_string('no_schedule_items', 'praxe'); } $sched = array(); $cols = array(); foreach ($schedules as $sch) { if (!isset($sched[date("j_m", $sch->timestart)])) { $sched[date("j_m", $sch->timestart)] = array('date' => $sch->timestart); } $sched[date("j_m", $sch->timestart)][$sch->lesnumber] = $sch; if (!in_array($sch->lesnumber, $cols)) { $cols[] = $sch->lesnumber; } } /// schedule table /// $tab3 = new html_table(); if (count($cols)) { sort($cols); } $tab3->head = $cols; array_unshift($tab3->head, get_string('date')); for ($i = 1; $i < count($tab3->head); $i++) { if (is_null($tab3->head[$i])) { $tab3->head[$i] = "---"; } else { $tab3->head[$i] = s($tab3->head[$i]) . "." . get_string('lesson', 'praxe'); } } $cellf = new html_table_cell(); $cellf->attributes['class'] = "header first"; $cellf->header = true; $paramsToAssing = array('post_form' => 'assigntoinspection', 'sesskey' => sesskey(), 'submitbutton' => 'true', 'userid' => $USER->id); $paramsToRemAssing = array('post_form' => 'removefrominspection', 'sesskey' => sesskey(), 'submitbutton' => 'true'); foreach ($sched as $row) { $datetd = userdate($row['date'], get_string('strftimeday', 'praxe')) . "<br />" . userdate($row['date'], get_string('strftimedateshort')); $cell = clone $cellf; $cell->text = $datetd; $cells = array($cell); foreach ($cols as $k => $c) { if (isset($row[$c])) { $item = userdate($row[$c]->timestart, get_string('strftimetime')) . " - " . userdate($row[$c]->timeend, get_string('strftimetime')) . "<br>" . s($row[$c]->lessubject) . "<br>" . get_string('schoolroom', 'praxe') . ": " . s($row[$c]->schoolroom); $item = "<div>" . $OUTPUT->action_link(praxe_get_base_url(array("mode" => $mode, "recordid" => $rec->id, "scheduleid" => $row[$c]->id)), $item, null, array('title' => get_string('detail', 'praxe'))) . "</div>"; if (count($row[$c]->inspectors)) { foreach ($row[$c]->inspectors as $insp) { $item .= "<div class=\"inspector right\">" . $OUTPUT->render(new pix_icon('icon_inspect', get_string('inspection', 'praxe'), 'praxe')) . " " . praxe_get_user_fullname($insp); /// remove assinging from item action /// if ($USER->id == $insp->id || praxe_has_capability('manageallincourse')) { $params = $paramsToRemAssing; $params['scheduleid'] = $row[$c]->id; $params['inspid'] = $insp->id; $item .= $OUTPUT->action_icon(praxe_get_base_url($params), new pix_icon('t/delete', get_string('removeinspection', 'praxe'))); } $item .= "</div>"; } } else { if (praxe_has_capability('assignselftoinspection')) { $params = $paramsToAssing; $params['scheduleid'] = $row[$c]->id; /// assign inspector button /// $item .= "<div class=\"inspector right\">" . $OUTPUT->single_button(praxe_get_base_url($params), get_string('gotoinspection', 'praxe'), 'post') . '</div>'; } } $cells[] = new html_table_cell($item); } else { $cells[] = new html_table_cell(' '); } } $tab3->data[] = new html_table_row($cells); } return $return . html_writer::table($tab3); }
print_error('notallowedaction', 'praxe'); } if ($DB->delete_records('praxe_schedule_inspections', (array) $post)) { redirect(praxe_get_base_url(array("mode" => $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_HOME], "recordid" => $sch->record)), get_string('removed_from_inspection', 'praxe')); } break; case 'confirmlocation': /// confirmation location by external teacher or teacher $recid = optional_param('recordid', 0, PARAM_INT); $record = praxe_get_record($recid); $refuse = optional_param('submitrefuse', null, PARAM_TEXT); $confirm = optional_param('submitconfirm', null, PARAM_TEXT); if (!$record || !($refuse || $confirm)) { print_error('notallowedaction', 'praxe'); } if (!praxe_has_capability('confirmlocation') && !(praxe_has_capability('confirmownlocation') && $record->teacherid == $USER->id)) { print_error('notallowedaction', 'praxe'); } $post->id = $record->id; $msg = ''; if (!is_null($refuse)) { $post->status = PRAXE_STATUS_REFUSED; $msg = get_string('you_refused_location', 'praxe'); } else { if (!is_null($confirm)) { $post->status = PRAXE_STATUS_CONFIRMED; $msg = get_string('you_confirmed_location', 'praxe'); } } if ($DB->update_record('praxe_records', $post) && false) { if ($post->status = PRAXE_STATUS_CONFIRMED) {
$options[0] = get_string('all'); foreach ($schools as $sch) { $options[$sch->id] = $sch->name . "({$sch->city}, {$sch->street})"; } $params = array('mode' => $mode); $sel = new single_select(praxe_get_base_url($params), 'schoolid', $options, $viewschool, null, 'praxepop_praxeschoolselect'); $sel->label = get_string('school', 'praxe'); $tab_content .= $OUTPUT->render($sel); } $url = $CFG->wwwroot . '/mod/praxe/view.php?id=' . $cm->id . '&schoolid=' . $viewschool; $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_VIEWSCHOOL, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_SCHOOLS], get_string('school_detail', 'praxe')); $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_TEACHERS, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_TEACHERS], get_string('teachers', 'praxe')); $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_LOCATIONS, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_LOCATIONS], get_string('locations', 'praxe')); if (!empty($viewschool)) { //$subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_VIEWSCHOOL, $url.'&mode='.$tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_SCHOOLS], get_string('school_info', 'praxe')); if (praxe_has_capability('manageallincourse')) { $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_EDITSCHOOL, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_EDITSCHOOL], get_string('editschool', 'praxe')); //$subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_TEACHERS, $url.'&mode='.$tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_TEACHERS], get_string('teachers', 'praxe')); $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_ASSIGNTEACHERS, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_ASSIGNTEACHERS], get_string('assignteachers', 'praxe')); $subtabrows[] = new tabobject(PRAXE_TAB_EDITTEACHER_ADDLOCATION, $url . '&mode=' . $tab_modes['editteacher'][PRAXE_TAB_EDITTEACHER_ADDLOCATION], get_string('addlocation', 'praxe')); } } if ($tab == PRAXE_TAB_EDITTEACHER_SCHOOLS) { $activated[] = PRAXE_TAB_EDITTEACHER_VIEWSCHOOL; } } if ($tab == PRAXE_TAB_EDITTEACHER_LOCATIONS) { $options = array("0" => get_string('all'), "1" => get_string('actual', 'praxe')); $params = array('mode' => $mode); if (!is_null($viewschool)) { $params['schoolid'] = (int) $viewschool;
$confirm = optional_param('confirmsubmitbutton', null, PARAM_ALPHA); if (!is_null($cancel)) { if ($praxeaction == 'deleteschedule') { redirect(praxe_get_base_url(array('mode' => 'schedule'))); } redirect(praxe_get_base_url()); } $echo = '<div class="center">'; switch ($praxeaction) { case 'deleteschedule': $scheduleid = optional_param('scheduleid', null, PARAM_INT); $schedule = $DB->get_record('praxe_schedules', array('id' => $scheduleid)); if (!$schedule) { print_error('notallowedaction', 'praxe'); } $editable = praxe_has_capability('editstudentschedule') && $DB->get_record('praxe_records', array('id' => $schedule->record, 'student' => $USER->id)) || praxe_has_capability('manageallincourse'); if (!$editable) { print_error('notallowedaction', 'praxe'); } if (is_null($confirm)) { $echo .= '<div class="before_form">' . get_string('realy_delete_schedule', 'praxe') . '</div>'; $table = new html_table(); $yc = $schedule->yearclass; if ($schedule->yearclass >= 6 && $schedule->yearclass <= 9) { $yc = PRAXE_ISCED_2_TEXT . " {$yc}."; } else { if ($schedule->yearclass >= 10) { $yc = PRAXE_ISCED_3_TEXT . ' ' . ($yc - 9) . "."; } } $table->head = array(get_string('date'), get_string('lesson_number', 'praxe'), get_string('time'), get_string('yearclass', 'praxe'), get_string('schoolroom', 'praxe'), get_string('subject', 'praxe'));
/** * * @param array $schools - array of schools objects to be displayed * @param array $editlinkparams[optional] - default parameters to url that are always added: id=$cm->id, schoolid=id of school.<br> * Extra parameters to be added must be in array format as nameOfParameter=>value * @param array $aSort[optional] - used sorting in actual list of schools (name, type) - values (ASC, DESC) * Items must be in array format as nameOfParameter=>value * @return string */ public static function show_schools($schools, $editlinkparams = array(), $aSort = array()) { global $USER, $OUTPUT; $baseLink = praxe_get_base_url(array('mode' => 'schools')); $table = new html_table(); $strname = get_string('schoolname', 'praxe'); if (isset($aSort['name'])) { $toLink = $aSort['name'] == 'ASC' ? 'DESC' : 'ASC'; $strname = $OUTPUT->action_link($baseLink . '&sname=' . $toLink, $strname); $strname .= $OUTPUT->pix_icon('t/sort_' . strtolower($aSort['name']), $aSort['name']); } else { $strname = $OUTPUT->action_link($baseLink . '&sname=ASC', $strname); } $strtype = get_string('schooltype', 'praxe'); if (isset($aSort['type'])) { $toLink = $aSort['type'] == 'ASC' ? 'DESC' : 'ASC'; $strtype = $OUTPUT->action_link($baseLink . '&stype=' . $toLink, $strtype); $strtype .= $OUTPUT->pix_icon('t/sort_' . strtolower($aSort['type']), $aSort['type']); } else { $strtype = $OUTPUT->action_link($baseLink . '&stype=ASC', $strtype); } $straddress = get_string('address', 'praxe'); $strcontact = get_string('contact', 'praxe'); $table->head = array($strname, $strtype, $straddress, $strcontact); $table->align = array('left', 'left', 'left', 'left'); $params = array(); foreach ($editlinkparams as $name => $val) { $params[s($name)] = s($val); } $baseLink = praxe_get_base_url($params); foreach ($schools as $sch) { $address = s($sch->street) . ', ' . s($sch->zip) . ' ' . s($sch->city); $contact = array(); if (!empty($sch->email)) { $contact[] = s($sch->email); } if (!empty($sch->phone)) { $contact[] = s($sch->phone); } if (!empty($sch->website)) { $contact[] = s($sch->website); } $contact = html_writer::tag('p', implode("<br>", $contact)); $schooltype = constant('PRAXE_SCHOOL_TYPE_' . (int) $sch->type . '_TEXT'); $row = array(s($sch->name), $schooltype, $address, $contact); if (praxe_has_capability('editanyschool') || praxe_has_capability('editownschool') && $sch->headmaster == $USER->id) { $stredit = get_string('editschool', 'praxe'); $row[] = $OUTPUT->action_icon($baseLink . '&schoolid=' . $sch->id, new pix_icon('t/edit', $stredit)); } $table->data[] = $row; } if (isset($stredit)) { $table->head[] = $stredit; $table->align[] = 'center'; } return html_writer::table($table); }
public function show_schedule($schedules, $boolReturn = true, $editlinks = array()) { global $CFG, $OUTPUT; if (!$schedules) { $ret = get_string('no_schedule_items', 'praxe'); if ($boolReturn) { return $ret; } else { $this->content .= $ret; return true; } } $table = new html_table(); $table->head = array(get_string('date'), get_string('lesson_number', 'praxe'), get_string('time'), get_string('yearclass', 'praxe'), get_string('schoolroom', 'praxe'), get_string('subject', 'praxe'), get_string('lesson_theme', 'praxe'), get_string('edit'), get_string('inspection', 'praxe')); $table->align = array('left', 'center', 'center', 'center', 'center', 'left', 'left', 'center', 'center'); $editable = praxe_has_capability('editstudentschedule') || praxe_has_capability('manageallincourse'); $params = $editlinks; $delparams = array('praxeaction' => 'deleteschedule'); foreach ($schedules as $item) { if (is_null($item->lesnumber)) { $item->lesnumber = "---"; } else { $item->lesnumber .= "."; } $row = array(userdate((int) $item->timestart, get_string('strftimedateshort')), $item->lesnumber, userdate((int) $item->timestart, "%H:%M") . ' - ' . userdate((int) $item->timeend, "%H:%M"), praxe_get_yearclass($item->yearclass), s($item->schoolroom), s($item->lessubject), format_text($item->lestheme)); if ($editable && $item->timestart - PRAXE_TIME_TO_EDIT_SCHEDULE > time()) { $params['scheduleid'] = $item->id; $delparams['scheduleid'] = $item->id; $row[] = $OUTPUT->action_icon(praxe_get_base_url($params), new pix_icon('t/edit', get_string('edit'))) . $OUTPUT->action_icon(praxe_get_base_url($delparams), new pix_icon('t/delete', get_string('delete'))); } else { $row[] = "---"; } if (count($item->inspectors)) { $ins = ""; foreach ($item->inspectors as $insp) { $ins .= "<div class=\"inspector right\">" . $OUTPUT->render(new pix_icon('icon_inspect', get_string('inspection', 'praxe'), 'praxe')) . " " . praxe_get_user_fullname($insp) . "</div>"; } $row[] = $ins; } else { $row[] = " "; } $table->data[] = $row; } if ($boolReturn) { return html_writer::table($table); } else { $this->content .= html_writer::table($table); return true; } }