diff --git a/CHANGES b/CHANGES index b4f181c..9836631 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,75 @@ +2011-01-18 lrlopez + + * attendances.php: styles.php: + + Implemented copy attendance data from same-day sessions. + Fixed fast session dropdown list end time inaccuracy. + Enhanced session dropdown list. + + * lang/: en_utf8/attforblock.php, es_utf8/attforblock.php: + + Added new strings for the copy dropdown menus. + +2011-01-18 lrlopez + + * attendances.php: styles.php: + + Implemented fast session switching for same-day sessions. + Fixed some XHTML compliance tags (more coming) + + * lang/: en_utf8/attforblock.php, es_utf8/attforblock.php: + + Added new strings for the dropdown menus. + +2011-01-16 lrlopez + + * export.php: export_form.php: + * lang/: en_utf8/attforblock.php: es_utf8/attforblock.php: + Added "Start of period" into export tab and two new strings for + the new fields on the form. + +2011-01-15 lrlopez + + * db/install.xml: + + Bugs fixed. + + * attendances.php: locallib.php: manage.php: + + Fixed some minor bugs and code readibility issues. Now, in grid view + mode, statuses are always next to their radio buttons. + +2010-12-30 - 2011-01-04 lrlopez + + * lang/: es_utf8/attforblock.php: + + Updated and fixed Spanish translation (Enrique Robredo) + + * styles.php: + + Fixed yui-calendar CSS modifying global CSS behaviour. + + * manage.php: + + Added an option for choosing between show session duration or show end + time in session list. + + * db/: install.xml: upgrade.php: version.php: + * attsettings.php: lib.php: locallib.php: manage.php: report.php: + + Added support to allow more than one attendance in the same course. + + * sessions.php: + + Fixed DST bug (adding multiple sessions could generate invalid start + times if any DST change occur in-between) + + * attendances.php: + Implemented display modes (list and grid) + + * lang/: en_utf8/attforblock.php, es_utf8/attforblock.php: + Added new strings for the new display modes + 2010-07-10 - 2010-09-17 andreev.artem Implemented ability to add two types of sessions: common and group diff --git a/attendances.php b/attendances.php index 77c642c..fa2588f 100644 --- a/attendances.php +++ b/attendances.php @@ -16,6 +16,7 @@ $grouptype = required_param('grouptype', PARAM_INT); $group = optional_param('group', -1, PARAM_INT); // Group to show $sort = optional_param('sort','lastname', PARAM_ALPHA); + $copyfrom = optional_param('copyfrom', -1, PARAM_INT); if (! $cm = $DB->get_record('course_modules', array('id'=>$id))) { error('Course Module ID was incorrect'); @@ -38,7 +39,7 @@ print_error('badcontext'); } - $statlist = implode(',', array_keys( (array)get_statuses($course->id) )); + $statlist = implode(',', array_keys( (array)get_statuses($attforblock->id) )); if ($form = data_submitted()) { $students = array(); // stores students ids $formarr = (array)$form; @@ -103,6 +104,58 @@ $groupmode = groups_get_activity_groupmode($cm); $currentgroup = groups_get_activity_group($cm, true); + // get the viewmode & grid columns + $attforblockrecord = get_record('attforblock', 'id', $cm->instance);//'course', $course->id);'course', $course->id); + $view = optional_param('view', -1, PARAM_INT); + if ($view != -1) { + set_user_preference("attforblock_viewmode", $view); + } + else { + $view = get_user_preferences("attforblock_viewmode", SORTEDLISTVIEW); + } + $gridcols = optional_param('gridcols', -1, PARAM_INT); + if ($gridcols != -1) { + set_user_preference("attforblock_gridcolumns", $gridcols); + } + else { + $gridcols = get_user_preferences("attforblock_gridcolumns",5); + } + + echo '
"; + foreach($todaysessions as $sessdatarow) { + $descr = userdate($sessdatarow->sessdate, get_string('strftimehm', 'attforblock')) . "-" . userdate($sessdatarow->sessdate+$sessdatarow->duration, get_string('strftimehm', 'attforblock')); + if ($sessdatarow->description) { + $descr = $sessdatarow->description . ' ('.$descr.')'; + } + $optionssessions[$sessdatarow->id] = $descr; + } + popup_form("$dataurl&sessionid=", $optionssessions, 'fastsessionmenu', $sessionid, ''); + echo " | ||
"; + popup_form("$dataurl&view=", $options, 'viewmenu', $view, ''); + if ($view == SORTEDGRIDVIEW) { + $options = array (1 => '1 '.get_string('column','attforblock'),'2 '.get_string('columns','attforblock'),'3 '.get_string('columns','attforblock'), + '4 '.get_string('columns','attforblock'),'5 '.get_string('columns','attforblock'),'6 '.get_string('columns','attforblock'), + '7 '.get_string('columns','attforblock'),'8 '.get_string('columns','attforblock'),'9 '.get_string('columns','attforblock'), + '10 '.get_string('columns','attforblock')); + $dataurl .= "&view=$view"; + popup_form("$dataurl&gridcols=", $options, 'colsmenu', $gridcols, ''); + } + echo ' |
'; + echo '"; + popup_form("$dataurl©from=", $optionssessions, 'copysessionmenu', $sessionid, ''); + echo ' |
Crear Múltiples Sesiones
Esta función le permite crear múltiples sesiones en un único paso. Informe Modifique la forma en que se visualizan los datos de asistencia ajustando los parámetros. Los datos también pueden ser
descargados para una visualización sin conexión y analizarlos mediante el menú desplegable de "Informe"
-que puede encontrar en la pestaña "exportar".
- Fecha de Inicio de Sesión: seleccione la fecha de inicio de su curso
Fecha de Fin de Sesión: indique aquí el último día de clase
(el último día en que usted quiera tomar asistencia).
Días de Sesión: Seleccione los días de la semana en los que tenga clase.
diff --git a/lang/es/help/attforblock/report.html b/lang/es/help/attforblock/report.html
index 82cb49b..d653085 100644
--- a/lang/es/help/attforblock/report.html
+++ b/lang/es/help/attforblock/report.html
@@ -2,4 +2,4 @@
Informe individual: Si lo desea, también puede hacer click sobre el nombre del estudiante para poder ver un informe individualizado de su asistencia. En este sitio dispondrá de una opción para imprimir su informe personal o también podrá visualizar la asistencia del estudiante en todos los cursos en los que se encuentra matriculado (rol).
Asistencia
Actualizar asistencia
-Desde aquí podrá marcar los datos de asistencia de su grupo de estudiantes. Puede hacerlo individualmente o en bloque. Para asignar a todos sus alumnos el mismo valor, puede seleccionar la letra que figura en el encabezado de cada columna (P, J, T...) y luego modificar individualmente algún dato concreto. Al final del listado encontrará el botón "ok" (puede acceder rápidamente pulsando la tecla Fin de su teclado) que grabará los resultados. Puede modificar los valores en cualquier momento accediendo nuevamente la asistencia de este día/hora. Junto a cada registro encontrará una caja de texto que le permitirá anotar observaciones personalizadas para cada estudiante.
Desde aquí podrá marcar los datos de asistencia de su grupo de estudiantes. Puede hacerlo individualmente o en bloque. Para asignar a todos sus alumnos el mismo valor, puede seleccionar la letra que figura en el encabezado de cada columna (P, J, T...) y luego modificar individualmente algún dato concreto. Al final del listado encontrará el botón "ok" (puede acceder rápidamente pulsando la tecla Fin de su teclado) que grabará los resultados. Puede modificar los valores en cualquier momento accediendo nuevamente la asistencia de este día/hora. Junto a cada registro encontrará una caja de texto que le permitirá anotar observaciones personalizadas para cada estudiante.
Informe individual: Si lo desea, también puede hacer click sobre el nombre del estudiante para poder ver un informe individualizado de su asistencia. En este sitio dispondrá de una opción para imprimir su informe personal o también podrá visualizar la asistencia del estudiante en todos los cursos en los que se encuentra matriculado (rol).
'.$nextcourse->fullname.' | '; + $nextcourse = $DB->get_record('course', array('id'=> $rec['cid'])); + $nextattendance = $DB->get_record('attforblock', array('id'=> $rec['aid'])); + echo '|
'.$nextcourse->fullname.' - '.$nextattendance->name . ' | '; echo '';
- $complete = get_attendance($user->id, $nextcourse);
+ $complete = get_attendance($user->id, $nextcourse, $nextattendance);
if($complete) {
- print_attendance_table($user, $nextcourse, $attforblock);
+ print_attendance_table($user, $nextcourse, $nextattendance);
} else {
echo get_string('attendancenotstarted','attforblock');
}
@@ -393,6 +400,7 @@ function print_filter_controls($url, $id, $studentid=0, $sort=NULL, $printselect
$link = $url . "?id=$id" . ($sort ? "&sort=$sort" : "") . ($studentid ? "&student=$studentid" : "");
$currentgroup = -1;
+ $sessiontypeselector = '';
if ($printselector === GROUP_SELECTOR) {
$groupmode = groups_get_activity_groupmode($cm);
$currentgroup = groups_get_activity_group($cm, true);
diff --git a/manage.php b/manage.php
index c1c48da..7852630 100644
--- a/manage.php
+++ b/manage.php
@@ -10,7 +10,7 @@
$from = optional_param('from', PARAM_ACTION);
$view = optional_param('view', NULL, PARAM_ALPHA); // which page to show
$current = optional_param('current', 0, PARAM_INT);
-
+ $showendtime = optional_param('showendtime', get_user_preferences("attforblock_showendtime",0), PARAM_INT);
if (! $cm = $DB->get_record('course_modules', array('id'=> $id))) {
error('Course Module ID was incorrect');
}
@@ -43,15 +43,17 @@
!has_capability('mod/attforblock:changeattendances', $context)) {
redirect("view.php?id=$cm->id");
}
-
+
+ set_user_preference("attforblock_showendtime",$showendtime);
+
//if teacher is coming from block, then check for a session exists for today
if($from === 'block') {
$today = time(); // because we compare with database, we don't need to use usertime()
$sql = "SELECT id, groupid, lasttaken
FROM {attendance_sessions}
WHERE ? BETWEEN sessdate AND (sessdate + duration)
- AND courseid = $course->id";
- if($atts = $DB->get_records_sql($sql, array($today))) {
+ AND courseid = ? AND attendanceid = ?";
+ if($atts = $DB->get_records_sql($sql, array($today, $course->id, $attforblock->id))) {
$size = count($atts);
if ($size == 1) {
$att = reset($atts);
@@ -76,24 +78,24 @@
print_heading(get_string('attendanceforthecourse','attforblock').' :: ' .$course->fullname);
- if(!$DB->count_records_select('attendance_sessions', "courseid = ? AND sessdate >= ?", array($course->id, $course->startdate))) { // no session exists for this course
+ if(!$DB->count_records_select('attendance_sessions', "courseid = ? AND attendanceid = ? AND sessdate >= ?", array($course->id, $attforblock->id, $course->startdate))) { // no session exists for this course
show_tabs($cm, $context);
print_heading(get_string('nosessionexists','attforblock'));
- $hiddensess = $DB->count_records_select('attendance_sessions', "courseid = ? AND sessdate < ?", array($course->id, $course->startdate));
+ $hiddensess = $DB->count_records_select('attendance_sessions', "courseid = ? AND attendanceid = ? AND sessdate < ?", array($course->id, $attforblock->id, $course->startdate));
echo ' '.helpbutton('hiddensessions', '--', 'attforblock', true, true, '', true); //TODO: fix '--'
echo get_string('hiddensessions', 'attforblock').': '.$hiddensess.' ';
} else { //sessions generated , display them
add_to_log($course->id, 'attendance', 'manage attendances', 'mod/attforblock/manage.php?course='.$course->id, $user->lastname.' '.$user->firstname);
show_tabs($cm, $context);
- print_sessions_list($course);
+ print_sessions_list($course, $attforblock);
}
// require_once('lib.php');
// $t = attforblock_get_user_grades($attforblock); ////////////////////////////////////////////
print_footer($course);
-function print_sessions_list($course) {
- global $CFG, $context, $cm, $current, $view, $id, $DB;
+function print_sessions_list($course, $attforblock) {
+ global $CFG, $context, $cm, $current, $view, $id, $showendtime, $DB;
$strhours = get_string('hours');
$strmins = get_string('min');
@@ -109,20 +111,20 @@ function print_sessions_list($course) {
$currentgroup = $ret['currentgroup'];
if ($startdate && $enddate) {
- $where = "courseid=:cid AND sessdate >= :sdate AND sessdate >= :sdate2 AND sessdate < :edate";
+ $where = "courseid=:cid AND attendanceid = :aid AND sessdate >= :sdate AND sessdate >= :sdate2 AND sessdate < :edate";
} else {
- $where = "courseid=:cid AND sessdate >= :sdate";
+ $where = "courseid=:cid AND attendanceid = :aid AND sessdate >= :sdate";
}
if ($currentgroup > -1) {
$where .= " AND groupid=:cgroup";
}
- $qry = $DB->get_records_select('attendance_sessions', $where, array('cid' => $course->id, 'sdate' => $course->startdate,'sdate2' => $startdate, 'edate'=> $enddate, 'cgroup'=> $currentgroup), 'sessdate asc');
+ $qry = $DB->get_records_select('attendance_sessions', $where, array('cid' => $course->id, 'aid' => $attforblock->id, 'sdate' => $course->startdate,'sdate2' => $startdate, 'edate'=> $enddate, 'cgroup'=> $currentgroup), 'sessdate asc');
$i = 0;
$table->width = '100%';
//$table->tablealign = 'center';
- $table->head = array('#', get_string('sessiontypeshort', 'attforblock'), get_string('date'), get_string('time'), get_string('duration', 'attforblock'), get_string('description','attforblock'), get_string('actions'), get_string('select'));
+ $table->head = array('#', get_string('sessiontypeshort', 'attforblock'), get_string('date'), get_string('from'), ($showendtime=='0') ? get_string('duration', 'attforblock') : get_string('to'), get_string('description','attforblock'), get_string('actions'), get_string('select'));
$table->align = array('', '', '', 'right', 'left', 'center', 'center');
$table->size = array('1px', '', '1px', '1px', '1px', '*', '1px', '1px');
@@ -170,17 +172,18 @@ function print_sessions_list($course) {
$hours = floor($sessdata->duration / HOURSECS);
$mins = floor(($sessdata->duration - $hours * HOURSECS) / MINSECS);
$mins = $mins < 10 ? "0$mins" : "$mins";
- $table->data[$sessdata->id][] = $hours ? "{$hours} {$strhours} {$mins} {$strmins}" : "{$mins} {$strmins}";
+ $table->data[$sessdata->id][] = ($showendtime=='0') ? ($hours ? "{$hours} {$strhours} {$mins} {$strmins}" : "{$mins} {$strmins}") : userdate($sessdata->sessdate+$sessdata->duration, get_string('strftimehm', 'attforblock'));;
$table->data[$sessdata->id][] = $desc;
$table->data[$sessdata->id][] = $actions;
$table->data[$sessdata->id][] = '';
unset($desc, $actions);
}
}
+
echo '';
echo " |