Index: openacs-4/packages/proctoring-support/proctoring-support.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/proctoring-support.info,v diff -u -r1.1.2.11 -r1.1.2.12 --- openacs-4/packages/proctoring-support/proctoring-support.info 20 Jan 2021 13:43:22 -0000 1.1.2.11 +++ openacs-4/packages/proctoring-support/proctoring-support.info 20 Jan 2021 15:13:06 -0000 1.1.2.12 @@ -10,7 +10,7 @@ f proctoring - + Antonio Pisano Set of tools to implement proctoring of user interaction Wirtschaftsuniversität Wien @@ -21,7 +21,7 @@ No real UI is provided by the package itself. Other packages must integrate the provided includes. 0 - + Index: openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql 10 Aug 2020 13:23:42 -0000 1.1.2.1 +++ openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql 20 Jan 2021 15:13:06 -0000 1.1.2.2 @@ -19,6 +19,8 @@ -- closed for every day where proctoring -- is enabled (e.g. 20:00) preview_p boolean not null default false, -- display a preview of recording to proctored user + camera_p boolean not null default true, -- do we record the camera? + desktop_p boolean not null default true, -- do we record the desktop? proctoring_p boolean not null default true, -- do the actual proctoring examination_statement_p boolean not null default true -- display the examination statement ); Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/proctoring-support/sql/postgresql/upgrade-1.2.3-1.3.1.sql'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl,v diff -u -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl 31 Oct 2020 17:07:24 -0000 1.1.2.4 +++ openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl 20 Jan 2021 15:13:06 -0000 1.1.2.5 @@ -23,6 +23,8 @@ {-enabled_p true} {-examination_statement_p true} {-proctoring_p true} + {-camera_p true} + {-desktop_p true} {-preview_p false} {-start_date ""} {-end_date ""} @@ -35,6 +37,9 @@ @param proctoring_p Do the actual proctoring. This allows one to have only the examination statement, without actually taking and uploading pixctures/sound. + @param camera_p Record the camera. Currently, if this is set to + false no audio will also be recorded. + @param desktop_p Record the desktop @param examination_statement_p Display the examination statement @param preview_p if specified, a preview of recorded inputs will be displayed to users during proctored session @@ -58,6 +63,8 @@ start_time, end_time, preview_p, + camera_p, + desktop_p, proctoring_p, examination_statement_p ) values ( @@ -68,7 +75,9 @@ :start_time, :end_time, :preview_p, - :proctoring_p, + :camera_p, + :desktop_p, + ((:camera_p or :desktop_p) and :proctoring_p), :examination_statement_p ) on conflict(object_id) do update set enabled_p = :enabled_p, @@ -77,7 +86,9 @@ start_time = :start_time, end_time = :end_time, preview_p = :preview_p, - proctoring_p = :proctoring_p, + camera_p = :camera_p, + desktop_p = :desktop_p, + proctoring_p = ((:camera_p or :desktop_p) and :proctoring_p), examination_statement_p = :examination_statement_p } } @@ -88,23 +99,28 @@ Returns proctoring settings for specified object @return a dict with fields: enabled_p, start_date, end_date, - start_time, end_time, preview_p, proctoring_p, - examination_statement_p + start_time, end_time, preview_p, camera_p, desktop_p, + proctoring_p, examination_statement_p } { set start_date "" set end_date "" set start_time "" set end_time "" set enabled_p false set preview_p true + set camera_p false + set desktop_p false set proctoring_p false set examination_statement_p false + ::xo::dc 0or1row is_proctored { select to_char(start_date, 'YYYY-MM-DD') as start_date, to_char(end_date, 'YYYY-MM-DD') as end_date, to_char(start_time, 'HH24:MI:SS') as start_time, to_char(end_time, 'HH24:MI:SS') as end_time, case when preview_p then 'true' else 'false' end as preview_p, + case when camera_p then 'true' else 'false' end as camera_p, + case when desktop_p then 'true' else 'false' end as desktop_p, case when proctoring_p then 'true' else 'false' end as proctoring_p, case when enabled_p then 'true' else 'false' end as enabled_p, case when examination_statement_p then 'true' else 'false' end as examination_statement_p @@ -119,6 +135,8 @@ start_time $start_time \ end_time $end_time \ preview_p $preview_p \ + camera_p $camera_p \ + desktop_p $desktop_p \ proctoring_p $proctoring_p \ examination_statement_p $examination_statement_p] } Index: openacs-4/packages/proctoring-support/tcl/test/proctoring-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/tcl/test/proctoring-test-procs.tcl,v diff -u -r1.1.2.5 -r1.1.2.6 --- openacs-4/packages/proctoring-support/tcl/test/proctoring-test-procs.tcl 22 Oct 2020 14:17:16 -0000 1.1.2.5 +++ openacs-4/packages/proctoring-support/tcl/test/proctoring-test-procs.tcl 20 Jan 2021 15:13:06 -0000 1.1.2.6 @@ -64,6 +64,8 @@ start_time end_time preview_p + camera_p + desktop_p proctoring_p examination_statement_p } { @@ -118,6 +120,16 @@ [dict get $conf end_time] eq $next_hour } aa_true "Proctoring on $object_id is active" [::proctoring::active_p -object_id $object_id] + + aa_log "Disable camera and desktop" + ::proctoring::configure -object_id $object_id -proctoring_p true -camera_p false -desktop_p false + set conf [::proctoring::get_configuration -object_id $object_id] + aa_false "No camera and no desktop means no proctoring" [dict get $conf proctoring_p] + + aa_log "Enable camera" + ::proctoring::configure -object_id $object_id -camera_p true + set conf [::proctoring::get_configuration -object_id $object_id] + aa_true "Now proctoring appears to be on" [dict get $conf proctoring_p] } }