예제 #1
0
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);
 }
예제 #3
0
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;
}