Index: openacs-4/packages/proctoring-support/proctoring-support.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/Attic/proctoring-support.info,v diff -u -N -r1.1.2.28 -r1.1.2.29 --- openacs-4/packages/proctoring-support/proctoring-support.info 14 Feb 2022 16:45:52 -0000 1.1.2.28 +++ openacs-4/packages/proctoring-support/proctoring-support.info 17 Feb 2022 18:28:26 -0000 1.1.2.29 @@ -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/catalog/proctoring-support.de_DE.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/catalog/Attic/proctoring-support.de_DE.ISO-8859-1.xml,v diff -u -N -r1.1.2.16 -r1.1.2.17 --- openacs-4/packages/proctoring-support/catalog/proctoring-support.de_DE.ISO-8859-1.xml 30 Aug 2021 15:12:00 -0000 1.1.2.16 +++ openacs-4/packages/proctoring-support/catalog/proctoring-support.de_DE.ISO-8859-1.xml 17 Feb 2022 18:28:26 -0000 1.1.2.17 @@ -97,6 +97,8 @@ <li>die Pr�fung mit dieser Best�tigung entgegennehme, d.h. es erfolgt eine Beurteilung und dieser Antritt wird auf die Gesamtzahl der Wiederholungen angerechnet.</li> </ul> Pr�fungserkl�rung + Zur �berpr�fung markieren + Markiert Erlauben Sie den Zugriff auf Ihre Kamera, wenn Ihr Browser Sie dazu auffordert. Haben Sie den Zugriff erlaubt, wird Ihnen eine Vorschau angezeigt. Stellen Sie sicher, dass ihr Gesicht im Vorschaubild gut zu erkennen ist Zugriff auf Ihre Kamera erlauben Sie werden von Ihrem Browser aufgefordert, den Zugriff auf Ihren Bildschirm zu erlauben. Bitte w�hlen Sie zuerst den gesamten Bildschirm aus und best�tigen Sie die Erlaubnis �ber den Button "Teilen". Ihnen wird eine Vorschau Ihres Bildschirms angezeigt. @@ -109,6 +111,7 @@ Die Tonaufnahme des Mikrofons ist unzureichend. M�gliche Ursachen sind:<ul><li><b>Die Lautst�rke des Mikrofons ist zu leise eingestellt</b>: Schalten Sie die Eingangslautst�rke lauter. (Windows) �ffnen Sie die Systemsteuerung Ihres Computers und gehen Sie zu\"Sound\" | \"Eingabe\" | \"Ger�teeigenschaften\". Passen Sie hier die Lautst�rke an. (macOS)Klicken Sie auf \"Systemeinstellungen\" | \"Ton\" und �ffnen Sie den Reiter \"Eingabe\". Passen Sie bei Ihrem Mikrofon die Eingangslautst�rke an.</li><li><b>Das Mikrofon ist stummgeschaltet</b>: Heben Sie die Stummschaltung auf. Kontrollieren Sie die entsprechenden Tastaturbefehle und alle hardwareseitigen Einstellungen wie z.B. die Stummschaltung direkt in den Soundeinstellungen oder am Mikrofon/Headset selbst.</li></ul> Die Online-Aufsicht wurde beendet, ist f�r diese Pr�fung aber noch aktiviert. Bitte schlie�en Sie Google Chrome, um die Pr�fungsumgebung ganz zu verlassen, oder starten Sie die automatisierte Online-Aufsicht wieder mit einem Klick auf \"OK\". Damit betreten Sie die Pr�fungsumgebung erneut.<br><br>Wenn Sie �ber dieses Problem melden, inkludieren Sie bitte folgenden Text: Mobile Ger�te werden nicht unterst�tzt. + Nicht �berpr�ft Online-Pr�fung Vorschau Falls aktiviert, wird den Benutzern w�hrend der Online-Aufsichtssitzung eine Vorschau der aufgezeichneten Eingaben angezeigt. @@ -117,7 +120,12 @@ Kamera aufnehmen Desktop aufnehmen Aufzeichnungen + �berpr�ft Anfangsdatum + Als OK best�tigen + Best�tigt OK + Dieses Objekt wurde zur �berpr�fung vorgemerkt + Dieses Objekt wurde best�tigt Foto Abschlie�en Der Desktop kann nicht aufgezeichnet werden, da Sie den falschen Bildschirmausschnitt ausgew�hlt haben. W�hlen Sie \"gesamter Bildschirm\" aus, klicken Sie auf den Bildschirm und w�hlen Sie dann \"Teilen\". Index: openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/catalog/Attic/proctoring-support.en_US.ISO-8859-1.xml,v diff -u -N -r1.1.2.20 -r1.1.2.21 --- openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml 30 Aug 2021 15:12:00 -0000 1.1.2.20 +++ openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml 17 Feb 2022 18:28:26 -0000 1.1.2.21 @@ -99,6 +99,8 @@ <li>I accept receipt of this examination, i.e. I acknowledge that the exam will be graded and will count towards my total number of examination attempts</li> </ul> Examination Statement + Flag for review + Flagged If your browser prompts you to give access to the camera, please do so. Once permission has been granted, a preview image will appear. Please make sure your face is clearly visible in the picture before proceeding. Grant access to your camera You are being prompted to give access to your desktop. Please first select "Your Entire Screen" and grant the access thereafter by clicking the button "Share". On success you should see a preview of your desktop on the page. @@ -112,6 +114,7 @@ The microphone's sound recording is insufficient. Possible causes are:<ul><li><b>The volume of the microphone is set too low</b>: Turn up the input volume. (Windows) Open your computer's control panel and go to \"Sound\" | \"Input\" | \"Device properties\". Adjust the volume here. (macOS) Click on \"System Preferences\" | \"Sound\" and open the \"Input\" tab.Adjust the input volume on your microphone.</li><li><b>The microphone is muted</b>: Unmute it. Check the corresponding keyboard commands and all hardware settings such as the mute function directly in the sound settings or on the microphone / headset itself.</li></ul> Online Supervision has ended. However, it is still activated for this exam. Please close Google Chrome to completely exit the exam environment. Alternatively, you can restart the automated online supervision: By clicking \"OK\", you are re-entering the exam environment.<br><br>When reporting this issue, please mention the following message: Mobile devices are unsupported. + Not reviewed Online Exam Preview If enabled, a preview of recorded input will be displayed to users during the online supervision session. @@ -122,12 +125,17 @@ Recordings Request to the server has failed. Retry in 10s... Request to the server timed out. Retry in 10s... + Reviewed Safe Exam Browser Safe Exam Browser .seb file .seb file generated via the Safe Exam Browser configuration tool that holds the restriction applied to this exam session. Safe Exam Browser key Encryption key generated via the Safe Exam Browser configuration tool that will be used to ensure students are applying supplied configuration to their exam session. Start date + Confirm OK + Confirmed OK + This artifact has been flagged for revision + This artifact has been confirmed OK Photo Finish The screen cannot be recorded because you selected the wrong screen area. Select \"Your Entire Screen\" by clicking on the screen and then on \"Share\". Index: openacs-4/packages/proctoring-support/catalog/proctoring-support.it_IT.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/catalog/Attic/proctoring-support.it_IT.ISO-8859-1.xml,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/proctoring-support/catalog/proctoring-support.it_IT.ISO-8859-1.xml 14 Feb 2022 16:45:52 -0000 1.1.2.3 +++ openacs-4/packages/proctoring-support/catalog/proctoring-support.it_IT.ISO-8859-1.xml 17 Feb 2022 18:28:26 -0000 1.1.2.4 @@ -20,6 +20,8 @@ Modalit� esame <h4>Dichiarazione d'esame: Informazioni importanti per gli esami online</h4> <p> </p> <h5>1) Partecipazione</h5> <p>Senza eccezioni, solo gli studenti che sono ufficialmente iscritti al corso e/o all'esame potranno sostenere l'esame. </p> <p> </p> <p>L'esame sar� valutato solo se tutte e 3 le seguenti condizioni sono state soddisfatte:</p> <ul> <li>Ha caricato una foto che soddisfa i criteri necessari per confermare la sua identit�, se tale requisito di identificazione � stato precedentemente annunciato per l'esame in questione dalla persona responsabile dell'esame. </li> <li>La supervisione automatica ha funzionato correttamente durante l'esame, se tale requisito � stato precedentemente annunciato per questo esame</li> <li>Ha confermato di aver letto e compreso questa dichiarazione d'esame</li> </ul> <p> </p> <p> <p>Con la conferma della dichiarazione d'esame, lei conferma anche la ricezione dell'esame. Se ha ricevuto l'esame ma non ha soddisfatto il requisito dell'identit� e/o la supervisione automatica online non ha funzionato correttamente durante l'esame, l'esame sar� dichiarato NULLO e sar� considerato un tentativo di esame. Se non conferma la dichiarazione d'esame, non le sar� dato accesso all'esame. Questo significa che l'esame non sar� valutato e il tentativo d'esame non sar� conteggiato. </p> <p> </p> <h5>2) Requisiti tecnici</h5> <p>� vostra responsabilit� assicurarvi che non sarete disturbati durante l'esame e che tutti i requisiti tecnici (come precedentemente annunciato) siano soddisfatti (vedi "Informazioni su questo esame online" e/o "Lista di controllo tecnico" nel vostro ambiente d'esame online). L'Universit� non pu� garantire il completamento dell'esame senza problemi per ogni studente che lavora sul suo dispositivo elettronico individuale. </p> <p> </p> <h5>3) Iniziare e terminare/interrompere l'esame</h5> <p>Con la conferma di aver letto e compreso questa dichiarazione d'esame, lei conferma anche di aver ricevuto l'esame, e il tentativo verr� conteggiato. L'esame sar� valutato e conteggiato nel numero totale di tentativi d'esame consentiti. Questo vale anche se si termina l'esame prematuramente o non si presenta l'esame completato. </p> <p> </p> <p>Se siete costretti a terminare prematuramente l'esame o a interromperlo a causa di difficolt� tecniche (per esempio, perdita della connessione internet), contattate immediatamente la persona responsabile dell'esame. Per farlo, si prega di utilizzare il canale di comunicazione precedentemente annunciato a tale scopo dalla persona responsabile dell'esame. Quando segnalate la fine/interruzione del vostro esame, assicuratevi di includere le seguenti informazioni:</p> <ul> <li>Il vostro numero ID dello studente</li> <li>L'ora esatta della fine/interruzione</li> <li>Screenshot del messaggio di errore, se applicabile</li> </ul> <p>Se siete in grado di risolvere il problema e continuare l'esame, segnalatelo con il messaggio "Esame ripreso". Per poter inviare tali segnalazioni in caso di problemi tecnici, si raccomanda di scaricare le applicazioni appropriate sui propri dispositivi mobili prima dell'inizio dell'esame. In questo modo, potrete per esempio segnalare la fine/interruzione dell'esame anche se la vostra connessione Wi-Fi non funziona. </p> <p> </p> <p>Nei casi in cui lei segnala l'interruzione dell'esame a causa di problemi tecnici indipendenti dalla sua volont�, come regola generale, l'esame non viene valutato e il tentativo d'esame non viene conteggiato. Se si desidera che l'esame venga comunque valutato, si prega di contattare la persona responsabile dell'esame immediatamente dopo l'esame e richiedere che l'esame venga valutato. L'esame pu� essere valutato solo se tutti i requisiti applicabili per la valutazione sono soddisfatti (ad esempio, la supervisione automatica online ha funzionato correttamente, se applicabile). Saranno valutate solo le parti dell'esame che sono state completate senza problemi.</p> <p> </p> <h5>4) Imbroglio e conferma dell'identit�</h5> <p>Ogni tentativo di imbrogliare durante l'esame (ad esempio con il cellulare, consultando materiali proibiti, consultando altre persone) comporter� che l'esame sia dichiarato NULLO e il tentativo di esame conteggiato. Vi sar� inoltre impedito di registrarvi nuovamente per ripetere l'esame per un periodo di 4 mesi a partire dalla data dell'esame. </p> <p> </p> <p>Far fare l'esame a qualcun altro al posto vostro pu� costituire un reato penale. Tali casi di imbroglio saranno denunciati alla Procura della Repubblica, senza eccezioni.</p> <p> </p> <p> <p>Se annunciato in anticipo dalla persona responsabile dell'esame, la supervisione automatizzata dell'esame online sar� condotta per tutta la durata dell'esame. Questo significa che lei e il suo schermo saranno monitorati da una telecamera e da un microfono (video e audio) durante tutto l'esame, e l'esaminatore potr� vedere e sentire le registrazioni. Appena inizia l'esame, dovr� dare al suo browser il permesso di accedere al suo schermo, alla webcam e al microfono. Qualsiasi tentativo di manipolare la supervisione dell'esame online sar� considerato un tentativo di imbroglio.</p> <p> </p> <h5>5) Aiuti consentiti</h5> <p>Quando si partecipa a questo esame, si possono usare solo gli aiuti esplicitamente elencati o non esplicitamente vietati nelle informazioni su questo esame specifico sotto "Esame online" dalla persona responsabile dell'esame. Di regola, nessun altro pu� essere presente nella stessa stanza con lei mentre lavora all'esame. </p> <p> </p> <p><b>Riconoscimento delle informazioni sulla ricezione e il completamento dell'esame </b></p> <p> Confermo che</p> <ul> <li>ho letto e compreso le informazioni fornite sopra sull'esame scritto online</li> <li>sono in possesso di tutti i requisiti per sostenere questo esame</li> <li>completer� l'esame autonomamente e senza consultare alcun ausilio proibito</li> <li>ho letto e compreso le informazioni su questo esame specifico sotto "Esame online"</li> <li>accetto di sostenere questo esame, e accetto che l'esame sia valutato e conti come uno dei tentativi a me consentiti.</li> </ul> Dichiarazione d'esame + Segna per la revisione + Segnati Se il browser chiede accesso alla telecamera, ti preghiamo di accettare. Una volta che il permesso � stato concesso, apparir� una anteprima. Assicurati che il tuo volto sia chiaramente visibile nel riquadro prima di procedere. Concedi l'accesso alla tua telecamera Ti viene chiesto di dare accesso al tuo desktop. Seleziona "Schermo intero" e concedi l'accesso cliccando il tasto "Condividi". Al termine dovresti vedere una anteprima del tuo desktop sulla pagina. @@ -33,6 +35,7 @@ Il suono del microfono � insufficiente. Le possibili cause sono:<ul><li><b>Il volume del microfono � troppo basso</b>: Alza il volume di ingresso. (Windows) Apri il pannello di controllo del tuo computer e vai su \"Suono\" | \"Ingresso\". | \"Propriet� dei dispositivi\". Regola qui il volume. (macOS) Clicca su \"Preferenze di sistema\" | (macOS) Clicca su \"Preferenze di sistema\", \"Suono\" e apri la scheda \"Ingresso\". Regola il volume del tuo microfono.</li><li><b>Il microfono � silenziato</b>: Disattivarlo. Controlla i comandi da tastiera corrispondenti e tutte le impostazioni hardware come la funzione mute direttamente nelle impostazioni audio o sul microfono/cuffia stessa.</li></ul> La supervisione online � terminata. Tuttavia, � ancora attiva per questo esame. Si prega di chiudere Google Chrome per uscire completamente dall'ambiente d'esame. In alternativa, puoi riavviare la supervisione online automatica: Cliccando su \"OK\", stai rientrando nell'ambiente d'esame.<br><br>Nel segnalare questo problema, menziona il seguente messaggio: I dispositivi movili non sono supportati. + Non verificati Esame Online Anteprima Se abilitato, una anteprima dell'input registrato sar� mostrata all'utente durante la sessione di supervisione online. @@ -43,12 +46,17 @@ Registrazioni La richiesta al server � fallita. Nuovo tentativo in 10s... La richiesta al server � andata in timeout. Nuovo tentativo in 10s... + Verificati Safe Exam Browser File .seb per Safe Exam Browser File .seb generato tramite lo strumento di configurazione del Safe Exam Browser che contiene i vincoli applicati a questa sessione d'esame. Chiave per Safe Exam Browser Chiave di cifratura generata tramite lo strumento di configurazione del Safe Exam Browser che sar� usata per verificare che gli studenti stiano davvero applicando la configurazione specificata alla loro sessione d'esame. Data inizio + Segna come OK + Confermati OK + Questo artefatto � stato segnalato per la revisione + Questo artefatto � stato confermato OK Foto Fine Lo schermo non pu� essere registrato perch� hai selezionato l'area dello schermo sbagliata. Seleziona \"Tutto lo schermo\" cliccando sullo schermo e poi su \"Condividi\". Index: openacs-4/packages/proctoring-support/lib/proctoring-display.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/lib/Attic/proctoring-display.adp,v diff -u -N -r1.1.2.5 -r1.1.2.6 --- openacs-4/packages/proctoring-support/lib/proctoring-display.adp 15 Feb 2022 15:14:18 -0000 1.1.2.5 +++ openacs-4/packages/proctoring-support/lib/proctoring-display.adp 17 Feb 2022 18:28:26 -0000 1.1.2.6 @@ -3,7 +3,159 @@ #proctoring-support.Proctoring# + + + + + +
-
  • -

    @events.timestamp@

    - -
    - - - - - - - - - - +
    +
    +

    @events.timestamp@

    -
  • +
    + + +
    + + + + + + + + + + + + + + + +
    + + +
    +
    - + + Index: openacs-4/packages/proctoring-support/lib/proctoring-display.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/lib/Attic/proctoring-display.tcl,v diff -u -N -r1.1.2.12 -r1.1.2.13 --- openacs-4/packages/proctoring-support/lib/proctoring-display.tcl 15 Feb 2022 14:36:28 -0000 1.1.2.12 +++ openacs-4/packages/proctoring-support/lib/proctoring-display.tcl 17 Feb 2022 18:28:26 -0000 1.1.2.13 @@ -124,30 +124,37 @@ # their own pace. The rows so produced are then sorted by # timestamp, so that the "events" are chronologically sorted. db_multirow events get_artifacts { - select camera.file as camera_url, + select coalesce(camera.artifact_id, + desktop.artifact_id) as artifact_id, + camera.file as camera_url, desktop.file as desktop_url, coalesce(camera.timestamp, desktop.timestamp) as timestamp, - null as audio_url - from (select timestamp, + null as audio_url, + camera.revisions || desktop.revisions as revisions + from (select artifact_id, + timestamp, file, rank() over ( partition by object_id, user_id order by timestamp asc - ) as order - from proctoring_object_artifacts + ) as order, + coalesce(metadata->'revisions', '[]') as revisions + from proctoring_object_artifacts where object_id = :object_id and user_id = :user_id and type = 'image' and name = 'camera') camera join - (select timestamp, + (select artifact_id, + timestamp, file, rank() over ( partition by object_id, user_id order by timestamp asc - ) as order - from proctoring_object_artifacts + ) as order, + coalesce(metadata->'revisions', '[]') as revisions + from proctoring_object_artifacts where object_id = :object_id and user_id = :user_id and type = 'image' @@ -156,10 +163,12 @@ union - select null as camera_url, + select artifact_id, + null as camera_url, null as desktop_url, timestamp, - file as audio_url + file as audio_url, + metadata->'revisions' as revisions from proctoring_object_artifacts where object_id = :object_id and user_id = :user_id @@ -180,6 +189,8 @@ set audio_url [export_vars -base $user_url {{file $audio_url}}] } } + + set total [::template::multirow size events] } } else { set folder [::proctoring::folder \ Index: openacs-4/packages/proctoring-support/www/review.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/www/Attic/review.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/proctoring-support/www/review.tcl 17 Feb 2022 18:28:26 -0000 1.1.2.1 @@ -0,0 +1,103 @@ +ad_page_contract { + AJAX backend fot the reviewing of proctoring artifacts. + + @param artifact_id on which artifact we are operating + @param comment textual comment. Can be empty, for instance, when + we are flagging the artifact. + @param flag are we flagging this artifact for review. Can be empty + and defaults to false in this case. + @param delete_record an optional JSON record representing a review + comment that we want to delete. + + @return In case of error, the response will be returned to the + user. In case of success, the updated list of review + comments will be returned in JSON format. +} { + artifact_id:naturalnum,notnull + {comment ""} + {flag:boolean ""} + {deleted_record ""} +} + +set user_id [ad_conn user_id] + +if {$deleted_record eq "" && $comment eq ""} { + if {$flag} { + set comment [_ proctoring-support.user_has_flagged_this_artifact_msg] + } else { + set comment [_ proctoring-support.user_has_unflagged_this_artifact_msg] + } +} + +try { + set revisions [::xo::dc get_value update_comments { + with + updated_revisions as ( + select jsonb_agg(u.revision) + + -- The flag is stored on each review comment, but counts + -- as a single property. Therefore, we set for all review + -- comments the same flag, when specified. This because we + -- might want to handle the flag on single messages in the + -- future. + from (select revision || (case when :flag is null then '{}' + else (select to_jsonb(f.*) from + (select :flag as flag from dual) f) + end) as revision + from ( + + -- These are all of the existing messages, minus the + -- eventually deleted one. + select revision + from + (select jsonb_array_elements(metadata->'revisions') as revision + from proctoring_object_artifacts a + where a.artifact_id = :artifact_id + ) existing + where :deleted_record is null or + not (:deleted_record @> revision + and revision @> :deleted_record) + + union all + + -- This is the new message, when some comment is + -- there to store. + select to_jsonb(record) as revision from + (select person_id as user_id, + to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') as timestamp, + p.first_names || ' ' || p.last_name as author, + :comment as comment, + false as flag + from persons p + where person_id = :user_id + and :comment is not null) record + ) u + + -- Sort the updated revisions by timestamp + order by revision->'timestamp' asc + ) u + ), + update as ( + -- Now, take the aggregated JSON structure built above and + -- replace the field "revisions" in the "medatata" JSON + -- column of the artifacts table. + update proctoring_object_artifacts set + metadata = jsonb_set(coalesce(metadata, '{}'), + '{revisions}', + (select * from updated_revisions)) + where artifact_id = :artifact_id + and acs_permission.permission_p(object_id, :user_id, 'admin') + returning metadata->'revisions' as revisions + ) + + -- Return the final result as a JSON array + select revisions from update + }] + + ns_return 200 text/plain $revisions + +} on error {errmsg} { + + ns_return 500 text/html $errmsg + +}