function organizer_make_myapp_section($params, $organizer, $app, &$popups) { global $DB; if ($app) { $columns = array('datetime', 'location', 'participants', 'teacher', 'status', 'actions'); $align = array('left', 'left', 'left', 'left', 'center', 'center'); $sortable = array(); $table = new html_table(); $table->id = 'my_slot_overview'; $table->attributes['class'] = 'generaltable boxaligncenter overview'; $table->head = organizer_generate_table_header($columns, $sortable, $params); $table->data = organizer_generate_table_content($columns, $params, $organizer, $popups, true, false); $table->align = $align; $output = organizer_render_table_with_footer($table, false); $output = preg_replace('/<th /', '<th style="width: 0%;" ', $output); // Afterburner fix - try to fix it using css! $slot = $DB->get_record('organizer_slots', array('id' => $app->slotid)); if ($slot->starttime - $organizer->relativedeadline - time() > 0) { $a = new stdClass(); list($a->days, $a->hours, $a->minutes, $a->seconds) = organizer_get_countdown($slot->starttime - $organizer->relativedeadline - time()); $class = $a->days > 1 ? "countdown_normal" : ($a->hours > 1 ? "countdown_hurry" : "countdown_critical"); $output .= "<p><span class=\"{$class}\">" . get_string('infobox_deadline_countdown', 'organizer', $a) . '</span></p>'; } else { $output .= '<p><span class="countdown_passed">' . get_string('infobox_deadline_passed', 'organizer') . '</span></p>'; } if ($slot->starttime - time() > 0) { $a = new stdClass(); list($a->days, $a->hours, $a->minutes, $a->seconds) = organizer_get_countdown($slot->starttime - time()); $class = $a->days > 1 ? "countdown_normal" : ($a->hours > 1 ? "countdown_hurry" : "countdown_critical"); $output .= "<p><span class=\"{$class}\">" . get_string('infobox_app_countdown', 'organizer', $a) . '</span></p>'; } else { $output .= '<p><span class="countdown_passed">' . get_string('infobox_app_occured', 'organizer') . '</span></p>'; } } else { $output = '<p>' . get_string('infobox_myslot_noslot', 'organizer') . '</p>'; } return organizer_make_section('infobox_myslot', $output); }
private function _create_preview_table($columns) { global $PAGE, $OUTPUT, $cm; $jsmodule = array('name' => 'mod_organizer', 'fullpath' => '/mod/organizer/module.js', 'requires' => array('node', 'node-event-delegate')); $PAGE->requires->js_init_call('M.mod_organizer.init_organizer_print_slots_form', null, false, $jsmodule); $table = new html_table(); $table->id = 'print_preview'; $table->attributes['class'] = 'boxaligncenter'; $tsort = isset($_SESSION['organizer_tsort']) ? $_SESSION['organizer_tsort'] : ""; if ($tsort != "") { $order = "ASC"; if (substr($tsort, strlen($tsort) - strlen("DESC")) == "DESC") { $tsort = substr($tsort, 0, strlen($tsort) - strlen("DESC")); $order = "DESC"; } } $icon_up = ' <img src="' . $OUTPUT->pix_url('t/up') . '" class="iconsmall" alt="up" />'; $icon_down = ' <img src=' . $OUTPUT->pix_url('t/down') . '" class="iconsmall" alt="down" />'; $header = array(); foreach ($columns as $column) { $content = '<a href="?id=' . $cm->id . '&sesskey=' . sesskey() . '&action=print&tsort=' . $column; $icon = ""; if ($column == $tsort) { if ($order == "ASC") { $content .= "DESC"; $icon = $icon_up; } else { $icon = $icon_down; } } $content .= '" name="' . $column . '_cell">' . get_string("th_{$column}", 'organizer') . $icon; $content .= '</a>'; $imgattr = array('src' => $OUTPUT->pix_url('t/switch_minus'), 'alt' => get_string('hide'), 'id' => "toggle_{$column}", 'style' => 'cursor: pointer', 'title' => get_string("th_{$column}", 'organizer')); $content .= ' ' . html_writer::empty_tag('img', $imgattr); $cell = new html_table_cell($content); $cell->header = true; $header[] = $cell; } $table->head = $header; switch ($tsort) { case "datetime": $sort = "starttime"; break; case "location": $sort = "s.location"; break; case "teacher": $sort = "teacherfirstname"; break; case "participant": $sort = "u.lastname"; break; case "idnumber": $sort = "u.idnumber"; break; case "attended": $sort = "a.attended"; break; case "grade": $sort = "a.grade"; break; case "feedback": $sort = "a.feedback"; break; default: $sort = NULL; } if (!isset($order)) { $order = ""; } else { if ($order != "DESC" && $order != "ASC") { $order = ""; } } $data =& $this->_customdata; $entries = organizer_fetch_table_entries($data['slots'], $sort . ' ' . $order); $rows = array(); $rowspan = 0; $numcols = 0; $evenodd = 0; foreach ($entries as $entry) { if ($numcols == 10) { break; } $row = $rows[] = new html_table_row(); foreach ($columns as $column) { if ($rowspan == 0) { switch ($column) { case 'datetime': $datetime = userdate($entry->starttime, get_string('fulldatetimetemplate', 'organizer')) . ' - ' . userdate($entry->starttime + $entry->duration, get_string('timetemplate', 'organizer')); $content = "<span name='{$column}_cell'>" . $datetime . '</span>'; $cell = new html_table_cell($content); $cell->rowspan = $entry->rowspan; $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'location': $location = $entry->location; $content = "<span name='{$column}_cell'>" . $location . '</span>'; $cell = new html_table_cell($content); $cell->rowspan = $entry->rowspan; $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'teacher': $a = new stdClass(); $a->firstname = $entry->teacherfirstname; $a->lastname = $entry->teacherlastname; $name = get_string('fullname_template', 'organizer', $a); $content = "<span name='{$column}_cell'>" . $name . '</span>'; $cell = new html_table_cell($content); $cell->rowspan = $entry->rowspan; $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'groupname': $groupname = $entry->groupname; $content = "<span name='{$column}_cell'>" . $groupname . '</span>'; $cell = new html_table_cell($content); $cell->rowspan = $entry->rowspan; $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; default: break; } } switch ($column) { case 'participant': $a = new stdClass(); $a->firstname = $entry->firstname; $a->lastname = $entry->lastname; $name = get_string('fullname_template', 'organizer', $a); $content = "<span name='{$column}_cell'>" . $name . '</span>'; $cell = new html_table_cell($content); $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'idnumber': $idnumber = isset($entry->idnumber) && $entry->idnumber !== '' ? $entry->idnumber : ''; $content = "<span name='{$column}_cell'>" . $idnumber . '</span>'; $cell = new html_table_cell($content); $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'attended': $attended = isset($entry->attended) ? $entry->attended == 1 ? 'Yes' : 'No' : ''; $content = "<span name='{$column}_cell'>" . $attended . '</span>'; $cell = new html_table_cell($content); $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'grade': $grade = isset($entry->grade) ? sprintf("%01.2f", $entry->grade) : ''; $content = "<span name='{$column}_cell'>" . $grade . '</span>'; $cell = new html_table_cell($content); $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'feedback': $feedback = isset($entry->feedback) && $entry->feedback !== '' ? $entry->feedback : ''; $content = "<span name='{$column}_cell'>" . $feedback . '</span>'; $cell = new html_table_cell($content); $cell->style = 'vertical-align: middle;'; $row->cells[] = $cell; break; case 'datetime': case 'location': case 'teacher': case 'groupname': break; default: print_error("Unsupported column type: {$column}"); } } $numcols++; $row->attributes['class'] = " r{$evenodd}"; $rowspan = ($rowspan + 1) % $entry->rowspan; if ($rowspan == 0) { $evenodd = $evenodd ? 0 : 1; } } $table->data = $rows; return organizer_render_table_with_footer($table, false, true); }
function organizer_generate_registration_status_view($params, $instance, &$popups) { $output = organizer_generate_tab_row($params, $instance->context); $output .= organizer_make_infobox($params, $instance->organizer, $instance->context, $popups); $columns = array('status'); if ($instance->organizer->isgrouporganizer) { $columns[] = 'group'; $columns[] = 'appdetails'; } else { $columns[] = 'participants'; if ($instance->organizer->grade != 0) { $columns[] = 'appdetails'; } } $columns = array_merge($columns, array('datetime', 'location', 'teacher', 'actions')); $align = array('center', 'left', 'center', 'left', 'left', 'left', 'center'); $sortable = array('status', 'group'); $table = new html_table(); $table->id = 'slot_overview'; $table->attributes['class'] = 'generaltable boxaligncenter overview'; $table->head = organizer_generate_reg_table_header($columns, $sortable, $params); $table->data = organizer_organizer_generate_registration_table_content($columns, $params, $instance->organizer, $instance->context, $popups); $table->align = $align; $output .= organizer_render_table_with_footer($table); return $output; }