CSC/ECE 517 Spring 2017/E1743: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 31: Line 31:
- Teammate review report ( “  “  “)
- Teammate review report ( “  “  “)


'''Change'''
'''Tentative Changes'''
 
All these pages display some part of the user model, meaning they have all the data from the user model. So, it is just a matter of displaying the appropriate user-id.
All these pages display some part of the user model, meaning they have all the data from the user model. So, it is just a matter of displaying the appropriate user-id.
Red: On clicking this link it will call existing impersonate method of impersonate_controller class.
Red: On clicking this link it will call existing impersonate method of impersonate_controller class.
Blue: On clicking this link it will call existing show method of users_controller class.
Blue: On clicking this link it will call existing show method of users_controller class.
Green: We will add an anchor tag here. This will popup mail to link.
Green: We will add an anchor tag here. This will popup mail to link.



Revision as of 23:30, 12 April 2017

Problem Statement 1

Expertiza has a feature that allows instructor i (or an admin) to impersonate a user whose account was created by i or recursively by a user that i created. This causes Expertiza to show what the impersonated user would see. It is good for tracking down bugs in what students see and also for accessing functionality that cannot be accessed from, or is too slow to access from, the instructor UI. Impersonating is currently performed by going to the pull-down menu at the top of the window and selecting Manage > Impersonate user. However, usually the instructor initiates impersonation after finding the student in some kind of list, like a list of users, or assignment participants, or as a member of a team signed up for a topic, etc. In this case, it is inconvenient to have to go to the pulldown menu and type in the user ID. It would be better if the instructor could just click on the ID in the list, and immediately have the impersonated user’s homepage show up.

Here’s what it currently looks like:

Screenshot of the current Impersonate User page
Screenshot of the current Impersonate User page


The idea is to have more convenient options for instructors where a list of students is available, making it easier to both impersonate and view the details of any student with direct links.

Proposal 1

Proposal for Impersonate User links
Proposal for Impersonate User links

Red: The student ID currently has a link that directs to the user profile page. We intend to change that to a link that would impersonate the user.

Blue: The user profile page link would be shifted to this column instead.

Green: A link on the email address which would invoke a mailto: HTML link.

The following screens do not currently show the user-ID, but we intend to modify them to do so.

- View scores (User IDs could be shown below names in the Contributor column.)

- View review report

- Author feedback report (available from the pulldown menu on Review report).

- Teammate review report ( “ “ “)

Tentative Changes

All these pages display some part of the user model, meaning they have all the data from the user model. So, it is just a matter of displaying the appropriate user-id.

Red: On clicking this link it will call existing impersonate method of impersonate_controller class.

Blue: On clicking this link it will call existing show method of users_controller class.

Green: We will add an anchor tag here. This will popup mail to link.

Problem Statement 2

The second problem is that currently the default for Manage > Users is to list all 6000+ users on one page, which leads to long delays. The default should be to show the first 25 users and there should be options to list 100, 250, or all users.

Purpose: The reason behind adding this feature is also to make it the list of users easier to read, possibly reduce retrieval and loading time, and improve ease of navigation.

Proposal 2

Proposal for division and navigation of pages
Proposal for division and navigation of pages

The yellow portion in the above screenshot is space we can use to add options to display 25, 100, 250, or all users at once, along with links to ‘previous’ and ‘next’ pages.

Changes: There is a gem called will_paginate that adds a pagination library which integrates with ruby on rails. That gem is already added to the gemfile of expertiza, but is not used in this particular page. Once added, it provides a paginate method which automatically generates a paginated list with a per_page parameter. Then that list can be passed to the view, which automatically displays the necessary links such as “previous”, “next”, individual page links, etc

Implementation

The following files will most likely be modified:

Models:

- user.rb

Controllers:

- users_controller.rb

Views:

- users/list.html.erb

- assignments/list_submissions.html.erb

- grades/view.html.erb

- review_mapping/response_report.html.haml

- assessment360/all_students_all_reviews.html.erb


Test Plan

Most of the testing for this project will be fairly simple.

Manual:

Problem 1: All of the altered links will need to be tested to ensure they link to the correct pages. Tests that check if the username link correctly initiates impersonation of that user, and that clicking the full name links to the right user profile.

A test user needs to be created and the email link will be used to ensure emails are correctly sent.

Problem 2: For the second part of the project, tests need to be set up to check that the correct number of students are being displayed for each display option, and that the user can display subsequent pages of users.

Automated:

Problem 1 includes changes in view files. Hence, we are not planning to create automated test cases for problem 1.

Problem 2: Unit Tests: We will add unit test cases in user_spec.rb. Case I: Condition: page number = 4 and per page option = 25 Result: Ensure users list contain 25 entries. Case II: Condition: page number = 1 and per page option = 50 Result: Ensure users list contain all entries.