diff --git a/backend/TE/Driver.php b/backend/TE/Driver.php index e8934178d4de074250051072a8d6ed8cb5861324..7c012309a8720a57c75ec29e7d982c821d270f86 100644 --- a/backend/TE/Driver.php +++ b/backend/TE/Driver.php @@ -85,7 +85,12 @@ class MainDriver_TE extends ContentDriver case 'switchUser': echo $_GET['user']; require_once( "backend/changeUserName.php" ); - changeUser( $_GET['user'] ); + if( isset( $_GET[ 'exid' ] ) && isset( $_GET[ 'step' ] ) ) + changeUser( $_GET[ 'user' ], $_GET[ 'exid' ], $_GET[ 'step' ] ); + elseif( isset( $_GET[ 'exid' ] ) ) + changeUser( $_GET[ 'user' ], $_GET[ 'exid' ] ); + else + changeUser( $_GET[ 'user' ] ); exit(); break; diff --git a/backend/TE/TakeExercise.php b/backend/TE/TakeExercise.php index 5d6f3e3a858a232b1914b97a43b5a14df2a11625..74928163d0771a55b89e1d9d64f0e7d0542c7bd4 100644 --- a/backend/TE/TakeExercise.php +++ b/backend/TE/TakeExercise.php @@ -258,7 +258,11 @@ class TakeExerciseFrame extends ExerciseFrame } else { $aid = $db->getOrCreateAssignment( $ex[ 'id' ] ); - $progress = $db->getAssignmentProgress( $aid ); + + if( isset( $_GET[ 'step' ] ) && in_array( strtolower( $_GET[ 'step' ] ), array( 'analysis', 'comparison' ) ) ) + $progress = array( 'status' => 3, 'step' => strtoupper( $_GET[ 'step' ] ) ); + else + $progress = $db->getAssignmentProgress( $aid ); } $settings[ 'phase' ] = strtolower( $progress[ 'step' ] ); diff --git a/backend/changeUserName.php b/backend/changeUserName.php index 1dd9ed4f2c72882f8bdee26f00243381d9e2f4f3..73fc19219ba05787955b54e89b57a7bb3a608c4e 100644 --- a/backend/changeUserName.php +++ b/backend/changeUserName.php @@ -19,8 +19,10 @@ * along with this program. If not, see http://www.gnu.org/licenses/. */ -function changeUser( $uid ) +function changeUser( $uid, $exid = null, $step = null ) { + $dest = "?"; + if( $_SESSION[ 'user' ][ 'isadmin' ] ) { $uid = ( int ) $uid; @@ -65,10 +67,17 @@ function changeUser( $uid ) $_SESSION[ 'security' ][ 'must_change_pwd' ] = 1; $db->query( "UPDATE person SET last_login = now() WHERE id = " . ( int ) $_SESSION[ 'user' ][ 'id' ] . ";" ); + + // Destination to a particular exercise + if( $exid != null ) + $dest = "?action=take&id=" . ( int ) $exid; + + if( $step != null ) + $dest .= "&step=" . $step; } // Do an HTTP redirect to the home page, so that the user can refresh the // page without re-sending the username/password. - header( "Location: ?" ); + header( "Location: " . $dest ); exit(); } diff --git a/js/pianos4.js b/js/pianos4.js index 452603c6678808ac0d1e0ed1d8ddaf9d4f642b3c..08fe966e3908839d78fb6843cd99e2ffe8f37ca7 100644 --- a/js/pianos4.js +++ b/js/pianos4.js @@ -4301,6 +4301,7 @@ function Pianos4( params ) var classes = [ 'even', 'odd' ]; + for( var i in users ) ( function( uid ) { @@ -4313,12 +4314,16 @@ function Pianos4( params ) } ).data( 'pianos4.userid', uid ); tr.append( $( '